Bug 12508: adding an error message if a contract cannot be removed
[koha_fer] / opac / opac-reserve.pl
index 87d3128..a842869 100755 (executable)
@@ -35,6 +35,7 @@ use C4::Branch; # GetBranches
 use C4::Overdues;
 use C4::Debug;
 use Koha::DateUtils;
+use Date::Calc qw/Today Date_to_Days/;
 # use Data::Dumper;
 
 my $MAXIMUM_NUMBER_OF_RESERVES = C4::Context->preference("maxreserves");
@@ -65,6 +66,17 @@ sub get_out {
 # get borrower information ....
 my ( $borr ) = GetMemberDetails( $borrowernumber );
 
+# check if this user can place a reserve, -1 means use sys pref, 0 means dont block, 1 means block
+if ( $borr->{'BlockExpiredPatronOpacActions'} ) {
+
+    if ( $borr->{'is_expired'} ) {
+
+        # cannot reserve, their card has expired and the rules set mean this is not allowed
+        $template->param( message => 1, expired_patron => 1 );
+        get_out( $query, $cookie, $template->output );
+    }
+}
+
 # Pass through any reserve charge
 if ($borr->{reservefee} > 0){
     $template->param( RESERVE_CHARGE => sprintf("%.2f",$borr->{reservefee}));
@@ -147,8 +159,8 @@ foreach my $biblioNumber (@biblionumbers) {
     }
 
     # Compute the priority rank.
-    my ( $rank, $reserves ) =
-      GetReservesFromBiblionumber( $biblioNumber, 1 );
+    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblioNumber, all_dates => 1 });
+    my $rank = scalar( @$reserves );
     $biblioData->{reservecount} = 1;    # new reserve
     foreach my $res (@{$reserves}) {
         my $found = $res->{found};
@@ -426,12 +438,12 @@ foreach my $biblioNum (@biblionumbers) {
         # change the background color.
         my $issues= GetItemIssue($itemNum);
         if ( $issues->{'date_due'} ) {
-            $itemLoopIter->{dateDue} = format_sqlduedatetime($issues->{date_due});
+            $itemLoopIter->{dateDue} = output_pref({ dt => dt_from_string($issues->{date_due}, 'sql'), as_due_date => 1 });
             $itemLoopIter->{backgroundcolor} = 'onloan';
         }
 
         # checking reserve
-        my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($itemNum,1); #with alldates parameter include future item level holds and waits
+        my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($itemNum);
         my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
 
         # the item could be reserved for this borrower vi a host record, flag this
@@ -447,7 +459,7 @@ foreach my $biblioNum (@biblionumbers) {
             $itemLoopIter->{ReservedForFirstname}      = $ItemBorrowerReserveInfo->{'firstname'};
             $itemLoopIter->{ExpectedAtLibrary}         = $expectedAt;
             #waiting status
-            $itemLoopIter->{waitingdate} = format_date($wait) if $wait;
+            $itemLoopIter->{waitingdate} = $wait;
         }
 
         $itemLoopIter->{notforloan} = $itemInfo->{notforloan};