ahcm_1.copy_count AS potential_copies
FROM action.hold_request ahr
JOIN asset.copy acp ON (acp.id = ahr.current_copy)
+ JOIN config.copy_status ccs ON (ccs.id = acp.status)
JOIN asset.call_number acn ON (acp.call_number = acn.id)
JOIN asset.call_number_prefix acnp ON (acn.prefix = acnp.id)
JOIN asset.call_number_suffix acns ON (acn.suffix = acns.id)
ahr.cancel_time IS NULL AND
csp.id IS NULL AND
(ahr.expire_time is NULL OR ahr.expire_time > NOW()) AND
- acp.status IN (0,7)
+ ccs.is_available
]]></oils_persist:source_definition>
<fields oils_persist:primary="id">
<field reporter:label="Status" name="status" oils_persist:virtual="true" />
my $count = 1 if ($self->api_name =~/count$/o);
my $status_filter = '';
- $status_filter = 'AND a.status IN (0,7)' if ($self->api_name =~/status_filtered/o);
+ $status_filter =
+ 'AND a.status IN ((SELECT id FROM config.copy_status WHERE is_available))'
+ if ($self->api_name =~/status_filtered/o);
my $select = <<" SQL";
SELECT h.*
$self->{target_weight} = {};
$self->{max_loops} = {};
+ my %avail_statuses = map { $_->id => 1 }
+ @{asset::copy_status->search_where({is_available => 't'})};
+
my $holds;
try {
# reset prox list after trimming good copies
$prox_list = create_prox_list(
$self, $pu_lib,
- [ grep { $_->status == 0 || $_->status == 7 } @good_copies ],
+ [ grep { exists($avail_statuses{$_->status}) } @good_copies ],
$hold, $hold_copy_map
);
- $all_copies = [ grep { ''.$_->circ_lib ne $pu_lib && ( $_->status == 0 || $_->status == 7 ) } @good_copies ];
+ $all_copies = [ grep { ''.$_->circ_lib ne $pu_lib &&
+ exists($avail_statuses{$_->status}) } @good_copies ];
my $min_prox = [ sort keys %$prox_list ]->[0];
my $best;
my $reservations;
+ my %avail_statuses = map { $_->id => 1 }
+ @{asset::copy_status->search_where({is_available => 't'})};
+
try {
if ($one_reservation) {
$self->method_lookup('open-ils.storage.transaction.begin')->run( $client );
next;
}
- if ($copy->status->id == 0 || $copy->status->id == 7) {
+ if (exists($avail_statuses{$copy->status->id})) {
push @good_resources, $res;
next;
}