1 PACKAGE BODY qa_customer AS
2 /* $Header: qarcb.pls 120.0 2005/05/24 19:11:56 appldev noship $ */
3
4 PROCEDURE merge(
5 req_id IN NUMBER,
6 set_number IN NUMBER,
7 process_mode IN VARCHAR2) IS
8
9 MERGE_NOT_ALLOWED EXCEPTION;
10 CURSOR c IS
11 SELECT qr.customer_id
12 FROM qa_results qr, ra_customer_merges m
13 WHERE qr.customer_id = m.duplicate_id AND
14 m.process_flag = 'N' AND
15 m.request_id = req_id AND
16 m.set_number = set_number;
17
18 from_cust_id NUMBER;
19 Veto_Reason varchar2(300) := 'During account merge an old customer ID is found in QA_RESULTS table. The table is used to store archival info of test data. The customer name can be used for auditing purpose and cannot be deleted';
20
21 BEGIN
22 arp_message.set_line('QA_CUSTOMER.MERGE()+');
23
24 IF process_mode = 'LOCK' THEN
25 null; -- no update will be allowed later
26 ELSE
27 OPEN c;
28 FETCH c INTO from_cust_id;
29 IF c%FOUND THEN
30 CLOSE c;
31 /* rkaza. 07/19/2002. Bug 2447495.
32 QA should only veto the merge delete request. If just a simple merge w/o
33 deleting the actual record, QA should simply let it go.
34 */
35 -- RAISE MERGE_NOT_ALLOWED;
36 ARP_CMERGE_MASTER.veto_delete(
37 req_id => req_id,
38 set_num => set_number,
39 from_customer_id => from_cust_id,
40 veto_reason => Veto_Reason
41 );
42 ELSE
43 CLOSE c;
44 arp_message.set_name('AR', 'AR_ROWS_UPDATED');
45 arp_message.set_token('NUM_ROWS', '0');
46 END IF;
47 END IF;
48 arp_message.set_line('QA_CUSTOMER.MERGE()-');
49
50 EXCEPTION
51 /*
52 WHEN MERGE_NOT_ALLOWED THEN
53 arp_message.set_error('QA_CUSTOMER.MERGE');
54 */
55 WHEN OTHERS THEN
56 arp_message.set_error('QA_CUSTOMER.MERGE');
57 RAISE;
58 END merge;
59
60 END qa_customer;