LP 1503867: Use ws_ou in open-ils.circ.copy_transit.receive.
authorJason Stephenson <jstephenson@mvlc.org>
Thu, 8 Oct 2015 13:39:34 +0000 (09:39 -0400)
committerMike Rylander <mrylander@gmail.com>
Tue, 9 Aug 2016 18:48:47 +0000 (14:48 -0400)
After putting NCIPServer into production, we discovered that a staff
user cannot receive a transit destined for their work org. unit if
the actor.usr.home_ou is not the same as their current work_ou.
This occurred because transit_receive in OpenILS::Application::
Circ::Transit uses the requestor's home_ou and not the ws_ou.

If you want to trigger this bug, write a little script to receive
transits, then login with a staff account at a location other than
their home_ou and try to receive a transit destined for the work_ou.
It will fail.

This small commit replaces home_ou in two places with ws_ou in order
to make the above work.

NOTE: This bug affects an API call not used in Evergreen except in
one test script.  It used in two ILL add-ons for Evergreen: issa and
NCIPServer.  Receiving transits by checking copies in via the staff
client, the typical workflow, is not affected by this bug or its fix.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Transit.pm

index bd687c4..2207438 100644 (file)
@@ -69,10 +69,10 @@ sub transit_receive {
     ($transit, $evt) = $U->fetch_open_transit_by_copy($copyid);
     return $evt if $evt;
 
-    if( $transit->dest != $requestor->home_ou ) {
+    if( $transit->dest != $requestor->ws_ou ) {
         $logger->activity("Fowarding transit on copy which is destined ".
             "for a different location. copy=$copyid,current ".
-            "location=".$requestor->home_ou.",destination location=".$transit->dest);
+            "location=".$requestor->ws_ou.",destination location=".$transit->dest);
 
         return OpenILS::Event->new('ROUTE_ITEM', org => $transit->dest );
     }