|
Lines 1985-1991
subtest 'CanBookBeIssued + AutoReturnCheckedOutItems' => sub {
Link Here
|
| 1985 |
|
1985 |
|
| 1986 |
|
1986 |
|
| 1987 |
subtest 'AddReturn | is_overdue' => sub { |
1987 |
subtest 'AddReturn | is_overdue' => sub { |
| 1988 |
plan tests => 8; |
1988 |
plan tests => 5; |
| 1989 |
|
1989 |
|
| 1990 |
t::lib::Mocks::mock_preference('CalculateFinesOnReturn', 1); |
1990 |
t::lib::Mocks::mock_preference('CalculateFinesOnReturn', 1); |
| 1991 |
t::lib::Mocks::mock_preference('finesMode', 'production'); |
1991 |
t::lib::Mocks::mock_preference('finesMode', 'production'); |
|
Lines 2044-2092
subtest 'AddReturn | is_overdue' => sub {
Link Here
|
| 2044 |
my $ten_days_ago = dt_from_string->subtract( days => 10 ); |
2044 |
my $ten_days_ago = dt_from_string->subtract( days => 10 ); |
| 2045 |
$patron = Koha::Patrons->find( $patron->{borrowernumber} ); |
2045 |
$patron = Koha::Patrons->find( $patron->{borrowernumber} ); |
| 2046 |
|
2046 |
|
| 2047 |
# No date specify, today will be used |
2047 |
# No return date specified, today will be used => 10 days overdue charged |
| 2048 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
2048 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
| 2049 |
AddReturn( $item->{barcode}, $library->{branchcode} ); |
2049 |
AddReturn( $item->{barcode}, $library->{branchcode} ); |
| 2050 |
is( int($patron->account->balance()), 10, 'Patron should have a charge of 10 (10 days x 1)' ); |
2050 |
is( int($patron->account->balance()), 10, 'Patron should have a charge of 10 (10 days x 1)' ); |
| 2051 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
2051 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
| 2052 |
|
2052 |
|
| 2053 |
# specify return date 5 days before => no overdue |
2053 |
# specify return date 5 days before => no overdue charged |
| 2054 |
AddIssue( $patron->unblessed, $item->{barcode}, $five_days_ago ); # date due was 5d ago |
2054 |
AddIssue( $patron->unblessed, $item->{barcode}, $five_days_ago ); # date due was 5d ago |
| 2055 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, $ten_days_ago ); |
2055 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, $ten_days_ago ); |
| 2056 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
2056 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
| 2057 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
2057 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
| 2058 |
|
2058 |
|
| 2059 |
# specify return date 5 days later => overdue |
2059 |
# specify return date 5 days later => 5 days overdue charged |
| 2060 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
2060 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
| 2061 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, $five_days_ago ); |
2061 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, $five_days_ago ); |
| 2062 |
is( int($patron->account->balance()), 5, 'AddReturn: pass return_date => overdue' ); |
2062 |
is( int($patron->account->balance()), 5, 'AddReturn: pass return_date => overdue' ); |
| 2063 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
2063 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
| 2064 |
|
2064 |
|
| 2065 |
# specify dropbox date 5 days before => no overdue |
2065 |
# specify return date 5 days later, specify exemptfine => no overdue charge |
| 2066 |
AddIssue( $patron->unblessed, $item->{barcode}, $five_days_ago ); # date due was 5d ago |
2066 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
| 2067 |
AddReturn( $item->{barcode}, $library->{branchcode}, $ten_days_ago ); |
2067 |
AddReturn( $item->{barcode}, $library->{branchcode}, 1, $five_days_ago ); |
| 2068 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
2068 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
| 2069 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
2069 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
| 2070 |
|
2070 |
|
| 2071 |
# specify dropbox date 5 days later => overdue, or... not |
2071 |
subtest 'bug 22877' => sub { |
| 2072 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
|
|
| 2073 |
AddReturn( $item->{barcode}, $library->{branchcode}, $five_days_ago ); |
| 2074 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue in dropbox mode' ); # FIXME? This is weird, the OVERDUE fine is created ( _CalculateAndUpdateFine > C4::Overdues::UpdateFine ) then remove later (in _FixOverduesOnReturn). Looks like it is a feature |
| 2075 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
| 2076 |
|
2072 |
|
| 2077 |
# Checkout an item 10 days ago |
2073 |
plan tests => 3; |
| 2078 |
my $issue = AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
2074 |
|
| 2079 |
# Fake fines cronjob on this checkout |
2075 |
my $issue = AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
| 2080 |
my ( $fine ) = CalcFine( $item , $patron->categorycode, $library->{branchcode}, $ten_days_ago, $now ); |
|
|
| 2081 |
UpdateFine({ issue_id => $issue->issue_id, itemnumber => $item->{itemnumber}, borrowernumber => $patron->borrowernumber, amount => $fine, due => output_pref($ten_days_ago) }); |
| 2082 |
is( int($patron->account->balance()),10, "Overdue fine of 10 days overdue"); |
| 2083 |
# Fake longoverdue with charge and not marking returned |
| 2084 |
LostItem( $item->{itemnumber}, 'cronjob',0 ); |
| 2085 |
is( int($patron->account->balance()),17, "Lost fine of 7 plus 10 days overdue"); |
| 2086 |
# Now we return it today |
| 2087 |
AddReturn( $item->{barcode}, $library->{branchcode} ); |
| 2088 |
is( int($patron->account->balance()),17, "Should have a single 10 days overdue fine and lost charge"); |
| 2089 |
|
2076 |
|
|
|
2077 |
# Fake fines cronjob on this checkout |
| 2078 |
my ($fine) = |
| 2079 |
CalcFine( $item, $patron->categorycode, $library->{branchcode}, |
| 2080 |
$ten_days_ago, $now ); |
| 2081 |
UpdateFine( |
| 2082 |
{ |
| 2083 |
issue_id => $issue->issue_id, |
| 2084 |
itemnumber => $item->{itemnumber}, |
| 2085 |
borrowernumber => $patron->borrowernumber, |
| 2086 |
amount => $fine, |
| 2087 |
due => output_pref($ten_days_ago) |
| 2088 |
} |
| 2089 |
); |
| 2090 |
is( int( $patron->account->balance() ), |
| 2091 |
10, "Overdue fine of 10 days overdue" ); |
| 2092 |
|
| 2093 |
# Fake longoverdue with charge and not marking returned |
| 2094 |
LostItem( $item->{itemnumber}, 'cronjob', 0 ); |
| 2095 |
is( int( $patron->account->balance() ), |
| 2096 |
17, "Lost fine of 7 plus 10 days overdue" ); |
| 2097 |
|
| 2098 |
# Now we return it today |
| 2099 |
AddReturn( $item->{barcode}, $library->{branchcode} ); |
| 2100 |
is( int( $patron->account->balance() ), |
| 2101 |
17, "Should have a single 10 days overdue fine and lost charge" ); |
| 2102 |
} |
| 2090 |
}; |
2103 |
}; |
| 2091 |
|
2104 |
|
| 2092 |
subtest '_FixAccountForLostAndReturned' => sub { |
2105 |
subtest '_FixAccountForLostAndReturned' => sub { |
| 2093 |
- |
|
|