diff --git a/cg/cglib02.cpp b/cg/cglib02.cpp index 36f40a2c2..d1c67fcbf 100755 --- a/cg/cglib02.cpp +++ b/cg/cglib02.cpp @@ -265,12 +265,15 @@ void TSaldo_agg::registra() flag_salini = 'D'; saldi.put(SLD_FLAGSALINI, flag_salini); saldi.put(SLD_SALDO, si); - } - real sf = tcon.saldofin(); - char flag_salfin = sf < ZERO ? 'A' : 'D'; - if (flag_salfin == 'A') sf = -sf; - saldi.put(SLD_FLAGSALFIN, flag_salfin); - saldi.put(SLD_SALDOFIN, sf); + } + + TImporto sf('D', tcon.saldofin()); + TImporto old_sf(saldi.get(SLD_FLAGSALFIN)[0], saldi.get_real(SLD_SALDOFIN)); + + sf += old_sf; + sf.normalize(); + saldi.put(SLD_FLAGSALFIN, sf.sezione()); + saldi.put(SLD_SALDOFIN, sf.valore()); r = saldi.get_real(SLD_PDARE); r += tcon.dare();