Allow fines to accrue during closings collab/berick/fine-when-closed
authorBill Erickson <berick@esilibrary.com>
Fri, 23 Mar 2012 20:29:16 +0000 (16:29 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 23 Mar 2012 20:29:16 +0000 (16:29 -0400)
Logic repiars and out-of-scope (strict) variable repairs.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm

index b448026..cc61ba4 100644 (file)
@@ -904,8 +904,9 @@ sub generate_fines {
                        my $recurring_fine = int($c->$recurring_fine_method * 100);
                        my $max_fine = int($c->max_fine * 100);
 
-                       my $skip_closed_check = $U->ou_ancestor_setting_value($c->$circ_lib_method, 'circ.fines.charge_when_closed');
-                       $skip_closed_check = $skip_closed_check ? $skip_closed_check->{value} : 0;
+                       my $skip_closed_check = $U->ou_ancestor_setting_value(
+                               $c->$circ_lib_method->to_fieldmapper->id, 'circ.fines.charge_when_closed');
+                       $skip_closed_check = $U->is_true($skip_closed_check);
 
                        my ($latest_billing_ts, $latest_amount) = ('',0);
                        for (my $bill = 1; $bill <= $pending_fine_count; $bill++) {
@@ -927,6 +928,7 @@ sub generate_fines {
                                        $current_bill_count--;
                                }
 
+                               my $timestamptz = $billing_ts->strftime('%FT%T%z');
                                if (!$skip_closed_check) {
                                        my $dow = $billing_ts->day_of_week_0();
                                        my $dow_open = "dow_${dow}_open";
@@ -936,7 +938,6 @@ sub generate_fines {
                                                next if ( $h->$dow_open eq '00:00:00' and $h->$dow_close eq '00:00:00');
                                        }
        
-                                       my $timestamptz = $billing_ts->strftime('%FT%T%z');
                                        my @cl = actor::org_unit::closed_date->search_where(
                                                        { close_start   => { '<=' => $timestamptz },
                                                          close_end     => { '>=' => $timestamptz },