//#include #include // TSkeleton_application #include // TAutomask #include #include #include #include // TProgress_monitor #include #include // TTable #include // TSQL_recordset #include // list_files #include #include "../mg/anamag.h" #include "../ve/velib.h" #include "ps6362.h" #include "ps6362100a.h" #include "flexform_xml.h" /////////////////////////////////////////////////////////// // Main Mask /////////////////////////////////////////////////////////// class TMajor_export_mask:public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; public: void load_all(); TMajor_export_mask() : TAutomask("ps6362100a") {} // ~TMajor_export_mask() {} }; bool TMajor_export_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch(o.dlg()) { default: break; } return true; } void TMajor_export_mask::load_all() { load(); TFilename dir = get(F_FLDDEST); if (dir.blank()) { dir = get_system_dir(desktop_dir); set(F_FLDDEST, dir); set(F_SUBFLD, true); } set(F_ANNO_ELAB, today.year()); dir = get(F_FLDSOURCE); if (dir.blank()) { dir = get_system_dir(desktop_dir); dir.add("upload"); set(F_FLDSOURCE, dir); } if(get(F_NUMDDT).blank()) set(F_NUMDDT, "B01"); if (get(F_NUMORD).blank()) set(F_NUMORD, "ORC"); } /////////////////////////////////////////////////////////// // Main Program /////////////////////////////////////////////////////////// class TMajor_flexform_boll_app:public TSkeleton_application { TString _fld_dest; bool create(); bool check_name_file(const TString & dir, TFilename & xml, bool sub_fld, int from, int to, bool ddt = true); bool export_ddt(TMask& msk); bool import_ordini(TMask& msk); void main_loop(); public: TMajor_flexform_boll_app() {} }; bool TMajor_flexform_boll_app::create() { open_files(LF_DOC, LF_RIGHEDOC, LF_CLIFO, 0); return TSkeleton_application::create(); } bool TMajor_flexform_boll_app::check_name_file(const TString & dir, TFilename & xml, const bool sub_fld, const int from, const int to, bool ddt) { TString cartella = dir; cartella << "/"; TString da, a; TString name; if (sub_fld) cartella << "CAMPO_" << TDate(TODAY).date2ansi() << "/"; da.format("%07d", from); a.format("%07d", to); name << (ddt ? "ddt" : "ord") << TDate(TODAY).year() << da << a; xml = cartella; if (!xml.exist()) make_dir(xml); xml << name << ".xml"; TString msg(TR("Il file ")); msg << xml << TR(" esiste.Devo rigenerarlo ? "); return !xml.exist() || yesnocancel_box(msg) == K_YES; } 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); const int year = msk.get_int(F_ANNO_ELAB); const long codcli = msk.get_long(F_CODCF); const long from = msk.get_long(F_NUMDDT_DA); const long to = msk.get_int(F_NUMDDT_A); const TString & codnum = msk.get(F_NUMDDT); TLog_report log; TFilename path_xml; bool ok = check_name_file(dir, path_xml, sub_fld, from, to); if (ok) { TFlexform_xml_ddt xml_ddts(path_xml); xml_ddts.export_docs(codnum, codcli, year, from,to, &log); #ifdef DBG log.print_or_preview(); #endif } return ok; } bool TMajor_flexform_boll_app::import_ordini(TMask& msk) { bool ok = false; const TString& dir_in = msk.get(F_FLDSOURCE); TFilename path(dir_in); TString_array flist; TBit_array lookup_t; TString header("Importazione ordini"); TLog_report log(header); path.add("*.xml"); list_files(path, flist); { TProgress_monitor prog(flist.items(), header); FOR_EACH_ARRAY_ROW(flist, nr, str) { if (prog.add_status()) { TFilename ford_filename(*str); if (ford_filename.exist()) { TFlexform_xml_ordini order(ford_filename, &log, msk.get(F_NUMORD), msk.get_int(F_CODCF)); ok = order.create_doc(); } else { TString msg; msg << TR("Il file ") << ford_filename << TR("non esiste\nProcedura terminata."); log.log(2, msg); } } } } #ifdef DBG // log.print_or_preview(); #endif return ok; } void TMajor_flexform_boll_app::main_loop() { TMajor_export_mask msk; msk.load_all(); while (msk.run() == K_ENTER) { bool ok = true; TString msg; msk.save(); if (msk.get(F_TIPODOC) == "D") { msg << "Esportazione "; ok &= export_ddt(msk); msg << "DDT"; } else { msg << "Importazione "; ok &= import_ordini(msk); msg << "ordini"; } if (ok) message_box(msg << " eseguita correttamente."); else warning_box(msg << " non completata."); } } int ps6362100(const int argc, char* argv[]) { TMajor_flexform_boll_app pe; pe.run(argc, argv, TR("Import/Export Major-Flexform")); return 0; }