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

(-)a/C4/Reserves.pm (-14 / +7 lines)
Lines 326-336 sub CanBookBeReserved{ Link Here
326
    }
326
    }
327
327
328
    my $canReserve = { status => '' };
328
    my $canReserve = { status => '' };
329
    my ($rights,$item);
330
331
    foreach my $itemnumber (@itemnumbers) {
329
    foreach my $itemnumber (@itemnumbers) {
332
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
330
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode, $params );
333
        return { status => 'RecordHoldNotAllowed' } if $canReserve->{rights}->{opacitemholds} eq 'F';
331
        my $opacitemholds = $canReserve->{rights}->{opacitemholds};
332
        return { status => 'RecordHoldNotAllowed' } if $opacitemholds eq 'F';
333
        return { status => 'OK' } if ( $canReserve->{status} eq 'notReservable' && $opacitemholds eq 'N' );
334
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
334
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
335
    }
335
    }
336
    return $canReserve;
336
    return $canReserve;
Lines 414-420 sub CanItemBeReserved { Link Here
414
    }
414
    }
415
415
416
    # we retrieve rights
416
    # we retrieve rights
417
    if ( my $rights = GetHoldRule( $borrower->{'categorycode'}, $item->effective_itemtype, $branchcode ) ) {
417
    my $rights;
418
    if ( $rights = GetHoldRule( $borrower->{'categorycode'}, $item->effective_itemtype, $branchcode ) ) {
418
        $ruleitemtype     = $rights->{itemtype};
419
        $ruleitemtype     = $rights->{itemtype};
419
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
420
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
420
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
421
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
Lines 434-451 sub CanItemBeReserved { Link Here
434
    my $holds = Koha::Holds->search($search_params);
435
    my $holds = Koha::Holds->search($search_params);
435
436
436
    if ( $opacitemholds eq "N" ) {
437
    if ( $opacitemholds eq "N" ) {
437
        return { status => "notReservable" };
438
        return { status => "notReservable", rights => $rights };
438
    }
439
    }
439
440
440
    $item = Koha::Items->find( $itemnumber );
441
    $item = Koha::Items->find( $itemnumber );
441
442
442
    my $holds = Koha::Holds->search(
443
        {
444
            borrowernumber => $borrowernumber,
445
            biblionumber   => $item->biblionumber,
446
        }
447
    );
448
449
    if (   defined $holds_per_record && $holds_per_record ne ''
443
    if (   defined $holds_per_record && $holds_per_record ne ''
450
        && $holds->count() >= $holds_per_record ) {
444
        && $holds->count() >= $holds_per_record ) {
451
        return { status => "tooManyHoldsForThisRecord", limit => $holds_per_record };
445
        return { status => "tooManyHoldsForThisRecord", limit => $holds_per_record };
Lines 2279-2285 sub GetHoldRule { Link Here
2279
    );
2273
    );
2280
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2274
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2281
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2275
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2282
    $rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds};
2276
    $rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds} // 'Y';
2283
2277
2284
    return $rules;
2278
    return $rules;
2285
}
2279
}
2286
- 

Return to bug 25408