Patch level : 12.0 658
Files correlati : fp Commento : - Cambiato salvataggio riga articolo, adesso scriviamo sia l'articolo con cod interno che con cod esterno - Aggiunta funzione set_qta_prezzo() che controlla se la qta è < di 0 e gira il prezzo - Sistemata valuta per chi non ce l'ha (def EUR) - Ripulita scrittura articoli, tolte tabulazioni inutili - Cambiata dicitura bollo - Aggiunto reset paf22 - Aggiunta valorizzazione pafw3 sempre con nuove informazioni
This commit is contained in:
parent
2e57817626
commit
46bb1634e2
@ -809,9 +809,8 @@ void TDoc_fp::set_IVA(const TRiga_documento& rdoc, TPaf_record& paf)
|
||||
set_IVA(rdoc.get(RDOC_CODIVA), paf);
|
||||
}
|
||||
|
||||
bool TDoc_fp::add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf)
|
||||
bool TDoc_fp::add_row_art(long& riga_art, const TString codice_tipo, const TString& codice_valore, TPaf_record& paf)
|
||||
{
|
||||
static long riga_art = 0;
|
||||
paf.set("PY_KEYNLINAR", ++riga_art);
|
||||
paf.set("PY_TIPOARTICOLO", codice_tipo);
|
||||
paf.set("PY_VALOREARTICOLO", codice_valore);
|
||||
@ -859,6 +858,21 @@ const TString& TDoc_fp::converti_prezzo(const real& prezzo) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TDoc_fp::set_qta_prezzo(TPaf_record paf1800f, TRiga_documento* rdoc)
|
||||
{
|
||||
const real qta = rdoc->get(RDOC_QTA);
|
||||
if (qta >= ZERO)
|
||||
{
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||
}
|
||||
else
|
||||
{
|
||||
paf1800f.set("PI_QUANTITA", -qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(-rdoc->prezzo(true, false)));
|
||||
}
|
||||
}
|
||||
|
||||
bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
{
|
||||
// Azzero
|
||||
@ -903,7 +917,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
|
||||
// Valorizzo la gestione del cambio
|
||||
_doc_cambio._cod_val = doc.valuta();
|
||||
_doc_cambio._is_valuta_estera = !is_euro_value(doc.valuta());
|
||||
_doc_cambio._is_valuta_estera = doc.valuta().full() && !is_euro_value(doc.valuta());
|
||||
_doc_cambio._cambio = doc.cambio();
|
||||
|
||||
// <DatiTrassmissione>
|
||||
@ -1064,10 +1078,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf0700f.set("P7_KEYBODYFATT", _bfatt);
|
||||
remove(paf0700f);
|
||||
paf0700f.set("P7_TIPODOC", tipo_doc_sdi(doc));
|
||||
paf0700f.set("P7_DIVISA", doc.valuta());
|
||||
paf0700f.set("P7_DIVISA", _doc_cambio._cod_val.full() ? _doc_cambio._cod_val : "EUR");
|
||||
paf0700f.set("P7_DATA", doc.data());
|
||||
|
||||
const TCodice_numerazione& codnum = doc.codice_numerazione();
|
||||
paf0700f.set("P7_NUMERO", doc.numero());
|
||||
paf0700f.set("P7_GESTIONE", "D");
|
||||
|
||||
@ -1300,39 +1313,49 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
|
||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||
{
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
||||
|
||||
if (descrizione(*rdoc).empty())
|
||||
continue;
|
||||
if (descrizione(*rdoc).empty())
|
||||
continue;
|
||||
|
||||
paf3000f.reset();
|
||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
|
||||
paf3000f.reset();
|
||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||
paf3000f.set("PT_COMMENTO", descrizione(*rdoc));
|
||||
|
||||
// <CodiceArticolo>
|
||||
long riga_art = 0;
|
||||
TArticolo& art = rdoc->articolo();
|
||||
if (art.full())
|
||||
// <CodiceArticolo>
|
||||
if (rdoc->is_articolo())
|
||||
{
|
||||
TString codartmag = rdoc->get(RDOC_CODARTMAG);
|
||||
TString codart = rdoc->get(RDOC_CODART);
|
||||
long riga_art = 0;
|
||||
if (codart.full())
|
||||
{
|
||||
if (codartmag.full())
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
|
||||
TString& tmp = get_tmp_string();
|
||||
|
||||
if (art.codice().full())
|
||||
{
|
||||
tmp.cut(0) << art.codice(); // Fixed_string di merda
|
||||
ok &= add_row_art("Codice articolo", tmp, paf1900f);
|
||||
}
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo interno", codartmag, paf1900f);
|
||||
}
|
||||
// </CodiceArticolo>
|
||||
|
||||
// Se il codice articolo del magazzino è diverso quello è del cliente
|
||||
if (codart.full() && codart != codartmag)
|
||||
{
|
||||
paf1900f.reset();
|
||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||
paf1900f.set("PY_KEYBODYFATT", _bfatt);
|
||||
paf1900f.set("PY_KEYNLINEA", riga);
|
||||
ok &= add_row_art(riga_art, "Codice articolo cliente", codart, paf1900f);
|
||||
}
|
||||
}
|
||||
}
|
||||
// </CodiceArticolo>
|
||||
|
||||
if(rdoc->is_descrizione())
|
||||
{
|
||||
@ -1351,16 +1374,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
msg.format("La riga merce %d ha quantità nulla", riga);
|
||||
log(1, msg);
|
||||
}
|
||||
if (qta >= ZERO)
|
||||
{
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||
}
|
||||
else
|
||||
{
|
||||
paf1800f.set("PI_QUANTITA", -qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(-rdoc->prezzo(true, false)));
|
||||
}
|
||||
set_qta_prezzo(paf1800f, rdoc);
|
||||
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->importo(true, false)));
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
|
||||
@ -1447,6 +1461,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
const TSpesa_prest& sp = rdoc->spesa();
|
||||
const real imp = rdoc->importo(true, false);
|
||||
real qta = UNO;
|
||||
bool qta_inverse = false;
|
||||
|
||||
if (sp.is_tipo())
|
||||
{
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
@ -1458,8 +1474,14 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
log(1, msg);
|
||||
qta = UNO;
|
||||
}
|
||||
if(qta < ZERO)
|
||||
{
|
||||
qta = -qta;
|
||||
qta_inverse = true;
|
||||
}
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
}
|
||||
|
||||
real prz = imp;
|
||||
if (qta != UNO)
|
||||
{
|
||||
@ -1470,7 +1492,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
prz = price.get_value();
|
||||
}
|
||||
}
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(prz));
|
||||
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(qta_inverse ? -prz : prz));
|
||||
paf1800f.set("PI_PRZTOTALE", converti_prezzo(imp));
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
|
||||
@ -1490,8 +1513,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||
real qta = rdoc->get(RDOC_QTA);
|
||||
if (qta.is_zero()) qta = UNO;
|
||||
paf1800f.set("PI_QUANTITA", qta);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(rdoc->prezzo(false, false)));
|
||||
set_qta_prezzo(paf1800f, rdoc);
|
||||
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->importo(true, false)));
|
||||
set_IVA(*rdoc, paf1800f);
|
||||
}
|
||||
@ -1545,7 +1567,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||
paf3000f.set("PT_COMMENTO", "Imposta bollo assolta in modo virtuale");
|
||||
paf3000f.set("PT_COMMENTO", "Imposta di bollo assolta virtualmente ai sensi dell'art. 6 D.M. 17.6.2014");
|
||||
|
||||
paf1800f.set("PI_QUANTITA", UNO);
|
||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(doc.get_real("BOLLI")));
|
||||
@ -1621,7 +1643,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
TAssoc_array& tiva = doc.tabella_iva(false);
|
||||
FOR_EACH_ASSOC_OBJECT(tiva, obj, key, itm)
|
||||
{
|
||||
const TRiepilogo_iva& riva = *(const TRiepilogo_iva*)itm;
|
||||
paf2200f.reset();
|
||||
paf2200f.set("PL_KEYHEADERFATT", _hfatt);
|
||||
paf2200f.set("PL_KEYBODYFATT", _bfatt);
|
||||
|
||||
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
|
||||
const real aliquota = riva.cod_iva().percentuale();
|
||||
paf2200f.set("PL_ALIQUOTAIVA", aliquota);
|
||||
if (aliquota.is_zero())
|
||||
@ -1665,7 +1691,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
paf2500f.set("PO_KEYBODYFATT", _bfatt);
|
||||
remove(paf2500f); // Cancella tutte le rate
|
||||
|
||||
// Imposto i campi uguali per tutte le rate
|
||||
// Imposto i campi uguali per tutte le rate
|
||||
paf2500f.set("PO_CONDPAGAMENTO", rateazione); // Condizione di pagamento PA
|
||||
paf2500f.set("PO_CODICEPAGAM", pag.code()); // Condizione di pagamento CAMPO
|
||||
|
||||
@ -1706,6 +1732,8 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
ok &= insert(paf2500f);
|
||||
}
|
||||
|
||||
// </DatiPagamento>
|
||||
|
||||
if (_gestioneallegati)
|
||||
{
|
||||
TPaf_record paf2600f("PAF2600F");
|
||||
@ -1771,18 +1799,40 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
||||
}
|
||||
}
|
||||
}
|
||||
// </DatiPagamento>
|
||||
|
||||
|
||||
// Tabella di non invio XML
|
||||
TPaf_record pafw300f("PAFW300F");
|
||||
pafw300f.set("PW_KEYHEADERFATT", _hfatt);
|
||||
pafw300f.set("PW_KEYBODYFATT", _bfatt);
|
||||
remove(pafw300f);
|
||||
pafw300f.set("PW_TIPODOC", tipo_doc_sdi(doc));
|
||||
pafw300f.set("PW_TIPONUM", doc.codice_numerazione().codice());
|
||||
pafw300f.set("PW_NUMERO", doc.numero());
|
||||
pafw300f.set("PW_DATA", doc.data());
|
||||
|
||||
if (!cached_tipodoc(doc.get(DOC_TIPODOC)).invio_xml())
|
||||
{
|
||||
// Tabella di non invio XML
|
||||
TPaf_record pafw300f("PAFW300F");
|
||||
pafw300f.set("PW_KEYHEADERFATT", _hfatt);
|
||||
pafw300f.set("PW_KEYBODYFATT", _bfatt);
|
||||
remove(pafw300f);
|
||||
pafw300f.set("PW_CODSDI", "**********");
|
||||
ok &= insert(pafw300f);
|
||||
}
|
||||
|
||||
pafw300f.set("PW_CDEST", coddest);
|
||||
pafw300f.set("PW_RAGSOC", cliente.ragione_sociale());
|
||||
pafw300f.set("PW_PAESE", cliente.stato_residenza_ISO());
|
||||
pafw300f.set("PW_CODICE", cliente.codice_fiscale_estero());
|
||||
pafw300f.set("PW_CFISCA", cliente.codice_fiscale());
|
||||
pafw300f.set("PW_DENOM", cliente.ragione_sociale());
|
||||
|
||||
if (cliente.fisica())
|
||||
{
|
||||
pafw300f.set("PW_NOME", cliente.nome());
|
||||
pafw300f.set("PW_COGN", cliente.cognome());
|
||||
}
|
||||
else
|
||||
pafw300f.set("PW_RAGSOC", cliente.ragione_sociale().left(35));
|
||||
|
||||
pafw300f.set("PW_IMPO", converti_prezzo(doc.totale_doc()));
|
||||
ok &= insert(pafw300f);
|
||||
|
||||
return _to_commit = (ok && save_paf());
|
||||
}
|
||||
|
@ -121,9 +121,10 @@ protected:
|
||||
const char* natura(const TString& codiva) const;
|
||||
static void set_IVA(const TString& codiva, TPaf_record& paf);
|
||||
static void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf);
|
||||
bool add_row_art(const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||
bool add_row_art(long& riga_art, const TString codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
||||
const TString& converti_prezzo(const real& prezzo) const;
|
||||
void set_qta_prezzo(TPaf_record paf1800f, TRiga_documento* rdoc);
|
||||
|
||||
public:
|
||||
bool doc_to_paf(TDocumentoEsteso& doc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user