campo-sirio/fe/felib.h
guy ce559da866 Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione clinti corrispondenti a persone fisiche


git-svn-id: svn://10.65.10.50/branches/R_10_00@22489 c028cbd2-c16b-5b4b-a496-9718f37d4682
2011-11-14 17:29:27 +00:00

131 lines
4.6 KiB
C++

#ifndef __FELIB_H__
#define __FELIB_H__
#ifndef __TEXTSET_H__
#include <textset.h>
#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