|
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 |
|