bug 3299: fix setting renewal due date explicitly
authorGalen Charlton <galen.charlton@liblime.com>
Sat, 6 Jun 2009 19:26:18 +0000 (14:26 -0500)
committerGalen Charlton <galen.charlton@liblime.com>
Sun, 7 Jun 2009 18:17:08 +0000 (13:17 -0500)
When renewing a loan from the patron details page, setting
the renewal due date now works again.  Broken by patch
for bug 2770.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
C4/Circulation.pm

index 99df5cc..07e0b39 100644 (file)
@@ -2095,22 +2095,6 @@ sub AddRenewal {
     my $branch  = (@_) ? shift : $item->{homebranch};  # opac-renew doesn't send branch
     my $datedue = shift;
     my $lastreneweddate = shift;
-
-    # If the due date wasn't specified, calculate it by adding the
-    # book's loan length to today's date.
-    unless ($datedue && $datedue->output('iso')) {
-
-        my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef;
-        my $loanlength = GetLoanLength(
-            $borrower->{'categorycode'},
-             (C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} ,
-                       $item->{homebranch}                     # item's homebranch determines loanlength OR do we want the branch specified by the AddRenewal argument?
-        );
-               #FIXME -- use circControl?
-               $datedue =  CalcDateDue(C4::Dates->new(),$loanlength,$branch,$borrower);        # this branch is the transactional branch.
-                                                               # The question of whether to use item's homebranch calendar is open.
-    }
-
     # $lastreneweddate defaults to today.
     unless (defined $lastreneweddate) {
         $lastreneweddate = strftime( "%Y-%m-%d", localtime );
@@ -2128,21 +2112,22 @@ sub AddRenewal {
     $sth->finish;
 
     # If the due date wasn't specified, calculate it by adding the
-    # book's loan length to due's date.
-    unless (@_ and $datedue = shift and $datedue->output('iso')) {
+    # book's loan length to today's date or the current due date
+    # based on the value of the RenewalPeriodBase syspref.
+    unless ($datedue && $datedue->output('iso')) {
 
         my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef;
         my $loanlength = GetLoanLength(
             $borrower->{'categorycode'},
              (C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} ,
-                       $item->{homebranch}                     # item's homebranch determines loanlength OR do we want the branch specified by the AddRenewal argument?
+                       $item->{homebranch}     # item's homebranch determines loanlength OR do we want the branch specified by the AddRenewal argument?
         );
 
         $datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ?
                                         C4::Dates->new($issuedata->{date_due}, 'iso') :
                                         C4::Dates->new();
         #FIXME -- use circControl?
-        $datedue =  CalcDateDue($datedue,$loanlength,$branch); # this branch is the transactional branch.
+        $datedue =  CalcDateDue($datedue,$loanlength,$branch,$borrower);    # this branch is the transactional branch.
         # The question of whether to use item's homebranch calendar is open.
     }