Correzioni relative ai metodi di lettura (per agente o per singolo

documento), spostato il tipo pagamento sulla rata.


git-svn-id: svn://10.65.10.50/trunk@5432 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-10-23 13:12:11 +00:00
parent 4d8473d254
commit df9fd5a87e
2 changed files with 51 additions and 43 deletions

View File

@ -16,13 +16,14 @@ class TRata : public TSortable
TDate _datascad;
real _imprata, _impprovv, _pagato, _provvpag, _pagmat, _provvmat;
bool _saldata;
int _nrata,_tipopagpr;
int _nrata,_tipopagpr,_tipopag;
char _generata;
public:
virtual TObject* dup() const { return new TRata(*this); }
virtual int compare(const TSortable& s) const;
const int rata() const { return _nrata;}
const int tipopag() const { return _tipopag;}
const TDate datascad() const { return _datascad; }
const real imprata() const { return _imprata;}
const real impprovv() const { return _impprovv;}
@ -34,15 +35,16 @@ public:
const char generata() const { return _generata;}
const int tipopagpr()const { return _tipopagpr;}
void set_rata(int n) { _nrata = n; }
void set_tipopag(int t) { _tipopag = t; }
void set_datascad(TDate& d) { _datascad = d; }
void set_imprata(real& r) { _imprata = r; }
void set_impprovv(real& r) { _impprovv = r; }
void set_saldata(bool b = TRUE) { _saldata = b; }
void set_generata(char g = ' ') { _generata = g; }
void set_generata(const bool g = TRUE) { _generata = g ? 'D' : ' '; }
void set(TRectype& rec);
void set(TToken_string& t);
TRata(TRectype& rec);
TRata() {}
TRata() { _generata = ' ';}
~TRata() {}
};
@ -54,7 +56,6 @@ class TRate_doc : public TObject
long _ndoc,_codcf;
TDate _datadoc,_datacambio;
real _impdoc,_impprdoc,_impnetdoc,_cambio;
char _tipopag;
TArray _rows; // Rate del documento. La rata 0 corrisponde alla provvigione all'atto della fatturazione
// Array di TRata
public:
@ -66,7 +67,6 @@ public:
const long codcf() const { return _codcf; }
const TDate datadoc() const { return _datadoc; }
const TDate datacam() const { return _datacambio;}
const char tipo() const { return _tipopag;}
const real impdoc() const { return _impdoc;}
const real impprdoc() const { return _impprdoc;}
const real cambio() const { return _cambio;}

View File

