Patch level : 12.0 358
Files correlati : f171.trr f171.dir cg4.exe Corretto il calcolo liquidazione per l'IVA indetraibile e i movimenti cper cassa con IVA normale ed esente. git-svn-id: svn://10.65.10.50/branches/R_10_00@23664 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e795d24099
commit
fa48200320
@ -1457,7 +1457,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
#ifdef DBG
|
||||
const long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
if (nr == 115414 || nr == 155995)
|
||||
if (nr == 29167 || nr == 29171 )
|
||||
int i = 1 ;
|
||||
#endif
|
||||
|
||||
@ -1466,228 +1466,236 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
sosp_imp != vol_affari)
|
||||
tot_reg += imponibile_orig;
|
||||
|
||||
if (bIsMovDiff && tm == tm_fattura)
|
||||
{
|
||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||
bool bRowIsMovDiff = bIsMovDiff && imposta_orig != ZERO;
|
||||
|
||||
sezfat = tipomov == vendita ? 'D' : 'A';
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
id.put("NUMPRO", 0);
|
||||
id.put(PART_TIPOMOV, tm);
|
||||
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("ANNOLIQ", datareg.year());
|
||||
analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
|
||||
impon_det, impos_det, impon_ind, impos_ind);
|
||||
for (int is_detr_diff = 1; is_detr_diff >= 0; is_detr_diff--)
|
||||
{
|
||||
real diff_impr = (is_detr_diff == 0) ? impon_det : impon_ind;
|
||||
real diff_ivar = (is_detr_diff == 0) ? impos_det : impos_ind;
|
||||
real diff_totr = diff_impr + diff_ivar;
|
||||
|
||||
if (diff_totr == ZERO)
|
||||
continue;
|
||||
if (bRowIsMovDiff && tm == tm_fattura)
|
||||
{
|
||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||
|
||||
sezfat = tipomov == vendita ? 'D' : 'A';
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
id.put("NUMPRO", 0);
|
||||
id.put(PART_TIPOMOV, tm);
|
||||
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("ANNOLIQ", datareg.year());
|
||||
|
||||
int mesereg = datareg.month();
|
||||
if (_freqviva[0] == 'T')
|
||||
{
|
||||
const int resto = mesereg % 3;
|
||||
if (resto > 0)
|
||||
mesereg += 3-resto;
|
||||
}
|
||||
|
||||
id.put("MESELIQ", mesereg);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
id.put("SEZIONE", sezfat);
|
||||
|
||||
id.put("IMPORTO", imponibile_orig+imposta_orig);
|
||||
id.put(RMI_IMPONIBILE, imponibile_orig);
|
||||
id.put(RMI_IMPOSTA, imposta_orig);
|
||||
|
||||
const int ew = id.write_rewrite();
|
||||
if (ew != NOERR)
|
||||
cantwrite_box(id.description());
|
||||
}
|
||||
|
||||
if (!pagscatt.empty())
|
||||
{
|
||||
const char sezpag = tipomov == vendita ? 'A' : 'D';
|
||||
real totfat = _mov->get(MOV_TOTDOC);
|
||||
real tot = totfat;
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||
{
|
||||
const TRectype& pagsca = *(TRectype*)obj;
|
||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||
id.put("NUMPRO", min(nrigp, 999));
|
||||
if (id.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
id.put("NUMPRO", min(nrigp, 999));
|
||||
if (id.write() != NOERR)
|
||||
error_box("Errore %d in creazione record IVADIFF", id.status());
|
||||
}
|
||||
|
||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
|
||||
TImporto pagtmp;
|
||||
bool ultimo = false;
|
||||
long nregpag;
|
||||
int nrigpag;
|
||||
|
||||
tipo_movimento tipomov_pag = tm_pagamento;
|
||||
if (nrigp > 0 && nrigp < 9999)
|
||||
{
|
||||
const TPartita& p = arrpart.partita(pagsca);
|
||||
const TRiga_partite& rp = p.riga(nrigp);
|
||||
|
||||
nregpag = rp.get_long(PART_NREG);
|
||||
nrigpag = rp.get_int(PART_NUMRIG);
|
||||
tipomov_pag = rp.tipo();
|
||||
id.put(PART_TIPOMOV, tipomov_pag);
|
||||
id.put("NUMREGP", nregpag);
|
||||
id.put("NUMRIGP", nrigpag);
|
||||
TDate d = rp.get(PART_DATAPAG);
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATADOC);
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATAREG);
|
||||
id.put("DATAREGP", d);
|
||||
id.put("ANNOLIQ", d.year());
|
||||
pagtmp = p.importo_pagsca(pagsca);
|
||||
pagtmp.normalize(sezpag);
|
||||
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Falso record generato da datainc
|
||||
nregpag = _mov->get_long(MOV_NUMREG);
|
||||
nrigpag = nrigp;
|
||||
|
||||
id.put(PART_TIPOMOV, tipomov_pag);
|
||||
id.put("NUMREGP", nregpag);
|
||||
id.put("NUMRIGP", nrigp);
|
||||
id.put("DATAREGP", _mov->get(MOV_DATAINC));
|
||||
id.put("ANNOLIQ", year_int);
|
||||
pagtmp.set(sezpag, pagsca.get_real(PAGSCA_IMPORTO));
|
||||
ultimo = true;
|
||||
}
|
||||
|
||||
int meseliq = id.get_date("DATAREGP").month();
|
||||
if (_freqviva[0] == 'T')
|
||||
{
|
||||
const int resto = meseliq % 3;
|
||||
if (resto > 0)
|
||||
meseliq += 3-resto;
|
||||
}
|
||||
id.put("MESELIQ", meseliq);
|
||||
id.put("SEZIONE", pagtmp.sezione());
|
||||
|
||||
const long numregp = id.get_long(ID_NUMREGP);
|
||||
const int numrigp = nrigp;
|
||||
real val_imp = pagtmp.valore() * lordo_orig / tot;
|
||||
real val_iva;
|
||||
|
||||
if (ultimo)
|
||||
int mesereg = datareg.month();
|
||||
if (_freqviva[0] == 'T')
|
||||
{
|
||||
TRectype svidrec(id.curr());
|
||||
TLocalisamfile rid(LF_IVADIFF);
|
||||
const long numreg = _rmoviva->get_long(RMI_NUMREG);
|
||||
const int numrig = _rmoviva->get_int(RMI_NUMRIG);
|
||||
const int numpro = id.get_int(ID_NUMPRO);
|
||||
|
||||
rid.put(MOV_NUMREG, numreg);
|
||||
rid.put(RMI_NUMRIG, numrig);
|
||||
val_iva = imposta_orig;
|
||||
const int resto = mesereg % 3;
|
||||
if (resto > 0)
|
||||
mesereg += 3-resto;
|
||||
}
|
||||
|
||||
bool pag_found = false;
|
||||
|
||||
int err = rid.read(_isgteq);
|
||||
|
||||
for (; err == NOERR && rid.get_long(RMI_NUMREG) == numreg && rid.get_int(RMI_NUMRIG) == numrig; err = rid.next())
|
||||
id.put("MESELIQ", mesereg);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put(ID_INDETR, is_detr_diff > 0);
|
||||
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
id.put("SEZIONE", sezfat);
|
||||
|
||||
id.put("IMPORTO", diff_totr);
|
||||
id.put(RMI_IMPONIBILE, diff_impr);
|
||||
id.put(RMI_IMPOSTA, diff_ivar);
|
||||
|
||||
const int ew = id.write_rewrite();
|
||||
if (ew != NOERR)
|
||||
cantwrite_box(id.description());
|
||||
}
|
||||
|
||||
if (!pagscatt.empty())
|
||||
{
|
||||
const char sezpag = tipomov == vendita ? 'A' : 'D';
|
||||
real totfat = _mov->get(MOV_TOTDOC);
|
||||
real tot = totfat;
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||
{
|
||||
const TRectype& pagsca = *(TRectype*)obj;
|
||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||
id.put("NUMPRO", min(nrigp, 999));
|
||||
if (id.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
const int ridnumpro = rid.get_int(ID_NUMPRO);
|
||||
const tipo_movimento ridtipopag = (tipo_movimento) rid.get_int(PART_TIPOMOV);
|
||||
|
||||
if (ridtipopag != tm_fattura && ridtipopag != tm_nessuno &&ridnumpro != numpro)
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
id.put("NUMPRO", min(nrigp, 999));
|
||||
if (id.write() != NOERR)
|
||||
error_box("Errore %d in creazione record IVADIFF", id.status());
|
||||
}
|
||||
|
||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put(ID_INDETR, is_detr_diff > 0);
|
||||
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
|
||||
TImporto pagtmp;
|
||||
bool ultimo = false;
|
||||
long nregpag;
|
||||
int nrigpag;
|
||||
tipo_movimento tipomov_pag = tm_pagamento;
|
||||
|
||||
if (nrigp > 0 && nrigp < 9999)
|
||||
{
|
||||
const TPartita& p = arrpart.partita(pagsca);
|
||||
const TRiga_partite& rp = p.riga(nrigp);
|
||||
|
||||
nregpag = rp.get_long(PART_NREG);
|
||||
nrigpag = rp.get_int(PART_NUMRIG);
|
||||
tipomov_pag = rp.tipo();
|
||||
id.put(PART_TIPOMOV, tipomov_pag);
|
||||
id.put("NUMREGP", nregpag);
|
||||
id.put("NUMRIGP", nrigpag);
|
||||
TDate d = rp.get(PART_DATAPAG);
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATADOC);
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATAREG);
|
||||
id.put("DATAREGP", d);
|
||||
id.put("ANNOLIQ", d.year());
|
||||
pagtmp = p.importo_pagsca(pagsca);
|
||||
pagtmp.normalize(sezpag);
|
||||
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Falso record generato da datainc
|
||||
nregpag = _mov->get_long(MOV_NUMREG);
|
||||
nrigpag = nrigp;
|
||||
|
||||
id.put(PART_TIPOMOV, tipomov_pag);
|
||||
id.put("NUMREGP", nregpag);
|
||||
id.put("NUMRIGP", nrigp);
|
||||
id.put("DATAREGP", _mov->get(MOV_DATAINC));
|
||||
id.put("ANNOLIQ", year_int);
|
||||
pagtmp.set(sezpag, pagsca.get_real(PAGSCA_IMPORTO));
|
||||
ultimo = true;
|
||||
}
|
||||
|
||||
int meseliq = id.get_date("DATAREGP").month();
|
||||
if (_freqviva[0] == 'T')
|
||||
{
|
||||
const int resto = meseliq % 3;
|
||||
if (resto > 0)
|
||||
meseliq += 3-resto;
|
||||
}
|
||||
id.put("MESELIQ", meseliq);
|
||||
id.put("SEZIONE", pagtmp.sezione());
|
||||
|
||||
const long numregp = id.get_long(ID_NUMREGP);
|
||||
const int numrigp = nrigp;
|
||||
real val_imp = pagtmp.valore() * diff_totr / tot;
|
||||
real val_iva;
|
||||
|
||||
if (ultimo && (is_detr_diff == 0))
|
||||
{
|
||||
TRectype svidrec(id.curr());
|
||||
TLocalisamfile rid(LF_IVADIFF);
|
||||
const long numreg = _rmoviva->get_long(RMI_NUMREG);
|
||||
const int numrig = _rmoviva->get_int(RMI_NUMRIG);
|
||||
const int numpro = id.get_int(ID_NUMPRO);
|
||||
|
||||
rid.put(MOV_NUMREG, numreg);
|
||||
rid.put(RMI_NUMRIG, numrig);
|
||||
val_iva = diff_ivar;
|
||||
|
||||
bool pag_found = false;
|
||||
|
||||
int err = rid.read(_isgteq);
|
||||
|
||||
for (; err == NOERR && rid.get_long(RMI_NUMREG) == numreg && rid.get_int(RMI_NUMRIG) == numrig; err = rid.next())
|
||||
{
|
||||
pag_found = true;
|
||||
if (sezfat != sezpag)
|
||||
val_iva -= rid.get_real(RMI_IMPOSTA);
|
||||
else
|
||||
val_iva += rid.get_real(RMI_IMPOSTA);
|
||||
const int ridnumpro = rid.get_int(ID_NUMPRO);
|
||||
const tipo_movimento ridtipopag = (tipo_movimento) rid.get_int(PART_TIPOMOV);
|
||||
|
||||
if (ridtipopag != tm_fattura && ridtipopag != tm_nessuno &&ridnumpro != numpro)
|
||||
{
|
||||
pag_found = true;
|
||||
if (sezfat != sezpag)
|
||||
val_iva -= rid.get_real(RMI_IMPOSTA);
|
||||
else
|
||||
val_iva += rid.get_real(RMI_IMPOSTA);
|
||||
}
|
||||
}
|
||||
if (!pag_found)
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
else
|
||||
civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
id.curr() = svidrec;
|
||||
}
|
||||
else
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
|
||||
id.put("IMPORTO", val_imp + val_iva);
|
||||
id.put(RMI_IMPONIBILE, val_imp);
|
||||
id.put(RMI_IMPOSTA, val_iva);
|
||||
|
||||
if (tipomov_pag >= tm_pagamento && is_detr_diff == 0)
|
||||
{
|
||||
incdiff_imp += val_imp;
|
||||
incdiff_iva += val_iva;
|
||||
}
|
||||
|
||||
int err = id.rewrite();
|
||||
|
||||
if (err != NOERR)
|
||||
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 && !_isannual) // Chiude o riapre la partita
|
||||
{
|
||||
TISAM_recordset recset("USE IVADIFF\nFROM NUMREG=#NR\nTO NUMREG=#NR");
|
||||
recset.set_var("#NR", numreg);
|
||||
TLocalisamfile& id = recset.cursor()->file();
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const bool chiusa = id.get_bool("CHIUSA");
|
||||
if (chiusa != ultimo)
|
||||
{
|
||||
id.put("CHIUSA", ultimo);
|
||||
id.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!pag_found)
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
else
|
||||
civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
id.curr() = svidrec;
|
||||
}
|
||||
else
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
|
||||
id.put("IMPORTO", val_imp + val_iva);
|
||||
id.put(RMI_IMPONIBILE, val_imp);
|
||||
id.put(RMI_IMPOSTA, val_iva);
|
||||
|
||||
if (tipomov_pag >= tm_pagamento)
|
||||
{
|
||||
incdiff_imp += val_imp;
|
||||
incdiff_iva += val_iva;
|
||||
}
|
||||
|
||||
int err = id.rewrite();
|
||||
|
||||
if (err != NOERR)
|
||||
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 && !_isannual) // Chiude o riapre la partita
|
||||
{
|
||||
TISAM_recordset recset("USE IVADIFF\nFROM NUMREG=#NR\nTO NUMREG=#NR");
|
||||
recset.set_var("#NR", numreg);
|
||||
TLocalisamfile& id = recset.cursor()->file();
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const bool chiusa = id.get_bool("CHIUSA");
|
||||
if (chiusa != ultimo)
|
||||
{
|
||||
id.put("CHIUSA", ultimo);
|
||||
id.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_date_ok(date, month, liqmonth, year_int)) // 5-3-2014
|
||||
{
|
||||
diff_imp = imponibile_orig;
|
||||
diff_iva = imposta_orig;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bIsMovDiff)
|
||||
{
|
||||
if (is_date_ok(date, month, liqmonth, year_int)) // 5-3-2014
|
||||
{
|
||||
diff_imp = imponibile_orig;
|
||||
diff_iva = imposta_orig;
|
||||
}
|
||||
if (is_date_ok(date, month, liqmonth, year_int) && is_detr_diff == 0) // 5-3-2014
|
||||
{
|
||||
diff_imp = diff_impr;
|
||||
diff_iva = diff_ivar;
|
||||
}
|
||||
}
|
||||
else
|
||||
analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
|
||||
impon_det, impos_det, impon_ind, impos_ind);
|
||||
}
|
||||
|
||||
{
|
||||
if (is_date_ok(date, month, liqmonth, year_int) && is_detr_diff == 0) // 5-3-2014
|
||||
{
|
||||
diff_imp = diff_impr;
|
||||
diff_iva = diff_ivar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Filling dell'array per IVA11
|
||||
if (_is_interactive && month == 13)
|
||||
@ -1730,7 +1738,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
codreg = comune.get_int(COM_CODREG) + 1;
|
||||
}
|
||||
|
||||
if (bIsMovDiff)
|
||||
if (bRowIsMovDiff)
|
||||
{
|
||||
vt_imponibile[codreg] += incdiff_imp;
|
||||
vt_imposta[codreg] += incdiff_iva;
|
||||
@ -1820,21 +1828,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
*/
|
||||
}
|
||||
|
||||
bool bMovDiffToAdd = true;
|
||||
|
||||
for (int is_detraibile = 0; is_detraibile < 2; is_detraibile++)
|
||||
{
|
||||
const int tipodet = is_detraibile ? 0 : tipoind;
|
||||
const real imponibile = is_detraibile ? impon_det : impon_ind;
|
||||
const real imposta = is_detraibile ? impos_det : impos_ind;
|
||||
const int tipodet = is_detraibile == 0 ? 0 : tipoind;
|
||||
real imponibile = is_detraibile == 0 ? impon_det : impon_ind;
|
||||
real imposta = is_detraibile == 0? impos_det : impos_ind;
|
||||
|
||||
if ((imponibile.is_zero() && imposta.is_zero()) &&
|
||||
(bIsMovDiff &&
|
||||
(is_detraibile > 0 ||
|
||||
(diff_imp.is_zero() && diff_iva.is_zero() &&
|
||||
incdiff_imp.is_zero() && incdiff_iva.is_zero())
|
||||
)
|
||||
)
|
||||
)
|
||||
continue;
|
||||
if (bRowIsMovDiff && is_detraibile == 0)
|
||||
{
|
||||
imponibile = ZERO;
|
||||
imposta = ZERO;
|
||||
}
|
||||
|
||||
/* Riga imponibile > 9 = ritenute; non si considerano (Scudler 1994) */
|
||||
|
||||
@ -2533,10 +2539,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
cs.add(v.string(), 1);
|
||||
tab->put("S2",cs);
|
||||
|
||||
if (is_detraibile == 0 && // eseguire solo una volta (is_detraibile è in un ciclo da 0 a 1)
|
||||
(!diff_imp.is_zero() || !diff_iva.is_zero() ||
|
||||
!incdiff_imp.is_zero() || !incdiff_iva.is_zero()))
|
||||
if (bRowIsMovDiff && bMovDiffToAdd)
|
||||
{
|
||||
bMovDiffToAdd = false;
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
@ -2568,8 +2573,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
else
|
||||
{
|
||||
// fatture acquisto a liquidazione differita
|
||||
tab->curr().add("R30", diff_imp);
|
||||
tab->curr().add("R31", diff_iva);
|
||||
tab->curr().add("R30", incdiff_imp);
|
||||
tab->curr().add("R31", incdiff_iva);
|
||||
tab->curr().add("R32", incdiff_imp);
|
||||
tab->curr().add("R33", incdiff_iva);
|
||||
fdiff_imp_acq += diff_imp;
|
||||
|
@ -1648,7 +1648,7 @@ int TLiquidazione_app::calc_inc_diff(int tipoiva, real& imponibile_diff, real& i
|
||||
TString limit; limit << "ANNOLIQ=" << _year;
|
||||
if (_month < 13) limit << " MESELIQ=" << _month;
|
||||
TString query; // righe pagamento (TIPOMOV>=3) ed escluse NC!
|
||||
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)&&(TIPOIVA=" << tipoiva << ')'
|
||||
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)&&(TIPOIVA=" << tipoiva << ")&&NUM(INDETR!='X')"
|
||||
<< "\nFROM " << limit << "\nTO " << limit;
|
||||
|
||||
TISAM_recordset id(query);
|
||||
|
@ -1,3 +1,3 @@
|
||||
171
|
||||
0
|
||||
$ivadiff|0|0|110|0|IVA ad esigibilità differita o per cassa|||
|
||||
171
|
||||
0
|
||||
$ivadiff|0|0|111|0|IVA ad esigibilità differita o per cassa|||
|
||||
|
@ -1,24 +1,25 @@
|
||||
171
|
||||
19
|
||||
NUMREG|3|7|0|Numero operazione Fattura
|
||||
NUMRIG|2|3|0|Numero riga IVA
|
||||
NUMPRO|2|3|0|Numero progressivo PAG o NC
|
||||
TIPOMOV|2|1|0|Tipo movimento (1=Fattura;2=Nota credito;3=Pagamento)
|
||||
DATAREG|5|8|0|Data fattura
|
||||
NUMREGP|3|7|0|Numero operazione PAG o NC
|
||||
NUMRIGP|2|3|0|Numero riga PAG o NC
|
||||
DATAREGP|5|8|0|Data pagamento
|
||||
ANNOLIQ|2|4|0|Anno liquidazione
|
||||
MESELIQ|2|2|0|Mese liquidazione
|
||||
TIPOATT|2|1|0|Tipo attività (1=Normale; 2=Mista)
|
||||
TIPOIVA|2|1|0|Tipo IVA (1=Vendite; 2=Acquisti)
|
||||
TIPODIFF|2|1|0|IVA differita (1) o per Cassa (2)
|
||||
CODIVA|1|4|0|Codice IVA
|
||||
SEZIONE|1|1|0|Sezione <D>are <A>vere
|
||||
IMPORTO|4|18|3|Importo
|
||||
IMPONIBILE|4|18|3|Imponibile
|
||||
IMPOSTA|4|18|3|Imposta
|
||||
CHIUSA|8|1|0|Partita chiusa
|
||||
2
|
||||
NUMREG+NUMRIG+NUMPRO|
|
||||
ANNOLIQ+MESELIQ+DATAREGP|X
|
||||
171
|
||||
20
|
||||
NUMREG|3|7|0|Numero operazione Fattura
|
||||
NUMRIG|2|3|0|Numero riga IVA
|
||||
NUMPRO|2|3|0|Numero progressivo PAG o NC
|
||||
TIPOMOV|2|1|0|Tipo movimento (1=Fattura;2=Nota credito;3=Pagamento)
|
||||
DATAREG|5|8|0|Data fattura
|
||||
NUMREGP|3|7|0|Numero operazione PAG o NC
|
||||
NUMRIGP|2|3|0|Numero riga PAG o NC
|
||||
DATAREGP|5|8|0|Data pagamento
|
||||
ANNOLIQ|2|4|0|Anno liquidazione
|
||||
MESELIQ|2|2|0|Mese liquidazione
|
||||
TIPOATT|2|1|0|Tipo attività (1=Normale; 2=Mista)
|
||||
TIPOIVA|2|1|0|Tipo IVA (1=Vendite; 2=Acquisti)
|
||||
INDETR|8|1|0|Riga di IVA indetraibile
|
||||
TIPODIFF|2|1|0|IVA differita (1) o per Cassa (2)
|
||||
CODIVA|1|4|0|Codice IVA
|
||||
SEZIONE|1|1|0|Sezione <D>are <A>vere
|
||||
IMPORTO|4|18|3|Importo
|
||||
IMPONIBILE|4|18|3|Imponibile
|
||||
IMPOSTA|4|18|3|Imposta
|
||||
CHIUSA|8|1|0|Partita chiusa
|
||||
2
|
||||
NUMREG+NUMRIG+NUMPRO|
|
||||
ANNOLIQ+MESELIQ+DATAREGP|X
|
||||
|
@ -9,6 +9,7 @@
|
||||
#define ID_MESELIQ "MESELIQ"
|
||||
#define ID_TIPOATT "TIPOATT"
|
||||
#define ID_TIPOIVA "TIPOIVA"
|
||||
#define ID_INDETR "INDETR"
|
||||
#define ID_TIPODIFF "TIPODIFF"
|
||||
#define ID_CODIVA "CODIVA"
|
||||
#define ID_SEZIONE "SEZIONE"
|
||||
|
Loading…
x
Reference in New Issue
Block a user