Aggiunti metodi set, operatori = e costruttori di copia a TRata e TRate_doc

Correto metodo di lettura rate


git-svn-id: svn://10.65.10.50/trunk@5704 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-12-05 17:44:48 +00:00
parent 84c3f53143
commit 72a110b90a
2 changed files with 59 additions and 16 deletions

View File

@ -41,11 +41,14 @@ public:
void set_impprovv(real& r) { _impprovv = r; }
void set_saldata(bool b = TRUE) { _saldata = b; }
void set_generata(const bool g = TRUE) { _generata = g ? 'D' : ' '; }
void set(TRectype& rec);
void set(const TRectype& rec);
void set(const TRata& r);
void set(TToken_string& t);
TRata(TRectype& rec);
const TRata& operator = (const TRata & r) { set(r);return *this;}
TRata(const TRectype& rec);
TRata(const TRata & r) { set(r);}
TRata() { _generata = ' ';}
~TRata() {}
virtual ~TRata() {}
};
class TRate_doc : public TObject
@ -61,8 +64,8 @@ class TRate_doc : public TObject
public:
virtual TObject* dup() const { return new TRate_doc(*this); }
const int anno() const { return _anno; }
const TString16& codnum() const { return _codnum; }
const TString16& codval() const { return _codval; }
const TString& codnum() const { return _codnum; }
const TString& codval() const { return _codval; }
const long ndoc() const { return _ndoc; }
const long codcf() const { return _codcf; }
const TDate datadoc() const { return _datadoc; }
@ -80,10 +83,13 @@ public:
void sort_rate() {_rows.sort();}
// Controlla che la somma delle provvigioni delle singole rate sia <= della provvigione del documento
bool ok_provvigione();
void set(TRectype& rec);
void set(const TRectype& rec);
void set(const TRate_doc & r);
void set(TToken_string& t);
TRate_doc(TRectype& rec);
~TRate_doc() {}
const TRate_doc & operator =(const TRate_doc& r) { set(r); return *this;}
TRate_doc(const TRectype& rec);
TRate_doc(const TRate_doc& r) { set(r);}
virtual ~TRate_doc() {}
};
class TProvvigioni_agente : public TRectype
@ -121,7 +127,7 @@ public:
void destroy() { _rate.destroy(); }
TProvvigioni_agente(const char* agente);
TProvvigioni_agente() ;
~TProvvigioni_agente();
virtual ~TProvvigioni_agente();
};
class TAgente : public TRectype

View File

@ -70,12 +70,18 @@ int TProvvigioni_agente::read(const char* agente, const int anno, const char* co
key.format("%4d%4s%7ld",anno1,(const char*)codnum1,ndoc1); // Compone la chiave
const bool exist = _rate.is_key(key); // Guarda se esiste gia' questo documento
TRate_doc com_rata(r);
TRate_doc& rd = exist ? (TRate_doc&) _rate[key] : com_rata;
if (!exist)
_rate.add(key,(TRate_doc*)new TRate_doc(r), exist);
TRate_doc& rd = (TRate_doc&)_rate[key];
//TRate_doc com_rata(r);
//TRate_doc& rd = exist ? (TRate_doc&) _rate[key] : com_rata;
TRata* rt = new TRata(r);
rd.add_rata(rt);
_rate.add(key,rd,exist); // Sostituisce/aggiunge l'elemento
//_rate.add(key,rd,exist); // Sostituisce/aggiunge l'elemento
}
// Dopo aver letto le righe, ordina le rate per ogni documento
@ -219,7 +225,7 @@ void TProvvigioni_agente::remove_rate(const char* key)
/////////////////////////////////////////////////////////////////////////////////
// TRate_doc
/////////////////////////////////////////////////////////////////////////////////
TRate_doc::TRate_doc(TRectype& rec)
TRate_doc::TRate_doc(const TRectype& rec)
{
set(rec); // bleah!
}
@ -242,7 +248,7 @@ bool TRate_doc::ok_provvigione()
return totprov <= _impprdoc; // controlla che tale somma e' compresa nel totale provvigione del documento
}
void TRate_doc::set(TRectype& rec)
void TRate_doc::set(const TRectype& rec)
{
CHECK(rec.num() == LF_PROVV,"Il record non ha il tracciato di LF_PROVV");
_anno = rec.get_int(PROV_ANNO);
@ -258,6 +264,21 @@ void TRate_doc::set(TRectype& rec)
_cambio = rec.get_real(PROV_CAMBIO);
}
void TRate_doc::set(const TRate_doc& r)
{
_anno = r._anno;
_codnum = r._codnum;
_codval = r._codval;
_ndoc = r._ndoc;
_codcf = r._codcf;
_datadoc = r._datadoc;
_datacambio = r._datacambio;
_impdoc = r._impdoc;
_impprdoc = r._impprdoc;
_impnetdoc = r._impnetdoc;
_cambio = r._cambio;
}
void TRate_doc::set(TToken_string& t)
{
CHECK(t.items() >= 11, "Numero di items non valido");
@ -306,7 +327,7 @@ void TRata::set(TToken_string& t)
_tipopagpr = t.get_int(10);
}
void TRata::set(TRectype& rec)
void TRata::set(const TRectype& rec)
{
CHECK(rec.num() == LF_PROVV,"Il record non ha il tracciato di LF_PROVV");
_datascad = rec.get_date(PROV_DATASCAD);
@ -323,11 +344,27 @@ void TRata::set(TRectype& rec)
_tipopagpr = rec.get_int(PROV_TIPOPAGPR);
}
TRata::TRata(TRectype& rec)
TRata::TRata(const TRectype& rec)
{
set(rec);
}
void TRata::set(const TRata& r)
{
_datascad = r._datascad;
_tipopag = r._tipopag;
_imprata = r._imprata;
_impprovv = r._impprovv;
_pagato = r._pagato;
_provvpag = r._provvpag;
_pagmat = r._pagmat;
_provvmat = r._provvmat;
_saldata = r._saldata;
_nrata = r._nrata;
_generata = r._generata;
_tipopagpr = r._tipopagpr;
}
int TAgente::read(const char * codice)
{
TLocalisamfile f(LF_AGENTI);