From 1190dfb87e824824639e84e4c2885285fa5665c6 Mon Sep 17 00:00:00 2001 From: hardya Date: Wed, 12 Mar 2008 14:16:55 +0000 Subject: [PATCH] Changed mandatory packages (mip_mandatory.pck and gen_mandatory.prc) to produce label conditions for the enquiry screen. Expose addon_allowed in mip_tripartite.pck. git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3957 248e525c-4dfb-0310-94bc-949c084e9493 --- Modules/gen_mandatory.prc | 130 +++++++++++++++++++++++++----- Modules/mip_friendly_messages.pck | 25 +++--- Modules/mip_mandatory.pck | 23 ++++-- Modules/mip_tripartite.pck | 7 ++ 4 files changed, 145 insertions(+), 40 deletions(-) diff --git a/Modules/gen_mandatory.prc b/Modules/gen_mandatory.prc index f31b23b..f7ddb46 100644 --- a/Modules/gen_mandatory.prc +++ b/Modules/gen_mandatory.prc @@ -63,7 +63,7 @@ BEGIN add_sql(l_sql ,' ,1'); add_sql(l_sql - ,' ,1) IN (''M'',''O'')'); + ,' ,1) IN (''M'',''O'',''H'')'); add_sql(l_sql ,')'); --dbms_output.put_line(l_sql); @@ -197,7 +197,22 @@ BEGIN ,' RETURN BOOLEAN;'); add_sql(l_sql ,' '); - + add_sql(l_sql + ,'FUNCTION check_condition (p_enty_code in enquiries.enty_code%type'); + add_sql(l_sql + ,' ,p_field_name IN data_item_roles.field_name%type)'); + add_sql(l_sql + ,' RETURN data_item_roles.condition%TYPE;'); + add_sql(l_sql + ,' '); + add_sql(l_sql + ,'FUNCTION label_condition (p_enty_code in enquiries.enty_code%type'); + add_sql(l_sql + ,' ,p_field_name IN data_item_roles.field_name%type)'); + add_sql(l_sql + ,' RETURN VARCHAR2;'); + add_sql(l_sql + ,' '); add_sql(l_sql ,'END MIP_' || l_tables.table_name || '_HELPER;'); @@ -259,26 +274,25 @@ BEGIN add_sql(l_sql ,' cout_assert.isnotnull(p_rec.enty_code,''NULL enquiry ENTY_CODE'');'); FOR l_checks IN (SELECT field_name - ,condition + ,substr(condition + ,1 + ,1) ,enty_code ,error_message FROM data_item_roles) LOOP - IF l_checks.condition = 'M' THEN - add_sql(l_sql - ,' IF p_rec.ENTY_CODE = ''' || l_checks.enty_code || - ''' AND p_rec.' || l_checks.field_name || - ' IS NULL THEN'); - add_sql(l_sql - ,' MIP_MANDATORY.add_error(P_mandatory_checks=>l_mandatory_checks, P_field_name=>''' || - l_checks.field_name || ''' ,p_error_message=>''' || - nvl(l_checks.error_message - ,'Mandatory Field') || ''');'); - add_sql(l_sql - ,' END IF;'); - add_sql(l_sql - ,' '); - END IF; + add_sql(l_sql + ,' IF p_rec.ENTY_CODE = ''' || l_checks.enty_code || + ''' AND p_rec.' || l_checks.field_name || ' IS NULL THEN'); + add_sql(l_sql + ,' MIP_MANDATORY.add_error(P_mandatory_checks=>l_mandatory_checks, P_field_name=>''' || + l_checks.field_name || ''' ,p_error_message=>''' || + nvl(l_checks.error_message + ,'Mandatory Field') || ''');'); + add_sql(l_sql + ,' END IF;'); + add_sql(l_sql + ,' '); END LOOP; add_sql(l_sql @@ -385,7 +399,7 @@ BEGIN add_sql(l_sql ,' FOR l_checks IN (SELECT field_name'); add_sql(l_sql - ,' ,condition'); + ,' ,substr(condition,1,1) as condition'); add_sql(l_sql ,' ,enty_code'); add_sql(l_sql @@ -397,7 +411,7 @@ BEGIN add_sql(l_sql ,' ) LOOP'); add_sql(l_sql - ,' MIP_MANDATORY.add_field(p_fields=>l_fields,p_field_name=>l_checks.field_name);'); + ,' MIP_MANDATORY.add_field(p_fields=>l_fields,p_field_name=>l_checks.field_name, p_field_condition=>l_checks.condition);'); add_sql(l_sql ,' END LOOP;'); @@ -474,6 +488,82 @@ BEGIN ,'END record_exists;'); add_sql(l_sql ,' '); + + -- + -- CHECK_CONDITION + -- + add_sql(l_sql + ,'FUNCTION check_condition (p_enty_code in enquiries.enty_code%type'); + add_sql(l_sql + ,' ,p_field_name IN data_item_roles.field_name%type)'); + add_sql(l_sql + ,' RETURN data_item_roles.condition%TYPE'); + add_sql(l_sql + ,'IS'); + add_sql(l_sql + ,' l_return data_item_roles.condition%TYPE;'); + + add_sql(l_sql + ,' '); + + add_sql(l_sql + ,'BEGIN'); + + add_sql(l_sql + ,' cout_assert.isnotnull(p_field_name,''NULL enquiry FIELD_NAME'');'); + + FOR l_checks IN (SELECT upper(field_name) AS field_name + ,substr(condition + ,1 + ,2) AS condition + ,enty_code + ,error_message + FROM data_item_roles) LOOP + add_sql(l_sql + ,' IF p_enty_code = ''' || l_checks.enty_code || + ''' AND p_field_name = ''' || l_checks.field_name || + ''' THEN'); + add_sql(l_sql + ,' l_return := ''' || l_checks.condition || ''';'); + add_sql(l_sql + ,' END IF;'); + add_sql(l_sql + ,' '); + END LOOP; + + add_sql(l_sql + ,' '); + -- return the overall response + add_sql(l_sql + ,' RETURN l_return;'); + add_sql(l_sql + ,'END check_condition;'); + + add_sql(l_sql + ,' '); + + add_sql(l_sql + ,'FUNCTION label_condition (p_enty_code in enquiries.enty_code%type'); + add_sql(l_sql + ,' ,p_field_name IN data_item_roles.field_name%type)'); + add_sql(l_sql + ,' RETURN VARCHAR2'); + add_sql(l_sql + ,'IS'); + add_sql(l_sql,'BEGIN'); + add_sql(l_sql,' RETURN ('); + add_sql(l_sql,' CASE mip_enquiries_helper.check_condition(p_enty_code, p_field_name)'); + add_sql(l_sql,' WHEN ''M'' THEN ''*'''); + add_sql(l_sql,' WHEN ''O-'' THEN ''+'''); + add_sql(l_sql,' WHEN ''O'' THEN '' '''); + add_sql(l_sql,' WHEN ''H'' THEN ''H'''); + add_sql(l_sql,' END'); + add_sql(l_sql,' );'); + add_sql(l_sql,'END label_condition;'); + + add_sql(l_sql + ,' '); + add_sql(l_sql ,'END MIP_' || l_tables.table_name || '_HELPER;'); diff --git a/Modules/mip_friendly_messages.pck b/Modules/mip_friendly_messages.pck index 6aeb1c4..2058393 100644 --- a/Modules/mip_friendly_messages.pck +++ b/Modules/mip_friendly_messages.pck @@ -14,19 +14,17 @@ END mip_friendly_messages; / CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS - PROCEDURE pl(p_in VARCHAR2) IS - l_fh utl_file.file_type; + PROCEDURE pl(p_in VARCHAR2 + ,p_line IN NUMBER DEFAULT NULL) IS BEGIN - dbms_application_info.set_module('MIP_FRIENDLY_MESSAGES' - ,p_in); - l_fh := utl_file.fopen(location => 'WEBMIP_BULK_LOAD' - ,filename => 'MIP_FRIENDLY_MESSAGES.txt' - ,open_mode => 'A'); - utl_file.put_line(l_fh - ,to_char(SYSDATE - ,'DD/MM/YYYY HH24:MI:SS') || ',' || p_in); - utl_file.fclose(l_fh); - END pl; + NULL; + /* $IF mip_debug_constants.debugging OR mip_debug_constants.friendly_messages + $THEN*/ + mip_debug.pl(p_unit => $$PLSQL_UNIT + ,p_line => p_line + ,p_in => p_in); + /* $END*/ +END pl; FUNCTION get_constraint_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2 IS c_marker CONSTANT VARCHAR2(30) := 'constraint ('; @@ -81,9 +79,11 @@ CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS l_sqlcode NUMBER; l_msg VARCHAR2(2000); BEGIN + pl('get_friendly_message:entry:'||p_ora_msg); l_sqlcode := substr(l_ora_msg ,1 ,5); + IF instr(l_ora_msg ,'constraint (') > 0 THEN l_msg := nvl(get_constraint_message(l_ora_msg) @@ -92,6 +92,7 @@ CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS l_msg := l_ora_msg; END IF; + pl('get_friendly_message:exit:'||l_msg); return(l_msg); END get_friendly_message; diff --git a/Modules/mip_mandatory.pck b/Modules/mip_mandatory.pck index 7c45c8e..04808a4 100644 --- a/Modules/mip_mandatory.pck +++ b/Modules/mip_mandatory.pck @@ -11,7 +11,11 @@ CREATE OR REPLACE PACKAGE mip_mandatory IS TYPE t_mandatory_checks IS TABLE OF t_mandatory_check INDEX BY BINARY_INTEGER; - TYPE t_fields IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER; + TYPE t_field IS RECORD( + field_name VARCHAR2(80) + ,field_condition VARCHAR2(1)); + + TYPE t_fields IS TABLE OF t_field INDEX BY BINARY_INTEGER; -- Public function and procedure declarations @@ -19,11 +23,12 @@ CREATE OR REPLACE PACKAGE mip_mandatory IS ,p_field_name IN VARCHAR2 ,p_error_message IN VARCHAR2); - PROCEDURE add_field(p_fields IN OUT t_fields - ,p_field_name IN VARCHAR2); + PROCEDURE add_field(p_fields IN OUT t_fields + ,p_field_name IN VARCHAR2 + ,p_field_condition IN VARCHAR2); END mip_mandatory; / -CREATE OR REPLACE PACKAGE BODY MIP_MANDATORY IS +CREATE OR REPLACE PACKAGE BODY mip_mandatory IS PROCEDURE add_error(p_mandatory_checks IN OUT t_mandatory_checks ,p_field_name IN VARCHAR2 @@ -34,15 +39,17 @@ CREATE OR REPLACE PACKAGE BODY MIP_MANDATORY IS p_mandatory_checks(l_idx).error_message := p_error_message; END; - PROCEDURE add_field(p_fields IN OUT t_fields - ,p_field_name IN VARCHAR2) IS + PROCEDURE add_field(p_fields IN OUT t_fields + ,p_field_name IN VARCHAR2 + ,p_field_condition IN VARCHAR2) IS l_idx NUMBER := p_fields.COUNT + 1; BEGIN - p_fields(l_idx) := p_field_name; + p_fields(l_idx).field_name := p_field_name; + p_fields(l_idx).field_condition := p_field_condition; END add_field; BEGIN -- Initialization NULL; -END MIP_MANDATORY; +END mip_mandatory; / diff --git a/Modules/mip_tripartite.pck b/Modules/mip_tripartite.pck index e9ac372..3d40b7c 100644 --- a/Modules/mip_tripartite.pck +++ b/Modules/mip_tripartite.pck @@ -43,6 +43,13 @@ CREATE OR REPLACE PACKAGE mip_tripartite IS ,p_tab_messages IN OUT t_tab_messages) RETURN BOOLEAN; + /** Is the given addon allowed to non-Tripartite members + %param p_addit_code the addon to be checked + %param p_regi_code the region to be checked against + %return TRUE if the addon is allowed + */ + FUNCTION addon_allowed(p_adit_code IN additional_items.code%TYPE + ,p_regi_code IN regions.code%TYPE) RETURN BOOLEAN; /** Is the given enquiry valid with respect to the Tripartite arrangements? %param p_enqu_id the id of the enquiry to be checked %param p_tab_messages reasons for the enquiry not being valid