Bug 21443: Add ability to exclude holidays when calculating rentals fees by time...
authorKyle M Hall <kyle@bywatersolutions.com>
Mon, 9 Mar 2020 17:28:16 +0000 (13:28 -0400)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 24 Mar 2020 11:09:02 +0000 (11:09 +0000)
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Marti Fuerst <mfuerst@hmcpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/Charges/Fees.pm
admin/itemtypes.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt

index 22255d5..a3d2a12 100644 (file)
@@ -112,7 +112,7 @@ sub accumulate_rentalcharge {
     my $calendar = Koha::Calendar->new( branchcode => $self->library->id );
 
     if ( $units eq 'hours' ) {
-        if ( C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) {
+        if ( $itemtype->rentalcharge_hourly_calendar && C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) {
             $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 ( C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) {
+        if ( $itemtype->rentalcharge_daily_calendar && C4::Context->preference('finesCalendar') eq 'noFinesWhenClosed' ) {
             $duration =
               $calendar->days_between( $self->from_date, $self->to_date );
         }
index 8a341b6..7b13dac 100755 (executable)
@@ -105,6 +105,8 @@ if ( $op eq 'add_form' ) {
     my $checkinmsgtype = $input->param('checkinmsgtype');
     my $hideinopac     = $input->param('hideinopac') // 0;
     my $searchcategory = $input->param('searchcategory');
+    my $rentalcharge_daily_calendar  = $input->param('rentalcharge_daily_calendar') // 0;
+    my $rentalcharge_hourly_calendar = $input->param('rentalcharge_hourly_calendar') // 0;
 
     if ( $itemtype and $is_a_modif ) {    # it's a modification
         $itemtype->description($description);
@@ -121,6 +123,8 @@ if ( $op eq 'add_form' ) {
         $itemtype->sip_media_type($sip_media_type);
         $itemtype->hideinopac($hideinopac);
         $itemtype->searchcategory($searchcategory);
+        $itemtype->rentalcharge_daily_calendar($rentalcharge_daily_calendar);
+        $itemtype->rentalcharge_hourly_calendar($rentalcharge_hourly_calendar);
 
         eval {
           $itemtype->store;
@@ -150,6 +154,8 @@ if ( $op eq 'add_form' ) {
                 sip_media_type      => $sip_media_type,
                 hideinopac          => $hideinopac,
                 searchcategory      => $searchcategory,
+                rentalcharge_daily_calendar  => $rentalcharge_daily_calendar,
+                rentalcharge_hourly_calendar => $rentalcharge_hourly_calendar,
             }
         );
         eval {
index b6c8529..3ba8410 100644 (file)
@@ -242,11 +242,29 @@ Item types administration
                     <span class="hint">This fee is charged at checkout/renewal time for each day between the checkout/renewal date and due date for loans specified in days.</span>
                 </li>
                 <li>
+                    <label for="rentalcharge_daily_calendar">Daily rentals use calendar: </label>
+                        [% IF itemtype.rentalcharge_daily_calendar %]
+                            <input type="checkbox" id="rentalcharge_daily_calendar" name="rentalcharge_daily_calendar" checked="checked" value="1" />
+                        [% 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>
+                </li>
+                <li>
                     <label for="rentalcharge_hourly">Hourly rental charge: </label>
                     <input type="text" id="rentalcharge_hourly" name="rentalcharge_hourly" size="10" value="[% itemtype.rentalcharge_hourly | $Price on_editing => 1 %]" />
                     <span class="hint">This fee is charged at checkout/renewal time for each hour between the checkout/renewal date and due date for loans specified in hours.</span>
                 </li>
                 <li>
+                    <label for="rentalcharge_hourly_calendar">Hourly rentals use calendar: </label>
+                        [% IF itemtype.rentalcharge_hourly_calendar %]
+                            <input type="checkbox" id="rentalcharge_hourly_calendar" name="rentalcharge_hourly_calendar" checked="checked" value="1" />
+                        [% 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>
+                </li>
+                <li>
                     <label for="defaultreplacecost">Default replacement cost: </label>
                     <input type="text" id="defaultreplacecost" name="defaultreplacecost" size="10" value="[% itemtype.defaultreplacecost | html %]" />
                 </li>