[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