1 package body JTF_UM_PARTY_MERGE as
2 /*$Header: JTFUMPMB.pls 115.5 2002/11/21 22:58:12 kching ship $*/
3
4 PROCEDURE MERGE_APPROVAL
5 (
6 p_entity_name IN VARCHAR2,
7 p_from_id IN NUMBER,
8 p_to_id out NOCOPY NUMBER,
9 p_from_fk_id IN NUMBER,
10 p_to_fk_id IN NUMBER,
11 p_parent_entity_name IN VARCHAR2,
12 p_batch_id IN NUMBER,
13 p_batch_party_id IN NUMBER,
14 p_return_status out NOCOPY Varchar2
15 ) IS
16
17
18 CURSOR MERGE_CODE IS SELECT MERGE_REASON_CODE FROM HZ_MERGE_BATCH
19 WHERE BATCH_ID = P_BATCH_ID;
20 p_merge_code VARCHAR2(30);
21
22 cursor find_approval is select approval_id from jtf_um_approvers
23 where org_party_id = p_from_FK_id;
24
25 p_approval_id number;
26
27 BEGIN
28 p_return_status := FND_API.G_RET_STS_SUCCESS;
29 p_to_id := p_from_id;
30
31 -- Validations.
32
33 /* Check the Merge reason. If Merge Reason is Duplicate Record then no validation
34 is performed.
35 */
36
37 open MERGE_CODE;
38 fetch MERGE_CODE into p_merge_code;
39 close MERGE_CODE;
40
41 if p_merge_code = 'DUPLICATE' then
42 null;
43 else
44 -- Perform the Merge Operation.
45
46 /* If the Parent has NOT changed(i.e. Parent getting transferred) then
47 nothing needs to be done. Set Merged To Id is same as Merged From Id
48 and return
49 */
50
51 if p_from_FK_id = p_to_FK_id then
52 return;
53 end if;
54
55
56 /* If the Parent has changed(i.e. Parent is getting merged), then transfer
57 the dependent record to the new parent.
58 */
59
60 if p_from_FK_id <> p_to_FK_id then
61
62 /* End Date all the approvers in JTF_UM_APPROVERS table, who
63 belonged to previous org
64 */
65 open find_approval;
66 fetch find_approval into p_approval_id;
67 close find_approval;
68
69 if p_approval_id is not null then
70
71 UPDATE JTF_UM_APPROVERS SET EFFECTIVE_END_DATE = SYSDATE,
72 LAST_UPDATE_DATE = SYSDATE, LAST_UPDATE_LOGIN = FND_GLOBAL.USER_ID
73 WHERE ORG_PARTY_ID = p_from_FK_id;
74
75 -- Call procedure to restart workflow
76
77 -- User belonging to old org
78
79 JTF_UM_WF_APPROVAL.approval_chain_changed
80 (
81 p_approval_id => p_approval_id,
82 p_org_party_id => p_from_fk_id
83 );
84
85 -- User belonging to new org
86
87 JTF_UM_WF_APPROVAL.approval_chain_changed
88 (
89 p_approval_id => p_approval_id,
90 p_org_party_id => p_to_fk_id
91 );
92 end if;
93 end if;
94 end if;
95
96 EXCEPTION
97 WHEN OTHERS THEN
98 FND_MESSAGE.SET_NAME('JTF', 'JTF_UM_PARTY_MERGE');
99 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
100 FND_MSG_PUB.ADD;
101 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
102
103 END MERGE_APPROVAL;
104 END JTF_UM_PARTY_MERGE;