my $count = 1 if ($self->api_name =~/count$/o);
my $status_filter = '';
- $status_filter =
- 'AND a.status IN ((SELECT id FROM config.copy_status WHERE is_available))'
- if ($self->api_name =~/status_filtered/o);
+ $status_filter = 'AND a.status IN (0,7)' if ($self->api_name =~/status_filtered/o);
my $select = <<" SQL";
SELECT h.*
$self->{target_weight} = {};
$self->{max_loops} = {};
- my %avail_statuses = map { $_->id => 1 }
- config::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 { exists($avail_statuses{$_->status}) } @good_copies ],
+ [ grep { $_->status == 0 || $_->status == 7 } @good_copies ],
$hold, $hold_copy_map
);
- $all_copies = [ grep { ''.$_->circ_lib ne $pu_lib &&
- exists($avail_statuses{$_->status}) } @good_copies ];
+ $all_copies = [ grep { ''.$_->circ_lib ne $pu_lib && ( $_->status == 0 || $_->status == 7 ) } @good_copies ];
my $min_prox = [ sort keys %$prox_list ]->[0];
my $best;
my $reservations;
- my %avail_statuses = map { $_->id => 1 }
- config::copy_status->search_where({is_available => 't'});
-
try {
if ($one_reservation) {
$self->method_lookup('open-ils.storage.transaction.begin')->run( $client );
next;
}
- if (exists($avail_statuses{$copy->status->id})) {
+ if ($copy->status->id == 0 || $copy->status->id == 7) {
push @good_resources, $res;
next;
}
INSERT INTO config.copy_status (id,name,holdable,opac_visible) VALUES (5,oils_i18n_gettext(5, 'In process', 'ccs', 'name'),'t','t');
INSERT INTO config.copy_status (id,name,holdable,opac_visible,restrict_copy_delete) VALUES (6,oils_i18n_gettext(6, 'In transit', 'ccs', 'name'),'t','t','t');
INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,is_available) VALUES (7,oils_i18n_gettext(7, 'Reshelving', 'ccs', 'name'),'t','t','t','t');
-INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete,is_available) VALUES (8,oils_i18n_gettext(8, 'On holds shelf', 'ccs', 'name'),'t','t','t','t','t');
+INSERT INTO config.copy_status (id,name,holdable,opac_visible,copy_active,restrict_copy_delete) VALUES (8,oils_i18n_gettext(8, 'On holds shelf', 'ccs', 'name'),'t','t','t','t');
INSERT INTO config.copy_status (id,name,holdable,opac_visible) VALUES (9,oils_i18n_gettext(9, 'On order', 'ccs', 'name'),'t','t');
INSERT INTO config.copy_status (id,name,copy_active) VALUES (10,oils_i18n_gettext(10, 'ILL', 'ccs', 'name'),'t');
INSERT INTO config.copy_status (id,name) VALUES (11,oils_i18n_gettext(11, 'Cataloging', 'ccs', 'name'));
ADD COLUMN is_available BOOL NOT NULL DEFAULT FALSE;
UPDATE config.copy_status SET is_available = TRUE
- WHERE id IN (0, 7, 8); -- available, reshelving, holds shelf.
+ WHERE id IN (0, 7); -- available, reshelving, holds shelf.
CREATE OR REPLACE FUNCTION action.item_user_circ_test( circ_ou INT, match_item BIGINT, match_user INT, renewal BOOL ) RETURNS SETOF action.circ_matrix_test_result AS $func$
DECLARE
END IF;
-- Fail if the item isn't in a circulateable status on a non-renewal
- IF NOT renewal AND item_object.status NOT IN (
+ IF NOT renewal AND item_object.status <> 8 AND item_object.status NOT IN (
(SELECT id FROM config.copy_status WHERE is_available) ) THEN
result.fail_part := 'asset.copy.status';
result.success := FALSE;