campo-sirio/fe/felib.h
guy 5f618c9efe Migliorata gestione TAnagrafica
git-svn-id: svn://10.65.10.50/branches/R_10_00@23180 c028cbd2-c16b-5b4b-a496-9718f37d4682
2016-02-25 11:34:34 +00:00

131 lines
4.6 KiB
C++

#ifndef __FELIB_H__
#define __FELIB_H__
#ifndef __ISAM_H__
#include <isam.h>
#endif
#ifndef __TEXTSET_H__
#include <textset.h>
#endif
///////////////////////////////////////////////////////////
// TAnagrafica
///////////////////////////////////////////////////////////
class TAnagrafica : public TObject
{
char _tipo; // F o G
TString4 _stato_paiv;
TString16 _cofi, _paiv;
TString80 _ragsoc;
TString4 _com_nasc, _com_res;
TString80 _loc_res, _ind_res, _via_res;
TString16 _civ_res, _cap_res;
TDate _data_nasc;
int _allegato, _stato_estero, _stato_nasc;
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);
void split_ragsoc();
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& stato_partita_IVA() const;
const TString& ragione_sociale() const;
const TString& cognome() const;
const TString& nome() const;
char sesso() const { CHECK(fisica(), "Solo sesso fisico!"); return (_cofi[9] >= '4') ? 'F' : 'M'; }
const TDate& data_nascita() const { return _data_nasc; }
bool italiano() const;
bool estero() const { return !italiano(); }
const TString& stato_estero_UNICO() const;
int inserimento_in_allegato() const { return _allegato; }
char is_black_list(const TDate& datareg) const;
const TString& comune_nascita() const;
const TString& provincia_nascita() const;
const TString& codice_comune_residenza() const { return estero() ? EMPTY_STRING : _com_res; }
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; }
const TString& via_residenza() const { return _via_res; }
const TString& civico_residenza() const { return _civ_res; }
const TString& CAP_residenza() const { return _cap_res; }
bool init(const TRectype& rec);
bool init(int num, const TString& codice);
bool init(int num, long codice);
bool init(int num, char tipo, long codice);
bool init(char tipocf, 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); }
};
///////////////////////////////////////////////////////////
// TSpesometro_set
///////////////////////////////////////////////////////////
class TSpesometro_set : public TCSV_recordset
{
protected:
virtual bool set(unsigned int fld, const TVariant& var);
void init();
void add_header_data(int n, const TString& value);
const TString& get_recapito(const TRectype& ndt, const char* numero, const char* prefisso) const;
public:
virtual const TVariant& get(unsigned int column) const;
bool set(unsigned int n, const char* v) { return set(n, TVariant(v)); }
bool set(unsigned int n, const TString& v) { return set(n, TVariant(v)); }
bool set(unsigned int n, char v) { TString4 str; str << v; return set(n, str); }
bool set(unsigned int n, int v) { return set(n, TVariant(long(v))); }
bool set(unsigned int n, bool v) { return set(n, TVariant(v)); }
bool set(unsigned int n, const real& v) { return set(n, TVariant(v)); }
bool set(unsigned int n, const TDate& v) { return set(n, TVariant(v)); }
bool add_header(const TMask& msk);
bool add_footer(const TMask& msk);
TSpesometro_set();
TSpesometro_set(const TFilename& file);
};
///////////////////////////////////////////////////////////
// TSpesometro_rep
///////////////////////////////////////////////////////////
class TSpesometro_rep : public TReport
{
TCache* _cofi;
protected:
const TString& cofi2ragsoc(char tipocf, const TString& cofi) const;
const TString& paiv2ragsoc(char tipocf, const TString& cofi) const;
virtual bool get_usr_val(const TString& name, TVariant& var) const;
public:
TSpesometro_rep(const TFilename& file);
~TSpesometro_rep();
};
// Utility
bool fe_is_nota_variazione(const TRectype& rec);
bool fe_decode_cofi(const TString& cofi, char& sex_nasc, TDate& dt_nasc, TString& com_nasc);
#endif