@@ -, +, @@ calculating fines --- C4/Overdues.pm | 1 + t/db_dependent/Circulation/CalcFine.t | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) --- a/C4/Overdues.pm +++ a/C4/Overdues.pm @@ -318,6 +318,7 @@ sub get_chargeable_units { if(C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed') { my $calendar = Koha::Calendar->new( branchcode => $branchcode ); $charge_duration = $calendar->days_between( $date_due, $date_returned ); + $charge_duration->subtract(days=>1) if $calendar->is_holiday( $date_returned ); } else { $charge_duration = $date_returned->delta_days( $date_due ); } --- a/t/db_dependent/Circulation/CalcFine.t +++ a/t/db_dependent/Circulation/CalcFine.t @@ -4,6 +4,7 @@ use Modern::Perl; use Test::More tests => 3; +use C4::Calendar; use C4::Context; use C4::Overdues; @@ -62,7 +63,9 @@ my $item = $builder->build_sample_item( ); subtest 'Test basic functionality' => sub { - plan tests => 1; + plan tests => 3; + + t::lib::Mocks::mock_preference('finesCalendar', 'ignoreCalendar'); Koha::CirculationRules->set_rules( { @@ -97,6 +100,15 @@ subtest 'Test basic functionality' => sub { is( $amount, 29, 'Amount is calculated correctly' ); + + C4::Calendar->new(branchcode=>$branch->{branchcode})->insert_single_holiday(date=>'2000-01-30',title=>'test',description=>'test'); + ($amount) = CalcFine( $item->unblessed, $patron->{categorycode}, $branch->{branchcode}, $start_dt, $end_dt ); + is( $amount, 29, 'Amount is calculated correctly ignoring holidays' ); + + t::lib::Mocks::mock_preference('finesCalendar', 'noFinesWhenClosed'); + ($amount) = CalcFine( $item->unblessed, $patron->{categorycode}, $branch->{branchcode}, $start_dt, $end_dt ); + is( $amount, 28, 'Amount is calculated correctly excluding holidays' ); + teardown(); }; --