|
Lines 310-315
See CanItemBeReserved() for possible return values.
Link Here
|
| 310 |
|
310 |
|
| 311 |
sub CanBookBeReserved{ |
311 |
sub CanBookBeReserved{ |
| 312 |
my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_; |
312 |
my ($borrowernumber, $biblionumber, $pickup_branchcode) = @_; |
|
|
313 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
| 314 |
my $borrower = $patron->unblessed; |
| 313 |
|
315 |
|
| 314 |
my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber"); |
316 |
my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber})->get_column("itemnumber"); |
| 315 |
#get items linked via host records |
317 |
#get items linked via host records |
|
Lines 319-325
sub CanBookBeReserved{
Link Here
|
| 319 |
} |
321 |
} |
| 320 |
|
322 |
|
| 321 |
my $canReserve = { status => '' }; |
323 |
my $canReserve = { status => '' }; |
|
|
324 |
my ($rights,$item); |
| 325 |
|
| 322 |
foreach my $itemnumber (@itemnumbers) { |
326 |
foreach my $itemnumber (@itemnumbers) { |
|
|
327 |
$item = Koha::Items->find($itemnumber); |
| 328 |
$rights = GetHoldRule( $borrower->{'categorycode'}, $item->{'itype'}, $pickup_branchcode ); |
| 329 |
return { 'status' => 'RecordHoldNotAllowed' } if $rights->{opacitemholds} eq 'F'; |
| 330 |
|
| 323 |
$canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode ); |
331 |
$canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode ); |
| 324 |
return { status => 'OK' } if $canReserve->{status} eq 'OK'; |
332 |
return { status => 'OK' } if $canReserve->{status} eq 'OK'; |
| 325 |
} |
333 |
} |
|
Lines 353-358
sub CanItemBeReserved {
Link Here
|
| 353 |
my $allowedreserves = 0; # Total number of holds allowed across all records |
361 |
my $allowedreserves = 0; # Total number of holds allowed across all records |
| 354 |
my $holds_per_record = 1; # Total number of holds allowed for this one given record |
362 |
my $holds_per_record = 1; # Total number of holds allowed for this one given record |
| 355 |
my $holds_per_day; # Default to unlimited |
363 |
my $holds_per_day; # Default to unlimited |
|
|
364 |
my $opacitemholds = 'Y'; # Itemlevel holds default to allowed |
| 365 |
|
| 366 |
# Get calling context |
| 367 |
my $caller = (caller(1))[3]; |
| 356 |
|
368 |
|
| 357 |
# we retrieve borrowers and items informations # |
369 |
# we retrieve borrowers and items informations # |
| 358 |
# item->{itype} will come for biblioitems if necessery |
370 |
# item->{itype} will come for biblioitems if necessery |
|
Lines 404-414
sub CanItemBeReserved {
Link Here
|
| 404 |
$allowedreserves = $rights->{reservesallowed} // $allowedreserves; |
416 |
$allowedreserves = $rights->{reservesallowed} // $allowedreserves; |
| 405 |
$holds_per_record = $rights->{holds_per_record} // $holds_per_record; |
417 |
$holds_per_record = $rights->{holds_per_record} // $holds_per_record; |
| 406 |
$holds_per_day = $rights->{holds_per_day}; |
418 |
$holds_per_day = $rights->{holds_per_day}; |
|
|
419 |
$opacitemholds = $rights->{opacitemholds}; |
| 407 |
} |
420 |
} |
| 408 |
else { |
421 |
else { |
| 409 |
$ruleitemtype = undef; |
422 |
$ruleitemtype = undef; |
| 410 |
} |
423 |
} |
| 411 |
|
424 |
|
|
|
425 |
if ( $opacitemholds eq "N" and index($caller,"CanBookBeReserved") eq -1 ) { |
| 426 |
return { status => "notReservable" }; |
| 427 |
} |
| 428 |
|
| 429 |
$item = Koha::Items->find( $itemnumber ); |
| 430 |
|
| 412 |
my $holds = Koha::Holds->search( |
431 |
my $holds = Koha::Holds->search( |
| 413 |
{ |
432 |
{ |
| 414 |
borrowernumber => $borrowernumber, |
433 |
borrowernumber => $borrowernumber, |
|
Lines 2252-2258
sub GetHoldRule {
Link Here
|
| 2252 |
itemtype => $itemtype, |
2271 |
itemtype => $itemtype, |
| 2253 |
categorycode => $categorycode, |
2272 |
categorycode => $categorycode, |
| 2254 |
branchcode => $branchcode, |
2273 |
branchcode => $branchcode, |
| 2255 |
rules => ['holds_per_record', 'holds_per_day'], |
2274 |
rules => ['holds_per_record', 'holds_per_day', 'opacitemholds'], |
| 2256 |
order_by => { |
2275 |
order_by => { |
| 2257 |
-desc => [ 'categorycode', 'itemtype', 'branchcode' ] |
2276 |
-desc => [ 'categorycode', 'itemtype', 'branchcode' ] |
| 2258 |
} |
2277 |
} |
|
Lines 2260-2265
sub GetHoldRule {
Link Here
|
| 2260 |
); |
2279 |
); |
| 2261 |
$rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record}; |
2280 |
$rules->{holds_per_record} = $holds_per_x_rules->{holds_per_record}; |
| 2262 |
$rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day}; |
2281 |
$rules->{holds_per_day} = $holds_per_x_rules->{holds_per_day}; |
|
|
2282 |
$rules->{opacitemholds} = $holds_per_x_rules->{opacitemholds}; |
| 2263 |
|
2283 |
|
| 2264 |
return $rules; |
2284 |
return $rules; |
| 2265 |
} |
2285 |
} |
| 2266 |
- |
|
|