Patch level : 12.0 692

Files correlati     : fp
Commento            :
- Sistemato errore che lanciava fetch dopo un insert nel caso di valori con dentro scritta "SELECT"
- Disabilitata scrittura sconto di testata in XML in quanto su Campo influenza solo le righe merci
- Aggiunto totale fattura nell'XML
- Tolta dicitura plafond per note credito
- Aggiunte righe di sconto in testata per ogni aliquota nell'XML per far quadrare i totali
-
This commit is contained in:
Mattia Tollari 2019-02-04 10:45:27 +01:00
parent 2a6a8654c9
commit f66f7cc44c

View File

@ -424,7 +424,7 @@ TString & TPaf_record::insert_string()
// Aggiunge un record al db
bool TPaf_record::insert()
{
return fp_db().sq_set_exec(insert_string());
return fp_db().sq_set_exec(insert_string(), false);
}
// Crea un record della tabella data ed imposta i nomi dei campi chiave
TPaf_record::TPaf_record(const char* table) : _table(table), _key(15, ',')
@ -724,6 +724,7 @@ bool TDoc_fp::show_log()
}
return true;
}
const int TDoc_fp::commit()
{
int r = 0;
@ -743,21 +744,25 @@ const int TDoc_fp::commit()
_to_commit = false;
return r;
}
const int TDoc_fp::force_commit()
{
_to_commit = true;
return commit();
}
const char* TDoc_fp::natura(const TString& codiva) const
{
return cache().get("%IVA", codiva, "S12");
}
void TDoc_fp::set_IVA(const TString& codiva, TPaf_record& paf)
{
// É necessario il cast a real?
paf.set("PI_ALIQUOTAIVA", static_cast<real>(cache().get("%IVA", codiva, "R0")));
paf.set("PI_NATURA", cache().get("%IVA", codiva, "S12"));
}
void TDoc_fp::set_IVA(const TRiga_documento& rdoc, TPaf_record& paf)
{
set_IVA(rdoc.get(RDOC_CODIVA), paf);
@ -1024,10 +1029,15 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
// <DatiBollo>
paf0700f.set("P7_IMPORTOBOLLO", converti_prezzo(doc.get_real("BOLLI")));
// </DatiBollo>
// <DatiCassaPrevidenziale>
// Non la mettiamo!
// </DatiCassaPrevidenziale>
// Non inserisco più adesso il paf0700f ma lo faccio alla fine (per inserire le ritenute)
/*
* Lo sconto in testata è stato disabilitato in quanto su Campo influenza solo le righe merci mentre dovrebbe modificare tutte le righe
*
// <ScontoMaggiorazione>
TPaf_record paf0900f("PAF0900F");
paf0900f.set("P9_KEYHEADERFATT", _hfatt);
@ -1059,6 +1069,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
}
}
}
*/
// </ScontoMaggiorazione>
// <DatiGenerali>
TPaf_record paf2700f("PAF2700F");
@ -1067,9 +1078,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
remove(paf2700f);
// Disabilitata la scrittura del totale del documento, questo causa problemi se è presente uno sconto in testata e l'addebito del bollo.
// Campo calcola prima il totale, poi lo sconta e ci applica il bollo mentre lo SDI sconta a bollo già applicato.
#ifndef DBG
if(!((doc.get_bool("ADDBOLLI") && doc.get_real("BOLLI") > ZERO) && doc.get(DOC_SCONTOPERC)))
#endif
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
const TRectype& cont_conv_off = cco(doc);
TString causale = cont_conv_off.get("S1");
@ -1431,7 +1440,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
}
// <ScontoMaggiorazione>
sconto_expr = rdoc->get(RDOC_SCONTO);
TString80 sconto_expr = rdoc->get(RDOC_SCONTO);
TToken_string sconti;
if (parse_sconto(sconto_expr, sconti))
{
long nlin_sconto = 0;
@ -1457,6 +1467,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
}
}
}
// </ScontoMaggiorazione>
paf1800f.set("PI_GESTIONE", "D");
@ -1464,7 +1475,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
}
// Controllo plafond
// Riga esenzione?
if (doc.is_fattura() || doc.is_nota_credito())
if (doc.is_fattura())
{
doc.set_riga_esenzione();
if(doc.ha_riga_esenzione())
@ -1543,6 +1554,39 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
set_IVA(codivadefault, paf1800f);
ok &= insert(paf1800f) && insert(paf3000f);
}
// Riga sconto di testata
// Se è presente uno sconto in testata devo sottrarlo come riga sconto o lo SDI urla
if(doc.get(DOC_SCONTOPERC).full())
{
TAssoc_array& tiva = doc.tabella_iva(false);
FOR_EACH_ASSOC_OBJECT(tiva, obj, key, itm)
{
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
paf1800f.reset();
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
paf1800f.set("PI_KEYBODYFATT", _bfatt);
paf1800f.set("PI_NUMEROLINEA", ++riga);
paf3000f.reset();
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
paf3000f.set("PT_KEYBODYFATT", _bfatt);
paf3000f.set("PT_RIFNUMLINEA", riga);
paf1800f.set("PI_TIPOCESSPREST", "AB");
TString msg = "Riga sconto merci in testata ";
if(riva.cod_iva().percentuale() > ZERO)
msg << riva.cod_iva().percentuale() << "%";
else
msg << riva.cod_iva().codice();
paf3000f.set("PT_COMMENTO", msg);
paf1800f.set("PI_QUANTITA", UNO);
paf1800f.set("PI_PREZZOUNIT", -abs(riva.sconto_perc()));
paf1800f.set("PI_PRZTOTALE", -abs(riva.sconto_perc()));
set_IVA(riva.cod_iva().codice(), paf1800f);
ok &= insert(paf1800f) && insert(paf3000f);
}
}
// </DatiBeniServizi>
// <DatiDDT>
// Metto qua i dati DDT per capire se la fattura è accompagnatoria o deriva da bolla