From 355fd88f5c6388f3d4547c83b66821cddfc9a1de Mon Sep 17 00:00:00 2001 From: Matthias Meusburger Date: Wed, 17 Mar 2021 14:14:25 +0100 Subject: [PATCH] Bug 30118: Make holds_block_checkin in SIP behave like in Koha interface. In koha interface, a warning is displayed when an item on hold is returned only if the return is for this specific item. This patch does the same in SIP: the return is blocked when holds_block_checkin is enabled and there is a hold on a specific item and this is the very item being returned. Test plan: The following behavior is expected in SIP: - An item is returned, and there is a reservation on record-level: block - An item is returned, and there is a reservation on this very item: block - An item is returned, and there is a reservation on another item: allow Signed-off-by: Sonia Signed-off-by: Kyle M Hall Signed-off-by: Fridolin Somers Signed-off-by: Kyle M Hall (cherry picked from commit 41abb100c3d3e5cf97473abf06337e49f9b44710) Signed-off-by: Andrew Fuerste-Henry --- C4/SIP/ILS/Transaction/Checkin.pm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/C4/SIP/ILS/Transaction/Checkin.pm b/C4/SIP/ILS/Transaction/Checkin.pm index 4792f73574..bd1cee8678 100644 --- a/C4/SIP/ILS/Transaction/Checkin.pm +++ b/C4/SIP/ILS/Transaction/Checkin.pm @@ -14,7 +14,7 @@ use C4::SIP::ILS::Transaction; use C4::Circulation; use C4::Debug; use C4::Items qw( ModItemTransfer ); -use C4::Reserves qw( ModReserveAffect ); +use C4::Reserves qw( ModReserveAffect CheckReserves ); use Koha::DateUtils qw( dt_from_string ); use Koha::Items; @@ -88,7 +88,14 @@ sub do_checkin { $messages->{additional_materials} = 1; } - my $checkin_blocked_by_holds = $holds_block_checkin && $item->biblio->holds->count; + my $reserved; + my $lookahead = C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds + my ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->itemnumber, undef, $lookahead ) unless ( $item->withdrawn ); + if ( $resfound eq "Reserved") { + $reserved = 1; + } + + my $checkin_blocked_by_holds = $holds_block_checkin && $reserved; $debug and warn "do_checkin() calling AddReturn($barcode, $branch)"; ( $return, $messages, $issue, $borrower ) = -- 2.39.5