]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/bill_history.js
Revamp the bill history interface and alternate view for current bills. Embedded...
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / patron / bill_history.js
1 function $(id) { return document.getElementById(id); }
2
3 function retrieve_mbts_for_list() {
4     //var method = 'FM_MBTS_IDS_RETRIEVE_ALL_HAVING_CHARGE';
5     var method = 'FM_MBTS_IDS_RETRIEVE_FOR_HISTORY.authoritative';
6     if (xul_param('current')) method = 'FM_MBTS_IDS_RETRIEVE_ALL_HAVING_BALANCE.authoritative';
7     g.mbts_ids = g.network.simple_request(method,[ses(),g.patron_id]);
8     if (g.mbts_ids.ilsevent) {
9         switch(Number(g.mbts_ids.ilsevent)) {
10             case -1: g.error.standard_network_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again')); break;
11             default: g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again'),g.mbts_ids); break;
12         }
13     } else if (g.mbts_ids == null) {
14         g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again'),null);
15     } else {
16         //g.mbts_ids.reverse();
17     
18                 function gen_func(r) {
19                     return function() {
20                         if (typeof r == 'object') {
21                             g.bill_list.append( 
22                                 { 
23                                     'retrieve_id' : r.id(), 
24                                     'row' : { 
25                                         'my' : { 
26                                             'mbts' : r 
27                                         } 
28                                     } 
29                                 } 
30                             );
31                         } else {
32                             g.bill_list.append( 
33                                 { 
34                                     'retrieve_id' : r, 
35                                     'row' : { 
36                                         'my' : {} 
37                                     } 
38                                 } 
39                             );
40                         }
41                     }
42                 }
43     
44         for (var i = 0; i < g.mbts_ids.length; i++) {
45             dump('i = ' + i + ' g.mbts_ids[i] = ' + g.mbts_ids[i] + '\n');
46             g.funcs.push( gen_func(g.mbts_ids[i]) );
47         }
48     }
49 }
50
51 function init_lists() {
52     JSAN.use('util.list'); JSAN.use('circ.util'); 
53     g.bill_list = new util.list('bill_tree');
54
55     g.bill_list.init( {
56         'columns' : 
57             patron.util.mbts_columns({
58                 'xact_finish' : { 'hidden' : xul_param('current') ? true : false }
59             }).concat( 
60             circ.util.columns({ 
61                 'title' : { 'hidden' : false, 'flex' : '3' }
62             }) 
63         ),
64         'map_row_to_columns' : patron.util.std_map_row_to_columns(' '),
65         'on_select' : function(ev) {
66             JSAN.use('util.functional');
67             g.bill_list_selection = util.functional.map_list(
68                 g.bill_list.retrieve_selection(),
69                 function(o) { return o.getAttribute('retrieve_id'); }
70             );
71             $('details').disabled = g.bill_list_selection.length == 0;
72             $('add').disabled = g.bill_list_selection.length == 0;
73             $('summary').hidden = g.bill_list_selection.length == 0;
74             $('copy_summary').hidden = g.bill_list_selection.length == 0;
75         },
76         'retrieve_row' : function(params) {
77             var id = params.retrieve_id;
78             var row = params.row;
79             if (id) {
80                 if (typeof row.my == 'undefined') row.my = {};
81                 if (typeof row.my.mbts == 'undefined' ) {
82                     g.network.simple_request('BLOB_MBTS_DETAILS_RETRIEVE',[ses(),id], function(req) {
83                         var blob = req.getResultObject();
84                         row.my.mbts = blob.transaction;
85                         row.my.circ = blob.circ;
86                         row.my.acp = blob.copy;
87                         row.my.mvr = blob.record;
88                         if (typeof params.on_retrieve == 'function') {
89                             params.on_retrieve(row);
90                         }
91                     } );
92                 }
93             }
94             return row;
95         },
96     } );
97
98     $('bill_list_actions').appendChild( g.bill_list.render_list_actions() );
99     g.bill_list.set_list_actions();
100 }
101
102 function my_init() {
103     try {
104         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
105         if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
106         JSAN.errorLevel = "die"; // none, warn, or die
107         JSAN.addRepository('/xul/server/');
108
109         JSAN.use('util.error'); g.error = new util.error();
110         JSAN.use('util.network'); g.network = new util.network();
111         JSAN.use('util.date');
112         JSAN.use('util.money');
113         JSAN.use('patron.util');
114         JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
115         //g.data.temp = ''; g.data.stash('temp');
116
117         g.error.sdump('D_TRACE','my_init() for bill_history.xul');
118
119         if (xul_param('current')) {
120             $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.current_bills'));
121             document.title = $("patronStrings").getString('staff.patron.bill_history.my_init.current_bills');
122         } else {
123             $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.bill_history'));
124             document.title = $("patronStrings").getString('staff.patron.bill_history.my_init.bill_history');
125         }
126
127         g.funcs = [];
128
129         g.patron_id = xul_param('patron_id');
130
131         init_lists();
132
133         retrieve_mbts_for_list();
134
135         $('details').addEventListener(
136             'command',
137             handle_details,
138             false
139         );
140
141         $('add').addEventListener(
142             'command',
143             handle_add,
144             false
145         );
146
147         JSAN.use('util.exec'); var exec = new util.exec(20); 
148         exec.on_error = function(E) { alert(E); return true; }
149         exec.timer(g.funcs,100);
150     } catch(E) {
151         var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/bill_history.xul', E]);
152         try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
153         alert(err_msg);
154     }
155 }
156
157 function handle_add() {
158     if(g.bill_list_selection.length > 1)
159         var msg = $("patronStrings").getFormattedString('staff.patron.bill_history.handle_add.message_plural', [g.bill_list_selection]);
160     else
161         var msg = $("patronStrings").getFormattedString('staff.patron.bill_history.handle_add.message_singular', [g.bill_list_selection]);
162         
163     var r = g.error.yns_alert(msg,
164         $("patronStrings").getString('staff.patron.bill_history.handle_add.title'),
165         $("patronStrings").getString('staff.patron.bill_history.handle_add.btn_yes'),
166         $("patronStrings").getString('staff.patron.bill_history.handle_add.btn_no'),null,
167         $("patronStrings").getString('staff.patron.bill_history.handle_add.confirm_message'));
168     if (r == 0) {
169         JSAN.use('util.window');
170         var win = new util.window();
171         var w = win.open(
172             urls.XUL_PATRON_BILL_WIZARD,
173                 //+ '?patron_id=' + window.escape(g.patron_id)
174                 //+ '&xact_id=' + window.escape( g.bill_list_selection[0] ),
175             'billwizard',
176             'chrome,resizable,modal',
177             { 'patron_id' : g.patron_id, 'xact_id' : g.bill_list_selection[0] }
178         );
179         g.bill_list.clear();
180         retrieve_mbts_for_list();
181         if (typeof window.refresh == 'function') window.refresh();
182         if (typeof window.xulG == 'object' && typeof window.xulG.refresh == 'function') window.xulG.refresh();
183     }
184 }
185
186 function handle_details() {
187     JSAN.use('util.window'); var win = new util.window();
188     var my_xulG = win.open(
189         urls.XUL_PATRON_BILL_DETAILS,
190         //+ '?patron_id=' + window.escape(g.patron_id)
191         //+ '&mbts_id=' + window.escape( g.bill_list_selection[0] ),
192         'test_billdetails',
193         'chrome,resizable',
194         {
195             'patron_id' : g.patron_id,
196             'mbts_id' : g.bill_list_selection[0],
197             'refresh' : function() { 
198                 if (typeof window.refresh == 'function') window.refresh();
199                 if (typeof window.xulG == 'object' && typeof window.xulG.refresh == 'function') window.xulG.refresh();
200             }, 
201         }
202     );
203 }
204
205 function print_bills() {
206     try {
207         var template = 'bills_historical'; if (xul_param('current')) template = 'bills_current';
208         JSAN.use('patron.util');
209         var params = { 
210             'patron' : patron.util.retrieve_au_via_id(ses(),g.patron_id), 
211             'template' : template
212         };
213         g.bill_list.print(params);
214     } catch(E) {
215         g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.print_bills.print_error'), E);
216     }
217 }
218
219