From c25b6ab330440ed358a55b414af3f7ff60aa2110 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Fri, 15 Oct 2021 07:27:26 +0200 Subject: [PATCH] Patch level : 12.0 1090 Files correlati : bs0.exe Commento : aggiunto un meccanismo di trace nell'importazione bee store Interno: Si attiva mettendo nel paragrafo Main di studio.ini TRACE = X --- src/bs/bs0500.cpp | 72 +++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/src/bs/bs0500.cpp b/src/bs/bs0500.cpp index ae1b0bbf8..0e1be973a 100644 --- a/src/bs/bs0500.cpp +++ b/src/bs/bs0500.cpp @@ -400,6 +400,7 @@ void TImporta_Beestore::import_table(int logicnum, const char* table, TAssoc_arr odbc.connect(_dsn, _usr, _psw); const TRecnotype n = odbc.items(); + TRACE("Importazione file %s", logicnum); if (n > 0) { @@ -419,7 +420,8 @@ void TImporta_Beestore::import_table(const char * tab, const char* table, TAssoc const TRecnotype n = odbc.items(); - if (n > 0) + TRACE("Importazione tabella %s", tab); + if (n > 0) { if (_direct_write) direct_table(tab, odbc, pairs); @@ -437,6 +439,7 @@ void TImporta_Beestore::direct_table(int logicnum, TODBC_recordset & odbc, TAsso str.format(TR("Importazione %ld record dalla tabella %s"), odbc.items(), odbc.table_name()); _log->log(0, ""); _log->log(0, str); + TRACE(str); TProgress_monitor pi(odbc.items(), str); @@ -512,6 +515,7 @@ void TImporta_Beestore::direct_table(const char * tab, TODBC_recordset & odbc, T str.format(TR("Importazione %ld record dalla tabella %s"), odbc.items(), odbc.table_name()); _log->log(0, ""); _log->log(0, str); + TRACE(str); TProgress_monitor pi(odbc.items(), str); @@ -587,9 +591,9 @@ void TImporta_Beestore::transaction_table(int logicnum, TODBC_recordset & odbc, str.format(TR("Importazione %ld record dalla tabella %s"), odbc.items(), odbc.table_name()); _log->log(0, ""); _log->log(0, str); + TRACE(str); TProgress_monitor pi(odbc.items(), str); - TArray transactions; for (bool ok = odbc.move_first(); pi.add_status() && ok; ok = odbc.move_next()) @@ -643,7 +647,7 @@ void TImporta_Beestore::transaction_table(int logicnum, TODBC_recordset & odbc, transactions.add(t); } } - execute_transactions(transactions, *_log, _interactive); + execute_transactions(transactions, *_log, _interactive, str); } } @@ -657,6 +661,7 @@ void TImporta_Beestore::transaction_table(const char * table, TODBC_recordset & str.format(TR("Importazione %ld record dalla tabella %s"), odbc.items(), odbc.table_name()); _log->log(0, ""); _log->log(0, str); + TRACE(str); TProgress_monitor pi(odbc.items(), str); @@ -701,7 +706,7 @@ void TImporta_Beestore::transaction_table(const char * table, TODBC_recordset & transactions.add(t); } } - execute_transactions(transactions, *_log, _interactive); + execute_transactions(transactions, *_log, _interactive, str); } } @@ -711,7 +716,7 @@ void TImporta_Beestore::import_ums() fields.add("CodUntMis", "CODTAB"); fields.add("DSUntMis", "S0"); - + TRACE("Unità di misura"); import_table("%UMS", "tieUntMisura", fields); } @@ -723,7 +728,7 @@ void TImporta_Beestore::import_iva() fields.add("CodIvaSt", "CODTAB"); fields.add("DSIva", "S0"); fields.add("Aliquota", "R0"); - + TRACE("IVA"); import_table("%IVA", "tieIva", fields); } @@ -733,7 +738,7 @@ void TImporta_Beestore::import_lines() fields.add("CodLinea", "CODTAB"); fields.add("DSLinea", "S0"); - + TRACE("Linee"); import_table("GMC", "tieLineeArt", fields); } @@ -744,7 +749,7 @@ void TImporta_Beestore::import_catmer() fields.add("CodCategoriaMerceologica", "CODTAB"); fields.add("DSCategoriaMerceologica", "S0"); // fields.add("CodTipoEtichetta", ""); a che serviva ? - + TRACE("Categorie merceologiche"); import_table("GMC", "tieCategorieMerceologiche", fields); } @@ -759,8 +764,8 @@ void TImporta_Beestore::import_anamag() fields.add("CodCategMerceologica", ANAMAG_GRMERC); fields.add("Bloccato", ANAMAG_SOSPESO); fields.add("codDogana", ANAMAG_CLASSDOG); - - if (_direct_write) + TRACE("Anagrafica di magazzino"); + if (_direct_write) { import_table(LF_ANAMAG, "tieArticoli", fields); fields.destroy(); @@ -1037,6 +1042,7 @@ bool TImporta_Beestore::split_phone(const TRecordset& odbc, const char* number, } return pn.full(); } + void TImporta_Beestore::direct_clifo(char tipocf) { TString str(255); @@ -1064,6 +1070,7 @@ void TImporta_Beestore::direct_clifo(char tipocf) clifo.zero(); clifo.put(CLI_TIPOCF, tipocf); clifo.put(CLI_CODCF, codcf); + TRACE("%s %ld", tipocf == 'C' ? "Clienti" : "Fornitore", codcf); const int err = clifo.read(); const bool elab = (err == NOERR && (_tipo_imp != imp_aggiungi)) || @@ -1169,6 +1176,7 @@ void TImporta_Beestore::transaction_clifo(char tipocf) // fare rec.put(CLI_TIPOCF, tipocf); if (codcf > 0L) rec.put(CLI_CODCF, codcf); + TRACE("%s %ld", tipocf == 'C' ? "Clienti" : "Fornitore", codcf); bool found = clifo.read() == NOERR; const bool elab = (found && (_tipo_imp != imp_aggiungi)) || @@ -1224,13 +1232,14 @@ void TImporta_Beestore::transaction_clifo(char tipocf) // fare t.set(CLI_DATAAGG, dataagg, -1, LF_CLIFO); transactions.add(t); } - execute_transactions(transactions, *_log, _interactive); + execute_transactions(transactions, *_log, _interactive, str); } } void TImporta_Beestore::import_clifo(int cfmask, const TDate& dal, const TDate& al) { - if (_direct_write) + TRACE("Clienti/Fonitori"); + if (_direct_write) { if (cfmask & 1) direct_clifo('C'); if (cfmask & 2) direct_clifo('F'); @@ -1250,6 +1259,7 @@ void TImporta_Beestore::import_val() fields.add("CodValuta", "CODTAB"); fields.add("DSValuta2", "S0"); fields.add("Simbolo", "CODTAB"); + TRACE("Valute"); import_table("%VAL", "tieValute", fields); } @@ -1335,6 +1345,7 @@ void TImporta_Beestore::direct_doc(TODBC_recordset & docs, const char * table, c int eccezioni_errori = 0; TString codpk = ""; bool elab = false; + long numdoc; for (bool ok = docs.move_first(); ok; ok = docs.move_next()) { @@ -1386,13 +1397,13 @@ void TImporta_Beestore::direct_doc(TODBC_recordset & docs, const char * table, c TTipo_documento tipo(tipodoc); const TString8 codcaus = tipo.caus_mov(); TString str = docs.get_string("NumDoc"); - long numdoc = ndoc; - + + numdoc = ndoc; while (str[0] > 'A') str.ltrim(1); if (str.full()) numdoc = atol(str); - + TRACE("%s n. %ld", table, numdoc); doc = new TDocumento('D', datadoc.year(), get_num(docs.get_string("SuffNum"), tipotestata), numdoc); doc->destroy_rows(); doc->put(DOC_DATADOC, datadoc); @@ -1446,6 +1457,8 @@ void TImporta_Beestore::direct_doc(TODBC_recordset & docs, const char * table, c const int tipoart = docs.get_int("TipoArticolo"); TRectype& rdoc = doc->new_row("01"); TString80 codart = docs.get_string("IDArticolo"); + TRACE("%s n. %ld riga %d", table, numdoc, rdoc.get_int(RDOC_NRIGA)); + if (codart.blank()) codart = docs.get_string("CodArticolo"); if (codart == BS_FREEROW) @@ -1579,6 +1592,7 @@ void TImporta_Beestore::transaction_doc(TODBC_recordset & docs, const char * tab TString wrk = docs.get_string("CodCliente"); TString8 tipodoc = tipotestata != 14 ? docs.get_string("TipoDocCE") : get_num("", 14); TString cod_pk = docs.get_string("Cod_PK"); + long numdoc; if (tipodoc.full()) { @@ -1599,7 +1613,8 @@ void TImporta_Beestore::transaction_doc(TODBC_recordset & docs, const char * tab row = 0; TString str = docs.get_string("NumDoc"); - long numdoc = ndoc; + + numdoc = ndoc; // TString origine_dc = docs.get_string("Origine"); TTipo_documento tipo(tipodoc); const TString8 codcaus = tipo.caus_mov(); @@ -1610,6 +1625,7 @@ void TImporta_Beestore::transaction_doc(TODBC_recordset & docs, const char * tab str.ltrim(1); if (str.full()) numdoc = atol(str); + TRACE("%s n. %ld", table, numdoc); const TString16 numerazione = get_num(docs.get_string("SuffNum"), tipotestata); @@ -1670,6 +1686,7 @@ void TImporta_Beestore::transaction_doc(TODBC_recordset & docs, const char * tab if (codart == BS_FREEROW) codart = ""; t.set(RDOC_TIPORIGA, "01", -1, LF_RIGHEDOC, ++row); + TRACE("%s n. %ld riga %d", table, numdoc, row); if (codart.full()) { t.set(RDOC_CODART, codart, -1, LF_RIGHEDOC, row); @@ -1767,8 +1784,10 @@ void TImporta_Beestore::transaction_doc(TODBC_recordset & docs, const char * tab if (elab && last > 0 && row > 0) transactions.add(t); + TRACE("Salvataggio articoli"); execute_transactions(art_transactions, *_log, _interactive, "Importazione articoli"); - execute_transactions(transactions, *_log, _interactive, "Importazione documenti"); + TRACE("Salvataggio %s", table); + execute_transactions(transactions, *_log, _interactive, msg); } void TImporta_Beestore::import_doc(const TDate& dal, const TDate& al, int tipotestata, const char* unitadefault, bool importadoc) @@ -1845,6 +1864,7 @@ void TImporta_Beestore::import_doc(const TDate& dal, const TDate& al, int tipote str = TR("Documenti"); break; }; + TRACE(str); if (_direct_write) direct_doc(docs, str, tipotestata, unitadefault, importadoc); else @@ -1899,16 +1919,18 @@ bool TImporta_Beestore::create() TString query; query << "SELECT * FROM tieValute;";//"ODBC(" << _dsn << ")\nSELECT * FROM tieValute;"; TODBC_recordset recset(query); - recset.connect(_dsn, _usr, _psw); // Dovrebbe connettersi anche con solo _dsn valorizzato - recset.move_first(); - if (_sqlog.full() && _sqlog.is_relative_path()) + if (recset.connect(_dsn, _usr, _psw)) // Dovrebbe connettersi anche con solo _dsn valorizzato { - TFilename n; n.tempdir(); - n.add(_sqlog.name()); - _sqlog = n; + recset.move_first(); + if (_sqlog.full() && _sqlog.is_relative_path()) + { + TFilename n; n.tempdir(); + n.add(_sqlog.name()); + _sqlog = n; + } + recset.set_log_file(_sqlog); + return TSkeleton_application::create(); } - recset.set_log_file(_sqlog); - return TSkeleton_application::create(); } return error_box(FR("Impossibile connettersi al DSN '%s'"), (const char*)_dsn); }