<field reporter:label="Label" name="label" reporter:datatype="text"/>
<field reporter:label="Label Sort Key" name="label_sortkey" reporter:datatype="text"/>
<field reporter:label="Owning Library" name="owning_lib" reporter:datatype="org_unit"/>
+ <field reporter:label="Deleted" name="deleted" reporter:datatype="boolean"/>
</fields>
<links>
<link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
<field reporter:label="Label" name="label" reporter:datatype="text"/>
<field reporter:label="Label Sort Key" name="label_sortkey" reporter:datatype="text"/>
<field reporter:label="Owning Library" name="owning_lib" reporter:datatype="org_unit"/>
+ <field reporter:label="Deleted" name="deleted" reporter:datatype="boolean"/>
</fields>
<links>
<link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
<event code='1881' textcode='PERMISSION_GRP_PENALTY_THRESHOLD_NOT_FOUND'>
<desc xml:lang='en-US'>The requested permission_grp_penalty_threshold was not found</desc>
</event>
- <event code='1882' textcode='RECORD_REFERENCED_BY_LINEITEM'>
- <desc xml:lang="en-US">The selected bib record has an open lineitem order referencing it.</desc>
- </event>
+ <event code='1882' textcode='RECORD_REFERENCED_BY_LINEITEM'>
+ <desc xml:lang="en-US">The selected bib record has an open lineitem order referencing it.</desc>
+ </event>
+ <event code='1883' textcode='ACN_PREFIX_STILL_IN_USE'>
+ <desc xml:lang="en-US">One or more call number prefixes selected for deletion are still in use by non-deleted call numbers.</desc>
+ </event>
+ <event code='1884' textcode='ACN_SUFFIX_STILL_IN_USE'>
+ <desc xml:lang="en-US">One or more call number suffixes selected for deletion are still in use by non-deleted call numers.</desc>
+ </event>
<event code='1700' textcode='NON_CAT_TYPE_EXISTS'>
<desc xml:lang="en-US"> The non-cataloged type object already exists </desc>
id SERIAL PRIMARY KEY,
owning_lib INT NOT NULL REFERENCES actor.org_unit (id),
label TEXT NOT NULL, -- i18n
- label_sortkey TEXT
+ label_sortkey TEXT,
+ deleted BOOLEAN DEFAULT FALSE
);
CREATE TRIGGER prefix_normalize_tgr BEFORE INSERT OR UPDATE ON asset.call_number_prefix FOR EACH ROW EXECUTE PROCEDURE asset.normalize_affix_sortkey();
+CREATE RULE protect_acn_prefix_delete AS ON DELETE TO asset.call_number_prefix DO INSTEAD UPDATE asset.call_number_prefix SET deleted = TRUE WHERE OLD.id = asset.call_number_prefix.id;
CREATE UNIQUE INDEX asset_call_number_prefix_once_per_lib ON asset.call_number_prefix (label, owning_lib);
CREATE INDEX asset_call_number_prefix_sortkey_idx ON asset.call_number_prefix (label_sortkey);
id SERIAL PRIMARY KEY,
owning_lib INT NOT NULL REFERENCES actor.org_unit (id),
label TEXT NOT NULL, -- i18n
- label_sortkey TEXT
+ label_sortkey TEXT,
+ deleted BOOLEAN DEFAULT FALSE
);
CREATE TRIGGER suffix_normalize_tgr BEFORE INSERT OR UPDATE ON asset.call_number_suffix FOR EACH ROW EXECUTE PROCEDURE asset.normalize_affix_sortkey();
+CREATE RULE protect_acn_suffix_delete AS ON DELETE TO asset.call_number_suffix DO INSTEAD UPDATE asset.call_number_suffix SET deleted = TRUE WHERE OLD.id = asset.call_number_suffix.id;
CREATE UNIQUE INDEX asset_call_number_suffix_once_per_lib ON asset.call_number_suffix (label, owning_lib);
CREATE INDEX asset_call_number_suffix_sortkey_idx ON asset.call_number_suffix (label_sortkey);
--- /dev/null
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
+
+ALTER TABLE asset.call_number_suffix ADD COLUMN deleted BOOLEAN DEFAULT FALSE;
+ALTER TABLE asset.call_number_prefix ADD COLUMN deleted BOOLEAN DEFAULT FALSE;
+
+CREATE RULE protect_acn_suffix_delete AS ON DELETE TO asset.call_number_suffix DO INSTEAD UPDATE asset.call_number_suffix SET deleted = TRUE WHERE OLD.id = asset.call_number_suffix.id;
+CREATE RULE protect_acn_prefix_delete AS ON DELETE TO asset.call_number_prefix DO INSTEAD UPDATE asset.call_number_prefix SET deleted = TRUE WHERE OLD.id = asset.call_number_prefix.id;
+
+COMMIT;
</div>
<table jsId="thingGrid"
dojoType="openils.widget.AutoGrid"
- fieldOrder="['id', 'label', 'owning_lib']"
+ fieldOrder="['id', 'label', 'owning_lib', 'deleted']"
suppressFields="['label_sortkey']"
suppressEditFields="['label_sortkey']"
query="{id: '*'}"
</div>
<table jsId="thingGrid"
dojoType="openils.widget.AutoGrid"
- fieldOrder="['id', 'label', 'owning_lib']"
+ fieldOrder="['id', 'label', 'owning_lib', 'deleted']"
suppressFields="['label_sortkey']"
suppressEditFields="['label_sortkey']"
query="{id: '*'}"
{ async: true,
params: [
openils.User.authtoken,
- {"owning_lib":fieldmapper.aou.descendantNodeList(thingContextOrg,true)},
+ {"owning_lib":fieldmapper.aou.descendantNodeList(thingContextOrg,true),
+ deleted: 'f',
+ id != -1
+ },
{"order_by":{"acnp":"label_sortkey"}}
],
oncomplete: function(r) {
service.get_prefixes = function(org) {
return egCore.pcrud.search('acnp',
- {owning_lib : egCore.org.fullPath(org, true)},
+ {owning_lib : egCore.org.fullPath(org, true),
+ deleted : 'f'
+ },
{order_by : { acnp : 'label_sortkey' }}, {atomic : true}
);
service.get_suffixes = function(org) {
return egCore.pcrud.search('acns',
- {owning_lib : egCore.org.fullPath(org, true)},
+ {owning_lib : egCore.org.fullPath(org, true),
+ deleted : 'f'
+ },
{order_by : { acns : 'label_sortkey' }}, {atomic : true}
);