From b3666f85552f957aba502ae8907b13e2ef467cd4 Mon Sep 17 00:00:00 2001 From: phasefx Date: Sat, 17 Dec 2005 06:37:37 +0000 Subject: [PATCH] forgot to add these. bills in progress git-svn-id: svn://svn.open-ils.org/ILS/trunk@2432 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/server/patron/bills.js | 266 ++++++++++++++++++ .../xul/staff_client/server/patron/bills.xul | 71 +++++ .../server/patron/bills_overlay.xul | 99 +++++++ .../xul/staff_client/server/patron/holds.js | 125 ++++++++ .../xul/staff_client/server/patron/holds.xul | 70 +++++ .../server/patron/holds_overlay.xul | 31 ++ 6 files changed, 662 insertions(+) create mode 100644 Open-ILS/xul/staff_client/server/patron/bills.js create mode 100644 Open-ILS/xul/staff_client/server/patron/bills.xul create mode 100644 Open-ILS/xul/staff_client/server/patron/bills_overlay.xul create mode 100644 Open-ILS/xul/staff_client/server/patron/holds.js create mode 100644 Open-ILS/xul/staff_client/server/patron/holds.xul create mode 100644 Open-ILS/xul/staff_client/server/patron/holds_overlay.xul diff --git a/Open-ILS/xul/staff_client/server/patron/bills.js b/Open-ILS/xul/staff_client/server/patron/bills.js new file mode 100644 index 0000000000..a4bc24d9c5 --- /dev/null +++ b/Open-ILS/xul/staff_client/server/patron/bills.js @@ -0,0 +1,266 @@ +dump('entering patron.bills.js\n'); + +if (typeof patron == 'undefined') patron = {}; +patron.bills = function (params) { + + JSAN.use('util.error'); this.error = new util.error(); + JSAN.use('util.network'); this.network = new util.network(); + this.OpenILS = {}; JSAN.use('OpenILS.data'); this.OpenILS.data = new OpenILS.data(); this.OpenILS.data.init({'via':'stash'}); +} + +patron.bills.prototype = { + + 'current_payments' : [], + + 'init' : function( params ) { + + var obj = this; + + obj.session = params['session']; + obj.patron_id = params['patron_id']; + + JSAN.use('util.list'); obj.list = new util.list('bill_list'); + + function getString(s) { return obj.OpenILS.data.entities[s]; } + obj.list.init( + { + 'columns' : { + { + 'id' : 'checkbox', 'label' : '', 'flex' : 0, 'primary' : false, 'hidden' : false, + 'render' : 'document.createElement("checkbox")' + }, + { + 'id' : 'xact_dates', 'label' : getString('staff.bills_xact_dates_label'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'render' : 'xact_dates_box(my.mbts)' + }, + { + 'id' : 'notes', 'label' : getString('staff.bills_information'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'render' : 'info_box(my.mbts)' + }, + { + 'id' : 'money', 'label' : getString('staff.bills_money_label'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'render' : 'money_box(my.mbts)' + }, + { + 'id' : 'current_pay', 'label' : getString('staff.bills_current_payment_label'), 'flex' : 0, + 'render' : 'document.createElement("textbox")' + } + }, + 'map_row_to_column' : function(row,col) { + // row contains { 'my' : { 'mbts' : ... } } + // col contains one of the objects listed above in columns + + var obj = {}; obj.OpenILS = {}; + JSAN.use('util.error'); obj.error = new util.error(); + //JSAN.use('OpenILS.data'); obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'}); + + var my = row.my; + var value; + try { + value = eval( col.render ); + } catch(E) { + obj.error.sdump('D_ERROR','map_row_to_column: ' + E); + value = '???'; + } + return value; + }, + } + ); + + JSAN.use('util.controller'); obj.controller = new util.controller(); + obj.controller.init( + { + 'control_map' : { + 'cmd_broken' : [ + ['command'], + function() { alert('Not Yet Implemented'); } + ], + 'cmd_bill_wizard' : [ + ['command'], + function() { alert('Not Yet Implemented'); } + ], + 'cmd_change_to_credit' : [ + ['command'], + function() { + obj.change_to_credit(); + } + ], + 'cmd_bill_apply_payment' : [ + ['command'], + function() { + obj.apply_payment(); + } + ], + 'bill_total_owed' : [ + ['render'], + function(e) { return function() {}; } + ], + 'payment_type' : [ + ['render'], + function(e) { return function() {}; } + ], + 'bill_payment_amount' : [ + ['change'], + function(ev) { + JSAN.use('util.money'); + var tb = ev.target; + tb.value = util.money.cents_as_dollars( util.money.dollars_float_to_cents_integer( tb.value ) ); + var total = util.money.dollars_float_to_cents_integer( tb.value ); + for (var i = 0; i < obj.current_payments.length; i++) { + var bill = obj.current_payments[i]; + if (bill.checkbox.checked) { + var bo = util.money.dollars_float_to_cents_integer( bill.balance_owed ); + if ( bo > total ) { + bill.textbox.value = util.money.cents_as_dollars( total ); + total = 0; + } else { + bill.textbox.value = util.money.cents_as_dollars( bo ); + total = total - bo; + } + } else { + bill.textbox.value = '0.00'; + } + } + obj.update_payment_applied(); + }; + ], + 'bill_payment_applied' : [ + ['render'], + function(e) { return function() {}; } + ], + 'bill_change_amount' : [ + ['change'], + function(ev) { + JSAN.use('util.money'); + var tb = ev.target; + var proposed_change = util.money.dollars_float_to_cents_integer( tb.value ); + var proposed_credit = 0; + obj.update_payment_applied(); + var real_change = util.money.dollars_float_to_cents_integer( tb.value ); + if ( proposed_change > real_change ) { + obj.error.sdump('D_ERROR','Someone wanted more money than they deserved\n'); + proposed_change = real_change; + } else if ( real_change > proposed_change ) { + proposed_credit = real_change - proposed_change; + } + tb.value = util.money.cents_as_dollars( proposed_change ); + obj.controller.view.bill_credit_amount.value = util.money.cents_as_dollars( proposed_credit ); + } + ], + 'bill_credit_amount' : [ + ['render'], + function(e) { return function() {}; } + ], + 'bill_new_balance' : [ + ['render'], + function(e) { return function() {}; } + ], + } + } + ); + + }, + + 'apply_payment' : function() { + var obj = this; + var payment_blob = {}; + payment_blob.userid = obj.patron_id; + payment_blob.note = ''; + payment_blob.cash_drawer = 1; // FIXME: get new Config() to work + payment_blob.payment_type = obj.controller.view.payment_type.value; + payment_blob.payments = []; + payment_blob.patron_credit = obj.controller.view.bill_credit_amount.value; + for (var i = 0; i < obj.current_payments.length; i++) { + var tb = obj.current_payments[ i ].textbox; + if ( !(tb.value == '0.00' || tb.value == '') ) { + payment_blob.payments.push( + [ + obj.current_payments[ i ].mbts_id, + tb.value + ] + ); + } + } + try { + if ( obj.pay( payment_blob ) ) { + + //FIXME//Refresh + + } + + } catch(E) { + + obj.error.sdump('D_ERROR',E); + } + }, + + 'pay' : function(payment_blob) { + try { + var robj = this.network.retrieve( + api.bill_pay.app, + api.bill_pay.method, + [ this.session, payment_blob ] + ); + if (robj && robj.ilsevent && robj.ilsevent == 0) { + return true; + } else { + throw robj; + } + } catch(E) { + this.error.sdump('D_ERROR','patron.bills.pay: ' + E); + return false; + } + }, + + 'update_payment_applied' : function() { + JSAN.use('util.money'); + var obj = this; + var total_applied = 0; + for (var i = 0; i < obj.current_payments.length; i++) { + total_applied += util.money.dollars_float_to_cents_integer( obj.current_payments[ i ].textbox.value ); + } + var total_payment = 0; + if (obj.controller.view.bill_payment_amount.value) { + try { + total_payment = util.money.dollars_float_to_cents_integer( obj.controller.view.bill_payment_amount.value ); + } catch(E) { + obj.error.sdump('D_ERROR',E + '\n'); + } + } + if ( total_applied > total_payment ) { + total_payment = total_applied; + obj.controller.view.bill_payment_amount.value = util.money.cents_as_dollars( total_applied ); + } + obj.controller.view.bill_payment_applied.value = util.money.cents_as_dollars( total_applied ); + obj.controller.view.bill_credit_amount.value = ''; + if (total_payment > total_applied ) { + obj.controller.view.bill_change_amount.value = util.money.cents_as_dollars( total_payment - total_applied); + obj.controller.view.bill_credit_amount.value = '0.00'; + } else { + obj.controller.view.bill_change_amount.value = '0.00'; + obj.controller.view.bill_credit_amount.value = '0.00'; + } + var total_owed = util.money.dollars_float_to_cents_integer( obj.controller.view.bill_total_owed.value ); + obj.controller.view.bill_new_balance.value = util.money.cents_as_dollars( total_owed - total_applied ); + }, + + 'change_to_credit' : function() { + JSAN.use('util.money'); + var obj = this; + var tb = obj.controller.view.bill_change_amount; + var proposed_change = 0; + var proposed_credit = util.money.dollars_float_to_cents_integer( tb.value ); + obj.update_payment_applied(); + var real_change = util.money.dollars_float_to_cents_integer( tb.value ); + if ( proposed_change > real_change ) { + obj.error.sdump('D_ERROR','Someone wanted more money than they deserved\n'); + proposed_change = real_change; + } else if ( real_change > proposed_change ) { + proposed_credit = real_change - proposed_change; + } + tb.value = util.money.cents_as_dollars( proposed_change ); + obj.controller.view.bill_credit_amount.value = util.money.cents_as_dollars( proposed_credit ); + } +} + +dump('exiting patron.bills.js\n'); diff --git a/Open-ILS/xul/staff_client/server/patron/bills.xul b/Open-ILS/xul/staff_client/server/patron/bills.xul new file mode 100644 index 0000000000..75c8adf2fc --- /dev/null +++ b/Open-ILS/xul/staff_client/server/patron/bills.xul @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/xul/staff_client/server/patron/bills_overlay.xul b/Open-ILS/xul/staff_client/server/patron/bills_overlay.xul new file mode 100644 index 0000000000..f5b790c703 --- /dev/null +++ b/Open-ILS/xul/staff_client/server/patron/bills_overlay.xul @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +