selfcheck staff mode : generic transit slips
authorBill Erickson <berick@esilibrary.com>
Tue, 5 Feb 2013 20:50:45 +0000 (15:50 -0500)
committerBill Erickson <berick@esilibrary.com>
Tue, 5 Feb 2013 20:50:45 +0000 (15:50 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js
Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js

index 7202e30..5f30ae7 100644 (file)
@@ -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}:<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}"
 }
 
index 5d6f7a0..f5d0a90 100644 (file)
@@ -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') {