]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js
get patron bills for real
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_utils.js
1 sdump('D_TRACE','Loading patron_utils.js\n');
2
3 function fake_patron() {
4         var p = new au(); 
5         p.family_name( 'Retrieving' ); 
6         p.checkouts( [] ); 
7         p.hold_requests( [] ); 
8         p.credit_forward_balance('0.00');
9         return p;
10 }
11
12 function patron_get_full_name( au ) {
13         sdump('D_PATRON_UTILS',arg_dump(arguments));
14         var name = '';
15         if (au.prefix()) name += au.prefix() + ' ';     
16         if (au.family_name()) name += au.family_name() + ', ';  
17         if (au.first_given_name()) name += au.first_given_name() + ' '; 
18         if (au.second_given_name()) name += au.second_given_name() + ' ';       
19         if (au.suffix()) name += au.suffix() + ' ';     
20         return name;
21 }
22
23 function patron_get_barcode( au ) {
24         sdump('D_PATRON_UTILS',arg_dump(arguments));
25         try {
26                 if (au && au.card && au.card() ) {
27                         if ( (au.card()!='null') && (typeof(au.card())=='object') ) {
28                                 return au.card().barcode();
29                         } else {
30                                 return find_id_object_in_list( au.cards(), au.card() ).barcode();
31                         }
32                 }
33         } catch(E) {
34                 sdump('D_ERROR',E);
35         }
36         return '???';
37 }
38
39 function patron_get_bills( au ) {
40         sdump('D_PATRON_UTILS',arg_dump(arguments));
41         try {
42                 au.bills = ( user_request(   // FIXME: make bills a virtual field of au
43                         'open-ils.actor',
44                         'open-ils.actor.user.fines.summary',
45                         [ mw.G.auth_ses[0], au.id() ]
46                 )[0] );
47                 sdump('D_PATRON_UTILS','bills = ' + js2JSON(au.bills) + '\n');
48                 return au.bills
49         } catch(E) {
50                 sdump('D_ERROR',js2JSON(E) + '\n');
51                 return null;
52         }
53
54 }
55
56 function patron_get_bills_total( au ) {
57         sdump('D_PATRON_UTILS',arg_dump(arguments));
58         if (! au.bills ) patron_get_bills( au );
59         if (au.bills == null)
60                 return '???';
61         else {
62                 var total = 0;
63                 for (var i = 0; i < au.bills.length; i++) {
64                         total += parseFloat( au.bills[i].balance(owed) );
65                 }
66                 return '$' + total;
67         }
68
69 }
70
71 function patron_get_credit_total( au ) {
72         sdump('D_PATRON_UTILS',arg_dump(arguments));
73         /* FIXME: I can use CSS to style this number as money. */
74         return '$' + au.credit_forward_balance();
75 }
76
77 function patron_get_checkouts( au ) {
78         sdump('D_PATRON_UTILS',arg_dump(arguments));
79         try {
80                 au.checkouts( user_request(
81                         'open-ils.circ',
82                         'open-ils.circ.actor.user.checked_out',
83                         [ mw.G.auth_ses[0], au.id() ]
84                 )[0] );
85                 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n');
86                 return au.checkouts();
87         } catch(E) {
88                 sdump('D_ERROR',js2JSON(E) + '\n');
89                 return null;
90         }
91 }
92
93 function patron_get_checkouts_total( au ) {
94         sdump('D_PATRON_UTILS',arg_dump(arguments));
95         if (! au.checkouts()) patron_get_checkouts( au );
96         if (au.checkouts() == null)
97                 return '???';
98         else
99                 return au.checkouts().length;
100 }
101
102 function patron_get_checkouts_overdue_total( au ) {
103         sdump('D_PATRON_UTILS',arg_dump(arguments));
104         if (! au.checkouts()) patron_get_checkouts( au );
105         var total = 0;
106         if ( (au.checkouts() != null) && (typeof(au.checkouts())=='object') ) {
107                 for (var i = 0; i < au.checkouts().length; i++) {
108                         var item = au.checkouts()[i];
109                         var due_date = item.circ.due_date();
110                         due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
111                         var today = formatted_date( new Date() , '%Y%m%d' );
112                         if (today > due_date) total++;
113                 }
114         }
115         sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
116         return total;
117 }
118
119 function patron_get_holds( au ) {
120         sdump('D_PATRON_UTILS',arg_dump(arguments));
121         try {
122                 au.hold_requests( user_request(
123                         'open-ils.circ',
124                         'open-ils.circ.holds.retrieve',
125                         [ mw.G.auth_ses[0], au.id() ]
126                 )[0] );
127                 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
128                 return au.hold_requests();
129         } catch(E) {
130                 sdump('D_ERROR',js2JSON(E) + '\n');
131                 return null;
132         }
133 }
134
135 function patron_get_holds_total( au ) {
136         sdump('D_PATRON_UTILS',arg_dump(arguments));
137         if (! au.hold_requests()) patron_get_holds( au );
138         if (au.hold_requests() == null)
139                 return '???';
140         else
141                 return au.hold_requests().length;
142 }
143
144 function patron_get_holds_available_total( au ) {
145         sdump('D_PATRON_UTILS',arg_dump(arguments));
146         if (! au.hold_requests()) patron_get_holds( au );
147         var total = 0;
148         if ( (au.hold_requests() != null) && (typeof(au.hold_requests()) == 'object') ) {
149                 for (var i = 0; i < au.hold_requests().length; i++) {
150                         var hold = au.hold_requests()[i];
151                         if (hold.capture_time()) total++;
152                 }
153         }
154         sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
155         return total;
156 }
157
158 function patron_get_home_ou_name( au ) {
159         sdump('D_PATRON_UTILS',arg_dump(arguments));
160         if (au && 
161                 au.home_ou && 
162                 au.home_ou() && 
163                 mw.G.org_tree_hash &&
164                 mw.G.org_tree_hash[ au.home_ou() ] && 
165                 mw.G.org_tree_hash[ au.home_ou() ].name &&
166                 mw.G.org_tree_hash[ au.home_ou() ].name()
167         ) {
168                 return mw.G.org_tree_hash[ au.home_ou() ].name();
169         } else {
170                 return null;
171         }
172 }
173
174 function patron_get_ident1_type_as_text( au ) {
175         sdump('D_PATRON_UTILS',arg_dump(arguments));
176         if (au && 
177                 au.ident_type && 
178                 au.ident_type() && 
179                 mw.G.cit_hash &&
180                 mw.G.cit_hash[ au.ident_type() ] && 
181                 mw.G.cit_hash[ au.ident_type() ].value &&
182                 mw.G.cit_hash[ au.ident_type() ].value()
183         ) {
184                 return mw.G.cit_hash[ au.ident_type() ].value();
185         } else {
186                 return null;
187         }
188 }
189
190 function patron_get_ident2_type_as_text( au ) {
191         sdump('D_PATRON_UTILS',arg_dump(arguments));
192         if (au && 
193                 au.ident_type2 && 
194                 au.ident_type2() && 
195                 mw.G.cit_hash &&
196                 mw.G.cit_hash[ au.ident_type2() ] && 
197                 mw.G.cit_hash[ au.ident_type2() ].value &&
198                 mw.G.cit_hash[ au.ident_type2() ].value()
199         ) {
200                 return mw.G.cit_hash[ au.ident_type2() ].value();
201         } else {
202                 return null;
203         }
204 }
205
206 function patron_get_profile_as_text( au ) {
207         sdump('D_PATRON_UTILS',arg_dump(arguments));
208         if (au && 
209                 au.profile && 
210                 au.profile() && 
211                 mw.G.ap_hash &&
212                 mw.G.ap_hash[ au.profile() ] && 
213                 mw.G.ap_hash[ au.profile() ].value &&
214                 mw.G.ap_hash[ au.profile() ].value()
215         ) {
216                 return mw.G.ap_hash[ au.profile() ].value();
217         } else {
218                 return null;
219         }
220 }
221
222 function patron_get_standing_as_text( au ) {
223         sdump('D_PATRON_UTILS',arg_dump(arguments));
224         if (au && 
225                 au.standing && 
226                 au.standing() && 
227                 mw.G.cst_hash &&
228                 mw.G.cst_hash[ au.standing() ] && 
229                 mw.G.cst_hash[ au.standing() ].value &&
230                 mw.G.cst_hash[ au.standing() ].value()
231         ) {
232                 return mw.G.cst_hash[ au.standing() ].value();
233         } else {
234                 return null;
235         }
236 }
237
238 function patron_get_standing_css_style( value ) {
239         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
240         switch(value) {
241                 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
242                 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
243                 case 'Blocked' : case '3' : return 'background-color: red;'; break;
244                 default: return 'background-color: white;'; break;
245         }
246 }
247
248 function retrieve_patron_by_barcode( barcode, f ) {
249         sdump('D_PATRON_UTILS',arg_dump(arguments));
250         if (!barcode) return null;
251         return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode', f );
252 }
253
254 function retrieve_patron_by_id( id, f ) {
255         sdump('D_PATRON_UTILS',arg_dump(arguments));
256         if (!id) return null;
257         return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve', f );
258 }
259
260 function retrieve_patron_by_method( id, app, method, f ) {
261         sdump('D_PATRON_UTILS',arg_dump(arguments));
262         if (!id) return null;
263         if (f) {
264                 try {
265                         user_async_request(
266                                 app,
267                                 method,
268                                 [ mw.G.auth_ses[0], id ],
269                                 f
270                         );
271                 } catch(E) {
272                         sdump('D_ERROR',E);
273                 }
274         } else {
275                 try {
276                         var au = user_request(
277                                 app,
278                                 method,
279                                 [ mw.G.auth_ses[0], id ]
280                         )[0];
281                         return au;
282                 } catch(E) {
283                         sdump('D_ERROR',E);
284                         return null;
285                 }
286         }
287 }
288
289 function save_patron( au ) {
290         sdump('D_PATRON_UTILS',arg_dump(arguments));
291         try {
292                 var result = user_request(
293                         'open-ils.actor',
294                         'open-ils.actor.patron.update',
295                         [ mw.G.auth_ses[0], au ]
296                 )[0];
297                 return result;
298         } catch(E) {
299                 handle_error(E);
300                 return null;
301         }
302 }