#include #include #include #include #include #include "calib01.h" #include "ca2.h" #include "ca2300a.h" #include "movana.h" #include "rmovana.h" #include "saldana.h" //-------------------------------------------------------------------- // MASCHERA //-------------------------------------------------------------------- class TRic_saldi_msk : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly) { return true; } public: TRic_saldi_msk(); virtual ~TRic_saldi_msk(){}; }; TRic_saldi_msk::TRic_saldi_msk() :TAutomask ("ca2300a") { } /////////////////////////////////////////////////////////// // TAnal_mov_ric /////////////////////////////////////////////////////////// class TAnal_mov_ric : public TAnal_mov { public: virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop); virtual int read(TBaseisamfile& f, word op, word lockop); public: TAnal_mov_ric(long numreg = 0) : TAnal_mov(numreg) {} }; int TAnal_mov_ric::readat(TBaseisamfile& f, TRecnotype nrec, word lockop) { const int err = TMultiple_rectype::readat(f, nrec, lockop); kill_saldi(); update_saldi(false); return err; } int TAnal_mov_ric::read(TBaseisamfile& f, word op, word lockop) { const int err = TMultiple_rectype::read(f, op, lockop); kill_saldi(); update_saldi(false); return err; } //-------------------------------------------------------------------- // APPLICAZIONE //-------------------------------------------------------------------- class TRic_saldi_app : public TSkeleton_application { TRic_saldi_msk * _mask; virtual const char * extra_modules() const {return "cm";} //deve funzionare anche per le commesse protected: virtual bool create(); virtual bool destroy(); virtual void main_loop(); static bool elabora_movimento(const TRelation& rel, void* pJolly) { return true; } static bool remove_saldo(const TRelation& rel, void* pJolly); public: TRic_saldi_app() {} virtual ~TRic_saldi_app() {} }; bool TRic_saldi_app::create() { _mask = new TRic_saldi_msk; return TSkeleton_application::create(); } bool TRic_saldi_app::destroy() { delete _mask; return TSkeleton_application::destroy(); } bool TRic_saldi_app::remove_saldo(const TRelation& rel, void* pJolly) { ((TRelation &)rel).remove(); return true; } void TRic_saldi_app::main_loop() { while (_mask->run() == K_ENTER) { const int anno = _mask->get_int(F_ANNO); TRelation rel_saldi(LF_SALDANA); TRectype rec_saldi(rel_saldi.curr()); rec_saldi.put(SALDANA_ANNO, anno); TCursor cur_saldi(&rel_saldi, "", 1, &rec_saldi, &rec_saldi); const long items_saldi = cur_saldi.items(); if (items_saldi > 0) cur_saldi.scan(remove_saldo, this, "Azzeramento saldi..."); TRelation rel_movana(LF_MOVANA); TString filter; filter.format("ANNOES==%04d", anno) ; TCursor cur_movana(&rel_movana, filter, 1); const long items = cur_movana.items(); //usa la scan dei TCursor,quindi niente progind e for,x' gia' nel metodo if (items > 0) { rel_movana.lfile().set_curr(new TAnal_mov_ric); //il record principale della rel e' un TMov_anal!! cur_movana.scan(elabora_movimento, this, "Ricostruzione saldi..."); } } } int ca2300(int argc, char* argv[]) { TRic_saldi_app app; app.run(argc, argv, "Ricostruzione saldi di analitica"); return 0; }