1 dump('entering patron.summary.js\n');
3 if (typeof patron == 'undefined') patron = {};
4 patron.summary = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.window'); this.window = new util.window();
8 JSAN.use('util.network'); this.network = new util.network();
12 patron.summary.prototype = {
14 'init' : function( params ) {
18 obj.session = params['session'];
19 obj.barcode = params['barcode'];
21 JSAN.use('OpenILS.data'); this.OpenILS = {};
22 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
24 JSAN.use('util.controller'); obj.controller = new util.controller();
30 function() { alert('Not Yet Implemented'); }
36 e.setAttribute('value',
37 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
39 e.setAttribute('style','background-color: lime');
40 //FIXME//bills should become a virtual field
41 if (obj.patron.bills.length > 0)
42 e.setAttribute('style','background-color: yellow');
43 if (obj.patron.standing() == 2)
44 e.setAttribute('style','background-color: lightred');
53 e.setAttribute('value',
54 obj.OpenILS.data.hash.pgt[
65 e.setAttribute('value',
66 obj.OpenILS.data.hash.cst[
77 JSAN.use('util.money');
78 e.setAttribute('value',
79 util.money.cents_as_dollars(
80 obj.patron.credit_forward_balance()
90 JSAN.use('util.money');
92 //FIXME//adjust when .bills becomes a virtual field
93 for (var i = 0; i < obj.patron.bills.length; i++) {
94 total += util.money.dollars_float_to_cents_integer(
95 obj.patron.bills[i].balance_owed()
98 e.setAttribute('value',
99 util.money.cents_as_dollars( total )
104 'patron_checkouts' : [
108 e.setAttribute('value',
109 obj.patron.checkouts().length
118 //FIXME//Get Bill to do this correctly on server side
119 JSAN.use('util.date');
121 for (var i = 0; i < obj.patron.checkouts().length; i++) {
122 var item = obj.patron.checkouts()[i];
123 var due_date = item.circ.due_date();
124 due_date = due_date.substr(0,4)
125 + due_date.substr(5,2) + due_date.substr(8,2);
126 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
127 if (today > due_date) total++;
129 e.setAttribute('value',
139 e.setAttribute('value',
140 obj.patron.hold_requests.length
145 'patron_holds_available' : [
150 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
151 var hold = obj.patron.hold_requests()[i];
152 if (hold.capture_time()) total++;
154 e.setAttribute('value',
164 e.setAttribute('value',
165 obj.patron.card().barcode()
170 'patron_ident_type_1' : [
174 var ident_string = '';
175 var ident = obj.OpenILS.data.hash.cit[
176 obj.patron.ident_type()
178 if (ident) ident_string = ident.name()
179 e.setAttribute('value',
185 'patron_ident_value_1' : [
189 e.setAttribute('value',
190 obj.patron.ident_value()
195 'patron_ident_type_2' : [
199 var ident_string = '';
200 var ident = obj.OpenILS.data.hash.cit[
201 obj.patron.ident_type2()
203 if (ident) ident_string = ident.name()
204 e.setAttribute('value',
210 'patron_ident_value_2' : [
214 e.setAttribute('value',
215 obj.patron.ident_value2()
220 'patron_date_of_birth' : [
224 e.setAttribute('value',
230 'patron_day_phone' : [
234 e.setAttribute('value',
235 obj.patron.day_phone()
240 'patron_evening_phone' : [
244 e.setAttribute('value',
245 obj.patron.evening_phone()
250 'patron_other_phone' : [
254 e.setAttribute('value',
255 obj.patron.other_phone()
264 e.setAttribute('value',
270 'patron_photo_url' : [
274 e.setAttribute('src',
275 obj.patron.photo_url()
284 e.setAttribute('value',
285 obj.OpenILS.data.hash.aou[
289 e.setAttribute('tooltiptext',
290 obj.OpenILS.data.hash.aou[
297 'patron_last_library' : [
301 e.setAttribute('value',
302 obj.OpenILS.data.hash.aou[
306 e.setAttribute('tooltiptext',
307 obj.OpenILS.data.hash.aou[
314 'patron_mailing_address_street1' : [
318 e.setAttribute('value',
319 obj.patron.mailing_address().street1()
324 'patron_mailing_address_street2' : [
328 e.setAttribute('value',
329 obj.patron.mailing_address().street2()
334 'patron_mailing_address_city' : [
338 e.setAttribute('value',
339 obj.patron.mailing_address().city()
344 'patron_mailing_address_state' : [
348 e.setAttribute('value',
349 obj.patron.mailing_address().state()
354 'patron_mailing_address_post_code' : [
358 e.setAttribute('value',
359 obj.patron.mailing_address().post_code()
364 'patron_physical_address_street1' : [
368 e.setAttribute('value',
369 obj.patron.billing_address().street1()
374 'patron_physical_address_street2' : [
378 e.setAttribute('value',
379 obj.patron.billing_address().street2()
384 'patron_physical_address_city' : [
388 e.setAttribute('value',
389 obj.patron.billing_address().city()
394 'patron_physical_address_state' : [
398 e.setAttribute('value',
399 obj.patron.billing_address().state()
404 'patron_physical_address_post_code' : [
408 e.setAttribute('value',
409 obj.patron.billing_address().post_code()
422 'retrieve' : function() {
430 // Retrieve the patron
434 var robj = obj.network.request(
435 api.fm_au_retrieve_via_barcode.app,
436 api.fm_au_retrieve_via_barcode.method,
437 [ obj.session, obj.barcode ]
441 if (instanceOf(robj,au)) {
445 } else if (typeof robj.ilsevent != 'undefined') {
447 if (robj.ilsevent == 0) {
449 // are we moving toward a payload here?
452 var error = robj.ilsevent + ' : '
453 + obj.error.get_ilsevent( robj.ilsevent );
458 throw('result is not an au fm object');
462 throw('result == false');
466 var error = ('patron.summary.retrieve : ' + js2JSON(E));
467 obj.error.sdump('D_ERROR',error);
473 // Retrieve the bills
477 var bills = obj.network.request(
478 api.fm_mobts_having_balance.app,
479 api.fm_mobts_having_balance.method,
480 [ obj.session, obj.patron.id() ]
482 //FIXME// obj.patron.bills( bills );
483 obj.patron.bills = bills;
485 var error = ('patron.summary.retrieve : ' + js2JSON(E));
486 obj.error.sdump('D_ERROR',error);
492 // Retrieve the checkouts
496 var checkouts = obj.network.request(
497 api.blob_checkouts_retrieve.app,
498 api.blob_checkouts_retrieve.method,
499 [ obj.session, obj.patron.id() ]
501 obj.patron.checkouts( checkouts );
503 var error = ('patron.summary.retrieve : ' + js2JSON(E));
504 obj.error.sdump('D_ERROR',error);
510 // Retrieve the holds
514 var holds = obj.network.request(
515 api.fm_ahr_retrieve.app,
516 api.fm_ahr_retrieve.method,
517 [ obj.session, obj.patron.id() ]
519 obj.patron.hold_requests( holds );
521 var error = ('patron.summary.retrieve : ' + js2JSON(E));
522 obj.error.sdump('D_ERROR',error);
529 chain.push( function() { obj.controller.render(); } );
533 chain.push( function() {
535 if (typeof window.xulG == 'object' && typeof window.xulG.on_finished == 'function') {
536 obj.error.sdump('D_PATRON_SUMMARY',
537 'patron.summary: Calling external .on_finished()\n');
538 window.xulG.on_finished(obj.patron);
540 obj.error.sdump('D_PATRON_SUMMARY','patron.summary: No external .on_finished()\n');
546 JSAN.use('util.exec'); obj.exec = new util.exec();
547 obj.exec.on_error = function(E) {
548 //location.href = urls.remote_patron_barcode_entry + '?session=' + window.escape(obj.session);
549 obj.patron = new au();
550 obj.patron.checkouts( [] );
551 obj.patron.hold_requests( [] );
552 obj.patron.bills = [];
553 var home_ou = new aou();
554 obj.patron.home_ou( home_ou );
555 var card = new ac(); card.barcode( obj.barcode );
556 obj.patron.card( card );
557 obj.patron.family_name( 'Could not retrieve patron' );
558 alert('FIXME: Need better alert and error handling.\nProblem with barcode: '
559 + obj.barcode + '\n' + E);
561 if (typeof window.xulG == 'object' && typeof window.xulG.on_error == 'function') {
562 obj.error.sdump('D_PATRON_SUMMARY',
563 'patron.summary: Calling external .on_error()\n');
564 window.xulG.on_error(E);
566 obj.error.sdump('D_PATRON_SUMMARY','patron.summary: No external .on_error()\n');
570 this.exec.chain( chain );
573 var error = ('patron.summary.retrieve : ' + js2JSON(E));
574 this.error.sdump('D_ERROR',error);
580 dump('exiting patron.summary.js\n');