From 46629e2065b12d2effe86cc6362f34f2b6aabafb Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 12 Aug 2013 15:02:57 -0400 Subject: [PATCH] LP1211473 YAOUS : disable patron credit payments New org unit setting circ.disable_patron_credit. This prevents "patron_credit" payments in the payment creation API and hides all patron credit related actions in the patron payment interface. Signed-off-by: Bill Erickson Signed-off-by: Dan Wells --- Open-ILS/src/extras/ils_events.xml | 6 +++++ .../lib/OpenILS/Application/Circ/Money.pm | 14 ++++++++++- Open-ILS/src/sql/Pg/950.data.seed-values.sql | 21 ++++++++++++++++ .../XXXX.data.yaous-disable-patron-credit.sql | 25 +++++++++++++++++++ .../xul/staff_client/server/patron/bill2.js | 13 ++++++++++ 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous-disable-patron-credit.sql diff --git a/Open-ILS/src/extras/ils_events.xml b/Open-ILS/src/extras/ils_events.xml index b8e308642b..4fd8490900 100644 --- a/Open-ILS/src/extras/ils_events.xml +++ b/Open-ILS/src/extras/ils_events.xml @@ -1020,6 +1020,12 @@ + + Payments by patron credit are not allowed + for the selected transaction + + + diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm index ec9f052df8..b46e57818c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm @@ -142,6 +142,7 @@ sub make_payments { my $this_ou = $e->requestor->ws_ou || $e->requestor->home_ou; my %orgs; + # unless/until determined by payment processor API my ($approval_code, $cc_processor, $cc_type, $cc_order_number) = (undef,undef,undef, undef); @@ -184,7 +185,18 @@ sub make_payments { $total_paid += $amount; - $orgs{$U->xact_org($transid, $e)} = 1; + my $org_id = $U->xact_org($transid, $e); + + if (!$orgs{$org_id}) { + $orgs{$org_id} = 1; + + # patron credit has to be allowed at all orgs receiving payment + if ($type eq 'credit_payment' and $U->ou_ancestor_setting_value( + $org_id, 'circ.disable_patron_credit', $e)) { + $e->rollback; + return OpenILS::Event->new('PATRON_CREDIT_DISABLED'); + } + } # A negative payment is a refund. if( $amount < 0 ) { 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 be690783ca..78fc099c4d 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -13492,3 +13492,24 @@ VALUES ( ) ); +-- YAOUS patron credit disable +INSERT INTO config.org_unit_setting_type + (grp, name, datatype, label, description) +VALUES ( + 'finance', + 'circ.disable_patron_credit', + 'bool', + oils_i18n_gettext( + 'circ.disable_patron_credit', + 'Disable Patron Credit', + 'coust', + 'label' + ), + oils_i18n_gettext( + 'circ.disable_patron_credit', + 'Do not allow patrons to accrue credit or pay fines/fees with accrued credit', + 'coust', + 'description' + ) +); + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous-disable-patron-credit.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous-disable-patron-credit.sql new file mode 100644 index 0000000000..3113e4015a --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous-disable-patron-credit.sql @@ -0,0 +1,25 @@ +BEGIN; + +-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); + +INSERT INTO config.org_unit_setting_type + (grp, name, datatype, label, description) +VALUES ( + 'finance', + 'circ.disable_patron_credit', + 'bool', + oils_i18n_gettext( + 'circ.disable_patron_credit', + 'Disable Patron Credit', + 'coust', + 'label' + ), + oils_i18n_gettext( + 'circ.disable_patron_credit', + 'Do not allow patrons to accrue credit or pay fines/fees with accrued credit', + 'coust', + 'description' + ) +); + +COMMIT; diff --git a/Open-ILS/xul/staff_client/server/patron/bill2.js b/Open-ILS/xul/staff_client/server/patron/bill2.js index dde0fe82c0..8a248f3c90 100644 --- a/Open-ILS/xul/staff_client/server/patron/bill2.js +++ b/Open-ILS/xul/staff_client/server/patron/bill2.js @@ -41,6 +41,12 @@ function my_init() { $('credit_forward').setAttribute('value',util.money.sanitize( g.patron.credit_forward_balance() )); } + if (g.data.hash.aous['circ.disable_patron_credit']) { + var nodes = document.getElementsByClassName('hide_patron_credit'); + for (var i = 0; i < nodes.length; i++) + nodes[i].setAttribute('hidden', true); + } + if (g.data.hash.aous['ui.circ.billing.uncheck_bills_and_unfocus_payment_box']) { g.funcs.push( function() { @@ -983,6 +989,13 @@ function pay(payment_blob) { case 'INVALID_USER_XACT_ID' : refresh(); default_focus(); alert($("patronStrings").getFormattedString('staff.patron.bills.pay.invalid_user_xact_id', [robj.desc])); return false; break; + case 'PATRON_CREDIT_DISABLED' : + refresh(); + default_focus(); + alert(robj.desc); + return false; + break; + default: throw(robj); break; } } -- 2.43.2