--- /dev/null
+function PaymentForm() {}\r
+var proto = (typeof(SelfCheckManager) == "undefined" ?\r
+ PaymentForm : SelfCheckManager).prototype;\r
+\r
+proto.drawPayFinesPage = function(patron, total, xacts, onPaymentSubmit) {\r
+ if (typeof(this.authtoken) == "undefined")\r
+ this.authtoken = patron.session;\r
+\r
+ dojo.query("span", "oils-selfck-cc-payment-summary")[0].innerHTML = total;\r
+\r
+ var d = new Date().getFullYear();\r
+ oilsSelfckCCNumber.attr('value', '');\r
+ oilsSelfckCCCVV.attr('value', '');\r
+ oilsSelfckCCMonth.attr('value', '01');\r
+ oilsSelfckCCYear.attr('value', d);\r
+ oilsSelfckCCFName.attr('value', patron.first_given_name());\r
+ oilsSelfckCCLName.attr('value', patron.family_name());\r
+ oilsSelfckCCYear.constraints.min=d;\r
+ oilsSelfckCCYear.constraints.max=d+10;\r
+\r
+ var addr = patron.billing_address() || patron.mailing_address();\r
+\r
+ if (typeof(addr) != "object") {\r
+ /* still don't have usable address? try getting better user object. */\r
+ fieldmapper.standardRequest(\r
+ ["open-ils.actor", "open-ils.actor.user.fleshed.retrieve"], {\r
+ "params": [\r
+ patron.session, patron.id(), [\r
+ "billing_address", "mailing_address"\r
+ ]\r
+ ],\r
+ "async": false,\r
+ "oncomplete": function(r) {\r
+ var usr = openils.Util.readResponse(r);\r
+ if (usr)\r
+ addr = usr.billing_address() || usr.mailing_address();\r
+ }\r
+ }\r
+ );\r
+ }\r
+\r
+ if (addr) {\r
+ oilsSelfckCCStreet.attr('value', addr.street1()+' '+addr.street2());\r
+ oilsSelfckCCCity.attr('value', addr.city());\r
+ oilsSelfckCCState.attr('value', addr.state());\r
+ oilsSelfckCCZip.attr('value', addr.post_code());\r
+ }\r
+\r
+ dojo.connect(oilsSelfckEditDetails, 'onChange',\r
+ function(newVal) {\r
+ dojo.forEach(\r
+ [ oilsSelfckCCFName,\r
+ oilsSelfckCCLName,\r
+ oilsSelfckCCStreet,\r
+ oilsSelfckCCCity,\r
+ oilsSelfckCCState,\r
+ oilsSelfckCCZip\r
+ ],\r
+ function(dij) { dij.attr('disabled', !newVal); }\r
+ );\r
+ }\r
+ );\r
+\r
+\r
+ var self = this;\r
+ dojo.connect(oilsSelfckCCSubmit, 'onClick',\r
+ function() {\r
+ /* XXX better to replace this check on progressDialog with some\r
+ * kind of passed-in function to support different use cases */\r
+ if (typeof(progressDialog) != "undefined")\r
+ progressDialog.show(true);\r
+\r
+ self.sendCCPayment(patron, xacts, onPaymentSubmit);\r
+ }\r
+ );\r
+}\r
+\r
+// In this form, this code only supports global on/off credit card\r
+// payments and does not dissallow payments to transactions that started\r
+// at remote locations or transactions that have accumulated billings at\r
+// remote locations that dissalow credit card payments.\r
+// TODO add per-transaction blocks for orgs that do not support CC payments\r
+\r
+proto.sendCCPayment = function(patron, xacts, onPaymentSubmit) {\r
+ this.keepMeLoggedIn();\r
+ var args = {\r
+ userid : patron.id(),\r
+ payment_type : 'credit_card_payment',\r
+ payments : xacts,\r
+ cc_args : {\r
+ where_process : 1,\r
+ //type : 'MasterCard',//oilsSelfckCCType.attr('value'),\r
+ number : oilsSelfckCCNumber.attr('value'),\r
+ cvv2 : oilsSelfckCCCVV.attr('value'),\r
+ expire_year : oilsSelfckCCYear.attr('value'),\r
+ expire_month : oilsSelfckCCMonth.attr('value'),\r
+ billing_first : oilsSelfckCCFName.attr('value'),\r
+ billing_last : oilsSelfckCCLName.attr('value'),\r
+ billing_address : oilsSelfckCCStreet.attr('value'),\r
+ billing_city : oilsSelfckCCCity.attr('value'),\r
+ billing_state : oilsSelfckCCState.attr('value'),\r
+ billing_zip : oilsSelfckCCZip.attr('value')\r
+ }\r
+ }\r
+\r
+ var resp = fieldmapper.standardRequest(\r
+ ['open-ils.circ', 'open-ils.circ.money.payment'],\r
+ {params : [this.authtoken, args, patron.last_xact_id()]}\r
+ );\r
+\r
+ if (typeof(progressDialog) != "undefined")\r
+ progressDialog.hide();\r
+\r
+ if (typeof(onPaymentSubmit) == "function") {\r
+ onPaymentSubmit(resp);\r
+ } else {\r
+ var evt = openils.Event.parse(resp);\r
+ if (evt) alert(evt);\r
+ }\r
+}\r