From c52681f30ea4a6056831eca07d8fda6e32c5b10f Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 21 Sep 2016 02:15:02 +0000 Subject: [PATCH] Bug 17327 - Item level holds no longer enforced Reported by Katrin: Example: - on shelf holds allowed - holds allowed 5 - holds on same record allowed 5 - FORCE item level holds On a record with only one item, you can only place a record level hold in OPAC now - which is against your circulation conditions. Another example: - record with 2 items - circulation rules as above, 1 hold allowed on the record - Item level holds: forced I can only place record level holds in OPAC and staff. At the moment, I am not able to place item level holds in any circumstances in my installation. Test Plan: 1) Apply the unit test patch 2) prove t/db_dependent/Reserves/MultiplePerRecord.t should fail 3) Apply the second patch 4) prove t/db_dependent/Reserves/MultiplePerRecord.t should pass 5) Attempt to replicate one of the examples above, you should be unable to Signed-off-by: Benjamin Rokseth --- Koha/Holds.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Koha/Holds.pm b/Koha/Holds.pm index bde63c9..6dc0c9e 100644 --- a/Koha/Holds.pm +++ b/Koha/Holds.pm @@ -62,7 +62,7 @@ This method will return 'item' if the patron has at least one item level hold. It will return 'record' if the patron has holds but none are item level, Finally, if the patron has no holds, it will return -undef which indicateds the patron may select either +undef which indicates the patron may select either record or item level holds, barring any other rules that would prevent one or the other. @@ -71,9 +71,13 @@ that would prevent one or the other. sub forced_hold_level { my ($self) = @_; - return $self->search( { itemnumber => { '!=' => undef } } )->count() - ? 'item' - : 'record'; + my $item_level_count = $self->search( { itemnumber => { '!=' => undef } } )->count(); + return 'item' if $item_level_count > 0; + + my $record_level_count = $self->search( { itemnumber => undef } )->count(); + return 'record' if $record_level_count > 0; + + return undef; } =head3 type -- 2.1.4