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 <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Kyle M Hall 2020-03-23 08:06:08 -04:00 committed by Martin Renvoize
parent 1230f0815b
commit 17ec659f85
No known key found for this signature in database
GPG Key ID: 422B469130441A0F
4 changed files with 11 additions and 7 deletions

View File

@ -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 );
}

View File

@ -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";

View File

@ -248,7 +248,7 @@ Item types administration
[% ELSE %]
<input type="checkbox" id="rentalcharge_daily_calendar" name="rentalcharge_daily_calendar" value="1" />
[% END %]
<span class="hint">If checked, daily charge will be calculated based on the value of the system preference <i>finesCalendar</i>. If not checked, the fee will be calculated based on the number of days until due, directly.</span>
<span class="hint">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.</span>
</li>
<li>
<label for="rentalcharge_hourly">Hourly rental charge: </label>
@ -262,7 +262,7 @@ Item types administration
[% ELSE %]
<input type="checkbox" id="rentalcharge_hourly_calendar" name="rentalcharge_hourly_calendar" value="1" />
[% END %]
<span class="hint">If checked, hourly charge will be calculated based on the value of the system preference <i>finesCalendar</i>. If not checked, the fee will be calculated based on the number of hours until due, directly.</span>
<span class="hint">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.</span>
</li>
<li>
<label for="defaultreplacecost">Default replacement cost: </label>

View File

@ -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)' );