From 86b02a52cefe9f3c25b18d44b90312560decf457 Mon Sep 17 00:00:00 2001 From: PriestJ Date: Fri, 4 Apr 2008 17:05:18 +0000 Subject: [PATCH] part of the fix for ticket #439(sc1004) added new function to determine if an enquiry can be deleted. git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@4726 248e525c-4dfb-0310-94bc-949c084e9493 --- Modules/MIP_ENQUIRY.pck | 147 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 138 insertions(+), 9 deletions(-) diff --git a/Modules/MIP_ENQUIRY.pck b/Modules/MIP_ENQUIRY.pck index d4c9cf2..154e1cd 100644 --- a/Modules/MIP_ENQUIRY.pck +++ b/Modules/MIP_ENQUIRY.pck @@ -16,6 +16,8 @@ CREATE OR REPLACE PACKAGE mip_enquiry IS -- Public function and procedure declarations FUNCTION delete_enquiry(p_enquiryid IN NUMBER) RETURN BOOLEAN; + FUNCTION can_enquiry_be_deleted(p_enquiryid IN NUMBER) RETURN BOOLEAN; + FUNCTION get_enquiry_status(p_enquiryid IN NUMBER) RETURN VARCHAR2; FUNCTION get_enquiry_role(p_enquiryid IN NUMBER @@ -67,6 +69,10 @@ CREATE OR REPLACE PACKAGE mip_enquiry IS ,p_qmax meters.qmax%TYPE) RETURN t_rec_meter_reqs; + FUNCTION show_qmax(p_enty_code enquiry_types.code%TYPE + ,p_existing_mesc_code meters.mesc_code%TYPE + ,p_required_mesc_code meters.mesc_code%TYPE + ,p_existing_metr_code meters.code%TYPE) RETURN BOOLEAN; END mip_enquiry; / CREATE OR REPLACE PACKAGE BODY mip_enquiry IS @@ -140,6 +146,38 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS WHERE enquiries.id = p_enquiryid; RETURN TRUE; END delete_enquiry; + /* + FUNCTION can_enquiry_be_deleted + - This function returns the status of the enquiry provided + - and associated quotes to see if it can be deleted + %param p_enquiryid - the enquiry we want to find the role from. + %return boolean - true if the enquiry can be deleted + */ + FUNCTION can_enquiry_be_deleted(p_enquiryid IN NUMBER) RETURN BOOLEAN AS + -- cursor to get the current enquiry + CURSOR c_check_all_quotes(cp_enqu_id NUMBER) IS + select count(qute_id) + from v_current_quote_status + where QUTE_ID in + (SELECT ID + FROM quotes + WHERE enqu_id = cp_enqu_id) + and QUST_CODE in ('SELECTED','ACCEPTED'); + l_quotes_cannot_del number := 0; + BEGIN + IF NOT c_check_all_quotes%ISOPEN THEN + OPEN c_check_all_quotes(p_enquiryid); + END IF; + + FETCH c_check_all_quotes + INTO l_quotes_cannot_del; + CLOSE c_check_all_quotes; + if l_quotes_cannot_del > 0 then + return false; + else + return true; + end if; + END can_enquiry_be_deleted; /* FUNCTION get_enquiry_status - This function returns the status of the enquiry provided @@ -204,7 +242,7 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS ,p_partyid IN NUMBER ,p_rolecode IN VARCHAR2) RETURN BOOLEAN AS BEGIN - + pl('set_enquiry_role:entry:'||p_enquiryid||':'||p_partyid||':'||p_rolecode,$$plsql_line); INSERT INTO enquiry_roles (enqu_id ,prty_id @@ -216,12 +254,13 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS ,SYSDATE ,p_rolecode); + pl('set_enquiry_role:exit',$$plsql_line); RETURN TRUE; -- - -- EXCEPTION - -- WHEN OTHERS THEN - -- RETURN FALSE; - -- RAISE; + EXCEPTION + WHEN OTHERS THEN + pl('set_enquiry_role:EXCEPTION:'||SQLERRM,$$plsql_line); + RAISE; END set_enquiry_role; -- @@ -239,7 +278,8 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS ,p_rolecode IN VARCHAR2 ,p_description IN VARCHAR2) RETURN BOOLEAN AS BEGIN - + pl('set_enquiry_role:entry:'||p_enquiryid||':'||p_partyid||':'||p_rolecode||':'||p_description,$$plsql_line); + INSERT INTO enquiry_roles (enqu_id ,prty_id @@ -253,11 +293,14 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS ,p_rolecode ,p_description); + pl('set_enquiry_role:exit',$$plsql_line); + RETURN TRUE; -- - EXCEPTION - WHEN OTHERS THEN - RETURN FALSE; + EXCEPTION + WHEN OTHERS THEN + pl('set_enquiry_role:EXCEPTION:'||SQLERRM,$$plsql_line); + RAISE; END set_enquiry_role; -- /* @@ -531,5 +574,91 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS END calc_meter_reqs; + FUNCTION show_qmax(p_enty_code enquiry_types.code%TYPE + ,p_existing_mesc_code meters.mesc_code%TYPE + ,p_required_mesc_code meters.mesc_code%TYPE + ,p_existing_metr_code meters.code%TYPE) RETURN BOOLEAN IS + l_return BOOLEAN := TRUE; + l_required_mesc_enquiry BOOLEAN; + l_existing_mesc_enquiry BOOLEAN; + l_dummy NUMBER; + BEGIN + + pl('show_qmax:entry:'||p_enty_code||':'||p_existing_metr_code||':'||p_existing_mesc_code||':'||p_required_mesc_code,$$PLSQL_LINE); + + BEGIN + SELECT NULL + INTO l_dummy + FROM data_item_roles + WHERE enty_code = p_enty_code + AND field_name = 'QMAX' + AND substr(condition + ,1 + ,1) <> 'H'; + + l_return := TRUE; + EXCEPTION + WHEN no_data_found THEN + pl('show_qmax:QMAX IS HIDDEN',$$PLSQL_LINE); + l_return := FALSE; + END; + + IF l_return THEN + BEGIN + SELECT NULL + INTO l_dummy + FROM data_item_roles + WHERE enty_code = p_enty_code + AND field_name = 'REQUIRED_MESC_CODE' + AND substr(condition + ,1 + ,1) <> 'H'; + + l_required_mesc_enquiry := TRUE; + EXCEPTION + WHEN no_data_found THEN + pl('show_qmax:NOT A REQUIRED MESC ENQUIRY',$$PLSQL_LINE); + l_required_mesc_enquiry := FALSE; + END; + + IF l_required_mesc_enquiry + AND (nvl(p_required_mesc_code + ,'OTHER') <> 'OTHER') THEN + pl('show_qmax:REQUIRED MESC NOT OTHER',$$PLSQL_LINE); + l_return := FALSE; + ELSE + BEGIN + SELECT NULL + INTO l_dummy + FROM data_item_roles + WHERE enty_code = p_enty_code + AND field_name = 'EXISTING_MESC_CODE' + AND substr(condition + ,1 + ,1) <> 'H'; + l_existing_mesc_enquiry := TRUE; + EXCEPTION + WHEN no_data_found THEN + pl('show_qmax:NOT EXISTING MESC ENQUIRY',$$PLSQL_LINE); + l_existing_mesc_enquiry := FALSE; + END; + + IF l_existing_mesc_enquiry + AND ((nvl(p_existing_metr_code + ,'OTHER') <> 'OTHER') OR + (nvl(p_existing_metr_code + ,'OTHER') = 'OTHER' AND + nvl(p_existing_mesc_code + ,'OTHER') <> 'OTHER')) THEN + pl('show_qmax:EXISTING METR OR MESC NOT OTHER',$$PLSQL_LINE); + l_return := FALSE; + END IF; + END IF; + END IF; + +pl('show_qmax:exit:'||CASE l_return WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END,$$PLSQL_LINE); + RETURN l_return; + + END show_qmax; END mip_enquiry; /