#ifndef __RELATION_H #include #endif #ifndef __RECARRAY_H #include #endif ///////////////////////////////////////////////////////////// // definizione dell'oggetto Effetto con la classe TEffetto // ///////////////////////////////////////////////////////////// class TEffetto:public TRectype { TRecord_array _righe,// righe dell'effetto _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); public: // 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 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); // legge il record passato, con chiave 4 int read(TLocalisamfile& f, char tipodist, long ndist, long nrigadist); // 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("NPROGTR"); } // restituisce il codice del cliente intestatario dell'effetto estraendolo dal record long codicec() const { return get_long("CODCF"); } // restituisce la data di scadenza dell'effetto estraendola dal record TDate datasc() const { return get_date("DATASCAD"); } // restituisce il tipo di distinta a cui appartiene l'effetto estraendolo dal record char tipodist() const { return get_char("TIPODIST"); } // restituisce il numero della distinta a cui appartiene l'effetto estraendolo dal record long ndist() const { return get_long("NDIST"); } // restituisce il numero della riga distinta a cui appartiene l'effetto estraendolo dal record long nrgdist() const { return get_long("NRIGADIST"); } // restituisce l'importo dell'effetto long importo() const { return get_long("IMPORTO"); } //setta i campi per la quarta chiave del file void put_key(TRectype& rec,char tipodist, long ndist, long 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(long num); //restituisce i dati relativi alle fatture a cui si riferisce l'effetto TToken_string* dati_fatt(long num); // costruttore di default TEffetto(); // costuisce l'effetto con il record passato TEffetto(TRectype& rec); // distruttore di default virtual ~TEffetto() {} };