campo-sirio/ve/velib01.h
alex 6ef2350eb9 Lavoro all'11/08/96
git-svn-id: svn://10.65.10.50/trunk@3371 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-08-12 08:32:28 +00:00

163 lines
4.7 KiB
C++
Executable File

#ifndef __VELIB01_H
#define __VELIB01_H
#ifndef __RELATION_H
#include <relation.h>
#endif
real lordo2netto(real& lordo, const TString& codiva, bool is_valuta = FALSE);
real netto2lordo(const real& netto, const TString& codiva, bool is_valuta = FALSE);
real lordo2netto(real& lordo, const real& iva, bool is_valuta = FALSE);
real netto2lordo(const real& netto, const real& iva, bool is_valuta = FALSE);
class TMask;
class TTipo_documento : public TObject
{
TRectype _rec;
TMask* _mask;
protected:
int read(const char* tipodoc);
public:
TObject* dup() const { return new TTipo_documento(codice()); }
public:
enum TCondizione_uguaglianza
{ cambio, sconto, tipo_documento, numerazione,
pagamento, banca_appoggio, listino, agente,
spedizione, porto, causale_trasporto, vettori };
const TString & profile_name() const { return _rec.get("S4");}
const TString & mask_name() const { return _rec.get("S4");}
const TString& codice() const { return _rec.get("CODTAB");}
bool uguale(TCondizione_uguaglianza u) const { return _rec.get("S2")[(int)u]; }
TTipo_documento(const char* tipodoc = NULL);
TTipo_documento(const TRectype& rec);
virtual ~TTipo_documento();
};
class TDocumento : public TObject
{
static TAssoc_array _tipi;
TRectype _head; // Record di testata
TRecord_array _rows; // Array di TRectype per le righe documenti di vendita.
public:
int rows() const { return _rows.rows(); }
const TRectype & head() const { return _head; } // Ritorna la testata del documento
TRectype & head() { return _head; } // Ritorna la testata del documento
const TRectype & operator[](int index) const { return _rows.row(index); } // Ritorna la riga n-esima del documento
TRectype & operator[](int index) { return _rows.row(index, FALSE); }
TRectype& add_row() { return _rows.row(-1, TRUE); }
bool destroy_row(int n) { return _rows.destroy_row(n); }
void destroy_rows() { _rows.destroy_rows(); }
int read(char provv, int anno, const char* codnum, long numdoc);
int read(const TRectype& rec);
int write(bool re = FALSE) const;
int rewrite() const { return write(TRUE); }
int remove() const;
const TTipo_documento & tipo() const;
const TString & tipodoc() { return _head.get("TIPODOC"); }
const TDate & data() const { return _head.get_date("DATADOC"); }
const TString & numerazione() const { return _head.get("CODNUM"); }
int anno() const { return _head.get_int("ANNO"); }
char tipo_numerazione() const { return _head.get_int("PROVV"); }
long numero() const { return _head.get_long("NDOC"); }
TDocumento ();
TDocumento(char provv, int anno, const char* codnum, long numdoc);
virtual ~TDocumento() { }
};
class TLista_documenti : public TObject
{
TArray _documenti;
public:
int leggi(char tipo, long clifo, const TDate& dd, const TDate& ad);
const TDocumento& operator[] (int n) const { return (const TDocumento&)_documenti[n]; }
TDocumento& operator[] (int n) { return (TDocumento&)_documenti[n]; }
int items() const { return _documenti.items(); }
TLista_documenti() { }
virtual ~TLista_documenti() { }
};
class TLista_clifo : public TObject
{
class TClifo : public TObject
{
long _codice;
long _agente;
long _zona;
protected:
void zero() { _codice = _agente = _zona = 0L; }
void init(const TRectype& rec);
bool read(char tipo, long cod);
public: // TObject
virtual bool ok() const { return _codice > 0; }
public:
long codice() const { return _codice; }
long agente() const { return _agente; }
long zona() const { return _zona; }
TClifo() { zero(); }
TClifo(char tipo, long cod) { read(tipo, cod); }
TClifo(const TRectype& rec);
virtual ~TClifo() { }
};
TArray _clifo;
protected:
virtual char tipo() const pure;
const TClifo& clifo(int n) const { return (TClifo&)_clifo[n]; }
static int sort_by_code(const TObject** o1, const TObject** o2);
static int sort_by_agent(const TObject** o1, const TObject** o2);
static int sort_by_zone(const TObject** o1, const TObject** o2);
public:
int ordina_per_codice();
int ordina_per_agente();
int ordina_per_zona();
int leggi(long dc, long ac, long da = 0, long aa = 0, long dz = 0, long az = 0);
long operator[] (int n) const { return clifo(n).codice(); }
int items() const { return _clifo.items(); }
int find(long cod) const;
int add(long cod);
TLista_clifo() { }
virtual ~TLista_clifo() { }
};
class TLista_clienti : public TLista_clifo
{
protected:
virtual char tipo() const { return 'C'; }
};
class TLista_fornitori : public TLista_clifo
{
protected:
virtual char tipo() const { return 'F'; }
};
#endif