Lines 20-26
use Modern::Perl;
Link Here
|
20 |
use Test::More tests => 113; |
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 1750-1755
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
1750 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1750 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1751 |
}; |
1751 |
}; |
1752 |
|
1752 |
|
|
|
1753 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
1754 |
plan tests => 6; |
1755 |
|
1756 |
my $library = $builder->build( { source => 'Branch' } ); |
1757 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
1758 |
|
1759 |
# Add 2 items |
1760 |
my $biblioitem_1 = $builder->build( { source => 'Biblioitem' } ); |
1761 |
my $item_1 = $builder->build( |
1762 |
{ |
1763 |
source => 'Item', |
1764 |
value => { |
1765 |
homebranch => $library->{branchcode}, |
1766 |
holdingbranch => $library->{branchcode}, |
1767 |
notforloan => 0, |
1768 |
itemlost => 0, |
1769 |
withdrawn => 0, |
1770 |
biblionumber => $biblioitem_1->{biblionumber} |
1771 |
} |
1772 |
} |
1773 |
); |
1774 |
|
1775 |
# And the issuing rule |
1776 |
Koha::IssuingRules->search->delete; |
1777 |
my $rule = Koha::IssuingRule->new( |
1778 |
{ |
1779 |
categorycode => '*', |
1780 |
itemtype => '*', |
1781 |
branchcode => '*', |
1782 |
maxissueqty => 99, |
1783 |
issuelength => 1, |
1784 |
firstremind => 0, # 0 day of grace |
1785 |
finedays => 2, # 2 days of fine per day of overdue |
1786 |
suspension_chargeperiod => 1, |
1787 |
lengthunit => 'days', |
1788 |
} |
1789 |
); |
1790 |
$rule->store(); |
1791 |
|
1792 |
my $five_days_ago = dt_from_string->subtract( days => 5 ); |
1793 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1794 |
|
1795 |
# We want to charge 2 days every day, without grace |
1796 |
# With 5 days of overdue: 5 * Z |
1797 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1798 |
undef, undef, dt_from_string ); |
1799 |
my $debarments = Koha::Patron::Debarments::GetDebarments( |
1800 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1801 |
is( scalar(@$debarments), 1 ); |
1802 |
|
1803 |
my $expected_expiration = output_pref( |
1804 |
{ |
1805 |
dt => dt_from_string->add( days => ( 5 * 2 ) / 1 ), |
1806 |
dateformat => 'sql', |
1807 |
dateonly => 1 |
1808 |
} |
1809 |
); |
1810 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1811 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1812 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1813 |
|
1814 |
# We want to charge 2 days every 2 days, without grace |
1815 |
# With 5 days of overdue: (5 * 2) / 2 |
1816 |
$rule->suspension_chargeperiod(2)->store; |
1817 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1818 |
|
1819 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1820 |
undef, undef, dt_from_string ); |
1821 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
1822 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1823 |
is( scalar(@$debarments), 1 ); |
1824 |
|
1825 |
$expected_expiration = output_pref( |
1826 |
{ |
1827 |
dt => dt_from_string->add( days => floor( 5 * 2 ) / 2 ), |
1828 |
dateformat => 'sql', |
1829 |
dateonly => 1 |
1830 |
} |
1831 |
); |
1832 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1833 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1834 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1835 |
|
1836 |
# We want to charge 2 days every 3 days, with 1 day of grace |
1837 |
# With 5 days of overdue: ((5-1) / 3 ) * 2 |
1838 |
$rule->suspension_chargeperiod(3)->store; |
1839 |
$rule->firstremind(1)->store; |
1840 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
1841 |
|
1842 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
1843 |
undef, undef, dt_from_string ); |
1844 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
1845 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1846 |
is( scalar(@$debarments), 1 ); |
1847 |
|
1848 |
$expected_expiration = output_pref( |
1849 |
{ |
1850 |
dt => dt_from_string->add( days => floor( ( ( 5 - 1 ) / 3 ) * 2 ) ), |
1851 |
dateformat => 'sql', |
1852 |
dateonly => 1 |
1853 |
} |
1854 |
); |
1855 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1856 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1857 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1858 |
|
1859 |
}; |
1860 |
|
1861 |
|
1753 |
subtest 'AddReturn | is_overdue' => sub { |
1862 |
subtest 'AddReturn | is_overdue' => sub { |
1754 |
plan tests => 5; |
1863 |
plan tests => 5; |
1755 |
|
1864 |
|
1756 |
- |
|
|