From a8104c59697bdf36cf3ca7d917625b2160307393 Mon Sep 17 00:00:00 2001 From: Liam Whalen Date: Sun, 14 Jul 2013 21:30:13 -0700 Subject: [PATCH] LP#1193204 Fixes error with generate_fines If an overdue is returned after a closed date, the generate_fines code will not generate fines for those items because the section of code that checks for closed dates returns from the function if a closed date is encountered. For example, if an item is due on June 29th, but is not returned until after July 1st (Canada Day), then when fines are generated for the item, generate_fines creates a fine for the 30th of June, but when it gets to the 1st of July it encouters a closed date and executes a 'return' statement which exits the generate_fines code causing the fine from June 30th to be rolled back as well as preventing further fines from being created. This fix replaces the 'return' statements inside the 'for' loop that is nested within the eval with 'next' statements. Signed-off-by: Liam Whalen Signed-off-by: Dan Scott --- .../src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm index bc8cc7765f..a36227e7ed 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm @@ -1186,7 +1186,7 @@ sub generate_fines { my $dow_close = "dow_${dow}_close"; if (my $h = $hoo{$c->$circ_lib_method}) { - return if ( $h->$dow_open eq '00:00:00' and $h->$dow_close eq '00:00:00'); + next if ( $h->$dow_open eq '00:00:00' and $h->$dow_close eq '00:00:00'); } my @cl = actor::org_unit::closed_date->search_where( @@ -1194,7 +1194,7 @@ sub generate_fines { close_end => { '>=' => $timestamptz }, org_unit => $c->$circ_lib_method } ); - return if (@cl); + next if (@cl); } # The billing amount for this billing normally ought to be the recurring fine amount. -- 2.11.0