Bug 16073: Fix software error in circulation.pl
[koha.git] / circ / waitingreserves.pl
index 5471643..0050ce3 100755 (executable)
@@ -25,12 +25,11 @@ use C4::Context;
 use C4::Output;
 use C4::Branch; # GetBranchName
 use C4::Auth;
-use C4::Dates qw/format_date/;
 use C4::Circulation;
 use C4::Members;
 use C4::Biblio;
 use C4::Items;
-
+use Koha::DateUtils;
 use Date::Calc qw(
   Today
   Add_Delta_Days
@@ -47,8 +46,7 @@ my $fbr            = $input->param('fbr') || '';
 my $tbr            = $input->param('tbr') || '';
 my $all_branches   = $input->param('allbranches') || '';
 my $cancelall      = $input->param('cancelall');
-
-my $cancel;
+my $tab            = $input->param('tab');
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
@@ -76,7 +74,7 @@ if ($item) {
 if ( C4::Context->preference('IndependentBranches') ) {
     undef $all_branches;
 } else {
-    $template->param( all_branches_link => $input->url . '?allbranches=1' )
+    $template->param( all_branches_link => '/cgi-bin/koha/circ/waitingreserves.pl' . '?allbranches=1' )
       unless $all_branches;
 }
 $template->param( all_branches => 1 ) if $all_branches;
@@ -87,6 +85,9 @@ my @getreserves = $all_branches ? GetReservesForBranch() : GetReservesForBranch(
 # get reserves for the branch we are logged into, or for all branches
 
 my $today = Date_to_Days(&Today);
+my $max_pickup_delay = C4::Context->preference('ReservesMaxPickUpDelay');
+$max_pickup_delay-- if C4::Context->preference('ExpireReservesMaxPickUpDelay');
+
 foreach my $num (@getreserves) {
     next unless ($num->{'waitingdate'} && $num->{'waitingdate'} ne '0000-00-00');
 
@@ -107,9 +108,10 @@ foreach my $num (@getreserves) {
     my $itemtypeinfo = getitemtypeinfo( $gettitle->{'itemtype'} );  # using the fixed up itype/itemtype
     $getreserv{'waitingdate'} = $num->{'waitingdate'};
     my ( $waiting_year, $waiting_month, $waiting_day ) = split (/-/, $num->{'waitingdate'});
+
     ( $waiting_year, $waiting_month, $waiting_day ) =
       Add_Delta_Days( $waiting_year, $waiting_month, $waiting_day,
-        C4::Context->preference('ReservesMaxPickUpDelay'));
+        $max_pickup_delay);
     my $calcDate = Date_to_Days( $waiting_year, $waiting_month, $waiting_day );
 
     $getreserv{'itemtype'}       = $itemtypeinfo->{'description'};
@@ -158,11 +160,13 @@ $template->param(
     reservecount => $reservcount,
     overloop    => \@overloop,
     overcount   => $overcount,
-    show_date   => format_date(C4::Dates->today('iso')),
-    ReservesMaxPickUpDelay => C4::Context->preference('ReservesMaxPickUpDelay')
+    show_date   => output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }),
+    ReservesMaxPickUpDelay => $max_pickup_delay,
 );
 
-if ($cancelall) {
+if ($item && $tab eq 'holdsover') {
+    print $input->redirect("/cgi-bin/koha/circ/waitingreserves.pl#holdsover");
+} elsif ($cancelall) {
     print $input->redirect("/cgi-bin/koha/circ/waitingreserves.pl");
 } else {
     output_html_with_http_headers $input, $cookie, $template->output;
@@ -186,7 +190,7 @@ sub cancel {
     # if we have a result
     if ($nextreservinfo) {
         my %res;
-        my $borrowerinfo = GetMemberDetails( $nextreservinfo );
+        my $borrowerinfo = C4::Members::GetMember( borrowernumber => $nextreservinfo );
         my $iteminfo = GetBiblioFromItemNumber($item);
         if ( $messages->{'transfert'} ) {
             $res{messagetransfert} = $messages->{'transfert'};