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

(-)a/C4/HoldsQueue.pm (-30 / +19 lines)
Lines 547-587 sub MapItemsToHoldRequests { Link Here
547
        # HoldsQueuePrioritizeBranch check
547
        # HoldsQueuePrioritizeBranch check
548
        # ********************************
548
        # ********************************
549
        my $pickup_branch = $request->{branchcode} || $request->{borrowerbranch};
549
        my $pickup_branch = $request->{branchcode} || $request->{borrowerbranch};
550
        my ($itemnumber, $holdingbranch); # These variables are used for tracking the filling of the hold
550
        my ( $itemnumber, $holdingbranch );    # These variables are used for tracking the filling of the hold
551
        # $itemnumber, when set, is the item that has been chosen for the hold
551
                                               # $itemnumber, when set, is the item that has been chosen for the hold
552
        # $holdingbranch gets set to the pickup branch of the request if there are items held at that branch
552
            # $holdingbranch gets set to the pickup branch of the request if there are items held at that branch
553
        # otherwise it gets set to the least cost branch of the transport cost matrix
553
            # otherwise it gets set to the least cost branch of the transport cost matrix
554
        # otherwise it gets sets to the first branch from the list of branches to pull from
554
            # otherwise it gets sets to the first branch from the list of branches to pull from
555
555
556
        my $holding_branch_items = $items_by_branch{$pickup_branch};
556
        my $holding_branch_items = $items_by_branch{$pickup_branch};
557
        my $priority_branch = C4::Context->preference('HoldsQueuePrioritizeBranch') // 'homebranch';
558
        if ($holding_branch_items) {
557
        if ($holding_branch_items) {
559
            foreach my $item (@$holding_branch_items) {
560
                next unless _can_item_fill_request( $item, $request, $libraries );
561
562
                if ( $request->{borrowerbranch} eq $item->{$priority_branch} ) {
563
                    $itemnumber = $item->{itemnumber};
564
                    last;
565
                }
566
            }
567
            $holdingbranch = $pickup_branch;
558
            $holdingbranch = $pickup_branch;
568
        }
559
        } elsif ($transport_cost_matrix) {
569
        elsif ($transport_cost_matrix) {
560
            $pull_branches = [ keys %items_by_branch ];
570
            $pull_branches = [keys %items_by_branch];
571
            $holdingbranch = least_cost_branch( $pickup_branch, $pull_branches, $transport_cost_matrix );
561
            $holdingbranch = least_cost_branch( $pickup_branch, $pull_branches, $transport_cost_matrix );
572
            if ( $holdingbranch ) {
562
            next
573
563
                unless $holdingbranch
574
                my $holding_branch_items = $items_by_branch{$holdingbranch};
564
                ; # If using the matrix, and nothing is least cost, it means we cannot transfer to the pikcup branch for this request
575
                foreach my $item (@$holding_branch_items) {
565
            $holding_branch_items = $items_by_branch{$holdingbranch};
576
                    next if $request->{borrowerbranch} ne $item->{$priority_branch};
566
        }
577
                    next unless _can_item_fill_request( $item, $request, $libraries );
578
567
579
                    $itemnumber = $item->{itemnumber};
568
        my $priority_branch = C4::Context->preference('HoldsQueuePrioritizeBranch') // 'homebranch';
580
                    last;
569
        foreach my $item (@$holding_branch_items) {
581
                }
570
            if ( _can_item_fill_request( $item, $request, $libraries )
582
            }
571
                && $request->{borrowerbranch} eq $item->{$priority_branch} )
583
            else {
572
            {
584
                next;
573
                $itemnumber = $item->{itemnumber};
574
                last;
585
            }
575
            }
586
        }
576
        }
587
        # End HoldsQueuePrioritizeBranch check
577
        # End HoldsQueuePrioritizeBranch check
588
- 

Return to bug 35432