Add routines to mip_quotation.pck and mip_*_helper (via gen_mandatory.prc) packages to set to NULL fields in the enquiry that are not relevant for that enquiry type (following issue raised in UAT).
git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@13609 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -7,7 +7,7 @@ CREATE OR REPLACE PROCEDURE gen_mandatory IS
|
|||||||
|
|
||||||
PROCEDURE add_sql(p_sqla IN OUT dbms_sql.varchar2a
|
PROCEDURE add_sql(p_sqla IN OUT dbms_sql.varchar2a
|
||||||
,p_sql IN VARCHAR2) IS
|
,p_sql IN VARCHAR2) IS
|
||||||
l_idx BINARY_INTEGER := p_sqla.COUNT + 1;
|
l_idx BINARY_INTEGER := p_sqla.count + 1;
|
||||||
BEGIN
|
BEGIN
|
||||||
p_sqla(l_idx) := p_sql;
|
p_sqla(l_idx) := p_sql;
|
||||||
END add_sql;
|
END add_sql;
|
||||||
@@ -17,10 +17,10 @@ BEGIN
|
|||||||
DELETE FROM data_item_roles;
|
DELETE FROM data_item_roles;
|
||||||
|
|
||||||
FOR l_enty IN (SELECT code
|
FOR l_enty IN (SELECT code
|
||||||
FROM enquiry_types) LOOP
|
FROM enquiry_types) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
l_cursor_id := dbms_sql.open_cursor;
|
l_cursor_id := dbms_sql.open_cursor;
|
||||||
l_sql.DELETE;
|
l_sql.delete;
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'INSERT INTO DATA_ITEM_ROLES');
|
,'INSERT INTO DATA_ITEM_ROLES');
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
@@ -69,11 +69,11 @@ BEGIN
|
|||||||
--dbms_output.put_line(l_sql);
|
--dbms_output.put_line(l_sql);
|
||||||
dbms_sql.parse(l_cursor_id
|
dbms_sql.parse(l_cursor_id
|
||||||
,l_sql
|
,l_sql
|
||||||
,l_sql.FIRST
|
,l_sql.first
|
||||||
,l_sql.LAST
|
,l_sql.last
|
||||||
,TRUE
|
,TRUE
|
||||||
,dbms_sql.native);
|
,dbms_sql.native);
|
||||||
l_rows_inserted := dbms_sql.EXECUTE(l_cursor_id);
|
l_rows_inserted := dbms_sql.execute(l_cursor_id);
|
||||||
dbms_sql.close_cursor(l_cursor_id);
|
dbms_sql.close_cursor(l_cursor_id);
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
@@ -83,7 +83,7 @@ BEGIN
|
|||||||
END LOOP;
|
END LOOP;
|
||||||
|
|
||||||
FOR l_tables IN (SELECT DISTINCT table_name AS table_name
|
FOR l_tables IN (SELECT DISTINCT table_name AS table_name
|
||||||
FROM data_item_roles) LOOP
|
FROM data_item_roles) LOOP
|
||||||
-- create a package, named MIP_'table'_HELPER
|
-- create a package, named MIP_'table'_HELPER
|
||||||
-- include functions:
|
-- include functions:
|
||||||
-- 'table'_check_mandatory - confirm whether all mandatory fields have been completed
|
-- 'table'_check_mandatory - confirm whether all mandatory fields have been completed
|
||||||
@@ -91,12 +91,12 @@ BEGIN
|
|||||||
|
|
||||||
FOR l_rec IN (SELECT rownum
|
FOR l_rec IN (SELECT rownum
|
||||||
,ucc.column_name
|
,ucc.column_name
|
||||||
FROM user_cons_columns ucc
|
FROM user_cons_columns ucc
|
||||||
,user_constraints uc
|
,user_constraints uc
|
||||||
WHERE uc.table_name = upper(l_tables.table_name)
|
WHERE uc.table_name = upper(l_tables.table_name)
|
||||||
AND uc.constraint_type = 'P'
|
AND uc.constraint_type = 'P'
|
||||||
AND ucc.constraint_name = uc.constraint_name
|
AND ucc.constraint_name = uc.constraint_name
|
||||||
ORDER BY ucc.position) LOOP
|
ORDER BY ucc.position) LOOP
|
||||||
l_pk_cols(l_rec.rownum) := l_rec.column_name;
|
l_pk_cols(l_rec.rownum) := l_rec.column_name;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ BEGIN
|
|||||||
-- START OF PACKAGE SPECIFICATION
|
-- START OF PACKAGE SPECIFICATION
|
||||||
--
|
--
|
||||||
|
|
||||||
l_sql.DELETE;
|
l_sql.delete;
|
||||||
|
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'CREATE OR REPLACE PACKAGE MIP_' || l_tables.table_name ||
|
,'CREATE OR REPLACE PACKAGE MIP_' || l_tables.table_name ||
|
||||||
@@ -113,7 +113,7 @@ BEGIN
|
|||||||
,' ');
|
,' ');
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' -- AUTOMATICALLY GENERATED BY GEN_MANDATORY AT ' ||
|
,' -- AUTOMATICALLY GENERATED BY GEN_MANDATORY AT ' ||
|
||||||
to_char(SYSDATE
|
TO_CHAR(SYSDATE
|
||||||
,'DD-MON-YYYY HH24:MI:SS'));
|
,'DD-MON-YYYY HH24:MI:SS'));
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ');
|
,' ');
|
||||||
@@ -139,8 +139,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'FUNCTION check_mandatory (');
|
,'FUNCTION check_mandatory (');
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
@@ -177,8 +177,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'FUNCTION record_exists (');
|
,'FUNCTION record_exists (');
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
@@ -213,17 +213,37 @@ BEGIN
|
|||||||
,' RETURN VARCHAR2;');
|
,' RETURN VARCHAR2;');
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ');
|
,' ');
|
||||||
|
add_sql(l_sql
|
||||||
|
,'PROCEDURE purge_fields (');
|
||||||
|
|
||||||
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
|
IF l_idx != l_pk_cols.first THEN
|
||||||
|
add_sql(l_sql
|
||||||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
add_sql(l_sql
|
||||||
|
,' P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
END LOOP;
|
||||||
|
add_sql(l_sql
|
||||||
|
,' );');
|
||||||
|
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;');
|
||||||
|
|
||||||
l_cursor_id := dbms_sql.open_cursor;
|
l_cursor_id := dbms_sql.open_cursor;
|
||||||
dbms_sql.parse(l_cursor_id
|
dbms_sql.parse(l_cursor_id
|
||||||
,l_sql
|
,l_sql
|
||||||
,l_sql.FIRST
|
,l_sql.first
|
||||||
,l_sql.LAST
|
,l_sql.last
|
||||||
,TRUE
|
,TRUE
|
||||||
,dbms_sql.native);
|
,dbms_sql.native);
|
||||||
l_rows_inserted := dbms_sql.EXECUTE(l_cursor_id);
|
l_rows_inserted := dbms_sql.execute(l_cursor_id);
|
||||||
dbms_sql.close_cursor(l_cursor_id);
|
dbms_sql.close_cursor(l_cursor_id);
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -233,7 +253,7 @@ BEGIN
|
|||||||
--
|
--
|
||||||
-- START OF PACKAGE BODY
|
-- START OF PACKAGE BODY
|
||||||
--
|
--
|
||||||
l_sql.DELETE;
|
l_sql.delete;
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'CREATE OR REPLACE PACKAGE BODY MIP_' || l_tables.table_name ||
|
,'CREATE OR REPLACE PACKAGE BODY MIP_' || l_tables.table_name ||
|
||||||
'_HELPER IS');
|
'_HELPER IS');
|
||||||
@@ -241,7 +261,7 @@ BEGIN
|
|||||||
,' ');
|
,' ');
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' -- AUTOMATICALLY GENERATED BY GEN_MANDATORY AT ' ||
|
,' -- AUTOMATICALLY GENERATED BY GEN_MANDATORY AT ' ||
|
||||||
to_char(SYSDATE
|
TO_CHAR(SYSDATE
|
||||||
,'DD-MON-YYYY HH24:MI:SS'));
|
,'DD-MON-YYYY HH24:MI:SS'));
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ');
|
,' ');
|
||||||
@@ -274,12 +294,12 @@ 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
|
||||||
,substr(condition
|
,SUBSTR(condition
|
||||||
,1
|
,1
|
||||||
,1) AS condition
|
,1) AS condition
|
||||||
,enty_code
|
,enty_code
|
||||||
,error_message
|
,error_message
|
||||||
FROM data_item_roles) LOOP
|
FROM data_item_roles) LOOP
|
||||||
|
|
||||||
IF l_checks.condition = 'M' THEN
|
IF l_checks.condition = 'M' THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
@@ -326,8 +346,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'FUNCTION check_mandatory (');
|
,'FUNCTION check_mandatory (');
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
@@ -357,8 +377,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' FROM ' || l_tables.table_name);
|
,' FROM ' || l_tables.table_name);
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' AND ' || l_pk_cols(l_idx) || ' = P_' ||
|
,' AND ' || l_pk_cols(l_idx) || ' = P_' ||
|
||||||
l_pk_cols(l_idx));
|
l_pk_cols(l_idx));
|
||||||
@@ -428,8 +448,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'FUNCTION record_exists (');
|
,'FUNCTION record_exists (');
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
@@ -459,8 +479,8 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' FROM ' || l_tables.table_name);
|
,' FROM ' || l_tables.table_name);
|
||||||
|
|
||||||
FOR l_idx IN l_pk_cols.FIRST .. l_pk_cols.LAST LOOP
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
IF l_idx != l_pk_cols.FIRST THEN
|
IF l_idx != l_pk_cols.first THEN
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' AND ' || l_pk_cols(l_idx) || ' = P_' ||
|
,' AND ' || l_pk_cols(l_idx) || ' = P_' ||
|
||||||
l_pk_cols(l_idx));
|
l_pk_cols(l_idx));
|
||||||
@@ -510,12 +530,12 @@ BEGIN
|
|||||||
,' cout_assert.isnotnull(p_field_name,''NULL enquiry FIELD_NAME'');');
|
,' cout_assert.isnotnull(p_field_name,''NULL enquiry FIELD_NAME'');');
|
||||||
|
|
||||||
FOR l_checks IN (SELECT upper(field_name) AS field_name
|
FOR l_checks IN (SELECT upper(field_name) AS field_name
|
||||||
,substr(condition
|
,SUBSTR(condition
|
||||||
,1
|
,1
|
||||||
,2) AS condition
|
,2) AS condition
|
||||||
,enty_code
|
,enty_code
|
||||||
,error_message
|
,error_message
|
||||||
FROM data_item_roles) LOOP
|
FROM data_item_roles) LOOP
|
||||||
|
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' IF p_enty_code = ''' || l_checks.enty_code ||
|
,' IF p_enty_code = ''' || l_checks.enty_code ||
|
||||||
@@ -572,6 +592,53 @@ BEGIN
|
|||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,' ');
|
,' ');
|
||||||
|
|
||||||
|
add_sql(l_sql
|
||||||
|
,'PROCEDURE purge_fields (');
|
||||||
|
|
||||||
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
|
IF l_idx != l_pk_cols.first THEN
|
||||||
|
add_sql(l_sql
|
||||||
|
,' ,P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
add_sql(l_sql
|
||||||
|
,' P_' || l_pk_cols(l_idx) || ' IN ' ||
|
||||||
|
l_tables.table_name || '.' || l_pk_cols(l_idx) || '%TYPE');
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
END LOOP;
|
||||||
|
add_sql(l_sql
|
||||||
|
,' ) IS');
|
||||||
|
|
||||||
|
add_sql(l_sql
|
||||||
|
,'BEGIN');
|
||||||
|
add_sql(l_sql
|
||||||
|
,' NULL;');
|
||||||
|
|
||||||
|
FOR l_rec_update IN (SELECT upper(field_name) AS field_name
|
||||||
|
,enty_code
|
||||||
|
FROM data_item_roles
|
||||||
|
WHERE condition = 'H'
|
||||||
|
AND table_name = l_tables.table_name) LOOP
|
||||||
|
add_sql(l_sql
|
||||||
|
,' UPDATE ' || l_tables.table_name);
|
||||||
|
add_sql(l_sql
|
||||||
|
,' SET ' || l_rec_update.field_name || ' = NULL');
|
||||||
|
|
||||||
|
add_sql(l_sql
|
||||||
|
,' WHERE ENTY_CODE = ''' || l_rec_update.enty_code||'''');
|
||||||
|
FOR l_idx IN l_pk_cols.first .. l_pk_cols.last LOOP
|
||||||
|
add_sql(l_sql
|
||||||
|
,' AND ' || l_pk_cols(l_idx) || ' = P_' ||
|
||||||
|
l_pk_cols(l_idx));
|
||||||
|
END LOOP;
|
||||||
|
add_sql(l_sql
|
||||||
|
,' ;');
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
add_sql(l_sql
|
||||||
|
,'END purge_fields;');
|
||||||
add_sql(l_sql
|
add_sql(l_sql
|
||||||
,'END MIP_' || l_tables.table_name || '_HELPER;');
|
,'END MIP_' || l_tables.table_name || '_HELPER;');
|
||||||
|
|
||||||
@@ -582,11 +649,11 @@ BEGIN
|
|||||||
l_cursor_id := dbms_sql.open_cursor;
|
l_cursor_id := dbms_sql.open_cursor;
|
||||||
dbms_sql.parse(l_cursor_id
|
dbms_sql.parse(l_cursor_id
|
||||||
,l_sql
|
,l_sql
|
||||||
,l_sql.FIRST
|
,l_sql.first
|
||||||
,l_sql.LAST
|
,l_sql.last
|
||||||
,TRUE
|
,TRUE
|
||||||
,dbms_sql.native);
|
,dbms_sql.native);
|
||||||
l_rows_inserted := dbms_sql.EXECUTE(l_cursor_id);
|
l_rows_inserted := dbms_sql.execute(l_cursor_id);
|
||||||
dbms_sql.close_cursor(l_cursor_id);
|
dbms_sql.close_cursor(l_cursor_id);
|
||||||
|
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|||||||
@@ -3872,6 +3872,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.');
|
|||||||
|
|
||||||
mark_enquiry_submitted(p_enqu_id);
|
mark_enquiry_submitted(p_enqu_id);
|
||||||
|
|
||||||
|
-- remove any spurious values
|
||||||
|
mip_enquiries_helper.purge_fields(p_id => p_enqu_id);
|
||||||
|
|
||||||
SELECT *
|
SELECT *
|
||||||
INTO l_enqu
|
INTO l_enqu
|
||||||
FROM enquiries
|
FROM enquiries
|
||||||
|
|||||||
Reference in New Issue
Block a user