From 0cbbbc42c54ed3c30a785b2c0d3bcdb24538d946 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Mon, 27 Jan 2020 16:06:22 +0100 Subject: [PATCH] Patch level : 12.0 932 Files correlati : ve6.exe Commento : Corretta data inizializzazione oggetto per dichiarazione d'intento: problema a cavallo d'anno che non becca l'anno giusto --- src/ve/ve6200.cpp | 346 +++++++++++++++++++++++----------------------- 1 file changed, 173 insertions(+), 173 deletions(-) diff --git a/src/ve/ve6200.cpp b/src/ve/ve6200.cpp index fb88d69bb..83f6d5970 100755 --- a/src/ve/ve6200.cpp +++ b/src/ve/ve6200.cpp @@ -44,37 +44,37 @@ bool TFatturazione_bolle_app::process(TProgress_monitor& iw, TElaborazione & eld create_tipi_stati(tipi, stati); int clifo = din[0].clifor().codice(); - TDate aData(TODAY); - TLi_manager currentCli('C', clifo, aData); // Inizializzo l'oggetto per la gestione del plafond + TDate aData(data_elab); + TLi_manager currentCli('C', clifo, aData); // Inizializzo l'oggetto per la gestione del plafond real plafond, res_plafond, tot_fat; - if (currentCli.has_valid_plafond()) - { - plafond = currentCli.get_plafond(); - res_plafond = plafond - currentCli.elab_util(tipi, stati, aData); - for (int i = 0; i < din.items(); ++i) - tot_fat += din[i].totale_doc(); + if (currentCli.has_valid_plafond()) + { + plafond = currentCli.get_plafond(); + res_plafond = plafond - currentCli.elab_util(tipi, stati, aData); + for (int i = 0; i < din.items(); ++i) + tot_fat += din[i].totale_doc(); - TLog_report lerr; - if (tot_fat > res_plafond) - { - bool plur = din.items() > 1; - TString err; - err << "Errore durante la generazione del plafond:\n" << - (plur ? "I documenti da elaborare superano" : "Il documento da elaborare supera") << " il plafond per questo cliente.\n" - "Plafond rimanente: %s\n" << - (plur ? "Totale fatture: %s\n" : "Totale fattura: %s\n") << - (plur ? "Le fatture non sono state create." : "La fattura non e' stata creata."); - return error_box(err, res_plafond.string(), tot_fat.string()); - } + TLog_report lerr; + if (tot_fat > res_plafond) + { + bool plur = din.items() > 1; + TString err; + err << "Errore durante la generazione del plafond:\n" << + (plur ? "I documenti da elaborare superano" : "Il documento da elaborare supera") << " il plafond per questo cliente.\n" + "Plafond rimanente: %s\n" << + (plur ? "Totale fatture: %s\n" : "Totale fattura: %s\n") << + (plur ? "Le fatture non sono state create." : "La fattura non e' stata creata."); + return error_box(err, res_plafond.string(), tot_fat.string()); + } - // Una volta che di documenti sono elaborati ci scrivo sopra il valore del plafond - scrivi_plafond(dout, data_elab); + // Una volta che di documenti sono elaborati ci scrivo sopra il valore del plafond + scrivi_plafond(dout, data_elab); //if (!popola_plafond(dout, data_elab)) //{ // return error_box("Errore durante la generazione del plafond, le fatture non son state create"); //} - } + } int err = dout.write(); // Scrive documenti di output if (err == NOERR) @@ -144,7 +144,7 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m) if (!iw.add_status()) break; } - delete &eld; + delete &eld; } void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m) @@ -202,7 +202,7 @@ void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m) if (!iw.add_status()) break; } - delete e; + delete e; } @@ -249,7 +249,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m) iw.set_text(msg); // Messaggio sul cliente do_events(); // Attende visualizzazione - TLista_documenti list; + TLista_documenti list; list.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an); for (int i = list.items()-1; i >= 0; i--) @@ -274,7 +274,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m) } const int items = list.items(); for (int j = 0; j < items; j++) - din.add(list[j]); + din.add(list[j]); if (!iw.add_status()) break; @@ -285,7 +285,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m) din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC); process(iw, eld, din, data_elab); } - delete e; + delete e; } void TFatturazione_bolle_app::process_by_fatt(const TMask& m) @@ -400,166 +400,166 @@ void TFatturazione_bolle_app::process_by_fatt(const TMask& m) if (din.items() > 0 && !iw.is_cancelled()) process(iw, eld, din, data_elab); - delete e; + delete e; } // Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare bool TFatturazione_bolle_app::test_dicint(const TMask& m) { - const TDate data_elab = m.get_date(F_DATA_ELAB); - const int anno = data_elab.year(); + const TDate data_elab = m.get_date(F_DATA_ELAB); + const int anno = data_elab.year(); - const long dc = m.get_long(F_CODICE_CLIFO_DA); - const long ac = m.get_long(F_CODICE_CLIFO_A); - const int da = m.get_int(F_CODICE_AGENTE_DA); - const int aa = m.get_int(F_CODICE_AGENTE_A); - const TString16 dz(m.get(F_CODICE_ZONA_DA)); - const TString16 az(m.get(F_CODICE_ZONA_A)); + const long dc = m.get_long(F_CODICE_CLIFO_DA); + const long ac = m.get_long(F_CODICE_CLIFO_A); + const int da = m.get_int(F_CODICE_AGENTE_DA); + const int aa = m.get_int(F_CODICE_AGENTE_A); + const TString16 dz(m.get(F_CODICE_ZONA_DA)); + const TString16 az(m.get(F_CODICE_ZONA_A)); - const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA); - TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare - const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab; - const TString& codnum = m.get(F_CODICE_NUMERAZIONE); - const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA); - const long an = m.get_long(F_NUMERO_DOCUMENTO_A); + const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA); + TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare + const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab; + const TString& codnum = m.get(F_CODICE_NUMERAZIONE); + const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA); + const long an = m.get_long(F_NUMERO_DOCUMENTO_A); - TElaborazione& eld = *elab(m.get(F_CODICE_ELAB)); - TToken_string tipidoc(24), statidoc(10); - eld.tipi_stati_iniziali(tipidoc, statidoc); + TElaborazione& eld = *elab(m.get(F_CODICE_ELAB)); + TToken_string tipidoc(24), statidoc(10); + eld.tipi_stati_iniziali(tipidoc, statidoc); - TTipo_documento t(eld.tipo_iniziale(0)); - char tipocf(t.tipocf()); - TLista_cf clienti(tipocf); + TTipo_documento t(eld.tipo_iniziale(0)); + char tipocf(t.tipocf()); + TLista_cf clienti(tipocf); - const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az); + const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az); - TString msg(80); - + TString msg(80); + - TLog_report lerr(TR("Errori controllo plafond e CONAI")); - lerr.log(0,"\n"); - bool err = false; - for (int c = 0; c < tot_cli; c++) - { - const long codcli = clienti[c]; // Codice cliente in esame + TLog_report lerr(TR("Errori controllo plafond e CONAI")); + lerr.log(0,"\n"); + bool err = false; + for (int c = 0; c < tot_cli; c++) + { + const long codcli = clienti[c]; // Codice cliente in esame - TLi_manager currentCli(tipocf, codcli, ad); // Inizializzo l'oggetto per la gestione del plafond + TLi_manager currentCli(tipocf, codcli, ad); // Inizializzo l'oggetto per la gestione del plafond - if (currentCli.has_valid_plafond()) - { - TLista_documenti din; // Legge tutti i documenti di input - din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an); - if (din.items() > 0) - { - err |= currentCli.test_plafond(din, lerr); - } - } - } + if (currentCli.has_valid_plafond()) + { + TLista_documenti din; // Legge tutti i documenti di input + din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an); + if (din.items() > 0) + { + err |= currentCli.test_plafond(din, lerr); + } + } + } - delete &eld; - if(err) - { - lerr.print_or_preview(); - return false; - } - return true; + delete &eld; + if(err) + { + lerr.print_or_preview(); + return false; + } + return true; } // Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare bool TFatturazione_bolle_app::test_CONAI(const TMask& m) { - const TDate data_elab = m.get_date(F_DATA_ELAB); - const int anno = data_elab.year(); + const TDate data_elab = m.get_date(F_DATA_ELAB); + const int anno = data_elab.year(); - const long dc = m.get_long(F_CODICE_CLIFO_DA); - const long ac = m.get_long(F_CODICE_CLIFO_A); - const int da = m.get_int(F_CODICE_AGENTE_DA); - const int aa = m.get_int(F_CODICE_AGENTE_A); - const TString16 dz(m.get(F_CODICE_ZONA_DA)); - const TString16 az(m.get(F_CODICE_ZONA_A)); + const long dc = m.get_long(F_CODICE_CLIFO_DA); + const long ac = m.get_long(F_CODICE_CLIFO_A); + const int da = m.get_int(F_CODICE_AGENTE_DA); + const int aa = m.get_int(F_CODICE_AGENTE_A); + const TString16 dz(m.get(F_CODICE_ZONA_DA)); + const TString16 az(m.get(F_CODICE_ZONA_A)); - const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA); - TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare - const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab; - const TString& codnum = m.get(F_CODICE_NUMERAZIONE); - const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA); - const long an = m.get_long(F_NUMERO_DOCUMENTO_A); + const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA); + TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare + const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab; + const TString& codnum = m.get(F_CODICE_NUMERAZIONE); + const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA); + const long an = m.get_long(F_NUMERO_DOCUMENTO_A); - TElaborazione& eld = *elab(m.get(F_CODICE_ELAB)); - TToken_string tipidoc(24), statidoc(10); - eld.tipi_stati_iniziali(tipidoc, statidoc); + TElaborazione& eld = *elab(m.get(F_CODICE_ELAB)); + TToken_string tipidoc(24), statidoc(10); + eld.tipi_stati_iniziali(tipidoc, statidoc); - TTipo_documento t(eld.tipo_iniziale(0)); - char tipocf(t.tipocf()); - TLista_cf clienti(tipocf); + TTipo_documento t(eld.tipo_iniziale(0)); + char tipocf(t.tipocf()); + TLista_cf clienti(tipocf); - const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az); - TString msg(80); + const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az); + TString msg(80); - TLog_report lerr(TR("Errori controllo CONAI")); - lerr.log(0, "\n"); - bool err = false; - for (int c = 0; c < tot_cli; c++) - { - const long codcli = clienti[c]; // Codice cliente in esame - TConai conai; + TLog_report lerr(TR("Errori controllo CONAI")); + lerr.log(0, "\n"); + bool err = false; + for (int c = 0; c < tot_cli; c++) + { + const long codcli = clienti[c]; // Codice cliente in esame + TConai conai; - { - TLista_documenti din; // Legge tutti i documenti di input - - din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an); - - const int nbolle = din.items(); - - for (int b = 0; b < nbolle; b++) - { - TDocumento & bolla = din[b]; - const int nrows = bolla.physical_rows(); + { + TLista_documenti din; // Legge tutti i documenti di input + + din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an); + + const int nbolle = din.items(); + + for (int b = 0; b < nbolle; b++) + { + TDocumento & bolla = din[b]; + const int nrows = bolla.physical_rows(); - for (int r = 1; r <= nrows; r++) - { - TRiga_documento & row = bolla[r]; + for (int r = 1; r <= nrows; r++) + { + TRiga_documento & row = bolla[r]; - msg.format("Cliente %ld Bolla %ld Riga %d - ", - bolla.get_long(DOC_CODCF), - bolla.get_long(DOC_NDOC), - row.get_int(RDOC_NRIGA)); - for (int i = 1; i <= FR_CMAX; i++) - { - const TString8 sottocat = row.get(conai_sottocat_name(i)); + msg.format("Cliente %ld Bolla %ld Riga %d - ", + bolla.get_long(DOC_CODCF), + bolla.get_long(DOC_NDOC), + row.get_int(RDOC_NRIGA)); + for (int i = 1; i <= FR_CMAX; i++) + { + const TString8 sottocat = row.get(conai_sottocat_name(i)); - if (sottocat.full()) - { - if (!conai.exist_sottocat(sottocat)) - { - err = true; - TString msgerr(msg); - msgerr << format("Sottocategoria CONAI %s assente", (const char *)sottocat); - lerr.log(2, msgerr); - continue; - } + if (sottocat.full()) + { + if (!conai.exist_sottocat(sottocat)) + { + err = true; + TString msgerr(msg); + msgerr << format("Sottocategoria CONAI %s assente", (const char *)sottocat); + lerr.log(2, msgerr); + continue; + } - TSpesa_prest sp = conai.get_spesa(sottocat); + TSpesa_prest sp = conai.get_spesa(sottocat); - if (!sp.valid()) - { - err = true; - TString msgerr(msg); - msgerr << sp.err_msg(); - lerr.log(2, msgerr); - } - } - } - } - } - } - } - delete &eld; - if (err) - { - lerr.print_or_preview(); - return false; - } - return true; + if (!sp.valid()) + { + err = true; + TString msgerr(msg); + msgerr << sp.err_msg(); + lerr.log(2, msgerr); + } + } + } + } + } + } + } + delete &eld; + if (err) + { + lerr.print_or_preview(); + return false; + } + return true; } bool TFatturazione_bolle_app::clifo_da_fatt(const TMask& m) const @@ -582,32 +582,32 @@ void TFatturazione_bolle_app::main_loop() while (m.run() == K_ENTER) { - if(has_module(LIAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && !test_dicint(m)) // Controllo se ho documenti al di fuori del plafond - { - continue; - } - if (!test_CONAI(m)) - continue; - const TString& select_from = m.get(F_SELEZIONE); + if(has_module(LIAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && !test_dicint(m)) // Controllo se ho documenti al di fuori del plafond + { + continue; + } + if (!test_CONAI(m)) + continue; + const TString& select_from = m.get(F_SELEZIONE); if (select_from != _default_selection) ini_set_string(CONFIG_DITTA, "ve", "FATBOLSEL", _default_selection = select_from); - + const TString& orderby = m.get(F_ORDINAMENTO); - if (orderby == "R") + if (orderby == "R") process_by_ragsoc(m); - else - { + else + { if (clifo_da_fatt(m)) { process_by_fatt(m); } else { - if (select_from == "D") - process_by_doc(m); - else - process_by_cli(m); - } + if (select_from == "D") + process_by_doc(m); + else + process_by_cli(m); + } } } }