Skip to content

Commit 5832521

Browse files
lisettebwsricofreak
authored andcommitted
Bug 40620: Holds Queue will assign to the lowest item number if multiple branches have the same transport cost
To Test: Before applying: 1. Turn on the UseTransportCostMatrix system preference 2. Create holds on a record with multiple items. (I used Lanark in KTD) 3. Set the item location to all be the same (I used MID) 4. Set the holds to pickup at Centerville, Fairfield, and Pleasant Valley 5. Set the transport cost matrix to Centerville\fairfield 1 Centerville\Midway 1 Fairfield\Centerville 1 Fairfield\Midway 1 Midway\Centerville 1 Midway\Fairfield 1 Midway\Pleasant Valley 4 6. Build the holds queue (either turn on realtime hold queue and then edit the bib to update or run the cron on the command line) 7. Run a report: select * from hold_fill_targets where biblionumber=9 order by borrowernumber; 8. Rebuild the hold queue 9. Run the report again, the results should be the same. 10. Apply the patch 11. Run the hold queue again 12. Observe the results should now be different. 13. Try a few more times and ensure the numbers are changing, create some more items at midway and try again to see more variety in numbers. Signed-off-by: David Flater <flaterdavid@gmail.com> Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
1 parent 58dc43e commit 5832521

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

C4/HoldsQueue.pm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,9 @@ sub _allocateWithTransportCostMatrix {
442442

443443
my @allocated;
444444

445-
my @remaining_items = grep { !exists $allocated_items->{ $_->{itemnumber} } && $_->{holdallowed} ne 'not_allowed'; }
446-
@$available_items;
445+
my @remaining_items =
446+
shuffle( grep { !exists $allocated_items->{ $_->{itemnumber} } && $_->{holdallowed} ne 'not_allowed'; }
447+
@$available_items );
447448

448449
my @requests = grep { !defined $_->{itemnumber} && !defined $_->{allocated} } @$hold_requests;
449450
my @remaining = ();

0 commit comments

Comments
 (0)