<field name="hold" reporter:datatype="link"/>
<field name="id" reporter:datatype="id" />
<field name="target_copy" reporter:datatype="link"/>
+ <field name="proximity" reporter:datatype="number"/>
</fields>
<links>
<link field="hold" reltype="has_a" key="id" map="" class="ahr"/>
use base qw/action/;
__PACKAGE__->table('action_hold_copy_map');
__PACKAGE__->columns(Primary => 'id');
-__PACKAGE__->columns(Essential => qw/hold target_copy/);
+__PACKAGE__->columns(Essential => qw/hold target_copy proximity/);
#-------------------------------------------------------------------------------
}
}
- $prox_list = create_prox_list( $self, $pu_lib, $all_copies );
+ $prox_list = create_prox_list( $self, $pu_lib, $all_copies, $hold );
$client->status( new OpenSRF::DomainObject::oilsContinueStatus );
my $self = shift;
my $lib = shift;
my $copies = shift;
+ my $hold = shift;
my $actor = OpenSRF::AppSession->create('open-ils.actor');
my @prox_list;
for my $cp (@$copies) {
- my ($prox) = $self->method_lookup('open-ils.storage.asset.copy.proximity')->run( $cp, $lib );
+ my ($prox) = $self->method_lookup('open-ils.storage.asset.copy.proximity')->run( $cp, $lib, $hold );
next unless (defined($prox));
my $copy_circ_lib = ''.$cp->circ_lib;
my $cp = shift;
my $org = shift;
+ my $hold = shift;
return unless ($cp && $org);
+ if ($hold) {
+ my $prox = action::hold_request->db_Main->selectrow_hashref(
+ 'SELECT proximity AS prox FROM action.hold_copy_map WHERE hold = ? and target_copy = ?',
+ {},
+ "$hold",
+ "$cp"
+ )->{prox} || action::hold_request->db_Main->selectrow_hashref(
+ 'SELECT action.hold_copy_calculated_proximity(?,?,?) AS prox',
+ {},
+ "$hold",
+ "$cp",
+ "$org"
+ )->{prox};
+ return int($prox * 100.0);
+ }
+
$cp = asset::copy->retrieve($cp) unless (ref($cp));
return unless $cp;