From 4778a81f6f38941ff271303ac57462c7a3924df7 Mon Sep 17 00:00:00 2001 From: Christophe Croullebois Date: Mon, 16 May 2011 11:55:05 +0200 Subject: [PATCH 1/1] Bug 6268: (MT #6408) Bad Total in basket.pl The total_est_gste or gsti is computed on the total_rrp_gste or gsti. But in the budget this amount is the summ of discounts computed for each line. Due to the rounding to 2 decimal places this produces a difference in Funds view with Total sublevels spent. --- acqui/basket.pl | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-) diff --git a/acqui/basket.pl b/acqui/basket.pl index 0261e86..8104316 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -224,11 +224,13 @@ if ( $op eq 'delete_confirm' ) { my @results = GetOrders( $basketno ); my $gist = $bookseller->{gstrate} // C4::Context->preference("gist") // 0; + $gist = 0 if $gist == 0.0000; my $discount = $bookseller->{'discount'} / 100; my $total_rrp; # RRP Total, its value will be assigned to $total_rrp_gsti or $total_rrp_gste depending of $bookseller->{'listincgst'} my $total_rrp_gsti; # RRP Total, GST included my $total_rrp_gste; # RRP Total, GST excluded my $gist_rrp; + my $total_rrp_est; my $qty_total; my @books_loop; @@ -250,6 +252,7 @@ if ( $op eq 'delete_confirm' ) { $total_rrp += $qty * $order->{'rrp'}; my $line_total = $qty * $order->{'ecost'}; + $total_rrp_est += $qty * $results[$i]->{'ecost'}; # FIXME: what about the "actual cost" field? $qty_total += $qty; my %line = %{ $order }; @@ -275,19 +278,28 @@ if ( $op eq 'delete_confirm' ) { push @books_loop, \%line; } - if ($bookseller->{'listincgst'}) { # if prices already includes GST - $total_rrp_gsti = $total_rrp; # we know $total_rrp_gsti - $total_rrp_gste = $total_rrp_gsti / ($gist + 1); # and can reverse compute other values - $gist_rrp = $total_rrp_gsti - $total_rrp_gste; # - } else { # if prices does not include GST - $total_rrp_gste = $total_rrp; # then we use the common way to compute other values - $gist_rrp = $total_rrp_gste * $gist; # - $total_rrp_gsti = $total_rrp_gste + $gist_rrp; # - } - # These vars are estimated totals and GST, taking in account the booksellet discount - my $total_est_gsti = $total_rrp_gsti - ($total_rrp_gsti * $discount); - my $gist_est = $gist_rrp - ($gist_rrp * $discount); - my $total_est_gste = $total_rrp_gste - ($total_rrp_gste * $discount); +my $total_est_gste; + my $total_est_gsti; + my $gist_est; + if ($gist){ # if we have GST + if ( $bookseller->{'listincgst'} ) { # if prices already includes GST + $total_rrp_gsti = $total_rrp; # we know $total_rrp_gsti + $total_rrp_gste = $total_rrp_gsti / ( $gist + 1 ); # and can reverse compute other values + $gist_rrp = $total_rrp_gsti - $total_rrp_gste; # + $total_est_gste = $total_rrp_gste - ( $total_rrp_gste * $discount ); + $total_est_gsti = $total_rrp_est; + } else { # if prices does not include GST + $total_rrp_gste = $total_rrp; # then we use the common way to compute other values + $gist_rrp = $total_rrp_gste * $gist; # + $total_rrp_gsti = $total_rrp_gste + $gist_rrp; # + $total_est_gste = $total_rrp_est; + $total_est_gsti = $total_rrp_gsti - ( $total_rrp_gsti * $discount ); + } + $gist_est = $gist_rrp - ( $gist_rrp * $discount ); + } else { + $total_rrp_gsti = $total_rrp; + $total_est_gsti = $total_rrp_est; +} my $contract = &GetContract($basket->{contractnumber}); my @orders = GetOrders($basketno); -- 1.7.0.4