From 8efbcf3b1af96b740a0b43b279d09cd4cbbc301e Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Mon, 1 Oct 2012 14:30:44 -0400 Subject: [PATCH] LP#980296: Void Lost Fines if copy claims returned. Add an ou setting (circ.void_lost_on_claimsreturned) to control whether or not lost fines are voided when a lost circulation is claims returned. Signed-off-by: Jason Stephenson Signed-off-by: Ben Shum Signed-off-by: Kathy Lussier --- .../src/perlmods/lib/OpenILS/Application/Circ.pm | 11 ++++++++ .../lib/OpenILS/Application/Circ/CircCommon.pm | 29 ++++++++++++++++++++++ Open-ILS/src/sql/Pg/950.data.seed-values.sql | 14 +++++++++-- ...XXXX.data.coust_void_lost_on_claimsreturned.sql | 18 ++++++++++++++ 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.coust_void_lost_on_claimsreturned.sql diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ.pm index 4ed6bf0fd8..3e8dc15044 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ.pm @@ -475,6 +475,17 @@ sub set_circ_claims_returned { $e->update_asset_copy($copy) or return $e->die_event; } + # Check if the copy circ lib wants lost fees voided on claims + # returned. + if ($U->is_true($U->ou_ancestor_setting_value($copy->circ_lib, 'circ.void_lost_on_claimsreturned', $e))) { + my $result = OpenILS::Application::Circ::CircCommon->void_lost( + $e, + $circ, + 3 + ); + return $result if ($result); + } + $e->commit; return 1; } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm index 1315a8c6f9..d518dad1f0 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm @@ -72,6 +72,35 @@ sub void_overdues { return undef; } +# ------------------------------------------------------------------ +# remove charge from patron's account if lost item is returned +# ------------------------------------------------------------------ +sub void_lost { + my ($class, $e, $circ, $btype) = @_; + + my $bills = $e->search_money_billing( + { + xact => $circ->id, + btype => $btype + } + ); + + $logger->debug("voiding lost item charge of ".scalar(@$bills)); + for my $bill (@$bills) { + if( !$U->is_true($bill->voided) ) { + $logger->info("lost item returned - voiding bill ".$bill->id); + $bill->voided('t'); + $bill->void_time('now'); + $bill->voider($e->requestor->id); + my $note = ($bill->note) ? $bill->note . "\n" : ''; + $bill->note("${note}System: VOIDED FOR LOST ITEM RETURNED"); + + return $e->die_event + unless $e->update_money_billing($bill); + } + } + return undef; +} sub reopen_xact { my($class, $e, $xactid) = @_; diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index bf47472611..107906d47d 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -14134,5 +14134,15 @@ INSERT INTO config.global_flag (name, label, value, enabled) VALUES ( TRUE ); - - +INSERT INTO config.org_unit_setting_type + (name, grp, label, description, datatype) + VALUES + ('circ.void_lost_on_claimsreturned', + 'circ', + oils_i18n_gettext('circ.void_lost_on_claimsreturned', + 'Void lost item billing when claims returned', + 'coust', 'label'), + oils_i18n_gettext('circ.void_lost_on_claimsreturned', + 'Void lost item billing when claims returned', + 'coust', 'description'), + 'bool'); diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.coust_void_lost_on_claimsreturned.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.coust_void_lost_on_claimsreturned.sql new file mode 100644 index 0000000000..4180672269 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.coust_void_lost_on_claimsreturned.sql @@ -0,0 +1,18 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); + +INSERT INTO config.org_unit_setting_type + (name, grp, label, description, datatype) + VALUES + ('circ.void_lost_on_claimsreturned', + 'circ', + oils_i18n_gettext('circ.void_lost_on_claimsreturned', + 'Void lost item billing when claims returned', + 'coust', 'label'), + oils_i18n_gettext('circ.void_lost_on_claimsreturned', + 'Void lost item billing when claims returned', + 'coust', 'description'), + 'bool'); + +COMMIT; -- 2.11.0