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>
This commit is contained in:
parent
1264ece1f9
commit
e1517fc8c8
1 changed files with 6 additions and 1 deletions
|
@ -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 a new issue