]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_bills.js
f19ff5fcbfd851d04fa6a43cfa161f9eaa625994
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_bills.js
1 sdump('D_TRACE','Loading patron_bills.js\n');
2
3 function patron_bills_init(p) {
4         sdump('D_PATRON_BILLS',"TESTING: patron_bills.js: " + mw.G['main_test_variable'] + '\n');
5         sdump('D_CONSTRUCTOR',arg_dump(arguments));
6
7         patron_bills_list_box_init( p );
8
9         patron_bills_control_box_init( p );
10
11         p.control_box.bill_apply_payment.addEventListener(
12                 'command',
13                 function() { alert('Fatal error.. gasp.. arggg.. choke... cough.. sputter'); },
14                 false
15         );
16
17         sdump('D_TRACE_EXIT',arg_dump(arguments));
18         return p;
19 }
20
21 function patron_bills_control_box_init( p ) {
22         p.control_box = {};
23         p.control_box.node = p.node.nextSibling;
24         p.control_box.bill_total_owed = p.control_box.node.getElementsByAttribute('id','bill_total_owed')[0];
25         p.control_box.payment_type = p.control_box.node.getElementsByAttribute('id','payment_type_menulist')[0];
26         p.control_box.bill_payment_amount = p.control_box.node.getElementsByAttribute('id','bill_payment_amount_textbox')[0];
27         p.control_box.bill_change_amount = p.control_box.node.getElementsByAttribute('id','bill_change_amount_textbox')[0];
28         p.control_box.bill_credit_amount = p.control_box.node.getElementsByAttribute('id','bill_credit_amount_textbox')[0];
29         p.control_box.bill_apply_payment = p.control_box.node.getElementsByAttribute('id','bill_apply_payment')[0];
30 }
31
32 function patron_bills_list_box_init( p ) {
33         p.patron_bills_cols = [
34                 {
35                         'id' : 'checkbox', 'label' : '', 'flex' : 0, 'primary' : false, 'hidden' : false,
36                         'render_xul' : 'checkbox'
37                 },
38                 {
39                         'id' : 'xact_dates', 'label' : getString('bills_xact_dates_label'), 'flex' : 0,
40                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 
41                         'fm_field_render' : 'xact_dates_box($$)'
42                 },
43                 {
44                         'id' : 'notes', 'label' : getString('mbts_xact_type_label'), 'flex' : 1,
45                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts',
46                         'fm_field_render' : '.xact_type()'
47                 },
48                 {
49                         'id' : 'money', 'label' : getString('bills_money_label'), 'flex' : 0,
50                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 
51                         'fm_field_render' : 'money_box($$)'
52                 },
53                 {
54                         'id' : 'current_pay', 'label' : getString('bills_current_payment_label'), 'flex' : 0, 
55                         'render_xul' : 'textbox'
56                 }
57         ];
58
59         p.list_box = list_box_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_bills_cols, 'debug' : p.app } );
60         p.clear_patron_bills = p.list_box.clear_rows;
61         p.add_patron_bills = function (bills) {
62                 sdump('D_PATRON_BILLS','p.add_patron_bills(' + bills + ')\n');
63                 return patron_bills_add_patron_bills(p,bills);
64         }
65 }
66
67 function patron_bills_add_patron_bills(p, bills) {
68         sdump('D_PATRON_BILLS',arg_dump(arguments,{1:true}));
69
70         p.control_box.bill_total_owed.setAttribute('value','');
71
72         function xact_dates_box( mbts ) {
73                 var grid = p.w.document.createElement('grid');
74                         var cols = p.w.document.createElement('columns');
75                         grid.appendChild( cols );
76                                 cols.appendChild( p.w.document.createElement('column') );
77                                 cols.appendChild( p.w.document.createElement('column') );
78                         var rows = p.w.document.createElement('rows');
79                         grid.appendChild( rows );
80                                 var row0 = p.w.document.createElement('row');
81                                 rows.appendChild( row0 );
82                                         var label_r0_1 = p.w.document.createElement('label');
83                                         row0.appendChild( label_r0_1 );
84                                         label_r0_1.setAttribute('value',getString('mbts_id_label'));
85                                         var label_r0_2 = p.w.document.createElement('label');
86                                         row0.appendChild( label_r0_2 );
87                                         label_r0_2.setAttribute('value',mbts.id());
88                                 var row1 = p.w.document.createElement('row');
89                                 rows.appendChild( row1 );
90                                         var label_r1_1 = p.w.document.createElement('label');
91                                         row1.appendChild( label_r1_1 );
92                                         label_r1_1.setAttribute('value',getString('mbts_xact_start_label'));
93                                         var label_r1_2 = p.w.document.createElement('label');
94                                         row1.appendChild( label_r1_2 );
95                                         label_r1_2.setAttribute('value',mbts.xact_start().toString().substr(0,10));
96                                 var row2 = p.w.document.createElement('row');
97                                 rows.appendChild( row2 );
98                                         var label_r2_1 = p.w.document.createElement('label');
99                                         row2.appendChild( label_r2_1 );
100                                         label_r2_1.setAttribute('value',getString('mbts_xact_finish_label'));
101                                         var label_r2_2 = p.w.document.createElement('label');
102                                         row2.appendChild( label_r2_2 );
103                                         try { label_r2_2.setAttribute('value',mbts.xact_finish().toString().substr(0,10));
104                                         } catch(E) {}
105
106                 return grid;
107         }
108
109         function money_box( mbts ) {
110                 var grid = p.w.document.createElement('grid');
111                         var cols = p.w.document.createElement('columns');
112                         grid.appendChild( cols );
113                                 cols.appendChild( p.w.document.createElement('column') );
114                                 cols.appendChild( p.w.document.createElement('column') );
115                         var rows = p.w.document.createElement('rows');
116                         grid.appendChild( rows );
117                                 var row1 = p.w.document.createElement('row');
118                                 rows.appendChild( row1 );
119                                         var label_r1_1 = p.w.document.createElement('label');
120                                         row1.appendChild( label_r1_1 );
121                                         label_r1_1.setAttribute('value',getString('mbts_total_owed_label'));
122                                         var label_r1_2 = p.w.document.createElement('label');
123                                         row1.appendChild( label_r1_2 );
124                                         label_r1_2.setAttribute('value',mbts.total_owed());
125                                 var row2 = p.w.document.createElement('row');
126                                 rows.appendChild( row2 );
127                                         var label_r2_1 = p.w.document.createElement('label');
128                                         row2.appendChild( label_r2_1 );
129                                         label_r2_1.setAttribute('value',getString('mbts_total_paid_label'));
130                                         var label_r2_2 = p.w.document.createElement('label');
131                                         row2.appendChild( label_r2_2 );
132                                         label_r2_2.setAttribute('value',mbts.total_paid());
133                                 var row3 = p.w.document.createElement('row');
134                                 rows.appendChild( row3 );
135                                         var label_r3_1 = p.w.document.createElement('label');
136                                         row3.appendChild( label_r3_1 );
137                                         label_r3_1.setAttribute('value',getString('mbts_balance_owed_label'));
138                                         label_r3_1.setAttribute('style','font-weight: bold');
139                                         var label_r3_2 = p.w.document.createElement('label');
140                                         row3.appendChild( label_r3_2 );
141                                         label_r3_2.setAttribute('value',mbts.balance_owed());
142                                         label_r3_2.setAttribute('style','font-weight: bold');
143
144                 return grid;
145         }
146
147         var obj_string ='mbts';
148
149         setTimeout(
150                 function() {
151         //p.list_box.clear_rows();
152
153         for (var i = 0; i < bills.length; i++) {
154
155                 var mbts = bills[i];
156
157                 var cols = [];
158
159                 for (var j = 0; j < p.patron_bills_cols.length; j++) {
160                         var hash = p.patron_bills_cols[j];
161                         sdump('D_PATRON_BILLS','Considering ' + js2JSON(hash) + '\n');
162                         var listcell = p.w.document.createElement('listcell');
163                         listcell.setAttribute('pack','start');
164                         listcell.setAttribute('align','start');
165                         listcell.setAttribute('style','border-left: black solid thin');
166                         var col = '';
167                         if (hash.fm_field_render) {
168
169                                 var obj = 'mbts';
170                                 switch( hash.fm_class ) {
171                                         case 'mvr' : obj_string = 'mvr'; break;
172                                 }
173                                 var cmd = parse_render_string( obj_string, hash.fm_field_render );
174                                 sdump('D_PATRON_BILLS','cmd = ' + cmd + '\n');
175                                 try {
176                                         col = eval( cmd );
177                                         sdump('D_PATRON_BILLS','eval = ' + col + '\n');
178                                 } catch(E) {
179                                         sdump('D_ERROR',E + '\n');
180                                 }
181                                 if (typeof(col) == 'string') {
182                                         listcell.setAttribute('label',col);
183                                 } else {
184                                         listcell.appendChild( col );
185                                 }
186                         }
187                         if (hash.render_xul) {
188                                 var xul = p.w.document.createElement( hash.render_xul );
189                                 listcell.appendChild( xul );
190                                 if (hash.render_xul == 'checkbox') xul.setAttribute('checked', 'true');
191                         }
192                         cols.push( listcell );
193                 }
194                 p.list_box.add_row( cols, { 'record_id' : mbts.id() } ); 
195         }
196                 }, 0
197         );
198 }