Lines 17-26
Link Here
|
17 |
|
17 |
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
|
19 |
|
20 |
use Test::More tests => 112; |
20 |
use Test::More tests => 113; |
21 |
|
21 |
|
22 |
use DateTime; |
22 |
use DateTime; |
23 |
|
23 |
use POSIX qw( floor ); |
24 |
use t::lib::Mocks; |
24 |
use t::lib::Mocks; |
25 |
use t::lib::TestBuilder; |
25 |
use t::lib::TestBuilder; |
26 |
|
26 |
|
Lines 1704-1709
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
1704 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1704 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1705 |
}; |
1705 |
}; |
1706 |
|
1706 |
|
|
|
1707 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
1708 |
plan tests => 6; |
1709 |
|
1710 |
my $library = $builder->build( { source => 'Branch' } ); |
1711 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
1712 |
|
1713 |
# Add 2 items |
1714 |
my $biblioitem_1 = $builder->build( { source => 'Biblioitem' } ); |
1715 |
my $item_1 = $builder->build( |
1716 |
{ |
1717 |
source => 'Item', |
1718 |
value => { |
1719 |
homebranch => $library->{branchcode}, |
1720 |
holdingbranch => $library->{branchcode}, |
1721 |
notforloan => 0, |
1722 |
itemlost => 0, |
1723 |
withdrawn => 0, |
1724 |
biblionumber => $biblioitem_1->{biblionumber} |
1725 |
} |
1726 |
} |
1727 |
); |
1728 |
|
1729 |
# And the issuing rule |
1730 |
Koha::IssuingRules->search->delete; |
1731 |
my $rule = Koha::IssuingRule->new( |
1732 |
{ |
1733 |
categorycode => '*', |
1734 |
itemtype => '*', |
1735 |
branchcode => '*', |
1736 |
maxissueqty => 99, |
1737 |
issuelength => 1, |
1738 |
firstremind => 0, # 0 day of grace |
1739 |
finedays => 2, # 2 days of fine per day of overdue |
1740 |
suspension_chargeperiod => 1, |
1741 |
lengthunit => 'days', |
1742 |
} |
1743 |
); |
1744 |
$rule->store(); |
1745 |
|
1746 |
my $five_days_ago = dt_from_string->subtract( days => 5 ); |
1747 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1748 |
|
1749 |
# We want to charge 2 days every day, without grace |
1750 |
# With 5 days of overdue: 5 * Z |
1751 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1752 |
undef, undef, dt_from_string ); |
1753 |
my $debarments = Koha::Patron::Debarments::GetDebarments( |
1754 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1755 |
is( scalar(@$debarments), 1 ); |
1756 |
|
1757 |
my $expected_expiration = output_pref( |
1758 |
{ |
1759 |
dt => dt_from_string->add( days => ( 5 * 2 ) / 1 ), |
1760 |
dateformat => 'sql', |
1761 |
dateonly => 1 |
1762 |
} |
1763 |
); |
1764 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1765 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1766 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1767 |
|
1768 |
# We want to charge 2 days every 2 days, without grace |
1769 |
# With 5 days of overdue: (5 * 2) / 2 |
1770 |
$rule->suspension_chargeperiod(2)->store; |
1771 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1772 |
|
1773 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1774 |
undef, undef, dt_from_string ); |
1775 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
1776 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1777 |
is( scalar(@$debarments), 1 ); |
1778 |
|
1779 |
$expected_expiration = output_pref( |
1780 |
{ |
1781 |
dt => dt_from_string->add( days => floor( 5 * 2 ) / 2 ), |
1782 |
dateformat => 'sql', |
1783 |
dateonly => 1 |
1784 |
} |
1785 |
); |
1786 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1787 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1788 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1789 |
|
1790 |
# We want to charge 2 days every 3 days, with 1 day of grace |
1791 |
# With 5 days of overdue: ((5-1) / 3 ) * 2 |
1792 |
$rule->suspension_chargeperiod(3)->store; |
1793 |
$rule->firstremind(1)->store; |
1794 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1795 |
|
1796 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1797 |
undef, undef, dt_from_string ); |
1798 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
1799 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1800 |
is( scalar(@$debarments), 1 ); |
1801 |
|
1802 |
$expected_expiration = output_pref( |
1803 |
{ |
1804 |
dt => dt_from_string->add( days => floor( ( ( 5 - 1 ) / 3 ) * 2 ) ), |
1805 |
dateformat => 'sql', |
1806 |
dateonly => 1 |
1807 |
} |
1808 |
); |
1809 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1810 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1811 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1812 |
|
1813 |
}; |
1814 |
|
1815 |
|
1707 |
subtest 'AddReturn | is_overdue' => sub { |
1816 |
subtest 'AddReturn | is_overdue' => sub { |
1708 |
plan tests => 5; |
1817 |
plan tests => 5; |
1709 |
|
1818 |
|
1710 |
- |
|
|