|
Lines 331-336
sub CanBookBeReserved{
Link Here
|
| 331 |
return { status =>'alreadypossession' }; |
331 |
return { status =>'alreadypossession' }; |
| 332 |
} |
332 |
} |
| 333 |
|
333 |
|
|
|
334 |
if ( $params->{itemtype} |
| 335 |
and C4::Context->preference('BiblioHoldItemTypeUseForRules') ) |
| 336 |
{ |
| 337 |
# biblio-level, item type-contrained |
| 338 |
my $patron = Koha::Patrons->find($borrowernumber); |
| 339 |
my $reservesallowed = Koha::CirculationRules->get_effective_rule( |
| 340 |
{ |
| 341 |
itemtype => $params->{itemtype}, |
| 342 |
categorycode => $patron->categorycode, |
| 343 |
branchcode => $pickup_branchcode, |
| 344 |
rule_name => 'reservesallowed', |
| 345 |
} |
| 346 |
)->rule_value; |
| 347 |
my $count = $patron->holds->search( |
| 348 |
{ |
| 349 |
'-or' => [ |
| 350 |
{ 'me.itemtype' => $params->{itemtype} }, |
| 351 |
{ 'item.itype' => $params->{itemtype} } |
| 352 |
] |
| 353 |
}, |
| 354 |
{ |
| 355 |
join => ['item'] |
| 356 |
} |
| 357 |
)->count; |
| 358 |
|
| 359 |
return { status => '' } |
| 360 |
unless $reservesallowed > $count; |
| 361 |
} |
| 362 |
|
| 334 |
my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber"); |
363 |
my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber"); |
| 335 |
#get items linked via host records |
364 |
#get items linked via host records |
| 336 |
my @hostitems = get_hostitemnumbers_of($biblionumber); |
365 |
my @hostitems = get_hostitemnumbers_of($biblionumber); |
|
Lines 485-501
sub CanItemBeReserved {
Link Here
|
| 485 |
|
514 |
|
| 486 |
$querycount .= "AND ( $branchfield = ? OR $branchfield IS NULL )"; |
515 |
$querycount .= "AND ( $branchfield = ? OR $branchfield IS NULL )"; |
| 487 |
|
516 |
|
| 488 |
# If using item-level itypes, fall back to the record |
517 |
if ( defined $ruleitemtype and C4::Context->preference('BiblioHoldItemTypeUseForRules') ) { |
| 489 |
# level itemtype if the hold has no associated item |
518 |
if ( C4::Context->preference('item-level_itypes') ) { |
| 490 |
$querycount .= |
519 |
$querycount .= q{ |
| 491 |
C4::Context->preference('item-level_itypes') |
520 |
AND ( COALESCE( items.itype, biblioitems.itemtype ) = ? |
| 492 |
? " AND COALESCE( items.itype, biblioitems.itemtype ) = ?" |
521 |
OR reserves.itemtype = ? ) |
| 493 |
: " AND biblioitems.itemtype = ?" |
522 |
}; |
| 494 |
if defined $ruleitemtype; |
523 |
} |
|
|
524 |
else { |
| 525 |
$querycount .= q{ |
| 526 |
AND ( biblioitems.itemtype = ? |
| 527 |
OR reserves.itemtype = ? ) |
| 528 |
}; |
| 529 |
} |
| 530 |
} |
| 531 |
elsif ( defined $ruleitemtype ) { |
| 532 |
# If using item-level itypes, fall back to the record |
| 533 |
# level itemtype if the hold has no associated item |
| 534 |
$querycount .= |
| 535 |
C4::Context->preference('item-level_itypes') |
| 536 |
? " AND COALESCE( items.itype, biblioitems.itemtype ) = ?" |
| 537 |
: " AND biblioitems.itemtype = ?"; |
| 538 |
} |
| 495 |
|
539 |
|
| 496 |
my $sthcount = $dbh->prepare($querycount); |
540 |
my $sthcount = $dbh->prepare($querycount); |
| 497 |
|
541 |
|
| 498 |
if ( defined $ruleitemtype ) { |
542 |
if ( defined $ruleitemtype and C4::Context->preference('BiblioHoldItemTypeUseForRules') ) { |
|
|
543 |
$sthcount->execute( $borrowernumber, $branchcode, $ruleitemtype, $ruleitemtype ); |
| 544 |
} |
| 545 |
elsif ( defined $ruleitemtype ) { |
| 499 |
$sthcount->execute( $borrowernumber, $branchcode, $ruleitemtype ); |
546 |
$sthcount->execute( $borrowernumber, $branchcode, $ruleitemtype ); |
| 500 |
} |
547 |
} |
| 501 |
else { |
548 |
else { |
| 502 |
- |
|
|