Process changes in PIVOT (contexts as columns)
This commit is contained in:
parent
6333047257
commit
a284f61086
@ -163,6 +163,63 @@ CREATE OR REPLACE PACKAGE app_actions AS
|
|||||||
in_is_date settings.is_date%TYPE := NULL,
|
in_is_date settings.is_date%TYPE := NULL,
|
||||||
in_description settings.description_%TYPE := NULL
|
in_description settings.description_%TYPE := NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Store/update settings for specific contexts (pivot), including default
|
||||||
|
--
|
||||||
|
PROCEDURE set_setting_bulk (
|
||||||
|
in_c001 settings.setting_value%TYPE,
|
||||||
|
in_c002 settings.setting_value%TYPE,
|
||||||
|
in_c003 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c004 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c005 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c006 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c007 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c008 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c009 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c010 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c011 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c012 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c013 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c014 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c015 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c016 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c017 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c018 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c019 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c020 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c021 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c022 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c023 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c024 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c025 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c026 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c027 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c028 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c029 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c030 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c031 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c032 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c033 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c034 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c035 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c036 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c037 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c038 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c039 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c040 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c041 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c042 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c043 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c044 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c045 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c046 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c047 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c048 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c049 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c050 settings.setting_value%TYPE := NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -444,6 +444,61 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
|
|
||||||
PROCEDURE rebuild_settings AS
|
PROCEDURE rebuild_settings AS
|
||||||
q VARCHAR2(32767);
|
q VARCHAR2(32767);
|
||||||
|
PROCEDURE set_setting_bulk (
|
||||||
|
in_c001 settings.setting_value%TYPE,
|
||||||
|
in_c002 settings.setting_value%TYPE,
|
||||||
|
in_c003 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c004 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c005 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c006 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c007 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c008 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c009 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c010 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c011 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c012 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c013 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c014 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c015 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c016 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c017 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c018 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c019 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c020 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c021 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c022 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c023 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c024 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c025 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c026 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c027 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c028 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c029 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c030 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c031 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c032 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c033 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c034 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c035 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c036 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c037 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c038 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c039 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c040 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c041 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c042 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c043 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c044 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c045 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c046 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c047 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c048 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c049 settings.setting_value%TYPE := NULL,
|
||||||
|
in_c050 settings.setting_value%TYPE := NULL
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
rec settings%ROWTYPE;
|
||||||
|
v_offset CONSTANT PLS_INTEGER := 3; -- used columns (name, group, default)
|
||||||
BEGIN
|
BEGIN
|
||||||
app.log_module();
|
app.log_module();
|
||||||
|
|
||||||
@ -472,13 +527,38 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
END LOOP;
|
END LOOP;
|
||||||
--
|
--
|
||||||
q := q || CHR(10) || 'END;';
|
q := q || CHR(10) || 'END;';
|
||||||
|
app.log_module(in_args => app.get_json_list(
|
||||||
|
in_c001, in_c002, in_c003, in_c004, in_c005, in_c006
|
||||||
|
));
|
||||||
--
|
--
|
||||||
EXECUTE IMMEDIATE q;
|
EXECUTE IMMEDIATE q;
|
||||||
|
rec.app_id := app.get_app_id();
|
||||||
|
rec.setting_name := in_c001;
|
||||||
|
rec.setting_value := in_c003; -- fill in the loop
|
||||||
|
rec.setting_context := NULL; -- fill in the loop
|
||||||
|
rec.setting_group := in_c002;
|
||||||
|
rec.updated_by := app.get_user_id();
|
||||||
|
rec.updated_at := SYSDATE;
|
||||||
|
|
||||||
|
-- cleanup setting
|
||||||
|
DELETE FROM settings s
|
||||||
|
WHERE s.app_id = rec.app_id
|
||||||
|
AND s.setting_name = rec.setting_name
|
||||||
|
AND s.setting_context IS NOT NULL;
|
||||||
|
|
||||||
|
-- update default value
|
||||||
|
UPDATE settings s
|
||||||
|
SET ROW = rec
|
||||||
|
WHERE s.app_id = rec.app_id
|
||||||
|
AND s.setting_name = rec.setting_name
|
||||||
|
AND s.setting_context IS NULL;
|
||||||
|
|
||||||
-- create package body
|
-- create package body
|
||||||
q := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(in_settings_package) || ' AS' || CHR(10);
|
q := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(in_settings_package) || ' AS' || CHR(10);
|
||||||
--
|
--
|
||||||
FOR c IN (
|
FOR c IN (
|
||||||
|
-- match order with view on page
|
||||||
|
FOR r IN (
|
||||||
SELECT
|
SELECT
|
||||||
s.setting_name,
|
s.setting_name,
|
||||||
MAX(s.is_numeric) AS is_numeric,
|
MAX(s.is_numeric) AS is_numeric,
|
||||||
@ -487,6 +567,10 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
WHERE s.app_id = app.get_app_id()
|
WHERE s.app_id = app.get_app_id()
|
||||||
GROUP BY s.setting_name
|
GROUP BY s.setting_name
|
||||||
ORDER BY s.setting_name
|
ORDER BY s.setting_name
|
||||||
|
s.context_id,
|
||||||
|
'C' || SUBSTR(1000 + v_offset + ROW_NUMBER() OVER(ORDER BY s.order# NULLS LAST, s.context_id), 2, 3) AS arg
|
||||||
|
FROM setting_contexts s
|
||||||
|
WHERE s.app_id = rec.app_id
|
||||||
) LOOP
|
) LOOP
|
||||||
q := q || CHR(10);
|
q := q || CHR(10);
|
||||||
q := q || ' FUNCTION ' || LOWER(in_settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
q := q || ' FUNCTION ' || LOWER(in_settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
||||||
@ -511,6 +595,68 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
q := q || ' WHEN NO_DATA_FOUND THEN' || CHR(10);
|
q := q || ' WHEN NO_DATA_FOUND THEN' || CHR(10);
|
||||||
q := q || ' RETURN NULL;' || CHR(10);
|
q := q || ' RETURN NULL;' || CHR(10);
|
||||||
q := q || ' END;' || CHR(10);
|
q := q || ' END;' || CHR(10);
|
||||||
|
CONTINUE WHEN r.arg IN ('C001', 'C002', 'C003');
|
||||||
|
--
|
||||||
|
rec.setting_context := CASE
|
||||||
|
WHEN r.arg = 'C003' THEN r.context_id WHEN r.arg = 'C004' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C005' THEN r.context_id WHEN r.arg = 'C006' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C007' THEN r.context_id WHEN r.arg = 'C008' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C009' THEN r.context_id WHEN r.arg = 'C010' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C011' THEN r.context_id WHEN r.arg = 'C012' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C013' THEN r.context_id WHEN r.arg = 'C014' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C015' THEN r.context_id WHEN r.arg = 'C016' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C017' THEN r.context_id WHEN r.arg = 'C018' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C019' THEN r.context_id WHEN r.arg = 'C020' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C021' THEN r.context_id WHEN r.arg = 'C022' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C023' THEN r.context_id WHEN r.arg = 'C024' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C025' THEN r.context_id WHEN r.arg = 'C026' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C027' THEN r.context_id WHEN r.arg = 'C028' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C029' THEN r.context_id WHEN r.arg = 'C030' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C031' THEN r.context_id WHEN r.arg = 'C032' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C033' THEN r.context_id WHEN r.arg = 'C034' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C035' THEN r.context_id WHEN r.arg = 'C036' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C037' THEN r.context_id WHEN r.arg = 'C038' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C039' THEN r.context_id WHEN r.arg = 'C040' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C041' THEN r.context_id WHEN r.arg = 'C042' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C043' THEN r.context_id WHEN r.arg = 'C044' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C045' THEN r.context_id WHEN r.arg = 'C046' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C047' THEN r.context_id WHEN r.arg = 'C048' THEN r.context_id
|
||||||
|
WHEN r.arg = 'C049' THEN r.context_id WHEN r.arg = 'C050' THEN r.context_id
|
||||||
|
END;
|
||||||
|
--
|
||||||
|
rec.setting_value := CASE
|
||||||
|
WHEN r.arg = 'C003' THEN in_c003 WHEN r.arg = 'C004' THEN in_c004
|
||||||
|
WHEN r.arg = 'C005' THEN in_c005 WHEN r.arg = 'C006' THEN in_c006
|
||||||
|
WHEN r.arg = 'C007' THEN in_c007 WHEN r.arg = 'C008' THEN in_c008
|
||||||
|
WHEN r.arg = 'C009' THEN in_c009 WHEN r.arg = 'C010' THEN in_c010
|
||||||
|
WHEN r.arg = 'C011' THEN in_c011 WHEN r.arg = 'C012' THEN in_c012
|
||||||
|
WHEN r.arg = 'C013' THEN in_c013 WHEN r.arg = 'C014' THEN in_c014
|
||||||
|
WHEN r.arg = 'C015' THEN in_c015 WHEN r.arg = 'C016' THEN in_c016
|
||||||
|
WHEN r.arg = 'C017' THEN in_c017 WHEN r.arg = 'C018' THEN in_c018
|
||||||
|
WHEN r.arg = 'C019' THEN in_c019 WHEN r.arg = 'C020' THEN in_c020
|
||||||
|
WHEN r.arg = 'C021' THEN in_c021 WHEN r.arg = 'C022' THEN in_c022
|
||||||
|
WHEN r.arg = 'C023' THEN in_c023 WHEN r.arg = 'C024' THEN in_c024
|
||||||
|
WHEN r.arg = 'C025' THEN in_c025 WHEN r.arg = 'C026' THEN in_c026
|
||||||
|
WHEN r.arg = 'C027' THEN in_c027 WHEN r.arg = 'C028' THEN in_c028
|
||||||
|
WHEN r.arg = 'C029' THEN in_c029 WHEN r.arg = 'C030' THEN in_c030
|
||||||
|
WHEN r.arg = 'C031' THEN in_c031 WHEN r.arg = 'C032' THEN in_c032
|
||||||
|
WHEN r.arg = 'C033' THEN in_c033 WHEN r.arg = 'C034' THEN in_c034
|
||||||
|
WHEN r.arg = 'C035' THEN in_c035 WHEN r.arg = 'C036' THEN in_c036
|
||||||
|
WHEN r.arg = 'C037' THEN in_c037 WHEN r.arg = 'C038' THEN in_c038
|
||||||
|
WHEN r.arg = 'C039' THEN in_c039 WHEN r.arg = 'C040' THEN in_c040
|
||||||
|
WHEN r.arg = 'C041' THEN in_c041 WHEN r.arg = 'C042' THEN in_c042
|
||||||
|
WHEN r.arg = 'C043' THEN in_c043 WHEN r.arg = 'C044' THEN in_c044
|
||||||
|
WHEN r.arg = 'C045' THEN in_c045 WHEN r.arg = 'C046' THEN in_c046
|
||||||
|
WHEN r.arg = 'C047' THEN in_c047 WHEN r.arg = 'C048' THEN in_c048
|
||||||
|
WHEN r.arg = 'C049' THEN in_c049 WHEN r.arg = 'C050' THEN in_c050
|
||||||
|
END;
|
||||||
|
--
|
||||||
|
app.log_result(in_args => app.get_json_list(r.arg, rec.setting_name, rec.setting_context, rec.setting_value));
|
||||||
|
--
|
||||||
|
CONTINUE WHEN (rec.setting_context IS NULL OR rec.setting_value IS NULL);
|
||||||
|
--
|
||||||
|
INSERT INTO settings
|
||||||
|
VALUES rec;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
--
|
--
|
||||||
q := q || CHR(10) || 'END;';
|
q := q || CHR(10) || 'END;';
|
||||||
@ -519,6 +665,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
EXECUTE IMMEDIATE q;
|
EXECUTE IMMEDIATE q;
|
||||||
--
|
--
|
||||||
recompile();
|
recompile();
|
||||||
|
app.log_success();
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN app.app_exception THEN
|
WHEN app.app_exception THEN
|
||||||
RAISE;
|
RAISE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user