Patch level : 12.0 744

Files correlati     : tf
Commento            :
- Aggiunto nel calcolo liquidazione trimestrale anche i movimenti con flag di liquidazione precedente
- Aggiunto nel calcolo del credito precendente vincolo mese a gennaio
This commit is contained in:
Mattia Tollari 2019-03-25 11:56:30 +01:00
parent 711ecf527b
commit 1ca5cf6804

View File

@ -197,11 +197,10 @@ void calcola_credito_prec(real& creprec, real& creaprec, bool mensile, int anno,
trovato = trovato || row_liq.get_real("CREAPREC") > ZERO; trovato = trovato || row_liq.get_real("CREAPREC") > ZERO;
creprec = row_liq.get_real("IVAVERC"); creprec = row_liq.get_real("IVAVERC");
} }
/* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi) /* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi)
* vado a leggere la liquidazione di quest'anno */ * vado a leggere la liquidazione di quest'anno */
if(!trovato) if(!trovato && mese == 1)
{ {
creaprec = row_lia.get_real("R0"); creaprec = row_lia.get_real("R0");
} }
@ -219,7 +218,7 @@ protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void extractinator(); void extractinator();
void check_old_value(int field, real val); void check_old_value(int field, const real& val);
public: 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) { first_focus(F_ANNO); }
void save_gen(); void save_gen();
@ -421,7 +420,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
for(; start <= end; start++) for(; start <= end; start++)
{ {
TDate data_da(1, start, anno); TDate data_da(1, start, anno);
TDate data_a(1, start, anno); data_a.set_end_month(); TDate data_a(1, start + 1, anno); data_a.set_end_month();
bool has_ixc = gestione_IVAxCassa(data_da); bool has_ixc = gestione_IVAxCassa(data_da);
/**************************************************************************************************************** /****************************************************************************************************************
@ -433,7 +432,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
const TRectype row_lim = getLIM(anno, start); const TRectype row_lim = getLIM(anno, start);
// Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12 // Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12
if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non <EFBFBD> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?")) if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non e' stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?"))
{ {
return; return;
} }
@ -455,46 +454,49 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
// Controllo che sia un movimento con codice non "non soggetto" // Controllo che sia un movimento con codice non "non soggetto"
TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string());
if(codiva.tipo() == "NS") continue; if(codiva.tipo() == "NS") continue;
// Prendo il tipo di registro
TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno);
int tiporeg = reg.tipo();
bool is_corrispettivo = reg.corrispettivi();
// Prendiamo l'imponibile // Controllo che la registrazione sia di del mese che mi interessa o con flag "liquidazione periodo precedente"
real imp = cur_iva.get("25.IMPONIBILE").as_real(); if (cur_iva.get("23." MOV_DATAREG).as_date().month() == start || start == cur_iva.get("23." MOV_MESELIQ).as_int())
real imposta = cur_iva.get("25.IMPOSTA").as_real();
// Se è un movimento IvaXCassa o LiqDiff
if(has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool()))
{ {
if(tiporeg == iva_vendite) // Prendo il tipo di registro
totopattxc += imp; TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno);
else int tiporeg = reg.tipo();
totoppasxc += imp; bool is_corrispettivo = reg.corrispettivi();
}
else // Prendiamo l'imponibile
{ real imp = cur_iva.get("25.IMPONIBILE").as_real();
if(tiporeg == iva_vendite) real imposta = cur_iva.get("25.IMPOSTA").as_real();
// Se è un movimento IvaXCassa o LiqDiff
if (has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool()))
{ {
// Controllo il reverse charge, non va calcolato nel totale delle operazioni attive! if (tiporeg == iva_vendite)
// Se non ha una riga di movimento non lo sommo totopattxc += imp;
TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1"; else
if(!cache().get(LF_RMOV, key_rc).empty()) totoppasxc += imp;
{
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
if(is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
{
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
// Es iva 22% => imp : 122 = x : 100
codiva.scorpora(imp);
}
totopatt += imp;
int i = 1;
}
} }
else else
totoppas += imp; {
if (tiporeg == iva_vendite)
{
// Controllo il reverse charge, non va calcolato nel totale delle operazioni attive!
// Se non ha una riga di movimento non lo sommo
TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1";
if (!cache().get(LF_RMOV, key_rc).empty())
{
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
if (is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
{
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
// Es iva 22% => imp : 122 = x : 100
codiva.scorpora(imp);
}
totopatt += imp;
}
}
else
totoppas += imp;
}
} }
} }
@ -514,12 +516,8 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
// IVA detraibile // IVA detraibile
imposta_diff = imposta_xcas = ZERO; imposta_diff = imposta_xcas = ZERO;
TString pippo = ivadetxc.stringa();
TString pluto = imposta_xcas.stringa();
// 2 = Acquisti // 2 = Acquisti
calc_inc_diff(anno, start, iva_acquisti, imposta_diff, imposta_xcas); calc_inc_diff(anno, start, iva_acquisti, imposta_diff, imposta_xcas);
pippo = ivadetxc.stringa();
pluto = imposta_xcas.stringa();
ivadetxc = ivadetxc + imposta_xcas; ivadetxc = ivadetxc + imposta_xcas;
ivadetdiff = ivadetdiff + imposta_diff; ivadetdiff = ivadetdiff + imposta_diff;
} }
@ -686,7 +684,7 @@ void TCom_liq_per_iva_msk::save_gen()
_true_data.put("VEREFF", get(F_VEREFF)); _true_data.put("VEREFF", get(F_VEREFF));
} }
void TCom_liq_per_iva_msk::check_old_value(int field, real val) void TCom_liq_per_iva_msk::check_old_value(int field, const real& val)
{ {
if(_true_data.empty()) if(_true_data.empty())
{ {