@@ -, +, @@ holds --- Koha/Holds.pm | 2 ++ circ/pendingreserves.pl | 6 ++++-- t/db_dependent/Koha/Holds.t | 7 ++++++- 3 files changed, 12 insertions(+), 3 deletions(-) --- a/Koha/Holds.pm +++ a/Koha/Holds.pm @@ -111,6 +111,8 @@ Items that are not: sub get_items_that_can_fill { my ( $self ) = @_; + return Koha::Items->new->empty() unless $self->count() > 0; + my @itemnumbers = $self->search({ 'me.itemnumber' => { '!=' => undef } })->get_column('itemnumber'); my @biblionumbers = $self->search({ 'me.itemnumber' => undef })->get_column('biblionumber'); my @bibs_or_items; --- a/circ/pendingreserves.pl +++ a/circ/pendingreserves.pl @@ -193,8 +193,10 @@ my $holds = Koha::Holds->search( my @biblionumbers = $holds->get_column('biblionumber'); my $all_items; -foreach my $item ( $holds->get_items_that_can_fill->as_list ) { - push @{$all_items->{$item->biblionumber}}, $item; +if( $holds->count ){ + foreach my $item ( $holds->get_items_that_can_fill->as_list ) { + push @{$all_items->{$item->biblionumber}}, $item; + } } # patrons count per biblio --- a/t/db_dependent/Koha/Holds.t +++ a/t/db_dependent/Koha/Holds.t @@ -411,7 +411,7 @@ subtest 'Desks' => sub { }; subtest 'get_items_that_can_fill' => sub { - plan tests => 3; + plan tests => 5; my $biblio = $builder->build_sample_biblio; my $itype_1 = $builder->build_object({ class => 'Koha::ItemTypes' }); # For 1, 2, 3, 4 @@ -503,6 +503,11 @@ subtest 'get_items_that_can_fill' => sub { is_deeply( [ map { $_->itemnumber } $items->as_list ], [ $item_2->itemnumber ], 'Only item 2 is available for filling the hold' ); + my $no_holds = Koha::Holds->new->empty(); + my $no_items = $no_holds->get_items_that_can_fill(); + is( ref $no_items, "Koha::Items", "Routine returns a Koha::Items object"); + is( $no_items->count, 0, "Object is empty when called on no holds"); + }; subtest 'set_waiting+patron_expiration_date' => sub { --