// 771290.cpp - Quadro H #include #include #include #include #include #include #include #include #include #include #include #include "771290.h" #include "771295.h" #include "77lib.h" #include "774200.h" #include class TQuadro_H_app : public TRelation_application { TRelation * _rel; TMask * _msk; TRiporti _rip; int _mode; // Modo maschera corrente long _codditta; int _anno; TString _ente; bool _registra; protected: virtual bool user_create(); virtual bool user_destroy(); virtual int rewrite(const TMask& m); virtual int write (const TMask& m); virtual bool remove(); virtual TRelation* get_relation() const { return _rel; } virtual TMask* get_mask(int mode); virtual bool changing_mask(int mode) {return FALSE; } // void init_mask(TMask&); virtual void init_query_mode(TMask&); virtual void init_modify_mode(TMask&); virtual void init_insert_mode(TMask&); virtual void init_query_insert_mode(TMask&); virtual void on_config_change(); public: bool almeno_un_dettaglio(TMask&); void refresh(TMask& m); static bool generazione (TMask_field& f , KEY k); static bool dettaglio (TMask_field& f , KEY k); static bool desc_ente (TMask_field& f , KEY k); static bool codditta_hnd(TMask_field& f , KEY k); TQuadro_H_app() {} }; HIDDEN TQuadro_H_app& app() { return (TQuadro_H_app&) main_app(); } bool TQuadro_H_app::codditta_hnd(TMask_field& f, KEY k) { if (k == K_TAB && !(f.mask().is_running()) ) { TString16 codditta; codditta << get_firm_770(); if (codditta != "0") { f.set(codditta); f.check(); } } return TRUE; } void TQuadro_H_app::refresh(TMask& m) { TEdit_field& datore = _msk->efield(F_DAT); TEdit_field& lavora = _msk->efield(F_LAV); //datore.check(); //lavora.check(); datore.autoload(_rel); lavora.autoload(_rel); if (almeno_un_dettaglio(m)) m.enable (F_BTG_GENERA); else m.disable(F_BTG_GENERA); m.enable (F_BTG_DETTAGLIO); } bool TQuadro_H_app::generazione(TMask_field& f , KEY k) { if (k == K_SPACE) { TString appname = "775 -1"; TToken_string body; body.add(app()._codditta); body.add(app()._anno); body.add(app()._ente); TMessage msg (appname,"",(const char*) body); TMailbox mb; mb.send(msg); TLocalisamfile& quaH = app().get_relation()->lfile(); quaH.setkey(1); quaH.zero(); quaH.put("CODDITTA", app()._codditta); quaH.put("H1ANNO", app()._anno); quaH.put("H1ENTE", app()._ente); quaH.read(_isequal,_unlock); TExternal_app a(appname); a.run(); quaH.read(_iscurr,_lock); f.mask().set_focus(); app().refresh(f.mask()); } return TRUE; } bool TQuadro_H_app::dettaglio(TMask_field& f , KEY k) { if (k == K_SPACE) { TString appname = "771mod -4"; TToken_string body; body << F_ANNO << "|"; body << F_ANNO << "=" << f.mask().get(F_H1ANNO) << "|"; body << F_CODDITTA << "=" << f.mask().get(F_CODDITTA) << "|"; body << F_ENTE << "=" << f.mask().get(F_ENTE); TMessage msg (appname,MSG_FS,(const char*) body); TMailbox mb; mb.send(msg); TLocalisamfile& quaH = app().get_relation()->lfile(); quaH.setkey(1); quaH.zero(); quaH.put("CODDITTA", app()._codditta); quaH.put("H1ANNO", app()._anno); quaH.put("H1ENTE", app()._ente); quaH.read(_isequal,_unlock); TExternal_app a(appname); a.run(); quaH.read(_iscurr,_lock); f.mask().set_focus(); app().refresh(f.mask()); } return TRUE; } bool TQuadro_H_app::desc_ente(TMask_field& f, KEY k) { if (k == K_TAB && f.to_check(k) && f.mask().is_running()) { TTable ente ("%ENT"); TString descrizione; TString codice = f.get(); ente.zero(); ente.put("CODTAB", codice); if (ente.read() == NOERR) { descrizione = ente.get("S0"); f.mask().set(F_DESCENTE, descrizione); } else { descrizione = ""; f.mask().set(F_DESCENTE, descrizione); return f.warning_box("Valore non presente in tabella Enti previdenziali"); } } return TRUE; } void TQuadro_H_app::on_config_change() { TConfig conf(CONFIG_STUDIO); _anno = (int) conf.get_long(ANNO_SEL); } TMask* TQuadro_H_app::get_mask(int mode) { return _msk; } bool TQuadro_H_app::almeno_un_dettaglio(TMask& m) { TLocalisamfile dett (LF_DETH); dett.setkey(1); dett.zero(); dett.put("CODDITTA", _codditta); dett.put("ANNO", _anno); dett.put("ENTE", _ente); for (dett.read();!dett.eof();dett.next()) { long codditta = dett.get_long("CODDITTA"); int anno = dett.get_int ("ANNO"); TString ente = dett.get ("ENTE"); if (_codditta == codditta && _anno == anno && _ente == ente) return TRUE; } return FALSE; } void TQuadro_H_app::init_insert_mode(TMask& m) { m.show(F_ENTE); m.hide(F_ENTEBIS); m.disable(F_BTG_GENERA); m.disable(F_BTG_DETTAGLIO); } void TQuadro_H_app::init_query_mode(TMask& m) { on_config_change(); m.set(F_H1ANNO, _anno); m.disable(F_BTG_GENERA); m.disable(F_BTG_DETTAGLIO); m.show(F_ENTE); m.hide(F_ENTEBIS); } void TQuadro_H_app::init_query_insert_mode(TMask& m) { m.set(F_H1ANNO, _anno); m.hide(F_ENTE); m.show(F_ENTEBIS); m.disable(F_BTG_GENERA); m.disable(F_BTG_DETTAGLIO); } void TQuadro_H_app::init_modify_mode(TMask& m) { _codditta = m.get_long(F_CODDITTA); _anno = m.get_int (F_H1ANNO); _ente = m.get (F_ENTE); if (almeno_un_dettaglio(m)) m.enable (F_BTG_GENERA); else m.disable(F_BTG_GENERA); m.enable (F_BTG_DETTAGLIO); m.show(F_ENTE); m.hide(F_ENTEBIS); } int TQuadro_H_app::rewrite(const TMask& m) { m.autosave(_rel); _registra = TRUE; return _rel->rewrite(); } int TQuadro_H_app::write(const TMask& m) { m.autosave(_rel); _registra = TRUE; return _rel->write(); } bool TQuadro_H_app::remove() { _registra = TRUE; return TRelation_application::remove(); } bool TQuadro_H_app::user_create() { _rel = new TRelation (LF_QUAH); _msk = new TMask("771290a"); set_search_field(F_H1ANNO); _msk->set_handler (F_CODDITTA, codditta_hnd); _msk->set_handler (F_BTG_GENERA, generazione); _msk->set_handler (F_BTG_DETTAGLIO, dettaglio); _msk->set_handler (F_ENTE, desc_ente); _msk->set_handler (F_ENTEBIS, desc_ente); _registra = FALSE; return TRUE; } bool TQuadro_H_app::user_destroy() { if (_registra) // 20.12.95 l'anno deve essere quello dei parametri // _rip.set("H",_anno); _rip.set("H"); delete _msk; delete _rel; return TRUE; } int m71290(int argc, char* argv[]) { TQuadro_H_app a; a.run(argc, argv, "Quadro H"); return 0; }