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

(-)a/C4/Reserves.pm (-68 lines)
Lines 105-111 BEGIN { Link Here
105
105
106
        &GetReserve
106
        &GetReserve
107
        &GetReservesFromItemnumber
107
        &GetReservesFromItemnumber
108
        &GetReservesFromBiblionumber
109
        &GetReservesFromBorrowernumber
108
        &GetReservesFromBorrowernumber
110
        &GetReservesForBranch
109
        &GetReservesForBranch
111
        &GetReservesToBranch
110
        &GetReservesToBranch
Lines 276-347 sub GetReserve { Link Here
276
    return $sth->fetchrow_hashref();
275
    return $sth->fetchrow_hashref();
277
}
276
}
278
277
279
=head2 GetReservesFromBiblionumber
280
281
  my $reserves = GetReservesFromBiblionumber({
282
    biblionumber => $biblionumber,
283
    [ itemnumber => $itemnumber, ]
284
    [ all_dates => 1|0 ]
285
  });
286
287
This function gets the list of reservations for one C<$biblionumber>,
288
returning an arrayref pointing to the reserves for C<$biblionumber>.
289
290
By default, only reserves whose start date falls before the current
291
time are returned.  To return all reserves, including future ones,
292
the C<all_dates> parameter can be included and set to a true value.
293
294
If the C<itemnumber> parameter is supplied, reserves must be targeted
295
to that item or not targeted to any item at all; otherwise, they
296
are excluded from the list.
297
298
=cut
299
300
sub GetReservesFromBiblionumber {
301
    my ( $params ) = @_;
302
    my $biblionumber = $params->{biblionumber} or return [];
303
    my $itemnumber = $params->{itemnumber};
304
    my $all_dates = $params->{all_dates} // 0;
305
    my $dbh   = C4::Context->dbh;
306
307
    # Find the desired items in the reserves
308
    my @params;
309
    my $query = "
310
        SELECT  reserve_id,
311
                branchcode,
312
                timestamp AS rtimestamp,
313
                priority,
314
                biblionumber,
315
                borrowernumber,
316
                reservedate,
317
                found,
318
                itemnumber,
319
                reservenotes,
320
                expirationdate,
321
                lowestPriority,
322
                suspend,
323
                suspend_until,
324
                itemtype
325
        FROM     reserves
326
        WHERE biblionumber = ? ";
327
    push( @params, $biblionumber );
328
    unless ( $all_dates ) {
329
        $query .= " AND reservedate <= CAST(NOW() AS DATE) ";
330
    }
331
    if ( $itemnumber ) {
332
        $query .= " AND ( itemnumber IS NULL OR itemnumber = ? )";
333
        push( @params, $itemnumber );
334
    }
335
    $query .= "ORDER BY priority";
336
    my $sth = $dbh->prepare($query);
337
    $sth->execute( @params );
338
    my @results;
339
    while ( my $data = $sth->fetchrow_hashref ) {
340
        push @results, $data;
341
    }
342
    return \@results;
343
}
344
345
=head2 GetReservesFromItemnumber
278
=head2 GetReservesFromItemnumber
346
279
347
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $waitingdate ) = GetReservesFromItemnumber($itemnumber);
280
 ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $waitingdate ) = GetReservesFromItemnumber($itemnumber);
348
- 

Return to bug 17736