#include "tf0400a.h" #include "tfutility.h" #include #include #include #include #include // cache() /**************************************************************************************************** * TSpeCheck_msk ****************************************************************************************************/ class TSpeCheck_msk : public TAutomask { void fillNoFilter(); void fillDiff(); void fillCust(); void getFilFlag(TString& query); void enableEdit(bool en); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TSpeCheck_msk() : TAutomask("tf0400a"){} }; bool TSpeCheck_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch(o.dlg()) { case DLG_RECALC: if(e != fe_button) break; case F_TIPOCONTROLLO: { switch(o.mask().get_long(F_TIPOCONTROLLO)) { case 0: fillNoFilter(); break; case 1: fillDiff(); break; case 2: fillCust(); default: break; } } break; default: break; } return true; } void TSpeCheck_msk::fillNoFilter() { TString query = "USE RMOVIVA\n"; query << "SELECT (23.REG!=\"\")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=\"" << get(F_TIPOCF) << "\")"; if(get(F_CODCF) != "") query << "&&STR((23.CODCF=#CODCF))"; getFilFlag(query); } void TSpeCheck_msk::fillDiff() { } void TSpeCheck_msk::fillCust() { TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR"); static const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV"); static const TString cofiDitta = cache().get(LF_ANAG, key, "COFI"); TString query = "USE TRASFATT\n"; query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")"; if(get(F_CODCF) != "") query << "&&STR((CODCF=#CODCF))"; getFilFlag(query); TISAM_recordset rset(query); TDate dadatareg = get_date(F_DATAINI); if(!dadatareg.ok()) { dadatareg = TDate(01, 01, 2017); set(F_DATAINI, dadatareg); } TDate adatareg = get_date(F_DATAFIN); if(!adatareg.ok()) { adatareg = TDate(TODAY); set(F_DATAFIN, adatareg); } // Setto le variabili rset.set_var("#DADATAREG", dadatareg); rset.set_var("#ADATAREG", adatareg); if(get(F_CODCF) != "") rset.set_var("#CODCF", get(F_CODCF)); int nrec = rset.items(); TSheet_field& s = sfield(F_RIGHE); // Nascondo lo sheet s.hide(); if(!s.empty()) s.destroy(); for(bool ok = rset.move_first(); ok; ok = rset.move_next()) { TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string()); TToken_string& row = s.row(-1); row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG)); row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC)); row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC)); row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA)); row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE)); row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA)); // NATURA row.add(natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA)); // DETR row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB)); row.add(rset.get("TIPO").as_string(), s.cid2index(A_TIPOCF)); row.add(rset.get("CODCF").as_string(), s.cid2index(A_CODCF)); row.add(rset.get("OCCAS").as_string(), s.cid2index(A_OCFPI)); // RSOC row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC)); // RFSO row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO)); // RSOC RFSO row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); // AUTOFATT if(rset.get("AUTOFATT").as_string() == "X" || pivaDitta == clifo.get("PAIV")) { row.add("X", s.cid2index(A_AUTOFATT)); row.add(pivaDitta, s.cid2index(A_PAIV)); row.add(cofiDitta, s.cid2index(A_COFI)); } else { row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale } row.add(rset.get("TFINVIO").as_string() == "X", s.cid2index(A_SPEDITA)); row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO)); } s.force_update(); s.show(); enableEdit(true); } void TSpeCheck_msk::getFilFlag(TString& query) { switch(get_int(F_FLAG)) { case 1: query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\")||(TFINVIO=\"F\")||(TFINVIO=\"E\"))"; break; case 2: query << "&&(TFINVIO=\"I\")"; break; case 3: query << "&&(TFINVIO=\"N\")"; case 0: default: break; } } void TSpeCheck_msk::enableEdit(bool en) { // Abilito i bottoni enable(DLG_SAVEREC,en); enable(DLG_CANCEL, en); TSheet_field& s = sfield(F_RIGHE); // Abilito i campi enable(A_ELIMINA,en); enable(A_DATAREG,en); enable(A_TIPODOC,en); enable(A_NUMDOC,en); enable(A_DATADOC,en); enable(A_ALIQUOTA,en); enable(A_IMPONIBILE,en); enable(A_IMPOSTA,en); enable(A_NATURA,en); enable(A_TIPOCF,en); enable(A_CODCF,en); enable(A_OCFPI,en); } /**************************************************************************************************** * TSpeCheck_app ****************************************************************************************************/ class TSpeCheck_app : public TSkeleton_application { public: virtual void main_loop(); }; TSpeCheck_app& app() { return (TSpeCheck_app&)main_app(); } void TSpeCheck_app::main_loop() { TSpeCheck_msk msk; msk.run(); } int tf0400(int argc, char* argv[]) { TSpeCheck_app app; app.run(argc, argv, TR("Controlli Spesometro")); return 0; }