The call to this routine with param itemtype is self contained code that in fact checks CanItemtypeBeReserved Calling it as CanBookBeReturned passes ReservesControlBranch as pickup_location - it's a bad smell