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:
Alessandro Bonazzi 2021-02-18 00:24:17 +01:00
parent 245289fa14
commit cce0c55a8c

View File

@ -23,22 +23,6 @@
bool set_connection(SSimple_query& s) bool set_connection(SSimple_query& s)
{ {
bool ok = true; 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( if (s.sq_connect(
fp_settings().get_db_str_con(), fp_settings().get_db_str_con(),
fp_settings().get_db_user(), fp_settings().get_db_user(),
@ -48,9 +32,6 @@ bool set_connection(SSimple_query& s)
warning_box("Impossibile connettersi al DB esterno"); warning_box("Impossibile connettersi al DB esterno");
ok = false; ok = false;
} }
#ifdef DBG
}
#endif
return ok; return ok;
} }
@ -1838,8 +1819,51 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
long riga = 1; long riga = 1;
bool f_buonocons = false; bool f_buonocons = false;
bool first_row = 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; map<TString20, TDate> ancestors_s;
TString riga_buoni_cons; 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) FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
{ {
// Controllo la riga // Controllo la riga
@ -1879,65 +1903,68 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf1800f.set("PI_PRZTOTALE", ZERO); paf1800f.set("PI_PRZTOTALE", ZERO);
set_IVA(_codivadefault, paf1800f); set_IVA(_codivadefault, paf1800f);
} }
else if (rdoc->is_merce()) else if (rdoc->is_merce())
{ {
if (rdoc->get(RDOC_QTA).is_zero()) if (rdoc->get(RDOC_QTA).is_zero())
{ {
TString msg; TString msg;
msg.format("La riga merce %d ha quantità nulla", riga); msg.format("La riga merce %d ha quantità nulla", riga);
log(1, msg); log(1, msg);
} }
set_qta_prezzo(paf1800f, rdoc); set_qta_prezzo(paf1800f, rdoc);
if(rdoc->iva().codice().empty()) if (rdoc->iva().codice().empty())
{ {
set_IVA(_codivadefault, paf1800f); set_IVA(_codivadefault, paf1800f);
} }
else else
set_IVA(*rdoc, paf1800f); set_IVA(*rdoc, paf1800f);
/* /*
const TDate data = doc.get(DOC_DATADOC); const TDate data = doc.get(DOC_DATADOC);
paf1800f.set("PI_DTINIZIOPER", data); paf1800f.set("PI_DTINIZIOPER", data);
paf1800f.set("PI_DTFINEPER", 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 * Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
*/ */
TArray ancestors; if (!riftesta)
find_ancestors(*rdoc, ancestors); {
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i)) TArray ancestors;
{ find_ancestors(*rdoc, ancestors);
_has_bolla |= true; for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]); {
ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie _has_bolla |= true;
if (i == 1) const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
{ ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie
// <DatiDDT> if (i == 1)
reset(paf1600f); {
paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r)); // <DatiDDT>
paf1600f.set("PF_NUMDDDT", a._numdoc); reset(paf1600f);
paf1600f.set("PF_DATADDT", a._datadoc); paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r));
paf1600f.set("PF_GESTIONE", "D"); paf1600f.set("PF_NUMDDDT", a._numdoc);
ok &= insert(paf1600f); paf1600f.set("PF_DATADDT", a._datadoc);
// </DatiDDT> paf1600f.set("PF_GESTIONE", "D");
} ok &= insert(paf1600f);
else if (i == 3) // </DatiDDT>
{ }
// <DatiOrdineAcquisto> else if (i == 3)
paf1000f.set("P0_KEYHEADERFATT", _hfatt); {
paf1000f.set("P0_KEYBODYFATT", _bfatt); // <DatiOrdineAcquisto>
paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r)); paf1000f.set("P0_KEYHEADERFATT", _hfatt);
paf1000f.set("P0_IDDOC", a._numdoc); paf1000f.set("P0_KEYBODYFATT", _bfatt);
paf1000f.set("P0_DATADOC", a._datadoc); paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r));
paf1000f.set("P0_COMMESSACONV", com); paf1000f.set("P0_IDDOC", a._numdoc);
paf1000f.set("P0_CODCUP", cup); paf1000f.set("P0_DATADOC", a._datadoc);
paf1000f.set("P0_CODCIG", cig); paf1000f.set("P0_COMMESSACONV", com);
paf1000f.set("P0_GESTIONE", "D"); paf1000f.set("P0_CODCUP", cup);
ok &= insert(paf1000f); paf1000f.set("P0_CODCIG", cig);
// </DatiOrdineAcquisto> paf1000f.set("P0_GESTIONE", "D");
} ok &= insert(paf1000f);
} // </DatiOrdineAcquisto>
} }
}
}
}
else if (rdoc->is_spese()) else if (rdoc->is_spese())
{ {
const TSpesa_prest& sp = rdoc->spesa(); 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 /* Se ho una fattura che deriva dalla fatturazione differita delle lavanderie prendo
* dalla relativa riga descrizione tutti i riferimenti alle bolle che mancano */ * dalla relativa riga descrizione tutti i riferimenti alle bolle che mancano */
if (f_buonocons) if (!riftesta && f_buonocons)
{ {
TString& memo = riga_buoni_cons; TString& memo = riga_buoni_cons;
if (memo.full()) if (memo.full())