From f29d215492ba54de8001a87d9f354550fb7f6a95 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Thu, 21 Nov 2019 20:27:16 +0100 Subject: [PATCH] Patch level : 12.0 902 Files correlati : bacnv.exe ve0.exe vearea.men vetbcsc.msk Commento : Conversione e tabella di conversione categorie CONAI --- src/ba/bacnv.cpp | 109 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 8 deletions(-) diff --git a/src/ba/bacnv.cpp b/src/ba/bacnv.cpp index 3eae1e1f9..3d4ac73c4 100755 --- a/src/ba/bacnv.cpp +++ b/src/ba/bacnv.cpp @@ -22,6 +22,8 @@ #include "..\cg\cglib02.h" #include "..\ve\velib.h" #include "..\ci\rilore.h" +#include "..\mg\mglib.h" +#include /* /////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -202,8 +204,9 @@ public: void convert_conai_rdoc(); void convert_conai_righe(); //roba per il file della rilevazione ore - void convert_rilore(); - + void convert_rilore(); + void convert_CONAI(); + TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {} }; @@ -372,10 +375,13 @@ bool TConversione_archivi::menu(MENU_TAG) case 24: convert_conai_righe(); break; - case 25: - convert_rilore(); - break; - default: + case 25: + convert_rilore(); + break; + case 26: + convert_CONAI(); + break; + default: break; } return false; @@ -2232,12 +2238,12 @@ void TConversione_archivi::convert_conai_anamag() //prende i pesi conai su ciascuna riga FOR_EACH_CONAI_CLASS(cc) { - const char* peso_name = conai_peso_name(cc, LF_ANAMAG); + const char* peso_name = conai_peso_name(cc); const real peso = anamag.get(peso_name).as_real(); //se peso conai > 0, deve scrivere il codice conai nel campo CONAISC if (peso > ZERO) { - const char* sottocat = conai_sottocat_name(cc, LF_ANAMAG); + const char* sottocat = conai_sottocat_name(cc); TFieldref fr(sottocat, LF_ANAMAG); fr.write(conai_default_vals.row(cc), anamag.cursor()->curr()); } @@ -2380,6 +2386,93 @@ void TConversione_archivi::convert_rilore() } } +void TConversione_archivi::convert_CONAI() +{ + TConfig ditta(CONFIG_DITTA, "ve"); + TString_array conai_default_vals; + const char* conai_default_names[CONAI_CLASSES] = { "CONAI_DEFAULT_ACC", "CONAI_DEFAULT_ALL", "CONAI_DEFAULT_CAR", + "CONAI_DEFAULT_LEG", "CONAI_DEFAULT_PLA", "CONAI_DEFAULT_VET" }; + const char* conai_default_values[CONAI_CLASSES] = { "AC99", "AL99", "CA40", "LE99", "PL12", "VE99" }; + + FOR_EACH_CONAI_CLASS(cc) + { + const TString& conai_cat = ditta.get(conai_default_names[cc], NULL, -1, conai_default_values[cc]); + conai_default_vals.add(conai_cat); + } + + //prende solo le righe che hanno un peso conai di carta e/o plastica + TISAM_recordset anamag("USE ANAMAG\n"); + const long anamag_items = anamag.items(); + + { + TProgind pic(anamag_items, "Controllo conversione anagrafica articoli...", false); + TLog_report log(TR("Errori conversione CONAI")); + int err = false; + + log.log(0, "\n"); + for (bool ok = anamag.move_first(); ok; ok = anamag.move_next()) + { + if (!pic.addstatus(1)) + break; + + const TString art(anamag.get(ANAMAG_CODART).as_string()); + TArticolo_conai artc(art); + + for (int i = 0; i < FR_CMAX; i++) + { + TString sottocat = artc.get_scat(i); + + if (sottocat.full()) + if (cache().get("&VECSC", sottocat).empty()) + { + err = true; + log.log(2, format("Articolo : %s - sottocategoria %s assente", (const char *)art, (const char *)sottocat)); + } + } + } + if (err) + { + log.print_or_preview(); + return; + } + } + + TProgind pi(anamag_items, "Conversione anagrafica articoli...", false); + TLog_report log(TR("Conversione CONAI")); + + for (bool ok = anamag.move_first(); ok; ok = anamag.move_next()) + { + if (!pi.addstatus(1)) + break; + + TString art(anamag.get(ANAMAG_CODART).as_string()); + TArticolo_conai artc(art); + TRecord_array conart(art, LF_CONART); + TRectype conrec(LF_CONART); + int r = 1; + + conart.destroy_rows(); + for (int i = 0; i < FR_CMAX; i++) + { + const TString sottocat = artc.get_scat(i); + const TString new_sottocat = cache().get("&VECSC", sottocat, "S1"); + + if (new_sottocat.full()) + { + conrec.zero(); + conrec.put(CONART_CODART, art); + conrec.put(CONART_NRIGA, r++); + conrec.put(CONART_CATEGORIA, new_sottocat.left(2)); + conrec.put(CONART_SOTTOCAT, new_sottocat.mid(2)); + conrec.put(CONART_PESO, artc.get_peso(i)); + conart.add_row(conrec); + log.log(0, format("Articolo : %s - da sottocategoria %s a %s peso %s", (const char *)art, (const char *)sottocat, (const char *)new_sottocat, (const char *)artc.get_peso(i).stringa())); + } + } + conart.write(true); + } + log.print_or_preview(); +} /////////////////////////////////////////////////////////// // Programma di conversione archivi speciale