1 PACKAGE BODY qa_customer AS
2 /* $Header: qarcb.pls 120.1.12020000.2 2013/01/29 05:19:14 hmakam ship $ */
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
11 --
12 -- Bug 10016878
13 -- Modified the cursor to ensure that the merge
14 -- between sites of the same party is not
15 -- vetoed out.
16 --
17 -- Bug 15881920
18 -- Modified the cursor to ensure that we check
19 -- if delete option is selected in Customer
20 -- Merge form
21 --
22 CURSOR c IS
23 SELECT qr.customer_id
24 FROM qa_results qr, ra_customer_merges m
25 WHERE qr.customer_id = m.duplicate_id AND
26 m.process_flag = 'N' AND
27 m.request_id = req_id AND
28 m.set_number = set_number AND
29 m.duplicate_id <> m.customer_id AND
30 m.delete_duplicate_flag = 'Y';
31
32 from_cust_id NUMBER;
33 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';
34
35 BEGIN
36 arp_message.set_line('QA_CUSTOMER.MERGE()+');
37
38 IF process_mode = 'LOCK' THEN
39 null; -- no update will be allowed later
40 ELSE
41 OPEN c;
42 FETCH c INTO from_cust_id;
43 IF c%FOUND THEN
44 CLOSE c;
45 /* rkaza. 07/19/2002. Bug 2447495.
46 QA should only veto the merge delete request. If just a simple merge w/o
47 deleting the actual record, QA should simply let it go.
48 */
49 -- RAISE MERGE_NOT_ALLOWED;
50 ARP_CMERGE_MASTER.veto_delete(
51 req_id => req_id,
52 set_num => set_number,
53 from_customer_id => from_cust_id,
54 veto_reason => Veto_Reason
55 );
56 ELSE
57 CLOSE c;
58 arp_message.set_name('AR', 'AR_ROWS_UPDATED');
59 arp_message.set_token('NUM_ROWS', '0');
60 END IF;
61 END IF;
62 arp_message.set_line('QA_CUSTOMER.MERGE()-');
63
64 EXCEPTION
65 /*
66 WHEN MERGE_NOT_ALLOWED THEN
67 arp_message.set_error('QA_CUSTOMER.MERGE');
68 */
69 WHEN OTHERS THEN
70 arp_message.set_error('QA_CUSTOMER.MERGE');
71 RAISE;
72 END merge;
73
74 END qa_customer;