|
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); |