Initial dev repository
[kcls-web.git] / js / ui / kcls / circ / selfcheck / payment.js
1 function PaymentForm() {}\r
2 var proto = (typeof(SelfCheckManager) == "undefined" ?\r
3     PaymentForm : SelfCheckManager).prototype;\r
4 \r
5 proto.drawPayFinesPage = function(patron, total, xacts, onPaymentSubmit) {\r
6     if (typeof(this.authtoken) == "undefined")\r
7         this.authtoken = patron.session;\r
8 \r
9     dojo.query("span", "oils-selfck-cc-payment-summary")[0].innerHTML = total;\r
10 \r
11         var d = new Date().getFullYear();\r
12     oilsSelfckCCNumber.attr('value', '');\r
13     oilsSelfckCCCVV.attr('value', '');\r
14     oilsSelfckCCMonth.attr('value', '01');\r
15     oilsSelfckCCYear.attr('value', d);\r
16     oilsSelfckCCFName.attr('value', patron.first_given_name());\r
17     oilsSelfckCCLName.attr('value', patron.family_name());\r
18         oilsSelfckCCYear.constraints.min=d;\r
19         oilsSelfckCCYear.constraints.max=d+10;\r
20 \r
21     var addr = patron.billing_address() || patron.mailing_address();\r
22 \r
23     if (typeof(addr) != "object") {\r
24         /* still don't have usable address? try getting better user object. */\r
25         fieldmapper.standardRequest(\r
26             ["open-ils.actor", "open-ils.actor.user.fleshed.retrieve"], {\r
27                 "params": [\r
28                     patron.session, patron.id(), [\r
29                         "billing_address", "mailing_address"\r
30                     ]\r
31                 ],\r
32                 "async": false,\r
33                 "oncomplete": function(r) {\r
34                     var usr = openils.Util.readResponse(r);\r
35                     if (usr)\r
36                         addr = usr.billing_address() || usr.mailing_address();\r
37                 }\r
38             }\r
39         );\r
40     }\r
41 \r
42     if (addr) {\r
43         oilsSelfckCCStreet.attr('value', addr.street1()+' '+addr.street2());\r
44         oilsSelfckCCCity.attr('value', addr.city());\r
45         oilsSelfckCCState.attr('value', addr.state());\r
46         oilsSelfckCCZip.attr('value', addr.post_code());\r
47     }\r
48 \r
49     dojo.connect(oilsSelfckEditDetails, 'onChange',\r
50         function(newVal) {\r
51             dojo.forEach(\r
52                 [   oilsSelfckCCFName,\r
53                     oilsSelfckCCLName,\r
54                     oilsSelfckCCStreet,\r
55                     oilsSelfckCCCity,\r
56                     oilsSelfckCCState,\r
57                     oilsSelfckCCZip\r
58                 ],\r
59                 function(dij) { dij.attr('disabled', !newVal); }\r
60             );\r
61         }\r
62     );\r
63 \r
64 \r
65     var self = this;\r
66     dojo.connect(oilsSelfckCCSubmit, 'onClick',\r
67         function() {\r
68             /* XXX better to replace this check on progressDialog with some\r
69              * kind of passed-in function to support different use cases */\r
70             if (typeof(progressDialog) != "undefined")\r
71                 progressDialog.show(true);\r
72 \r
73             self.sendCCPayment(patron, xacts, onPaymentSubmit);\r
74         }\r
75     );\r
76 }\r
77 \r
78 // In this form, this code only supports global on/off credit card\r
79 // payments and does not dissallow payments to transactions that started\r
80 // at remote locations or transactions that have accumulated billings at\r
81 // remote locations that dissalow credit card payments.\r
82 // TODO add per-transaction blocks for orgs that do not support CC payments\r
83 \r
84 proto.sendCCPayment = function(patron, xacts, onPaymentSubmit) {\r
85         this.keepMeLoggedIn();\r
86     var args = {\r
87         userid : patron.id(),\r
88         payment_type : 'credit_card_payment',\r
89         payments : xacts,\r
90         cc_args : {\r
91             where_process : 1,\r
92             //type :  'MasterCard',//oilsSelfckCCType.attr('value'),\r
93             number : oilsSelfckCCNumber.attr('value'),\r
94             cvv2 : oilsSelfckCCCVV.attr('value'),\r
95             expire_year : oilsSelfckCCYear.attr('value'),\r
96             expire_month : oilsSelfckCCMonth.attr('value'),\r
97             billing_first : oilsSelfckCCFName.attr('value'),\r
98             billing_last : oilsSelfckCCLName.attr('value'),\r
99             billing_address : oilsSelfckCCStreet.attr('value'),\r
100             billing_city : oilsSelfckCCCity.attr('value'),\r
101             billing_state : oilsSelfckCCState.attr('value'),\r
102             billing_zip : oilsSelfckCCZip.attr('value')\r
103         }\r
104     }\r
105 \r
106     var resp = fieldmapper.standardRequest(\r
107         ['open-ils.circ', 'open-ils.circ.money.payment'],\r
108         {params : [this.authtoken, args, patron.last_xact_id()]}\r
109     );\r
110 \r
111     if (typeof(progressDialog) != "undefined")\r
112         progressDialog.hide();\r
113 \r
114     if (typeof(onPaymentSubmit) == "function") {\r
115         onPaymentSubmit(resp);\r
116     } else {\r
117         var evt = openils.Event.parse(resp);\r
118         if (evt) alert(evt);\r
119     }\r
120 }\r