1 sdump('D_TRACE','Loading patron_utils.js\n');
3 function patron_get_full_name( au ) {
4 sdump('D_PATRON_UTILS',arg_dump(arguments));
6 if (au.prefix()) name += au.prefix() + ' ';
7 if (au.family_name()) name += au.family_name() + ', ';
8 if (au.first_given_name()) name += au.first_given_name() + ' ';
9 if (au.second_given_name()) name += au.second_given_name() + ' ';
10 if (au.suffix()) name += au.suffix() + ' ';
14 function patron_get_barcode( au ) {
15 sdump('D_PATRON_UTILS',arg_dump(arguments));
17 return find_id_object_in_list( au.cards(), au.card() ).barcode();
24 function patron_get_bills_total( au ) {
25 sdump('D_PATRON_UTILS',arg_dump(arguments));
29 function patron_get_credit_total( au ) {
30 sdump('D_PATRON_UTILS',arg_dump(arguments));
31 /* FIXME: I can use CSS to style this number as money. */
32 return '$' + au.credit_forward_balance();
35 function patron_get_checkouts( au ) {
36 sdump('D_PATRON_UTILS',arg_dump(arguments));
38 au._checkouts = user_request(
40 'open-ils.circ.actor.user.checked_out',
41 [ mw.G.auth_ses[0], au.id() ]
43 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au._checkouts) + '\n');
46 sdump('D_ERROR',js2JSON(E) + '\n');
51 function patron_get_checkouts_total( au ) {
52 sdump('D_PATRON_UTILS',arg_dump(arguments));
53 if (! au._checkouts) patron_get_checkouts( au );
54 if (au._checkouts == null)
57 return au._checkouts.length;
60 function patron_get_checkouts_overdue_total( au ) {
61 sdump('D_PATRON_UTILS',arg_dump(arguments));
62 if (! au._checkouts) patron_get_checkouts( au );
64 for (var i = 0; i < au._checkouts.length; i++) {
65 var item = au._checkouts[i];
66 var due_date = item.circ.due_date();
67 due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
68 var today = formatted_date( new Date() , '%Y%m%d' );
69 if (today > due_date) total++;
71 sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
75 function patron_get_holds( au ) {
76 sdump('D_PATRON_UTILS',arg_dump(arguments));
78 au._holds = user_request(
80 'open-ils.circ.holds.retrieve',
81 [ mw.G.auth_ses[0], au.id() ]
83 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au._holds) + '\n');
86 sdump('D_ERROR',js2JSON(E) + '\n');
91 function patron_get_holds_total( au ) {
92 sdump('D_PATRON_UTILS',arg_dump(arguments));
93 if (! au._holds) patron_get_holds( au );
94 if (au._holds == null)
97 return au._holds.length;
100 function patron_get_holds_available_total( au ) {
101 sdump('D_PATRON_UTILS',arg_dump(arguments));
102 if (! au._holds) patron_get_holds( au );
104 for (var i = 0; i < au._holds.length; i++) {
105 var hold = au._holds[i];
106 if (hold.capture_time()) total++;
108 sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
112 function patron_get_home_ou_name( au ) {
113 sdump('D_PATRON_UTILS',arg_dump(arguments));
117 mw.G.org_tree_hash &&
118 mw.G.org_tree_hash[ au.home_ou() ] &&
119 mw.G.org_tree_hash[ au.home_ou() ].name &&
120 mw.G.org_tree_hash[ au.home_ou() ].name()
122 return mw.G.org_tree_hash[ au.home_ou() ].name();
128 function patron_get_ident1_type_as_text( au ) {
129 sdump('D_PATRON_UTILS',arg_dump(arguments));
134 mw.G.cit_hash[ au.ident_type() ] &&
135 mw.G.cit_hash[ au.ident_type() ].value &&
136 mw.G.cit_hash[ au.ident_type() ].value()
138 return mw.G.cit_hash[ au.ident_type() ].value();
144 function patron_get_ident2_type_as_text( au ) {
145 sdump('D_PATRON_UTILS',arg_dump(arguments));
150 mw.G.cit_hash[ au.ident_type2() ] &&
151 mw.G.cit_hash[ au.ident_type2() ].value &&
152 mw.G.cit_hash[ au.ident_type2() ].value()
154 return mw.G.cit_hash[ au.ident_type2() ].value();
160 function patron_get_profile_as_text( au ) {
161 sdump('D_PATRON_UTILS',arg_dump(arguments));
166 mw.G.ap_hash[ au.profile() ] &&
167 mw.G.ap_hash[ au.profile() ].value &&
168 mw.G.ap_hash[ au.profile() ].value()
170 return mw.G.ap_hash[ au.profile() ].value();
176 function patron_get_standing_as_text( au ) {
177 sdump('D_PATRON_UTILS',arg_dump(arguments));
182 mw.G.cst_hash[ au.standing() ] &&
183 mw.G.cst_hash[ au.standing() ].value &&
184 mw.G.cst_hash[ au.standing() ].value()
186 return mw.G.cst_hash[ au.standing() ].value();
192 function patron_get_standing_css_style( value ) {
193 sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
195 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
196 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
197 case 'Blocked' : case '3' : return 'background-color: red;'; break;
198 default: return 'background-color: white;'; break;
202 function retrieve_patron_by_barcode( barcode ) {
203 sdump('D_PATRON_UTILS',arg_dump(arguments));
204 if (!barcode) return null;
205 return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode' );
208 function retrieve_patron_by_id( id ) {
209 sdump('D_PATRON_UTILS',arg_dump(arguments));
210 if (!id) return null;
211 return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve' );
214 function retrieve_patron_by_method( id, app, method ) {
215 sdump('D_PATRON_UTILS',arg_dump(arguments));
216 if (!id) return null;
218 var au = user_request(
221 [ mw.G.auth_ses[0], id ]
230 function save_patron( au ) {
231 sdump('D_PATRON_UTILS',arg_dump(arguments));
233 var result = user_request(
235 'open-ils.actor.patron.update',
236 [ mw.G.auth_ses[0], au ]