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

(-)a/C4/Reserves.pm (-5 / +8 lines)
Lines 358-366 sub GetReservesFromBiblionumber { Link Here
358
358
359
=head2 GetReservesFromItemnumber
359
=head2 GetReservesFromItemnumber
360
360
361
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber);
361
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $waitingdate ) = GetReservesFromItemnumber($itemnumber, $all_dates);
362
362
363
TODO :: Description here
363
Get the first reserve for a specific item number (based on priority). Returns the abovementioned values for that reserve.
364
365
all_dates is an optional parameter, telling Koha to include or exclude future holds
364
366
365
=cut
367
=cut
366
368
Lines 368-384 sub GetReservesFromItemnumber { Link Here
368
    my ( $itemnumber, $all_dates ) = @_;
370
    my ( $itemnumber, $all_dates ) = @_;
369
    my $dbh   = C4::Context->dbh;
371
    my $dbh   = C4::Context->dbh;
370
    my $query = "
372
    my $query = "
371
    SELECT reservedate,borrowernumber,branchcode,reserve_id
373
    SELECT reservedate,borrowernumber,branchcode,reserve_id,waitingdate
372
    FROM   reserves
374
    FROM   reserves
373
    WHERE  itemnumber=?
375
    WHERE  itemnumber=?
374
    ";
376
    ";
375
    unless ( $all_dates ) {
377
    unless ( $all_dates ) {
376
	$query .= " AND reservedate <= CURRENT_DATE()";
378
	$query .= " AND reservedate <= CURRENT_DATE()";
377
    }
379
    }
380
    $query .= ' ORDER BY priority';
378
    my $sth_res = $dbh->prepare($query);
381
    my $sth_res = $dbh->prepare($query);
379
    $sth_res->execute($itemnumber);
382
    $sth_res->execute($itemnumber);
380
    my ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = $sth_res->fetchrow_array;
383
    my ( $reservedate, $borrowernumber,$branchcode, $reserve_id, $wait ) = $sth_res->fetchrow_array;
381
    return ( $reservedate, $borrowernumber, $branchcode, $reserve_id );
384
    return ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait );
382
}
385
}
383
386
384
=head2 GetReservesFromBorrowernumber
387
=head2 GetReservesFromBorrowernumber
(-)a/catalogue/detail.pl (-9 / +6 lines)
Lines 233-239 foreach my $item (@items) { Link Here
233
    }
233
    }
234
234
235
    # checking for holds
235
    # checking for holds
236
    my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($item->{itemnumber});
236
    my ($reservedate,$reservedfor,$expectedAt,undef,$wait) = GetReservesFromItemnumber($item->{itemnumber}, 1); #second parameter: all dates
237
        # all dates will include a future item level hold or a future wait
237
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
238
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
238
    
239
    
239
    if (C4::Context->preference('HidePatronName')){
240
    if (C4::Context->preference('HidePatronName')){
Lines 247-255 foreach my $item (@items) { Link Here
247
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
248
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
248
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
249
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
249
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
250
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
250
	$item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
251
        $item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
252
        # Check waiting status
253
        $item->{waitingdate} = format_date($wait) if $wait;
251
    }
254
    }
252
255
256
253
	# Check the transit status
257
	# Check the transit status
254
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
258
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
255
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
259
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
Lines 259-271 foreach my $item (@items) { Link Here
259
        $item->{nocancel} = 1;
263
        $item->{nocancel} = 1;
260
    }
264
    }
261
265
262
    # FIXME: move this to a pm, check waiting status for holds
263
    my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
264
    $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
265
    while (my $wait_hashref = $sth2->fetchrow_hashref) {
266
        $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
267
    }
268
269
    # item has a host number if its biblio number does not match the current bib
266
    # item has a host number if its biblio number does not match the current bib
270
    if ($item->{biblionumber} ne $biblionumber){
267
    if ($item->{biblionumber} ne $biblionumber){
271
        $item->{hostbiblionumber} = $item->{biblionumber};
268
        $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