From 17ec659f85e1a41d6fddc69709bc75f99c99a915 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 23 Mar 2020 08:06:08 -0400 Subject: [PATCH] Bug 21443: Remove the dependency on finesCalendar Considering that the the use of finesCalendar for this calculation is already a binary choice, it makes sense to remove the use of finesCalendar here. It is an uneccessary complication that could introduce confusion. Allowing this new setting to directly control the behavior makes it clear and obvious what is going on. Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer Signed-off-by: Martin Renvoize --- 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(-) diff --git a/Koha/Charges/Fees.pm b/Koha/Charges/Fees.pm index a3d2a12e39..7eff76ba79 100644 --- a/Koha/Charges/Fees.pm +++ b/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 ); } diff --git a/installer/data/mysql/atomicupdate/bug_21443.perl b/installer/data/mysql/atomicupdate/bug_21443.perl index 74cf57f650..82329231c0 100644 --- a/installer/data/mysql/atomicupdate/bug_21443.perl +++ b/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"; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt index 3ba8410352..a0240539fa 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt +++ b/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.
  • diff --git a/t/db_dependent/Koha/Charges/Fees.t b/t/db_dependent/Koha/Charges/Fees.t index a28cc48f92..a204521b9a 100644 --- a/t/db_dependent/Koha/Charges/Fees.t +++ b/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)' ); -- 2.39.5