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

(-)a/C4/Reserves.pm (-2 / +4 lines)
Lines 341-347 sub CanBookBeReserved{ Link Here
341
341
342
    foreach my $itemnumber (@itemnumbers) {
342
    foreach my $itemnumber (@itemnumbers) {
343
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
343
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
344
        return { status => 'recordHoldNotAllowed' } if $canReserve->{rights}->{opacitemholds} eq 'F';
344
        my $opacitemholds = $canReserve->{rights}->{opacitemholds} // 'Y';
345
        return { status => 'recordHoldNotAllowed' } if $opacitemholds eq 'F';
345
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
346
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
346
        return { status => 'OK' } if $canReserve->{status} eq 'recordHoldsOnly';
347
        return { status => 'OK' } if $canReserve->{status} eq 'recordHoldsOnly';
347
    }
348
    }
Lines 384-389 sub CanItemBeReserved { Link Here
384
    my $biblio     = $item->biblio;
385
    my $biblio     = $item->biblio;
385
    my $patron = Koha::Patrons->find( $borrowernumber );
386
    my $patron = Koha::Patrons->find( $borrowernumber );
386
    my $borrower = $patron->unblessed;
387
    my $borrower = $patron->unblessed;
388
    my $context = $params->{context} // '';
387
389
388
    # If an item is damaged and we don't allow holds on damaged items, we can stop right here
390
    # If an item is damaged and we don't allow holds on damaged items, we can stop right here
389
    return { status =>'damaged' }
391
    return { status =>'damaged' }
Lines 591-597 sub CanItemBeReserved { Link Here
591
        }
593
        }
592
    }
594
    }
593
595
594
    if ( $opacitemholds eq "N" ) {
596
    if ( $opacitemholds eq "N" && $context ne 'staff') {
595
        return { status => "recordHoldsOnly", right => $rights };
597
        return { status => "recordHoldsOnly", right => $rights };
596
    }
598
    }
597
599
(-)a/reserve/placerequest.pl (-2 / +2 lines)
Lines 99-105 if ( $type eq 'str8' && $borrower ) { Link Here
99
                $biblionumber = $item->biblionumber;
99
                $biblionumber = $item->biblionumber;
100
            }
100
            }
101
101
102
            my $can_item_be_reserved = CanItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch)->{status};
102
            my $can_item_be_reserved = CanItemBeReserved($borrower->{'borrowernumber'}, $item->itemnumber, $branch, { context => 'staff' })->{status};
103
103
104
            if ( $can_item_be_reserved eq 'OK' || ( $can_item_be_reserved ne 'itemAlreadyOnHold' && $can_override ) ) {
104
            if ( $can_item_be_reserved eq 'OK' || ( $can_item_be_reserved ne 'itemAlreadyOnHold' && $can_override ) ) {
105
                AddReserve(
105
                AddReserve(
Lines 144-150 if ( $type eq 'str8' && $borrower ) { Link Here
144
        } else {
144
        } else {
145
            # place a request on 1st available
145
            # place a request on 1st available
146
            for ( my $i = 0 ; $i < $holds_to_place_count ; $i++ ) {
146
            for ( my $i = 0 ; $i < $holds_to_place_count ; $i++ ) {
147
                if ( $can_override || CanBookBeReserved($borrower->{'borrowernumber'}, $biblionumber)->{status} eq 'OK' ) {
147
                if ( $can_override || CanBookBeReserved($borrower->{'borrowernumber'}, $biblionumber, undef, { context => 'staff' })->{status} eq 'OK' ) {
148
                    AddReserve(
148
                    AddReserve(
149
                        {
149
                        {
150
                            branchcode       => $branch,
150
                            branchcode       => $branch,
(-)a/reserve/request.pl (-4 / +3 lines)
Lines 318-327 foreach my $biblionumber (@biblionumbers) { Link Here
318
                $template->param( $canReserve->{status} => 1);
318
                $template->param( $canReserve->{status} => 1);
319
                $biblioloopiter{ $canReserve->{status} } = 1;
319
                $biblioloopiter{ $canReserve->{status} } = 1;
320
            }
320
            }
321
	    elsif ( $canReserve->{status} eq 'recordHoldNotAllowed' ) {
321
            elsif ( $canReserve->{status} eq 'recordHoldNotAllowed' ) {
322
                $template->param( $canReserve->{status} => 1 );
322
                $template->param( $canReserve->{status} => 1 );
323
		$biblioloopiter{ $canReserve->{status} } = 1;
323
                $biblioloopiter{ $canReserve->{status} } = 1;
324
	    }
324
            }
325
            else {
325
            else {
326
                $biblioloopiter{ $canReserve->{status} } = 1;
326
                $biblioloopiter{ $canReserve->{status} } = 1;
327
            }
327
            }
328
- 

Return to bug 25408