Bug 15774: Add additional fields to order baskets
[koha.git] / acqui / parcel.pl
index 4ba5b5f..da06003 100755 (executable)
@@ -54,8 +54,7 @@ To filter the results list on this given date.
 
 =cut
 
-use strict;
-use warnings;
+use Modern::Perl;
 
 use C4::Auth;
 use C4::Acquisition;
@@ -66,7 +65,9 @@ use CGI qw ( -utf8 );
 use C4::Output;
 use C4::Suggestions;
 
+use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Orders;
 use Koha::Biblios;
 use Koha::DateUtils;
 use Koha::Biblios;
@@ -125,6 +126,7 @@ my $subtotal_for_funds;
 for my $order ( @orders ) {
     $order->{'unitprice'} += 0;
 
+    my $order_object = Koha::Acquisition::Orders->find($order->{ordernumber});
     if ( $bookseller->invoiceincgst ) {
         $order->{ecost}     = $order->{ecost_tax_included};
         $order->{unitprice} = $order->{unitprice_tax_included};
@@ -138,10 +140,10 @@ for my $order ( @orders ) {
 
     my %line = %{ $order };
     $line{invoice} = $invoice->{invoicenumber};
-    $line{holds} = 0;
-    my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
+    my @itemnumbers = $order_object->items->get_column('itemnumber');
     my $biblio = Koha::Biblios->find( $line{biblionumber} );
-    $line{holds} = $biblio ? $biblio->current_holds->search(
+    $line{total_holds} = $biblio ? $biblio->holds->count : 0;
+    $line{item_holds} = $biblio ? $biblio->current_holds->search(
         {
             itemnumber => { -in => \@itemnumbers },
         }
@@ -241,11 +243,12 @@ unless( defined $invoice->{closedate} ) {
         my $biblio = Koha::Biblios->find( $biblionumber );
         my $countbiblio = CountBiblioInOrders($biblionumber);
         my $ordernumber = $line{'ordernumber'};
-        my @subscriptions = GetSubscriptionsId ($biblionumber);
-        my $itemcount   = $biblio->items->count;
-        my $holds_count = $biblio->holds->count;
-        my @items = GetItemnumbersFromOrder( $ordernumber );
-        my $itemholds = $biblio ? $biblio->holds->search({ itemnumber => { -in => \@items } })->count : 0;
+        my $order_object = Koha::Acquisition::Orders->find($ordernumber);
+        my $cnt_subscriptions = $biblio ? $biblio->subscriptions->count: 0;
+        my $itemcount   = $biblio ? $biblio->items->count : 0;
+        my $holds_count = $biblio ? $biblio->holds->count : 0;
+        my @itemnumbers = $order_object->items->get_column('itemnumber');
+        my $itemholds = $biblio ? $biblio->holds->search({ itemnumber => { -in => \@itemnumbers } })->count : 0;
 
         my $suggestion   = GetSuggestionInfoFromBiblionumber($line{biblionumber});
         $line{suggestionid}         = $suggestion->{suggestionid};
@@ -253,17 +256,18 @@ unless( defined $invoice->{closedate} ) {
         $line{firstnamesuggestedby} = $suggestion->{firstnamesuggestedby};
 
         # if the biblio is not in other orders and if there is no items elsewhere and no subscriptions and no holds we can then show the link "Delete order and Biblio" see bug 5680
-        $line{can_del_bib}          = 1 if $countbiblio <= 1 && $itemcount == scalar @items && !(@subscriptions) && !($holds_count);
-        $line{items}                = ($itemcount) - (scalar @items);
+        $line{can_del_bib}          = 1 if $countbiblio <= 1 && $itemcount == scalar @itemnumbers && !($cnt_subscriptions) && !($holds_count);
+        $line{items}                = ($itemcount) - (scalar @itemnumbers);
         $line{left_item}            = 1 if $line{items} >= 1;
         $line{left_biblio}          = 1 if $countbiblio > 1;
         $line{biblios}              = $countbiblio - 1;
-        $line{left_subscription}    = 1 if scalar @subscriptions >= 1;
-        $line{subscriptions}        = scalar @subscriptions;
+        $line{left_subscription}    = 1 if $cnt_subscriptions;
+        $line{subscriptions}        = $cnt_subscriptions;
         $line{left_holds}           = ($holds_count >= 1) ? 1 : 0;
         $line{left_holds_on_order}  = 1 if $line{left_holds}==1 && ($line{items} == 0 || $itemholds );
         $line{holds}                = $holds_count;
         $line{holds_on_order}       = $itemholds?$itemholds:$holds_count if $line{left_holds_on_order};
+        $line{basket}               = Koha::Acquisition::Baskets->find( $line{basketno} );
 
         my $budget_name = GetBudgetName( $line{budget_id} );
         $line{budget_name} = $budget_name;