From db78bf5c4cde3497bb5b3b979fdbe01309723a99 Mon Sep 17 00:00:00 2001 From: hardya Date: Mon, 28 Jan 2008 18:41:24 +0000 Subject: [PATCH] DatabaseItemToFunctionalSpecificationReference.xls - renamed METY_CODE to EXISTING_METY_CODE, included DISPLAY_SEQUENCE to be used in the generation of emails, etc. Minor internal changes to operation of cout_assert.pck and cout_err.pck. mip_quotation.pck - made validation routines open to external processes. Added enquiry entry details to manual quotes. Schema - Removed data_items table and amended data_item_roles to support display_sequence requirements. git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3407 248e525c-4dfb-0310-94bc-949c084e9493 --- ...ItemToFunctionalSpecificationReference.xls | Bin 36352 -> 37376 bytes Modules/cout_assert.pck | 24 +- Modules/cout_err.pck | 2 +- Modules/gen_mandatory.prc | 172 ++++++----- Modules/mip_quotation.pck | 277 +++++++++++++++--- Schema/ext_dataitem_role.pdc | 8 +- Schema/mip.con | 76 ++--- Schema/mip.ind | 8 +- Schema/mip.sql | 2 +- Schema/mip.sqs | 2 +- Schema/mip.tab | 20 +- 11 files changed, 394 insertions(+), 197 deletions(-) diff --git a/Documentation/Design/DatabaseItemToFunctionalSpecificationReference.xls b/Documentation/Design/DatabaseItemToFunctionalSpecificationReference.xls index b7e8ab76edd7cdcc65ab2e5884b9318ad71729e3..ce2c50d9d9671e74c8d2fda3508c9763db1a7ad9 100644 GIT binary patch literal 37376 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 Q@U7Kn`5(Z4*|`4y1&747!2kdN diff --git a/Modules/cout_assert.pck b/Modules/cout_assert.pck index bd3af8e..72bbdd2 100644 --- a/Modules/cout_assert.pck +++ b/Modules/cout_assert.pck @@ -6,6 +6,8 @@ CREATE OR REPLACE PACKAGE cout_assert IS SUBTYPE g_t_substitution_list IS cout_err.g_t_substitution_list; c_empty_substitution_list g_t_substitution_list; + + g_default_exception_number NUMBER := -20000; /** Asserts whether the given p_condition is true @@ -20,7 +22,7 @@ CREATE OR REPLACE PACKAGE cout_assert IS PROCEDURE istrue(p_condition IN BOOLEAN ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list ,p_helper_call_level IN NUMBER := 1); /** @@ -35,7 +37,7 @@ CREATE OR REPLACE PACKAGE cout_assert IS PROCEDURE isnotnull(p_value IN VARCHAR2 ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list); /** Asserts whether the given p_value IS NOT NULL @@ -48,7 +50,7 @@ CREATE OR REPLACE PACKAGE cout_assert IS PROCEDURE isnotnull(p_value IN DATE ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list); /** Asserts whether the given p_value IS NOT NULL @@ -61,7 +63,7 @@ CREATE OR REPLACE PACKAGE cout_assert IS PROCEDURE isnotnull(p_value IN NUMBER ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list); /** Asserts whether the given p_value IS NOT NULL @@ -74,7 +76,7 @@ CREATE OR REPLACE PACKAGE cout_assert IS PROCEDURE isnotnull(p_value IN BOOLEAN ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list); END cout_assert; / @@ -82,7 +84,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS g_header CONSTANT VARCHAR2(160) := '$Header: /Isle Of Grain/database/PLSQL/cout_assert.pck 1 7/01/05 12:54 Gilberta $'; g_revision CONSTANT VARCHAR2(160) := '$Revision: 1 $'; - + PROCEDURE pl(p_msg VARCHAR2) IS l_start NUMBER := 1; l_len CONSTANT NUMBER := 255; @@ -98,7 +100,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS PROCEDURE istrue(p_condition IN BOOLEAN ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list ,p_helper_call_level IN NUMBER := 1) IS BEGIN @@ -124,7 +126,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS PROCEDURE isnotnull(p_value IN VARCHAR2 ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list) IS BEGIN istrue(p_value IS NOT NULL @@ -138,7 +140,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS PROCEDURE isnotnull(p_value IN DATE ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list) IS BEGIN istrue(p_value IS NOT NULL @@ -152,7 +154,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS PROCEDURE isnotnull(p_value IN NUMBER ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list) IS BEGIN istrue(p_value IS NOT NULL @@ -166,7 +168,7 @@ CREATE OR REPLACE PACKAGE BODY cout_assert IS PROCEDURE isnotnull(p_value IN BOOLEAN ,p_message IN VARCHAR2 ,p_raise_exception IN BOOLEAN := TRUE - ,p_exception IN NUMBER := -6502 + ,p_exception IN NUMBER := g_default_exception_number ,p_substitution_list IN g_t_substitution_list := c_empty_substitution_list) IS BEGIN istrue(p_value IS NOT NULL diff --git a/Modules/cout_err.pck b/Modules/cout_err.pck index 51a10c4..1492d41 100644 --- a/Modules/cout_err.pck +++ b/Modules/cout_err.pck @@ -246,7 +246,7 @@ CREATE OR REPLACE PACKAGE BODY cout_err IS BEGIN - IF p_exception_number BETWEEN - 20999 AND - 20000 THEN + IF p_exception_number BETWEEN - 20999 AND - 20001 THEN -- -- application error, see if we have a matching EXCEPTION_MESSAGE -- diff --git a/Modules/gen_mandatory.prc b/Modules/gen_mandatory.prc index ee23190..f31b23b 100644 --- a/Modules/gen_mandatory.prc +++ b/Modules/gen_mandatory.prc @@ -15,17 +15,6 @@ CREATE OR REPLACE PROCEDURE gen_mandatory IS BEGIN DELETE FROM data_item_roles; - DELETE FROM data_items; - - INSERT INTO data_items - (field_name - ,table_name - ,description) - (SELECT DISTINCT field_name - ,'ENQUIRIES' as table_name - ,description - FROM ext_dataitem_roles - WHERE field_name IS NOT NULL); FOR l_enty IN (SELECT code FROM enquiry_types) LOOP @@ -37,13 +26,15 @@ BEGIN add_sql(l_sql ,' (ENTY_CODE'); add_sql(l_sql - ,' ,DI_FIELD_NAME'); + ,' ,FIELD_NAME'); add_sql(l_sql - ,' ,DI_TABLE_NAME'); + ,' ,TABLE_NAME'); add_sql(l_sql ,' ,CONDITION'); add_sql(l_sql ,' ,DESCRIPTION'); + add_sql(l_sql + ,' ,DISPLAY_SEQUENCE'); add_sql(l_sql ,' )'); add_sql(l_sql @@ -51,15 +42,17 @@ BEGIN add_sql(l_sql ,'SELECT ''' || l_enty.code || ''''); add_sql(l_sql - ,' ,''ENQUIRIES'' as field_name'); + ,' ,field_name'); add_sql(l_sql - ,' ,table_name'); + ,' ,''ENQUIRIES'' as table_name'); add_sql(l_sql ,' ,diri.' || REPLACE(l_enty.code ,' ' ,'_')); add_sql(l_sql ,' ,diri.description'); + add_sql(l_sql + ,' ,diri.display_sequence'); add_sql(l_sql ,' FROM ext_dataitem_roles diri'); add_sql(l_sql @@ -89,7 +82,7 @@ BEGIN END; END LOOP; - FOR l_tables IN (SELECT DISTINCT di_table_name AS table_name + FOR l_tables IN (SELECT DISTINCT table_name AS table_name FROM data_item_roles) LOOP -- create a package, named MIP_'table'_HELPER -- include functions: @@ -125,9 +118,24 @@ BEGIN add_sql(l_sql ,' '); + add_sql(l_sql + ,' SUBTYPE T_REC_' || l_tables.table_name || ' IS ' || + l_tables.table_name || '%ROWTYPE;'); + add_sql(l_sql + ,' '); -- -- CHECK_MANDATORY -- + add_sql(l_sql + ,'FUNCTION check_mandatory (p_rec in T_REC_' || + l_tables.table_name); + add_sql(l_sql + ,' ,p_mandatory_checks OUT MIP_MANDATORY.T_MANDATORY_CHECKS)'); + add_sql(l_sql + ,' RETURN BOOLEAN;'); + add_sql(l_sql + ,' '); + add_sql(l_sql ,'FUNCTION check_mandatory ('); @@ -151,6 +159,7 @@ BEGIN ,' RETURN BOOLEAN;'); add_sql(l_sql ,' '); + -- -- GET_FIELD_LIST -- @@ -225,6 +234,79 @@ BEGIN -- -- CHECK_MANDATORY -- + add_sql(l_sql + ,'FUNCTION check_mandatory (p_rec in T_REC_' || + l_tables.table_name); + add_sql(l_sql + ,' ,p_mandatory_checks OUT MIP_MANDATORY.T_MANDATORY_CHECKS)'); + add_sql(l_sql + ,' RETURN BOOLEAN'); + add_sql(l_sql + ,'IS'); + add_sql(l_sql + ,' l_mandatory_checks MIP_MANDATORY.T_MANDATORY_CHECKS;'); + add_sql(l_sql + ,' l_return BOOLEAN;'); + + add_sql(l_sql + ,' '); + + add_sql(l_sql + ,'BEGIN'); + + add_sql(l_sql + ,' cout_assert.isnotnull(p_rec.id,''NULL enquiry id'');'); + add_sql(l_sql + ,' cout_assert.isnotnull(p_rec.enty_code,''NULL enquiry ENTY_CODE'');'); + FOR l_checks IN (SELECT field_name + ,condition + ,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; + END LOOP; + + add_sql(l_sql + ,' '); + + add_sql(l_sql + ,' MIP_HELPER_SPECIAL_CASES.table_' || l_tables.table_name || + '(p_rec => p_rec, p_mandatory_checks=>l_mandatory_checks);'); + + add_sql(l_sql + ,' '); + add_sql(l_sql + ,' l_return := NOT(l_mandatory_checks.COUNT > 0);'); + add_sql(l_sql + ,' P_mandatory_checks := l_mandatory_checks;'); + add_sql(l_sql + ,' '); + -- return the overall boolean response + add_sql(l_sql + ,' RETURN l_return;'); + add_sql(l_sql + ,'END check_mandatory;'); + add_sql(l_sql + ,' '); + + -- + -- Check_mandatory - second version + -- add_sql(l_sql ,'FUNCTION check_mandatory ('); @@ -249,11 +331,7 @@ BEGIN add_sql(l_sql ,'IS'); add_sql(l_sql - ,' l_rec ' || l_tables.table_name || '%ROWTYPE;'); - add_sql(l_sql - ,' l_mandatory_checks MIP_MANDATORY.T_MANDATORY_CHECKS;'); - add_sql(l_sql - ,' l_return BOOLEAN;'); + ,' l_rec T_REC_' || l_tables.table_name || ';'); add_sql(l_sql ,'BEGIN'); @@ -279,53 +357,13 @@ BEGIN ,' ;'); add_sql(l_sql - ,' '); - - FOR l_checks IN (SELECT di_field_name - ,condition - ,enty_code - ,error_message - FROM data_item_roles) LOOP - - IF l_checks.condition = 'M' THEN - add_sql(l_sql - ,' IF l_rec.ENTY_CODE = ''' || l_checks.enty_code || - ''' AND l_rec.' || l_checks.di_field_name || - ' IS NULL THEN'); - add_sql(l_sql - ,' MIP_MANDATORY.add_error(P_mandatory_checks=>l_mandatory_checks, P_field_name=>''' || - l_checks.di_field_name || ''' ,P_error_message=>''' || - nvl(l_checks.error_message - ,'Mandatory Field') || ''');'); - add_sql(l_sql - ,' END IF;'); - add_sql(l_sql - ,' '); - END IF; - END LOOP; - + ,' RETURN CHECK_MANDATORY(p_rec => l_rec, p_mandatory_checks => p_mandatory_checks);'); add_sql(l_sql - ,' '); - - add_sql(l_sql, - ' MIP_HELPER_SPECIAL_CASES.table_'||l_tables.table_name||'(p_rec => l_rec, p_mandatory_checks=>l_mandatory_checks);'); - + ,' '); add_sql(l_sql - ,' '); + ,'END CHECK_MANDATORY;'); add_sql(l_sql - ,' l_return := NOT(l_mandatory_checks.COUNT > 0);'); - add_sql(l_sql - ,' P_mandatory_checks := l_mandatory_checks;'); - add_sql(l_sql - ,' '); - -- return the overall boolean response - add_sql(l_sql - ,' RETURN l_return;'); - add_sql(l_sql - ,'END check_mandatory;'); - add_sql(l_sql - ,' '); - + ,' '); -- -- GET_FIELD_LIST -- @@ -345,7 +383,7 @@ BEGIN ,' '); add_sql(l_sql - ,' FOR l_checks IN (SELECT di_field_name'); + ,' FOR l_checks IN (SELECT field_name'); add_sql(l_sql ,' ,condition'); add_sql(l_sql @@ -359,7 +397,7 @@ BEGIN add_sql(l_sql ,' ) LOOP'); add_sql(l_sql - ,' MIP_MANDATORY.add_field(P_fields=>l_fields,P_field_name=>l_checks.di_field_name);'); + ,' MIP_MANDATORY.add_field(p_fields=>l_fields,p_field_name=>l_checks.field_name);'); add_sql(l_sql ,' END LOOP;'); diff --git a/Modules/mip_quotation.pck b/Modules/mip_quotation.pck index 1801aa7..f8bc5e1 100644 --- a/Modules/mip_quotation.pck +++ b/Modules/mip_quotation.pck @@ -23,6 +23,22 @@ CREATE OR REPLACE PACKAGE mip_quotation IS ,p_mandatory_checks OUT mip_mandatory.t_mandatory_checks ,p_enquiry_is_ready OUT BOOLEAN); + /** Validate an enquiry row of date for mandatory fields + Store the results for later retrieval (must be same transaction) + + %param p_rec enquiry data to be validated + */ + PROCEDURE validate(p_rec IN mip_enquiries_helper.t_rec_enquiries); + + /** Retrieve the results of a mandatory field validation for the given field + Must be performed in the same transaction as the validate + + %param p_field_name enquiry field who validation message is required + %return validation error message or NULL if validation was successful + */ + FUNCTION validation_result(p_enqu_id IN enquiries.id%TYPE + ,p_field_name IN VARCHAR2) RETURN VARCHAR2; + /** Generate quotes in response to a 'request for quote' against an enquiry %param p_enqu_id the id of the enquiry to be checked @@ -99,6 +115,7 @@ CREATE OR REPLACE PACKAGE mip_quotation IS ,p_event_date IN DATE DEFAULT SYSDATE); PROCEDURE lapse_quotes_job; + END mip_quotation; / CREATE OR REPLACE PACKAGE BODY mip_quotation IS @@ -124,7 +141,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS g_email_plain_body CLOB; g_email_html_body CLOB; - gc_newline CONSTANT CHAR(1) DEFAULT chr(13); + gc_newline CONSTANT CHAR(2) DEFAULT chr(10) || chr(13); TYPE t_rec_additional_costs IS RECORD( adit_code additional_items.code%TYPE @@ -189,7 +206,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS PROCEDURE accept_quote(p_qute_id IN quotes.id%TYPE ,p_prty_id IN parties.id%TYPE - ,p_owner_prty_id IN parties.id%TYPE + ,p_owner_prty_id IN parties.id%TYPE DEFAULT NULL ,p_description quote_events.description%TYPE DEFAULT NULL ,p_event_date IN DATE DEFAULT SYSDATE) IS BEGIN @@ -618,6 +635,70 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,''); END close_body; + PROCEDURE produce_enquiry_entry_details(p_enqu_id IN enquiries.id%TYPE) IS + l_enty_code enquiries.enty_code%TYPE; + + FUNCTION return_value(p_enqu_id IN enquiries.id%TYPE + ,p_field_name IN VARCHAR2) RETURN VARCHAR2 IS + l_sql VARCHAR2(240); + l_cursor_id INTEGER; + l_rows INTEGER; + l_return VARCHAR2(80); + BEGIN + + l_cursor_id := dbms_sql.open_cursor; + l_sql := 'select ' || p_field_name || + ' from enquiries where id = :id'; + + dbms_sql.parse(l_cursor_id + ,l_sql + ,dbms_sql.native); + + dbms_sql.bind_variable(l_cursor_id + ,':id' + ,p_enqu_id); + + dbms_sql.define_column(l_cursor_id + ,1 + ,l_return + ,80); + + l_rows := dbms_sql.execute_and_fetch(l_cursor_id); + + dbms_sql.column_value(l_cursor_id + ,1 + ,l_return); + + dbms_sql.close_cursor(l_cursor_id); + + RETURN l_return; + + END return_value; + + BEGIN + pl('produce_enquiry_entry_details'); + al(' '); + al(' '); + al(get_system_name || + ' recorded the following details against this enquiry:'); + + SELECT enty_code + INTO l_enty_code + FROM enquiries + WHERE id = p_enqu_id; + + FOR l_rec IN (SELECT dir.field_name + ,dir.description + FROM data_item_roles dir + WHERE dir.enty_code = l_enty_code + ORDER BY dir.display_sequence) LOOP + + al(l_rec.description || ': ' || + return_value(p_enqu_id => p_enqu_id + ,p_field_name => l_rec.field_name)); + END LOOP; + END produce_enquiry_entry_details; + PROCEDURE produce_reasoning_summary(p_enqu_id IN enquiries.id%TYPE) IS BEGIN pl('produce_reasoning_summary'); @@ -751,10 +832,15 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); close_body; - mip_email.send_email_clob(p_recipient => l_email_recipient - ,p_body => g_email_plain_body - ,p_body_html => g_email_html_body - ,p_subject => l_email_subject); + BEGIN + mip_email.send_email_clob(p_recipient => l_email_recipient + ,p_body => g_email_plain_body + ,p_body_html => g_email_html_body + ,p_subject => l_email_subject); + EXCEPTION + WHEN OTHERS THEN + pl('mip_email.send_email_clob returned ' || SQLERRM); + END; END email_quotes_available; @@ -762,7 +848,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_agent_comt_code enquiries.agent_comt_code%TYPE; l_agent_contact_value enquiries.agent_contact_value%TYPE; l_email_recipient system_configuration.VALUE%TYPE; - l_email_subject VARCHAR2(80); + l_email_subject VARCHAR2(240); l_agent_first_name parties.first_name%TYPE; l_agent_last_name parties.last_name%TYPE; l_agent_prty_id parties.id%TYPE; @@ -784,15 +870,26 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); AND enquiry_events.enqu_id = enquiries.id AND enquiry_events.enst_code = 'SUBMITTED'; - l_agent_prty_id := mip_enquiry.get_enquiry_role(p_enquiryid => p_enqu_id - ,p_rolecode => 'ENQ OWN'); + BEGIN + l_agent_prty_id := mip_enquiry.get_enquiry_role(p_enquiryid => p_enqu_id + ,p_rolecode => 'ENQ OWN'); + EXCEPTION + WHEN OTHERS THEN + pl('mip_enquiry.get_enquiry_role returned ' || SQLERRM); + RAISE; + END; - SELECT first_name - ,last_name - INTO l_agent_first_name - ,l_agent_last_name - FROM parties - WHERE id = l_agent_prty_id; + BEGIN + SELECT first_name + ,last_name + INTO l_agent_first_name + ,l_agent_last_name + FROM parties + WHERE id = l_agent_prty_id; + EXCEPTION + WHEN OTHERS THEN + pl('Error finding agent - prty_id=' || l_agent_prty_id); + END; IF l_agent_comt_code = 'EMAIL' THEN l_email_recipient := l_agent_contact_value; @@ -833,10 +930,16 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); close_body; - mip_email.send_email_clob(p_recipient => l_email_recipient - ,p_body => g_email_plain_body - ,p_body_html => g_email_html_body - ,p_subject => l_email_subject); + BEGIN + mip_email.send_email_clob(p_recipient => l_email_recipient + ,p_body => g_email_plain_body + ,p_body_html => g_email_html_body + ,p_subject => l_email_subject); + EXCEPTION + WHEN OTHERS THEN + pl('mip_email.send_email_clob returned ' || SQLERRM); + RAISE; + END; END email_rfq_submitted; PROCEDURE email_request_for_mq(p_enqu_id IN enquiries.id%TYPE) IS @@ -868,16 +971,27 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); al(' '); al('Current Service Level Agreements dictate that a manual quote be provided within 6 days'); + al('Data Entered:'); + + al('Enquiry type: ' || get_enty_description(p_enqu_id)); + + produce_enquiry_entry_details(p_enqu_id); + produce_reasoning_summary(p_enqu_id); close_body; - mip_email.send_email_clob(p_recipient => get_manual_quote_recipient - ,p_body => g_email_plain_body - ,p_body_html => g_email_html_body - ,p_subject => l_system_name || - ': Request for a Manual Quote for Enquiry Reference Number: ' || - p_enqu_id); + BEGIN + mip_email.send_email_clob(p_recipient => get_manual_quote_recipient + ,p_body => g_email_plain_body + ,p_body_html => g_email_html_body + ,p_subject => l_system_name || + ': Request for a Manual Quote for Enquiry Reference Number: ' || + p_enqu_id); + EXCEPTION + WHEN OTHERS THEN + pl('mip_email.send_email_clob returned ' || SQLERRM); + END; END email_request_for_mq; @@ -901,13 +1015,18 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); close_body; - mip_email.send_email_clob(p_recipient => get_support_recipient - ,p_body => g_email_plain_body - ,p_body_html => g_email_html_body - ,p_subject => get_system_name || ' : ' || - p_subject || - ' : Enquiry Reference Number: ' || - p_enqu_id); + BEGIN + mip_email.send_email_clob(p_recipient => get_support_recipient + ,p_body => g_email_plain_body + ,p_body_html => g_email_html_body + ,p_subject => get_system_name || ' : ' || + p_subject || + ' : Enquiry Reference Number: ' || + p_enqu_id); + EXCEPTION + WHEN OTHERS THEN + pl('mip_email.send_email_clob returned ' || SQLERRM); + END; END email_support; PROCEDURE request_manual_quote(p_enqu_id IN enquiries.id%TYPE @@ -930,7 +1049,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_mandatory_checks OUT mip_mandatory.t_mandatory_checks ,p_enquiry_is_ready OUT BOOLEAN) IS BEGIN - pl('ready_for_quote(1)'); + pl('ready_for_quote(1) - enqu_id=' || p_enqu_id); p_enquiry_is_ready := mip_enquiries_helper.check_mandatory(p_id => p_enqu_id ,p_mandatory_checks => p_mandatory_checks); @@ -940,7 +1059,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_mandatory_checks mip_mandatory.t_mandatory_checks; l_enquiry_is_ready BOOLEAN; BEGIN - pl('ready_for_quote(2)'); + pl('ready_for_quote(2) - enqu_id=' || p_enqu_id); ready_for_quote(p_enqu_id => p_enqu_id ,p_mandatory_checks => l_mandatory_checks @@ -948,6 +1067,61 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); RETURN l_enquiry_is_ready; END ready_for_quote; + PROCEDURE validate(p_rec IN mip_enquiries_helper.t_rec_enquiries) IS + l_mandatory_checks mip_mandatory.t_mandatory_checks; + l_idx NUMBER; + BEGIN + pl('validate enqu_id=' || p_rec.id || ', enty_code=' || + p_rec.enty_code); + DELETE FROM validation_results + WHERE enqu_id = p_rec.id; + IF NOT + mip_enquiries_helper.check_mandatory(p_rec => p_rec + ,p_mandatory_checks => l_mandatory_checks) THEN + l_idx := l_mandatory_checks.FIRST; + LOOP + EXIT WHEN l_idx IS NULL; + INSERT INTO validation_results + (enqu_id + ,field_name + ,error_message) + VALUES + (p_rec.id + ,l_mandatory_checks(l_idx).field_name + ,l_mandatory_checks(l_idx).error_message); + l_idx := l_mandatory_checks.NEXT(l_idx); + END LOOP; + END IF; + + EXCEPTION + WHEN OTHERS THEN + pl('validate:' || SQLERRM); + RAISE; + END validate; + + FUNCTION validation_result(p_enqu_id IN enquiries.id%TYPE + ,p_field_name IN VARCHAR2) RETURN VARCHAR2 IS + l_error_message gtt_mandatory_checks.error_message%TYPE; + BEGIN + pl('validation_result enqu_id=' || p_enqu_id || ', field_name=' || + p_field_name); + + SELECT error_message + INTO l_error_message + FROM validation_results + WHERE field_name = upper(p_field_name) + AND enqu_id = p_enqu_id; + pl('returning ' || l_error_message); + RETURN l_error_message; + EXCEPTION + WHEN no_data_found THEN + pl('Nothing found'); + RETURN NULL; + WHEN OTHERS THEN + pl('validation_result:' || SQLERRM); + RAISE; + END validation_result; + FUNCTION return_mandatory_messages(p_enqu_id IN enquiries.id%TYPE) RETURN VARCHAR2 IS l_mandatory_messages VARCHAR2(4000); @@ -1052,17 +1226,19 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); -- Site survey required for: -- Relocation -- Exchange where upgrade is greater than 1 'U' size - SELECT svcpt_code - INTO l_svcpt_code - FROM service_pressures - WHERE code = p_enqu.required_svcp_code; - IF l_svcpt_code = 'LP' THEN - IF p_enqu.enty_code = 'ALTERATION' THEN - p_manual_or_automatic_quote := gc_manual_quote; - add_quote_reason(p_enqu.id - ,'Site Survey is required for alteration (relocation or reposition) of an existing meter.'); - END IF; -- RELOCATE - IF p_enqu.enty_code IN ('EXCHANGE', 'STD EXCHANGE') THEN + + IF p_enqu.enty_code = 'ALTERATION' THEN + p_manual_or_automatic_quote := gc_manual_quote; + add_quote_reason(p_enqu.id + ,'Site Survey is required for alteration (relocation or reposition) of an existing meter.'); + END IF; -- RELOCATE + + IF p_enqu.enty_code IN ('EXCHANGE', 'STD EXCHANGE') THEN +-- SELECT svcpt_code +-- INTO l_svcpt_code +-- FROM service_pressures +-- WHERE code = p_enqu.required_svcp_code; +-- IF l_svcpt_code = 'LP' THEN l_existing_meter_size_code := p_enqu.existing_mesc_code; l_required_meter_size_code := p_enqu.required_mesc_code; IF l_required_meter_size_code IS NULL THEN @@ -1077,8 +1253,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_existing_meter_size_code || ' to ' || l_required_meter_size_code || '.'); END IF; - END IF; -- EXCHANGE - END IF; -- svcpt_code = 'LP' +-- END IF; -- svcpt_code = 'LP' + END IF; -- EXCHANGE + END survey_required; FUNCTION tripartite_agreement_satisfied(p_enqu_id IN enquiries.id%TYPE) @@ -2458,6 +2635,10 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_enqu t_enqu; BEGIN pl('produce_quotes'); + IF NOT ready_for_quote(p_enqu_id) THEN + pl('Not all mandatory fields for Enquiry ID=' || p_enqu_id || + ' have been completed'); + END IF; cout_assert.istrue(ready_for_quote(p_enqu_id) ,'Not all mandatory fields for Enquiry ID=' || p_enqu_id || ' have been completed'); @@ -2508,6 +2689,6 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); BEGIN -- Initialization - NULL; + pl('mip_quotation'); END mip_quotation; / diff --git a/Schema/ext_dataitem_role.pdc b/Schema/ext_dataitem_role.pdc index 193998f..d0232b9 100644 --- a/Schema/ext_dataitem_role.pdc +++ b/Schema/ext_dataitem_role.pdc @@ -15,7 +15,9 @@ create table ext_dataitem_roles alteration varchar2(240), capacity_change varchar2(240), addon varchar2(240), - other varchar2(240) + other varchar2(240), + notes VARCHAR2(240), + display_sequence NUMBER ) ORGANIZATION EXTERNAL ( type oracle_loader @@ -41,7 +43,9 @@ access parameters alteration , capacity_change , addon , - other + other , + notes , + display_sequence ) ) location ('DATAITEM_ROLES.csv') diff --git a/Schema/mip.con b/Schema/mip.con index ab552ef..ea26ddf 100644 --- a/Schema/mip.con +++ b/Schema/mip.con @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.con -- --- Generated for Oracle 10g on Tue Jan 22 17:48:45 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Jan 28 18:35:24 2008 by Server Generator 10.1.2.6.18 PROMPT Creating Primary Key on 'SYSTEM_CONFIGURATION' ALTER TABLE SYSTEM_CONFIGURATION @@ -49,10 +49,10 @@ ALTER TABLE QUOTE_REASONING PROMPT Creating Primary Key on 'DATA_ITEM_ROLES' ALTER TABLE DATA_ITEM_ROLES ADD (CONSTRAINT DIR_PK PRIMARY KEY - (CONDITION - ,ENTY_CODE - ,DI_TABLE_NAME - ,DI_FIELD_NAME)) + (TABLE_NAME + ,FIELD_NAME + ,CONDITION + ,ENTY_CODE)) / PROMPT Creating Primary Key on 'CONTACT_MECHANISMS' @@ -219,13 +219,6 @@ ALTER TABLE ENQUIRY_TYPES (CODE)) / -PROMPT Creating Primary Key on 'DATA_ITEMS' -ALTER TABLE DATA_ITEMS - ADD (CONSTRAINT DI_PK PRIMARY KEY - (TABLE_NAME - ,FIELD_NAME)) -/ - PROMPT Creating Primary Key on 'DOCUMENT_ROLES' ALTER TABLE DOCUMENT_ROLES ADD (CONSTRAINT DORO_PK PRIMARY KEY @@ -463,28 +456,28 @@ ALTER TABLE REGI_ENQU_EXCLUSIONS PROMPT Creating Check Constraint on 'METER_SIZE_CODES' ALTER TABLE METER_SIZE_CODES - ADD (CONSTRAINT AVCON_1201024124_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'METER_SIZE_CODES' ALTER TABLE METER_SIZE_CODES - ADD (CONSTRAINT AVCON_1201024124_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'COSTS' ALTER TABLE COSTS - ADD (CONSTRAINT AVCON_1201024124_COST__000 CHECK (COST_TYPE + ADD (CONSTRAINT AVCON_1201545323_COST__000 CHECK (COST_TYPE IN ('LACO', 'BACO', 'MOCO', 'MECO', 'AICO', 'HOCO', 'COST'))) / PROMPT Creating Check Constraint on 'DOCUMENTS' ALTER TABLE DOCUMENTS - ADD (CONSTRAINT AVCON_1201024124_DOCU__000 CHECK (DOCU_TYPE IN ('DOCU', 'INDO', 'EXDO', 'FIDO'))) + ADD (CONSTRAINT AVCON_1201545323_DOCU__000 CHECK (DOCU_TYPE IN ('DOCU', 'INDO', 'EXDO', 'FIDO'))) / PROMPT Creating Check Constraint on 'QUOTES' ALTER TABLE QUOTES - ADD (CONSTRAINT AVCON_1201024124_QUTE__000 CHECK (QUTE_TYPE IN ('AQ', 'MQ', 'QUTE'))) + ADD (CONSTRAINT AVCON_1201545323_QUTE__000 CHECK (QUTE_TYPE IN ('AQ', 'MQ', 'QUTE'))) / PROMPT Creating Check Constraint on 'PARTY_RELATIONSHIPS' @@ -496,21 +489,21 @@ to_parl_rt_code = to_prtp_rt_code)) PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1201024124_TRIPA_000 CHECK (TRIPARTITE_MEMBER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_TRIPA_000 CHECK (TRIPARTITE_MEMBER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1201024124_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) + ADD (CONSTRAINT AVCON_1201545323_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1201024124_PRTY__000 CHECK (PRTY_TYPE + ADD (CONSTRAINT AVCON_1201545323_PRTY__000 CHECK (PRTY_TYPE IN ('PRTY', 'IO', 'EO', 'MKTP', 'PERS', 'MANU', 'NEMP', 'EMP', 'ORG' ))) / - + PROMPT Creating Check Constraint on 'DOCUMENT_ROLES' ALTER TABLE DOCUMENT_ROLES ADD (CONSTRAINT DORO_CK CHECK (( @@ -524,82 +517,82 @@ OR PROMPT Creating Check Constraint on 'DOCUMENT_ROLES' ALTER TABLE DOCUMENT_ROLES - ADD (CONSTRAINT AVCON_1201024124_DORO__000 CHECK (DORO_TYPE IN ('DRRO', 'DORO', 'ENDO', 'QUDO'))) + ADD (CONSTRAINT AVCON_1201545323_DORO__000 CHECK (DORO_TYPE IN ('DRRO', 'DORO', 'ENDO', 'QUDO'))) / PROMPT Creating Check Constraint on 'QUOTE_ITEMS' ALTER TABLE QUOTE_ITEMS - ADD (CONSTRAINT AVCON_1201024124_QUIT__000 CHECK (QUIT_TYPE IN ('LQI', 'AQI', 'BQI', 'MQI', 'QUIT', 'HQI'))) + ADD (CONSTRAINT AVCON_1201545323_QUIT__000 CHECK (QUIT_TYPE IN ('LQI', 'AQI', 'BQI', 'MQI', 'QUIT', 'HQI'))) / PROMPT Creating Check Constraint on 'ROLE_TYPES' ALTER TABLE ROLE_TYPES - ADD (CONSTRAINT AVCON_1201024124_RT_TY_000 CHECK (RT_TYPE IN ('DORT', 'PART', 'RT', 'PCMRT', 'QURT', 'ENRT', 'PRT'))) + ADD (CONSTRAINT AVCON_1201545323_RT_TY_000 CHECK (RT_TYPE IN ('DORT', 'PART', 'RT', 'PCMRT', 'QURT', 'ENRT', 'PRT'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) + ADD (CONSTRAINT AVCON_1201545323_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_EXIST_000 CHECK (EXISTING_LOGGER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_EXIST_000 CHECK (EXISTING_LOGGER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) + ADD (CONSTRAINT AVCON_1201545323_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_EXIST_001 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) + ADD (CONSTRAINT AVCON_1201545323_EXIST_001 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_EXIST_002 CHECK (EXISTING_CONVERTOR IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1201545323_EXIST_002 CHECK (EXISTING_CONVERTOR IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1201024124_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) + ADD (CONSTRAINT AVCON_1201545323_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) / @@ -642,15 +635,6 @@ ALTER TABLE DATA_ITEM_ROLES ADD (CONSTRAINT (CODE)) / -PROMPT Creating Foreign Key on 'DATA_ITEM_ROLES' -ALTER TABLE DATA_ITEM_ROLES ADD (CONSTRAINT - DIR_DI_FK FOREIGN KEY - (DI_TABLE_NAME - ,DI_FIELD_NAME) REFERENCES DATA_ITEMS - (TABLE_NAME - ,FIELD_NAME)) -/ - PROMPT Creating Foreign Key on 'CONTACT_MECHANISMS' ALTER TABLE CONTACT_MECHANISMS ADD (CONSTRAINT COME_COMT_FK FOREIGN KEY diff --git a/Schema/mip.ind b/Schema/mip.ind index b17fe2c..f3c501a 100644 --- a/Schema/mip.ind +++ b/Schema/mip.ind @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.ind -- --- Generated for Oracle 10g on Tue Jan 22 17:48:44 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Jan 28 18:35:24 2008 by Server Generator 10.1.2.6.18 PROMPT Creating Index 'REGU_RETY_FK_I' @@ -25,12 +25,6 @@ CREATE INDEX QURE_ENQU_FK_I ON QUOTE_REASONING (ENQU_ID) / -PROMPT Creating Index 'DIR_DI_FK_I' -CREATE INDEX DIR_DI_FK_I ON DATA_ITEM_ROLES - (DI_TABLE_NAME - ,DI_FIELD_NAME) -/ - PROMPT Creating Index 'DIR_ENTY_FK_I' CREATE INDEX DIR_ENTY_FK_I ON DATA_ITEM_ROLES (ENTY_CODE) diff --git a/Schema/mip.sql b/Schema/mip.sql index bfb0510..579476e 100644 --- a/Schema/mip.sql +++ b/Schema/mip.sql @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.sql -- --- Generated for Oracle 10g on Tue Jan 22 17:48:45 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Jan 28 18:35:25 2008 by Server Generator 10.1.2.6.18 SPOOL mip.lst diff --git a/Schema/mip.sqs b/Schema/mip.sqs index 593079c..aceeaea 100644 --- a/Schema/mip.sqs +++ b/Schema/mip.sqs @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.sqs -- --- Generated for Oracle 10g on Tue Jan 22 17:48:45 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Jan 28 18:35:24 2008 by Server Generator 10.1.2.6.18 PROMPT Creating Sequence 'FLTR_SEQ' CREATE SEQUENCE FLTR_SEQ diff --git a/Schema/mip.tab b/Schema/mip.tab index be2cad6..672ec79 100644 --- a/Schema/mip.tab +++ b/Schema/mip.tab @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.tab -- --- Generated for Oracle 10g on Tue Jan 22 17:48:44 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Jan 28 18:35:24 2008 by Server Generator 10.1.2.6.18 @@ -52,12 +52,14 @@ CREATE TABLE QUOTE_REASONING PROMPT Creating Table 'DATA_ITEM_ROLES' CREATE TABLE DATA_ITEM_ROLES - (DI_FIELD_NAME VARCHAR2(240) NOT NULL - ,DI_TABLE_NAME VARCHAR2(240) NOT NULL - ,ENTY_CODE VARCHAR2(80) NOT NULL + (ENTY_CODE VARCHAR2(80) NOT NULL + ,TABLE_NAME VARCHAR2(240) NOT NULL + ,FIELD_NAME VARCHAR2(240) NOT NULL ,CONDITION VARCHAR2(30) NOT NULL - ,ERROR_MESSAGE VARCHAR2(250) ,DESCRIPTION VARCHAR2(80) + ,DISPLAY_SEQUENCE VARCHAR2(240) + ,ERROR_MESSAGE VARCHAR2(250) + ,NOTES VARCHAR2(240) ) / @@ -314,14 +316,6 @@ CREATE TABLE ENQUIRY_TYPES ) / -PROMPT Creating Table 'DATA_ITEMS' -CREATE TABLE DATA_ITEMS - (FIELD_NAME VARCHAR2(240) NOT NULL - ,TABLE_NAME VARCHAR2(240) NOT NULL - ,DESCRIPTION VARCHAR2(240) - ) -/ - PROMPT Creating Table 'DOCUMENT_ROLES' CREATE TABLE DOCUMENT_ROLES (DOCU_ID NUMBER(*,0) NOT NULL