#include #include #include #include "pconana.h" #include "ca1.h" #include "ca1400a.h" #include "calib01.h" #include "calib02.h" //////////////////////////////////////// // Maschera //////////////////////////////////////// class TMask_print_pdc : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly) {return true;} public: TMask_print_pdc(); virtual ~TMask_print_pdc() {} }; TMask_print_pdc::TMask_print_pdc() :TAutomask("ca1400a") { ca_create_fields(*this, 0, LF_PCONANA, 3, 2, F_DACONTO, F_DACONTO + 100, 0x0, "#DACONTO"); int nfields = ca_create_fields(*this, 0, LF_PCONANA, 3, 8, F_ACONTO, F_ACONTO + 100, 0x0, "#ACONTO"); for (int i = 0; i < nfields; i++) { TMask_field& daconto = field(F_DACONTO + i); daconto.set_group(1); daconto.check_type(CHECK_NORMAL); TMask_field& aconto = field(F_ACONTO + i); aconto.set_group(2); aconto.check_type(CHECK_NORMAL); } } ////////////////////////////////////////// // Report ////////////////////////////////////////// class TRep_print_pdc : public TAnal_report { bool _riclass; int _minlen; protected: virtual bool get_usr_val(const TString& name, TVariant& var) const; public: TRep_print_pdc(); }; TRep_print_pdc::TRep_print_pdc() { //il file di riclassificazione ha almeno un record? TLocalisamfile ric(LF_PANAPDC); _riclass = ric.first() == NOERR; //quale e' la lunghezza del piano dei conti tenendo conto di tutti i livelli tranne l'ultimo? //questa qui! _minlen = ca_multilevel_code_info(LF_PCONANA).total_len(-1); } bool TRep_print_pdc::get_usr_val(const TString& name, TVariant& var) const { if (name == "#SHOW_SUBSECTION") { bool show = false; if (_riclass) { const TString& conto = recordset()->get(PCONANA_CODCONTO).as_string(); show = conto.len() > _minlen; } var.set(show); return true; } return TAnal_report::get_usr_val(name, var); } /////////////////////////////////////////////// // Applicazione /////////////////////////////////////////////// class TPrint_pdc : public TSkeleton_application { bool create(); public: virtual void main_loop(); }; bool TPrint_pdc::create() { TConfig& cfg = ca_config(); const TString& pdc = cfg.get("Pdci", NULL, 1); if (pdc.blank()) { const bool use_cg1 = cfg.get_bool("UsePdcc"); if (use_cg1) { TExternal_app app("cg1 -0"); app.run(true); return false; } else return error_box(TR("Il piano dei conti analitico non e' stato configurato")); } return TSkeleton_application::create(); } void TPrint_pdc::main_loop() { TFilename path; TMask_print_pdc m; while (m.run() == K_ENTER) { TReport_book book; TRep_print_pdc rep; path = m.get(F_REPORT); if (path.empty()) path = "ca1400a"; rep.load(path); rep.mask2report(m); book.add(rep); book.print_or_preview(); } } int ca1400(int argc, char* argv[]) { TPrint_pdc a; a.run(argc, argv, TR("Stampa piano dei conti analitica")); return 0; }