|
Lines 577-605
sub MapItemsToHoldRequests {
Link Here
|
| 577 |
$pull_branches = [keys %items_by_branch]; |
577 |
$pull_branches = [keys %items_by_branch]; |
| 578 |
$holdingbranch = least_cost_branch( $pickup_branch, $pull_branches, $transport_cost_matrix ); |
578 |
$holdingbranch = least_cost_branch( $pickup_branch, $pull_branches, $transport_cost_matrix ); |
| 579 |
if ( $holdingbranch ) { |
579 |
if ( $holdingbranch ) { |
| 580 |
|
580 |
$itemnumber = get_least_cost_item( $priority_branch, $holdingbranch, \%items_by_branch, \%items_by_itemnumber, $libraries, $request ); |
| 581 |
my $holding_branch_items = $items_by_branch{$holdingbranch}; |
|
|
| 582 |
foreach my $item (@$holding_branch_items) { |
| 583 |
next if $request->{borrowerbranch} ne $item->{$priority_branch}; |
| 584 |
next unless $items_by_itemnumber{ $item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } ); |
| 585 |
|
| 586 |
# Don't fill item level holds that contravene the hold pickup policy at this time |
| 587 |
next unless _checkHoldPolicy($item, $request); |
| 588 |
|
| 589 |
# If hold itemtype is set, item's itemtype must match |
| 590 |
next unless ( !$request->{itemtype} |
| 591 |
|| $item->{itype} eq $request->{itemtype} ); |
| 592 |
|
| 593 |
# If hold item_group is set, item's item_group must match |
| 594 |
next unless ( |
| 595 |
!$request->{item_group_id} |
| 596 |
|| ( $item->{_object}->item_group |
| 597 |
&& $item->{_object}->item_group->id eq $request->{item_group_id} ) |
| 598 |
); |
| 599 |
|
| 600 |
$itemnumber = $item->{itemnumber}; |
| 601 |
last; |
| 602 |
} |
| 603 |
} |
581 |
} |
| 604 |
else { |
582 |
else { |
| 605 |
next; |
583 |
next; |
|
Lines 959-962
sub update_queue_for_biblio {
Link Here
|
| 959 |
return $result; |
937 |
return $result; |
| 960 |
} |
938 |
} |
| 961 |
|
939 |
|
|
|
940 |
sub get_least_cost_item { |
| 941 |
my ( $priority_branch, $holdingbranch, $items_by_branch, $items_by_itemnumber, $libraries, $request ) = @_; |
| 942 |
my $holding_branch_items = $items_by_branch->{$holdingbranch}; |
| 943 |
foreach my $item (@$holding_branch_items) { |
| 944 |
next if $request->{borrowerbranch} ne $item->{$priority_branch}; |
| 945 |
next |
| 946 |
unless $items_by_itemnumber->{ $item->{itemnumber} }->{_object} |
| 947 |
->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } ); |
| 948 |
|
| 949 |
# Don't fill item level holds that contravene the hold pickup policy at this time |
| 950 |
next unless _checkHoldPolicy( $item, $request ); |
| 951 |
|
| 952 |
# If hold itemtype is set, item's itemtype must match |
| 953 |
next unless ( !$request->{itemtype} |
| 954 |
|| $item->{itype} eq $request->{itemtype} ); |
| 955 |
|
| 956 |
# If hold item_group is set, item's item_group must match |
| 957 |
next |
| 958 |
unless ( |
| 959 |
!$request->{item_group_id} |
| 960 |
|| ( $item->{_object}->item_group |
| 961 |
&& $item->{_object}->item_group->id eq $request->{item_group_id} ) |
| 962 |
); |
| 963 |
|
| 964 |
return $item->{itemnumber}; |
| 965 |
} |
| 966 |
} |
| 967 |
|
| 962 |
1; |
968 |
1; |
| 963 |
- |
|
|