#ifndef __CE2101_H #define __CE2101_H #ifndef __RELATION_H #include #endif enum TTipo_cespite { tc_materiale, tc_immateriale, tc_pluriennale }; enum TTipoFabbricato { tf_nessuno, tf_industriale, tf_altro }; enum TTipoVeicolo { tv_nessuno, tv_automobile, tv_motociclo, tv_ciclomotore, tv_altro }; class TCespite : public TRectype { int _tipo_sit; TRectype _salini, _salpro; TRectype _ammini, _ammpro; //parametri per il calcolo in memoria utilizzato per proiezioni contabili bool _in_memory; TArray _movce, _movam, _ammmv; real _fraction; protected: real un_milione() const; void fill_sal_key(TRectype& ammce, int esercizio, int tpsal) const; void read_sal(int esercizio); void save_sal() const; void fill_amm_key(TRectype& ammce, int esercizio, int tpsal) const; void read_amm(int esercizio); void save_amm() const; void set_msg05(const char* msg); bool valido(); real get_limit() const; void prepara_saldi(bool is_valid); real mov_val_amm(const TRectype& tmv) const; real mov_res_amm(const TRectype& tmv, const TRectype& tmvam) const; real calcola_spese_manutenzione(const real& valamm); void rip_jolly(TRelation& rel, const real& num, const real& den, int mode); void rip_elem(TRelation& rel, int mode); void rip_costo(TRelation& rel, int mode); int test_rip(TRelation& rel); const TString& ammini_get(const char* pstar) const; bool ammini_get_bool(const char* pstar) const; real ammini_get_real(const char* pstar) const; void ammpro_put_perc(const char* pfield, const real& p); void calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tmvam); void calc_anni(TRectype& ammmv, const TRectype& tmv, const TRectype& tmvam); void amm_mov_ven(TRelation& rel, const TRectype& tmv, const TRectype& tmvam); real mov_r90_escl_ven(const TRectype& tmv); real mov_r91_escl_ven(const TRectype& tmv); real mov_val_ven(const TRectype& tmv); void cal_valenza(const TRectype& tmv, const TRectype& tmvam, TRectype& ammmv); void elabora_mov_neg(TRelation& rel, TRectype& tmv, TRectype& tmvam); real calc_quota(const real& valamm, const real& perric, const real& residuo, real& pereff, TRelation* mov = NULL); real calc_quote_perse(const real& valamm, const real& peric, const real& residuo, const real& quotamm, bool mov_vend, const TDate& dtmov); void agg_quota(const real& valamm, TRectype& rec, const char* field, bool calcq); void incr_field(TRectype& dst, const char* fdst, const TRectype& src, const char* fsrc, char segno) const; void decr_field(TRectype& dst, const char* fdst, const TRectype& src, const char* fsrc, char segno) const; void applica_rettifiche(TRectype& tmv, TRectype& tmvam); void aggiorna_salpro(const TRectype& tmv, const TRectype& tmvam, char segno); void scansione_movimenti(const TDate& data_limite, bool is_valid); void calc_amm_residui(bool is_valid); void agg_spe_man(bool is_valid); real percentuale_deducibilita() const; bool controllo_fringe_benefit(); public: bool calc_amm(int tipo_sit, const TDate& data_limite, bool calc_spe_man = false, bool in_memory = false); const TRectype& categoria() const; TTipo_cespite tipo() const; TTipoFabbricato fabbricato() const; TTipoVeicolo veicolo() const; bool auto_o_moto() const; const TRectype& sal_ini() const { return _salini; } const TRectype& sal_pro() const { return _salpro; } const TRectype& amm_ini() const { return _ammini; } const TRectype& amm_pro() const { return _ammpro; } real val_amm() const; real res_amm() const; //metodi per collegamento contabilita' const TArray& movce() const { return _movce; } const TArray& ammmv() const { return _ammmv; } const TArray& movam() const { return _movam; } int read(const char* id); void load_saldi(const int tiposit, const int esercizio); TCespite(); TCespite(const char* id); TCespite(const TRectype& rec); virtual ~TCespite() { } }; #endif