diff --git a/src/cg/cglib.h b/src/cg/cglib.h index ae7e45049..1afd19c35 100644 --- a/src/cg/cglib.h +++ b/src/cg/cglib.h @@ -1295,4 +1295,64 @@ public: ~TTransfer_file(); }; +class TMovimentoPN : public TRelation +{ + // class TMovimentoPN : public TRelation + // @END + + // @DPRIV + TRecord_array _cg, _iva; + TRecord_array _old_iva; + TDate _olddataliq; + // @END + +protected: + // @FPROT + + int registra(bool re, bool force); + int read_mov_rows(); + void update_rev_charge(); + + // @END + +public: + real indetraibile_al(const TString& codind, const TCausale& caus, int annodoc) const; + // @FPUB + virtual int next(TReclock lockop = _nolock) { return (file().next(lockop) || read_mov_rows()); } + virtual int prev(TReclock lockop = _nolock) { return (file().prev(lockop) || read_mov_rows()); } + virtual int first(TReclock lockop = _nolock) { return (file().first(lockop) || read_mov_rows()); } + virtual int last(TReclock lockop = _nolock) { return (file().last(lockop) || read_mov_rows()); } + virtual int skip(TRecnotype nrec, TReclock lockop = _nolock) { return (file().skip(nrec, lockop) || read_mov_rows()); } + virtual int read(TIsamop op = _isgteq, TReclock lockop = _nolock); + virtual int write (bool force = true); + virtual int rewrite(bool force = true); + virtual int remove(); + + const TRecord_array& cg_rows() const { return _cg; } + TRecord_array& cg_rows() { return _cg; } + const TRecord_array& iva_rows() const { return _iva; } + TRecord_array& iva_rows() { return _iva; } + TRectype& cg(int i); + TRectype& iva(int i); + TRectype & head() { return lfile().curr(); } + int cg_items() const { return _cg.rows(); } + int iva_items() const { return _iva.rows(); } + void destroy_rows(long numreg); + void destroy_cg_row(int i); + void destroy_iva_row(int i); + + int date2liq(const TDate& data) const; // Estrae dalla data il mese di liquidazione + char frequenza_versamenti(int year) const; // Ritorna 'M'ensile o 'T'rimestrale + bool controlla_liquidazione(const TDate& data, TRegistro& reg, bool reset = false) const; + int analizza_riga_IVA(const real& imptot, const real& ivatot, const TCausale& caus, + int annodoc, const TString& codiva, const TString& codind, + real& imp_det, real& iva_det, real& imp_ind, real& iva_ind) const; + void adjust_rowtypes(); + + TMovimentoPN& get_sum_imponibile_imposta(real& s_imponibili, real& s_imposte); + + TMovimentoPN(); + virtual ~TMovimentoPN() {} +}; + #endif \ No newline at end of file