#ifndef __CG2103_H #define __CG2103_H #ifndef __ISAM_H #include #endif #ifndef __CONTO_H #include "conto.h" #endif enum TipoIVA { iva_errata = -1, nessuna_iva = 0, iva_vendite = 1, iva_acquisti = 2, libro_giornale = 5, iva_generica = 9 }; enum TipoConto { spr = 'G', // spese e rimborsi aba = 'A', // abbattimenti attivi abp = 'P', // abbattimenti passivi rpf = 'R', // ritenute professionali asp = 'L', // altre spese dfc = 'C', // differenza cambio tot = 'Z' }; const char* iva2name(TipoIVA i); class TRegistro : public TObject { bool read_att(); protected: TRectype _rec, _att; real _prorata; public: bool read(const char* code, int year); bool reread(); TRegistro& operator =(const TRegistro& r); virtual bool ok() const { return !_rec.empty(); } int tipo() const; TipoIVA iva() const; bool corrispettivi() const; bool sospeso() const { return _rec.get_bool("B1");} const TString& name() const; int year() const; TDate last_reg() const { return _rec.get_date("D2"); } TDate last_print() const { return _rec.get_date("D3"); } long protocol() const { return _rec.get_long("I5"); } const TString& attivita() const { return _rec.get("S8"); } bool agenzia_viaggi(); const TString& tipo_attivita(); bool attivita_mista() { const char a = tipo_attivita()[0]; return a == 'E'; } const real& prorata(); bool update(long uprotiva, const TDate& lastreg); TRegistro(const char* code = "", int year = 0); virtual ~TRegistro() {} }; class TLibro_giornale : public TRegistro { public: bool read(int year); TDate global_last_print() const; TLibro_giornale(int year = 0); virtual ~TLibro_giornale() {} }; class TCausale : public TArray { TRectype _rec; TRegistro _reg; TipoIVA _iva; bool _corrisp; char _sezione_clifo, _sezione_ritsoc; protected: const TRectype& row(int num) const; void calcIVA(); public: // TObject virtual bool ok() const; public: TBill& bill(int num, TBill& c) const; const char* codice() const; const char* descrizione() const; const char* desc_agg(int num) const; bool data_doc() const; bool num_doc() const; bool apertura() const; bool sezionale() const; bool valuta() const; bool intra() const; bool valintra() const; const char* causale_inc_imm() const; const char* tipo_doc() const; TRegistro& reg() const { return (TRegistro&)_reg; } TipoIVA iva() const { return _iva; } bool corrispettivi() const { return _corrisp; } int tipomov() const; bool saldaconto() const; int link_m770() const; bool similar(const TCausale& c) const; char sezione(int riga) const; char sezione_clifo(); char sezione_ritsoc(); virtual bool read(const char* cod, int year); TCausale(const char* code = "", int year = 0); virtual ~TCausale() {} }; class TCodiceIVA : public TRectype { public: TCodiceIVA(const char* codice = NULL); bool read(const char* codice); bool ok() const { return !empty(); } const TString& codice() const { return get("CODTAB"); } real percentuale() const { return get_real("R0"); } const TString& tipo() const { return get("S1"); } }; #endif