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
This commit is contained in:
hardya
2008-03-12 14:16:55 +00:00
parent 99aaa74017
commit 1190dfb87e
4 changed files with 145 additions and 40 deletions

View File

@@ -63,7 +63,7 @@ BEGIN
add_sql(l_sql add_sql(l_sql
,' ,1'); ,' ,1');
add_sql(l_sql add_sql(l_sql
,' ,1) IN (''M'',''O'')'); ,' ,1) IN (''M'',''O'',''H'')');
add_sql(l_sql add_sql(l_sql
,')'); ,')');
--dbms_output.put_line(l_sql); --dbms_output.put_line(l_sql);
@@ -197,7 +197,22 @@ BEGIN
,' RETURN BOOLEAN;'); ,' RETURN BOOLEAN;');
add_sql(l_sql 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 add_sql(l_sql
,'END MIP_' || l_tables.table_name || '_HELPER;'); ,'END MIP_' || l_tables.table_name || '_HELPER;');
@@ -259,16 +274,16 @@ BEGIN
add_sql(l_sql add_sql(l_sql
,' cout_assert.isnotnull(p_rec.enty_code,''NULL enquiry ENTY_CODE'');'); ,' cout_assert.isnotnull(p_rec.enty_code,''NULL enquiry ENTY_CODE'');');
FOR l_checks IN (SELECT field_name FOR l_checks IN (SELECT field_name
,condition ,substr(condition
,1
,1)
,enty_code ,enty_code
,error_message ,error_message
FROM data_item_roles) LOOP FROM data_item_roles) LOOP
IF l_checks.condition = 'M' THEN
add_sql(l_sql add_sql(l_sql
,' IF p_rec.ENTY_CODE = ''' || l_checks.enty_code || ,' IF p_rec.ENTY_CODE = ''' || l_checks.enty_code ||
''' AND p_rec.' || l_checks.field_name || ''' AND p_rec.' || l_checks.field_name || ' IS NULL THEN');
' IS NULL THEN');
add_sql(l_sql add_sql(l_sql
,' MIP_MANDATORY.add_error(P_mandatory_checks=>l_mandatory_checks, P_field_name=>''' || ,' MIP_MANDATORY.add_error(P_mandatory_checks=>l_mandatory_checks, P_field_name=>''' ||
l_checks.field_name || ''' ,p_error_message=>''' || l_checks.field_name || ''' ,p_error_message=>''' ||
@@ -278,7 +293,6 @@ BEGIN
,' END IF;'); ,' END IF;');
add_sql(l_sql add_sql(l_sql
,' '); ,' ');
END IF;
END LOOP; END LOOP;
add_sql(l_sql add_sql(l_sql
@@ -385,7 +399,7 @@ BEGIN
add_sql(l_sql add_sql(l_sql
,' FOR l_checks IN (SELECT field_name'); ,' FOR l_checks IN (SELECT field_name');
add_sql(l_sql add_sql(l_sql
,' ,condition'); ,' ,substr(condition,1,1) as condition');
add_sql(l_sql add_sql(l_sql
,' ,enty_code'); ,' ,enty_code');
add_sql(l_sql add_sql(l_sql
@@ -397,7 +411,7 @@ BEGIN
add_sql(l_sql add_sql(l_sql
,' ) LOOP'); ,' ) LOOP');
add_sql(l_sql 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 add_sql(l_sql
,' END LOOP;'); ,' END LOOP;');
@@ -474,6 +488,82 @@ BEGIN
,'END record_exists;'); ,'END record_exists;');
add_sql(l_sql 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 add_sql(l_sql
,'END MIP_' || l_tables.table_name || '_HELPER;'); ,'END MIP_' || l_tables.table_name || '_HELPER;');

View File

@@ -14,18 +14,16 @@ END mip_friendly_messages;
/ /
CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS
PROCEDURE pl(p_in VARCHAR2) IS PROCEDURE pl(p_in VARCHAR2
l_fh utl_file.file_type; ,p_line IN NUMBER DEFAULT NULL) IS
BEGIN BEGIN
dbms_application_info.set_module('MIP_FRIENDLY_MESSAGES' NULL;
,p_in); /* $IF mip_debug_constants.debugging OR mip_debug_constants.friendly_messages
l_fh := utl_file.fopen(location => 'WEBMIP_BULK_LOAD' $THEN*/
,filename => 'MIP_FRIENDLY_MESSAGES.txt' mip_debug.pl(p_unit => $$PLSQL_UNIT
,open_mode => 'A'); ,p_line => p_line
utl_file.put_line(l_fh ,p_in => p_in);
,to_char(SYSDATE /* $END*/
,'DD/MM/YYYY HH24:MI:SS') || ',' || p_in);
utl_file.fclose(l_fh);
END pl; END pl;
FUNCTION get_constraint_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2 IS FUNCTION get_constraint_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2 IS
@@ -81,9 +79,11 @@ CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS
l_sqlcode NUMBER; l_sqlcode NUMBER;
l_msg VARCHAR2(2000); l_msg VARCHAR2(2000);
BEGIN BEGIN
pl('get_friendly_message:entry:'||p_ora_msg);
l_sqlcode := substr(l_ora_msg l_sqlcode := substr(l_ora_msg
,1 ,1
,5); ,5);
IF instr(l_ora_msg IF instr(l_ora_msg
,'constraint (') > 0 THEN ,'constraint (') > 0 THEN
l_msg := nvl(get_constraint_message(l_ora_msg) 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; l_msg := l_ora_msg;
END IF; END IF;
pl('get_friendly_message:exit:'||l_msg);
return(l_msg); return(l_msg);
END get_friendly_message; END get_friendly_message;

View File

@@ -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_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 -- Public function and procedure declarations
@@ -20,10 +24,11 @@ CREATE OR REPLACE PACKAGE mip_mandatory IS
,p_error_message IN VARCHAR2); ,p_error_message IN VARCHAR2);
PROCEDURE add_field(p_fields IN OUT t_fields PROCEDURE add_field(p_fields IN OUT t_fields
,p_field_name IN VARCHAR2); ,p_field_name IN VARCHAR2
,p_field_condition IN VARCHAR2);
END mip_mandatory; 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 PROCEDURE add_error(p_mandatory_checks IN OUT t_mandatory_checks
,p_field_name IN VARCHAR2 ,p_field_name IN VARCHAR2
@@ -35,14 +40,16 @@ CREATE OR REPLACE PACKAGE BODY MIP_MANDATORY IS
END; END;
PROCEDURE add_field(p_fields IN OUT t_fields PROCEDURE add_field(p_fields IN OUT t_fields
,p_field_name IN VARCHAR2) IS ,p_field_name IN VARCHAR2
,p_field_condition IN VARCHAR2) IS
l_idx NUMBER := p_fields.COUNT + 1; l_idx NUMBER := p_fields.COUNT + 1;
BEGIN 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; END add_field;
BEGIN BEGIN
-- Initialization -- Initialization
NULL; NULL;
END MIP_MANDATORY; END mip_mandatory;
/ /

View File

@@ -43,6 +43,13 @@ CREATE OR REPLACE PACKAGE mip_tripartite IS
,p_tab_messages IN OUT t_tab_messages) ,p_tab_messages IN OUT t_tab_messages)
RETURN BOOLEAN; 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? /** 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_enqu_id the id of the enquiry to be checked
%param p_tab_messages reasons for the enquiry not being valid %param p_tab_messages reasons for the enquiry not being valid