Lines 17-23
Link Here
|
17 |
|
17 |
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
|
19 |
|
20 |
use Test::More tests => 95; |
20 |
use Test::More tests => 96; |
21 |
|
21 |
|
22 |
use DateTime; |
22 |
use DateTime; |
23 |
|
23 |
|
Lines 1632-1637
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
1632 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1632 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
1633 |
}; |
1633 |
}; |
1634 |
|
1634 |
|
|
|
1635 |
subtest 'AddReturn | is_overdue' => sub { |
1636 |
plan tests => 5; |
1637 |
|
1638 |
t::lib::Mocks::mock_preference('CalculateFinesOnReturn', 1); |
1639 |
t::lib::Mocks::mock_preference('finesMode', 'production'); |
1640 |
t::lib::Mocks::mock_preference('MaxFine', '100'); |
1641 |
|
1642 |
my $library = $builder->build( { source => 'Branch' } ); |
1643 |
my $patron = $builder->build( { source => 'Borrower' } ); |
1644 |
|
1645 |
my $biblioitem = $builder->build( { source => 'Biblioitem' } ); |
1646 |
my $item = $builder->build( |
1647 |
{ |
1648 |
source => 'Item', |
1649 |
value => { |
1650 |
homebranch => $library->{branchcode}, |
1651 |
holdingbranch => $library->{branchcode}, |
1652 |
notforloan => 0, |
1653 |
itemlost => 0, |
1654 |
withdrawn => 0, |
1655 |
biblionumber => $biblioitem->{biblionumber}, |
1656 |
} |
1657 |
} |
1658 |
); |
1659 |
|
1660 |
Koha::IssuingRules->search->delete; |
1661 |
my $rule = Koha::IssuingRule->new( |
1662 |
{ |
1663 |
categorycode => '*', |
1664 |
itemtype => '*', |
1665 |
branchcode => '*', |
1666 |
maxissueqty => 99, |
1667 |
issuelength => 6, |
1668 |
lengthunit => 'days', |
1669 |
fine => 1, # Charge 1 every day of overdue |
1670 |
chargeperiod => 1, |
1671 |
} |
1672 |
); |
1673 |
$rule->store(); |
1674 |
|
1675 |
my $one_day_ago = dt_from_string->subtract( days => 1 ); |
1676 |
my $five_days_ago = dt_from_string->subtract( days => 5 ); |
1677 |
my $ten_days_ago = dt_from_string->subtract( days => 10 ); |
1678 |
$patron = Koha::Patrons->find( $patron->{borrowernumber} ); |
1679 |
|
1680 |
# No date specify, today will be used |
1681 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
1682 |
AddReturn( $item->{barcode}, $library->{branchcode} ); |
1683 |
is( int($patron->account->balance()), 10, 'Patron should have a charge of 10 (10 days x 1)' ); |
1684 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
1685 |
|
1686 |
# specify return date 5 days before => no overdue |
1687 |
AddIssue( $patron->unblessed, $item->{barcode}, $five_days_ago ); # date due was 5d ago |
1688 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, undef, $ten_days_ago ); |
1689 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
1690 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
1691 |
|
1692 |
# specify return date 5 days later => overdue |
1693 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
1694 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, undef, $five_days_ago ); |
1695 |
is( int($patron->account->balance()), 5, 'AddReturn: pass return_date => overdue' ); |
1696 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
1697 |
|
1698 |
# specify dropbox date 5 days before => no overdue |
1699 |
AddIssue( $patron->unblessed, $item->{barcode}, $five_days_ago ); # date due was 5d ago |
1700 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, 1, undef, $ten_days_ago ); |
1701 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' ); |
1702 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
1703 |
|
1704 |
# specify dropbox date 5 days later => overdue, or... not |
1705 |
AddIssue( $patron->unblessed, $item->{barcode}, $ten_days_ago ); # date due was 10d ago |
1706 |
AddReturn( $item->{barcode}, $library->{branchcode}, undef, 1, undef, $five_days_ago ); |
1707 |
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue in dropbox mode' ); # FIXME? This is weird, the FU fine is created ( _CalculateAndUpdateFine > C4::Overdues::UpdateFine ) then remove later (in _FixOverduesOnReturn). Looks like it is a feature |
1708 |
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete; |
1709 |
|
1710 |
}; |
1711 |
|
1635 |
sub set_userenv { |
1712 |
sub set_userenv { |
1636 |
my ( $library ) = @_; |
1713 |
my ( $library ) = @_; |
1637 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, $library->{branchname}, '', '', ''); |
1714 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, $library->{branchname}, '', '', ''); |
1638 |
- |
|
|