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:
|
protected:
|
||||||
void copy(const TPaf_record& rec) { _table = rec._table; _key = rec._key; _fields = rec._fields; }
|
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:
|
public:
|
||||||
void reset() { _fields.destroy(); }
|
void reset() { _fields.destroy(); }
|
||||||
@ -325,14 +325,15 @@ const TVariant& TPaf_record::get(const char* fld) const
|
|||||||
return var ? *var : NULL_VARIANT;
|
return var ? *var : NULL_VARIANT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Converte un varian in una stringa valida per SQLite
|
// Converte un variant in una stringa valida per SQLite
|
||||||
const TString& TPaf_record::var2str(const TVariant& var) const
|
const TString& TPaf_record::var2str(const TString& fldname, const TVariant& var) const
|
||||||
{
|
{
|
||||||
const TFieldtypes vt = var.type();
|
const TFieldtypes vt = var.type();
|
||||||
if (vt == _realfld)
|
if (vt == _realfld)
|
||||||
{
|
{
|
||||||
|
const TCurrency v(var.as_real(), "", ZERO, fldname.find("PRZ")>0 || fldname.find("PREZZO")>0);
|
||||||
TString& tmp = get_tmp_string();
|
TString& tmp = get_tmp_string();
|
||||||
tmp << '\'' << var.as_real().string(0, 2) << '\'';
|
tmp << '\'' << v.string() << '\''; tmp.replace(',','.');
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
if (vt == _datefld)
|
if (vt == _datefld)
|
||||||
@ -376,7 +377,7 @@ bool TPaf_record::remove()
|
|||||||
{
|
{
|
||||||
if (nkf++ > 0)
|
if (nkf++ > 0)
|
||||||
query << " AND ";
|
query << " AND ";
|
||||||
query << fld << '=' << var2str(var) ;
|
query << fld << '=' << var2str(fld, var) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CHECKS(nkf >= 2, "Can't remove partial key on table ", (const char*)_table);
|
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);
|
const TVariant& var = get(fld);
|
||||||
if (!var.is_null())
|
if (!var.is_null())
|
||||||
query << fld << '=' << var2str(var) << " AND ";
|
query << fld << '=' << var2str(fld, var) << " AND ";
|
||||||
}
|
}
|
||||||
query.rtrim(5);
|
query.rtrim(5);
|
||||||
query << ';';
|
query << ';';
|
||||||
@ -436,7 +437,7 @@ bool TPaf_record::insert()
|
|||||||
if (!var.is_null())
|
if (!var.is_null())
|
||||||
{
|
{
|
||||||
query << fld << ',';
|
query << fld << ',';
|
||||||
values << var2str(var) << ',';
|
values << var2str(fld, var) << ',';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
query.rtrim(1); values.rtrim(1);
|
query.rtrim(1); values.rtrim(1);
|
||||||
@ -486,7 +487,7 @@ bool TPA_mask::is_fattura(const TRectype& doc) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
const TCodice_numerazione& cn = cached_numerazione(doc.get(DOC_CODNUM));
|
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.set("PJ_KEYBODYFATT", bfatt);
|
||||||
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
paf2000f.remove(); // Cancella tutti gli sconti di riga
|
||||||
|
|
||||||
long riga = 1;
|
long riga = 0;
|
||||||
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", riga++);
|
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())
|
||||||
{
|
{
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
const real qta = rdoc->quantita();
|
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)
|
if (qta >= ZERO)
|
||||||
{
|
{
|
||||||
paf1800f.set("PI_QUANTITA", qta);
|
paf1800f.set("PI_QUANTITA", qta);
|
||||||
@ -1266,13 +1272,30 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
if (rdoc->is_spese())
|
if (rdoc->is_spese())
|
||||||
{
|
{
|
||||||
const TSpesa_prest& sp = rdoc->spesa();
|
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);
|
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_PREZZOUNIT", prz);
|
||||||
paf1800f.set("PI_PRZTOTALE", imp);
|
paf1800f.set("PI_PRZTOTALE", imp);
|
||||||
set_IVA(*rdoc, paf1800f);
|
set_IVA(*rdoc, paf1800f);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user