Correzione in liquidazione IVA relativa allo scorporo corretto
(sia in annuale che nel periodo). git-svn-id: svn://10.65.10.50/trunk@4139 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2d4a8bddba
commit
cafd3fcd50
100
cg/cg4301.cpp
100
cg/cg4301.cpp
@ -570,16 +570,16 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
|
|
||||||
for (; _cur->pos() < items; ++(*_cur))
|
for (; _cur->pos() < items; ++(*_cur))
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if ((_cur->pos() & 0x7F) == 0)
|
||||||
if (_cur->pos() % 100 == 0L)
|
|
||||||
{
|
{
|
||||||
|
#ifdef DBG
|
||||||
msgdbg.format("Ricalcolo attivita': P=%ld/%ld",_cur->pos(),items);
|
msgdbg.format("Ricalcolo attivita': P=%ld/%ld",_cur->pos(),items);
|
||||||
freespace = GetFreeSpace(0);
|
freespace = GetFreeSpace(0);
|
||||||
msgdbg << " Memoria libera(1): " << freespace/1024 << " Kbytes.";
|
msgdbg << " Memoria libera(1): " << freespace/1024 << " Kbytes.";
|
||||||
xvt_statbar_set(msgdbg);
|
xvt_statbar_set(msgdbg);
|
||||||
|
#endif
|
||||||
do_events();
|
do_events();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
TDate date(_mov->get("DATAREG"));
|
TDate date(_mov->get("DATAREG"));
|
||||||
TString16 reg = _mov->get("REG");
|
TString16 reg = _mov->get("REG");
|
||||||
bool isreg = look_reg(_mov->get("REG"));
|
bool isreg = look_reg(_mov->get("REG"));
|
||||||
@ -985,6 +985,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real imp = _pim->get_real("R0"); // imponibile
|
real imp = _pim->get_real("R0"); // imponibile
|
||||||
real ivp = _pim->get_real("R1"); // IVA su imp.
|
real ivp = _pim->get_real("R1"); // IVA su imp.
|
||||||
real lor = _pim->get_real("R2"); // lordo
|
real lor = _pim->get_real("R2"); // lordo
|
||||||
|
real lorcor = _pim->get_real("R3"); // lordo corrispettivi (da non ventilare)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* le maledette fatture con scontrino sono sul registro dei
|
* le maledette fatture con scontrino sono sul registro dei
|
||||||
@ -1103,6 +1104,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
{
|
{
|
||||||
real perc = _iva->get_real("R0")/CENTO;
|
real perc = _iva->get_real("R0")/CENTO;
|
||||||
lor += imponibile + imposta;
|
lor += imponibile + imposta;
|
||||||
|
lorcor += imponibile+imposta;
|
||||||
real tot = imponibile+imposta;
|
real tot = imponibile+imposta;
|
||||||
if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva, codatt);
|
if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva, codatt);
|
||||||
}
|
}
|
||||||
@ -1196,6 +1198,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
_pim->put("R0",imp);
|
_pim->put("R0",imp);
|
||||||
_pim->put("R1",ivp);
|
_pim->put("R1",ivp);
|
||||||
_pim->put("R2",lor);
|
_pim->put("R2",lor);
|
||||||
|
_pim->put("R3",lorcor); // Corrispettivi, non inclusi quelli da ventilare
|
||||||
_pim->put("R5",ifs);
|
_pim->put("R5",ifs);
|
||||||
_pim->put("R6",vfs);
|
_pim->put("R6",vfs);
|
||||||
_pim->put("R7",adf);
|
_pim->put("R7",adf);
|
||||||
@ -1772,6 +1775,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
|||||||
_BolgArray b_arr;
|
_BolgArray b_arr;
|
||||||
const bool is_key = _iva11_arr.is_key(codatt);
|
const bool is_key = _iva11_arr.is_key(codatt);
|
||||||
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
|
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
|
||||||
|
// Scorporo corretto dei corrispettivi in R3
|
||||||
|
TAssoc_array corr_ann;
|
||||||
|
_CorrItem cx,*cc;
|
||||||
|
bool is_present;
|
||||||
|
|
||||||
for (_pim->first(); !_pim->eof(); _pim->next())
|
for (_pim->first(); !_pim->eof(); _pim->next())
|
||||||
{
|
{
|
||||||
@ -1878,6 +1885,16 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
|||||||
|
|
||||||
if ((_isagricolo && tagr==2) || !_isagricolo)
|
if ((_isagricolo && tagr==2) || !_isagricolo)
|
||||||
{
|
{
|
||||||
|
// Accumula i corrispettivi da scorporare per codice iva
|
||||||
|
is_present = corr_ann.is_key(codiva);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_present ? (_CorrItem&) corr_ann[codiva] : cx;
|
||||||
|
ca._totale += _pim->get_real("R3");
|
||||||
|
if (!is_present) // se non c'e' lo aggiunge
|
||||||
|
{
|
||||||
|
ca._aliquota = _iva->get_real("R0"); // Se e' nuovo setta l'aliquota
|
||||||
|
corr_ann.add(codiva,ca);
|
||||||
|
}
|
||||||
tt = _pim->get("S0");
|
tt = _pim->get("S0");
|
||||||
a13i = tt.get(0);
|
a13i = tt.get(0);
|
||||||
a13v = tt.get(1);
|
a13v = tt.get(1);
|
||||||
@ -1957,6 +1974,44 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Scorre i corrispettivi lordi accumulati, li scorpora ed aggiorna i righi relativi
|
||||||
|
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
||||||
|
{
|
||||||
|
lordo2netto(cc->_totale,imp,iva,cc->_aliquota/CENTO);
|
||||||
|
vtot += imp; ivav += iva;
|
||||||
|
if (cc->_aliquota == 4.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC101);
|
||||||
|
array.add(iva,TAB11_EC201);
|
||||||
|
}
|
||||||
|
else if (cc->_aliquota == 9.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC102);
|
||||||
|
array.add(iva,TAB11_EC202);
|
||||||
|
}
|
||||||
|
else if (cc->_aliquota == 10.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC103);
|
||||||
|
array.add(iva,TAB11_EC203);
|
||||||
|
}
|
||||||
|
else if (cc->_aliquota == 13.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC104);
|
||||||
|
array.add(iva,TAB11_EC204);
|
||||||
|
}
|
||||||
|
else if (cc->_aliquota == 16.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC105);
|
||||||
|
array.add(iva,TAB11_EC205);
|
||||||
|
}
|
||||||
|
else if (cc->_aliquota == 19.00)
|
||||||
|
{
|
||||||
|
array.add(imp,TAB11_EC106);
|
||||||
|
array.add(iva,TAB11_EC206);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115
|
// Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115
|
||||||
// Va beh...
|
// Va beh...
|
||||||
real r16, r17;
|
real r16, r17;
|
||||||
@ -2616,8 +2671,14 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
es_b3 = _pla->get_real("R3");
|
es_b3 = _pla->get_real("R3");
|
||||||
cess_amm = _pla->get_real("R4");
|
cess_amm = _pla->get_real("R4");
|
||||||
pro_pag = _pla->get_real("R12");
|
pro_pag = _pla->get_real("R12");
|
||||||
iva_acq = _pla->get_real("R11");
|
iva_acq = _pla->get_real("R11");
|
||||||
|
|
||||||
|
// Per avere un risultato corretto, si deve totalizzare PIM->R3 per codice iva
|
||||||
|
// e quindi effettuare lo scorporo dell'imponibile e aggiungere al relativo volume d'affari
|
||||||
|
TAssoc_array corr_ann;
|
||||||
|
_CorrItem cx,*cc;
|
||||||
|
bool is_key;
|
||||||
|
|
||||||
for (_pim->first(); !_pim->eof(); _pim->next())
|
for (_pim->first(); !_pim->eof(); _pim->next())
|
||||||
{
|
{
|
||||||
if (_year != *_pim_anno) continue;
|
if (_year != *_pim_anno) continue;
|
||||||
@ -2636,8 +2697,19 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
a13 = _pim->get("S0");
|
a13 = _pim->get("S0");
|
||||||
imp_a13 = a13.get(0);
|
imp_a13 = a13.get(0);
|
||||||
imp_ifs -= imp_af + imp_a13; // Toglie le autofatture e le op. A13
|
imp_ifs -= imp_af + imp_a13; // Toglie le autofatture e le op. A13
|
||||||
if (corrisp) imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
|
if (corrisp)
|
||||||
|
{
|
||||||
|
imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
|
||||||
|
is_key = corr_ann.is_key(codiva);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
|
||||||
|
ca._totale += _pim->get_real("R3");
|
||||||
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
|
{
|
||||||
|
ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
|
||||||
|
corr_ann.add(codiva,ca);
|
||||||
|
}
|
||||||
|
}
|
||||||
if ( // ESCLUSI:
|
if ( // ESCLUSI:
|
||||||
strcmp(att,*_pim_codatt) != 0 ||
|
strcmp(att,*_pim_codatt) != 0 ||
|
||||||
treg != vendita || // non vendite
|
treg != vendita || // non vendite
|
||||||
@ -2652,7 +2724,19 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
else
|
else
|
||||||
volaff2 += imp_ifs;
|
volaff2 += imp_ifs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ora si scorporano i corrispettivi raggruppati per codice IVA e si totalizzano gli imponibili
|
||||||
|
// calcolati, da aggiungere poi a volaff1 o volaff2
|
||||||
|
real imp,iva;
|
||||||
|
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
||||||
|
{
|
||||||
|
lordo2netto(cc->_totale,imp,iva,cc->_aliquota);
|
||||||
|
if (tipoatt == 1)
|
||||||
|
volaff1 += imp;
|
||||||
|
else
|
||||||
|
volaff2 += imp;
|
||||||
|
}
|
||||||
|
|
||||||
// calcola esenti, cessioni, lordo vendite, prorata pagato
|
// calcola esenti, cessioni, lordo vendite, prorata pagato
|
||||||
// e IVA acquisti dai plm/ptm/pum/pam/pom
|
// e IVA acquisti dai plm/ptm/pum/pam/pom
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
// x13
|
// x13
|
||||||
TString key;
|
TString key;
|
||||||
bool is_key;
|
bool is_key;
|
||||||
TAssoc_array corr_ann; // Contiene corrispettivi annuali (temporaneo, da rimuovere
|
TAssoc_array corr_ann; // Contiene corrispettivi annuali (temporaneo, da correggere
|
||||||
// non appena implementato correttamente il mese 13)
|
// non appena implementato correttamente il mese 13)
|
||||||
_CorrItem cx;
|
_CorrItem cx;
|
||||||
|
|
||||||
@ -117,25 +117,26 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
_CorrItem* ci = (_CorrItem*)&_corr_arr[i];
|
_CorrItem* ci = (_CorrItem*)&_corr_arr[i];
|
||||||
// Se e' annuale memorizza in un assoc_array i corrispettivi annuali
|
// memorizza per codiva
|
||||||
// memorizza per attivita'+registro+codiva+tipodet
|
|
||||||
// x13
|
// x13
|
||||||
if (month == 13)
|
if ((month != 13 && ci->_month != month) || ci->_codatt != codatt) continue;
|
||||||
|
|
||||||
|
key = ci->_codiva;
|
||||||
|
is_key = corr_ann.is_key(key);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[key] : cx;
|
||||||
|
ca._totale += ci->_totale;
|
||||||
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
{
|
{
|
||||||
key = ci->_codiva;
|
ca._aliquota = ci->_aliquota;
|
||||||
is_key = corr_ann.is_key(key);
|
/*
|
||||||
cx._totale = 0;
|
ca._codreg = ci->_codreg;
|
||||||
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[key] : cx;
|
ca._tipodet = ci->_tipodet;
|
||||||
ca._totale += ci->_totale;
|
*/
|
||||||
if (!is_key) // se non c'e' lo aggiunge
|
corr_ann.add(key,ca);
|
||||||
{
|
|
||||||
ca._aliquota = ci->_aliquota;
|
|
||||||
ca._codreg = ci->_codreg;
|
|
||||||
ca._tipodet = ci->_tipodet;
|
|
||||||
corr_ann.add(key,ca);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
continue;
|
||||||
// fine x13
|
// fine x13
|
||||||
|
|
||||||
if (ci->_month != month || ci->_codatt != codatt)
|
if (ci->_month != month || ci->_codatt != codatt)
|
||||||
@ -162,21 +163,24 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_pim->put("R0", imponibile);
|
_pim->put("R0", imponibile);
|
||||||
_pim->put("R1", imposta);
|
_pim->put("R1", imposta);
|
||||||
_pim->rewrite();
|
_pim->rewrite();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
// Dopo aver calcolato la somma dei corrispettivi annualmente, li scorpora
|
// Dopo aver calcolato la somma dei corrispettivi annualmente, li scorpora
|
||||||
// x13
|
// x13
|
||||||
if (month == 13)
|
// if (month == 13)
|
||||||
{
|
//{
|
||||||
real imp,iva,imp1,iva1;
|
real imp,iva,imp1,iva1;
|
||||||
_CorrItem* cc;
|
_CorrItem* cc;
|
||||||
// Per le prossime scritture uso impropriamente il mese 12, lo so e' terribile...
|
// Per le prossime scritture(PAM e PLM) uso impropriamente il mese 12, lo so e' terribile...
|
||||||
// ma non appena possibile il mese 13 sara' disponibile tutto sara' piu' bello.
|
// ma non appena possibile il mese 13 sara' disponibile tutto sara' piu' bello.
|
||||||
|
//const int m = month == 13 ? 12 : month;
|
||||||
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
||||||
{
|
{
|
||||||
lordo2netto(cc->_totale, imp, iva, cc->_aliquota);
|
lordo2netto(cc->_totale, imp, iva, cc->_aliquota);
|
||||||
imponibile += imp;
|
imponibile += imp;
|
||||||
imposta += iva;
|
imposta += iva;
|
||||||
look_pim(12, codatt, cc->_codreg, "", corr_ann.get_hashobj()->key(), cc->_tipodet, TRUE);
|
/*
|
||||||
|
look_pim(m, codatt, cc->_codreg, "", corr_ann.get_hashobj()->key(), cc->_tipodet, TRUE);
|
||||||
imp1 = _pim->get_real("R0");
|
imp1 = _pim->get_real("R0");
|
||||||
iva1 = _pim->get_real("R1");
|
iva1 = _pim->get_real("R1");
|
||||||
imp1 += imp;
|
imp1 += imp;
|
||||||
@ -184,8 +188,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_pim->put("R0",imp1);
|
_pim->put("R0",imp1);
|
||||||
_pim->put("R1",iva1);
|
_pim->put("R1",iva1);
|
||||||
_pim->rewrite();
|
_pim->rewrite();
|
||||||
|
*/
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
look_plm(12, codatt); // Aggiorna l'iva vendite in PLM...
|
look_plm(month, codatt); // Aggiorna l'iva vendite in PLM...
|
||||||
real ive = _plm->get_real("R0");
|
real ive = _plm->get_real("R0");
|
||||||
ive += imposta;
|
ive += imposta;
|
||||||
_plm->put("R0",ive);
|
_plm->put("R0",ive);
|
||||||
@ -195,7 +201,6 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_pam->put("R1",vaf);
|
_pam->put("R1",vaf);
|
||||||
_plm->rewrite();
|
_plm->rewrite();
|
||||||
_pam->rewrite();
|
_pam->rewrite();
|
||||||
}
|
|
||||||
// fine x13
|
// fine x13
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -651,18 +656,26 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
|
|||||||
|
|
||||||
// Condizione 2...
|
// Condizione 2...
|
||||||
// scorri i bellissimi progressivi mensili
|
// scorri i bellissimi progressivi mensili
|
||||||
|
// Nota: i valori ricavati vanno poi integrati con R3, dove sono memorizzati i corrispettivi da scorporare
|
||||||
|
// anche qui si accumula per codice iva e si effettua lo scorporo alla fine del ciclo.
|
||||||
|
TAssoc_array corr_ann;
|
||||||
|
TString codiva;
|
||||||
|
_CorrItem cx,*cc;
|
||||||
|
bool is_key;
|
||||||
|
|
||||||
const int year = atoi((const char*)_year);
|
const int year = atoi((const char*)_year);
|
||||||
for (_pim->first(); !_pim->eof(); _pim->next())
|
for (_pim->first(); !_pim->eof(); _pim->next())
|
||||||
{
|
{
|
||||||
int ryear = atoi(*_pim_anno);
|
int ryear = atoi(*_pim_anno);
|
||||||
int rmese = atoi(*_pim_mese);
|
int rmese = atoi(*_pim_mese);
|
||||||
int tipodet = atoi(*_pim_tipodet);
|
int tipodet = atoi(*_pim_tipodet);
|
||||||
|
codiva = *_pim_codiva;
|
||||||
|
|
||||||
// B3 significa che e' acq. o vendita valido per rimb. per aliquota
|
// B3 significa che e' acq. o vendita valido per rimb. per aliquota
|
||||||
if (!_pim->get_bool("B3")) continue;
|
if (!_pim->get_bool("B3")) continue;
|
||||||
|
|
||||||
// Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti
|
// Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti
|
||||||
look_iva(*_pim_codiva);
|
look_iva(codiva);
|
||||||
const bool non_sogg = _iva->get("S1") == "NS";
|
const bool non_sogg = _iva->get("S1") == "NS";
|
||||||
|
|
||||||
if (!is_mens) // Trimestrali
|
if (!is_mens) // Trimestrali
|
||||||
@ -687,6 +700,15 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
|
|||||||
// vedi sopra...
|
// vedi sopra...
|
||||||
vtot += imp;
|
vtot += imp;
|
||||||
ivav += iva;
|
ivav += iva;
|
||||||
|
is_key = corr_ann.is_key(codiva);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
|
||||||
|
ca._totale += _pim->get_real("R3");
|
||||||
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
|
{
|
||||||
|
ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
|
||||||
|
corr_ann.add(codiva,ca);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -698,6 +720,14 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
|
|||||||
}
|
}
|
||||||
} // end of for
|
} // end of for
|
||||||
|
|
||||||
|
real impc,ivac; // Aggiunge lo scorporo dei corrispettivi alle vendite calcolate
|
||||||
|
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
||||||
|
{
|
||||||
|
lordo2netto(cc->_totale,impc,ivac,cc->_aliquota);
|
||||||
|
vtot += impc;
|
||||||
|
ivav += ivac;
|
||||||
|
}
|
||||||
|
|
||||||
// finalmente
|
// finalmente
|
||||||
alv = ivav/vtot; alv.round(4);
|
alv = ivav/vtot; alv.round(4);
|
||||||
ala = ivaa/atot; ala.round(4);
|
ala = ivaa/atot; ala.round(4);
|
||||||
|
@ -469,6 +469,11 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
_DescrItem* hea = new _DescrItem(PIM_HEAD);
|
_DescrItem* hea = new _DescrItem(PIM_HEAD);
|
||||||
hea->_f0 = skip_acq; // cosi' non compare nemmeno la colonnina! contento?
|
hea->_f0 = skip_acq; // cosi' non compare nemmeno la colonnina! contento?
|
||||||
_descr_arr.add(hea);
|
_descr_arr.add(hea);
|
||||||
|
// Assoc array per memorizzare i corrispettivi da scorporare. Tali corrispettivi verranno
|
||||||
|
// aggiunti alla fine del ciclo, scorrendo tutte le righe generate.
|
||||||
|
TAssoc_array corr_ann;
|
||||||
|
_CorrItem cx;
|
||||||
|
bool is_key;
|
||||||
|
|
||||||
while ((tmpatt = atts.get()) != NULL)
|
while ((tmpatt = atts.get()) != NULL)
|
||||||
{
|
{
|
||||||
@ -571,6 +576,15 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
else // vendita
|
else // vendita
|
||||||
{
|
{
|
||||||
|
is_key = corr_ann.is_key(codiva);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
|
||||||
|
ca._totale += _pim->get_real("R3");
|
||||||
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
|
{
|
||||||
|
ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
|
||||||
|
corr_ann.add(codiva,ca);
|
||||||
|
}
|
||||||
// vedi corrispettivi veri e falsi
|
// vedi corrispettivi veri e falsi
|
||||||
real cvi = _pim->get_real("R0"); // imp. totale
|
real cvi = _pim->get_real("R0"); // imp. totale
|
||||||
real cvv = _pim->get_real("R1"); // iva totale
|
real cvv = _pim->get_real("R1"); // iva totale
|
||||||
@ -653,6 +667,23 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
real impc,ivac; // Aggiunge lo scorporo dei corrispettivi
|
||||||
|
const int ditems = _descr_arr.items();
|
||||||
|
for (int i=0;i<ditems;i++) // scorre le righe memorizzate
|
||||||
|
{
|
||||||
|
_DescrItem& dd = (_DescrItem&) _descr_arr[i];
|
||||||
|
if (dd._flags != PIM_ROW) continue;
|
||||||
|
if (corr_ann.is_key(dd._s1)) // Se esiste il codice iva corrispondente sull'array corrispettivi
|
||||||
|
{
|
||||||
|
_CorrItem& cc = (_CorrItem &) corr_ann[dd._s1];
|
||||||
|
lordo2netto(cc._totale,impc,ivac,cc._aliquota);
|
||||||
|
dd._r2 += impc; // allora effettua lo scorporo e aggiorna i totali
|
||||||
|
dd._r3 += ivac;
|
||||||
|
t2 += impc;
|
||||||
|
t3 += ivac;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
look_plm(month,att);
|
look_plm(month,att);
|
||||||
real iva74t = _pom->get_real("R13");
|
real iva74t = _pom->get_real("R13");
|
||||||
if (iva74t.sign() > 0)
|
if (iva74t.sign() > 0)
|
||||||
@ -672,7 +703,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (art40.sign() > 0 || art40_iva.sign() > 0)
|
if (art40.sign() > 0 || art40_iva.sign() > 0)
|
||||||
{
|
{
|
||||||
_DescrItem* ads = new _DescrItem(PIM_ROW);
|
_DescrItem* ads = new _DescrItem(PIM_ROW);
|
||||||
ads->_s0 = ref;
|
ads->_s0 = ref;
|
||||||
ads->_s1 = "A13";
|
ads->_s1 = "A13";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user