git-svn-id: svn://10.65.10.50/branches/R_10_00@23103 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6266252db8
commit
ca5bf94f18
@ -222,7 +222,7 @@ class TPaf_record : public TObject
|
||||
|
||||
protected:
|
||||
void copy(const TPaf_record& rec) { _table = rec._table; _key = rec._key; _fields = rec._fields; }
|
||||
const TString& var2str(const TVariant& var) const;
|
||||
const TString& var2str(const TString& fld, const TVariant& var) const;
|
||||
|
||||
public:
|
||||
void reset() { _fields.destroy(); }
|
||||
@ -325,14 +325,15 @@ const TVariant& TPaf_record::get(const char* fld) const
|
||||
return var ? *var : NULL_VARIANT;
|
||||
}
|
||||
|
||||
// Converte un varian in una stringa valida per SQLite
|
||||
const TString& TPaf_record::var2str(const TVariant& var) const
|
||||
// Converte un variant in una stringa valida per SQLite
|
||||
const TString& TPaf_record::var2str(const TString& fldname, const TVariant& var) const
|
||||
{
|
||||
const TFieldtypes vt = var.type();
|
||||
if (vt == _realfld)
|
||||
{
|
||||
const TCurrency v(var.as_real(), "", ZERO, fldname.find("PRZ")>0 || fldname.find("PREZZO")>0);
|
||||
TString& tmp = get_tmp_string();
|
||||
tmp << '\'' << var.as_real().string(0, 2) << '\'';
|
||||
tmp << '\'' << v.string() << '\''; tmp.replace(',','.');
|
||||
return tmp;
|
||||
}
|
||||
if (vt == _datefld)
|
||||
@ -376,7 +377,7 @@ bool TPaf_record::remove()
|
||||
{
|
||||
if (nkf++ > 0)
|
||||
query << " AND ";
|
||||
query << fld << '=' << var2str(var) ;
|
||||
query << fld << '=' << var2str(fld, var) ;
|
||||
}
|
||||
}
|
||||
CHECKS(nkf >= 2, "Can't remove partial key on table ", (const char*)_table);
|
||||
@ -403,7 +404,7 @@ bool TPaf_record::search()
|
||||
{
|
||||
const TVariant& var = get(fld);
|
||||
if (!var.is_null())
|
||||
query << fld << '=' << var2str(var) << " AND ";
|
||||
query << fld << '=' << var2str(fld, var) << " AND ";
|
||||
}
|
||||
query.rtrim(5);
|
||||
query << ';';
|
||||
@ -436,7 +437,7 @@ bool TPaf_record::insert()
|
||||
if (!var.is_null())
|
||||
{
|
||||
query << fld << ',';
|
||||
values << var2str(var) << ',';
|
||||
values << var2str(fld, var) << ',';
|
||||
}
|
||||
}
|
||||
query.rtrim(1); values.rtrim(1);
|
||||
@ -486,7 +487,7 @@ bool TPA_mask::is_fattura(const TRectype& doc) const
|
||||
return false;
|
||||
|
||||
const TCodice_numerazione& cn = cached_numerazione(doc.get(DOC_CODNUM));
|
||||
return !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa sda P.A.
|
||||
return cn.tipo() == 2 && !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa da P.A.
|
||||
}
|
||||
|
||||
|
||||
@ -1169,19 +1170,24 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf2000f.set("PJ_KEYBODYFATT", bfatt);
|
||||
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
||||
|
||||
long riga = 1;
|
||||
long riga = 0;
|
||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||
{
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", riga++);
|
||||
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())
|
||||
{
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
const real qta = rdoc->quantita();
|
||||
if (qta.is_zero())
|
||||
{
|
||||
TString msg; msg.format("La riga merce %d ha quantità nulla (campo %s)", riga, (const char*)rdoc->field_qta());
|
||||
log(1, msg);
|
||||
}
|
||||
if (qta >= ZERO)
|
||||
{
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
@ -1266,13 +1272,30 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
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);
|
||||
real qta = UNO;
|
||||
if (sp.is_tipo())
|
||||
{
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
qta = rdoc->quantita();
|
||||
if (qta.is_zero())
|
||||
{
|
||||
TString msg; msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, (const char*)rdoc->field_qta());
|
||||
log(1, msg);
|
||||
qta = UNO;
|
||||
}
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
}
|
||||
real prz = imp;
|
||||
if (qta != UNO)
|
||||
{
|
||||
prz = rdoc->prezzo(true, false);
|
||||
if (prz.is_zero() && !imp.is_zero())
|
||||
{
|
||||
const TPrice price(imp / qta);
|
||||
prz = price.get_value();
|
||||
}
|
||||
}
|
||||
paf1800f.set("PI_PREZZOUNIT", prz);
|
||||
paf1800f.set("PI_PRZTOTALE", imp);
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
|
Loading…
x
Reference in New Issue
Block a user