Lines 37-43
use C4::Debug;
Link Here
|
37 |
use Koha::DateUtils; |
37 |
use Koha::DateUtils; |
38 |
# use Data::Dumper; |
38 |
# use Data::Dumper; |
39 |
|
39 |
|
40 |
my $MAXIMUM_NUMBER_OF_RESERVES = C4::Context->preference("maxreserves"); |
40 |
my $maxreserves = C4::Context->preference("maxreserves"); |
|
|
41 |
my $max_holds_per_record = C4::Context->preference('MaxHoldsPerRecord'); |
41 |
|
42 |
|
42 |
my $query = new CGI; |
43 |
my $query = new CGI; |
43 |
my ( $template, $borrowernumber, $cookie ) = get_template_and_user( |
44 |
my ( $template, $borrowernumber, $cookie ) = get_template_and_user( |
Lines 171-177
foreach my $biblioNumber (@biblionumbers) {
Link Here
|
171 |
# |
172 |
# |
172 |
if ( $query->param('place_reserve') ) { |
173 |
if ( $query->param('place_reserve') ) { |
173 |
my $reserve_cnt = 0; |
174 |
my $reserve_cnt = 0; |
174 |
if ($MAXIMUM_NUMBER_OF_RESERVES) { |
175 |
if ($maxreserves) { |
175 |
$reserve_cnt = GetReservesFromBorrowernumber( $borrowernumber ); |
176 |
$reserve_cnt = GetReservesFromBorrowernumber( $borrowernumber ); |
176 |
} |
177 |
} |
177 |
|
178 |
|
Lines 255-262
if ( $query->param('place_reserve') ) {
Link Here
|
255 |
} |
256 |
} |
256 |
my $notes = $query->param('notes_'.$biblioNum)||''; |
257 |
my $notes = $query->param('notes_'.$biblioNum)||''; |
257 |
|
258 |
|
258 |
if ( $MAXIMUM_NUMBER_OF_RESERVES |
259 |
if ( $maxreserves |
259 |
&& $reserve_cnt >= $MAXIMUM_NUMBER_OF_RESERVES ) |
260 |
&& $reserve_cnt >= $maxreserves ) |
260 |
{ |
261 |
{ |
261 |
$canreserve = 0; |
262 |
$canreserve = 0; |
262 |
} |
263 |
} |
Lines 317-323
if ( CheckBorrowerDebarred($borrowernumber) ) {
Link Here
|
317 |
|
318 |
|
318 |
my @reserves = GetReservesFromBorrowernumber( $borrowernumber ); |
319 |
my @reserves = GetReservesFromBorrowernumber( $borrowernumber ); |
319 |
$template->param( RESERVES => \@reserves ); |
320 |
$template->param( RESERVES => \@reserves ); |
320 |
if ( $MAXIMUM_NUMBER_OF_RESERVES && (scalar(@reserves) >= $MAXIMUM_NUMBER_OF_RESERVES) ) { |
321 |
if ( $maxreserves && (scalar(@reserves) >= $maxreserves) ) { |
321 |
$template->param( message => 1 ); |
322 |
$template->param( message => 1 ); |
322 |
$noreserves = 1; |
323 |
$noreserves = 1; |
323 |
$template->param( too_many_reserves => scalar(@reserves)); |
324 |
$template->param( too_many_reserves => scalar(@reserves)); |
Lines 325-336
if ( $MAXIMUM_NUMBER_OF_RESERVES && (scalar(@reserves) >= $MAXIMUM_NUMBER_OF_RES
Link Here
|
325 |
foreach my $res (@reserves) { |
326 |
foreach my $res (@reserves) { |
326 |
foreach my $biblionumber (@biblionumbers) { |
327 |
foreach my $biblionumber (@biblionumbers) { |
327 |
if ( $res->{'biblionumber'} == $biblionumber && $res->{'borrowernumber'} == $borrowernumber) { |
328 |
if ( $res->{'biblionumber'} == $biblionumber && $res->{'borrowernumber'} == $borrowernumber) { |
328 |
# $template->param( message => 1 ); |
329 |
$biblioDataHash{$biblionumber}->{holds_count}++; |
329 |
# $noreserves = 1; |
|
|
330 |
# $template->param( already_reserved => 1 ); |
331 |
$biblioDataHash{$biblionumber}->{already_reserved} = 1; |
332 |
} |
330 |
} |
333 |
} |
331 |
} |
|
|
332 |
|
334 |
} |
333 |
} |
335 |
|
334 |
|
336 |
unless ($noreserves) { |
335 |
unless ($noreserves) { |
Lines 374-379
foreach my $biblioNum (@biblionumbers) {
Link Here
|
374 |
$biblioLoopIter{reservecount} = $biblioData->{reservecount}; |
373 |
$biblioLoopIter{reservecount} = $biblioData->{reservecount}; |
375 |
$biblioLoopIter{already_reserved} = $biblioData->{already_reserved}; |
374 |
$biblioLoopIter{already_reserved} = $biblioData->{already_reserved}; |
376 |
$biblioLoopIter{mandatorynotes}=0; #FIXME: For future use |
375 |
$biblioLoopIter{mandatorynotes}=0; #FIXME: For future use |
|
|
376 |
$biblioLoopIter{holds_count} = $biblioData->{holds_count}; |
377 |
|
377 |
|
378 |
if (!$itemLevelTypes && $biblioData->{itemtype}) { |
378 |
if (!$itemLevelTypes && $biblioData->{itemtype}) { |
379 |
$biblioLoopIter{description} = $itemTypes->{$biblioData->{itemtype}}{description}; |
379 |
$biblioLoopIter{description} = $itemTypes->{$biblioData->{itemtype}}{description}; |
Lines 500-510
foreach my $biblioNum (@biblionumbers) {
Link Here
|
500 |
$policy_holdallowed = 0; |
500 |
$policy_holdallowed = 0; |
501 |
} |
501 |
} |
502 |
|
502 |
|
503 |
if (IsAvailableForItemLevelRequest($itemNum) and $policy_holdallowed and CanItemBeReserved($borrowernumber,$itemNum) and ($itemLoopIter->{already_reserved} ne 1)) { |
503 |
if (IsAvailableForItemLevelRequest($itemNum) and $policy_holdallowed and CanItemBeReserved($borrowernumber,$itemNum) and ($itemLoopIter->{holds_count} < $max_holds_per_record )) { |
504 |
$itemLoopIter->{available} = 1; |
504 |
$itemLoopIter->{available} = 1; |
505 |
$numCopiesAvailable++; |
505 |
$numCopiesAvailable++; |
506 |
} |
506 |
} |
507 |
|
507 |
|
|
|
508 |
# Don't allow multiple item level holds on the same item if borrowers can place multiple holds on one bib |
509 |
$itemLoopIter->{available} = 0 if ( GetReservesFromBorrowernumber( $borrowernumber, undef, undef, $itemNum ) ); |
510 |
|
508 |
# FIXME: move this to a pm |
511 |
# FIXME: move this to a pm |
509 |
my $dbh = C4::Context->dbh; |
512 |
my $dbh = C4::Context->dbh; |
510 |
my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'"); |
513 |
my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'"); |
Lines 531-536
foreach my $biblioNum (@biblionumbers) {
Link Here
|
531 |
if ($biblioLoopIter{already_reserved}) { |
534 |
if ($biblioLoopIter{already_reserved}) { |
532 |
$biblioLoopIter{holdable} = undef; |
535 |
$biblioLoopIter{holdable} = undef; |
533 |
} |
536 |
} |
|
|
537 |
if ($biblioLoopIter{holds_count} >= $max_holds_per_record) { |
538 |
$biblioLoopIter{holdable} = undef; |
539 |
$anyholdable = undef; |
540 |
$biblioLoopIter{max_holds} = 1; |
541 |
} |
534 |
if(not CanBookBeReserved($borrowernumber,$biblioNum)){ |
542 |
if(not CanBookBeReserved($borrowernumber,$biblioNum)){ |
535 |
$biblioLoopIter{holdable} = undef; |
543 |
$biblioLoopIter{holdable} = undef; |
536 |
} |
544 |
} |