|
Lines 24-29
use POSIX qw( floor );
Link Here
|
| 24 |
use t::lib::Mocks; |
24 |
use t::lib::Mocks; |
| 25 |
use t::lib::TestBuilder; |
25 |
use t::lib::TestBuilder; |
| 26 |
|
26 |
|
|
|
27 |
use C4::Calendar; |
| 27 |
use C4::Circulation; |
28 |
use C4::Circulation; |
| 28 |
use C4::Biblio; |
29 |
use C4::Biblio; |
| 29 |
use C4::Items; |
30 |
use C4::Items; |
|
Lines 48-53
my $dbh = C4::Context->dbh;
Link Here
|
| 48 |
# Start transaction |
49 |
# Start transaction |
| 49 |
$dbh->{RaiseError} = 1; |
50 |
$dbh->{RaiseError} = 1; |
| 50 |
|
51 |
|
|
|
52 |
my $cache = Koha::Caches->get_instance(); |
| 53 |
$dbh->do(q|DELETE FROM special_holidays|); |
| 54 |
$dbh->do(q|DELETE FROM repeatable_holidays|); |
| 55 |
$cache->clear_from_cache('single_holidays'); |
| 56 |
|
| 51 |
# Start with a clean slate |
57 |
# Start with a clean slate |
| 52 |
$dbh->do('DELETE FROM issues'); |
58 |
$dbh->do('DELETE FROM issues'); |
| 53 |
$dbh->do('DELETE FROM borrowers'); |
59 |
$dbh->do('DELETE FROM borrowers'); |
|
Lines 1758-1764
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
| 1758 |
}; |
1764 |
}; |
| 1759 |
|
1765 |
|
| 1760 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
1766 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
| 1761 |
plan tests => 6; |
1767 |
plan tests => 8; |
| 1762 |
|
1768 |
|
| 1763 |
my $library = $builder->build( { source => 'Branch' } ); |
1769 |
my $library = $builder->build( { source => 'Branch' } ); |
| 1764 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
1770 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
|
Lines 1863-1871
subtest 'AddReturn + suspension_chargeperiod' => sub {
Link Here
|
| 1863 |
Koha::Patron::Debarments::DelUniqueDebarment( |
1869 |
Koha::Patron::Debarments::DelUniqueDebarment( |
| 1864 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
1870 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
| 1865 |
|
1871 |
|
| 1866 |
}; |
1872 |
|
|
|
1873 |
# We want to charge 2 days every days, with 0 day of grace (to not burn brains) |
| 1874 |
$rule->finedays(2)->store; |
| 1875 |
$rule->suspension_chargeperiod(1)->store; |
| 1876 |
$rule->firstremind(0)->store; |
| 1877 |
t::lib::Mocks::mock_preference('finesCalendar', 'noFinesWhenClosed'); |
| 1878 |
|
| 1879 |
# Adding a holiday 2 days ago |
| 1880 |
my $calendar = C4::Calendar->new(branchcode => $library->{branchcode}); |
| 1881 |
my $two_days_ago = dt_from_string->subtract( days => 2 ); |
| 1882 |
$calendar->insert_single_holiday( |
| 1883 |
day => $two_days_ago->day, |
| 1884 |
month => $two_days_ago->month, |
| 1885 |
year => $two_days_ago->year, |
| 1886 |
title => 'holidayTest-2d', |
| 1887 |
description => 'holidayDesc 2 days ago' |
| 1888 |
); |
| 1889 |
|
| 1890 |
# With 5 days of overdue, only 4 (x finedays=2) days must charged (one was an holiday) |
| 1891 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
| 1892 |
|
| 1893 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
| 1894 |
undef, undef, dt_from_string ); |
| 1895 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
| 1896 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
| 1897 |
$expected_expiration = output_pref( |
| 1898 |
{ |
| 1899 |
dt => dt_from_string->add( days => floor( ( ( 5 - 0 - 1 ) / 1 ) * 2 ) ), |
| 1900 |
dateformat => 'sql', |
| 1901 |
dateonly => 1 |
| 1902 |
} |
| 1903 |
); |
| 1904 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
| 1905 |
Koha::Patron::Debarments::DelUniqueDebarment( |
| 1906 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
| 1867 |
|
1907 |
|
| 1868 |
|
1908 |
|
|
|
1909 |
my $two_days_ahead = dt_from_string->add( days => 2 ); |
| 1910 |
$calendar->insert_single_holiday( |
| 1911 |
day => $two_days_ahead->day, |
| 1912 |
month => $two_days_ahead->month, |
| 1913 |
year => $two_days_ahead->year, |
| 1914 |
title => 'holidayTest+2d', |
| 1915 |
description => 'holidayDesc 2 days ahead' |
| 1916 |
); |
| 1917 |
|
| 1918 |
# Same as above, but we should skip D+2 |
| 1919 |
AddIssue( $patron, $item_1->{barcode}, $five_days_ago ); # Add an overdue |
| 1920 |
|
| 1921 |
AddReturn( $item_1->{barcode}, $library->{branchcode}, |
| 1922 |
undef, undef, dt_from_string ); |
| 1923 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
| 1924 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
| 1925 |
$expected_expiration = output_pref( |
| 1926 |
{ |
| 1927 |
dt => dt_from_string->add( days => floor( ( ( 5 - 0 - 1 ) / 1 ) * 2 ) + 1 ), |
| 1928 |
dateformat => 'sql', |
| 1929 |
dateonly => 1 |
| 1930 |
} |
| 1931 |
); |
| 1932 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
| 1933 |
Koha::Patron::Debarments::DelUniqueDebarment( |
| 1934 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
| 1935 |
|
| 1936 |
}; |
| 1937 |
|
| 1869 |
subtest 'AddReturn | is_overdue' => sub { |
1938 |
subtest 'AddReturn | is_overdue' => sub { |
| 1870 |
plan tests => 5; |
1939 |
plan tests => 5; |
| 1871 |
|
1940 |
|
|
Lines 2163-2168
subtest 'CanBookBeIssued | is_overdue' => sub {
Link Here
|
| 2163 |
|
2232 |
|
| 2164 |
}; |
2233 |
}; |
| 2165 |
|
2234 |
|
|
|
2235 |
|
| 2236 |
$schema->storage->txn_rollback; |
| 2237 |
$cache->clear_from_cache('single_holidays'); |
| 2238 |
|
| 2166 |
sub set_userenv { |
2239 |
sub set_userenv { |
| 2167 |
my ( $library ) = @_; |
2240 |
my ( $library ) = @_; |
| 2168 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, $library->{branchname}, '', '', ''); |
2241 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, $library->{branchname}, '', '', ''); |
| 2169 |
- |
|
|