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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-2 / +2 lines)
Lines 799-805 Link Here
799
                                                    [% END # /IF force_hold_level %]
799
                                                    [% END # /IF force_hold_level %]
800
                                                </td>
800
                                                </td>
801
                                                <td>
801
                                                <td>
802
                                                [% IF (itemloo.pickup_locations_count > 0) %]
802
                                                [% IF (itemloo.pickup_locations_count > 0) || itemloo.override %]
803
                                                    <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
803
                                                    <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
804
                                                            data-item-id="[% itemloo.itemnumber | html %]"
804
                                                            data-item-id="[% itemloo.itemnumber | html %]"
805
                                                            data-patron-id="[% patron.borrowernumber | html %]"
805
                                                            data-patron-id="[% patron.borrowernumber | html %]"
Lines 1518-1524 Link Here
1518
                    msg = (_("- Please select an item to place a hold") + "\n");
1518
                    msg = (_("- Please select an item to place a hold") + "\n");
1519
                }
1519
                }
1520
            } else {
1520
            } else {
1521
                if( $("#pickup").length < 1 || $("#pickup").val() == "" ){
1521
                if( $("#pickup").length < 1 || $("#pickup").val() == "" || $('#pickup').val() === null ){
1522
                    msg = _("- Please select a pickup location for this hold" + "\n");
1522
                    msg = _("- Please select a pickup location for this hold" + "\n");
1523
                }
1523
                }
1524
            }
1524
            }
(-)a/reserve/request.pl (-34 / +21 lines)
Lines 503-515 if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) Link Here
503
                        $default_pickup_branch = C4::Context->userenv->{branch};
503
                        $default_pickup_branch = C4::Context->userenv->{branch};
504
                    }
504
                    }
505
505
506
                    if (
506
                    if ( $can_item_be_reserved eq 'itemAlreadyOnHold' ) {
507
                           !$item->{cantreserve}
507
                        # itemAlreadyOnHold cannot be overridden
508
                        && !$exceeded_maxreserves
508
                        $num_alreadyheld++
509
                        && $can_item_be_reserved eq 'OK'
509
                    }
510
                        # items_any_available defined outside of the current loop,
510
                    elsif (
511
                        # so we avoiding loop inside IsAvailableForItemLevelRequest:
511
                        (
512
                        && IsAvailableForItemLevelRequest($item_object, $patron, undef, $items_any_available)
512
                               !$item->{cantreserve}
513
                            && !$exceeded_maxreserves
514
                            && $can_item_be_reserved eq 'OK'
515
                            # items_any_available defined outside of the current loop,
516
                            # so we avoiding loop inside IsAvailableForItemLevelRequest:
517
                            && IsAvailableForItemLevelRequest($item_object, $patron, undef, $items_any_available)
518
                        ) || C4::Context->preference('AllowHoldPolicyOverride')
519
                             # If AllowHoldPolicyOverride is set, it overrides EVERY restriction
520
                             # not just branch item rules
513
                      )
521
                      )
514
                    {
522
                    {
515
                        # Send the pickup locations count to the UI, the pickup locations will be pulled using the API
523
                        # Send the pickup locations count to the UI, the pickup locations will be pulled using the API
Lines 522-558 if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) Link Here
522
                            my $default_pickup_location = $pickup_locations->search({ branchcode => $default_pickup_branch })->next;
530
                            my $default_pickup_location = $pickup_locations->search({ branchcode => $default_pickup_branch })->next;
523
                            $item->{default_pickup_location} = $default_pickup_location;
531
                            $item->{default_pickup_location} = $default_pickup_location;
524
                        }
532
                        }
533
                        elsif ( C4::Context->preference('AllowHoldPolicyOverride') ){
534
                             $num_items_available++;
535
                             $item->{override} = 1;
536
                            my $default_pickup_location = $pickup_locations->search({ branchcode => $default_pickup_branch })->next;
537
                            $item->{default_pickup_location} = $default_pickup_location;
538
                        }
525
                        else {
539
                        else {
526
                            $item->{available} = 0;
540
                            $item->{available} = 0;
527
                            $item->{not_holdable} = "no_valid_pickup_location";
541
                            $item->{not_holdable} = "no_valid_pickup_location";
528
                        }
542
                        }
529
543
530
                        push( @available_itemtypes, $item->{itype} );
531
                    }
532
                    elsif ( C4::Context->preference('AllowHoldPolicyOverride') ) {
533
                        # If AllowHoldPolicyOverride is set, it should override EVERY restriction, not just branch item rules
534
                        # with the exception of itemAlreadyOnHold because, you know, the item is already on hold
535
                        if ( $can_item_be_reserved ne 'itemAlreadyOnHold' ) {
536
                            # Send the pickup locations count to the UI, the pickup locations will be pulled using the API
537
                            my @pickup_locations = $item_object->pickup_locations({ patron => $patron })->as_list;
538
                            $item->{pickup_locations_count} = scalar @pickup_locations;
539
540
                            if ( @pickup_locations ) {
541
                                $num_items_available++;
542
                                $item->{override} = 1;
543
544
                                my $default_pickup_location;
545
546
                                ($default_pickup_location) = grep { $_->branchcode eq $default_pickup_branch } @pickup_locations;
547
548
                                $item->{default_pickup_location} = $default_pickup_location;
549
                            }
550
                            else {
551
                                $item->{available} = 0;
552
                                $item->{not_holdable} = "no_valid_pickup_location";
553
                            }
554
                        } else { $num_alreadyheld++ }
555
556
                        push( @available_itemtypes, $item->{itype} );
544
                        push( @available_itemtypes, $item->{itype} );
557
                    } else {
545
                    } else {
558
                        # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
546
                        # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
559
- 

Return to bug 30687