Aggiunto supporto per righe spese/prestazioni
git-svn-id: svn://10.65.10.50/branches/R_10_00@23102 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a04851fc0d
commit
6266252db8
@ -634,6 +634,7 @@ protected:
|
||||
|
||||
void log(int severity, const char* msg);
|
||||
bool show_log();
|
||||
void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
|
||||
|
||||
bool elabora(TDocumentoEsteso& doc);
|
||||
bool elabora(const TRectype& rec);
|
||||
@ -744,7 +745,7 @@ const char* TDoc2Paf::descrizione(const TRiga_documento& rdoc) const
|
||||
{
|
||||
TString tmp;
|
||||
tmp << rdoc.get(RDOC_DESCR) << rdoc.get(RDOC_DESCEST);
|
||||
tmp.replace('\n', ' '); tmp.strip_double_spaces();
|
||||
tmp.replace('\n', ' '); tmp.strip_double_spaces(); tmp.trim();
|
||||
TParagraph_string para(tmp, 100);
|
||||
return para.get(0);
|
||||
}
|
||||
@ -841,6 +842,22 @@ bool TDoc2Paf::show_log()
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TDoc2Paf::set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const
|
||||
{
|
||||
const TRectype& ai = cache().get("%IVA", rdoc.get(RDOC_CODIVA));
|
||||
const real aliquota = ai.get("R0");
|
||||
paf.set("PI_ALIQUOTAIVA", aliquota);
|
||||
if (aliquota.is_zero())
|
||||
{
|
||||
const TString& tipo = ai.get("S1");
|
||||
const char* natura = "N2"; // Non soggetto
|
||||
if (tipo == "NI") natura = "N3"; else // Non imponibile
|
||||
if (tipo == "ES") natura = "N4"; // Esente
|
||||
paf.set("PI_NATURA", natura);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
{
|
||||
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A.
|
||||
@ -1152,12 +1169,13 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf2000f.set("PJ_KEYBODYFATT", bfatt);
|
||||
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
||||
|
||||
long riga = 1;
|
||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||
{
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", (long)r);
|
||||
paf1800f.set("PI_NUMEROLINEA", riga++);
|
||||
paf1800f.set("PI_DESCRIZIONE", descrizione(*rdoc));
|
||||
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
||||
if (rdoc->is_merce())
|
||||
@ -1175,18 +1193,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf1800f.set("PI_PREZZOUNIT", -rdoc->prezzo(false, false));
|
||||
}
|
||||
paf1800f.set("PI_PRZTOTALE", rdoc->importo(false, false));
|
||||
|
||||
const TRectype& ai = cache().get("%IVA", rdoc->get(RDOC_CODIVA));
|
||||
const real aliquota = ai.get("R0");
|
||||
paf1800f.set("PI_ALIQUOTAIVA", aliquota);
|
||||
if (aliquota.is_zero())
|
||||
{
|
||||
const TString& tipo = ai.get("S1");
|
||||
const char* natura = "N2"; // Non soggetto
|
||||
if (tipo == "NI") natura = "N3"; else // Non imponibile
|
||||
if (tipo == "ES") natura = "N4"; // Esente
|
||||
paf1800f.set("PI_NATURA", natura);
|
||||
}
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
|
||||
/*
|
||||
const TDate data = doc.get(DOC_DATADOC);
|
||||
@ -1255,12 +1262,34 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf1000f.insert();
|
||||
}
|
||||
}
|
||||
} else
|
||||
if (rdoc->is_spese())
|
||||
{
|
||||
const TSpesa_prest& sp = rdoc->spesa();
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
real qta = rdoc->quantita();
|
||||
if (qta.is_zero() || sp.is_percentuale())
|
||||
qta = UNO;
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
const real imp = rdoc->importo(true, false);
|
||||
real prz = imp / qta; prz.round(2);
|
||||
paf1800f.set("PI_PREZZOUNIT", prz);
|
||||
paf1800f.set("PI_PRZTOTALE", imp);
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
} else
|
||||
if (rdoc->is_prestazione())
|
||||
{
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
real qta = rdoc->quantita(); if (qta.is_zero()) qta = UNO;
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", rdoc->prezzo(false, false));
|
||||
paf1800f.set("PI_PRZTOTALE", rdoc->importo(true, false));
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
}
|
||||
|
||||
paf1800f.set("PI_GESTIONE", "D");
|
||||
paf1800f.insert();
|
||||
}
|
||||
|
||||
|
||||
// </DatiBeniServizi>
|
||||
|
||||
// <DatiRiepilogo>
|
||||
|
Loading…
x
Reference in New Issue
Block a user