Bug 32247: Exit holds queue builder if there are no holds on the biblio
update_queue_for_biblio currently 1 - gets the holds on a bib 2 - gets the items available to fill any holds 3 - combines these to build the queue, exiting if there are no holds or items If there are no holds at step 1, we don't need to do step 2 or 3 This patch simply deletes the queue for this biblio, then exits if there are no holds To test: prove -v t/db_dependent/Reserves.t t/db_dependent/Koha/Item.t t/db_dependent/Koha/Hold.t t/db_dependent/Koha/BackgroundJobs/BatchDeleteItem.t t/db_dependent/Koha/BackgroundJobs/BatchDeleteBiblio.t t/db_dependent/HoldsQueue.t t/db_dependent/Circulation_holdsqueue.t t/db_dependent/Biblio_holdsqueue.t t/db_dependent/Biblio.t Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
5dff3886b3
commit
7502f520a4
|
|
@ -931,8 +931,21 @@ are allowed to be passed to avoid calculating them many times inside loops.
|
|||
|
||||
sub update_queue_for_biblio {
|
||||
my ($args) = @_;
|
||||
|
||||
my $biblio_id = $args->{biblio_id};
|
||||
my $result;
|
||||
|
||||
# We need to empty the queue for this biblio unless CreateQueue has emptied the entire queue for rebuilding
|
||||
if ( $args->{delete} ) {
|
||||
my $dbh = C4::Context->dbh;
|
||||
|
||||
$dbh->do("DELETE FROM tmp_holdsqueue WHERE biblionumber=$biblio_id");
|
||||
$dbh->do("DELETE FROM hold_fill_targets WHERE biblionumber=$biblio_id");
|
||||
}
|
||||
|
||||
my $hold_requests = GetPendingHoldRequestsForBib($biblio_id);
|
||||
$result->{requests} = scalar( @{$hold_requests} );
|
||||
# No need to check anything else if there are no holds to fill
|
||||
return $result unless $result->{requests};
|
||||
|
||||
my $branches_to_use = $args->{branches_to_use} // load_branches_to_pull_from( C4::Context->preference('UseTransportCostMatrix') );
|
||||
my $transport_cost_matrix;
|
||||
|
|
@ -944,20 +957,9 @@ sub update_queue_for_biblio {
|
|||
$transport_cost_matrix = $args->{transport_cost_matrix};
|
||||
}
|
||||
|
||||
if ( $args->{delete} ) {
|
||||
my $dbh = C4::Context->dbh;
|
||||
|
||||
$dbh->do("DELETE FROM tmp_holdsqueue WHERE biblionumber=$biblio_id");
|
||||
$dbh->do("DELETE FROM hold_fill_targets WHERE biblionumber=$biblio_id");
|
||||
}
|
||||
|
||||
my $hold_requests = GetPendingHoldRequestsForBib($biblio_id);
|
||||
my $available_items = GetItemsAvailableToFillHoldRequestsForBib( $biblio_id, $branches_to_use );
|
||||
|
||||
my $result = {
|
||||
requests => scalar( @{$hold_requests} ),
|
||||
available_items => scalar( @{$available_items} ),
|
||||
};
|
||||
$result->{available_items} = scalar( @{$available_items} );
|
||||
|
||||
my $item_map = MapItemsToHoldRequests( $hold_requests, $available_items, $branches_to_use, $transport_cost_matrix );
|
||||
$result->{mapped_items} = scalar( keys %{$item_map} );
|
||||
|
|
|
|||
Loading…
Reference in New Issue