When deleting enquiry, also delete uploaded files.

git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@4758 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
hardya
2008-04-10 08:19:52 +00:00
parent b3635ec1df
commit 66a5a771ef

View File

@@ -176,6 +176,8 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS
FUNCTION delete_enquiry(p_enqu_id IN enquiries.id%TYPE
,p_message OUT VARCHAR2) RETURN BOOLEAN IS
l_enquiry_deleted BOOLEAN := TRUE;
TYPE t_rowid IS TABLE OF ROWID;
l_rowid t_rowid := t_rowid();
BEGIN
pl('delete_enquiry:entry:' || p_enqu_id
,$$PLSQL_LINE);
@@ -192,6 +194,39 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS
-- delete all associations with this enquiry
--
DELETE FROM apex_application_files aaf
WHERE aaf.NAME IN (SELECT uri
FROM documents docu
,document_roles doro
WHERE doro.enqu_id = p_enqu_id
AND doro.docu_id = docu.id
AND docu.docu_type = 'INDO');
DELETE FROM document_events doev
WHERE doev.docu_id IN
(SELECT docu_id
FROM document_roles doro
WHERE doro.enqu_id = p_enqu_id);
-- document roles knows which files should be deleted
-- through a FK
-- 1. Gather the rowids of the documents first,
-- 2. Remove the document role
-- 3. Remove the associated document
SELECT ROWID BULK COLLECT
INTO l_rowid
FROM documents
WHERE id IN (SELECT docu_id
FROM document_roles
WHERE enqu_id = p_enqu_id);
DELETE FROM document_roles doro
WHERE doro.enqu_id = p_enqu_id;
FORALL l_idx IN INDICES OF l_rowid
DELETE FROM documents
WHERE ROWID = l_rowid(l_idx);
DELETE FROM quote_reasoning
WHERE enqu_id = p_enqu_id;
@@ -639,61 +674,61 @@ CREATE OR REPLACE PACKAGE BODY mip_enquiry IS
p_existing_mesc_code || ':' || p_required_mesc_code
,$$PLSQL_LINE);
IF p_enty_code IS NOT NULL THEN
-- is Qmax set to be hidden?
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
IF p_enty_code IN
('OFMAT', 'REMOVE', 'STD REMOVE', 'ADVERSARIAL', 'ADDON') THEN
l_existing_qmax := TRUE;
ELSE
l_required_qmax := TRUE;
END IF;
IF l_existing_qmax THEN
IF (nvl(p_existing_metr_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:EXISTING_METR_CODE SPECIFIED');
l_return := FALSE;
ELSIF
(nvl(p_existing_metr_code
,'OTHER') = 'OTHER' AND
nvl(p_existing_mesc_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:EXISTING_MESC SPECIFIED'
IF p_enty_code IS NOT NULL THEN
-- is Qmax set to be hidden?
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
IF p_enty_code IN
('OFMAT', 'REMOVE', 'STD REMOVE', 'ADVERSARIAL', 'ADDON') THEN
l_existing_qmax := TRUE;
ELSE
l_required_qmax := TRUE;
END IF;
IF l_existing_qmax THEN
IF (nvl(p_existing_metr_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:EXISTING_METR_CODE SPECIFIED');
l_return := FALSE;
ELSIF
(nvl(p_existing_metr_code
,'OTHER') = 'OTHER' AND
nvl(p_existing_mesc_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:EXISTING_MESC SPECIFIED'
,$$PLSQL_LINE);
l_return := FALSE;
END IF;
END IF;
IF l_required_qmax
AND (nvl(p_required_mesc_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:REQUIRED_MESC SPECIFIED'
,$$PLSQL_LINE);
l_return := FALSE;
END IF;
END IF;
IF l_required_qmax
AND (nvl(p_required_mesc_code
,'OTHER') <> 'OTHER') THEN
pl('show_qmax:REQUIRED_MESC SPECIFIED'
,$$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