Patch level : 12.0 310
Files correlati : cg4.exe Commento : Correzioni alla liquidazione per l'IVA differita e per cassa git-svn-id: svn://10.65.10.50/branches/R_10_00@23432 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f5ab41901e
commit
f565c39768
@ -537,7 +537,7 @@ public:
|
||||
const real& howmuch, bool intra);
|
||||
|
||||
// IVA differita e per cassa
|
||||
void zero_diff(int month, const char* codatt); // Azzera tabella IVA x Cassa
|
||||
void zero_diff(int month, const char* codatt); // Azzera tabella IVA x Cassa
|
||||
|
||||
// Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come
|
||||
// e' scritto sui parametri liquidazione (LIA)
|
||||
|
@ -1127,13 +1127,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
#ifdef DBG
|
||||
const long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
if (nr == 24894)
|
||||
if (nr == 24734 || nr == 24735)
|
||||
int i = 1 ;
|
||||
#endif
|
||||
|
||||
if (bIsMovDiff && tm == tm_fattura)
|
||||
{
|
||||
// const bool id_chiusa = ivadiff_chiusa(_mov->curr(), inizio);
|
||||
const bool id_chiusa = ivadiff_chiusa(_mov->curr(), TDate(31,12,inizio.year()-1));
|
||||
if (!dok && id_chiusa)
|
||||
continue; // Salta vecchi movimenti differiti già chiusi
|
||||
@ -1386,14 +1385,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real impos_ind; // Imposta indetraibile
|
||||
real impon_det; // Imponibile detraibile
|
||||
real impos_det; // Imposta detraibile
|
||||
char sezfat;
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
|
||||
if (bIsMovDiff && tm == tm_fattura)
|
||||
{
|
||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
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);
|
||||
@ -1418,18 +1418,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
|
||||
id.put("IMPORTO", imponibile_orig+imposta_orig);
|
||||
id.put(RMI_IMPONIBILE, imponibile_orig);
|
||||
|
||||
/* cazzata?
|
||||
if (percind > ZERO) // Nel caso di IVA indetraibile memorizza solo la parte detraibile!
|
||||
{
|
||||
real imp_det, iva_det, imp_ind, iva_ind;
|
||||
analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
|
||||
imp_det, iva_det, imp_ind, iva_ind);
|
||||
id.put(RMI_IMPOSTA, iva_det);
|
||||
}
|
||||
else
|
||||
*/
|
||||
id.put(RMI_IMPOSTA, imposta_orig);
|
||||
id.put(RMI_IMPOSTA, imposta_orig);
|
||||
|
||||
const int ew = id.write_rewrite();
|
||||
if (ew != NOERR)
|
||||
@ -1442,53 +1431,57 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real totfat = _mov->get(MOV_TOTDOC);
|
||||
real tot = totfat;
|
||||
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
TRectype& idcurr = id.curr();
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||
{
|
||||
const TRectype& pagsca = *(TRectype*)obj;
|
||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||
|
||||
id.zero();
|
||||
idcurr.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
idcurr.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||
idcurr.put("NUMPRO", min(nrigp, 999));
|
||||
id.put("NUMPRO", min(nrigp, 999));
|
||||
if (id.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
id.zero();
|
||||
idcurr.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||
idcurr.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||
idcurr.put("NUMPRO", min(nrigp, 999));
|
||||
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());
|
||||
}
|
||||
|
||||
idcurr.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||
idcurr.put("TIPOATT", rmi_tipoatt);
|
||||
idcurr.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
idcurr.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||
idcurr.put(RMI_CODIVA, codiva);
|
||||
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);
|
||||
tipomov_pag = rp.tipo();
|
||||
idcurr.put(PART_TIPOMOV, tipomov_pag);
|
||||
idcurr.put("NUMREGP", rp.get(PART_NREG));
|
||||
idcurr.put("NUMRIGP", rp.get(PART_NUMRIG));
|
||||
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);
|
||||
idcurr.put("DATAREGP", d);
|
||||
idcurr.put("ANNOLIQ", d.year());
|
||||
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);
|
||||
@ -1496,11 +1489,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
else
|
||||
{
|
||||
// Falso record generato da datainc
|
||||
idcurr.put(PART_TIPOMOV, tipomov_pag);
|
||||
idcurr.put("NUMREGP", _mov->get(MOV_NUMREG));
|
||||
idcurr.put("NUMRIGP", nrigp);
|
||||
idcurr.put("DATAREGP", _mov->get(MOV_DATAINC));
|
||||
idcurr.put("ANNOLIQ", year_int);
|
||||
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;
|
||||
}
|
||||
@ -1512,15 +1508,61 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
if (resto > 0)
|
||||
meseliq += 3-resto;
|
||||
}
|
||||
idcurr.put("MESELIQ", meseliq);
|
||||
idcurr.put("SEZIONE", pagtmp.sezione());
|
||||
id.put("MESELIQ", meseliq);
|
||||
id.put("SEZIONE", pagtmp.sezione());
|
||||
|
||||
real val_imp = pagtmp.valore() * lordo_orig / tot;
|
||||
real val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
real val_iva;
|
||||
|
||||
if (ultimo)
|
||||
{
|
||||
TRectype svidrec(id.curr());
|
||||
TLocalisamfile rid(LF_IVADIFF);
|
||||
const long numreg = _rmoviva->get_long(RMI_NUMREG);
|
||||
const int numrig = _rmoviva->get_int(RMI_NUMRIG);
|
||||
|
||||
rid.put(MOV_NUMREG, numreg);
|
||||
rid.put(RMI_NUMRIG, numrig);
|
||||
val_iva = imposta_orig;
|
||||
|
||||
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())
|
||||
{
|
||||
const long ridnumreg =rid.get_long(RMI_NUMREG);
|
||||
const int ridnumrig = rid.get_int(RMI_NUMRIG);
|
||||
const tipo_movimento ridtipopag = (tipo_movimento) rid.get_int(PART_TIPOMOV);
|
||||
|
||||
if (ridnumreg == numreg && ridnumrig == numrig)
|
||||
{
|
||||
const long ridnregpag = rid.get_long("NUMREGP");
|
||||
const int ridnrigpag = rid.get_int("NUMRIGP");
|
||||
|
||||
if ((ridtipopag != tm_fattura) && ((ridnregpag != nregpag) &&
|
||||
(ridnrigpag != nrigpag)))
|
||||
{
|
||||
pag_found = true;
|
||||
if (sezfat != sezpag)
|
||||
val_iva -= rid.get_long(RMI_IMPOSTA);
|
||||
else
|
||||
val_iva += rid.get_long(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());
|
||||
|
||||
idcurr.put("IMPORTO", val_imp + val_iva);
|
||||
idcurr.put(RMI_IMPONIBILE, val_imp);
|
||||
idcurr.put(RMI_IMPOSTA, val_iva);
|
||||
id.put("IMPORTO", val_imp + val_iva);
|
||||
id.put(RMI_IMPONIBILE, val_imp);
|
||||
id.put(RMI_IMPOSTA, val_iva);
|
||||
|
||||
if (tipomov_pag >= tm_pagamento)
|
||||
{
|
||||
|
@ -626,7 +626,7 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
||||
if (!_nditte->is_first_match(LF_ATTIV))
|
||||
return;
|
||||
|
||||
if (month > 12 || (_freqviva == "T" && (month % 3) != 1))
|
||||
if (month > 12 || (_freqviva == "T" && (month % 3) != 1)) // rischioso non farlo in tredicesima
|
||||
return;
|
||||
|
||||
TFast_isamfile fid(LF_IVADIFF);
|
||||
@ -637,10 +637,11 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
||||
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))
|
||||
// if (month > (_freqviva == "T" ? 3 : 1))
|
||||
query << " MESELIQ=" << month;
|
||||
|
||||
query << "\nTO ANNOLIQ=" << _year; // Dal 18-06-2014 lascia stare l'anno prossimo!
|
||||
query << " MESELIQ=" << month + (_freqviva == "T" ? 2 : 0);
|
||||
|
||||
TISAM_recordset id(query);
|
||||
|
||||
@ -651,7 +652,7 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||
{
|
||||
pi.add_status(1);
|
||||
file.zero("ANNOLIQ");
|
||||
/* file.zero("ANNOLIQ");
|
||||
file.zero("MESELIQ");
|
||||
file.zero("IMPORTO");
|
||||
file.zero("IMPONIBILE");
|
||||
@ -666,6 +667,8 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
||||
file.zero("TIPOATT");
|
||||
file.zero("TIPODIFF");
|
||||
file.zero("CHIUSA");
|
||||
file.rewrite();
|
||||
}
|
||||
file.rewrite(); */
|
||||
file.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user