From 6c5012c9abf418ed20d7c4019af9a1d06ce45e69 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Thu, 20 Aug 2020 12:37:35 +0200 Subject: [PATCH] Patch level : 12.0 no-patch Files correlati : ps6362.exe (ps Major) Commento : - Importazione articoli con ricerca codice interno major. - Esportazione bolle con condice articolo COD_PMS (flexform). --- src/ps/flexform_xml.cpp | 19 ++++++++++++++++--- src/ps/flexform_xml.h | 2 ++ src/ps/ps6362.cpp | 2 +- src/ps/ps6362100.cpp | 32 +++++++++++++++++--------------- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/ps/flexform_xml.cpp b/src/ps/flexform_xml.cpp index 20097fbc5..46bfb75b8 100644 --- a/src/ps/flexform_xml.cpp +++ b/src/ps/flexform_xml.cpp @@ -6,6 +6,7 @@ #include "date.h" #include "progind.h" #include "velib.h" +#include "sqlset.h" #define CHECK_CONDXML_OR_RETURNFALSE(cond, msg) { \ TString str; \ @@ -275,6 +276,16 @@ bool TFlexform_xml_ordini::convert() const return false; } +TString TFlexform_xml_ordini::flexart2codart(const TString& cod_art_flexform) +{ + TSQL_recordset sql(""); + TString query; query << "SELECT * FROM ANAMAG WHERE COD_PMS = '" << cod_art_flexform << "'"; + sql.set(query); + if(sql.items() == 1) + return sql.get(sql.find_column("CODART")).as_string(); + return ""; +} + bool TFlexform_xml_ordini::create_doc() { const shared_ptr esa_import = _importer._imported[1]; @@ -319,14 +330,16 @@ bool TFlexform_xml_ordini::create_doc() const TString& qta_merce = datarow_r.get_val_child("qta_merce"); const TString& dat_evas_riga = datarow_r.get_val_child("dat_evas_riga"); const TString& des_campo_libero6 = datarow_r.get_val_child("des_campo_libero6"); + + TString cod_art_major = flexart2codart(cod_art); TRiga_documento& d_row = doc.new_row(ind_tiporiga == "D" ? "05" : "01"); if (ind_tiporiga != "D") - d_row.put(RDOC_CODART, cod_art); // todo: codice articolo da mandarlo a cercare nell'altro campo + d_row.put(RDOC_CODART, !cod_art_major.empty() ? cod_art_major : cod_art); d_row.put(RDOC_DESCR, des_articolo_riga); - d_row.put(RDOC_QTA, qta_merce); + d_row.put(RDOC_QTA, qta_merce); d_row.put("DATA_EVASIONE_RIGA", dat_evas_riga); // RG1 -> DATA_EVASIONE_RIGA - d_row.put("CODFLEX", des_campo_libero6); // RG1 -> CODFLEX + d_row.put("CODFLEX", des_campo_libero6); // RG1 -> CODFLEX } bool ok = doc.write() == NOERR; diff --git a/src/ps/flexform_xml.h b/src/ps/flexform_xml.h index 4986abc4c..e3355159c 100644 --- a/src/ps/flexform_xml.h +++ b/src/ps/flexform_xml.h @@ -209,6 +209,8 @@ public: bool convert() const; bool create_doc(); + static TString flexart2codart(const TString& string); + TFlexform_xml_ordini(const char* xml_name = "", const char* codnum = "", int codcli_flex = 12); }; diff --git a/src/ps/ps6362.cpp b/src/ps/ps6362.cpp index 6521ea75b..b1c8dfdf5 100644 --- a/src/ps/ps6362.cpp +++ b/src/ps/ps6362.cpp @@ -9,7 +9,7 @@ int main(int argc, char** argv) switch (r) { default: - case 0: rt = ps6362100(argc, argv); break; // Esportrazione Major-Flexform + case 0: rt = ps6362100(argc, argv); break; // Import/Export Major-Flexform } return rt; } \ No newline at end of file diff --git a/src/ps/ps6362100.cpp b/src/ps/ps6362100.cpp index 44ed28b97..0681aa922 100644 --- a/src/ps/ps6362100.cpp +++ b/src/ps/ps6362100.cpp @@ -151,7 +151,7 @@ void TMajor_export_mask::load_all() // Main Program /////////////////////////////////////////////////////////// -class TMajor_export_app : public TSkeleton_application +class TMajor_flexform_boll_app : public TSkeleton_application { TString _fld_dest; @@ -163,16 +163,16 @@ class TMajor_export_app : public TSkeleton_application void main_loop() override; public: - TMajor_export_app() = default; + TMajor_flexform_boll_app() = default; }; -bool TMajor_export_app::create() +bool TMajor_flexform_boll_app::create() { open_files(LF_DOC, LF_RIGHEDOC); return TSkeleton_application::create(); } -TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_fld, const int from, const int to, bool ddt) +TFilename TMajor_flexform_boll_app::check_name_file(const TString& dir, const bool sub_fld, const int from, const int to, bool ddt) { TString cartella = dir; cartella << "/"; if (sub_fld) @@ -206,7 +206,7 @@ TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_ return xml; } -TString TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_doc) +TString TMajor_flexform_boll_app::get_riferimento_flexform(const TSQL_recordset& righe_doc) { const TString& rg1 = righe_doc.get(3).as_string(); const TToken_string t(rg1, char(0xB6)); // Simbolo paragrafo ¶ @@ -227,7 +227,7 @@ TString TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_ return ""; } -bool TMajor_export_app::export_ddt(TMask& msk) +bool TMajor_flexform_boll_app::export_ddt(TMask& msk) { const TString& dir = msk.get(F_FLDDEST); const bool sub_fld = msk.get_bool(F_SUBFLD); @@ -257,21 +257,23 @@ bool TMajor_export_app::export_ddt(TMask& msk) xml_ddts.set_testata(day.string(), n_doc); // Righe documento TString query_righe; - query_righe << "SELECT CODART, DESCR, QTA, RG1, DESCLUNGA, DESCEST\n" - "FROM rdoc\nWHERE CODNUM = '" << codnum << "' AND ANNO = " << year << " AND PROVV = 'D' AND NDOC=" << n_doc; + query_righe << "SELECT rdoc.CODART, rdoc.DESCR, rdoc.QTA, rdoc.RG1, rdoc.DESCLUNGA, rdoc.DESCEST, COD_PMS\n" + "FROM rdoc\n" + "JOIN anamag ON rdoc.CODART = anamag.CODART\n" + "WHERE CODNUM = '" << codnum << "' AND ANNO = " << year << " AND PROVV = 'D' AND NDOC=" << n_doc; TSQL_recordset righe_doc(query_righe); for (bool ok_r = righe_doc.move_first(); ok_r; ok_r = righe_doc.move_next()) { shared_ptr riga = xml_ddts.new_row(); - const TString& cod_art = righe_doc.get(0).as_string(); // todo: usa il cod.art. di flexform non quello di campo (vedi terza colonna nell'anteprima) + const TString& cod_art_flexform = righe_doc.get(6).as_string(); TString descr = righe_doc.get(1).as_string(); const TString& qta = righe_doc.get(2).as_string(); const TString& desccampolibero6 = get_riferimento_flexform(righe_doc); // get(3) RG1 if (righe_doc.get(4).as_bool()) descr << righe_doc.get(5).as_string(); - riga->set_datarow("C", cod_art, descr, qta, desccampolibero6); + riga->set_datarow("C", cod_art_flexform, descr, qta, desccampolibero6); xml_ddts.add_row(riga); } } @@ -281,14 +283,14 @@ bool TMajor_export_app::export_ddt(TMask& msk) return ok; } -bool TMajor_export_app::import_ordini(TMask& msk) +bool TMajor_flexform_boll_app::import_ordini(TMask& msk) { bool ok = false; const TString& dir_in = msk.get(F_FLDSOURCE); const TString& cod_cli = msk.get(F_CODCF); const TString& tiponumord = msk.get(F_NUMORD); - TFilename path(dir_in); + TFilename path(dir_in); TString_array flist; path.add("*.xml"); list_files(path, flist); @@ -323,7 +325,7 @@ bool TMajor_export_app::import_ordini(TMask& msk) return ok; } -void TMajor_export_app::main_loop() +void TMajor_flexform_boll_app::main_loop() { TMajor_export_mask msk; while (msk.run() == K_ENTER) @@ -351,7 +353,7 @@ void TMajor_export_app::main_loop() int ps6362100(const int argc, char* argv[]) { - TMajor_export_app pe; - pe.run(argc, argv, TR("Esportazione Major-Flexform")); + TMajor_flexform_boll_app pe; + pe.run(argc, argv, TR("Import/Export Major-Flexform")); return 0; }