From 84ed895a920c8a7ae290982bb314b763bfb81d96 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Sat, 5 Feb 2022 14:25:45 +0100 Subject: [PATCH] Add is_private to settings, move to app package --- apex/f770/application/pages/page_00970.sql | 90 ++++++++++++++------ packages/app.spec.sql | 7 ++ packages/app.sql | 93 ++++++++++++++++++++ packages/app_actions.spec.sql | 24 +----- packages/app_actions.sql | 99 ++-------------------- tables/settings.sql | 7 +- views/settings_overview.sql | 7 +- 7 files changed, 183 insertions(+), 144 deletions(-) diff --git a/apex/f770/application/pages/page_00970.sql b/apex/f770/application/pages/page_00970.sql index be034a2..e4ff1ed 100644 --- a/apex/f770/application/pages/page_00970.sql +++ b/apex/f770/application/pages/page_00970.sql @@ -23,7 +23,7 @@ wwv_flow_api.create_page( ,p_page_template_options=>'#DEFAULT#' ,p_required_role=>wwv_flow_api.id(9823062898204869) ,p_last_updated_by=>'DEV' -,p_last_upd_yyyymmddhh24miss=>'20220129093705' +,p_last_upd_yyyymmddhh24miss=>'20220205130844' ); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(11853608143169127) @@ -35,7 +35,7 @@ wwv_flow_api.create_page_plug( ,p_include_in_reg_disp_sel_yn=>'Y' ,p_plug_display_point=>'BODY' ,p_plug_source=>wwv_flow_string.join(wwv_flow_t_varchar2( -'Settings for the application available to developers through generated package.&P970_USECASE!RAW.', +'Settings for the application available to developers through generated package. &P970_USECASE!RAW.', '')) ,p_plug_query_options=>'DERIVED_REPORT_COLUMNS' ,p_attribute_01=>'N' @@ -163,11 +163,11 @@ wwv_flow_api.create_region_column( ,p_source_type=>'DB_COLUMN' ,p_source_expression=>'DESCRIPTION_' ,p_data_type=>'VARCHAR2' -,p_is_query_only=>true +,p_is_query_only=>false ,p_item_type=>'NATIVE_TEXT_FIELD' ,p_heading=>'Description' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>140 +,p_display_sequence=>150 ,p_value_alignment=>'LEFT' ,p_attribute_05=>'BOTH' ,p_is_required=>false @@ -181,6 +181,7 @@ wwv_flow_api.create_region_column( ,p_enable_sort_group=>false ,p_enable_hide=>true ,p_is_primary_key=>false +,p_duplicate_value=>true ,p_include_in_export=>true ); wwv_flow_api.create_region_column( @@ -255,7 +256,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Updated By' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>150 +,p_display_sequence=>160 ,p_value_alignment=>'LEFT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -282,7 +283,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Updated At' ,p_heading_alignment=>'LEFT' -,p_display_sequence=>160 +,p_display_sequence=>170 ,p_value_alignment=>'LEFT' ,p_attribute_02=>'VALUE' ,p_attribute_05=>'PLAIN' @@ -452,7 +453,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Procedures' ,p_heading_alignment=>'RIGHT' -,p_display_sequence=>120 +,p_display_sequence=>130 ,p_value_alignment=>'RIGHT' ,p_group_id=>wwv_flow_api.id(12335175952960920) ,p_use_group_for=>'BOTH' @@ -478,7 +479,7 @@ wwv_flow_api.create_region_column( ,p_item_type=>'NATIVE_DISPLAY_ONLY' ,p_heading=>'Views' ,p_heading_alignment=>'RIGHT' -,p_display_sequence=>130 +,p_display_sequence=>140 ,p_value_alignment=>'RIGHT' ,p_group_id=>wwv_flow_api.id(12335175952960920) ,p_use_group_for=>'BOTH' @@ -494,6 +495,35 @@ wwv_flow_api.create_region_column( ,p_is_primary_key=>false ,p_include_in_export=>true ); +wwv_flow_api.create_region_column( + p_id=>wwv_flow_api.id(22942157447325326) +,p_name=>'IS_PRIVATE' +,p_source_type=>'DB_COLUMN' +,p_source_expression=>'IS_PRIVATE' +,p_data_type=>'VARCHAR2' +,p_is_query_only=>false +,p_item_type=>'NATIVE_SINGLE_CHECKBOX' +,p_heading=>'Private' +,p_heading_alignment=>'CENTER' +,p_display_sequence=>120 +,p_value_alignment=>'CENTER' +,p_attribute_01=>'Y' +,p_is_required=>false +,p_enable_filter=>true +,p_filter_operators=>'C:S:CASE_INSENSITIVE:REGEXP' +,p_filter_is_required=>false +,p_filter_text_case=>'MIXED' +,p_filter_exact_match=>true +,p_filter_lov_type=>'DISTINCT' +,p_use_as_row_header=>false +,p_enable_sort_group=>true +,p_enable_control_break=>true +,p_enable_hide=>true +,p_is_primary_key=>false +,p_duplicate_value=>true +,p_include_in_export=>true +,p_security_scheme=>wwv_flow_api.id(9556407311505078) +); wwv_flow_api.create_interactive_grid( p_id=>wwv_flow_api.id(11853821618169129) ,p_internal_uid=>11853821618169129 @@ -548,7 +578,7 @@ wwv_flow_api.create_ig_report_view( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(28500165388036) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>4 +,p_display_seq=>3 ,p_column_id=>wwv_flow_api.id(12112180628376320) ,p_is_visible=>true ,p_is_frozen=>false @@ -560,11 +590,11 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(29930996388039) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>3 +,p_display_seq=>2 ,p_column_id=>wwv_flow_api.id(12112213333376321) ,p_is_visible=>true ,p_is_frozen=>false -,p_width=>90 +,p_width=>80 ); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12014468263679422) @@ -582,7 +612,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12015320331679424) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>5 +,p_display_seq=>4 ,p_column_id=>wwv_flow_api.id(11854302395169134) ,p_is_visible=>true ,p_is_frozen=>false @@ -599,25 +629,25 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12017110360679428) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>6 +,p_display_seq=>5 ,p_column_id=>wwv_flow_api.id(11854519035169136) ,p_is_visible=>true ,p_is_frozen=>false -,p_width=>90 +,p_width=>80 ); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12018068358679430) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>7 +,p_display_seq=>6 ,p_column_id=>wwv_flow_api.id(11854640901169137) ,p_is_visible=>true ,p_is_frozen=>false -,p_width=>90 +,p_width=>80 ); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12018933623679432) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>12 +,p_display_seq=>13 ,p_column_id=>wwv_flow_api.id(11854730854169138) ,p_is_visible=>false ,p_is_frozen=>false @@ -626,7 +656,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12019830036679434) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>13 +,p_display_seq=>14 ,p_column_id=>wwv_flow_api.id(11854883294169139) ,p_is_visible=>false ,p_is_frozen=>false @@ -643,7 +673,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12104857120371283) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>8 +,p_display_seq=>7 ,p_column_id=>wwv_flow_api.id(11855718811169148) ,p_is_visible=>false ,p_is_frozen=>false @@ -652,7 +682,7 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12105782280371287) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>9 +,p_display_seq=>8 ,p_column_id=>wwv_flow_api.id(11855803111169149) ,p_is_visible=>false ,p_is_frozen=>false @@ -669,20 +699,29 @@ wwv_flow_api.create_ig_report_column( wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12576610446394335) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>10 +,p_display_seq=>9 ,p_column_id=>wwv_flow_api.id(12335871532960927) ,p_is_visible=>true ,p_is_frozen=>false -,p_width=>90 +,p_width=>80 ); wwv_flow_api.create_ig_report_column( p_id=>wwv_flow_api.id(12577576446394339) ,p_view_id=>wwv_flow_api.id(12011273108679405) -,p_display_seq=>11 +,p_display_seq=>10 ,p_column_id=>wwv_flow_api.id(12335937642960928) ,p_is_visible=>true ,p_is_frozen=>false -,p_width=>90 +,p_width=>80 +); +wwv_flow_api.create_ig_report_column( + p_id=>wwv_flow_api.id(23102454673132420) +,p_view_id=>wwv_flow_api.id(12011273108679405) +,p_display_seq=>11 +,p_column_id=>wwv_flow_api.id(22942157447325326) +,p_is_visible=>true +,p_is_frozen=>false +,p_width=>80 ); wwv_flow_api.create_page_plug( p_id=>wwv_flow_api.id(12110948961376308) @@ -4487,7 +4526,7 @@ wwv_flow_api.create_page_process( ,p_attribute_04=>wwv_flow_string.join(wwv_flow_t_varchar2( 'app.log_action(''SAVE_SETTINGS'');', '--', -'app_actions.set_setting (', +'app_actions.save_setting (', ' in_action => :APEX$ROW_STATUS,', ' in_setting_name => :SETTING_NAME,', ' in_setting_name_old => :SETTING_NAME_OLD,', @@ -4495,6 +4534,7 @@ wwv_flow_api.create_page_process( ' in_setting_group => :SETTING_GROUP,', ' in_is_numeric => :IS_NUMERIC,', ' in_is_date => :IS_DATE,', +' in_is_private => :IS_PRIVATE,', ' in_description => :DESCRIPTION_', ');', '', diff --git a/packages/app.spec.sql b/packages/app.spec.sql index 5068637..e7fa80b 100644 --- a/packages/app.spec.sql +++ b/packages/app.spec.sql @@ -1455,6 +1455,13 @@ CREATE OR REPLACE PACKAGE app AS + -- + -- Rebuild package containing function matching Settings table + -- + PROCEDURE rebuild_settings; + + + diff --git a/packages/app.sql b/packages/app.sql index e74b98b..1862b9d 100644 --- a/packages/app.sql +++ b/packages/app.sql @@ -3581,6 +3581,99 @@ CREATE OR REPLACE PACKAGE BODY app AS + PROCEDURE rebuild_settings + AS + q VARCHAR2(32767); + b VARCHAR2(32767); + BEGIN + app.log_module(); + -- + IF app.get_settings_package() IS NULL THEN + RETURN; + END IF; + -- + app.refresh_user_source_views(); + -- + q := 'CREATE OR REPLACE PACKAGE ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10); + b := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10); + -- + FOR c IN ( + SELECT DISTINCT + s.setting_name, + s.is_numeric, + s.is_date + FROM settings s + WHERE s.app_id = app.get_app_id() + AND s.setting_context IS NULL + AND s.is_private IS NULL + ORDER BY s.setting_name + ) LOOP + -- create specification + q := q || CHR(10); + q := q || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10); + q := q || ' in_context settings.setting_context%TYPE := NULL' || CHR(10); + q := q || ' )' || CHR(10); + q := q || ' RETURN ' || CASE + WHEN c.is_numeric = 'Y' THEN 'NUMBER' + WHEN c.is_date = 'Y' THEN 'DATE' + ELSE 'VARCHAR2' END || CHR(10); + q := q || ' RESULT_CACHE;' || CHR(10); + + -- create package body + b := b || CHR(10); + b := b || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10); + b := b || ' in_context settings.setting_context%TYPE := NULL' || CHR(10); + b := b || ' )' || CHR(10); + b := b || ' RETURN ' || CASE + WHEN c.is_numeric = 'Y' THEN 'NUMBER' + WHEN c.is_date = 'Y' THEN 'DATE' + ELSE 'VARCHAR2' END || CHR(10); + b := b || ' RESULT_CACHE AS' || CHR(10); + b := b || ' BEGIN' || CHR(10); + b := b || ' RETURN ' || CASE + WHEN c.is_numeric = 'Y' THEN 'TO_NUMBER(' + WHEN c.is_date = 'Y' THEN 'app.get_date(' + END || 'app.get_setting (' || CHR(10); + b := b || ' in_name => ''' || c.setting_name || ''',' || CHR(10); + b := b || ' in_context => in_context' || CHR(10); + b := b || ' ' || CASE + WHEN NVL(c.is_numeric, c.is_date) = 'Y' THEN ')' + END || ');' || CHR(10); + b := b || ' EXCEPTION' || CHR(10); + b := b || ' WHEN NO_DATA_FOUND THEN' || CHR(10); + b := b || ' RETURN NULL;' || CHR(10); + b := b || ' END;' || CHR(10); + END LOOP; + -- + q := q || CHR(10) || 'END;'; + b := b || CHR(10) || 'END;'; + -- + EXECUTE IMMEDIATE q; + EXECUTE IMMEDIATE b; + -- + recompile ( + in_name => app.get_settings_package(), + in_force => TRUE + ); + -- + /* + DBMS_RESULT_CACHE.INVALIDATE ( + owner => app.schema_owner, + name => app_actions.settings_package + ); + */ + EXCEPTION + WHEN app.app_exception THEN + RAISE; + WHEN OTHERS THEN + app.log_debug(q); -- trimmed + app.log_debug(b); -- trimmed + -- + app.raise_error(); + END; + + + diff --git a/packages/app_actions.spec.sql b/packages/app_actions.spec.sql index d6af66c..a1b310f 100644 --- a/packages/app_actions.spec.sql +++ b/packages/app_actions.spec.sql @@ -29,20 +29,6 @@ CREATE OR REPLACE PACKAGE app_actions AS * */ - -- for sending emails - smtp_from CONSTANT VARCHAR2(200) := ''; - smtp_username CONSTANT VARCHAR2(50) := NULL; - smtp_password CONSTANT VARCHAR2(50) := NULL; - smtp_host CONSTANT VARCHAR2(50) := ''; - smtp_port CONSTANT NUMBER(4) := 25; - smtp_timeout CONSTANT NUMBER(2) := 20; - - - - - - - -- ### Help functions -- @@ -196,7 +182,7 @@ CREATE OR REPLACE PACKAGE app_actions AS -- -- Store/update settings -- - PROCEDURE set_setting ( + PROCEDURE save_setting ( in_action CHAR, in_setting_name_old settings.setting_name%TYPE, in_setting_name settings.setting_name%TYPE, @@ -204,6 +190,7 @@ CREATE OR REPLACE PACKAGE app_actions AS in_setting_value settings.setting_value%TYPE := NULL, in_is_numeric settings.is_numeric%TYPE := NULL, in_is_date settings.is_date%TYPE := NULL, + in_is_private settings.is_private%TYPE := NULL, in_description settings.description_%TYPE := NULL ); @@ -267,13 +254,6 @@ CREATE OR REPLACE PACKAGE app_actions AS - -- - -- Rebuild package containing function matching Settings table - -- - PROCEDURE rebuild_settings; - - - -- -- Prepare pivot for Settings page -- diff --git a/packages/app_actions.sql b/packages/app_actions.sql index f175fae..5c6d3ed 100644 --- a/packages/app_actions.sql +++ b/packages/app_actions.sql @@ -412,7 +412,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS - PROCEDURE set_setting ( + PROCEDURE save_setting ( in_action CHAR, in_setting_name_old settings.setting_name%TYPE, in_setting_name settings.setting_name%TYPE, @@ -420,6 +420,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS in_setting_value settings.setting_value%TYPE := NULL, in_is_numeric settings.is_numeric%TYPE := NULL, in_is_date settings.is_date%TYPE := NULL, + in_is_private settings.is_private%TYPE := NULL, in_description settings.description_%TYPE := NULL ) AS @@ -432,7 +433,8 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS 'value', in_setting_value, 'group', in_setting_group, 'is_numeric', in_is_numeric, - 'is_date', in_is_date + 'is_date', in_is_date, + 'is_private', in_is_private ); -- rec.app_id := app.get_app_id(); @@ -442,6 +444,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS rec.setting_group := in_setting_group; rec.is_numeric := in_is_numeric; rec.is_date := in_is_date; + rec.is_private := in_is_private; rec.description_ := in_description; rec.updated_by := app.get_user_id(); rec.updated_at := SYSDATE; @@ -644,98 +647,6 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS - PROCEDURE rebuild_settings - AS - q VARCHAR2(32767); - b VARCHAR2(32767); - BEGIN - app.log_module(); - -- - IF app.get_settings_package() IS NULL THEN - RETURN; - END IF; - -- - app.refresh_user_source_views(); - -- - q := 'CREATE OR REPLACE PACKAGE ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10); - b := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10); - -- - FOR c IN ( - SELECT DISTINCT - s.setting_name, - s.is_numeric, - s.is_date - FROM settings s - WHERE s.app_id = app.get_app_id() - AND s.setting_context IS NULL - ORDER BY s.setting_name - ) LOOP - -- create specification - q := q || CHR(10); - q := q || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10); - q := q || ' in_context settings.setting_context%TYPE := NULL' || CHR(10); - q := q || ' )' || CHR(10); - q := q || ' RETURN ' || CASE - WHEN c.is_numeric = 'Y' THEN 'NUMBER' - WHEN c.is_date = 'Y' THEN 'DATE' - ELSE 'VARCHAR2' END || CHR(10); - q := q || ' RESULT_CACHE;' || CHR(10); - - -- create package body - b := b || CHR(10); - b := b || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10); - b := b || ' in_context settings.setting_context%TYPE := NULL' || CHR(10); - b := b || ' )' || CHR(10); - b := b || ' RETURN ' || CASE - WHEN c.is_numeric = 'Y' THEN 'NUMBER' - WHEN c.is_date = 'Y' THEN 'DATE' - ELSE 'VARCHAR2' END || CHR(10); - b := b || ' RESULT_CACHE AS' || CHR(10); - b := b || ' BEGIN' || CHR(10); - b := b || ' RETURN ' || CASE - WHEN c.is_numeric = 'Y' THEN 'TO_NUMBER(' - WHEN c.is_date = 'Y' THEN 'app.get_date(' - END || 'app.get_setting (' || CHR(10); - b := b || ' in_name => ''' || c.setting_name || ''',' || CHR(10); - b := b || ' in_context => in_context' || CHR(10); - b := b || ' ' || CASE - WHEN NVL(c.is_numeric, c.is_date) = 'Y' THEN ')' - END || ');' || CHR(10); - b := b || ' EXCEPTION' || CHR(10); - b := b || ' WHEN NO_DATA_FOUND THEN' || CHR(10); - b := b || ' RETURN NULL;' || CHR(10); - b := b || ' END;' || CHR(10); - END LOOP; - -- - q := q || CHR(10) || 'END;'; - b := b || CHR(10) || 'END;'; - -- - EXECUTE IMMEDIATE q; - EXECUTE IMMEDIATE b; - -- - recompile ( - in_name => app.get_settings_package(), - in_force => TRUE - ); - -- - /* - DBMS_RESULT_CACHE.INVALIDATE ( - owner => app.schema_owner, - name => app_actions.settings_package - ); - */ - EXCEPTION - WHEN app.app_exception THEN - RAISE; - WHEN OTHERS THEN - app.log_debug(q); -- trimmed - app.log_debug(b); -- trimmed - -- - app.raise_error(); - END; - - - PROCEDURE prep_settings_pivot ( in_page_id apex_application_pages.page_id%TYPE ) AS diff --git a/tables/settings.sql b/tables/settings.sql index df29f99..61ff75f 100644 --- a/tables/settings.sql +++ b/tables/settings.sql @@ -9,6 +9,7 @@ CREATE TABLE settings ( -- is_numeric CHAR(1), is_date CHAR(1), + is_private CHAR(1), -- description_ VARCHAR2(1000), -- @@ -26,7 +27,10 @@ CREATE TABLE settings ( CHECK ((is_numeric = 'Y' AND is_date IS NULL) OR is_numeric IS NULL), -- CONSTRAINT ch_settings_is_date - CHECK ((is_date = 'Y' AND is_numeric IS NULL) OR is_date IS NULL) + CHECK ((is_date = 'Y' AND is_numeric IS NULL) OR is_date IS NULL), + -- + CONSTRAINT ch_settings_is_private + CHECK (is_private = 'Y' OR is_private IS NULL) ) STORAGE (BUFFER_POOL KEEP); -- @@ -39,5 +43,6 @@ COMMENT ON COLUMN settings.setting_context IS 'To allow multiple values dep COMMENT ON COLUMN settings.setting_group IS 'Group just for grouping set in APEX'; COMMENT ON COLUMN settings.is_numeric IS 'Flag to convert value to number'; COMMENT ON COLUMN settings.is_date IS 'Flag to convert value to date'; +COMMENT ON COLUMN settings.is_private IS 'Visible for Developers only on Settings page'; COMMENT ON COLUMN settings.description_ IS 'Description'; diff --git a/views/settings_overview.sql b/views/settings_overview.sql index f6cac7a..6f456a8 100644 --- a/views/settings_overview.sql +++ b/views/settings_overview.sql @@ -4,7 +4,8 @@ WITH x AS ( app.get_settings_package() AS package_name, app.get_settings_prefix() AS prefix, app.get_item('$SETTING_NAME') AS setting_name, - app.get_app_id() AS app_id + app.get_app_id() AS app_id, + app.is_developer_y() AS is_dev FROM DUAL ), p AS ( @@ -48,6 +49,7 @@ SELECT s.setting_value, s.is_numeric, s.is_date, + s.is_private, -- p.procedure_name, p.data_type, @@ -79,7 +81,8 @@ LEFT JOIN r LEFT JOIN v ON v.procedure_name = x.prefix || s.setting_name WHERE s.setting_name = NVL(x.setting_name, s.setting_name) - AND s.setting_context IS NULL; + AND s.setting_context IS NULL + AND (s.is_private IS NULL OR x.is_dev = 'Y'); -- COMMENT ON TABLE settings_overview IS '[CORE - DASHBOARD] Settings';