Bug 9105: Move Z3950 search code to Breeding module
[koha.git] / reserve / request.pl
index 1a4f027..c34a614 100755 (executable)
@@ -28,7 +28,7 @@ script to place reserves/requests
 
 use strict;
 use warnings;
-use C4::Branch; # GetBranches get_branchinfos_of
+use C4::Branch;
 use CGI;
 use List::MoreUtils qw/uniq/;
 use Date::Calc qw/Date_to_Days/;
@@ -42,6 +42,7 @@ use C4::Circulation;
 use C4::Dates qw/format_date/;
 use C4::Members;
 use C4::Search;                # enabled_staff_search_views
+use Koha::DateUtils;
 
 my $dbh = C4::Context->dbh;
 my $sth;
@@ -68,7 +69,7 @@ my $default = C4::Context->userenv->{branch};
 my @values;
 my %label_of;
 
-foreach my $branchcode (sort keys %{$branches} ) {
+foreach my $branchcode ( sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches ) {
     push @values, $branchcode;
     $label_of{$branchcode} = $branches->{$branchcode}->{branchname};
 }
@@ -109,29 +110,32 @@ if ( $action eq 'move' ) {
   my $borrowernumber = $input->param('borrowernumber');
   my $biblionumber   = $input->param('biblionumber');
   ToggleLowestPriority( $borrowernumber, $biblionumber );
+} elsif ( $action eq 'toggleSuspend' ) {
+  my $borrowernumber = $input->param('borrowernumber');
+  my $biblionumber   = $input->param('biblionumber');
+  my $suspend_until  = $input->param('suspend_until');
+  ToggleSuspend( $borrowernumber, $biblionumber, $suspend_until );
 }
 
 if ($findborrower) {
-    my ( $count, $borrowers ) =
-      SearchMember($findborrower, 'cardnumber', 'web' );
+    my $borrowers = Search($findborrower, 'cardnumber');
 
-    my @borrowers = @$borrowers;
-
-    if ( !@borrowers ) {
+    if ($borrowers && @$borrowers) {
+        if ( @$borrowers == 1 ) {
+            $borrowernumber_hold = $borrowers->[0]->{'borrowernumber'};
+        }
+        else {
+            $borrowerslist = $borrowers;
+        }
+    } else {
         $messageborrower = "'$findborrower'";
     }
-    elsif ( @borrowers == 1 ) {
-        $borrowernumber_hold = $borrowers[0]->{'borrowernumber'};
-    }
-    else {
-        $borrowerslist = \@borrowers;
-    }
 }
 
 # If we have the borrowernumber because we've performed an action, then we
 # don't want to try to place another reserve.
 if ($borrowernumber_hold && !$action) {
-    my $borrowerinfo = GetMemberDetails( $borrowernumber_hold );
+    my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold );
     my $diffbranch;
     my @getreservloop;
     my $count_reserv = 0;
@@ -194,9 +198,9 @@ if ($borrowerslist) {
 
     foreach my $borrower (
         sort {
-                $a->{surname}
-              . $a->{firstname} cmp $b->{surname}
-              . $b->{firstname}
+                uc($a->{surname}
+              . $a->{firstname}) cmp uc($b->{surname}
+              . $b->{firstname})
         } @{$borrowerslist}
       )
     {
@@ -219,8 +223,8 @@ if ($borrowerslist) {
     );
 }
 
-# FIXME launch another time GetMemberDetails perhaps until
-my $borrowerinfo = GetMemberDetails( $borrowernumber_hold );
+# FIXME launch another time GetMember perhaps until
+my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold );
 
 my @biblionumbers = ();
 my $biblionumbers = $input->param('biblionumbers');
@@ -292,7 +296,13 @@ foreach my $biblionumber (@biblionumbers) {
     if (my $items = get_itemnumbers_of($biblionumber)->{$biblionumber}){
         @itemnumbers  = @$items;
     }
-    else {
+       my @hostitems = get_hostitemnumbers_of($biblionumber);
+       if (@hostitems){
+               $template->param('hostitemsflag' => 1);
+               push(@itemnumbers, @hostitems);
+       }
+
+    if (!@itemnumbers) {
         $template->param('noitems' => 1);
         $biblioloopiter{noitems} = 1;
     }
@@ -325,6 +335,9 @@ foreach my $biblionumber (@biblionumbers) {
 
         $biblioitem->{description} =
           $itemtypes->{ $biblioitem->{itemtype} }{description};
+       if($biblioitem->{biblioitemnumber} ne $biblionumber){
+               $biblioitem->{hostitemsflag}=1;
+       }
         $biblioloopiter{description} = $biblioitem->{description};
         $biblioloopiter{itypename} = $biblioitem->{description};
         $biblioloopiter{imageurl} =
@@ -348,6 +361,11 @@ foreach my $biblionumber (@biblionumbers) {
                   $branches->{ $item->{holdingbranch} }{branchname};
             }
 
+               if($item->{biblionumber} ne $biblionumber){
+                       $item->{hostitemsflag}=1;
+                       $item->{hosttitle} = GetBiblioData($item->{biblionumber})->{title};
+               }
+               
             #   add information
             $item->{itemcallnumber} = $item->{itemcallnumber};
 
@@ -355,13 +373,13 @@ foreach my $biblionumber (@biblionumbers) {
             # change the background color
             my $issues= GetItemIssue($itemnumber);
             if ( $issues->{'date_due'} ) {
-                $item->{date_due} = format_date($issues->{'date_due'});
+                $item->{date_due} = format_sqldatetime($issues->{date_due});
                 $item->{backgroundcolor} = 'onloan';
             }
 
             # checking reserve
             my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber);
-            my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
+            my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor );
 
             if ( defined $reservedate ) {
                 $item->{backgroundcolor} = 'reserved';
@@ -530,7 +548,7 @@ foreach my $biblionumber (@biblionumbers) {
         }
 
         #     get borrowers reserve info
-        my $reserveborrowerinfo = GetMemberDetails( $res->{'borrowernumber'}, 0);
+        my $reserveborrowerinfo = GetMember( borrowernumber => $res->{'borrowernumber'} );
         if (C4::Context->preference('HidePatronName')){
            $reserve{'hidename'} = 1;
            $reserve{'cardnumber'} = $reserveborrowerinfo->{'cardnumber'};
@@ -555,7 +573,8 @@ foreach my $biblionumber (@biblionumbers) {
         $reserve{'lowestPriority'}    = $res->{'lowestPriority'};
         $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'});
         $reserve{'optionloop'} = \@optionloop;
-
+        $reserve{'suspend'} = $res->{'suspend'};
+        $reserve{'suspend_until'} = $res->{'suspend_until'};
         push( @reserveloop, \%reserve );
     }
 
@@ -614,5 +633,10 @@ if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) {
     $template->param( reserve_in_future => 1 );
 }
 
+$template->param(
+    SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'),
+    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'),
+);
+
 # printout the page
 output_html_with_http_headers $input, $cookie, $template->output;