#include #include #include #include "../ca/rmovana.h" #include "ps1001.h" #include "ps1001300a.h" /////////////////////////////////////////////////////////// // TAutomask /////////////////////////////////////////////////////////// class TVariazione_budget_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); void carica_rmovana(); public: TVariazione_budget_mask(); }; TVariazione_budget_mask::TVariazione_budget_mask() :TAutomask ("ps1001300a") { } bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_CODCMS: { if (e == fe_modify) carica_rmovana(); } break; default: break; } return true; } void TVariazione_budget_mask::carica_rmovana() { TWait_cursor hourglass; TString query; query << "USE RMOVANA KEY 4\n"; query << "SELECT ((MOVANA.TIPOMOV=\"P\")||(MOVANA.TIPOMOV=\"V\"))\n"; query << "JOIN MOVANA INTO NUMREG==NUMREG\n"; query << "FROM CODCMS=#CODCMS\n"; query << "TO CODCMS=#CODCMS\n"; //instanzio un TISAM_recordset sulle rmovana TISAM_recordset rmovana(query); rmovana.set_var("#CODCMS", get(F_CODCMS)); const long rmovana_items = rmovana.items(); //recupero sheet e realtiva mashera di riga TSheet_field& sf_righe = sfield(F_RIGHE); TMask& msk = sf_righe.sheet_mask(); sf_righe.destroy(); //per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga) for (bool ok = rmovana.move_first(); ok; ok = rmovana.move_next()) { TToken_string& row = sf_righe.row(-1); row.add(rmovana.get(RMOVANA_CODCCOSTO).as_string(), 0); row.add(rmovana.get(RMOVANA_CODFASE).as_string(), 1); row.add(rmovana.get(RMOVANA_CODCONTO).as_string(), 2); real valore = rmovana.get(RMOVANA_IMPORTO).as_real(); const char sezione = rmovana.get(RMOVANA_SEZIONE).as_string()[0]; TImporto importo(sezione, valore); importo.normalize('D'); valore = importo.valore(); TString str_valore; str_valore << valore; row.add(str_valore, 3); row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 4); row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 5); row.add(rmovana.get(RMOVANA_DESCR).as_string(), 6); } sf_righe.force_update(); } /////////////////////////////////////// // TSkeleton_application /////////////////////////////////////// class TVariazione_budget : public TSkeleton_application { virtual bool check_autorization() const { return false; } virtual const char * extra_modules() const { return "ca"; } TVariazione_budget_mask* _msk; protected: public: virtual bool create(); virtual bool destroy(); virtual void main_loop(); TVariazione_budget() {}; }; bool TVariazione_budget::create() { _msk = new TVariazione_budget_mask(); return TSkeleton_application::create(); } bool TVariazione_budget::destroy() { delete _msk; return TApplication::destroy(); } void TVariazione_budget::main_loop() { KEY tasto; tasto = _msk->run(); } int ps1001300 (int argc, char* argv[]) { TVariazione_budget main_app; main_app.run(argc, argv, TR("Variazione budget")); return true; }