From 0f5a3145166289467cc8a52c0fc19d75b323944c Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 28 Mar 2012 13:33:36 -0400 Subject: [PATCH] Bug 8037 - Add holds and funds to items already received in parcel.pl Adds a column to indicate holds on recieved items, as well as adding a new column for fund and showing the subtotals per fund above the total subtotal. --- C4/Acquisition.pm | 3 +- C4/Budgets.pm | 25 ++++++++++ C4/Reserves.pm | 12 ++++- acqui/parcel.pl | 7 ++- .../intranet-tmpl/prog/en/modules/acqui/parcel.tt | 50 +++++++++++++++----- 5 files changed, 81 insertions(+), 16 deletions(-) diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 4a9eae6..e7a58d8 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -2339,9 +2339,10 @@ sub GetInvoiceDetails { my $invoice = $sth->fetchrow_hashref; $query = qq{ - SELECT aqorders.*, biblio.* + SELECT aqorders.*, biblio.*, aqorders_items.itemnumber FROM aqorders LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber + LEFT JOIN aqorders_items ON aqorders.ordernumber = aqorders_items.ordernumber WHERE invoiceid = ? }; $sth = $dbh->prepare($query); diff --git a/C4/Budgets.pm b/C4/Budgets.pm index 7b553e6..1989ec2 100644 --- a/C4/Budgets.pm +++ b/C4/Budgets.pm @@ -34,6 +34,7 @@ BEGIN { @EXPORT = qw( &GetBudget + &GetBudgetByOrderNumber &GetBudgets &GetBudgetHierarchy &AddBudget @@ -649,6 +650,30 @@ sub GetBudget { return $result; } +=head2 GetBudgetByOrderNumber + + &GetBudgetByOrderNumber($ordernumber); + +get a specific budget by order number + +=cut + +# ------------------------------------------------------------------- +sub GetBudgetByOrderNumber { + my ( $ordernumber ) = @_; + my $dbh = C4::Context->dbh; + my $query = " + SELECT aqbudgets.* + FROM aqbudgets, aqorders + WHERE ordernumber=? + AND aqorders.budget_id = aqbudgets.budget_id + "; + my $sth = $dbh->prepare($query); + $sth->execute( $ordernumber ); + my $result = $sth->fetchrow_hashref; + return $result; +} + =head2 GetChildBudgetsSpent &GetChildBudgetsSpent($budget-id); diff --git a/C4/Reserves.pm b/C4/Reserves.pm index ba12cf5..309dc00 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -256,9 +256,12 @@ of the reserves and an arrayref pointing to the reserves for C<$biblionumber>. sub GetReservesFromBiblionumber { my ($biblionumber) = shift or return (0, []); my ($all_dates) = shift; + my ($itemnumber) = shift; + warn "ITEMNUMBER: $itemnumber"; my $dbh = C4::Context->dbh; # Find the desired items in the reserves + my @params; my $query = " SELECT branchcode, timestamp AS rtimestamp, @@ -276,12 +279,17 @@ sub GetReservesFromBiblionumber { suspend_until FROM reserves WHERE biblionumber = ? "; + push( @params, $biblionumber ); unless ( $all_dates ) { - $query .= "AND reservedate <= CURRENT_DATE()"; + $query .= " AND reservedate <= CURRENT_DATE() "; + } + if ( $itemnumber ) { + $query .= " AND ( itemnumber IS NULL OR itemnumber = ? )"; + push( @params, $itemnumber ); } $query .= "ORDER BY priority"; my $sth = $dbh->prepare($query); - $sth->execute($biblionumber); + $sth->execute( @params ); my @results; my $i = 0; while ( my $data = $sth->fetchrow_hashref ) { diff --git a/acqui/parcel.pl b/acqui/parcel.pl index 15578a9..bb88222 100755 --- a/acqui/parcel.pl +++ b/acqui/parcel.pl @@ -67,6 +67,7 @@ use CGI; use C4::Output; use C4::Dates qw/format_date format_date_in_iso/; use C4::Suggestions; +use C4::Reserves qw/GetReservesFromBiblionumber/; use JSON; my $input=new CGI; @@ -180,6 +181,9 @@ for my $item ( @parcelitems ) { $line{invoice} = $invoice->{invoicenumber}; $line{total} = sprintf($cfstr, $total); $line{booksellerid} = $invoice->{booksellerid}; + my ($count) = &GetReservesFromBiblionumber($line{biblionumber},undef,$item->{itemnumber}); + $line{holds} = $count; + $line{budget} = GetBudgetByOrderNumber( $line{ordernumber} ); $totalprice += $item->{'unitprice'}; $line{unitprice} = sprintf( $cfstr, $item->{'unitprice'} ); my $gste = get_gste( $line{total}, $line{gstrate}, $bookseller ); @@ -197,7 +201,8 @@ for my $item ( @parcelitems ) { if ( $line{parent_ordernumber} != $line{ordernumber} ) { if ( grep { $_->{ordernumber} == $line{parent_ordernumber} } - @parcelitems ) + @parcelitems + ) { $line{cannot_cancel} = 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 fae8473..0d85390 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt @@ -1,3 +1,4 @@ +[% USE currency = format('%.2f') -%] [% INCLUDE 'doc-head-open.inc' %] Koha › Acquisitions › [% IF ( date ) %] Receipt summary for [% name %] [% IF ( invoice ) %]invoice [% invoice %][% END %] on [% formatteddatereceived %][% ELSE %]Receive orders from [% name %][% END %] @@ -40,12 +41,14 @@ "iCookieDuration": 60*60*24*1000, // 1000 days "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]], "aoColumnDefs": [ - { "aTargets": [ 3, -1 ], "bSortable": false, "bSearchable": false }, + { "aTargets": [ 4, -1 ], "bSortable": false, "bSearchable": false }, ], "aoColumns": [ { "sType": "num-html" }, { "sType": "num-html" }, { "sType": "html" }, + { "sType": "html" }, + null, null, null, null, @@ -270,36 +273,57 @@ [% IF ( loop_received ) %] + [% SET funds = {} %] + [% SET estimated_total = 0 %] + + [% FOREACH loop_receive IN loop_received %] + [% SET estimated_total = estimated_total + ( loop_receive.ecost * loop_receive.quantityreceived ) %] + [% SET funds.${ loop_receive.budget.budget_name }.estimated = funds.${ loop_receive.budget.budget_name }.estimated + ( loop_receive.ecost * loop_receive.quantityreceived )%] + [% SET funds.${ loop_receive.budget.budget_name }.actual = funds.${ loop_receive.budget.budget_name }.actual + loop_receive.total %] + [% END %] +
- - - - - - - - + + + + + + + + + + + [% FOREACH key IN funds.keys.sort %] + + + + + + + + + [% END %] - + [% FOREACH book_foot IN book_foot_loop %] - + [% END %] - + @@ -309,6 +333,7 @@ + + -- 1.7.2.5
BasketOrder lineSummaryView recordQuantityEst costActual costTOTALBasketOrder LineHoldsSummaryView recordQuantityFundEst costActual costTOTAL
  Subtotal for [% key %][% currency( funds.$key.estimated ) %][% currency( funds.$key.actual ) %]  
Total tax exc.Total tax exc. [% total_gste %]
Total (GST [% book_foot.gstrate * 100 | format ("%.1f") %]%)Total (GST [% book_foot.gstrate * 100 | format ("%.1f") %]%) [% book_foot.value %]
Total tax inc.Total tax inc. [% total_gsti %]
[% loop_receive.basketno %] [% loop_receive.ordernumber %][% IF loop_receive.holds %][% loop_receive.holds %][% END %] [% loop_receive.title |html %] [% IF ( loop_receive.author ) %] / [% loop_receive.author %][% END %] [% IF ( loop_receive.isbn ) %] - [% loop_receive.isbn %][% END %] @@ -321,6 +346,7 @@ MARC | Card [% loop_receive.quantityreceived %][% loop_receive.budget.budget_name %] [% loop_receive.ecost %] [% loop_receive.unitprice %] [% loop_receive.total %]