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

(-)a/C4/Reserves.pm (-5 / +8 lines)
Lines 328-336 sub GetReservesFromBiblionumber { Link Here
328
328
329
=head2 GetReservesFromItemnumber
329
=head2 GetReservesFromItemnumber
330
330
331
 ( $reservedate, $borrowernumber, $branchcode ) = GetReservesFromItemnumber($itemnumber);
331
 ( $reservedate, $borrowernumber, $branchcode, $waitingdate ) = GetReservesFromItemnumber($itemnumber, $all_dates);
332
332
333
TODO :: Description here
333
Get the first reserve for a specific item number (based on priority). Returns the four abovementioned values for that reserve.
334
335
all_dates is an optional parameter, telling Koha to include or exclude future holds
334
336
335
=cut
337
=cut
336
338
Lines 338-354 sub GetReservesFromItemnumber { Link Here
338
    my ( $itemnumber, $all_dates ) = @_;
340
    my ( $itemnumber, $all_dates ) = @_;
339
    my $dbh   = C4::Context->dbh;
341
    my $dbh   = C4::Context->dbh;
340
    my $query = "
342
    my $query = "
341
    SELECT reservedate,borrowernumber,branchcode
343
    SELECT reservedate,borrowernumber,branchcode,waitingdate
342
    FROM   reserves
344
    FROM   reserves
343
    WHERE  itemnumber=?
345
    WHERE  itemnumber=?
344
    ";
346
    ";
345
    unless ( $all_dates ) {
347
    unless ( $all_dates ) {
346
	$query .= " AND reservedate <= CURRENT_DATE()";
348
	$query .= " AND reservedate <= CURRENT_DATE()";
347
    }
349
    }
350
    $query .= ' ORDER BY priority';
348
    my $sth_res = $dbh->prepare($query);
351
    my $sth_res = $dbh->prepare($query);
349
    $sth_res->execute($itemnumber);
352
    $sth_res->execute($itemnumber);
350
    my ( $reservedate, $borrowernumber,$branchcode ) = $sth_res->fetchrow_array;
353
    my ( $reservedate, $borrowernumber,$branchcode, $wait ) = $sth_res->fetchrow_array;
351
    return ( $reservedate, $borrowernumber, $branchcode );
354
    return ( $reservedate, $borrowernumber, $branchcode, $wait );
352
}
355
}
353
356
354
=head2 GetReservesFromBorrowernumber
357
=head2 GetReservesFromBorrowernumber
(-)a/catalogue/detail.pl (-9 / +6 lines)
Lines 219-225 foreach my $item (@items) { Link Here
219
    }
219
    }
220
220
221
    # checking for holds
221
    # checking for holds
222
    my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($item->{itemnumber});
222
    my ($reservedate,$reservedfor,$expectedAt, $wait) = GetReservesFromItemnumber($item->{itemnumber}, 1); #second parameter: all dates
223
        # all dates will include a future item level hold or a future wait
223
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
224
    my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
224
    
225
    
225
    if (C4::Context->preference('HidePatronName')){
226
    if (C4::Context->preference('HidePatronName')){
Lines 233-241 foreach my $item (@items) { Link Here
233
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
234
        $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
234
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
235
        $item->{ReservedForFirstname}   = $ItemBorrowerReserveInfo->{'firstname'};
235
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
236
        $item->{ExpectedAtLibrary}      = $branches->{$expectedAt}{branchname};
236
	$item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
237
        $item->{Reservedcardnumber}             = $ItemBorrowerReserveInfo->{'cardnumber'};
238
        # Check waiting status
239
        $item->{waitingdate} = format_date($wait) if $wait;
237
    }
240
    }
238
241
242
239
	# Check the transit status
243
	# Check the transit status
240
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
244
    my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});
241
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
245
    if ( defined( $transfertwhen ) && ( $transfertwhen ne '' ) ) {
Lines 245-257 foreach my $item (@items) { Link Here
245
        $item->{nocancel} = 1;
249
        $item->{nocancel} = 1;
246
    }
250
    }
247
251
248
    # FIXME: move this to a pm, check waiting status for holds
249
    my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
250
    $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
251
    while (my $wait_hashref = $sth2->fetchrow_hashref) {
252
        $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
253
    }
254
255
    # item has a host number if its biblio number does not match the current bib
252
    # item has a host number if its biblio number does not match the current bib
256
    if ($item->{biblionumber} ne $biblionumber){
253
    if ($item->{biblionumber} ne $biblionumber){
257
        $item->{hostbiblionumber} = $item->{biblionumber};
254
        $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,$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 386-392 foreach my $biblionumber (@biblionumbers) { Link Here
386
            }
386
            }
387
387
388
            # checking reserve
388
            # checking reserve
389
            my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber);
389
            my ($reservedate,$reservedfor,$expectedAt,$wait) = GetReservesFromItemnumber($itemnumber,1); #alldates parameter to include future holds/waits
390
            my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor );
390
            my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor );
391
391
392
            if ( defined $reservedate ) {
392
            if ( defined $reservedate ) {
Lines 396-402 foreach my $biblionumber (@biblionumbers) { Link Here
396
                $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
396
                $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
397
                $item->{ReservedForFirstname}     = $ItemBorrowerReserveInfo->{'firstname'};
397
                $item->{ReservedForFirstname}     = $ItemBorrowerReserveInfo->{'firstname'};
398
                $item->{ExpectedAtLibrary}     = $branches->{$expectedAt}{branchname};
398
                $item->{ExpectedAtLibrary}     = $branches->{$expectedAt}{branchname};
399
399
                $item->{waitingdate} = format_date($wait) if $wait;
400
            }
400
            }
401
401
402
            # Management of the notforloan document
402
            # Management of the notforloan document
Lines 482-494 foreach my $biblionumber (@biblionumbers) { Link Here
482
482
483
            # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
483
            # If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
484
484
485
            # FIXME: move this to a pm
486
            my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
487
            $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
488
            while (my $wait_hashref = $sth2->fetchrow_hashref) {
489
                $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
490
            }
491
492
            # Show serial enumeration when needed
485
            # Show serial enumeration when needed
493
            if ($item->{enumchron}) {
486
            if ($item->{enumchron}) {
494
                $itemdata_enumchron = 1;
487
                $itemdata_enumchron = 1;
495
- 

Return to bug 9788