View | Details | Raw Unified | Return to bug 17680
Collapse All | Expand All

(-)a/t/db_dependent/Circulation.t (-2 / +78 lines)
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
- 

Return to bug 17680