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