#ifndef __CALIB02_H #define __CALIB02_H #ifndef __AUTOMASK_H #include #endif #ifndef __REPORT_H #include #endif #ifndef __CGLIB01_H #include "../cg/cglib01.h" #endif /////////////////////////////////////////////////////////// // TAnal_bill /////////////////////////////////////////////////////////// // Classe simile al TBill, che contiene un conto piu' o meno completo di analitica class TAnal_bill : public TSortable { TString _conto, _costo, _commessa, _fase; protected: void copy(const TAnal_bill& bill); public: virtual int compare(const TSortable& s) const; bool match(const TAnal_bill& b) const; public: void set_conto(const char* c); void set_costo(const char* c); void set_commessa(const char* c); void set_fase(const char* c); const TString& conto() const; const TString& costo() const; const TString& commessa() const; const TString& fase() const; TIndbil indicatore_bilancio() const; const TString& testata() const; bool get(const TRectype& rec); void reset(); const TAnal_bill& operator=(const TAnal_bill& bill); TAnal_bill(); TAnal_bill(const TAnal_bill& bill); TAnal_bill(const char* conto, const char* costo = "", const char* commessa = "", const char* fase = ""); TAnal_bill(const TRectype& rec); }; /////////////////////////////////////////////////////////// // TAnal_balance /////////////////////////////////////////////////////////// #define _saldanal_consuntivo 0x1 #define _saldanal_preventivo 0x2 #define _saldanal_variazione 0x4 #define _saldanal_preventivi 0x6 #define _saldanal_qualsiasi 0x7 #define _saldanal_ultima_imm 0x8 #define _saldanal_consuntivo_indiretto 0x10 #define _saldanal_preventivo_indiretto 0x20 #define _saldanal_variazione_indiretto 0x40 #define _saldanal_preventivi_indiretto 0x60 #define _saldanal_qualsiasi_indiretto 0x70 #define _saldanal_riclassify 0x100 struct TSaldanal : public TObject { TImporto _ini, _dare, _avere, _fin; TImporto _iniind, _dareind, _avereind, _finind; bool _movimentato; protected: void copy(const TSaldanal& sa); public: TObject* dup() const { return new TSaldanal(*this); } const TSaldanal& operator=(const TSaldanal& sa) { copy(sa); return *this; } TSaldanal() : _movimentato(false) { } TSaldanal(const TSaldanal& sa) { copy(sa); } }; /////////////////////////////////////////////////////// // Metodi sciolti ma decisivi /////////////////////////////////////////////////////// const TSaldanal& ca_saldo(const TAnal_bill& bill, const TDate& dal, const TDate& al, word tipi = _saldanal_consuntivo); TImporto ca_get_imp(const TRecordset& rs, const char* sez, const char* imp); //////////////////////////////////////////////////////// // TPconana_recordset //////////////////////////////////////////////////////// class TPconana_recordset : public TISAM_recordset { char _tipo; word _tipimov; TString _da_conto, _a_conto; int _conto_minlen; TAnal_bill _bill; TDate _dal, _al; bool _movimentati, _nonnulli; // Variabili per verifica conti contabili col flag di analitica bool _is_anal[3]; protected: bool valid_record(const TRelation& rel) const; static bool pianoconti_filter(const TRelation* rel); virtual void set_custom_filter(TCursor& cursor) const; public: virtual const TVariant& get(const char* column_name) const; void set_tipo(char tipo); void set_filter(char tipo, const char* da_conto, const char* a_conto, const char* costo, const char* commessa, const char* fase, const TDate& dal, const TDate& al, word tipimov, bool movimentati, bool nonnulli); TPconana_recordset(char tipo = ' '); }; /////////////////////////////////////////////////////////// // TAnal_rapport /////////////////////////////////////////////////////////// class TAnal_report : public TReport { unsigned int _first_msg; protected: // protected is safer virtual size_t get_usr_words(TString_array& words) const; virtual bool execute_usr_word(unsigned int opcode, TVariant_stack& stack); virtual bool use_mask() { return false; } char determina_tipo_pdc(TVariant_stack& stack) const; // usata dalle msg_format_conto* virtual void msg_format(int logicnum, TVariant_stack& stack); virtual void msg_format_costo (TVariant_stack& stack); virtual void msg_format_commessa (TVariant_stack& stack); virtual void msg_format_fase (TVariant_stack& stack); virtual void msg_format_conto (TVariant_stack& stack); virtual void msg_format_commessa_costo(TVariant_stack& stack); virtual void msg_format_conto_descr (TVariant_stack& stack); public: // meglio pubic? }; /////////////////////////////////////////////////////////// // TAnal_rapport_mask /////////////////////////////////////////////////////////// class TAnal_report_mask : public TAutomask { protected: void create_sheet(short sheet_id); int create_sheet_fields(short sheet_id, int lf, int& y, short& dlg); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: int get_row_bill(TSheet_field& sf, int r, TAnal_bill& bill); int set_row_bill(TSheet_field& sf, int r, const TAnal_bill& bill); bool esistono_riclassificazioni() const; TAnal_report_mask(const char* name) : TAutomask(name) {} }; #endif