#ifndef __FELIB_H__ #define __FELIB_H__ #ifndef __TEXTSET_H__ #include #endif /////////////////////////////////////////////////////////// // TAnagrafica /////////////////////////////////////////////////////////// class TAnagrafica : public TObject { char _tipo; // F o G TString16 _cofi, _paiv; TString80 _ragsoc; TString4 _com_nasc, _com_res; TString80 _loc_res, _ind_res; TDate _data_nasc; int _allegato, _stato_estero; TAnagrafica& operator =(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } protected: void build_ind_res(const TRectype& rec, const char* ind, const char* civ); public: virtual bool ok() const { return _tipo=='F' || _tipo == 'G'; } bool fisica() const { return _tipo == 'F'; } bool giuridica() const { return _tipo == 'G'; } const TString& codice_fiscale() const { return _cofi; } const TString& partita_IVA() const { return _paiv; } const TString& ragione_sociale() const { return _ragsoc; } const TString& cognome() const { return _ragsoc.left(24); } const TString& nome() const { CHECK(fisica(), "Non chiedere nome giuridico!"); return _ragsoc.mid(30,20); } char sesso() const { CHECK(fisica(), "Solo sesso fisico!"); return (_cofi[9] >= '4') ? 'F' : 'M'; } const TDate& data_nascita() const { return _data_nasc; } int stato_estero() const { return _stato_estero; } int inserimento_in_allegato() const { return _allegato; } const TString& comune_nascita() const; const TString& provincia_nascita() const; const TString& comune_residenza() const; const TString& provincia_residenza() const; const TString& localita_residenza() const { return _loc_res; } const TString& indirizzo_residenza() const { return _ind_res; } bool init(const TRectype& rec); bool init(int num, const TString& codice) { return init(cache().get(num, codice)); } bool init(int num, long codice) { return init(cache().get(num, codice)); } bool init(int num, char tipo, long codice); bool init(char tipo, long codice, const TString& ocfpi); TAnagrafica() : _tipo('\0') {} TAnagrafica(int lognum, const TString& codice) { init(lognum, codice); } TAnagrafica(int lognum, long codice) { init(lognum, codice); } TAnagrafica(int lognum, char tipo, long codice) { init(lognum, tipo, codice); } TAnagrafica(char tipo, long codice, const TString& ocfpi) { init(tipo, codice, ocfpi); } TAnagrafica(const TRectype& rec) { init(rec); } }; /////////////////////////////////////////////////////////// // TDati_rilevanti_set /////////////////////////////////////////////////////////// class TDati_rilevanti_set : public TAS400_recordset { int _anno; protected: virtual bool set_field(const TAS400_column_info& fi, const TVariant& var); virtual const TVariant& get_field(const TAS400_column_info& fi) const; void init(); bool set_val(int n, const TVariant& v) { return TAS400_recordset::set(n-1, v); } public: bool set(unsigned int n, const TVariant& v) { return set_val(n, v); } bool set(unsigned int n, const TString& v) { return set_val(n, v); } bool set(unsigned int n, char v) { TString4 str; str << v; return set_val(n, str); } bool set(unsigned int n, int v) { return set_val(n, long(v)); } bool set(unsigned int n, const real& v) { return set_val(n, v); } bool set(unsigned int n, const TDate& v) { return set_val(n, v); } void add_header(const TMask& msk, int num_inv = 1, int tot_inv = 1); void add_footer(); bool split(const TFilename& name, const TRecnotype maxalleg = 15000); int anno() const { return _anno; } TDati_rilevanti_set(int anno); TDati_rilevanti_set(const TFilename& file); }; /////////////////////////////////////////////////////////// // TDati_rilevanti_rep /////////////////////////////////////////////////////////// class TCofi_cache : public TCache { TLocalisamfile _clifo, _occas; protected: virtual TObject* key2obj(const char* key); public: const TString& cofi2ragsoc(char tipocf, const TString& cofi); const TString& paiv2ragsoc(char tipocf, const TString& paiv); TCofi_cache() : _clifo(LF_CLIFO), _occas(LF_OCCAS) { } }; class TDati_rilevanti_rep : public TReport { TCofi_cache _cofi; protected: const TString& cofi2ragsoc(char tipocf, const TString& cofi) const { return ((TDati_rilevanti_rep*)this)->_cofi.cofi2ragsoc(tipocf, cofi); } const TString& paiv2ragsoc(char tipocf, const TString& cofi) const { return ((TDati_rilevanti_rep*)this)->_cofi.paiv2ragsoc(tipocf, cofi); } virtual bool get_usr_val(const TString& name, TVariant& var) const; public: TDati_rilevanti_rep(const TFilename& file); }; #endif