From 8744bb7b7d097cfce7daa36ae7b303c1bf34ae68 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Thu, 30 Jan 2020 15:47:20 +0100 Subject: [PATCH] Patch level : 12.0 934 Files correlati : tp0.exe Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - La segnalazione di sottocategoria assente non è più bloccante --- src/tp/tp0100.h | 2 ++ src/tp/tp0102.cpp | 6 ++--- src/tp/tp0900.cpp | 67 +++++++++++++++++++++++++++++++++-------------- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/tp/tp0100.h b/src/tp/tp0100.h index ad2ad8bc3..2c81342f3 100755 --- a/src/tp/tp0100.h +++ b/src/tp/tp0100.h @@ -65,6 +65,8 @@ public: void log(const char* msg, int sev = 0) const; bool log_error(const char* msg); + void log_message(const char* msg) { log(msg, 0); } + bool log_cancelled(); const TRecordset& recordset() const; TRecordset& recordset(); diff --git a/src/tp/tp0102.cpp b/src/tp/tp0102.cpp index 65984c699..d2b91499e 100755 --- a/src/tp/tp0102.cpp +++ b/src/tp/tp0102.cpp @@ -830,7 +830,7 @@ bool TPack_ddt::trasferisci() const TCONAI_class ct = conai_str2class(conai_subclass); if (cache().get("&VECSS", conai_subclass).empty()) - log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), + log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), ndoc, (const char *) (rowtype == "01" ? codart : custcode), (const char *) conai_subclass)); if (conai_scheme == 1) @@ -851,7 +851,7 @@ bool TPack_ddt::trasferisci() const TString& cs = art.conai_subclass(i - 1); // Codice sottocategoria su ANAMAG if (cache().get("&VECSS", cs).empty()) - log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), + log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), ndoc, (const char *)(rowtype == "01" ? codart : custcode), (const char *)cs)); @@ -880,7 +880,7 @@ bool TPack_ddt::trasferisci() const real& weight = art.conai_weight(i - 1); // Peso imballo su ANAMAG if (cache().get("&VECSS", cs).empty()) - log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), + log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"), ndoc, (const char *)(rowtype == "01" ? codart : custcode), (const char *)cs)); diff --git a/src/tp/tp0900.cpp b/src/tp/tp0900.cpp index f1bc02194..a92c6a57c 100755 --- a/src/tp/tp0900.cpp +++ b/src/tp/tp0900.cpp @@ -177,8 +177,6 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(const TDocumento& do TGeneric_distrib agip(totale_qta_assogg, 5); //distrib per ridistribuire le % dei quantitativi assoggetati - if (doc.get_long(DOC_NDOC) == 28L) - int i = 1; //ciclo di creazione del distrib con le quote conai FOR_EACH_PHYSICAL_RDOC(doc, j, rdoc) { @@ -329,13 +327,11 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi const int nrighe = doc.rows(); //ciclo di riempimento delle righe csv;scandisce solo l'array con i valori compilati - for (int i = 1; i <= nrighe; i++) - { - const TRiga_documento& rdoc = doc[i]; - + FOR_EACH_PHYSICAL_RDOC(doc, i, rdoc) + { for (int j = 1; j <= FR_CMAX; j++) { - TString4 sottocat = rdoc.get(conai_sottocat_name(j)); + TString4 sottocat = rdoc->get(conai_sottocat_name(j)); if (sottocat == sottoclass) { @@ -349,14 +345,14 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi //riempie i campi del record del csv //codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-sottocat-prezzo-um-conai(AB)-conai(B)-conai(A) //parte chiave della riga - csv.set(0, rdoc.get(RDOC_CODNUM)); - csv.set(1, TVariant(rdoc.get(RDOC_ANNO))); - csv.set(2, TVariant(rdoc.get(RDOC_NDOC))); + csv.set(0, rdoc->get(RDOC_CODNUM)); + csv.set(1, TVariant(rdoc->get(RDOC_ANNO))); + csv.set(2, TVariant(rdoc->get(RDOC_NDOC))); csv.set(3, TVariant(datadoc)); csv.set(4, TVariant(clifo.codice())); csv.set(5, TVariant(clifo_paiv)); - csv.set(6, TVariant(rdoc.get(RDOC_CODART))); - csv.set(7, TVariant(rdoc.get(RDOC_NRIGA))); + csv.set(6, TVariant(rdoc->get(RDOC_CODART))); + csv.set(7, TVariant(rdoc->get(RDOC_NRIGA))); //codici conai csv.set(8, TVariant(sottocat.left(2))); //codice materiale conai (es. carta, legno...) @@ -372,13 +368,15 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi csv.set(11, TVariant(umqta)); //quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato) - real qta_tot_conai = rdoc.get_real(RDOC_QTA); + real qta_tot_conai = rdoc->get_real(RDOC_QTA); + + qta_tot_conai *= rdoc->get_real(conai_peso_name(j)); if (is_nac) qta_tot_conai = -qta_tot_conai; csv.set(15, TVariant(qta_tot_conai)); //percentuale di esenzione conai al 100%? - const real rdoc_perc_conai = rdoc.get_real(conai_esenzione_name(conai_specie, LF_RIGHEDOC)); // ex QTAGG2 + const real rdoc_perc_conai = rdoc->get_real(conai_esenzione_name(conai_specie, LF_RIGHEDOC)); // ex QTAGG2 //quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato, ma avendolo gia' gia' rovesciato.. //..in precedenza non deve fare nulla!) @@ -448,17 +446,48 @@ bool TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione const int nrighe = doc.rows(); int n_riga_generata = 0; - for (int j = 1; j <= nrighe; j++) - { - const TRiga_documento& rdoc = doc[j]; - //c'è la riga generata con codart di tipo conai (sia automatica che manuale)? - if (rdoc.get(RDOC_CODART) == conai_codart && (rdoc.is_spese() || rdoc.is_generata())) + bool has_conai_row = false; + + FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc) + { + if (rdoc->is_generata() && rdoc->get(RDOC_GENTIPO) == "C") + has_conai_row = true; + //c'è la riga generata con codart di tipo conai (sia automatica che manuale)? + if (rdoc->get(RDOC_CODART) == conai_codart && (rdoc->is_spese() || rdoc->is_generata())) { n_riga_generata = j; break; } } + if (has_conai_row && n_riga_generata == 0) + { + char stato = doc.tipo().stati_iniziali_modifica()[0]; + + if (!isdigit(stato)) + stato = '1'; + doc.stato(stato); + { + FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc) + { + //c'è la riga generata con codart di tipo conai (sia automatica che manuale)? + if (rdoc->is_generata() && rdoc->get(RDOC_GENTIPO) == "C") + doc.destroy_row(j, true); + } + } + doc.update_conai(); + { + FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc) + { + //c'è la riga generata con codart di tipo conai (sia automatica che manuale)? + if (rdoc->get(RDOC_CODART) == conai_codart && (rdoc->is_spese() || rdoc->is_generata())) + { + n_riga_generata = j; + break; + } + } + } + } if (n_riga_generata > 0) scrivi_csv_doc_con_riga_generata(doc, n_riga_generata, csv, conai_specie, sottoclass, log); else