]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0541.schema.call_number_honor_default_class.sql
Make label_class on any new call numbers default to org_unit setting
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0541.schema.call_number_honor_default_class.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0541', :eg_version); -- dbwells
4
5 ALTER TABLE asset.call_number ALTER COLUMN label_class DROP DEFAULT;
6
7 CREATE OR REPLACE FUNCTION asset.label_normalizer() RETURNS TRIGGER AS $func$
8 DECLARE
9     sortkey        TEXT := '';
10 BEGIN
11     sortkey := NEW.label_sortkey;
12
13     IF NEW.label_class IS NULL THEN
14         NEW.label_class := COALESCE( (SELECT substring(value from E'\\d+')::integer from actor.org_unit_setting WHERE name = 'cat.default_classification_scheme' AND org_unit = NEW.owning_lib), 1);
15     END IF;
16
17     EXECUTE 'SELECT ' || acnc.normalizer || '(' ||
18        quote_literal( NEW.label ) || ')'
19        FROM asset.call_number_class acnc
20        WHERE acnc.id = NEW.label_class
21        INTO sortkey;
22     NEW.label_sortkey = sortkey;
23     RETURN NEW;
24 END;
25 $func$ LANGUAGE PLPGSQL;
26
27 COMMIT;