#include #include #include #include #include #include "vd1.h" #include "vd1700.h" //////////////// // MASCHERA //////////////// class TPrint_payments_datail_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TPrint_payments_datail_mask(); virtual ~TPrint_payments_datail_mask(); }; TPrint_payments_datail_mask::TPrint_payments_datail_mask() : TAutomask("vd1700") //NON si puo' chiamare vd1700a perche' in tal caso la... //..maschera scatta 2 volte (scatta anche quella omonima del report) { } TPrint_payments_datail_mask::~TPrint_payments_datail_mask() {} bool TPrint_payments_datail_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { const int id = o.dlg(); switch (id) { case F_DADATA: if (e == fe_modify) { const TDate dadata(o.get()); set(F_ANNO, dadata.year()); } break; case F_ADATA: if (e == fe_close) { const TDate adata(o.get()); const TDate dadata = get(F_DADATA); if (adata.year() != dadata.year() || adata < dadata) return error_box(TR("La data finale deve essere maggiore od uguale a quella finale ed appartenere allo stesso anno!")); } break; default: break; } return true; } //////////////////////////////////////////////////////// // REPORT //////////////////////////////////////////////////////// class TPrint_payments_datail_rep : public TReport { TString_array _tipincasso; protected: virtual bool get_usr_val(const TString& name, TVariant& var) const; virtual bool use_mask() {return false;} public: TPrint_payments_datail_rep::TPrint_payments_datail_rep(); }; TPrint_payments_datail_rep::TPrint_payments_datail_rep() { TConfig conf(CONFIG_DITTA, "vd"); for (int i = 1;; i++) { const TString& lab = conf.get("LABPAG", NULL, i); if (lab.empty()) break; _tipincasso.add(lab, i); } } bool TPrint_payments_datail_rep::get_usr_val(const TString& name, TVariant& var) const { if (name.starts_with("#LABINC0")) { const int i = name[8] - '0'; //indicatore del tipo di incasso //cerca il corrispondente label di incasso nell'array con le labels const TString* label = (const TString*)_tipincasso.objptr(i); if (label != NULL) var = *label; return true; } return TReport::get_usr_val(name, var); } /////////////////////////////// // APPLICAZIONE /////////////////////////////// class TPrint_payments_datail : public TSkeleton_application { protected: virtual void main_loop(); }; void TPrint_payments_datail::main_loop() { TPrint_payments_datail_mask mask; while (mask.run() == K_ENTER) { TReport_book book; TString path = mask.get(F_REPORT); if (path.empty()) path = "vd1700a"; TPrint_payments_datail_rep rep; rep.load(path); rep.mask2report(mask); book.add(rep); book.print_or_preview(); } } int vd1700(int argc, char* argv[]) { TPrint_payments_datail a; a.run(argc, argv, "Riepilogo dettagli pagamenti"); return 0; }