@@ -, +, @@ --- C4/Circulation.pm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) --- a/C4/Circulation.pm +++ a/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, $borrower ); + } + 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"); --