Bug 37587: Fix priority of multiple item-level holds
The rank parameter is passed per biblio record, not per item. When
placing multiple item-level holds on one bib record, only $rank[0] is
defined.
To test:
1. System preference and circulation rule setup
i. Set the system preference DisplayMultiItemHolds to Enable
ii. Edit the default circulation rule to allow 5 holds per record
2. Find or create a bib with 4 or more items
3. Place several bib-level holds
4. Place 4 or more item-level holds at once on that same record
i. Search for a patron to place the holds for (not one of the
patrons you used in step 3)
ii. Select "Hold a specific item"
iii. Check the checkboxes for 4 or more items
iv. Click Place hold
--> Note that one of the new item-level holds is at the end of the list
as it should be, but the rest are out of order
5. Cancel the item-level holds from step 4
6. Apply patch and restart_all
7. Repeat step 4
--> All the new item-level holds are now at the end of the list
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit e1517fc8c8)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
adb4e1d9d5
commit
752118cfd7
|
|
@ -73,6 +73,9 @@ if ( $op eq 'cud-placerequest' && $patron ) {
|
|||
|
||||
my $can_override = C4::Context->preference('AllowHoldPolicyOverride');
|
||||
if ( @checkitems ) {
|
||||
|
||||
my $hold_priority = $rank[0];
|
||||
|
||||
for ( my $i = 0 ; $i < scalar @checkitems ; $i++ ) {
|
||||
my $checkitem = $checkitems[$i];
|
||||
if ( my $item_pickup_location = $input->param("item_pickup_$checkitem") ) {
|
||||
|
|
@ -93,7 +96,7 @@ if ( $op eq 'cud-placerequest' && $patron ) {
|
|||
branchcode => $item_pickup_location,
|
||||
borrowernumber => $patron->borrowernumber,
|
||||
biblionumber => $biblionumber,
|
||||
priority => $rank[$i],
|
||||
priority => $hold_priority,
|
||||
reservation_date => $startdate,
|
||||
expiration_date => $expirationdate,
|
||||
notes => $notes,
|
||||
|
|
@ -105,6 +108,8 @@ if ( $op eq 'cud-placerequest' && $patron ) {
|
|||
}
|
||||
);
|
||||
|
||||
$hold_priority++;
|
||||
|
||||
} else {
|
||||
$failed_holds{$can_item_be_reserved} = 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue