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);
|
void log(int severity, const char* msg);
|
||||||
bool show_log();
|
bool show_log();
|
||||||
|
void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
|
||||||
|
|
||||||
bool elabora(TDocumentoEsteso& doc);
|
bool elabora(TDocumentoEsteso& doc);
|
||||||
bool elabora(const TRectype& rec);
|
bool elabora(const TRectype& rec);
|
||||||
@ -744,7 +745,7 @@ const char* TDoc2Paf::descrizione(const TRiga_documento& rdoc) const
|
|||||||
{
|
{
|
||||||
TString tmp;
|
TString tmp;
|
||||||
tmp << rdoc.get(RDOC_DESCR) << rdoc.get(RDOC_DESCEST);
|
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);
|
TParagraph_string para(tmp, 100);
|
||||||
return para.get(0);
|
return para.get(0);
|
||||||
}
|
}
|
||||||
@ -841,6 +842,22 @@ bool TDoc2Paf::show_log()
|
|||||||
return ok;
|
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)
|
bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A.
|
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.set("PJ_KEYBODYFATT", bfatt);
|
||||||
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
||||||
|
|
||||||
|
long riga = 1;
|
||||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||||
{
|
{
|
||||||
paf1800f.reset();
|
paf1800f.reset();
|
||||||
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
||||||
paf1800f.set("PI_KEYBODYFATT", bfatt);
|
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_DESCRIZIONE", descrizione(*rdoc));
|
||||||
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
||||||
if (rdoc->is_merce())
|
if (rdoc->is_merce())
|
||||||
@ -1175,18 +1193,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_PREZZOUNIT", -rdoc->prezzo(false, false));
|
paf1800f.set("PI_PREZZOUNIT", -rdoc->prezzo(false, false));
|
||||||
}
|
}
|
||||||
paf1800f.set("PI_PRZTOTALE", rdoc->importo(false, false));
|
paf1800f.set("PI_PRZTOTALE", rdoc->importo(false, false));
|
||||||
|
set_IVA(*rdoc, paf1800f);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
const TDate data = doc.get(DOC_DATADOC);
|
const TDate data = doc.get(DOC_DATADOC);
|
||||||
@ -1255,12 +1262,34 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf1000f.insert();
|
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.set("PI_GESTIONE", "D");
|
||||||
paf1800f.insert();
|
paf1800f.insert();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// </DatiBeniServizi>
|
// </DatiBeniServizi>
|
||||||
|
|
||||||
// <DatiRiepilogo>
|
// <DatiRiepilogo>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user