From d4859e6d490df76441537c908c8e4d5c5f07264c Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 11 Nov 2013 09:16:03 -0500 Subject: [PATCH] LP#1249398 clear negative balance UI New "Clear Negative Balance" option in patron billing UI. Selected negative-balance transactions are updated to have a zero balance by modifying void payments attached to the transaction. Signed-off-by: Bill Erickson --- Open-ILS/web/opac/locale/en-US/lang.dtd | 2 + .../staff_client/chrome/content/main/constants.js | 3 +- .../server/locale/en-US/patron.properties | 10 ++++- Open-ILS/xul/staff_client/server/patron/bill2.js | 49 ++++++++++++++++++++++ Open-ILS/xul/staff_client/server/patron/bill2.xul | 2 + 5 files changed, 64 insertions(+), 2 deletions(-) diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index c3c6cf020d..dc224bb1b8 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -3321,6 +3321,8 @@ + + diff --git a/Open-ILS/xul/staff_client/chrome/content/main/constants.js b/Open-ILS/xul/staff_client/chrome/content/main/constants.js index 3856f72bf1..135d04ba70 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/constants.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/constants.js @@ -369,7 +369,8 @@ var api = { 'USER_ORG_UNIT_OPT_IN_FEATURE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.org_unit_opt_in.enabled' }, 'USER_ORG_UNIT_OPT_IN_CHECK' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.org_unit_opt_in.check' }, 'USER_ORG_UNIT_OPT_IN_CREATE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.user.org_unit_opt_in.create' }, - 'GET_BARCODES' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.get_barcodes' } + 'GET_BARCODES' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.get_barcodes' }, + 'ZEROIZE_TRANSACTION' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.money.zeroize_transaction' } } var urls = { diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties b/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties index f7d7d5fb9b..ec7b4a4ed2 100644 --- a/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties +++ b/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties @@ -48,7 +48,15 @@ staff.patron.bills.handle_refund.message_singular=Are you sure you would like to staff.patron.bills.handle_refund.title=Refund Excess Payment staff.patron.bills.handle_refund.btn_yes=Yes staff.patron.bills.handle_refund.btn_no=No -staff.patron.bills.handle_refund.confirm_message=Check here to confirm this message + +staff.patron.bills.handle_zeroize.confirm_message=Check here to confirm this message +staff.patron.bills.handle_zeroize.message_plural=Are you sure you would like to clear the negative balance on bills %1$s? +staff.patron.bills.handle_zeroize.message_singular=Are you sure you would like to clear the negative balance on bill %1$s? +staff.patron.bills.handle_zeroize.title=Clear Negative Balance +staff.patron.bills.handle_zeroize.btn_yes=Yes +staff.patron.bills.handle_zeroize.btn_no=No +staff.patron.bills.handle_zeroize.confirm_message=Check here to confirm this message + staff.patron.bill_history.print_bills.print_error=printing bills staff.patron.bill_history.column.xact_type.label=Transaction Type staff.patron.bill_history.column.last_billing_type.label=Last Billing Type diff --git a/Open-ILS/xul/staff_client/server/patron/bill2.js b/Open-ILS/xul/staff_client/server/patron/bill2.js index 8a248f3c90..5070e1e5d9 100644 --- a/Open-ILS/xul/staff_client/server/patron/bill2.js +++ b/Open-ILS/xul/staff_client/server/patron/bill2.js @@ -108,6 +108,12 @@ function event_listeners() { false ); + window.bill_event_listeners.add($('zeroize'), + 'command', + handle_zeroize, + false + ); + window.bill_event_listeners.add($('opac'), 'command', handle_opac, @@ -382,6 +388,48 @@ function handle_refund() { distribute_payment(); } +/** + * Calls open-ils.circ.money.zeroize_transaction on selected, negative- + * balance transactions to produce a zero-balance transaction. + * Successfully cleared transactions will disappear from the billing list. + */ +function handle_zeroize() { + + var msgkey = g.bill_list_selection.length > 1 ? + 'staff.patron.bills.handle_zeroize.message_plural' : + 'staff.patron.bills.handle_zeroize.message_singular'; + + var msg = $("patronStrings").getFormattedString( + msgkey, [g.bill_list_selection]); + + var r = g.error.yns_alert(msg, + $("patronStrings").getString( + 'staff.patron.bills.handle_zeroize.title'), + $("patronStrings").getString( + 'staff.patron.bills.handle_zeroize.btn_yes'), + $("patronStrings").getString( + 'staff.patron.bills.handle_zeroize.btn_no'),null, + $("patronStrings").getString( + 'staff.patron.bills.handle_zeroize.confirm_message')); + + if (r == 0) { + var xact_ids = []; + for (var i = 0; i < g.bill_list_selection.length; i++) { + var bill_id = g.bill_list_selection[i]; + xact_ids.push(bill_id); + } + + var mod_ids = g.network.simple_request( + 'ZEROIZE_TRANSACTION', [ses(), xact_ids]); + + g.error.sdump('D_DEBUG', 'zeroized transactions ' + mod_ids); + + refresh(); + tally_all(); + distribute_payment(); + } +} + function check_all() { try { @@ -525,6 +573,7 @@ function init_lists() { $('add').setAttribute('disabled', g.bill_list_selection.length == 0); $('voidall').setAttribute('disabled', g.bill_list_selection.length == 0); $('refund').setAttribute('disabled', g.bill_list_selection.length == 0); + $('zeroize').setAttribute('disabled', g.bill_list_selection.length == 0); $('opac').setAttribute('disabled', g.bill_list_selection.length == 0); $('copy_details').setAttribute('disabled', g.bill_list_selection.length == 0); }, diff --git a/Open-ILS/xul/staff_client/server/patron/bill2.xul b/Open-ILS/xul/staff_client/server/patron/bill2.xul index b0135b4bd9..93096bbef3 100644 --- a/Open-ILS/xul/staff_client/server/patron/bill2.xul +++ b/Open-ILS/xul/staff_client/server/patron/bill2.xul @@ -42,6 +42,7 @@ + @@ -52,6 +53,7 @@ + -- 2.11.0