From 4f986f34e211d16330d38fa393250b1bbf55597e Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Fri, 2 Nov 2012 11:40:52 -0400 Subject: [PATCH] Bug 8975 - search results should say on order in staff client In order to allow holds on items with notforloan = -1, processing of "unavailable" items in Search.pm was altered to exclude items with notforloan < 0. (See Bug 2341: items marked 'on order' not reserveable from search results). Doing so meant that such items were excluded from the list, in staff client search results, of items which are unavailable. This patch changes the logic of that processing so that items with notforloan < 0 are considered unavailable, but can still be placed on hold. To test, edit a record with a single item and view that record in search results. When the item is is on order (notforloan -1) it should say so. The holds link should be INactive only if: - item is withdrawn AND/OR - item is lost AND/OR - item is damaged (and AllowHoldsOnDamagedItems is off) AND/OR - item is not for loan, with notforloan > 0 Signed-off-by: Nicole C. Engard All tests pass (note that a reindex is required if changing item statuses - which is why my first tests failed). Passed-QA-by: Jonathan Druart Signed-off-by: Jared Camins-Esakov --- C4/Search.pm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/C4/Search.pm b/C4/Search.pm index f95cb8301b..1e850d9501 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -1849,13 +1849,23 @@ sub searchResults { $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan}; # can place hold on item ? - if ((!$item->{damaged} || C4::Context->preference('AllowHoldsOnDamagedItems')) - && !$item->{itemlost} - && !$item->{withdrawn} - ) { - $can_place_holds = 1; + if ( !$item->{itemlost} ) { + if ( !$item->{wthdrawn} ){ + if ( $item->{damaged} ){ + if ( C4::Context->preference('AllowHoldsOnDamagedItems') ){ + # can place a hold on a damaged item if AllowHoldsOnDamagedItems is true + if ( ( !$item->{notforloan} || $item->{notforloan} < 0 ) ){ + # item is either for loan or has notforloan < 0 + $can_place_holds = 1; + } + } + } elsif ( $item->{notforloan} < 0 ) { + # item is not damaged and notforloan is < 0 + $can_place_holds = 1; + } + } } - + $other_count++; my $key = $prefix . $item->{status}; -- 2.39.5