From 650b996b4564b8acd3b12ba4688271ed211da244 Mon Sep 17 00:00:00 2001 From: villa Date: Thu, 2 Nov 1995 11:26:50 +0000 Subject: [PATCH] Errore setting numero rate se tpr > 4; ora il numero rate specificato e' quello totale e non piu' quello delle sole rate significative git-svn-id: svn://10.65.10.50/trunk@2066 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/pagament.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/cg/pagament.cpp b/cg/pagament.cpp index 7b9df5e7e..be73e7d2a 100755 --- a/cg/pagament.cpp +++ b/cg/pagament.cpp @@ -135,19 +135,25 @@ void TPagamento::set_tipo_prima_rata(int v, int sscad) void TPagamento::set_numero_rate(int n, int sscad, int rdiff) { _dirty = FALSE; - if (n == 0 || n == n_rate()) return; + if (n == 0 || n == n_rate()) return; - real p = real(100) / real(n); - p.round(2); - int nr = n_rate(); - int first = _tpr < 4 ? 0 : 1; + const int nr = n_rate(); + const int first = _tpr < 4 ? 0 : 1; real sum = 0.0; int i = 0; - + + // diciamo che gli diciamo il numero giusto + if (first == 1 && n < 2) return; + + const int nact = first == 1 ? n - 1 : n; + + real p = real(100) / real(nact); + p.round(2); + if (_inited || (!_inited && rdiff == 1)) // se e' inited rdiff e' 2 per forza { real tot = _inited ? (_tpr < 4 ? _firstr : _secndr) : real(100.0); - if (n == 1) + if (nact == 1) { if (_inited) set_imprata(first, tot); set_percrata(first, real(100.0)); @@ -161,11 +167,11 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff) if (nr == first + 1) { // suddividi equamente e riaggiusta la percentuale di conseguenza - real div = tot / real(n); + real div = tot / real(nact); real perc = real(100.0)*(div/tot); for (i = first; i < n; i++) { - if (i > 0) + if (i > first) add_rata(perc, (sscad == -1 ? scad_rata(0) : sscad), tipo_rata(0)); if (_inited) set_imprata (i, div); set_percrata(i, perc); @@ -183,7 +189,7 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff) if (_inited && _tpr > 0 && _tpr < 4) rfirst -= _secndr; real rest = tot - rfirst; - const real div = rest / real(n - 1); + const real div = rest / real(nact - 1); real perc = real(100.0)*(div/tot); for (i = first+1; i < n; i++)