#include <recarray.h>
#include <printer.h>

#include "soggetti.h"

#define IDON_SI "SI"
#define IDON_AF "AF"
#define IDON_PL "PL"
#define IDONEITA "ID"
#define SOSPENSIONE "SO"

bool is_idon_one(TString16 idon, const char* tipo);
bool is_idon(TString16 id1, TString16 id2, TString16 id3, TString16 id4, const char* tipo);
bool is_donaz(TString16 don, const char* tipo);
char modstato_tcs(const TString16 tipo);
void con_reord(TRectype& soggetto, TRecord_array* controlli, TRecord_array* idoneita);
void ido_reord(TRectype& soggetto, TRecord_array* idoneita);
void don_datepross(TRectype& soggetto);
void calcola_donazioni_lib(TRectype& soggetto, TRecord_array* donazioni);
bool configura_stampante(TPrinter& p, const char* configurazione, const char* tipostampa);

class TSoggetto : public TRectype
{                              
protected:
  int read(const long codice);
  virtual TSoggetto & copy(const TSoggetto & a) { return (TSoggetto &) TRectype::operator=((TRectype &)a);}

public:       
  TObject* dup() const { return new TSoggetto(*this); }
  const long codice() const { return get_long(SOG_CODICE);}  
  const TString& cognome() const { return get(SOG_COGNOME); } 
  const TString& nome() const { return get(SOG_NOME); } 

  TSoggetto(const long codice = 0);
  TSoggetto(const TSoggetto & a);
  TSoggetto(const TRectype& rec);
  virtual ~TSoggetto() {}
};