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

(-)a/C4/Reserves.pm (-2 / +21 lines)
Lines 310-315 See CanItemBeReserved() for possible return values. Link Here
310
310
311
sub CanBookBeReserved{
311
sub CanBookBeReserved{
312
    my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_;
312
    my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_;
313
    my $patron = Koha::Patrons->find( $borrowernumber );
314
    my $borrower = $patron->unblessed;
313
315
314
    my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber");
316
    my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber");
315
    #get items linked via host records
317
    #get items linked via host records
Lines 319-325 sub CanBookBeReserved{ Link Here
319
    }
321
    }
320
322
321
    my $canReserve = { status => '' };
323
    my $canReserve = { status => '' };
324
    my ($rights,$item);
325
322
    foreach my $itemnumber (@itemnumbers) {
326
    foreach my $itemnumber (@itemnumbers) {
327
        $item = Koha::Items->find($itemnumber);
328
        $rights = GetHoldRule(  $borrower->{'categorycode'}, $item->{'itype'}, $pickup_branchcode );
329
        return { 'status' => 'RecordHoldNotAllowed' } if $rights->{opacitemholds} eq 'F';
330
323
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode );
331
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode );
324
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
332
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
325
    }
333
    }
Lines 353-358 sub CanItemBeReserved { Link Here
353
    my $allowedreserves  = 0; # Total number of holds allowed across all records
361
    my $allowedreserves  = 0; # Total number of holds allowed across all records
354
    my $holds_per_record = 1; # Total number of holds allowed for this one given record
362
    my $holds_per_record = 1; # Total number of holds allowed for this one given record
355
    my $holds_per_day;        # Default to unlimited
363
    my $holds_per_day;        # Default to unlimited
364
    my $opacitemholds = 'Y';  # Itemlevel holds default to allowed
365
366
    # Get calling context
367
    my $caller = (caller(1))[3];
356
368
357
    # we retrieve borrowers and items informations #
369
    # we retrieve borrowers and items informations #
358
    # item->{itype} will come for biblioitems if necessery
370
    # item->{itype} will come for biblioitems if necessery
Lines 404-414 sub CanItemBeReserved { Link Here
404
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
416
        $allowedreserves  = $rights->{reservesallowed} // $allowedreserves;
405
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
417
        $holds_per_record = $rights->{holds_per_record} // $holds_per_record;
406
        $holds_per_day    = $rights->{holds_per_day};
418
        $holds_per_day    = $rights->{holds_per_day};
419
        $opacitemholds    = $rights->{opacitemholds};
407
    }
420
    }
408
    else {
421
    else {
409
        $ruleitemtype = undef;
422
        $ruleitemtype = undef;
410
    }
423
    }
411
424
425
    if ( $opacitemholds eq "N" and index($caller,"CanBookBeReserved") eq -1 ) {
426
        return { status => "notReservable" };
427
    }
428
429
    $item = Koha::Items->find( $itemnumber );
430
412
    my $holds = Koha::Holds->search(
431
    my $holds = Koha::Holds->search(
413
        {
432
        {
414
            borrowernumber => $borrowernumber,
433
            borrowernumber => $borrowernumber,
Lines 2252-2258 sub GetHoldRule { Link Here
2252
            itemtype     => $itemtype,
2271
            itemtype     => $itemtype,
2253
            categorycode => $categorycode,
2272
            categorycode => $categorycode,
2254
            branchcode   => $branchcode,
2273
            branchcode   => $branchcode,
2255
            rules        => ['holds_per_record', 'holds_per_day'],
2274
            rules        => ['holds_per_record', 'holds_per_day', 'opacitemholds'],
2256
            order_by     => {
2275
            order_by     => {
2257
                -desc => [ 'categorycode', 'itemtype', 'branchcode' ]
2276
                -desc => [ 'categorycode', 'itemtype', 'branchcode' ]
2258
            }
2277
            }
Lines 2260-2265 sub GetHoldRule { Link Here
2260
    );
2279
    );
2261
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2280
    $rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record};
2262
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2281
    $rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day};
2282
    $rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds};
2263
2283
2264
    return $rules;
2284
    return $rules;
2265
}
2285
}
2266
- 

Return to bug 25408