diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index b16513aca..7b46fd59c 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -1141,14 +1141,13 @@ else oldiva = imposta; oldposiva = newposiva; -if (r == 0) // Se cambio la prima riga ... - app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti +TMask& m = app().curr_mask(); +if (r == 0) // Se cambio la prima riga ... + app().add_cgs_tot(m); // ... ricalcola conti - TMask& m = app().curr_mask(); if (app().is_saldaconto() && m.page_enabled(2)) app().set_scadenze(m); } - return TRUE; } diff --git a/cg/saldacon.cpp b/cg/saldacon.cpp index 93671380b..f9677d9b1 100755 --- a/cg/saldacon.cpp +++ b/cg/saldacon.cpp @@ -25,7 +25,6 @@ TTree_rectype::TTree_rectype(const TTree_rectype& t) { } - TObject* TTree_rectype::dup() const { TTree_rectype* r = new TTree_rectype(*this); @@ -217,6 +216,12 @@ TRiga_scadenze::TRiga_scadenze(const TRiga_scadenze& s) : TTree_rectype(s), _riga(s._riga) {} +TObject* TRiga_scadenze::dup() const +{ + TRiga_scadenze* r = new TRiga_scadenze(*this); + return r; +} + TPartita& TRiga_scadenze::partita() const { return riga().partita(); @@ -457,7 +462,18 @@ TRiga_partite::TRiga_partite(TPartita* game) TRiga_partite::TRiga_partite(const TRiga_partite& r) : TTree_rectype(r), _partita(r._partita) -{} +{ + update_rigaptr(); +} + +void TRiga_partite::update_rigaptr() +{ + for (int i = rate(); i >= 0; i--) + { + TRiga_scadenze& scad = i == 0 ? (TRiga_scadenze&)rows_array().key() : rata(i); + scad._riga = this; + } +} TRiga_scadenze& TRiga_partite::new_row(int r) { @@ -491,6 +507,7 @@ int TRiga_partite::read(TBaseisamfile& f, word op) { TRiga_scadenze* s = new TRiga_scadenze(this); err = rows_array().read(s); // Deve esistere almento una scadenza + update_rigaptr(); } else rows_array().destroy_rows(); diff --git a/cg/saldacon.h b/cg/saldacon.h index 3d73b0f2d..63e09d958 100755 --- a/cg/saldacon.h +++ b/cg/saldacon.h @@ -122,7 +122,7 @@ protected: bool elimina_pagamento(int p); protected: // TRecord_tree - virtual TObject* dup() const { return new TRiga_scadenze(*this); } + virtual TObject* dup() const; public: bool chiusa(bool update = FALSE) const; @@ -147,6 +147,9 @@ class TRiga_partite : public TTree_rectype friend class TRiga_scadenze; TPartita* _partita; +protected: + void update_rigaptr(); + public: // TTree_rectype virtual TObject* dup() const { return new TRiga_partite(*this); } virtual int read(TBaseisamfile& f, word op);