#include #include #include #include #include #include #include #include #include "lvcondv.h" #include "lvpasplan.h" #include "lv2a00a.h" /////////////////////////////////////////////////////////// // TAutogiro_msk /////////////////////////////////////////////////////////// class TAutogiro_msk : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TAutogiro_msk(); }; bool TAutogiro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { return true; } TAutogiro_msk::TAutogiro_msk() : TAutomask("lv2a00a") { // Propone itinerario senza autista TEdit_field& g = efield(F_ITINERARIO); TCursor& gcur = *g.browse()->cursor(); for (TRecnotype i = gcur.items()-1; i >= 0; --gcur, i--) { if (gcur.curr().get("S1").empty()) { g.browse()->do_output(); break; } } // Propone prima frequenza disponibile (settimanale) TEdit_field& f = efield(F_FREQUENZA); TCursor& fcur = *f.browse()->cursor(); if (fcur.items()) { fcur = 0L; f.browse()->do_output(); } // Propone consegna e ritiro set(F_CONSEGNA, "E"); // Preimposta i feriali for (int d = 0; d < 5; d++) set(F_LUNEDI+d, "X"); } /////////////////////////////////////////////////////////// // TAutogiro_app /////////////////////////////////////////////////////////// class TAutogiro_app : public TSkeleton_application { protected: virtual void main_loop(); }; void TAutogiro_app::main_loop() { TAutogiro_msk msk; while (msk.run() == K_ENTER) { const TDate oggi(TODAY); TFast_isamfile pasplan(LF_LVPASPLAN); TString query; query << "USE LVCONDV SELECT LVPASPLAN->NRIGA!=1" << "\nJOIN LVPASPLAN INTO CODCF==CODCF CODCONT==CODCONT NRIGA==1"; TISAM_recordset contratti(query); TProgress_monitor pi(contratti.items(), title()); TLog_report log; for (bool ok = contratti.move_first(); ok; ok = contratti.move_next()) { const long codcf = contratti.get(LVCONDV_CODCF).as_int(); if (codcf <= 0) continue; const TDate datasc = contratti.get(LVCONDV_DATASC).as_date(); if (datasc.ok() && datasc < oggi) continue; int nriga = 1; for (int day = 0; day < 7; day++) if (msk.get_bool(F_LUNEDI+day)) { if (nriga == 1) { TString8 cod; cod.format("C|%06ld", codcf); TString msg; msg << TR("Contratto ") << cod << '/' << contratti.get(LVCONDV_CODCONT) << " - " << cache().get(LF_CLIFO, cod, CLI_RAGSOC); log.log(0, msg); } pasplan.zero(); pasplan.put(LVPASPLAN_CODCF, contratti.get(LVCONDV_CODCF).as_int()); pasplan.put(LVPASPLAN_CODCONT, contratti.get(LVCONDV_CODCONT).as_int()); pasplan.put(LVPASPLAN_NRIGA, nriga++); pasplan.put(LVPASPLAN_CODITI, msk.get(F_ITINERARIO)); pasplan.put(LVPASPLAN_FREQ, msk.get(F_FREQUENZA)); pasplan.put(LVPASPLAN_MODPASS, msk.get(F_CONSEGNA)); pasplan.put(LVPASPLAN_GGCONS, day+1); const int err = pasplan.write(); if (err != NOERR) { cantwrite_box(pasplan.description()); log.log(2, TR("Errore di scrittura sul file LVPASPLAN")); contratti.move_last(); break; } } if (!pi.add_status()) break; } log.preview(); } } int lv2A00(int argc, char* argv[]) { TAutogiro_app app; app.run(argc, argv, TR("Pianificazione da contratti")); return 0; }