Patch level : 12.0 826

Files correlati     : cg2.exe cg2FPPRO.msk
Commento            :
- Lasciata la possibilita' di collegare documenti anche senza F1 senza riporto dei dati
- Aggiunti altri tipi documento per causale accettate per F1
This commit is contained in:
Simone Palacino 2019-06-19 14:28:02 +02:00
parent d3d81d215e
commit 7ee01f73ca
6 changed files with 48 additions and 33 deletions

View File

@ -123,11 +123,11 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(309, sheet_clifo_handler);
ism.set_handler(CG_RATEO, sheet_rateo_handler);
ism.set_handler(CG_RISCONTO, sheet_risconto_handler);
if (!has_f1_db(m))
if (!has_module(FPAUT))
{
if (m->find_by_id(F_COLFPPRO) != NULL)
m->hide(F_COLFPPRO);
if(m->find_by_id(DLG_LINK) != NULL)
if (m->find_by_id(DLG_LINK) != NULL)
m->disable(DLG_LINK);
}
else
@ -1634,14 +1634,14 @@ void TPrimanota_application::set_has_f1_db(TMask* m)
if (m->find_by_id(F_DATAREG) != NULL && !m->get(F_DATAREG).empty())
{
if (TDate(m->get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt()))
_isfp = has_module(F1AUT) && !fp_settings().get_db_indirizzo().empty();
_isf1 = has_module(F1AUT) && !fp_settings().get_db_indirizzo().empty();
else
_isfp = false;
_isf1 = false;
_is_set_fpcheck = true;
}
else if (!_is_set_fpcheck)
{
_isfp = false;
_isf1 = false;
_is_set_fpcheck = true;
}
}
@ -1649,7 +1649,7 @@ void TPrimanota_application::set_has_f1_db(TMask* m)
bool TPrimanota_application::has_f1_db(TMask* m)
{
set_has_f1_db(m);
return _isfp;
return _isf1;
}
bool TPrimanota_application::remove()
@ -2426,7 +2426,7 @@ int TPrimanota_application::save_fppro()
else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db
}
// Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto
// Controllo che sto registrando un documento d'acquisto
if (!check_causale(msk.get(F_CODCAUS)))
return pro_notsaved;

View File

@ -2263,7 +2263,7 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key)
void TPrimanota_application::check_fppro_fields(TMask& m)
{
const bool after_data = TDate(m.get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt());
if (!check_causale(m.get(F_CODCAUS)) || !app().has_f1_db(&m) || !after_data)
if (!check_causale(m.get(F_CODCAUS)) || !app().has_module(FPAUT) || !after_data)
{
if(m.find_by_id(DLG_LINK) != NULL)
m.disable(DLG_LINK);
@ -3850,7 +3850,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{
TMask& cg_msk = f.mask();
if (!app().get_isfp() || key != K_SPACE && key != K_TAB || !check_causale(f.mask().get(F_CODCAUS)))
if (!app().has_module(FPAUT) || key != K_SPACE && key != K_TAB || !check_causale(cg_msk.get(F_CODCAUS)))
return true;
auto msk = std::make_shared<TPro_msk>(cg_msk);
app()._pro_mask = msk;
@ -3858,12 +3858,15 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
if (msk->load_fppro_mask(msk.get()))
{
msk->run();
// Riporto dati FPPRO su maschera Prima Nota
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
cg_msk.set(F_DATADOC, msk->get_datadoc());
cg_msk.set(F_TOTALE, msk->get_totdoc());
//cg_msk.set(F_PROTFPPRO, msk->get_protocollo());
// Riporto dati FPPRO su maschera Prima Nota (solo se hai F1)
// Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
if(app().has_f1_db(&cg_msk))
{
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
cg_msk.set(F_DATADOC, msk->get_datadoc());
cg_msk.set(F_TOTALE, msk->get_totdoc());
}
cg_msk.set(F_PROKEY, msk->get_fpprokeys());
is_collegato(cg_msk.field(F_COLFPPRO));

View File

@ -96,7 +96,7 @@ class TPrimanota_application : public TRelation_application
TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili
TAssoc_array _colori; // Colori delle righe
bool _isfp;
bool _isf1;
shared_ptr<TPro_msk> _pro_mask;
bool _is_set_fpcheck;
int _last_date;
@ -365,7 +365,7 @@ public:
static char row_type(const TToken_string& s);
static bool iva_notify(TSheet_field& s, int r, KEY key);
static bool cg_notify(TSheet_field& s, int r, KEY key);
bool get_isfp() const { return _isfp; }
bool get_isf1() const { return _isf1; }
int get_lastdate() { return _last_date; }
TMask * mask(CGMaskType type) { return _msk[type]; }

View File

@ -10,7 +10,7 @@ END
BUTTON DLG_LINK 2 2
BEGIN
PROMPT 3 1 "Riporta Dati"
PROMPT 3 1 "Collega Documento"
PICTURE TOOL_LINK
END
@ -73,7 +73,7 @@ END
TEXT F_SHEET_TEXT
BEGIN
PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Riporta Dati'"
PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Collega Documento'"
END
BOOLEAN F_SHOWALL

View File

@ -271,26 +271,38 @@ void set_periodprec(bool flag)
ini_set_bool(CONFIG_DITTA, FILE_SECTION, "flag_periodprec", flag);
}
bool check_causale(const TString& cod_caus)
bool check_causale(const TString& cod_caus, bool acq)
{
return check_causale(cod_caus, "FA") || check_causale(cod_caus, "NC");
return
check_causale(cod_caus, "FA", acq) ||
check_causale(cod_caus, "BD", acq) ||
check_causale(cod_caus, "AF", acq) ||
check_causale(cod_caus, "FF", acq) ||
check_causale(cod_caus, "NC", acq) ||
check_causale(cod_caus, "ND", acq);
}
bool check_causale(const TString& cod_caus, const TString& tipo_doc)
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq)
{
TCausale caus(cod_caus);
const TCausale caus(cod_caus);
if(tipo_doc == "FA")
return caus.tipo_doc() == "FA";
if(tipo_doc == "FA" || tipo_doc == "BD" || tipo_doc == "AF" || tipo_doc == "FF")
return caus.tipo_doc() == tipo_doc;
if (tipo_doc == "NC")
if (tipo_doc == "NC" || tipo_doc == "ND")
{
bool nc;
bool nc_acq = false;
if ((nc = caus.tipo_doc() == "NC"))
nc_acq = caus.reg().tipo() == iva_acquisti;
return nc && nc_acq;
bool nota;
bool nota_iva = false;
if ((nota = caus.tipo_doc() == tipo_doc))
{
if (acq)
nota_iva = caus.reg().tipo() == iva_acquisti;
else
nota_iva = caus.reg().tipo() == iva_vendite;
}
return nota && nota_iva;
}
return false;
}

View File

@ -107,8 +107,8 @@ void set_dataendreg(const TString& date);
void set_periodprec(bool flag);
// Controlla se il "cod_caus" e' per Fatture d'acquisto o Note Credito d'Acquisto
bool check_causale(const TString& cod_caus);
bool check_causale(const TString& cod_caus, bool acq = true);
// Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto)
bool check_causale(const TString& cod_caus, const TString& tipo_doc);
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true);
void run_cont_ini(bool liq);
#endif