Patch level : 12.0 1032
Files correlati : ve0.exe Commento : Modificato il metodo di ricerca dei riferimenti di bolla per le fatture delle lavanderie con i riferimenti in testa Interno Bisogna controllare i casi normali
This commit is contained in:
parent
245289fa14
commit
cce0c55a8c
@ -23,22 +23,6 @@
|
||||
bool set_connection(SSimple_query& s)
|
||||
{
|
||||
bool ok = true;
|
||||
#ifdef DBG
|
||||
TString ip = fp_settings().get_db_indirizzo();
|
||||
if (ip.upper() != "TESTCAMPO2012")
|
||||
{
|
||||
if (s.sq_connect("TESTCAMPO2012@campo_fp",
|
||||
"fp",
|
||||
"fp",
|
||||
TSDB_MSSQL) != NOERR)
|
||||
{
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
if (s.sq_connect(
|
||||
fp_settings().get_db_str_con(),
|
||||
fp_settings().get_db_user(),
|
||||
@ -48,9 +32,6 @@ bool set_connection(SSimple_query& s)
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
#ifdef DBG
|
||||
}
|
||||
#endif
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -1838,8 +1819,51 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
long riga = 1;
|
||||
bool f_buonocons = false;
|
||||
bool first_row = false;
|
||||
const bool riftesta = main_app().has_module(LVAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "lv", "RifTest");
|
||||
map<TString20, TDate> ancestors_s;
|
||||
TString riga_buoni_cons;
|
||||
TString temp;
|
||||
|
||||
if (riftesta)
|
||||
{
|
||||
TString rifs = doc.get(DOC_NOTE);
|
||||
|
||||
if (rifs.len() > 25 && rifs[25] == ' ')
|
||||
{
|
||||
temp = rifs;
|
||||
rifs = temp.left(25);
|
||||
temp.ltrim(26);
|
||||
rifs << temp;
|
||||
}
|
||||
rifs.trim();
|
||||
if (rifs == "0")
|
||||
rifs.cut(0);
|
||||
int pos = rifs.find(" - ");
|
||||
int len = rifs.len();
|
||||
|
||||
if (len > 0 && pos < 0)
|
||||
pos = len;
|
||||
|
||||
for(; pos >= 0;)
|
||||
{
|
||||
TToken_string rif(rifs.left(pos), ' ');
|
||||
|
||||
// <DatiDDT>
|
||||
reset(paf1600f);
|
||||
temp = rif.get();
|
||||
paf1600f.set("PF_NUMDDDT", temp);
|
||||
temp = rif.get();
|
||||
paf1600f.set("PF_DATADDT", temp);
|
||||
paf1600f.set("PF_GESTIONE", "D");
|
||||
ok &= insert(paf1600f);
|
||||
rifs.ltrim(pos + 3);
|
||||
pos = rifs.find(" - ");
|
||||
len = rifs.len();
|
||||
if (len > 0 && pos < 0)
|
||||
pos = len;
|
||||
// </DatiDDT>
|
||||
}
|
||||
}
|
||||
FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
|
||||
{
|
||||
// Controllo la riga
|
||||
@ -1879,65 +1903,68 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||
set_IVA(_codivadefault, paf1800f);
|
||||
}
|
||||
else if (rdoc->is_merce())
|
||||
{
|
||||
if (rdoc->get(RDOC_QTA).is_zero())
|
||||
{
|
||||
TString msg;
|
||||
msg.format("La riga merce %d ha quantità nulla", riga);
|
||||
log(1, msg);
|
||||
}
|
||||
set_qta_prezzo(paf1800f, rdoc);
|
||||
if(rdoc->iva().codice().empty())
|
||||
{
|
||||
set_IVA(_codivadefault, paf1800f);
|
||||
}
|
||||
else
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
/*
|
||||
const TDate data = doc.get(DOC_DATADOC);
|
||||
paf1800f.set("PI_DTINIZIOPER", data);
|
||||
paf1800f.set("PI_DTFINEPER", data);
|
||||
*/
|
||||
|
||||
/*
|
||||
* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
||||
*/
|
||||
TArray ancestors;
|
||||
find_ancestors(*rdoc, ancestors);
|
||||
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
|
||||
{
|
||||
_has_bolla |= true;
|
||||
const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
|
||||
ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie
|
||||
if (i == 1)
|
||||
{
|
||||
// <DatiDDT>
|
||||
reset(paf1600f);
|
||||
paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r));
|
||||
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
||||
paf1600f.set("PF_DATADDT", a._datadoc);
|
||||
paf1600f.set("PF_GESTIONE", "D");
|
||||
ok &= insert(paf1600f);
|
||||
// </DatiDDT>
|
||||
}
|
||||
else if (i == 3)
|
||||
{
|
||||
// <DatiOrdineAcquisto>
|
||||
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
||||
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
||||
paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r));
|
||||
paf1000f.set("P0_IDDOC", a._numdoc);
|
||||
paf1000f.set("P0_DATADOC", a._datadoc);
|
||||
paf1000f.set("P0_COMMESSACONV", com);
|
||||
paf1000f.set("P0_CODCUP", cup);
|
||||
paf1000f.set("P0_CODCIG", cig);
|
||||
paf1000f.set("P0_GESTIONE", "D");
|
||||
ok &= insert(paf1000f);
|
||||
// </DatiOrdineAcquisto>
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (rdoc->is_merce())
|
||||
{
|
||||
if (rdoc->get(RDOC_QTA).is_zero())
|
||||
{
|
||||
TString msg;
|
||||
msg.format("La riga merce %d ha quantità nulla", riga);
|
||||
log(1, msg);
|
||||
}
|
||||
set_qta_prezzo(paf1800f, rdoc);
|
||||
if (rdoc->iva().codice().empty())
|
||||
{
|
||||
set_IVA(_codivadefault, paf1800f);
|
||||
}
|
||||
else
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
/*
|
||||
const TDate data = doc.get(DOC_DATADOC);
|
||||
paf1800f.set("PI_DTINIZIOPER", data);
|
||||
paf1800f.set("PI_DTFINEPER", data);
|
||||
*/
|
||||
|
||||
/*
|
||||
* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
||||
*/
|
||||
if (!riftesta)
|
||||
{
|
||||
TArray ancestors;
|
||||
find_ancestors(*rdoc, ancestors);
|
||||
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
|
||||
{
|
||||
_has_bolla |= true;
|
||||
const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
|
||||
ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie
|
||||
if (i == 1)
|
||||
{
|
||||
// <DatiDDT>
|
||||
reset(paf1600f);
|
||||
paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r));
|
||||
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
||||
paf1600f.set("PF_DATADDT", a._datadoc);
|
||||
paf1600f.set("PF_GESTIONE", "D");
|
||||
ok &= insert(paf1600f);
|
||||
// </DatiDDT>
|
||||
}
|
||||
else if (i == 3)
|
||||
{
|
||||
// <DatiOrdineAcquisto>
|
||||
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
||||
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
||||
paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r));
|
||||
paf1000f.set("P0_IDDOC", a._numdoc);
|
||||
paf1000f.set("P0_DATADOC", a._datadoc);
|
||||
paf1000f.set("P0_COMMESSACONV", com);
|
||||
paf1000f.set("P0_CODCUP", cup);
|
||||
paf1000f.set("P0_CODCIG", cig);
|
||||
paf1000f.set("P0_GESTIONE", "D");
|
||||
ok &= insert(paf1000f);
|
||||
// </DatiOrdineAcquisto>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (rdoc->is_spese())
|
||||
{
|
||||
const TSpesa_prest& sp = rdoc->spesa();
|
||||
@ -2101,7 +2128,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
|
||||
/* Se ho una fattura che deriva dalla fatturazione differita delle lavanderie prendo
|
||||
* dalla relativa riga descrizione tutti i riferimenti alle bolle che mancano */
|
||||
if (f_buonocons)
|
||||
if (!riftesta && f_buonocons)
|
||||
{
|
||||
TString& memo = riga_buoni_cons;
|
||||
if (memo.full())
|
||||
|
Loading…
x
Reference in New Issue
Block a user