lp#825303: fix cat.default_classification_scheme lookup
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.fix_cat_default_class_lookup.sql
1 -- Evergreen DB patch XXXX.fix_cat_default_class_lookup.sql
2 --
3 -- Fix LP#825303 by allowing for ancestor OUs to be checked
4 -- when retrieving the default classification scheme.
5 --
6 BEGIN;
7
8
9 -- check whether patch can be applied
10 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
11
12 CREATE OR REPLACE FUNCTION asset.label_normalizer() RETURNS TRIGGER AS $func$
13 DECLARE
14     sortkey        TEXT := '';
15 BEGIN
16     sortkey := NEW.label_sortkey;
17
18     IF NEW.label_class IS NULL THEN
19             NEW.label_class := COALESCE(
20             (
21                 SELECT substring(value from E'\\d+')::integer
22                 FROM actor.org_unit_ancestor_setting('cat.default_classification_scheme', NEW.owning_lib)
23             ), 1
24         );
25     END IF;
26
27     EXECUTE 'SELECT ' || acnc.normalizer || '(' || 
28        quote_literal( NEW.label ) || ')'
29        FROM asset.call_number_class acnc
30        WHERE acnc.id = NEW.label_class
31        INTO sortkey;
32     NEW.label_sortkey = sortkey;
33     RETURN NEW;
34 END;
35 $func$ LANGUAGE PLPGSQL;
36
37
38 COMMIT;