DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_USER_ATTR_PVT

Source


1 PACKAGE BODY PA_USER_ATTR_PVT AS
2 /* $Header: PAUATTVB.pls 115.3 2003/07/07 22:09:17 anlee noship $ */
3 
4 
5 -- API name		: DELETE_USER_ATTRS_DATA
6 -- Type			: Public
7 -- Pre-reqs		: None.
8 
9 PROCEDURE DELETE_USER_ATTRS_DATA
10 ( p_commit                        IN VARCHAR2 DEFAULT FND_API.G_FALSE
11  ,p_validate_only                 IN VARCHAR2 := FND_API.G_TRUE
12  ,p_validation_level              IN NUMBER   := FND_API.G_VALID_LEVEL_FULL
13  ,p_calling_module                IN VARCHAR2 := 'SELF_SERVICE'
14  ,p_debug_mode                    IN VARCHAR2 := 'N'
15  ,p_project_id                    IN NUMBER
16  ,p_proj_element_id               IN NUMBER DEFAULT NULL
17  ,p_old_classification_id         IN NUMBER
18  ,p_new_classification_id         IN NUMBER DEFAULT NULL
19  ,p_classification_type           IN VARCHAR2
20  ,x_return_status                 OUT NOCOPY VARCHAR2
21  ,x_msg_count                     OUT NOCOPY NUMBER
22  ,x_msg_data                      OUT NOCOPY VARCHAR2
23 )
24 IS
25   l_return_status                 VARCHAR2(1);
26   l_error_msg_code                VARCHAR2(250);
27   l_msg_count                     NUMBER;
28   l_msg_data                      VARCHAR2(250);
29   l_data                          VARCHAR2(250);
30   l_msg_index_out                 NUMBER;
31 
32   l_attr_group_id                 NUMBER;
33   l_data_level                    VARCHAR2(30);
34   l_dummy                         VARCHAR2(1);
35   l_dummy2                        VARCHAR2(1);
36   l_proj_element_id               NUMBER;
37 
38   CURSOR get_deleted_attr_grps1
39   IS
40   SELECT assocs.attr_group_id, assocs.data_level
41   FROM EGO_OBJ_AG_ASSOCS_B assocs,
42        FND_OBJECTS obj
43   WHERE assocs.classification_code = p_classification_type||':'||to_char(p_old_classification_id)
44   AND assocs.object_id = obj.object_id
45   AND obj.obj_name = 'PA_PROJECTS'
46   MINUS
47   SELECT assocs.attr_group_id, assocs.data_level
48   FROM EGO_OBJ_AG_ASSOCS_B assocs,
49        FND_OBJECTS obj
50   WHERE assocs.classification_code = p_classification_type||':'||to_char(p_new_classification_id)
51   AND assocs.object_id = obj.object_id
52   AND obj.obj_name = 'PA_PROJECTS';
53 
54   CURSOR get_deleted_attr_grps2
55   IS
56   SELECT assocs.attr_group_id, assocs.data_level
57   FROM EGO_OBJ_AG_ASSOCS_B assocs,
58        FND_OBJECTS obj
59   WHERE assocs.classification_code = p_classification_type||':'||to_char(p_old_classification_id)
60   AND assocs.object_id = obj.object_id
61   AND obj.obj_name = 'PA_PROJECTS';
62 
63   CURSOR exists_in_other_drivers(c_attr_group_id NUMBER)
64   IS
65   SELECT 'Y'
66   FROM DUAL
67   WHERE c_attr_group_id IN
68   (SELECT assocs.attr_group_id
69    FROM EGO_OBJ_AG_ASSOCS_B assocs,
70         PA_PROJECTS_ALL ppa,
71         PA_PROJECT_TYPES ppt,
72         FND_OBJECTS obj
73    WHERE ppa.project_id = p_project_id
74    AND ppa.project_type = ppt.project_type
75    AND assocs.classification_code = 'PROJECT_TYPE:'||to_char(ppt.project_type_id)
76    AND assocs.data_level = 'PROJECT_LEVEL'
77    AND assocs.object_id = obj.object_id
78    AND obj.obj_name = 'PA_PROJECTS'
79    UNION
80    SELECT DISTINCT assocs.attr_group_id
81    FROM EGO_OBJ_AG_ASSOCS_B assocs,
82         PA_PROJECT_CLASSES ppc,
83         PA_CLASS_CATEGORIES pcc,
84         FND_OBJECTS obj
85    WHERE ppc.project_id = p_project_id
86    AND ppc.class_category = pcc.class_category
87    AND assocs.classification_code = 'CLASS_CATEGORY:'||to_char(pcc.class_category_id)
88    AND assocs.data_level = 'PROJECT_LEVEL'
89    AND assocs.object_id = obj.object_id
90    AND obj.obj_name = 'PA_PROJECTS'
91    UNION
92    SELECT assocs.attr_group_id
93    FROM EGO_OBJ_AG_ASSOCS_B assocs,
94         PA_PROJECT_CLASSES ppc,
95         PA_CLASS_CODES pcc,
96         FND_OBJECTS obj
97    WHERE ppc.project_id = p_project_id
98    AND ppc.class_category = pcc.class_category
99    AND ppc.class_code = pcc.class_code
100    AND assocs.classification_code = 'CLASS_CODE:'||to_char(pcc.class_code_id)
101    AND assocs.data_level = 'PROJECT_LEVEL'
102    AND assocs.object_id = obj.object_id
103    AND obj.obj_name = 'PA_PROJECTS');
104 
105   CURSOR exists_in_other_task_drivers(c_attr_group_id NUMBER, c_proj_element_id NUMBER)
106   IS
107   SELECT 'Y'
108   FROM DUAL
109   WHERE c_attr_group_id IN
110   (SELECT assocs.attr_group_id
111    FROM EGO_OBJ_AG_ASSOCS_B assocs,
112         PA_PROJECTS_ALL ppa,
113         PA_PROJECT_TYPES ppt,
114         FND_OBJECTS obj
115    WHERE ppa.project_id = p_project_id
116    AND ppa.project_type = ppt.project_type
117    AND assocs.classification_code = 'PROJECT_TYPE:'||to_char(ppt.project_type_id)
118    AND assocs.data_level = 'TASK_LEVEL'
119    AND assocs.object_id = obj.object_id
120    AND obj.obj_name = 'PA_PROJECTS'
121    UNION
122    SELECT DISTINCT assocs.attr_group_id
123    FROM EGO_OBJ_AG_ASSOCS_B assocs,
124         PA_PROJECT_CLASSES ppc,
125         PA_CLASS_CATEGORIES pcc,
126         FND_OBJECTS obj
127    WHERE ppc.project_id = p_project_id
128    AND ppc.class_category = pcc.class_category
129    AND assocs.classification_code = 'CLASS_CATEGORY:'||to_char(pcc.class_category_id)
130    AND assocs.data_level = 'TASK_LEVEL'
131    AND assocs.object_id = obj.object_id
132    AND obj.obj_name = 'PA_PROJECTS'
133    UNION
134    SELECT assocs.attr_group_id
135    FROM EGO_OBJ_AG_ASSOCS_B assocs,
136         PA_PROJECT_CLASSES ppc,
137         PA_CLASS_CODES pcc,
138         FND_OBJECTS obj
139    WHERE ppc.project_id = p_project_id
140    AND ppc.class_category = pcc.class_category
141    AND ppc.class_code = pcc.class_code
142    AND assocs.classification_code = 'CLASS_CODE:'||to_char(pcc.class_code_id)
143    AND assocs.data_level = 'TASK_LEVEL'
144    AND assocs.object_id = obj.object_id
145    AND obj.obj_name = 'PA_PROJECTS'
146    UNION
147    SELECT assocs.attr_group_id
148    FROM EGO_OBJ_AG_ASSOCS_B assocs,
149         PA_PROJ_ELEMENTS ppe,
150         FND_OBJECTS obj
151    WHERE ppe.project_id = p_project_id
152    AND ppe.proj_element_id = c_proj_element_id
153    AND assocs.classification_code = 'TASK_TYPE:'||to_char(ppe.type_id)
154    AND assocs.object_id = obj.object_id
155    AND obj.obj_name = 'PA_PROJECTS');
156 
157   CURSOR get_proj_elements
158   IS
159   SELECT proj_element_id
160   FROM PA_PROJ_ELEMENTS
161   WHERE project_id = p_project_id;
162 
163 BEGIN
164   if (p_debug_mode = 'Y') then
165     pa_debug.debug('PA_USER_ATTR_PVT.Delete_User_Attrs_Data BEGIN');
166   end if;
167 
168   if p_commit = FND_API.G_TRUE then
169     savepoint delete_user_attrs_data_pvt;
170   end if;
171 
172   if p_classification_type IN ('PROJECT_TYPE', 'CLASS_CATEGORY', 'CLASS_CODE') then
173     if p_new_classification_id is not NULL then
174       OPEN get_deleted_attr_grps1;
175       LOOP
176         FETCH get_deleted_attr_grps1 INTO l_attr_group_id, l_data_level;
177         EXIT WHEN get_deleted_attr_grps1%NOTFOUND;
178 
179 
180         if l_data_level = 'PROJECT_LEVEL' then
181           OPEN exists_in_other_drivers(l_attr_group_id);
182           FETCH exists_in_other_drivers INTO l_dummy;
183 
184           if exists_in_other_drivers%NOTFOUND then
185             l_dummy := 'N';
186             if p_validate_only <> FND_API.G_TRUE then
187               DELETE FROM PA_PROJECTS_ERP_EXT_B
188               WHERE PROJECT_ID = p_project_id
189               AND PROJ_ELEMENT_ID is NULL
190               AND ATTR_GROUP_ID = l_attr_group_id;
191 
192               DELETE FROM PA_PROJECTS_ERP_EXT_TL
193               WHERE PROJECT_ID = p_project_id
194               AND PROJ_ELEMENT_ID is NULL
195               AND ATTR_GROUP_ID = l_attr_group_id;
196             end if;
197           end if;
198 
199           CLOSE exists_in_other_drivers;
200         end if;
201 
202         if l_data_level = 'TASK_LEVEL' then
203           OPEN get_proj_elements;
204           LOOP
205             FETCH get_proj_elements INTO l_proj_element_id;
206             EXIT WHEN get_proj_elements%NOTFOUND;
207 
208             OPEN exists_in_other_task_drivers(l_attr_group_id, l_proj_element_id);
209             FETCH exists_in_other_task_drivers INTO l_dummy2;
210 
211             if exists_in_other_task_drivers%NOTFOUND then
212               if p_validate_only <> FND_API.G_TRUE then
213                 DELETE FROM PA_PROJECTS_ERP_EXT_B
214                 WHERE PROJECT_ID = p_project_id
215                 AND PROJ_ELEMENT_ID = l_proj_element_id
216                 AND ATTR_GROUP_ID = l_attr_group_id;
217 
218                 DELETE FROM PA_PROJECTS_ERP_EXT_TL
219                 WHERE PROJECT_ID = p_project_id
220                 AND PROJ_ELEMENT_ID = l_proj_element_id
221                 AND ATTR_GROUP_ID = l_attr_group_id;
222               end if;
223             end if;
224 
225             CLOSE exists_in_other_task_drivers;
226           END LOOP;
227           CLOSE get_proj_elements;
228         end if;
229 
230       END LOOP;
231       CLOSE get_deleted_attr_grps1;
232     else
233       OPEN get_deleted_attr_grps2;
234       LOOP
235         FETCH get_deleted_attr_grps2 INTO l_attr_group_id, l_data_level;
236         EXIT WHEN get_deleted_attr_grps2%NOTFOUND;
237 
238         if l_data_level = 'PROJECT_LEVEL' then
239           OPEN exists_in_other_drivers(l_attr_group_id);
240           FETCH exists_in_other_drivers INTO l_dummy;
241 
242           if exists_in_other_drivers%NOTFOUND then
243             l_dummy := 'N';
244             if p_validate_only <> FND_API.G_TRUE then
245               DELETE FROM PA_PROJECTS_ERP_EXT_B
246               WHERE PROJECT_ID = p_project_id
247               AND PROJ_ELEMENT_ID is NULL
248               AND ATTR_GROUP_ID = l_attr_group_id;
249 
250               DELETE FROM PA_PROJECTS_ERP_EXT_TL
251               WHERE PROJECT_ID = p_project_id
252               AND PROJ_ELEMENT_ID is NULL
253               AND ATTR_GROUP_ID = l_attr_group_id;
254             end if;
255           end if;
256 
257           CLOSE exists_in_other_drivers;
258         end if;
259 
260         if l_data_level = 'PA_TASKS' then
261           OPEN get_proj_elements;
262           LOOP
263             FETCH get_proj_elements INTO l_proj_element_id;
264             EXIT WHEN get_proj_elements%NOTFOUND;
265 
266             OPEN exists_in_other_task_drivers(l_attr_group_id, l_proj_element_id);
267             FETCH exists_in_other_task_drivers INTO l_dummy2;
268 
269             if exists_in_other_task_drivers%NOTFOUND then
270               if p_validate_only <> FND_API.G_TRUE then
271                 DELETE FROM PA_PROJECTS_ERP_EXT_B
272                 WHERE PROJECT_ID = p_project_id
273                 AND PROJ_ELEMENT_ID = l_proj_element_id
274                 AND ATTR_GROUP_ID = l_attr_group_id;
275 
276                 DELETE FROM PA_PROJECTS_ERP_EXT_TL
277                 WHERE PROJECT_ID = p_project_id
278                 AND PROJ_ELEMENT_ID = l_proj_element_id
279                 AND ATTR_GROUP_ID = l_attr_group_id;
280               end if;
281             end if;
282 
283             CLOSE exists_in_other_task_drivers;
284           END LOOP;
285           CLOSE get_proj_elements;
286         end if;
287 
288       END LOOP;
289       CLOSE get_deleted_attr_grps2;
290     end if;
291 
292   elsif p_classification_type = 'TASK_TYPE' then
293     OPEN get_deleted_attr_grps1;
294     LOOP
295       FETCH get_deleted_attr_grps1 INTO l_attr_group_id, l_data_level;
296       EXIT WHEN get_deleted_attr_grps1%NOTFOUND;
297 
298       OPEN exists_in_other_task_drivers(l_attr_group_id, p_proj_element_id);
299       FETCH exists_in_other_task_drivers INTO l_dummy;
300 
301       if exists_in_other_task_drivers%NOTFOUND then
302         if p_validate_only <> FND_API.G_TRUE then
303           DELETE FROM PA_PROJECTS_ERP_EXT_B
304           WHERE PROJECT_ID = p_project_id
305           AND PROJ_ELEMENT_ID = p_proj_element_id
306           AND ATTR_GROUP_ID = l_attr_group_id;
307 
308           DELETE FROM PA_PROJECTS_ERP_EXT_TL
309           WHERE PROJECT_ID = p_project_id
310           AND PROJ_ELEMENT_ID = p_proj_element_id
311           AND ATTR_GROUP_ID = l_attr_group_id;
312         end if;
313       end if;
314 
315       CLOSE exists_in_other_task_drivers;
316     END LOOP;
317 
318     CLOSE get_deleted_attr_grps1;
319   end if;
320 
321   x_return_status := FND_API.G_RET_STS_SUCCESS;
322 
323   if p_commit = FND_API.G_TRUE then
324     commit work;
325   end if;
326 
327   if (p_debug_mode = 'Y') then
328     pa_debug.debug('PA_USER_ATTR_PVT.Delete_User_Attrs_Data END');
329   end if;
330 
331 EXCEPTION
332    when FND_API.G_EXC_ERROR then
333       if p_commit = FND_API.G_TRUE then
334          rollback to delete_user_attrs_data_pvt;
335       end if;
336       x_return_status := FND_API.G_RET_STS_ERROR;
337    when FND_API.G_EXC_UNEXPECTED_ERROR then
338       if p_commit = FND_API.G_TRUE then
339          rollback to delete_user_attrs_data_pvt;
340       end if;
341       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
342       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_USER_ATTR_PVT',
343                               p_procedure_name => 'Delete_User_Attrs_Data',
344                               p_error_text     => SUBSTRB(SQLERRM,1,240));
345    when OTHERS then
346       if p_commit = FND_API.G_TRUE then
347          rollback to delete_user_attrs_data_pvt;
348       end if;
349       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
350       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_USER_ATTR_PVT',
351                               p_procedure_name => 'Delete_User_Attrs_Data',
352                               p_error_text     => SUBSTRB(SQLERRM,1,240));
353       raise;
354 END DELETE_USER_ATTRS_DATA;
355 
356 
357 PROCEDURE DELETE_ALL_USER_ATTRS_DATA
358 ( p_api_version                   IN NUMBER   := 1.0
359  ,p_init_msg_list                 IN VARCHAR2 := FND_API.G_TRUE
360  ,p_commit                        IN VARCHAR2 DEFAULT FND_API.G_FALSE
361  ,p_validate_only                 IN VARCHAR2 := FND_API.G_TRUE
362  ,p_validation_level              IN NUMBER   := FND_API.G_VALID_LEVEL_FULL
363  ,p_calling_module                IN VARCHAR2 := 'SELF_SERVICE'
364  ,p_debug_mode                    IN VARCHAR2 := 'N'
365  ,p_project_id                    IN NUMBER
366  ,p_proj_element_id               IN NUMBER DEFAULT NULL
367  ,x_return_status                 OUT NOCOPY VARCHAR2
368  ,x_msg_count                     OUT NOCOPY NUMBER
369  ,x_msg_data                      OUT NOCOPY VARCHAR2
370 )
371 IS
372   l_return_status                 VARCHAR2(1);
373   l_error_msg_code                VARCHAR2(250);
374   l_msg_count                     NUMBER;
375   l_msg_data                      VARCHAR2(250);
376   l_data                          VARCHAR2(250);
377   l_msg_index_out                 NUMBER;
378 
379 BEGIN
380   if (p_debug_mode = 'Y') then
381     pa_debug.debug('PA_USER_ATTR_PVT.Delete_All_User_Attrs_Data BEGIN');
382   end if;
383 
384   if p_commit = FND_API.G_TRUE then
385     savepoint delete_all_user_attrs_data_pvt;
386   end if;
387 
388   if p_validate_only <> FND_API.G_TRUE then
389     if p_proj_element_id is NULL then
390       DELETE FROM PA_PROJECTS_ERP_EXT_B
391       WHERE PROJECT_ID = p_project_id;
392 
393       DELETE FROM PA_PROJECTS_ERP_EXT_TL
394       WHERE PROJECT_ID = p_project_id;
395     else
396       DELETE FROM PA_PROJECTS_ERP_EXT_B
397       WHERE PROJECT_ID = p_project_id
398       AND PROJ_ELEMENT_ID = p_proj_element_id;
399 
400       DELETE FROM PA_PROJECTS_ERP_EXT_TL
401       WHERE PROJECT_ID = p_project_id
402       AND PROJ_ELEMENT_ID = p_proj_element_id;
403     end if;
404   end if;
405 
406   x_return_status := FND_API.G_RET_STS_SUCCESS;
407 
408   if p_commit = FND_API.G_TRUE then
409     commit work;
410   end if;
411 
412   if (p_debug_mode = 'Y') then
413     pa_debug.debug('PA_USER_ATTR_PVT.Delete_All_User_Attrs_Data END');
414   end if;
415 
416 EXCEPTION
417    when FND_API.G_EXC_ERROR then
418       if p_commit = FND_API.G_TRUE then
419          rollback to delete_all_user_attrs_data_pvt;
420       end if;
421       x_return_status := FND_API.G_RET_STS_ERROR;
422    when FND_API.G_EXC_UNEXPECTED_ERROR then
423       if p_commit = FND_API.G_TRUE then
424          rollback to delete_all_user_attrs_data_pvt;
425       end if;
426       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
427       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_USER_ATTR_PVT',
428                               p_procedure_name => 'Delete_All_User_Attrs_Data',
429                               p_error_text     => SUBSTRB(SQLERRM,1,240));
430    when OTHERS then
431       if p_commit = FND_API.G_TRUE then
432          rollback to delete_all_user_attrs_data_pvt;
433       end if;
434       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
435       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_USER_ATTR_PVT',
436                               p_procedure_name => 'Delete_All_User_Attrs_Data',
437                               p_error_text     => SUBSTRB(SQLERRM,1,240));
438       raise;
439 END DELETE_ALL_USER_ATTRS_DATA;
440 
441 END PA_USER_ATTR_PVT;