From d2b92eeda3df380bf2b0998635cb37a30bf706bc Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 23 Jun 2020 10:33:14 -0300 Subject: [PATCH] Bug 25662: Make the route for holds restpect maxreserves This patch fixes the behaviour for the POST /holds route. It assumed maxreserves was checked in CanItemBeReserved which is not the case. Tests are added to check for this behaviour. To test: 1. Apply the regression tests 2. Run: $ kshell k$ prove t/db_dependent/api/v1/holds.t => FAIL: Tests fail! 3. Apply this patch 4. Repeat 2 => SUCCESS: Tests pass! 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi --- Koha/REST/V1/Holds.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Koha/REST/V1/Holds.pm b/Koha/REST/V1/Holds.pm index 87d7c053364..09b7b7ed15c 100644 --- a/Koha/REST/V1/Holds.pm +++ b/Koha/REST/V1/Holds.pm @@ -127,11 +127,23 @@ sub add { ); } + my $patron = Koha::Patrons->find( $patron_id ); + unless ($patron) { + return $c->render( + status => 400, + openapi => { error => 'patron_id not found' } + ); + } + my $can_place_hold = $item_id ? C4::Reserves::CanItemBeReserved( $patron_id, $item_id ) : C4::Reserves::CanBookBeReserved( $patron_id, $biblio_id ); + if ( $patron->holds->count + 1 > C4::Context->preference('maxreserves') ) { + $can_place_hold->{status} = 'tooManyReserves'; + } + my $can_override = C4::Context->preference('AllowHoldPolicyOverride'); unless ($can_override || $can_place_hold->{status} eq 'OK' ) { -- 2.27.0