diff --git a/src/tf/tf0200.cpp b/src/tf/tf0200.cpp index 12206c11f..6a7a5b9f7 100644 --- a/src/tf/tf0200.cpp +++ b/src/tf/tf0200.cpp @@ -20,6 +20,10 @@ #include "tf0200a.h" #define CAMPI_CON_BOOLEAN F_TOTOPATT +#define CONF_MODULO "tf" +#define LAST_DATACOMP "LASTCOMP" +#define FLAG_MOD "FLDATACOMPMOD" +#define STOP "$$" // ComLiqPerIva: Comunicazione Liquidazioni Periodiche IVA @@ -209,6 +213,7 @@ void calcola_credito_prec(real& creprec, real& creaprec, bool mensile, int anno, class TCom_liq_per_iva_msk : public TAutomask { + bool _last_elab; // Flag per controllare se hanno cambiato il tipo di elaborazione (data competenza) protected: bool _mensile; // Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione. @@ -216,14 +221,34 @@ protected: bool _init_liq; TRectype _true_data; + void write_datacomp_mod(bool enabled); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); void extractinator(); void check_old_value(int field, const real& val); public: - TCom_liq_per_iva_msk() : TAutomask("tf0200a"), _true_data(LF_IVALIQ), _init_liq(false) { first_focus(F_ANNO); } + TCom_liq_per_iva_msk() : TAutomask("tf0200a"), _true_data(LF_IVALIQ), _init_liq(false) + { + _last_elab = ini_get_bool(CONFIG_DITTA, CONF_MODULO, LAST_DATACOMP, false); + first_focus(F_ANNO); + } void save_gen(); }; +void TCom_liq_per_iva_msk::write_datacomp_mod(const bool enabled) +{ + int count = 0; + + TString line = ini_get_string(CONFIG_DITTA, CONF_MODULO, FLAG_MOD, STOP, count); + for (; line != STOP; line = ini_get_string(CONFIG_DITTA, CONF_MODULO, FLAG_MOD, STOP, ++count)) { } + + const TDate today(TODAY); + TString mod; mod << user() << (enabled ? "|E|" : "|D|") << today.month() << "." << today.day(); + ini_set_string(CONFIG_DITTA, CONF_MODULO, FLAG_MOD, mod, count); + + ini_set_bool(CONFIG_DITTA, CONF_MODULO, LAST_DATACOMP, enabled); + _last_elab = enabled; +} + bool TCom_liq_per_iva_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) @@ -294,7 +319,21 @@ bool TCom_liq_per_iva_msk::on_field_event(TOperable_field& o, TField_event e, lo } } break; + case F_DATA_COMP: + if(e == fe_init) + set(F_DATA_COMP, _last_elab ? "X" : " "); + else if(e == fe_modify) + warning_box("Attenzione la modifica di questo valore comporta un diverso calcolo dei righi VP2 VP3. L'utente è pregato di controllarne la correttezza.\nSi consiglia di ricalcolare e rispedire tutti periodi dell'anno"); + break; case DLG_SAVEREC: + if(e == fe_button) + { + bool data_comp = get_bool(F_DATA_COMP); + if (data_comp != _last_elab) + { + write_datacomp_mod(data_comp); + } + } if(e != fe_init && !_true_data.empty()) _true_data.write_rewrite(TLocalisamfile(LF_IVALIQ)); } @@ -417,10 +456,11 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO real ivaver = ZERO; real ivaverc = ZERO; + const bool elab_dt_comp = get_bool(F_DATA_COMP); for(; start <= end; start++) { TDate data_da(1, start, anno); - TDate data_a(1, start + 1, anno); data_a.set_end_month(); + TDate data_a(1, start + (elab_dt_comp ? 1 : 0), anno); data_a.set_end_month(); bool has_ixc = gestione_IVAxCassa(data_da); /**************************************************************************************************************** @@ -459,7 +499,8 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO const int month_reg = cur_iva.get("23." MOV_DATAREG).as_date().month(); const int month_liq = cur_iva.get("23." MOV_MESELIQ).as_int(); // month_liq viene valorizzato solo se è del mese precedente o sempre? Nei record vecchi ovviamente sarà a zero ma adesso che ci mette? - if ((month_reg == start && (month_liq == 0 || month_liq == month_reg)) || start == month_liq) + if (elab_dt_comp && ((month_reg == start && (month_liq == 0 || month_liq == month_reg)) || start == month_liq) + || !elab_dt_comp) { // Prendo il tipo di registro TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno); diff --git a/src/tf/tf0200a.h b/src/tf/tf0200a.h index 6196787ca..8e23747e6 100644 --- a/src/tf/tf0200a.h +++ b/src/tf/tf0200a.h @@ -33,6 +33,7 @@ #define F_IMPNOVER 133 #define F_VEREFF 134 #define F_GENERATA 135 +#define F_DATA_COMP 136 /* Booleani controllo modifiche (+50 rispetto al campo a cui si riferisce) */ diff --git a/src/tf/tf0200a.uml b/src/tf/tf0200a.uml index ee786b4da..2be59e80e 100644 --- a/src/tf/tf0200a.uml +++ b/src/tf/tf0200a.uml @@ -24,6 +24,11 @@ ENDPAGE PAGE "Impostazioni" 0 2 0 0 +BOOLEAN F_DATA_COMP +BEGIN + PROMPT 1 0 "@BElaborare per data competenza" +END + NUMBER F_CODDITTA 5 BEGIN PROMPT 1 1 "Codice "