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

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