Changing CanBookBeRenewed to pass back the reason a renewal cannot proceed
authorChris Cormack <crc@liblime.com>
Tue, 8 Jan 2008 21:44:17 +0000 (15:44 -0600)
committerJoshua Ferraro <jmf@liblime.com>
Tue, 8 Jan 2008 22:13:20 +0000 (16:13 -0600)
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
C4/Circulation.pm
C4/SIP/ILS/Transaction/Checkout.pm
C4/SIP/ILS/Transaction/Renew.pm
koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl
opac/opac-renew.pl
opac/opac-user.pl
reserve/renewscript.pl

index 0e2694a..5f0571e 100644 (file)
@@ -770,7 +770,7 @@ sub CanBookBeIssued {
 
         # Already issued to current borrower. Ask whether the loan should
         # be renewed.
-        my ($CanBookBeRenewed) = CanBookBeRenewed(
+        my ($CanBookBeRenewed,$renewerror) = CanBookBeRenewed(
             $borrower->{'borrowernumber'},
             $item->{'itemnumber'}
         );
@@ -1562,7 +1562,7 @@ sub GetBiblioIssues {
 
 =head2 CanBookBeRenewed
 
-$ok = &CanBookBeRenewed($borrowernumber, $itemnumber);
+($ok,$error) = &CanBookBeRenewed($borrowernumber, $itemnumber);
 
 Find out whether a borrowed item may be renewed.
 
@@ -1576,7 +1576,7 @@ C<$itemnumber> is the number of the item to renew.
 C<$CanBookBeRenewed> returns a true value iff the item may be renewed. The
 item must currently be on loan to the specified borrower; renewals
 must be allowed for the item's type; and the borrower must not have
-already renewed the loan.
+already renewed the loan. $error will contain the reason the renewal can not proceed
 
 =cut
 
@@ -1587,6 +1587,7 @@ sub CanBookBeRenewed {
     my $dbh       = C4::Context->dbh;
     my $renews    = 1;
     my $renewokay = 0;
+       my $error;
 
     # Look in the issues table for this item, lent to this borrower,
     # and not yet returned.
@@ -1621,15 +1622,19 @@ sub CanBookBeRenewed {
         if ( $renews && $renews >= $data1->{'renewals'} ) {
             $renewokay = 1;
         }
+        else {
+                       $error="too_many";
+               }
         $sth2->finish;
         my ( $resfound, $resrec ) = C4::Reserves::CheckReserves($itemnumber);
         if ($resfound) {
             $renewokay = 0;
+                       $error="on_reserve"
         }
 
     }
     $sth1->finish;
-    return ($renewokay);
+    return ($renewokay,$error);
 }
 
 =head2 AddRenewal
index 07d55ea..262434f 100644 (file)
@@ -60,9 +60,10 @@ sub do_checkout {
        }
        foreach my $confirmation ( keys %$needsconfirmation ) {
                if ($confirmation eq 'RENEW_ISSUE'){
-                       if (!CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber})){
+                       my ($renewokay,$renewerror)= CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
+                       if (! $renewokay){
                                $noerror = 0;
-                               warn "cant renew $borrower->{borrowernumber} $self->{item}->{itemnumber}";
+                               warn "cant renew $borrower->{borrowernumber} $self->{item}->{itemnumber} $renewerror";
                        }
                }
                else {
index 679e06b..da6542c 100644 (file)
@@ -36,7 +36,8 @@ sub new {
 sub do_renew {
        my $self = shift;
        my $borrower = my $borrower = GetMember( $self->{patron}->id, 'cardnumber');
-       if (CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber})){
+       my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
+       if ($renewokay){
                my $datedue = AddIssue( $borrower, $self->{item}->id, undef, 0 );
                $self->{'due'} = $datedue;
                $self->ok(1);
index 0e8ce4f..2bceff9 100755 (executable)
@@ -404,6 +404,8 @@ No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span>
         <!-- TMPL_ELSE -->
             <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" />
         <!-- /TMPL_IF -->
+               <!-- TMPL_ELSE -->
+                   <!-- TMPL_VAR NAME="can_renew_error" -->
                <!-- /TMPL_IF -->
         <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
         </td>
@@ -446,6 +448,14 @@ No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span>
         <!-- TMPL_ELSE -->
             <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" />
         <!-- /TMPL_IF -->
+               <!-- TMPL_ELSE -->
+                   <!-- TMPL_IF EXPR="can_renew_error eq 'on_reserve'" -->
+                           On Hold
+                       <!-- /TMPL_IF -->
+                       <!-- TMPL_IF EXPR="can_renew_error eq 'too_many'" -->
+                           Too Many Renewals
+                       <!-- /TMPL_IF -->
+                       
                <!-- /TMPL_IF -->
         <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
         </td>
index 66afc60..0832b5e 100755 (executable)
@@ -23,7 +23,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
 my $itemnumber     = $query->param('item');
 my $borrowernumber = $query->param("borrowernumber");
 
-my $status = CanBookBeRenewed( $borrowernumber, $itemnumber );
+my ($status,$error) = CanBookBeRenewed( $borrowernumber, $itemnumber );
 if ( $status == 1 ) {
     AddRenewal( $borrowernumber, $itemnumber );
 }
index fdbaabf..96e0bdd 100755 (executable)
@@ -116,7 +116,7 @@ foreach my $issue ( @$issues ) {
     $issue->{$publictype} = 1;
 
     # check if item is renewable
-    my $status = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} );
+    my ($status,$renewerror) = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} );
        ($issue->{'renewcount'},$issue->{'renewsallowed'},$issue->{'renewsleft'}) = GetRenewCount($borrowernumber, $issue->{'itemnumber'});
 
     $issue->{'status'} = $status;
index b01c43e..28e81f2 100755 (executable)
@@ -65,7 +65,8 @@ my $borrowernumber = $input->param("borrowernumber");
 my $failedrenews;
 foreach my $itemno (@data) {
     # check status before renewing issue
-    if (CanBookBeRenewed($borrowernumber,$itemno)){
+       my ($renewokay,$error) = CanBookBeRenewed($borrowernumber,$itemno);
+    if ($renewokay){
         AddRenewal($borrowernumber,$itemno,$branch);
     }
        else {