View | Details | Raw Unified | Return to bug 33794
Collapse All | Expand All

(-)a/C4/HoldsQueue.pm (-24 / +29 lines)
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
- 

Return to bug 33794