#!/usr/bin/perl use Modern::Perl; use C4::Context; use C4::Overdues; use Koha::Database; use Koha::DateUtils; use Test::More tests => 5; my $schema = Koha::Database->new->schema; $schema->storage->txn_begin; my $dbh = C4::Context->dbh; $dbh->do(q|DELETE FROM circulation_rules|); my $issuingrule = Koha::CirculationRules->set_rules( { categorycode => undef, itemtype => undef, branchcode => undef, rules => { fine => 1, finedays => 0, chargeperiod => 7, chargeperiod_charge_at => 0, lengthunit => 'days', issuelength => 1, } } ); ok( $issuingrule, 'Issuing rule created' ); my $period_start = dt_from_string('2000-01-01'); my $period_end = dt_from_string('2000-01-05'); my ( $fine ) = CalcFine( {}, q{}, q{}, $period_start, $period_end ); is( $fine, 0, '4 days overdue, charge period 7 days, charge at end of interval gives fine of $0' ); $period_end = dt_from_string('2000-01-10'); ( $fine ) = CalcFine( {}, q{}, q{}, $period_start, $period_end ); is( $fine, 1, '9 days overdue, charge period 7 days, charge at end of interval gives fine of $1' ); # Test charging fine at the *beginning* of each charge period $issuingrule = Koha::CirculationRules->set_rules( { categorycode => undef, itemtype => undef, branchcode => undef, rules => { chargeperiod_charge_at => 1, } } ); $period_end = dt_from_string('2000-01-05'); ( $fine ) = CalcFine( {}, q{}, q{}, $period_start, $period_end ); is( $fine, 1, '4 days overdue, charge period 7 days, charge at start of interval gives fine of $1' ); $period_end = dt_from_string('2000-01-10'); ( $fine ) = CalcFine( {}, q{}, q{}, $period_start, $period_end ); is( $fine, 2, '9 days overdue, charge period 7 days, charge at start of interval gives fine of $2' );