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

(-)a/C4/Reserves.pm (-16 / +7 lines)
Lines 328-338 sub CanBookBeReserved{ Link Here
328
    }
328
    }
329
329
330
    my $canReserve = { status => '' };
330
    my $canReserve = { status => '' };
331
    my ($rights,$item);
332
333
    foreach my $itemnumber (@itemnumbers) {
331
    foreach my $itemnumber (@itemnumbers) {
334
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
332
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
335
        return { status => 'RecordHoldNotAllowed' } if $canReserve->{rights}->{opacitemholds} eq 'F';
333
        my $opacitemholds = $canReserve->{rights}->{opacitemholds};
334
        return { status => 'RecordHoldNotAllowed' } if $opacitemholds eq 'F';
335
        return { status => 'OK' } if ( $canReserve->{status} eq 'notReservable' && $opacitemholds eq 'N' );
336
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
336
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
337
    }
337
    }
338
    return $canReserve;
338
    return $canReserve;
Lines 416-422 sub CanItemBeReserved { Link Here
416
    }
416
    }
417
417
418
    # we retrieve rights
418
    # we retrieve rights
419
    if ( my $rights = GetHoldRule( $borrower->{'categorycode'}, $item->effective_itemtype, $branchcode ) ) {
419
    my $rights;
420
    if ( $rights = GetHoldRule( $borrower->{'categorycode'}, $item->effective_itemtype, $branchcode ) ) {
420
        $ruleitemtype     = $rights->{itemtype};
421
        $ruleitemtype     = $rights->{itemtype};
421
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
422
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
422
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
423
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
Lines 436-453 sub CanItemBeReserved { Link Here
436
    my $holds = Koha::Holds->search($search_params);
437
    my $holds = Koha::Holds->search($search_params);
437
438
438
    if ( $opacitemholds eq "N" ) {
439
    if ( $opacitemholds eq "N" ) {
439
        return { status => "notReservable" };
440
        return { status => "notReservable", rights => $rights };
440
    }
441
    }
441
442
442
    $item = Koha::Items->find( $itemnumber );
443
444
    my $holds = Koha::Holds->search(
445
        {
446
            borrowernumber => $borrowernumber,
447
            biblionumber   => $item->biblionumber,
448
        }
449
    );
450
451
    if (   defined $holds_per_record && $holds_per_record ne ''
443
    if (   defined $holds_per_record && $holds_per_record ne ''
452
        && $holds->count() >= $holds_per_record ) {
444
        && $holds->count() >= $holds_per_record ) {
453
        return { status => "tooManyHoldsForThisRecord", limit => $holds_per_record };
445
        return { status => "tooManyHoldsForThisRecord", limit => $holds_per_record };
Lines 2299-2305 sub GetHoldRule { Link Here
2299
    );
2291
    );
2300
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2292
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2301
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2293
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2302
    $rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds};
2294
    $rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds} // 'Y';
2303
2295
2304
    return $rules;
2296
    return $rules;
2305
}
2297
}
2306
- 

Return to bug 25408