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(309, sheet_clifo_handler);
ism.set_handler(CG_RATEO, sheet_rateo_handler); ism.set_handler(CG_RATEO, sheet_rateo_handler);
ism.set_handler(CG_RISCONTO, sheet_risconto_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) if (m->find_by_id(F_COLFPPRO) != NULL)
m->hide(F_COLFPPRO); m->hide(F_COLFPPRO);
if(m->find_by_id(DLG_LINK) != NULL) if (m->find_by_id(DLG_LINK) != NULL)
m->disable(DLG_LINK); m->disable(DLG_LINK);
} }
else 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 (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())) 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 else
_isfp = false; _isf1 = false;
_is_set_fpcheck = true; _is_set_fpcheck = true;
} }
else if (!_is_set_fpcheck) else if (!_is_set_fpcheck)
{ {
_isfp = false; _isf1 = false;
_is_set_fpcheck = true; _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) bool TPrimanota_application::has_f1_db(TMask* m)
{ {
set_has_f1_db(m); set_has_f1_db(m);
return _isfp; return _isf1;
} }
bool TPrimanota_application::remove() 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 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))) if (!check_causale(msk.get(F_CODCAUS)))
return pro_notsaved; 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) void TPrimanota_application::check_fppro_fields(TMask& m)
{ {
const bool after_data = TDate(m.get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt()); 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) if(m.find_by_id(DLG_LINK) != NULL)
m.disable(DLG_LINK); 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) bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{ {
TMask& cg_msk = f.mask(); 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; return true;
auto msk = std::make_shared<TPro_msk>(cg_msk); auto msk = std::make_shared<TPro_msk>(cg_msk);
app()._pro_mask = 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())) if (msk->load_fppro_mask(msk.get()))
{ {
msk->run(); msk->run();
// Riporto dati FPPRO su maschera Prima Nota // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1)
cg_msk.set(F_NUMDOCEXT, msk->get_numdoc()); // Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); if(app().has_f1_db(&cg_msk))
cg_msk.set(F_DATADOC, msk->get_datadoc()); {
cg_msk.set(F_TOTALE, msk->get_totdoc()); cg_msk.set(F_NUMDOCEXT, msk->get_numdoc());
//cg_msk.set(F_PROTFPPRO, msk->get_protocollo()); 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()); cg_msk.set(F_PROKEY, msk->get_fpprokeys());
is_collegato(cg_msk.field(F_COLFPPRO)); 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 TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili
TAssoc_array _colori; // Colori delle righe TAssoc_array _colori; // Colori delle righe
bool _isfp; bool _isf1;
shared_ptr<TPro_msk> _pro_mask; shared_ptr<TPro_msk> _pro_mask;
bool _is_set_fpcheck; bool _is_set_fpcheck;
int _last_date; int _last_date;
@ -365,7 +365,7 @@ public:
static char row_type(const TToken_string& s); static char row_type(const TToken_string& s);
static bool iva_notify(TSheet_field& s, int r, KEY key); static bool iva_notify(TSheet_field& s, int r, KEY key);
static bool cg_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; } int get_lastdate() { return _last_date; }
TMask * mask(CGMaskType type) { return _msk[type]; } TMask * mask(CGMaskType type) { return _msk[type]; }

View File

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

View File

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

View File

@ -107,8 +107,8 @@ void set_dataendreg(const TString& date);
void set_periodprec(bool flag); void set_periodprec(bool flag);
// Controlla se il "cod_caus" e' per Fatture d'acquisto o Note Credito d'Acquisto // 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) // 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); void run_cont_ini(bool liq);
#endif #endif