From dbcb349c4531f6d0b36c33bde2f1d77fe9cec26b Mon Sep 17 00:00:00 2001 From: hardya Date: Tue, 4 Mar 2008 12:03:03 +0000 Subject: [PATCH] Addresses #269, #280, #306. Add processing to make it clearer which application build has been produced and to link the schema with the correct application (AssociateSchema.sql, SetSubstitution.sql, bulk_load.sql and InstallMIP.cmd) Changes to schema: METERS now have 'MESC_CODE'. Associated changes in the bulk_load routines and initial changes to mip_quotation.pck (needs confirmation testing). git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3830 248e525c-4dfb-0310-94bc-949c084e9493 --- Data/BulkLoad/DATAITEM_ROLES.csv | 14 +-- Data/BulkLoad/bulk_load.sql | 2 +- Data/Seed/syco.ctl | 1 + InstallMIP.cmd | 12 +- Modules/mip_quotation.pck | 179 ++++++++++++++++++++++++------ Schema/AssociateSchema.sql | 1 + Schema/InstallSetSubstitution.sql | 5 + Schema/SetSubstitution.sql | 47 ++++++++ Schema/mip.con | 50 ++++----- Schema/mip.ind | 2 +- Schema/mip.sql | 2 +- Schema/mip.sqs | 2 +- Schema/mip.tab | 4 +- tests/start.rb | 10 +- 14 files changed, 250 insertions(+), 81 deletions(-) create mode 100644 Schema/InstallSetSubstitution.sql create mode 100644 Schema/SetSubstitution.sql diff --git a/Data/BulkLoad/DATAITEM_ROLES.csv b/Data/BulkLoad/DATAITEM_ROLES.csv index e7c144f..84ee059 100644 --- a/Data/BulkLoad/DATAITEM_ROLES.csv +++ b/Data/BulkLoad/DATAITEM_ROLES.csv @@ -1,4 +1,4 @@ -COLUMN_NAME ,Appendix Reference,INSTALL,STD INSTALL,OFMAT,EXCHANGE,STD EXCHANGE,REMOVE,STD REMOVE,ADVERSARIAL,ALTERATION,CHANGE CAPACITY,"ADDONS(EMS,AMR)",OTHER,Notes,DisplaySequence +COLUMN_NAME ,Appendix Reference,INSTALL,STD INSTALL,OFMAT,EXCHANGE,STD EXCHANGE,REMOVE,STD REMOVE,ADVERSARIAL,ALTERATION,CHANGE CAPACITY,ADDONS(EMS,AMR),OTHER,Notes,DisplaySequence INSTALL_BUILDING,Address.Building,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,O-M1,,1 INSTALL_CITY,Address.City,M,M,M,M,M,M,M,M,M,M,M,M,,2 FIRST_CONTACT_NAME,Address.Contact Name,M,M,M,M,M,M,M,M,M,M,M,M,,3 @@ -23,10 +23,10 @@ FIRST_CONTACT_TELEPHONE_1,Contact Address.Telephone1,M,M,M,M,M,M,M,M,M,M,M,M,,21 SECOND_CONTACT_TELEPHONE_1,Contact Address.Telephone1,O,O,O,O,O,O,O,O,O,O,O,O,,22 FIRST_CONTACT_TELEPHONE_2,Contact Address.Telephone2,O,O,O,O,O,O,O,O,O,O,O,O,,23 SECOND_CONTACT_TELEPHONE_2,Contact Address.Telephone2,O,O,O,O,O,O,O,O,O,O,O,O,,24 -AMR_REQUIRED,Job Information.Additional Services.AMR,O-M5,O-M5,H,O-M5,O-M5,H,H,H,O-M5,O-M5,O-M5,O-M5,"The AMR may only be available for the Tripartite suppliers or BG, GW to confirm!",25 +AMR_REQUIRED,Job Information.Additional Services.AMR,O-M5,O-M5,H,O-M5,O-M5,H,H,H,O-M5,O-M5,O-M5,O-M5,The AMR may only be available for the Tripartite suppliers or BG, GW to confirm!,25 BASE_REQUIRED,Job Information.Additional Services.Base,M,M,H,M,M,H,H,H,M,M,H,M,,26 -BYPASS_REQUIRED,Job Information.Additional Services.By-pass,O,O,H,O,O,H,H,H,O,O,O,O,"If yes, warn user if twin stream is no",27 -CONVERTOR_REQUIRED,Job Information.Additional Services.Convertor,M,M,H,M,M,M,M,M,M,M,M,M,this can be an add-on for removals,28 +BYPASS_REQUIRED,Job Information.Additional Services.By-pass,O,O,H,O,O,H,H,H,O,O,O,O,If yes, warn user if twin stream is no,27 +CONVERTOR_REQUIRED,Job Information.Additional Services.Convertor,M,M,H,M,M,H,H,H,M,M,M,M,this can be an add-on for removals,28 EMS_REQUIRED,Job Information.Additional Services.EMS,M,M,H,M,M,H,H,H,M,M,M,M,,29 HOUSING_REQUIRED,Job Information.Additional Services.Housing,M,M,H,M,M,H,H,H,M,M,H,M,,30 TWIN_STREAM_REQUIRED,Job Information.Additional Services.Twin Stream,M,M,H,M,M,H,H,H,M,M,H,M,,31 @@ -47,7 +47,7 @@ MARKET_SECTOR_CODE,Job Information.Market Sector Code,O,O,O,O,O,O,O,O,O,O,O,O,,4 QMAX,Job Information.Measuring Capacity Qmax,M,O-M2,O,M,O-M2,O,O,O,O,M,O,O,,46 QMIN,Job Information.Measuring Capacity Qmin,O,O,O,O,O,O,O,O,O,O,O,O,,47 REQUIRED_MESC_CODE,Job Information.Meter Size,H,O-M2,H,H,O-M2,H,H,H,H,O,H,O,,48 -EXISTING_METER_MODEL,Job Information.Model Code,H,H,O,O,O,O,O,O,O,O,O,O,,49 +EXISTING_METER_MODEL,Job Information.Model Code,H,H,M,M,M,M,M,M,O,O,O,O,,49 OTHER_INFORMATION,Job Information.Other Information,O,O,O,O,O,O,O,O,O,O,O,O,,50 OTHER_PROJECT_REFERENCE,Job Information.Other Related Projects,O,O,O,O,O,O,O,O,O,O,O,O,,51 REQUIRED_METERING_PRESSURE,Job Information.Required Meter Pressure,M,M,M,M,M,M,M,M,M,M,O,O,,52 @@ -70,8 +70,8 @@ AGENT_COMT_CODE,Supplier Agent.Telephone1/Telephone2/Fax/Email,M,M,M,M,M,M,M,M,M AGENT_CONTACT_VALUE,Supplier Agent.Telephone1/Telephone2/Fax/Email,M,M,M,M,M,M,M,M,M,M,M,M,,69 ID,Enquiry Reference (not in spec appendix),M,M,M,M,M,M,M,M,M,M,M,M,,70 EXISTING_LOGGER,Job Information.Logger,H,H,H,O,O,O,O,O,O,O,O,O,,71 -EXISTING_CONVERTOR,Job Information.Existing Convertor,H,H,O,M,M,M,M,M,M,M,O,O,,72 -CREATED_BY,,,,,,,,,,,,,,, +EXISTING_CONVERTOR,Job Information.Existing Convertor,H,H,O,M,M,M,M,M,O,O,O,O,,72 +EXISTING_MANUFACTURER,Job Information.Existing Manufacturer,H,H,M,M,M,M,M,M,O,O,O,O,, CREATED_ON,,,,,,,,,,,,,,, UPDATED_BY,,,,,,,,,,,,,,, UPDATED_ON,,,,,,,,,,,,,,, diff --git a/Data/BulkLoad/bulk_load.sql b/Data/BulkLoad/bulk_load.sql index f82f1e3..a268bec 100644 --- a/Data/BulkLoad/bulk_load.sql +++ b/Data/BulkLoad/bulk_load.sql @@ -28,7 +28,7 @@ BEGIN END IF; update system_configuration - set value = 'WEBMIP - '||upper('&&1')||' - '||to_char(sysdate, 'DD-Mon-YYYY') + set value = 'WEBMIP ('||upper('&&2')||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI')||')' where parameter = 'SYSTEM_NAME'; END; diff --git a/Data/Seed/syco.ctl b/Data/Seed/syco.ctl index a93a011..f1e1cf6 100644 --- a/Data/Seed/syco.ctl +++ b/Data/Seed/syco.ctl @@ -17,6 +17,7 @@ EMAIL_FROM_ADDRESS|webMIP@advanticagroup.com|The From field used for emails sent QUOTE_LAPSE_LIMIT|90|The number of days that a quote remains valid for before lapsing. EMAIL_ADDRESS_MANUAL_QUOTE|webMIP@advanticagroup.com| EMAIL_ADDRESS_SUPPORT|webMIP@advanticagroup.com| +EMAIL_ADDRESS_INTERNAL_USER|webMIP@advanticagroup.com| AV_LOCATION|c:\Program Files\Norton AntiVirus\NAVW32.exe|Anti-virus checker installation APEX_AUTHORIZATION_DEFAULT_MODE|PUBLIC|Default authorization for components SYSTEM_NAME|WEBMIP - WHO KNOWS WHERE!| diff --git a/InstallMIP.cmd b/InstallMIP.cmd index c7d9188..db863ab 100644 --- a/InstallMIP.cmd +++ b/InstallMIP.cmd @@ -9,7 +9,6 @@ if "%5"=="" goto :usage @echo Install Schema sqlplus /nolog @Schema\InstallMIP %1 %2 %3 %4 %5 %6 - if "%6"=="" goto :not_associate @echo Associate Schema @@ -40,6 +39,7 @@ if "%6"=="sat" goto :sat if "%6"=="uat" goto :uat if "%6"=="live" goto :live if "%6"=="train" goto :train +if "%6"=="dev" goto :bulkload :demo @@ -119,13 +119,21 @@ cd ..\.. goto :bulkload :bulkload + @echo Perform Bulk Load sqlplus %3/%4@%5 @Data\BulkLoad\bulk_load.sql "%6" + +if "%6"=="" goto :not_substitution + +@echo Set Substitution Strings +sqlplus /nolog @Schema\InstallSetSubstitution.sql %1 %2 %3 %4 %5 %6 +:not_substitution + goto :done :usage -echo "usage InstallMIP sys_name sys_password app_name app_password db_connect_string [demo|test|fat|sat|uat|train|live]" +echo "usage InstallMIP sys_name sys_password app_name app_password db_connect_string [dev|demo|test|fat|sat|uat|train|live]" :done @echo DONE! diff --git a/Modules/mip_quotation.pck b/Modules/mip_quotation.pck index a1d7711..1dcfe6b 100644 --- a/Modules/mip_quotation.pck +++ b/Modules/mip_quotation.pck @@ -331,6 +331,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,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 + l_enqu_id enquiries.id%TYPE; BEGIN add_quote_event(p_qute_id => p_qute_id ,p_qust_code => 'SELECTED' @@ -355,6 +356,13 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_event_date => p_event_date); END LOOP; + SELECT enqu_id + INTO l_enqu_id + FROM quotes + WHERE id = p_qute_id; + + email_agent_aq_available(l_enqu_id); + END select_quote; PROCEDURE lapse_quotes_job IS @@ -467,8 +475,6 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS IF l_qute_type = 'MQ' THEN email_agent_mq_available(l_enqu_id); - ELSE - email_agent_aq_available(l_enqu_id); END IF; END make_quote_available; @@ -514,6 +520,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS RETURN l_value; EXCEPTION WHEN no_data_found THEN + pl('SYSTEM_CONFIGURATION ERROR - PARAMETER ''' || p_parameter || + ''' NOT FOUND'); RETURN 'SYSTEM_CONFIGURATION ERROR - PARAMETER ''' || p_parameter || ''' NOT FOUND'; END get_system_configuration_value; @@ -536,6 +544,12 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS RETURN get_system_configuration_value('EMAIL_ADDRESS_SUPPORT'); END get_support_recipient; + FUNCTION get_internal_user_recipient RETURN system_configuration.VALUE%TYPE IS + BEGIN + + RETURN get_system_configuration_value('EMAIL_ADDRESS_INTERNAL_USER'); + END get_internal_user_recipient; + FUNCTION get_system_name RETURN system_configuration.VALUE%TYPE IS BEGIN @@ -915,6 +929,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); close_body; BEGIN + pl('email_to_agent:l_email_recipient=' || l_email_recipient || ':' || + 'l_email_subject=' || l_email_subject); + mip_email.send_email_clob(p_recipient => l_email_recipient ,p_body => g_email_plain_body ,p_body_html => g_email_html_body @@ -929,7 +946,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); PROCEDURE email_to_internal_users(p_enqu_id IN enquiries.id%TYPE ,p_email_reason IN t_email_reason) IS l_email_subject VARCHAR2(240); - l_email_recipient VARCHAR2(240); + l_email_recipient VARCHAR2(240) := get_internal_user_recipient; l_qute_id quotes.id%TYPE; BEGIN pl('email_internal_users:entry:p_enqu_id=' || p_enqu_id || @@ -988,6 +1005,8 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); END IF; close_body; BEGIN + pl('email_to_internal_users:l_email_recipient=' || l_email_recipient || ':' || + 'l_email_subject=' || l_email_subject); mip_email.send_email_clob(p_recipient => l_email_recipient ,p_body => g_email_plain_body ,p_body_html => g_email_html_body @@ -1124,8 +1143,8 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); 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); + /*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 @@ -1156,19 +1175,19 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_field_name IN VARCHAR2) RETURN VARCHAR2 IS l_error_message validation_results.error_message%TYPE; BEGIN - pl('validation_result enqu_id=' || p_enqu_id || ', field_name=' || - p_field_name); + /* 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); + /*pl('returning ' || l_error_message);*/ RETURN l_error_message; EXCEPTION WHEN no_data_found THEN - pl('Nothing found'); + /* pl('Nothing found');*/ RETURN NULL; WHEN OTHERS THEN pl('validation_result:' || SQLERRM); @@ -1243,6 +1262,41 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); p_qmax); END get_u_meter_size; + FUNCTION get_qmax_from_mesc(p_mesc_code IN meter_size_codes.code%TYPE) + RETURN meter_size_codes.qmax%TYPE IS + l_qmax meter_size_codes.qmax%TYPE; + BEGIN + SELECT qmax + INTO l_qmax + FROM meter_size_codes + WHERE code = p_mesc_code; + RETURN l_qmax; + EXCEPTION + WHEN no_data_found THEN + cout_err.report_and_stop(p_exception_message => 'Unable to find Qmax for Meter Size Code of ' || + p_mesc_code); + END get_qmax_from_mesc; + + FUNCTION get_next_u_meter_size(p_existing_mesc_code IN meter_size_codes.code%TYPE) + RETURN meter_size_codes.code%TYPE IS + l_mesc_code meter_size_codes.code%TYPE; + BEGIN + + SELECT next_mesc_code + INTO l_mesc_code + FROM (SELECT code AS existing_mesc + ,lead(code) over(ORDER BY qmax) AS next_mesc_code + FROM meter_size_codes + WHERE code LIKE 'U%') + WHERE existing_mesc = p_existing_mesc_code; + + RETURN l_mesc_code; + + EXCEPTION + WHEN no_data_found THEN + RETURN NULL; + END get_next_u_meter_size; + FUNCTION valid_meter_size_upgrade(p_existing_meter_size_code IN meter_size_codes.code%TYPE ,p_required_meter_size_code IN meter_size_codes.code%TYPE) RETURN BOOLEAN IS @@ -1258,7 +1312,8 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); INTO l_dummy FROM (SELECT code AS existing_mesc ,lead(code) over(ORDER BY qmax) AS required_mesc - FROM meter_size_codes) + FROM meter_size_codes + WHERE code LIKE 'U%') WHERE existing_mesc = p_existing_meter_size_code AND required_mesc = p_required_meter_size_code; RETURN TRUE; @@ -1269,6 +1324,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); PROCEDURE survey_required(p_enqu IN t_enqu ,p_manual_or_automatic_quote IN OUT t_manual_or_automatic_quote) IS + l_svcpt_code service_pressure_types.code%TYPE; l_existing_meter_size_code meter_size_codes.code%TYPE; l_required_meter_size_code meter_size_codes.code%TYPE; BEGIN @@ -1276,8 +1332,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); -- Low Pressure Rules -- Site survey required for: - -- Relocation - -- Exchange where upgrade is greater than 1 'U' size + -- Alteration + -- Exchange of non-MP meter + -- Exchange of MP where upgrade is greater than 1 'U' size IF p_enqu.enty_code = 'ALTERATION' THEN p_manual_or_automatic_quote := gc_manual_quote; @@ -1286,26 +1343,43 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); 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 - l_required_meter_size_code := get_u_meter_size(p_enqu.qmax); - END IF; - IF NOT - valid_meter_size_upgrade(p_existing_meter_size_code => l_existing_meter_size_code - ,p_required_meter_size_code => l_required_meter_size_code) THEN + SELECT svcpt_code + INTO l_svcpt_code + FROM service_pressures + WHERE code = p_enqu.required_svcp_code; + IF l_svcpt_code <> 'MP' THEN p_manual_or_automatic_quote := gc_manual_quote; add_quote_reason(p_enqu.id - ,'Site Survey is required for exchange of meter from size ' || - l_existing_meter_size_code || ' to ' || - l_required_meter_size_code || '.'); - END IF; - -- END IF; -- svcpt_code = 'LP' + ,'Site Survey is required for exchange of an existing non-MP meter.'); + ELSE + -- Exchange, MP + IF p_enqu.existing_mety_code <> 'DIAPHRAGM' THEN + p_manual_or_automatic_quote := gc_manual_quote; + add_quote_reason(p_enqu.id + ,'Site Survey is required for exchange of an existing non-diaphragm meter.'); + ELSE + -- Exchange, MP, Diaphragm + l_existing_meter_size_code := p_enqu.existing_mesc_code; + IF p_enqu.existing_mesc_code IS NULL THEN + l_existing_meter_size_code := get_u_meter_size(p_enqu.qmax); + END IF; + + l_required_meter_size_code := p_enqu.required_mesc_code; + IF l_required_meter_size_code IS NULL THEN + l_required_meter_size_code := get_u_meter_size(p_enqu.qmax); + END IF; + + IF NOT + valid_meter_size_upgrade(p_existing_meter_size_code => l_existing_meter_size_code + ,p_required_meter_size_code => l_required_meter_size_code) THEN + p_manual_or_automatic_quote := gc_manual_quote; + add_quote_reason(p_enqu.id + ,'Site Survey is required for exchange of diaphragm meter from size ' || + l_existing_meter_size_code || ' to ' || + l_required_meter_size_code || '.'); + END IF; + END IF; -- DIAPHRAGM + END IF; -- svcpt_code <> 'MP' END IF; -- EXCHANGE END survey_required; @@ -1749,6 +1823,8 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_qute_id quotes.id%TYPE; l_additional_costs t_rec_additional_costs; l_quote_document VARCHAR2(240); + l_required_mesc_code meter_size_codes.code%TYPE; + l_required_qmax meter_size_codes.qmax%TYPE; BEGIN pl('produce_module_quotes'); cout_assert.istrue(p_enqu.enty_code IN ('INSTALL', 'STD INSTALL', @@ -1764,7 +1840,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); add_quote_reason(p_enqu.id ,p_reason => 'Attempting an automatic installation quote for ' || p_enqu.id || '.' || ' Required SVCP ' || - p_enqu.required_svcp_code || ', QMAX=' || + p_enqu.required_svcp_code || + ', REQUESTED_MESC_CODE=' || + p_enqu.required_mesc_code || ', QMAX=' || p_enqu.qmax || ', Outlet Pressure=' || p_enqu.required_metering_pressure || '.' ,p_internal_or_external => gc_internal_reason); @@ -1772,7 +1850,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); add_quote_reason(p_enqu.id ,p_reason => 'Attempting an automatic exchange quote for ' || p_enqu.id || '.' || ' Required SVCP ' || - p_enqu.required_svcp_code || ', QMAX=' || + p_enqu.required_svcp_code || + ', REQUESTED_MESC_CODE=' || + p_enqu.required_mesc_code || ', QMAX=' || p_enqu.qmax || ', Outlet Pressure=' || p_enqu.required_metering_pressure || '.' || 'Existing meter was a ' || @@ -1783,7 +1863,9 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); add_quote_reason(p_enqu.id ,p_reason => 'Attempting an automatic change capacity quote for ' || p_enqu.id || '.' || ' Required SVCP ' || - p_enqu.required_svcp_code || ', QMAX=' || + p_enqu.required_svcp_code || + ', REQUESTED_MESC_CODE=' || + p_enqu.required_mesc_code || ', QMAX=' || p_enqu.qmax || ', Outlet Pressure=' || p_enqu.required_metering_pressure || '.' || 'Existing meter was a ' || @@ -1792,6 +1874,20 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,p_internal_or_external => gc_internal_reason); END IF; + IF p_enqu.required_mesc_code IS NOT NULL THEN + l_required_qmax := get_qmax_from_mesc(p_enqu.required_mesc_code); + ELSE + l_required_qmax := p_enqu.qmax; + END IF; + + IF p_enqu.enty_code = 'EXCHANGE' THEN + IF p_enqu.existing_mesc_code IS NULL THEN + l_required_mesc_code := get_next_u_meter_size(get_u_meter_size(l_required_qmax)); + ELSE + l_required_mesc_code := get_next_u_meter_size(p_enqu.existing_mesc_code); + END IF; + END IF; + FOR l_rec_module IN (SELECT modu.code AS modu_code ,modu.selling_price AS modu_selling_price ,modu.cost_price AS modu_cost_price @@ -1812,6 +1908,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,metr.qnom ,metr.qmax AS metr_qmax ,metr.qmin + ,metr.mesc_code ,metr.mety_code ,NULL AS laco_mety_code ,NULL AS laco_svcpt_code @@ -1880,12 +1977,16 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,metr.qmin ,metr.qnom ,metr.mety_code + ,metr.mesc_code FROM meters metr) metr WHERE modu.svcp_code = p_enqu.required_svcp_code AND modu.outlet_pressure = p_enqu.required_metering_pressure AND metr.code = modu.metr_code - AND modu.qmax >= p_enqu.qmax) LOOP + AND (p_enqu.enty_code <> 'EXCHANGE' OR + (p_enqu.enty_code = 'EXCHANGE' AND + metr.mesc_code = l_required_mesc_code)) + AND modu.qmax >= l_required_qmax) LOOP l_this_is_automatic_quote := TRUE; add_quote_reason(p_enqu.id ,p_reason => 'Considering module : ' || @@ -1923,7 +2024,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_additional_costs := get_laco(p_enty_code => p_enqu.enty_code ,p_regi_code => l_regi_code ,p_mety_code => l_rec_module.mety_code - ,p_mesc_code => p_enqu.required_mesc_code + ,p_mesc_code => l_rec_module.mesc_code ,p_svcp_code => p_enqu.required_svcp_code); l_rec_module.laco_svcpt_code := l_additional_costs.svcpt_code; l_rec_module.laco_selling_price := l_additional_costs.selling_price; @@ -2369,6 +2470,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_qute_id quotes.id%TYPE; l_labour_costs t_rec_additional_costs; l_quote_document VARCHAR2(240); + l_existing_mesc_code meter_size_codes.code%TYPE; BEGIN pl('produce_labour_only_quotes'); cout_assert.istrue(p_enqu.enty_code IN @@ -2393,6 +2495,11 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); l_this_is_automatic_quote := TRUE; + l_existing_mesc_code := p_enqu.required_mesc_code; + IF l_existing_mesc_code IS NULL THEN + l_existing_mesc_code := get_u_meter_size(p_enqu.qmax); + END IF; + l_labour_costs := get_laco(p_enty_code => p_enqu.enty_code ,p_regi_code => l_regi_code ,p_mety_code => p_enqu.existing_mety_code @@ -2458,7 +2565,7 @@ RECEIVED AT THIS ADDRESS CANNOT BE RESPONDED TO.'); ,l_qute_id ,p_enqu.enty_code ,l_labour_costs.svcpt_code - ,p_enqu.existing_mesc_code + ,l_existing_mesc_code ,p_enqu.existing_mety_code ,l_labour_costs.cost_price ,l_labour_costs.selling_price diff --git a/Schema/AssociateSchema.sql b/Schema/AssociateSchema.sql index 2f6fe34..842aeb1 100644 --- a/Schema/AssociateSchema.sql +++ b/Schema/AssociateSchema.sql @@ -50,6 +50,7 @@ BEGIN SET w.owner = l_schema WHERE security_group_id = l_sgid; + ELSE dbms_output.put_line('Run associate_schema: Unexpected parameter value of &&2 received'); END IF; diff --git a/Schema/InstallSetSubstitution.sql b/Schema/InstallSetSubstitution.sql new file mode 100644 index 0000000..5701849 --- /dev/null +++ b/Schema/InstallSetSubstitution.sql @@ -0,0 +1,5 @@ +connect &1/&2@&5 as sysdba + +@@SetSubstitution.sql &3 &6 + +exit diff --git a/Schema/SetSubstitution.sql b/Schema/SetSubstitution.sql new file mode 100644 index 0000000..2c2258a --- /dev/null +++ b/Schema/SetSubstitution.sql @@ -0,0 +1,47 @@ +SET VERIFY OFF +DECLARE + + l_test_load BOOLEAN := upper('&&2') = 'TEST'; + l_fat_load BOOLEAN := upper('&&2') = 'FAT'; + l_uat_load BOOLEAN := upper('&&2') = 'UAT'; + l_live_load BOOLEAN := upper('&&2') = 'LIVE'; + l_train_load BOOLEAN := upper('&&2') = 'TRAIN'; + l_dev_load BOOLEAN := upper(nvl('&&2' + ,'DEV')) = 'DEV'; + l_sgid NUMBER; + l_flow_id NUMBER; + l_schema VARCHAR2(80) DEFAULT upper('&&1'); +BEGIN + + IF l_test_load THEN + l_flow_id := 102; + ELSIF l_fat_load THEN + l_flow_id := 200; + ELSIF l_dev_load THEN + l_flow_id := 155; + ELSIF l_uat_load THEN + l_flow_id := 400; + ELSIF l_train_load THEN + l_flow_id := 800; + END IF; + + IF l_flow_id IS NOT NULL THEN + + SELECT wwv_flow.get_current_flow_sgid(l_flow_id) + INTO l_sgid + FROM dual; + + wwv_flow_api.set_security_group_id(l_sgid); + apex_application.g_flow_id := l_flow_id; + + UPDATE flows_030000.wwv_flows w + SET w.substitution_value_01 = '('||upper('&&2')||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI')||')' + WHERE security_group_id = l_sgid; + + ELSE + dbms_output.put_line('Run SetSubstitution: Unexpected parameter value of &&2 received'); + END IF; + +END; +/ + diff --git a/Schema/mip.con b/Schema/mip.con index 615fb02..8810cd4 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 Fri Feb 29 13:52:13 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Tue Mar 04 11:30:31 2008 by Server Generator 10.1.2.6.18 PROMPT Creating Primary Key on 'SYSTEM_CONFIGURATION' ALTER TABLE SYSTEM_CONFIGURATION @@ -511,12 +511,12 @@ ALTER TABLE REGI_ENQU_EXCLUSIONS PROMPT Creating Check Constraint on 'METER_SIZE_CODES' ALTER TABLE METER_SIZE_CODES - ADD (CONSTRAINT AVCON_1204293133_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_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_1204293133_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'COSTS' @@ -552,18 +552,18 @@ ALTER TABLE COSTS PROMPT Creating Check Constraint on 'COSTS' ALTER TABLE COSTS - ADD (CONSTRAINT AVCON_1204293133_COST__000 CHECK (COST_TYPE + ADD (CONSTRAINT AVCON_1204630230_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_1204293133_DOCU__000 CHECK (DOCU_TYPE IN ('DOCU', 'INDO', 'EXDO', 'FIDO'))) + ADD (CONSTRAINT AVCON_1204630230_DOCU__000 CHECK (DOCU_TYPE IN ('DOCU', 'INDO', 'EXDO', 'FIDO'))) / PROMPT Creating Check Constraint on 'QUOTES' ALTER TABLE QUOTES - ADD (CONSTRAINT AVCON_1204293133_QUTE__000 CHECK (QUTE_TYPE IN ('AQ', 'MQ', 'QUTE'))) + ADD (CONSTRAINT AVCON_1204630230_QUTE__000 CHECK (QUTE_TYPE IN ('AQ', 'MQ', 'QUTE'))) / PROMPT Creating Check Constraint on 'PARTY_RELATIONSHIPS' @@ -575,17 +575,17 @@ to_parl_rt_code = to_prtp_rt_code)) PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1204293133_TRIPA_000 CHECK (TRIPARTITE_MEMBER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_TRIPA_000 CHECK (TRIPARTITE_MEMBER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1204293133_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) + ADD (CONSTRAINT AVCON_1204630230_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1204293133_PRTY__000 CHECK (PRTY_TYPE + ADD (CONSTRAINT AVCON_1204630230_PRTY__000 CHECK (PRTY_TYPE IN ('PRTY', 'IO', 'EO', 'MKTP', 'PERS', 'MANU', 'NEMP', 'EMP', 'ORG' ))) / @@ -603,82 +603,82 @@ OR PROMPT Creating Check Constraint on 'DOCUMENT_ROLES' ALTER TABLE DOCUMENT_ROLES - ADD (CONSTRAINT AVCON_1204293133_DORO__000 CHECK (DORO_TYPE IN ('DRRO', 'DORO', 'ENDO', 'QUDO'))) + ADD (CONSTRAINT AVCON_1204630230_DORO__000 CHECK (DORO_TYPE IN ('DRRO', 'DORO', 'ENDO', 'QUDO'))) / PROMPT Creating Check Constraint on 'QUOTE_ITEMS' ALTER TABLE QUOTE_ITEMS - ADD (CONSTRAINT AVCON_1204293133_QUIT__000 CHECK (QUIT_TYPE IN ('LQI', 'AQI', 'BQI', 'MQI', 'QUIT', 'HQI'))) + ADD (CONSTRAINT AVCON_1204630230_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_1204293133_RT_TY_000 CHECK (RT_TYPE IN ('DORT', 'PART', 'RT', 'PCMRT', 'QURT', 'ENRT', 'PRT'))) + ADD (CONSTRAINT AVCON_1204630230_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_1204293133_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) + ADD (CONSTRAINT AVCON_1204630230_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_EXIST_000 CHECK (EXISTING_LOGGER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_EXIST_000 CHECK (EXISTING_LOGGER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) + ADD (CONSTRAINT AVCON_1204630230_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_EXIST_001 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) + ADD (CONSTRAINT AVCON_1204630230_EXIST_001 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_EXIST_002 CHECK (EXISTING_CONVERTOR IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1204630230_EXIST_002 CHECK (EXISTING_CONVERTOR IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1204293133_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) + ADD (CONSTRAINT AVCON_1204630230_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) / PROMPT Creating Check Constraint on 'REGI_ENQU_EXCLUSIONS' diff --git a/Schema/mip.ind b/Schema/mip.ind index 7965260..45acf88 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 Fri Feb 29 13:52:13 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Tue Mar 04 11:30:31 2008 by Server Generator 10.1.2.6.18 PROMPT Creating Index 'REGU_RETY_FK_I' diff --git a/Schema/mip.sql b/Schema/mip.sql index 4e02b13..939d214 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 Fri Feb 29 13:52:14 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Tue Mar 04 11:30:31 2008 by Server Generator 10.1.2.6.18 SPOOL mip.lst diff --git a/Schema/mip.sqs b/Schema/mip.sqs index 047bfcf..8127462 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 Fri Feb 29 13:52:13 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Tue Mar 04 11:30:31 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 52df63b..92c1f85 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 Fri Feb 29 13:52:13 2008 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Tue Mar 04 11:30:30 2008 by Server Generator 10.1.2.6.18 @@ -611,7 +611,7 @@ CREATE TABLE ENQUIRIES ,QMIN NUMBER ,LOAD_CONTROL_TYPE VARCHAR2(10) ,EXISTING_METER_SERIAL_NO VARCHAR2(30) - ,EXISTING_METER_MODEL VARCHAR2(10) + ,EXISTING_METER_MODEL VARCHAR2(20) ,EXISTING_METER_OWNER VARCHAR2(1) ,EXISTING_METER_ASSET_PROVIDER VARCHAR2(210) ,EXISTING_CONVERTOR VARCHAR2(3) diff --git a/tests/start.rb b/tests/start.rb index edb2e46..6ebad08 100644 --- a/tests/start.rb +++ b/tests/start.rb @@ -36,11 +36,11 @@ include Watir # #Get our individual integration tests # -#require 'exportdatatests' -#require 'enquirytests' -#require 'housingtests' -#require 'basestests' -#require 'drawingtests.rb' +require 'exportdatatests' +require 'enquirytests' +require 'housingtests' +require 'basestests' +require 'drawingtests.rb' require 'user_management.rb' #@@ie.wait #@@ie.close \ No newline at end of file