]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js
wrong call, and typo
[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.transactions',
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                 sdump('D_PATRON_UTILS','bills_total $$$ = ' + total + '\n');
67                 return '$' + total;
68         }
69
70 }
71
72 function patron_get_credit_total( au ) {
73         sdump('D_PATRON_UTILS',arg_dump(arguments));
74         /* FIXME: I can use CSS to style this number as money. */
75         return '$' + au.credit_forward_balance();
76 }
77
78 function patron_get_checkouts( au ) {
79         sdump('D_PATRON_UTILS',arg_dump(arguments));
80         try {
81                 au.checkouts( user_request(
82                         'open-ils.circ',
83                         'open-ils.circ.actor.user.checked_out',
84                         [ mw.G.auth_ses[0], au.id() ]
85                 )[0] );
86                 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n');
87                 return au.checkouts();
88         } catch(E) {
89                 sdump('D_ERROR',js2JSON(E) + '\n');
90                 return null;
91         }
92 }
93
94 function patron_get_checkouts_total( au ) {
95         sdump('D_PATRON_UTILS',arg_dump(arguments));
96         if (! au.checkouts()) patron_get_checkouts( au );
97         if (au.checkouts() == null)
98                 return '???';
99         else
100                 return au.checkouts().length;
101 }
102
103 function patron_get_checkouts_overdue_total( au ) {
104         sdump('D_PATRON_UTILS',arg_dump(arguments));
105         if (! au.checkouts()) patron_get_checkouts( au );
106         var total = 0;
107         if ( (au.checkouts() != null) && (typeof(au.checkouts())=='object') ) {
108                 for (var i = 0; i < au.checkouts().length; i++) {
109                         var item = au.checkouts()[i];
110                         var due_date = item.circ.due_date();
111                         due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
112                         var today = formatted_date( new Date() , '%Y%m%d' );
113                         if (today > due_date) total++;
114                 }
115         }
116         sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
117         return total;
118 }
119
120 function patron_get_holds( au ) {
121         sdump('D_PATRON_UTILS',arg_dump(arguments));
122         try {
123                 au.hold_requests( user_request(
124                         'open-ils.circ',
125                         'open-ils.circ.holds.retrieve',
126                         [ mw.G.auth_ses[0], au.id() ]
127                 )[0] );
128                 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
129                 return au.hold_requests();
130         } catch(E) {
131                 sdump('D_ERROR',js2JSON(E) + '\n');
132                 return null;
133         }
134 }
135
136 function patron_get_holds_total( au ) {
137         sdump('D_PATRON_UTILS',arg_dump(arguments));
138         if (! au.hold_requests()) patron_get_holds( au );
139         if (au.hold_requests() == null)
140                 return '???';
141         else
142                 return au.hold_requests().length;
143 }
144
145 function patron_get_holds_available_total( au ) {
146         sdump('D_PATRON_UTILS',arg_dump(arguments));
147         if (! au.hold_requests()) patron_get_holds( au );
148         var total = 0;
149         if ( (au.hold_requests() != null) && (typeof(au.hold_requests()) == 'object') ) {
150                 for (var i = 0; i < au.hold_requests().length; i++) {
151                         var hold = au.hold_requests()[i];
152                         if (hold.capture_time()) total++;
153                 }
154         }
155         sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
156         return total;
157 }
158
159 function patron_get_home_ou_name( au ) {
160         sdump('D_PATRON_UTILS',arg_dump(arguments));
161         if (au && 
162                 au.home_ou && 
163                 au.home_ou() && 
164                 mw.G.org_tree_hash &&
165                 mw.G.org_tree_hash[ au.home_ou() ] && 
166                 mw.G.org_tree_hash[ au.home_ou() ].name &&
167                 mw.G.org_tree_hash[ au.home_ou() ].name()
168         ) {
169                 return mw.G.org_tree_hash[ au.home_ou() ].name();
170         } else {
171                 return null;
172         }
173 }
174
175 function patron_get_ident1_type_as_text( au ) {
176         sdump('D_PATRON_UTILS',arg_dump(arguments));
177         if (au && 
178                 au.ident_type && 
179                 au.ident_type() && 
180                 mw.G.cit_hash &&
181                 mw.G.cit_hash[ au.ident_type() ] && 
182                 mw.G.cit_hash[ au.ident_type() ].value &&
183                 mw.G.cit_hash[ au.ident_type() ].value()
184         ) {
185                 return mw.G.cit_hash[ au.ident_type() ].value();
186         } else {
187                 return null;
188         }
189 }
190
191 function patron_get_ident2_type_as_text( au ) {
192         sdump('D_PATRON_UTILS',arg_dump(arguments));
193         if (au && 
194                 au.ident_type2 && 
195                 au.ident_type2() && 
196                 mw.G.cit_hash &&
197                 mw.G.cit_hash[ au.ident_type2() ] && 
198                 mw.G.cit_hash[ au.ident_type2() ].value &&
199                 mw.G.cit_hash[ au.ident_type2() ].value()
200         ) {
201                 return mw.G.cit_hash[ au.ident_type2() ].value();
202         } else {
203                 return null;
204         }
205 }
206
207 function patron_get_profile_as_text( au ) {
208         sdump('D_PATRON_UTILS',arg_dump(arguments));
209         if (au && 
210                 au.profile && 
211                 au.profile() && 
212                 mw.G.ap_hash &&
213                 mw.G.ap_hash[ au.profile() ] && 
214                 mw.G.ap_hash[ au.profile() ].value &&
215                 mw.G.ap_hash[ au.profile() ].value()
216         ) {
217                 return mw.G.ap_hash[ au.profile() ].value();
218         } else {
219                 return null;
220         }
221 }
222
223 function patron_get_standing_as_text( au ) {
224         sdump('D_PATRON_UTILS',arg_dump(arguments));
225         if (au && 
226                 au.standing && 
227                 au.standing() && 
228                 mw.G.cst_hash &&
229                 mw.G.cst_hash[ au.standing() ] && 
230                 mw.G.cst_hash[ au.standing() ].value &&
231                 mw.G.cst_hash[ au.standing() ].value()
232         ) {
233                 return mw.G.cst_hash[ au.standing() ].value();
234         } else {
235                 return null;
236         }
237 }
238
239 function patron_get_standing_css_style( value ) {
240         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
241         switch(value) {
242                 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
243                 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
244                 case 'Blocked' : case '3' : return 'background-color: red;'; break;
245                 default: return 'background-color: white;'; break;
246         }
247 }
248
249 function retrieve_patron_by_barcode( barcode, f ) {
250         sdump('D_PATRON_UTILS',arg_dump(arguments));
251         if (!barcode) return null;
252         return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode', f );
253 }
254
255 function retrieve_patron_by_id( id, f ) {
256         sdump('D_PATRON_UTILS',arg_dump(arguments));
257         if (!id) return null;
258         return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve', f );
259 }
260
261 function retrieve_patron_by_method( id, app, method, f ) {
262         sdump('D_PATRON_UTILS',arg_dump(arguments));
263         if (!id) return null;
264         if (f) {
265                 try {
266                         user_async_request(
267                                 app,
268                                 method,
269                                 [ mw.G.auth_ses[0], id ],
270                                 f
271                         );
272                 } catch(E) {
273                         sdump('D_ERROR',E);
274                 }
275         } else {
276                 try {
277                         var au = user_request(
278                                 app,
279                                 method,
280                                 [ mw.G.auth_ses[0], id ]
281                         )[0];
282                         return au;
283                 } catch(E) {
284                         sdump('D_ERROR',E);
285                         return null;
286                 }
287         }
288 }
289
290 function save_patron( au ) {
291         sdump('D_PATRON_UTILS',arg_dump(arguments));
292         try {
293                 var result = user_request(
294                         'open-ils.actor',
295                         'open-ils.actor.patron.update',
296                         [ mw.G.auth_ses[0], au ]
297                 )[0];
298                 return result;
299         } catch(E) {
300                 handle_error(E);
301                 return null;
302         }
303 }