@@ -, +, @@ --- Koha/Charges/Fees.pm | 4 ++-- installer/data/mysql/atomicupdate/bug_21443.perl | 4 ++++ koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt | 4 ++-- t/db_dependent/Koha/Charges/Fees.t | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) --- a/Koha/Charges/Fees.pm +++ a/Koha/Charges/Fees.pm @@ -112,7 +112,7 @@ sub accumulate_rentalcharge { my $calendar = Koha::Calendar->new( branchcode => $self->library->id ); if ( $units eq 'hours' ) { - if ( $itemtype->rentalcharge_hourly_calendar && C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) { + if ( $itemtype->rentalcharge_hourly_calendar ) { $duration = $calendar->hours_between( $self->from_date->truncate( to => 'minute' ), $self->to_date->truncate( to => 'minute' ) @@ -124,7 +124,7 @@ sub accumulate_rentalcharge { } } else { - if ( $itemtype->rentalcharge_daily_calendar && C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) { + if ( $itemtype->rentalcharge_daily_calendar ) { $duration = $calendar->days_between( $self->from_date, $self->to_date ); } --- a/installer/data/mysql/atomicupdate/bug_21443.perl +++ a/installer/data/mysql/atomicupdate/bug_21443.perl @@ -16,6 +16,10 @@ if( CheckVersion( $DBversion ) ) { }); } + my $finesCalendar = C4::Context->preference('finesCalendar'); + my $value = $finesCalendar eq 'noFinesWhenClosed' ? 1 : 0; + $dbh->do("UPDATE itemtypes SET rentalcharge_hourly_calendar = $value, rentalcharge_daily_calendar = $value"); + # Always end with this (adjust the bug info) SetVersion( $DBversion ); print "Upgrade to $DBversion done (Bug 21443: Add ability to exclude holidays when calculating rentals fees by time period)\n"; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt @@ -248,7 +248,7 @@ Item types administration [% ELSE %] [% END %] - If checked, daily charge will be calculated based on the value of the system preference finesCalendar. If not checked, the fee will be calculated based on the number of days until due, directly. + If checked, daily charge will be calculated using the calendar to exclude holidays. If not checked, the fee will be calculated based on the number of days until due, directly.
  • @@ -262,7 +262,7 @@ Item types administration [% ELSE %] [% END %] - If checked, hourly charge will be calculated based on the value of the system preference finesCalendar. If not checked, the fee will be calculated based on the number of hours until due, directly. + If checked, hourly charge will be calculated using the calendar to exclude holidays. If not checked, the fee will be calculated based on the number of hours until due, directly.
  • --- a/t/db_dependent/Koha/Charges/Fees.t +++ a/t/db_dependent/Koha/Charges/Fees.t @@ -408,11 +408,11 @@ subtest 'accumulate_rentalcharge tests' => sub { } ); - t::lib::Mocks::mock_preference( 'finesCalendar', 'ignoreCalendar' ); + $itemtype->rentalcharge_hourly_calendar(0)->store(); $charge = $fees->accumulate_rentalcharge(); is( $charge, 24.00, 'Hourly rental charge calculated correctly (96h * 0.25u)' ); - t::lib::Mocks::mock_preference( 'finesCalendar', 'noFinesWhenClosed' ); + $itemtype->rentalcharge_hourly_calendar(1)->store(); $charge = $fees->accumulate_rentalcharge(); is( $charge, 18.00, "Hourly rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed $dayname (96h - 24h * 0.25u)" @@ -423,8 +423,8 @@ subtest 'accumulate_rentalcharge tests' => sub { is( $charge, 24.00, "Hourly rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed $dayname (96h - 24h * 0.25u) and rentalcharge_hourly_calendar = 0" ); - $itemtype->rentalcharge_hourly_calendar(1)->store(); + $itemtype->rentalcharge_hourly_calendar(1)->store(); $calendar->delete_holiday( weekday => $closed_day ); $charge = $fees->accumulate_rentalcharge(); is( $charge, 24.00, 'Hourly rental charge calculated correctly with finesCalendar = noFinesWhenClosed (96h - 0h * 0.25u)' ); --