web staff: route to hold shelf dialog
authorBill Erickson <berick@esilibrary.com>
Mon, 2 Dec 2013 16:45:29 +0000 (11:45 -0500)
committerBill Erickson <berick@esilibrary.com>
Mon, 2 Dec 2013 16:45:29 +0000 (11:45 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/staff/circ/checkin/t_hold_shelf_dialog.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/checkin/app.js

diff --git a/Open-ILS/src/templates/staff/circ/checkin/t_hold_shelf_dialog.tt2 b/Open-ILS/src/templates/staff/circ/checkin/t_hold_shelf_dialog.tt2
new file mode 100644 (file)
index 0000000..6a5363f
--- /dev/null
@@ -0,0 +1,64 @@
+<div class="modal-dialog">
+  <div class="modal-content">
+    <div class="modal-header">
+      <button type="button" class="close" 
+        ng-click="ok()" aria-hidden="true">&times;</button>
+      <h4 class="modal-title">[% l('Hold Slip') %]</h4>
+    </div>
+    <div class="modal-body">
+      <!-- TODO: pub / priv shelf -->
+      <div ng-switch on="evt.payload.hold.behind_desk()">
+        <div ng-switch-when="t">
+          [% l('This item should be routed to the Private Holds Shelf') %]
+        </div>
+        <div ng-switch-when="f">
+          [% l('This item should be routed to the Public Holds Shelf') %]
+        </div>
+      </div>
+      <br/>
+      <div>
+        <span>[% l('Item Barcode:') %]</span>
+        <span>{{evt.payload.copy.barcode()}}</span>
+      </div>
+      <div>
+        <span>[% l('Title:') %]</span>
+        <span>{{evt.payload.record.title()}}</span>
+      </div>
+      <div>
+        <span>[% l('Author:') %]</span>
+        <span>{{evt.payload.record.author()}}</span>
+      </div>
+      <br/>
+      <div>
+      
+      <div ng-show="holdUser.alias()">
+        [% l('Hold for patron {{holdUser.alias()}}') %]
+      </div>
+      <div ng-hide="holdUser.alias()">
+        [% |l %]
+        Hold for patron {{holdUser.family_name()}}, 
+        {{holdUser.first_given_name()}} {{holdUser.second_given_name()}}
+        [% END %]
+      </div>
+      <div>
+        <span>[% l('Patron Barcode:') %]</span>
+        <span>{{holdUser.card().barcode()}}</span>
+      </div>
+      <br/>
+      <div>
+        <span>[% l('Request Date:') %]</span>
+        <span>{{evt.payload.hold.request_time() | date:'shortDate'}}</span>
+      </div>
+      <div>
+        <span>[% l('Slip Date:') %]</span>
+        <span>{{now | date:'shortDate'}}</span>
+      </div>
+    </div>
+    <div class="modal-footer">
+      <input type="button" class="btn btn-primary" disabled="disabled"
+        ng-click="print()" value="[% l('Print') %]"/>
+      <input type="submit" class="btn btn-warning"
+        ng-click="ok()" value="[% l('Do Not Print') %]"/>
+    </div>
+  </div>
+</div>
index 587180e..6ece70b 100644 (file)
@@ -92,11 +92,28 @@ function($scope,  $q,  $modal,  egStartup,  checkinSvc,  egNet,  egAuth,  orgAdd
     }
 
     function handleCheckinResponse(evt, args, override) {
+        var copy = evt.payload.copy;
+        var hold = evt.payload.hold;
+        var transit = evt.payload.transit;
+
         switch (evt.textcode) {
             case 'SUCCESS':
+            case 'NO_CHANGE':
+                checkinSvc.checkins.items.push(evt);
+                if (copy.status() == 8) { // on holds shelf 
+                    if (hold && 
+                        hold.pickup_lib() == egAuth.user().ws_ou()) {
+                        // item should be on our holds shelf.  
+                        // display the holds slip
+                        openRouteDialog(
+                            './circ/checkin/t_hold_shelf_dialog', evt, args);
+                    }
+                }
+                break;
+                
             case 'ROUTE_ITEM':
                 checkinSvc.checkins.items.push(evt);
-                openRouteDialog(evt, args);
+                openRouteDialog('./circ/checkin/t_transit_dialog', evt, args);
                 break;
             case 'ASSET_COPY_NOT_FOUND':
                 openAlertDialog('uncat_alert_dialog', evt, args);
@@ -150,13 +167,13 @@ function($scope,  $q,  $modal,  egStartup,  checkinSvc,  egNet,  egAuth,  orgAdd
     }
 
 
-    function openRouteDialog(evt, args) {
+    function openRouteDialog(tmpl, evt, args) {
         // avoid unintended checkins while the dialog is open
         $scope.blurMe = true;
         $modal.open({
-            templateUrl: './circ/checkin/t_transit_dialog',
-            controller: 
-                ['$scope', '$modalInstance', 'destAddr', 'holdUser',
+            templateUrl: tmpl,
+            controller: [
+                '$scope', '$modalInstance', 'destAddr', 'holdUser',
                 function($scope, $modalInstance, destAddr, holdUser) {
                 $scope.destAddr = destAddr;
                 $scope.holdUser = holdUser;
@@ -167,6 +184,7 @@ function($scope,  $q,  $modal,  egStartup,  checkinSvc,  egNet,  egAuth,  orgAdd
             }],
             resolve : {
                 destAddr : function() {
+                    if (!evt.org) return $q.when();
                     // TODO: response payload should flesh dest addr
                     return orgAddrSvc.getAddr(evt.org, 'holds_address');
                 },