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

(-)a/C4/Reserves.pm (-2 / +28 lines)
Lines 274-280 See CanItemBeReserved() for possible return values. Link Here
274
sub CanBookBeReserved{
274
sub CanBookBeReserved{
275
    my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_;
275
    my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_;
276
276
277
    my $patron = Koha::Patrons->find($borrowernumber);
278
    my $holds = $patron->holds;
279
280
    # Check if borrower has reached the maximum number of holds allowed
281
    my $maxreserves = C4::Context->preference('maxreserves');
282
    if ($maxreserves && $holds->count >= $maxreserves) {
283
        return { status => 'tooManyReserves' };
284
    }
285
277
    my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber");
286
    my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber");
287
278
    #get items linked via host records
288
    #get items linked via host records
279
    my @hostitems = get_hostitemnumbers_of($biblionumber);
289
    my @hostitems = get_hostitemnumbers_of($biblionumber);
280
    if (@hostitems){
290
    if (@hostitems){
Lines 286-292 sub CanBookBeReserved{ Link Here
286
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode );
296
        $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode );
287
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
297
        return { status => 'OK' } if $canReserve->{status} eq 'OK';
288
    }
298
    }
289
    return $canReserve;
299
300
    return { status => 'none_available' };
290
}
301
}
291
302
292
=head2 CanItemBeReserved
303
=head2 CanItemBeReserved
Lines 303-308 sub CanBookBeReserved{ Link Here
303
         { status => libraryNotFound },   if given branchcode is not an existing library
314
         { status => libraryNotFound },   if given branchcode is not an existing library
304
         { status => libraryNotPickupLocation },   if given branchcode is not configured to be a pickup location
315
         { status => libraryNotPickupLocation },   if given branchcode is not configured to be a pickup location
305
         { status => cannotBeTransferred }, if branch transfer limit applies on given item and branchcode
316
         { status => cannotBeTransferred }, if branch transfer limit applies on given item and branchcode
317
         { status => alreadyReserved }, if the borrower has already reserved this item.
306
318
307
=cut
319
=cut
308
320
Lines 336-341 sub CanItemBeReserved { Link Here
336
    return { status =>'itemAlreadyOnHold' }
348
    return { status =>'itemAlreadyOnHold' }
337
      if Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->count();
349
      if Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->count();
338
350
351
    # Check if borrower already has reserved the same item.
352
    my $holds = $patron->holds;
353
    while (my $hold = $holds->next) {
354
        if ( $hold->itemnumber == $itemnumber ) {
355
            return { status => 'alreadyReserved' };
356
        }
357
    }
358
359
    # Check if borrower has reached the maximum number of holds allowed
360
    my $maxreserves = C4::Context->preference('maxreserves');
361
    if ($maxreserves && $holds->count >= $maxreserves) {
362
        return { status => 'tooManyReserves', limit => $maxreserves };
363
    }
364
339
    my $controlbranch = C4::Context->preference('ReservesControlBranch');
365
    my $controlbranch = C4::Context->preference('ReservesControlBranch');
340
366
341
    my $querycount = q{
367
    my $querycount = q{
Lines 370-376 sub CanItemBeReserved { Link Here
370
        $ruleitemtype = '*';
396
        $ruleitemtype = '*';
371
    }
397
    }
372
398
373
    my $holds = Koha::Holds->search(
399
    $holds = Koha::Holds->search(
374
        {
400
        {
375
            borrowernumber => $borrowernumber,
401
            borrowernumber => $borrowernumber,
376
            biblionumber   => $item->biblionumber,
402
            biblionumber   => $item->biblionumber,
(-)a/reserve/request.pl (-2 / +3 lines)
Lines 240-246 foreach my $biblionumber (@biblionumbers) { Link Here
240
                $exceeded_holds_per_record = 1;
240
                $exceeded_holds_per_record = 1;
241
                $biblioloopiter{ $canReserve->{status} } = 1;
241
                $biblioloopiter{ $canReserve->{status} } = 1;
242
            }
242
            }
243
            elsif ( $canReserve->{status} eq 'ageRestricted' ) {
243
            elsif ( grep { $canReserve->{status} eq $_ }
244
                (qw(ageRestricted alreadyReserved none_available)) )
245
            {
244
                $template->param( $canReserve->{status} => 1 );
246
                $template->param( $canReserve->{status} => 1 );
245
                $biblioloopiter{ $canReserve->{status} } = 1;
247
                $biblioloopiter{ $canReserve->{status} } = 1;
246
            }
248
            }
247
- 

Return to bug 11999