fix for #1788 : Locations do not sort alphabetically by name in list on "Set" location
[koha.git] / reserve / request.pl
index ac95675..51abfbd 100755 (executable)
@@ -29,11 +29,12 @@ use strict;
 use C4::Branch; # GetBranches get_branchinfos_of
 use CGI;
 use List::MoreUtils qw/uniq/;
-use Date::Calc qw/Today Date_to_Days/;
+use Date::Calc qw/Date_to_Days/;
 use C4::Output;
 use C4::Auth;
 use C4::Reserves;
 use C4::Biblio;
+use C4::Items;
 use C4::Koha;
 use C4::Circulation;
 use C4::Dates qw/format_date/;
@@ -66,8 +67,10 @@ $findborrower =~ s|,| |g;
 my $cardnumber = $input->param('cardnumber');
 my $borrowerslist;
 my $messageborrower;
+my $warnings;
+my $messages;
 
-my $date = sprintf( '%04d-%02d-%02d', Today() );
+my $date = C4::Dates->today('iso');
 
 if ($findborrower) {
     my ( $count, $borrowers ) =
@@ -103,6 +106,7 @@ if ($cardnumber) {
       GetReserveCount( $borrowerinfo->{'borrowernumber'} );
 
     if ( $number_reserves > C4::Context->preference('maxreserves') ) {
+               $warnings = 1;
         $maxreserves = 1;
     }
 
@@ -110,15 +114,18 @@ if ($cardnumber) {
     if ($borrowerinfo->{'dateexpiry'} ne '0000-00-00') {
         my $warning = (Date_to_Days(split /-/,$date) > Date_to_Days( split /-/,$borrowerinfo->{'dateexpiry'}));
         if ( $warning > 0 ) {
+                       $messages = 1;
             $expiry = 1;
         }
     } else {
+               $messages = 1;
         $expiry = 1;
     }
      
 
     # check if the borrower make the reserv in a different branch
     if ( $borrowerinfo->{'branchcode'} ne C4::Context->userenv->{'branch'} ) {
+               $messages = 1;
         $diffbranch = 1;
     }
 
@@ -138,7 +145,9 @@ if ($cardnumber) {
                 borrowerreservs   => $count_reserv,
                 maxreserves       => $maxreserves,
                 expiry            => $expiry,
-                diffbranch        => $diffbranch
+                diffbranch        => $diffbranch,
+                               messages => $messages,
+                               warnings => $warnings
     );
 }
 
@@ -190,11 +199,14 @@ foreach my $res (@$reserves) {
     }
 
     if ( $borrowerinfo->{borrowernumber} eq $res->{borrowernumber} ) {
+               $warnings = 1;
         $alreadyreserved = 1;
     }
 }
 
-$template->param( alreadyreserved => $alreadyreserved );
+$template->param( alreadyreserved => $alreadyreserved,
+                               messages => $messages,
+                               warnings => $warnings );
 
 # FIXME think @optionloop, is maybe obsolete, or  must be switchable by a systeme preference fixed rank or not
 # make priorities options
@@ -214,7 +226,15 @@ my $fixedRank = $count+1;
 
 my @branchcodes;
 my %itemnumbers_of_biblioitem;
-my @itemnumbers  = @{ get_itemnumbers_of($biblionumber)->{$biblionumber} };
+my @itemnumbers;
+
+if (my $items = get_itemnumbers_of($biblionumber)->{$biblionumber}){
+       @itemnumbers  = @$items;
+}
+else {
+       $template->param('noitems' => 1);
+}
+       
 my $iteminfos_of = GetItemInfosOf(@itemnumbers);
 
 foreach my $itemnumber (@itemnumbers) {
@@ -336,7 +356,7 @@ foreach my $biblioitemnumber (@biblioitemnumbers) {
         }
 
     # FIXME: move this to a pm
-    my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W' AND cancellationdate IS NULL");
+    my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
     $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
     while (my $wait_hashref = $sth2->fetchrow_hashref) {
         $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
@@ -416,7 +436,7 @@ my $default = C4::Context->userenv->{branch};
 my @values;
 my %label_of;
 
-foreach my $branchcode ( keys %{$branches} ) {
+foreach my $branchcode (sort keys %{$branches} ) {
     push @values, $branchcode;
     $label_of{$branchcode} = $branches->{$branchcode}->{branchname};
 }
@@ -450,7 +470,10 @@ $template->param(
     cardnumber        => $cardnumber,
     CGIselectborrower => $CGIselectborrower,
     title             => $dat->{title},
-    author            => $dat->{author}
+    author            => $dat->{author},
+       holdsview => 1,
+       borrower_branchname => $branches->{$borrowerinfo->{'branchcode'}}->{'branchname'},
+       borrower_branchcode => $borrowerinfo->{'branchcode'},
 );
 
 # printout the page