diff --git a/cg/cg3600.cpp b/cg/cg3600.cpp index a22cfa329..86c5a35b1 100755 --- a/cg/cg3600.cpp +++ b/cg/cg3600.cpp @@ -398,31 +398,31 @@ void TBalance::read(const TBill& b, int esercizio, bool ignora_movap) _progr_avere = pa; _saldo_fin = sf; - if (_saldo_ini.is_zero()) - { - TLocalisamfile pcon(LF_PCON); - TRectype& curr = pcon.curr(); - curr.put(PCN_GRUPPO, b.gruppo()); - curr.put(PCN_CONTO, b.conto()); - const int err = pcon.read(); - CHECK(err == NOERR, "Impossibile stabilire indicatore di bilancio"); - const int indbil = curr.get_int(PCN_INDBIL); - if (indbil == 1 || indbil == 2 || indbil == 5) - { - TEsercizi_contabili esercizi; - const int precedente = esercizi.pred(esercizio); - if (find(b, precedente, si, pd, pa, sf)) - { - _saldo_ini = si; - _saldo_ini += pd; - _saldo_ini += pa; - } - } - } + if (ignora_movap) + _saldo_ini.set('D', ZERO); else - { - if (ignora_movap) - _saldo_ini.set('D', ZERO); + { + if (_saldo_ini.is_zero()) + { + TLocalisamfile pcon(LF_PCON); + TRectype& curr = pcon.curr(); + curr.put(PCN_GRUPPO, b.gruppo()); + curr.put(PCN_CONTO, b.conto()); + const int err = pcon.read(); + CHECK(err == NOERR, "Impossibile stabilire indicatore di bilancio"); + const int indbil = curr.get_int(PCN_INDBIL); + if (indbil == 1 || indbil == 2 || indbil == 5) + { + TEsercizi_contabili esercizi; + const int precedente = esercizi.pred(esercizio); + if (precedente > 0 && find(b, precedente, si, pd, pa, sf)) + { + _saldo_ini = si; + _saldo_ini += pd; + _saldo_ini += pa; + } + } + } } } @@ -711,9 +711,13 @@ void TMastrino::read(const TBill& conto, // vanno dall'inizio dell'esercizio al giorno precedente // la data di inizio stampa - const TBalance saldo(_conto, ae, TRUE); + TBalance saldo(_conto, ae, TRUE); _pdare_ini = saldo.progressivo_dare_iniziale(); _pavere_ini = saldo.progressivo_avere_iniziale(); + + // Valori dei saldi finali: + // Comprendono i movimenti di apertura, chiusura ed i progressivi attuali + saldo.read(_conto, ae, FALSE); _pdare_fin = saldo.progressivo_dare_finale(); _pavere_fin = saldo.progressivo_avere_finale();