DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_CI_MERGE_PKG

Source


1 PACKAGE BODY PA_CI_MERGE_PKG AS
2 --$Header: PACIMRGB.pls 120.0.12020000.2 2012/10/29 21:27:19 skkoppul ship $
3 
4 PROCEDURE control_items_owner_id(
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 BEGIN
16   x_return_status := FND_API.G_RET_STS_SUCCESS;
17 
18   IF (p_from_fk_id <> p_to_fk_id) THEN
19     UPDATE pa_control_items
20     SET owner_id = p_to_fk_id
21     WHERE owner_id = p_from_fk_id;
22 
23     x_to_id := p_from_id;
24 
25   END IF;
26 END control_items_owner_id;
27 
28 PROCEDURE control_items_last_mod_by_id(
29   p_entity_name                IN   VARCHAR2,
30   p_from_id                    IN   NUMBER,
31   x_to_id                      OUT  NOCOPY  NUMBER,
32   p_from_fk_id                 IN   NUMBER,
33   p_to_fk_id                   IN   NUMBER,
34   p_parent_entity_name         IN   VARCHAR2,
35   p_batch_id                   IN   NUMBER,
36   p_batch_party_id             IN   NUMBER,
37   x_return_status              OUT  NOCOPY  VARCHAR2)
38 IS
39 BEGIN
40   x_return_status := FND_API.G_RET_STS_SUCCESS;
41 
42   IF (p_from_fk_id <> p_to_fk_id) THEN
43     UPDATE pa_control_items
44     SET last_modified_by_id = p_to_fk_id
45     WHERE last_modified_by_id = p_from_fk_id;
46 
47     x_to_id := p_from_id;
48 
49   END IF;
50 END control_items_last_mod_by_id;
51 
52 PROCEDURE control_items_closed_by_id(
53   p_entity_name                IN   VARCHAR2,
54   p_from_id                    IN   NUMBER,
55   x_to_id                      OUT  NOCOPY  NUMBER,
56   p_from_fk_id                 IN   NUMBER,
57   p_to_fk_id                   IN   NUMBER,
58   p_parent_entity_name         IN   VARCHAR2,
59   p_batch_id                   IN   NUMBER,
60   p_batch_party_id             IN   NUMBER,
61   x_return_status              OUT  NOCOPY  VARCHAR2)
62 IS
63 BEGIN
64   x_return_status := FND_API.G_RET_STS_SUCCESS;
65 
66   IF (p_from_fk_id <> p_to_fk_id) THEN
67     UPDATE pa_control_items
68     SET closed_by_id = p_to_fk_id
69     WHERE closed_by_id = p_from_fk_id;
70 
71     x_to_id := p_from_id;
72 
73   END IF;
74 END control_items_closed_by_id;
75 
76 PROCEDURE ci_actions_assigned_to(
77   p_entity_name                IN   VARCHAR2,
78   p_from_id                    IN   NUMBER,
79   x_to_id                      OUT  NOCOPY  NUMBER,
80   p_from_fk_id                 IN   NUMBER,
81   p_to_fk_id                   IN   NUMBER,
82   p_parent_entity_name         IN   VARCHAR2,
83   p_batch_id                   IN   NUMBER,
84   p_batch_party_id             IN   NUMBER,
85   x_return_status              OUT  NOCOPY  VARCHAR2)
86 IS
87 BEGIN
88   x_return_status := FND_API.G_RET_STS_SUCCESS;
89 
90   IF (p_from_fk_id <> p_to_fk_id) THEN
91     UPDATE pa_ci_actions
92     SET assigned_to = p_to_fk_id
93     WHERE assigned_to = p_from_fk_id;
94 
95     x_to_id := p_from_id;
96 
97   END IF;
98 END ci_actions_assigned_to;
99 
100 PROCEDURE ci_impacts_implemented_by(
101   p_entity_name                IN   VARCHAR2,
102   p_from_id                    IN   NUMBER,
103   x_to_id                      OUT  NOCOPY  NUMBER,
104   p_from_fk_id                 IN   NUMBER,
105   p_to_fk_id                   IN   NUMBER,
106   p_parent_entity_name         IN   VARCHAR2,
107   p_batch_id                   IN   NUMBER,
108   p_batch_party_id             IN   NUMBER,
109   x_return_status              OUT  NOCOPY  VARCHAR2)
110 IS
111 BEGIN
112   x_return_status := FND_API.G_RET_STS_SUCCESS;
113 
114   IF (p_from_fk_id <> p_to_fk_id) THEN
115     UPDATE pa_ci_impacts
116     SET implemented_by = p_to_fk_id
117     WHERE implemented_by = p_from_fk_id;
118 
119     x_to_id := p_from_id;
120 
121   END IF;
122 END ci_impacts_implemented_by;
123 
124 PROCEDURE project_parties_res_src_id(
125   p_entity_name                IN   VARCHAR2,
126   p_from_id                    IN   NUMBER,
127   x_to_id                      OUT  NOCOPY  NUMBER,
128   p_from_fk_id                 IN   NUMBER,
129   p_to_fk_id                   IN   NUMBER,
130   p_parent_entity_name         IN   VARCHAR2,
131   p_batch_id                   IN   NUMBER,
132   p_batch_party_id             IN   NUMBER,
133   x_return_status              OUT  NOCOPY  VARCHAR2)
134 IS
135   l_dummy NUMBER;
136   l_party_type hz_parties.party_type%TYPE;
137 
138   CURSOR c_parties IS
139     SELECT project_party_id,
140            object_id,
141            object_type,
142            project_role_id,
143            start_date_active,
144            end_date_active
145     FROM pa_project_parties
146     WHERE resource_source_id=p_from_fk_id
147       AND resource_type_id=112;
148 
149   cp_party c_parties%ROWTYPE;
150 
151 BEGIN
152   x_return_status := FND_API.G_RET_STS_SUCCESS;
153 
154   IF (p_from_fk_id <> p_to_fk_id) THEN
155     BEGIN
156 --Looking for a grant from PA for the party being merged
157       SELECT 1
158       INTO l_dummy
159       FROM fnd_grants g, fnd_objects o
160       WHERE o.application_id = 275
161         AND g.object_id = o.object_id
162         AND g.grantee_type = 'USER'
163         AND g.grantee_key = 'HZ_PARTY:'||p_from_fk_id
164         AND ROWNUM = 1;
165 
166 --Veto if grant is found for the same party, because grants are not yet merged
167       x_return_status := FND_API.G_RET_STS_ERROR;
168 
169       FND_MESSAGE.SET_NAME('PA', 'PA_REJECT_MERGE');
170       FND_MSG_PUB.add;
171 
172     EXCEPTION
173       WHEN NO_DATA_FOUND THEN
174         SELECT party_type
175         INTO l_party_type
176         FROM hz_parties
177         WHERE party_id = p_to_fk_id;
178 
179         IF l_party_type = 'ORGANIZATION' THEN
180           FOR cp_party IN c_parties LOOP
181 --Looping through every project_party_id corresponding to a party_id
182             BEGIN
183 --Detecting duplicate assignment for a given organization, regardless of effective dates
184               SELECT project_party_id
185               INTO l_dummy
186               FROM pa_project_parties
187               WHERE object_id = cp_party.object_id
188                 AND object_type = cp_party.object_type
189                 AND project_role_id = cp_party.project_role_id
190                 AND resource_type_id = 112
191                 AND resource_source_id = p_to_fk_id
192                 AND ROWNUM = 1;
193 
194 --If duplicated, deleting the old project_party and update customer table
195               UPDATE pa_project_customers
196               SET project_party_id = l_dummy
197               WHERE project_party_id = cp_party.project_party_id;
198 
199               DELETE FROM pa_project_parties
200               WHERE project_party_id = cp_party.project_party_id;
201 
202             EXCEPTION
203               WHEN NO_DATA_FOUND THEN
204 --Update party_id if no duplicates
205                 UPDATE pa_project_parties
206                 SET resource_source_id = p_to_fk_id
207                 WHERE project_party_id = cp_party.project_party_id;
208             END;
209           END LOOP;
210 
211         ELSE
212 --For non organizational parties
213          BEGIN
214           UPDATE pa_project_parties
215           SET resource_source_id = p_to_fk_id
216           WHERE resource_type_id = 112
217             AND resource_source_id = p_from_fk_id;
218          -- added exception block for bug 14593440
219          EXCEPTION
220            When DUP_VAL_ON_INDEX then
221              DELETE pa_project_parties
222              WHERE resource_type_id = 112
223                AND resource_source_id = p_from_fk_id;
224          END;
225         END IF;
226 
227         x_to_id := p_from_id;
228     END;
229   END IF;
230 END project_parties_res_src_id;
231 
232 PROCEDURE update_project_parties_res_id(
233   p_from_resource_id IN NUMBER,
234   p_to_resource_id IN NUMBER,
235   x_return_status OUT NOCOPY VARCHAR2)
236 IS
237 BEGIN
238   x_return_status := FND_API.G_RET_STS_SUCCESS;
239 
240   IF (p_from_resource_id <> p_to_resource_id) THEN
241     UPDATE pa_project_parties
242     SET resource_id = p_to_resource_id
243     WHERE resource_id = p_from_resource_id;
244   END IF;
245 END update_project_parties_res_id;
246 
247 END;