[followup](bug #3348) fix spent values and spent resume
[koha.git] / C4 / Circulation.pm
index aaeb7e5..cfa1519 100644 (file)
@@ -682,7 +682,7 @@ sub CanBookBeIssued {
     if ( $borrower->{'dateexpiry'} eq '0000-00-00') {
         $issuingimpossible{EXPIRED} = 1;
     } else {
-        my @expirydate=  split /-/,$borrower->{'dateexpiry'};
+        my @expirydate=  split (/-/,$borrower->{'dateexpiry'});
         if($expirydate[0]==0 || $expirydate[1]==0|| $expirydate[2]==0 ||
             Date_to_Days(Today) > Date_to_Days( @expirydate )) {
             $issuingimpossible{EXPIRED} = 1;                                   
@@ -1385,6 +1385,7 @@ sub AddReturn {
         $messages->{'BadBarcode'} = $barcode;
         $doreturn = 0;
     } else {
+        $iteminformation->{'itemnumber'} = $itemnumber;
         # find the borrower
         if ( not $iteminformation->{borrowernumber} ) {
             $messages->{'NotIssued'} = $barcode;
@@ -1399,7 +1400,8 @@ sub AddReturn {
         $iteminformation->{'itemlost'} = $curr_iteminfo->{'itemlost'};
         
         # check if the book is in a permanent collection....
-        my $hbr      = $iteminformation->{C4::Context->preference("HomeOrHoldingBranch")};
+        my $hbr      = C4::Context->preference("HomeOrHoldingBranchReturn") || "homebranch";
+        $hbr         = $iteminformation->{$hbr};
         my $branches = GetBranches();
                # FIXME -- This 'PE' attribute is largely undocumented.  afaict, there's no user interface that reflects this functionality.
         if ( $hbr && $branches->{$hbr}->{'PE'} ) {
@@ -1418,14 +1420,16 @@ sub AddReturn {
             $doreturn = 0;
         }
     
-
+    # We know the document was just seen
+    ModDateLastSeen( $iteminformation->{'itemnumber'} );
+        
     #     new op dev : if the book returned in an other branch update the holding branch
     
     # update issues, thereby returning book (should push this out into another subroutine
         $borrower = C4::Members::GetMemberDetails( $iteminformation->{borrowernumber}, 0 );
     
     # case of a return of document (deal with issues and holdingbranch)
-    
+            
         if ($doreturn) {
                        my $circControlBranch = _GetCircControlBranch($iteminformation,$borrower);
                        if($dropbox) {
@@ -1440,9 +1444,7 @@ sub AddReturn {
             # We update the holdingbranch from circControlBranch variable
             UpdateHoldingbranch($branch,$iteminformation->{'itemnumber'});
             $iteminformation->{'holdingbranch'} = $branch;
-        
-            
-            ModDateLastSeen( $iteminformation->{'itemnumber'} );
+
             ModItem({ onloan => undef }, $biblio->{'biblionumber'}, $iteminformation->{'itemnumber'});
 
             if ($iteminformation->{borrowernumber}){
@@ -1508,8 +1510,11 @@ sub AddReturn {
         
         #adding message if holdingbranch is non equal a userenv branch to return the document to homebranch
         #we check, if we don't have reserv or transfert for this document, if not, return it to homebranch .
-        
-        if (($doreturn or $messages->{'NotIssued'}) and ($branch ne $iteminformation->{$hbr}) and not $messages->{'WrongTransfer'} and ($validTransfert ne 1) and ($reserveDone ne 1) ){
+        if (($doreturn or $messages->{'NotIssued'}) 
+            and ($branch ne $hbr) 
+            and not $messages->{'WrongTransfer'} 
+            and ($validTransfert ne 1) 
+            and ($reserveDone ne 1) ){
                        if (C4::Context->preference("AutomaticItemReturn") == 1) {
                                ModItemTransfer($iteminformation->{'itemnumber'}, $branch, $iteminformation->{$hbr});
                                $messages->{'WasTransfered'} = 1;
@@ -2380,15 +2385,8 @@ sub CalcDateDue {
        my ($startdate,$loanlength,$branch,$borrower) = @_;
        my $datedue;
 
-       if(C4::Context->preference('useDaysMode') eq 'Days') {  # ignoring calendar
-               my $timedue = time + ($loanlength) * 86400;
-       #FIXME - assumes now even though we take a startdate 
-               my @datearr  = localtime($timedue);
-               $datedue = C4::Dates->new( sprintf("%04d-%02d-%02d", 1900 + $datearr[5], $datearr[4] + 1, $datearr[3]), 'iso');
-       } else {
-               my $calendar = C4::Calendar->new(  branchcode => $branch );
-               $datedue = $calendar->addDate($startdate, $loanlength);
-       }
+       my $calendar = C4::Calendar->new(  branchcode => $branch );
+       $datedue = $calendar->addDate($startdate, $loanlength);
 
        # if ReturnBeforeExpiry ON the datedue can't be after borrower expirydate
        if ( C4::Context->preference('ReturnBeforeExpiry') && $datedue->output('iso') gt $borrower->{dateexpiry} ) {