// Programma per la stampa del quadri IVA #include #include #include #include #include #include #include class TQuadro_IVA_mask : public TAutomask { int _year; long _last_row_ditte; long _last_row_reports; TArray _reports; protected: void build_ditte_sheet(); void build_report_sheet(); public: const int get_year() const { return _year; } void restart_ditte() { _last_row_ditte = -1;} void restart_reports() { _last_row_reports = -1;} long get_ditta(); TProgram_report * get_report(); TProgram_report & get_report(const int code) const { return (TProgram_report &) _reports[code];} TISAM_recordset * get_recset(const int code) const { return (TISAM_recordset *)((TProgram_report &) _reports[code - 1]).recordset();} virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); TQuadro_IVA_mask(const char * mask_name); ~TQuadro_IVA_mask() {} }; class TQuadro_IVA_recordset : public TISAM_recordset { TAssoc_array _values; TAssoc_array _types; TQuadro_IVA_mask * _mask; int _year; protected: void add_value(const char *s, real value); void set_bool(const char *s, bool on = false); virtual void load() pure; virtual const TVariant& get(const char* column_name) const; void clear() { _values.destroy(); _types.destroy(); } const real evaluate_recordset(const int code, const int year, const char * field, const char * expr = NULL); const real evaluate_recordset_imponibile(const int code, const int year, const char * expr = NULL) { return evaluate_recordset(code, year, RMI_IMPONIBILE, expr); } const real evaluate_recordset_imposta(const int code, const int year, const char * expr = NULL) { return evaluate_recordset(code, year, RMI_IMPOSTA, expr); } public: TQuadro_IVA_recordset(TQuadro_IVA_mask * mask, const char* use, const int year) : TISAM_recordset(use), _mask(mask), _year(year) { } TQuadro_IVA_recordset(const TQuadro_IVA_recordset * recset); TQuadro_IVA_recordset(const TQuadro_IVA_recordset & recset); int year() { return _year; } virtual ~TQuadro_IVA_recordset() {} }; class TQuadro_IVA_report : public TProgram_report { protected: public: TQuadro_IVA_report(const char * report_name); }; class TQuadro_IVA_app : public TSkeleton_application { TQuadro_IVA_mask * _mask; TFilename _name; const TString20 _print_title; protected: virtual bool create(); virtual void print(); virtual void main_loop(); virtual char last_quadro_report() const { return 'a';} public: virtual TQuadro_IVA_recordset * app_recordset(const char* use, const int year) pure; virtual void load_sheet(TSheet_field & sf) {} virtual bool firm_change_enabled() const { return false; } TQuadro_IVA_mask * mask() const { return _mask; } TQuadro_IVA_app(const char * print_title, const char * name) : _print_title(print_title), _name(name) {} virtual ~TQuadro_IVA_app() {} }; TQuadro_IVA_app & app();