// 771100.cpp - Manutenzione dati anagrafici // // 771mod -0 A : "Dichiarante" // 771mod -0 C : "Rappresentante" // 771mod -0 D : "Scritture contabili" // 771mod -0 E : "Dati C.A.A.F." // 771mod -0 F : "Direttore / Professionista" // 771mod -0 G : "Concessione / UIDD" // // Lista modifiche: // // 1.4.96 Rappresentante: codice e carica rappr. non vengono piu' registrati // su NDITTE ma bensi' su BASE // #include #include #include #include #include #include #include #include #include "771.h" #include "771100.h" #include "../ba/ba4200.h" #include "../ba/ba4300.h" // per il f_coddittah #include #include #include #include "77lib.h" #include "../ba/ba4500.h" class TDati_anagrafici : public TSkeleton_application { private: static bool indirizzo (TMask_field&, KEY); static bool cod_conc (TMask_field&, KEY); static bool niscraa (TMask_field&, KEY); static bool ditta_caaf(TMask_field&, KEY); static bool attivita_handler(TMask_field&, KEY); static bool fisica_handler(TMask_field&, KEY); static bool giuridica_handler(TMask_field&, KEY); static bool anagrafica_handler(TMask_field&, KEY); static bool anagr_dich_handler(TMask_field&, KEY); // bottone ditta in DatiCAAF static bool DCditta_handler(TMask_field&, KEY); TMask* _msk; TRelation* _rel; char _ana; long _codditta; bool Dichiarante() const { return _ana == 'A'; } bool Rappresentante() const { return _ana == 'C'; } bool ScrittureContabili() const { return _ana == 'D'; } bool DatiCAAF() const { return _ana == 'E'; } bool DirProf() const { return _ana == 'F'; } bool ConcUIDD() const { return _ana == 'G'; } public: TString _titolo; virtual bool create(); virtual bool destroy(); virtual void main_loop(); KEY registra(TMask& m, bool check_dirty); void registra_fis_giu(); void registra_rappr(); void registra_caaf(); void registra_dirprof(); void registra_dativari(); static bool codditta_hnd(TMask_field& f, KEY k); TDati_anagrafici(char anagrafica); }; TDati_anagrafici::TDati_anagrafici(char anagrafica) : _titolo(50), _ana(toupper(anagrafica)) { if (Dichiarante()) _titolo = "Dichiarante"; if (Rappresentante()) _titolo = "Rappresentante"; if (ScrittureContabili()) _titolo = "Scritture contabili"; if (DatiCAAF()) _titolo = "Dati C.A.A."; if (DirProf()) _titolo = "Direttore / Professionista"; if (ConcUIDD()) _titolo = "Concessione / UIDD"; } HIDDEN TDati_anagrafici& app() { return (TDati_anagrafici &) main_app(); } bool TDati_anagrafici::codditta_hnd(TMask_field& f, KEY k) { if (k == K_TAB && !(f.mask().is_running()) ) { TString16 codditta; codditta << app()._codditta; if (codditta != "0") { f.set(codditta); f.check(); } } return TRUE; } bool TDati_anagrafici::attivita_handler(TMask_field& m, KEY k) { if (k != K_SPACE) return TRUE; app().registra(m.mask(),FALSE); m.mask().stop_run(K_ESC); TString appname; appname = "ba4 -4"; TString body(16); body << "1" << "|"; body << m.mask().get(F_CODDITTA) << "|"; body << m.mask().get(F_ATTIV) << "|"; body << m.mask().get(F_ATTIV); TMessage msg(appname, MSG_LN, (const char*) body); msg.send(); TExternal_app a(appname); a.run(); m.set_focus(); xvt_statbar_set(""); return TRUE; } bool TDati_anagrafici::DCditta_handler(TMask_field& f, KEY k) { if (k != K_SPACE) return TRUE; else { TMask& m = f.mask(); app().registra(m, FALSE); m.stop_run(K_ESC); const long lDittaCaaf = m.get_long(F_DITTACAAF); TToken_string body(16); body.add("1"); // usa la chiave 1 body.add(lDittaCaaf); // ditta per il campo codice ditta body.add(lDittaCaaf); // ditta per il secondo campo codice ditta TString16 cmd("ba4 -2"); TMessage msg(cmd, MSG_LN, (const char*) body); msg.send(); TExternal_app a(cmd); a.run(); m.set_focus(); xvt_statbar_set(""); } return TRUE; } bool TDati_anagrafici::fisica_handler(TMask_field& m, KEY k) { if (k != K_SPACE) return TRUE; app().registra(m.mask(),FALSE); m.mask().stop_run(K_ESC); TToken_string body(16); body << "1" << "|"; body << m.mask().get(F_ANAGR); TString16 cmd ("ba4 -1 F"); TMessage msg(cmd, MSG_LN, (const char*) body); TMailbox mb; mb.send(msg); TExternal_app a(cmd); a.run(); m.set_focus(); xvt_statbar_set(""); return FALSE; } bool TDati_anagrafici::giuridica_handler(TMask_field& m, KEY k) { if (k != K_SPACE) return TRUE; app().registra(m.mask(),FALSE); m.mask().stop_run(K_ESC); TToken_string body(16); body << "1" << "|"; body << m.mask().get(F_ANAGR); TString16 cmd ("ba4 -1 G"); TMessage msg(cmd, MSG_LN, (const char*) body); TMailbox mb; mb.send(msg); TExternal_app a(cmd); a.run(); m.set_focus(); xvt_statbar_set(""); return FALSE; } bool TDati_anagrafici::anagrafica_handler(TMask_field& m, KEY k) { TString16 cmd; if (k != K_SPACE) return TRUE; app().registra(m.mask(),FALSE); m.mask().stop_run(K_ESC); TToken_string body(16); body << "1" << "|"; body << m.mask().get(F_ANAGR); char tipoa = m.mask().get(ASCF_TIPOA)[0]; if (tipoa == 'F') cmd = "ba4 -1 F"; else if (tipoa == 'G') cmd = "ba4 -1 G"; TMessage msg(cmd, MSG_LN, (const char*) body); TMailbox mb; mb.send(msg); TExternal_app a(cmd); a.run(); m.set_focus(); xvt_statbar_set(""); return FALSE; } bool TDati_anagrafici::anagr_dich_handler(TMask_field& m, KEY k) { TString16 cmd; if (k != K_SPACE) return TRUE; app().registra(m.mask(),FALSE); m.mask().stop_run(K_ESC); TToken_string body(16); body << "1" << "|"; body << m.mask().get(F_ANAGR); char tipoa = m.mask().get(F_TIPOA)[0]; if (tipoa == 'F') cmd = "ba4 -1 F"; else if (tipoa == 'G') cmd = "ba4 -1 G"; TMessage msg(cmd, MSG_LN, (const char*) body); TMailbox mb; mb.send(msg); TExternal_app a(cmd); a.run(); m.set_focus(); xvt_statbar_set(""); return FALSE; } bool TDati_anagrafici::indirizzo (TMask_field& f, KEY k) { TLocalisamfile anag (LF_ANAG); TLocalisamfile comuni (LF_COMUNI); long codanagr; char tipoa; TString ragione,nome,cognome,ind,civ,cap,com,prov,codcom; if (k == K_TAB) { tipoa = f.mask().get (ASCF_TIPOA)[0]; codanagr = f.mask().get_long(F_ANAGR); // Ricerca sull'archivio anagrafiche dei dati relativi al depositario anag.setkey(1); anag.zero(); anag.put("TIPOA", tipoa); anag.put("CODANAGR", codanagr); if (anag.read() == NOERR) { ragione = anag.get("RAGSOC"); codcom = anag.get("COMRF"); if (codcom != "") { ind = anag.get("INDRF"); civ = anag.get("CIVRF"); cap = anag.get("CAPRF"); } else { ind = anag.get("INDRES"); civ = anag.get("CIVRES"); cap = anag.get("CAPRES"); codcom = anag.get("COMRES"); } } if (tipoa == 'F') { cognome = ragione.mid(0,30); nome = ragione.mid(30,20); f.mask().hide(F_RAGIONE); f.mask().show(F_COGNOME); f.mask().show(F_NOME); f.mask().set(F_COGNOME, cognome); f.mask().set(F_NOME, nome); } else if (tipoa == 'G') { f.mask().hide(F_COGNOME); f.mask().hide(F_NOME); f.mask().show(F_RAGIONE); f.mask().set(F_RAGIONE, ragione); } // Ricerca dati relativi al comune del depositario comuni.setkey(1); comuni.zero(); comuni.put("STATO", ""); comuni.put("COM", codcom); if (comuni.read() == NOERR) { com = comuni.get("DENCOM"); prov = comuni.get("PROVCOM"); } f.mask().set(F_IND, ind); f.mask().set(F_CIV, civ); f.mask().set(F_CAP, cap); f.mask().set(F_COM, com); f.mask().set(F_PROV, prov); } return TRUE; } bool TDati_anagrafici::cod_conc (TMask_field& f, KEY k) { TLocalisamfile anag (LF_ANAG); TLocalisamfile comuni (LF_COMUNI); long codanagr; char tipoa; int codconc,uffiidd,codcs; TString codcom; if ( k == K_TAB )// && f.mask().is_running() ) { tipoa = f.mask().get (F_TIPOA)[0]; codanagr = f.mask().get_long(F_ANAGR); // Setta il prompt del button di uscita sull'anagrafica del dichiarante // if (tipoa == 'G') // f.mask().field(F_ANAGR_DICH).set_prompt("Giuridiche"); // if (tipoa == 'F') // f.mask().field(F_ANAGR_DICH).set_prompt("Fisiche"); // Ricerca sull'archivio anagrafiche dei dati anag.setkey(1); anag.zero(); anag.put("TIPOA", tipoa); anag.put("CODANAGR", codanagr); if (anag.read() == NOERR) { codcom = anag.get("COMRF"); if (codcom == "") codcom = anag.get("COMRES"); } // Ricerca dati relativi al comune comuni.setkey(1); comuni.zero(); comuni.put("STATO", ""); comuni.put("COM", codcom); if (comuni.read() == NOERR) { codconc = comuni.get_int("UFFCONC"); uffiidd = comuni.get_int("UFFIIDD1"); codcs = comuni.get_int("UFFCSERV"); if (uffiidd == 0) uffiidd = comuni.get_int("UFFIIDD2"); if (uffiidd == 0) uffiidd = comuni.get_int("UFFIIDD3"); if (codconc != 0) f.mask().set(F_CODCONC1, codconc); if (uffiidd != 0) f.mask().set(F_CODUI, uffiidd); if (codcs != 0) f.mask().set(F_CODCS, codcs); f.mask().check_field(F_CODCS); f.mask().check_field(F_CODUI); } } return TRUE; } bool TDati_anagrafici::niscraa(TMask_field& f, KEY k) { if (k == K_TAB && !f.mask().is_running()) { TLocalisamfile base (LF_BASE); TLocalisamfile ditte(LF_NDITTE); TString16 niscraa = ""; long dittacaaf = 0; long codditta = f.mask().get_long(F_CODDITTA); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { dittacaaf = base.get_long("DITTACAAF"); ditte.setkey(1); ditte.zero(); ditte.put(NDT_CODDITTA, dittacaaf); if (ditte.read() == NOERR) niscraa = ditte.get(NDT_NISCRAA); } f.mask().set(F_NISCRAA, niscraa); if (dittacaaf != 0) f.mask().set(F_DITTACAAF, dittacaaf); } return TRUE; } bool TDati_anagrafici::ditta_caaf(TMask_field& f, KEY k) { if (k == K_TAB || k == K_ENTER) { long caaf = f.mask().get_long(F_ANAGR); long ditta = atol(f.get()); if (caaf == 0 && ditta != 0) return f.warning_box("Se non indicato il codice del CAAF la ditta non deve essere indicata"); if (caaf != 0 && ditta == 0) return f.warning_box("Se indicato il codice del CAAF deve essere indicata anche la ditta a cui e' collegato"); } return TRUE; } bool TDati_anagrafici::create() { _msk = NULL; _rel = new TRelation (LF_NDITTE); _rel->add(LF_BASE, "CODDITTA=CODDITTA"); _rel->add(LF_BASEBIS, "CODDITTA=CODDITTA"); _codditta = get_firm_770(); if (Dichiarante()) { char tipo_pers = tipo_persona(_codditta); if (tipo_pers == ' ' || tipo_pers == '\0') { message_box("Il titolare della ditta non e' stato compilato correttamente."); return TRUE; } if (tipo_pers == 'G') { _msk = new TMask ("771100b"); _msk->set_handler(F_GIURIDICA, giuridica_handler); } else if (tipo_pers == 'F') { _msk = new TMask ("771100a"); _msk->set_handler(F_FISICA, fisica_handler); } _msk->set_handler(F_ATTIVITA, attivita_handler); } if (Rappresentante()) { _msk = new TMask ("771100c"); _msk->set_handler(F_FISICA, fisica_handler); } if (ScrittureContabili()) { _msk = new TMask ("771100d"); _msk->set_handler(F_ANAGR, indirizzo); _msk->set_handler(F_ATTIVITA, attivita_handler); _msk->set_handler(F_FISICA, anagrafica_handler); _msk->set_handler(F_GIURIDICA,anagrafica_handler); _msk->disable(DLG_SAVEREC); _msk->disable(DLG_CANCEL); } if (DatiCAAF()) { _msk = new TMask ("771100e"); _msk->set_handler(F_ANAGR, niscraa); _msk->set_handler(F_GIURIDICA, giuridica_handler); _msk->set_handler(F_DITTACAAF, ditta_caaf); _msk->set_handler(DCF_DITTA, DCditta_handler); } if (DirProf()) { _msk = new TMask ("771100f"); _msk->set_handler(F_FISICA, fisica_handler); } if (ConcUIDD()) { _msk = new TMask ("771100g"); _msk->field(F_CODCONC2).set_dirty(); _msk->set_handler(F_CODCONC2, cod_conc); _msk->set_handler(F_BTN_GIURIDICA, anagr_dich_handler); _msk->set_handler(F_BTN_FISICA, anagr_dich_handler); } if (_msk) { _msk->set_mode(MODE_MOD); TString16 codditta; codditta << _codditta; if (codditta != "0") _msk->set(F_CODDITTA,codditta); return TSkeleton_application::create(); } return FALSE; } bool TDati_anagrafici::destroy() { delete _msk; delete _rel; return TApplication::destroy(); } void TDati_anagrafici::main_loop() { KEY tasto = K_ESC; _msk->open_modal(); while (tasto != K_QUIT) { _rel->lfile().put("CODDITTA", _codditta); _rel->read(); _msk->autoload(*_rel); // controllo se indicato rappresentante if (Rappresentante() && (_msk->get_long(F_ANAGR) == 0L)) message_box("Il rappresentante non e' stato indicato."); tasto = _msk->run(); switch (tasto) { case K_ESC : break; case K_QUIT : if (registra(*_msk,TRUE) == K_ESC) tasto = K_ESC; break; case K_SAVE : registra(*_msk,FALSE); break; default: break; } } _msk->close_modal(); } KEY TDati_anagrafici::registra(TMask& m, bool check_dirty) { KEY k = K_YES; if (check_dirty && m.dirty()) k = yesnocancel_box("Registrare le modifiche?"); if (k == K_YES) { if (_ana == 'A' || _ana == 'B') registra_fis_giu(); if (_ana == 'C') registra_rappr(); if (_ana == 'E') registra_caaf(); if (_ana == 'F') registra_dirprof(); if (_ana == 'G') registra_dativari(); } return k; } void TDati_anagrafici::registra_fis_giu() { TLocalisamfile base(LF_BASE); long codditta; codditta = _msk->get_long(F_CODDITTA); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { int rss = _msk->get_int(F_RSS); base.put("RSS", rss); base.rewrite(); } else { int rss = _msk->get_int(F_RSS); base.zero(); base.put("CODDITTA", codditta); base.put("RSS", rss); base.write(); } } void TDati_anagrafici::registra_rappr() { TLocalisamfile base(LF_BASE); const long codditta = _msk->get_long(F_CODDITTA); const long CodiceRappr = _msk->get_long(F_ANAGR); const int CaricaRappr = _msk->get_int(F_CARRAP); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { base.put("RAPPR", CodiceRappr); base.put("CARRAPP", CaricaRappr); base.rewrite(); } else { base.zero(); base.put("RAPPR", CodiceRappr); base.put("CARRAPP", CaricaRappr); base.write(); } } void TDati_anagrafici::registra_caaf() { TLocalisamfile ditte(LF_NDITTE); TLocalisamfile base (LF_BASE); long codditta; char tipoa = 'G'; // Registro il codice caaf sull'archivio base codditta = _msk->get_long(F_CODDITTA); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { long codice = _msk->get_long(F_ANAGR); long dittacaaf = _msk->get_long(F_DITTACAAF); base.put("CODCAAF", codice); base.put("DITTACAAF", dittacaaf); base.rewrite(); } else { long codice = _msk->get_long(F_ANAGR); long dittacaaf = _msk->get_long(F_DITTACAAF); base.zero(); base.put("CODDITTA", codditta); base.put("CODCAAF", codice); base.put("DITTACAAF", dittacaaf); base.write(); } } void TDati_anagrafici::registra_dirprof() { TLocalisamfile base (LF_BASE); long codditta; codditta = _msk->get_long(F_CODDITTA); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { long codpro = _msk->get_long(F_ANAGR); bool flart4 = _msk->get_bool(F_CONTROLLI); base.put("CODPRO", codpro); base.put("FLART4", flart4); base.rewrite(); } else { long codpro = _msk->get_long(F_ANAGR); bool flart4 = _msk->get_bool(F_CONTROLLI); base.zero(); base.put("CODDITTA", codditta); base.put("CODPRO", codpro); base.put("FLART4", flart4); base.write(); } } void TDati_anagrafici::registra_dativari() { TLocalisamfile base(LF_BASEBIS); long codditta; codditta = _msk->get_long(F_CODDITTA); base.setkey(1); base.zero(); base.put("CODDITTA", codditta); if (base.read() == NOERR) { TString16 codconc1(_msk->get(F_CODCONC1)); TString16 codconc2(_msk->get(F_CODCONC2)); TString16 codconc3(_msk->get(F_CODCONC3)); int codtes1 = _msk->get_int(F_CODTES1); int codtes2 = _msk->get_int(F_CODTES2); int codtes3 = _msk->get_int(F_CODTES3); base.put("L0CCONC1", codconc1); base.put("L0CCONC2", codconc2); base.put("L0CCONC3", codconc3); base.put("L0CTES1", codtes1); base.put("L0CTES2", codtes2); base.put("L0CTES3", codtes3); base.rewrite(); } else { TString16 codconc1(_msk->get(F_CODCONC1)); TString16 codconc2(_msk->get(F_CODCONC2)); TString16 codconc3(_msk->get_int(F_CODCONC3)); int codtes1 = _msk->get_int(F_CODTES1); int codtes2 = _msk->get_int(F_CODTES2); int codtes3 = _msk->get_int(F_CODTES3); base.zero(); base.put("CODDITTA", codditta); base.put("L0CCONC1", codconc1); base.put("L0CCONC2", codconc2); base.put("L0CCONC3", codconc3); base.put("L0CTES1", codtes1); base.put("L0CTES2", codtes2); base.put("L0CTES3", codtes3); base.write(); } } int m71100 (int argc, char* argv[]) { TDati_anagrafici main_app(*argv[2]); main_app.run(argc, argv, main_app._titolo); return TRUE; }