From ee6464deecdddf69f5bc099fafbb188722ab0619 Mon Sep 17 00:00:00 2001 From: smen Date: Mon, 4 Apr 2022 17:10:43 +0200 Subject: [PATCH] Patch level : 12.0 nopatch Files correlati : Commento: sconto in fattura nell'invio --- src/fp/fplib01.cpp | 37 ++++++++++++++++++++++++++++++++++--- src/ve/velib05.cpp | 2 ++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp index da870a059..d1fb07186 100644 --- a/src/fp/fplib01.cpp +++ b/src/fp/fplib01.cpp @@ -790,6 +790,8 @@ const char* TPaf_container::paf_to_prefix(const char * paf) return "P7"; if (paf_name == "PAF0800F") return "P8"; + if (paf_name == "PAF0900F") + return "P9"; if (paf_name == "PAF1000F") return "P0"; if (paf_name == "PAF1100F") @@ -1779,6 +1781,8 @@ void TDoc_fp::fill_buoni(map& buoni, const TStr bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) { + int linea_sconto = 0; + if (!initialize(doc)) return false; bool ok = true; @@ -1869,11 +1873,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) tab_codiso.put("CODTAB", stato); tab_codiso.read(); TString piva = cliente.partita_IVA(), - - fisc = cliente.codice_fiscale(); + + fisc = cliente.codice_fiscale(); if (!stato.full()) stato = "IT"; - if (tab_codiso.get_bool("B0") || stato == "IT") // Cliente EU + if (tab_codiso.get_bool("B0") || stato == "IT") // Cliente EU { if (stato == "IT") { @@ -2018,6 +2022,23 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) com.add_front_and_back("#"); } + //SCONTO IN FATTURA + const real sconto_in_fat = doc.get_real(DOC_SCONTOFATT); + + if (sconto_in_fat > ZERO) + { + TPaf_record& paf0900f = _paf_container.get_paf("PAF0900F"); + + reset(paf0900f); + paf0900f.set("P9_RIFNUMLINEA", (real)linea_sconto++); + paf0900f.set("P9_TIPOSCONTO", "SC"); + paf0900f.set("P9_IMPSCONTO", sconto_in_fat); + paf0900f.set("P9_GESTIONE", stato_paf()); + ok &= insert(paf0900f); + } + + + // SEMPRE // Azzera contratti TPaf_record& paf1000f = _paf_container.get_paf("PAF1000F"); @@ -2481,6 +2502,15 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) riga++; } } + + if (sconto_in_fat > ZERO) + { + reset(paf2100f); + paf2100f.set("PK_KEYNLINAR", _idx_adg_doc_row++); + //paf2100f.set("PK_TIPODATO", "Sconto"); DA CAPIRE COSA METTERCI + paf2100f.set("PK_RIFDATO", "Sconto praticato in base all articolo 121 del decreto - legge n. 34 del 2020"); + ok &= insert(paf2100f); + } // Se il bollo va fatto pagare bisogna aggiungere una riga! const real importo_bolli = doc.get_real(DOC_BOLLI); if (doc.get_bool(DOC_ADDBOLLI) && importo_bolli > ZERO) @@ -2696,6 +2726,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile TToken_string& riga_scadenze = scad.row(nr); // Data|Importo paf2500f.set("PO_DATASCADENZA", TDate(riga_scadenze.get(0))); // Data scadenza + paf2500f.set("PO_IMPORTO", converti_prezzo(real(riga_scadenze.get()))); // Importo rata paf2500f.set("PO_GESTIONE", stato_paf()); ok &= insert(paf2500f); diff --git a/src/ve/velib05.cpp b/src/ve/velib05.cpp index 29efa331d..17207ef73 100755 --- a/src/ve/velib05.cpp +++ b/src/ve/velib05.cpp @@ -174,6 +174,8 @@ void TDocumentoEsteso::scadenze_recalc() const bool saldo = hh.get_bool(DOC_ACCSALDO); real totimponibili = totale_doc() - ritenute() - totimposte - totspese; const bool is_in_valuta = in_valuta(); + pagato += get_real(DOC_SCONTOFATT); + if (is_split_payment()) totimposte = ZERO;