From 7e90965ca6ba1d0cce1e122a3a669121101d7d06 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 5 Feb 2013 15:50:45 -0500 Subject: [PATCH] selfcheck staff mode : generic transit slips Signed-off-by: Bill Erickson --- Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js | 5 +- .../web/js/ui/default/circ/selfcheck/selfcheck.js | 71 +++++++++++++++++++--- 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js b/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js index 7202e300f5..5f30ae7165 100644 --- a/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js +++ b/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js @@ -46,6 +46,9 @@ "CHECKIN_NO_CHANGE" : "No change on checkin for ${0}", "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" + "CHECKIN_PROMPT" : "Please an item barcode to check in", + "TRANSIT_RECEIPT" : "This item needs to be routed to ${0}:
${1}
"+ + "${2}

Barcode: ${3}
Title: ${4}
Author: ${5}"+ + "

Slip Date: ${6}
Printed by ${7} at ${8}" } diff --git a/Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js b/Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js index 5d6f7a03a7..f5d0a905b1 100644 --- a/Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js +++ b/Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js @@ -61,8 +61,12 @@ function SelfCheckManager() { // true if we are exposing staff-only features (e.g. checkin) this.staffMode = false; + // maps copy status IDs to status objects this.copyStatusMap = {}; + // maps org unit IDs to their mailing addresses + this.orgUnitAddrMap = {}; + // Construct a mock checkout for debugging purposes if(this.mockCheckouts = this.cgi.param('mock-circ')) { @@ -1191,6 +1195,58 @@ SelfCheckManager.prototype.displayCheckin = function(row, result, outcomeText) { } } +SelfCheckManager.prototype.getOrgMailingAddress = function(orgId, callback) { + if (this.orgUnitAddrMap[orgId]) { + callback(this.orgUnitAddrMap[orgId]); + return; + } + + var self = this; + var pcrud = new openils.PermaCrud(); + pcrud.retrieve('aou', orgId, { + flesh : 1, + flesh_fields : {aou : ['mailing_address', 'billing_address']}, + async : true, + oncomplete : function(r) { + var org = openils.Util.readResponse(r); + var addr = org.mailing_address() || org.billing_address(); + self.orgUnitAddrMap[orgId] = addr; + callback(self.orgUnitAddrMap[orgId]); + } + }); +} + +SelfCheckManager.prototype.printTransitSlip = function(item, result, dest) { + var self = this; + + this.getOrgMailingAddress(dest.id(), function(addr) { + 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() + ]), + item, + result.payload.record.title(), + result.payload.record.author(), + new Date().toString(), + self.staff.usrname(), + fieldmapper.aou.findOrgUnit(self.staff.ws_ou()).shortname() + ] + ), 1 + ); + }); +} + + + + SelfCheckManager.prototype.handleCheckinResult = function(row, item, result) { var displayText = ''; var popup = false; @@ -1218,15 +1274,14 @@ SelfCheckManager.prototype.handleCheckinResult = function(row, item, result) { } else if (tc == 'ROUTE_ITEM') { - var outcomeText; - if (result.source.org) { - var sn = fieldmapper.aou.findOrgUnit(result.source.org).shortname(); - displayText = dojo.string.substitute( - localeStrings.CHECKIN_ROUTE_ITEM, [item, sn]); - outcomeText = tc + ' => ' + sn; - } + var dest = fieldmapper.aou.findOrgUnit(result.source.org); + + displayText = dojo.string.substitute( + localeStrings.CHECKIN_ROUTE_ITEM, [item, dest.shortname()]); + + this.displayCheckin(row, result, tc + ' => ' + dest.shortname()); - this.displayCheckin(row, result, outcomeText); + this.printTransitSlip(item, result, dest); } else if (tc == 'ASSET_COPY_NOT_FOUND') { -- 2.11.0