1 sdump('D_TRACE','Loading patron_utils.js\n');
3 function fake_patron() {
5 p.family_name( 'Retrieving' );
8 p.credit_forward_balance('0.00');
12 function patron_get_full_name( au ) {
13 sdump('D_PATRON_UTILS',arg_dump(arguments));
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() + ' ';
23 function patron_get_barcode( au ) {
24 sdump('D_PATRON_UTILS',arg_dump(arguments));
26 if (au && au.card && au.card() ) {
27 if ( (au.card()!='null') && (typeof(au.card())=='object') ) {
28 return au.card().barcode();
30 return find_id_object_in_list( au.cards(), au.card() ).barcode();
39 function patron_get_bills( au ) {
40 sdump('D_PATRON_UTILS',arg_dump(arguments));
42 au.bills = ( user_request( // FIXME: make bills a virtual field of au
44 'open-ils.actor.user.transactions',
45 [ mw.G.auth_ses[0], au.id() ]
47 sdump('D_PATRON_UTILS','bills = ' + js2JSON(au.bills) + '\n');
50 sdump('D_ERROR',js2JSON(E) + '\n');
56 function patron_get_bills_total( au ) {
57 sdump('D_PATRON_UTILS',arg_dump(arguments));
58 if (! au.bills ) patron_get_bills( au );
63 for (var i = 0; i < au.bills.length; i++) {
64 total += parseFloat( au.bills[i].balance_owed() );
66 sdump('D_PATRON_UTILS','bills_total $$$ = ' + total + '\n');
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();
78 function patron_get_checkouts( au ) {
79 sdump('D_PATRON_UTILS',arg_dump(arguments));
81 au.checkouts( user_request(
83 'open-ils.circ.actor.user.checked_out',
84 [ mw.G.auth_ses[0], au.id() ]
86 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n');
87 return au.checkouts();
89 sdump('D_ERROR',js2JSON(E) + '\n');
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)
100 return au.checkouts().length;
103 function patron_get_checkouts_overdue_total( au ) {
104 sdump('D_PATRON_UTILS',arg_dump(arguments));
105 if (! au.checkouts()) patron_get_checkouts( au );
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++;
116 sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
120 function patron_get_holds( au ) {
121 sdump('D_PATRON_UTILS',arg_dump(arguments));
123 au.hold_requests( user_request(
125 'open-ils.circ.holds.retrieve',
126 [ mw.G.auth_ses[0], au.id() ]
128 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
129 return au.hold_requests();
131 sdump('D_ERROR',js2JSON(E) + '\n');
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)
142 return au.hold_requests().length;
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 );
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++;
155 sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
159 function patron_get_home_ou_name( au ) {
160 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
169 return mw.G.org_tree_hash[ au.home_ou() ].name();
175 function patron_get_ident1_type_as_text( au ) {
176 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
185 return mw.G.cit_hash[ au.ident_type() ].value();
191 function patron_get_ident2_type_as_text( au ) {
192 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
201 return mw.G.cit_hash[ au.ident_type2() ].value();
207 function patron_get_profile_as_text( au ) {
208 sdump('D_PATRON_UTILS',arg_dump(arguments));
213 mw.G.ap_hash[ au.profile() ] &&
214 mw.G.ap_hash[ au.profile() ].value &&
215 mw.G.ap_hash[ au.profile() ].value()
217 return mw.G.ap_hash[ au.profile() ].value();
223 function patron_get_standing_as_text( au ) {
224 sdump('D_PATRON_UTILS',arg_dump(arguments));
229 mw.G.cst_hash[ au.standing() ] &&
230 mw.G.cst_hash[ au.standing() ].value &&
231 mw.G.cst_hash[ au.standing() ].value()
233 return mw.G.cst_hash[ au.standing() ].value();
239 function patron_get_standing_css_style( value ) {
240 sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
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;
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 );
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 );
261 function retrieve_patron_by_method( id, app, method, f ) {
262 sdump('D_PATRON_UTILS',arg_dump(arguments));
263 if (!id) return null;
269 [ mw.G.auth_ses[0], id ],
277 var au = user_request(
280 [ mw.G.auth_ses[0], id ]
290 function save_patron( au ) {
291 sdump('D_PATRON_UTILS',arg_dump(arguments));
293 var result = user_request(
295 'open-ils.actor.patron.update',
296 [ mw.G.auth_ses[0], au ]