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);
|
const real& howmuch, bool intra);
|
||||||
|
|
||||||
// IVA differita e per cassa
|
// 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
|
// Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come
|
||||||
// e' scritto sui parametri liquidazione (LIA)
|
// e' scritto sui parametri liquidazione (LIA)
|
||||||
|
@ -1127,13 +1127,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
const long nr = _mov->get_long(MOV_NUMREG);
|
const long nr = _mov->get_long(MOV_NUMREG);
|
||||||
|
|
||||||
if (nr == 24894)
|
if (nr == 24734 || nr == 24735)
|
||||||
int i = 1 ;
|
int i = 1 ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (bIsMovDiff && tm == tm_fattura)
|
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));
|
const bool id_chiusa = ivadiff_chiusa(_mov->curr(), TDate(31,12,inizio.year()-1));
|
||||||
if (!dok && id_chiusa)
|
if (!dok && id_chiusa)
|
||||||
continue; // Salta vecchi movimenti differiti già chiusi
|
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 impos_ind; // Imposta indetraibile
|
||||||
real impon_det; // Imponibile detraibile
|
real impon_det; // Imponibile detraibile
|
||||||
real impos_det; // Imposta detraibile
|
real impos_det; // Imposta detraibile
|
||||||
|
char sezfat;
|
||||||
|
TLocalisamfile id(LF_IVADIFF);
|
||||||
|
|
||||||
if (bIsMovDiff && tm == tm_fattura)
|
if (bIsMovDiff && tm == tm_fattura)
|
||||||
{
|
{
|
||||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
|
||||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||||
|
|
||||||
TLocalisamfile id(LF_IVADIFF);
|
sezfat = tipomov == vendita ? 'D' : 'A';
|
||||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
id.put("NUMPRO", 0);
|
id.put("NUMPRO", 0);
|
||||||
id.put(PART_TIPOMOV, tm);
|
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("IMPORTO", imponibile_orig+imposta_orig);
|
||||||
id.put(RMI_IMPONIBILE, imponibile_orig);
|
id.put(RMI_IMPONIBILE, imponibile_orig);
|
||||||
|
id.put(RMI_IMPOSTA, imposta_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);
|
|
||||||
|
|
||||||
const int ew = id.write_rewrite();
|
const int ew = id.write_rewrite();
|
||||||
if (ew != NOERR)
|
if (ew != NOERR)
|
||||||
@ -1442,53 +1431,57 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real totfat = _mov->get(MOV_TOTDOC);
|
real totfat = _mov->get(MOV_TOTDOC);
|
||||||
real tot = totfat;
|
real tot = totfat;
|
||||||
|
|
||||||
TLocalisamfile id(LF_IVADIFF);
|
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||||
TRectype& idcurr = id.curr();
|
|
||||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
|
||||||
{
|
{
|
||||||
const TRectype& pagsca = *(TRectype*)obj;
|
const TRectype& pagsca = *(TRectype*)obj;
|
||||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||||
|
|
||||||
id.zero();
|
id.zero();
|
||||||
idcurr.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
idcurr.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||||
idcurr.put("NUMPRO", min(nrigp, 999));
|
id.put("NUMPRO", min(nrigp, 999));
|
||||||
if (id.read(_isequal, _lock) != NOERR)
|
if (id.read(_isequal, _lock) != NOERR)
|
||||||
{
|
{
|
||||||
id.zero();
|
id.zero();
|
||||||
idcurr.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
idcurr.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
idcurr.put("NUMPRO", min(nrigp, 999));
|
id.put("NUMPRO", min(nrigp, 999));
|
||||||
if (id.write() != NOERR)
|
if (id.write() != NOERR)
|
||||||
error_box("Errore %d in creazione record IVADIFF", id.status());
|
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);
|
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||||
idcurr.put("TIPOATT", rmi_tipoatt);
|
id.put("TIPOATT", rmi_tipoatt);
|
||||||
idcurr.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||||
idcurr.put("TIPODIFF", iva_cass ? 2 : 1);
|
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||||
idcurr.put(RMI_CODIVA, codiva);
|
id.put(RMI_CODIVA, codiva);
|
||||||
|
|
||||||
TImporto pagtmp;
|
TImporto pagtmp;
|
||||||
bool ultimo = false;
|
bool ultimo = false;
|
||||||
|
long nregpag;
|
||||||
|
int nrigpag;
|
||||||
|
|
||||||
tipo_movimento tipomov_pag = tm_pagamento;
|
tipo_movimento tipomov_pag = tm_pagamento;
|
||||||
if (nrigp > 0 && nrigp < 9999)
|
if (nrigp > 0 && nrigp < 9999)
|
||||||
{
|
{
|
||||||
const TPartita& p = arrpart.partita(pagsca);
|
const TPartita& p = arrpart.partita(pagsca);
|
||||||
const TRiga_partite& rp = p.riga(nrigp);
|
const TRiga_partite& rp = p.riga(nrigp);
|
||||||
tipomov_pag = rp.tipo();
|
|
||||||
idcurr.put(PART_TIPOMOV, tipomov_pag);
|
nregpag = rp.get_long(PART_NREG);
|
||||||
idcurr.put("NUMREGP", rp.get(PART_NREG));
|
nrigpag = rp.get_int(PART_NUMRIG);
|
||||||
idcurr.put("NUMRIGP", rp.get(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);
|
TDate d = rp.get(PART_DATAPAG);
|
||||||
if (!d.ok())
|
if (!d.ok())
|
||||||
d = rp.get(PART_DATADOC);
|
d = rp.get(PART_DATADOC);
|
||||||
if (!d.ok())
|
if (!d.ok())
|
||||||
d = rp.get(PART_DATAREG);
|
d = rp.get(PART_DATAREG);
|
||||||
idcurr.put("DATAREGP", d);
|
id.put("DATAREGP", d);
|
||||||
idcurr.put("ANNOLIQ", d.year());
|
id.put("ANNOLIQ", d.year());
|
||||||
pagtmp = p.importo_pagsca(pagsca);
|
pagtmp = p.importo_pagsca(pagsca);
|
||||||
pagtmp.normalize(sezpag);
|
pagtmp.normalize(sezpag);
|
||||||
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
||||||
@ -1496,11 +1489,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Falso record generato da datainc
|
// Falso record generato da datainc
|
||||||
idcurr.put(PART_TIPOMOV, tipomov_pag);
|
nregpag = _mov->get_long(MOV_NUMREG);
|
||||||
idcurr.put("NUMREGP", _mov->get(MOV_NUMREG));
|
nrigpag = nrigp;
|
||||||
idcurr.put("NUMRIGP", nrigp);
|
|
||||||
idcurr.put("DATAREGP", _mov->get(MOV_DATAINC));
|
id.put(PART_TIPOMOV, tipomov_pag);
|
||||||
idcurr.put("ANNOLIQ", year_int);
|
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));
|
pagtmp.set(sezpag, pagsca.get_real(PAGSCA_IMPORTO));
|
||||||
ultimo = true;
|
ultimo = true;
|
||||||
}
|
}
|
||||||
@ -1512,15 +1508,61 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (resto > 0)
|
if (resto > 0)
|
||||||
meseliq += 3-resto;
|
meseliq += 3-resto;
|
||||||
}
|
}
|
||||||
idcurr.put("MESELIQ", meseliq);
|
id.put("MESELIQ", meseliq);
|
||||||
idcurr.put("SEZIONE", pagtmp.sezione());
|
id.put("SEZIONE", pagtmp.sezione());
|
||||||
|
|
||||||
real val_imp = pagtmp.valore() * lordo_orig / tot;
|
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);
|
id.put("IMPORTO", val_imp + val_iva);
|
||||||
idcurr.put(RMI_IMPONIBILE, val_imp);
|
id.put(RMI_IMPONIBILE, val_imp);
|
||||||
idcurr.put(RMI_IMPOSTA, val_iva);
|
id.put(RMI_IMPOSTA, val_iva);
|
||||||
|
|
||||||
if (tipomov_pag >= tm_pagamento)
|
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))
|
if (!_nditte->is_first_match(LF_ATTIV))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (month > 12 || (_freqviva == "T" && (month % 3) != 1))
|
if (month > 12 || (_freqviva == "T" && (month % 3) != 1)) // rischioso non farlo in tredicesima
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TFast_isamfile fid(LF_IVADIFF);
|
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 << "USE IVADIFF KEY 2"; // Key 2 = ANNOLIQ+MESELIQ+...
|
||||||
query << "\nFROM ANNOLIQ=" << _year;
|
query << "\nFROM ANNOLIQ=" << _year;
|
||||||
// Se calcolo gennaio (o marzo trimestrale) azzero tutto l'anno, altrimenti solo il mese selezionato
|
// 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 << " MESELIQ=" << month;
|
||||||
|
|
||||||
query << "\nTO ANNOLIQ=" << _year; // Dal 18-06-2014 lascia stare l'anno prossimo!
|
query << "\nTO ANNOLIQ=" << _year; // Dal 18-06-2014 lascia stare l'anno prossimo!
|
||||||
|
query << " MESELIQ=" << month + (_freqviva == "T" ? 2 : 0);
|
||||||
|
|
||||||
TISAM_recordset id(query);
|
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())
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
{
|
{
|
||||||
pi.add_status(1);
|
pi.add_status(1);
|
||||||
file.zero("ANNOLIQ");
|
/* file.zero("ANNOLIQ");
|
||||||
file.zero("MESELIQ");
|
file.zero("MESELIQ");
|
||||||
file.zero("IMPORTO");
|
file.zero("IMPORTO");
|
||||||
file.zero("IMPONIBILE");
|
file.zero("IMPONIBILE");
|
||||||
@ -666,6 +667,8 @@ void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
|||||||
file.zero("TIPOATT");
|
file.zero("TIPOATT");
|
||||||
file.zero("TIPODIFF");
|
file.zero("TIPODIFF");
|
||||||
file.zero("CHIUSA");
|
file.zero("CHIUSA");
|
||||||
file.rewrite();
|
file.rewrite(); */
|
||||||
}
|
file.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user