diff --git a/src/ri/rilib01.cpp b/src/ri/rilib01.cpp index 3c3aeb71f..a9b6a2982 100755 --- a/src/ri/rilib01.cpp +++ b/src/ri/rilib01.cpp @@ -227,12 +227,19 @@ void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bo _movimentato |= sal.movimentato(); for (int i = 0; i < nper; i++) { - si[i] = sld; - pa[i] += sal.progavere(i); - pd[i] += sal.progdare(i); - if (!prog) - sld = ZERO; - sld += sal.progdare(i) - sal.progavere(i); + if (prog) + { + si[i] = sal.saldoini(); + pa[i] += sal.progavere(i); + pd[i] += sal.progdare(i); + } + else + { + si[i] = sld; + pa[i] = sal.progavere(i); + pd[i] = sal.progdare(i); + } + sld += pd[i] - pa[i]; sf[i] = sld; } for (int i = 0; i < nper; i++) @@ -255,12 +262,19 @@ void TSaldo_periodo::update(char tcf, int gruppo, int conto, long sottoconto, bo _movimentato = sal.movimentato(); for (int i = 0; i < nper; i++) { - saldoini(i) = sld; - if (!prog) - sld = ZERO; - pavere(i) = sal.progavere(i); - pdare(i) = sal.progdare(i); - sld += sal.progdare(i) - sal.progavere(i); + if (prog) + { + saldoini(i) = sal.saldoini(); + pavere(i) += sal.progavere(i); + pdare(i) += sal.progdare(i); + } + else + { + saldoini(i) = sld; + pavere(i) = sal.progavere(i); + pdare(i) = sal.progdare(i); + } + sld += pdare(i).as_real() - pavere(i).as_real(); saldo(i) = sld; } }