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; TDate _datascad;
real _imprata, _impprovv, _pagato, _provvpag, _pagmat, _provvmat; real _imprata, _impprovv, _pagato, _provvpag, _pagmat, _provvmat;
bool _saldata; bool _saldata;
int _nrata,_tipopagpr; int _nrata,_tipopagpr,_tipopag;
char _generata; char _generata;
public: public:
virtual TObject* dup() const { return new TRata(*this); } virtual TObject* dup() const { return new TRata(*this); }
virtual int compare(const TSortable& s) const; virtual int compare(const TSortable& s) const;
const int rata() const { return _nrata;} const int rata() const { return _nrata;}
const int tipopag() const { return _tipopag;}
const TDate datascad() const { return _datascad; } const TDate datascad() const { return _datascad; }
const real imprata() const { return _imprata;} const real imprata() const { return _imprata;}
const real impprovv() const { return _impprovv;} const real impprovv() const { return _impprovv;}
@ -34,15 +35,16 @@ public:
const char generata() const { return _generata;} const char generata() const { return _generata;}
const int tipopagpr()const { return _tipopagpr;} const int tipopagpr()const { return _tipopagpr;}
void set_rata(int n) { _nrata = n; } void set_rata(int n) { _nrata = n; }
void set_tipopag(int t) { _tipopag = t; }
void set_datascad(TDate& d) { _datascad = d; } void set_datascad(TDate& d) { _datascad = d; }
void set_imprata(real& r) { _imprata = r; } void set_imprata(real& r) { _imprata = r; }
void set_impprovv(real& r) { _impprovv = r; } void set_impprovv(real& r) { _impprovv = r; }
void set_saldata(bool b = TRUE) { _saldata = b; } 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(TRectype& rec);
void set(TToken_string& t); void set(TToken_string& t);
TRata(TRectype& rec); TRata(TRectype& rec);
TRata() {} TRata() { _generata = ' ';}
~TRata() {} ~TRata() {}
}; };
@ -54,7 +56,6 @@ class TRate_doc : public TObject
long _ndoc,_codcf; long _ndoc,_codcf;
TDate _datadoc,_datacambio; TDate _datadoc,_datacambio;
real _impdoc,_impprdoc,_impnetdoc,_cambio; real _impdoc,_impprdoc,_impnetdoc,_cambio;
char _tipopag;
TArray _rows; // Rate del documento. La rata 0 corrisponde alla provvigione all'atto della fatturazione TArray _rows; // Rate del documento. La rata 0 corrisponde alla provvigione all'atto della fatturazione
// Array di TRata // Array di TRata
public: public:
@ -66,7 +67,6 @@ public:
const long codcf() const { return _codcf; } const long codcf() const { return _codcf; }
const TDate datadoc() const { return _datadoc; } const TDate datadoc() const { return _datadoc; }
const TDate datacam() const { return _datacambio;} const TDate datacam() const { return _datacambio;}
const char tipo() const { return _tipopag;}
const real impdoc() const { return _impdoc;} const real impdoc() const { return _impdoc;}
const real impprdoc() const { return _impprdoc;} const real impprdoc() const { return _impprdoc;}
const real cambio() const { return _cambio;} 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); // _rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV); _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) TProvvigioni_agente::TProvvigioni_agente(const char* agente) : TRectype(LF_AGENTI)
{ {
//_rows = new TRecord_array(LF_PROVV,PROV_NRIGA); //_rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV); _provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel); _provv_cur = new TCursor(_provv_rel, "", 2);
read(agente); read(agente);
} }
@ -38,6 +38,7 @@ int TProvvigioni_agente::read(const char* agente, const int anno, const char* co
if (err != NOERR) if (err != NOERR)
return err; return err;
// Legge tramite chiave 2 del file (per documento)
_agente = agente; _agente = agente;
TRectype rec_from(LF_PROVV); TRectype rec_from(LF_PROVV);
@ -88,7 +89,13 @@ int TProvvigioni_agente::rate2rows(int action)
{ {
// Scorre gli elementi di _rate (TDoc_rate) uno ad uno // Scorre gli elementi di _rate (TDoc_rate) uno ad uno
// per settare le righe provvigionali // 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; TString_array kl;
int nrow = 1; // Numero riga per agente e per documento
const int items = documenti(kl); // Prende l'elenco dei documenti const int items = documenti(kl); // Prende l'elenco dei documenti
kl.sort(); // ordina per documento kl.sort(); // ordina per documento
int err = NOERR; int err = NOERR;
@ -98,16 +105,16 @@ int TProvvigioni_agente::rate2rows(int action)
const int anno = rd.anno(); const int anno = rd.anno();
const long ndoc = rd.ndoc(); const long ndoc = rd.ndoc();
TString codnum(rd.codnum()); 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 // 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 const int ritems = rd.items(); // Ciclo per rate di questo documento
int nrow = 1;
for (int j = 0; j < ritems; j++) for (int j = 0; j < ritems; j++)
{ {
TRata& rt = rd[j]; TRata& rt = rd[j];
@ -116,22 +123,23 @@ int TProvvigioni_agente::rate2rows(int action)
record->put(PROV_ANNO,anno); record->put(PROV_ANNO,anno);
record->put(PROV_CODNUM,codnum); record->put(PROV_CODNUM,codnum);
record->put(PROV_NDOC,ndoc); 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_NRATA,rt.rata());
record->put(PROV_GENERATA,rt.generata()); record->put(PROV_GENERATA,rt.generata());
record->put(PROV_SALDATA,rt.saldata()); record->put(PROV_SALDATA,rt.saldata());
record->put(PROV_TIPOPAGPR,rt.tipopagpr()); record->put(PROV_TIPOPAGPR,rt.tipopagpr());
record->put(PROV_DATADOC,rd.datadoc()); record->put(PROV_DATADOC,datadoc);
record->put(PROV_IMPDOC,rd.impdoc()); record->put(PROV_IMPDOC,impdoc);
record->put(PROV_IMPPRDOC,rd.impprdoc()); record->put(PROV_IMPPRDOC,impprdoc);
record->put(PROV_IMPNETDOC,rd.impnet()); record->put(PROV_IMPNETDOC,impnet);
record->put(PROV_CODCLI,rd.codcf()); record->put(PROV_CODCLI,codcf);
record->put(PROV_TIPOPAG,rd.tipo()); record->put(PROV_CODVAL,codval);
record->put(PROV_CODVAL,rd.codval()); record->put(PROV_DATACAMBIO,datacam);
record->put(PROV_DATACAMBIO,rd.datacam()); record->put(PROV_CAMBIO,cambio);
record->put(PROV_CAMBIO,rd.cambio());
record->put(PROV_DATASCAD,rt.datascad()); record->put(PROV_DATASCAD,rt.datascad());
record->put(PROV_IMPRATA,rt.imprata()); record->put(PROV_IMPRATA,rt.imprata());
record->put(PROV_TIPOPAG,rt.tipopag());
record->put(PROV_IMPPROVV,rt.impprovv()); record->put(PROV_IMPPROVV,rt.impprovv());
record->put(PROV_PAGATO,rt.pagato()); record->put(PROV_PAGATO,rt.pagato());
record->put(PROV_PROVVPAG,rt.provvpag()); record->put(PROV_PROVVPAG,rt.provvpag());
@ -153,8 +161,8 @@ int TProvvigioni_agente::rate2rows(int action)
default: // remove default: // remove
break; break;
} }
delete rows;
} }
delete rows;
return err; return err;
} }
@ -240,7 +248,6 @@ void TRate_doc::set(TRectype& rec)
_codcf = rec.get_long(PROV_CODCLI); _codcf = rec.get_long(PROV_CODCLI);
_datadoc = rec.get_date(PROV_DATADOC); _datadoc = rec.get_date(PROV_DATADOC);
_datacambio = rec.get_date(PROV_DATACAMBIO); _datacambio = rec.get_date(PROV_DATACAMBIO);
_tipopag = rec.get_char(PROV_TIPOPAG);
_impdoc = rec.get_real(PROV_IMPDOC); _impdoc = rec.get_real(PROV_IMPDOC);
_impprdoc = rec.get_real(PROV_IMPPRDOC); _impprdoc = rec.get_real(PROV_IMPPRDOC);
_impnetdoc = rec.get_real(PROV_IMPNETDOC); _impnetdoc = rec.get_real(PROV_IMPNETDOC);
@ -249,7 +256,7 @@ void TRate_doc::set(TRectype& rec)
void TRate_doc::set(TToken_string& t) 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); _anno = t.get_int(0);
_codnum = t.get(1); _codnum = t.get(1);
_ndoc = t.get_long(2); _ndoc = t.get_long(2);
@ -258,10 +265,9 @@ void TRate_doc::set(TToken_string& t)
_impprdoc = t.get(5); _impprdoc = t.get(5);
_impnetdoc = t.get(6); _impnetdoc = t.get(6);
_codcf = t.get_long(7); _codcf = t.get_long(7);
_tipopag = t.get_char(8); _codval = t.get(8);
_codval = t.get(9); _cambio = t.get(9);
_cambio = t.get(10); _datacambio = t.get(10);
_datacambio = t.get(11);
} }
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -282,23 +288,25 @@ int TRata::compare(const TSortable& s) const
void TRata::set(TToken_string& t) 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); _nrata = t.get_int(0);
_datascad = t.get(1); _datascad = t.get(1);
_imprata = t.get(2); _tipopag = t.get_int(2);
_impprovv = t.get(3); _imprata = t.get(3);
_pagmat = t.get(4); _impprovv = t.get(4);
_provvmat = t.get(5); _pagmat = t.get(5);
_pagato = t.get(6); _provvmat = t.get(6);
_provvpag = t.get(7); _pagato = t.get(7);
_saldata = t.get(8)[0] == 'X' ? TRUE : FALSE; _provvpag = t.get(8);
_tipopagpr = t.get_int(9); _saldata = t.get(9)[0] == 'X' ? TRUE : FALSE;
_tipopagpr = t.get_int(10);
} }
void TRata::set(TRectype& rec) void TRata::set(TRectype& rec)
{ {
CHECK(rec.num() == LF_PROVV,"Il record non ha il tracciato di LF_PROVV"); CHECK(rec.num() == LF_PROVV,"Il record non ha il tracciato di LF_PROVV");
_datascad = rec.get_date(PROV_DATASCAD); _datascad = rec.get_date(PROV_DATASCAD);
_tipopag = rec.get_int(PROV_TIPOPAG);
_imprata = rec.get_real(PROV_IMPRATA); _imprata = rec.get_real(PROV_IMPRATA);
_impprovv = rec.get_real(PROV_IMPPROVV); _impprovv = rec.get_real(PROV_IMPPROVV);
_pagato = rec.get_real(PROV_PAGATO); _pagato = rec.get_real(PROV_PAGATO);