LP#1740537 Transit dialog showing wrong branch
authorBill Erickson <berickxx@gmail.com>
Mon, 30 Apr 2018 18:27:41 +0000 (14:27 -0400)
committerMike Rylander <mrylander@gmail.com>
Thu, 10 May 2018 20:01:02 +0000 (16:01 -0400)
Always retrieve the latest copy transit from the server when displaying
the copy transit dialog.  This resolves an issue where a just-closed
transit is used instead.

Add a filter to avoid canceled transits.

Make the transit lookup call authoritative, since the transit may have
just been created.

To test (test plan courtesy of John Amundson):

1. Sign in as Library A.
2. Check in an item owned by Library B that does not have any holds
   associated with it. This will send the item in transit to its home,
   Library B.
3. Place a hold on the item to be picked up at Library C.
4. Sign in as Library B.
5. Check in the item. The transit pop-up and printout will show that
   the item needs to be transited to Library B instead of Library C.
6. Apply the patch and repeat steps 1-5 using a different item. This
   time, the transit pop-up will show that the item needs
   to be transited to Library C.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/web/js/ui/default/staff/circ/services/circ.js

index ec97c30..2807464 100644 (file)
@@ -938,11 +938,12 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
     service.find_copy_transit = function(evt, params, options) {
         if (angular.isArray(evt)) evt = evt[0];
 
-        if (evt && evt.payload && evt.payload.transit)
-            return $q.when(evt.payload.transit);
+        // NOTE: evt.payload.transit may exist, but it's not necessarily
+        // the transit we want, since a transit close + open in the API
+        // returns the closed transit.
 
          return egCore.pcrud.search('atc',
-            {   dest_recv_time : null},
+            {   dest_recv_time : null, cancel_time : null},
             {   flesh : 1, 
                 flesh_fields : {atc : ['target_copy']},
                 join : {
@@ -955,7 +956,7 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
                 },
                 limit : 1,
                 order_by : {atc : 'source_send_time desc'}, 
-            }
+            }, {authoritative : true}
         ).then(function(transit) {
             transit.source(egCore.org.get(transit.source()));
             transit.dest(egCore.org.get(transit.dest()));