|
Lines 550-555
sub can_be_transferred {
Link Here
|
| 550 |
$limittype => $limittype eq 'itemtype' |
550 |
$limittype => $limittype eq 'itemtype' |
| 551 |
? $self->effective_itemtype : $self->ccode |
551 |
? $self->effective_itemtype : $self->ccode |
| 552 |
})->count ? 0 : 1; |
552 |
})->count ? 0 : 1; |
|
|
553 |
|
| 554 |
} |
| 555 |
|
| 556 |
=head3 _can_pickup_at |
| 557 |
|
| 558 |
$item->_can_pickup_at({ to => $to_libraries, from => $from_library }) |
| 559 |
Checks if an item can be transferred to given libraries. |
| 560 |
|
| 561 |
This feature is controlled by two system preferences: |
| 562 |
UseBranchTransferLimits to enable / disable the feature |
| 563 |
BranchTransferLimitsType to use either an itemnumber or ccode as an identifier |
| 564 |
for setting the limitations |
| 565 |
|
| 566 |
Takes HASHref that can have the following parameters: |
| 567 |
MANDATORY PARAMETERS: |
| 568 |
$to : Array of Koha::Libraries |
| 569 |
OPTIONAL PARAMETERS: |
| 570 |
$from : Koha::Library # if not given, item holdingbranch |
| 571 |
# will be used instead |
| 572 |
|
| 573 |
Returns arry of Koha::Libraries that item can be transferred to $to_library and |
| 574 |
are pickup_locations |
| 575 |
|
| 576 |
If checking only one library please use $item->can_be_transferred. |
| 577 |
|
| 578 |
=cut |
| 579 |
|
| 580 |
sub _can_pickup_at { |
| 581 |
my ($self, $params ) = @_; |
| 582 |
|
| 583 |
my $to = $params->{to}; |
| 584 |
my $from = $params->{from}; |
| 585 |
$from = defined $from ? $from->branchcode : $self->holdingbranch; |
| 586 |
|
| 587 |
my @pickup_locations; |
| 588 |
my @destination_codes; |
| 589 |
foreach my $lib (@$to){ |
| 590 |
next unless $lib->pickup_location; |
| 591 |
push @destination_codes, $lib->branchcode; |
| 592 |
push @pickup_locations, $lib; |
| 593 |
} |
| 594 |
|
| 595 |
return \@pickup_locations unless C4::Context->preference('UseBranchTransferLimits'); |
| 596 |
|
| 597 |
my $limittype = C4::Context->preference('BranchTransferLimitsType'); |
| 598 |
my $limiter = $limittype eq 'itemtype' ? $self->effective_itemtype : $self->ccode; |
| 599 |
|
| 600 |
my $limits = Koha::Item::Transfer::Limits->search({ |
| 601 |
fromBranch => $from, |
| 602 |
$limittype => $limiter |
| 603 |
}); |
| 604 |
my @limits = $limits->get_column('toBranch'); |
| 605 |
return \@pickup_locations unless @limits; |
| 606 |
|
| 607 |
my @can_transfer = Koha::Libraries->search({ |
| 608 |
pickup_location => 1, |
| 609 |
branchcode => { |
| 610 |
-in => \@destination_codes, |
| 611 |
-not_in => \@limits, |
| 612 |
} |
| 613 |
}); |
| 614 |
return \@can_transfer; |
| 553 |
} |
615 |
} |
| 554 |
|
616 |
|
| 555 |
=head3 pickup_locations |
617 |
=head3 pickup_locations |
|
Lines 596-609
sub pickup_locations {
Link Here
|
| 596 |
})->as_list; |
658 |
})->as_list; |
| 597 |
} |
659 |
} |
| 598 |
|
660 |
|
| 599 |
my @pickup_locations; |
661 |
my $pickup_locations = $self->_can_pickup_at({ |
| 600 |
foreach my $library (@libs) { |
662 |
to => \@libs |
| 601 |
if ($library->pickup_location && $self->can_be_transferred({ to => $library })) { |
663 |
}); |
| 602 |
push @pickup_locations, $library; |
|
|
| 603 |
} |
| 604 |
} |
| 605 |
|
664 |
|
| 606 |
return \@pickup_locations; |
665 |
return $pickup_locations; |
| 607 |
} |
666 |
} |
| 608 |
|
667 |
|
| 609 |
=head3 article_request_type |
668 |
=head3 article_request_type |
| 610 |
- |
|
|