@@ -, +, @@ --- C4/Reserves.pm | 6 +++--- t/db_dependent/Holds.t | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -275,6 +275,7 @@ sub CanBookBeReserved{ foreach my $item (@$items) { $canReserve = CanItemBeReserved( $borrowernumber, $item ); return 'OK' if $canReserve eq 'OK'; + return $canReserve if $canReserve eq 'debarred'; # no need to continue } return $canReserve; } @@ -307,11 +308,10 @@ sub CanItemBeReserved { my $item = GetItem($itemnumber); my $biblio = Koha::Biblios->find( $item->{biblionumber} ); my $patron = Koha::Patrons->find( $borrowernumber ); - my $borrower = $patron->unblessed; - - if ($patron->is_debarred) { + if( !$patron || $patron->is_debarred ) { return 'debarred'; } + my $borrower = $patron->unblessed; # If an item is damaged and we don't allow holds on damaged items, we can stop right here return 'damaged' --- a/t/db_dependent/Holds.t +++ a/t/db_dependent/Holds.t @@ -7,7 +7,7 @@ use t::lib::TestBuilder; use C4::Context; -use Test::More tests => 56; +use Test::More tests => 57; use MARC::Record; use C4::Biblio; use C4::Items; @@ -418,8 +418,9 @@ my $debarred_borrowernumber = AddMember( branchcode => $branch_1, debarred => '9999-12-31', ); -is(CanItemBeReserved($debarred_borrowernumber, $itemnumber), - 'debarred', 'Debarred patron cannot reserve'); +is( CanBookBeReserved($debarred_borrowernumber, $bibnum), 'debarred', 'CanBookBeReserved returns debarred on debarred patron' ); +is( CanItemBeReserved($debarred_borrowernumber, $itemnumber), + 'debarred', 'CanItemBeReserved returns debarred for debarred patron' ); # Helper method to set up a Biblio. --