If a branch's Hold Policy for an item (or default) is configured to only allow holds for patrons belonging to that branch (value = 1), and the CircControl system preference is set to PatronHomeLibrary, the Holds Policy breaks. The holds policy from the patron's home library is used, which, unless it's set to deny ALL holds, will let them place a hold on any item at any library, regardless of that libraries Hold Policy. The root of the problem is using _GetCircControlBranch to generate the $branchcode used for determining the Hold Policy. Unfortunately, using $item->{homebranch} universally would not always work for libraries who want the item's current holding branch to set the policies.
see : http://git.biblibre.com/?p=koha;a=blob;f=C4/Reserves.pm;h=06a276b47351b0f0523ce7d82ebd7a36bd4dee91;hb=2cd4c147a4f30922628e59e20a2075c874861bc9 iirc, we built ReservesControlBranch because Libraries may like to use a different library for control. Moreover, in that context, PickupLibrary would be a nonesense to control the policy. Hope that helps.
The nearly-deprecated HomeorHoldingBranch may be a good candidate for this kind of control. Or, perhaps a new page needs to be built to allow libraries to configure which branche are used for policy decisions: Checkout/Renewal: HomeBranch, HoldingBranch, PatronBranch Returns: HomeBranch, HoldingBranch, CurrentlyLoggedInBranch (to better handle transfers. HomeBranch would just tell the system it should go home, holding branch would indicate it should go to the branch it was checked out from, and CurrentlyLoggedInBranch, well...) Holds: HomeBranch, HoldingBranch, CurrentlyLoggedInBranch(?) Overdues/Fines: HomeBranch, HoldingBranch, PatronBranch
Still valid for current master?
Is this fixed by the existing ReservesControlBranch maybe?
(In reply to Katrin Fischer from comment #4) > Is this fixed by the existing ReservesControlBranch maybe? I believe this to be the case.