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

(-)a/C4/Reserves.pm (-5 / +8 lines)
Lines 350-358 sub GetReservesFromBiblionumber { Link Here
350
350
351
=head2 GetReservesFromItemnumber
351
=head2 GetReservesFromItemnumber
352
352
353
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber);
353
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $waitingdate ) = GetReservesFromItemnumber($itemnumber, $all_dates);
354
354
355
TODO :: Description here
355
Get the first reserve for a specific item number (based on priority). Returns the abovementioned values for that reserve.
356
357
all_dates is an optional parameter, telling Koha to include or exclude future holds
356
358
357
=cut
359
=cut
358
360
Lines 360-376 sub GetReservesFromItemnumber { Link Here
360
    my ( $itemnumber, $all_dates ) = @_;
362
    my ( $itemnumber, $all_dates ) = @_;
361
    my $dbh   = C4::Context->dbh;
363
    my $dbh   = C4::Context->dbh;
362
    my $query = "
364
    my $query = "
363
    SELECT reservedate,borrowernumber,branchcode,reserve_id
365
    SELECT reservedate,borrowernumber,branchcode,reserve_id,waitingdate
364
    FROM   reserves
366
    FROM   reserves
365
    WHERE  itemnumber=?
367
    WHERE  itemnumber=?
366
    ";
368
    ";
367
    unless ( $all_dates ) {
369
    unless ( $all_dates ) {
368
	$query .= " AND reservedate <= CURRENT_DATE()";
370
	$query .= " AND reservedate <= CURRENT_DATE()";
369
    }
371
    }
372
    $query .= ' ORDER BY priority';
370
    my $sth_res = $dbh->prepare($query);
373
    my $sth_res = $dbh->prepare($query);
371
    $sth_res->execute($itemnumber);
374
    $sth_res->execute($itemnumber);
372
    my ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = $sth_res->fetchrow_array;
375
    my ( $reservedate, $borrowernumber,$branchcode, $reserve_id, $wait ) = $sth_res->fetchrow_array;
373
    return ( $reservedate, $borrowernumber, $branchcode, $reserve_id );
376
    return ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait );
374
}
377
}
375
378
376
=head2 GetReservesFromBorrowernumber
379
=head2 GetReservesFromBorrowernumber
(-)a/catalogue/detail.pl (-9 / +6 lines)
Lines 220-226 foreach my $item (@items) { Link Here
220
    }
220
    }
221
221
222
    # checking for holds
222
    # checking for holds
223
    my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($item->{itemnumber});
223
    my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($item->{itemnumber}, 1); #second parameter: all dates
224
        # all dates will include a future item level hold or a future wait
224
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
225
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
225
    
226
    
226
    if (C4::Context->preference('HidePatronName')){
227
    if (C4::Context->preference('HidePatronName')){
Lines 234-242 foreach my $item (@items) { Link Here
234
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
235
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
235
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
236
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
236
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
237
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
237
	$item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
238
        $item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
239
        # Check waiting status
240
        $item->{waitingdate} = format_date($wait) if $wait;
238
    }
241
    }
239
242
243
240
	# Check the transit status
244
	# Check the transit status
241
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
245
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
242
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
246
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
Lines 246-258 foreach my $item (@items) { Link Here
246
        $item->{nocancel} = 1;
250
        $item->{nocancel} = 1;
247
    }
251
    }
248
252
249
    # FIXME: move this to a pm, check waiting status for holds
250
    my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
251
    $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
252
    while (my $wait_hashref = $sth2->fetchrow_hashref) {
253
        $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
254
    }
255
256
    # item has a host number if its biblio number does not match the current bib
253
    # item has a host number if its biblio number does not match the current bib
