From c6d8cc26537ab40427128a18ccc974ce925e282e Mon Sep 17 00:00:00 2001 From: Tolla <mtollari@sirio-is.it> Date: Fri, 18 Jan 2019 21:30:23 +0100 Subject: [PATCH] Patch level : 12.0 no-patch Files correlati : fp Commento : - Sistemato CAP italiani, era sbagliato il controllo - Tolto segno quando metto gli importi in negativo forzando il segno corretto --- src/fp/fplib01.cpp | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp index 2b0bcbe93..fb28940fa 100644 --- a/src/fp/fplib01.cpp +++ b/src/fp/fplib01.cpp @@ -889,7 +889,9 @@ void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const // Setto l'unit� di misura paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); - real& qta = rdoc->get_real(RDOC_QTA); + real qta = rdoc->get_real(RDOC_QTA); + // Prendendo la stringa non ho problemi in scrittura della query, a volte accadono cose stupide + const TString& qta_string = rdoc->get(RDOC_QTA); real prezzo_unit; real prezzo_tot; @@ -899,17 +901,17 @@ void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const if (qta == ZERO) qta = UNO; - paf1800f.set("PI_QUANTITA", qta.string()); + paf1800f.set("PI_QUANTITA", qta_string); prezzo_unit = rdoc->prezzo(false, false); prezzo_tot = rdoc->importo(true, false); } else if(qta < ZERO) { - // Metto la qualit� in positivo - paf1800f.set("PI_QUANTITA", abs(qta).string()); - // E i prezzi in negativo - prezzo_unit = -rdoc->prezzo(false, false); - prezzo_tot = -rdoc->importo(true, false); + // Metto la qualit� senza il segno + paf1800f.set("PI_QUANTITA", qta_string.mid(1)); + // E i prezzi in negativo, perch� l'importo non ha lo stesso segno del prezzo? + prezzo_unit = -abs(rdoc->prezzo(false, false)); + prezzo_tot = -abs(rdoc->importo(true, false)); } // Salvo tutto @@ -1101,16 +1103,21 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) // DatiSede - paf0400f.set("P4_SEDEIND", cliente.via_residenza()); - paf0400f.set("P4_SEDENRCIVICO", cliente.civico_residenza()); + paf0400f.set("P4_SEDEIND", cliente.via_residenza()); + paf0400f.set("P4_SEDENRCIVICO", cliente.civico_residenza()); + paf0400f.set("P4_SEDECOMUNE", cliente.comune_residenza()); + paf0400f.set("P4_SEDENAZ", cliente.stato_residenza_ISO()); + + // I clienti esteri possono avere CAP alfanumerici, li tolgo + if (cliente.stato_residenza_ISO() != "IT") + { + paf0400f.set("P4_SEDECAP", "00000"); + } + else + { paf0400f.set("P4_SEDECAP", cliente.CAP_residenza()); - paf0400f.set("P4_SEDECOMUNE", cliente.comune_residenza()); - paf0400f.set("P4_SEDENAZ", cliente.stato_residenza_ISO()); - if (cliente.italiano()) - { - paf0400f.set("P4_SEDECAP", "00000"); - paf0400f.set("P4_SEDEPROV", cliente.provincia_residenza()); - } + paf0400f.set("P4_SEDEPROV", cliente.provincia_residenza()); + } paf0400f.set("P4_GESTIONE", "D"); ok &= insert(paf0400f);