"CHECKIN_ROUTE_ITEM" : "Item ${0} should be routed to ${1}",
"CHECKOUT_PROMPT" : "Please an item barcode to check out",
"CHECKIN_PROMPT" : "Please an item barcode to check in",
- "TRANSIT_RECEIPT" : "This item needs to be routed to ${0}:<br/>${1}<br/>"+
- "${2}<br/><br/>Barcode: ${3}<br/>Title: ${4}<br/>Author: ${5}"+
- "<br/><br/>Slip Date: ${6}<br/>Printed by ${7} at ${8}"
+ "HOLD_SHELF" : "Hold Shelf",
+ "ROUTE_MSG" : "This item needs to be routed to ${0}:<br/>",
+ "ORG_ADDRESS" : "${0}<br/>${1}<br/>", // name, address
+ "TRANSIT_SLIP" : "${0}${1}" + // shortname, address
+ "<br/>Barcode: ${2}<br/>Title: ${3}<br/>Author: ${4}"+
+ "<br/>${5}<br/>Slip Date: ${6}<br/>Printed by ${7} at ${8}",
+ "HOLD_SLIP" : "<br/>Hold for patron ${0}<br/>Barcode: ${1}<br/>" +
+ "Request Date: ${2}<br/>"
}
});
}
-SelfCheckManager.prototype.printTransitSlip = function(item, result, dest) {
+SelfCheckManager.prototype.getUser = function(userId, callback) {
+ if (!userId || typeof userId == 'object')
+ callback(userId);
+
+ var self = this;
+ var pcrud = new openils.PermaCrud();
+ pcrud.retrieve('au', userId, {
+ flesh : 1,
+ flesh_fields : {au : ['card']},
+ async : true,
+ oncomplete : function(r) {
+ callback(openils.Util.readResponse(r));
+ }
+ });
+}
+
+
+// hold transit slip
+SelfCheckManager.prototype.printHoldTransitSlip = function(item, result, dest) {
+ var self = this;
+ var payload = result.payload;
+ var transit = payload.transit;
+ var hold = payload.hold;
+
+ // in some cases, payload.patron is null even when there is a hold
+ this.getUser(hold.usr(), function(patron) {
+
+ var holdMsg = dojo.string.substitute(
+ localeStrings.HOLD_SLIP, [
+ // checkin could be for a different user than this.patron
+ openils.User.formalName(payload.patron),
+ patron.card().barcode(),
+ openils.Util.timeStamp(hold.request_time())
+ ]
+ );
+
+ // now we have hold recipient info,
+ // continue with regular slip generation
+ self.printTransitSlip(item, result, dest, holdMsg);
+ });
+}
+
+// if this is a hold transit, holdMsg should contain the hold info
+SelfCheckManager.prototype.printTransitSlip =
+ function(item, result, dest, holdMsg) {
+
var self = this;
+ var payload = result.payload;
+ var transit = payload.transit;
+ var hold = payload.hold;
+ holdMsg = holdMsg || '';
+
+ var routeMsg = dojo.string.substitute(
+ localeStrings.ROUTE_MSG, [dest.shortname()]);
+ // retrieve the address, then finish rendering the slip
this.getOrgMailingAddress(dest.id(), function(addr) {
+
+ var destAddr = dojo.string.substitute(
+ localeStrings.ORG_ADDRESS, [
+ dest.name(),
+ dojo.string.substitute(localeStrings.ADDRESS, [
+ addr.street1(),
+ addr.street2() || '',
+ addr.city(),
+ addr.state(),
+ addr.post_code()
+ ])
+ ]
+ );
+
self.printData(
dojo.string.substitute(
- localeStrings.TRANSIT_RECEIPT, [
- dest.shortname(),
- dest.name(),
- dojo.string.substitute(localeStrings.ADDRESS, [
- addr.street1(),
- addr.street2() || '',
- addr.city(),
- addr.state(),
- addr.post_code()
- ]),
+ localeStrings.TRANSIT_SLIP, [
+ routeMsg,
+ destAddr,
item,
result.payload.record.title(),
result.payload.record.author(),
- new Date().toString(),
+ holdMsg,
+ dojo.date.locale.format(new Date()),
self.staff.usrname(),
fieldmapper.aou.findOrgUnit(self.staff.ws_ou()).shortname()
]
this.displayCheckin(row, result, tc + ' => ' + dest.shortname());
- this.printTransitSlip(item, result, dest);
+ if (result.payload.hold) {
+ this.printHoldTransitSlip(item, result, dest);
+ } else {
+ this.printTransitSlip(item, result, dest);
+ }
} else if (tc == 'ASSET_COPY_NOT_FOUND') {