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>
($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 );
}