257
    if ($item->{biblionumber} ne $biblionumber){
254
    if ($item->{biblionumber} ne $biblionumber){
258
        $item->{hostbiblionumber} = $item->{biblionumber};
255
        $item->{hostbiblionumber} = $item->{biblionumber};
(-)a/circ/transferstoreceive.pl (-1 / +1 lines)
Lines 99-105 foreach my $br ( keys %$branches ) { Link Here
99
            $getransf{'subtitle'} = GetRecordValue('subtitle', $record, GetFrameworkCode($gettitle->{'biblionumber'}));
99
            $getransf{'subtitle'} = GetRecordValue('subtitle', $record, GetFrameworkCode($gettitle->{'biblionumber'}));
100
100
101
            # we check if we have a reserv for this transfer
101
            # we check if we have a reserv for this transfer
102
            my @checkreserv = GetReservesFromItemnumber($num->{'itemnumber'} );
102
            my @checkreserv = GetReservesFromItemnumber($num->{'itemnumber'},1 ); #alldate parameter for future holds and waits
103
            if ( $checkreserv[0] ) {
103
            if ( $checkreserv[0] ) {
104
                my $getborrower = GetMemberDetails( $checkreserv[1] );
104
                my $getborrower = GetMemberDetails( $checkreserv[1] );
105
                $getransf{'borrowernum'}       = $getborrower->{'borrowernumber'};
105
                $getransf{'borrowernum'}       = $getborrower->{'borrowernumber'};
(-)a/opac/opac-reserve.pl (-13 / +8 lines)
Lines 431-443 foreach my $biblioNum (@biblionumbers) { Link Here
431
        }
431
        }
432
432
433
        # checking reserve
433
        # checking reserve
434
        my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemNum);
434
        my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($itemNum,1); #with alldates parameter include future item level holds and waits
435
        my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
435
        my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
436
436
437
	# the item could be reserved for this borrower vi a host record, flag this
437
        # the item could be reserved for this borrower vi a host record, flag this
438
	if ($reservedfor eq $borrowernumber){
438
        if ($reservedfor eq $borrowernumber){
439
		$itemLoopIter->{already_reserved} = 1;
439
            $itemLoopIter->{already_reserved} = 1;
440
	}
440
        }
441
441
442
        if ( defined $reservedate ) {
442
        if ( defined $reservedate ) {
443
            $itemLoopIter->{backgroundcolor} = 'reserved';
443
            $itemLoopIter->{backgroundcolor} = 'reserved';
Lines 446-451 foreach my $biblioNum (@biblionumbers) { Link Here
446
            $itemLoopIter->{ReservedForSurname}        = $ItemBorrowerReserveInfo->{'surname'};
446
            $itemLoopIter->{ReservedForSurname}        = $ItemBorrowerReserveInfo->{'surname'};
447
            $itemLoopIter->{ReservedForFirstname}      = $ItemBorrowerReserveInfo->{'firstname'};
447
            $itemLoopIter->{ReservedForFirstname}      = $ItemBorrowerReserveInfo->{'firstname'};
448
            $itemLoopIter->{ExpectedAtLibrary}         = $expectedAt;
448
            $itemLoopIter->{ExpectedAtLibrary}         = $expectedAt;
449
            #waiting status
450
            $itemLoopIter->{waitingdate} = format_date($wait) if $wait;
449
        }
451
        }
450
452
451
        $itemLoopIter->{notforloan} = $itemInfo->{notforloan};
453
        $itemLoopIter->{notforloan} = $itemInfo->{notforloan};
Lines 505-518 foreach my $biblioNum (@biblionumbers) { Link Here
505
            $numCopiesAvailable++;
507
            $numCopiesAvailable++;
506
        }
508
        }
507
509
508
	# FIXME: move this to a pm
510
        $itemLoopIter->{imageurl} = getitemtypeimagelocation( 'opac', $itemTypes->{ $itemInfo->{itype} }{imageurl} );
509
        my $dbh = C4::Context->dbh;
510
        my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
511
        $sth2->execute($itemLoopIter->{ReservedForBorrowernumber}, $itemNum);
512
        while (my $wait_hashref = $sth2->fetchrow_hashref) {
513
            $itemLoopIter->{waitingdate} = format_date($wait_hashref->{waitingdate});
514
        }
515
	$itemLoopIter->{imageurl} = getitemtypeimagelocation( 'opac', $itemTypes->{ $itemInfo->{itype} }{imageurl} );
516
511
517
    # Show serial enumeration when needed
512
    # Show serial enumeration when needed
518
        if ($itemLoopIter->{enumchron}) {
513
        if ($itemLoopIter->{enumchron}) {
(-)a/reserve/request.pl (-10 / +2 lines)
Lines 328-334 foreach my $biblionumber (@biblionumbers) { Link Here
328
            }
328
            }
329
329
330
            # checking reserve
330
            # checking reserve
331
            my ($reservedate,$reservedfor,$expectedAt,$reserve_id) = GetReservesFromItemnumber($itemnumber);
331
            my ($reservedate,$reservedfor,$expectedAt,$reserve_id,$wait) = GetReservesFromItemnumber($itemnumber,1); #alldates parameter to include future holds/waits
332
            my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor );
332
            my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor );
333
333
334
            if ( defined $reservedate ) {
334
            if ( defined $reservedate ) {
Lines 338-344 foreach my $biblionumber (@biblionumbers) { Link Here
338
                $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
338
                $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
339
                $item->{ReservedForFirstname}     = $ItemBorrowerReserveInfo->{'firstname'};
339
                $item->{ReservedForFirstname}     = $ItemBorrowerReserveInfo->{'firstname'};
340
                $item->{ExpectedAtLibrary}     = $branches->{$expectedAt}{branchname};
340
                $item->{ExpectedAtLibrary}     = $branches->{$expectedAt}{branchname};
341
341
                $item->{waitingdate} = format_date($wait) if $wait;
342
            }
342
            }
343
343
344
            # Management of the notforloan document
344
            # Management of the notforloan document
Lines 424-436 foreach my $biblionumber (@biblionumbers) { Link Here
424
424
425
            # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
425
            # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
426
426
427
            # FIXME: move this to a pm
428
            my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
429
            $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
430
            while (my $wait_hashref = $sth2->fetchrow_hashref) {
431
                $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
432
            }
433
434
            # Show serial enumeration when needed
427
            # Show serial enumeration when needed
435
            if ($item->{enumchron}) {
428
            if ($item->{enumchron}) {
436
                $itemdata_enumchron = 1;
429
                $itemdata_enumchron = 1;
437
- 

Return to bug 9788