[Koha-patches] [PATCH 35/55] C4::Circulation adding sub FixFineDaysOnReturn

Henri-Damien LAURENT henridamien.laurent at biblibre.com
Wed Mar 10 22:26:17 CET 2010


FixFinedaysOnReturn was missing.

Signed-off-by: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
---
 C4/Circulation.pm |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index fc7454a..e363a7b 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -43,6 +43,9 @@ use Date::Calc qw(
   Date_to_Days
   Day_of_Week
   Add_Delta_Days	
+  Delta_Days
+  check_date
+  Add_Delta_Days
 );
 use POSIX qw(strftime);
 use C4::Branch; # GetBranches
@@ -1639,6 +1642,63 @@ sub MarkIssueReturned {
     $sth_del->execute($borrowernumber, $itemnumber);
 }
 
+=head2 _FixFineDaysOnReturn
+
+    &_FixFineDaysOnReturn($borrowernumber, $itemnumber);
+
+C<$borrowernumber> borrowernumber
+
+C<$itemnumber> itemnumber
+
+C<$datedue> date due
+
+Internal function, called only by AddReturn that calculate and update the user fine days, and debarre him
+
+=cut
+
+sub _FixFineDaysOnReturn {
+    my ($borrowernumber, $itemnumber, $datedue) = @_;
+    
+    my @date_due;
+    if($datedue){
+        my ($ddy, $ddm, $ddd) = @date_due = split(/-/,$datedue);
+        return unless(check_date($ddy,$ddm,$ddd));
+    }else{
+        return;
+    }
+    
+    my $deltadays = Delta_Days(Today(), @date_due);
+    
+    if( $deltadays < 0){
+
+        my $item        = GetItem($itemnumber);
+        my $borrower    = C4::Members::GetMemberDetails($borrowernumber);
+        my $circcontrol = C4::Context::preference('CircControl');
+        my $branchcode  = "*";
+        
+        $branchcode=_GetCircControlBranch($item,$borrower);
+
+        my $issuingrule = GetIssuingRule($borrower->{categorycode}, $item->{itype}, $branchcode);
+        my $finedays    = $issuingrule->{finedays};
+
+        my @newdate     = Add_Delta_Days(Today(), 0 - $deltadays );
+        my $isonewdate  = join('-', at newdate);
+        my ($deby, $debm, $debd) = split(/-/,$borrower->{debarred});
+        if(check_date($deby, $debm, $debd)){
+            my @olddate = split(/-/, $borrower->{debarred});
+
+            if(Delta_Days(@olddate, at newdate) > 0){
+                C4::Members::DebarMember($borrowernumber, $isonewdate);
+                return $isonewdate;
+            }
+        }else{
+            C4::Members::DebarMember($borrowernumber, $isonewdate);
+            return $isonewdate;
+        }
+    }
+}
+
+
 =head2 _FixOverduesOnReturn
 
     &_FixOverduesOnReturn($brn,$itm, $exemptfine, $dropboxmode);
-- 
1.6.3.3




More information about the Koha-patches mailing list