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;
creprec = row_liq.get_real("IVAVERC");
}
/* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi)
* vado a leggere la liquidazione di quest'anno */
if(!trovato)
if(!trovato && mese == 1)
{
creaprec = row_lia.get_real("R0");
}
@ -219,7 +218,7 @@ protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void extractinator();
void check_old_value(int field, real val);
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); }
void save_gen();
@ -421,7 +420,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
for(; start <= end; start++)
{
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);
/****************************************************************************************************************
@ -433,7 +432,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
const TRectype row_lim = getLIM(anno, start);
// 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;
}
@ -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"
TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string());
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
real imp = cur_iva.get("25.IMPONIBILE").as_real();
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 che la registrazione sia di del mese che mi interessa o con flag "liquidazione periodo precedente"
if (cur_iva.get("23." MOV_DATAREG).as_date().month() == start || start == cur_iva.get("23." MOV_MESELIQ).as_int())
{
if(tiporeg == iva_vendite)
totopattxc += imp;
else
totoppasxc += imp;
}
else
{
if(tiporeg == iva_vendite)
// 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
real imp = cur_iva.get("25.IMPONIBILE").as_real();
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!
// 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;
int i = 1;
}
if (tiporeg == iva_vendite)
totopattxc += imp;
else
totoppasxc += imp;
}
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
imposta_diff = imposta_xcas = ZERO;
TString pippo = ivadetxc.stringa();
TString pluto = imposta_xcas.stringa();
// 2 = Acquisti
calc_inc_diff(anno, start, iva_acquisti, imposta_diff, imposta_xcas);
pippo = ivadetxc.stringa();
pluto = imposta_xcas.stringa();
ivadetxc = ivadetxc + imposta_xcas;
ivadetdiff = ivadetdiff + imposta_diff;
}
@ -686,7 +684,7 @@ void TCom_liq_per_iva_msk::save_gen()
_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())
{