From df9fd5a87e3cadeae8de5cd09d5ddbfdfa5fc5ea Mon Sep 17 00:00:00 2001 From: angelo Date: Thu, 23 Oct 1997 13:12:11 +0000 Subject: [PATCH] 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 --- pr/prlib.h | 10 +++--- pr/prlib01.cpp | 84 +++++++++++++++++++++++++++----------------------- 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/pr/prlib.h b/pr/prlib.h index 88aa575cc..a78715657 100755 --- a/pr/prlib.h +++ b/pr/prlib.h @@ -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;} diff --git a/pr/prlib01.cpp b/pr/prlib01.cpp index 13fc4691f..6ca6eca77 100755 --- a/pr/prlib01.cpp +++ b/pr/prlib01.cpp @@ -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);