Jonathan Druart
9e249435f9
It has been missed on bug 17600. Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Adjusted commit title. Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
64 lines
2 KiB
Perl
Executable file
64 lines
2 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
|
|
use C4::Context;
|
|
use C4::Overdues qw( CalcFine );
|
|
use Koha::Database;
|
|
use Koha::DateUtils qw( dt_from_string );
|
|
|
|
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' );
|