DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_UM_PARTY_MERGE

Source


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;