1 PACKAGE BODY PA_MERGE_PKG AS
2 --$Header: PAXTCAMB.pls 120.0 2005/05/30 15:00:29 appldev noship $
3 --
4 PROCEDURE party_merge(
5 p_entity_name IN VARCHAR2,
6 p_from_id IN NUMBER,
7 x_to_id OUT NOCOPY NUMBER,
8 p_from_fk_id IN NUMBER,
9 p_to_fk_id IN NUMBER,
10 p_parent_entity_name IN VARCHAR2,
11 p_batch_id IN NUMBER,
12 p_batch_party_id IN NUMBER,
13 x_return_status OUT NOCOPY VARCHAR2)
14 IS
15
16 begin
17
18 -- This API is currently not doing anything. It just rejects the merge.
19 -- We do this to avoid merge in TCA for 11.5.9. For 11.5.9, we are not
20 -- ready to merge Project entities. So if a party_id referenced in projects
21 -- is merged, we reject it. This API will be enhanced immediately after
22 -- 11.5.9 to support the merge.
23
24 x_return_status := fnd_api.g_ret_sts_error;
25
26 fnd_message.set_name ('PA', 'PA_REJECT_MERGE');
27 FND_MSG_PUB.add;
28
29 END party_merge;
30
31 PROCEDURE control_items_owner_id(
32 p_entity_name IN VARCHAR2,
33 p_from_id IN NUMBER,
34 x_to_id OUT NOCOPY NUMBER,
35 p_from_fk_id IN NUMBER,
36 p_to_fk_id IN NUMBER,
37 p_parent_entity_name IN VARCHAR2,
38 p_batch_id IN NUMBER,
39 p_batch_party_id IN NUMBER,
40 x_return_status OUT NOCOPY VARCHAR2)
41 IS
42 BEGIN
43 x_return_status := FND_API.G_RET_STS_SUCCESS;
44
45 IF (p_from_fk_id <> p_to_fk_id) THEN
46 UPDATE pa_control_items
47 SET owner_id = p_to_fk_id
48 WHERE owner_id = p_from_fk_id;
49
50 x_to_id := p_from_id;
51
52 END IF;
53 END control_items_owner_id;
54
55 PROCEDURE control_items_last_mod_by_id(
56 p_entity_name IN VARCHAR2,
57 p_from_id IN NUMBER,
58 x_to_id OUT NOCOPY NUMBER,
59 p_from_fk_id IN NUMBER,
60 p_to_fk_id IN NUMBER,
61 p_parent_entity_name IN VARCHAR2,
62 p_batch_id IN NUMBER,
63 p_batch_party_id IN NUMBER,
64 x_return_status OUT NOCOPY VARCHAR2)
65 IS
66 BEGIN
67 x_return_status := FND_API.G_RET_STS_SUCCESS;
68
69 IF (p_from_fk_id <> p_to_fk_id) THEN
70 UPDATE pa_control_items
71 SET last_modified_by_id = p_to_fk_id
72 WHERE last_modified_by_id = p_from_fk_id;
73
74 x_to_id := p_from_id;
75
76 END IF;
77 END control_items_last_mod_by_id;
78
79 PROCEDURE control_items_closed_by_id(
80 p_entity_name IN VARCHAR2,
81 p_from_id IN NUMBER,
82 x_to_id OUT NOCOPY NUMBER,
83 p_from_fk_id IN NUMBER,
84 p_to_fk_id IN NUMBER,
85 p_parent_entity_name IN VARCHAR2,
86 p_batch_id IN NUMBER,
87 p_batch_party_id IN NUMBER,
88 x_return_status OUT NOCOPY VARCHAR2)
89 IS
90 BEGIN
91 x_return_status := FND_API.G_RET_STS_SUCCESS;
92
93 IF (p_from_fk_id <> p_to_fk_id) THEN
94 UPDATE pa_control_items
95 SET closed_by_id = p_to_fk_id
96 WHERE closed_by_id = p_from_fk_id;
97
98 x_to_id := p_from_id;
99
100 END IF;
101 END control_items_closed_by_id;
102
103 PROCEDURE ci_actions_assigned_to(
104 p_entity_name IN VARCHAR2,
105 p_from_id IN NUMBER,
106 x_to_id OUT NOCOPY NUMBER,
107 p_from_fk_id IN NUMBER,
108 p_to_fk_id IN NUMBER,
109 p_parent_entity_name IN VARCHAR2,
110 p_batch_id IN NUMBER,
111 p_batch_party_id IN NUMBER,
112 x_return_status OUT NOCOPY VARCHAR2)
113 IS
114 BEGIN
115 x_return_status := FND_API.G_RET_STS_SUCCESS;
116
117 IF (p_from_fk_id <> p_to_fk_id) THEN
118 UPDATE pa_ci_actions
119 SET assigned_to = p_to_fk_id
120 WHERE assigned_to = p_from_fk_id;
121
122 x_to_id := p_from_id;
123
124 END IF;
125 END ci_actions_assigned_to;
126
127 PROCEDURE ci_impacts_implemented_by(
128 p_entity_name IN VARCHAR2,
129 p_from_id IN NUMBER,
130 x_to_id OUT NOCOPY NUMBER,
131 p_from_fk_id IN NUMBER,
132 p_to_fk_id IN NUMBER,
133 p_parent_entity_name IN VARCHAR2,
134 p_batch_id IN NUMBER,
135 p_batch_party_id IN NUMBER,
136 x_return_status OUT NOCOPY VARCHAR2)
137 IS
138 l_dummy NUMBER;
139 BEGIN
140 x_return_status := FND_API.G_RET_STS_SUCCESS;
141
142 IF (p_from_fk_id <> p_to_fk_id) THEN
143 UPDATE pa_ci_impacts
144 SET implemented_by = p_to_fk_id
145 WHERE implemented_by = p_from_fk_id;
146
147 x_to_id := p_from_id;
148
149 END IF;
150 END ci_impacts_implemented_by;
151
152 PROCEDURE project_parties_res_src_id(
153 p_entity_name IN VARCHAR2,
154 p_from_id IN NUMBER,
155 x_to_id OUT NOCOPY NUMBER,
156 p_from_fk_id IN NUMBER,
157 p_to_fk_id IN NUMBER,
158 p_parent_entity_name IN VARCHAR2,
159 p_batch_id IN NUMBER,
160 p_batch_party_id IN NUMBER,
161 x_return_status OUT NOCOPY VARCHAR2)
162 IS
163 l_dummy NUMBER;
164 BEGIN
165 x_return_status := FND_API.G_RET_STS_SUCCESS;
166
167 IF (p_from_fk_id <> p_to_fk_id) THEN
168 BEGIN
169 --Looking for a grant from PA for the party being merged
170 SELECT 1
171 INTO l_dummy
172 FROM fnd_grants g, fnd_objects o
173 WHERE o.application_id = 275
174 AND g.object_id = o.object_id
175 AND g.grantee_type = 'USER'
176 AND g.grantee_key = 'HZ_PARTY:'||p_from_fk_id
177 AND ROWNUM = 1;
178
179 --Veto if grant is found for the same party, because grants are not yet merged
180 x_return_status := FND_API.G_RET_STS_ERROR;
181
182 FND_MESSAGE.SET_NAME('PA', 'PA_REJECT_MERGE');
183 FND_MSG_PUB.add;
184
185 EXCEPTION
186 WHEN NO_DATA_FOUND THEN
187 UPDATE pa_project_parties
188 SET resource_source_id = p_to_fk_id
189 WHERE resource_source_id = p_from_fk_id
190 AND resource_type_id = 112;
191
192 x_to_id := p_from_id;
193
194 END;
195 END IF;
196 END project_parties_res_src_id;
197
198 PROCEDURE update_project_parties_res_id(
199 p_from_resource_id IN NUMBER,
200 p_to_resource_id IN NUMBER,
201 x_return_status OUT NOCOPY VARCHAR2)
202 IS
203 BEGIN
204 x_return_status := FND_API.G_RET_STS_SUCCESS;
205
206 IF (p_from_resource_id <> p_to_resource_id) THEN
207 UPDATE pa_project_parties
208 SET resource_id = p_to_resource_id
209 WHERE resource_id = p_from_resource_id;
210 END IF;
211 END update_project_parties_res_id;
212
213 end;