1 sdump('D_TRACE','Loading patron_utils.js\n');
3 function fake_patron() {
4 sdump('D_PATRON_UTILS',arg_dump(arguments));
6 p.family_name( 'Retrieving' );
9 p.credit_forward_balance('0.00');
14 function hold_status_as_text( status ) {
15 sdump('D_PATRON_UTILS',arg_dump(arguments));
16 if (typeof(status) == 'object') status = status.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;
28 function patron_get_full_name( au ) {
29 sdump('D_PATRON_UTILS',arg_dump(arguments));
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() + ' ';
39 function patron_get_barcode( au ) {
40 sdump('D_PATRON_UTILS',arg_dump(arguments));
42 if (au && au.card && au.card() ) {
43 if ( (au.card()!='null') && (typeof(au.card())=='object') ) {
44 return au.card().barcode();
46 return find_id_object_in_list( au.cards(), au.card() ).barcode();
55 function patron_get_bills( au, f ) {
56 sdump('D_PATRON_UTILS',arg_dump(arguments));
58 var bills = user_request(
60 'open-ils.actor.user.transactions.have_balance',
61 [ mw.G.auth_ses[0], au.id() ],
66 sdump('D_PATRON_UTILS','bills = ' + js2JSON(bills) + '\n');
67 au.bills = bills; // FIXME: make bills a virtual field of au
71 sdump('D_ERROR',js2JSON(E) + '\n');
77 function patron_get_bills_total( au ) {
78 sdump('D_PATRON_UTILS',arg_dump(arguments));
79 if (au.bills == null || au.bills == undefined)
82 return patron_get_bills_total_from_bills( au.bills );
86 function patron_get_bills_total_from_bills( bills ) {
87 sdump('D_PATRON_UTILS',arg_dump(arguments));
89 for (var i = 0; i < bills.length; i++) {
90 total += dollars_float_to_cents_integer( bills[i].balance_owed() );
92 sdump('D_PATRON_UTILS','bills_total $$$ = ' + cents_as_dollars( total ) + '\n');
93 return cents_as_dollars( total );
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();
102 function patron_get_checkouts( au, f ) {
103 sdump('D_PATRON_UTILS',arg_dump(arguments));
105 var checkouts = user_request(
107 'open-ils.circ.actor.user.checked_out',
108 [ mw.G.auth_ses[0], au.id() ],
113 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n');
114 au.checkouts( checkouts );
118 sdump('D_ERROR',js2JSON(E) + '\n');
123 function patron_get_checkouts_total( au ) {
124 sdump('D_PATRON_UTILS',arg_dump(arguments));
125 if (au.checkouts() == null)
128 return au.checkouts().length;
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 );
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++;
145 sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
149 function patron_get_holds( au, f ) {
150 sdump('D_PATRON_UTILS',arg_dump(arguments));
152 var hold_requests = user_request(
154 'open-ils.circ.holds.retrieve',
155 [ mw.G.auth_ses[0], au.id() ],
160 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
161 au.hold_requests( hold_requests );
162 return hold_requests;
165 sdump('D_ERROR',js2JSON(E) + '\n');
170 function patron_get_holds_total( au ) {
171 sdump('D_PATRON_UTILS',arg_dump(arguments));
172 if (au.hold_requests() == null)
175 return au.hold_requests().length;
178 function patron_get_hold_status( hold, f ) {
179 sdump('D_PATRON_UTILS',arg_dump(arguments));
181 var status = user_request(
183 'open-ils.circ.hold.status.retrieve',
184 [ mw.G.auth_ses[0], hold.id() ],
189 sdump('D_PATRON_UTILS','status = ' + status + '\n');
190 hold.status( status );
194 sdump('D_ERROR',js2JSON(E) + '\n');
199 function patron_get_holds_available_total( au ) {
200 sdump('D_PATRON_UTILS',arg_dump(arguments));
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++;
208 sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
212 function patron_get_home_ou_name( au ) {
213 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
222 return mw.G.org_tree_hash[ au.home_ou() ].name();
228 function patron_get_ident1_type_as_text( au ) {
229 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
238 return mw.G.cit_hash[ au.ident_type() ].name();
244 function patron_get_ident2_type_as_text( au ) {
245 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
254 return mw.G.cit_hash[ au.ident_type2() ].name();
260 function patron_get_profile_as_text( au ) {
261 sdump('D_PATRON_UTILS',arg_dump(arguments));
266 mw.G.ap_hash[ au.profile() ] &&
267 mw.G.ap_hash[ au.profile() ].name &&
268 mw.G.ap_hash[ au.profile() ].name()
270 return mw.G.ap_hash[ au.profile() ].name();
276 function patron_get_standing_as_text( au ) {
277 sdump('D_PATRON_UTILS',arg_dump(arguments));
282 mw.G.cst_hash[ au.standing() ] &&
283 mw.G.cst_hash[ au.standing() ].value &&
284 mw.G.cst_hash[ au.standing() ].value()
286 return mw.G.cst_hash[ au.standing() ].value();
292 function patron_get_standing_css_style( value ) {
293 sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
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;
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];
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];
314 function save_patron( au, f ) {
315 sdump('D_PATRON_UTILS',arg_dump(arguments));
317 var result = user_request(
319 'open-ils.actor.patron.update',
320 [ mw.G.auth_ses[0], au ],
323 if (!f) sdump('D_PATRON_UTILS','result = ' + js2JSON(result) + '\n');