Patch level : 12.0 656
Files correlati : fp Commento : - Aggiunta conversione qualsiasi valuta -> Euro - Aggiunto controllo alle righe che vado a scrivere, ogni tanto finivano delle righe non volute - Tolto importo in testata - Camiata lettura importi dettaglio iva
This commit is contained in:
parent
fdd0dd4fc9
commit
00048f0239
@ -835,6 +835,22 @@ bool TDoc_fp::add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& TDoc_fp::converti_prezzo(const real& prezzo) const
|
||||||
|
{
|
||||||
|
TString& ret = get_tmp_string();
|
||||||
|
ret.cut(0);
|
||||||
|
|
||||||
|
if (_is_valuta_estera)
|
||||||
|
{
|
||||||
|
TCurrency ret(prezzo);
|
||||||
|
ret.change_to_euro_val();
|
||||||
|
return ret.string(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ret << prezzo;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
// Azzero
|
// Azzero
|
||||||
@ -859,11 +875,12 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
TString8 coddest;
|
TString8 coddest;
|
||||||
TString pec;
|
TString pec;
|
||||||
const bool is_pa = doc.clifor().get_int("ALLEG") == 7;
|
|
||||||
#ifndef DBG
|
#ifndef DBG
|
||||||
|
const bool is_pa = doc.clifor().get_int("ALLEG") == 7;
|
||||||
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
|
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
|
const bool is_pa = true;
|
||||||
coddest = "WSUHKZ";
|
coddest = "WSUHKZ";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -876,6 +893,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
const char* const paese = "IT";
|
const char* const paese = "IT";
|
||||||
TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
|
TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
|
||||||
|
|
||||||
|
_is_valuta_estera = !is_euro_value(doc.valuta());
|
||||||
|
|
||||||
// <DatiTrassmissione>
|
// <DatiTrassmissione>
|
||||||
TPaf_record paf0100f("PAF0100F");
|
TPaf_record paf0100f("PAF0100F");
|
||||||
paf0100f.set("P1_KEYHEADERFATT", _hfatt);
|
paf0100f.set("P1_KEYHEADERFATT", _hfatt);
|
||||||
@ -1032,7 +1051,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf0700f.set("P7_KEYBODYFATT", _bfatt);
|
paf0700f.set("P7_KEYBODYFATT", _bfatt);
|
||||||
remove(paf0700f);
|
remove(paf0700f);
|
||||||
paf0700f.set("P7_TIPODOC", tipo_doc_sdi(doc));
|
paf0700f.set("P7_TIPODOC", tipo_doc_sdi(doc));
|
||||||
paf0700f.set("P7_DIVISA", "EUR"); // Aggiungere codice ISO 4217 a tabella divise (%VAL)
|
paf0700f.set("P7_DIVISA", doc.valuta());
|
||||||
paf0700f.set("P7_DATA", doc.data());
|
paf0700f.set("P7_DATA", doc.data());
|
||||||
|
|
||||||
const TCodice_numerazione& codnum = doc.codice_numerazione();
|
const TCodice_numerazione& codnum = doc.codice_numerazione();
|
||||||
@ -1042,7 +1061,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf0700f.set("P7_GESTIONE", "D");
|
paf0700f.set("P7_GESTIONE", "D");
|
||||||
|
|
||||||
// <DatiBollo>
|
// <DatiBollo>
|
||||||
paf0700f.set("P7_IMPORTOBOLLO", doc.get("BOLLI"));
|
paf0700f.set("P7_IMPORTOBOLLO", converti_prezzo(doc.get_real("BOLLI")));
|
||||||
// </DatiBollo>
|
// </DatiBollo>
|
||||||
|
|
||||||
// <DatiCassaPrevidenziale>
|
// <DatiCassaPrevidenziale>
|
||||||
@ -1090,7 +1109,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf2700f.set("PQ_KEYHEADERFATT", _hfatt);
|
paf2700f.set("PQ_KEYHEADERFATT", _hfatt);
|
||||||
paf2700f.set("PQ_KEYBODYFATT", _bfatt);
|
paf2700f.set("PQ_KEYBODYFATT", _bfatt);
|
||||||
remove(paf2700f);
|
remove(paf2700f);
|
||||||
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
|
||||||
|
// Disabilitata la scrittura del totale del documento, questo causa problemi se è presente uno sconto in testata e l'addebito del bollo.
|
||||||
|
// Campo calcola prima il totale, poi lo sconta e ci applica il bollo mentre lo SDI sconta a bollo già applicato.
|
||||||
|
// paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
||||||
|
|
||||||
const TRectype& cont_conv_off = cco(doc);
|
const TRectype& cont_conv_off = cco(doc);
|
||||||
TString causale = cont_conv_off.get("S1");
|
TString causale = cont_conv_off.get("S1");
|
||||||
@ -1281,11 +1303,6 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||||
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
|
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
|
||||||
|
|
||||||
// Nel dubbio preparo la riga di descrizione
|
|
||||||
paf1800f.set("PI_QUANTITA", UNO);
|
|
||||||
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
|
||||||
paf1800f.set("PI_PRZTOTALE", ZERO);
|
|
||||||
|
|
||||||
// <CodiceArticolo>
|
// <CodiceArticolo>
|
||||||
long riga_art = 0;
|
long riga_art = 0;
|
||||||
TArticolo& art = rdoc->articolo();
|
TArticolo& art = rdoc->articolo();
|
||||||
@ -1306,165 +1323,175 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
// </CodiceArticolo>
|
// </CodiceArticolo>
|
||||||
|
|
||||||
|
if(rdoc->is_descrizione())
|
||||||
|
{
|
||||||
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
|
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
||||||
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
set_IVA(codivadefault, paf1800f);
|
set_IVA(codivadefault, paf1800f);
|
||||||
|
}
|
||||||
|
else if (rdoc->is_merce())
|
||||||
|
{
|
||||||
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
|
const real qta = rdoc->get(RDOC_QTA);
|
||||||
|
if (qta.is_zero())
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg.format("La riga merce %d ha quantità nulla", riga);
|
||||||
|
log(1, msg);
|
||||||
|
}
|
||||||
|
if (qta >= ZERO)
|
||||||
|
{
|
||||||
|
paf1800f.set("PI_QUANTITA", qta);
|
||||||
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paf1800f.set("PI_QUANTITA", -qta);
|
||||||
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(-rdoc->prezzo(true, false)));
|
||||||
|
}
|
||||||
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->importo(true, false)));
|
||||||
|
set_IVA(*rdoc, paf1800f);
|
||||||
|
|
||||||
if (rdoc->is_merce())
|
/*
|
||||||
{
|
const TDate data = doc.get(DOC_DATADOC);
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_DTINIZIOPER", data);
|
||||||
const real qta = rdoc->get(RDOC_QTA);
|
paf1800f.set("PI_DTFINEPER", data);
|
||||||
if (qta.is_zero())
|
*/
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
msg.format("La riga merce %d ha quantità nulla", riga);
|
|
||||||
log(1, msg);
|
|
||||||
}
|
|
||||||
if (qta >= ZERO)
|
|
||||||
{
|
|
||||||
paf1800f.set("PI_QUANTITA", qta);
|
|
||||||
paf1800f.set("PI_PREZZOUNIT", rdoc->prezzo(false, false));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
paf1800f.set("PI_QUANTITA", -qta);
|
|
||||||
paf1800f.set("PI_PREZZOUNIT", -rdoc->prezzo(true, false));
|
|
||||||
}
|
|
||||||
paf1800f.set("PI_PRZTOTALE", rdoc->importo(true, false));
|
|
||||||
set_IVA(*rdoc, paf1800f);
|
|
||||||
|
|
||||||
/*
|
// <ScontoMaggiorazione>
|
||||||
const TDate data = doc.get(DOC_DATADOC);
|
|
||||||
paf1800f.set("PI_DTINIZIOPER", data);
|
|
||||||
paf1800f.set("PI_DTFINEPER", data);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// <ScontoMaggiorazione>
|
sconto_expr = rdoc->get(RDOC_SCONTO);
|
||||||
|
if (parse_sconto(sconto_expr, sconti))
|
||||||
sconto_expr = rdoc->get(RDOC_SCONTO);
|
{
|
||||||
if (parse_sconto(sconto_expr, sconti))
|
long nlin_sconto = 0;
|
||||||
{
|
FOR_EACH_TOKEN(sconti, str)
|
||||||
long nlin_sconto = 0;
|
{
|
||||||
FOR_EACH_TOKEN(sconti, str)
|
const real perc = str;
|
||||||
{
|
if (!perc.is_zero())
|
||||||
const real perc = str;
|
{
|
||||||
if (!perc.is_zero())
|
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
||||||
{
|
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
||||||
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
if (perc > ZERO)
|
||||||
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
{
|
||||||
if (perc > ZERO)
|
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
||||||
{
|
paf2000f.set("PJ_PERCSCONTO", perc);
|
||||||
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
}
|
||||||
paf2000f.set("PJ_PERCSCONTO", perc);
|
else
|
||||||
}
|
{
|
||||||
else
|
paf2000f.set("PJ_TIPOSCONTO", "MG");
|
||||||
{
|
paf2000f.set("PJ_PERCSCONTO", -perc);
|
||||||
paf2000f.set("PJ_TIPOSCONTO", "MG");
|
}
|
||||||
paf2000f.set("PJ_PERCSCONTO", -perc);
|
paf2000f.set("PJ_GESTIONE", "D");
|
||||||
}
|
ok &= insert(paf2000f);
|
||||||
paf2000f.set("PJ_GESTIONE", "D");
|
}
|
||||||
ok &= insert(paf2000f);
|
}
|
||||||
}
|
}
|
||||||
}
|
// </ScontoMaggiorazione>
|
||||||
}
|
|
||||||
// </ScontoMaggiorazione>
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
||||||
*/
|
*/
|
||||||
TArray ancestors;
|
TArray ancestors;
|
||||||
find_ancestors(*rdoc, ancestors);
|
find_ancestors(*rdoc, ancestors);
|
||||||
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
|
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
|
||||||
{
|
{
|
||||||
const TAncestor& a = (const TAncestor&)ancestors[i];
|
const TAncestor& a = (const TAncestor&)ancestors[i];
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
{
|
{
|
||||||
// <DatiDDT>
|
// <DatiDDT>
|
||||||
TPaf_record paf1600f("PAF1600F");
|
TPaf_record paf1600f("PAF1600F");
|
||||||
paf1600f.reset();
|
paf1600f.reset();
|
||||||
paf1600f.set("PF_KEYHEADERFATT", _hfatt);
|
paf1600f.set("PF_KEYHEADERFATT", _hfatt);
|
||||||
paf1600f.set("PF_KEYBODYFATT", _bfatt);
|
paf1600f.set("PF_KEYBODYFATT", _bfatt);
|
||||||
paf1600f.set("PF_RIFNUMLINEA", (long)r);
|
paf1600f.set("PF_RIFNUMLINEA", (long)r);
|
||||||
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
||||||
paf1600f.set("PF_DATADDT", a._datadoc);
|
paf1600f.set("PF_DATADDT", a._datadoc);
|
||||||
paf1600f.set("PF_GESTIONE", "D");
|
paf1600f.set("PF_GESTIONE", "D");
|
||||||
ok &= insert(paf1600f);
|
ok &= insert(paf1600f);
|
||||||
// </DatiDDT>
|
// </DatiDDT>
|
||||||
}
|
}
|
||||||
else if (i == 3)
|
else if (i == 3)
|
||||||
{
|
{
|
||||||
// <DatiOrdineAcquisto>
|
// <DatiOrdineAcquisto>
|
||||||
TPaf_record paf1000f("PAF1000F");
|
TPaf_record paf1000f("PAF1000F");
|
||||||
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
||||||
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
||||||
paf1000f.set("P0_RIFNUMLINEA", (long)r);
|
paf1000f.set("P0_RIFNUMLINEA", (long)r);
|
||||||
paf1000f.set("P0_IDDOC", a._numdoc);
|
paf1000f.set("P0_IDDOC", a._numdoc);
|
||||||
paf1000f.set("P0_DATADOC", a._datadoc);
|
paf1000f.set("P0_DATADOC", a._datadoc);
|
||||||
paf1000f.set("P0_COMMCONVENZ", com);
|
paf1000f.set("P0_COMMCONVENZ", com);
|
||||||
paf1000f.set("P0_CODCUP", cup);
|
paf1000f.set("P0_CODCUP", cup);
|
||||||
paf1000f.set("P0_CODCIG", cig);
|
paf1000f.set("P0_CODCIG", cig);
|
||||||
paf1000f.set("P0_GESTIONE", "D");
|
paf1000f.set("P0_GESTIONE", "D");
|
||||||
ok &= insert(paf1000f);
|
ok &= insert(paf1000f);
|
||||||
// </DatiOrdineAcquisto>
|
// </DatiOrdineAcquisto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (rdoc->is_spese())
|
else if (rdoc->is_spese())
|
||||||
{
|
{
|
||||||
const TSpesa_prest& sp = rdoc->spesa();
|
const TSpesa_prest& sp = rdoc->spesa();
|
||||||
const real imp = rdoc->importo(true, false);
|
const real imp = rdoc->importo(true, false);
|
||||||
real qta = UNO;
|
real qta = UNO;
|
||||||
if (sp.is_tipo())
|
if (sp.is_tipo())
|
||||||
{
|
{
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
qta = rdoc->get_real(RDOC_QTA);
|
qta = rdoc->get_real(RDOC_QTA);
|
||||||
if (qta.is_zero())
|
if (qta.is_zero())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, static_cast<const char*>(rdoc->field_qta()));
|
msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, static_cast<const char*>(rdoc->field_qta()));
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
qta = UNO;
|
qta = UNO;
|
||||||
}
|
}
|
||||||
paf1800f.set("PI_QUANTITA", qta);
|
paf1800f.set("PI_QUANTITA", qta);
|
||||||
}
|
}
|
||||||
real prz = imp;
|
real prz = imp;
|
||||||
if (qta != UNO)
|
if (qta != UNO)
|
||||||
{
|
{
|
||||||
prz = rdoc->prezzo(true, false);
|
prz = rdoc->prezzo(true, false);
|
||||||
if (prz.is_zero() && !imp.is_zero())
|
if (prz.is_zero() && !imp.is_zero())
|
||||||
{
|
{
|
||||||
const TPrice price(imp / qta);
|
const TPrice price(imp / qta);
|
||||||
prz = price.get_value();
|
prz = price.get_value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
paf1800f.set("PI_PREZZOUNIT", prz);
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(prz));
|
||||||
paf1800f.set("PI_PRZTOTALE", imp);
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(imp));
|
||||||
set_IVA(*rdoc, paf1800f);
|
set_IVA(*rdoc, paf1800f);
|
||||||
|
|
||||||
// Controllo se è una ritenuta fiscale
|
// Controllo se è una ritenuta fiscale
|
||||||
// <DatiRitenuta>
|
// <DatiRitenuta>
|
||||||
if (sp.tipo_ritenuta() == 'F')
|
if (sp.tipo_ritenuta() == 'F')
|
||||||
{
|
{
|
||||||
paf0700f.set("P7_TIPORITENUTA", cliente.fisica() ? "RT01" : "RT02");
|
paf0700f.set("P7_TIPORITENUTA", cliente.fisica() ? "RT01" : "RT02");
|
||||||
paf0700f.set("P7_IMPORTORIT", doc.imponibile() * sp.perc() / CENTO);
|
paf0700f.set("P7_IMPORTORIT", converti_prezzo(doc.imponibile() * sp.perc() / CENTO));
|
||||||
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
||||||
paf0700f.set("P7_CAUSPAGAM", cache().get("CA7", to_tstring(sp.caus_770()), "S2"));
|
paf0700f.set("P7_CAUSPAGAM", cache().get("CA7", to_tstring(sp.caus_770()), "S2"));
|
||||||
}
|
}
|
||||||
// </DatiRitenuta>
|
// </DatiRitenuta>
|
||||||
}
|
}
|
||||||
else if (rdoc->is_prestazione())
|
else if (rdoc->is_prestazione())
|
||||||
{
|
{
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
real qta = rdoc->get(RDOC_QTA);
|
real qta = rdoc->get(RDOC_QTA);
|
||||||
if (qta.is_zero()) qta = UNO;
|
if (qta.is_zero()) qta = UNO;
|
||||||
paf1800f.set("PI_QUANTITA", qta);
|
paf1800f.set("PI_QUANTITA", qta);
|
||||||
paf1800f.set("PI_PREZZOUNIT", rdoc->prezzo(false, false));
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||||
paf1800f.set("PI_PRZTOTALE", rdoc->importo(true, false));
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->importo(true, false)));
|
||||||
set_IVA(*rdoc, paf1800f);
|
set_IVA(*rdoc, paf1800f);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Salto tutte le altre righe
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
paf1800f.set("PI_GESTIONE", "D");
|
paf1800f.set("PI_GESTIONE", "D");
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controllo plafond
|
// Controllo plafond
|
||||||
@ -1510,8 +1537,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf3000f.set("PT_COMMENTO", "Imposta bollo assolta in modo virtuale");
|
paf3000f.set("PT_COMMENTO", "Imposta bollo assolta in modo virtuale");
|
||||||
|
|
||||||
paf1800f.set("PI_QUANTITA", UNO);
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
paf1800f.set("PI_PREZZOUNIT", doc.get_real("BOLLI"));
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(doc.get_real("BOLLI")));
|
||||||
paf1800f.set("PI_PRZTOTALE", doc.get_real("BOLLI"));
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(doc.get_real("BOLLI")));
|
||||||
set_IVA(doc.codiva_bolli(), paf1800f);
|
set_IVA(doc.codiva_bolli(), paf1800f);
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
@ -1534,8 +1561,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
paf1800f.set("PI_QUANTITA", UNO);
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
real imponibile = doc.imponibile();
|
real imponibile = doc.imponibile();
|
||||||
paf1800f.set("PI_PREZZOUNIT", doc.spese_incasso(imponibile, 6, _netto));
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(doc.spese_incasso(imponibile, 6, _netto)));
|
||||||
paf1800f.set("PI_PRZTOTALE", doc.spese_incasso(imponibile, 6, _netto));
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(doc.spese_incasso(imponibile, 6, _netto)));
|
||||||
|
|
||||||
set_IVA(doc.codiva_spese(), paf1800f);
|
set_IVA(doc.codiva_spese(), paf1800f);
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
@ -1583,21 +1610,25 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
TAssoc_array& tiva = doc.tabella_iva(false);
|
TAssoc_array& tiva = doc.tabella_iva(false);
|
||||||
FOR_EACH_ASSOC_OBJECT(tiva, obj, key, itm)
|
FOR_EACH_ASSOC_OBJECT(tiva, obj, key, itm)
|
||||||
{
|
{
|
||||||
const TRiepilogo_iva& riva = *(const TRiepilogo_iva*)itm;
|
const TRiepilogo_iva& riva = *(const TRiepilogo_iva*)itm;
|
||||||
const real aliquota = riva.cod_iva().percentuale();
|
const real aliquota = riva.cod_iva().percentuale();
|
||||||
paf2200f.set("PL_ALIQUOTAIVA", aliquota);
|
paf2200f.set("PL_ALIQUOTAIVA", aliquota);
|
||||||
if (aliquota.is_zero())
|
if (aliquota.is_zero())
|
||||||
paf2200f.set("PL_NATURA", natura(riva.cod_iva().codice()));
|
paf2200f.set("PL_NATURA", natura(riva.cod_iva().codice()));
|
||||||
|
|
||||||
paf2200f.set("PL_IMPONIBILE", riva.imponibile());
|
real imponibile = riva.imp_orig();
|
||||||
paf2200f.set("PL_IMPOSTA", riva.imposta());
|
if (imponibile <= ZERO)
|
||||||
paf2200f.set("PL_ESIGIVA", eiva);
|
imponibile = riva.imponibile();
|
||||||
if (*eiva == 'S')
|
|
||||||
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
paf2200f.set("PL_IMPONIBILE", converti_prezzo(imponibile));
|
||||||
else
|
paf2200f.set("PL_IMPOSTA", converti_prezzo(riva.imposta()));
|
||||||
paf2200f.set("PL_RIFNORMATIVO", riva.cod_iva().descrizione());
|
paf2200f.set("PL_ESIGIVA", eiva);
|
||||||
paf2200f.set("PL_GESTIONE", "D");
|
if (*eiva == 'S')
|
||||||
ok &= insert(paf2200f);
|
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
||||||
|
else
|
||||||
|
paf2200f.set("PL_RIFNORMATIVO", riva.cod_iva().descrizione());
|
||||||
|
paf2200f.set("PL_GESTIONE", "D");
|
||||||
|
ok &= insert(paf2200f);
|
||||||
}
|
}
|
||||||
// </DatiRiepilogo>
|
// </DatiRiepilogo>
|
||||||
|
|
||||||
@ -1658,7 +1689,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
TToken_string& riga = scad.row(nr); // Data|Importo
|
TToken_string& riga = scad.row(nr); // Data|Importo
|
||||||
paf2500f.set("PO_DATASCADENZA", TDate(riga.get(0))); // Data scadenza
|
paf2500f.set("PO_DATASCADENZA", TDate(riga.get(0))); // Data scadenza
|
||||||
paf2500f.set("PO_IMPORTO", real(riga.get())); // Importo rata
|
paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga.get()))); // Importo rata
|
||||||
|
|
||||||
paf2500f.set("PO_GESTIONE", "D");
|
paf2500f.set("PO_GESTIONE", "D");
|
||||||
ok &= insert(paf2500f);
|
ok &= insert(paf2500f);
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
class TDoc_fp
|
class TDoc_fp
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TRectype *_doc_rec;
|
TRectype* _doc_rec;
|
||||||
TAnagrafica _ditta;
|
TAnagrafica _ditta;
|
||||||
TString16 _cofi;
|
TString16 _cofi;
|
||||||
TFilename _dbname;
|
TFilename _dbname;
|
||||||
@ -92,6 +92,7 @@ private:
|
|||||||
vector<TString> _query;
|
vector<TString> _query;
|
||||||
TString8 _hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A. o di 7 caratteri per un privato
|
TString8 _hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A. o di 7 caratteri per un privato
|
||||||
TString20 _bfatt; // Codice univoco di 20 caratteri del documento
|
TString20 _bfatt; // Codice univoco di 20 caratteri del documento
|
||||||
|
bool _is_valuta_estera; // Se il documento è in valuta estera
|
||||||
|
|
||||||
int parse_line(const TString& line, TString& var, TString& val) const;
|
int parse_line(const TString& line, TString& var, TString& val) const;
|
||||||
bool create_table(TScanner& paf, const TString& table);
|
bool create_table(TScanner& paf, const TString& table);
|
||||||
@ -116,7 +117,7 @@ protected:
|
|||||||
static void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf);
|
static void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf);
|
||||||
bool add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
bool add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||||
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
||||||
void set_descrizione(const TRiga_documento* doc);
|
const TString& converti_prezzo(const real& prezzo) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool doc_to_paf(TDocumentoEsteso& doc);
|
bool doc_to_paf(TDocumentoEsteso& doc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user