Correzioni per 13ma liquidazione IVA per cassa

git-svn-id: svn://10.65.10.50/branches/R_10_00@22953 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2014-06-24 12:36:23 +00:00
parent b21e89d1e9
commit ea3143334d
6 changed files with 95 additions and 36 deletions

View File

@ -209,7 +209,7 @@ HIDDEN bool no_dup_iva(TMask_field& f, KEY key)
HIDDEN bool almeno_cf_o_pi(TMask_field& f)
{
bool ok = true;
if (f.empty())
if (f.empty() && !app().is_transaction()) // Evita rischieste inutili durante le transazioni
{
const TMask& m = f.mask();
const TString& stato = m.get(F_STATOPAIV);

View File

@ -590,6 +590,7 @@ public:
void set_plm_diff(const _DescrItem& d);
void set_plm(_DescrItem& d);
bool set_annual(_DescrItem& d);
void set_iva_succ(int& rw);
void set_grand(_DescrItem& d);
// void set_grand_1999(_DescrItem& d, int &rw);
void set_grand_2000(_DescrItem& d, int &rw);

View File

@ -605,27 +605,23 @@ static bool ivadiff_chiusa_new(const TRectype& mov, const TDate& fine)
int err = id.read(_isgteq);
if (err == NOERR && rid.get_long(MOV_NUMREG) == numreg)
{
chiusa = id.get_bool("CHIUSA");
if (chiusa)
bool some_pag = false; // Ci sono pagamenti?
TImporto tot;
for (; err == NOERR && rid.get_long(MOV_NUMREG) == numreg; err = id.next())
{
bool some_pag = false; // Ci sono pagamenti?
TImporto tot;
for (; err == NOERR && rid.get_long(MOV_NUMREG) == numreg; err = id.next())
const TDate data = rid.get("DATAREGP");
if (data > fine)
continue;
const real imp = rid.get(RMI_IMPOSTA);
if (!imp.is_zero())
{
const TDate data = rid.get("DATAREGP");
if (data > fine)
continue;
const real imp = rid.get(RMI_IMPOSTA);
if (!imp.is_zero())
{
const char sez = rid.get_char("SEZIONE");
tot += TImporto(sez, imp);
if (rid.get_int(MOV_TIPOMOV) > 1)
some_pag = true;
}
const char sez = rid.get_char("SEZIONE");
tot += TImporto(sez, imp);
if (rid.get_int(MOV_TIPOMOV) > 1)
some_pag = true;
}
chiusa = some_pag && tot.valore() < 0.01;
}
chiusa = some_pag && tot.valore() < 0.01;
}
return chiusa;
}
@ -1465,8 +1461,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
error_box("Errore %d in aggiornamento file IVADIFF", err);
LOG_IVA_DIFF(id.curr());
// 18-06-2014 Aggiorna flag di chiusura IVADIFF solo nei mesi normali, ma lascialo stare se _isannual
const long numreg = _rmoviva->get_long(RMI_NUMREG);
if (numreg > 0) // Chiude o riapre la partita
if (numreg > 0 && !_isannual) // Chiude o riapre la partita
{
TISAM_recordset recset("USE IVADIFF\nFROM NUMREG=#NR\nTO NUMREG=#NR");
recset.set_var("#NR", numreg);
@ -3294,10 +3291,12 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt)
// ATTENZIONE: solo per i regimi 74ter (ag. viaggio)
for (_plm->first();!_plm->eof();_plm->next())
{
if (_year != *_plm_anno || atoi(*_plm_mese) != 13) continue;
if (_year != *_plm_anno || atoi(*_plm_mese) != 13)
continue;
cur_att = *_plm_codatt;
cur_att.rtrim(1);
if (codatt != cur_att) continue;
if (codatt != cur_att)
continue;
if (_isviaggio)
{
array.add(_plm->get_real("R5"),TAB11_T1,LF_TAB1100B);
@ -3478,8 +3477,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
for (int m = 1; m <= 13; m++)
{
// ciclo su tutti i mesi del caso (1 o 3;
// tutti se annuale)
// ciclo su tutti i mesi del caso (1 o 3; tutti se annuale)
if (!is_month_ok(m, month))
continue;

View File

@ -638,11 +638,14 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
TFast_isamfile fid(LF_IVADIFF);
TString query;
query << "USE IVADIFF KEY 2";
query << "USE IVADIFF KEY 2"; // Key 2 = ANNOLIQ+MESELIQ+...
query << "\nFROM ANNOLIQ=" << _year;
// Se calcolo gennaio (o marzo trimestrale) azzero tutto l'anno, altrimenti solo il mese selezionato
if (month > (_freqviva == "T" ? 3 : 1))
query << " MESELIQ=" << month;
query << "\nTO ANNOLIQ=" << _year; // Dal 18-06-2014 lascia stare l'anno prossimo!
TISAM_recordset id(query);
TString msg;

View File

@ -810,9 +810,9 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
art40_iva += va7v;
}
}
// if (tipomov == vendita)
// if (tipomov == vendita) // ci sono anche gli acquisti per cassa!
{
/* Non voglio piu' il riepilogo delle fatture emesse IVA diff
/* Non voglio piu' il riepilogo delle fatture emesse IVA diff
if (!diffimp.is_zero() || !diffiva.is_zero() ||
!diffimp_acq.is_zero() || !diffiva_acq.is_zero())
{
@ -2461,7 +2461,7 @@ void TLiquidazione_app::print_importo(int rw, const char* prompt, real imp, bool
// d._flags == THE_END
void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
{
real risultato = d._r0; // Figuccia lo puo' cambiare
const real risultato = d._r0; // Figuccia lo poteva cambiare, ora tornato const :-)
const real& rimborso = d._r1;
const real& cred_cost = d._r2;
const real& deb_mens = d._r3;
@ -2645,21 +2645,79 @@ static void imp2string(const real& n, TString& str)
if (!n.is_zero())
{
const TCurrency c(n);
str = c.string(TRUE);
str = c.string(true);
str.right_just(15);
}
else
str.spaces(15);
}
void TLiquidazione_app::set_iva_succ(int& rw)
{
TString query;
query << "USE IVADIFF KEY 2 SELECT (BETWEEN(DATAREG,#DAL,#AL))&&(BETWEEN(DATAREGP,0,#AL))"
<< "\nFROM ANNOLIQ=" << _year;
TISAM_recordset id(query);
const TDate da_datareg(1, 1, atoi(_year));
const TDate a_datareg(31, 12, atoi(_year));
id.set_var("#DAL", da_datareg);
id.set_var("#AL", a_datareg);
TImporto ven_diff, ven_xcas, acq_xcas;
long cur_numreg = 0;
int cur_tipodif = 0;
int cur_tipoiva = 0;
for (bool ok = id.move_first(); ok; ok = id.move_next())
{
const long numreg = id.get(RMI_NUMREG).as_int();
if (numreg != cur_numreg)
{
cur_numreg = numreg;
cur_tipodif = id.get("TIPODIFF").as_int();
cur_tipoiva = id.get("TIPOIVA").as_int();
}
const char sezione = id.get("SEZIONE").as_string()[0];
const TImporto imp(sezione, id.get(RMI_IMPONIBILE).as_real());
if (!imp.is_zero())
{
if (cur_tipoiva == 1) // Vendite
{
if (cur_tipodif == 1)
ven_diff += imp;
else
ven_xcas += imp;
}
else
acq_xcas += imp;
}
}
if (!ven_diff.is_zero() || !ven_xcas.is_zero() || !acq_xcas.is_zero())
{
set_row(rw++,FR("@11g@bOPERAZIONI EFFETTUATE NELL'ANNO CON IMPOSTA ESIGIBILE NEGLI ANNI SUCCESSIVI@r"));
const real vd = ven_diff.valore();
const real vc = ven_xcas.valore();
const real vt = vc+vd;
const real at = acq_xcas.valore();
set_row(rw++, "Totale vendite con IVA esigibile negli anni successivi@66g%r", &vt);
set_row(rw++, "Di cui con IVA per cassa@66g%r", &vc);
set_row(rw++, "Totale acquisti con IVA detraibile negli anni successivi@66g%r", &at);
set_row(rw++, "Di cui con IVA per cassa@66g%r", &at);
}
}
void TLiquidazione_app::set_grand(_DescrItem& d)
{
set_bookmark(TR("Riepilogativo liquidazione"), _firm_bookmark);
int rw = 1;
set_row(1,""); set_row(2,""); set_row(3,""); set_row(4,"");
set_row(5,FR("@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r"));
set_row(6,"");
int rw = 7;
if (_isannual) // Stampa annuale evidenzia importi esigibili l'anno dopo
set_iva_succ(rw);
set_bookmark(TR("Riepilogativo liquidazione"), _firm_bookmark);
set_row(rw++,""); set_row(rw++,""); set_row(rw++,""); set_row(rw++,"");
set_row(rw++,FR("@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r"));
/*
const bool new_print = atoi(_year) >= 2000;

View File

@ -268,9 +268,8 @@ bool TRigaiva_array::add_riga(const TRectype& iva)
// TRiga_array
///////////////////////////////////////////////
bool TRiga_array::add_riga(const real& imponibile, const real& imposta,
const real& implordo, const real& imponibilep,
const real& impostap, const real& implordop,
bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const real& implordo,
const real& imponibilep, const real& impostap, const real& implordop,
const char* codiva)
{
bool found = false;