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

(-)a/C4/HoldsQueue.pm (-9 / +11 lines)
Lines 368-374 sub GetItemsAvailableToFillHoldRequestsForBib { Link Here
368
sub MapItemsToHoldRequests {
368
sub MapItemsToHoldRequests {
369
    my ($hold_requests, $available_items, $branches_to_use, $transport_cost_matrix) = @_;
369
    my ($hold_requests, $available_items, $branches_to_use, $transport_cost_matrix) = @_;
370
370
371
372
    # handle trival cases
371
    # handle trival cases
373
    return unless scalar(@$hold_requests) > 0;
372
    return unless scalar(@$hold_requests) > 0;
374
    return unless scalar(@$available_items) > 0;
373
    return unless scalar(@$available_items) > 0;
Lines 378-383 sub MapItemsToHoldRequests { Link Here
378
                                   grep { defined($_->{itemnumber}) }
377
                                   grep { defined($_->{itemnumber}) }
379
                                   @$hold_requests;
378
                                   @$hold_requests;
380
379
380
    map { $_->{_object} = Koha::Items->find( $_->{itemnumber} ) } @$available_items;
381
    my $libraries = {};
382
    map { $libraries->{$_->id} = $_ } Koha::Libraries->search();
383
381
    # group available items by itemnumber
384
    # group available items by itemnumber
382
    my %items_by_itemnumber = map { $_->{itemnumber} => $_ } @$available_items;
385
    my %items_by_itemnumber = map { $_->{itemnumber} => $_ } @$available_items;
383
386
Lines 408-414 sub MapItemsToHoldRequests { Link Here
408
                  || ( $item->{holdallowed} == 1
411
                  || ( $item->{holdallowed} == 1
409
                    && $item->{homebranch} ne $request->{borrowerbranch} );
412
                    && $item->{homebranch} ne $request->{borrowerbranch} );
410
413
411
                next unless Koha::Items->find( $item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } );
414
                next unless $item->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
412
415
413
                my $local_holds_priority_item_branchcode =
416
                my $local_holds_priority_item_branchcode =
414
                  $item->{$LocalHoldsPriorityItemControl};
417
                  $item->{$LocalHoldsPriorityItemControl};
Lines 464-470 sub MapItemsToHoldRequests { Link Here
464
                and ( !$request->{itemtype} # If hold itemtype is set, item's itemtype must match
467
                and ( !$request->{itemtype} # If hold itemtype is set, item's itemtype must match
465
                    || $items_by_itemnumber{ $request->{itemnumber} }->{itype} eq $request->{itemtype} )
468
                    || $items_by_itemnumber{ $request->{itemnumber} }->{itype} eq $request->{itemtype} )
466
                )
469
                )
467
                and Koha::Items->find( $request->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } )
470
                and $items_by_itemnumber{ $request->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } )
468
471
469
              )
472
              )
470
            {
473
            {
Lines 512-518 sub MapItemsToHoldRequests { Link Here
512
        my $holding_branch_items = $items_by_branch{$pickup_branch};
515
        my $holding_branch_items = $items_by_branch{$pickup_branch};
513
        if ( $holding_branch_items ) {
516
        if ( $holding_branch_items ) {
514
            foreach my $item (@$holding_branch_items) {
517
            foreach my $item (@$holding_branch_items) {
515
                next unless Koha::Items->find( $item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } );
518
                next unless $items_by_itemnumber{ $item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
516
519
517
                if (
520
                if (
518
                    $request->{borrowerbranch} eq $item->{homebranch}
521
                    $request->{borrowerbranch} eq $item->{homebranch}
Lines 536-542 sub MapItemsToHoldRequests { Link Here
536
                my $holding_branch_items = $items_by_branch{$holdingbranch};
539
                my $holding_branch_items = $items_by_branch{$holdingbranch};
537
                foreach my $item (@$holding_branch_items) {
540
                foreach my $item (@$holding_branch_items) {
538
                    next if $request->{borrowerbranch} ne $item->{homebranch};
541
                    next if $request->{borrowerbranch} ne $item->{homebranch};
539
                    next unless Koha::Items->find( $item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraris->find( $request->{branchcode} ) } );
542
                    next unless $items_by_itemnumber{ $item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
540
543
541
                    # Don't fill item level holds that contravene the hold pickup policy at this time
544
                    # Don't fill item level holds that contravene the hold pickup policy at this time
542
                    next unless $item->{hold_fulfillment_policy} eq 'any'
545
                    next unless $item->{hold_fulfillment_policy} eq 'any'
Lines 573-579 sub MapItemsToHoldRequests { Link Here
573
                foreach my $item (@$holding_branch_items) {
576
                foreach my $item (@$holding_branch_items) {
574
                    next if $pickup_branch ne $item->{homebranch};
577
                    next if $pickup_branch ne $item->{homebranch};
575
                    next if ( $item->{holdallowed} == 1 && $item->{homebranch} ne $request->{borrowerbranch} );
578
                    next if ( $item->{holdallowed} == 1 && $item->{homebranch} ne $request->{borrowerbranch} );
576
                    next unless Koha::Items->find( $item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } );
579
                    next unless $items_by_itemnumber{ $item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
577
580
578
                    # Don't fill item level holds that contravene the hold pickup policy at this time
581
                    # Don't fill item level holds that contravene the hold pickup policy at this time
579
                    next unless $item->{hold_fulfillment_policy} eq 'any'
582
                    next unless $item->{hold_fulfillment_policy} eq 'any'
Lines 602-608 sub MapItemsToHoldRequests { Link Here
602
                        next unless ( !$request->{itemtype}
605
                        next unless ( !$request->{itemtype}
603
                            || $current_item->{itype} eq $request->{itemtype} );
606
                            || $current_item->{itype} eq $request->{itemtype} );
604
                    
607
                    
605
                        next unless Koha::Items->find( $current_item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } );
608
                        next unless $items_by_itemnumber{ $current_item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
606
609
607
                        $itemnumber = $current_item->{itemnumber};
610
                        $itemnumber = $current_item->{itemnumber};
608
                        last; # quit this loop as soon as we have a suitable item
611
                        last; # quit this loop as soon as we have a suitable item
Lines 628-634 sub MapItemsToHoldRequests { Link Here
628
                        next unless ( !$request->{itemtype}
631
                        next unless ( !$request->{itemtype}
629
                            || $item->{itype} eq $request->{itemtype} );
632
                            || $item->{itype} eq $request->{itemtype} );
630
633
631
                        next unless Koha::Items->find( $item->{itemnumber} )->can_be_transferred( { to => scalar Koha::Libraries->find( $request->{branchcode} ) } );
634
                        next unless $items_by_itemnumber{ $item->{itemnumber} }->{_object}->can_be_transferred( { to => $libraries->{ $request->{branchcode} } } );
632
635
633
                        $itemnumber = $item->{itemnumber};
636
                        $itemnumber = $item->{itemnumber};
634
                        $holdingbranch = $branch;
637
                        $holdingbranch = $branch;
635
- 

Return to bug 22330