var hold = new ahr();
var interval = fetchOrgSettingDefault(G.user.home_ou(), 'circ.hold_expire_interval');
- if(!interval) interval = 0;
- var secs = interval_to_seconds(interval);
- var expire = new Date();
- expire.setTime(expire.getTime() + Number(secs + '000'));
- var expireDate = holdsVerifyThawDate(dojo.date.stamp.toISOString(expire));
-
- if(expireDate) hold.expire_time(expireDate);
+
+ if(interval) {
+ var secs = interval_to_seconds(interval);
+ var expire = new Date();
+ expire.setTime(expire.getTime() + Number(secs + '000'));
+ var expireDate = holdsVerifyThawDate(dojo.date.stamp.toISOString(expire));
+ if(expireDate) hold.expire_time(expireDate);
+ }
+
hold.phone_notify("");
hold.email_notify(0);
hold.pickup_lib(org);
function placeBatchHold(ids, org, error) { // array of bib IDs, pickup lib (optional), error msgs from holds (optional)
if(!grabUser() || !ids.length) return -1;
if(!org) org = G.user.home_ou();
-
+
+ var str = "";
+ var flag = false;
+ var success = -1;
+ var errCount = 0;
+
+ dojo.forEach(ids,
+ function(target) {
+ // first see if the hold is permitted
+ var hold = createBibHoldObject(org);
+ hold.target(target);
+ var test = {titleid: hold.target(), hold_type: "T", patronid: G.user.id(), depth: 0, pickup_lib: org}
+
+ var resp = fieldmapper.standardRequest(
+ ['open-ils.circ','open-ils.circ.title_hold.is_possible'],
+ { async:false,
+ params:[G.user.session, test]
+ }
+ );
+
+ if(!resp.success) {
+ flag = true;
+ str += target + ": " + (resp.last_event.desc == "" ? resp.last_event.textcode: resp.last_event.desc) + "\n";
+ errCount++;
+ return;
+ }
+
+ var resp2 = fieldmapper.standardRequest(
+ ['open-ils.circ','open-ils.circ.holds.create'],
+ { async:false,
+ params:[grabUser().session, hold]
+ }
+ );
+
+ if(typeof(resp2 == 'object')) {
+ str += target + ": " + resp2[0].desc+"\n";
+ errCount++;
+ } else {
+ success++;
+ }
+
+ if(str != "") error.err+=errCount+" holds not placed successfully\n"+str;
+ }
+ );
+
+ if(str != "") error.err+=errCount+" hold"+(errCount==1?"":"s")+" not placed successfully\n"+str;
+ return ++success;
+
+ /*
+ // Previous batch implementation, which doesn't work because the patron could exceed
+ // max holds during batch creation, after the initial permit test...
+
var holds = [];
var chkArr = [];
for(var i=0; i<ids.length; i++) {
holds[i].target(ids[i]);
chkArr.push({titleid: ids[i], volume_id: undefined, copy_id: undefined, hold_type: "T", patronid: G.user.id(), depth: 0, pickup_lib: org});
}
+
var resp = fieldmapper.standardRequest(['open-ils.circ','open-ils.circ.title_hold.is_possible.batch.atomic'], {async:false, params:[grabUser().session, chkArr]});
- //if(resp.last_event) alert(resp.last_event.payload.fail_part); else alert('Mulit-hold successful\n'+resp.local_avail);
var str = "";
var errCount = 0;
}
if(str != "") error.err+=errCount+" holds not placed successfully\n"+str;
return ++count;
+ */
}
function placeHoldOnCache() {