diff --git a/m770/quadb_b1.cpp b/m770/quadb_b1.cpp index fd8337ee2..2d01522e9 100755 --- a/m770/quadb_b1.cpp +++ b/m770/quadb_b1.cpp @@ -1,4 +1,3 @@ -<<<<<<< quadb_b1.cpp // quadb_b1.cpp #include #include @@ -289,7 +288,7 @@ void TQuadriBB1_application::init_mask(TMask& m) const long codip = _msk[0]->get_long(QBF_CODDIP); if (codip==0L) return; - if (is_erede(codditta,codip) && modifica(m)) + if (is_erede(codditta,codip)) // && modifica(m)) { m.disable(-GROUP_ALL); m.enable(-GROUP_EREDE); @@ -596,600 +595,3 @@ bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k) return TRUE; } -======= -// quadb_b1.cpp -#include -#include -#include -#include -#include "dipend.h" -#include "774200.h" -#include "77lib.h" -#include "quadrob.h" -#include "quadrob1.h" -#include "77qb.h" -#include "77qb1.h" - -class TQuadriBB1_application : public TRelation_application -{ - static bool codditta77_handler (TMask_field& m, KEY k); - static bool PrimoNprogLibero (TMask& m, const long codditta, const long coddip); - static bool CodDipHandler (TMask_field& m, KEY k); - static bool NprogExitHandler (TMask_field& m, KEY k); - static bool QBTotRedImpHandler (TMask_field& f, KEY k); - static bool QBAmmRopeHandler (TMask_field& f, KEY k); - static bool QBTotIndennHandler (TMask_field& f, KEY k); - static void BB1SettaCognomeNome(TMask& m); - const char* _maskname; - int _num; - int _pos_quadro; // posizione nell'array dei quadri. Usato in set_comp - TString16 _quadro; - TRiporti _rip; - TRelation* _rel; - TMask* _msk[2]; - bool _registra; - int _anno_dic; - int _mode; - bool _MaskConAnnoDic, _MaskConCodditta; - bool MaskConAnnoDic() const; - bool MaskConCodditta() const { return _MaskConCodditta; } - bool QuadroB() const { return _num == LF_QUAB; } - bool QuadroB1() const { return _num == LF_QUAB1; } - bool CheckImporti(const TMask& m); - bool EsisteGiaCodDip(const TMask& m); - bool EsisteGiaRecordDip(const TMask& m); - long _codditta; - long _lCodDip; - int _iNprog; - TString _sCognome, _sNome; - void init_mask(TMask&); - - protected: - virtual bool user_create(); - virtual bool user_destroy(); -// virtual int read(TMask& m); - virtual int rewrite(const TMask& m); - virtual int write (const TMask& m); - virtual bool remove(); - virtual void on_config_change(); - virtual TMask* get_mask(int); - virtual bool changing_mask(int); - TMask* load_mask(int n); - virtual TRelation* get_relation() const { return _rel; } - virtual void init_query_mode(TMask&); - virtual void init_query_insert_mode(TMask&); - virtual void init_insert_mode(TMask&); - virtual void init_modify_mode(TMask&); - - public: - TQuadriBB1_application(const char* name, const int num, const char* quadro); -}; - -TQuadriBB1_application::TQuadriBB1_application(const char* name, const int num, const char* quadro) -: _maskname(name), _num(num), _mode(0), - _MaskConCodditta(FALSE), _MaskConAnnoDic(FALSE), - _rel(NULL), _quadro(quadro) -{ - memset(_msk, 0, sizeof(_msk)); - switch (_num) - { - case LF_QUAB: - _pos_quadro = B; - break; - case LF_QUAB1: - _pos_quadro = B1; - break; - } -} - -TQuadriBB1_application& app() { return (TQuadriBB1_application&)main_app(); } - -bool TQuadriBB1_application::changing_mask(int mode) -{ - if (mode == MODE_QUERY) - return _mode != MODE_QUERY; - else - return TRUE; -} - -TMask* TQuadriBB1_application::get_mask(int mode) -{ - const int m = (mode == MODE_QUERY) ? 0 : 1; - _mode = mode; - return load_mask(m); -} - -TMask* TQuadriBB1_application::load_mask(int n) -{ - if (_msk[n] != NULL) - return _msk[n]; - - TFilename name("77qb"); - - if (n == 0) - { - switch (_num) - { - case LF_QUAB: - name << 'a'; - break; - case LF_QUAB1: - name << "1a"; - break; - default: - break; - } - } - else - { - switch (_num) - { - case LF_QUAB: - name << 'b'; - break; - case LF_QUAB1: - name << "1b"; - break; - default: - break; - } - } - - TMask* m = new TMask(name); - m->set_handler(CODDITTA77, codditta77_handler); - - switch (n) - { - case 0: - if (QuadroB()) - { - m->set_handler(QBF_CODDIP_QB, CodDipHandler); - m->set_handler(QBF_CODDIP_ANAG, CodDipHandler); - set_search_field(QBF_NPROG); - } - else - { - m->set_handler(QB1F_CODDIP_QB1, CodDipHandler); - m->set_handler(QB1F_CODDIP_ANAG, CodDipHandler); - set_search_field(QB1F_NPROG); - } - m->set_handler(QuadroB() ? QBF_NPROG : QB1F_NPROG, NprogExitHandler); - break; - case 1: - if (m) - if (QuadroB()) - { - m->set_handler(QBF_TOTIMP, QBTotRedImpHandler); - m->set_handler(QBF_ROPE, QBAmmRopeHandler); - m->set_handler(QBF_AMMNETTO, QBTotIndennHandler); - m->set_handler(QBF_AMMNETTO2, QBTotIndennHandler); - m->set_handler(QBF_CONTLAV, QBTotIndennHandler); - m->set_handler(QBF_TFR7494, QBTotIndennHandler); - m->set_handler(QBF_INDEN7494, QBTotIndennHandler); - } - m->disable(DLG_FINDREC); - break; - default: - break; - } - return _msk[n] = m; -} - -bool TQuadriBB1_application::MaskConAnnoDic() const -{ - return _MaskConAnnoDic; -} - -void TQuadriBB1_application::on_config_change() -{ - TConfig conf(CONFIG_STUDIO); - _anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year()); -} - -bool TQuadriBB1_application::user_create() -{ - _registra = FALSE; - _rel = new TRelation(_num); - _codditta = get_firm_770(); - return TRUE; -} - -bool TQuadriBB1_application::user_destroy() -{ - if (_quadro != "") - if (_registra) - _rip.set(_quadro); - if (_msk[1] != NULL) delete _msk[1]; - if (_msk[0] != NULL) delete _msk[0]; - delete _rel; - return TRUE; -} - -// Q.B. Controlla che ci sia diverso da ZERO il tot.red.imp. -bool TQuadriBB1_application::CheckImporti(const TMask& m) -{ - real TotRedImp(m.get(QBF_TOTIMP)); - return TotRedImp != ZERO; -} - -// Controlla se esiste gia' un record con lo stesso cod.dip. -bool TQuadriBB1_application::EsisteGiaCodDip(const TMask& m) -{ - TLocalisamfile q(_num); - const long codip = m.get_long(QuadroB()? QBF_CODDIP : QB1F_CODDIP); - q.zero(); - q.put(QB_CODDITTA, _codditta); - q.put(QB_CODDIP, codip); - TRectype dep(q.curr()); - q.read(_isgteq); - const bool bEq = q.curr() == dep; - return bEq; -} - -// Controlla se esiste gia' una chiave completa -bool TQuadriBB1_application::EsisteGiaRecordDip(const TMask& m) -{ - TLocalisamfile q(_num); - const long codip = m.get_long(QuadroB()? QBF_CODDIP : QB1F_CODDIP); - const long nprog = m.get_long(QuadroB()? QBF_NPROG : QB1F_NPROG); - q.zero(); - q.put(QB_CODDITTA, _codditta); - q.put(QB_CODDIP, codip); - q.put(QB_NPROG, nprog); - TRectype dep(q.curr()); - const bool bEq = q.read() == NOERR; - return bEq; -} - -int TQuadriBB1_application::rewrite(const TMask& m) -{ - m.autosave(_rel); - const int err = _rel->rewrite(); - _registra = err == NOERR; - return err; -} - -/* -int TQuadriBB1_application::read(TMask& m) -{ - int err; - _rel->lfile().put("CODDITTA", (long)_codditta); - _rel->lfile().put("CODDIP", (long)_lCodDip); - _rel->lfile().put("NPROG", _iNprog); - err = _rel->read(); - return err; -} -*/ - -int TQuadriBB1_application::write(const TMask& m) -{ - m.autosave(_rel); - if (QuadroB1()) - if (EsisteGiaRecordDip(m)) - return warning_box("E' già presente un record per questo dipendente"); - const int err = _rel->write(); - _registra = err == NOERR; - return err; -} - -bool TQuadriBB1_application::remove() -{ - _registra = TRUE; - return TRelation_application::remove(); -} - -void TQuadriBB1_application::init_mask(TMask& m) -{ - if (QuadroB()) - { - const long codditta = m.get_long(QBF_CODDITTA); - const long codip = m.get_long(QBF_CODDIP); - if (codip==0L) - return; - if (is_erede(codditta,codip) && modifica(m)) - { - m.disable(-GROUP_ALL); - m.enable(-GROUP_EREDE); - } - else - { - m.enable(-GROUP_ALL); - if (is_deceduto(codditta,codip) || is_dipendente(codditta,codip)) - m.disable(-GROUP_DIPDEC); - else - m.enable(-GROUP_DIPDEC); - } - } -} - -void TQuadriBB1_application::init_modify_mode(TMask& m) -{ - init_mask(m); -/* - if (QuadroB()) - { - m.set(QBF_CODDIP, _lCodDip); - m.set(QBF_COGNOME, _sCognome); - m.set(QBF_NOME, _sNome); - m.set(QBF_NPROG, _iNprog); - } - else - { - m.set(QB1F_CODDIP, _lCodDip); - m.set(QB1F_COGNOME, _sCognome); - m.set(QB1F_NOME, _sNome); - m.set(QB1F_NPROG, _iNprog); - }*/ -} - -void TQuadriBB1_application::init_insert_mode(TMask& m) -{ - init_mask(m); -} - -void TQuadriBB1_application::init_query_mode(TMask& m) -{ - m.set(ANNODIC77, _anno_dic); - if (QuadroB()) - { - m.send_key(K_SHIFT+K_CTRL+'h', -QBG_ANADIP); // nasconde dipend. - m.send_key(K_SHIFT+K_CTRL+'s', -QBG_QUADROB); // ricerca su B - } - else - { - m.send_key(K_SHIFT+K_CTRL+'h', -QB1G_ANADIP); // nasconde dipend. - m.send_key(K_SHIFT+K_CTRL+'s', -QB1G_QUADROB); // ricerca su B - } -} - -void TQuadriBB1_application::init_query_insert_mode(TMask& m) -{ - m.set(ANNODIC77, _anno_dic); - if (QuadroB()) - { - m.send_key(K_SHIFT+K_CTRL+'h', -QBG_ANADIP); // group 2 Nasconde QUADROB - m.send_key(K_SHIFT+K_CTRL+'s', -QBG_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI - } - else - { - m.send_key(K_SHIFT+K_CTRL+'h', -QB1G_ANADIP); // group 2 Nasconde QUADROB - m.send_key(K_SHIFT+K_CTRL+'s', -QB1G_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI - } -} - -bool TQuadriBB1_application::codditta77_handler(TMask_field& f, KEY k) -{ - TString16 codditta; codditta << app()._codditta; - TMask& m = f.mask(); - if (codditta != "0") - { - m.set(CODDITTA77, codditta); - m.field(CODDITTA77).check(); - } - return TRUE; -} - - -/////////////////////////////////////////////////////////// -// 2 modi : -// RUN,773,-1,771230m,89,"Prospetto del Quadro E1","E1" [771230i.uml] -// oppure -// 773 -1 menu_st "Stampe dichiarazioni" [prassi.mnu] -// QUADRO N: -// 773,-2,77qn,72,"Quadro N","N" -/////////////////////////////////////////////////////////// -int quadriB_B1(int argc, char* argv[]) -{ - TFilename mask; - int num = 0; - if (argc > 1) - mask = argv[2]; - num = atoi(argv[3]); - const char* title = argv[4]; - const char* quadro = argv[5]; - TQuadriBB1_application a(mask, num, quadro); - a.run(argc, argv, title ? title : "Test Relation Application"); - return 0; -} - -// -// CodDipHandler -// -// 1 - Controlla che il codice dipendente esista -// 2 - Propone il primo progressivo disponibile per quel codice -// -bool TQuadriBB1_application::CodDipHandler(TMask_field& f, KEY k) -{ - TMask& m = f.mask(); - if (!m.is_running()) return TRUE; - - if (k == K_ENTER) - { - const long codip = atol(f.get()); - if (codip==0L) - return TRUE; - - if (!esiste_dipendente(app()._codditta, codip)) - return f.warning_box("Dipendente inesistente"); - } - - if (k == K_TAB) - { - const long codip = atol(f.get()); - if (codip==0L) - return TRUE; - - if (!esiste_dipendente(app()._codditta, codip)) - return f.warning_box("Dipendente inesistente"); - - PrimoNprogLibero(m, app()._codditta, codip); - } - return TRUE; -} - -// Compila cognome e nome se vuoti -void TQuadriBB1_application::BB1SettaCognomeNome(TMask& m) -{ - const int iDlgCognome = app().QuadroB() ? QBF_COGNOME : QB1F_COGNOME; - const int iDlgNome = app().QuadroB() ? QBF_NOME : QB1F_NOME; - const int iDlgNProg = app().QuadroB() ? QBF_NPROG : QB1F_NPROG; - const int iProg = m.get_int(iDlgNProg); - TString sCognome(m.get(iDlgCognome)); - TString sNome; - if (app()._lCodDip != 0L) - { - TLocalisamfile dip (LF_DIPEND); - dip.zero(); - dip.put(DIP_CODDITTA, app()._codditta); - dip.put(DIP_CODIP, app()._lCodDip); - if (dip.read() == NOERR) - { - sCognome = dip.get("COGNOME"); - sNome = dip.get("NOME"); - app()._sCognome = sCognome; - app()._sNome = sNome; - app()._iNprog = iProg; - m.set(iDlgCognome, sCognome); - m.set(iDlgNome, sNome); - } - } -} - -bool TQuadriBB1_application::NprogExitHandler(TMask_field& f, KEY k) -{ - TMask& m = f.mask(); - if (!m.is_running()) return TRUE; - - if (k == K_TAB) - { - TString nprog(f.get()); - if (nprog.not_empty()) - { - const int ID_CODDIP = app().QuadroB()? QBF_CODDIP : QB1F_CODDIP; - const long codip = app()._lCodDip = m.get_long(ID_CODDIP); - const long codditta = app()._codditta; -// const long codip = m.get_long(ID_CODDIP); -// const long codditta = app()._codditta; - - if (codip==0L) - return TRUE; - -// Nel B1 e nel B (per gli eredi) può esserci un solo record per dipendente - if (app().QuadroB1() || (app().QuadroB() && is_erede(codditta,codip)) ) -// Se esiste gia' un record per questo dipendente MA NON la chiave completa -// (ora presente nella maschera) rifiuta il record -// (impedisce cioe' di andare in inserimento, a meno che non sia la prima -// volta, cioe' a meno che non esista ancora nessun record per il dip. -// (questo caso e' segnalato dal fallimento della EsisteGiaCodDip) ) - if (app().EsisteGiaCodDip(m) && !app().EsisteGiaRecordDip(m)) - return warning_box("Esiste già una riga per questo dipendente"); - -// Compila cognome e nome se vuoti - BB1SettaCognomeNome(m); - m.stop_run(K_AUTO_ENTER); - } - } - return TRUE; -} - -bool TQuadriBB1_application::PrimoNprogLibero(TMask& m, const long codditta, const long codip) -{ -// Propone il primo numero disponibile - if (codip != 0L) - { - long nprog = 0L; - const int id_nprog = app().QuadroB() ? QBF_NPROG : QB1F_NPROG; - const bool erede = is_erede(codditta,codip); - bool EsisteGiaDip = FALSE; - TLocalisamfile qb(app()._num); - qb.zero(); - qb.put(QB_CODDITTA, codditta); - qb.put(QB_CODDIP, codip); - TRectype dep(qb.curr()); - qb.read(_isgteq); - TRecnotype lPosPrec = qb.recno(); - for ( ; !qb.eof(); qb.next()) - { - if (qb.curr() > dep) break; - EsisteGiaDip = TRUE; - nprog = qb.get_long(QB_NPROG); - } - qb.readat(lPosPrec); - -// Nel B se e' un erede si puo' solo andare in modifica -// Nel B1 è consentito un solo record per dipendente - if ( (nprog == 0) || (app().QuadroB1() && !EsisteGiaDip) || - (app().QuadroB() && !erede) ) - nprog++; - - TString16 nprog_str; nprog_str << nprog; - m.set(id_nprog, nprog_str); - } - return TRUE; -} - -/////////////////////////////////////////////////////////////////////////////////// -// QUADRO B -/////////////////////////////////////////////////////////////////////////////////// -bool TQuadriBB1_application::QBTotRedImpHandler(TMask_field& f, KEY k) -{ - TMask& m = f.mask(); - if (k == K_ENTER && !ricerca(m)) - { - const long codditta = m.get_long(QBF_CODDITTA); - const long codip = m.get_long(QBF_CODDIP); - if (!is_erede(codditta,codip)) - { - real totimp(f.get()); - if (totimp == ZERO) - return f.warning_box("Il totale reddito imponibile non può essere nullo"); - } - } - return TRUE; -} - -bool TQuadriBB1_application::QBAmmRopeHandler(TMask_field& f, KEY k) -{ - TMask& m = f.mask(); - if (k == K_ENTER && !ricerca(m)) - { - TMask& m = f.mask(); - const long codditta = m.get_long(QBF_CODDITTA); - const long codip = m.get_long(QBF_CODDIP); - if (!is_erede(codditta,codip)) - { - real totimp(m.get(QBF_TOTIMP)); - real rope(f.get()); - if (rope > totimp) - return f.warning_box("Il totale ritenute non può essere maggiore del totale reddito imponibile"); - } - } - return TRUE; -} - -// 23.5.96 Calcola totale indennità -bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k) -{ - if (k == K_TAB) - { - const bool ricalcola = f.focusdirty(); - if (ricalcola) - { - TMask& m = f.mask(); - real c20 = m.get_real(QBF_AMMNETTO); - real c24 = m.get_real(QBF_AMMNETTO2); - real c25 = m.get_real(QBF_CONTLAV); - real c26 = m.get_real(QBF_TFR7494); - real c27 = m.get_real(QBF_INDEN7494); - - real c28 = c20 + c24 - c25 + c26 + c27; - TString c28s(c28.string()); - m.set(QBF_TIND7494, c28s); - } - } - return TRUE; -} - ->>>>>>> 1.3 ->>>>>>> 1.4 - \ No newline at end of file