|
Lines 252-257
sub can_be_transferred {
Link Here
|
| 252 |
return 0; |
252 |
return 0; |
| 253 |
} |
253 |
} |
| 254 |
|
254 |
|
|
|
255 |
=head3 validate_pickup_location |
| 256 |
|
| 257 |
$biblio->validate_pickup_location( {patron => $patron, pickup_location_id => $branchcode } ); |
| 258 |
|
| 259 |
Returns 1 if the pickup location is valid, nothing if it is not. This function is similar to, but distinct |
| 260 |
from pickup_locations in that it does not need to calculate all valid locations, but simply to check until |
| 261 |
1 item is found that validates the passed location. Rather than confusing the logic in that sub, some code |
| 262 |
is duplicated. |
| 263 |
|
| 264 |
=cut |
| 265 |
|
| 266 |
sub validate_pickup_location { |
| 267 |
my ( $self, $params ) = @_; |
| 268 |
|
| 269 |
my $patron = $params->{patron}; |
| 270 |
my $branchcode = $params->{pickup_location_id}; |
| 271 |
|
| 272 |
my %seen; |
| 273 |
foreach my $item ( $self->items->as_list ) { |
| 274 |
# The 5 variables below determine the valid locations for any item, no need to check twice |
| 275 |
my $cache_key = sprintf "Pickup_locations:%s:%s:%s:%s:%s", |
| 276 |
$item->itype,$item->homebranch,$item->holdingbranch,$item->ccode || "",$patron->branchcode||"" ; |
| 277 |
next if $seen{ $cache_key }; |
| 278 |
|
| 279 |
my @item_pickup_locations = $item->pickup_locations( { patron => $patron } )->_resultset->get_column('branchcode')->all; |
| 280 |
$seen{ $cache_key} = 1; |
| 281 |
|
| 282 |
return 1 if grep { $branchcode eq $_ } @item_pickup_locations; |
| 283 |
} |
| 284 |
|
| 285 |
return; |
| 286 |
} |
| 255 |
|
287 |
|
| 256 |
=head3 pickup_locations |
288 |
=head3 pickup_locations |
| 257 |
|
289 |
|