Merge branch 'R_10_00' of http://10.65.20.17:7990/scm/campo/campo into R_10_00
This commit is contained in:
commit
a738b7ed8f
@ -312,7 +312,7 @@ bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
break;
|
break;
|
||||||
case F_DATAINI:
|
case F_DATAINI:
|
||||||
if (e == fe_init)
|
if (e == fe_init)
|
||||||
o.set(ini_get_string(CONFIG_DITTA, "fp", "LastXML", "01-01-2018"));
|
o.set(ini_get_string(CONFIG_DITTA, "fp", "LastXML", "01-01-2019"));
|
||||||
else if (e == fe_close)
|
else if (e == fe_close)
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "LastXML", o.get());
|
ini_set_string(CONFIG_DITTA, "fp", "LastXML", o.get());
|
||||||
break;
|
break;
|
||||||
|
@ -56,7 +56,7 @@ BEGIN
|
|||||||
ITEM "X|XML Generato"
|
ITEM "X|XML Generato"
|
||||||
ITEM "N|Notificato"
|
ITEM "N|Notificato"
|
||||||
ITEM "E|In errore"
|
ITEM "E|In errore"
|
||||||
ITEM "D|Pronto"
|
ITEM "D|Diag."
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <reputils.h>
|
#include <reputils.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#define SQL_FLD "sql/"
|
#define SQL_FLD "sql/"
|
||||||
#define CARATTERI_SPECIALI "àèéìòù°'\\"
|
#define CARATTERI_SPECIALI "àèéìòù°'\\"
|
||||||
@ -100,9 +101,20 @@ private:
|
|||||||
TString _bfatt; // Codice univoco di 20 caratteri del documento
|
TString _bfatt; // Codice univoco di 20 caratteri del documento
|
||||||
TString _conai_str;
|
TString _conai_str;
|
||||||
|
|
||||||
|
// Classe interna per gestire gli omaggi
|
||||||
|
class TOmaggio_info
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
real imponibile;
|
||||||
|
real imposta;
|
||||||
|
TOmaggio_info() : imponibile(ZERO), imposta(ZERO){}
|
||||||
|
};
|
||||||
|
|
||||||
|
std::map<TString, TOmaggio_info> _omaggi;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool _is_valuta_estera; // Se il documento è in valuta estera
|
bool _is_valuta_estera {false}; // Se il documento è in valuta estera
|
||||||
TString4 _cod_val;
|
TString4 _cod_val;
|
||||||
real _cambio;
|
real _cambio;
|
||||||
} _doc_cambio;
|
} _doc_cambio;
|
||||||
|
@ -853,6 +853,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
TAnagrafica clifo(doc.clifor().tipo(), doc.clifor().codice());
|
TAnagrafica clifo(doc.clifor().tipo(), doc.clifor().codice());
|
||||||
|
TRectype rec_clifo(LF_CLIFO);
|
||||||
|
rec_clifo.put(CLI_TIPOCF, doc.clifor().tipo());
|
||||||
|
rec_clifo.put(CLI_CODCF, doc.clifor().codice());
|
||||||
|
rec_clifo.read(TLocalisamfile(LF_CLIFO));
|
||||||
TString8 coddest;
|
TString8 coddest;
|
||||||
TString pec;
|
TString pec;
|
||||||
#ifndef DBG
|
#ifndef DBG
|
||||||
@ -979,7 +983,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf0400f.set("P4_FISCIVAPAESE", "IT");
|
paf0400f.set("P4_FISCIVAPAESE", "IT");
|
||||||
paf0400f.set("P4_FISCIVACOD", "00261170039");
|
paf0400f.set("P4_FISCIVACOD", "00261170039");
|
||||||
#endif
|
#endif
|
||||||
if (cliente.fisica())
|
if (cliente.fisica() && cliente.nome().full())
|
||||||
{
|
{
|
||||||
paf0400f.set("P4_ANANOME", cliente.nome());
|
paf0400f.set("P4_ANANOME", cliente.nome());
|
||||||
paf0400f.set("P4_ANACOGNOME", cliente.cognome());
|
paf0400f.set("P4_ANACOGNOME", cliente.cognome());
|
||||||
@ -1063,7 +1067,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
remove(paf2700f);
|
remove(paf2700f);
|
||||||
// Disabilitata la scrittura del totale del documento, questo causa problemi se è presente uno sconto in testata e l'addebito del bollo.
|
// 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.
|
// Campo calcola prima il totale, poi lo sconta e ci applica il bollo mentre lo SDI sconta a bollo già applicato.
|
||||||
// paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
#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);
|
const TRectype& cont_conv_off = cco(doc);
|
||||||
TString causale = cont_conv_off.get("S1");
|
TString causale = cont_conv_off.get("S1");
|
||||||
if (causale.full())
|
if (causale.full())
|
||||||
@ -1170,6 +1177,10 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf2000f.set("PJ_KEYHEADERFATT", _hfatt);
|
paf2000f.set("PJ_KEYHEADERFATT", _hfatt);
|
||||||
paf2000f.set("PJ_KEYBODYFATT", _bfatt);
|
paf2000f.set("PJ_KEYBODYFATT", _bfatt);
|
||||||
remove(paf2000f); // Cancella tutti gli sconti di riga
|
remove(paf2000f); // Cancella tutti gli sconti di riga
|
||||||
|
TPaf_record paf2100f("PAF2100F");
|
||||||
|
paf2100f.set("PK_KEYHEADERFATT", _hfatt);
|
||||||
|
paf2100f.set("PK_KEYBODYFATT", _bfatt);
|
||||||
|
remove(paf2000f); // Cancella tutti i "altri dati gestionali"
|
||||||
TPaf_record paf1900f("PAF1900F");
|
TPaf_record paf1900f("PAF1900F");
|
||||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||||
@ -1239,87 +1250,65 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
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())
|
||||||
|
{
|
||||||
|
set_IVA(codivadefault, paf1800f);
|
||||||
|
}
|
||||||
|
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);
|
||||||
*/
|
*/
|
||||||
// <ScontoMaggiorazione>
|
|
||||||
sconto_expr = rdoc->get(RDOC_SCONTO);
|
/*
|
||||||
if (parse_sconto(sconto_expr, sconti))
|
* 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 = (const TAncestor&)ancestors[i];
|
||||||
|
if (i == 1)
|
||||||
{
|
{
|
||||||
long nlin_sconto = 0;
|
// <DatiDDT>
|
||||||
FOR_EACH_TOKEN(sconti, str)
|
TPaf_record paf1600f("PAF1600F");
|
||||||
{
|
paf1600f.reset();
|
||||||
const real perc = str;
|
paf1600f.set("PF_KEYHEADERFATT", _hfatt);
|
||||||
if (!perc.is_zero())
|
paf1600f.set("PF_KEYBODYFATT", _bfatt);
|
||||||
{
|
paf1600f.set("PF_RIFNUMLINEA", (long)r);
|
||||||
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
||||||
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
paf1600f.set("PF_DATADDT", a._datadoc);
|
||||||
if (perc > ZERO)
|
paf1600f.set("PF_GESTIONE", "D");
|
||||||
{
|
ok &= insert(paf1600f);
|
||||||
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
// </DatiDDT>
|
||||||
paf2000f.set("PJ_PERCSCONTO", perc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
paf2000f.set("PJ_TIPOSCONTO", "MG");
|
|
||||||
paf2000f.set("PJ_PERCSCONTO", -perc);
|
|
||||||
}
|
|
||||||
paf2000f.set("PJ_GESTIONE", "D");
|
|
||||||
ok &= insert(paf2000f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// </ScontoMaggiorazione>
|
else if (i == 3)
|
||||||
/*
|
|
||||||
* 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;
|
// <DatiOrdineAcquisto>
|
||||||
const TAncestor& a = (const TAncestor&)ancestors[i];
|
TPaf_record paf1000f("PAF1000F");
|
||||||
if (i == 1)
|
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
||||||
{
|
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
||||||
// <DatiDDT>
|
paf1000f.set("P0_RIFNUMLINEA", (long)r);
|
||||||
TPaf_record paf1600f("PAF1600F");
|
paf1000f.set("P0_IDDOC", a._numdoc);
|
||||||
paf1600f.reset();
|
paf1000f.set("P0_DATADOC", a._datadoc);
|
||||||
paf1600f.set("PF_KEYHEADERFATT", _hfatt);
|
paf1000f.set("P0_COMMCONVENZ", com);
|
||||||
paf1600f.set("PF_KEYBODYFATT", _bfatt);
|
paf1000f.set("P0_CODCUP", cup);
|
||||||
paf1600f.set("PF_RIFNUMLINEA", (long)r);
|
paf1000f.set("P0_CODCIG", cig);
|
||||||
paf1600f.set("PF_NUMDDDT", a._numdoc);
|
paf1000f.set("P0_GESTIONE", "D");
|
||||||
paf1600f.set("PF_DATADDT", a._datadoc);
|
ok &= insert(paf1000f);
|
||||||
paf1600f.set("PF_GESTIONE", "D");
|
// </DatiOrdineAcquisto>
|
||||||
ok &= insert(paf1600f);
|
|
||||||
// </DatiDDT>
|
|
||||||
}
|
|
||||||
else if (i == 3)
|
|
||||||
{
|
|
||||||
// <DatiOrdineAcquisto>
|
|
||||||
TPaf_record paf1000f("PAF1000F");
|
|
||||||
paf1000f.set("P0_KEYHEADERFATT", _hfatt);
|
|
||||||
paf1000f.set("P0_KEYBODYFATT", _bfatt);
|
|
||||||
paf1000f.set("P0_RIFNUMLINEA", (long)r);
|
|
||||||
paf1000f.set("P0_IDDOC", a._numdoc);
|
|
||||||
paf1000f.set("P0_DATADOC", a._datadoc);
|
|
||||||
paf1000f.set("P0_COMMCONVENZ", 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())
|
else if (rdoc->is_spese())
|
||||||
{
|
{
|
||||||
@ -1362,7 +1351,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
// <DatiRitenuta>
|
// <DatiRitenuta>
|
||||||
if (sp.tipo_ritenuta() == 'F')
|
if (sp.tipo_ritenuta() == 'F')
|
||||||
{
|
{
|
||||||
paf0700f.set("P7_TIPORITENUTA", cliente.fisica() ? "RT01" : "RT02");
|
paf0700f.set("P7_TIPORITENUTA", rec_clifo.get_char(CLI_TIPOPERS) == 'F' ? "RT01" : "RT02");
|
||||||
paf0700f.set("P7_IMPORTORIT", converti_prezzo(doc.imponibile() * sp.perc() / CENTO));
|
paf0700f.set("P7_IMPORTORIT", converti_prezzo(doc.imponibile() * sp.perc() / CENTO));
|
||||||
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
paf0700f.set("P7_ALIQUOTARIT", TCodiceIVA(sp.cod_iva()).percentuale());
|
||||||
static TString caus770; caus770.cut(0); caus770.format("%02d", sp.caus_770());
|
static TString caus770; caus770.cut(0); caus770.format("%02d", sp.caus_770());
|
||||||
@ -1386,7 +1375,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
log(2, msg);
|
log(2, msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(rdoc->is_omaggio())
|
else if (rdoc->is_omaggio())
|
||||||
{
|
{
|
||||||
if (rdoc->get(RDOC_QTA).is_zero())
|
if (rdoc->get(RDOC_QTA).is_zero())
|
||||||
{
|
{
|
||||||
@ -1394,29 +1383,82 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
msg.format("La riga omaggi %d ha quantità nulla", riga);
|
msg.format("La riga omaggi %d ha quantità nulla", riga);
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
paf1800f.set("PI_TIPOCESSPREST", "AB");
|
||||||
set_qta_prezzo(paf1800f, rdoc);
|
set_qta_prezzo(paf1800f, rdoc);
|
||||||
set_IVA(*rdoc, paf1800f);
|
set_IVA(*rdoc, paf1800f);
|
||||||
|
|
||||||
// <ScontoMaggiorazione>
|
paf2100f.set("PK_KEYNLINEA", static_cast<long>(r));
|
||||||
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
paf2100f.set("PK_KEYNLINAR", 1L);
|
||||||
paf2000f.set("PJ_KEYNLINAR", 1L);
|
paf2100f.set("PK_TIPODATO", "AswTRiga");
|
||||||
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
|
||||||
if(rdoc->get_bool(RDOC_ADDIVA))
|
|
||||||
|
if (rdoc->get_bool(RDOC_ADDIVA))
|
||||||
{
|
{
|
||||||
paf2000f.set("PJ_IMPORTOSCONTO", converti_prezzo(rdoc->importo(true, false) - rdoc->imposta()));
|
paf2100f.set("PK_RIFDATO", "Omaggio con rivalsa");
|
||||||
|
|
||||||
|
// Metto i dati come si trattasse di una riga normalissima
|
||||||
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
|
paf1800f.set("PI_QUANTITA", rdoc->get_real(RDOC_QTA));
|
||||||
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||||
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->prezzo(false, false) * rdoc->get_real(RDOC_QTA)));
|
||||||
|
|
||||||
|
TOmaggio_info& omaggio_info = _omaggi[rdoc->iva().codice()];
|
||||||
|
omaggio_info.imponibile += rdoc->imponibile_omaggio(2);
|
||||||
|
omaggio_info.imposta += rdoc->iva_omaggio(8, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
paf2000f.set("PJ_IMPORTOSCONTO", converti_prezzo(rdoc->importo(true, false)));
|
paf2100f.set("PK_RIFDATO", "Omaggio senza rivalsa");
|
||||||
|
|
||||||
|
// Aggiungo uno sconto
|
||||||
|
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
||||||
|
paf2000f.set("PJ_KEYNLINAR", 1L);
|
||||||
|
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
||||||
|
// Applico uno sconto del 100% portando l'importo a zero
|
||||||
|
paf2000f.set("PJ_PERCSCONTO", CENTO);
|
||||||
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
|
paf2000f.set("PJ_GESTIONE", "D");
|
||||||
|
ok &= insert(paf2000f);
|
||||||
}
|
}
|
||||||
paf2000f.set("PJ_GESTIONE", "D");
|
|
||||||
ok &= insert(paf2000f);
|
ok &= insert(paf2100f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Salto tutte le altre righe
|
// Salto tutte le altre righe
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// <ScontoMaggiorazione>
|
||||||
|
sconto_expr = rdoc->get(RDOC_SCONTO);
|
||||||
|
if (parse_sconto(sconto_expr, sconti))
|
||||||
|
{
|
||||||
|
long nlin_sconto = 0;
|
||||||
|
FOR_EACH_TOKEN(sconti, str)
|
||||||
|
{
|
||||||
|
const real perc = str;
|
||||||
|
if (!perc.is_zero())
|
||||||
|
{
|
||||||
|
paf2000f.set("PJ_KEYNLINEA", static_cast<long>(r));
|
||||||
|
paf2000f.set("PJ_KEYNLINAR", ++nlin_sconto);
|
||||||
|
if (perc > ZERO)
|
||||||
|
{
|
||||||
|
paf2000f.set("PJ_TIPOSCONTO", "SC");
|
||||||
|
paf2000f.set("PJ_PERCSCONTO", perc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paf2000f.set("PJ_TIPOSCONTO", "MG");
|
||||||
|
paf2000f.set("PJ_PERCSCONTO", -perc);
|
||||||
|
}
|
||||||
|
paf2000f.set("PJ_GESTIONE", "D");
|
||||||
|
ok &= insert(paf2000f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// </ScontoMaggiorazione>
|
||||||
|
|
||||||
paf1800f.set("PI_GESTIONE", "D");
|
paf1800f.set("PI_GESTIONE", "D");
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
@ -1540,6 +1582,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
// </DatiDDT>
|
// </DatiDDT>
|
||||||
// Salvo la testata
|
// Salvo la testata
|
||||||
ok &= insert(paf0700f);
|
ok &= insert(paf0700f);
|
||||||
|
|
||||||
// <DatiRiepilogo>
|
// <DatiRiepilogo>
|
||||||
TPaf_record paf2200f("PAF2200F");
|
TPaf_record paf2200f("PAF2200F");
|
||||||
paf2200f.set("PL_KEYHEADERFATT", _hfatt);
|
paf2200f.set("PL_KEYHEADERFATT", _hfatt);
|
||||||
@ -1559,16 +1602,29 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf2200f.set("PL_KEYBODYFATT", _bfatt);
|
paf2200f.set("PL_KEYBODYFATT", _bfatt);
|
||||||
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
|
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
|
||||||
const real aliquota = riva.cod_iva().percentuale();
|
const real aliquota = riva.cod_iva().percentuale();
|
||||||
|
const TString& cod_aliquota = riva.cod_iva().codice();
|
||||||
|
const TOmaggio_info& omaggio_info = _omaggi[cod_aliquota];
|
||||||
|
|
||||||
|
// Aliquota
|
||||||
paf2200f.set("PL_ALIQUOTAIVA", aliquota);
|
paf2200f.set("PL_ALIQUOTAIVA", aliquota);
|
||||||
|
|
||||||
|
// Natura
|
||||||
if (aliquota.is_zero())
|
if (aliquota.is_zero())
|
||||||
paf2200f.set("PL_NATURA", natura(riva.cod_iva().codice()));
|
paf2200f.set("PL_NATURA", natura(riva.cod_iva().codice()));
|
||||||
paf2200f.set("PL_IMPONIBILE", converti_prezzo(riva.imponibile()));
|
|
||||||
|
// Imponibile
|
||||||
|
paf2200f.set("PL_IMPONIBILE", converti_prezzo(riva.imponibile() + omaggio_info.imponibile));
|
||||||
|
|
||||||
|
// Imposta, per gli omaggi con addebito ho già l'imposta
|
||||||
paf2200f.set("PL_IMPOSTA", converti_prezzo(riva.imposta()));
|
paf2200f.set("PL_IMPOSTA", converti_prezzo(riva.imposta()));
|
||||||
|
|
||||||
|
// Esigibilità IVA
|
||||||
paf2200f.set("PL_ESIGIVA", eiva);
|
paf2200f.set("PL_ESIGIVA", eiva);
|
||||||
if (*eiva == 'S')
|
if (*eiva == 'S')
|
||||||
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
||||||
else
|
else
|
||||||
paf2200f.set("PL_RIFNORMATIVO", riva.cod_iva().descrizione());
|
paf2200f.set("PL_RIFNORMATIVO", riva.cod_iva().descrizione());
|
||||||
|
|
||||||
paf2200f.set("PL_GESTIONE", "D");
|
paf2200f.set("PL_GESTIONE", "D");
|
||||||
ok &= insert(paf2200f);
|
ok &= insert(paf2200f);
|
||||||
}
|
}
|
||||||
@ -1619,9 +1675,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
int rp = nr < pag.n_rate() ? nr : 0;
|
int rp = nr < pag.n_rate() ? nr : 0;
|
||||||
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
||||||
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
||||||
TToken_string& riga = scad.row(nr); // Data|Importo
|
TToken_string& riga_scadenze = scad.row(nr); // Data|Importo
|
||||||
paf2500f.set("PO_DATASCADENZA", TDate(riga.get(0))); // Data scadenza
|
paf2500f.set("PO_DATASCADENZA", TDate(riga_scadenze.get(0))); // Data scadenza
|
||||||
paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga.get()))); // Importo rata
|
paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga_scadenze.get()))); // Importo rata
|
||||||
paf2500f.set("PO_GESTIONE", "D");
|
paf2500f.set("PO_GESTIONE", "D");
|
||||||
ok &= insert(paf2500f);
|
ok &= insert(paf2500f);
|
||||||
}
|
}
|
||||||
@ -1710,7 +1766,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
pafw300f.set("PW_CODICE", cliente.codice_fiscale_estero());
|
pafw300f.set("PW_CODICE", cliente.codice_fiscale_estero());
|
||||||
pafw300f.set("PW_CFISCA", cliente.codice_fiscale());
|
pafw300f.set("PW_CFISCA", cliente.codice_fiscale());
|
||||||
pafw300f.set("PW_DENOM", cliente.ragione_sociale());
|
pafw300f.set("PW_DENOM", cliente.ragione_sociale());
|
||||||
if (cliente.fisica())
|
if (cliente.fisica() && cliente.nome().full())
|
||||||
{
|
{
|
||||||
pafw300f.set("PW_NOME", cliente.nome());
|
pafw300f.set("PW_NOME", cliente.nome());
|
||||||
pafw300f.set("PW_COGN", cliente.cognome());
|
pafw300f.set("PW_COGN", cliente.cognome());
|
||||||
@ -1746,10 +1802,12 @@ bool TDoc_fp::doc_to_paf(const TFilename& ini)
|
|||||||
const TDoc_key key(anno, codnum, ndoc);
|
const TDoc_key key(anno, codnum, ndoc);
|
||||||
return doc_to_paf(key);
|
return doc_to_paf(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDoc_fp::doc_to_paf()
|
bool TDoc_fp::doc_to_paf()
|
||||||
{
|
{
|
||||||
return _doc_rec != nullptr ? doc_to_paf(*_doc_rec) : false;
|
return _doc_rec != nullptr ? doc_to_paf(*_doc_rec) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TDoc_fp::key_to_doc(const TDoc_key& key)
|
TRectype& TDoc_fp::key_to_doc(const TDoc_key& key)
|
||||||
{
|
{
|
||||||
if(_doc_rec != nullptr)
|
if(_doc_rec != nullptr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user