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
This commit is contained in:
PriestJ
2008-04-04 17:05:18 +00:00
parent a4104562e2
commit 86b02a52ce

View File

@@ -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,6 +278,7 @@ 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
@@ -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;
/