Lines 239-259
sub AddReserve {
Link Here
|
239 |
); |
239 |
); |
240 |
} |
240 |
} |
241 |
} |
241 |
} |
242 |
|
|
|
243 |
#} |
244 |
($const eq "o" || $const eq "e") or return; # FIXME: why not have a useful return value? |
245 |
$query = qq{ |
246 |
INSERT INTO reserveconstraints |
247 |
(borrowernumber,biblionumber,reservedate,biblioitemnumber) |
248 |
VALUES |
249 |
(?,?,?,?) |
250 |
}; |
251 |
$sth = $dbh->prepare($query); # keep prepare outside the loop! |
252 |
foreach (@$bibitems) { |
253 |
$sth->execute($borrowernumber, $biblionumber, $resdate, $_); |
254 |
} |
255 |
|
256 |
return $reserve_id; |
257 |
} |
242 |
} |
258 |
|
243 |
|
259 |
=head2 GetReserve |
244 |
=head2 GetReserve |
Lines 331-380
sub GetReservesFromBiblionumber {
Link Here
|
331 |
push( @params, $itemnumber ); |
316 |
push( @params, $itemnumber ); |
332 |
} |
317 |
} |
333 |
$query .= "ORDER BY priority"; |
318 |
$query .= "ORDER BY priority"; |
334 |
my $sth = $dbh->prepare($query); |
319 |
return $dbh->selectall_arrayref( $query, { Slice => {} }, @params ); |
335 |
$sth->execute( @params ); |
|
|
336 |
my @results; |
337 |
my $i = 0; |
338 |
while ( my $data = $sth->fetchrow_hashref ) { |
339 |
|
340 |
# FIXME - What is this doing? How do constraints work? |
341 |
if ($data->{constrainttype} eq 'o') { |
342 |
$query = ' |
343 |
SELECT biblioitemnumber |
344 |
FROM reserveconstraints |
345 |
WHERE biblionumber = ? |
346 |
AND borrowernumber = ? |
347 |
AND reservedate = ? |
348 |
'; |
349 |
my $csth = $dbh->prepare($query); |
350 |
$csth->execute($data->{biblionumber}, $data->{borrowernumber}, $data->{reservedate}); |
351 |
my @bibitemno; |
352 |
while ( my $bibitemnos = $csth->fetchrow_array ) { |
353 |
push( @bibitemno, $bibitemnos ); # FIXME: inefficient: use fetchall_arrayref |
354 |
} |
355 |
my $count = scalar @bibitemno; |
356 |
|
357 |
# if we have two or more different specific itemtypes |
358 |
# reserved by same person on same day |
359 |
my $bdata; |
360 |
if ( $count > 1 ) { |
361 |
$bdata = GetBiblioItemData( $bibitemno[$i] ); # FIXME: This doesn't make sense. |
362 |
$i++; # $i can increase each pass, but the next @bibitemno might be smaller? |
363 |
} |
364 |
else { |
365 |
# Look up the book we just found. |
366 |
$bdata = GetBiblioItemData( $bibitemno[0] ); |
367 |
} |
368 |
# Add the results of this latest search to the current |
369 |
# results. |
370 |
# FIXME - An 'each' would probably be more efficient. |
371 |
foreach my $key ( keys %$bdata ) { |
372 |
$data->{$key} = $bdata->{$key}; |
373 |
} |
374 |
} |
375 |
push @results, $data; |
376 |
} |
377 |
return \@results; |
378 |
} |
320 |
} |
379 |
|
321 |
|
380 |
=head2 GetReservesFromItemnumber |
322 |
=head2 GetReservesFromItemnumber |
Lines 1970-2010
sub _Findgroupreserve {
Link Here
|
1970 |
push( @results, $data ) |
1912 |
push( @results, $data ) |
1971 |
unless any{ $data->{borrowernumber} eq $_ } @$ignore_borrowers ; |
1913 |
unless any{ $data->{borrowernumber} eq $_ } @$ignore_borrowers ; |
1972 |
} |
1914 |
} |
1973 |
return @results if @results; |
|
|
1974 |
|
1975 |
my $query = qq{ |
1976 |
SELECT reserves.biblionumber AS biblionumber, |
1977 |
reserves.borrowernumber AS borrowernumber, |
1978 |
reserves.reservedate AS reservedate, |
1979 |
reserves.waitingdate AS waitingdate, |
1980 |
reserves.branchcode AS branchcode, |
1981 |
reserves.cancellationdate AS cancellationdate, |
1982 |
reserves.found AS found, |
1983 |
reserves.reservenotes AS reservenotes, |
1984 |
reserves.priority AS priority, |
1985 |
reserves.timestamp AS timestamp, |
1986 |
reserveconstraints.biblioitemnumber AS biblioitemnumber, |
1987 |
reserves.itemnumber AS itemnumber, |
1988 |
reserves.reserve_id AS reserve_id |
1989 |
FROM reserves |
1990 |
LEFT JOIN reserveconstraints ON reserves.biblionumber = reserveconstraints.biblionumber |
1991 |
WHERE reserves.biblionumber = ? |
1992 |
AND ( ( reserveconstraints.biblioitemnumber = ? |
1993 |
AND reserves.borrowernumber = reserveconstraints.borrowernumber |
1994 |
AND reserves.reservedate = reserveconstraints.reservedate ) |
1995 |
OR reserves.constrainttype='a' ) |
1996 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1997 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1998 |
AND suspend = 0 |
1999 |
ORDER BY priority |
2000 |
}; |
2001 |
$sth = $dbh->prepare($query); |
2002 |
$sth->execute( $biblio, $bibitem, $itemnumber, $lookahead||0); |
2003 |
@results = (); |
2004 |
while ( my $data = $sth->fetchrow_hashref ) { |
2005 |
push( @results, $data ) |
2006 |
unless any{ $data->{borrowernumber} eq $_ } @$ignore_borrowers ; |
2007 |
} |
2008 |
return @results; |
1915 |
return @results; |
2009 |
} |
1916 |
} |
2010 |
|
1917 |
|