[Home] [Help]
PACKAGE BODY: APPS.PA_DDC_API
Source
1 PACKAGE BODY PA_DDC_API AS
2 /* $Header: PAXDDC0B.pls 120.2 2005/08/19 17:13:17 mwasowic ship $ */
3
4 FUNCTION Check_Alias (x_alias IN VARCHAR2
5 , x_folder_code IN VARCHAR2) RETURN VARCHAR2 IS
6
7 dummy NUMBER := 0;
8 BEGIN
9 SELECT count(1)
10 INTO dummy
11 FROM pa_status_column_setup
12 WHERE folder_code = x_folder_code
13 AND INSTR(column_name,x_alias) > 0;
14
15 IF (dummy >= 1) THEN
16 RETURN ('Y');
17 ELSE
18 RETURN ('N');
19 END IF;
20
21 END Check_Alias;
22
23
24 PROCEDURE create_psi_generic_views
25 (x_view_name IN VARCHAR2
26 , x_err_stage IN OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
27 , x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
28 IS
29
30 ddl_stmt VARCHAR2(5000);
31 key_fields_1 VARCHAR2(3000);
32 key_fields_2 VARCHAR2(3000);
33 stmt VARCHAR2(4000);
34 from_clause VARCHAR2(1000);
35 where_clause VARCHAR2(1000);
36
37 cid INTEGER;
38
39
40 CURSOR p1 IS
41 SELECT format_code, column_name, currency_format_flag
42 FROM pa_status_column_setup
43 WHERE folder_code = 'P'
44 order by folder_code, format_code, column_order;
45
46 CURSOR t1 IS
47 SELECT format_code, column_name, currency_format_flag
48 FROM pa_status_column_setup
49 WHERE folder_code = 'T'
50 order by folder_code, format_code, column_order;
51
52 CURSOR r1 IS
53 SELECT format_code, column_name, currency_format_flag
54 FROM pa_status_column_setup
55 WHERE folder_code = 'R'
56 order by folder_code, format_code, column_order;
57
58
59 BEGIN
60
61 x_err_code := 0;
62
63 IF (x_view_name = 'PA_STATUS_PROJ_GENERIC_V') THEN
64 x_err_stage := 'Creating PA_STATUS_PROJ_GENERIC_V';
65 ELSIF (x_view_name= 'PA_STATUS_TASK_GENERIC_V') THEN
66 x_err_stage := 'Creating PA_STATUS_TASK_GENERIC_V';
67 ELSIF (x_view_name= 'PA_STATUS_TASK_GENERIC_V') THEN
68 x_err_stage := 'Creating PA_STATUS_TASK_GENERIC_V';
69 ELSE
70 x_err_stage := 'Invalid Argument: '|| x_view_name;
71 END IF;
72
73 --
74 -- Build SQL Strings by View
75 --
76
77 IF (x_view_name= 'PA_STATUS_PROJ_GENERIC_V') THEN
78
79 ddl_stmt := 'CREATE OR REPLACE FORCE VIEW PA_STATUS_PROJ_GENERIC_V
80 ( PROJECT_ID
81 , VIEW_LABOR_COSTS_ALLOWED
82 , COST_BUDGET_TYPE_CODE
83 , REV_BUDGET_TYPE_CODE
84 , DUMMY1
85 , DUMMY2
86 , DUMMY3
87 , DUMMY4
88 , DUMMY5
89 , DUMMY6
90 , COLUMN1
91 , COLUMN2
92 , COLUMN3
93 , COLUMN4
94 , COLUMN5
95 , COLUMN6
96 , COLUMN7
97 , COLUMN8
98 , COLUMN9
99 , COLUMN10
100 , COLUMN11
101 , COLUMN12
102 , COLUMN13
103 , COLUMN14
104 , COLUMN15
105 , COLUMN16
106 , COLUMN17
107 , COLUMN18
108 , COLUMN19
109 , COLUMN20
110 , COLUMN21
111 , COLUMN22
112 , COLUMN23
113 , COLUMN24
114 , COLUMN25
115 , COLUMN26
116 , COLUMN27
117 , COLUMN28
118 , COLUMN29
119 , COLUMN30
120 , COLUMN31
121 , COLUMN32
122 , COLUMN33
123 ) as SELECT
124 p.project_id
125 , SUBSTR(pa_security.view_labor_costs(p.project_id),1,1)
126 , c.budget_type_code
127 , r.budget_type_code
128 , 1
129 , 2
130 , 3
131 , 4
132 , 5
133 , 6';
134
135
136 from_clause := 'pa_projects p,pa_project_accum_headers pah,pa_status_proj_bgt_rev_v r,pa_status_proj_bgt_cost_v c';
137
138 /* Fix for bug# 1461358 */
139 where_clause := '''Y''' ||' in (select pa_security.allow_query(pah.project_id) from sys.dual) AND p.project_id = pah.project_id AND pah.task_id = 0 AND pah.resource_list_id = 0
140 AND pah.project_id = r.project_id AND pah.project_id = c.project_id';
141
142
143 IF (PA_DDC_API.Check_Alias('A.','P') = 'Y') THEN
144
145 from_clause := from_clause||',pa_project_accum_actuals a';
146
147 where_clause := where_clause||' AND pah.project_accum_id = a.project_accum_id (+)';
148
149 END IF;
150
151 IF (PA_DDC_API.Check_Alias('M.','P') = 'Y') THEN
152
153 from_clause := from_clause||',pa_project_accum_commitments m';
154
155 where_clause := where_clause||' AND pah.project_accum_id = m.project_accum_id (+)';
156
157 END IF;
158
159
160
161 FOR p1rec IN p1 LOOP
162 IF (p1rec.format_code = 'C') THEN
163
164 IF (p1rec.column_name IS NULL) THEN
165 stmt := stmt||',null';
166 ELSE
167 stmt := stmt||','||p1rec.column_name;
168 END IF;
169 ELSE
170
171 IF (p1rec.column_name IS NULL) THEN
172 stmt := stmt||',0';
173 ELSE
174 IF (p1rec.currency_format_flag IS NULL) THEN
175 stmt := stmt||','||p1rec.column_name;
176 ELSE
177 stmt := stmt||',('||p1rec.column_name||')/(PA_STATUS.Get_factor)';
178 END IF;
179 END IF;
180 END IF;
181
182
183 END LOOP;
184
185 ELSIF (x_view_name= 'PA_STATUS_TASK_GENERIC_V') THEN
186
187 ddl_stmt := 'CREATE OR REPLACE FORCE VIEW PA_STATUS_TASK_GENERIC_V
188 ( PROJECT_ID
189 , TASK_ID
190 , PARENT_TASK_ID
191 , WBS_LEVEL
192 , COST_BUDGET_TYPE_CODE
193 , REV_BUDGET_TYPE_CODE
194 , CHILD_EXIST_FLAG
195 , COLUMN1
196 , COLUMN2
197 , COLUMN3
198 , COLUMN4
199 , COLUMN5
200 , COLUMN6
201 , COLUMN7
202 , COLUMN8
203 , COLUMN9
204 , COLUMN10
205 , COLUMN11
206 , COLUMN12
207 , COLUMN13
208 , COLUMN14
209 , COLUMN15
210 , COLUMN16
211 , COLUMN17
212 , COLUMN18
213 , COLUMN19
214 , COLUMN20
215 , COLUMN21
216 , COLUMN22
217 , COLUMN23
218 , COLUMN24
219 , COLUMN25
220 , COLUMN26
221 , COLUMN27
222 , COLUMN28
223 , COLUMN29
224 , COLUMN30
225 , COLUMN31
226 , COLUMN32
227 , COLUMN33
228 ) as SELECT
229 t.project_id
230 , t.task_id
231 , t.parent_task_id
232 , t.wbs_level
233 , c.budget_type_code
234 , r.budget_type_code
235 , decode(pa_task_utils.check_child_exists(t.task_id),1,''+'',0,'' '') ';
236
237
238
239 from_clause := 'pa_tasks t,pa_status_task_bgt_cost_high_v c,pa_status_task_bgt_rev_high_v r';
240
241
242 where_clause :='t.project_id = PA_STATUS.GetProjId AND t.task_id = c.task_id (+) AND t.task_id = r.task_id (+)';
243
244 IF (PA_DDC_API.Check_Alias('A.','T') = 'Y') THEN
245
246 from_clause := from_clause||', pa_status_task_act_v a';
247
248 where_clause := where_clause||' AND t.task_id = a.task_id (+)';
249
250 END IF;
251
252 IF (PA_DDC_API.Check_Alias('M.','T') = 'Y') THEN
253
254 from_clause := from_clause||', pa_status_task_cmt_v m';
255
256 where_clause := where_clause||' AND t.task_id = m.task_id (+)';
257
258 END IF;
259
260 FOR t1rec IN t1 LOOP
261
262 IF (t1rec.format_code = 'C') THEN
263
264 IF (t1rec.column_name IS NULL) THEN
265 stmt := stmt||',null';
266 ELSE
267 stmt := stmt||','||t1rec.column_name;
268 END IF;
269 ELSE
270
271 IF (t1rec.column_name IS NULL) THEN
272 stmt := stmt||',0';
273 ELSE
274 IF (t1rec.currency_format_flag IS NULL) THEN
275 stmt := stmt||','||t1rec.column_name;
276 ELSE
277 stmt := stmt||',('||t1rec.column_name||')/(PA_STATUS.Get_factor)';
278 END IF;
279 END IF;
280 END IF;
281
282 END LOOP;
283
284
285 ELSE
286
287 ddl_stmt := 'CREATE OR REPLACE FORCE VIEW PA_STATUS_RSRC_GENERIC_V
288 ( PROJECT_ID
289 , RESOURCE_LIST_MEMBER_ID
290 , PARENT_MEMBER_ID
291 , MEMBER_LEVEL
292 , SORT_ORDER
293 , TASK_ID
294 , RESOURCE_LIST_ID
295 , RESOURCE_LIST_ASSIGNMENT_ID
296 , PROJECT_LEVEL_FLAG
297 , CHILD_EXIST_FLAG
298 , COLUMN1
299 , COLUMN2
300 , COLUMN3
301 , COLUMN4
302 , COLUMN5
303 , COLUMN6
304 , COLUMN7
305 , COLUMN8
306 , COLUMN9
307 , COLUMN10
308 , COLUMN11
309 , COLUMN12
310 , COLUMN13
311 , COLUMN14
312 , COLUMN15
313 , COLUMN16
314 , COLUMN17
315 , COLUMN18
316 , COLUMN19
317 , COLUMN20
318 , COLUMN21
319 , COLUMN22
320 , COLUMN23
321 , COLUMN24
322 , COLUMN25
323 , COLUMN26
324 , COLUMN27
325 , COLUMN28
326 , COLUMN29
327 , COLUMN30
328 , COLUMN31
329 , COLUMN32
330 , COLUMN33
331 ) as SELECT
332 pah.project_id
333 , pah.resource_list_member_id
334 , rlm1.parent_member_id
335 , rlm1.member_level
336 , rlm1.sort_order
337 , pah.task_id
338 , pah.resource_list_id
339 , pah.resource_list_assignment_id
340 , decode(pah.task_id, 0, ''Y'',''N'')
341 , decode(pa_get_resource.child_resource_exists(pah.resource_list_member_id,
342 pah.task_id,pah.project_id),''Y'',''+'',''N'','' '')';
343
344
345
346 from_clause := 'pa_status_proj_accum_headers_v pah,pa_resource_list_members rlm1';
347
348
349 where_clause :='pah.project_id = PA_STATUS.GetProjId AND pah.resource_list_id = PA_STATUS.GetRsrcListId AND pah.task_id = PA_STATUS.GetTaskId AND pah.resource_list_member_id = rlm1.resource_list_member_id';
350
351 IF (PA_DDC_API.Check_Alias('RES.','R') = 'Y') THEN
352
353 from_clause := from_clause||',pa_resources res';
354
355 where_clause := where_clause||' AND rlm1.resource_id = res.resource_id';
356
357 END IF;
358
359
360 IF (PA_DDC_API.Check_Alias('A.','R') = 'Y') THEN
361
362 from_clause := from_clause||',pa_status_rsrc_act_high_v a';
363
364 where_clause := where_clause||' AND pah.resource_list_member_id = a.resource_list_member_id (+)';
365
366 END IF;
367
368
369 IF (PA_DDC_API.Check_Alias('M.','R') = 'Y') THEN
370
371 from_clause := from_clause||',pa_status_rsrc_cmt_high_v m';
372
373 where_clause := where_clause||' AND pah.resource_list_member_id = m.resource_list_member_id (+)';
374
375 END IF;
376
377
378 IF (PA_DDC_API.Check_Alias('C.','R') = 'Y') THEN
379
380 from_clause := from_clause||',pa_status_rsrc_bgt_cost_high_v c';
381
382 where_clause := where_clause||' AND pah.resource_list_member_id = c.resource_list_member_id (+)';
383
384 END IF;
385
386
387 IF (PA_DDC_API.Check_Alias('R.','R') = 'Y') THEN
388
389 from_clause := from_clause||',pa_status_rsrc_bgt_rev_high_v r';
390
391 where_clause := where_clause||' AND pah.resource_list_member_id = r.resource_list_member_id (+)';
392
393 END IF;
394
395
396 FOR r1rec IN r1 LOOP
397
398 IF (r1rec.format_code = 'C') THEN
399
400 IF (r1rec.column_name IS NULL) THEN
401 stmt := stmt||',null';
402 ELSE
403 stmt := stmt||','||r1rec.column_name;
404 END IF;
405 ELSE
406 IF (r1rec.column_name IS NULL) THEN
407 stmt := stmt||',0';
408 ELSE
409 IF (r1rec.currency_format_flag IS NULL) THEN
410 stmt := stmt||','||r1rec.column_name;
411 ELSE
412 stmt := stmt||',('||r1rec.column_name||')/(PA_STATUS.Get_factor)';
413 END IF;
414 END IF;
415 END IF;
416
417 END LOOP;
418
419 END IF;
420
421
422 ddl_stmt := ddl_stmt||stmt;
423 ddl_stmt := ddl_stmt||' FROM '||from_clause;
424 ddl_stmt := ddl_stmt||' WHERE '||where_clause;
425
426 cid := dbms_sql.open_cursor;
427
428 dbms_sql.parse(cid,ddl_stmt,dbms_sql.v7);
429
430 END create_psi_generic_views;
431
432
433 END PA_DDC_API;