Bug 30155: Don't get items that can fillholds if there are no holds

This makes two changes:
1 - We no longer call get_items_that_can_fill if there are no holds
2 - The subroutine will return an empty Koha::Items object if there are no holds passed

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Nick Clemens 2022-02-22 16:54:03 +00:00 committed by Fridolin Somers
parent 4153eff659
commit c6ffb44bf1
3 changed files with 13 additions and 3 deletions

View file

@ -111,6 +111,9 @@ 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;

View file

@ -193,9 +193,11 @@ my $holds = Koha::Holds->search(
my @biblionumbers = $holds->get_column('biblionumber');
my $all_items;
if ( $holds->count ) {
foreach my $item ( $holds->get_items_that_can_fill->as_list ) {
push @{ $all_items->{ $item->biblionumber } }, $item;
}
}
# patrons count per biblio
my $patrons_count = {

View file

@ -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 {