From 598736fc6d4c3358fd6280bd74bfca4800bd6b6f Mon Sep 17 00:00:00 2001 From: Chris Hall Date: Wed, 4 Apr 2012 14:51:26 +1200 Subject: [PATCH] bug2865 corrected acquisitons calculations --- acqui/basket.pl | 25 ++++--------------- acqui/parcel.pl | 16 ++++++++---- .../prog/en/modules/acqui/neworderempty.tt | 5 +++- .../intranet-tmpl/prog/en/modules/acqui/parcel.tt | 4 +- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/acqui/basket.pl b/acqui/basket.pl index de66891..eda6025 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -324,28 +324,15 @@ if ( $op eq 'delete_confirm' ) { push @books_loop, \%line; } -my $total_est_gste; + 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; -} + $total_rrp_gste = $total_rrp_gsti / ( $gist + 1 ); + $gist_rrp = $total_rrp_gsti - $total_rrp_gste; + $total_est_gste = $total_rrp_gste - ( $total_rrp_gste * $discount ); + $total_est_gsti = $total_rrp_gsti - ( $total_rrp_gsti * $discount ); + $gist_est = $total_est_gsti / (1+$gist) * ($gist); # could also be ($total_est_gsti - $total_est_gste ) my $contract = &GetContract($basket->{contractnumber}); my @orders = GetOrders($basketno); diff --git a/acqui/parcel.pl b/acqui/parcel.pl index 5d0d164..f3094b7 100755 --- a/acqui/parcel.pl +++ b/acqui/parcel.pl @@ -77,7 +77,7 @@ my $bookseller=GetBookSellerFromId($booksellerid); my $invoice=$input->param('invoice') || ''; my $freight=$input->param('freight'); my $input_gst = ($input->param('gst') eq '' ? undef : $input->param('gst')); -my $gst= $input_gst // $bookseller->{gstrate} // C4::Context->preference("gist") // 0; +my $gstrate= $input_gst // $bookseller->{gstrate} // C4::Context->preference("gist") // 0; my $datereceived = ($input->param('op') eq 'new') ? C4::Dates->new($input->param('datereceived')) : C4::Dates->new($input->param('datereceived'), 'iso') ; $datereceived = C4::Dates->new() unless $datereceived; @@ -167,12 +167,12 @@ my @loop_received = (); for (my $i = 0 ; $i < $countlines ; $i++) { #$total=($parcelitems[$i]->{'unitprice'} + $parcelitems[$i]->{'freight'}) * $parcelitems[$i]->{'quantityreceived'}; #weird, are the freight fees counted by book? (pierre) - $total = ($parcelitems[$i]->{'unitprice'}) * $parcelitems[$i]->{'quantityreceived'}; #weird, are the freight fees counted by book? (pierre) + $total = ($parcelitems[$i]->{'ecost'}) * $parcelitems[$i]->{'quantityreceived'}; #weird, are the freight fees counted by book? (pierre) $parcelitems[$i]->{'unitprice'} += 0; my %line; %line = %{ $parcelitems[$i] }; $line{invoice} = $invoice; - $line{gst} = $gst; + $line{gstrate} = $gstrate; $line{total} = sprintf($cfstr, $total); $line{booksellerid} = $booksellerid; push @loop_received, \%line; @@ -217,7 +217,9 @@ for (my $i = 0 ; $i < $countpendings ; $i++) { $line{ordertotal} = sprintf("%.2f",$line{ecost}*$line{quantity}); $line{unitprice} = sprintf("%.2f",$line{unitprice}); $line{invoice} = $invoice; - $line{gst} = $gst; + $line{gstrate} = $gstrate; + $line{gst} = $parcelitems[$i]->{'gst'} * $gstrate; + $line{total} = sprintf($cfstr, $total); $line{total} = $total; $line{booksellerid} = $booksellerid; $ordergrandtotal += $line{ecost} * $line{quantity}; @@ -304,6 +306,8 @@ $template->param( name => $bookseller->{'name'}, booksellerid => $booksellerid, gst => $gst, + supplierid => $supplierid, + gstrate => $gstrate, freight => $freight, invoice => $invoice, countreceived => $countlines, @@ -315,8 +319,8 @@ $template->param( totalquantity => $totalquantity, tototal => sprintf($cfstr, $tototal), ordergrandtotal => sprintf($cfstr, $ordergrandtotal), - gst => $gst, - grandtot => sprintf($cfstr, $tototal + $gst), + gst => sprintf($cfstr, $tototal*$gstrate), + grandtot => sprintf($cfstr, $tototal*(1+$gstrate)), # FIXME assumes budgeted cost is gst exclusive (currently correct), will need to be fixed once a pref exists for gst incl/excl gst totalPunitprice => sprintf("%.2f", $totalPunitprice), totalPquantity => $totalPquantity, totalPqtyrcvd => $totalPqtyrcvd, diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt index 8aec465..53007a7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt @@ -31,10 +31,13 @@ function Check(ff) { _alertString +="-------------------------------------------------------------------\n\n"; - if ( isNull(ff.title,1) && isNull(ff.entertitle,1) ){ +[% UNLESS( biblionumber ) %] +// this caused errors so I enclosed it within an UNLESS, if biblionumber then ff.entertitle doesnt exist so checking it will cause a type error + if( isNull(ff.entertitle,1) ){ ok=1; _alertString += "\n- " + _("Title cannot be empty"); } +[% END %] if(isNull(ff.budget_id,1)){ ok=1; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt index a5d3e1a..c034881 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt @@ -348,8 +348,8 @@ The total at the bottom of the page should be within a few cents of the total for the invoice.

- Tax rate - [% gst %] + Tax + [% gst %] [% END %] -- 1.7.4.1