@ -9,14 +9,14 @@ TProvvigioni_agente::TProvvigioni_agente() : TRectype(LF_AGENTI)
{
// _rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel);
_provv_cur = new TCursor(_provv_rel, "", 2);
}
TProvvigioni_agente::TProvvigioni_agente(const char* agente) : TRectype(LF_AGENTI)
{
//_rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel);
_provv_cur = new TCursor(_provv_rel, "", 2);
read(agente);
}
@ -37,7 +37,8 @@ int TProvvigioni_agente::read(const char* agente, const int anno, const char* co
err = TRectype::read(age); // Carica i dati dell'agente
if (err != NOERR)
return err;
// Legge tramite chiave 2 del file (per documento)
_agente = agente;
TRectype rec_from(LF_PROVV);
@ -88,26 +89,32 @@ int TProvvigioni_agente::rate2rows(int action)
{
// Scorre gli elementi di _rate (TDoc_rate) uno ad uno
// per settare le righe provvigionali
// Scrive tramite chiave 1: utilizzando un solo record array (CODAGE+NROW)
TRecord_array* rows = new TRecord_array(LF_PROVV,PROV_NROW);
TRectype* k = new TRectype(LF_PROVV);
k->put(PROV_CODAGE, _agente);
rows->set_key(k);
TString_array kl;
int nrow = 1; // Numero riga per agente e per documento
const int items = documenti(kl); // Prende l'elenco dei documenti
kl.sort(); // ordina per documento
int err = NOERR;
for (int i = 0; i < items && err == NOERR; i++)
{
TRate_doc& rd = (TRate_doc&)_rate[kl.row(i)];
const int anno = rd.anno();
const int anno = rd.anno();
const long ndoc = rd.ndoc();
TString codnum(rd.codnum());
TRecord_array* rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
TDate datadoc(rd.datadoc());
real impdoc = rd.impdoc();
real impprdoc = rd.impprdoc();
real impnet = rd.impnet();
const long codcf = rd.codcf();
TString codval(rd.codval());
TDate datacam(rd.datacam());
real cambio = rd.cambio();
// Chiave del TRecord_array
TRectype* k = new TRectype(LF_PROVV);
k->put(PROV_CODAGE, _agente);
k->put(PROV_ANNO,anno);
k->put(PROV_CODNUM,codnum);
k->put(PROV_NDOC,ndoc);
rows->set_key(k);
const int ritems = rd.items(); // Ciclo per rate di questo documento
int nrow = 1;
for (int j = 0; j < ritems; j++)
{
TRata& rt = rd[j];
@ -116,22 +123,23 @@ int TProvvigioni_agente::rate2rows(int action)
record->put(PROV_ANNO,anno);
record->put(PROV_CODNUM,codnum);
record->put(PROV_NDOC,ndoc);
record->put(PROV_NRIGA,nrow++);
record->put(PROV_NROW,nrow++);
record->put(PROV_NRIGA,j+1);
record->put(PROV_NRATA,rt.rata());
record->put(PROV_GENERATA,rt.generata());
record->put(PROV_SALDATA,rt.saldata());
record->put(PROV_TIPOPAGPR,rt.tipopagpr());
record->put(PROV_DATADOC,rd.datadoc());
record->put(PROV_IMPDOC,rd.impdoc());
record->put(PROV_IMPPRDOC,rd.impprdoc());
record->put(PROV_IMPNETDOC,rd.impnet());
record->put(PROV_CODCLI,rd.codcf());
record->put(PROV_TIPOPAG,rd.tipo());
record->put(PROV_CODVAL,rd.codval());
record->put(PROV_DATACAMBIO,rd.datacam());
record->put(PROV_CAMBIO,rd.cambio());
record->put(PROV_DATADOC,datadoc);
record->put(PROV_IMPDOC,impdoc);
record->put(PROV_IMPPRDOC,impprdoc);
record->put(PROV_IMPNETDOC,impnet);
record->put(PROV_CODCLI,codcf);
record->put(PROV_CODVAL,codval);
record->put(PROV_DATACAMBIO,datacam);
record->put(PROV_CAMBIO,cambio);
record->put(PROV_DATASCAD,rt.datascad());
record->put(PROV_IMPRATA,rt.imprata());
record->put(PROV_TIPOPAG,rt.tipopag());
record->put(PROV_IMPPROVV,rt.impprovv());
record->put(PROV_PAGATO,rt.pagato());
record->put(PROV_PROVVPAG,rt.provvpag());
@ -153,8 +161,8 @@ int TProvvigioni_agente::rate2rows(int action)
default: // remove
break;
}
delete rows;
}
delete rows;
return err;
}
@ -240,7 +248,6 @@ void TRate_doc::set(TRectype& rec)
_codcf = rec.get_long(PROV_CODCLI);
_datadoc = rec.get_date(PROV_DATADOC);
_datacambio = rec.get_date(PROV_DATACAMBIO);
_tipopag = rec.get_char(PROV_TIPOPAG);
_impdoc = rec.get_real(PROV_IMPDOC);
_impprdoc = rec.get_real(PROV_IMPPRDOC);
_impnetdoc = rec.get_real(PROV_IMPNETDOC);
@ -249,7 +256,7 @@ void TRate_doc::set(TRectype& rec)
void TRate_doc::set(TToken_string& t)
{
CHECK(t.items() >= 12, "Numero di items non valido");
CHECK(t.items() >= 11, "Numero di items non valido");
_anno = t.get_int(0);
_codnum = t.get(1);
_ndoc = t.get_long(2);
@ -258,10 +265,9 @@ void TRate_doc::set(TToken_string& t)
_impprdoc = t.get(5);
_impnetdoc = t.get(6);
_codcf = t.get_long(7);
_tipopag = t.get_char(8);
_codval = t.get(9);
_cambio = t.get(10);
_datacambio = t.get(11);
_codval = t.get(8);
_cambio = t.get(9);
_datacambio = t.get(10);
}
/////////////////////////////////////////////////////////////////////////////////
@ -282,23 +288,25 @@ int TRata::compare(const TSortable& s) const
void TRata::set(TToken_string& t)
{
CHECK(t.items() == 10, "Troppi pochi elementi nella token string");
CHECK(t.items() == 11, "Troppi pochi elementi nella token string");
_nrata = t.get_int(0);
_datascad = t.get(1);
_imprata = t.get(2);
_impprovv = t.get(3);
_pagmat = t.get(4);
_provvmat = t.get(5);
_pagato = t.get(6);
_provvpag = t.get(7);
_saldata = t.get(8)[0] == 'X' ? TRUE : FALSE;
_tipopagpr = t.get_int(9);
_tipopag = t.get_int(2);
_imprata = t.get(3);
_impprovv = t.get(4);
_pagmat = t.get(5);
_provvmat = t.get(6);
_pagato = t.get(7);
_provvpag = t.get(8);
_saldata = t.get(9)[0] == 'X' ? TRUE : FALSE;
_tipopagpr = t.get_int(10);
}
void TRata::set(TRectype& rec)
{
CHECK(rec.num() == LF_PROVV,"Il record non ha il tracciato di LF_PROVV");
_datascad = rec.get_date(PROV_DATASCAD);
_tipopag = rec.get_int(PROV_TIPOPAG);
_imprata = rec.get_real(PROV_IMPRATA);
_impprovv = rec.get_real(PROV_IMPPROVV);
_pagato = rec.get_real(PROV_PAGATO);