From 3fd7d5974a0952ea4cf677ca83c18db46e637b5a Mon Sep 17 00:00:00 2001 From: Arthur Suzuki Date: Tue, 14 May 2019 02:30:26 +0200 Subject: [PATCH] Bug 22806: CanBookBeReserved and CanItemBeReserved must check AllowHoldsOnPatronsPossessions Test plan : 1 - set AllowHoldsOnPatronsPossessions to "Don't Allow" 2 - Checkout an item to a borrower 3 - Try to reserve an item using ILS-DI WebService -> Will work without complaining. 4 - Cancel the hold and apply patch 5 - Repeat 3 -> Should not place hold and show error "NotHoldable" Signed-off-by: Laurence Rault Signed-off-by: David Nind Signed-off-by: David Nind Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart --- C4/Reserves.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index d971324f1b..8ad4e5178f 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -318,6 +318,12 @@ See CanItemBeReserved() for possible return values. sub CanBookBeReserved{ my ($borrowernumber, $biblionumber, $pickup_branchcode, $params) = @_; + # Check that patron have not checked out this biblio (if AllowHoldsOnPatronsPossessions set) + if ( !C4::Context->preference('AllowHoldsOnPatronsPossessions') + && C4::Circulation::CheckIfIssuedToPatron( $patron->borrowernumber, $biblio->biblionumber ) ) { + return { status =>'itemAlreadyOnLoan' }; + } + my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber"); #get items linked via host records my @hostitems = get_hostitemnumbers_of($biblionumber); @@ -386,6 +392,12 @@ sub CanItemBeReserved { return { status =>'itemAlreadyOnHold' } if Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->count(); + # Check that patron have not checked out this biblio (if AllowHoldsOnPatronsPossessions set) + if ( !C4::Context->preference('AllowHoldsOnPatronsPossessions') + && C4::Circulation::CheckIfIssuedToPatron( $patron->borrowernumber, $biblio->biblionumber ) ) { + return { status =>'itemAlreadyOnLoan' }; + } + my $controlbranch = C4::Context->preference('ReservesControlBranch'); my $querycount = q{ -- 2.39.5