#ifndef __EF0101_H #define __EF0101_H #ifndef __RECARRAY_H #include #endif #include #include #include //////////////////////////////////////////////////////////// // Definizione dell'oggetto Effetto con la classe TEffetto// //////////////////////////////////////////////////////////// class TEffetto:public TRectype { TRecord_array _righe; // righe dell'effetto TRecord_array _cess; // cessionari dell'effetto protected: // ritorna la prossima chiave long get_next_key(const long codcf) const; // permette di leggere il record passato nel file passato int leggi(TLocalisamfile& f, const TRectype& rec, word lockop = _nolock); public: // Duplica l'effetto virtual TObject* dup() const; // rinumera la chiave 1 long renum(long numeff = 0); // ritorna un riferimento alla testata dell'effetto const TRectype& head() const { return *this; } // ritorna un riferimento alla testata dell'effetto TRectype& head() { return *this; } // ritorna un riferimento alle righe dell'effetto TRecord_array& righe() { return _righe;} // ritorna un riferimento ai cessionari dell'effetto TRecord_array& cess() { return _cess;} // ritorna la riga i_esima dei cessionari TRectype& row_c(int i, bool create=false) { return _cess.row(i,create); } // ritorna la riga i delle righe TRectype& row_r(int i, bool create=false) { return _righe.row(i,create); } // ritorna la riga i delle righe const TRectype& row_r(int i) const { return _righe.row(i); } // ritorna il numero delle righe presenti nelle righe effetto int rows_r() const { return _righe.rows(); } // ritorna il numero delle righe presenti nei cessionari int rows_c() const { return _cess.rows(); } // elimina l'elemento riga nella posizione n nelle righe effetto bool destroy_row_r(int n, bool pack = false) { return _righe.destroy_row(n, pack); } // elimina tutti gli elementi riga nelle righe effetto void destroy_rows_r() { _righe.destroy_rows(); } // elimina l'elemento riga nella posizione n nei cessionari bool destroy_row_c(int n, bool pack = false) { return _cess.destroy_row(n, pack); } // elimina tutti gli elementi riga nei cessionari void destroy_rows_c() { _cess.destroy_rows(); } // restituisce il prossimo effetto int next(TBaseisamfile& f); // legge il record passato, con chiave 1 int read(TLocalisamfile& f, const TRectype& rec, word lockop = _nolock); // legge il record passato, con chiave 4 int read(TLocalisamfile& f, char tipodist, long ndist, int nrigadist, word lockop = _nolock); // scrive l'effetto, sempre usando la chiave 1 int write(TLocalisamfile& f, bool force = false); // riscrive l'effetto int rewrite(TLocalisamfile& f) { return write(f, TRUE); } // rimuove l'effetto int remove(TLocalisamfile& f) const; // restituisce il numero progressivo dell'effetto estraendolo dal record long numero() const { return get_long(EFF_NPROGTR); } // restituisce il codice del cliente intestatario dell'effetto estraendolo dal record long codicec() const { return get_long(EFF_CODCF); } // restituisce la data di scadenza dell'effetto estraendola dal record TDate datasc() const { return get_date(EFF_DATASCAD); } // restituisce il tipo di distinta a cui appartiene l'effetto estraendolo dal record char tipodist() const { return get_char(EFF_TIPODIST); } // restituisce il numero della distinta a cui appartiene l'effetto estraendolo dal record long ndist() const { return get_long(EFF_NDIST); } // restituisce il numero della riga distinta a cui appartiene l'effetto estraendolo dal record int nrgdist() const { return get_int(EFF_NRIGADIST); } // restituisce l'importo dell'effetto real importo(const bool valuta = false) const { return get_real(valuta ? EFF_IMPORTOVAL : EFF_IMPORTO); } const bool in_valuta() const; const char get_tipo() const ; // setta i campi per la quarta chiave del file void put_key(TRectype& rec,char tipodist, long ndist, int nrigadist = 0); // setta i campi per la prima chiave del file void put_key(TRectype& rec,long numeff) const; // restituisce true se l'effetto si riferisce ad una sola fattura bool fatt() const; // restituisce i dati relativi alle fatture a cui si riferisce l'effetto TToken_string& dati_fatt(long num, const bool valuta, TToken_string& dati); // restituisce i dati codnum, ndoc, anno relativi alle fatture a cui si riferisce l'effetto TToken_string& altridati_fatt(long num, TToken_string& dati); // costruttore di default TEffetto(); // costuisce l'effetto con il record passato TEffetto(const TRectype& rec); // costuttore di copia TEffetto(const TEffetto& eff); // distruttore di default virtual ~TEffetto() {} }; #endif//__EF0101_H