From de24f9853358f994ae4a4abc7454235ccc0802c2 Mon Sep 17 00:00:00 2001 From: Paul Poulain Date: Thu, 29 Dec 2011 15:49:53 +0100 Subject: [PATCH] Bug 7376: Transfer limits should be checked at check-in Test case: * UseBranchTransferLimits must be set * define your branch transfer limit. Refuse transfers from libraryA to libraryB * checkout a book owned by libraryB, from libraryB, with a librarian located at libraryB * move the librarian to libraryA ("Set Library" link top/right) * check-in the book => it's possible whatever your setup After the patch, the behaviour respect the branch transfer limit parameter: you can check-in if you accept transfers, you can't if you refuse them. (Note: IndependantBranches must be OFF, otherwise it's not possible to do the checkin whatever the branch transfer limits) Signed-off-by: Martin Renvoize --- C4/Circulation.pm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 8e1bdc49fc..ac595b9b3a 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1877,6 +1877,27 @@ sub AddReturn { return ( $doreturn, $messages, $issue, $patron_unblessed); } + # if we try a checkin that would result in a forbidden branchtransfer, refuse the return as well + # first, find branchtransferlimit value for this item + my $branchtransferlimitvalue = $itemtype; + $branchtransferlimitvalue = $item->{ccode} + if C4::Context->preference("item-level_itypes") + && C4::Context->preference("BranchTransferLimitsType") eq 'ccode'; + if ( $hbr ne $branch + && ( + C4::Context->preference("IndependentBranches") + or ( C4::Context->preference("UseBranchTransferLimits") + and not IsBranchTransferAllowed($hbr, $branch, $branchtransferlimitvalue ) ) + ) + ) { + $messages->{'Wrongbranch'} = { + Wrongbranch => $branch, + Rightbranch => $message + }; + $doreturn = 0; + return ( $doreturn, $messages, $issue, $patron_unblessed); + } + if ( $item->{'withdrawn'} ) { # book has been cancelled $messages->{'withdrawn'} = 1; $doreturn = 0 if C4::Context->preference("BlockReturnOfWithdrawnItems"); @@ -3556,7 +3577,6 @@ Code is either an itemtype or collection doe depending on the pref BranchTransfe sub IsBranchTransferAllowed { my ( $toBranch, $fromBranch, $code ) = @_; - if ( $toBranch eq $fromBranch ) { return 1; } ## Short circuit for speed. my $limitType = C4::Context->preference("BranchTransferLimitsType"); -- 2.17.1