#ifndef __CGLIB_H #define __CGLIB_H #ifndef __ISAM_H #include #endif #ifndef __REAL_H #include #endif #ifndef __DATE_H #include #endif #include #include "conto.h" //TLocalisamfile * get_descr_cf(TLocalisamfile * pconti,TLocalisamfile * clifo , int g, int c, long s); class TSaldi_list : public TAssoc_array { public: TSaldi_list (int g, int c, int aec, int aep=0); TRectype* saldi() const; }; #define Saldo TSaldo enum tipobil { DataLimite=1, UltimaImmissione }; class TSaldo { real _saldo, _saldo_iniziale; real _prg_dare, _prg_avere, _prg_daresca, _prg_averesca; int _indbil; TRectype* _saldo_ep; int _annoes; TDate _inizioEs, _fineEs; TString16 _codcaus; TDate _datareg; TDate _datacomp; TString _provv; bool _movimentato; bool _significativo; bool _rec_presente_ec; bool _rec_presente_ep; protected: void InFinEs(int); void leggi_mov(long numreg); // Leggi testata real calcola_saldo_iniziale(int g, int c, long s, int indbil); public: bool movimentato() const { return _movimentato; } bool significativo() const { return _significativo; } bool esiste_saldo() const { return _rec_presente_ec || _rec_presente_ep;} const int EsePre (const int annocorr); // Determina esercizio precedente int annoes () const { return _annoes; } void set_annoes (int anno) { _annoes = anno; } bool causale_mov(long, const TDate&, const TDate&, TString&); const char* causale_chiusura_es(); const char* causale_apertura_es(); bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil); bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil); bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,bool); TRectype& ricerca_progr_prec(int, int, int, long); real saldofin_esprec(int,int,int,long); bool prg_attuali(int,TConto&,real&,real&); bool prg_mov_eliminati(int,TConto&,real&,real&); real saldo() const {return _saldo;} real saldoini() const {return _saldo_iniziale;} real prgdare() const {return _prg_dare;} real prgavere() const {return _prg_avere;} bool prg_attuali(int,TConto&,int,real&,real&); bool prg_mov_eliminati(int,TConto&,int,real&,real&); Saldo(); ~Saldo(); }; class TTab_conti : public TAssoc_array { void do_agg(TConto* tc, int anno_es, const real& importo, char sezione, bool movap, bool provv, bool somma, const char* key); public: void aggiorna_conto(const TConto& tc, int anno_es, const real& importo, char sezione, bool movap, bool provv, bool somma); void aggiorna_conto (int gruppo, int conto, long sottoconto, int anno_es, const real& importo, char sezione, bool movap, bool provv, bool somma); }; class TSaldo_agg : public TObject { TTab_conti _tab_conti; bool _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in // saldi) bool _provv; int _anno_es; // anno esercizio TDate _data_ulmov; // data ultimo movimento long _num_ulmov; // numero ultimo movimento TRectype * _rec; // record corrente sui saldi THash_object * tconti() { return _tab_conti.get_hashobj(); } public: void clear_saldi(int year); void registra(); void aggiorna (const TConto& tc, const real& importo, char sezione, bool somma=TRUE); void aggiorna (int gruppo, int conto, long sottoconto, const real& importo, char sezione, bool somma=TRUE); void set_anno_es(int anno) { _anno_es = anno; } int anno_es() const { return _anno_es; } void set_movap (bool movap) { _movap = movap; } bool movap() const { return _movap; } void set_movprovv (bool p) { _provv = p; } bool movprovv() { return _provv; } void set_data_ulmov (const TDate& data) { _data_ulmov = data; } const TDate& data_ulmov() const { return _data_ulmov; } void set_num_ulmov (long num) { _num_ulmov = num; } long num_ulmov() const { return _num_ulmov; } void reset(); // pulisce l'array dei conti TSaldo_agg(); int items() const { return _tab_conti.items();} }; #endif