* @param handler Optional "on-enter" handler.
*/
SelfCheckManager.prototype.updateScanBox = function(args) {
+ args = args || {};
if(args.select) {
selfckScanBox.domNode.select();
// render mock checkouts for debugging?
if(this.mockCheckouts) {
for(var i in [1,2,3])
- this.displayCheckout(this.mockCheckout);
+ this.displayCheckout(this.mockCheckout, 'checkout');
}
}
if(this.mockCheckouts) {
// if we're in mock-checkout mode, just insert another
// fake circ into the table and get out of here.
- this.displayCheckout(this.mockCheckout);
+ this.displayCheckout(this.mockCheckout, 'checkout');
return;
}
var method = 'open-ils.circ.checkout.full';
if(override) method += '.override';
+ console.log("Checkout out item " + barcode + " with method " + method);
+
var result = fieldmapper.standardRequest(
['open-ils.circ', 'open-ils.circ.checkout.full'],
{params: [
var stat = this.handleXactResult('checkout', barcode, result);
- console.log("Circ resulted in " + js2JSON(result));
-
- if(stat.override)
+ if(stat.override) {
this.checkout(barcode, true);
-
+ } else if(stat.renew) {
+ // TODO check org setting for auto-renewal interval
+ this.renew(barcode);
+ }
}
displayText = dojo.string.substitute(
localeStrings.CHECKOUT_SUCCESS, [item]);
- this.displayCheckout(result);
+ this.displayCheckout(result, 'checkout');
} else if(action == 'renew') {
displayText = dojo.string.substitute(
localeStrings.RENEW_SUCCESS, [item]);
- this.displayCheckout(result);
+ this.displayCheckout(result, 'renew');
}
this.updateScanBox();
} else if(result.textcode == 'OPEN_CIRCULATION_EXISTS' && action == 'checkout') {
- this.renew(item);
+ return { renew : true };
} else {
localeStrings.LOGIN_FAILED, [item]);
break;
+ case 'MAX_RENEWALS_REACHED' :
+ displayText = dojo.string.substitute(
+ localeStrings.MAX_RENEWALS, [item]);
+ break;
+
+ case 'ITEM_NOT_CATALOGED' :
+ displayText = dojo.string.substitute(
+ localeStrings.ITEM_NOT_CATALOGED, [item]);
+ break;
+
case 'already-out' :
- displayText = dojo.string.substitute(
- localeStrings.ALREADY_OUT, [item]);
+ displayText = dojo.string.substitute(
+ localeStrings.ALREADY_OUT, [item]);
+ break;
default:
console.error('Unhandled event ' + result.textcode);
}
}
+ console.log("Updating status with " + displayText);
+
dojo.byId('oils-selfck-status-div').innerHTML = displayText;
if(popup && this.orgSettings[SET_ALERT_ON_CHECKOUT_EVENT])
/**
* Renew an item
*/
-SelfCheckManager.prototype.renew = function() {
+SelfCheckManager.prototype.renew = function(barcode, override) {
+
+ var method = 'open-ils.circ.renew';
+ if(override) method += '.override';
+
+ console.log("Renewing item " + barcode + " with method " + method);
+
+ var result = fieldmapper.standardRequest(
+ ['open-ils.circ', method],
+ {params: [
+ this.authtoken, {
+ patron_id : this.patron.id(),
+ copy_barcode : barcode
+ }
+ ]}
+ );
+
+ var stat = this.handleXactResult('renew', barcode, result);
+
+ if(stat.override)
+ this.renew(barcode, true);
}
/**
* Display the result of a checkout or renewal in the items out table
*/
-SelfCheckManager.prototype.displayCheckout = function(evt) {
+SelfCheckManager.prototype.displayCheckout = function(evt, type) {
var copy = evt.payload.copy;
var record = evt.payload.record;
this.byName(row, 'title').innerHTML = record.title();
this.byName(row, 'author').innerHTML = record.author();
this.byName(row, 'remaining').innerHTML = circ.renewal_remaining();
+ openils.Util.show(this.byName(row, type));
var date = dojo.date.stamp.fromISOString(circ.due_date());
this.byName(row, 'due_date').innerHTML =