#include #include #include "in0.h" #include "in0600a.h" #include "inlib01.h" class TRiepiloghi_mask : public TIntra_mask { protected: virtual short type_field() const; virtual short period_field() const; protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TRiepiloghi_mask(); virtual ~TRiepiloghi_mask() { } }; short TRiepiloghi_mask::type_field() const { return F_TIPO; } short TRiepiloghi_mask::period_field() const { return F_PERIODO_M; } bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_NATURA_TRANS: if (e == fe_modify || e == fe_init) o.check(); break; case F_RIEPILOGHI: if (e == fe_button) genera_riepiloghi(); break; default: break; } return TIntra_mask::on_field_event(o, e, jolly); } TRiepiloghi_mask::TRiepiloghi_mask() : TIntra_mask("in0600a") { first_focus(F_NUM_RIG); } /////////////////////////////////////////////////////////// // Applicazione principale /////////////////////////////////////////////////////////// class TRiepiloghi_intra : public TRelation_application { TRelation* _rel; TRiepiloghi_mask* _msk; protected: virtual bool user_create(); virtual TRelation* get_relation() const { return _rel; } virtual TMask* get_mask(int) { return _msk; } virtual bool changing_mask(int mode) { return FALSE; } virtual bool user_destroy(); virtual bool get_next_key(TToken_string& k); virtual void init_query_mode(TMask& m); public: }; bool TRiepiloghi_intra::user_create() { open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_RIEPRETT, 0); _rel = new TRelation(LF_RIEPRETT); _msk = new TRiepiloghi_mask; return TRUE; } bool TRiepiloghi_intra::user_destroy() { delete _msk; delete _rel; return TRUE; } bool TRiepiloghi_intra::get_next_key(TToken_string& k) { if (_msk->get(F_ANNO).empty() || _msk->get(F_PARTITA_IVA).empty()) return FALSE; _msk->autosave(*_rel); TRectype filter(_rel->curr()); filter.zero("NUMRIG"); TCursor cur(_rel, "", 1, &filter, &filter); const long r = cur.items(); long num_rig = 1; if (r > 0) { cur = r-1; num_rig = cur.curr().get_long("NUMRIG")+1; } k.cut(0); k.add(F_NUM_RIG); k.add(num_rig); return TRUE; } void TRiepiloghi_intra::init_query_mode(TMask& m) { TEdit_field& numrig = m.efield(F_NUM_RIG); TCursor& cur = *numrig.browse()->cursor(); cur.last_item(); const TRectype& curr = cur.curr(); m.set(F_ANNO, curr.get("ANNO")); m.set(F_TIPO, curr.get("TIPO"), TRUE); m.set(F_PERIODO_M, curr.get("PERIODO")); m.set(F_PERIODO_T, curr.get("PERIODO")); } int is0600(int argc, char* argv[]) { TRiepiloghi_intra a; a.run(argc, argv, "Riepiloghi INTRA"); return 0; }