Lines 43-48
use Date::Calc qw(
Link Here
|
43 |
Date_to_Days |
43 |
Date_to_Days |
44 |
Day_of_Week |
44 |
Day_of_Week |
45 |
Add_Delta_Days |
45 |
Add_Delta_Days |
|
|
46 |
check_date |
46 |
); |
47 |
); |
47 |
use POSIX qw(strftime); |
48 |
use POSIX qw(strftime); |
48 |
use C4::Branch; # GetBranches |
49 |
use C4::Branch; # GetBranches |
Lines 1626-1631
sub AddReturn {
Link Here
|
1626 |
if ($borrowernumber) { |
1627 |
if ($borrowernumber) { |
1627 |
my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox); |
1628 |
my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox); |
1628 |
defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!"; # zero is OK, check defined |
1629 |
defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!"; # zero is OK, check defined |
|
|
1630 |
|
1631 |
# fix fine days |
1632 |
my $debardate = _FixFineDaysOnReturn( $borrower, $item, $issue->{date_due} ); |
1633 |
$messages->{'Debarred'} = $debardate if ($debardate); |
1629 |
} |
1634 |
} |
1630 |
|
1635 |
|
1631 |
# find reserves..... |
1636 |
# find reserves..... |
Lines 1749-1754
sub MarkIssueReturned {
Link Here
|
1749 |
$sth_del->execute($borrowernumber, $itemnumber); |
1754 |
$sth_del->execute($borrowernumber, $itemnumber); |
1750 |
} |
1755 |
} |
1751 |
|
1756 |
|
|
|
1757 |
=head2 _FixFineDaysOnReturn |
1758 |
|
1759 |
&_FixFineDaysOnReturn($borrower, $item, $datedue); |
1760 |
|
1761 |
C<$borrower> borrower hashref |
1762 |
|
1763 |
C<$item> item hashref |
1764 |
|
1765 |
C<$datedue> date due |
1766 |
|
1767 |
Internal function, called only by AddReturn that calculate and update the user fine days, and debars him |
1768 |
|
1769 |
=cut |
1770 |
|
1771 |
sub _FixFineDaysOnReturn { |
1772 |
my ( $borrower, $item, $datedue ) = @_; |
1773 |
|
1774 |
if ($datedue) { |
1775 |
$datedue = C4::Dates->new( $datedue, "iso" ); |
1776 |
} else { |
1777 |
return; |
1778 |
} |
1779 |
|
1780 |
my $branchcode = _GetCircControlBranch( $item, $borrower ); |
1781 |
my $calendar = C4::Calendar->new( branchcode => $branchcode ); |
1782 |
my $today = C4::Dates->new(); |
1783 |
|
1784 |
my $deltadays = $calendar->daysBetween( $datedue, C4::Dates->new() ); |
1785 |
|
1786 |
my $circcontrol = C4::Context::preference('CircControl'); |
1787 |
my $issuingrule = GetIssuingRule( $borrower->{categorycode}, $item->{itype}, $branchcode ); |
1788 |
my $finedays = $issuingrule->{finedays}; |
1789 |
|
1790 |
# exit if no finedays defined |
1791 |
return unless $finedays; |
1792 |
my $grace = $issuingrule->{firstremind}; |
1793 |
|
1794 |
if ( $deltadays - $grace > 0 ) { |
1795 |
my @newdate = Add_Delta_Days( Today(), $deltadays * $finedays ); |
1796 |
my $isonewdate = join( '-', @newdate ); |
1797 |
my ( $deby, $debm, $debd ) = split( /-/, $borrower->{debarred} ); |
1798 |
if ( check_date( $deby, $debm, $debd ) ) { |
1799 |
my @olddate = split( /-/, $borrower->{debarred} ); |
1800 |
|
1801 |
if ( Delta_Days( @olddate, @newdate ) > 0 ) { |
1802 |
C4::Members::DebarMember( $borrower->{borrowernumber}, $isonewdate ); |
1803 |
return $isonewdate; |
1804 |
} |
1805 |
} else { |
1806 |
C4::Members::DebarMember( $borrower->{borrowernumber}, $isonewdate ); |
1807 |
return $isonewdate; |
1808 |
} |
1809 |
} |
1810 |
} |
1811 |
|
1752 |
=head2 _FixOverduesOnReturn |
1812 |
=head2 _FixOverduesOnReturn |
1753 |
|
1813 |
|
1754 |
&_FixOverduesOnReturn($brn,$itm, $exemptfine, $dropboxmode); |
1814 |
&_FixOverduesOnReturn($brn,$itm, $exemptfine, $dropboxmode); |