DBA Data[Home] [Help]

PACKAGE BODY: APPS.PJI_PJP_SUM_ROLLUP

Source


1 package body PJI_PJP_SUM_ROLLUP as
2   /* $Header: PJISP02B.pls 120.108.12020000.20 2013/04/17 18:55:00 sachandr ship $ */
3 
4   g_event_id              number(15);
5   g_project_id            number(15);
6   g_plan_type_id          number(15);
7   g_old_baselined_version number(15);
8   g_new_baselined_version number(15);
9   g_old_original_version  number(15);
10   g_new_original_version  number(15);
11   g_old_struct_version    number(15);
12   g_new_struct_version    number(15);
13   g_rbs_version           number(15);
14   g_cb_plans constant NUMBER := 2;
15   g_co_plans constant NUMBER := 4;
16   g_lp_plans constant NUMBER := 8;
17   g_wk_plans constant NUMBER := 16;
18   g_latest_plans constant NUMBER := 30;
19   g_all_plans constant NUMBER := 62;
20 
21 -- Begin Bug# 9904361
22 procedure ROLLUP_FPR_WBS_PARTIAL
23 (   p_worker_id       in number default null,
24     l_process         in varchar2,
25     l_extraction_type in varchar2,
26     l_fpm_upgrade     in varchar2,
27     l_max_level       in number,
28     l_level           in number,
29     l_step_seq        in number,
30     l_level_seq       in number,
31     l_count           in number,
32     l_partial_mode    in varchar2
33 ) is
34 lv_level_seq number := l_level_seq;
35 lv_level number := l_level;
36 
37  begin
38 
39 insert into PJI_PJP_WBS_HEADER_T
40 (
41  PROJECT_ID,
42  PLAN_VERSION_ID,
43  WBS_VERSION_ID,
44  WP_FLAG,
45  CB_FLAG,
46  CO_FLAG,
47  LOCK_FLAG,
48  PLAN_TYPE_ID,
49  MIN_TXN_DATE,
50  MAX_TXN_DATE,
51  LAST_UPDATE_DATE ,
52  LAST_UPDATED_BY ,
53  CREATION_DATE,
54  CREATED_BY,
55  LAST_UPDATE_LOGIN,
56  PLAN_TYPE_CODE)
57  select
58  PROJECT_ID,
59  PLAN_VERSION_ID,
60  WBS_VERSION_ID,
61  WP_FLAG,
62  CB_FLAG,
63  CO_FLAG,
64  LOCK_FLAG,
65  PLAN_TYPE_ID,
66  MIN_TXN_DATE,
67  MAX_TXN_DATE,
68  LAST_UPDATE_DATE ,
69  LAST_UPDATED_BY ,
70  CREATION_DATE,
71  CREATED_BY,
72  LAST_UPDATE_LOGIN,
73  PLAN_TYPE_CODE
74  from PJI_PJP_WBS_HEADER a
75 where a.project_id in ( select b.project_id from PJI_PJP_PROJ_BATCH_MAP b
76                         where b.worker_id = p_worker_id );
77 
78 insert into PJI_PA_XBS_DENORM_T
79 (STRUCT_TYPE,
80  PRG_GROUP,
81  STRUCT_VERSION_ID,
82  SUP_PROJECT_ID,
83  SUP_ID,
84  SUP_EMT_ID,
85  SUBRO_ID,
86  SUB_ID,
87  SUB_EMT_ID,
88  SUP_LEVEL,
89  SUB_LEVEL,
90  SUB_ROLLUP_ID,
91  SUB_LEAF_FLAG,
92  LAST_UPDATE_DATE,
93  LAST_UPDATED_BY,
94  CREATION_DATE,
95  CREATED_BY,
96  LAST_UPDATE_LOGIN,
97  STRUCT_EMT_ID,
98  RELATIONSHIP_TYPE)
99  select
100 STRUCT_TYPE,
101  PRG_GROUP,
102  STRUCT_VERSION_ID,
103  SUP_PROJECT_ID,
104  SUP_ID,
105  SUP_EMT_ID,
106  SUBRO_ID,
107  SUB_ID,
108  SUB_EMT_ID,
109  SUP_LEVEL,
110  SUB_LEVEL,
111  SUB_ROLLUP_ID,
112  SUB_LEAF_FLAG,
113  LAST_UPDATE_DATE,
114  LAST_UPDATED_BY,
115  CREATION_DATE,
116  CREATED_BY,
117  LAST_UPDATE_LOGIN,
118  STRUCT_EMT_ID,
119  RELATIONSHIP_TYPE
120  from PA_XBS_DENORM a
121 -- Bug 12763391 - a.struct_type join should be outside the bracket
122 -- join to PJI_PJP_PROJ_BATCH_MAP is not needed since PJI_PJP_WBS_HEADER_T has
123 -- the rows filtered based on join to PJI_PJP_PROJ_BATCH_MAP and the worker_id
124 where a.STRUCT_VERSION_ID in ( select b.wbs_VERSION_ID
125                                from PJI_PJP_WBS_HEADER_T b
126                                )
127 and a.struct_type||'' = 'WBS'||'';
128 -- End Bug 12763391
129 
130 insert into PJI_XBS_DENORM_T
131 (STRUCT_TYPE,
132  PRG_GROUP,
133  STRUCT_VERSION_ID,
134  SUP_PROJECT_ID,
135  SUP_ID,
136  SUP_EMT_ID,
137  SUBRO_ID,
138  SUB_ID,
139  SUB_EMT_ID,
140  SUP_LEVEL,
141  SUB_LEVEL,
142  SUB_ROLLUP_ID,
143  SUB_LEAF_FLAG,
144  LAST_UPDATE_DATE,
145  LAST_UPDATED_BY,
146  CREATION_DATE,
147  CREATED_BY,
148  LAST_UPDATE_LOGIN,
149  STRUCT_EMT_ID,
150  RELATIONSHIP_TYPE)
151  select
152 STRUCT_TYPE,
153  PRG_GROUP,
154  STRUCT_VERSION_ID,
155  SUP_PROJECT_ID,
156  SUP_ID,
157  SUP_EMT_ID,
158  SUBRO_ID,
159  SUB_ID,
160  SUB_EMT_ID,
161  SUP_LEVEL,
162  SUB_LEVEL,
163  SUB_ROLLUP_ID,
164  SUB_LEAF_FLAG,
165  LAST_UPDATE_DATE,
166  LAST_UPDATED_BY,
167  CREATION_DATE,
168  CREATED_BY,
169  LAST_UPDATE_LOGIN,
170  STRUCT_EMT_ID,
171  RELATIONSHIP_TYPE
172  from PJI_XBS_DENORM a
173 where a.SUP_PROJECT_ID in ( select distinct b.SUP_PROJECT_ID
174                             from PJI_PA_XBS_DENORM_T b, PJI_PJP_PROJ_BATCH_MAP c
175                             where c.worker_id = p_worker_id
176                             and b.sup_project_id = c.project_id);
177 
178 insert into PJI_XBS_DENORM_T
179 (STRUCT_TYPE,
180  PRG_GROUP,
181  STRUCT_VERSION_ID,
182  SUP_PROJECT_ID,
183  SUP_ID,
184  SUP_EMT_ID,
185  SUBRO_ID,
186  SUB_ID,
187  SUB_EMT_ID,
188  SUP_LEVEL,
189  SUB_LEVEL,
190  SUB_ROLLUP_ID,
191  SUB_LEAF_FLAG,
192  LAST_UPDATE_DATE,
193  LAST_UPDATED_BY,
194  CREATION_DATE,
195  CREATED_BY,
196  LAST_UPDATE_LOGIN,
197  STRUCT_EMT_ID,
198  RELATIONSHIP_TYPE)
199  select
200 STRUCT_TYPE,
201  PRG_GROUP,
202  STRUCT_VERSION_ID,
203  SUP_PROJECT_ID,
204  SUP_ID,
205  SUP_EMT_ID,
206  SUBRO_ID,
207  SUB_ID,
208  SUB_EMT_ID,
209  SUP_LEVEL,
210  SUB_LEVEL,
211  SUB_ROLLUP_ID,
212  SUB_LEAF_FLAG,
213  LAST_UPDATE_DATE,
214  LAST_UPDATED_BY,
215  CREATION_DATE,
216  CREATED_BY,
217  LAST_UPDATE_LOGIN,
218  STRUCT_EMT_ID,
219  RELATIONSHIP_TYPE
220 from PJI_XBS_DENORM a
221 where a.SUP_PROJECT_ID in ( select   b.PROJECT_ID
222                             from PJI_PJP_PROJ_BATCH_MAP b
223                             where b.worker_id = p_worker_id )
224 and not exists ( select 'x' from PJI_PJP_PROJ_BATCH_MAP c
225                  where c.worker_id = p_worker_id and c.project_id = a.sup_project_id );
226 
227       while (lv_level > 0) loop
228 
229         update PJI_SYSTEM_PRC_STATUS
230         set    START_DATE = sysdate
231         where  PROCESS_NAME = l_process and
232                STEP_SEQ = lv_level_seq;
233 
234 
235         -- rollup project hiearchy
236 
237         insert into PJI_FP_AGGR_PJP1
238         (
239           WORKER_ID,
240           RECORD_TYPE,
241           PRG_LEVEL,
242           LINE_TYPE,
243           PROJECT_ID,
244           PROJECT_ORG_ID,
245           PROJECT_ORGANIZATION_ID,
246           PROJECT_ELEMENT_ID,
247           TIME_ID,
248           PERIOD_TYPE_ID,
249           CALENDAR_TYPE,
250           RBS_AGGR_LEVEL,
251           WBS_ROLLUP_FLAG,
252           PRG_ROLLUP_FLAG,
253           CURR_RECORD_TYPE_ID,
254           CURRENCY_CODE,
255           RBS_ELEMENT_ID,
256           RBS_VERSION_ID,
257           PLAN_VERSION_ID,
258           PLAN_TYPE_ID,
259           PLAN_TYPE_CODE,
260           RAW_COST,
261           BRDN_COST,
262           REVENUE,
263           BILL_RAW_COST,
264           BILL_BRDN_COST,
265           BILL_LABOR_RAW_COST,
266           BILL_LABOR_BRDN_COST,
267           BILL_LABOR_HRS,
268           EQUIPMENT_RAW_COST,
269           EQUIPMENT_BRDN_COST,
270           CAPITALIZABLE_RAW_COST,
271           CAPITALIZABLE_BRDN_COST,
272           LABOR_RAW_COST,
273           LABOR_BRDN_COST,
274           LABOR_HRS,
275           LABOR_REVENUE,
276           EQUIPMENT_HOURS,
277           BILLABLE_EQUIPMENT_HOURS,
278           SUP_INV_COMMITTED_COST,
279           PO_COMMITTED_COST,
280           PR_COMMITTED_COST,
281           OTH_COMMITTED_COST,
282           ACT_LABOR_HRS,
283           ACT_EQUIP_HRS,
284           ACT_LABOR_BRDN_COST,
285           ACT_EQUIP_BRDN_COST,
286           ACT_BRDN_COST,
287           ACT_RAW_COST,
288           ACT_REVENUE,
289           ACT_LABOR_RAW_COST,
290           ACT_EQUIP_RAW_COST,
291           ETC_LABOR_HRS,
292           ETC_EQUIP_HRS,
293           ETC_LABOR_BRDN_COST,
294           ETC_EQUIP_BRDN_COST,
295           ETC_BRDN_COST,
296           ETC_RAW_COST,
297           ETC_LABOR_RAW_COST,
298           ETC_EQUIP_RAW_COST,
299           CUSTOM1,
300           CUSTOM2,
301           CUSTOM3,
302           CUSTOM4,
303           CUSTOM5,
304           CUSTOM6,
305           CUSTOM7,
306           CUSTOM8,
307           CUSTOM9,
308           CUSTOM10,
309           CUSTOM11,
310           CUSTOM12,
311           CUSTOM13,
312           CUSTOM14,
313           CUSTOM15
314         )
315         select
316           pjp1_i.WORKER_ID,
317           pjp1_i.RECORD_TYPE,
318           pjp1_i.PRG_LEVEL,
319           pjp1_i.LINE_TYPE,
320           pjp1_i.PROJECT_ID,
321           pjp1_i.PROJECT_ORG_ID,
322           pjp1_i.PROJECT_ORGANIZATION_ID,
323           pjp1_i.PROJECT_ELEMENT_ID,
324           pjp1_i.TIME_ID,
325           pjp1_i.PERIOD_TYPE_ID,
326           pjp1_i.CALENDAR_TYPE,
327           pjp1_i.RBS_AGGR_LEVEL,
328           pjp1_i.WBS_ROLLUP_FLAG,
329           pjp1_i.PRG_ROLLUP_FLAG,
330           pjp1_i.CURR_RECORD_TYPE_ID,
331           pjp1_i.CURRENCY_CODE,
332           pjp1_i.RBS_ELEMENT_ID,
333           pjp1_i.RBS_VERSION_ID,
334           pjp1_i.PLAN_VERSION_ID,
335           pjp1_i.PLAN_TYPE_ID,
336           pjp1_i.PLAN_TYPE_CODE,
337           decode(pjp1_i.RELATIONSHIP_TYPE
338                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
339                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
340                    || '_' || pjp1_i.SUB_STATUS_CODE
341                    || '_' || pjp1_i.SUP_STATUS_CODE,
342                  'LW_N_Y__', to_number(null),
343                  decode(pjp1_i.RELATIONSHIP_TYPE
344                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
345                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
346                           || '_' || pjp1_i.SUP_VER_ENABLED
347                           || '_' || l_fpm_upgrade
348                           || '_' || l_partial_mode,
349                         'LW_N_Y_Y_C_', to_number(null),
350                  pjp1_i.RAW_COST))                    RAW_COST,
351           decode(pjp1_i.RELATIONSHIP_TYPE
352                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
353                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
354                    || '_' || pjp1_i.SUB_STATUS_CODE
355                    || '_' || pjp1_i.SUP_STATUS_CODE,
356                  'LW_N_Y__', to_number(null),
357                  decode(pjp1_i.RELATIONSHIP_TYPE
358                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
359                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
360                           || '_' || pjp1_i.SUP_VER_ENABLED
361                           || '_' || l_fpm_upgrade
362                           || '_' || l_partial_mode,
363                         'LW_N_Y_Y_C_', to_number(null),
364                  pjp1_i.BRDN_COST))                   BRDN_COST,
365           decode(pjp1_i.RELATIONSHIP_TYPE
366                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
367                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
368                    || '_' || pjp1_i.SUB_STATUS_CODE
369                    || '_' || pjp1_i.SUP_STATUS_CODE,
370                  'LW_N_Y__', to_number(null),
371                  decode(pjp1_i.RELATIONSHIP_TYPE
372                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
373                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
374                           || '_' || pjp1_i.SUP_VER_ENABLED
375                           || '_' || l_fpm_upgrade
376                           || '_' || l_partial_mode,
377                         'LW_N_Y_Y_C_', to_number(null),
378                  pjp1_i.REVENUE))                     REVENUE,
379           decode(pjp1_i.RELATIONSHIP_TYPE
380                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
381                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
382                    || '_' || pjp1_i.SUB_STATUS_CODE
383                    || '_' || pjp1_i.SUP_STATUS_CODE,
384                  'LW_N_Y__', to_number(null),
385                  decode(pjp1_i.RELATIONSHIP_TYPE
386                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
387                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
388                           || '_' || pjp1_i.SUP_VER_ENABLED
389                           || '_' || l_fpm_upgrade
390                           || '_' || l_partial_mode,
391                         'LW_N_Y_Y_C_', to_number(null),
392                  pjp1_i.BILL_RAW_COST))               BILL_RAW_COST,
393           decode(pjp1_i.RELATIONSHIP_TYPE
394                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
395                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
396                    || '_' || pjp1_i.SUB_STATUS_CODE
397                    || '_' || pjp1_i.SUP_STATUS_CODE,
398                  'LW_N_Y__', to_number(null),
399                  decode(pjp1_i.RELATIONSHIP_TYPE
400                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
401                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
402                           || '_' || pjp1_i.SUP_VER_ENABLED
403                           || '_' || l_fpm_upgrade
404                           || '_' || l_partial_mode,
405                         'LW_N_Y_Y_C_', to_number(null),
406                  pjp1_i.BILL_BRDN_COST))              BILL_BRDN_COST,
407           decode(pjp1_i.RELATIONSHIP_TYPE
408                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
409                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
410                    || '_' || pjp1_i.SUB_STATUS_CODE
411                    || '_' || pjp1_i.SUP_STATUS_CODE,
412                  'LW_N_Y__', to_number(null),
413                  decode(pjp1_i.RELATIONSHIP_TYPE
414                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
415                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
416                           || '_' || pjp1_i.SUP_VER_ENABLED
417                           || '_' || l_fpm_upgrade
418                           || '_' || l_partial_mode,
419                         'LW_N_Y_Y_C_', to_number(null),
420                  pjp1_i.BILL_LABOR_RAW_COST))         BILL_LABOR_RAW_COST,
421           decode(pjp1_i.RELATIONSHIP_TYPE
422                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
423                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
424                    || '_' || pjp1_i.SUB_STATUS_CODE
425                    || '_' || pjp1_i.SUP_STATUS_CODE,
426                  'LW_N_Y__', to_number(null),
427                  decode(pjp1_i.RELATIONSHIP_TYPE
428                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
429                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
430                           || '_' || pjp1_i.SUP_VER_ENABLED
431                           || '_' || l_fpm_upgrade
432                           || '_' || l_partial_mode,
433                         'LW_N_Y_Y_C_', to_number(null),
434                  pjp1_i.BILL_LABOR_BRDN_COST))        BILL_LABOR_BRDN_COST,
435           decode(pjp1_i.RELATIONSHIP_TYPE
436                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
437                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
438                    || '_' || pjp1_i.SUB_STATUS_CODE
439                    || '_' || pjp1_i.SUP_STATUS_CODE,
440                  'LW_N_Y__', to_number(null),
441                  decode(pjp1_i.RELATIONSHIP_TYPE
442                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
443                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
444                           || '_' || pjp1_i.SUP_VER_ENABLED
445                           || '_' || l_fpm_upgrade
446                           || '_' || l_partial_mode,
447                         'LW_N_Y_Y_C_', to_number(null),
448                  pjp1_i.BILL_LABOR_HRS))              BILL_LABOR_HRS,
449           decode(pjp1_i.RELATIONSHIP_TYPE
450                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
451                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
452                    || '_' || pjp1_i.SUB_STATUS_CODE
453                    || '_' || pjp1_i.SUP_STATUS_CODE,
454                  'LW_N_Y__', to_number(null),
455                  decode(pjp1_i.RELATIONSHIP_TYPE
456                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
457                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
458                           || '_' || pjp1_i.SUP_VER_ENABLED
459                           || '_' || l_fpm_upgrade
460                           || '_' || l_partial_mode,
461                         'LW_N_Y_Y_C_', to_number(null),
462                  pjp1_i.EQUIPMENT_RAW_COST))          EQUIPMENT_RAW_COST,
463           decode(pjp1_i.RELATIONSHIP_TYPE
464                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
465                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
466                    || '_' || pjp1_i.SUB_STATUS_CODE
467                    || '_' || pjp1_i.SUP_STATUS_CODE,
468                  'LW_N_Y__', to_number(null),
469                  decode(pjp1_i.RELATIONSHIP_TYPE
470                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
471                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
472                           || '_' || pjp1_i.SUP_VER_ENABLED
473                           || '_' || l_fpm_upgrade
474                           || '_' || l_partial_mode,
475                         'LW_N_Y_Y_C_', to_number(null),
476                  pjp1_i.EQUIPMENT_BRDN_COST))         EQUIPMENT_BRDN_COST,
477           decode(pjp1_i.RELATIONSHIP_TYPE
478                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
479                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
480                    || '_' || pjp1_i.SUB_STATUS_CODE
481                    || '_' || pjp1_i.SUP_STATUS_CODE,
482                  'LW_N_Y__', to_number(null),
483                  decode(pjp1_i.RELATIONSHIP_TYPE
484                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
485                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
486                           || '_' || pjp1_i.SUP_VER_ENABLED
487                           || '_' || l_fpm_upgrade
488                           || '_' || l_partial_mode,
489                         'LW_N_Y_Y_C_', to_number(null),
490                  pjp1_i.CAPITALIZABLE_RAW_COST))      CAPITALIZABLE_RAW_COST,
491           decode(pjp1_i.RELATIONSHIP_TYPE
492                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
493                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
494                    || '_' || pjp1_i.SUB_STATUS_CODE
495                    || '_' || pjp1_i.SUP_STATUS_CODE,
496                  'LW_N_Y__', to_number(null),
497                  decode(pjp1_i.RELATIONSHIP_TYPE
498                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
499                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
500                           || '_' || pjp1_i.SUP_VER_ENABLED
501                           || '_' || l_fpm_upgrade
502                           || '_' || l_partial_mode,
503                         'LW_N_Y_Y_C_', to_number(null),
504                  pjp1_i.CAPITALIZABLE_BRDN_COST))     CAPITALIZABLE_BRDN_COST,
505           decode(pjp1_i.RELATIONSHIP_TYPE
506                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
507                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
508                    || '_' || pjp1_i.SUB_STATUS_CODE
509                    || '_' || pjp1_i.SUP_STATUS_CODE,
510                  'LW_N_Y__', to_number(null),
511                  decode(pjp1_i.RELATIONSHIP_TYPE
512                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
513                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
514                           || '_' || pjp1_i.SUP_VER_ENABLED
515                           || '_' || l_fpm_upgrade
516                           || '_' || l_partial_mode,
517                         'LW_N_Y_Y_C_', to_number(null),
518                  pjp1_i.LABOR_RAW_COST))              LABOR_RAW_COST,
519           decode(pjp1_i.RELATIONSHIP_TYPE
520                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
521                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
522                    || '_' || pjp1_i.SUB_STATUS_CODE
523                    || '_' || pjp1_i.SUP_STATUS_CODE,
524                  'LW_N_Y__', to_number(null),
525                  decode(pjp1_i.RELATIONSHIP_TYPE
526                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
527                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
528                           || '_' || pjp1_i.SUP_VER_ENABLED
529                           || '_' || l_fpm_upgrade
530                           || '_' || l_partial_mode,
531                         'LW_N_Y_Y_C_', to_number(null),
532                  pjp1_i.LABOR_BRDN_COST))             LABOR_BRDN_COST,
533           decode(pjp1_i.RELATIONSHIP_TYPE
534                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
535                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
536                    || '_' || pjp1_i.SUB_STATUS_CODE
537                    || '_' || pjp1_i.SUP_STATUS_CODE,
538                  'LW_N_Y__', to_number(null),
539                  decode(pjp1_i.RELATIONSHIP_TYPE
540                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
541                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
542                           || '_' || pjp1_i.SUP_VER_ENABLED
543                           || '_' || l_fpm_upgrade
544                           || '_' || l_partial_mode,
545                         'LW_N_Y_Y_C_', to_number(null),
546                  pjp1_i.LABOR_HRS))                   LABOR_HRS,
547           decode(pjp1_i.RELATIONSHIP_TYPE
548                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
549                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
550                    || '_' || pjp1_i.SUB_STATUS_CODE
551                    || '_' || pjp1_i.SUP_STATUS_CODE,
552                  'LW_N_Y__', to_number(null),
553                  decode(pjp1_i.RELATIONSHIP_TYPE
554                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
555                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
556                           || '_' || pjp1_i.SUP_VER_ENABLED
557                           || '_' || l_fpm_upgrade
558                           || '_' || l_partial_mode,
559                         'LW_N_Y_Y_C_', to_number(null),
560                  pjp1_i.LABOR_REVENUE))               LABOR_REVENUE,
561           decode(pjp1_i.RELATIONSHIP_TYPE
562                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
563                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
564                    || '_' || pjp1_i.SUB_STATUS_CODE
565                    || '_' || pjp1_i.SUP_STATUS_CODE,
566                  'LW_N_Y__', to_number(null),
567                  decode(pjp1_i.RELATIONSHIP_TYPE
568                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
569                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
570                           || '_' || pjp1_i.SUP_VER_ENABLED
571                           || '_' || l_fpm_upgrade
572                           || '_' || l_partial_mode,
573                         'LW_N_Y_Y_C_', to_number(null),
574                  pjp1_i.EQUIPMENT_HOURS))             EQUIPMENT_HOURS,
575           decode(pjp1_i.RELATIONSHIP_TYPE
576                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
577                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
578                    || '_' || pjp1_i.SUB_STATUS_CODE
579                    || '_' || pjp1_i.SUP_STATUS_CODE,
580                  'LW_N_Y__', to_number(null),
581                  decode(pjp1_i.RELATIONSHIP_TYPE
582                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
583                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
584                           || '_' || pjp1_i.SUP_VER_ENABLED
585                           || '_' || l_fpm_upgrade
586                           || '_' || l_partial_mode,
587                         'LW_N_Y_Y_C_', to_number(null),
588                  pjp1_i.BILLABLE_EQUIPMENT_HOURS))    BILLABLE_EQUIPMENT_HOURS,
589           decode(pjp1_i.RELATIONSHIP_TYPE
590                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
591                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
592                    || '_' || pjp1_i.SUB_STATUS_CODE
593                    || '_' || pjp1_i.SUP_STATUS_CODE,
594                  'LW_N_Y__', to_number(null),
595                  decode(pjp1_i.RELATIONSHIP_TYPE
596                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
597                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
598                           || '_' || pjp1_i.SUP_VER_ENABLED
599                           || '_' || l_fpm_upgrade
600                           || '_' || l_partial_mode,
601                         'LW_N_Y_Y_C_', to_number(null),
602                  pjp1_i.SUP_INV_COMMITTED_COST))      SUP_INV_COMMITTED_COST,
603           decode(pjp1_i.RELATIONSHIP_TYPE
604                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
605                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
606                    || '_' || pjp1_i.SUB_STATUS_CODE
607                    || '_' || pjp1_i.SUP_STATUS_CODE,
608                  'LW_N_Y__', to_number(null),
609                  decode(pjp1_i.RELATIONSHIP_TYPE
610                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
611                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
612                           || '_' || pjp1_i.SUP_VER_ENABLED
613                           || '_' || l_fpm_upgrade
614                           || '_' || l_partial_mode,
615                         'LW_N_Y_Y_C_', to_number(null),
616                  pjp1_i.PO_COMMITTED_COST))           PO_COMMITTED_COST,
617           decode(pjp1_i.RELATIONSHIP_TYPE
618                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
619                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
620                    || '_' || pjp1_i.SUB_STATUS_CODE
621                    || '_' || pjp1_i.SUP_STATUS_CODE,
622                  'LW_N_Y__', to_number(null),
623                  decode(pjp1_i.RELATIONSHIP_TYPE
624                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
625                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
626                           || '_' || pjp1_i.SUP_VER_ENABLED
627                           || '_' || l_fpm_upgrade
628                           || '_' || l_partial_mode,
629                         'LW_N_Y_Y_C_', to_number(null),
630                  pjp1_i.PR_COMMITTED_COST))           PR_COMMITTED_COST,
631           decode(pjp1_i.RELATIONSHIP_TYPE
632                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
633                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
634                    || '_' || pjp1_i.SUB_STATUS_CODE
635                    || '_' || pjp1_i.SUP_STATUS_CODE,
636                  'LW_N_Y__', to_number(null),
637                  decode(pjp1_i.RELATIONSHIP_TYPE
638                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
639                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
640                           || '_' || pjp1_i.SUP_VER_ENABLED
641                           || '_' || l_fpm_upgrade
642                           || '_' || l_partial_mode,
643                         'LW_N_Y_Y_C_', to_number(null),
644                  pjp1_i.OTH_COMMITTED_COST))          OTH_COMMITTED_COST,
645           decode(pjp1_i.RELATIONSHIP_TYPE
646                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
647                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
648                    || '_' || pjp1_i.SUP_STATUS_CODE
649                    || '_' || l_partial_mode,
650                  'LW_N_Y__', to_number(null),
651                           pjp1_i.ACT_LABOR_HRS)       ACT_LABOR_HRS,
652           decode(pjp1_i.RELATIONSHIP_TYPE
653                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
654                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
655                    || '_' || pjp1_i.SUP_STATUS_CODE
656                    || '_' || l_partial_mode,
657                  'LW_N_Y__', to_number(null),
658                           pjp1_i.ACT_EQUIP_HRS)       ACT_EQUIP_HRS,
659           decode(pjp1_i.RELATIONSHIP_TYPE
660                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
661                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
662                    || '_' || pjp1_i.SUP_STATUS_CODE
663                    || '_' || l_partial_mode,
664                  'LW_N_Y__', to_number(null),
665                           pjp1_i.ACT_LABOR_BRDN_COST) ACT_LABOR_BRDN_COST,
666           decode(pjp1_i.RELATIONSHIP_TYPE
667                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
668                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
669                    || '_' || pjp1_i.SUP_STATUS_CODE
670                    || '_' || l_partial_mode,
671                  'LW_N_Y__', to_number(null),
672                           pjp1_i.ACT_EQUIP_BRDN_COST) ACT_EQUIP_BRDN_COST,
673           decode(pjp1_i.RELATIONSHIP_TYPE
674                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
675                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
676                    || '_' || pjp1_i.SUP_STATUS_CODE
677                    || '_' || l_partial_mode,
678                  'LW_N_Y__', to_number(null),
679                           pjp1_i.ACT_BRDN_COST)       ACT_BRDN_COST,
680           decode(pjp1_i.RELATIONSHIP_TYPE
681                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
682                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
683                    || '_' || pjp1_i.SUP_STATUS_CODE
684                    || '_' || l_partial_mode,
685                  'LW_N_Y__', to_number(null),
686                           pjp1_i.ACT_RAW_COST)        ACT_RAW_COST,
687           decode(pjp1_i.RELATIONSHIP_TYPE
688                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
689                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
690                    || '_' || pjp1_i.SUP_STATUS_CODE
691                    || '_' || l_partial_mode,
692                  'LW_N_Y__', to_number(null),
693                           pjp1_i.ACT_REVENUE)         ACT_REVENUE,
694           decode(pjp1_i.RELATIONSHIP_TYPE
695                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
696                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
697                    || '_' || pjp1_i.SUP_STATUS_CODE
698                    || '_' || l_partial_mode,
699                  'LW_N_Y__', to_number(null),
700                           pjp1_i.ACT_LABOR_RAW_COST)  ACT_LABOR_RAW_COST,
701           decode(pjp1_i.RELATIONSHIP_TYPE
702                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
703                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
704                    || '_' || pjp1_i.SUP_STATUS_CODE
705                    || '_' || l_partial_mode,
706                  'LW_N_Y__', to_number(null),
707                           pjp1_i.ACT_EQUIP_RAW_COST)  ACT_EQUIP_RAW_COST,
708           decode(pjp1_i.RELATIONSHIP_TYPE
709                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
710                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
711                    || '_' || pjp1_i.SUP_STATUS_CODE
712                    || '_' || l_partial_mode,
713                  'LW_N_Y__', to_number(null),
714                           pjp1_i.ETC_LABOR_HRS)       ETC_LABOR_HRS,
715           decode(pjp1_i.RELATIONSHIP_TYPE
716                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
717                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
718                    || '_' || pjp1_i.SUP_STATUS_CODE
719                    || '_' || l_partial_mode,
720                  'LW_N_Y__', to_number(null),
721                           pjp1_i.ETC_EQUIP_HRS)       ETC_EQUIP_HRS,
722           decode(pjp1_i.RELATIONSHIP_TYPE
723                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
724                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
725                    || '_' || pjp1_i.SUP_STATUS_CODE
726                    || '_' || l_partial_mode,
727                  'LW_N_Y__', to_number(null),
728                           pjp1_i.ETC_LABOR_BRDN_COST) ETC_LABOR_BRDN_COST,
729           decode(pjp1_i.RELATIONSHIP_TYPE
730                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
731                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
732                    || '_' || pjp1_i.SUP_STATUS_CODE
733                    || '_' || l_partial_mode,
734                  'LW_N_Y__', to_number(null),
735                           pjp1_i.ETC_EQUIP_BRDN_COST) ETC_EQUIP_BRDN_COST,
736           decode(pjp1_i.RELATIONSHIP_TYPE
737                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
738                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
739                    || '_' || pjp1_i.SUP_STATUS_CODE
740                    || '_' || l_partial_mode,
741                  'LW_N_Y__', to_number(null),
742                           pjp1_i.ETC_BRDN_COST)       ETC_BRDN_COST,
743           decode(pjp1_i.RELATIONSHIP_TYPE
744                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
745                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
746                    || '_' || pjp1_i.SUP_STATUS_CODE
747                    || '_' || l_partial_mode,
748                  'LW_N_Y__', to_number(null),
749                           pjp1_i.ETC_RAW_COST)        ETC_RAW_COST,
750           decode(pjp1_i.RELATIONSHIP_TYPE
751                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
752                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
753                    || '_' || pjp1_i.SUP_STATUS_CODE
754                    || '_' || l_partial_mode,
755                  'LW_N_Y__', to_number(null),
756                           pjp1_i.ETC_LABOR_RAW_COST)  ETC_LABOR_RAW_COST,
757           decode(pjp1_i.RELATIONSHIP_TYPE
758                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
759                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
760                    || '_' || pjp1_i.SUP_STATUS_CODE
761                    || '_' || l_partial_mode,
762                  'LW_N_Y__', to_number(null),
763                           pjp1_i.ETC_EQUIP_RAW_COST)  ETC_EQUIP_RAW_COST,
764           pjp1_i.CUSTOM1,
765           pjp1_i.CUSTOM2,
766           pjp1_i.CUSTOM3,
767           pjp1_i.CUSTOM4,
768           pjp1_i.CUSTOM5,
769           pjp1_i.CUSTOM6,
770           pjp1_i.CUSTOM7,
771           pjp1_i.CUSTOM8,
772           pjp1_i.CUSTOM9,
773           pjp1_i.CUSTOM10,
774           pjp1_i.CUSTOM11,
775           pjp1_i.CUSTOM12,
776           pjp1_i.CUSTOM13,
777           pjp1_i.CUSTOM14,
778           pjp1_i.CUSTOM15
779         from
780           (
781         select
782           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
783                  pjp.INSERT_FLAG, 'Y')                INSERT_FLAG,
784           pjp.RELATIONSHIP_TYPE,
785           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
786                  null, sub_ver.STATUS_CODE)           SUB_STATUS_CODE,
787           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
788                  null, sup_ver.STATUS_CODE)           SUP_STATUS_CODE,
789           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
790                  null, sup_wpa.WP_ENABLE_VERSION_FLAG)SUP_VER_ENABLED,
791           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
792                  null, decode(pjp.PLAN_VERSION_ID,
793                               -1, prg.SUP_ID,
794                               -3, prg.SUP_ID,
795                               -4, prg.SUP_ID,
796                                   null))              SUP_ID,
797           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
798                  null, decode(pjp.PLAN_VERSION_ID,
799                               -1, prg.SUP_EMT_ID,
800                               -3, prg.SUP_EMT_ID,
801                               -4, prg.SUP_EMT_ID,
802                                   null))              SUP_EMT_ID,
803           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
804                  null, decode(pjp.PLAN_VERSION_ID,
805                               -1, prg.WP_FLAG,
806                               -3, prg.WP_FLAG,
807                               -4, prg.WP_FLAG,
808                                   null))              SUP_WP_FLAG,
809           p_worker_id                                 WORKER_ID,
810           'W'                                         RECORD_TYPE,
811           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
812                  lv_level, prg.SUP_LEVEL)              PRG_LEVEL,
813           pjp.LINE_TYPE,
814           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
815                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID)  PROJECT_ID,
816           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
817                  pjp.PROJECT_ORG_ID,
818                  prg.SUP_PROJECT_ORG_ID)              PROJECT_ORG_ID,
819           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
820                  pjp.PROJECT_ORGANIZATION_ID,
821                  prg.SUP_PROJECT_ORGANIZATION_ID)     PROJECT_ORGANIZATION_ID,
822           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
823                  pjp.PROJECT_ELEMENT_ID,
824                  prg.SUB_ROLLUP_ID)                   PROJECT_ELEMENT_ID,
825           pjp.TIME_ID,
826           pjp.PERIOD_TYPE_ID,
827           pjp.CALENDAR_TYPE,
828           pjp.RBS_AGGR_LEVEL,
829           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
830                  pjp.WBS_ROLLUP_FLAG, 'N')            WBS_ROLLUP_FLAG,
831           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
832                  pjp.PRG_ROLLUP_FLAG, 'Y')            PRG_ROLLUP_FLAG,
833           pjp.CURR_RECORD_TYPE_ID,
834           pjp.CURRENCY_CODE,
835           pjp.RBS_ELEMENT_ID,
836           pjp.RBS_VERSION_ID,
837           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
838                  pjp.PLAN_VERSION_ID,
839                  decode(pjp.PLAN_VERSION_ID,
840                         -1, pjp.PLAN_VERSION_ID,
841                         -2, pjp.PLAN_VERSION_ID,
842                         -3, pjp.PLAN_VERSION_ID,
843                         -4, pjp.PLAN_VERSION_ID,
844                             wbs_hdr.PLAN_VERSION_ID)) PLAN_VERSION_ID,
845           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
846                  pjp.PLAN_TYPE_ID,
847                  decode(pjp.PLAN_VERSION_ID,
848                         -1, pjp.PLAN_TYPE_ID,
849                         -2, pjp.PLAN_TYPE_ID,
850                         -3, pjp.PLAN_TYPE_ID,
851                         -4, pjp.PLAN_TYPE_ID,
852                             wbs_hdr.PLAN_TYPE_ID))    PLAN_TYPE_ID,
853           pjp.PLAN_TYPE_CODE,
854           sum(pjp.RAW_COST)                           RAW_COST,
855           sum(pjp.BRDN_COST)                          BRDN_COST,
856           sum(pjp.REVENUE)                            REVENUE,
857           sum(pjp.BILL_RAW_COST)                      BILL_RAW_COST,
858           sum(pjp.BILL_BRDN_COST)                     BILL_BRDN_COST,
859           sum(pjp.BILL_LABOR_RAW_COST)                BILL_LABOR_RAW_COST,
860           sum(pjp.BILL_LABOR_BRDN_COST)               BILL_LABOR_BRDN_COST,
861           sum(pjp.BILL_LABOR_HRS)                     BILL_LABOR_HRS,
862           sum(pjp.EQUIPMENT_RAW_COST)                 EQUIPMENT_RAW_COST,
863           sum(pjp.EQUIPMENT_BRDN_COST)                EQUIPMENT_BRDN_COST,
864           sum(pjp.CAPITALIZABLE_RAW_COST)             CAPITALIZABLE_RAW_COST,
865           sum(pjp.CAPITALIZABLE_BRDN_COST)            CAPITALIZABLE_BRDN_COST,
866           sum(pjp.LABOR_RAW_COST)                     LABOR_RAW_COST,
867           sum(pjp.LABOR_BRDN_COST)                    LABOR_BRDN_COST,
868           sum(pjp.LABOR_HRS)                          LABOR_HRS,
869           sum(pjp.LABOR_REVENUE)                      LABOR_REVENUE,
870           sum(pjp.EQUIPMENT_HOURS)                    EQUIPMENT_HOURS,
871           sum(pjp.BILLABLE_EQUIPMENT_HOURS)           BILLABLE_EQUIPMENT_HOURS,
872           sum(pjp.SUP_INV_COMMITTED_COST)             SUP_INV_COMMITTED_COST,
873           sum(pjp.PO_COMMITTED_COST)                  PO_COMMITTED_COST,
874           sum(pjp.PR_COMMITTED_COST)                  PR_COMMITTED_COST,
875           sum(pjp.OTH_COMMITTED_COST)                 OTH_COMMITTED_COST,
876           sum(pjp.ACT_LABOR_HRS)                      ACT_LABOR_HRS,
877           sum(pjp.ACT_EQUIP_HRS)                      ACT_EQUIP_HRS,
878           sum(pjp.ACT_LABOR_BRDN_COST)                ACT_LABOR_BRDN_COST,
879           sum(pjp.ACT_EQUIP_BRDN_COST)                ACT_EQUIP_BRDN_COST,
880           sum(pjp.ACT_BRDN_COST)                      ACT_BRDN_COST,
881           sum(pjp.ACT_RAW_COST)                       ACT_RAW_COST,
882           sum(pjp.ACT_REVENUE)                        ACT_REVENUE,
883           sum(pjp.ACT_LABOR_RAW_COST)                 ACT_LABOR_RAW_COST,
884           sum(pjp.ACT_EQUIP_RAW_COST)                 ACT_EQUIP_RAW_COST,
885           sum(pjp.ETC_LABOR_HRS)                      ETC_LABOR_HRS,
886           sum(pjp.ETC_EQUIP_HRS)                      ETC_EQUIP_HRS,
887           sum(pjp.ETC_LABOR_BRDN_COST)                ETC_LABOR_BRDN_COST,
888           sum(pjp.ETC_EQUIP_BRDN_COST)                ETC_EQUIP_BRDN_COST,
889           sum(pjp.ETC_BRDN_COST)                      ETC_BRDN_COST,
890           sum(pjp.ETC_RAW_COST)                       ETC_RAW_COST,
891           sum(pjp.ETC_LABOR_RAW_COST)                 ETC_LABOR_RAW_COST,
892           sum(pjp.ETC_EQUIP_RAW_COST)                 ETC_EQUIP_RAW_COST,
893           sum(pjp.CUSTOM1)                            CUSTOM1,
894           sum(pjp.CUSTOM2)                            CUSTOM2,
895           sum(pjp.CUSTOM3)                            CUSTOM3,
896           sum(pjp.CUSTOM4)                            CUSTOM4,
897           sum(pjp.CUSTOM5)                            CUSTOM5,
898           sum(pjp.CUSTOM6)                            CUSTOM6,
899           sum(pjp.CUSTOM7)                            CUSTOM7,
900           sum(pjp.CUSTOM8)                            CUSTOM8,
901           sum(pjp.CUSTOM9)                            CUSTOM9,
902           sum(pjp.CUSTOM10)                           CUSTOM10,
903           sum(pjp.CUSTOM11)                           CUSTOM11,
904           sum(pjp.CUSTOM12)                           CUSTOM12,
905           sum(pjp.CUSTOM13)                           CUSTOM13,
906           sum(pjp.CUSTOM14)                           CUSTOM14,
907           sum(pjp.CUSTOM15)                           CUSTOM15
908         from
909           (
910           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
911                  -- get incremental task level amounts from source and
912                  -- program rollup amounts from interim
913             to_char(null)                             LINE_TYPE,
914             wbs_hdr.WBS_VERSION_ID,
915             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
916             decode(wbs_hdr.WP_FLAG
917                      || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
918                      || '_' || nvl(fin_plan.INVERT_ID, 'PRJ'),
919                    'N_1_PRJ', 'N',
920                    'N_-1_PRG', 'N',
921                    decode(top_slice.INVERT_ID,
922                           'PRJ', 'Y',
923                           decode(wbs.SUB_LEVEL,
924                                  1, 'Y', 'N')))       PUSHUP_FLAG,
925             decode(pjp1.RBS_AGGR_LEVEL,
926                    'L', 'N',
927                         decode(wbs_hdr.WP_FLAG
928                                  || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
929                                  || '_' || fin_plan.INVERT_ID,
930                                'N_1_PRG', decode(top_slice.INVERT_ID,
931                                                  'PRJ', 'Y',
932                                                  decode(wbs.SUB_LEVEL,
933                                                         1, 'Y', 'N')),
934                                'N_-1_PRG', 'N',
935                                decode(wbs_hdr.WP_FLAG
936                                         || '_' || fin_plan.INVERT_ID
937                                         || '_' || fin_plan.CB
938                                         || '_' || fin_plan.CO
939                                         || '_'
940                                         || to_char(fin_plan.PLAN_VERSION_ID),
941                                       'N_PRJ_Y_Y_-4', 'N',
942                                                       'Y'))
943                   )                                   INSERT_FLAG,
944             pjp1.PROJECT_ID,
945             pjp1.PROJECT_ORG_ID,
946             pjp1.PROJECT_ORGANIZATION_ID,
947             decode(top_slice.INVERT_ID,
948                    'PRJ', prg.SUP_EMT_ID,
949                           decode(wbs.SUB_LEVEL,
950                                  1, prg.SUP_EMT_ID,
951                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
952             pjp1.TIME_ID,
953             pjp1.PERIOD_TYPE_ID,
954             pjp1.CALENDAR_TYPE,
955             pjp1.RBS_AGGR_LEVEL,
956             'Y'                                       WBS_ROLLUP_FLAG,
957             pjp1.PRG_ROLLUP_FLAG,
958             pjp1.CURR_RECORD_TYPE_ID,
959             pjp1.CURRENCY_CODE,
960             pjp1.RBS_ELEMENT_ID,
961             pjp1.RBS_VERSION_ID,
962             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
963                    'N_PRG', fin_plan.PLAN_VERSION_ID,
964                             pjp1.PLAN_VERSION_ID)     PLAN_VERSION_ID,
965             pjp1.PLAN_TYPE_ID,
966             pjp1.PLAN_TYPE_CODE,
967             pjp1.RAW_COST,
968             pjp1.BRDN_COST,
969             pjp1.REVENUE,
970             pjp1.BILL_RAW_COST,
971             pjp1.BILL_BRDN_COST,
972             pjp1.BILL_LABOR_RAW_COST,
973             pjp1.BILL_LABOR_BRDN_COST,
974             pjp1.BILL_LABOR_HRS,
975             pjp1.EQUIPMENT_RAW_COST,
976             pjp1.EQUIPMENT_BRDN_COST,
977             pjp1.CAPITALIZABLE_RAW_COST,
978             pjp1.CAPITALIZABLE_BRDN_COST,
979             pjp1.LABOR_RAW_COST,
980             pjp1.LABOR_BRDN_COST,
981             pjp1.LABOR_HRS,
982             pjp1.LABOR_REVENUE,
983             pjp1.EQUIPMENT_HOURS,
984             pjp1.BILLABLE_EQUIPMENT_HOURS,
985             pjp1.SUP_INV_COMMITTED_COST,
986             pjp1.PO_COMMITTED_COST,
987             pjp1.PR_COMMITTED_COST,
988             pjp1.OTH_COMMITTED_COST,
989             pjp1.ACT_LABOR_HRS,
990             pjp1.ACT_EQUIP_HRS,
991             pjp1.ACT_LABOR_BRDN_COST,
992             pjp1.ACT_EQUIP_BRDN_COST,
993             pjp1.ACT_BRDN_COST,
994             pjp1.ACT_RAW_COST,
995             pjp1.ACT_REVENUE,
996             pjp1.ACT_LABOR_RAW_COST,
997             pjp1.ACT_EQUIP_RAW_COST,
998             pjp1.ETC_LABOR_HRS,
999             pjp1.ETC_EQUIP_HRS,
1000             pjp1.ETC_LABOR_BRDN_COST,
1001             pjp1.ETC_EQUIP_BRDN_COST,
1002             pjp1.ETC_BRDN_COST,
1003             pjp1.ETC_RAW_COST,
1004             pjp1.ETC_LABOR_RAW_COST,
1005             pjp1.ETC_EQUIP_RAW_COST,
1006             pjp1.CUSTOM1,
1007             pjp1.CUSTOM2,
1008             pjp1.CUSTOM3,
1009             pjp1.CUSTOM4,
1010             pjp1.CUSTOM5,
1011             pjp1.CUSTOM6,
1012             pjp1.CUSTOM7,
1013             pjp1.CUSTOM8,
1014             pjp1.CUSTOM9,
1015             pjp1.CUSTOM10,
1016             pjp1.CUSTOM11,
1017             pjp1.CUSTOM12,
1018             pjp1.CUSTOM13,
1019             pjp1.CUSTOM14,
1020             pjp1.CUSTOM15
1021           from
1022             PJI_FP_AGGR_PJP1   pjp1,
1023             -- Commenting and adding code for testing 0802
1024             --PJI_PJP_WBS_HEADER wbs_hdr,
1025             PJI_PJP_WBS_HEADER_T wbs_hdr,
1026             --PA_XBS_DENORM      wbs,
1027             PJI_PA_XBS_DENORM_T      wbs,
1028             --PJI_XBS_DENORM     prg,
1029             PJI_XBS_DENORM_T     prg,
1030             -- End of Commenting and adding code for testing 0802
1031             (
1032               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
1033               from DUAL union all
1034               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1035               from DUAL union all
1036               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
1037               from DUAL union all
1038               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1039               from DUAL union all
1040               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
1041               from DUAL union all
1042               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1043               from DUAL union all
1044               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
1045               from DUAL union all
1046               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1047               from DUAL
1048             ) fin_plan,
1049             (
1050               select 1     WBS_SUP_LEVEL,
1051                      1     WBS_SUB_LEVEL,
1052                      'PRJ' INVERT_ID
1053               from   DUAL
1054               union all
1055               select 1     WBS_SUP_LEVEL,
1056                      1     WBS_SUB_LEVEL,
1057                      'WBS' INVERT_ID
1058               from   DUAL
1059             ) top_slice
1060           where
1061             prg.STRUCT_TYPE         =  'PRG'                       and
1062             prg.SUP_LEVEL           =  lv_level                     and
1063             prg.SUB_LEVEL           =  lv_level                     and
1064             wbs.STRUCT_TYPE         =  'WBS'                       and
1065             ((wbs.SUP_LEVEL = 1 and
1066               wbs.SUB_LEVEL = 1) or
1067              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
1068             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
1069             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
1070             pjp1.WORKER_ID          =  p_worker_id                 and
1071             pjp1.PRG_LEVEL          in (0, lv_level)                and
1072             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')                  and
1073             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
1074             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
1075             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
1076             pjp1.PLAN_VERSION_ID    =  wbs_hdr.PLAN_VERSION_ID     and
1077             pjp1.PLAN_TYPE_CODE     =  wbs_hdr.PLAN_TYPE_CODE      and
1078             decode(pjp1.PLAN_VERSION_ID,
1079                    -3, pjp1.PLAN_TYPE_ID,
1080                    -4, pjp1.PLAN_TYPE_ID,
1081                        -1)          =  decode(pjp1.PLAN_VERSION_ID,
1082                                               -3, wbs_hdr.PLAN_TYPE_ID,
1083                                               -4, wbs_hdr.PLAN_TYPE_ID,
1084                                                   -1)              and
1085             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
1086             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
1087             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
1088             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
1089             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
1090             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
1091           union all
1092           select /*+ ordered */
1093                  -- get incremental project level amounts from source
1094             to_char(null)                             LINE_TYPE,
1095             wbs_hdr.WBS_VERSION_ID,
1096             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
1097             'Y'                                       PUSHUP_FLAG,
1098             decode(pjp1.RBS_AGGR_LEVEL,
1099                    'L', 'N',
1100                         decode(fin_plan.PLAN_VERSION_ID,
1101                                null, 'N', 'Y'))       INSERT_FLAG,
1102             pjp1.PROJECT_ID,
1103             pjp1.PROJECT_ORG_ID,
1104             pjp1.PROJECT_ORGANIZATION_ID,
1105             pjp1.PROJECT_ELEMENT_ID,
1106             pjp1.TIME_ID,
1107             pjp1.PERIOD_TYPE_ID,
1108             pjp1.CALENDAR_TYPE,
1109             pjp1.RBS_AGGR_LEVEL,
1110             'Y'                                       WBS_ROLLUP_FLAG,
1111             pjp1.PRG_ROLLUP_FLAG,
1112             pjp1.CURR_RECORD_TYPE_ID,
1113             pjp1.CURRENCY_CODE,
1114             pjp1.RBS_ELEMENT_ID,
1115             pjp1.RBS_VERSION_ID,
1116             decode(wbs_hdr.WP_FLAG,
1117                    'N', decode(pjp1.PLAN_VERSION_ID,
1118                                -1, pjp1.PLAN_VERSION_ID,
1119                                -2, pjp1.PLAN_VERSION_ID,
1120                                -3, pjp1.PLAN_VERSION_ID, -- won't exist
1121                                -4, pjp1.PLAN_VERSION_ID, -- won't exist
1122                                    fin_plan.PLAN_VERSION_ID),
1123                         pjp1.PLAN_VERSION_ID)         PLAN_VERSION_ID,
1124             pjp1.PLAN_TYPE_ID,
1125             pjp1.PLAN_TYPE_CODE,
1126             pjp1.RAW_COST,
1127             pjp1.BRDN_COST,
1128             pjp1.REVENUE,
1129             pjp1.BILL_RAW_COST,
1130             pjp1.BILL_BRDN_COST,
1131             pjp1.BILL_LABOR_RAW_COST,
1132             pjp1.BILL_LABOR_BRDN_COST,
1133             pjp1.BILL_LABOR_HRS,
1134             pjp1.EQUIPMENT_RAW_COST,
1135             pjp1.EQUIPMENT_BRDN_COST,
1136             pjp1.CAPITALIZABLE_RAW_COST,
1137             pjp1.CAPITALIZABLE_BRDN_COST,
1138             pjp1.LABOR_RAW_COST,
1139             pjp1.LABOR_BRDN_COST,
1140             pjp1.LABOR_HRS,
1141             pjp1.LABOR_REVENUE,
1142             pjp1.EQUIPMENT_HOURS,
1143             pjp1.BILLABLE_EQUIPMENT_HOURS,
1144             pjp1.SUP_INV_COMMITTED_COST,
1145             pjp1.PO_COMMITTED_COST,
1146             pjp1.PR_COMMITTED_COST,
1147             pjp1.OTH_COMMITTED_COST,
1148             pjp1.ACT_LABOR_HRS,
1149             pjp1.ACT_EQUIP_HRS,
1150             pjp1.ACT_LABOR_BRDN_COST,
1151             pjp1.ACT_EQUIP_BRDN_COST,
1152             pjp1.ACT_BRDN_COST,
1153             pjp1.ACT_RAW_COST,
1154             pjp1.ACT_REVENUE,
1155             pjp1.ACT_LABOR_RAW_COST,
1156             pjp1.ACT_EQUIP_RAW_COST,
1157             pjp1.ETC_LABOR_HRS,
1158             pjp1.ETC_EQUIP_HRS,
1159             pjp1.ETC_LABOR_BRDN_COST,
1160             pjp1.ETC_EQUIP_BRDN_COST,
1161             pjp1.ETC_BRDN_COST,
1162             pjp1.ETC_RAW_COST,
1163             pjp1.ETC_LABOR_RAW_COST,
1164             pjp1.ETC_EQUIP_RAW_COST,
1165             pjp1.CUSTOM1,
1166             pjp1.CUSTOM2,
1167             pjp1.CUSTOM3,
1168             pjp1.CUSTOM4,
1169             pjp1.CUSTOM5,
1170             pjp1.CUSTOM6,
1171             pjp1.CUSTOM7,
1172             pjp1.CUSTOM8,
1173             pjp1.CUSTOM9,
1174             pjp1.CUSTOM10,
1175             pjp1.CUSTOM11,
1176             pjp1.CUSTOM12,
1177             pjp1.CUSTOM13,
1178             pjp1.CUSTOM14,
1179             pjp1.CUSTOM15
1180           from
1181             PJI_FP_AGGR_PJP1   pjp1,
1182             -- Commenting and adding code for testing 0802
1183             --PJI_PJP_WBS_HEADER wbs_hdr,
1184             PJI_PJP_WBS_HEADER_T wbs_hdr,
1185             PJI_XBS_DENORM_T     prg,
1186             --PJI_XBS_DENORM     prg,
1187             -- End of Commenting and adding code for testing 0802
1188             (
1189               select 'Y' CB_FLAG,
1190                      'N' CO_FLAG,
1191                      -3  PLAN_VERSION_ID
1192               from DUAL union all
1193               select 'N' CB_FLAG,
1194                      'Y' CO_FLAG,
1195                      -4  PLAN_VERSION_ID
1196               from DUAL union all
1197               select 'Y' CB_FLAG,
1198                      'Y' CO_FLAG,
1199                      -3  PLAN_VERSION_ID
1200               from DUAL union all
1201               select 'Y' CB_FLAG,
1202                      'Y' CO_FLAG,
1203                      -4  PLAN_VERSION_ID
1204               from DUAL
1205             ) fin_plan
1206           where
1207             prg.STRUCT_TYPE         = 'PRG'                    and
1208             prg.SUP_LEVEL           = lv_level                  and
1209             prg.SUB_LEVEL           = lv_level                  and
1210             pjp1.WORKER_ID          = p_worker_id              and
1211             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID       and
1212             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID           and
1213             pjp1.PRG_LEVEL          = 0                        and
1214             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')              and
1215             pjp1.WBS_ROLLUP_FLAG    = 'N'                      and
1216             pjp1.PRG_ROLLUP_FLAG    = 'N'                      and
1217             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID          and
1218             wbs_hdr.PLAN_VERSION_ID = pjp1.PLAN_VERSION_ID     and
1219             wbs_hdr.PLAN_TYPE_CODE  = pjp1.PLAN_TYPE_CODE      and
1220             decode(wbs_hdr.WP_FLAG,
1221                    'N', decode(pjp1.PLAN_VERSION_ID,
1222                                -1, 'Y',
1223                                -2, 'Y',
1224                                -3, 'Y', -- won't exist
1225                                -4, 'Y', -- won't exist
1226                                    decode(wbs_hdr.CB_FLAG || '_' ||
1227                                           wbs_hdr.CO_FLAG,
1228                                           'Y_Y', 'Y',
1229                                           'N_Y', 'Y',
1230                                           'Y_N', 'Y',
1231                                                  'N')),
1232                         'Y')        =  'Y'                     and
1233             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID               and
1234             wbs_hdr.CB_FLAG         = fin_plan.CB_FLAG     (+) and
1235             wbs_hdr.CO_FLAG         = fin_plan.CO_FLAG     (+)
1236           union all
1237           select /*+ ordered
1238                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
1239                  -- get delta task level amounts from Reporting Lines
1240             to_char(null)                             LINE_TYPE,
1241             wbs_hdr.WBS_VERSION_ID,
1242             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
1243             decode(log.EVENT_TYPE,
1244                    'WBS_CHANGE', 'Y',
1245                    'WBS_PUBLISH', 'N')                PUSHUP_FLAG,
1246             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
1247                    'N_PRG', decode(top_slice.INVERT_ID,
1248                                    'PRJ', 'Y',
1249                                    decode(wbs.SUB_LEVEL,
1250                                           1, 'Y', 'N')),
1251                    decode(wbs_hdr.WP_FLAG
1252                             || '_' || fin_plan.INVERT_ID
1253                             || '_' || fin_plan.CB
1254                             || '_' || fin_plan.CO
1255                             || '_' || to_char(fin_plan.PLAN_VERSION_ID),
1256                           'N_PRJ_Y_Y_-4', 'N',
1257                                           'Y'))       INSERT_FLAG,
1258             fpr.PROJECT_ID,
1259             fpr.PROJECT_ORG_ID,
1260             fpr.PROJECT_ORGANIZATION_ID,
1261             decode(top_slice.INVERT_ID,
1262                    'PRJ', prg.SUP_EMT_ID,
1263                           decode(wbs.SUB_LEVEL,
1264                                  1, prg.SUP_EMT_ID,
1265                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
1266             fpr.TIME_ID,
1267             fpr.PERIOD_TYPE_ID,
1268             fpr.CALENDAR_TYPE,
1269             fpr.RBS_AGGR_LEVEL,
1270             'Y'                                       WBS_ROLLUP_FLAG,
1271             fpr.PRG_ROLLUP_FLAG,
1272             fpr.CURR_RECORD_TYPE_ID,
1273             fpr.CURRENCY_CODE,
1274             fpr.RBS_ELEMENT_ID,
1275             fpr.RBS_VERSION_ID,
1276             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
1277                    'N_PRG', fin_plan.PLAN_VERSION_ID,
1278                             fpr.PLAN_VERSION_ID)      PLAN_VERSION_ID,
1279             fpr.PLAN_TYPE_ID,
1280             fpr.PLAN_TYPE_CODE,
1281             wbs.SIGN * fpr.RAW_COST                   RAW_COST,
1282             wbs.SIGN * fpr.BRDN_COST                  BRDN_COST,
1283             wbs.SIGN * fpr.REVENUE                    REVENUE,
1284             wbs.SIGN * fpr.BILL_RAW_COST              BILL_RAW_COST,
1285             wbs.SIGN * fpr.BILL_BRDN_COST             BILL_BRDN_COST,
1286             wbs.SIGN * fpr.BILL_LABOR_RAW_COST        BILL_LABOR_RAW_COST,
1287             wbs.SIGN * fpr.BILL_LABOR_BRDN_COST       BILL_LABOR_BRDN_COST,
1288             wbs.SIGN * fpr.BILL_LABOR_HRS             BILL_LABOR_HRS,
1289             wbs.SIGN * fpr.EQUIPMENT_RAW_COST         EQUIPMENT_RAW_COST,
1290             wbs.SIGN * fpr.EQUIPMENT_BRDN_COST        EQUIPMENT_BRDN_COST,
1291             wbs.SIGN * fpr.CAPITALIZABLE_RAW_COST     CAPITALIZABLE_RAW_COST,
1292             wbs.SIGN * fpr.CAPITALIZABLE_BRDN_COST    CAPITALIZABLE_BRDN_COST,
1293             wbs.SIGN * fpr.LABOR_RAW_COST             LABOR_RAW_COST,
1294             wbs.SIGN * fpr.LABOR_BRDN_COST            LABOR_BRDN_COST,
1295             wbs.SIGN * fpr.LABOR_HRS                  LABOR_HRS,
1296             wbs.SIGN * fpr.LABOR_REVENUE              LABOR_REVENUE,
1297             wbs.SIGN * fpr.EQUIPMENT_HOURS            EQUIPMENT_HOURS,
1298             wbs.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS   BILLABLE_EQUIPMENT_HOURS,
1299             wbs.SIGN * fpr.SUP_INV_COMMITTED_COST     SUP_INV_COMMITTED_COST,
1300             wbs.SIGN * fpr.PO_COMMITTED_COST          PO_COMMITTED_COST,
1301             wbs.SIGN * fpr.PR_COMMITTED_COST          PR_COMMITTED_COST,
1302             wbs.SIGN * fpr.OTH_COMMITTED_COST         OTH_COMMITTED_COST,
1303             wbs.SIGN * fpr.ACT_LABOR_HRS              ACT_LABOR_HRS,
1304             wbs.SIGN * fpr.ACT_EQUIP_HRS              ACT_EQUIP_HRS,
1305             wbs.SIGN * fpr.ACT_LABOR_BRDN_COST        ACT_LABOR_BRDN_COST,
1306             wbs.SIGN * fpr.ACT_EQUIP_BRDN_COST        ACT_EQUIP_BRDN_COST,
1307             wbs.SIGN * fpr.ACT_BRDN_COST              ACT_BRDN_COST,
1308             wbs.SIGN * fpr.ACT_RAW_COST               ACT_RAW_COST,
1309             wbs.SIGN * fpr.ACT_REVENUE                ACT_REVENUE,
1310             wbs.SIGN * fpr.ACT_LABOR_RAW_COST         ACT_LABOR_RAW_COST,
1311             wbs.SIGN * fpr.ACT_EQUIP_RAW_COST         ACT_EQUIP_RAW_COST,
1312             wbs.SIGN * fpr.ETC_LABOR_HRS              ETC_LABOR_HRS,
1313             wbs.SIGN * fpr.ETC_EQUIP_HRS              ETC_EQUIP_HRS,
1314             wbs.SIGN * fpr.ETC_LABOR_BRDN_COST        ETC_LABOR_BRDN_COST,
1315             wbs.SIGN * fpr.ETC_EQUIP_BRDN_COST        ETC_EQUIP_BRDN_COST,
1316             wbs.SIGN * fpr.ETC_BRDN_COST              ETC_BRDN_COST,
1317             wbs.SIGN * fpr.ETC_RAW_COST               ETC_RAW_COST,
1318             wbs.SIGN * fpr.ETC_LABOR_RAW_COST         ETC_LABOR_RAW_COST,
1319             wbs.SIGN * fpr.ETC_EQUIP_RAW_COST         ETC_EQUIP_RAW_COST,
1320             wbs.SIGN * fpr.CUSTOM1                    CUSTOM1,
1321             wbs.SIGN * fpr.CUSTOM2                    CUSTOM2,
1322             wbs.SIGN * fpr.CUSTOM3                    CUSTOM3,
1323             wbs.SIGN * fpr.CUSTOM4                    CUSTOM4,
1324             wbs.SIGN * fpr.CUSTOM5                    CUSTOM5,
1325             wbs.SIGN * fpr.CUSTOM6                    CUSTOM6,
1326             wbs.SIGN * fpr.CUSTOM7                    CUSTOM7,
1327             wbs.SIGN * fpr.CUSTOM8                    CUSTOM8,
1328             wbs.SIGN * fpr.CUSTOM9                    CUSTOM9,
1329             wbs.SIGN * fpr.CUSTOM10                   CUSTOM10,
1330             wbs.SIGN * fpr.CUSTOM11                   CUSTOM11,
1331             wbs.SIGN * fpr.CUSTOM12                   CUSTOM12,
1332             wbs.SIGN * fpr.CUSTOM13                   CUSTOM13,
1333             wbs.SIGN * fpr.CUSTOM14                   CUSTOM14,
1334             wbs.SIGN * fpr.CUSTOM15                   CUSTOM15
1335           from
1336             PJI_PA_PROJ_EVENTS_LOG log,
1337             -- Commenting and adding code for testing 0802
1338             PJI_PJP_WBS_HEADER_T     wbs_hdr,
1339             --PJI_PJP_WBS_HEADER     wbs_hdr,
1340             PJI_XBS_DENORM_DELTA   wbs,
1341             --PJI_XBS_DENORM         prg,
1342             PJI_XBS_DENORM_t         prg,
1343             -- End of Commenting and adding code for testing 0802
1344             PJI_FP_XBS_ACCUM_F     fpr,
1345             (
1346               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
1347               from DUAL union all
1348               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1349               from DUAL union all
1350               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
1351               from DUAL union all
1352               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1353               from DUAL union all
1354               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
1355               from DUAL union all
1356               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1357               from DUAL union all
1358               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
1359               from DUAL union all
1360               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
1361               from DUAL
1362             ) fin_plan,
1363             (
1364               select 1     WBS_SUP_LEVEL,
1365                      1     WBS_SUB_LEVEL,
1366                      'PRJ' INVERT_ID
1367               from   DUAL
1368               union all
1369               select 1     WBS_SUP_LEVEL,
1370                      1     WBS_SUB_LEVEL,
1371                      'WBS' INVERT_ID
1372               from   DUAL
1373             ) top_slice
1374           where
1375             prg.STRUCT_TYPE         =  'PRG'                       and
1376             prg.SUP_LEVEL           =  lv_level                     and
1377             prg.SUB_LEVEL           =  lv_level                     and
1378             wbs.WORKER_ID           =  p_worker_id                 and
1379             wbs.STRUCT_TYPE         =  'WBS'                       and
1380             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
1381             log.WORKER_ID           =  p_worker_id                 and
1382             log.EVENT_ID            =  wbs.EVENT_ID                and
1383             log.EVENT_TYPE          in ('WBS_CHANGE',
1384                                         'WBS_PUBLISH')             and
1385             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
1386             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
1387             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
1388             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
1389             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
1390             fpr.RBS_AGGR_LEVEL      =  'T'                         and
1391             fpr.WBS_ROLLUP_FLAG     =  'N'                         and
1392             fpr.PRG_ROLLUP_FLAG     in ('Y', 'N')                  and
1393             fpr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
1394             fpr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
1395             fpr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
1396             fpr.PLAN_VERSION_ID     =  wbs_hdr.PLAN_VERSION_ID     and
1397             fpr.PLAN_TYPE_CODE      =  wbs_hdr.PLAN_TYPE_CODE      and
1398             decode(fpr.PLAN_VERSION_ID,
1399                    -3, fpr.PLAN_TYPE_ID,
1400                    -4, fpr.PLAN_TYPE_ID,
1401                        -1)          =  decode(fpr.PLAN_VERSION_ID,
1402                                               -3, wbs_hdr.PLAN_TYPE_ID,
1403                                               -4, wbs_hdr.PLAN_TYPE_ID,
1404                                                   -1)              and
1405             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
1406             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
1407             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
1408             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
1409             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
1410              (wbs.SUP_LEVEL = 1 and
1411               wbs.SUB_LEVEL = 1))
1412           ) pjp,
1413           (
1414           select
1415             prg.SUP_PROJECT_ID,
1416             map.PROJECT_ORG_ID               SUP_PROJECT_ORG_ID,
1417             map.PROJECT_ORGANIZATION_ID      SUP_PROJECT_ORGANIZATION_ID,
1418             prg.SUP_ID,
1419             prg.SUP_EMT_ID,
1420             prg.SUP_LEVEL,
1421             prg.SUB_ID,
1422             prg.SUB_EMT_ID,
1423             prg.SUB_ROLLUP_ID,
1424             invert.INVERT_VALUE              RELATIONSHIP_TYPE,
1425             decode(prg.RELATIONSHIP_TYPE,
1426                    'LW', 'Y',
1427                    'LF', 'N')                WP_FLAG,
1428             'Y'                              PUSHUP_FLAG
1429           from
1430             PJI_PJP_PROJ_BATCH_MAP map,
1431             -- Commenting and adding code for testing 0802
1432             PJI_XBS_DENORM_T prg,
1433             --PJI_XBS_DENORM prg,
1434             -- End of Commenting and adding code for testing 0802
1435             (
1436               select 'LF' INVERT_ID, 'LF' INVERT_VALUE from dual union all
1437               select 'LW' INVERT_ID, 'LW' INVERT_VALUE from dual union all
1438               select 'A'  INVERT_ID, 'LF' INVERT_VALUE from dual union all
1439               select 'A'  INVERT_ID, 'LW' INVERT_VALUE from dual
1440             ) invert,
1441             PJI_XBS_DENORM_DELTA prg_delta
1442           where
1443             prg.STRUCT_TYPE               = 'PRG'                           and
1444             prg.SUB_ROLLUP_ID             is not null                       and
1445             prg.SUB_LEVEL                 = lv_level                         and
1446             map.WORKER_ID                 = p_worker_id                     and
1447             map.PROJECT_ID                = prg.SUP_PROJECT_ID              and
1448             decode(prg.SUB_LEVEL,
1449                    prg.SUP_LEVEL, 'A',
1450                    prg.RELATIONSHIP_TYPE) = invert.INVERT_ID                and
1451             p_worker_id                   = prg_delta.WORKER_ID         (+) and
1452             prg.STRUCT_TYPE               = prg_delta.STRUCT_TYPE       (+) and
1453             prg.SUP_PROJECT_ID            = prg_delta.SUP_PROJECT_ID    (+) and
1454             prg.SUP_LEVEL                 = prg_delta.SUP_LEVEL         (+) and
1455             prg.SUP_ID                    = prg_delta.SUP_ID            (+) and
1456             prg.SUB_LEVEL                 = prg_delta.SUB_LEVEL         (+) and
1457             prg.SUB_ID                    = prg_delta.SUB_ID            (+) and
1458             prg.RELATIONSHIP_TYPE         = prg_delta.RELATIONSHIP_TYPE (+) and
1459             -1                            = prg_delta.SIGN              (+) and
1460             prg_delta.SUP_PROJECT_ID      is null
1461           )                          prg,
1462             --   Commenting and adding code for testing 0802
1463           --PJI_PJP_WBS_HEADER         wbs_hdr,
1464           PJI_PJP_WBS_HEADER_T         wbs_hdr,
1465             -- End of Commenting and adding code for testing 0802
1466           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
1467           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
1468           PA_PROJ_WORKPLAN_ATTR      sup_wpa
1469         where
1470           pjp.PROJECT_ID         = sub_ver.PROJECT_ID                (+) and
1471           pjp.WBS_VERSION_ID     = sub_ver.ELEMENT_VERSION_ID        (+) and
1472           'STRUCTURE_PUBLISHED'  = sub_ver.STATUS_CODE               (+) and
1473           pjp.WBS_VERSION_ID     = prg.SUB_ID                        (+) and
1474           pjp.RELATIONSHIP_TYPE  = prg.RELATIONSHIP_TYPE             (+) and
1475           pjp.PUSHUP_FLAG        = prg.PUSHUP_FLAG                   (+) and
1476           prg.SUP_PROJECT_ID     = wbs_hdr.PROJECT_ID                (+) and
1477           prg.SUP_ID             = wbs_hdr.WBS_VERSION_ID            (+) and
1478           prg.WP_FLAG            = wbs_hdr.WP_FLAG                   (+) and
1479           'Y'                    = wbs_hdr.WP_FLAG                   (+) and
1480           wbs_hdr.PROJECT_ID     = sup_ver.PROJECT_ID                (+) and
1481           wbs_hdr.WBS_VERSION_ID = sup_ver.ELEMENT_VERSION_ID        (+) and
1482           'STRUCTURE_PUBLISHED'  = sup_ver.STATUS_CODE               (+) and
1483           'Y'                    = sup_ver.LATEST_EFF_PUBLISHED_FLAG (+) and
1484           prg.SUP_EMT_ID         = sup_wpa.PROJ_ELEMENT_ID           (+)
1485         group by
1486           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1487                  pjp.INSERT_FLAG, 'Y'),
1488           pjp.RELATIONSHIP_TYPE,
1489           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1490                  null, sub_ver.STATUS_CODE),
1491           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1492                  null, sup_ver.STATUS_CODE),
1493           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1494                  null, sup_wpa.WP_ENABLE_VERSION_FLAG),
1495           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1496                  null, decode(pjp.PLAN_VERSION_ID,
1497                               -1, prg.SUP_ID,
1498                               -3, prg.SUP_ID,
1499                               -4, prg.SUP_ID,
1500                                   null)),
1501           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1502                  null, decode(pjp.PLAN_VERSION_ID,
1503                               -1, prg.SUP_EMT_ID,
1504                               -3, prg.SUP_EMT_ID,
1505                               -4, prg.SUP_EMT_ID,
1506                                   null)),
1507           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1508                  null, decode(pjp.PLAN_VERSION_ID,
1509                               -1, prg.WP_FLAG,
1510                               -3, prg.WP_FLAG,
1511                               -4, prg.WP_FLAG,
1512                                   null)),
1513           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1514                  lv_level, prg.SUP_LEVEL),
1515           pjp.LINE_TYPE,
1516           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1517                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID),
1518           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1519                  pjp.PROJECT_ORG_ID,
1520                  prg.SUP_PROJECT_ORG_ID),
1521           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1522                  pjp.PROJECT_ORGANIZATION_ID,
1523                  prg.SUP_PROJECT_ORGANIZATION_ID),
1524           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1525                  pjp.PROJECT_ELEMENT_ID,
1526                  prg.SUB_ROLLUP_ID),
1527           pjp.TIME_ID,
1528           pjp.PERIOD_TYPE_ID,
1529           pjp.CALENDAR_TYPE,
1530           pjp.RBS_AGGR_LEVEL,
1531           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1532                  pjp.WBS_ROLLUP_FLAG, 'N'),
1533           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1534                  pjp.PRG_ROLLUP_FLAG, 'Y'),
1535           pjp.CURR_RECORD_TYPE_ID,
1536           pjp.CURRENCY_CODE,
1537           pjp.RBS_ELEMENT_ID,
1538           pjp.RBS_VERSION_ID,
1539           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1540                  pjp.PLAN_VERSION_ID,
1541                  decode(pjp.PLAN_VERSION_ID,
1542                         -1, pjp.PLAN_VERSION_ID,
1543                         -2, pjp.PLAN_VERSION_ID,
1544                         -3, pjp.PLAN_VERSION_ID,
1545                         -4, pjp.PLAN_VERSION_ID,
1546                             wbs_hdr.PLAN_VERSION_ID)),
1547           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
1548                  pjp.PLAN_TYPE_ID,
1549                  decode(pjp.PLAN_VERSION_ID,
1550                         -1, pjp.PLAN_TYPE_ID,
1551                         -2, pjp.PLAN_TYPE_ID,
1552                         -3, pjp.PLAN_TYPE_ID,
1553                         -4, pjp.PLAN_TYPE_ID,
1554                             wbs_hdr.PLAN_TYPE_ID)),
1555           pjp.PLAN_TYPE_CODE
1556           )                          pjp1_i,
1557           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
1558           PA_PROJ_WORKPLAN_ATTR      sup_wpa
1559         where
1560           pjp1_i.INSERT_FLAG  = 'Y'                                and
1561           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
1562           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
1563           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
1564           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
1565           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
1566           (pjp1_i.SUP_ID is null or
1567            (pjp1_i.SUP_ID is not null and
1568             (sup_fin_ver.PROJECT_ID is not null or
1569              sup_wpa.PROJ_ELEMENT_ID is not null)));
1570 
1571         update PJI_SYSTEM_PRC_STATUS
1572         set    STEP_STATUS = 'C',
1573                END_DATE = sysdate
1574         where  PROCESS_NAME = l_process and
1575                STEP_SEQ = lv_level_seq;
1576 
1577         commit;
1578 
1579         select
1580           nvl(to_number(min(STEP_SEQ)), 0)
1581         into
1582           lv_level_seq
1583         from
1584           PJI_SYSTEM_PRC_STATUS
1585         where
1586           PROCESS_NAME = l_process and
1587           STEP_NAME like 'ROLLUP_FPR_WBS%' and
1588           STEP_STATUS is null;
1589 
1590         if (lv_level_seq = 0) then
1591           lv_level := 0;
1592         else
1593           lv_level := l_max_level - ((lv_level_seq - l_step_seq) * 1000) + 1;
1594         end if;
1595 
1596       end loop;
1597 
1598 
1599 end ROLLUP_FPR_WBS_PARTIAL;
1600 -- End Bug# 9904361
1601 
1602 -- Begin Bug# 9904361
1603 procedure ROLLUP_FPR_WBS_FULL
1604 (   p_worker_id       in number default null,
1605     l_process         in varchar2,
1606     l_extraction_type in varchar2,
1607     l_fpm_upgrade     in varchar2,
1608     l_max_level       in number,
1609     l_level           in number,
1610     l_step_seq        in number,
1611     l_level_seq       in number,
1612     l_count           in number,
1613     l_partial_mode    in varchar2
1614 ) is
1615 lv_level_seq number := l_level_seq;
1616 lv_level number := l_level;
1617 
1618  begin
1619 
1620       while (lv_level > 0) loop
1621 
1622         update PJI_SYSTEM_PRC_STATUS
1623         set    START_DATE = sysdate
1624         where  PROCESS_NAME = l_process and
1625                STEP_SEQ = lv_level_seq;
1626 
1627         -- rollup project hiearchy
1628 
1629         insert into PJI_FP_AGGR_PJP1
1630         (
1631           WORKER_ID,
1632           RECORD_TYPE,
1633           PRG_LEVEL,
1634           LINE_TYPE,
1635           PROJECT_ID,
1636           PROJECT_ORG_ID,
1637           PROJECT_ORGANIZATION_ID,
1638           PROJECT_ELEMENT_ID,
1639           TIME_ID,
1640           PERIOD_TYPE_ID,
1641           CALENDAR_TYPE,
1642           RBS_AGGR_LEVEL,
1643           WBS_ROLLUP_FLAG,
1644           PRG_ROLLUP_FLAG,
1645           CURR_RECORD_TYPE_ID,
1646           CURRENCY_CODE,
1647           RBS_ELEMENT_ID,
1648           RBS_VERSION_ID,
1649           PLAN_VERSION_ID,
1650           PLAN_TYPE_ID,
1651           PLAN_TYPE_CODE,
1652           RAW_COST,
1653           BRDN_COST,
1654           REVENUE,
1655           BILL_RAW_COST,
1656           BILL_BRDN_COST,
1657           BILL_LABOR_RAW_COST,
1658           BILL_LABOR_BRDN_COST,
1659           BILL_LABOR_HRS,
1660           EQUIPMENT_RAW_COST,
1661           EQUIPMENT_BRDN_COST,
1662           CAPITALIZABLE_RAW_COST,
1663           CAPITALIZABLE_BRDN_COST,
1664           LABOR_RAW_COST,
1665           LABOR_BRDN_COST,
1666           LABOR_HRS,
1667           LABOR_REVENUE,
1668           EQUIPMENT_HOURS,
1669           BILLABLE_EQUIPMENT_HOURS,
1670           SUP_INV_COMMITTED_COST,
1671           PO_COMMITTED_COST,
1672           PR_COMMITTED_COST,
1673           OTH_COMMITTED_COST,
1674           ACT_LABOR_HRS,
1675           ACT_EQUIP_HRS,
1676           ACT_LABOR_BRDN_COST,
1677           ACT_EQUIP_BRDN_COST,
1678           ACT_BRDN_COST,
1679           ACT_RAW_COST,
1680           ACT_REVENUE,
1681           ACT_LABOR_RAW_COST,
1682           ACT_EQUIP_RAW_COST,
1683           ETC_LABOR_HRS,
1684           ETC_EQUIP_HRS,
1685           ETC_LABOR_BRDN_COST,
1686           ETC_EQUIP_BRDN_COST,
1687           ETC_BRDN_COST,
1688           ETC_RAW_COST,
1689           ETC_LABOR_RAW_COST,
1690           ETC_EQUIP_RAW_COST,
1691           CUSTOM1,
1692           CUSTOM2,
1693           CUSTOM3,
1694           CUSTOM4,
1695           CUSTOM5,
1696           CUSTOM6,
1697           CUSTOM7,
1698           CUSTOM8,
1699           CUSTOM9,
1700           CUSTOM10,
1701           CUSTOM11,
1702           CUSTOM12,
1703           CUSTOM13,
1704           CUSTOM14,
1705           CUSTOM15
1706         )
1707         select
1708           pjp1_i.WORKER_ID,
1709           pjp1_i.RECORD_TYPE,
1710           pjp1_i.PRG_LEVEL,
1711           pjp1_i.LINE_TYPE,
1712           pjp1_i.PROJECT_ID,
1713           pjp1_i.PROJECT_ORG_ID,
1714           pjp1_i.PROJECT_ORGANIZATION_ID,
1715           pjp1_i.PROJECT_ELEMENT_ID,
1716           pjp1_i.TIME_ID,
1717           pjp1_i.PERIOD_TYPE_ID,
1718           pjp1_i.CALENDAR_TYPE,
1719           pjp1_i.RBS_AGGR_LEVEL,
1720           pjp1_i.WBS_ROLLUP_FLAG,
1721           pjp1_i.PRG_ROLLUP_FLAG,
1722           pjp1_i.CURR_RECORD_TYPE_ID,
1723           pjp1_i.CURRENCY_CODE,
1724           pjp1_i.RBS_ELEMENT_ID,
1725           pjp1_i.RBS_VERSION_ID,
1726           pjp1_i.PLAN_VERSION_ID,
1727           pjp1_i.PLAN_TYPE_ID,
1728           pjp1_i.PLAN_TYPE_CODE,
1729           decode(pjp1_i.RELATIONSHIP_TYPE
1730                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1731                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1732                    || '_' || pjp1_i.SUB_STATUS_CODE
1733                    || '_' || pjp1_i.SUP_STATUS_CODE,
1734                  'LW_N_Y__', to_number(null),
1735                  decode(pjp1_i.RELATIONSHIP_TYPE
1736                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1737                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1738                           || '_' || pjp1_i.SUP_VER_ENABLED
1739                           || '_' || l_fpm_upgrade
1740                           || '_' || l_partial_mode,
1741                         'LW_N_Y_Y_C_', to_number(null),
1742                  pjp1_i.RAW_COST))                    RAW_COST,
1743           decode(pjp1_i.RELATIONSHIP_TYPE
1744                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1745                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1746                    || '_' || pjp1_i.SUB_STATUS_CODE
1747                    || '_' || pjp1_i.SUP_STATUS_CODE,
1748                  'LW_N_Y__', to_number(null),
1749                  decode(pjp1_i.RELATIONSHIP_TYPE
1750                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1751                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1752                           || '_' || pjp1_i.SUP_VER_ENABLED
1753                           || '_' || l_fpm_upgrade
1754                           || '_' || l_partial_mode,
1755                         'LW_N_Y_Y_C_', to_number(null),
1756                  pjp1_i.BRDN_COST))                   BRDN_COST,
1757           decode(pjp1_i.RELATIONSHIP_TYPE
1758                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1759                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1760                    || '_' || pjp1_i.SUB_STATUS_CODE
1761                    || '_' || pjp1_i.SUP_STATUS_CODE,
1762                  'LW_N_Y__', to_number(null),
1763                  decode(pjp1_i.RELATIONSHIP_TYPE
1764                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1765                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1766                           || '_' || pjp1_i.SUP_VER_ENABLED
1767                           || '_' || l_fpm_upgrade
1768                           || '_' || l_partial_mode,
1769                         'LW_N_Y_Y_C_', to_number(null),
1770                  pjp1_i.REVENUE))                     REVENUE,
1771           decode(pjp1_i.RELATIONSHIP_TYPE
1772                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1773                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1774                    || '_' || pjp1_i.SUB_STATUS_CODE
1775                    || '_' || pjp1_i.SUP_STATUS_CODE,
1776                  'LW_N_Y__', to_number(null),
1777                  decode(pjp1_i.RELATIONSHIP_TYPE
1778                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1779                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1780                           || '_' || pjp1_i.SUP_VER_ENABLED
1781                           || '_' || l_fpm_upgrade
1782                           || '_' || l_partial_mode,
1783                         'LW_N_Y_Y_C_', to_number(null),
1784                  pjp1_i.BILL_RAW_COST))               BILL_RAW_COST,
1785           decode(pjp1_i.RELATIONSHIP_TYPE
1786                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1787                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1788                    || '_' || pjp1_i.SUB_STATUS_CODE
1789                    || '_' || pjp1_i.SUP_STATUS_CODE,
1790                  'LW_N_Y__', to_number(null),
1791                  decode(pjp1_i.RELATIONSHIP_TYPE
1792                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1793                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1794                           || '_' || pjp1_i.SUP_VER_ENABLED
1795                           || '_' || l_fpm_upgrade
1796                           || '_' || l_partial_mode,
1797                         'LW_N_Y_Y_C_', to_number(null),
1798                  pjp1_i.BILL_BRDN_COST))              BILL_BRDN_COST,
1799           decode(pjp1_i.RELATIONSHIP_TYPE
1800                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1801                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1802                    || '_' || pjp1_i.SUB_STATUS_CODE
1803                    || '_' || pjp1_i.SUP_STATUS_CODE,
1804                  'LW_N_Y__', to_number(null),
1805                  decode(pjp1_i.RELATIONSHIP_TYPE
1806                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1807                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1808                           || '_' || pjp1_i.SUP_VER_ENABLED
1809                           || '_' || l_fpm_upgrade
1810                           || '_' || l_partial_mode,
1811                         'LW_N_Y_Y_C_', to_number(null),
1812                  pjp1_i.BILL_LABOR_RAW_COST))         BILL_LABOR_RAW_COST,
1813           decode(pjp1_i.RELATIONSHIP_TYPE
1814                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1815                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1816                    || '_' || pjp1_i.SUB_STATUS_CODE
1817                    || '_' || pjp1_i.SUP_STATUS_CODE,
1818                  'LW_N_Y__', to_number(null),
1819                  decode(pjp1_i.RELATIONSHIP_TYPE
1820                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1821                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1822                           || '_' || pjp1_i.SUP_VER_ENABLED
1823                           || '_' || l_fpm_upgrade
1824                           || '_' || l_partial_mode,
1825                         'LW_N_Y_Y_C_', to_number(null),
1826                  pjp1_i.BILL_LABOR_BRDN_COST))        BILL_LABOR_BRDN_COST,
1827           decode(pjp1_i.RELATIONSHIP_TYPE
1828                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1829                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1830                    || '_' || pjp1_i.SUB_STATUS_CODE
1831                    || '_' || pjp1_i.SUP_STATUS_CODE,
1832                  'LW_N_Y__', to_number(null),
1833                  decode(pjp1_i.RELATIONSHIP_TYPE
1834                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1835                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1836                           || '_' || pjp1_i.SUP_VER_ENABLED
1837                           || '_' || l_fpm_upgrade
1838                           || '_' || l_partial_mode,
1839                         'LW_N_Y_Y_C_', to_number(null),
1840                  pjp1_i.BILL_LABOR_HRS))              BILL_LABOR_HRS,
1841           decode(pjp1_i.RELATIONSHIP_TYPE
1842                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1843                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1844                    || '_' || pjp1_i.SUB_STATUS_CODE
1845                    || '_' || pjp1_i.SUP_STATUS_CODE,
1846                  'LW_N_Y__', to_number(null),
1847                  decode(pjp1_i.RELATIONSHIP_TYPE
1848                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1849                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1850                           || '_' || pjp1_i.SUP_VER_ENABLED
1851                           || '_' || l_fpm_upgrade
1852                           || '_' || l_partial_mode,
1853                         'LW_N_Y_Y_C_', to_number(null),
1854                  pjp1_i.EQUIPMENT_RAW_COST))          EQUIPMENT_RAW_COST,
1855           decode(pjp1_i.RELATIONSHIP_TYPE
1856                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1857                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1858                    || '_' || pjp1_i.SUB_STATUS_CODE
1859                    || '_' || pjp1_i.SUP_STATUS_CODE,
1860                  'LW_N_Y__', to_number(null),
1861                  decode(pjp1_i.RELATIONSHIP_TYPE
1862                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1863                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1864                           || '_' || pjp1_i.SUP_VER_ENABLED
1865                           || '_' || l_fpm_upgrade
1866                           || '_' || l_partial_mode,
1867                         'LW_N_Y_Y_C_', to_number(null),
1868                  pjp1_i.EQUIPMENT_BRDN_COST))         EQUIPMENT_BRDN_COST,
1869           decode(pjp1_i.RELATIONSHIP_TYPE
1870                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1871                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1872                    || '_' || pjp1_i.SUB_STATUS_CODE
1873                    || '_' || pjp1_i.SUP_STATUS_CODE,
1874                  'LW_N_Y__', to_number(null),
1875                  decode(pjp1_i.RELATIONSHIP_TYPE
1876                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1877                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1878                           || '_' || pjp1_i.SUP_VER_ENABLED
1879                           || '_' || l_fpm_upgrade
1880                           || '_' || l_partial_mode,
1881                         'LW_N_Y_Y_C_', to_number(null),
1882                  pjp1_i.CAPITALIZABLE_RAW_COST))      CAPITALIZABLE_RAW_COST,
1883           decode(pjp1_i.RELATIONSHIP_TYPE
1884                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1885                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1886                    || '_' || pjp1_i.SUB_STATUS_CODE
1887                    || '_' || pjp1_i.SUP_STATUS_CODE,
1888                  'LW_N_Y__', to_number(null),
1889                  decode(pjp1_i.RELATIONSHIP_TYPE
1890                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1891                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1892                           || '_' || pjp1_i.SUP_VER_ENABLED
1893                           || '_' || l_fpm_upgrade
1894                           || '_' || l_partial_mode,
1895                         'LW_N_Y_Y_C_', to_number(null),
1896                  pjp1_i.CAPITALIZABLE_BRDN_COST))     CAPITALIZABLE_BRDN_COST,
1897           decode(pjp1_i.RELATIONSHIP_TYPE
1898                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1899                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1900                    || '_' || pjp1_i.SUB_STATUS_CODE
1901                    || '_' || pjp1_i.SUP_STATUS_CODE,
1902                  'LW_N_Y__', to_number(null),
1903                  decode(pjp1_i.RELATIONSHIP_TYPE
1904                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1905                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1906                           || '_' || pjp1_i.SUP_VER_ENABLED
1907                           || '_' || l_fpm_upgrade
1908                           || '_' || l_partial_mode,
1909                         'LW_N_Y_Y_C_', to_number(null),
1910                  pjp1_i.LABOR_RAW_COST))              LABOR_RAW_COST,
1911           decode(pjp1_i.RELATIONSHIP_TYPE
1912                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1913                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1914                    || '_' || pjp1_i.SUB_STATUS_CODE
1915                    || '_' || pjp1_i.SUP_STATUS_CODE,
1916                  'LW_N_Y__', to_number(null),
1917                  decode(pjp1_i.RELATIONSHIP_TYPE
1918                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1919                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1920                           || '_' || pjp1_i.SUP_VER_ENABLED
1921                           || '_' || l_fpm_upgrade
1922                           || '_' || l_partial_mode,
1923                         'LW_N_Y_Y_C_', to_number(null),
1924                  pjp1_i.LABOR_BRDN_COST))             LABOR_BRDN_COST,
1925           decode(pjp1_i.RELATIONSHIP_TYPE
1926                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1927                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1928                    || '_' || pjp1_i.SUB_STATUS_CODE
1929                    || '_' || pjp1_i.SUP_STATUS_CODE,
1930                  'LW_N_Y__', to_number(null),
1931                  decode(pjp1_i.RELATIONSHIP_TYPE
1932                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1933                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1934                           || '_' || pjp1_i.SUP_VER_ENABLED
1935                           || '_' || l_fpm_upgrade
1936                           || '_' || l_partial_mode,
1937                         'LW_N_Y_Y_C_', to_number(null),
1938                  pjp1_i.LABOR_HRS))                   LABOR_HRS,
1939           decode(pjp1_i.RELATIONSHIP_TYPE
1940                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1941                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1942                    || '_' || pjp1_i.SUB_STATUS_CODE
1943                    || '_' || pjp1_i.SUP_STATUS_CODE,
1944                  'LW_N_Y__', to_number(null),
1945                  decode(pjp1_i.RELATIONSHIP_TYPE
1946                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1947                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1948                           || '_' || pjp1_i.SUP_VER_ENABLED
1949                           || '_' || l_fpm_upgrade
1950                           || '_' || l_partial_mode,
1951                         'LW_N_Y_Y_C_', to_number(null),
1952                  pjp1_i.LABOR_REVENUE))               LABOR_REVENUE,
1953           decode(pjp1_i.RELATIONSHIP_TYPE
1954                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1955                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1956                    || '_' || pjp1_i.SUB_STATUS_CODE
1957                    || '_' || pjp1_i.SUP_STATUS_CODE,
1958                  'LW_N_Y__', to_number(null),
1959                  decode(pjp1_i.RELATIONSHIP_TYPE
1960                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1961                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1962                           || '_' || pjp1_i.SUP_VER_ENABLED
1963                           || '_' || l_fpm_upgrade
1964                           || '_' || l_partial_mode,
1965                         'LW_N_Y_Y_C_', to_number(null),
1966                  pjp1_i.EQUIPMENT_HOURS))             EQUIPMENT_HOURS,
1967           decode(pjp1_i.RELATIONSHIP_TYPE
1968                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1969                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1970                    || '_' || pjp1_i.SUB_STATUS_CODE
1971                    || '_' || pjp1_i.SUP_STATUS_CODE,
1972                  'LW_N_Y__', to_number(null),
1973                  decode(pjp1_i.RELATIONSHIP_TYPE
1974                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1975                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1976                           || '_' || pjp1_i.SUP_VER_ENABLED
1977                           || '_' || l_fpm_upgrade
1978                           || '_' || l_partial_mode,
1979                         'LW_N_Y_Y_C_', to_number(null),
1980                  pjp1_i.BILLABLE_EQUIPMENT_HOURS))    BILLABLE_EQUIPMENT_HOURS,
1981           decode(pjp1_i.RELATIONSHIP_TYPE
1982                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1983                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1984                    || '_' || pjp1_i.SUB_STATUS_CODE
1985                    || '_' || pjp1_i.SUP_STATUS_CODE,
1986                  'LW_N_Y__', to_number(null),
1987                  decode(pjp1_i.RELATIONSHIP_TYPE
1988                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
1989                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
1990                           || '_' || pjp1_i.SUP_VER_ENABLED
1991                           || '_' || l_fpm_upgrade
1992                           || '_' || l_partial_mode,
1993                         'LW_N_Y_Y_C_', to_number(null),
1994                  pjp1_i.SUP_INV_COMMITTED_COST))      SUP_INV_COMMITTED_COST,
1995           decode(pjp1_i.RELATIONSHIP_TYPE
1996                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
1997                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
1998                    || '_' || pjp1_i.SUB_STATUS_CODE
1999                    || '_' || pjp1_i.SUP_STATUS_CODE,
2000                  'LW_N_Y__', to_number(null),
2001                  decode(pjp1_i.RELATIONSHIP_TYPE
2002                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
2003                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
2004                           || '_' || pjp1_i.SUP_VER_ENABLED
2005                           || '_' || l_fpm_upgrade
2006                           || '_' || l_partial_mode,
2007                         'LW_N_Y_Y_C_', to_number(null),
2008                  pjp1_i.PO_COMMITTED_COST))           PO_COMMITTED_COST,
2009           decode(pjp1_i.RELATIONSHIP_TYPE
2010                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2011                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2012                    || '_' || pjp1_i.SUB_STATUS_CODE
2013                    || '_' || pjp1_i.SUP_STATUS_CODE,
2014                  'LW_N_Y__', to_number(null),
2015                  decode(pjp1_i.RELATIONSHIP_TYPE
2016                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
2017                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
2018                           || '_' || pjp1_i.SUP_VER_ENABLED
2019                           || '_' || l_fpm_upgrade
2020                           || '_' || l_partial_mode,
2021                         'LW_N_Y_Y_C_', to_number(null),
2022                  pjp1_i.PR_COMMITTED_COST))           PR_COMMITTED_COST,
2023           decode(pjp1_i.RELATIONSHIP_TYPE
2024                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2025                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2026                    || '_' || pjp1_i.SUB_STATUS_CODE
2027                    || '_' || pjp1_i.SUP_STATUS_CODE,
2028                  'LW_N_Y__', to_number(null),
2029                  decode(pjp1_i.RELATIONSHIP_TYPE
2030                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
2031                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
2032                           || '_' || pjp1_i.SUP_VER_ENABLED
2033                           || '_' || l_fpm_upgrade
2034                           || '_' || l_partial_mode,
2035                         'LW_N_Y_Y_C_', to_number(null),
2036                  pjp1_i.OTH_COMMITTED_COST))          OTH_COMMITTED_COST,
2037           decode(pjp1_i.RELATIONSHIP_TYPE
2038                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2039                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2040                    || '_' || pjp1_i.SUP_STATUS_CODE
2041                    || '_' || l_partial_mode,
2042                  'LW_N_Y__', to_number(null),
2043                           pjp1_i.ACT_LABOR_HRS)       ACT_LABOR_HRS,
2044           decode(pjp1_i.RELATIONSHIP_TYPE
2045                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2046                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2047                    || '_' || pjp1_i.SUP_STATUS_CODE
2048                    || '_' || l_partial_mode,
2049                  'LW_N_Y__', to_number(null),
2050                           pjp1_i.ACT_EQUIP_HRS)       ACT_EQUIP_HRS,
2051           decode(pjp1_i.RELATIONSHIP_TYPE
2052                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2053                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2054                    || '_' || pjp1_i.SUP_STATUS_CODE
2055                    || '_' || l_partial_mode,
2056                  'LW_N_Y__', to_number(null),
2057                           pjp1_i.ACT_LABOR_BRDN_COST) ACT_LABOR_BRDN_COST,
2058           decode(pjp1_i.RELATIONSHIP_TYPE
2059                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2060                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2061                    || '_' || pjp1_i.SUP_STATUS_CODE
2062                    || '_' || l_partial_mode,
2063                  'LW_N_Y__', to_number(null),
2064                           pjp1_i.ACT_EQUIP_BRDN_COST) ACT_EQUIP_BRDN_COST,
2065           decode(pjp1_i.RELATIONSHIP_TYPE
2066                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2067                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2068                    || '_' || pjp1_i.SUP_STATUS_CODE
2069                    || '_' || l_partial_mode,
2070                  'LW_N_Y__', to_number(null),
2071                           pjp1_i.ACT_BRDN_COST)       ACT_BRDN_COST,
2072           decode(pjp1_i.RELATIONSHIP_TYPE
2073                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2074                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2075                    || '_' || pjp1_i.SUP_STATUS_CODE
2076                    || '_' || l_partial_mode,
2077                  'LW_N_Y__', to_number(null),
2078                           pjp1_i.ACT_RAW_COST)        ACT_RAW_COST,
2079           decode(pjp1_i.RELATIONSHIP_TYPE
2080                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2081                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2082                    || '_' || pjp1_i.SUP_STATUS_CODE
2083                    || '_' || l_partial_mode,
2084                  'LW_N_Y__', to_number(null),
2085                           pjp1_i.ACT_REVENUE)         ACT_REVENUE,
2086           decode(pjp1_i.RELATIONSHIP_TYPE
2087                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2088                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2089                    || '_' || pjp1_i.SUP_STATUS_CODE
2090                    || '_' || l_partial_mode,
2091                  'LW_N_Y__', to_number(null),
2092                           pjp1_i.ACT_LABOR_RAW_COST)  ACT_LABOR_RAW_COST,
2093           decode(pjp1_i.RELATIONSHIP_TYPE
2094                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2095                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2096                    || '_' || pjp1_i.SUP_STATUS_CODE
2097                    || '_' || l_partial_mode,
2098                  'LW_N_Y__', to_number(null),
2099                           pjp1_i.ACT_EQUIP_RAW_COST)  ACT_EQUIP_RAW_COST,
2100           decode(pjp1_i.RELATIONSHIP_TYPE
2101                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2102                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2103                    || '_' || pjp1_i.SUP_STATUS_CODE
2104                    || '_' || l_partial_mode,
2105                  'LW_N_Y__', to_number(null),
2106                           pjp1_i.ETC_LABOR_HRS)       ETC_LABOR_HRS,
2107           decode(pjp1_i.RELATIONSHIP_TYPE
2108                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2109                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2110                    || '_' || pjp1_i.SUP_STATUS_CODE
2111                    || '_' || l_partial_mode,
2112                  'LW_N_Y__', to_number(null),
2113                           pjp1_i.ETC_EQUIP_HRS)       ETC_EQUIP_HRS,
2114           decode(pjp1_i.RELATIONSHIP_TYPE
2115                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2116                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2117                    || '_' || pjp1_i.SUP_STATUS_CODE
2118                    || '_' || l_partial_mode,
2119                  'LW_N_Y__', to_number(null),
2120                           pjp1_i.ETC_LABOR_BRDN_COST) ETC_LABOR_BRDN_COST,
2121           decode(pjp1_i.RELATIONSHIP_TYPE
2122                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2123                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2124                    || '_' || pjp1_i.SUP_STATUS_CODE
2125                    || '_' || l_partial_mode,
2126                  'LW_N_Y__', to_number(null),
2127                           pjp1_i.ETC_EQUIP_BRDN_COST) ETC_EQUIP_BRDN_COST,
2128           decode(pjp1_i.RELATIONSHIP_TYPE
2129                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2130                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2131                    || '_' || pjp1_i.SUP_STATUS_CODE
2132                    || '_' || l_partial_mode,
2133                  'LW_N_Y__', to_number(null),
2134                           pjp1_i.ETC_BRDN_COST)       ETC_BRDN_COST,
2135           decode(pjp1_i.RELATIONSHIP_TYPE
2136                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2137                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2138                    || '_' || pjp1_i.SUP_STATUS_CODE
2139                    || '_' || l_partial_mode,
2140                  'LW_N_Y__', to_number(null),
2141                           pjp1_i.ETC_RAW_COST)        ETC_RAW_COST,
2142           decode(pjp1_i.RELATIONSHIP_TYPE
2143                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2144                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2145                    || '_' || pjp1_i.SUP_STATUS_CODE
2146                    || '_' || l_partial_mode,
2147                  'LW_N_Y__', to_number(null),
2148                           pjp1_i.ETC_LABOR_RAW_COST)  ETC_LABOR_RAW_COST,
2149           decode(pjp1_i.RELATIONSHIP_TYPE
2150                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
2151                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
2152                    || '_' || pjp1_i.SUP_STATUS_CODE
2153                    || '_' || l_partial_mode,
2154                  'LW_N_Y__', to_number(null),
2155                           pjp1_i.ETC_EQUIP_RAW_COST)  ETC_EQUIP_RAW_COST,
2156           pjp1_i.CUSTOM1,
2157           pjp1_i.CUSTOM2,
2158           pjp1_i.CUSTOM3,
2159           pjp1_i.CUSTOM4,
2160           pjp1_i.CUSTOM5,
2161           pjp1_i.CUSTOM6,
2162           pjp1_i.CUSTOM7,
2163           pjp1_i.CUSTOM8,
2164           pjp1_i.CUSTOM9,
2165           pjp1_i.CUSTOM10,
2166           pjp1_i.CUSTOM11,
2167           pjp1_i.CUSTOM12,
2168           pjp1_i.CUSTOM13,
2169           pjp1_i.CUSTOM14,
2170           pjp1_i.CUSTOM15
2171         from
2172           (
2173         select
2174           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2175                  pjp.INSERT_FLAG, 'Y')                INSERT_FLAG,
2176           pjp.RELATIONSHIP_TYPE,
2177           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2178                  null, sub_ver.STATUS_CODE)           SUB_STATUS_CODE,
2179           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2180                  null, sup_ver.STATUS_CODE)           SUP_STATUS_CODE,
2181           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2182                  null, sup_wpa.WP_ENABLE_VERSION_FLAG)SUP_VER_ENABLED,
2183           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2184                  null, decode(pjp.PLAN_VERSION_ID,
2185                               -1, prg.SUP_ID,
2186                               -3, prg.SUP_ID,
2187                               -4, prg.SUP_ID,
2188                                   null))              SUP_ID,
2189           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2190                  null, decode(pjp.PLAN_VERSION_ID,
2191                               -1, prg.SUP_EMT_ID,
2192                               -3, prg.SUP_EMT_ID,
2193                               -4, prg.SUP_EMT_ID,
2194                                   null))              SUP_EMT_ID,
2195           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2196                  null, decode(pjp.PLAN_VERSION_ID,
2197                               -1, prg.WP_FLAG,
2198                               -3, prg.WP_FLAG,
2199                               -4, prg.WP_FLAG,
2200                                   null))              SUP_WP_FLAG,
2201           p_worker_id                                 WORKER_ID,
2202           'W'                                         RECORD_TYPE,
2203           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2204                  lv_level, prg.SUP_LEVEL)              PRG_LEVEL,
2205           pjp.LINE_TYPE,
2206           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2207                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID)  PROJECT_ID,
2208           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2209                  pjp.PROJECT_ORG_ID,
2210                  prg.SUP_PROJECT_ORG_ID)              PROJECT_ORG_ID,
2211           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2212                  pjp.PROJECT_ORGANIZATION_ID,
2213                  prg.SUP_PROJECT_ORGANIZATION_ID)     PROJECT_ORGANIZATION_ID,
2214           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2215                  pjp.PROJECT_ELEMENT_ID,
2216                  prg.SUB_ROLLUP_ID)                   PROJECT_ELEMENT_ID,
2217           pjp.TIME_ID,
2218           pjp.PERIOD_TYPE_ID,
2219           pjp.CALENDAR_TYPE,
2220           pjp.RBS_AGGR_LEVEL,
2221           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2222                  pjp.WBS_ROLLUP_FLAG, 'N')            WBS_ROLLUP_FLAG,
2223           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2224                  pjp.PRG_ROLLUP_FLAG, 'Y')            PRG_ROLLUP_FLAG,
2225           pjp.CURR_RECORD_TYPE_ID,
2226           pjp.CURRENCY_CODE,
2227           pjp.RBS_ELEMENT_ID,
2228           pjp.RBS_VERSION_ID,
2229           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2230                  pjp.PLAN_VERSION_ID,
2231                  decode(pjp.PLAN_VERSION_ID,
2232                         -1, pjp.PLAN_VERSION_ID,
2233                         -2, pjp.PLAN_VERSION_ID,
2234                         -3, pjp.PLAN_VERSION_ID,
2235                         -4, pjp.PLAN_VERSION_ID,
2236                             wbs_hdr.PLAN_VERSION_ID)) PLAN_VERSION_ID,
2237           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2238                  pjp.PLAN_TYPE_ID,
2239                  decode(pjp.PLAN_VERSION_ID,
2240                         -1, pjp.PLAN_TYPE_ID,
2241                         -2, pjp.PLAN_TYPE_ID,
2242                         -3, pjp.PLAN_TYPE_ID,
2243                         -4, pjp.PLAN_TYPE_ID,
2244                             wbs_hdr.PLAN_TYPE_ID))    PLAN_TYPE_ID,
2245           pjp.PLAN_TYPE_CODE,
2246           sum(pjp.RAW_COST)                           RAW_COST,
2247           sum(pjp.BRDN_COST)                          BRDN_COST,
2248           sum(pjp.REVENUE)                            REVENUE,
2249           sum(pjp.BILL_RAW_COST)                      BILL_RAW_COST,
2250           sum(pjp.BILL_BRDN_COST)                     BILL_BRDN_COST,
2251           sum(pjp.BILL_LABOR_RAW_COST)                BILL_LABOR_RAW_COST,
2252           sum(pjp.BILL_LABOR_BRDN_COST)               BILL_LABOR_BRDN_COST,
2253           sum(pjp.BILL_LABOR_HRS)                     BILL_LABOR_HRS,
2254           sum(pjp.EQUIPMENT_RAW_COST)                 EQUIPMENT_RAW_COST,
2255           sum(pjp.EQUIPMENT_BRDN_COST)                EQUIPMENT_BRDN_COST,
2256           sum(pjp.CAPITALIZABLE_RAW_COST)             CAPITALIZABLE_RAW_COST,
2257           sum(pjp.CAPITALIZABLE_BRDN_COST)            CAPITALIZABLE_BRDN_COST,
2258           sum(pjp.LABOR_RAW_COST)                     LABOR_RAW_COST,
2259           sum(pjp.LABOR_BRDN_COST)                    LABOR_BRDN_COST,
2260           sum(pjp.LABOR_HRS)                          LABOR_HRS,
2261           sum(pjp.LABOR_REVENUE)                      LABOR_REVENUE,
2262           sum(pjp.EQUIPMENT_HOURS)                    EQUIPMENT_HOURS,
2263           sum(pjp.BILLABLE_EQUIPMENT_HOURS)           BILLABLE_EQUIPMENT_HOURS,
2264           sum(pjp.SUP_INV_COMMITTED_COST)             SUP_INV_COMMITTED_COST,
2265           sum(pjp.PO_COMMITTED_COST)                  PO_COMMITTED_COST,
2266           sum(pjp.PR_COMMITTED_COST)                  PR_COMMITTED_COST,
2267           sum(pjp.OTH_COMMITTED_COST)                 OTH_COMMITTED_COST,
2268           sum(pjp.ACT_LABOR_HRS)                      ACT_LABOR_HRS,
2269           sum(pjp.ACT_EQUIP_HRS)                      ACT_EQUIP_HRS,
2270           sum(pjp.ACT_LABOR_BRDN_COST)                ACT_LABOR_BRDN_COST,
2271           sum(pjp.ACT_EQUIP_BRDN_COST)                ACT_EQUIP_BRDN_COST,
2272           sum(pjp.ACT_BRDN_COST)                      ACT_BRDN_COST,
2273           sum(pjp.ACT_RAW_COST)                       ACT_RAW_COST,
2274           sum(pjp.ACT_REVENUE)                        ACT_REVENUE,
2275           sum(pjp.ACT_LABOR_RAW_COST)                 ACT_LABOR_RAW_COST,
2276           sum(pjp.ACT_EQUIP_RAW_COST)                 ACT_EQUIP_RAW_COST,
2277           sum(pjp.ETC_LABOR_HRS)                      ETC_LABOR_HRS,
2278           sum(pjp.ETC_EQUIP_HRS)                      ETC_EQUIP_HRS,
2279           sum(pjp.ETC_LABOR_BRDN_COST)                ETC_LABOR_BRDN_COST,
2280           sum(pjp.ETC_EQUIP_BRDN_COST)                ETC_EQUIP_BRDN_COST,
2281           sum(pjp.ETC_BRDN_COST)                      ETC_BRDN_COST,
2282           sum(pjp.ETC_RAW_COST)                       ETC_RAW_COST,
2283           sum(pjp.ETC_LABOR_RAW_COST)                 ETC_LABOR_RAW_COST,
2284           sum(pjp.ETC_EQUIP_RAW_COST)                 ETC_EQUIP_RAW_COST,
2285           sum(pjp.CUSTOM1)                            CUSTOM1,
2286           sum(pjp.CUSTOM2)                            CUSTOM2,
2287           sum(pjp.CUSTOM3)                            CUSTOM3,
2288           sum(pjp.CUSTOM4)                            CUSTOM4,
2289           sum(pjp.CUSTOM5)                            CUSTOM5,
2290           sum(pjp.CUSTOM6)                            CUSTOM6,
2291           sum(pjp.CUSTOM7)                            CUSTOM7,
2292           sum(pjp.CUSTOM8)                            CUSTOM8,
2293           sum(pjp.CUSTOM9)                            CUSTOM9,
2294           sum(pjp.CUSTOM10)                           CUSTOM10,
2295           sum(pjp.CUSTOM11)                           CUSTOM11,
2296           sum(pjp.CUSTOM12)                           CUSTOM12,
2297           sum(pjp.CUSTOM13)                           CUSTOM13,
2298           sum(pjp.CUSTOM14)                           CUSTOM14,
2299           sum(pjp.CUSTOM15)                           CUSTOM15
2300         from
2301           (
2302           select /*+ leading(prg, wbs, top_slice, pjp1, wbs_hdr ) use_nl(prg, wbs, top_slice, pjp1, wbs_hdr) index(pjp1 pji_fp_aggr_pjp1_n4) index(wbs pa_xbs_denorm_n5)
2303                          index(wbs_hdr  PJI_PJP_WBS_HEADER_N2) */  -- KPN change bug#12731239
2304                  -- get incremental task level amounts from source and
2305                  -- program rollup amounts from interim
2306             to_char(null)                             LINE_TYPE,
2307             wbs_hdr.WBS_VERSION_ID,
2308             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
2309             decode(wbs_hdr.WP_FLAG
2310                      || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
2311                      || '_' || nvl(fin_plan.INVERT_ID, 'PRJ'),
2312                    'N_1_PRJ', 'N',
2313                    'N_-1_PRG', 'N',
2314                    decode(top_slice.INVERT_ID,
2315                           'PRJ', 'Y',
2316                           decode(wbs.SUB_LEVEL,
2317                                  1, 'Y', 'N')))       PUSHUP_FLAG,
2318             decode(pjp1.RBS_AGGR_LEVEL,
2319                    'L', 'N',
2320                         decode(wbs_hdr.WP_FLAG
2321                                  || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
2322                                  || '_' || fin_plan.INVERT_ID,
2323                                'N_1_PRG', decode(top_slice.INVERT_ID,
2324                                                  'PRJ', 'Y',
2325                                                  decode(wbs.SUB_LEVEL,
2326                                                         1, 'Y', 'N')),
2327                                'N_-1_PRG', 'N',
2328                                decode(wbs_hdr.WP_FLAG
2329                                         || '_' || fin_plan.INVERT_ID
2330                                         || '_' || fin_plan.CB
2331                                         || '_' || fin_plan.CO
2332                                         || '_'
2333                                         || to_char(fin_plan.PLAN_VERSION_ID),
2334                                       'N_PRJ_Y_Y_-4', 'N',
2335                                                       'Y'))
2336                   )                                   INSERT_FLAG,
2337             pjp1.PROJECT_ID,
2338             pjp1.PROJECT_ORG_ID,
2339             pjp1.PROJECT_ORGANIZATION_ID,
2340             decode(top_slice.INVERT_ID,
2341                    'PRJ', prg.SUP_EMT_ID,
2342                           decode(wbs.SUB_LEVEL,
2343                                  1, prg.SUP_EMT_ID,
2344                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
2345             pjp1.TIME_ID,
2346             pjp1.PERIOD_TYPE_ID,
2347             pjp1.CALENDAR_TYPE,
2348             pjp1.RBS_AGGR_LEVEL,
2349             'Y'                                       WBS_ROLLUP_FLAG,
2350             pjp1.PRG_ROLLUP_FLAG,
2351             pjp1.CURR_RECORD_TYPE_ID,
2352             pjp1.CURRENCY_CODE,
2353             pjp1.RBS_ELEMENT_ID,
2354             pjp1.RBS_VERSION_ID,
2355             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
2356                    'N_PRG', fin_plan.PLAN_VERSION_ID,
2357                             pjp1.PLAN_VERSION_ID)     PLAN_VERSION_ID,
2358             pjp1.PLAN_TYPE_ID,
2359             pjp1.PLAN_TYPE_CODE,
2360             pjp1.RAW_COST,
2361             pjp1.BRDN_COST,
2362             pjp1.REVENUE,
2363             pjp1.BILL_RAW_COST,
2364             pjp1.BILL_BRDN_COST,
2365             pjp1.BILL_LABOR_RAW_COST,
2366             pjp1.BILL_LABOR_BRDN_COST,
2367             pjp1.BILL_LABOR_HRS,
2368             pjp1.EQUIPMENT_RAW_COST,
2369             pjp1.EQUIPMENT_BRDN_COST,
2370             pjp1.CAPITALIZABLE_RAW_COST,
2371             pjp1.CAPITALIZABLE_BRDN_COST,
2372             pjp1.LABOR_RAW_COST,
2373             pjp1.LABOR_BRDN_COST,
2374             pjp1.LABOR_HRS,
2375             pjp1.LABOR_REVENUE,
2376             pjp1.EQUIPMENT_HOURS,
2377             pjp1.BILLABLE_EQUIPMENT_HOURS,
2378             pjp1.SUP_INV_COMMITTED_COST,
2379             pjp1.PO_COMMITTED_COST,
2380             pjp1.PR_COMMITTED_COST,
2381             pjp1.OTH_COMMITTED_COST,
2382             pjp1.ACT_LABOR_HRS,
2383             pjp1.ACT_EQUIP_HRS,
2384             pjp1.ACT_LABOR_BRDN_COST,
2385             pjp1.ACT_EQUIP_BRDN_COST,
2386             pjp1.ACT_BRDN_COST,
2387             pjp1.ACT_RAW_COST,
2388             pjp1.ACT_REVENUE,
2389             pjp1.ACT_LABOR_RAW_COST,
2390             pjp1.ACT_EQUIP_RAW_COST,
2391             pjp1.ETC_LABOR_HRS,
2392             pjp1.ETC_EQUIP_HRS,
2393             pjp1.ETC_LABOR_BRDN_COST,
2394             pjp1.ETC_EQUIP_BRDN_COST,
2395             pjp1.ETC_BRDN_COST,
2396             pjp1.ETC_RAW_COST,
2397             pjp1.ETC_LABOR_RAW_COST,
2398             pjp1.ETC_EQUIP_RAW_COST,
2399             pjp1.CUSTOM1,
2400             pjp1.CUSTOM2,
2401             pjp1.CUSTOM3,
2402             pjp1.CUSTOM4,
2403             pjp1.CUSTOM5,
2404             pjp1.CUSTOM6,
2405             pjp1.CUSTOM7,
2406             pjp1.CUSTOM8,
2407             pjp1.CUSTOM9,
2408             pjp1.CUSTOM10,
2409             pjp1.CUSTOM11,
2410             pjp1.CUSTOM12,
2411             pjp1.CUSTOM13,
2412             pjp1.CUSTOM14,
2413             pjp1.CUSTOM15
2414           from
2415             PJI_FP_AGGR_PJP1   pjp1,
2416             PJI_PJP_WBS_HEADER wbs_hdr,
2417             PA_XBS_DENORM      wbs,
2418             PJI_XBS_DENORM     prg,
2419             (
2420               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
2421               from DUAL union all
2422               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2423               from DUAL union all
2424               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
2425               from DUAL union all
2426               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2427               from DUAL union all
2428               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
2429               from DUAL union all
2430               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2431               from DUAL union all
2432               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
2433               from DUAL union all
2434               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2435               from DUAL
2436             ) fin_plan,
2437             (
2438               select 1     WBS_SUP_LEVEL,
2439                      1     WBS_SUB_LEVEL,
2440                      'PRJ' INVERT_ID
2441               from   DUAL
2442               union all
2443               select 1     WBS_SUP_LEVEL,
2444                      1     WBS_SUB_LEVEL,
2445                      'WBS' INVERT_ID
2446               from   DUAL
2447             ) top_slice
2448           where
2449             prg.STRUCT_TYPE         =  'PRG'                       and
2450             prg.SUP_LEVEL           =  lv_level                     and
2451             prg.SUB_LEVEL           =  lv_level                     and
2452             wbs.STRUCT_TYPE         =  'WBS'                       and
2453             ((wbs.SUP_LEVEL = 1 and
2454               wbs.SUB_LEVEL = 1) or
2455              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
2456             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
2457             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
2458             pjp1.WORKER_ID          =  p_worker_id                 and
2459             pjp1.PRG_LEVEL          in (0, lv_level)                and
2460             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')                  and
2461             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
2462             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
2463             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
2464             pjp1.PLAN_VERSION_ID    =  wbs_hdr.PLAN_VERSION_ID     and
2465             pjp1.PLAN_TYPE_CODE     =  wbs_hdr.PLAN_TYPE_CODE      and
2466             decode(pjp1.PLAN_VERSION_ID,
2467                    -3, pjp1.PLAN_TYPE_ID,
2468                    -4, pjp1.PLAN_TYPE_ID,
2469                        -1)          =  decode(pjp1.PLAN_VERSION_ID,
2470                                               -3, wbs_hdr.PLAN_TYPE_ID,
2471                                               -4, wbs_hdr.PLAN_TYPE_ID,
2472                                                   -1)              and
2473             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
2474             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
2475             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
2476             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
2477             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
2478             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
2479           union all
2480           select /*+ leading(prg, pjp1, wbs_hdr) use_nl(prg pjp1 wbs_hdr) index(pjp1 pji_fp_aggr_pjp1_n4)*/ -- KPN change bug#12731239
2481                  -- get incremental project level amounts from source
2482             to_char(null)                             LINE_TYPE,
2483             wbs_hdr.WBS_VERSION_ID,
2484             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
2485             'Y'                                       PUSHUP_FLAG,
2486             decode(pjp1.RBS_AGGR_LEVEL,
2487                    'L', 'N',
2488                         decode(fin_plan.PLAN_VERSION_ID,
2489                                null, 'N', 'Y'))       INSERT_FLAG,
2490             pjp1.PROJECT_ID,
2491             pjp1.PROJECT_ORG_ID,
2492             pjp1.PROJECT_ORGANIZATION_ID,
2493             pjp1.PROJECT_ELEMENT_ID,
2494             pjp1.TIME_ID,
2495             pjp1.PERIOD_TYPE_ID,
2496             pjp1.CALENDAR_TYPE,
2497             pjp1.RBS_AGGR_LEVEL,
2498             'Y'                                       WBS_ROLLUP_FLAG,
2499             pjp1.PRG_ROLLUP_FLAG,
2500             pjp1.CURR_RECORD_TYPE_ID,
2501             pjp1.CURRENCY_CODE,
2502             pjp1.RBS_ELEMENT_ID,
2503             pjp1.RBS_VERSION_ID,
2504             decode(wbs_hdr.WP_FLAG,
2505                    'N', decode(pjp1.PLAN_VERSION_ID,
2506                                -1, pjp1.PLAN_VERSION_ID,
2507                                -2, pjp1.PLAN_VERSION_ID,
2508                                -3, pjp1.PLAN_VERSION_ID, -- won't exist
2509                                -4, pjp1.PLAN_VERSION_ID, -- won't exist
2510                                    fin_plan.PLAN_VERSION_ID),
2511                         pjp1.PLAN_VERSION_ID)         PLAN_VERSION_ID,
2512             pjp1.PLAN_TYPE_ID,
2513             pjp1.PLAN_TYPE_CODE,
2514             pjp1.RAW_COST,
2515             pjp1.BRDN_COST,
2516             pjp1.REVENUE,
2517             pjp1.BILL_RAW_COST,
2518             pjp1.BILL_BRDN_COST,
2519             pjp1.BILL_LABOR_RAW_COST,
2520             pjp1.BILL_LABOR_BRDN_COST,
2521             pjp1.BILL_LABOR_HRS,
2522             pjp1.EQUIPMENT_RAW_COST,
2523             pjp1.EQUIPMENT_BRDN_COST,
2524             pjp1.CAPITALIZABLE_RAW_COST,
2525             pjp1.CAPITALIZABLE_BRDN_COST,
2526             pjp1.LABOR_RAW_COST,
2527             pjp1.LABOR_BRDN_COST,
2528             pjp1.LABOR_HRS,
2529             pjp1.LABOR_REVENUE,
2530             pjp1.EQUIPMENT_HOURS,
2531             pjp1.BILLABLE_EQUIPMENT_HOURS,
2532             pjp1.SUP_INV_COMMITTED_COST,
2533             pjp1.PO_COMMITTED_COST,
2534             pjp1.PR_COMMITTED_COST,
2535             pjp1.OTH_COMMITTED_COST,
2536             pjp1.ACT_LABOR_HRS,
2537             pjp1.ACT_EQUIP_HRS,
2538             pjp1.ACT_LABOR_BRDN_COST,
2539             pjp1.ACT_EQUIP_BRDN_COST,
2540             pjp1.ACT_BRDN_COST,
2541             pjp1.ACT_RAW_COST,
2542             pjp1.ACT_REVENUE,
2543             pjp1.ACT_LABOR_RAW_COST,
2544             pjp1.ACT_EQUIP_RAW_COST,
2545             pjp1.ETC_LABOR_HRS,
2546             pjp1.ETC_EQUIP_HRS,
2547             pjp1.ETC_LABOR_BRDN_COST,
2548             pjp1.ETC_EQUIP_BRDN_COST,
2549             pjp1.ETC_BRDN_COST,
2550             pjp1.ETC_RAW_COST,
2551             pjp1.ETC_LABOR_RAW_COST,
2552             pjp1.ETC_EQUIP_RAW_COST,
2553             pjp1.CUSTOM1,
2554             pjp1.CUSTOM2,
2555             pjp1.CUSTOM3,
2556             pjp1.CUSTOM4,
2557             pjp1.CUSTOM5,
2558             pjp1.CUSTOM6,
2559             pjp1.CUSTOM7,
2560             pjp1.CUSTOM8,
2561             pjp1.CUSTOM9,
2562             pjp1.CUSTOM10,
2563             pjp1.CUSTOM11,
2564             pjp1.CUSTOM12,
2565             pjp1.CUSTOM13,
2566             pjp1.CUSTOM14,
2567             pjp1.CUSTOM15
2568           from
2569             PJI_FP_AGGR_PJP1   pjp1,
2570             PJI_PJP_WBS_HEADER wbs_hdr,
2571             PJI_XBS_DENORM     prg,
2572             (
2573               select 'Y' CB_FLAG,
2574                      'N' CO_FLAG,
2575                      -3  PLAN_VERSION_ID
2576               from DUAL union all
2577               select 'N' CB_FLAG,
2578                      'Y' CO_FLAG,
2579                      -4  PLAN_VERSION_ID
2580               from DUAL union all
2581               select 'Y' CB_FLAG,
2582                      'Y' CO_FLAG,
2583                      -3  PLAN_VERSION_ID
2584               from DUAL union all
2585               select 'Y' CB_FLAG,
2586                      'Y' CO_FLAG,
2587                      -4  PLAN_VERSION_ID
2588               from DUAL
2589             ) fin_plan
2590           where
2591             prg.STRUCT_TYPE         = 'PRG'                    and
2592             prg.SUP_LEVEL           = lv_level                  and
2593             prg.SUB_LEVEL           = lv_level                  and
2594             pjp1.WORKER_ID          = p_worker_id              and
2595             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID       and
2596             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID           and
2597             pjp1.PRG_LEVEL          = 0                        and
2598             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')              and
2599             pjp1.WBS_ROLLUP_FLAG    = 'N'                      and
2600             pjp1.PRG_ROLLUP_FLAG    = 'N'                      and
2601             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID          and
2602             wbs_hdr.PLAN_VERSION_ID = pjp1.PLAN_VERSION_ID     and
2603             wbs_hdr.PLAN_TYPE_CODE  = pjp1.PLAN_TYPE_CODE      and
2604             decode(wbs_hdr.WP_FLAG,
2605                    'N', decode(pjp1.PLAN_VERSION_ID,
2606                                -1, 'Y',
2607                                -2, 'Y',
2608                                -3, 'Y', -- won't exist
2609                                -4, 'Y', -- won't exist
2610                                    decode(wbs_hdr.CB_FLAG || '_' ||
2611                                           wbs_hdr.CO_FLAG,
2612                                           'Y_Y', 'Y',
2613                                           'N_Y', 'Y',
2614                                           'Y_N', 'Y',
2615                                                  'N')),
2616                         'Y')        =  'Y'                     and
2617             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID               and
2618             wbs_hdr.CB_FLAG         = fin_plan.CB_FLAG     (+) and
2619             wbs_hdr.CO_FLAG         = fin_plan.CO_FLAG     (+)
2620           union all
2621           select /*+ ordered
2622                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
2623                  -- get delta task level amounts from Reporting Lines
2624             to_char(null)                             LINE_TYPE,
2625             wbs_hdr.WBS_VERSION_ID,
2626             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
2627             decode(log.EVENT_TYPE,
2628                    'WBS_CHANGE', 'Y',
2629                    'WBS_PUBLISH', 'N')                PUSHUP_FLAG,
2630             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
2631                    'N_PRG', decode(top_slice.INVERT_ID,
2632                                    'PRJ', 'Y',
2633                                    decode(wbs.SUB_LEVEL,
2634                                           1, 'Y', 'N')),
2635                    decode(wbs_hdr.WP_FLAG
2636                             || '_' || fin_plan.INVERT_ID
2637                             || '_' || fin_plan.CB
2638                             || '_' || fin_plan.CO
2639                             || '_' || to_char(fin_plan.PLAN_VERSION_ID),
2640                           'N_PRJ_Y_Y_-4', 'N',
2641                                           'Y'))       INSERT_FLAG,
2642             fpr.PROJECT_ID,
2643             fpr.PROJECT_ORG_ID,
2644             fpr.PROJECT_ORGANIZATION_ID,
2645             decode(top_slice.INVERT_ID,
2646                    'PRJ', prg.SUP_EMT_ID,
2647                           decode(wbs.SUB_LEVEL,
2648                                  1, prg.SUP_EMT_ID,
2649                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
2650             fpr.TIME_ID,
2651             fpr.PERIOD_TYPE_ID,
2652             fpr.CALENDAR_TYPE,
2653             fpr.RBS_AGGR_LEVEL,
2654             'Y'                                       WBS_ROLLUP_FLAG,
2655             fpr.PRG_ROLLUP_FLAG,
2656             fpr.CURR_RECORD_TYPE_ID,
2657             fpr.CURRENCY_CODE,
2658             fpr.RBS_ELEMENT_ID,
2659             fpr.RBS_VERSION_ID,
2660             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
2661                    'N_PRG', fin_plan.PLAN_VERSION_ID,
2662                             fpr.PLAN_VERSION_ID)      PLAN_VERSION_ID,
2663             fpr.PLAN_TYPE_ID,
2664             fpr.PLAN_TYPE_CODE,
2665             wbs.SIGN * fpr.RAW_COST                   RAW_COST,
2666             wbs.SIGN * fpr.BRDN_COST                  BRDN_COST,
2667             wbs.SIGN * fpr.REVENUE                    REVENUE,
2668             wbs.SIGN * fpr.BILL_RAW_COST              BILL_RAW_COST,
2669             wbs.SIGN * fpr.BILL_BRDN_COST             BILL_BRDN_COST,
2670             wbs.SIGN * fpr.BILL_LABOR_RAW_COST        BILL_LABOR_RAW_COST,
2671             wbs.SIGN * fpr.BILL_LABOR_BRDN_COST       BILL_LABOR_BRDN_COST,
2672             wbs.SIGN * fpr.BILL_LABOR_HRS             BILL_LABOR_HRS,
2673             wbs.SIGN * fpr.EQUIPMENT_RAW_COST         EQUIPMENT_RAW_COST,
2674             wbs.SIGN * fpr.EQUIPMENT_BRDN_COST        EQUIPMENT_BRDN_COST,
2675             wbs.SIGN * fpr.CAPITALIZABLE_RAW_COST     CAPITALIZABLE_RAW_COST,
2676             wbs.SIGN * fpr.CAPITALIZABLE_BRDN_COST    CAPITALIZABLE_BRDN_COST,
2677             wbs.SIGN * fpr.LABOR_RAW_COST             LABOR_RAW_COST,
2678             wbs.SIGN * fpr.LABOR_BRDN_COST            LABOR_BRDN_COST,
2679             wbs.SIGN * fpr.LABOR_HRS                  LABOR_HRS,
2680             wbs.SIGN * fpr.LABOR_REVENUE              LABOR_REVENUE,
2681             wbs.SIGN * fpr.EQUIPMENT_HOURS            EQUIPMENT_HOURS,
2682             wbs.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS   BILLABLE_EQUIPMENT_HOURS,
2683             wbs.SIGN * fpr.SUP_INV_COMMITTED_COST     SUP_INV_COMMITTED_COST,
2684             wbs.SIGN * fpr.PO_COMMITTED_COST          PO_COMMITTED_COST,
2685             wbs.SIGN * fpr.PR_COMMITTED_COST          PR_COMMITTED_COST,
2686             wbs.SIGN * fpr.OTH_COMMITTED_COST         OTH_COMMITTED_COST,
2687             wbs.SIGN * fpr.ACT_LABOR_HRS              ACT_LABOR_HRS,
2688             wbs.SIGN * fpr.ACT_EQUIP_HRS              ACT_EQUIP_HRS,
2689             wbs.SIGN * fpr.ACT_LABOR_BRDN_COST        ACT_LABOR_BRDN_COST,
2690             wbs.SIGN * fpr.ACT_EQUIP_BRDN_COST        ACT_EQUIP_BRDN_COST,
2691             wbs.SIGN * fpr.ACT_BRDN_COST              ACT_BRDN_COST,
2692             wbs.SIGN * fpr.ACT_RAW_COST               ACT_RAW_COST,
2693             wbs.SIGN * fpr.ACT_REVENUE                ACT_REVENUE,
2694             wbs.SIGN * fpr.ACT_LABOR_RAW_COST         ACT_LABOR_RAW_COST,
2695             wbs.SIGN * fpr.ACT_EQUIP_RAW_COST         ACT_EQUIP_RAW_COST,
2696             wbs.SIGN * fpr.ETC_LABOR_HRS              ETC_LABOR_HRS,
2697             wbs.SIGN * fpr.ETC_EQUIP_HRS              ETC_EQUIP_HRS,
2698             wbs.SIGN * fpr.ETC_LABOR_BRDN_COST        ETC_LABOR_BRDN_COST,
2699             wbs.SIGN * fpr.ETC_EQUIP_BRDN_COST        ETC_EQUIP_BRDN_COST,
2700             wbs.SIGN * fpr.ETC_BRDN_COST              ETC_BRDN_COST,
2701             wbs.SIGN * fpr.ETC_RAW_COST               ETC_RAW_COST,
2702             wbs.SIGN * fpr.ETC_LABOR_RAW_COST         ETC_LABOR_RAW_COST,
2703             wbs.SIGN * fpr.ETC_EQUIP_RAW_COST         ETC_EQUIP_RAW_COST,
2704             wbs.SIGN * fpr.CUSTOM1                    CUSTOM1,
2705             wbs.SIGN * fpr.CUSTOM2                    CUSTOM2,
2706             wbs.SIGN * fpr.CUSTOM3                    CUSTOM3,
2707             wbs.SIGN * fpr.CUSTOM4                    CUSTOM4,
2708             wbs.SIGN * fpr.CUSTOM5                    CUSTOM5,
2709             wbs.SIGN * fpr.CUSTOM6                    CUSTOM6,
2710             wbs.SIGN * fpr.CUSTOM7                    CUSTOM7,
2711             wbs.SIGN * fpr.CUSTOM8                    CUSTOM8,
2712             wbs.SIGN * fpr.CUSTOM9                    CUSTOM9,
2713             wbs.SIGN * fpr.CUSTOM10                   CUSTOM10,
2714             wbs.SIGN * fpr.CUSTOM11                   CUSTOM11,
2715             wbs.SIGN * fpr.CUSTOM12                   CUSTOM12,
2716             wbs.SIGN * fpr.CUSTOM13                   CUSTOM13,
2717             wbs.SIGN * fpr.CUSTOM14                   CUSTOM14,
2718             wbs.SIGN * fpr.CUSTOM15                   CUSTOM15
2719           from
2720             PJI_PA_PROJ_EVENTS_LOG log,
2721             PJI_PJP_WBS_HEADER     wbs_hdr,
2722             PJI_XBS_DENORM_DELTA   wbs,
2723             PJI_XBS_DENORM         prg,
2724             PJI_FP_XBS_ACCUM_F     fpr,
2725             (
2726               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
2727               from DUAL union all
2728               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2729               from DUAL union all
2730               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
2731               from DUAL union all
2732               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2733               from DUAL union all
2734               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
2735               from DUAL union all
2736               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2737               from DUAL union all
2738               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
2739               from DUAL union all
2740               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
2741               from DUAL
2742             ) fin_plan,
2743             (
2744               select 1     WBS_SUP_LEVEL,
2745                      1     WBS_SUB_LEVEL,
2746                      'PRJ' INVERT_ID
2747               from   DUAL
2748               union all
2749               select 1     WBS_SUP_LEVEL,
2750                      1     WBS_SUB_LEVEL,
2751                      'WBS' INVERT_ID
2752               from   DUAL
2753             ) top_slice
2754           where
2755             prg.STRUCT_TYPE         =  'PRG'                       and
2756             prg.SUP_LEVEL           =  lv_level                     and
2757             prg.SUB_LEVEL           =  lv_level                     and
2758             wbs.WORKER_ID           =  p_worker_id                 and
2759             wbs.STRUCT_TYPE         =  'WBS'                       and
2760             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
2761             log.WORKER_ID           =  p_worker_id                 and
2762             log.EVENT_ID            =  wbs.EVENT_ID                and
2763             log.EVENT_TYPE          in ('WBS_CHANGE',
2764                                         'WBS_PUBLISH')             and
2765             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
2766             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
2767             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
2768             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
2769             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
2770             fpr.RBS_AGGR_LEVEL      =  'T'                         and
2771             fpr.WBS_ROLLUP_FLAG     =  'N'                         and
2772             fpr.PRG_ROLLUP_FLAG     in ('Y', 'N')                  and
2773             fpr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
2774             fpr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
2775             fpr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
2776             fpr.PLAN_VERSION_ID     =  wbs_hdr.PLAN_VERSION_ID     and
2777             fpr.PLAN_TYPE_CODE      =  wbs_hdr.PLAN_TYPE_CODE      and
2778             decode(fpr.PLAN_VERSION_ID,
2779                    -3, fpr.PLAN_TYPE_ID,
2780                    -4, fpr.PLAN_TYPE_ID,
2781                        -1)          =  decode(fpr.PLAN_VERSION_ID,
2782                                               -3, wbs_hdr.PLAN_TYPE_ID,
2783                                               -4, wbs_hdr.PLAN_TYPE_ID,
2784                                                   -1)              and
2785             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
2786             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
2787             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
2788             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
2789             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
2790              (wbs.SUP_LEVEL = 1 and
2791               wbs.SUB_LEVEL = 1))
2792           ) pjp,
2793           (
2794           select /*+ leading( prg, map) USE_NL(prg_delta) use_nl(invert) INDEX(prg_delta PJI_XBS_DENORM_DELTA_N1) */  -- KPN change bug#12731239
2795             prg.SUP_PROJECT_ID,
2796             map.PROJECT_ORG_ID               SUP_PROJECT_ORG_ID,
2797             map.PROJECT_ORGANIZATION_ID      SUP_PROJECT_ORGANIZATION_ID,
2798             prg.SUP_ID,
2799             prg.SUP_EMT_ID,
2800             prg.SUP_LEVEL,
2801             prg.SUB_ID,
2802             prg.SUB_EMT_ID,
2803             prg.SUB_ROLLUP_ID,
2804             invert.INVERT_VALUE              RELATIONSHIP_TYPE,
2805             decode(prg.RELATIONSHIP_TYPE,
2806                    'LW', 'Y',
2807                    'LF', 'N')                WP_FLAG,
2808             'Y'                              PUSHUP_FLAG
2809           from
2810             PJI_PJP_PROJ_BATCH_MAP map,
2811             PJI_XBS_DENORM prg,
2812             (
2813               select 'LF' INVERT_ID, 'LF' INVERT_VALUE from dual union all
2814               select 'LW' INVERT_ID, 'LW' INVERT_VALUE from dual union all
2815               select 'A'  INVERT_ID, 'LF' INVERT_VALUE from dual union all
2816               select 'A'  INVERT_ID, 'LW' INVERT_VALUE from dual
2817             ) invert,
2818             PJI_XBS_DENORM_DELTA prg_delta
2819           where
2820             prg.STRUCT_TYPE               = 'PRG'                           and
2821             prg.SUB_ROLLUP_ID             is not null                       and
2822             prg.SUB_LEVEL                 = lv_level                         and
2823             map.WORKER_ID                 = p_worker_id                     and
2824             map.PROJECT_ID                = prg.SUP_PROJECT_ID              and
2825             decode(prg.SUB_LEVEL,
2826                    prg.SUP_LEVEL, 'A',
2827                    prg.RELATIONSHIP_TYPE) = invert.INVERT_ID                and
2828             p_worker_id                   = prg_delta.WORKER_ID         (+) and
2829             prg.STRUCT_TYPE               = prg_delta.STRUCT_TYPE       (+) and
2830             prg.SUP_PROJECT_ID            = prg_delta.SUP_PROJECT_ID    (+) and
2831             prg.SUP_LEVEL                 = prg_delta.SUP_LEVEL         (+) and
2832             prg.SUP_ID                    = prg_delta.SUP_ID            (+) and
2833             prg.SUB_LEVEL                 = prg_delta.SUB_LEVEL         (+) and
2834             prg.SUB_ID                    = prg_delta.SUB_ID            (+) and
2835             prg.RELATIONSHIP_TYPE         = prg_delta.RELATIONSHIP_TYPE (+) and
2836             -1                            = prg_delta.SIGN              (+) and
2837             prg_delta.SUP_PROJECT_ID      is null
2838           )                          prg,
2839           PJI_PJP_WBS_HEADER         wbs_hdr,
2840           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
2841           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
2842           PA_PROJ_WORKPLAN_ATTR      sup_wpa
2843         where
2844           pjp.PROJECT_ID         = sub_ver.PROJECT_ID                (+) and
2845           pjp.WBS_VERSION_ID     = sub_ver.ELEMENT_VERSION_ID        (+) and
2846           'STRUCTURE_PUBLISHED'  = sub_ver.STATUS_CODE               (+) and
2847           pjp.WBS_VERSION_ID     = prg.SUB_ID                        (+) and
2848           pjp.RELATIONSHIP_TYPE  = prg.RELATIONSHIP_TYPE             (+) and
2849           pjp.PUSHUP_FLAG        = prg.PUSHUP_FLAG                   (+) and
2850           prg.SUP_PROJECT_ID     = wbs_hdr.PROJECT_ID                (+) and
2851           prg.SUP_ID             = wbs_hdr.WBS_VERSION_ID            (+) and
2852           prg.WP_FLAG            = wbs_hdr.WP_FLAG                   (+) and
2853           'Y'                    = wbs_hdr.WP_FLAG                   (+) and
2854           wbs_hdr.PROJECT_ID     = sup_ver.PROJECT_ID                (+) and
2855           wbs_hdr.WBS_VERSION_ID = sup_ver.ELEMENT_VERSION_ID        (+) and
2856           'STRUCTURE_PUBLISHED'  = sup_ver.STATUS_CODE               (+) and
2857           'Y'                    = sup_ver.LATEST_EFF_PUBLISHED_FLAG (+) and
2858           prg.SUP_EMT_ID         = sup_wpa.PROJ_ELEMENT_ID           (+)
2859         group by
2860           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2861                  pjp.INSERT_FLAG, 'Y'),
2862           pjp.RELATIONSHIP_TYPE,
2863           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2864                  null, sub_ver.STATUS_CODE),
2865           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2866                  null, sup_ver.STATUS_CODE),
2867           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2868                  null, sup_wpa.WP_ENABLE_VERSION_FLAG),
2869           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2870                  null, decode(pjp.PLAN_VERSION_ID,
2871                               -1, prg.SUP_ID,
2872                               -3, prg.SUP_ID,
2873                               -4, prg.SUP_ID,
2874                                   null)),
2875           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2876                  null, decode(pjp.PLAN_VERSION_ID,
2877                               -1, prg.SUP_EMT_ID,
2878                               -3, prg.SUP_EMT_ID,
2879                               -4, prg.SUP_EMT_ID,
2880                                   null)),
2881           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2882                  null, decode(pjp.PLAN_VERSION_ID,
2883                               -1, prg.WP_FLAG,
2884                               -3, prg.WP_FLAG,
2885                               -4, prg.WP_FLAG,
2886                                   null)),
2887           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2888                  lv_level, prg.SUP_LEVEL),
2889           pjp.LINE_TYPE,
2890           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2891                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID),
2892           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2893                  pjp.PROJECT_ORG_ID,
2894                  prg.SUP_PROJECT_ORG_ID),
2895           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2896                  pjp.PROJECT_ORGANIZATION_ID,
2897                  prg.SUP_PROJECT_ORGANIZATION_ID),
2898           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2899                  pjp.PROJECT_ELEMENT_ID,
2900                  prg.SUB_ROLLUP_ID),
2901           pjp.TIME_ID,
2902           pjp.PERIOD_TYPE_ID,
2903           pjp.CALENDAR_TYPE,
2904           pjp.RBS_AGGR_LEVEL,
2905           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2906                  pjp.WBS_ROLLUP_FLAG, 'N'),
2907           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2908                  pjp.PRG_ROLLUP_FLAG, 'Y'),
2909           pjp.CURR_RECORD_TYPE_ID,
2910           pjp.CURRENCY_CODE,
2911           pjp.RBS_ELEMENT_ID,
2912           pjp.RBS_VERSION_ID,
2913           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2914                  pjp.PLAN_VERSION_ID,
2915                  decode(pjp.PLAN_VERSION_ID,
2916                         -1, pjp.PLAN_VERSION_ID,
2917                         -2, pjp.PLAN_VERSION_ID,
2918                         -3, pjp.PLAN_VERSION_ID,
2919                         -4, pjp.PLAN_VERSION_ID,
2920                             wbs_hdr.PLAN_VERSION_ID)),
2921           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
2922                  pjp.PLAN_TYPE_ID,
2923                  decode(pjp.PLAN_VERSION_ID,
2924                         -1, pjp.PLAN_TYPE_ID,
2925                         -2, pjp.PLAN_TYPE_ID,
2926                         -3, pjp.PLAN_TYPE_ID,
2927                         -4, pjp.PLAN_TYPE_ID,
2928                             wbs_hdr.PLAN_TYPE_ID)),
2929           pjp.PLAN_TYPE_CODE
2930           )                          pjp1_i,
2931           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
2932           PA_PROJ_WORKPLAN_ATTR      sup_wpa
2933         where
2934           pjp1_i.INSERT_FLAG  = 'Y'                                and
2935           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
2936           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
2937           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
2938           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
2939           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
2940           (pjp1_i.SUP_ID is null or
2941            (pjp1_i.SUP_ID is not null and
2942             (sup_fin_ver.PROJECT_ID is not null or
2943              sup_wpa.PROJ_ELEMENT_ID is not null)));
2944 
2945         update PJI_SYSTEM_PRC_STATUS
2946         set    STEP_STATUS = 'C',
2947                END_DATE = sysdate
2948         where  PROCESS_NAME = l_process and
2949                STEP_SEQ = lv_level_seq;
2950 
2951         commit;
2952 
2953         select
2954           nvl(to_number(min(STEP_SEQ)), 0)
2955         into
2956           lv_level_seq
2957         from
2958           PJI_SYSTEM_PRC_STATUS
2959         where
2960           PROCESS_NAME = l_process and
2961           STEP_NAME like 'ROLLUP_FPR_WBS%' and
2962           STEP_STATUS is null;
2963 
2964         if (lv_level_seq = 0) then
2965           lv_level := 0;
2966         else
2967           lv_level := l_max_level - ((lv_level_seq - l_step_seq) * 1000) + 1;
2968         end if;
2969 
2970       end loop;
2971 
2972 end ROLLUP_FPR_WBS_FULL;
2973 -- End of Bug# 9904361
2974 
2975 
2976 
2977   -- -----------------------------------------------------
2978   -- procedure POPULATE_TIME_DIMENSION
2979   --
2980   --   History
2981   --   19-MAR-2004  SVERMETT  Created
2982   --
2983   -- Internal PJP Summarization API.
2984   --
2985   -- Called by RBS program
2986   --
2987   -- -----------------------------------------------------
2988   procedure POPULATE_TIME_DIMENSION (p_worker_id in number) is
2989 
2990     l_process varchar2(30);
2991 
2992     l_return_status varchar2(255);
2993     l_msg_count     number;
2994     l_msg_data      varchar2(2000);
2995 
2996   begin
2997 
2998     l_process := PJI_PJP_SUM_MAIN.g_process || p_worker_id;
2999 
3000     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_TIME_DIMENSION(p_worker_id);')) then
3001       return;
3002     end if;
3003 
3004     PJI_TIME_C.LOAD(null, null, l_return_status, l_msg_count, l_msg_data);
3005 
3006     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_TIME_DIMENSION(p_worker_id);');
3007 
3008     commit;
3009 
3010   end POPULATE_TIME_DIMENSION;
3011 
3012 
3013   -- -----------------------------------------------------
3014   -- procedure CREATE_EVENTS_SNAPSHOT
3015   --
3016   --   History
3017   --   19-MAR-2004  SVERMETT  Created
3018   --
3019   -- Internal PJP Summarization API.
3020   --
3021   -- Called by RBS program
3022   --
3023   -- -----------------------------------------------------
3024   procedure CREATE_EVENTS_SNAPSHOT (p_worker_id in number) is
3025 
3026     cursor events (p_worker_id in number) is
3027     select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1) use_hash(log) */     /* Modified for Bug 7669026 */
3028       distinct
3029       log.ROWID LOG_ROWID,
3030       log.EVENT_TYPE,
3031       log.EVENT_ID,
3032       log.EVENT_OBJECT,
3033       log.OPERATION_TYPE,
3034       log.STATUS,
3035       log.ATTRIBUTE_CATEGORY,
3036       log.ATTRIBUTE1,
3037       to_char(decode(log.EVENT_TYPE,
3038                      'RBS_PRG',   ver.RBS_HEADER_ID,
3039                      'RBS_ASSOC', ver.RBS_HEADER_ID,
3040                                   log.ATTRIBUTE2)) ATTRIBUTE2,
3041       log.ATTRIBUTE3,
3042       log.ATTRIBUTE4,
3043       log.ATTRIBUTE5,
3044       log.ATTRIBUTE6,
3045       log.ATTRIBUTE7,
3046       log.ATTRIBUTE8,
3047       log.ATTRIBUTE9,
3048       log.ATTRIBUTE10,
3049       log.ATTRIBUTE11,
3050       log.ATTRIBUTE12,
3051       log.ATTRIBUTE13,
3052       log.ATTRIBUTE14,
3053       log.ATTRIBUTE15,
3054       log.ATTRIBUTE16,
3055       log.ATTRIBUTE17,
3056       log.ATTRIBUTE18,
3057       log.ATTRIBUTE19,
3058       log.ATTRIBUTE20
3059     from
3060       PJI_PJP_PROJ_BATCH_MAP map,
3061       PA_PJI_PROJ_EVENTS_LOG log,
3062       PA_RBS_VERSIONS_B      ver
3063     where
3064       map.WORKER_ID    =  p_worker_id and
3065       log.EVENT_TYPE   in (-- 'WBS_CHANGE',          -- disable bulk processing
3066                            -- 'WBS_PUBLISH',         -- of WBS events
3067                            'RBS_ASSOC',
3068                            'RBS_PRG') and
3069       log.ATTRIBUTE1   = map.PROJECT_ID and
3070       log.EVENT_OBJECT = ver.RBS_VERSION_ID (+)
3071     union all
3072     select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1) use_hash(log) */             /* Modified for Bug 7669026 */
3073       distinct
3074       log.ROWID LOG_ROWID,
3075       log.EVENT_TYPE,
3076       log.EVENT_ID,
3077       log.EVENT_OBJECT,
3078       log.OPERATION_TYPE,
3079       log.STATUS,
3080       log.ATTRIBUTE_CATEGORY,
3081       log.ATTRIBUTE1,
3082       log.ATTRIBUTE2,
3083       log.ATTRIBUTE3,
3084       log.ATTRIBUTE4,
3085       log.ATTRIBUTE5,
3086       log.ATTRIBUTE6,
3087       log.ATTRIBUTE7,
3088       log.ATTRIBUTE8,
3089       log.ATTRIBUTE9,
3090       log.ATTRIBUTE10,
3091       log.ATTRIBUTE11,
3092       log.ATTRIBUTE12,
3093       log.ATTRIBUTE13,
3094       log.ATTRIBUTE14,
3095       log.ATTRIBUTE15,
3096       log.ATTRIBUTE16,
3097       log.ATTRIBUTE17,
3098       log.ATTRIBUTE18,
3099       log.ATTRIBUTE19,
3100       log.ATTRIBUTE20
3101     from
3102       PJI_PJP_PROJ_BATCH_MAP map,
3103       PA_PJI_PROJ_EVENTS_LOG log
3104     where
3105       map.WORKER_ID    = p_worker_id  and
3106       log.EVENT_TYPE   = 'PRG_CHANGE' and
3107       log.EVENT_OBJECT = -1           and
3108       log.ATTRIBUTE1   = map.PROJECT_ID;
3109 
3110     cursor prg_change_events (p_worker_id in number) is
3111     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
3112       log.ROWID LOG_ROWID,
3113       log.EVENT_TYPE,
3114       log.EVENT_ID,
3115       log.EVENT_OBJECT,
3116       log.OPERATION_TYPE,
3117       log.STATUS,
3118       log.ATTRIBUTE_CATEGORY,
3119       log.ATTRIBUTE1,
3120       log.ATTRIBUTE2,
3121       log.ATTRIBUTE3,
3122       log.ATTRIBUTE4,
3123       log.ATTRIBUTE5,
3124       log.ATTRIBUTE6,
3125       log.ATTRIBUTE7,
3126       log.ATTRIBUTE8,
3127       log.ATTRIBUTE9,
3128       log.ATTRIBUTE10,
3129       log.ATTRIBUTE11,
3130       log.ATTRIBUTE12,
3131       log.ATTRIBUTE13,
3132       log.ATTRIBUTE14,
3133       log.ATTRIBUTE15,
3134       log.ATTRIBUTE16,
3135       log.ATTRIBUTE17,
3136       log.ATTRIBUTE18,
3137       log.ATTRIBUTE19,
3138       log.ATTRIBUTE20
3139     from
3140       PA_PJI_PROJ_EVENTS_LOG log,
3141       (
3142         select /*+ ordered index(ver PA_PROJ_ELEMENT_VERSIONS_N3) */
3143           distinct
3144           ver.PRG_GROUP
3145         from
3146           PJI_PJP_PROJ_BATCH_MAP map,
3147           PA_PROJ_ELEMENT_VERSIONS ver
3148         where
3149           map.WORKER_ID = p_worker_id and
3150           map.PROJECT_ID = ver.PROJECT_ID and
3151           ver.PRG_GROUP is not null
3152       ) map
3153     where
3154       log.EVENT_TYPE   =  'PRG_CHANGE' and
3155       log.EVENT_OBJECT <> -1           and
3156       map.PRG_GROUP    in (log.EVENT_OBJECT, log.ATTRIBUTE1);
3157 
3158     cursor rbs_push_events (p_worker_id in number,
3159                             p_rbs_header_id in number) is
3160     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
3161       distinct
3162       log.ROWID                             LOG_ROWID,
3163       log.EVENT_TYPE,
3164       log.EVENT_ID,
3165       log.EVENT_OBJECT,
3166       log.OPERATION_TYPE,
3167       log.STATUS,
3168       log.ATTRIBUTE_CATEGORY,
3169       log.ATTRIBUTE1,
3170       nvl(log.ATTRIBUTE2, log.EVENT_OBJECT) ATTRIBUTE2,
3171       log.ATTRIBUTE3,
3172       log.ATTRIBUTE4,
3173       log.ATTRIBUTE5,
3174       log.ATTRIBUTE6,
3175       log.ATTRIBUTE7,
3176       log.ATTRIBUTE8,
3177       log.ATTRIBUTE9,
3178       log.ATTRIBUTE10,
3179       log.ATTRIBUTE11,
3180       log.ATTRIBUTE12,
3181       log.ATTRIBUTE13,
3182       log.ATTRIBUTE14,
3183       log.ATTRIBUTE15,
3184       'N'                                   ATTRIBUTE16, -- project event flag
3185       log.ATTRIBUTE17,                                   -- chain identifier
3186       log.ATTRIBUTE18,                                   -- push chain flag
3187       log.ATTRIBUTE19,                                   -- project id
3188       ver.RBS_HEADER_ID                     ATTRIBUTE20,  -- rbs header
3189       log.pjt_rollup_flag   -- OLAP
3190     from
3191       PA_PJI_PROJ_EVENTS_LOG log,
3192       (
3193       select
3194         distinct
3195         asg.RBS_HEADER_ID,
3196         asg.RBS_VERSION_ID
3197       from
3198         PJI_PJP_PROJ_BATCH_MAP map,
3199         PA_RBS_PRJ_ASSIGNMENTS asg
3200       where
3201         map.WORKER_ID     = p_worker_id and
3202         asg.PROJECT_ID    = map.PROJECT_ID and
3203         asg.RBS_HEADER_ID = nvl(p_rbs_header_id,
3204                                 asg.RBS_HEADER_ID)
3205       UNION
3206       select
3207         distinct
3208         rbs.RBS_HEADER_ID,
3209         rbs.RBS_VERSION_ID
3210       from
3211         PJI_PJP_PROJ_BATCH_MAP map,
3212         PA_PROJECTS_ALL prj,
3213         PA_RBS_VERSIONS_B rbs,
3214         PA_PJI_PROJ_EVENTS_LOG log
3215       where
3216         map.WORKER_ID     = p_worker_id and
3217         prj.PROJECT_ID    = map.PROJECT_ID and
3218         log.EVENT_TYPE = 'RBS_PUSH' and
3219         rbs.rbs_version_id = prj.cbs_version_id and
3220         prj.CBS_VERSION_ID in (log.EVENT_OBJECT, log.ATTRIBUTE2)
3221       ) ver
3222     where
3223       log.EVENT_TYPE = 'RBS_PUSH' and
3224       ver.RBS_VERSION_ID in (log.EVENT_OBJECT, log.ATTRIBUTE2);
3225 
3226     cursor rbs_delete_events (p_worker_id in number,
3227                               p_rbs_header_id in number) is
3228     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
3229       distinct
3230       log.ROWID LOG_ROWID,
3231       log.EVENT_TYPE,
3232       log.EVENT_ID,
3233       log.EVENT_OBJECT,
3234       log.OPERATION_TYPE,
3235       log.STATUS,
3236       log.ATTRIBUTE_CATEGORY,
3237       log.ATTRIBUTE1,
3238       log.ATTRIBUTE2,
3239       log.ATTRIBUTE3,
3240       log.ATTRIBUTE4,
3241       log.ATTRIBUTE5,
3242       log.ATTRIBUTE6,
3243       log.ATTRIBUTE7,
3244       log.ATTRIBUTE8,
3245       log.ATTRIBUTE9,
3246       log.ATTRIBUTE10,
3247       log.ATTRIBUTE11,
3248       log.ATTRIBUTE12,
3249       log.ATTRIBUTE13,
3250       log.ATTRIBUTE14,
3251       log.ATTRIBUTE15,
3252       log.ATTRIBUTE16,
3253       log.ATTRIBUTE17,
3254       log.ATTRIBUTE18,
3255       log.ATTRIBUTE19,
3256       log.ATTRIBUTE20
3257     from
3258       PJI_PJP_PROJ_BATCH_MAP map,
3259       PA_RBS_PRJ_ASSIGNMENTS asg,
3260       PA_PJI_PROJ_EVENTS_LOG log
3261     where
3262       map.WORKER_ID     = p_worker_id            and
3263       asg.PROJECT_ID    = map.PROJECT_ID         and
3264       asg.RBS_HEADER_ID = nvl(p_rbs_header_id,
3265                               asg.RBS_HEADER_ID) and
3266       log.EVENT_TYPE    = 'RBS_DELETE'           and
3267       log.EVENT_OBJECT  = asg.RBS_VERSION_ID;
3268 
3269     l_process           varchar2(30);
3270     l_extraction_type   varchar2(30);
3271     l_rbs_header_id     number;
3272     l_chain_flag        varchar2(150);
3273     l_last_rbs_link     number;
3274 
3275     l_last_update_date  date;
3276     l_last_updated_by   number;
3277     l_creation_date     date;
3278     l_created_by        number;
3279     l_last_update_login number;
3280 	l_rbs_version_id number;
3281 	l_new_model_projects_flag varchar2(1);
3282 
3283   begin
3284 
3285      -- OLAP CHANGES START
3286       l_rbs_version_id := -1;
3287      -- OLAP CHANGES END
3288 
3289 
3290     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
3291 
3292     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_EVENTS_SNAPSHOT(p_worker_id);')) then
3293       return;
3294     end if;
3295 
3296     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
3297 
3298     l_last_update_date  := sysdate;
3299     l_last_updated_by   := FND_GLOBAL.USER_ID;
3300     l_creation_date     := sysdate;
3301     l_created_by        := FND_GLOBAL.USER_ID;
3302     l_last_update_login := FND_GLOBAL.LOGIN_ID;
3303 
3304     if (l_extraction_type = 'FULL') then
3305 
3306       insert into PJI_PA_PROJ_EVENTS_LOG
3307       (
3308         WORKER_ID,
3309         LOG_ROWID,
3310         EVENT_TYPE,
3311         EVENT_ID,
3312         EVENT_OBJECT,
3313         OPERATION_TYPE,
3314         STATUS,
3315         ATTRIBUTE_CATEGORY,
3316         ATTRIBUTE1,
3317         ATTRIBUTE2,
3318         ATTRIBUTE3,
3319         ATTRIBUTE4,
3320         ATTRIBUTE5,
3321         ATTRIBUTE6,
3322         ATTRIBUTE7,
3323         ATTRIBUTE8,
3324         ATTRIBUTE9,
3325         ATTRIBUTE10,
3326         ATTRIBUTE11,
3327         ATTRIBUTE12,
3328         ATTRIBUTE13,
3329         ATTRIBUTE14,
3330         ATTRIBUTE15,
3331         ATTRIBUTE16,
3332         ATTRIBUTE17,
3333         ATTRIBUTE18,
3334         ATTRIBUTE19,
3335         ATTRIBUTE20
3336       )
3337       select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1)
3338                          use_hash(log)
3339                          use_hash(map) */
3340         p_worker_id,
3341         log.ROWID,
3342         log.EVENT_TYPE,
3343         log.EVENT_ID,
3344         log.EVENT_OBJECT,
3345         log.OPERATION_TYPE,
3346         log.STATUS,
3347         log.ATTRIBUTE_CATEGORY,
3348         log.ATTRIBUTE1,
3349         log.ATTRIBUTE2,
3350         log.ATTRIBUTE3,
3351         log.ATTRIBUTE4,
3352         log.ATTRIBUTE5,
3353         log.ATTRIBUTE6,
3354         log.ATTRIBUTE7,
3355         log.ATTRIBUTE8,
3356         log.ATTRIBUTE9,
3357         log.ATTRIBUTE10,
3358         log.ATTRIBUTE11,
3359         log.ATTRIBUTE12,
3360         log.ATTRIBUTE13,
3361         log.ATTRIBUTE14,
3362         log.ATTRIBUTE15,
3363         log.ATTRIBUTE16,
3364         log.ATTRIBUTE17,
3365         log.ATTRIBUTE18,
3366         log.ATTRIBUTE19,
3367         log.ATTRIBUTE20
3368       from
3369         PA_PJI_PROJ_EVENTS_LOG log,
3370         PJI_PJP_PROJ_BATCH_MAP map
3371       where
3372         map.WORKER_ID    = p_worker_id    and
3373         log.EVENT_TYPE   = 'PRG_CHANGE'   and
3374         log.EVENT_OBJECT = -1             and
3375         log.ATTRIBUTE1   = map.PROJECT_ID;
3376 
3377       delete
3378       from   PA_PJI_PROJ_EVENTS_LOG
3379       where  ROWID in (select LOG_ROWID
3380                        from   PJI_PA_PROJ_EVENTS_LOG
3381                        where  WORKER_ID = p_worker_id);
3382 
3383     elsif (l_extraction_type = 'INCREMENTAL') then
3384 
3385       for c in events(p_worker_id) loop
3386 
3387         insert into PJI_PA_PROJ_EVENTS_LOG
3388         (
3389           WORKER_ID,
3390           LOG_ROWID,
3391           EVENT_TYPE,
3392           EVENT_ID,
3393           EVENT_OBJECT,
3394           OPERATION_TYPE,
3395           STATUS,
3396           ATTRIBUTE_CATEGORY,
3397           ATTRIBUTE1,
3398           ATTRIBUTE2,
3399           ATTRIBUTE3,
3400           ATTRIBUTE4,
3401           ATTRIBUTE5,
3402           ATTRIBUTE6,
3403           ATTRIBUTE7,
3404           ATTRIBUTE8,
3405           ATTRIBUTE9,
3406           ATTRIBUTE10,
3407           ATTRIBUTE11,
3408           ATTRIBUTE12,
3409           ATTRIBUTE13,
3410           ATTRIBUTE14,
3411           ATTRIBUTE15,
3412           ATTRIBUTE16,
3413           ATTRIBUTE17,
3414           ATTRIBUTE18,
3415           ATTRIBUTE19,
3416           ATTRIBUTE20
3417         )
3418         values
3419         (
3420           p_worker_id,
3421           c.LOG_ROWID,
3422           c.EVENT_TYPE,
3423           c.EVENT_ID,
3424           c.EVENT_OBJECT,
3425           c.OPERATION_TYPE,
3426           c.STATUS,
3427           c.ATTRIBUTE_CATEGORY,
3428           c.ATTRIBUTE1,
3429           c.ATTRIBUTE2,
3430           c.ATTRIBUTE3,
3431           c.ATTRIBUTE4,
3432           c.ATTRIBUTE5,
3433           c.ATTRIBUTE6,
3434           c.ATTRIBUTE7,
3435           c.ATTRIBUTE8,
3436           c.ATTRIBUTE9,
3437           c.ATTRIBUTE10,
3438           c.ATTRIBUTE11,
3439           c.ATTRIBUTE12,
3440           c.ATTRIBUTE13,
3441           c.ATTRIBUTE14,
3442           c.ATTRIBUTE15,
3443           c.ATTRIBUTE16,
3444           c.ATTRIBUTE17,
3445           c.ATTRIBUTE18,
3446           c.ATTRIBUTE19,
3447           c.ATTRIBUTE20
3448         );
3449 
3450         delete
3451         from   PA_PJI_PROJ_EVENTS_LOG
3452         where  ROWID = c.LOG_ROWID;
3453 
3454       end loop;
3455 
3456       for c in prg_change_events(p_worker_id) loop
3457 
3458         insert into PJI_PA_PROJ_EVENTS_LOG
3459         (
3460           WORKER_ID,
3461           LOG_ROWID,
3462           EVENT_TYPE,
3463           EVENT_ID,
3464           EVENT_OBJECT,
3465           OPERATION_TYPE,
3466           STATUS,
3467           ATTRIBUTE_CATEGORY,
3468           ATTRIBUTE1,
3469           ATTRIBUTE2,
3470           ATTRIBUTE3,
3471           ATTRIBUTE4,
3472           ATTRIBUTE5,
3473           ATTRIBUTE6,
3474           ATTRIBUTE7,
3475           ATTRIBUTE8,
3476           ATTRIBUTE9,
3477           ATTRIBUTE10,
3478           ATTRIBUTE11,
3479           ATTRIBUTE12,
3480           ATTRIBUTE13,
3481           ATTRIBUTE14,
3482           ATTRIBUTE15,
3483           ATTRIBUTE16,
3484           ATTRIBUTE17,
3485           ATTRIBUTE18,
3486           ATTRIBUTE19,
3487           ATTRIBUTE20
3488         )
3489         values
3490         (
3491           p_worker_id,
3492           c.LOG_ROWID,
3493           c.EVENT_TYPE,
3494           c.EVENT_ID,
3495           c.EVENT_OBJECT,
3496           c.OPERATION_TYPE,
3497           c.STATUS,
3498           c.ATTRIBUTE_CATEGORY,
3499           c.ATTRIBUTE1,
3500           c.ATTRIBUTE2,
3501           c.ATTRIBUTE3,
3502           c.ATTRIBUTE4,
3503           c.ATTRIBUTE5,
3504           c.ATTRIBUTE6,
3505           c.ATTRIBUTE7,
3506           c.ATTRIBUTE8,
3507           c.ATTRIBUTE9,
3508           c.ATTRIBUTE10,
3509           c.ATTRIBUTE11,
3510           c.ATTRIBUTE12,
3511           c.ATTRIBUTE13,
3512           c.ATTRIBUTE14,
3513           c.ATTRIBUTE15,
3514           c.ATTRIBUTE16,
3515           c.ATTRIBUTE17,
3516           c.ATTRIBUTE18,
3517           c.ATTRIBUTE19,
3518           c.ATTRIBUTE20
3519         );
3520 
3521         delete
3522         from   PA_PJI_PROJ_EVENTS_LOG
3523         where  ROWID = c.LOG_ROWID;
3524 
3525       end loop;
3526 
3527       -- RBS_PRG events override RBS_ASSOC events
3528 
3529       delete
3530       from   PJI_PA_PROJ_EVENTS_LOG log1
3531       where  log1.WORKER_ID = p_worker_id and
3532              log1.EVENT_TYPE = 'RBS_ASSOC' and
3533              exists (select 1
3534                      from   PJI_PA_PROJ_EVENTS_LOG log2
3535                      where  log2.WORKER_ID    = p_worker_id       and
3536                             log2.EVENT_TYPE   = 'RBS_PRG'         and
3537                             log2.EVENT_OBJECT = log1.EVENT_OBJECT and
3538                             log2.ATTRIBUTE1   = log1.ATTRIBUTE1);
3539 
3540       -- convert RBS_PRG events into RBS_ASSOC events
3541 
3542       for c in (select distinct
3543                        EVENT_OBJECT RBS_VERSION_ID,
3544                        ATTRIBUTE1   PROJECT_ID,
3545                        ATTRIBUTE2   RBS_HEADER_ID
3546                 from   PJI_PA_PROJ_EVENTS_LOG
3547                 where  WORKER_ID = p_worker_id and
3548                        EVENT_TYPE = 'RBS_PRG') loop
3549 
3550         insert into PJI_PA_PROJ_EVENTS_LOG
3551         (
3552           WORKER_ID,
3553           LOG_ROWID,
3554           EVENT_TYPE,
3555           EVENT_ID,
3556           EVENT_OBJECT,
3557           OPERATION_TYPE,
3558           STATUS,
3559           ATTRIBUTE_CATEGORY,
3560           ATTRIBUTE1,
3561           ATTRIBUTE2,
3562           ATTRIBUTE3,
3563           ATTRIBUTE4,
3564           ATTRIBUTE5,
3565           ATTRIBUTE6,
3566           ATTRIBUTE7,
3567           ATTRIBUTE8,
3568           ATTRIBUTE9,
3569           ATTRIBUTE10,
3570           ATTRIBUTE11,
3571           ATTRIBUTE12,
3572           ATTRIBUTE13,
3573           ATTRIBUTE14,
3574           ATTRIBUTE15,
3575           ATTRIBUTE16,
3576           ATTRIBUTE17,
3577           ATTRIBUTE18,
3578           ATTRIBUTE19,
3579           ATTRIBUTE20
3580         )
3581         select
3582           distinct
3583           p_worker_id                      WORKER_ID,
3584           null                             LOG_ROWID,
3585           'RBS_ASSOC'                      EVENT_TYPE,
3586           -1                               EVENT_ID,
3587           c.RBS_VERSION_ID                 EVENT_OBJECT,
3588           'I'                              OPERATION_TYPE,
3589           'X'                              STATUS,
3590           null                             ATTRIBUTE_CATEGORY,
3591           emt.PROJECT_ID                   ATTRIBUTE1,
3592           c.RBS_HEADER_ID                  ATTRIBUTE2,
3593           null                             ATTRIBUTE3,
3594           null                             ATTRIBUTE4,
3595           null                             ATTRIBUTE5,
3596           null                             ATTRIBUTE6,
3597           null                             ATTRIBUTE7,
3598           null                             ATTRIBUTE8,
3599           null                             ATTRIBUTE9,
3600           null                             ATTRIBUTE10,
3601           null                             ATTRIBUTE11,
3602           null                             ATTRIBUTE12,
3603           null                             ATTRIBUTE13,
3604           null                             ATTRIBUTE14,
3605           null                             ATTRIBUTE15,
3606           null                             ATTRIBUTE16,
3607           c.PROJECT_ID                     ATTRIBUTE17, -- program's PROJECT_ID
3608           decode(prg.SUB_EMT_ID,
3609                  prg.SUB_ROLLUP_ID, 'Y',
3610                                     'N')   ATTRIBUTE18, -- PROG_REP_USAGE_FLAG
3611           decode(rbs_hdr.PROJECT_ID,
3612                  null, null,
3613                        'MARK_AS_PROG_REP') ATTRIBUTE19, -- update header only
3614           'CONVERTED_RBS_PRG_EVENT'        ATTRIBUTE20  -- flg converted events
3615         from
3616           PA_XBS_DENORM          prg,
3617           PA_PROJ_ELEMENTS       emt,
3618           PJI_PJP_RBS_HEADER     rbs_hdr,
3619           PJI_PA_PROJ_EVENTS_LOG log
3620         where
3621           prg.SUP_PROJECT_ID  = c.PROJECT_ID                and
3622           (prg.SUB_EMT_ID = prg.SUB_ROLLUP_ID or
3623            prg.SUP_EMT_ID <> prg.SUB_EMT_ID)                and
3624           emt.PROJ_ELEMENT_ID = prg.SUB_EMT_ID              and
3625           emt.PROJECT_ID      = rbs_hdr.PROJECT_ID      (+) and
3626           -1                  = rbs_hdr.PLAN_VERSION_ID (+) and
3627           c.RBS_VERSION_ID    = rbs_hdr.RBS_VERSION_ID  (+) and
3628           (rbs_hdr.PROJECT_ID is null or
3629            prg.SUB_EMT_ID = prg.SUB_ROLLUP_ID)              and
3630           p_worker_id         = log.WORKER_ID           (+) and
3631           'RBS_ASSOC'         = log.EVENT_TYPE          (+) and
3632           c.RBS_VERSION_ID    = log.EVENT_OBJECT        (+) and
3633           emt.PROJECT_ID      = log.ATTRIBUTE1          (+) and
3634           log.WORKER_ID       is null;
3635 
3636       end loop;
3637 
3638       delete
3639       from   PJI_PA_PROJ_EVENTS_LOG
3640       where  WORKER_ID = p_worker_id and
3641              EVENT_TYPE = 'RBS_PRG';
3642 
3643     elsif (l_extraction_type = 'PARTIAL') then
3644 
3645       null; -- do not process any events during partial refresh
3646 
3647     elsif (l_extraction_type = 'RBS') then
3648 
3649       l_rbs_header_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
3650                          (l_process, 'RBS_HEADER_ID');
3651 
3652       if (l_rbs_header_id = -1) then
3653         l_rbs_header_id := null;
3654       end if;
3655 
3656       --ensure all RBS_ASSOC and RBS_PRG events point to the latest version
3657 
3658       update PA_PJI_PROJ_EVENTS_LOG log
3659       set    log.EVENT_OBJECT =
3660              (
3661              select
3662                ver1.RBS_VERSION_ID
3663              from
3664                (
3665                select
3666                  ver.RBS_VERSION_ID
3667                from
3668                  PA_RBS_VERSIONS_B ver
3669                where
3670                  ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
3671                                          ver.RBS_HEADER_ID) and
3672                  ver.STATUS_CODE = 'FROZEN'
3673                order by
3674                  ver.VERSION_NUMBER desc
3675                ) ver1
3676              where
3677                ROWNUM = 1
3678              )
3679       where  log.EVENT_TYPE in ('RBS_ASSOC', 'RBS_PRG') and
3680              log.EVENT_OBJECT in
3681              (
3682              select
3683                ver.RBS_VERSION_ID
3684              from
3685                PA_RBS_VERSIONS_B ver
3686              where
3687                ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
3688                                        ver.RBS_HEADER_ID)
3689              ) and
3690              log.EVENT_OBJECT not in
3691              (
3692              select
3693                ver1.RBS_VERSION_ID
3694              from
3695                (
3696                select
3697                  ver.RBS_VERSION_ID
3698                from
3699                  PA_RBS_VERSIONS_B ver
3700                where
3701                  ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
3702                                          ver.RBS_HEADER_ID) and
3703                  ver.STATUS_CODE = 'FROZEN'
3704                order by
3705                  ver.VERSION_NUMBER desc
3706                ) ver1
3707              where
3708                ROWNUM = 1
3709              );
3710 
3711       -- get RBS_PUSH events
3712 
3713       for c in rbs_push_events(p_worker_id, l_rbs_header_id) loop
3714 
3715         if (c.ATTRIBUTE2 is not null) then
3716 
3717           insert into PJI_PA_PROJ_EVENTS_LOG
3718           (
3719             WORKER_ID,
3720             LOG_ROWID,
3721             EVENT_TYPE,
3722             EVENT_ID,
3723             EVENT_OBJECT,
3724             OPERATION_TYPE,
3725             STATUS,
3726             ATTRIBUTE_CATEGORY,
3727             ATTRIBUTE1,
3728             ATTRIBUTE2,
3729             ATTRIBUTE3,
3730             ATTRIBUTE4,
3731             ATTRIBUTE5,
3732             ATTRIBUTE6,
3733             ATTRIBUTE7,
3734             ATTRIBUTE8,
3735             ATTRIBUTE9,
3736             ATTRIBUTE10,
3737             ATTRIBUTE11,
3738             ATTRIBUTE12,
3739             ATTRIBUTE13,
3740             ATTRIBUTE14,
3741             ATTRIBUTE15,
3742             ATTRIBUTE16,
3743             ATTRIBUTE17,
3744             ATTRIBUTE18,
3745             ATTRIBUTE19,
3746             ATTRIBUTE20
3747           )
3748           values
3749           (
3750             p_worker_id,
3751             c.LOG_ROWID,
3752             c.EVENT_TYPE,
3753             c.EVENT_ID,
3754             c.EVENT_OBJECT,
3755             c.OPERATION_TYPE,
3756             c.STATUS,
3757             c.ATTRIBUTE_CATEGORY,
3758             c.ATTRIBUTE1,
3759             c.ATTRIBUTE2,
3760             c.ATTRIBUTE3,
3761             c.ATTRIBUTE4,
3762             c.ATTRIBUTE5,
3763             c.ATTRIBUTE6,
3764             c.ATTRIBUTE7,
3765             c.ATTRIBUTE8,
3766             c.ATTRIBUTE9,
3767             c.ATTRIBUTE10,
3768             c.ATTRIBUTE11,
3769             c.ATTRIBUTE12,
3770             c.ATTRIBUTE13,
3771             c.ATTRIBUTE14,
3772             c.ATTRIBUTE15,
3773             c.ATTRIBUTE16,
3774             c.ATTRIBUTE17,
3775             c.ATTRIBUTE18,
3776             c.ATTRIBUTE19,
3777             c.ATTRIBUTE20
3778           );
3779 
3780 -- OLAP CHANGES START
3781 /*
3782 if ( l_rbs_version_id <> c.ATTRIBUTE2 )  then
3783 
3784 		begin
3785 
3786 
3787 		l_new_model_projects_flag  := 'N';
3788 
3789         select 'Y' into l_new_model_projects_flag
3790 		from
3791 		dual
3792 		where  c.pjt_rollup_flag  = 'N'
3793          and 		exists
3794 		( select 'x'   from
3795 		pa_projects_all p1,
3796         PA_RBS_PRJ_ASSIGNMENTS asg
3797         where
3798         asg.PROJECT_ID    = p1.PROJECT_ID and
3799         asg.RBS_VERSION_ID = c.ATTRIBUTE2 and
3800 		p1.pjt_rollup_enabled_flag = 'Y'
3801         );
3802        exception
3803 	        when  no_data_found  then
3804 	          l_new_model_projects_flag  := 'N';
3805 	  end ;
3806 
3807 	  l_rbs_version_id := c.ATTRIBUTE2;
3808 
3809 end if;
3810 
3811 if ( 	l_new_model_projects_flag = 'Y' )  then
3812 
3813 		    insert into pa_pjt_events_02
3814           (
3815             WORKER_ID,
3816             LOG_ROWID,
3817             EVENT_TYPE,
3818             EVENT_ID,
3819             EVENT_OBJECT,
3820             OPERATION_TYPE,
3821             STATUS,
3822             ATTRIBUTE_CATEGORY,
3823             ATTRIBUTE1,
3824             ATTRIBUTE2,
3825             ATTRIBUTE3,
3826             ATTRIBUTE4,
3827             ATTRIBUTE5,
3828             ATTRIBUTE6,
3829             ATTRIBUTE7,
3830             ATTRIBUTE8,
3831             ATTRIBUTE9,
3832             ATTRIBUTE10,
3833             ATTRIBUTE11,
3834             ATTRIBUTE12,
3835             ATTRIBUTE13,
3836             ATTRIBUTE14,
3837             ATTRIBUTE15,
3838             ATTRIBUTE16,
3839             ATTRIBUTE17,
3840             ATTRIBUTE18,
3841             ATTRIBUTE19,
3842             ATTRIBUTE20
3843           )
3844           values
3845           (
3846             p_worker_id,
3847             c.LOG_ROWID,
3848             c.EVENT_TYPE,
3849             c.EVENT_ID,
3850             c.EVENT_OBJECT,
3851             c.OPERATION_TYPE,
3852             c.STATUS,
3853             c.ATTRIBUTE_CATEGORY,
3854             c.ATTRIBUTE1,
3855             c.ATTRIBUTE2,
3856             c.ATTRIBUTE3,
3857             c.ATTRIBUTE4,
3858             c.ATTRIBUTE5,
3859             c.ATTRIBUTE6,
3860             c.ATTRIBUTE7,
3861             c.ATTRIBUTE8,
3862             c.ATTRIBUTE9,
3863             c.ATTRIBUTE10,
3864             c.ATTRIBUTE11,
3865             c.ATTRIBUTE12,
3866             c.ATTRIBUTE13,
3867             c.ATTRIBUTE14,
3868             c.ATTRIBUTE15,
3869             c.ATTRIBUTE16,
3870             c.ATTRIBUTE17,
3871             c.ATTRIBUTE18,
3872             c.ATTRIBUTE19,
3873             c.ATTRIBUTE20
3874           );
3875 
3876  end if;
3877 */
3878 -- OLAP CHANGES END
3879         end if;
3880 
3881         delete
3882         from   PA_PJI_PROJ_EVENTS_LOG
3883         where  ROWID = c.LOG_ROWID;
3884 
3885       end loop;
3886 
3887       -- get RBS_DELETE events
3888 
3889       for c in rbs_delete_events(p_worker_id, l_rbs_header_id) loop
3890 
3891         insert into PJI_PA_PROJ_EVENTS_LOG
3892         (
3893           WORKER_ID,
3894           LOG_ROWID,
3895           EVENT_TYPE,
3896           EVENT_ID,
3897           EVENT_OBJECT,
3898           OPERATION_TYPE,
3899           STATUS,
3900           ATTRIBUTE_CATEGORY,
3901           ATTRIBUTE1,
3902           ATTRIBUTE2,
3903           ATTRIBUTE3,
3904           ATTRIBUTE4,
3905           ATTRIBUTE5,
3906           ATTRIBUTE6,
3907           ATTRIBUTE7,
3908           ATTRIBUTE8,
3909           ATTRIBUTE9,
3910           ATTRIBUTE10,
3911           ATTRIBUTE11,
3912           ATTRIBUTE12,
3913           ATTRIBUTE13,
3914           ATTRIBUTE14,
3915           ATTRIBUTE15,
3916           ATTRIBUTE16,
3917           ATTRIBUTE17,
3918           ATTRIBUTE18,
3919           ATTRIBUTE19,
3920           ATTRIBUTE20
3921         )
3922         values
3923         (
3924           p_worker_id,
3925           c.LOG_ROWID,
3926           c.EVENT_TYPE,
3927           c.EVENT_ID,
3928           c.EVENT_OBJECT,
3929           c.OPERATION_TYPE,
3930           c.STATUS,
3931           c.ATTRIBUTE_CATEGORY,
3932           c.ATTRIBUTE1,
3933           c.ATTRIBUTE2,
3934           c.ATTRIBUTE3,
3935           c.ATTRIBUTE4,
3936           c.ATTRIBUTE5,
3937           c.ATTRIBUTE6,
3938           c.ATTRIBUTE7,
3939           c.ATTRIBUTE8,
3940           c.ATTRIBUTE9,
3941           c.ATTRIBUTE10,
3942           c.ATTRIBUTE11,
3943           c.ATTRIBUTE12,
3944           c.ATTRIBUTE13,
3945           c.ATTRIBUTE14,
3946           c.ATTRIBUTE15,
3947           c.ATTRIBUTE16,
3948           c.ATTRIBUTE17,
3949           c.ATTRIBUTE18,
3950           c.ATTRIBUTE19,
3951           c.ATTRIBUTE20
3952         );
3953 
3954         delete
3955         from   PA_PJI_PROJ_EVENTS_LOG
3956         where  ROWID = c.LOG_ROWID;
3957 
3958       end loop;
3959 
3960       -- normalize chains of 'RBS_PUSH' events
3961 
3962       for c in (select   EVENT_ID
3963                 from     PJI_PA_PROJ_EVENTS_LOG
3964                 where    WORKER_ID = p_worker_id and
3965                          EVENT_TYPE = 'RBS_PUSH'
3966                 order by EVENT_ID) loop
3967 
3968         select ATTRIBUTE18
3969         into   l_chain_flag
3970         from   PJI_PA_PROJ_EVENTS_LOG
3971         where  WORKER_ID = p_worker_id and
3972                EVENT_TYPE = 'RBS_PUSH' and
3973                EVENT_ID = c.EVENT_ID;
3974 
3975         if (l_chain_flag is null) then
3976 
3977           update PJI_PA_PROJ_EVENTS_LOG log1
3978           set    log1.ATTRIBUTE18 = 'PJI$LIST',
3979                  log1.ATTRIBUTE17 = c.EVENT_ID
3980           where  log1.WORKER_ID   = p_worker_id and
3981                  log1.EVENT_TYPE  = 'RBS_PUSH' and
3982                  log1.EVENT_ID    in
3983                    (select
3984                       log1.EVENT_ID
3985                     from
3986                       PJI_PA_PROJ_EVENTS_LOG log1
3987                     start with
3988                       log1.WORKER_ID   = p_worker_id and
3989                       log1.EVENT_TYPE  = 'RBS_PUSH'  and
3990                       log1.EVENT_ID    = c.EVENT_ID  and
3991                       log1.ATTRIBUTE18 is null
3992                     connect by
3993                       log1.ATTRIBUTE2 = prior log1.EVENT_OBJECT);
3994 
3995           select log1.EVENT_OBJECT
3996           into   l_last_rbs_link
3997           from   PJI_PA_PROJ_EVENTS_LOG log1
3998           where  log1.WORKER_ID   = p_worker_id and
3999                  log1.EVENT_TYPE  = 'RBS_PUSH'  and
4000                  log1.ATTRIBUTE17 = c.EVENT_ID  and
4001                  log1.ATTRIBUTE18 = 'PJI$LIST'  and
4002                  log1.EVENT_ID    in (select max(log2.EVENT_ID)
4003                                       from   PJI_PA_PROJ_EVENTS_LOG log2
4004                                       where  log2.WORKER_ID = p_worker_id  and
4005                                              log2.EVENT_TYPE = 'RBS_PUSH'  and
4006                                              log2.ATTRIBUTE17 = c.EVENT_ID and
4007                                              log2.ATTRIBUTE18 = 'PJI$LIST');
4008 
4009           update PJI_PA_PROJ_EVENTS_LOG
4010           set    EVENT_OBJECT = l_last_rbs_link
4011           where  WORKER_ID    = p_worker_id and
4012                  EVENT_TYPE   = 'RBS_PUSH'  and
4013                  ATTRIBUTE17  = c.EVENT_ID  and
4014                  ATTRIBUTE18  = 'PJI$LIST';
4015 
4016         end if;
4017 
4018       end loop;
4019 
4020       -- 'RBS_DELETE' event overrides 'RBS_PUSH' event
4021 
4022       insert into PJI_PA_PROJ_EVENTS_LOG
4023       (
4024         WORKER_ID,
4025         LOG_ROWID,
4026         EVENT_TYPE,
4027         EVENT_ID,
4028         EVENT_OBJECT,
4029         OPERATION_TYPE,
4030         STATUS,
4031         ATTRIBUTE_CATEGORY,
4032         ATTRIBUTE1,
4033         ATTRIBUTE2,
4034         ATTRIBUTE3,
4035         ATTRIBUTE4,
4036         ATTRIBUTE5,
4037         ATTRIBUTE6,
4038         ATTRIBUTE7,
4039         ATTRIBUTE8,
4040         ATTRIBUTE9,
4041         ATTRIBUTE10,
4042         ATTRIBUTE11,
4043         ATTRIBUTE12,
4044         ATTRIBUTE13,
4045         ATTRIBUTE14,
4046         ATTRIBUTE15,
4047         ATTRIBUTE16,
4048         ATTRIBUTE17,
4049         ATTRIBUTE18,
4050         ATTRIBUTE19,
4051         ATTRIBUTE20
4052       )
4053       select
4054         distinct
4055         log_del.WORKER_ID,
4056         log_del.LOG_ROWID,
4057         log_del.EVENT_TYPE,
4058         log_del.EVENT_ID,
4059         log_push.ATTRIBUTE2              EVENT_OBJECT,
4060         log_del.OPERATION_TYPE,
4061         log_del.STATUS,
4062         log_del.ATTRIBUTE_CATEGORY,
4063         log_del.ATTRIBUTE1,
4064         log_del.ATTRIBUTE2,
4065         log_del.ATTRIBUTE3,
4066         log_del.ATTRIBUTE4,
4067         log_del.ATTRIBUTE5,
4068         log_del.ATTRIBUTE6,
4069         log_del.ATTRIBUTE7,
4070         log_del.ATTRIBUTE8,
4071         log_del.ATTRIBUTE9,
4072         log_del.ATTRIBUTE10,
4073         log_del.ATTRIBUTE11,
4074         log_del.ATTRIBUTE12,
4075         log_del.ATTRIBUTE13,
4076         log_del.ATTRIBUTE14,
4077         log_del.ATTRIBUTE15,
4078         log_del.ATTRIBUTE16,
4079         log_del.ATTRIBUTE17,
4080         log_del.ATTRIBUTE18,
4081         log_del.ATTRIBUTE19,
4082         log_del.ATTRIBUTE20
4083       from
4084         PJI_PA_PROJ_EVENTS_LOG log_del,
4085         PJI_PA_PROJ_EVENTS_LOG log_push
4086       where
4087         log_del.WORKER_ID     = p_worker_id  and
4088         log_del.EVENT_TYPE    = 'RBS_DELETE' and
4089         log_push.WORKER_ID    = p_worker_id  and
4090         log_push.EVENT_TYPE   = 'RBS_PUSH'   and
4091         log_push.EVENT_OBJECT = log_del.EVENT_OBJECT;
4092 
4093       delete
4094       from   PJI_PA_PROJ_EVENTS_LOG log1
4095       where  log1.WORKER_ID    =  p_worker_id and
4096              log1.EVENT_TYPE   =  'RBS_PUSH' and
4097              log1.EVENT_OBJECT in (select log2.EVENT_OBJECT
4098                                    from   PJI_PA_PROJ_EVENTS_LOG log2
4099                                    where  log2.WORKER_ID = p_worker_id and
4100                                           log2.EVENT_TYPE = 'RBS_DELETE');
4101 
4102       -- add PROJECT_ID to RBS_PUSH events
4103 /* Midified this insert for bug#6450097 */
4104       insert into PJI_PA_PROJ_EVENTS_LOG
4105       (
4106         WORKER_ID,
4107         LOG_ROWID,
4108         EVENT_TYPE,
4109         EVENT_ID,
4110         EVENT_OBJECT,
4111         OPERATION_TYPE,
4112         STATUS,
4113         ATTRIBUTE_CATEGORY,
4114         ATTRIBUTE1,
4115         ATTRIBUTE2,
4116         ATTRIBUTE3,
4117         ATTRIBUTE4,
4118         ATTRIBUTE5,
4119         ATTRIBUTE6,
4120         ATTRIBUTE7,
4121         ATTRIBUTE8,
4122         ATTRIBUTE9,
4123         ATTRIBUTE10,
4124         ATTRIBUTE11,
4125         ATTRIBUTE12,
4126         ATTRIBUTE13,
4127         ATTRIBUTE14,
4128         ATTRIBUTE15,
4129         ATTRIBUTE16,
4130         ATTRIBUTE17,
4131         ATTRIBUTE18,
4132         ATTRIBUTE19,
4133         ATTRIBUTE20
4134       )
4135       select
4136         distinct
4137         log.WORKER_ID,
4138         log.LOG_ROWID,
4139         log.EVENT_TYPE,
4140         log.EVENT_ID,
4141         log.EVENT_OBJECT,
4142         log.OPERATION_TYPE,
4143         log.STATUS,
4144         log.ATTRIBUTE_CATEGORY,
4145         log.ATTRIBUTE1,
4146         log.ATTRIBUTE2,
4147         log.ATTRIBUTE3,
4148         log.ATTRIBUTE4,
4149         log.ATTRIBUTE5,
4150         log.ATTRIBUTE6,
4151         log.ATTRIBUTE7,
4152         log.ATTRIBUTE8,
4153         log.ATTRIBUTE9,
4154         log.ATTRIBUTE10,
4155         log.ATTRIBUTE11,
4156         log.ATTRIBUTE12,
4157         log.ATTRIBUTE13,
4158         log.ATTRIBUTE14,
4159         log.ATTRIBUTE15,
4160         'Y'                              ATTRIBUTE16,
4161         log.ATTRIBUTE17,
4162         log.ATTRIBUTE18,
4163         rbs_prj.PROJECT_ID               ATTRIBUTE19,
4164         log.ATTRIBUTE20
4165       from
4166         PJI_PA_PROJ_EVENTS_LOG log,
4167         PA_RBS_PRJ_ASSIGNMENTS rbs_prj,
4168 	PA_RBS_VERSIONS_B rbs
4169       where
4170         log.WORKER_ID           = p_worker_id and
4171         log.EVENT_TYPE          = 'RBS_PUSH'  and
4172         rbs.RBS_VERSION_ID  = log.ATTRIBUTE2 and
4173 	rbs.rbs_header_id = rbs_prj.rbs_header_id;
4174 
4175       insert into PJI_PA_PROJ_EVENTS_LOG -- CBS Change
4176       (
4177         WORKER_ID,
4178         LOG_ROWID,
4179         EVENT_TYPE,
4180         EVENT_ID,
4181         EVENT_OBJECT,
4182         OPERATION_TYPE,
4183         STATUS,
4184         ATTRIBUTE_CATEGORY,
4185         ATTRIBUTE1,
4186         ATTRIBUTE2,
4187         ATTRIBUTE3,
4188         ATTRIBUTE4,
4189         ATTRIBUTE5,
4190         ATTRIBUTE6,
4191         ATTRIBUTE7,
4192         ATTRIBUTE8,
4193         ATTRIBUTE9,
4194         ATTRIBUTE10,
4195         ATTRIBUTE11,
4196         ATTRIBUTE12,
4197         ATTRIBUTE13,
4198         ATTRIBUTE14,
4199         ATTRIBUTE15,
4200         ATTRIBUTE16,
4201         ATTRIBUTE17,
4202         ATTRIBUTE18,
4203         ATTRIBUTE19,
4204         ATTRIBUTE20
4205       )
4206       select
4207         distinct
4208         log.WORKER_ID,
4209         log.LOG_ROWID,
4210         'CBS_PUSH',
4211         log.EVENT_ID,
4212         log.EVENT_OBJECT,
4213         log.OPERATION_TYPE,
4214         log.STATUS,
4215         log.ATTRIBUTE_CATEGORY,
4216         log.ATTRIBUTE1,
4217         log.ATTRIBUTE2,
4218         log.ATTRIBUTE3,
4219         log.ATTRIBUTE4,
4220         log.ATTRIBUTE5,
4221         log.ATTRIBUTE6,
4222         log.ATTRIBUTE7,
4223         log.ATTRIBUTE8,
4224         log.ATTRIBUTE9,
4225         log.ATTRIBUTE10,
4226         log.ATTRIBUTE11,
4227         log.ATTRIBUTE12,
4228         log.ATTRIBUTE13,
4229         log.ATTRIBUTE14,
4230         log.ATTRIBUTE15,
4231         'Y'                              ATTRIBUTE16,
4232         log.ATTRIBUTE17,
4233         log.ATTRIBUTE18,
4234         prj.PROJECT_ID               ATTRIBUTE19,
4235         log.ATTRIBUTE20
4236       from
4237         PJI_PA_PROJ_EVENTS_LOG log,
4238         PA_PROJECTS_ALL prj
4239       where
4240         log.WORKER_ID           = p_worker_id and
4241         log.EVENT_TYPE          = 'RBS_PUSH'  and
4242         prj.cbs_version_id = log.ATTRIBUTE2 and
4243         prj.cbs_enable_flag  = 'Y';
4244 
4245       delete
4246       from   PJI_PA_PROJ_EVENTS_LOG
4247       where  WORKER_ID   = p_worker_id and
4248              EVENT_TYPE  = 'RBS_PUSH' and
4249              ATTRIBUTE16 = 'N';
4250 
4251 
4252     end if;
4253 
4254     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_EVENTS_SNAPSHOT(p_worker_id);');
4255 
4256     commit;
4257 
4258   end CREATE_EVENTS_SNAPSHOT;
4259 
4260 
4261   -- -----------------------------------------------------
4262   -- procedure PROCESS_RBS_CHANGES
4263   --
4264   --   History
4265   --   19-MAR-2004  SVERMETT  Created
4266   --
4267   -- Internal PJP Summarization API.
4268   --
4269   -- Called by RBS program
4270   --
4271   -- -----------------------------------------------------
4272   procedure PROCESS_RBS_CHANGES (p_worker_id in number) is
4273 
4274     cursor rbs_events (p_worker_id in number) is
4275     select
4276       distinct
4277       ATTRIBUTE20  RBS_HEADER_ID,
4278       ATTRIBUTE2   OLD_RBS_VERSION_ID,
4279       EVENT_OBJECT NEW_RBS_VERSION_ID
4280     from
4281       PJI_PA_PROJ_EVENTS_LOG
4282     where
4283       WORKER_ID = p_worker_id and
4284       EVENT_TYPE = 'RBS_PUSH';
4285 
4286     l_process         varchar2(30);
4287     l_extraction_type varchar2(30);
4288 
4289     l_return_status   varchar2(255);
4290     l_msg_count       number;
4291     l_msg_data        varchar2(2000);
4292 
4293   begin
4294 
4295     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4296 
4297     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_RBS_CHANGES(p_worker_id);')) then
4298       return;
4299     end if;
4300 
4301     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4302 
4303     if (l_extraction_type = 'RBS') then
4304 
4305       for c in rbs_events(p_worker_id) loop
4306 
4307         PA_RBS_UTILS.PROCESS_RBS_CHANGES(c.RBS_HEADER_ID,
4308                                          c.NEW_RBS_VERSION_ID,
4309                                          c.OLD_RBS_VERSION_ID,
4310                                          l_return_status,
4311                                          l_msg_count,
4312                                          l_msg_data);
4313 
4314       end loop;
4315 
4316     end if;
4317 
4318     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_RBS_CHANGES(p_worker_id);');
4319 
4320     commit;
4321 
4322   end PROCESS_RBS_CHANGES;
4323 
4324 
4325   -- -----------------------------------------------------
4326   -- procedure CREATE_MAPPING_RULES
4327   --
4328   --   History
4329   --   19-MAR-2004  SVERMETT  Created
4330   --
4331   -- Internal PJP Summarization API.
4332   --
4333   -- Called by RBS program
4334   --
4335   -- -----------------------------------------------------
4336   procedure CREATE_MAPPING_RULES (p_worker_id in number) is
4337 
4338     cursor required_rbs (p_worker_id in number) is
4339     select
4340       distinct asg.RBS_VERSION_ID  -- bug 6892644
4341     from
4342       PJI_PJP_PROJ_BATCH_MAP map,
4343       PA_RBS_PRJ_ASSIGNMENTS asg
4344     where
4345       map.WORKER_ID            = p_worker_id    and
4346       asg.PROJECT_ID           = map.PROJECT_ID and
4347       asg.REPORTING_USAGE_FLAG = 'Y';
4348 
4349     l_process         varchar2(30);
4350     l_extraction_type varchar2(30);
4351 
4352     l_return_status   varchar2(255);
4353     l_msg_count       number;
4354     l_msg_data        varchar2(2000);
4355 
4356   begin
4357 
4358     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4359 
4360     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_MAPPING_RULES(p_worker_id);')) then
4361       return;
4362     end if;
4363 
4364     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4365 
4366     for c in required_rbs(p_worker_id) loop
4367 
4368       begin
4369       PA_RBS_MAPPING.CREATE_MAPPING_RULES(c.RBS_VERSION_ID,
4370                                           l_return_status,
4371                                           l_msg_count,
4372                                           l_msg_data);
4373       exception when others then
4374         PJI_UTILS.WRITE2LOG('CREATE_MAPPING_RULES:' ||
4375                             c.RBS_VERSION_ID || ' : ' || SQLERRM);
4376       end;
4377 
4378     end loop;
4379 
4380     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_MAPPING_RULES(p_worker_id);');
4381 
4382     commit;
4383 
4384   end CREATE_MAPPING_RULES;
4385 
4386 
4387   -- -----------------------------------------------------
4388   -- procedure MAP_RBS_HEADERS
4389   --
4390   --   History
4391   --   19-MAR-2004  SVERMETT  Created
4392   --
4393   -- Internal PJP Summarization API.
4394   --
4395   -- Called by RBS program
4396   --
4397   -- -----------------------------------------------------
4398   procedure MAP_RBS_HEADERS (p_worker_id in number) is
4399 
4400     l_process         varchar2(30);
4401     l_extraction_type varchar2(30);
4402 
4403     l_return_status   varchar2(255);
4404     l_msg_count       number;
4405     l_msg_data        varchar2(2000);
4406 
4407   begin
4408 
4409     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4410 
4411     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MAP_RBS_HEADERS(p_worker_id);')) then
4412       return;
4413     end if;
4414 
4415     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4416 
4417     begin
4418     PA_RBS_MAPPING.MAP_RBS_ACTUALS(p_worker_id,
4419                                    l_return_status,
4420                                    l_msg_count,
4421                                    l_msg_data);
4422     exception when others then
4423       PJI_UTILS.WRITE2LOG('MAP_RBS_HEADERS:' || SQLERRM);
4424     end;
4425 
4426     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MAP_RBS_HEADERS(p_worker_id);');
4427 
4428     commit;
4429 
4430   end MAP_RBS_HEADERS;
4431 
4432 
4433   -- -----------------------------------------------------
4434   -- procedure UPDATE_XBS_DENORM_FULL
4435   --
4436   --   History
4437   --   19-MAR-2004  SVERMETT  Created
4438   --
4439   -- Internal PJP Summarization API.
4440   --
4441   -- -----------------------------------------------------
4442   procedure UPDATE_XBS_DENORM_FULL (p_worker_id in number) is
4443 
4444     l_process           varchar2(30);
4445     l_extraction_type   varchar2(30);
4446 
4447     l_last_update_date  date;
4448     l_last_updated_by   number;
4449     l_creation_date     date;
4450     l_created_by        number;
4451     l_last_update_login number;
4452 
4453     l_count             number;
4454 
4455   begin
4456 
4457     l_last_update_date  := sysdate;
4458     l_last_updated_by   := FND_GLOBAL.USER_ID;
4459     l_creation_date     := sysdate;
4460     l_created_by        := FND_GLOBAL.USER_ID;
4461     l_last_update_login := FND_GLOBAL.LOGIN_ID;
4462 
4463     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4464 
4465     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM_FULL(p_worker_id);')) then
4466       return;
4467     end if;
4468 
4469     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4470 
4471     l_count := 0;
4472 
4473     if (l_extraction_type = 'FULL') then
4474 
4475       insert into PJI_XBS_DENORM den_i
4476       (
4477         STRUCT_TYPE,
4478         PRG_GROUP,
4479         STRUCT_VERSION_ID,
4480         SUP_PROJECT_ID,
4481         SUP_ID,
4482         SUP_EMT_ID,
4483         SUBRO_ID,
4484         SUB_ID,
4485         SUB_EMT_ID,
4486         SUP_LEVEL,
4487         SUB_LEVEL,
4488         SUB_ROLLUP_ID,
4489         SUB_LEAF_FLAG,
4490         RELATIONSHIP_TYPE,
4491         LAST_UPDATE_DATE,
4492         LAST_UPDATED_BY,
4493         CREATION_DATE,
4494         CREATED_BY,
4495         LAST_UPDATE_LOGIN
4496       )
4497       select
4498         pa.STRUCT_TYPE,
4499         pa.PRG_GROUP,
4500         pa.STRUCT_VERSION_ID,
4501         pa.SUP_PROJECT_ID,
4502         pa.SUP_ID,
4503         pa.SUP_EMT_ID,
4504         pa.SUBRO_ID,
4505         pa.SUB_ID,
4506         pa.SUB_EMT_ID,
4507         pa.SUP_LEVEL,
4508         pa.SUB_LEVEL,
4509         pa.SUB_ROLLUP_ID,
4510         pa.SUB_LEAF_FLAG,
4511         pa.RELATIONSHIP_TYPE,
4512         l_last_update_date,
4513         l_last_updated_by,
4514         l_creation_date,
4515         l_created_by,
4516         l_last_update_login
4517       from
4518         PJI_PJP_PROJ_BATCH_MAP map,
4519         PA_XBS_DENORM pa
4520       where
4521         map.WORKER_ID = p_worker_id and
4522         pa.SUP_PROJECT_ID = map.PROJECT_ID and
4523         not exists (select /*+ index(pji, PJI_XBS_DENORM_N3) */
4524                            1
4525                     from   PJI_XBS_DENORM pji
4526                     where  pji.STRUCT_TYPE    = 'PRG' and
4527                            pji.SUB_EMT_ID     = pji.SUB_ROLLUP_ID and
4528                            pji.SUP_PROJECT_ID = pa.SUP_PROJECT_ID);
4529 
4530         l_count := l_count + sql%rowcount;
4531 
4532     elsif (l_extraction_type = 'INCREMENTAL') then
4533 
4534       insert into PJI_XBS_DENORM den_i
4535       (
4536         STRUCT_TYPE,
4537         PRG_GROUP,
4538         STRUCT_VERSION_ID,
4539         SUP_PROJECT_ID,
4540         SUP_ID,
4541         SUP_EMT_ID,
4542         SUBRO_ID,
4543         SUB_ID,
4544         SUB_EMT_ID,
4545         SUP_LEVEL,
4546         SUB_LEVEL,
4547         SUB_ROLLUP_ID,
4548         SUB_LEAF_FLAG,
4549         RELATIONSHIP_TYPE,
4550         LAST_UPDATE_DATE,
4551         LAST_UPDATED_BY,
4552         CREATION_DATE,
4553         CREATED_BY,
4554         LAST_UPDATE_LOGIN
4555       )
4556       select /*+ ordered index(pa PA_XBS_DENORM_N3) use_hash(PA) */                  /* Modified for Bug 7669026 */
4557         pa.STRUCT_TYPE,
4558         pa.PRG_GROUP,
4559         pa.STRUCT_VERSION_ID,
4560         pa.SUP_PROJECT_ID,
4561         pa.SUP_ID,
4562         pa.SUP_EMT_ID,
4563         pa.SUBRO_ID,
4564         pa.SUB_ID,
4565         pa.SUB_EMT_ID,
4566         pa.SUP_LEVEL,
4567         pa.SUB_LEVEL,
4568         pa.SUB_ROLLUP_ID,
4569         pa.SUB_LEAF_FLAG,
4570         pa.RELATIONSHIP_TYPE,
4571         l_last_update_date,
4572         l_last_updated_by,
4573         l_creation_date,
4574         l_created_by,
4575         l_last_update_login
4576       from
4577         PJI_PJP_PROJ_BATCH_MAP map,
4578         PA_XBS_DENORM pa
4579       where
4580         map.WORKER_ID     = p_worker_id      and
4581         pa.SUP_PROJECT_ID = map.PROJECT_ID   and
4582         pa.STRUCT_TYPE    = 'PRG'            and
4583         pa.SUB_EMT_ID     = pa.SUB_ROLLUP_ID and
4584         not exists (select /*+ index(pji, PJI_XBS_DENORM_N3) use_hash(PJI) */                    /* Modified for Bug 7669026 */
4585                            1
4586                     from   PJI_XBS_DENORM pji
4587                     where  pji.STRUCT_TYPE    = 'PRG' and
4588                            pji.SUB_EMT_ID     = pji.SUB_ROLLUP_ID and
4589                            pji.SUP_PROJECT_ID = pa.SUP_PROJECT_ID);
4590 
4591     end if;
4592 
4593     if (l_count > 0) then
4594 
4595       delete
4596       from   PJI_REP_XBS_DENORM;
4597       -- where  PROJECT_ID in (select map.PROJECT_ID
4598       --                       from   PJI_PJP_PROJ_BATCH_MAP map
4599       --                       where  map.WORKER_ID = p_worker_id);
4600 
4601     end if;
4602 
4603     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM_FULL(p_worker_id);');
4604 
4605     commit;
4606 
4607   end UPDATE_XBS_DENORM_FULL;
4608 
4609 
4610   -- -----------------------------------------------------
4611   -- procedure LOCK_HEADERS
4612   --
4613   --   History
4614   --   19-MAR-2004  SVERMETT  Created
4615   --
4616   -- Internal PJP Summarization API.
4617   --
4618   -- Called by RBS program
4619   --
4620   -- -----------------------------------------------------
4621   procedure LOCK_HEADERS (p_worker_id in number) is
4622 
4623     l_process         varchar2(30);
4624     l_extraction_type varchar2(30);
4625 
4626     l_lock_mode       varchar2(255);
4627     l_return_status   varchar2(255);
4628     l_msg_code        varchar2(255);
4629 
4630   begin
4631 
4632     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4633 
4634     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.LOCK_HEADERS(p_worker_id);')) then
4635       return;
4636     end if;
4637 
4638     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4639 
4640     -- PJI_FM_XBS_ACCUM_MAINT.WBS_LOCK_PVT(p_online_flag   => 'N',
4641     --                                     x_lock_mode     => l_lock_mode,
4642     --                                     x_return_status => l_return_status);
4643 
4644     -- SELECT DECODE(l_extraction_type, 'PARTIAL', 'PLANTYPE', l_extraction_type)
4645     -- INTO   l_extraction_type
4646     -- FROM   DUAL ;
4647 
4648     Pji_Fm_Plan_Maint_Pvt.OBTAIN_RELEASE_LOCKS (
4649       p_context        => l_extraction_type
4650     , p_lock_mode      => 'P'
4651     , x_return_status  => l_return_status
4652     , x_msg_code       => l_msg_code
4653     );
4654 
4655     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.LOCK_HEADERS(p_worker_id);');
4656 
4657     commit;
4658 
4659   end LOCK_HEADERS;
4660 
4661 
4662   -- -----------------------------------------------------
4663   -- procedure UPDATE_PROGRAM_WBS
4664   --
4665   --   History
4666   --   19-MAR-2004  SVERMETT  Created
4667   --
4668   -- Internal PJP Summarization API.
4669   --
4670   -- -----------------------------------------------------
4671   procedure UPDATE_PROGRAM_WBS (p_worker_id in number) is
4672 
4673     l_process           varchar2(30);
4674     l_extraction_type   varchar2(30);
4675 
4676     l_last_update_date  date;
4677     l_last_updated_by   number;
4678     l_creation_date     date;
4679     l_created_by        number;
4680     l_last_update_login number;
4681 
4682   begin
4683 
4684     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4685 
4686     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_WBS(p_worker_id);')) then
4687       return;
4688     end if;
4689 
4690     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4691 
4692     l_last_update_date  := sysdate;
4693     l_last_updated_by   := FND_GLOBAL.USER_ID;
4694     l_creation_date     := sysdate;
4695     l_created_by        := FND_GLOBAL.USER_ID;
4696     l_last_update_login := FND_GLOBAL.LOGIN_ID;
4697 
4698     if (l_extraction_type = 'FULL') then
4699 
4700       insert into PJI_PJP_WBS_HEADER
4701       (
4702         PROJECT_ID,
4703         PLAN_VERSION_ID,
4704         WBS_VERSION_ID,
4705         WP_FLAG,
4706         CB_FLAG,
4707         CO_FLAG,
4708         LOCK_FLAG,
4709         PLAN_TYPE_ID,
4710         MIN_TXN_DATE,
4711         MAX_TXN_DATE,
4712         LAST_UPDATE_DATE,
4713         LAST_UPDATED_BY,
4714         CREATION_DATE,
4715         CREATED_BY,
4716         LAST_UPDATE_LOGIN,
4717         PLAN_TYPE_CODE
4718       )
4719       select
4720         PROJECT_ID,
4721         -1,
4722         PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(PROJECT_ID),
4723         'N',
4724         null,
4725         null,
4726         'P',
4727         null,
4728         to_date('3000/01/01', 'YYYY/MM/DD') MIN_TXN_DATE,
4729         to_date('0001/01/01', 'YYYY/MM/DD') MAX_TXN_DATE,
4730         l_last_update_date,
4731         l_last_updated_by,
4732         l_creation_date,
4733         l_created_by,
4734         l_last_update_login,
4735         'A'
4736       from
4737         (
4738         select
4739           distinct
4740           prj_emt.PROJECT_ID
4741         from
4742           PJI_PJP_PROJ_BATCH_MAP map,
4743           PA_PROJ_ELEMENTS prj_emt
4744         where
4745           map.WORKER_ID       = p_worker_id and
4746           prj_emt.OBJECT_TYPE = 'PA_STRUCTURES' and
4747           prj_emt.PROJECT_ID  = map.PROJECT_ID
4748         )
4749       order by
4750         PROJECT_ID;
4751 
4752       while (SQL%ROWCOUNT > 0) loop
4753 
4754         update PJI_PJP_WBS_HEADER wbs_hdr
4755         set    wbs_hdr.WBS_VERSION_ID =
4756                (select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
4757                        distinct log.ATTRIBUTE2
4758                 from   PA_PJI_PROJ_EVENTS_LOG log
4759                 where  log.EVENT_TYPE = 'WBS_PUBLISH' and
4760                        log.EVENT_OBJECT = wbs_hdr.WBS_VERSION_ID),
4761                wbs_hdr.LAST_UPDATE_DATE  = l_last_update_date,
4762                wbs_hdr.LAST_UPDATED_BY   = l_last_updated_by,
4763                wbs_hdr.LAST_UPDATE_LOGIN = l_last_update_login
4764         where  wbs_hdr.PROJECT_ID in
4765                (select map.PROJECT_ID
4766                 from   PJI_PJP_PROJ_BATCH_MAP map
4767                 where  map.WORKER_ID = p_worker_id) and
4768                wbs_hdr.PLAN_VERSION_ID = -1 and
4769                wbs_hdr.WBS_VERSION_ID in
4770                (select log.EVENT_OBJECT
4771                 from   PA_PJI_PROJ_EVENTS_LOG log
4772                 where  log.EVENT_TYPE = 'WBS_PUBLISH');
4773 
4774       end loop;
4775 
4776     else
4777 
4778       update PJI_PJP_WBS_HEADER
4779       set    WBS_VERSION_ID =
4780                          PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID
4781                          (PROJECT_ID),
4782              LOCK_FLAG         = 'P',
4783              LAST_UPDATE_DATE  = l_last_update_date,
4784              LAST_UPDATED_BY   = l_last_updated_by,
4785              LAST_UPDATE_LOGIN = l_last_update_login
4786       where  PLAN_VERSION_ID = -1 and
4787              PROJECT_ID in (select EVENT_OBJECT
4788                             from   PJI_PA_PROJ_EVENTS_LOG
4789                             where  WORKER_ID = p_worker_id and
4790                                    EVENT_TYPE in ('WBS_CHANGE',
4791                                                   'WBS_PUBLISH'));
4792 
4793       insert into PJI_PJP_WBS_HEADER
4794       (
4795         PROJECT_ID,
4796         PLAN_VERSION_ID,
4797         WBS_VERSION_ID,
4798         WP_FLAG,
4799         CB_FLAG,
4800         CO_FLAG,
4801         LOCK_FLAG,
4802         PLAN_TYPE_ID,
4803         MIN_TXN_DATE,
4804         MAX_TXN_DATE,
4805         LAST_UPDATE_DATE,
4806         LAST_UPDATED_BY,
4807         CREATION_DATE,
4808         CREATED_BY,
4809         LAST_UPDATE_LOGIN,
4810         PLAN_TYPE_CODE
4811       )
4812       select
4813         PROJECT_ID,
4814         -1,
4815         PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(PROJECT_ID),
4816         'N',
4817         null,
4818         null,
4819         'P',
4820         null,
4821         to_date('3000/01/01', 'YYYY/MM/DD') MIN_TXN_DATE,
4822         to_date('0001/01/01', 'YYYY/MM/DD') MAX_TXN_DATE,
4823         l_last_update_date,
4824         l_last_updated_by,
4825         l_creation_date,
4826         l_created_by,
4827         l_last_update_login,
4828         'A'
4829       from
4830         (
4831         select
4832           distinct
4833           prj_emt.PROJECT_ID
4834         from
4835           PJI_PA_PROJ_EVENTS_LOG log,
4836           PA_PROJ_ELEMENTS       prj_emt,
4837           PJI_PJP_WBS_HEADER     hdr
4838         where
4839           log.WORKER_ID       =  p_worker_id                   and
4840           log.EVENT_TYPE      in ('WBS_CHANGE', 'WBS_PUBLISH') and
4841           prj_emt.OBJECT_TYPE =  'PA_STRUCTURES'               and
4842           prj_emt.PROJECT_ID  =  log.EVENT_OBJECT              and
4843           -1                  =  hdr.PLAN_VERSION_ID (+)       and
4844           prj_emt.PROJECT_ID  =  hdr.PROJECT_ID      (+)       and
4845           hdr.PROJECT_ID      is null
4846         )
4847       order by
4848         PROJECT_ID;
4849 
4850     end if;
4851 
4852     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_WBS(p_worker_id);');
4853 
4854     commit;
4855 
4856   end UPDATE_PROGRAM_WBS;
4857 
4858 
4859   -- -----------------------------------------------------
4860   -- procedure PURGE_EVENT_DATA
4861   --
4862   --   History
4863   --   19-MAR-2004  SVERMETT  Created
4864   --
4865   -- Internal PJP Summarization API.
4866   --
4867   -- Called by RBS program
4868   --
4869   -- -----------------------------------------------------
4870   procedure PURGE_EVENT_DATA (p_worker_id in number) is
4871 
4872     l_process         varchar2(30);
4873     l_extraction_type varchar2(30);
4874 
4875     	/* Bug Fix 9212516 */
4876 	TYPE row_id_tab_type   IS TABLE OF rowid index by binary_integer;
4877     x_row_id               row_id_tab_type;
4878 
4879 	 cursor c1 (p_worker_id in number) is
4880       select rowid from PJI_FP_XBS_ACCUM_F
4881 	 where RBS_AGGR_LEVEL in ('L', 'R') and
4882              (PROJECT_ID,
4883               PLAN_VERSION_ID,
4884               RBS_VERSION_ID) in
4885                              -- Bug 12420151 -- Added below select
4886                              (select /*+ use_hash(log, rbs_hdr) ordered  */ distinct
4887                                      rbs_hdr.PROJECT_ID,
4888                                      rbs_hdr.PLAN_VERSION_ID,
4889                                      rbs_hdr.RBS_VERSION_ID
4890                                from   PJI_PA_PROJ_EVENTS_LOG log,
4891                                       PJI_PJP_RBS_HEADER rbs_hdr
4892                                where  log.WORKER_ID = p_worker_id
4893                                and  ( (log.EVENT_TYPE = 'RBS_PUSH' and rbs_hdr.RBS_VERSION_ID = log.ATTRIBUTE2)
4894                                  or   (log.EVENT_TYPE = 'RBS_DELETE' and rbs_hdr.RBS_VERSION_ID = log.EVENT_OBJECT)));
4895                              -- Bug 12420151 -- Commented below select
4896                                   /*(select distinct
4897                                          rbs_hdr.PROJECT_ID,
4898                                          rbs_hdr.PLAN_VERSION_ID,
4899                                          rbs_hdr.RBS_VERSION_ID
4900                                   from   PJI_PA_PROJ_EVENTS_LOG log,
4901                                          PJI_PJP_RBS_HEADER rbs_hdr
4902                                   where  log.WORKER_ID = p_worker_id and
4903                                          log.EVENT_TYPE = 'RBS_PUSH' and
4904                                          rbs_hdr.RBS_VERSION_ID =
4905                                            log.ATTRIBUTE2
4906                                   union
4907                                   select distinct
4908                                          rbs_hdr.PROJECT_ID,
4909                                          rbs_hdr.PLAN_VERSION_ID,
4910                                          rbs_hdr.RBS_VERSION_ID
4911                                   from   PJI_PA_PROJ_EVENTS_LOG log,
4912                                          PJI_PJP_RBS_HEADER rbs_hdr
4913                                   where  log.WORKER_ID = p_worker_id and
4914                                          log.EVENT_TYPE = 'RBS_DELETE' and
4915                                               rbs_hdr.RBS_VERSION_ID = log.EVENT_OBJECT); */
4916 
4917        /* Bug Fix 9212516 */
4918 
4919   begin
4920 
4921     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4922 
4923     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_EVENT_DATA(p_worker_id);')) then
4924       return;
4925     end if;
4926 
4927     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4928 
4929     if (l_extraction_type = 'INCREMENTAL') then
4930 
4931       delete
4932       from   PJI_FP_XBS_ACCUM_F
4933       where  (RBS_AGGR_LEVEL,
4934               WBS_ROLLUP_FLAG,
4935               PRG_ROLLUP_FLAG) in (('L', 'Y', 'N'),
4936                                    ('R', 'N', 'N'),
4937                                    ('R', 'Y', 'N')) and
4938              (PROJECT_ID,
4939               PLAN_VERSION_ID,
4940               decode(PLAN_VERSION_ID,
4941                      -3, PLAN_TYPE_ID,
4942                      -4, PLAN_TYPE_ID,
4943                          -1)) in (select
4944                                     log.ATTRIBUTE1,
4945                                     decode(log.EVENT_TYPE,
4946                                            'WBS_CHANGE',    log.ATTRIBUTE3,
4947                                            'WBS_PUBLISH',   log.ATTRIBUTE3,
4948                                            'PLAN_BASELINE', -3,
4949                                            'PLAN_ORIGINAL', -4),
4950                                     decode(log.EVENT_TYPE,
4951                                            'WBS_CHANGE',    -1,
4952                                            'WBS_PUBLISH',   -1,
4953                                            'PLAN_BASELINE', log.ATTRIBUTE2,
4954                                            'PLAN_ORIGINAL', log.ATTRIBUTE2)
4955                                    from
4956                                      PJI_PA_PROJ_EVENTS_LOG log
4957                                    where
4958                                      log.WORKER_ID = p_worker_id and
4959                                      log.EVENT_TYPE in ('WBS_CHANGE',
4960                                                         'WBS_PUBLISH',
4961                                                         'PLAN_BASELINE',
4962                                                         'PLAN_ORIGINAL'));
4963 
4964     elsif (l_extraction_type = 'RBS') then
4965 
4966       delete
4967       from   PJI_PJP_RBS_HEADER
4968       where  RBS_VERSION_ID in (select distinct
4969                                        log.EVENT_OBJECT
4970                                 from   PJI_PA_PROJ_EVENTS_LOG log
4971                                 where  log.WORKER_ID = p_worker_id and
4972                                        log.EVENT_TYPE = 'RBS_DELETE');
4973 
4974       delete
4975       from   PJI_ROLLUP_LEVEL_STATUS
4976       where  RBS_VERSION_ID in (select distinct
4977                                        decode(log.EVENT_TYPE,
4978                                               'RBS_PUSH', log.ATTRIBUTE2,
4979                                               'RBS_DELETE', log.EVENT_OBJECT)
4980                                 from   PJI_PA_PROJ_EVENTS_LOG log
4981                                 where  log.WORKER_ID = p_worker_id and
4982                                        log.EVENT_TYPE in ('RBS_PUSH',
4983                                                           'RBS_DELETE'));
4984 
4985            /*Bug Fix 9212516*/
4986 	 open c1(p_worker_id);
4987 	  loop
4988 
4989 		 fetch c1 bulk collect into x_row_id limit 500000;
4990 
4991 	  If x_row_id.count > 0  then
4992 
4993 	  Forall i in x_row_id.first..x_row_id.last
4994 		  delete
4995 		  from   PJI_FP_XBS_ACCUM_F
4996 		  where  rowid = x_row_id(i);
4997 
4998 		   x_row_id.delete;
4999 
5000 		 exit when c1%notfound;
5001 	   Else
5002 		   Exit;
5003 
5004 		 END IF;
5005 
5006 	   end loop;
5007 
5008 	  close c1;
5009     /*Bug Fix 9212516*/
5010 
5011 
5012     end if;
5013 
5014     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_EVENT_DATA(p_worker_id);');
5015 
5016     commit;
5017 
5018   end PURGE_EVENT_DATA;
5019 
5020 
5021   -- -----------------------------------------------------
5022   -- procedure UPDATE_PROGRAM_RBS
5023   --
5024   --   History
5025   --   19-MAR-2004  SVERMETT  Created
5026   --
5027   -- Internal PJP Summarization API.
5028   --
5029   -- Called by RBS program
5030   --
5031   -- -----------------------------------------------------
5032   procedure UPDATE_PROGRAM_RBS (p_worker_id in number) is
5033 
5034     cursor rbs_prg_full (p_worker_id in number) is
5035     select
5036       distinct
5037       asg.RBS_HEADER_ID,
5038       asg.RBS_VERSION_ID,
5039       den2.SUP_PROJECT_ID             PROJECT_ID,
5040       decode(den1.SUB_EMT_ID,
5041              den1.SUB_ROLLUP_ID, 'Y',
5042                                  'N') PROG_REP_USAGE_FLAG,
5043       'Y'                             REPORTING_USAGE_FLAG,
5044       'N'                             FP_USAGE_FLAG
5045     from
5046       PJI_PJP_PROJ_BATCH_MAP map,
5047       PA_RBS_PRJ_ASSIGNMENTS asg,
5048       PA_XBS_DENORM          den1,
5049       PA_XBS_DENORM          den2
5050     where
5051       map.WORKER_ID            =  p_worker_id     and
5052       asg.PROJECT_ID           =  map.PROJECT_ID  and
5053       asg.PROG_REP_USAGE_FLAG  =  'Y'             and
5054       asg.REPORTING_USAGE_FLAG =  'Y'             and
5055       den1.STRUCT_TYPE         =  'PRG'           and
5056       den1.STRUCT_VERSION_ID   is null            and
5057       den1.SUP_PROJECT_ID      =  asg.PROJECT_ID  and
5058       (den1.SUB_EMT_ID = den1.SUB_ROLLUP_ID or
5059        den1.SUP_EMT_ID <> den1.SUB_EMT_ID)        and
5060       den2.STRUCT_TYPE         =  'PRG'           and
5061       den2.STRUCT_VERSION_ID   is null            and
5062       den2.SUP_EMT_ID          =  den2.SUB_EMT_ID and
5063       den2.SUP_EMT_ID          =  den1.SUB_EMT_ID
5064     order by
5065       asg.RBS_HEADER_ID,
5066       asg.RBS_VERSION_ID;
5067 
5068     cursor rbs_prg (p_worker_id in number) is
5069     select
5070       distinct
5071       log.ATTRIBUTE2   RBS_HEADER_ID,
5072       log.EVENT_OBJECT RBS_VERSION_ID,
5073       log.ATTRIBUTE1   PROJECT_ID,
5074       log.ATTRIBUTE17  PROGRAM_ID,
5075       log.ATTRIBUTE18  PROG_REP_USAGE_FLAG,
5076       'Y'              REPORTING_USAGE_FLAG,
5077       'N'              FP_USAGE_FLAG,
5078       log.ATTRIBUTE19  UPDATE_HEADER_ONLY_FLAG
5079     from
5080       PJI_PA_PROJ_EVENTS_LOG log
5081     where
5082       log.WORKER_ID   = p_worker_id               and
5083       log.EVENT_TYPE  = 'RBS_ASSOC'               and
5084       log.ATTRIBUTE20 = 'CONVERTED_RBS_PRG_EVENT'
5085     order by
5086       log.ATTRIBUTE17,
5087       log.ATTRIBUTE2,
5088       log.EVENT_OBJECT;
5089 
5090     cursor rbs_assoc (p_worker_id in number) is
5091     select
5092       distinct
5093       log.ATTRIBUTE2   RBS_HEADER_ID,
5094       log.EVENT_OBJECT RBS_VERSION_ID,
5095       log.ATTRIBUTE1   PROJECT_ID,
5096       'N'              PROG_REP_USAGE_FLAG,
5097       'Y'              REPORTING_USAGE_FLAG,
5098       'N'              FP_USAGE_FLAG
5099     from
5100       PJI_PA_PROJ_EVENTS_LOG log
5101     where
5102       log.WORKER_ID   = p_worker_id and
5103       log.EVENT_TYPE  = 'RBS_ASSOC' and
5104       log.ATTRIBUTE20 is null
5105     order by
5106       log.ATTRIBUTE2,
5107       log.EVENT_OBJECT;
5108 
5109     cursor rbs_push (p_worker_id in number) is
5110     select
5111       distinct
5112       log.ATTRIBUTE20  RBS_HEADER_ID,
5113       log.EVENT_OBJECT RBS_VERSION_ID,
5114       log.ATTRIBUTE2   OLD_RBS_VERSION_ID,
5115       log.ATTRIBUTE19  PROJECT_ID,
5116       'N'              PROG_REP_USAGE_FLAG,
5117       'Y'              REPORTING_USAGE_FLAG,
5118       'N'              FP_USAGE_FLAG
5119     from
5120       PJI_PA_PROJ_EVENTS_LOG log
5121     where
5122       log.WORKER_ID = p_worker_id and
5123       log.EVENT_TYPE = 'RBS_PUSH'
5124     order by
5125       log.ATTRIBUTE20,
5126       log.EVENT_OBJECT;
5127 
5128     l_process           varchar2(30);
5129     l_extraction_type   varchar2(30);
5130 
5131     l_program_id        number;
5132     l_rbs_header_id     number;
5133     l_rbs_version_id    number;
5134     l_prj_index         number;
5135     l_project_id_tbl    system.pa_num_tbl_type;
5136     l_count             number;
5137     l_rowid             rowid;
5138     l_return_status     varchar2(255);
5139     l_error_code        varchar2(255);
5140 
5141     l_last_update_date  date;
5142     l_last_updated_by   number;
5143     l_creation_date     date;
5144     l_created_by        number;
5145     l_last_update_login number;
5146 
5147   begin
5148 
5149     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
5150 
5151     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_RBS(p_worker_id);')) then
5152       return;
5153     end if;
5154 
5155     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
5156 
5157     l_last_update_date  := sysdate;
5158     l_last_updated_by   := FND_GLOBAL.USER_ID;
5159     l_creation_date     := sysdate;
5160     l_created_by        := FND_GLOBAL.USER_ID;
5161     l_last_update_login := FND_GLOBAL.LOGIN_ID;
5162 
5163     if (l_extraction_type = 'FULL') then
5164 
5165       l_rbs_header_id := -1;
5166       l_rbs_version_id := -1;
5167       l_prj_index := 1;
5168       l_project_id_tbl := system.pa_num_tbl_type();
5169       l_project_id_tbl.delete;
5170 
5171       for c in rbs_prg_full(p_worker_id) loop
5172 
5173         l_project_id_tbl.extend(1);
5174         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
5175         l_prj_index := l_prj_index + 1;
5176 
5177         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
5178 
5179           l_rbs_header_id := c.RBS_HEADER_ID;
5180           l_rbs_version_id := c.RBS_VERSION_ID;
5181 
5182         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
5183                c.RBS_VERSION_ID <> l_rbs_version_id) then
5184 
5185           PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
5186                                                     l_rbs_version_id,
5187                                                     l_project_id_tbl,
5188                                                     l_return_status);
5189 
5190           l_rbs_header_id := c.RBS_HEADER_ID;
5191           l_rbs_version_id := c.RBS_VERSION_ID;
5192           l_prj_index := 1;
5193           l_project_id_tbl.delete;
5194 
5195         end if;
5196 
5197         insert into PJI_PJP_RBS_HEADER
5198         (
5199           PROJECT_ID,
5200           PLAN_VERSION_ID,
5201           RBS_VERSION_ID,
5202           REPORTING_USAGE_FLAG,
5203           PROG_REP_USAGE_FLAG,
5204           PLAN_USAGE_FLAG,
5205           LAST_UPDATE_DATE,
5206           LAST_UPDATED_BY,
5207           CREATION_DATE,
5208           CREATED_BY,
5209           LAST_UPDATE_LOGIN,
5210           PLAN_TYPE_CODE
5211         )
5212         select
5213           c.PROJECT_ID,
5214           -1,
5215           c.RBS_VERSION_ID,
5216           c.REPORTING_USAGE_FLAG,
5217           c.PROG_REP_USAGE_FLAG,
5218           c.FP_USAGE_FLAG,
5219           l_last_update_date,
5220           l_last_updated_by,
5221           l_creation_date,
5222           l_created_by,
5223           l_last_update_login,
5224           'A'
5225         from
5226           dual
5227         where
5228           not exists
5229           (
5230           select
5231             1
5232           from
5233             PJI_PJP_RBS_HEADER rbs_hdr
5234           where
5235             rbs_hdr.PROJECT_ID      = c.PROJECT_ID and
5236             rbs_hdr.PLAN_VERSION_ID = -1 and
5237             rbs_hdr.RBS_VERSION_ID  = c.RBS_VERSION_ID
5238           );
5239 
5240       end loop;
5241 
5242       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
5243 
5244         PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
5245                                                   l_rbs_version_id,
5246                                                   l_project_id_tbl,
5247                                                   l_return_status);
5248 
5249       end if;
5250 
5251       insert into PJI_PJP_RBS_HEADER
5252       (
5253         PROJECT_ID,
5254         PLAN_VERSION_ID,
5255         RBS_VERSION_ID,
5256         REPORTING_USAGE_FLAG,
5257         PROG_REP_USAGE_FLAG,
5258         PLAN_USAGE_FLAG,
5259         LAST_UPDATE_DATE,
5260         LAST_UPDATED_BY,
5261         CREATION_DATE,
5262         CREATED_BY,
5263         LAST_UPDATE_LOGIN,
5264         PLAN_TYPE_CODE
5265       )
5266       select
5267         distinct
5268         asg.PROJECT_ID,
5269         -1,
5270         asg.RBS_VERSION_ID,
5271         asg.REPORTING_USAGE_FLAG,
5272         asg.PROG_REP_USAGE_FLAG,
5273         asg.FP_USAGE_FLAG,
5274         l_last_update_date,
5275         l_last_updated_by,
5276         l_creation_date,
5277         l_created_by,
5278         l_last_update_login,
5279         'A'
5280       from
5281         PJI_PJP_PROJ_BATCH_MAP map,
5282         PA_RBS_PRJ_ASSIGNMENTS asg,
5283         PJI_PJP_RBS_HEADER     rbs_hdr
5284       where
5285         map.WORKER_ID            = p_worker_id                 and
5286         asg.PROJECT_ID           = map.PROJECT_ID              and
5287         asg.REPORTING_USAGE_FLAG =  'Y'                        and
5288         asg.PROJECT_ID           = rbs_hdr.PROJECT_ID      (+) and
5289         -1                       = rbs_hdr.PLAN_VERSION_ID (+) and
5290         asg.RBS_VERSION_ID       = rbs_hdr.RBS_VERSION_ID  (+) and
5291         rbs_hdr.PROJECT_ID is null;
5292 
5293       insert into PJI_PJP_RBS_HEADER
5294       (
5295         PROJECT_ID,
5296         PLAN_VERSION_ID,
5297         RBS_VERSION_ID,
5298         REPORTING_USAGE_FLAG,
5299         PROG_REP_USAGE_FLAG,
5300         PLAN_USAGE_FLAG,
5301         LAST_UPDATE_DATE,
5302         LAST_UPDATED_BY,
5303         CREATION_DATE,
5304         CREATED_BY,
5305         LAST_UPDATE_LOGIN,
5306         PLAN_TYPE_CODE
5307       )
5308       select
5309         map.PROJECT_ID,
5310         -1,
5311         -1,
5312         'N',
5313         'N',
5314         'N',
5315         l_last_update_date,
5316         l_last_updated_by,
5317         l_creation_date,
5318         l_created_by,
5319         l_last_update_login,
5320         'A'
5321       from
5322         PJI_PJP_PROJ_BATCH_MAP map
5323       where
5324         map.WORKER_ID = p_worker_id;
5325 
5326     elsif (l_extraction_type = 'INCREMENTAL' or
5327            l_extraction_type = 'PARTIAL') then
5328 
5329       -- RBS_PRG
5330 
5331       l_program_id     := -1;
5332       l_rbs_header_id  := -1;
5333       l_rbs_version_id := -1;
5334       l_prj_index      :=  1;
5335       l_project_id_tbl :=  system.pa_num_tbl_type();
5336       l_project_id_tbl.delete;
5337 
5338       for c in rbs_prg(p_worker_id) loop
5339 
5340         if (c.UPDATE_HEADER_ONLY_FLAG is null) then
5341 
5342           l_project_id_tbl.extend(1);
5343           l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
5344           l_prj_index := l_prj_index + 1;
5345 
5346           if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
5347 
5348             l_program_id     := c.PROGRAM_ID;
5349             l_rbs_header_id  := c.RBS_HEADER_ID;
5350             l_rbs_version_id := c.RBS_VERSION_ID;
5351 
5352           elsif (c.PROGRAM_ID     <> l_program_id or
5353                  c.RBS_HEADER_ID  <> l_rbs_header_id or
5354                  c.RBS_VERSION_ID <> l_rbs_version_id) then
5355 
5356             PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
5357                                                       l_rbs_version_id,
5358                                                       l_project_id_tbl,
5359                                                       l_return_status);
5360 
5361             l_program_id     := c.PROGRAM_ID;
5362             l_rbs_header_id  := c.RBS_HEADER_ID;
5363             l_rbs_version_id := c.RBS_VERSION_ID;
5364             l_prj_index      := 1;
5365             l_project_id_tbl.delete;
5366 
5367           end if;
5368 
5369         end if;
5370 
5371         update PJI_PJP_RBS_HEADER
5372         set    RBS_VERSION_ID       = c.RBS_VERSION_ID,
5373                REPORTING_USAGE_FLAG = c.REPORTING_USAGE_FLAG,
5374                PROG_REP_USAGE_FLAG  = c.PROG_REP_USAGE_FLAG,
5375                LAST_UPDATE_DATE     = l_last_update_date,
5376                LAST_UPDATED_BY      = l_last_updated_by,
5377                LAST_UPDATE_LOGIN    = l_last_update_login
5378         where  PROJECT_ID                = c.PROJECT_ID     and
5379                RBS_VERSION_ID            = c.RBS_VERSION_ID and
5380                PLAN_VERSION_ID           = -1               and
5381                c.UPDATE_HEADER_ONLY_FLAG = 'MARK_AS_PROG_REP';
5382 
5383         if (sql%rowcount = 0) then
5384 
5385           insert into PJI_PJP_RBS_HEADER
5386           (
5387             PROJECT_ID,
5388             PLAN_VERSION_ID,
5389             RBS_VERSION_ID,
5390             REPORTING_USAGE_FLAG,
5391             PROG_REP_USAGE_FLAG,
5392             PLAN_USAGE_FLAG,
5393             LAST_UPDATE_DATE,
5394             LAST_UPDATED_BY,
5395             CREATION_DATE,
5396             CREATED_BY,
5397             LAST_UPDATE_LOGIN,
5398             PLAN_TYPE_CODE
5399           )
5400           values
5401           (
5402             c.PROJECT_ID,
5403             -1,
5404             c.RBS_VERSION_ID,
5405             c.REPORTING_USAGE_FLAG,
5406             c.PROG_REP_USAGE_FLAG,
5407             c.FP_USAGE_FLAG,
5408             l_last_update_date,
5409             l_last_updated_by,
5410             l_creation_date,
5411             l_created_by,
5412             l_last_update_login,
5413             'A'
5414           );
5415 
5416           insert into PJI_PA_PROJ_EVENTS_LOG
5417           (
5418             WORKER_ID,
5419             EVENT_TYPE,
5420             EVENT_ID,
5421             EVENT_OBJECT,
5422             OPERATION_TYPE,
5423             STATUS
5424           )
5425           select
5426             p_worker_id,
5427             'PJI_RBS_CHANGE',
5428             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
5429             c.RBS_VERSION_ID,
5430             'I',
5431             'X'
5432           from
5433             DUAL
5434           where
5435             not exists (select 1
5436                         from   PA_RBS_DENORM rbs
5437                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
5438 
5439         end if;
5440 
5441       end loop;
5442 
5443       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
5444 
5445         PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
5446                                                   l_rbs_version_id,
5447                                                   l_project_id_tbl,
5448                                                   l_return_status);
5449 
5450       end if;
5451 
5452       delete
5453       from   PJI_PA_PROJ_EVENTS_LOG
5454       where  WORKER_ID   = p_worker_id and
5455              EVENT_TYPE  = 'RBS_ASSOC' and
5456              ATTRIBUTE19 = 'MARK_AS_PROG_REP';
5457 
5458       -- RBS_ASSOC
5459 
5460       l_rbs_header_id := -1;
5461       l_rbs_version_id := -1;
5462       l_prj_index := 1;
5463       l_project_id_tbl := system.pa_num_tbl_type();
5464       l_project_id_tbl.delete;
5465 
5466       for c in rbs_assoc(p_worker_id) loop
5467 
5468         l_project_id_tbl.extend(1);
5469         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
5470         l_prj_index := l_prj_index + 1;
5471 
5472         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
5473 
5474           l_rbs_header_id := c.RBS_HEADER_ID;
5475           l_rbs_version_id := c.RBS_VERSION_ID;
5476 
5477         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
5478                c.RBS_VERSION_ID <> l_rbs_version_id) then
5479 
5480           PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
5481                                               l_project_id_tbl,
5482                                               l_return_status);
5483 
5484           l_rbs_header_id := c.RBS_HEADER_ID;
5485           l_rbs_version_id := c.RBS_VERSION_ID;
5486           l_prj_index := 1;
5487           l_project_id_tbl.delete;
5488 
5489         end if;
5490 
5491         update PJI_PJP_RBS_HEADER
5492         set    RBS_VERSION_ID    = c.RBS_VERSION_ID,
5493                LAST_UPDATE_DATE  = l_last_update_date,
5494                LAST_UPDATED_BY   = l_last_updated_by,
5495                LAST_UPDATE_LOGIN = l_last_update_login
5496         where  PROJECT_ID      = c.PROJECT_ID and
5497                RBS_VERSION_ID  = c.RBS_VERSION_ID and
5498                PLAN_VERSION_ID = -1;
5499 
5500         if (sql%rowcount = 0) then
5501 
5502           insert into PJI_PJP_RBS_HEADER
5503           (
5504             PROJECT_ID,
5505             PLAN_VERSION_ID,
5506             RBS_VERSION_ID,
5507             REPORTING_USAGE_FLAG,
5508             PROG_REP_USAGE_FLAG,
5509             PLAN_USAGE_FLAG,
5510             LAST_UPDATE_DATE,
5511             LAST_UPDATED_BY,
5512             CREATION_DATE,
5513             CREATED_BY,
5514             LAST_UPDATE_LOGIN,
5515             PLAN_TYPE_CODE
5516           )
5517           values
5518           (
5519             c.PROJECT_ID,
5520             -1,
5521             c.RBS_VERSION_ID,
5522             c.REPORTING_USAGE_FLAG,
5523             c.PROG_REP_USAGE_FLAG,
5524             c.FP_USAGE_FLAG,
5525             l_last_update_date,
5526             l_last_updated_by,
5527             l_creation_date,
5528             l_created_by,
5529             l_last_update_login,
5530             'A'
5531           );
5532 
5533           insert into PJI_PA_PROJ_EVENTS_LOG
5534           (
5535             WORKER_ID,
5536             EVENT_TYPE,
5537             EVENT_ID,
5538             EVENT_OBJECT,
5539             OPERATION_TYPE,
5540             STATUS
5541           )
5542           select
5543             p_worker_id,
5544             'PJI_RBS_CHANGE',
5545             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
5546             c.RBS_VERSION_ID,
5547             'I',
5548             'X'
5549           from
5550             DUAL
5551           where
5552             not exists (select 1
5553                         from   PA_RBS_DENORM rbs
5554                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
5555 
5556         end if;
5557 
5558       end loop;
5559 
5560       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
5561 
5562         PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
5563                                             l_project_id_tbl,
5564                                             l_return_status);
5565 
5566       end if;
5567 
5568     elsif (l_extraction_type = 'RBS') then
5569 
5570       l_rbs_header_id := -1;
5571       l_rbs_version_id := -1;
5572       l_prj_index := 1;
5573       l_project_id_tbl := system.pa_num_tbl_type();
5574       l_project_id_tbl.delete;
5575 
5576       for c in rbs_push(p_worker_id) loop
5577 
5578         l_project_id_tbl.extend(1);
5579         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
5580         l_prj_index := l_prj_index + 1;
5581 
5582         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
5583 
5584           l_rbs_header_id := c.RBS_HEADER_ID;
5585           l_rbs_version_id := c.RBS_VERSION_ID;
5586 
5587         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
5588                c.RBS_VERSION_ID <> l_rbs_version_id) then
5589 
5590           PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
5591                                               l_project_id_tbl,
5592                                               l_return_status);
5593 
5594           l_rbs_header_id := c.RBS_HEADER_ID;
5595           l_rbs_version_id := c.RBS_VERSION_ID;
5596           l_prj_index := 1;
5597           l_project_id_tbl.delete;
5598 
5599         end if;
5600 
5601         update PJI_PJP_RBS_HEADER
5602         set    RBS_VERSION_ID    = c.RBS_VERSION_ID,
5603                LAST_UPDATE_DATE  = l_last_update_date,
5604                LAST_UPDATED_BY   = l_last_updated_by,
5605                LAST_UPDATE_LOGIN = l_last_update_login
5606         where  PROJECT_ID      = c.PROJECT_ID and
5607                RBS_VERSION_ID  = c.OLD_RBS_VERSION_ID and
5608                PLAN_VERSION_ID = -1;
5609 
5610         insert into PJI_PA_PROJ_EVENTS_LOG
5611         (
5612           WORKER_ID,
5613           EVENT_TYPE,
5614           EVENT_ID,
5615           EVENT_OBJECT,
5616           OPERATION_TYPE,
5617           STATUS
5618         )
5619         select
5620           p_worker_id,
5621           'PJI_RBS_CHANGE',
5622           PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
5623           c.RBS_VERSION_ID,
5624           'I',
5625           'X'
5626         from
5627           DUAL
5628         where
5629           not exists (select 1
5630                       from   PA_RBS_DENORM rbs
5631                       where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
5632 
5633       end loop;
5634 
5635       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
5636 
5637         PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
5638                                             l_project_id_tbl,
5639                                             l_return_status);
5640 
5641       end if;
5642 
5643     end if;
5644 
5645     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_RBS(p_worker_id);');
5646 
5647     commit;
5648 
5649   end UPDATE_PROGRAM_RBS;
5650 
5651 
5652   -- -----------------------------------------------------
5653   -- procedure SET_ONLINE_CONTEXT
5654   --
5655   --   History
5656   --   19-MAR-2004  SVERMETT  Created
5657   --
5658   -- This API will be called during online processing.
5659   --
5660   -- -----------------------------------------------------
5661   procedure SET_ONLINE_CONTEXT (p_event_id              in number,
5662                                 p_project_id            in number,
5663                                 p_plan_type_id          in number,
5664                                 p_old_baselined_version in number,
5665                                 p_new_baselined_version in number,
5666                                 p_old_original_version  in number,
5667                                 p_new_original_version  in number,
5668                                 p_old_struct_version    in number,
5669                                 p_new_struct_version    in number,
5670                                 p_rbs_version in number default null) is
5671 
5672   begin
5673 
5674     g_event_id              := p_event_id;
5675     g_project_id            := p_project_id;
5676     g_plan_type_id          := p_plan_type_id;
5677     g_old_baselined_version := p_old_baselined_version;
5678     g_new_baselined_version := p_new_baselined_version;
5679     g_old_original_version  := p_old_original_version;
5680     g_new_original_version  := p_new_original_version;
5681     g_old_struct_version    := p_old_struct_version;
5682     g_new_struct_version    := p_new_struct_version;
5683     g_rbs_version           := p_rbs_version;
5684 
5685   end SET_ONLINE_CONTEXT;
5686 
5687 
5688   -- -----------------------------------------------------
5689   -- procedure POPULATE_XBS_DENORM_DELTA
5690   --
5691   --   History
5692   --   19-MAR-2004  SVERMETT  Created
5693   --
5694   -- This API will be called for both online and bulk processing.
5695   --
5696   -- -----------------------------------------------------
5697   procedure POPULATE_XBS_DENORM_DELTA (p_worker_id in number default null) is
5698 
5699     l_process           varchar2(30);
5700     l_extraction_type   varchar2(30);
5701 
5702     l_program_id        number;
5703     l_rbs_header_id     number;
5704     l_rbs_version_id    number;
5705     l_prj_index         number;
5706     l_project_id_tbl    system.pa_num_tbl_type;
5707     l_count             number;
5708     l_rowid             rowid;
5709     l_return_status     varchar2(255);
5710     l_error_code        varchar2(255);
5711 
5712     l_last_update_date  date;
5713     l_last_updated_by   number;
5714     l_creation_date     date;
5715     l_created_by        number;
5716     l_last_update_login number;
5717 
5718   begin
5719 
5720     if (p_worker_id is not null) then
5721 
5722       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
5723 
5724       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_XBS_DENORM_DELTA(p_worker_id);')) then
5725         return;
5726       end if;
5727 
5728       l_last_update_date  := sysdate;
5729       l_last_updated_by   := FND_GLOBAL.USER_ID;
5730       l_creation_date     := sysdate;
5731       l_created_by        := FND_GLOBAL.USER_ID;
5732       l_last_update_login := FND_GLOBAL.LOGIN_ID;
5733 
5734       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
5735 
5736       if (l_extraction_type = 'INCREMENTAL') then
5737 
5738         insert into PJI_XBS_DENORM_DELTA delta_i
5739         (
5740           WORKER_ID,
5741           EVENT_ID,
5742           STRUCT_TYPE,
5743           PRG_GROUP,
5744           STRUCT_VERSION_ID,
5745           SUP_PROJECT_ID,
5746           SUP_ID,
5747           SUP_EMT_ID,
5748           SUBRO_ID,
5749           SUB_ID,
5750           SUB_EMT_ID,
5751           SUP_LEVEL,
5752           SUB_LEVEL,
5753           SUB_ROLLUP_ID,
5754           SUB_LEAF_FLAG,
5755           RELATIONSHIP_TYPE,
5756           SIGN
5757         )
5758         select
5759           p_worker_id,
5760           EVENT_ID,
5761           STRUCT_TYPE,
5762           PRG_GROUP,
5763           STRUCT_VERSION_ID,
5764           SUP_PROJECT_ID,
5765           SUP_ID,
5766           SUP_EMT_ID,
5767           SUBRO_ID,
5768           SUB_ID,
5769           SUB_EMT_ID,
5770           decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
5771                                         sum(SUP_LEVEL_NEW)) SUP_LEVEL,
5772           decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
5773                                         sum(SUB_LEVEL_NEW)) SUB_LEVEL,
5774           SUB_ROLLUP_ID,
5775           SUB_LEAF_FLAG,
5776           RELATIONSHIP_TYPE,
5777           sum(SIGN) SIGN
5778         from
5779           (
5780           select
5781             distinct
5782             log.EVENT_ID,
5783             wbs.STRUCT_TYPE,
5784             -1                               PRG_GROUP,
5785             wbs.STRUCT_VERSION_ID,
5786             wbs.SUP_PROJECT_ID,
5787             -1                               SUP_ID,
5788             wbs.SUP_EMT_ID,
5789             -1                               SUBRO_ID,
5790             -1                               SUB_ID,
5791             wbs.SUB_EMT_ID,
5792             wbs.SUP_LEVEL                    SUP_LEVEL_NEW,
5793             wbs.SUB_LEVEL                    SUB_LEVEL_NEW,
5794             0                                SUP_LEVEL_OLD,
5795             0                                SUB_LEVEL_OLD,
5796             wbs.SUB_ROLLUP_ID,
5797             'X'                              SUB_LEAF_FLAG,
5798             'X'                              RELATIONSHIP_TYPE,
5799             +1                               SIGN
5800           from
5801             PA_XBS_DENORM wbs,
5802             PJI_PA_PROJ_EVENTS_LOG log
5803           where
5804             log.WORKER_ID         =  p_worker_id                   and
5805             log.EVENT_TYPE        in ('WBS_CHANGE', 'WBS_PUBLISH') and
5806             wbs.STRUCT_TYPE       =  'WBS'                         and
5807             wbs.SUP_PROJECT_ID    =  log.ATTRIBUTE1                and
5808             wbs.STRUCT_VERSION_ID =  log.EVENT_OBJECT
5809           union all
5810           select
5811             distinct
5812             log.EVENT_ID,
5813             wbs.STRUCT_TYPE,
5814             -1                               PRG_GROUP,
5815             wbs.STRUCT_VERSION_ID,
5816             wbs.SUP_PROJECT_ID,
5817             -1                               SUP_ID,
5818             wbs.SUP_EMT_ID,
5819             -1                               SUBRO_ID,
5820             -1                               SUB_ID,
5821             wbs.SUB_EMT_ID,
5822             0                                SUP_LEVEL_NEW,
5823             0                                SUB_LEVEL_NEW,
5824             wbs.SUP_LEVEL                    SUP_LEVEL_OLD,
5825             wbs.SUB_LEVEL                    SUB_LEVEL_OLD,
5826             wbs.SUB_ROLLUP_ID,
5827             'X'                              SUB_LEAF_FLAG,
5828             'X'                              RELATIONSHIP_TYPE,
5829             -1                               SIGN
5830           from
5831             PJI_XBS_DENORM wbs,
5832             PJI_PA_PROJ_EVENTS_LOG log
5833           where
5834             log.WORKER_ID         =  p_worker_id                   and
5835             log.EVENT_TYPE        in ('WBS_CHANGE', 'WBS_PUBLISH') and
5836             wbs.STRUCT_TYPE       =  'WBS'                         and
5837             wbs.SUP_PROJECT_ID    =  log.ATTRIBUTE1                and
5838             wbs.STRUCT_VERSION_ID =  log.ATTRIBUTE2
5839           union all
5840           (select /*+ LEADING(LOG) USE_NL(LOG, PRG) INDEX(PRG PA_XBS_DENORM_N6) */  -- Bug 15983044
5841             distinct
5842             -1                               EVENT_ID,
5843             prg.STRUCT_TYPE,
5844             -1                               PRG_GROUP,
5845             -1                               STRUCT_VERSION_ID,
5846             prg.SUP_PROJECT_ID,
5847             prg.SUP_ID,
5848             prg.SUP_EMT_ID,
5849             -1                               SUBRO_ID,
5850             prg.SUB_ID,
5851             prg.SUB_EMT_ID,
5852             prg.SUP_LEVEL                    SUP_LEVEL_NEW,
5853             prg.SUB_LEVEL                    SUB_LEVEL_NEW,
5854             0                                SUP_LEVEL_OLD,
5855             0                                SUB_LEVEL_OLD,
5856             prg.SUB_ROLLUP_ID,
5857             'X'                              SUB_LEAF_FLAG,
5858             prg.RELATIONSHIP_TYPE,
5859             +1                               SIGN
5860           from
5861             PA_XBS_DENORM prg,
5862             PJI_PA_PROJ_EVENTS_LOG log
5863           where
5864             log.WORKER_ID     =  p_worker_id                        and
5865             log.EVENT_TYPE    =  'PRG_CHANGE'                       and
5866             log.EVENT_OBJECT  <> -1                                 and
5867             prg.STRUCT_TYPE   =  'PRG'                              and
5868             prg.PRG_GROUP     = log.EVENT_OBJECT     -- Bug 15983044
5869           union
5870           select /*+ LEADING(LOG) USE_NL(LOG, PRG) INDEX(PRG PA_XBS_DENORM_N6) */  -- Bug 15983044
5871             distinct
5872             -1                               EVENT_ID,
5873             prg.STRUCT_TYPE,
5874             -1                               PRG_GROUP,
5875             -1                               STRUCT_VERSION_ID,
5876             prg.SUP_PROJECT_ID,
5877             prg.SUP_ID,
5878             prg.SUP_EMT_ID,
5879             -1                               SUBRO_ID,
5880             prg.SUB_ID,
5881             prg.SUB_EMT_ID,
5882             prg.SUP_LEVEL                    SUP_LEVEL_NEW,
5883             prg.SUB_LEVEL                    SUB_LEVEL_NEW,
5884             0                                SUP_LEVEL_OLD,
5885             0                                SUB_LEVEL_OLD,
5886             prg.SUB_ROLLUP_ID,
5887             'X'                              SUB_LEAF_FLAG,
5888             prg.RELATIONSHIP_TYPE,
5889             +1                               SIGN
5890           from
5891             PA_XBS_DENORM prg,
5892             PJI_PA_PROJ_EVENTS_LOG log
5893           where
5894             log.WORKER_ID     =  p_worker_id                        and
5895             log.EVENT_TYPE    =  'PRG_CHANGE'                       and
5896             log.EVENT_OBJECT  <> -1                                 and
5897             prg.STRUCT_TYPE   =  'PRG'                              and
5898             prg.PRG_GROUP     = log.ATTRIBUTE1 )   -- Bug 15983044
5899           union all
5900          ( select  /*+ LEADING(LOG) USE_NL(LOG, PRG) INDEX(PRG PJI_XBS_DENORM_N9) */   -- Bug 15983044
5901             distinct
5902             -1                               EVENT_ID,
5903             prg.STRUCT_TYPE,
5904             -1                               PRG_GROUP,
5905             -1                               STRUCT_VERSION_ID,
5906             prg.SUP_PROJECT_ID,
5907             prg.SUP_ID,
5908             prg.SUP_EMT_ID,
5909             -1                               SUBRO_ID,
5910             prg.SUB_ID,
5911             prg.SUB_EMT_ID,
5912             0                                SUP_LEVEL_NEW,
5913             0                                SUB_LEVEL_NEW,
5914             prg.SUP_LEVEL                    SUP_LEVEL_OLD,
5915             prg.SUB_LEVEL                    SUB_LEVEL_OLD,
5916             prg.SUB_ROLLUP_ID,
5917             'X'                              SUB_LEAF_FLAG,
5918             prg.RELATIONSHIP_TYPE,
5919             -1 SIGN
5920           from
5921             PJI_XBS_DENORM prg,
5922             PJI_PA_PROJ_EVENTS_LOG log
5923           where
5924             log.WORKER_ID    =  p_worker_id  and
5925             log.EVENT_TYPE   =  'PRG_CHANGE' and
5926             log.EVENT_OBJECT <> -1           and
5927             prg.STRUCT_TYPE  =  'PRG'        and
5928             prg.PRG_GROUP    = log.EVENT_OBJECT
5929           union
5930           select  /*+ LEADING(LOG) USE_NL(LOG, PRG) INDEX(PRG PJI_XBS_DENORM_N9) */   -- Bug 15983044
5931             distinct
5932             -1                               EVENT_ID,
5933             prg.STRUCT_TYPE,
5934             -1                               PRG_GROUP,
5935             -1                               STRUCT_VERSION_ID,
5936             prg.SUP_PROJECT_ID,
5937             prg.SUP_ID,
5938             prg.SUP_EMT_ID,
5939             -1                               SUBRO_ID,
5940             prg.SUB_ID,
5941             prg.SUB_EMT_ID,
5942             0                                SUP_LEVEL_NEW,
5943             0                                SUB_LEVEL_NEW,
5944             prg.SUP_LEVEL                    SUP_LEVEL_OLD,
5945             prg.SUB_LEVEL                    SUB_LEVEL_OLD,
5946             prg.SUB_ROLLUP_ID,
5947             'X'                              SUB_LEAF_FLAG,
5948             prg.RELATIONSHIP_TYPE,
5949             -1 SIGN
5950           from
5951             PJI_XBS_DENORM prg,
5952             PJI_PA_PROJ_EVENTS_LOG log
5953           where
5954             log.WORKER_ID    =  p_worker_id  and
5955             log.EVENT_TYPE   =  'PRG_CHANGE' and
5956             log.EVENT_OBJECT <> -1           and
5957             prg.STRUCT_TYPE  =  'PRG'        and
5958             prg.PRG_GROUP    = log.ATTRIBUTE1)  -- Bug 15983044
5959           )
5960         group by
5961           EVENT_ID,
5962           STRUCT_TYPE,
5963           PRG_GROUP,
5964           STRUCT_VERSION_ID,
5965           SUP_PROJECT_ID,
5966           SUP_ID,
5967           SUP_EMT_ID,
5968           SUBRO_ID,
5969           SUB_ID,
5970           SUB_EMT_ID,
5971           SUB_ROLLUP_ID,
5972           SUB_LEAF_FLAG,
5973           RELATIONSHIP_TYPE
5974         having
5975           sum(SIGN) <> 0;
5976 
5977         -- push down program RBSs across new links
5978 
5979         insert into PJI_PA_PROJ_EVENTS_LOG
5980         (
5981           WORKER_ID,
5982           LOG_ROWID,
5983           EVENT_TYPE,
5984           EVENT_ID,
5985           EVENT_OBJECT,
5986           OPERATION_TYPE,
5987           STATUS,
5988           ATTRIBUTE_CATEGORY,
5989           ATTRIBUTE1,
5990           ATTRIBUTE2,
5991           ATTRIBUTE3,
5992           ATTRIBUTE4,
5993           ATTRIBUTE5,
5994           ATTRIBUTE6,
5995           ATTRIBUTE7,
5996           ATTRIBUTE8,
5997           ATTRIBUTE9,
5998           ATTRIBUTE10,
5999           ATTRIBUTE11,
6000           ATTRIBUTE12,
6001           ATTRIBUTE13,
6002           ATTRIBUTE14,
6003           ATTRIBUTE15,
6004           ATTRIBUTE16,
6005           ATTRIBUTE17,
6006           ATTRIBUTE18,
6007           ATTRIBUTE19,
6008           ATTRIBUTE20
6009         )
6010         select
6011           distinct
6012           evt.WORKER_ID,
6013           evt.LOG_ROWID,
6014           evt.EVENT_TYPE,
6015           evt.EVENT_ID,
6016           evt.EVENT_OBJECT,
6017           evt.OPERATION_TYPE,
6018           evt.STATUS,
6019           evt.ATTRIBUTE_CATEGORY,
6020           evt.ATTRIBUTE1,
6021           evt.ATTRIBUTE2,
6022           evt.ATTRIBUTE3,
6023           evt.ATTRIBUTE4,
6024           evt.ATTRIBUTE5,
6025           evt.ATTRIBUTE6,
6026           evt.ATTRIBUTE7,
6027           evt.ATTRIBUTE8,
6028           evt.ATTRIBUTE9,
6029           evt.ATTRIBUTE10,
6030           evt.ATTRIBUTE11,
6031           evt.ATTRIBUTE12,
6032           evt.ATTRIBUTE13,
6033           evt.ATTRIBUTE14,
6034           evt.ATTRIBUTE15,
6035           evt.ATTRIBUTE16,
6036           evt.ATTRIBUTE17,
6037           evt.ATTRIBUTE18,
6038           evt.ATTRIBUTE19,
6039           evt.ATTRIBUTE20
6040         from
6041           (
6042           select
6043             distinct
6044             p_worker_id                   WORKER_ID,
6045             null                          LOG_ROWID,
6046             'RBS_ASSOC'                   EVENT_TYPE,
6047             -1                            EVENT_ID,
6048             sup_rbs_hdr.RBS_VERSION_ID    EVENT_OBJECT,
6049             'I'                           OPERATION_TYPE,
6050             'X'                           STATUS,
6051             null                          ATTRIBUTE_CATEGORY,
6052             sub_ver.PROJECT_ID            ATTRIBUTE1,
6053             hdr.RBS_HEADER_ID             ATTRIBUTE2,
6054             null                          ATTRIBUTE3,
6055             null                          ATTRIBUTE4,
6056             null                          ATTRIBUTE5,
6057             null                          ATTRIBUTE6,
6058             null                          ATTRIBUTE7,
6059             null                          ATTRIBUTE8,
6060             null                          ATTRIBUTE9,
6061             null                          ATTRIBUTE10,
6062             null                          ATTRIBUTE11,
6063             null                          ATTRIBUTE12,
6064             null                          ATTRIBUTE13,
6065             null                          ATTRIBUTE14,
6066             null                          ATTRIBUTE15,
6067             null                          ATTRIBUTE16,
6068             prg.SUP_PROJECT_ID            ATTRIBUTE17, -- program's PROJECT_ID
6069             'N'                           ATTRIBUTE18, -- PROG_REP_USAGE_FLAG
6070             null                          ATTRIBUTE19, -- update header only
6071             'NEW_CONVERTED_RBS_PRG_EVENT' ATTRIBUTE20  -- flg converted events
6072           from
6073             PJI_XBS_DENORM_DELTA     prg,
6074             PJI_PJP_RBS_HEADER       sup_rbs_hdr,
6075             PA_PROJ_ELEMENT_VERSIONS sub_ver,
6076             PA_RBS_VERSIONS_B        hdr
6077           where
6078             prg.STRUCT_TYPE                 =  'PRG'                      and
6079             prg.SUP_ID                      <> prg.SUB_ID                 and
6080             prg.SIGN                        =  1                          and
6081             sup_rbs_hdr.PROJECT_ID          =  prg.SUP_PROJECT_ID         and
6082             sup_rbs_hdr.PLAN_VERSION_ID     =  -1                         and
6083             sup_rbs_hdr.PROG_REP_USAGE_FLAG =  'Y'                        and
6084             sub_ver.ELEMENT_VERSION_ID      =  prg.SUB_ID                 and
6085             hdr.RBS_VERSION_ID              =  sup_rbs_hdr.RBS_VERSION_ID
6086           )                      evt,
6087           PJI_PJP_RBS_HEADER     sub_rbs_hdr,
6088           PJI_PA_PROJ_EVENTS_LOG log
6089         where
6090           evt.ATTRIBUTE1         = sub_rbs_hdr.PROJECT_ID      (+) and
6091           -1                     = sub_rbs_hdr.PLAN_VERSION_ID (+) and
6092           evt.EVENT_OBJECT       = sub_rbs_hdr.RBS_VERSION_ID  (+) and
6093           sub_rbs_hdr.PROJECT_ID is null                           and
6094           'RBS_ASSOC'            = log.EVENT_TYPE              (+) and
6095           evt.ATTRIBUTE1         = log.ATTRIBUTE1              (+) and
6096           evt.EVENT_OBJECT       = log.EVENT_OBJECT            (+) and
6097           log.EVENT_TYPE         is null;
6098 
6099         l_program_id     := -1;
6100         l_rbs_header_id  := -1;
6101         l_rbs_version_id := -1;
6102         l_prj_index      :=  1;
6103         l_project_id_tbl :=  system.pa_num_tbl_type();
6104         l_project_id_tbl.delete;
6105 
6106         for c in (select
6107                     distinct
6108                     log.ATTRIBUTE2   RBS_HEADER_ID,
6109                     log.EVENT_OBJECT RBS_VERSION_ID,
6110                     log.ATTRIBUTE1   PROJECT_ID,
6111                     log.ATTRIBUTE17  PROGRAM_ID,
6112                     log.ATTRIBUTE18  PROG_REP_USAGE_FLAG,
6113                     'Y'              REPORTING_USAGE_FLAG,
6114                     'N'              FP_USAGE_FLAG,
6115                     log.ATTRIBUTE19  UPDATE_HEADER_ONLY_FLAG
6116                   from
6117                     PJI_PA_PROJ_EVENTS_LOG log
6118                   where
6119                     log.WORKER_ID   = p_worker_id                   and
6120                     log.EVENT_TYPE  = 'RBS_ASSOC'                   and
6121                     log.ATTRIBUTE20 = 'NEW_CONVERTED_RBS_PRG_EVENT'
6122                   order by
6123                     log.ATTRIBUTE17,
6124                     log.ATTRIBUTE2,
6125                     log.EVENT_OBJECT) loop
6126 
6127           l_project_id_tbl.extend(1);
6128           l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
6129           l_prj_index := l_prj_index + 1;
6130 
6131           if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
6132 
6133             l_program_id     := c.PROGRAM_ID;
6134             l_rbs_header_id  := c.RBS_HEADER_ID;
6135             l_rbs_version_id := c.RBS_VERSION_ID;
6136 
6137           elsif (c.PROGRAM_ID     <> l_program_id or
6138                  c.RBS_HEADER_ID  <> l_rbs_header_id or
6139                  c.RBS_VERSION_ID <> l_rbs_version_id) then
6140 
6141             PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
6142                                                       l_rbs_version_id,
6143                                                       l_project_id_tbl,
6144                                                       l_return_status);
6145 
6146             l_program_id     := c.PROGRAM_ID;
6147             l_rbs_header_id  := c.RBS_HEADER_ID;
6148             l_rbs_version_id := c.RBS_VERSION_ID;
6149             l_prj_index      := 1;
6150             l_project_id_tbl.delete;
6151 
6152           end if;
6153 
6154           insert into PJI_PJP_RBS_HEADER
6155           (
6156             PROJECT_ID,
6157             PLAN_VERSION_ID,
6158             RBS_VERSION_ID,
6159             REPORTING_USAGE_FLAG,
6160             PROG_REP_USAGE_FLAG,
6161             PLAN_USAGE_FLAG,
6162             LAST_UPDATE_DATE,
6163             LAST_UPDATED_BY,
6164             CREATION_DATE,
6165             CREATED_BY,
6166             LAST_UPDATE_LOGIN,
6167             PLAN_TYPE_CODE
6168           )
6169           values
6170           (
6171             c.PROJECT_ID,
6172             -1,
6173             c.RBS_VERSION_ID,
6174             c.REPORTING_USAGE_FLAG,
6175             c.PROG_REP_USAGE_FLAG,
6176             c.FP_USAGE_FLAG,
6177             l_last_update_date,
6178             l_last_updated_by,
6179             l_creation_date,
6180             l_created_by,
6181             l_last_update_login,
6182             'A'
6183           );
6184 
6185           insert into PJI_PA_PROJ_EVENTS_LOG
6186           (
6187             WORKER_ID,
6188             EVENT_TYPE,
6189             EVENT_ID,
6190             EVENT_OBJECT,
6191             OPERATION_TYPE,
6192             STATUS
6193           )
6194           select
6195             p_worker_id,
6196             'PJI_RBS_CHANGE',
6197             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
6198             c.RBS_VERSION_ID,
6199             'I',
6200             'X'
6201           from
6202             DUAL
6203           where
6204             not exists (select 1
6205                         from   PA_RBS_DENORM rbs
6206                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
6207 
6208         end loop;
6209 
6210         if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
6211 
6212           PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
6213                                                     l_rbs_version_id,
6214                                                     l_project_id_tbl,
6215                                                     l_return_status);
6216 
6217         end if;
6218 
6219       end if;
6220 
6221       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_XBS_DENORM_DELTA(p_worker_id);');
6222 
6223       commit;
6224 
6225     else -- online mode
6226 
6227       -- get WBS delta for online processing
6228 
6229       insert into PJI_XBS_DENORM_DELTA_T
6230       (
6231         WORKER_ID,
6232         STRUCT_TYPE,
6233         PRG_GROUP,
6234         STRUCT_VERSION_ID,
6235         SUP_PROJECT_ID,
6236         SUP_ID,
6237         SUP_EMT_ID,
6238         SUBRO_ID,
6239         SUB_ID,
6240         SUB_EMT_ID,
6241         SUP_LEVEL,
6242         SUB_LEVEL,
6243         SUB_ROLLUP_ID,
6244         SUB_LEAF_FLAG,
6245         RELATIONSHIP_TYPE,
6246         SIGN
6247       )
6248       select
6249         1 WORKER_ID,
6250         -- p_worker_id WORKER_ID,
6251         STRUCT_TYPE,
6252         PRG_GROUP,
6253         STRUCT_VERSION_ID,
6254         SUP_PROJECT_ID,
6255         SUP_ID,
6256         SUP_EMT_ID,
6257         SUBRO_ID,
6258         SUB_ID,
6259         SUB_EMT_ID,
6260         decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
6261                                       sum(SUP_LEVEL_NEW)) SUP_LEVEL,
6262         decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
6263                                       sum(SUB_LEVEL_NEW)) SUB_LEVEL,
6264         SUB_ROLLUP_ID,
6265         SUB_LEAF_FLAG,
6266         RELATIONSHIP_TYPE,
6267         sum(SIGN) SIGN
6268       from
6269         (
6270         select
6271           wbs.STRUCT_TYPE,
6272           -1                               PRG_GROUP,
6273           wbs.STRUCT_VERSION_ID,
6274           wbs.SUP_PROJECT_ID,
6275           -1                               SUP_ID,
6276           wbs.SUP_EMT_ID,
6277           -1                               SUBRO_ID,
6278           -1                               SUB_ID,
6279           wbs.SUB_EMT_ID,
6280           wbs.SUP_LEVEL                    SUP_LEVEL_NEW,
6281           wbs.SUB_LEVEL                    SUB_LEVEL_NEW,
6282           0                                SUP_LEVEL_OLD,
6283           0                                SUB_LEVEL_OLD,
6284           wbs.SUB_ROLLUP_ID,
6285           'X'                              SUB_LEAF_FLAG,
6286           'X'                              RELATIONSHIP_TYPE,
6287           +1                               SIGN
6288         from
6289           PA_XBS_DENORM wbs
6290         where
6291           wbs.STRUCT_TYPE       = 'WBS' and
6292           wbs.SUP_PROJECT_ID    = g_project_id and
6293           wbs.STRUCT_VERSION_ID in (g_new_struct_version)
6294         union all
6295         select
6296           wbs.STRUCT_TYPE,
6297           -1                               PRG_GROUP,
6298           wbs.STRUCT_VERSION_ID,
6299           wbs.SUP_PROJECT_ID,
6300           -1                               SUP_ID,
6301           wbs.SUP_EMT_ID,
6302           -1                               SUBRO_ID,
6303           -1                               SUB_ID,
6304           wbs.SUB_EMT_ID,
6305           0                                SUP_LEVEL_NEW,
6306           0                                SUB_LEVEL_NEW,
6307           wbs.SUP_LEVEL                    SUP_LEVEL_OLD,
6308           wbs.SUB_LEVEL                    SUB_LEVEL_OLD,
6309           wbs.SUB_ROLLUP_ID,
6310           'X'                              SUB_LEAF_FLAG,
6311           'X'                              RELATIONSHIP_TYPE,
6312           -1                               SIGN
6313         from
6314           PJI_XBS_DENORM wbs
6315         where
6316           wbs.STRUCT_TYPE       =  'WBS' and
6317           wbs.SUP_PROJECT_ID    =  g_project_id and
6318           wbs.STRUCT_VERSION_ID in (g_old_struct_version)
6319         )
6320       group by
6321         STRUCT_TYPE,
6322         PRG_GROUP,
6323         STRUCT_VERSION_ID,
6324         SUP_PROJECT_ID,
6325         SUP_ID,
6326         SUP_EMT_ID,
6327         SUBRO_ID,
6328         SUB_ID,
6329         SUB_EMT_ID,
6330         SUB_ROLLUP_ID,
6331         SUB_LEAF_FLAG,
6332         RELATIONSHIP_TYPE
6333       having
6334         sum(SIGN) <> 0;
6335 
6336     end if;
6337 
6338   end POPULATE_XBS_DENORM_DELTA;
6339 
6340 
6341   -- -----------------------------------------------------
6342   -- procedure POPULATE_RBS_DENORM_DELTA
6343   --
6344   --   History
6345   --   19-MAR-2004  SVERMETT  Created
6346   --
6347   -- Internal PJP Summarization API.
6348   --
6349   -- Called by RBS program
6350   --
6351   -- -----------------------------------------------------
6352   procedure POPULATE_RBS_DENORM_DELTA (p_worker_id in number) is
6353 
6354     l_process varchar2(30);
6355     l_extraction_type varchar2(30);
6356 
6357   begin
6358 
6359     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
6360 
6361     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_DENORM_DELTA(p_worker_id);')) then
6362       return;
6363     end if;
6364 
6365     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
6366 
6367     if (l_extraction_type = 'RBS') then
6368 
6369       insert into PJI_RBS_DENORM_DELTA delta_i
6370       (
6371         WORKER_ID,
6372         STRUCT_VERSION_ID,
6373         SUP_ID,
6374         SUBRO_ID,
6375         SUB_ID,
6376         SUP_LEVEL,
6377         SUB_LEVEL,
6378         SUB_LEAF_FLAG,
6379         SIGN
6380       )
6381       select
6382         p_worker_id,
6383         STRUCT_VERSION_ID,
6384         SUP_ID,
6385         SUBRO_ID,
6386         SUB_ID,
6387         decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
6388                                       sum(SUP_LEVEL_NEW)) SUP_LEVEL,
6389         decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
6390                                       sum(SUB_LEVEL_NEW)) SUB_LEVEL,
6391         SUB_LEAF_FLAG,
6392         sum(SIGN) SIGN
6393       from
6394         (
6395         select
6396           distinct
6397           rbs.STRUCT_VERSION_ID,
6398           rbs.SUP_ID,
6399           -1                               SUBRO_ID,
6400           rbs.SUB_ID,
6401           rbs.SUP_LEVEL                    SUP_LEVEL_NEW,
6402           rbs.SUB_LEVEL                    SUB_LEVEL_NEW,
6403           0                                SUP_LEVEL_OLD,
6404           0                                SUB_LEVEL_OLD,
6405           'X'                              SUB_LEAF_FLAG,
6406           +1                               SIGN
6407         from
6408           PA_RBS_DENORM rbs,
6409           PJI_PA_PROJ_EVENTS_LOG log
6410         where
6411           log.WORKER_ID         = p_worker_id and
6412           log.EVENT_TYPE        = 'RBS_PUSH'  and
6413           rbs.STRUCT_VERSION_ID = log.EVENT_OBJECT
6414         union all
6415         select
6416           distinct
6417           rbs.STRUCT_VERSION_ID,
6418           rbs.SUP_ID,
6419           -1                               SUBRO_ID,
6420           rbs.SUB_ID,
6421           0                                SUP_LEVEL_NEW,
6422           0                                SUB_LEVEL_NEW,
6423           rbs.SUP_LEVEL                    SUP_LEVEL_OLD,
6424           rbs.SUB_LEVEL                    SUB_LEVEL_OLD,
6425           'X'                              SUB_LEAF_FLAG,
6426           -1                               SIGN
6427         from
6428           PJI_RBS_DENORM rbs,
6429           PJI_PA_PROJ_EVENTS_LOG log
6430         where
6431           log.WORKER_ID         = p_worker_id and
6432           log.EVENT_TYPE        = 'RBS_PUSH'  and
6433           rbs.STRUCT_VERSION_ID = log.ATTRIBUTE2
6434         )
6435       group by
6436         STRUCT_VERSION_ID,
6437         SUP_ID,
6438         SUBRO_ID,
6439         SUB_ID,
6440         SUB_LEAF_FLAG
6441       having
6442         sum(SIGN) <> 0;
6443 
6444     end if;
6445 
6446     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_DENORM_DELTA(p_worker_id);');
6447 
6448     commit;
6449 
6450   end POPULATE_RBS_DENORM_DELTA;
6451 
6452 
6453   -- -----------------------------------------------------
6454   -- procedure AGGREGATE_FP_SLICES
6455   --
6456   --   History
6457   --   19-MAR-2004  SVERMETT  Created
6458   --
6459   -- Internal PJP Summarization API.
6460   --
6461   -- Called by RBS program
6462   --
6463   -- -----------------------------------------------------
6464   procedure AGGREGATE_FP_SLICES (p_worker_id in number) is
6465 
6466     l_process           varchar2(30);
6467     l_extraction_type   varchar2(30);
6468 
6469     l_txn_currency_flag varchar2(1);
6470     l_g2_currency_flag  varchar2(1);
6471     l_g1_currency_flag  varchar2(1); /* Added for Bug 8708651 */
6472 
6473     l_g1_currency_code  varchar2(30);
6474     l_g2_currency_code  varchar2(30);
6475 
6476     l_plan_type_id      number;    -- Bug#5099574
6477     l_refresh_code      number;
6478 
6479 
6480   begin
6481 
6482     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
6483 
6484     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);')) then
6485       return;
6486     end if;
6487 
6488     l_extraction_type :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
6489 
6490    --  Bug#5099574  - Start
6491 
6492       l_plan_type_id     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
6493       l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
6494 
6495       if (l_plan_type_id = -1) then
6496         l_plan_type_id := null;
6497       end if;
6498 
6499     -- If  condtion is true then mark the process as completed and return
6500       if ( l_extraction_type='PARTIAL' and ( bitand(l_refresh_code,1) <> 1) ) then
6501        PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);');
6502        commit;
6503        return;
6504       end if;
6505 
6506   --  Bug#5099574 - End
6507 
6508 
6509     select
6510       TXN_CURR_FLAG,
6511       GLOBAL_CURR2_FLAG,
6512       nvl(GLOBAL_CURR1_FLAG,'Y')   /* Added for Bug 8708651, NULL check added for 9062837 */
6513     into
6514       l_txn_currency_flag,
6515       l_g2_currency_flag,
6516       l_g1_currency_flag    /* Added for Bug 8708651 */
6517     from
6518       PJI_SYSTEM_SETTINGS;
6519 
6520     l_g1_currency_code := PJI_UTILS.GET_GLOBAL_PRIMARY_CURRENCY;
6521     l_g2_currency_code := PJI_UTILS.GET_GLOBAL_SECONDARY_CURRENCY;
6522 
6523     insert /*+ parallel(pjp0_i) */  into PJI_FP_AGGR_PJP0 pjp0_i /* Added for bug 13030627 */
6524     (
6525       WORKER_ID,
6526       TXN_ACCUM_HEADER_ID,
6527       PROJECT_ID,
6528       PROJECT_ORG_ID,
6529       PROJECT_ORGANIZATION_ID,
6530       PROJECT_ELEMENT_ID,
6531       TIME_ID,
6532       PERIOD_TYPE_ID,
6533       CALENDAR_TYPE,
6534       RBS_AGGR_LEVEL,
6535       WBS_ROLLUP_FLAG,
6536       PRG_ROLLUP_FLAG,
6537       CURR_RECORD_TYPE_ID,
6538       CURRENCY_CODE,
6539       RBS_ELEMENT_ID,
6540       RBS_VERSION_ID,
6541       PLAN_VERSION_ID,
6542       PLAN_TYPE_ID,
6543       RAW_COST,
6544       BRDN_COST,
6545       REVENUE,
6546       BILL_RAW_COST,
6547       BILL_BRDN_COST,
6548       BILL_LABOR_RAW_COST,
6549       BILL_LABOR_BRDN_COST,
6550       BILL_LABOR_HRS,
6551       EQUIPMENT_RAW_COST,
6552       EQUIPMENT_BRDN_COST,
6553       CAPITALIZABLE_RAW_COST,
6554       CAPITALIZABLE_BRDN_COST,
6555       LABOR_RAW_COST,
6556       LABOR_BRDN_COST,
6557       LABOR_HRS,
6558       LABOR_REVENUE,
6559       EQUIPMENT_HOURS,
6560       BILLABLE_EQUIPMENT_HOURS,
6561       SUP_INV_COMMITTED_COST,
6562       PO_COMMITTED_COST,
6563       PR_COMMITTED_COST,
6564       OTH_COMMITTED_COST
6565     )
6566     select
6567       src.WORKER_ID,
6568       src.TXN_ACCUM_HEADER_ID,
6569       src.PROJECT_ID,
6570       src.PROJECT_ORG_ID,
6571       src.PROJECT_ORGANIZATION_ID,
6572       src.PROJECT_ELEMENT_ID,
6573       src.TIME_ID,
6574       src.PERIOD_TYPE_ID,
6575       src.CALENDAR_TYPE,
6576       src.RBS_AGGR_LEVEL,
6577       src.WBS_ROLLUP_FLAG,
6578       src.PRG_ROLLUP_FLAG,
6579       src.CURR_RECORD_TYPE_ID,
6580       src.CURRENCY_CODE,
6581       src.RBS_ELEMENT_ID,
6582       src.RBS_VERSION_ID,
6583       src.PLAN_VERSION_ID,
6584       src.PLAN_TYPE_ID,
6585       sum(src.RAW_COST)                               RAW_COST,
6586       sum(src.BRDN_COST)                              BRDN_COST,
6587       sum(src.REVENUE)                                REVENUE,
6588       sum(decode(src.PROJECT_TYPE_CLASS, 'B',
6589                  src.BILL_RAW_COST, to_number(null))) BILL_RAW_COST,
6590       sum(decode(src.PROJECT_TYPE_CLASS, 'B',
6591                  src.BILL_BRDN_COST, to_number(null)))BILL_BRDN_COST,
6592       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
6593                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
6594                  src.BILL_RAW_COST, to_number(null))) BILL_LABOR_RAW_COST,
6595       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
6596                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
6597                  src.BILL_BRDN_COST, to_number(null)))BILL_LABOR_BRDN_COST,
6598       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
6599                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
6600                  src.BILL_QUANTITY, to_number(null))) BILL_LABOR_HRS,
6601       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
6602                  src.RAW_COST, to_number(null)))      EQUIPMENT_RAW_COST,
6603       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
6604                  src.BRDN_COST, to_number(null)))     EQUIPMENT_BRDN_COST,
6605       sum(decode(src.PROJECT_TYPE_CLASS, 'C',
6606                  src.BILL_RAW_COST, to_number(null))) CAPITALIZABLE_RAW_COST,
6607       sum(decode(src.PROJECT_TYPE_CLASS, 'C',
6608                  src.BILL_BRDN_COST, to_number(null)))CAPITALIZABLE_BRDN_COST,
6609       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
6610                  src.RAW_COST, to_number(null)))      LABOR_RAW_COST,
6611       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
6612                  src.BRDN_COST, to_number(null)))     LABOR_BRDN_COST,
6613       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
6614                  src.QUANTITY, to_number(null)))      LABOR_HRS,
6615       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
6616                  src.REVENUE, to_number(null)))       LABOR_REVENUE,
6617       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
6618                  src.QUANTITY, to_number(null)))      EQUIPMENT_HOURS,
6619       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
6620                  src.BILL_QUANTITY, to_number(null))) BILLABLE_EQUIPMENT_HOURS,
6621       sum(src.SUP_INV_COMMITTED_COST)                 SUP_INV_COMMITTED_COST,
6622       sum(src.PO_COMMITTED_COST)                      PO_COMMITTED_COST,
6623       sum(src.PR_COMMITTED_COST)                      PR_COMMITTED_COST,
6624       sum(src.OTH_COMMITTED_COST)                     OTH_COMMITTED_COST
6625     from
6626       (
6627       select
6628         src3.WORKER_ID,
6629         src3.TXN_ACCUM_HEADER_ID,
6630         src3.RESOURCE_CLASS_ID,
6631         src3.PROJECT_ID,
6632         src3.PROJECT_ORG_ID,
6633         src3.PROJECT_ORGANIZATION_ID,
6634         src3.PROJECT_TYPE_CLASS,
6635         src3.PROJECT_ELEMENT_ID,
6636         src3.TIME_ID,
6637         src3.PERIOD_TYPE_ID,
6638         src3.CALENDAR_TYPE,
6639         src3.RBS_AGGR_LEVEL,
6640         src3.WBS_ROLLUP_FLAG,
6641         src3.PRG_ROLLUP_FLAG,
6642         sum(src3.CURR_RECORD_TYPE_ID)                 CURR_RECORD_TYPE_ID,
6643         nvl(src3.CURRENCY_CODE, 'PJI$NULL')           CURRENCY_CODE,
6644         src3.RBS_ELEMENT_ID,
6645         src3.RBS_VERSION_ID,
6646         src3.PLAN_VERSION_ID,
6647         src3.PLAN_TYPE_ID,
6648         max(src3.RAW_COST)                            RAW_COST,
6649         max(src3.BRDN_COST)                           BRDN_COST,
6650         max(src3.REVENUE)                             REVENUE,
6651         max(src3.BILL_RAW_COST)                       BILL_RAW_COST,
6652         max(src3.BILL_BRDN_COST)                      BILL_BRDN_COST,
6653         max(src3.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
6654         max(src3.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
6655         max(src3.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
6656         max(src3.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
6657         max(src3.QUANTITY)                            QUANTITY,
6658         max(src3.BILL_QUANTITY)                       BILL_QUANTITY
6659       from
6660         (
6661         select /*+ ordered cardinality(src 1) use_nl(VER) */  -- Modified for Bug 14735308
6662           p_worker_id                                 WORKER_ID,
6663           src.TXN_ACCUM_HEADER_ID,
6664           src.RESOURCE_CLASS_ID,
6665           src.PROJECT_ID,
6666           src.PROJECT_ORG_ID,
6667           map.PROJECT_ORGANIZATION_ID,
6668           src.PROJECT_TYPE_CLASS,
6669           decode(src.TASK_ID,
6670                  -1, ver.PROJ_ELEMENT_ID,
6671                  src.TASK_ID)                         PROJECT_ELEMENT_ID,
6672           src.RECVR_PERIOD_ID                         TIME_ID,
6673           32                                          PERIOD_TYPE_ID,
6674           decode(src.RECVR_PERIOD_TYPE,
6675                  'ENT', 'E',
6676                  'GL',  'G',
6677                  'PA',  'P')                          CALENDAR_TYPE,
6678           'L'                                         RBS_AGGR_LEVEL,
6679           'N'                                         WBS_ROLLUP_FLAG,
6680           'N'                                         PRG_ROLLUP_FLAG,
6681           invert.INVERT_ID                            CURR_RECORD_TYPE_ID,
6682           decode(invert.INVERT_ID,
6683                  1,   l_g1_currency_code,
6684                  2,   l_g2_currency_code,
6685                  4,   info.PF_CURRENCY_CODE,
6686                  8,   map.PRJ_CURRENCY_CODE,
6687                  16,  src.TXN_CURRENCY_CODE,
6688                  32,  l_g1_currency_code,
6689                  64,  l_g2_currency_code,
6690                  128, info.PF_CURRENCY_CODE,
6691                  256, map.PRJ_CURRENCY_CODE)          DIFF_CURRENCY_CODE,
6692           DIFF_ROWNUM                                 DIFF_ROWNUM,
6693           decode(invert.INVERT_ID,
6694                  1,   l_g1_currency_code,
6695                  2,   l_g2_currency_code,
6696                  4,   info.PF_CURRENCY_CODE,
6697                  8,   map.PRJ_CURRENCY_CODE,
6698                  16,  src.TXN_CURRENCY_CODE,
6699                  32,  src.TXN_CURRENCY_CODE,
6700                  64,  src.TXN_CURRENCY_CODE,
6701                  128, src.TXN_CURRENCY_CODE,
6702                  256, src.TXN_CURRENCY_CODE)          CURRENCY_CODE,
6703           nvl(rbs.ELEMENT_ID, -1)                     RBS_ELEMENT_ID,
6704           src.RBS_VERSION_ID,
6705           -1                                          PLAN_VERSION_ID,
6706           -1                                          PLAN_TYPE_ID,
6707           decode(invert.INVERT_ID,
6708                  1,   src.G1_RAW_COST,
6709                  2,   src.G2_RAW_COST,
6710                  4,   src.POU_RAW_COST,
6711                  8,   src.PRJ_RAW_COST,
6712                  16,  src.TXN_RAW_COST,
6713                  32,  src.G1_RAW_COST,
6714                  64,  src.G2_RAW_COST,
6715                  128, src.POU_RAW_COST,
6716                  256, src.PRJ_RAW_COST)               RAW_COST,
6717           decode(invert.INVERT_ID,
6718                  1,   src.G1_BRDN_COST,
6719                  2,   src.G2_BRDN_COST,
6720                  4,   src.POU_BRDN_COST,
6721                  8,   src.PRJ_BRDN_COST,
6722                  16,  src.TXN_BRDN_COST,
6723                  32,  src.G1_BRDN_COST,
6724                  64,  src.G2_BRDN_COST,
6725                  128, src.POU_BRDN_COST,
6726                  256, src.PRJ_BRDN_COST)              BRDN_COST,
6727           decode(invert.INVERT_ID,
6728                  1,   src.G1_REVENUE,
6729                  2,   src.G2_REVENUE,
6730                  4,   src.POU_REVENUE,
6731                  8,   src.PRJ_REVENUE,
6732                  16,  src.TXN_REVENUE,
6733                  32,  src.G1_REVENUE,
6734                  64,  src.G2_REVENUE,
6735                  128, src.POU_REVENUE,
6736                  256, src.PRJ_REVENUE)                REVENUE,
6737           decode(invert.INVERT_ID,
6738                  1,   src.G1_BILL_RAW_COST,
6739                  2,   src.G2_BILL_RAW_COST,
6740                  4,   src.POU_BILL_RAW_COST,
6741                  8,   src.PRJ_BILL_RAW_COST,
6742                  16,  src.TXN_BILL_RAW_COST,
6743                  32,  src.G1_BILL_RAW_COST,
6744                  64,  src.G2_BILL_RAW_COST,
6745                  128, src.POU_BILL_RAW_COST,
6746                  256, src.PRJ_BILL_RAW_COST)          BILL_RAW_COST,
6747           decode(invert.INVERT_ID,
6748                  1,   src.G1_BILL_BRDN_COST,
6749                  2,   src.G2_BILL_BRDN_COST,
6750                  4,   src.POU_BILL_BRDN_COST,
6751                  8,   src.PRJ_BILL_BRDN_COST,
6752                  16,  src.TXN_BILL_BRDN_COST,
6753                  32,  src.G1_BILL_BRDN_COST,
6754                  64,  src.G2_BILL_BRDN_COST,
6755                  128, src.POU_BILL_BRDN_COST,
6756                  256, src.PRJ_BILL_BRDN_COST)         BILL_BRDN_COST,
6757           decode(invert.INVERT_ID,
6758                  1,   src.G1_SUP_INV_COMMITTED_COST,
6759                  2,   src.G2_SUP_INV_COMMITTED_COST,
6760                  4,   src.POU_SUP_INV_COMMITTED_COST,
6761                  8,   src.PRJ_SUP_INV_COMMITTED_COST,
6762                  16,  src.TXN_SUP_INV_COMMITTED_COST,
6763                  32,  src.G1_SUP_INV_COMMITTED_COST,
6764                  64,  src.G2_SUP_INV_COMMITTED_COST,
6765                  128, src.POU_SUP_INV_COMMITTED_COST,
6766                  256, src.PRJ_SUP_INV_COMMITTED_COST) SUP_INV_COMMITTED_COST,
6767           decode(invert.INVERT_ID,
6768                  1,   src.G1_PO_COMMITTED_COST,
6769                  2,   src.G2_PO_COMMITTED_COST,
6770                  4,   src.POU_PO_COMMITTED_COST,
6771                  8,   src.PRJ_PO_COMMITTED_COST,
6772                  16,  src.TXN_PO_COMMITTED_COST,
6773                  32,  src.G1_PO_COMMITTED_COST,
6774                  64,  src.G2_PO_COMMITTED_COST,
6775                  128, src.POU_PO_COMMITTED_COST,
6776                  256, src.PRJ_PO_COMMITTED_COST)      PO_COMMITTED_COST,
6777           decode(invert.INVERT_ID,
6778                  1,   src.G1_PR_COMMITTED_COST,
6779                  2,   src.G2_PR_COMMITTED_COST,
6780                  4,   src.POU_PR_COMMITTED_COST,
6781                  8,   src.PRJ_PR_COMMITTED_COST,
6782                  16,  src.TXN_PR_COMMITTED_COST,
6783                  32,  src.G1_PR_COMMITTED_COST,
6784                  64,  src.G2_PR_COMMITTED_COST,
6785                  128, src.POU_PR_COMMITTED_COST,
6786                  256, src.PRJ_PR_COMMITTED_COST)      PR_COMMITTED_COST,
6787           decode(invert.INVERT_ID,
6788                  1,   src.G1_OTH_COMMITTED_COST,
6789                  2,   src.G2_OTH_COMMITTED_COST,
6790                  4,   src.POU_OTH_COMMITTED_COST,
6791                  8,   src.PRJ_OTH_COMMITTED_COST,
6792                  16,  src.TXN_OTH_COMMITTED_COST,
6793                  32,  src.G1_OTH_COMMITTED_COST,
6794                  64,  src.G2_OTH_COMMITTED_COST,
6795                  128, src.POU_OTH_COMMITTED_COST,
6796                  256, src.PRJ_OTH_COMMITTED_COST)     OTH_COMMITTED_COST,
6797           src.QUANTITY,
6798           src.BILL_QUANTITY
6799         from
6800           (
6801           select
6802             ROWNUM                                       DIFF_ROWNUM,
6803             src2.TXN_ACCUM_HEADER_ID,
6804             src2.RESOURCE_CLASS_ID,
6805             src2.PROJECT_ID,
6806             src2.PROJECT_ORG_ID,
6807             src2.PROJECT_ORGANIZATION_ID,
6808             src2.PROJECT_TYPE_CLASS,
6809             src2.TASK_ID,
6810             src2.RECVR_PERIOD_TYPE,
6811             src2.RECVR_PERIOD_ID,
6812             src2.RBS_VERSION_ID,
6813             src2.TXN_CURRENCY_CODE,
6814             src2.TXN_RAW_COST,
6815             src2.TXN_BILL_RAW_COST,
6816             src2.TXN_BRDN_COST,
6817             src2.TXN_BILL_BRDN_COST,
6818             src2.TXN_REVENUE,
6819             src2.TXN_SUP_INV_COMMITTED_COST,
6820             src2.TXN_PO_COMMITTED_COST,
6821             src2.TXN_PR_COMMITTED_COST,
6822             src2.TXN_OTH_COMMITTED_COST,
6823             src2.PRJ_RAW_COST,
6824             src2.PRJ_BILL_RAW_COST,
6825             src2.PRJ_BRDN_COST,
6826             src2.PRJ_BILL_BRDN_COST,
6827             src2.PRJ_REVENUE,
6828             src2.PRJ_SUP_INV_COMMITTED_COST,
6829             src2.PRJ_PO_COMMITTED_COST,
6830             src2.PRJ_PR_COMMITTED_COST,
6831             src2.PRJ_OTH_COMMITTED_COST,
6832             src2.POU_RAW_COST,
6833             src2.POU_BILL_RAW_COST,
6834             src2.POU_BRDN_COST,
6835             src2.POU_BILL_BRDN_COST,
6836             src2.POU_REVENUE,
6837             src2.POU_SUP_INV_COMMITTED_COST,
6838             src2.POU_PO_COMMITTED_COST,
6839             src2.POU_PR_COMMITTED_COST,
6840             src2.POU_OTH_COMMITTED_COST,
6841             src2.EOU_RAW_COST,
6842             src2.EOU_BILL_RAW_COST,
6843             src2.EOU_BRDN_COST,
6844             src2.EOU_BILL_BRDN_COST,
6845             src2.EOU_SUP_INV_COMMITTED_COST,
6846             src2.EOU_PO_COMMITTED_COST,
6847             src2.EOU_PR_COMMITTED_COST,
6848             src2.EOU_OTH_COMMITTED_COST,
6849             src2.G1_RAW_COST,
6850             src2.G1_BILL_RAW_COST,
6851             src2.G1_BRDN_COST,
6852             src2.G1_BILL_BRDN_COST,
6853             src2.G1_REVENUE,
6854             src2.G1_SUP_INV_COMMITTED_COST,
6855             src2.G1_PO_COMMITTED_COST,
6856             src2.G1_PR_COMMITTED_COST,
6857             src2.G1_OTH_COMMITTED_COST,
6858             src2.G2_RAW_COST,
6859             src2.G2_BILL_RAW_COST,
6860             src2.G2_BRDN_COST,
6861             src2.G2_BILL_BRDN_COST,
6862             src2.G2_REVENUE,
6863             src2.G2_SUP_INV_COMMITTED_COST,
6864             src2.G2_PO_COMMITTED_COST,
6865             src2.G2_PR_COMMITTED_COST,
6866             src2.G2_OTH_COMMITTED_COST,
6867             src2.QUANTITY,
6868             src2.BILL_QUANTITY
6869           from
6870             (
6871           select
6872             src1.TXN_ACCUM_HEADER_ID,
6873             src1.RESOURCE_CLASS_ID,
6874             src1.PROJECT_ID,
6875             src1.PROJECT_ORG_ID,
6876             src1.PROJECT_ORGANIZATION_ID,
6877             src1.PROJECT_TYPE_CLASS,
6878             src1.TASK_ID,
6879             src1.RECVR_PERIOD_TYPE,
6880             src1.RECVR_PERIOD_ID,
6881             src1.RBS_VERSION_ID,
6882             src1.TXN_CURRENCY_CODE,
6883             sum(src1.TXN_RAW_COST)                  TXN_RAW_COST,
6884             sum(src1.TXN_BILL_RAW_COST)             TXN_BILL_RAW_COST,
6885             sum(src1.TXN_BRDN_COST)                 TXN_BRDN_COST,
6886             sum(src1.TXN_BILL_BRDN_COST)            TXN_BILL_BRDN_COST,
6887             sum(src1.TXN_REVENUE)                   TXN_REVENUE,
6888             sum(src1.TXN_SUP_INV_COMMITTED_COST)    TXN_SUP_INV_COMMITTED_COST,
6889             sum(src1.TXN_PO_COMMITTED_COST)         TXN_PO_COMMITTED_COST,
6890             sum(src1.TXN_PR_COMMITTED_COST)         TXN_PR_COMMITTED_COST,
6891             sum(src1.TXN_OTH_COMMITTED_COST)        TXN_OTH_COMMITTED_COST,
6892             sum(src1.PRJ_RAW_COST)                  PRJ_RAW_COST,
6893             sum(src1.PRJ_BILL_RAW_COST)             PRJ_BILL_RAW_COST,
6894             sum(src1.PRJ_BRDN_COST)                 PRJ_BRDN_COST,
6895             sum(src1.PRJ_BILL_BRDN_COST)            PRJ_BILL_BRDN_COST,
6896             sum(src1.PRJ_REVENUE)                   PRJ_REVENUE,
6897             sum(src1.PRJ_SUP_INV_COMMITTED_COST)    PRJ_SUP_INV_COMMITTED_COST,
6898             sum(src1.PRJ_PO_COMMITTED_COST)         PRJ_PO_COMMITTED_COST,
6899             sum(src1.PRJ_PR_COMMITTED_COST)         PRJ_PR_COMMITTED_COST,
6900             sum(src1.PRJ_OTH_COMMITTED_COST)        PRJ_OTH_COMMITTED_COST,
6901             sum(src1.POU_RAW_COST)                  POU_RAW_COST,
6902             sum(src1.POU_BILL_RAW_COST)             POU_BILL_RAW_COST,
6903             sum(src1.POU_BRDN_COST)                 POU_BRDN_COST,
6904             sum(src1.POU_BILL_BRDN_COST)            POU_BILL_BRDN_COST,
6905             sum(src1.POU_REVENUE)                   POU_REVENUE,
6906             sum(src1.POU_SUP_INV_COMMITTED_COST)    POU_SUP_INV_COMMITTED_COST,
6907             sum(src1.POU_PO_COMMITTED_COST)         POU_PO_COMMITTED_COST,
6908             sum(src1.POU_PR_COMMITTED_COST)         POU_PR_COMMITTED_COST,
6909             sum(src1.POU_OTH_COMMITTED_COST)        POU_OTH_COMMITTED_COST,
6910             sum(src1.EOU_RAW_COST)                  EOU_RAW_COST,
6911             sum(src1.EOU_BILL_RAW_COST)             EOU_BILL_RAW_COST,
6912             sum(src1.EOU_BRDN_COST)                 EOU_BRDN_COST,
6913             sum(src1.EOU_BILL_BRDN_COST)            EOU_BILL_BRDN_COST,
6914             sum(src1.EOU_SUP_INV_COMMITTED_COST)    EOU_SUP_INV_COMMITTED_COST,
6915             sum(src1.EOU_PO_COMMITTED_COST)         EOU_PO_COMMITTED_COST,
6916             sum(src1.EOU_PR_COMMITTED_COST)         EOU_PR_COMMITTED_COST,
6917             sum(src1.EOU_OTH_COMMITTED_COST)        EOU_OTH_COMMITTED_COST,
6918             sum(src1.G1_RAW_COST)                   G1_RAW_COST,
6919             sum(src1.G1_BILL_RAW_COST)              G1_BILL_RAW_COST,
6920             sum(src1.G1_BRDN_COST)                  G1_BRDN_COST,
6921             sum(src1.G1_BILL_BRDN_COST)             G1_BILL_BRDN_COST,
6922             sum(src1.G1_REVENUE)                    G1_REVENUE,
6923             sum(src1.G1_SUP_INV_COMMITTED_COST)     G1_SUP_INV_COMMITTED_COST,
6924             sum(src1.G1_PO_COMMITTED_COST)          G1_PO_COMMITTED_COST,
6925             sum(src1.G1_PR_COMMITTED_COST)          G1_PR_COMMITTED_COST,
6926             sum(src1.G1_OTH_COMMITTED_COST)         G1_OTH_COMMITTED_COST,
6927             sum(src1.G2_RAW_COST)                   G2_RAW_COST,
6928             sum(src1.G2_BILL_RAW_COST)              G2_BILL_RAW_COST,
6929             sum(src1.G2_BRDN_COST)                  G2_BRDN_COST,
6930             sum(src1.G2_BILL_BRDN_COST)             G2_BILL_BRDN_COST,
6931             sum(src1.G2_REVENUE)                    G2_REVENUE,
6932             sum(src1.G2_SUP_INV_COMMITTED_COST)     G2_SUP_INV_COMMITTED_COST,
6933             sum(src1.G2_PO_COMMITTED_COST)          G2_PO_COMMITTED_COST,
6934             sum(src1.G2_PR_COMMITTED_COST)          G2_PR_COMMITTED_COST,
6935             sum(src1.G2_OTH_COMMITTED_COST)         G2_OTH_COMMITTED_COST,
6936             sum(src1.QUANTITY)                      QUANTITY,
6937             sum(src1.BILL_QUANTITY)                 BILL_QUANTITY
6938           from
6939             (
6940          select  /*+ ordered cardinality(MAP 1) use_nl(BAL) index (rbs_hdr, PJI_PJP_RBS_HEADER_N1) */  -- Modified for Bug 14735308
6941 		-- initial actuals data /* Added for bug 9836218  */ /* modified hint for 14724124 */
6942             bal.TXN_ACCUM_HEADER_ID,
6943             bal.RESOURCE_CLASS_ID,
6944             bal.PROJECT_ID,
6945             bal.PROJECT_ORG_ID,
6946             bal.PROJECT_ORGANIZATION_ID,
6947             bal.PROJECT_TYPE_CLASS,
6948             nvl(bal.TASK_ID, -1)                    TASK_ID,
6949             bal.RECVR_PERIOD_TYPE,
6950             bal.RECVR_PERIOD_ID,
6951             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
6952             bal.TXN_CURRENCY_CODE,
6953             bal.TXN_RAW_COST,
6954             bal.TXN_BILL_RAW_COST,
6955             bal.TXN_BRDN_COST,
6956             bal.TXN_BILL_BRDN_COST,
6957             bal.TXN_REVENUE,
6958             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
6959             to_number(null)                         TXN_PO_COMMITTED_COST,
6960             to_number(null)                         TXN_PR_COMMITTED_COST,
6961             to_number(null)                         TXN_OTH_COMMITTED_COST,
6962             bal.PRJ_RAW_COST,
6963             bal.PRJ_BILL_RAW_COST,
6964             bal.PRJ_BRDN_COST,
6965             bal.PRJ_BILL_BRDN_COST,
6966             bal.PRJ_REVENUE,
6967             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
6968             to_number(null)                         PRJ_PO_COMMITTED_COST,
6969             to_number(null)                         PRJ_PR_COMMITTED_COST,
6970             to_number(null)                         PRJ_OTH_COMMITTED_COST,
6971             bal.POU_RAW_COST,
6972             bal.POU_BILL_RAW_COST,
6973             bal.POU_BRDN_COST,
6974             bal.POU_BILL_BRDN_COST,
6975             bal.POU_REVENUE,
6976             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
6977             to_number(null)                         POU_PO_COMMITTED_COST,
6978             to_number(null)                         POU_PR_COMMITTED_COST,
6979             to_number(null)                         POU_OTH_COMMITTED_COST,
6980             bal.EOU_RAW_COST,
6981             bal.EOU_BILL_RAW_COST,
6982             bal.EOU_BRDN_COST,
6983             bal.EOU_BILL_BRDN_COST,
6984             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
6985             to_number(null)                         EOU_PO_COMMITTED_COST,
6986             to_number(null)                         EOU_PR_COMMITTED_COST,
6987             to_number(null)                         EOU_OTH_COMMITTED_COST,
6988             bal.G1_RAW_COST,
6989             bal.G1_BILL_RAW_COST,
6990             bal.G1_BRDN_COST,
6991             bal.G1_BILL_BRDN_COST,
6992             bal.G1_REVENUE,
6993             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
6994             to_number(null)                         G1_PO_COMMITTED_COST,
6995             to_number(null)                         G1_PR_COMMITTED_COST,
6996             to_number(null)                         G1_OTH_COMMITTED_COST,
6997             bal.G2_RAW_COST,
6998             bal.G2_BILL_RAW_COST,
6999             bal.G2_BRDN_COST,
7000             bal.G2_BILL_BRDN_COST,
7001             bal.G2_REVENUE,
7002             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
7003             to_number(null)                         G2_PO_COMMITTED_COST,
7004             to_number(null)                         G2_PR_COMMITTED_COST,
7005             to_number(null)                         G2_OTH_COMMITTED_COST,
7006             bal.QUANTITY,
7007             bal.BILL_QUANTITY
7008           from
7009             PJI_PJP_PROJ_BATCH_MAP map,
7010             PJI_FP_TXN_ACCUM       bal,
7011             PJI_PJP_RBS_HEADER     rbs_hdr
7012           where
7013             l_extraction_type in ('FULL', 'PARTIAL')    and
7014 --     decode(l_extraction_type,'FULL','Y','PARTIAL',decode(bitand(l_refresh_code,1),1,'Y','N'),'N') ='Y'  and --  Bug#5099574
7015 --      l_plan_type_id IS NULL        and                                 --  Bug#5099574
7016             map.WORKER_ID     = p_worker_id             and
7017             bal.PROJECT_ID    = map.PROJECT_ID          and
7018             bal.PROJECT_ID    = rbs_hdr.PROJECT_ID      and
7019             -1                = rbs_hdr.PLAN_VERSION_ID
7020           union all                     -- initial commitments data
7021           select /*+ ordered cardinality(MAP 1) use_nl(BAL) index (rbs_hdr, PJI_PJP_RBS_HEADER_N1) */  -- Modified for Bug 14735308
7022 		  --added hint for 14724124
7023             bal.TXN_ACCUM_HEADER_ID,
7024             to_number(null)                         RESOURCE_CLASS_ID,
7025             bal.PROJECT_ID,
7026             bal.PROJECT_ORG_ID,
7027             bal.PROJECT_ORGANIZATION_ID,
7028             to_char(null)                           PROJECT_TYPE_CLASS,
7029             nvl(bal.TASK_ID, -1)                    TASK_ID,
7030             bal.RECVR_PERIOD_TYPE,
7031             bal.RECVR_PERIOD_ID,
7032             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
7033             bal.TXN_CURRENCY_CODE,
7034             to_number(null)                         TXN_RAW_COST,
7035             to_number(null)                         TXN_BILL_RAW_COST,
7036             to_number(null)                         TXN_BRDN_COST,
7037             to_number(null)                         TXN_BILL_BRDN_COST,
7038             to_number(null)                         TXN_REVENUE,
7039             bal.TXN_SUP_INV_COMMITTED_COST,
7040             bal.TXN_PO_COMMITTED_COST,
7041             bal.TXN_PR_COMMITTED_COST,
7042             bal.TXN_OTH_COMMITTED_COST,
7043             to_number(null)                         PRJ_RAW_COST,
7044             to_number(null)                         PRJ_BILL_RAW_COST,
7045             to_number(null)                         PRJ_BRDN_COST,
7046             to_number(null)                         PRJ_BILL_BRDN_COST,
7047             to_number(null)                         PRJ_REVENUE,
7048             bal.PRJ_SUP_INV_COMMITTED_COST,
7049             bal.PRJ_PO_COMMITTED_COST,
7050             bal.PRJ_PR_COMMITTED_COST,
7051             bal.PRJ_OTH_COMMITTED_COST,
7052             to_number(null)                         POU_RAW_COST,
7053             to_number(null)                         POU_BILL_RAW_COST,
7054             to_number(null)                         POU_BRDN_COST,
7055             to_number(null)                         POU_BILL_BRDN_COST,
7056             to_number(null)                         POU_REVENUE,
7057             bal.POU_SUP_INV_COMMITTED_COST,
7058             bal.POU_PO_COMMITTED_COST,
7059             bal.POU_PR_COMMITTED_COST,
7060             bal.POU_OTH_COMMITTED_COST,
7061             to_number(null)                         EOU_RAW_COST,
7062             to_number(null)                         EOU_BILL_RAW_COST,
7063             to_number(null)                         EOU_BRDN_COST,
7064             to_number(null)                         EOU_BILL_BRDN_COST,
7065             bal.EOU_SUP_INV_COMMITTED_COST,
7066             bal.EOU_PO_COMMITTED_COST,
7067             bal.EOU_PR_COMMITTED_COST,
7068             bal.EOU_OTH_COMMITTED_COST,
7069             to_number(null)                         G1_RAW_COST,
7070             to_number(null)                         G1_BILL_RAW_COST,
7071             to_number(null)                         G1_BRDN_COST,
7072             to_number(null)                         G1_BILL_BRDN_COST,
7073             to_number(null)                         G1_REVENUE,
7074             bal.G1_SUP_INV_COMMITTED_COST,
7075             bal.G1_PO_COMMITTED_COST,
7076             bal.G1_PR_COMMITTED_COST,
7077             bal.G1_OTH_COMMITTED_COST,
7078             to_number(null)                         G2_RAW_COST,
7079             to_number(null)                         G2_BILL_RAW_COST,
7080             to_number(null)                         G2_BRDN_COST,
7081             to_number(null)                         G2_BILL_BRDN_COST,
7082             to_number(null)                         G2_REVENUE,
7083             bal.G2_SUP_INV_COMMITTED_COST,
7084             bal.G2_PO_COMMITTED_COST,
7085             bal.G2_PR_COMMITTED_COST,
7086             bal.G2_OTH_COMMITTED_COST,
7087             to_number(null)                         QUANTITY,
7088             to_number(null)                         BILL_QUANTITY
7089           from
7090             PJI_PJP_PROJ_BATCH_MAP map,
7091             PJI_FP_TXN_ACCUM1      bal,
7092             PJI_PJP_RBS_HEADER     rbs_hdr
7093           where
7094             l_extraction_type in ('FULL', 'PARTIAL')    and
7095 --            decode(l_extraction_type,'FULL','Y','PARTIAL',decode(bitand(l_refresh_code,1),1,'Y','N'),'N') ='Y'  and  --  Bug#5099574
7096   --          l_plan_type_id IS NULL        and                             --  Bug#5099574
7097             map.WORKER_ID     = p_worker_id             and
7098             bal.PROJECT_ID    = map.PROJECT_ID          and
7099             bal.PROJECT_ID    = rbs_hdr.PROJECT_ID      and
7100             -1                = rbs_hdr.PLAN_VERSION_ID
7101           union all                       -- incremental data
7102           select /*+ leading(TMP7_R,TMP7,RBS_HDR) */ --Added hint for 15881881
7103             tmp7.TXN_ACCUM_HEADER_ID,
7104             tmp7.RESOURCE_CLASS_ID,
7105             tmp7.PROJECT_ID,
7106             tmp7.PROJECT_ORG_ID,
7107             tmp7.PROJECT_ORGANIZATION_ID,
7108             tmp7.PROJECT_TYPE_CLASS,
7109             nvl(tmp7.TASK_ID, -1)                   TASK_ID,
7110             tmp7.RECVR_PERIOD_TYPE,
7111             tmp7.RECVR_PERIOD_ID,
7112             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
7113             tmp7.TXN_CURRENCY_CODE,
7114             tmp7.TXN_RAW_COST,
7115             tmp7.TXN_BILL_RAW_COST,
7116             tmp7.TXN_BRDN_COST,
7117             tmp7.TXN_BILL_BRDN_COST,
7118             tmp7.TXN_REVENUE,
7119             tmp7.TXN_SUP_INV_COMMITTED_COST,
7120             tmp7.TXN_PO_COMMITTED_COST,
7121             tmp7.TXN_PR_COMMITTED_COST,
7122             tmp7.TXN_OTH_COMMITTED_COST,
7123             tmp7.PRJ_RAW_COST,
7124             tmp7.PRJ_BILL_RAW_COST,
7125             tmp7.PRJ_BRDN_COST,
7126             tmp7.PRJ_BILL_BRDN_COST,
7127             tmp7.PRJ_REVENUE,
7128             tmp7.PRJ_SUP_INV_COMMITTED_COST,
7129             tmp7.PRJ_PO_COMMITTED_COST,
7130             tmp7.PRJ_PR_COMMITTED_COST,
7131             tmp7.PRJ_OTH_COMMITTED_COST,
7132             tmp7.POU_RAW_COST,
7133             tmp7.POU_BILL_RAW_COST,
7134             tmp7.POU_BRDN_COST,
7135             tmp7.POU_BILL_BRDN_COST,
7136             tmp7.POU_REVENUE,
7137             tmp7.POU_SUP_INV_COMMITTED_COST,
7138             tmp7.POU_PO_COMMITTED_COST,
7139             tmp7.POU_PR_COMMITTED_COST,
7140             tmp7.POU_OTH_COMMITTED_COST,
7141             tmp7.EOU_RAW_COST,
7142             tmp7.EOU_BILL_RAW_COST,
7143             tmp7.EOU_BRDN_COST,
7144             tmp7.EOU_BILL_BRDN_COST,
7145             tmp7.EOU_SUP_INV_COMMITTED_COST,
7146             tmp7.EOU_PO_COMMITTED_COST,
7147             tmp7.EOU_PR_COMMITTED_COST,
7148             tmp7.EOU_OTH_COMMITTED_COST,
7149             tmp7.G1_RAW_COST,
7150             tmp7.G1_BILL_RAW_COST,
7151             tmp7.G1_BRDN_COST,
7152             tmp7.G1_BILL_BRDN_COST,
7153             tmp7.G1_REVENUE,
7154             tmp7.G1_SUP_INV_COMMITTED_COST,
7155             tmp7.G1_PO_COMMITTED_COST,
7156             tmp7.G1_PR_COMMITTED_COST,
7157             tmp7.G1_OTH_COMMITTED_COST,
7158             tmp7.G2_RAW_COST,
7159             tmp7.G2_BILL_RAW_COST,
7160             tmp7.G2_BRDN_COST,
7161             tmp7.G2_BILL_BRDN_COST,
7162             tmp7.G2_REVENUE,
7163             tmp7.G2_SUP_INV_COMMITTED_COST,
7164             tmp7.G2_PO_COMMITTED_COST,
7165             tmp7.G2_PR_COMMITTED_COST,
7166             tmp7.G2_OTH_COMMITTED_COST,
7167             tmp7.QUANTITY,
7168             tmp7.BILL_QUANTITY
7169           from
7170             (select distinct STG_ROWID, worker_id from PJI_PJP_RMAP_FPR)   tmp7_r, -- Added for bug 16383776
7171             PJI_FM_AGGR_FIN7   tmp7,
7172             PJI_PJP_RBS_HEADER rbs_hdr
7173           where
7174             l_extraction_type = 'INCREMENTAL'           and
7175             tmp7_r.WORKER_ID  = p_worker_id             and
7176             tmp7_r.STG_ROWID  = tmp7.ROWID              and
7177             tmp7.PROJECT_ID   = rbs_hdr.PROJECT_ID      and
7178             -1                = rbs_hdr.PLAN_VERSION_ID
7179           union all                  -- newly associated RBSs for actuals
7180           select
7181             bal.TXN_ACCUM_HEADER_ID,
7182             bal.RESOURCE_CLASS_ID,
7183             bal.PROJECT_ID,
7184             bal.PROJECT_ORG_ID,
7185             bal.PROJECT_ORGANIZATION_ID,
7186             bal.PROJECT_TYPE_CLASS,
7187             nvl(bal.TASK_ID, -1)                    TASK_ID,
7188             bal.RECVR_PERIOD_TYPE,
7189             bal.RECVR_PERIOD_ID,
7190             log.RBS_VERSION_ID,
7191             bal.TXN_CURRENCY_CODE,
7192             bal.TXN_RAW_COST,
7193             bal.TXN_BILL_RAW_COST,
7194             bal.TXN_BRDN_COST,
7195             bal.TXN_BILL_BRDN_COST,
7196             bal.TXN_REVENUE,
7197             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
7198             to_number(null)                         TXN_PO_COMMITTED_COST,
7199             to_number(null)                         TXN_PR_COMMITTED_COST,
7200             to_number(null)                         TXN_OTH_COMMITTED_COST,
7201             bal.PRJ_RAW_COST,
7202             bal.PRJ_BILL_RAW_COST,
7203             bal.PRJ_BRDN_COST,
7204             bal.PRJ_BILL_BRDN_COST,
7205             bal.PRJ_REVENUE,
7206             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
7207             to_number(null)                         PRJ_PO_COMMITTED_COST,
7208             to_number(null)                         PRJ_PR_COMMITTED_COST,
7209             to_number(null)                         PRJ_OTH_COMMITTED_COST,
7210             bal.POU_RAW_COST,
7211             bal.POU_BILL_RAW_COST,
7212             bal.POU_BRDN_COST,
7213             bal.POU_BILL_BRDN_COST,
7214             bal.POU_REVENUE,
7215             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
7216             to_number(null)                         POU_PO_COMMITTED_COST,
7217             to_number(null)                         POU_PR_COMMITTED_COST,
7218             to_number(null)                         POU_OTH_COMMITTED_COST,
7219             bal.EOU_RAW_COST,
7220             bal.EOU_BILL_RAW_COST,
7221             bal.EOU_BRDN_COST,
7222             bal.EOU_BILL_BRDN_COST,
7223             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
7224             to_number(null)                         EOU_PO_COMMITTED_COST,
7225             to_number(null)                         EOU_PR_COMMITTED_COST,
7226             to_number(null)                         EOU_OTH_COMMITTED_COST,
7227             bal.G1_RAW_COST,
7228             bal.G1_BILL_RAW_COST,
7229             bal.G1_BRDN_COST,
7230             bal.G1_BILL_BRDN_COST,
7231             bal.G1_REVENUE,
7232             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
7233             to_number(null)                         G1_PO_COMMITTED_COST,
7234             to_number(null)                         G1_PR_COMMITTED_COST,
7235             to_number(null)                         G1_OTH_COMMITTED_COST,
7236             bal.G2_RAW_COST,
7237             bal.G2_BILL_RAW_COST,
7238             bal.G2_BRDN_COST,
7239             bal.G2_BILL_BRDN_COST,
7240             bal.G2_REVENUE,
7241             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
7242             to_number(null)                         G2_PO_COMMITTED_COST,
7243             to_number(null)                         G2_PR_COMMITTED_COST,
7244             to_number(null)                         G2_OTH_COMMITTED_COST,
7245             bal.QUANTITY,
7246             bal.BILL_QUANTITY
7247           from
7248             PJI_FP_TXN_ACCUM bal,
7249             (
7250             select
7251               distinct
7252               to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
7253               to_number(log.ATTRIBUTE1)            PROJECT_ID
7254             from
7255               PJI_PA_PROJ_EVENTS_LOG log
7256             where
7257               log.WORKER_ID = p_worker_id and
7258               log.EVENT_TYPE = 'RBS_ASSOC'
7259             ) log
7260           where
7261             l_extraction_type = 'INCREMENTAL' and
7262             bal.PROJECT_ID = log.PROJECT_ID
7263           union all                    -- newly associated RBSs for commitments
7264           select
7265             bal.TXN_ACCUM_HEADER_ID,
7266             to_number(null)                         RESOURCE_CLASS_ID,
7267             bal.PROJECT_ID,
7268             bal.PROJECT_ORG_ID,
7269             bal.PROJECT_ORGANIZATION_ID,
7270             to_char(null)                           PROJECT_TYPE_CLASS,
7271             nvl(bal.TASK_ID, -1)                    TASK_ID,
7272             bal.RECVR_PERIOD_TYPE,
7273             bal.RECVR_PERIOD_ID,
7274             log.RBS_VERSION_ID,
7275             bal.TXN_CURRENCY_CODE,
7276             to_number(null)                         TXN_RAW_COST,
7277             to_number(null)                         TXN_BILL_RAW_COST,
7278             to_number(null)                         TXN_BRDN_COST,
7279             to_number(null)                         TXN_BILL_BRDN_COST,
7280             to_number(null)                         TXN_REVENUE,
7281             bal.TXN_SUP_INV_COMMITTED_COST,
7282             bal.TXN_PO_COMMITTED_COST,
7283             bal.TXN_PR_COMMITTED_COST,
7284             bal.TXN_OTH_COMMITTED_COST,
7285             to_number(null)                         PRJ_RAW_COST,
7286             to_number(null)                         PRJ_BILL_RAW_COST,
7287             to_number(null)                         PRJ_BRDN_COST,
7288             to_number(null)                         PRJ_BILL_BRDN_COST,
7289             to_number(null)                         PRJ_REVENUE,
7290             bal.PRJ_SUP_INV_COMMITTED_COST,
7291             bal.PRJ_PO_COMMITTED_COST,
7292             bal.PRJ_PR_COMMITTED_COST,
7293             bal.PRJ_OTH_COMMITTED_COST,
7294             to_number(null)                         POU_RAW_COST,
7295             to_number(null)                         POU_BILL_RAW_COST,
7296             to_number(null)                         POU_BRDN_COST,
7297             to_number(null)                         POU_BILL_BRDN_COST,
7298             to_number(null)                         POU_REVENUE,
7299             bal.POU_SUP_INV_COMMITTED_COST,
7300             bal.POU_PO_COMMITTED_COST,
7301             bal.POU_PR_COMMITTED_COST,
7302             bal.POU_OTH_COMMITTED_COST,
7303             to_number(null)                         EOU_RAW_COST,
7304             to_number(null)                         EOU_BILL_RAW_COST,
7305             to_number(null)                         EOU_BRDN_COST,
7306             to_number(null)                         EOU_BILL_BRDN_COST,
7307             bal.EOU_SUP_INV_COMMITTED_COST,
7308             bal.EOU_PO_COMMITTED_COST,
7309             bal.EOU_PR_COMMITTED_COST,
7310             bal.EOU_OTH_COMMITTED_COST,
7311             to_number(null)                         G1_RAW_COST,
7312             to_number(null)                         G1_BILL_RAW_COST,
7313             to_number(null)                         G1_BRDN_COST,
7314             to_number(null)                         G1_BILL_BRDN_COST,
7315             to_number(null)                         G1_REVENUE,
7316             bal.G1_SUP_INV_COMMITTED_COST,
7317             bal.G1_PO_COMMITTED_COST,
7318             bal.G1_PR_COMMITTED_COST,
7319             bal.G1_OTH_COMMITTED_COST,
7320             to_number(null)                         G2_RAW_COST,
7321             to_number(null)                         G2_BILL_RAW_COST,
7322             to_number(null)                         G2_BRDN_COST,
7323             to_number(null)                         G2_BILL_BRDN_COST,
7324             to_number(null)                         G2_REVENUE,
7325             bal.G2_SUP_INV_COMMITTED_COST,
7326             bal.G2_PO_COMMITTED_COST,
7327             bal.G2_PR_COMMITTED_COST,
7328             bal.G2_OTH_COMMITTED_COST,
7329             to_number(null)                         QUANTITY,
7330             to_number(null)                         BILL_QUANTITY
7331           from
7332             PJI_FP_TXN_ACCUM1 bal,
7333             (
7334             select
7335               distinct
7336               to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
7337               to_numbeR(log.ATTRIBUTE1)            PROJECT_ID
7338             from
7339               PJI_PA_PROJ_EVENTS_LOG log
7340             where
7341               log.WORKER_ID = p_worker_id and
7342               log.EVENT_TYPE = 'RBS_ASSOC'
7343             ) log
7344           where
7345             l_extraction_type = 'INCREMENTAL' and
7346             bal.PROJECT_ID = log.PROJECT_ID
7347           union all
7348           select /*+ ordered index(bal, PJI_FP_TXN_ACCUM_N2)*/
7349 		  -- RBS change processing actuals
7350 		  --modified hint for 14724124
7351             bal.TXN_ACCUM_HEADER_ID,
7352             bal.RESOURCE_CLASS_ID,
7353             bal.PROJECT_ID,
7354             bal.PROJECT_ORG_ID,
7355             bal.PROJECT_ORGANIZATION_ID,
7356             bal.PROJECT_TYPE_CLASS,
7357             nvl(bal.TASK_ID, -1)                    TASK_ID,
7358             bal.RECVR_PERIOD_TYPE,
7359             bal.RECVR_PERIOD_ID,
7360             nvl(to_number(log.EVENT_OBJECT), -1)    RBS_VERSION_ID,
7361             bal.TXN_CURRENCY_CODE,
7362             bal.TXN_RAW_COST,
7363             bal.TXN_BILL_RAW_COST,
7364             bal.TXN_BRDN_COST,
7365             bal.TXN_BILL_BRDN_COST,
7366             bal.TXN_REVENUE,
7367             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
7368             to_number(null)                         TXN_PO_COMMITTED_COST,
7369             to_number(null)                         TXN_PR_COMMITTED_COST,
7370             to_number(null)                         TXN_OTH_COMMITTED_COST,
7371             bal.PRJ_RAW_COST,
7372             bal.PRJ_BILL_RAW_COST,
7373             bal.PRJ_BRDN_COST,
7374             bal.PRJ_BILL_BRDN_COST,
7375             bal.PRJ_REVENUE,
7376             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
7377             to_number(null)                         PRJ_PO_COMMITTED_COST,
7378             to_number(null)                         PRJ_PR_COMMITTED_COST,
7379             to_number(null)                         PRJ_OTH_COMMITTED_COST,
7380             bal.POU_RAW_COST,
7381             bal.POU_BILL_RAW_COST,
7382             bal.POU_BRDN_COST,
7383             bal.POU_BILL_BRDN_COST,
7384             bal.POU_REVENUE,
7385             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
7386             to_number(null)                         POU_PO_COMMITTED_COST,
7387             to_number(null)                         POU_PR_COMMITTED_COST,
7388             to_number(null)                         POU_OTH_COMMITTED_COST,
7389             bal.EOU_RAW_COST,
7390             bal.EOU_BILL_RAW_COST,
7391             bal.EOU_BRDN_COST,
7392             bal.EOU_BILL_BRDN_COST,
7393             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
7394             to_number(null)                         EOU_PO_COMMITTED_COST,
7395             to_number(null)                         EOU_PR_COMMITTED_COST,
7396             to_number(null)                         EOU_OTH_COMMITTED_COST,
7397             bal.G1_RAW_COST,
7398             bal.G1_BILL_RAW_COST,
7399             bal.G1_BRDN_COST,
7400             bal.G1_BILL_BRDN_COST,
7401             bal.G1_REVENUE,
7402             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
7403             to_number(null)                         G1_PO_COMMITTED_COST,
7404             to_number(null)                         G1_PR_COMMITTED_COST,
7405             to_number(null)                         G1_OTH_COMMITTED_COST,
7406             bal.G2_RAW_COST,
7407             bal.G2_BILL_RAW_COST,
7408             bal.G2_BRDN_COST,
7409             bal.G2_BILL_BRDN_COST,
7410             bal.G2_REVENUE,
7411             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
7412             to_number(null)                         G2_PO_COMMITTED_COST,
7413             to_number(null)                         G2_PR_COMMITTED_COST,
7414             to_number(null)                         G2_OTH_COMMITTED_COST,
7415             bal.QUANTITY,
7416             bal.BILL_QUANTITY
7417           from
7418             PJI_PA_PROJ_EVENTS_LOG   log,
7419             PJI_PJP_PROJ_EXTR_STATUS stat,
7420             PJI_FP_TXN_ACCUM         bal
7421           where
7422             l_extraction_type      = 'RBS'           and
7423             log.WORKER_ID          = p_worker_id     and
7424             log.EVENT_TYPE         = 'RBS_PUSH'      and
7425             stat.PROJECT_ID        = log.ATTRIBUTE19 and
7426             stat.EXTRACTION_STATUS = 'I'             and
7427             bal.PROJECT_ID         = log.ATTRIBUTE19
7428           union all                        -- RBS change processing commitments
7429           select /*+ ordered  */
7430 		  --added hint for 14724124
7431             bal.TXN_ACCUM_HEADER_ID,
7432             to_number(null)                         RESOURCE_CLASS_ID,
7433             bal.PROJECT_ID,
7434             bal.PROJECT_ORG_ID,
7435             bal.PROJECT_ORGANIZATION_ID,
7436             to_char(null)                           PROJECT_TYPE_CLASS,
7437             nvl(bal.TASK_ID, -1)                    TASK_ID,
7438             bal.RECVR_PERIOD_TYPE,
7439             bal.RECVR_PERIOD_ID,
7440             nvl(to_number(log.EVENT_OBJECT), -1)    RBS_VERSION_ID,
7441             bal.TXN_CURRENCY_CODE,
7442             to_number(null)                         TXN_RAW_COST,
7443             to_number(null)                         TXN_BILL_RAW_COST,
7444             to_number(null)                         TXN_BRDN_COST,
7445             to_number(null)                         TXN_BILL_BRDN_COST,
7446             to_number(null)                         TXN_REVENUE,
7447             bal.TXN_SUP_INV_COMMITTED_COST,
7448             bal.TXN_PO_COMMITTED_COST,
7449             bal.TXN_PR_COMMITTED_COST,
7450             bal.TXN_OTH_COMMITTED_COST,
7451             to_number(null)                         PRJ_RAW_COST,
7452             to_number(null)                         PRJ_BILL_RAW_COST,
7453             to_number(null)                         PRJ_BRDN_COST,
7454             to_number(null)                         PRJ_BILL_BRDN_COST,
7455             to_number(null)                         PRJ_REVENUE,
7456             bal.PRJ_SUP_INV_COMMITTED_COST,
7457             bal.PRJ_PO_COMMITTED_COST,
7458             bal.PRJ_PR_COMMITTED_COST,
7459             bal.PRJ_OTH_COMMITTED_COST,
7460             to_number(null)                         POU_RAW_COST,
7461             to_number(null)                         POU_BILL_RAW_COST,
7462             to_number(null)                         POU_BRDN_COST,
7463             to_number(null)                         POU_BILL_BRDN_COST,
7464             to_number(null)                         POU_REVENUE,
7465             bal.POU_SUP_INV_COMMITTED_COST,
7466             bal.POU_PO_COMMITTED_COST,
7467             bal.POU_PR_COMMITTED_COST,
7468             bal.POU_OTH_COMMITTED_COST,
7469             to_number(null)                         EOU_RAW_COST,
7470             to_number(null)                         EOU_BILL_RAW_COST,
7471             to_number(null)                         EOU_BRDN_COST,
7472             to_number(null)                         EOU_BILL_BRDN_COST,
7473             bal.EOU_SUP_INV_COMMITTED_COST,
7474             bal.EOU_PO_COMMITTED_COST,
7475             bal.EOU_PR_COMMITTED_COST,
7476             bal.EOU_OTH_COMMITTED_COST,
7477             to_number(null)                         G1_RAW_COST,
7478             to_number(null)                         G1_BILL_RAW_COST,
7479             to_number(null)                         G1_BRDN_COST,
7480             to_number(null)                         G1_BILL_BRDN_COST,
7481             to_number(null)                         G1_REVENUE,
7482             bal.G1_SUP_INV_COMMITTED_COST,
7483             bal.G1_PO_COMMITTED_COST,
7484             bal.G1_PR_COMMITTED_COST,
7485             bal.G1_OTH_COMMITTED_COST,
7486             to_number(null)                         G2_RAW_COST,
7487             to_number(null)                         G2_BILL_RAW_COST,
7488             to_number(null)                         G2_BRDN_COST,
7489             to_number(null)                         G2_BILL_BRDN_COST,
7490             to_number(null)                         G2_REVENUE,
7491             bal.G2_SUP_INV_COMMITTED_COST,
7492             bal.G2_PO_COMMITTED_COST,
7493             bal.G2_PR_COMMITTED_COST,
7494             bal.G2_OTH_COMMITTED_COST,
7495             to_number(null)                         QUANTITY,
7496             to_number(null)                         BILL_QUANTITY
7497           from
7498             PJI_PA_PROJ_EVENTS_LOG   log,
7499             PJI_PJP_PROJ_EXTR_STATUS stat,
7500             PJI_FP_TXN_ACCUM1        bal
7501           where
7502             l_extraction_type      = 'RBS'           and
7503             log.WORKER_ID          = p_worker_id     and
7504             log.EVENT_TYPE         = 'RBS_PUSH'      and
7505             stat.PROJECT_ID        = log.ATTRIBUTE19 and
7506             stat.EXTRACTION_STATUS = 'I'             and
7507             bal.PROJECT_ID         = log.ATTRIBUTE19
7508             ) src1
7509           group by
7510             src1.TXN_ACCUM_HEADER_ID,
7511             src1.RESOURCE_CLASS_ID,
7512             src1.PROJECT_ID,
7513             src1.PROJECT_ORG_ID,
7514             src1.PROJECT_ORGANIZATION_ID,
7515             src1.PROJECT_TYPE_CLASS,
7516             src1.TASK_ID,
7517             src1.RECVR_PERIOD_TYPE,
7518             src1.RECVR_PERIOD_ID,
7519             src1.RBS_VERSION_ID,
7520             src1.TXN_CURRENCY_CODE
7521             ) src2
7522           ) src,
7523           PA_RBS_TXN_ACCUM_MAP     rbs,
7524           PJI_PJP_PROJ_BATCH_MAP   map,
7525           PJI_ORG_EXTR_INFO        info,
7526           PJI_PJP_WBS_HEADER       wbs_hdr,
7527           PA_PROJ_ELEMENT_VERSIONS ver,
7528           (
7529             select 1   INVERT_ID from dual
7530                                  where l_g1_currency_flag = 'Y' and    /* Added for Bug 8708651 */
7531                                        l_g1_currency_code is not null union all
7532             select 2   INVERT_ID from dual
7533                                  where l_g2_currency_flag = 'Y' and
7534                                        l_g2_currency_code is not null union all
7535             select 4   INVERT_ID from dual union all
7536             select 8   INVERT_ID from dual union all
7537             select 16  INVERT_ID from dual
7538                                  where l_txn_currency_flag = 'Y'
7539          -- select 32  INVERT_ID from dual  OMIT DETAIL SLICES FOR NOW
7540          --                      where l_g1_currency_code is not null union all
7541          -- select 64  INVERT_ID from dual
7542          --                      where l_g2_currency_flag = 'Y' and
7543          --                            l_g2_currency_code is not null union all
7544          -- select 128 INVERT_ID from dual union all
7545          -- select 256 INVERT_ID from dual
7546           ) invert
7547         where
7548           src.TXN_ACCUM_HEADER_ID     = rbs.TXN_ACCUM_HEADER_ID (+) and
7549           src.RBS_VERSION_ID          = rbs.STRUCT_VERSION_ID   (+) and
7550           map.WORKER_ID               = p_worker_id                 and
7551           src.PROJECT_ID              = map.PROJECT_ID              and
7552           src.PROJECT_ORG_ID          = info.ORG_ID                 and  /*5377133 */
7553           wbs_hdr.PLAN_VERSION_ID     = -1                          and
7554           src.PROJECT_ID              = wbs_hdr.PROJECT_ID          and
7555           ver.ELEMENT_VERSION_ID      = wbs_hdr.WBS_VERSION_ID
7556         ) src3
7557       group by
7558         src3.WORKER_ID,
7559         src3.TXN_ACCUM_HEADER_ID,
7560         src3.RESOURCE_CLASS_ID,
7561         src3.PROJECT_ID,
7562         src3.PROJECT_ORG_ID,
7563         src3.PROJECT_ORGANIZATION_ID,
7564         src3.PROJECT_TYPE_CLASS,
7565         src3.PROJECT_ELEMENT_ID,
7566         src3.TIME_ID,
7567         src3.PERIOD_TYPE_ID,
7568         src3.CALENDAR_TYPE,
7569         src3.RBS_AGGR_LEVEL,
7570         src3.WBS_ROLLUP_FLAG,
7571         src3.PRG_ROLLUP_FLAG,
7572         src3.DIFF_CURRENCY_CODE,
7573         src3.DIFF_ROWNUM,
7574         nvl(src3.CURRENCY_CODE, 'PJI$NULL'),
7575         src3.RBS_ELEMENT_ID,
7576         src3.RBS_VERSION_ID,
7577         src3.PLAN_VERSION_ID,
7578         src3.PLAN_TYPE_ID
7579       ) src,
7580       PA_RESOURCE_CLASSES_B cls
7581     where
7582       src.RESOURCE_CLASS_ID = cls.RESOURCE_CLASS_ID (+)
7583     group by
7584       src.WORKER_ID,
7585       src.TXN_ACCUM_HEADER_ID,
7586       src.PROJECT_ID,
7587       src.PROJECT_ORG_ID,
7588       src.PROJECT_ORGANIZATION_ID,
7589       src.PROJECT_ELEMENT_ID,
7590       src.TIME_ID,
7591       src.PERIOD_TYPE_ID,
7592       src.CALENDAR_TYPE,
7593       src.RBS_AGGR_LEVEL,
7594       src.WBS_ROLLUP_FLAG,
7595       src.PRG_ROLLUP_FLAG,
7596       src.CURR_RECORD_TYPE_ID,
7597       src.CURRENCY_CODE,
7598       src.RBS_ELEMENT_ID,
7599       src.RBS_VERSION_ID,
7600       src.PLAN_VERSION_ID,
7601       src.PLAN_TYPE_ID;
7602 
7603     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);');
7604 
7605     commit;
7606 
7607   end AGGREGATE_FP_SLICES;
7608 
7609 
7610   -- -----------------------------------------------------
7611   -- procedure AGGREGATE_AC_SLICES
7612   --
7613   --   History
7614   --   19-MAR-2004  SVERMETT  Created
7615   --
7616   -- Internal PJP Summarization API.
7617   --
7618   -- -----------------------------------------------------
7619   procedure AGGREGATE_AC_SLICES (p_worker_id in number) is
7620 
7621     l_process           varchar2(30);
7622     l_extraction_type   varchar2(30);
7623 
7624 
7625     l_txn_currency_flag varchar2(1);
7626     l_g2_currency_flag  varchar2(1);
7627     l_g1_currency_flag  varchar2(1);   /* Added for Bug 8708651 */
7628 
7629     l_g1_currency_code  varchar2(30);
7630     l_g2_currency_code  varchar2(30);
7631 
7632     l_plan_type_id      number;    -- Bug#5099574
7633     l_refresh_code      number;
7634 
7635 
7636   begin
7637 
7638     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7639 
7640     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7641 
7642     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);')) then
7643       return;
7644     end if;
7645 
7646    --  Bug#5099574  - Start
7647 
7648       l_plan_type_id     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
7649       l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
7650 
7651       if (l_plan_type_id = -1) then
7652         l_plan_type_id := null;
7653       end if;
7654 
7655     -- If the condtion is true then mark the process as completed and return
7656       if ( l_extraction_type='PARTIAL' and ( l_plan_type_id is not null  or bitand(l_refresh_code,1) <> 1) ) then
7657        PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);');
7658        commit;
7659        return;
7660       end if;
7661 
7662   --  Bug#5099574 - End
7663 
7664     if (l_extraction_type <> 'RBS') then
7665 
7666     select
7667       TXN_CURR_FLAG,
7668       GLOBAL_CURR2_FLAG,
7669       nvl(GLOBAL_CURR1_FLAG,'Y')   /* Added for Bug 8708651, NULL check added for 9062837 */
7670     into
7671       l_txn_currency_flag,
7672       l_g2_currency_flag,
7673       l_g1_currency_flag      /* Added for Bug 8708651 */
7674     from
7675       PJI_SYSTEM_SETTINGS;
7676 
7677     l_g1_currency_code := PJI_UTILS.GET_GLOBAL_PRIMARY_CURRENCY;
7678     l_g2_currency_code := PJI_UTILS.GET_GLOBAL_SECONDARY_CURRENCY;
7679 
7680     insert into PJI_AC_AGGR_PJP0 pjp0_i
7681     (
7682       WORKER_ID,
7683       PROJECT_ID,
7684       PROJECT_ORG_ID,
7685       PROJECT_ORGANIZATION_ID,
7686       PROJECT_ELEMENT_ID,
7687       TIME_ID,
7688       PERIOD_TYPE_ID,
7689       CALENDAR_TYPE,
7690       WBS_ROLLUP_FLAG,
7691       PRG_ROLLUP_FLAG,
7692       CURR_RECORD_TYPE_ID,
7693       CURRENCY_CODE,
7694       REVENUE,
7695       INITIAL_FUNDING_AMOUNT,
7696       INITIAL_FUNDING_COUNT,
7697       ADDITIONAL_FUNDING_AMOUNT,
7698       ADDITIONAL_FUNDING_COUNT,
7699       CANCELLED_FUNDING_AMOUNT,
7700       CANCELLED_FUNDING_COUNT,
7701       FUNDING_ADJUSTMENT_AMOUNT,
7702       FUNDING_ADJUSTMENT_COUNT,
7703       REVENUE_WRITEOFF,
7704       AR_INVOICE_AMOUNT,
7705       AR_INVOICE_COUNT,
7706       AR_CASH_APPLIED_AMOUNT,
7707       AR_INVOICE_WRITE_OFF_AMOUNT,
7708       AR_INVOICE_WRITEOFF_COUNT,
7709       AR_CREDIT_MEMO_AMOUNT,
7710       AR_CREDIT_MEMO_COUNT,
7711       UNBILLED_RECEIVABLES,
7712       UNEARNED_REVENUE,
7713       AR_UNAPPR_INVOICE_AMOUNT,
7714       AR_UNAPPR_INVOICE_COUNT,
7715       AR_APPR_INVOICE_AMOUNT,
7716       AR_APPR_INVOICE_COUNT,
7717       AR_AMOUNT_DUE,
7718       AR_COUNT_DUE,
7719       AR_AMOUNT_OVERDUE,
7720       AR_COUNT_OVERDUE
7721     )
7722     select
7723       WORKER_ID,
7724       PROJECT_ID,
7725       PROJECT_ORG_ID,
7726       PROJECT_ORGANIZATION_ID,
7727       PROJECT_ELEMENT_ID,
7728       TIME_ID,
7729       PERIOD_TYPE_ID,
7730       CALENDAR_TYPE,
7731       WBS_ROLLUP_FLAG,
7732       PRG_ROLLUP_FLAG,
7733       sum(CURR_RECORD_TYPE_ID)                     CURR_RECORD_TYPE_ID,
7734       nvl(CURRENCY_CODE, 'PJI$NULL')               CURRENCY_CODE,
7735       max(REVENUE)                                 REVENUE,
7736       max(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
7737       max(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
7738       max(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
7739       max(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
7740       max(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
7741       max(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
7742       max(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
7743       max(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
7744       max(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
7745       max(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
7746       max(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
7747       max(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
7748       max(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
7749       max(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
7750       max(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
7751       max(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
7752       max(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
7753       max(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
7754       max(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
7755       max(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
7756       max(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
7757       max(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
7758       max(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
7759       max(AR_COUNT_DUE)                            AR_COUNT_DUE,
7760       max(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
7761       max(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE
7762     from
7763       (
7764       select /*+ ordered */
7765         p_worker_id                                WORKER_ID,
7766         src.PROJECT_ID,
7767         src.PROJECT_ORG_ID,
7768         map.PROJECT_ORGANIZATION_ID,
7769         decode(src.TASK_ID,
7770                -1, ver.PROJ_ELEMENT_ID,
7771                src.TASK_ID)                        PROJECT_ELEMENT_ID,
7772         src.PERIOD_ID                              TIME_ID,
7773         32                                         PERIOD_TYPE_ID,
7774         decode(src.PERIOD_TYPE,
7775                'ENT', 'E',
7776                'GL',  'G',
7777                'PA',  'P')                         CALENDAR_TYPE,
7778         'N'                                        WBS_ROLLUP_FLAG,
7779         'N'                                        PRG_ROLLUP_FLAG,
7780         invert.INVERT_ID                           CURR_RECORD_TYPE_ID,
7781         decode(invert.INVERT_ID,
7782                1,   l_g1_currency_code,
7783                2,   l_g2_currency_code,
7784                4,   src.PF_CURRENCY_CODE,
7785                8,   src.PRJ_CURRENCY_CODE,
7786                16,  src.TXN_CURRENCY_CODE,
7787                32,  l_g1_currency_code,
7788                64,  l_g2_currency_code,
7789                128, src.PF_CURRENCY_CODE,
7790                256, src.PRJ_CURRENCY_CODE)         DIFF_CURRENCY_CODE,
7791         DIFF_ROWNUM                                DIFF_ROWNUM,
7792         decode(invert.INVERT_ID,
7793                1,   l_g1_currency_code,
7794                2,   l_g2_currency_code,
7795                4,   src.PF_CURRENCY_CODE,
7796                8,   src.PRJ_CURRENCY_CODE,
7797                16,  src.TXN_CURRENCY_CODE,
7798                32,  src.TXN_CURRENCY_CODE,
7799                64,  src.TXN_CURRENCY_CODE,
7800                128, src.TXN_CURRENCY_CODE,
7801                256, src.TXN_CURRENCY_CODE)         CURRENCY_CODE,
7802         decode(invert.INVERT_ID,
7803                1,   src.G1_REVENUE,
7804                2,   src.G2_REVENUE,
7805                4,   src.POU_REVENUE,
7806                8,   src.PRJ_REVENUE,
7807                16,  src.TXN_REVENUE,
7808                32,  src.G1_REVENUE,
7809                64,  src.G2_REVENUE,
7810                128, src.POU_REVENUE,
7811                256, src.PRJ_REVENUE)               REVENUE,
7812         decode(invert.INVERT_ID,
7813                1,   src.G1_INITIAL_FUNDING_AMOUNT,
7814                2,   src.G2_INITIAL_FUNDING_AMOUNT,
7815                4,   src.POU_INITIAL_FUNDING_AMOUNT,
7816                8,   src.PRJ_INITIAL_FUNDING_AMOUNT,
7817                16,  src.TXN_INITIAL_FUNDING_AMOUNT,
7818                32,  src.G1_INITIAL_FUNDING_AMOUNT,
7819                64,  src.G2_INITIAL_FUNDING_AMOUNT,
7820                128, src.POU_INITIAL_FUNDING_AMOUNT,
7821                256, src.PRJ_INITIAL_FUNDING_AMOUNT)
7822                                                    INITIAL_FUNDING_AMOUNT,
7823         src.INITIAL_FUNDING_COUNT,
7824         decode(invert.INVERT_ID,
7825                1,   src.G1_ADDITIONAL_FUNDING_AMOUNT,
7826                2,   src.G2_ADDITIONAL_FUNDING_AMOUNT,
7827                4,   src.POU_ADDITIONAL_FUNDING_AMOUNT,
7828                8,   src.PRJ_ADDITIONAL_FUNDING_AMOUNT,
7829                16,  src.TXN_ADDITIONAL_FUNDING_AMOUNT,
7830                32,  src.G1_ADDITIONAL_FUNDING_AMOUNT,
7831                64,  src.G2_ADDITIONAL_FUNDING_AMOUNT,
7832                128, src.POU_ADDITIONAL_FUNDING_AMOUNT,
7833                256, src.PRJ_ADDITIONAL_FUNDING_AMOUNT)
7834                                                    ADDITIONAL_FUNDING_AMOUNT,
7835         src.ADDITIONAL_FUNDING_COUNT,
7836         decode(invert.INVERT_ID,
7837                1,   src.G1_CANCELLED_FUNDING_AMOUNT,
7838                2,   src.G2_CANCELLED_FUNDING_AMOUNT,
7839                4,   src.POU_CANCELLED_FUNDING_AMOUNT,
7840                8,   src.PRJ_CANCELLED_FUNDING_AMOUNT,
7841                16,  src.TXN_CANCELLED_FUNDING_AMOUNT,
7842                32,  src.G1_CANCELLED_FUNDING_AMOUNT,
7843                64,  src.G2_CANCELLED_FUNDING_AMOUNT,
7844                128, src.POU_CANCELLED_FUNDING_AMOUNT,
7845                256, src.PRJ_CANCELLED_FUNDING_AMOUNT)
7846                                                    CANCELLED_FUNDING_AMOUNT,
7847         src.CANCELLED_FUNDING_COUNT,
7848         decode(invert.INVERT_ID,
7849                1,   src.G1_FUNDING_ADJUSTMENT_AMOUNT,
7850                2,   src.G2_FUNDING_ADJUSTMENT_AMOUNT,
7851                4,   src.POU_FUNDING_ADJUSTMENT_AMOUNT,
7852                8,   src.PRJ_FUNDING_ADJUSTMENT_AMOUNT,
7853                16,  src.TXN_FUNDING_ADJUSTMENT_AMOUNT,
7854                32,  src.G1_FUNDING_ADJUSTMENT_AMOUNT,
7855                64,  src.G2_FUNDING_ADJUSTMENT_AMOUNT,
7856                128, src.POU_FUNDING_ADJUSTMENT_AMOUNT,
7857                256, src.PRJ_FUNDING_ADJUSTMENT_AMOUNT)
7858                                                    FUNDING_ADJUSTMENT_AMOUNT,
7859         src.FUNDING_ADJUSTMENT_COUNT,
7860         decode(invert.INVERT_ID,
7861                1,   src.G1_REVENUE_WRITEOFF,
7862                2,   src.G2_REVENUE_WRITEOFF,
7863                4,   src.POU_REVENUE_WRITEOFF,
7864                8,   src.PRJ_REVENUE_WRITEOFF,
7865                16,  src.TXN_REVENUE_WRITEOFF,
7866                32,  src.G1_REVENUE_WRITEOFF,
7867                64,  src.G2_REVENUE_WRITEOFF,
7868                128, src.POU_REVENUE_WRITEOFF,
7869                256, src.PRJ_REVENUE_WRITEOFF)      REVENUE_WRITEOFF,
7870         decode(invert.INVERT_ID,
7871                1,   src.G1_AR_INVOICE_AMOUNT,
7872                2,   src.G2_AR_INVOICE_AMOUNT,
7873                4,   src.POU_AR_INVOICE_AMOUNT,
7874                8,   src.PRJ_AR_INVOICE_AMOUNT,
7875                16,  src.TXN_AR_INVOICE_AMOUNT,
7876                32,  src.G1_AR_INVOICE_AMOUNT,
7877                64,  src.G2_AR_INVOICE_AMOUNT,
7878                128, src.POU_AR_INVOICE_AMOUNT,
7879                256, src.PRJ_AR_INVOICE_AMOUNT)     AR_INVOICE_AMOUNT,
7880         src.AR_INVOICE_COUNT,
7881         decode(invert.INVERT_ID,
7882                1,   src.G1_AR_CASH_APPLIED_AMOUNT,
7883                2,   src.G2_AR_CASH_APPLIED_AMOUNT,
7884                4,   src.POU_AR_CASH_APPLIED_AMOUNT,
7885                8,   src.PRJ_AR_CASH_APPLIED_AMOUNT,
7886                16,  src.TXN_AR_CASH_APPLIED_AMOUNT,
7887                32,  src.G1_AR_CASH_APPLIED_AMOUNT,
7888                64,  src.G2_AR_CASH_APPLIED_AMOUNT,
7889                128, src.POU_AR_CASH_APPLIED_AMOUNT,
7890                256, src.PRJ_AR_CASH_APPLIED_AMOUNT)
7891                                                    AR_CASH_APPLIED_AMOUNT,
7892         decode(invert.INVERT_ID,
7893                1,   src.G1_AR_INVOICE_WRITEOFF_AMOUNT,
7894                2,   src.G2_AR_INVOICE_WRITEOFF_AMOUNT,
7895                4,   src.POU_AR_INVOICE_WRITEOFF_AMOUNT,
7896                8,   src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
7897                16,  src.TXN_AR_INVOICE_WRITEOFF_AMOUNT,
7898                32,  src.G1_AR_INVOICE_WRITEOFF_AMOUNT,
7899                64,  src.G2_AR_INVOICE_WRITEOFF_AMOUNT,
7900                128, src.POU_AR_INVOICE_WRITEOFF_AMOUNT,
7901                256, src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT)
7902                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
7903         src.AR_INVOICE_WRITEOFF_COUNT,
7904         decode(invert.INVERT_ID,
7905                1,   src.G1_AR_CREDIT_MEMO_AMOUNT,
7906                2,   src.G2_AR_CREDIT_MEMO_AMOUNT,
7907                4,   src.POU_AR_CREDIT_MEMO_AMOUNT,
7908                8,   src.PRJ_AR_CREDIT_MEMO_AMOUNT,
7909                16,  src.TXN_AR_CREDIT_MEMO_AMOUNT,
7910                32,  src.G1_AR_CREDIT_MEMO_AMOUNT,
7911                64,  src.G2_AR_CREDIT_MEMO_AMOUNT,
7912                128, src.POU_AR_CREDIT_MEMO_AMOUNT,
7913                256, src.PRJ_AR_CREDIT_MEMO_AMOUNT) AR_CREDIT_MEMO_AMOUNT,
7914         src.AR_CREDIT_MEMO_COUNT,
7915         decode(invert.INVERT_ID,
7916                1,   src.G1_UNBILLED_RECEIVABLES,
7917                2,   src.G2_UNBILLED_RECEIVABLES,
7918                4,   src.POU_UNBILLED_RECEIVABLES,
7919                8,   src.PRJ_UNBILLED_RECEIVABLES,
7920                16,  src.TXN_UNBILLED_RECEIVABLES,
7921                32,  src.G1_UNBILLED_RECEIVABLES,
7922                64,  src.G2_UNBILLED_RECEIVABLES,
7923                128, src.POU_UNBILLED_RECEIVABLES,
7924                256, src.PRJ_UNBILLED_RECEIVABLES)  UNBILLED_RECEIVABLES,
7925         decode(invert.INVERT_ID,
7926                1,   src.G1_UNEARNED_REVENUE,
7927                2,   src.G2_UNEARNED_REVENUE,
7928                4,   src.POU_UNEARNED_REVENUE,
7929                8,   src.PRJ_UNEARNED_REVENUE,
7930                16,  src.TXN_UNEARNED_REVENUE,
7931                32,  src.G1_UNEARNED_REVENUE,
7932                64,  src.G2_UNEARNED_REVENUE,
7933                128, src.POU_UNEARNED_REVENUE,
7934                256, src.PRJ_UNEARNED_REVENUE)      UNEARNED_REVENUE,
7935         decode(invert.INVERT_ID,
7936                1,   src.G1_AR_UNAPPR_INVOICE_AMOUNT,
7937                2,   src.G2_AR_UNAPPR_INVOICE_AMOUNT,
7938                4,   src.POU_AR_UNAPPR_INVOICE_AMOUNT,
7939                8,   src.PRJ_AR_UNAPPR_INVOICE_AMOUNT,
7940                16,  src.TXN_AR_UNAPPR_INVOICE_AMOUNT,
7941                32,  src.G1_AR_UNAPPR_INVOICE_AMOUNT,
7942                64,  src.G2_AR_UNAPPR_INVOICE_AMOUNT,
7943                128, src.POU_AR_UNAPPR_INVOICE_AMOUNT,
7944                256, src.PRJ_AR_UNAPPR_INVOICE_AMOUNT)
7945                                                    AR_UNAPPR_INVOICE_AMOUNT,
7946         src.AR_UNAPPR_INVOICE_COUNT,
7947         decode(invert.INVERT_ID,
7948                1,   src.G1_AR_APPR_INVOICE_AMOUNT,
7949                2,   src.G2_AR_APPR_INVOICE_AMOUNT,
7950                4,   src.POU_AR_APPR_INVOICE_AMOUNT,
7951                8,   src.PRJ_AR_APPR_INVOICE_AMOUNT,
7952                16,  src.TXN_AR_APPR_INVOICE_AMOUNT,
7953                32,  src.G1_AR_APPR_INVOICE_AMOUNT,
7954                64,  src.G2_AR_APPR_INVOICE_AMOUNT,
7955                128, src.POU_AR_APPR_INVOICE_AMOUNT,
7956                256, src.PRJ_AR_APPR_INVOICE_AMOUNT)
7957                                                    AR_APPR_INVOICE_AMOUNT,
7958         src.AR_APPR_INVOICE_COUNT,
7959         decode(invert.INVERT_ID,
7960                1,   src.G1_AR_AMOUNT_DUE,
7961                2,   src.G2_AR_AMOUNT_DUE,
7962                4,   src.POU_AR_AMOUNT_DUE,
7963                8,   src.PRJ_AR_AMOUNT_DUE,
7964                16,  src.TXN_AR_AMOUNT_DUE,
7965                32,  src.G1_AR_AMOUNT_DUE,
7966                64,  src.G2_AR_AMOUNT_DUE,
7967                128, src.POU_AR_AMOUNT_DUE,
7968                256, src.PRJ_AR_AMOUNT_DUE)         AR_AMOUNT_DUE,
7969         src.AR_COUNT_DUE,
7970         decode(invert.INVERT_ID,
7971                1,   src.G1_AR_AMOUNT_OVERDUE,
7972                2,   src.G2_AR_AMOUNT_OVERDUE,
7973                4,   src.POU_AR_AMOUNT_OVERDUE,
7974                8,   src.PRJ_AR_AMOUNT_OVERDUE,
7975                16,  src.TXN_AR_AMOUNT_OVERDUE,
7976                32,  src.G1_AR_AMOUNT_OVERDUE,
7977                64,  src.G2_AR_AMOUNT_OVERDUE,
7978                128, src.POU_AR_AMOUNT_OVERDUE,
7979                256, src.PRJ_AR_AMOUNT_OVERDUE)     AR_AMOUNT_OVERDUE,
7980         src.AR_COUNT_OVERDUE
7981       from
7982         (
7983         select
7984           ROWNUM                                DIFF_ROWNUM,
7985           PROJECT_ID,
7986           PROJECT_ORG_ID,
7987           PROJECT_ORGANIZATION_ID,
7988           TASK_ID,
7989           PERIOD_TYPE,
7990           PERIOD_ID,
7991           PF_CURRENCY_CODE,
7992           PRJ_CURRENCY_CODE,
7993           TXN_CURRENCY_CODE,
7994           TXN_REVENUE,
7995           TXN_FUNDING,
7996           TXN_INITIAL_FUNDING_AMOUNT,
7997           TXN_ADDITIONAL_FUNDING_AMOUNT,
7998           TXN_CANCELLED_FUNDING_AMOUNT,
7999           TXN_FUNDING_ADJUSTMENT_AMOUNT,
8000           TXN_REVENUE_WRITEOFF,
8001           TXN_AR_INVOICE_AMOUNT,
8002           TXN_AR_CASH_APPLIED_AMOUNT,
8003           TXN_AR_INVOICE_WRITEOFF_AMOUNT,
8004           TXN_AR_CREDIT_MEMO_AMOUNT,
8005           TXN_UNBILLED_RECEIVABLES,
8006           TXN_UNEARNED_REVENUE,
8007           TXN_AR_UNAPPR_INVOICE_AMOUNT,
8008           TXN_AR_APPR_INVOICE_AMOUNT,
8009           TXN_AR_AMOUNT_DUE,
8010           TXN_AR_AMOUNT_OVERDUE,
8011           PRJ_REVENUE,
8012           PRJ_FUNDING,
8013           PRJ_INITIAL_FUNDING_AMOUNT,
8014           PRJ_ADDITIONAL_FUNDING_AMOUNT,
8015           PRJ_CANCELLED_FUNDING_AMOUNT,
8016           PRJ_FUNDING_ADJUSTMENT_AMOUNT,
8017           PRJ_REVENUE_WRITEOFF,
8018           PRJ_AR_INVOICE_AMOUNT,
8019           PRJ_AR_CASH_APPLIED_AMOUNT,
8020           PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
8021           PRJ_AR_CREDIT_MEMO_AMOUNT,
8022           PRJ_UNBILLED_RECEIVABLES,
8023           PRJ_UNEARNED_REVENUE,
8024           PRJ_AR_UNAPPR_INVOICE_AMOUNT,
8025           PRJ_AR_APPR_INVOICE_AMOUNT,
8026           PRJ_AR_AMOUNT_DUE,
8027           PRJ_AR_AMOUNT_OVERDUE,
8028           POU_REVENUE,
8029           POU_FUNDING,
8030           POU_INITIAL_FUNDING_AMOUNT,
8031           POU_ADDITIONAL_FUNDING_AMOUNT,
8032           POU_CANCELLED_FUNDING_AMOUNT,
8033           POU_FUNDING_ADJUSTMENT_AMOUNT,
8034           POU_REVENUE_WRITEOFF,
8035           POU_AR_INVOICE_AMOUNT,
8036           POU_AR_CASH_APPLIED_AMOUNT,
8037           POU_AR_INVOICE_WRITEOFF_AMOUNT,
8038           POU_AR_CREDIT_MEMO_AMOUNT,
8039           POU_UNBILLED_RECEIVABLES,
8040           POU_UNEARNED_REVENUE,
8041           POU_AR_UNAPPR_INVOICE_AMOUNT,
8042           POU_AR_APPR_INVOICE_AMOUNT,
8043           POU_AR_AMOUNT_DUE,
8044           POU_AR_AMOUNT_OVERDUE,
8045           INITIAL_FUNDING_COUNT,
8046           ADDITIONAL_FUNDING_COUNT,
8047           CANCELLED_FUNDING_COUNT,
8048           FUNDING_ADJUSTMENT_COUNT,
8049           AR_INVOICE_COUNT,
8050           AR_CASH_APPLIED_COUNT,
8051           AR_INVOICE_WRITEOFF_COUNT,
8052           AR_CREDIT_MEMO_COUNT,
8053           AR_UNAPPR_INVOICE_COUNT,
8054           AR_APPR_INVOICE_COUNT,
8055           AR_COUNT_DUE,
8056           AR_COUNT_OVERDUE,
8057           G1_REVENUE,
8058           G1_FUNDING,
8059           G1_INITIAL_FUNDING_AMOUNT,
8060           G1_ADDITIONAL_FUNDING_AMOUNT,
8061           G1_CANCELLED_FUNDING_AMOUNT,
8062           G1_FUNDING_ADJUSTMENT_AMOUNT,
8063           G1_REVENUE_WRITEOFF,
8064           G1_AR_INVOICE_AMOUNT,
8065           G1_AR_CASH_APPLIED_AMOUNT,
8066           G1_AR_INVOICE_WRITEOFF_AMOUNT,
8067           G1_AR_CREDIT_MEMO_AMOUNT,
8068           G1_UNBILLED_RECEIVABLES,
8069           G1_UNEARNED_REVENUE,
8070           G1_AR_UNAPPR_INVOICE_AMOUNT,
8071           G1_AR_APPR_INVOICE_AMOUNT,
8072           G1_AR_AMOUNT_DUE,
8073           G1_AR_AMOUNT_OVERDUE,
8074           G2_REVENUE,
8075           G2_FUNDING,
8076           G2_INITIAL_FUNDING_AMOUNT,
8077           G2_ADDITIONAL_FUNDING_AMOUNT,
8078           G2_CANCELLED_FUNDING_AMOUNT,
8079           G2_FUNDING_ADJUSTMENT_AMOUNT,
8080           G2_REVENUE_WRITEOFF,
8081           G2_AR_INVOICE_AMOUNT,
8082           G2_AR_CASH_APPLIED_AMOUNT,
8083           G2_AR_INVOICE_WRITEOFF_AMOUNT,
8084           G2_AR_CREDIT_MEMO_AMOUNT,
8085           G2_UNBILLED_RECEIVABLES,
8086           G2_UNEARNED_REVENUE,
8087           G2_AR_UNAPPR_INVOICE_AMOUNT,
8088           G2_AR_APPR_INVOICE_AMOUNT,
8089           G2_AR_AMOUNT_DUE,
8090           G2_AR_AMOUNT_OVERDUE
8091         from
8092           (
8093         select /*+ ordered */
8094           src.PROJECT_ID,
8095           src.PROJECT_ORG_ID,
8096           src.PROJECT_ORGANIZATION_ID,
8097           nvl(src.TASK_ID, -1)                  TASK_ID,
8098           src.PERIOD_TYPE,
8099           src.PERIOD_ID,
8100           info.PF_CURRENCY_CODE,
8101           prj.PROJECT_CURRENCY_CODE             PRJ_CURRENCY_CODE,
8102           src.TXN_CURRENCY_CODE,
8103           sum(src.TXN_REVENUE)                  TXN_REVENUE,
8104           sum(src.TXN_FUNDING)                  TXN_FUNDING,
8105           sum(src.TXN_INITIAL_FUNDING_AMOUNT)   TXN_INITIAL_FUNDING_AMOUNT,
8106           sum(src.TXN_ADDITIONAL_FUNDING_AMOUNT)TXN_ADDITIONAL_FUNDING_AMOUNT,
8107           sum(src.TXN_CANCELLED_FUNDING_AMOUNT) TXN_CANCELLED_FUNDING_AMOUNT,
8108           sum(src.TXN_FUNDING_ADJUSTMENT_AMOUNT)TXN_FUNDING_ADJUSTMENT_AMOUNT,
8109           sum(src.TXN_REVENUE_WRITEOFF)         TXN_REVENUE_WRITEOFF,
8110           sum(src.TXN_AR_INVOICE_AMOUNT)        TXN_AR_INVOICE_AMOUNT,
8111           sum(src.TXN_AR_CASH_APPLIED_AMOUNT)   TXN_AR_CASH_APPLIED_AMOUNT,
8112           sum(src.TXN_AR_INVOICE_WRITEOFF_AMOUNT)
8113                                                 TXN_AR_INVOICE_WRITEOFF_AMOUNT,
8114           sum(src.TXN_AR_CREDIT_MEMO_AMOUNT)    TXN_AR_CREDIT_MEMO_AMOUNT,
8115           sum(src.TXN_UNBILLED_RECEIVABLES)     TXN_UNBILLED_RECEIVABLES,
8116           sum(src.TXN_UNEARNED_REVENUE)         TXN_UNEARNED_REVENUE,
8117           sum(src.TXN_AR_UNAPPR_INVOICE_AMOUNT) TXN_AR_UNAPPR_INVOICE_AMOUNT,
8118           sum(src.TXN_AR_APPR_INVOICE_AMOUNT)   TXN_AR_APPR_INVOICE_AMOUNT,
8119           sum(src.TXN_AR_AMOUNT_DUE)            TXN_AR_AMOUNT_DUE,
8120           sum(src.TXN_AR_AMOUNT_OVERDUE)        TXN_AR_AMOUNT_OVERDUE,
8121           sum(src.PRJ_REVENUE)                  PRJ_REVENUE,
8122           sum(src.PRJ_FUNDING)                  PRJ_FUNDING,
8123           sum(src.PRJ_INITIAL_FUNDING_AMOUNT)   PRJ_INITIAL_FUNDING_AMOUNT,
8124           sum(src.PRJ_ADDITIONAL_FUNDING_AMOUNT)PRJ_ADDITIONAL_FUNDING_AMOUNT,
8125           sum(src.PRJ_CANCELLED_FUNDING_AMOUNT) PRJ_CANCELLED_FUNDING_AMOUNT,
8126           sum(src.PRJ_FUNDING_ADJUSTMENT_AMOUNT)PRJ_FUNDING_ADJUSTMENT_AMOUNT,
8127           sum(src.PRJ_REVENUE_WRITEOFF)         PRJ_REVENUE_WRITEOFF,
8128           sum(src.PRJ_AR_INVOICE_AMOUNT)        PRJ_AR_INVOICE_AMOUNT,
8129           sum(src.PRJ_AR_CASH_APPLIED_AMOUNT)   PRJ_AR_CASH_APPLIED_AMOUNT,
8130           sum(src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT)
8131                                                 PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
8132           sum(src.PRJ_AR_CREDIT_MEMO_AMOUNT)    PRJ_AR_CREDIT_MEMO_AMOUNT,
8133           sum(src.PRJ_UNBILLED_RECEIVABLES)     PRJ_UNBILLED_RECEIVABLES,
8134           sum(src.PRJ_UNEARNED_REVENUE)         PRJ_UNEARNED_REVENUE,
8135           sum(src.PRJ_AR_UNAPPR_INVOICE_AMOUNT) PRJ_AR_UNAPPR_INVOICE_AMOUNT,
8136           sum(src.PRJ_AR_APPR_INVOICE_AMOUNT)   PRJ_AR_APPR_INVOICE_AMOUNT,
8137           sum(src.PRJ_AR_AMOUNT_DUE)            PRJ_AR_AMOUNT_DUE,
8138           sum(src.PRJ_AR_AMOUNT_OVERDUE)        PRJ_AR_AMOUNT_OVERDUE,
8139           sum(src.POU_REVENUE)                  POU_REVENUE,
8140           sum(src.POU_FUNDING)                  POU_FUNDING,
8141           sum(src.POU_INITIAL_FUNDING_AMOUNT)   POU_INITIAL_FUNDING_AMOUNT,
8142           sum(src.POU_ADDITIONAL_FUNDING_AMOUNT)POU_ADDITIONAL_FUNDING_AMOUNT,
8143           sum(src.POU_CANCELLED_FUNDING_AMOUNT) POU_CANCELLED_FUNDING_AMOUNT,
8144           sum(src.POU_FUNDING_ADJUSTMENT_AMOUNT)POU_FUNDING_ADJUSTMENT_AMOUNT,
8145           sum(src.POU_REVENUE_WRITEOFF)         POU_REVENUE_WRITEOFF,
8146           sum(src.POU_AR_INVOICE_AMOUNT)        POU_AR_INVOICE_AMOUNT,
8147           sum(src.POU_AR_CASH_APPLIED_AMOUNT)   POU_AR_CASH_APPLIED_AMOUNT,
8148           sum(src.POU_AR_INVOICE_WRITEOFF_AMOUNT)
8149                                                 POU_AR_INVOICE_WRITEOFF_AMOUNT,
8150           sum(src.POU_AR_CREDIT_MEMO_AMOUNT)    POU_AR_CREDIT_MEMO_AMOUNT,
8151           sum(src.POU_UNBILLED_RECEIVABLES)     POU_UNBILLED_RECEIVABLES,
8152           sum(src.POU_UNEARNED_REVENUE)         POU_UNEARNED_REVENUE,
8153           sum(src.POU_AR_UNAPPR_INVOICE_AMOUNT) POU_AR_UNAPPR_INVOICE_AMOUNT,
8154           sum(src.POU_AR_APPR_INVOICE_AMOUNT)   POU_AR_APPR_INVOICE_AMOUNT,
8155           sum(src.POU_AR_AMOUNT_DUE)            POU_AR_AMOUNT_DUE,
8156           sum(src.POU_AR_AMOUNT_OVERDUE)        POU_AR_AMOUNT_OVERDUE,
8157           sum(src.INITIAL_FUNDING_COUNT)        INITIAL_FUNDING_COUNT,
8158           sum(src.ADDITIONAL_FUNDING_COUNT)     ADDITIONAL_FUNDING_COUNT,
8159           sum(src.CANCELLED_FUNDING_COUNT)      CANCELLED_FUNDING_COUNT,
8160           sum(src.FUNDING_ADJUSTMENT_COUNT)     FUNDING_ADJUSTMENT_COUNT,
8161           sum(src.AR_INVOICE_COUNT)             AR_INVOICE_COUNT,
8162           sum(src.AR_CASH_APPLIED_COUNT)        AR_CASH_APPLIED_COUNT,
8163           sum(src.AR_INVOICE_WRITEOFF_COUNT)    AR_INVOICE_WRITEOFF_COUNT,
8164           sum(src.AR_CREDIT_MEMO_COUNT)         AR_CREDIT_MEMO_COUNT,
8165           sum(src.AR_UNAPPR_INVOICE_COUNT)      AR_UNAPPR_INVOICE_COUNT,
8166           sum(src.AR_APPR_INVOICE_COUNT)        AR_APPR_INVOICE_COUNT,
8167           sum(src.AR_COUNT_DUE)                 AR_COUNT_DUE,
8168           sum(src.AR_COUNT_OVERDUE)             AR_COUNT_OVERDUE,
8169           sum(src.G1_REVENUE)                   G1_REVENUE,
8170           sum(src.G1_FUNDING)                   G1_FUNDING,
8171           sum(src.G1_INITIAL_FUNDING_AMOUNT)    G1_INITIAL_FUNDING_AMOUNT,
8172           sum(src.G1_ADDITIONAL_FUNDING_AMOUNT) G1_ADDITIONAL_FUNDING_AMOUNT,
8173           sum(src.G1_CANCELLED_FUNDING_AMOUNT)  G1_CANCELLED_FUNDING_AMOUNT,
8174           sum(src.G1_FUNDING_ADJUSTMENT_AMOUNT) G1_FUNDING_ADJUSTMENT_AMOUNT,
8175           sum(src.G1_REVENUE_WRITEOFF)          G1_REVENUE_WRITEOFF,
8176           sum(src.G1_AR_INVOICE_AMOUNT)         G1_AR_INVOICE_AMOUNT,
8177           sum(src.G1_AR_CASH_APPLIED_AMOUNT)    G1_AR_CASH_APPLIED_AMOUNT,
8178           sum(src.G1_AR_INVOICE_WRITEOFF_AMOUNT)G1_AR_INVOICE_WRITEOFF_AMOUNT,
8179           sum(src.G1_AR_CREDIT_MEMO_AMOUNT)     G1_AR_CREDIT_MEMO_AMOUNT,
8180           sum(src.G1_UNBILLED_RECEIVABLES)      G1_UNBILLED_RECEIVABLES,
8181           sum(src.G1_UNEARNED_REVENUE)          G1_UNEARNED_REVENUE,
8182           sum(src.G1_AR_UNAPPR_INVOICE_AMOUNT)  G1_AR_UNAPPR_INVOICE_AMOUNT,
8183           sum(src.G1_AR_APPR_INVOICE_AMOUNT)    G1_AR_APPR_INVOICE_AMOUNT,
8184           sum(src.G1_AR_AMOUNT_DUE)             G1_AR_AMOUNT_DUE,
8185           sum(src.G1_AR_AMOUNT_OVERDUE)         G1_AR_AMOUNT_OVERDUE,
8186           sum(src.G2_REVENUE)                   G2_REVENUE,
8187           sum(src.G2_FUNDING)                   G2_FUNDING,
8188           sum(src.G2_INITIAL_FUNDING_AMOUNT)    G2_INITIAL_FUNDING_AMOUNT,
8189           sum(src.G2_ADDITIONAL_FUNDING_AMOUNT) G2_ADDITIONAL_FUNDING_AMOUNT,
8190           sum(src.G2_CANCELLED_FUNDING_AMOUNT)  G2_CANCELLED_FUNDING_AMOUNT,
8191           sum(src.G2_FUNDING_ADJUSTMENT_AMOUNT) G2_FUNDING_ADJUSTMENT_AMOUNT,
8192           sum(src.G2_REVENUE_WRITEOFF)          G2_REVENUE_WRITEOFF,
8193           sum(src.G2_AR_INVOICE_AMOUNT)         G2_AR_INVOICE_AMOUNT,
8194           sum(src.G2_AR_CASH_APPLIED_AMOUNT)    G2_AR_CASH_APPLIED_AMOUNT,
8195           sum(src.G2_AR_INVOICE_WRITEOFF_AMOUNT)G2_AR_INVOICE_WRITEOFF_AMOUNT,
8196           sum(src.G2_AR_CREDIT_MEMO_AMOUNT)     G2_AR_CREDIT_MEMO_AMOUNT,
8197           sum(src.G2_UNBILLED_RECEIVABLES)      G2_UNBILLED_RECEIVABLES,
8198           sum(src.G2_UNEARNED_REVENUE)          G2_UNEARNED_REVENUE,
8199           sum(src.G2_AR_UNAPPR_INVOICE_AMOUNT)  G2_AR_UNAPPR_INVOICE_AMOUNT,
8200           sum(src.G2_AR_APPR_INVOICE_AMOUNT)    G2_AR_APPR_INVOICE_AMOUNT,
8201           sum(src.G2_AR_AMOUNT_DUE)             G2_AR_AMOUNT_DUE,
8202           sum(src.G2_AR_AMOUNT_OVERDUE)         G2_AR_AMOUNT_OVERDUE
8203         from
8204           PJI_PJP_RMAP_ACR  src_r,
8205           PJI_FM_AGGR_ACT4  src,
8206           PA_PROJECTS_ALL   prj,
8207           PJI_ORG_EXTR_INFO info
8208         where
8209           src_r.WORKER_ID     = p_worker_id          and
8210           src.ROWID           = src_r.STG_ROWID      and
8211           src.PROJECT_ID      = prj.PROJECT_ID       and
8212           prj.ORG_ID          = info.ORG_ID          /*5377133 */
8213         group by
8214           src.PROJECT_ID,
8215           src.PROJECT_ORG_ID,
8216           src.PROJECT_ORGANIZATION_ID,
8217           nvl(src.TASK_ID, -1),
8218           src.PERIOD_TYPE,
8219           src.PERIOD_ID,
8220           info.PF_CURRENCY_CODE,
8221           prj.PROJECT_CURRENCY_CODE,
8222           src.TXN_CURRENCY_CODE
8223           )
8224         )                        src,
8225         PJI_PJP_PROJ_BATCH_MAP   map,
8226         PJI_PJP_WBS_HEADER       wbs_hdr,
8227         PA_PROJ_ELEMENT_VERSIONS ver,
8228         (
8229           select 1   INVERT_ID from dual
8230                                where l_g1_currency_flag = 'Y' and    /* Added for Bug 8708651 */
8231                                      l_g1_currency_code is not null union all
8232           select 2   INVERT_ID from dual
8233                                where l_g2_currency_flag = 'Y' and
8234                                      l_g2_currency_code is not null union all
8235           select 4   INVERT_ID from dual union all
8236           select 8   INVERT_ID from dual union all
8237           select 16  INVERT_ID from dual
8238                                where l_txn_currency_flag = 'Y'
8239        -- select 32  INVERT_ID from dual  OMIT DETAIL SLICES FOR NOW
8240        --                      where l_g1_currency_code is not null union all
8241        -- select 64  INVERT_ID from dual
8242        --                      where l_g2_currency_flag = 'Y' and
8243        --                            l_g2_currency_code is not null union all
8244        -- select 128 INVERT_ID from dual union all
8245        -- select 256 INVERT_ID from dual
8246         ) invert
8247       where
8248         map.WORKER_ID           = p_worker_id            and
8249         src.PROJECT_ID          = map.PROJECT_ID         and
8250         wbs_hdr.PLAN_VERSION_ID = -1                     and
8251         src.PROJECT_ID          = wbs_hdr.PROJECT_ID     and
8252         ver.ELEMENT_VERSION_ID  = wbs_hdr.WBS_VERSION_ID
8253       )
8254     group by
8255       WORKER_ID,
8256       PROJECT_ID,
8257       PROJECT_ORG_ID,
8258       PROJECT_ORGANIZATION_ID,
8259       PROJECT_ELEMENT_ID,
8260       TIME_ID,
8261       PERIOD_TYPE_ID,
8262       CALENDAR_TYPE,
8263       WBS_ROLLUP_FLAG,
8264       PRG_ROLLUP_FLAG,
8265       DIFF_CURRENCY_CODE,
8266       DIFF_ROWNUM,
8267       nvl(CURRENCY_CODE, 'PJI$NULL');
8268 
8269     end if;
8270 
8271     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);');
8272 
8273     commit;
8274 
8275   end AGGREGATE_AC_SLICES;
8276 
8277 
8278   -- -----------------------------------------------------
8279   -- procedure MARK_EXTRACTED_PROJECTS
8280   --
8281   --   History
8282   --   19-MAR-2004  SVERMETT  Created
8283   --
8284   -- Internal PJP Summarization API.
8285   --
8286   -- -----------------------------------------------------
8287   procedure MARK_EXTRACTED_PROJECTS (p_worker_id in number) is
8288 
8289     l_process         varchar2(30);
8290     l_extraction_type varchar2(30);
8291 
8292     l_last_update_date  date;
8293     l_last_updated_by   number;
8294     l_last_update_login number;
8295 
8296     l_return_status   varchar2(255) := FND_API.G_RET_STS_SUCCESS;
8297     l_msg_data        varchar2(2000);
8298     l_err_msg         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS -> PJI_FM_PLAN_MAINT.POPULATE_FIN8';
8299 
8300   begin
8301 
8302     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
8303 
8304     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS(p_worker_id);')) then
8305       return;
8306     end if;
8307 
8308     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
8309 
8310     l_last_update_date  := sysdate;
8311     l_last_updated_by   := FND_GLOBAL.USER_ID;
8312     l_last_update_login := FND_GLOBAL.LOGIN_ID;
8313 
8314     update PA_PROJECTS_ALL
8315     set    PJI_SOURCE_FLAG   = 'Y',
8316            LAST_UPDATE_DATE  = l_last_update_date,
8317            LAST_UPDATED_BY   = l_last_updated_by,
8318            LAST_UPDATE_LOGIN = l_last_update_login
8319     where  nvl(PJI_SOURCE_FLAG, 'X') <> 'Y' and
8320            PROJECT_ID in (select distinct
8321                                  PROJECT_ID
8322                           from   PJI_FP_AGGR_PJP0
8323                           where  WORKER_ID = p_worker_id
8324                           union
8325                           select distinct
8326                                  PROJECT_ID
8327                           from   PJI_AC_AGGR_PJP0
8328                           where  WORKER_ID = p_worker_id);
8329 
8330     if (l_extraction_type = 'PARTIAL' or
8331         l_extraction_type = 'RBS') then
8332 
8333       update PJI_PJP_PROJ_BATCH_MAP
8334       set    PJI_PROJECT_STATUS = 'Y'
8335       where  WORKER_ID = p_worker_id and
8336              PJI_PROJECT_STATUS is null;
8337 
8338     elsif (l_extraction_type = 'FULL' or
8339            l_extraction_type = 'INCREMENTAL') then
8340 
8341 /*bug#5349102 added the check for FIN8 */
8342       update PJI_PJP_PROJ_BATCH_MAP
8343       set    PJI_PROJECT_STATUS = 'Y'
8344       where  WORKER_ID = p_worker_id and
8345              PJI_PROJECT_STATUS is null and
8346              PROJECT_ID in (select distinct
8347                                    PROJECT_ID
8348                             from   PJI_FP_AGGR_PJP0
8349                             where  WORKER_ID = p_worker_id
8350                             union
8351                             select distinct
8352                                    PROJECT_ID
8353                             from   PJI_AC_AGGR_PJP0
8354                             where  WORKER_ID = p_worker_id
8355                             union
8356                             select distinct
8357                                    PROJECT_ID
8358                             from pji_fm_aggr_fin8
8359                             ) and
8360              PROJECT_ID in (select PROJECT_ID
8361                             from   PA_PROJECTS_ALL
8362                             where  STRUCTURE_SHARING_CODE = 'SHARE_FULL');
8363 
8364     end if;
8365 
8366     if (l_extraction_type = 'INCREMENTAL') then
8367 
8368       update PJI_PJP_PROJ_BATCH_MAP map
8369       set    map.EXTRACTION_TYPE = 'M'
8370       where  map.WORKER_ID = p_worker_id and
8371              map.PROJECT_ID in (select fin7.PROJECT_ID
8372                                 from   PJI_PJP_RMAP_FPR fin7_r,
8373                                        PJI_FM_AGGR_FIN7 fin7
8374                                 where  fin7_r.WORKER_ID = p_worker_id and
8375                                        fin7_r.RECORD_TYPE = 'M' and
8376                                        fin7.ROWID = fin7_r.STG_ROWID);
8377 
8378       update PJI_PJP_PROJ_BATCH_MAP map
8379       set    map.EXTRACTION_TYPE = 'M'
8380       where  map.WORKER_ID = p_worker_id and
8381              map.PROJECT_ID not in (select cmt.PROJECT_ID
8382                                     from   PA_COMMITMENT_TXNS cmt);
8383 
8384     end if;
8385 
8386 
8387     --
8388     -- Dev notes: Sadiq 21-Oct-2005
8389     --
8390     -- Populate fin8 was moved from get_planres_actuals to mark_extracted_projects
8391     --   to avoid populating it multiple times in case of a failure in
8392     --   proj perf/progress integration apis that can cause the step to run
8393     --   again. Also, use of savepoint to populate fin8 on a project-by-project basis
8394     --   was considered but not chosen as this solution will not scale. Further this
8395     --   step (mark extr proj) has relatively less processing compared to other steps
8396     --   and is a good place to perform this transaction.
8397     --
8398     -- This change needs to be kept in mind when performing changes to sumz (adding
8399     --   new steps or changing sequences) programs in future.
8400     --
8401 
8402     PJI_FM_PLAN_MAINT.POPULATE_FIN8 (p_worker_id       => p_worker_id,
8403                                      p_extraction_type => l_extraction_type,
8404                                      x_return_status   => l_return_status,
8405                                      x_msg_data        => l_msg_data);
8406 
8407     IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8408       dbms_standard.raise_application_error(-20105, l_err_msg);
8409     END IF;
8410 
8411 
8412     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS(p_worker_id);');
8413 
8414     commit;
8415 
8416   end MARK_EXTRACTED_PROJECTS;
8417 
8418 
8419   -- -----------------------------------------------------
8420   -- procedure AGGREGATE_FP_CUST_SLICES
8421   --
8422   --   History
8423   --   19-MAR-2004  SVERMETT  Created
8424   --
8425   -- Internal PJP Summarization API.
8426   --
8427   -- Called by RBS program
8428   --
8429   -- -----------------------------------------------------
8430 procedure AGGREGATE_FP_CUST_SLICES (p_worker_id in number) is
8431 
8432     l_process         varchar2(30);
8433     l_extraction_type varchar2(30);
8434     l_plan_type_id    number;   --  Bug#5099574
8435     l_refresh_code    number;
8436     l_workplan_type_id number;
8437 	l_worker_id number;   /* Added for bug 13030627 */
8438 
8439   begin
8440 
8441     /* Added for bug 13030627 */
8442     l_worker_id := p_worker_id;
8443     if PJI_UTILS.GET_PARAMETER('PJP_SIN_PRG') = 'Y' then
8444 
8445        PJI_PJP_PRG_PERF_ALL.AGGREGATE_FP_CUST_SLICES(
8446        p_worker_id  => l_worker_id);
8447 
8448     else
8449     /* Added for bug 13030627 */
8450 
8451     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
8452 
8453     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
8454     l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');  -- Bug#5099574
8455 
8456     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_CUST_SLICES(p_worker_id);')) then
8457       return;
8458     end if;
8459 
8460     l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
8461                       (l_process, 'PLAN_TYPE_ID');
8462 
8463     if (l_plan_type_id = -1) then
8464       l_plan_type_id := null;
8465     end if;
8466 
8467       if  (l_extraction_type ='PARTIAL') then  -- Partial Refresh Performance Improvement
8468 
8469       --  Bug#  5208322  :  the workplan plan_type_id is stored in  l_workplan_type_id
8470       begin
8471       SELECT fin_plan_type_id into l_workplan_type_id
8472       FROM pa_fin_plan_types_b
8473       WHERE use_for_workplan_flag = 'Y';
8474       exception
8475       when no_data_found then
8476       l_workplan_type_id := NULL;
8477       end;
8478 
8479 
8480       INSERT INTO pji_fm_extr_plnver3_t
8481       (worker_id,project_id,plan_version_id,time_phased_type_code)
8482       select
8483       map.worker_id,bv.project_id,bv.budget_version_id,
8484       nvl(fpo.all_time_phased_code,nvl(fpo.cost_time_phased_code,fpo.revenue_time_phased_code)) time_phased_code
8485       from
8486       PJI_PJP_PROJ_BATCH_MAP map,
8487       PA_PROJ_FP_OPTIONS     fpo,
8488       PA_BUDGET_VERSIONS     bv
8489       where
8490       map.WORKER_ID    = p_worker_id               and
8491       fpo.FIN_PLAN_TYPE_ID  = nvl(l_plan_type_id,fpo.FIN_PLAN_TYPE_ID) and
8492       fpo.PROJECT_ID      = map.PROJECT_ID            and
8493       bv.PROJECT_ID      = map.PROJECT_ID            and
8494       bv.BUDGET_VERSION_ID  = fpo.FIN_PLAN_VERSION_ID   and
8495       (
8496           'Y' IN    -- Bug#5099574  Pull Reversals for CB / CO if refresh_code < 62 . Else pull for all plans ids >0 if refresh_code>=62
8497         (
8498             Select decode(
8499               bitand(l_refresh_code,g_all_plans),g_all_plans,'Y',
8500                 decode(  bitand(l_refresh_code,g_cb_plans),g_cb_plans,
8501                 decode(decode(bv.baselined_date, NULL, 'N', 'Y')||bv.current_flag,'YY', 'Y', 'N'),'X')) from dual
8502            UNION  ALL
8503             Select decode(
8504               bitand(l_refresh_code,g_all_plans),g_all_plans,'Y',
8505               decode( bitand(l_refresh_code,g_co_plans),g_co_plans,bv.current_original_flag,'X')) from dual
8506         )
8507       OR    -- Bug#5099574  Pull Reversals for Fin plan Working Versions when l_refresh_code=16,30. ignore if  l_refresh_code>=62
8508         (
8509          bv.BUDGET_STATUS_CODE in ('W','S')      and
8510          fpo.FIN_PLAN_TYPE_ID <> l_workplan_type_id    and                -- Bug#  5208322
8511          DECODE(BITAND(l_refresh_code,g_all_plans),g_all_plans,'N',DECODE(BITAND(l_refresh_code,g_wk_plans),g_wk_plans,'Y','N'))='Y'
8512          )
8513       OR    --Pull Reversals for Work plan Working Versions / LPub Vers / Baselined Versions when l_refresh_code=2,8,16,30. ignore if  l_refresh_code>=62
8514       EXISTS   ( select 1 from PA_PROJ_ELEM_VER_STRUCTURE  ppevs where
8515          bv.FIN_PLAN_TYPE_ID          = l_workplan_type_id        and    -- Bug#  5208322
8516          bv.PROJECT_STRUCTURE_VERSION_ID  = ppevs.ELEMENT_VERSION_ID  and
8517           (
8518           decode(BITAND(l_refresh_code,g_all_plans),g_all_plans,'N',
8519                         decode(BITAND(l_refresh_code,g_lp_plans),g_lp_plans,LATEST_EFF_PUBLISHED_FLAG,'N'))='Y'
8520           or
8521           decode(BITAND(l_refresh_code,g_all_plans),g_all_plans,'N',
8522                         decode(BITAND(l_refresh_code,g_wk_plans),g_wk_plans,STATUS_CODE,'N'))='STRUCTURE_WORKING'
8523                                     or
8524               decode(BITAND(l_refresh_code,g_all_plans ),g_all_plans ,'N',
8525                          decode(BITAND(l_refresh_code,g_cb_plans),g_cb_plans,NVL2(CURRENT_BASELINE_DATE,'Y','N'),'N')) ='Y'
8526 
8527           )
8528         )
8529       )
8530     UNION ALL --Pull Reversals for Actuals , CB,CO  when l_refresh_code=-1,-3,-4
8531       select
8532       map.worker_id,map.project_id,  plan_version_id,  'G'  time_phased_code
8533       from
8534       PJI_PJP_PROJ_BATCH_MAP map,
8535           (
8536       select decode (bitand (l_refresh_code,1),1,-1,-999) plan_version_id from dual  where l_plan_type_id is null
8537       union all
8538       select decode (bitand (l_refresh_code,g_cb_plans),g_cb_plans,-3,-999) plan_version_id  from dual
8539       union all
8540       select decode (bitand (l_refresh_code,g_co_plans),g_co_plans,-4,-999) plan_version_id  from dual
8541           )
8542       where map.worker_id=p_worker_id;
8543 
8544 
8545       end if;    -- Partial Refresh Performance Improvement
8546 
8547 
8548     insert into PJI_FP_AGGR_PJP1 pjp1_i
8549     (
8550       WORKER_ID,
8551       RECORD_TYPE,
8552       PRG_LEVEL,
8553       LINE_TYPE,
8554       PROJECT_ID,
8555       PROJECT_ORG_ID,
8556       PROJECT_ORGANIZATION_ID,
8557       PROJECT_ELEMENT_ID,
8558       TIME_ID,
8559       PERIOD_TYPE_ID,
8560       CALENDAR_TYPE,
8561       RBS_AGGR_LEVEL,
8562       WBS_ROLLUP_FLAG,
8563       PRG_ROLLUP_FLAG,
8564       CURR_RECORD_TYPE_ID,
8565       CURRENCY_CODE,
8566       RBS_ELEMENT_ID,
8567       RBS_VERSION_ID,
8568       PLAN_VERSION_ID,
8569       PLAN_TYPE_ID,
8570       PLAN_TYPE_CODE,
8571       RAW_COST,
8572       BRDN_COST,
8573       REVENUE,
8574       BILL_RAW_COST,
8575       BILL_BRDN_COST,
8576       BILL_LABOR_RAW_COST,
8577       BILL_LABOR_BRDN_COST,
8578       BILL_LABOR_HRS,
8579       EQUIPMENT_RAW_COST,
8580       EQUIPMENT_BRDN_COST,
8581       CAPITALIZABLE_RAW_COST,
8582       CAPITALIZABLE_BRDN_COST,
8583       LABOR_RAW_COST,
8584       LABOR_BRDN_COST,
8585       LABOR_HRS,
8586       LABOR_REVENUE,
8587       EQUIPMENT_HOURS,
8588       BILLABLE_EQUIPMENT_HOURS,
8589       SUP_INV_COMMITTED_COST,
8590       PO_COMMITTED_COST,
8591       PR_COMMITTED_COST,
8592       OTH_COMMITTED_COST,
8593       ACT_LABOR_HRS,
8594       ACT_EQUIP_HRS,
8595       ACT_LABOR_BRDN_COST,
8596       ACT_EQUIP_BRDN_COST,
8597       ACT_BRDN_COST,
8598       ACT_RAW_COST,
8599       ACT_REVENUE,
8600       ACT_LABOR_RAW_COST,
8601       ACT_EQUIP_RAW_COST,
8602       ETC_LABOR_HRS,
8603       ETC_EQUIP_HRS,
8604       ETC_LABOR_BRDN_COST,
8605       ETC_EQUIP_BRDN_COST,
8606       ETC_BRDN_COST,
8607       ETC_RAW_COST,
8608       ETC_LABOR_RAW_COST,
8609       ETC_EQUIP_RAW_COST,
8610       CUSTOM1,
8611       CUSTOM2,
8612       CUSTOM3,
8613       CUSTOM4,
8614       CUSTOM5,
8615       CUSTOM6,
8616       CUSTOM7,
8617       CUSTOM8,
8618       CUSTOM9,
8619       CUSTOM10,
8620       CUSTOM11,
8621       CUSTOM12,
8622       CUSTOM13,
8623       CUSTOM14,
8624       CUSTOM15
8625     )
8626     select
8627       WORKER_ID,
8628       null                                            RECORD_TYPE,
8629       0                                               PRG_LEVEL,
8630       null                                            LINE_TYPE,
8631       PROJECT_ID,
8632       PROJECT_ORG_ID,
8633       PROJECT_ORGANIZATION_ID,
8634       PROJECT_ELEMENT_ID,
8635       TIME_ID,
8636       PERIOD_TYPE_ID,
8637       CALENDAR_TYPE,
8638       RBS_AGGR_LEVEL,
8639       WBS_ROLLUP_FLAG,
8640       PRG_ROLLUP_FLAG,
8641       CURR_RECORD_TYPE_ID,
8642       CURRENCY_CODE,
8643       RBS_ELEMENT_ID,
8644       RBS_VERSION_ID,
8645       PLAN_VERSION_ID,
8646       PLAN_TYPE_ID,
8647       PLAN_TYPE_CODE,
8648       sum(RAW_COST)                                   RAW_COST,
8649       sum(BRDN_COST)                                  BRDN_COST,
8650       sum(REVENUE)                                    REVENUE,
8651       sum(BILL_RAW_COST)                              BILL_RAW_COST,
8652       sum(BILL_BRDN_COST)                             BILL_BRDN_COST,
8653       sum(BILL_LABOR_RAW_COST)                        BILL_LABOR_RAW_COST,
8654       sum(BILL_LABOR_BRDN_COST)                       BILL_LABOR_BRDN_COST,
8655       sum(BILL_LABOR_HRS)                             BILL_LABOR_HRS,
8656       sum(EQUIPMENT_RAW_COST)                         EQUIPMENT_RAW_COST,
8657       sum(EQUIPMENT_BRDN_COST)                        EQUIPMENT_BRDN_COST,
8658       sum(CAPITALIZABLE_RAW_COST)                     CAPITALIZABLE_RAW_COST,
8659       sum(CAPITALIZABLE_BRDN_COST)                    CAPITALIZABLE_BRDN_COST,
8660       sum(LABOR_RAW_COST)                             LABOR_RAW_COST,
8661       sum(LABOR_BRDN_COST)                            LABOR_BRDN_COST,
8662       sum(LABOR_HRS)                                  LABOR_HRS,
8663       sum(LABOR_REVENUE)                              LABOR_REVENUE,
8664       sum(EQUIPMENT_HOURS)                            EQUIPMENT_HOURS,
8665       sum(BILLABLE_EQUIPMENT_HOURS)                   BILLABLE_EQUIPMENT_HOURS,
8666       sum(SUP_INV_COMMITTED_COST)                     SUP_INV_COMMITTED_COST,
8667       sum(PO_COMMITTED_COST)                          PO_COMMITTED_COST,
8668       sum(PR_COMMITTED_COST)                          PR_COMMITTED_COST,
8669       sum(OTH_COMMITTED_COST)                         OTH_COMMITTED_COST,
8670       sum(ACT_LABOR_HRS)                              ACT_LABOR_HRS,
8671       sum(ACT_EQUIP_HRS)                              ACT_EQUIP_HRS,
8672       sum(ACT_LABOR_BRDN_COST)                        ACT_LABOR_BRDN_COST,
8673       sum(ACT_EQUIP_BRDN_COST)                        ACT_EQUIP_BRDN_COST,
8674       sum(ACT_BRDN_COST)                              ACT_BRDN_COST,
8675       sum(ACT_RAW_COST)                               ACT_RAW_COST,
8676       sum(ACT_REVENUE)                                ACT_REVENUE,
8677       sum(ACT_LABOR_RAW_COST)                         ACT_LABOR_RAW_COST,
8678       sum(ACT_EQUIP_RAW_COST)                         ACT_EQUIP_RAW_COST,
8679       sum(ETC_LABOR_HRS)                              ETC_LABOR_HRS,
8680       sum(ETC_EQUIP_HRS)                              ETC_EQUIP_HRS,
8681       sum(ETC_LABOR_BRDN_COST)                        ETC_LABOR_BRDN_COST,
8682       sum(ETC_EQUIP_BRDN_COST)                        ETC_EQUIP_BRDN_COST,
8683       sum(ETC_BRDN_COST)                              ETC_BRDN_COST,
8684       sum(ETC_RAW_COST)                               ETC_RAW_COST,
8685       sum(ETC_LABOR_RAW_COST)                         ETC_LABOR_RAW_COST,
8686       sum(ETC_EQUIP_RAW_COST)                         ETC_EQUIP_RAW_COST,
8687       sum(CUSTOM1)                                    CUSTOM1,
8688       sum(CUSTOM2)                                    CUSTOM2,
8689       sum(CUSTOM3)                                    CUSTOM3,
8690       sum(CUSTOM4)                                    CUSTOM4,
8691       sum(CUSTOM5)                                    CUSTOM5,
8692       sum(CUSTOM6)                                    CUSTOM6,
8693       sum(CUSTOM7)                                    CUSTOM7,
8694       sum(CUSTOM8)                                    CUSTOM8,
8695       sum(CUSTOM9)                                    CUSTOM9,
8696       sum(CUSTOM10)                                   CUSTOM10,
8697       sum(CUSTOM11)                                   CUSTOM11,
8698       sum(CUSTOM12)                                   CUSTOM12,
8699       sum(CUSTOM13)                                   CUSTOM13,
8700       sum(CUSTOM14)                                   CUSTOM14,
8701       sum(CUSTOM15)                                   CUSTOM15
8702     from
8703       (
8704       select
8705         WORKER_ID,
8706         to_char(null)                                 LINE_TYPE,
8707         PROJECT_ID,
8708         PROJECT_ORG_ID,
8709         PROJECT_ORGANIZATION_ID,
8710         PROJECT_ELEMENT_ID,
8711         TIME_ID,
8712         PERIOD_TYPE_ID,
8713         CALENDAR_TYPE,
8714         RBS_AGGR_LEVEL,
8715         WBS_ROLLUP_FLAG,
8716         PRG_ROLLUP_FLAG,
8717         CURR_RECORD_TYPE_ID,
8718         CURRENCY_CODE,
8719         RBS_ELEMENT_ID,
8720         RBS_VERSION_ID,
8721         PLAN_VERSION_ID,
8722         PLAN_TYPE_ID,
8723         'A'                                           PLAN_TYPE_CODE,
8724         RAW_COST,
8725         BRDN_COST,
8726         REVENUE,
8727         BILL_RAW_COST,
8728         BILL_BRDN_COST,
8729         BILL_LABOR_RAW_COST,
8730         BILL_LABOR_BRDN_COST,
8731         BILL_LABOR_HRS,
8732         EQUIPMENT_RAW_COST,
8733         EQUIPMENT_BRDN_COST,
8734         CAPITALIZABLE_RAW_COST,
8735         CAPITALIZABLE_BRDN_COST,
8736         LABOR_RAW_COST,
8737         LABOR_BRDN_COST,
8738         LABOR_HRS,
8739         LABOR_REVENUE,
8740         EQUIPMENT_HOURS,
8741         BILLABLE_EQUIPMENT_HOURS,
8742         SUP_INV_COMMITTED_COST,
8743         PO_COMMITTED_COST,
8744         PR_COMMITTED_COST,
8745         OTH_COMMITTED_COST,
8746         to_number(null)                               ACT_LABOR_HRS,
8747         to_number(null)                               ACT_EQUIP_HRS,
8748         to_number(null)                               ACT_LABOR_BRDN_COST,
8749         to_number(null)                               ACT_EQUIP_BRDN_COST,
8750         to_number(null)                               ACT_BRDN_COST,
8751         to_number(null)                               ACT_RAW_COST,
8752         to_number(null)                               ACT_REVENUE,
8753         to_number(null)                               ACT_LABOR_RAW_COST,
8754         to_number(null)                               ACT_EQUIP_RAW_COST,
8755         to_number(null)                               ETC_LABOR_HRS,
8756         to_number(null)                               ETC_EQUIP_HRS,
8757         to_number(null)                               ETC_LABOR_BRDN_COST,
8758         to_number(null)                               ETC_EQUIP_BRDN_COST,
8759         to_number(null)                               ETC_BRDN_COST,
8760         to_number(null)                               ETC_RAW_COST,
8761         to_number(null)                               ETC_LABOR_RAW_COST,
8762         to_number(null)                               ETC_EQUIP_RAW_COST,
8763         to_number(null)                               CUSTOM1,
8764         to_number(null)                               CUSTOM2,
8765         to_number(null)                               CUSTOM3,
8766         to_number(null)                               CUSTOM4,
8767         to_number(null)                               CUSTOM5,
8768         to_number(null)                               CUSTOM6,
8769         to_number(null)                               CUSTOM7,
8770         to_number(null)                               CUSTOM8,
8771         to_number(null)                               CUSTOM9,
8772         to_number(null)                               CUSTOM10,
8773         to_number(null)                               CUSTOM11,
8774         to_number(null)                               CUSTOM12,
8775         to_number(null)                               CUSTOM13,
8776         to_number(null)                               CUSTOM14,
8777         to_number(null)                               CUSTOM15
8778       from
8779         PJI_FP_AGGR_PJP0
8780       where
8781         WORKER_ID = p_worker_id
8782       union all
8783       select
8784         WORKER_ID,
8785         to_char(null)                                 LINE_TYPE,
8786         PROJECT_ID,
8787         PROJECT_ORG_ID,
8788         PROJECT_ORGANIZATION_ID,
8789         PROJECT_ELEMENT_ID,
8790         TIME_ID,
8791         PERIOD_TYPE_ID,
8792         CALENDAR_TYPE,
8793         RBS_AGGR_LEVEL,
8794         WBS_ROLLUP_FLAG,
8795         PRG_ROLLUP_FLAG,
8796         CURR_RECORD_TYPE_ID,
8797         CURRENCY_CODE,
8798         RBS_ELEMENT_ID,
8799         RBS_VERSION_ID,
8800         PLAN_VERSION_ID,
8801         PLAN_TYPE_ID,
8802         'A'                                           PLAN_TYPE_CODE,
8803         to_number(null)                               RAW_COST,
8804         to_number(null)                               BRDN_COST,
8805         to_number(null)                               REVENUE,
8806         to_number(null)                               BILL_RAW_COST,
8807         to_number(null)                               BILL_BRDN_COST,
8808         to_number(null)                               BILL_LABOR_RAW_COST,
8809         to_number(null)                               BILL_LABOR_BRDN_COST,
8810         to_number(null)                               BILL_LABOR_HRS,
8811         to_number(null)                               EQUIPMENT_RAW_COST,
8812         to_number(null)                               EQUIPMENT_BRDN_COST,
8813         to_number(null)                               CAPITALIZABLE_RAW_COST,
8814         to_number(null)                               CAPITALIZABLE_BRDN_COST,
8815         to_number(null)                               LABOR_RAW_COST,
8816         to_number(null)                               LABOR_BRDN_COST,
8817         to_number(null)                               LABOR_HRS,
8818         to_number(null)                               LABOR_REVENUE,
8819         to_number(null)                               EQUIPMENT_HOURS,
8820         to_number(null)                               BILLABLE_EQUIPMENT_HOURS,
8821         to_number(null)                               SUP_INV_COMMITTED_COST,
8822         to_number(null)                               PO_COMMITTED_COST,
8823         to_number(null)                               PR_COMMITTED_COST,
8824         to_number(null)                               OTH_COMMITTED_COST,
8825         to_number(null)                               ACT_LABOR_HRS,
8826         to_number(null)                               ACT_EQUIP_HRS,
8827         to_number(null)                               ACT_LABOR_BRDN_COST,
8828         to_number(null)                               ACT_EQUIP_BRDN_COST,
8829         to_number(null)                               ACT_BRDN_COST,
8830         to_number(null)                               ACT_RAW_COST,
8831         to_number(null)                               ACT_REVENUE,
8832         to_number(null)                               ACT_LABOR_RAW_COST,
8833         to_number(null)                               ACT_EQUIP_RAW_COST,
8834         to_number(null)                               ETC_LABOR_HRS,
8835         to_number(null)                               ETC_EQUIP_HRS,
8836         to_number(null)                               ETC_LABOR_BRDN_COST,
8837         to_number(null)                               ETC_EQUIP_BRDN_COST,
8838         to_number(null)                               ETC_BRDN_COST,
8839         to_number(null)                               ETC_RAW_COST,
8840         to_number(null)                               ETC_LABOR_RAW_COST,
8841         to_number(null)                               ETC_EQUIP_RAW_COST,
8842         CUSTOM1,
8843         CUSTOM2,
8844         CUSTOM3,
8845         CUSTOM4,
8846         CUSTOM5,
8847         CUSTOM6,
8848         CUSTOM7,
8849         CUSTOM8,
8850         CUSTOM9,
8851         CUSTOM10,
8852         CUSTOM11,
8853         CUSTOM12,
8854         CUSTOM13,
8855         CUSTOM14,
8856         CUSTOM15
8857       from
8858         PJI_FP_CUST_PJP0
8859       where
8860         WORKER_ID = p_worker_id
8861       union all                      -- commitments reversals
8862       select
8863         p_worker_id                                   WORKER_ID,
8864         to_char(null)                                 LINE_TYPE,
8865         fpr.PROJECT_ID,
8866         fpr.PROJECT_ORG_ID,
8867         fpr.PROJECT_ORGANIZATION_ID,
8868         fpr.PROJECT_ELEMENT_ID,
8869         fpr.TIME_ID,
8870         fpr.PERIOD_TYPE_ID,
8871         fpr.CALENDAR_TYPE,
8872         fpr.RBS_AGGR_LEVEL,
8873         fpr.WBS_ROLLUP_FLAG,
8874         fpr.PRG_ROLLUP_FLAG,
8875         fpr.CURR_RECORD_TYPE_ID,
8876         fpr.CURRENCY_CODE,
8877         fpr.RBS_ELEMENT_ID,
8878         fpr.RBS_VERSION_ID,
8879         fpr.PLAN_VERSION_ID,
8880         fpr.PLAN_TYPE_ID,
8881         fpr.PLAN_TYPE_CODE,
8882         to_number(null)                               RAW_COST,
8883         to_number(null)                               BRDN_COST,
8884         to_number(null)                               REVENUE,
8885         to_number(null)                               BILL_RAW_COST,
8886         to_number(null)                               BILL_BRDN_COST,
8887         to_number(null)                               BILL_LABOR_RAW_COST,
8888         to_number(null)                               BILL_LABOR_BRDN_COST,
8889         to_number(null)                               BILL_LABOR_HRS,
8890         to_number(null)                               EQUIPMENT_RAW_COST,
8891         to_number(null)                               EQUIPMENT_BRDN_COST,
8892         to_number(null)                               CAPITALIZABLE_RAW_COST,
8893         to_number(null)                               CAPITALIZABLE_BRDN_COST,
8894         to_number(null)                               LABOR_RAW_COST,
8895         to_number(null)                               LABOR_BRDN_COST,
8896         to_number(null)                               LABOR_HRS,
8897         to_number(null)                               LABOR_REVENUE,
8898         to_number(null)                               EQUIPMENT_HOURS,
8899         to_number(null)                               BILLABLE_EQUIPMENT_HOURS,
8900         - fpr.SUP_INV_COMMITTED_COST,
8901         - fpr.PO_COMMITTED_COST,
8902         - fpr.PR_COMMITTED_COST,
8903         - fpr.OTH_COMMITTED_COST,
8904         to_number(null)                               ACT_LABOR_HRS,
8905         to_number(null)                               ACT_EQUIP_HRS,
8906         to_number(null)                               ACT_LABOR_BRDN_COST,
8907         to_number(null)                               ACT_EQUIP_BRDN_COST,
8908         to_number(null)                               ACT_BRDN_COST,
8909         to_number(null)                               ACT_RAW_COST,
8910         to_number(null)                               ACT_REVENUE,
8911         to_number(null)                               ACT_LABOR_RAW_COST,
8912         to_number(null)                               ACT_EQUIP_RAW_COST,
8913         to_number(null)                               ETC_LABOR_HRS,
8914         to_number(null)                               ETC_EQUIP_HRS,
8915         to_number(null)                               ETC_LABOR_BRDN_COST,
8916         to_number(null)                               ETC_EQUIP_BRDN_COST,
8917         to_number(null)                               ETC_BRDN_COST,
8918         to_number(null)                               ETC_RAW_COST,
8919         to_number(null)                               ETC_LABOR_RAW_COST,
8920         to_number(null)                               ETC_EQUIP_RAW_COST,
8921         to_number(null)                               CUSTOM1,
8922         to_number(null)                               CUSTOM2,
8923         to_number(null)                               CUSTOM3,
8924         to_number(null)                               CUSTOM4,
8925         to_number(null)                               CUSTOM5,
8926         to_number(null)                               CUSTOM6,
8927         to_number(null)                               CUSTOM7,
8928         to_number(null)                               CUSTOM8,
8929         to_number(null)                               CUSTOM9,
8930         to_number(null)                               CUSTOM10,
8931         - fpr.custom11                                CUSTOM11,         /* Modified for Bug 8271578 Start */
8932         - fpr.custom12                                CUSTOM12,
8933         - fpr.custom13                                CUSTOM13,
8934         - fpr.custom14                                CUSTOM14,
8935         - fpr.custom15                                CUSTOM15          /* Modified for Bug 8271578 End */
8936       from
8937         PJI_PJP_PROJ_BATCH_MAP map,
8938         PJI_FP_XBS_ACCUM_F fpr
8939       where
8940         l_extraction_type   = 'INCREMENTAL'  and
8941         map.WORKER_ID       = p_worker_id    and
8942         map.EXTRACTION_TYPE = 'M'            and
8943         fpr.PROJECT_ID      = map.PROJECT_ID and
8944         fpr.PERIOD_TYPE_ID  = 32             and
8945         fpr.RBS_AGGR_LEVEL  = 'L'            and
8946         fpr.WBS_ROLLUP_FLAG = 'N'            and
8947         fpr.PRG_ROLLUP_FLAG = 'N'            and
8948         abs(nvl(fpr.SUP_INV_COMMITTED_COST, 0)) +
8949           abs(nvl(fpr.PO_COMMITTED_COST, 0)) +
8950           abs(nvl(fpr.PR_COMMITTED_COST, 0)) +
8951           abs(nvl(fpr.OTH_COMMITTED_COST, 0)) > 0
8952       union all
8953       select /*+ ordered */
8954         p_worker_id                                   WORKER_ID,
8955         to_char(null)                                 LINE_TYPE,
8956         fpr.PROJECT_ID,
8957         fpr.PROJECT_ORG_ID,
8958         fpr.PROJECT_ORGANIZATION_ID,
8959         fpr.PROJECT_ELEMENT_ID,
8960         fpr.TIME_ID,
8961         fpr.PERIOD_TYPE_ID,
8962         fpr.CALENDAR_TYPE,
8963         fpr.RBS_AGGR_LEVEL,
8964         fpr.WBS_ROLLUP_FLAG,
8965         fpr.PRG_ROLLUP_FLAG,
8966         fpr.CURR_RECORD_TYPE_ID,
8967         fpr.CURRENCY_CODE,
8968         fpr.RBS_ELEMENT_ID,
8969         fpr.RBS_VERSION_ID,
8970         fpr.PLAN_VERSION_ID,
8971         fpr.PLAN_TYPE_ID,
8972         fpr.PLAN_TYPE_CODE,
8973         - fpr.RAW_COST                                RAW_COST,
8974         - fpr.BRDN_COST                               BRDN_COST,
8975         - fpr.REVENUE                                 REVENUE,
8976         - fpr.BILL_RAW_COST                           BILL_RAW_COST,
8977         - fpr.BILL_BRDN_COST                          BILL_BRDN_COST,
8978         - fpr.BILL_LABOR_RAW_COST                     BILL_LABOR_RAW_COST,
8979         - fpr.BILL_LABOR_BRDN_COST                    BILL_LABOR_BRDN_COST,
8980         - fpr.BILL_LABOR_HRS                          BILL_LABOR_HRS,
8981         - fpr.EQUIPMENT_RAW_COST                      EQUIPMENT_RAW_COST,
8982         - fpr.EQUIPMENT_BRDN_COST                     EQUIPMENT_BRDN_COST,
8983         - fpr.CAPITALIZABLE_RAW_COST                  CAPITALIZABLE_RAW_COST,
8984         - fpr.CAPITALIZABLE_BRDN_COST                 CAPITALIZABLE_BRDN_COST,
8985         - fpr.LABOR_RAW_COST                          LABOR_RAW_COST,
8986         - fpr.LABOR_BRDN_COST                         LABOR_BRDN_COST,
8987         - fpr.LABOR_HRS                               LABOR_HRS,
8988         - fpr.LABOR_REVENUE                           LABOR_REVENUE,
8989         - fpr.EQUIPMENT_HOURS                         EQUIPMENT_HOURS,
8990         - fpr.BILLABLE_EQUIPMENT_HOURS                BILLABLE_EQUIPMENT_HOURS,
8991         - fpr.SUP_INV_COMMITTED_COST                  SUP_INV_COMMITTED_COST,
8992         - fpr.PO_COMMITTED_COST                       PO_COMMITTED_COST,
8993         - fpr.PR_COMMITTED_COST                       PR_COMMITTED_COST,
8994         - fpr.OTH_COMMITTED_COST                      OTH_COMMITTED_COST,
8995         - fpr.ACT_LABOR_HRS                           ACT_LABOR_HRS,
8996         - fpr.ACT_EQUIP_HRS                           ACT_EQUIP_HRS,
8997         - fpr.ACT_LABOR_BRDN_COST                     ACT_LABOR_BRDN_COST,
8998         - fpr.ACT_EQUIP_BRDN_COST                     ACT_EQUIP_BRDN_COST,
8999         - fpr.ACT_BRDN_COST                           ACT_BRDN_COST,
9000         - fpr.ACT_RAW_COST                            ACT_RAW_COST,
9001         - fpr.ACT_REVENUE                             ACT_REVENUE,
9002         - fpr.ACT_LABOR_RAW_COST                      ACT_LABOR_RAW_COST,
9003         - fpr.ACT_EQUIP_RAW_COST                      ACT_EQUIP_RAW_COST,
9004         - fpr.ETC_LABOR_HRS                           ETC_LABOR_HRS,
9005         - fpr.ETC_EQUIP_HRS                           ETC_EQUIP_HRS,
9006         - fpr.ETC_LABOR_BRDN_COST                     ETC_LABOR_BRDN_COST,
9007         - fpr.ETC_EQUIP_BRDN_COST                     ETC_EQUIP_BRDN_COST,
9008         - fpr.ETC_BRDN_COST                           ETC_BRDN_COST,
9009         - fpr.ETC_RAW_COST                            ETC_RAW_COST,
9010         - fpr.ETC_LABOR_RAW_COST                      ETC_LABOR_RAW_COST,
9011         - fpr.ETC_EQUIP_RAW_COST                      ETC_EQUIP_RAW_COST,
9012         - fpr.CUSTOM1                                 CUSTOM1,
9013         - fpr.CUSTOM2                                 CUSTOM2,
9014         - fpr.CUSTOM3                                 CUSTOM3,
9015         - fpr.CUSTOM4                                 CUSTOM4,
9016         - fpr.CUSTOM5                                 CUSTOM5,
9017         - fpr.CUSTOM6                                 CUSTOM6,
9018         - fpr.CUSTOM7                                 CUSTOM7,
9019         - fpr.CUSTOM8                                 CUSTOM8,
9020         - fpr.CUSTOM9                                 CUSTOM9,
9021         - fpr.CUSTOM10                                CUSTOM10,
9022         - fpr.CUSTOM11                                CUSTOM11,
9023         - fpr.CUSTOM12                                CUSTOM12,
9024         - fpr.CUSTOM13                                CUSTOM13,
9025         - fpr.CUSTOM14                                CUSTOM14,
9026         - fpr.CUSTOM15                                CUSTOM15
9027       from
9028         PJI_FM_EXTR_PLNVER3_T map,
9029         PJI_FP_XBS_ACCUM_F fpr
9030       where
9031         l_extraction_type   = 'PARTIAL'           and
9032         map.WORKER_ID       = p_worker_id         and
9033         fpr.PROJECT_ID      = map.PROJECT_ID      and
9034         fpr.PLAN_VERSION_ID = map.PLAN_VERSION_ID and
9035         fpr.PERIOD_TYPE_ID  = decode(map.time_phased_type_code,
9036                                      'N', decode(fpr.PERIOD_TYPE_ID,
9037                                                  32, 32,
9038                                                      2048),
9039                                           32)     and
9040         fpr.RBS_AGGR_LEVEL  = 'L'                 and
9041         fpr.WBS_ROLLUP_FLAG = 'N'                 and
9042         fpr.PRG_ROLLUP_FLAG = 'N'
9043       )
9044       group by
9045       WORKER_ID,
9046       LINE_TYPE,
9047       PROJECT_ID,
9048       PROJECT_ORG_ID,
9049       PROJECT_ORGANIZATION_ID,
9050       PROJECT_ELEMENT_ID,
9051       TIME_ID,
9052       PERIOD_TYPE_ID,
9053       CALENDAR_TYPE,
9054       RBS_AGGR_LEVEL,
9055       WBS_ROLLUP_FLAG,
9056       PRG_ROLLUP_FLAG,
9057       CURR_RECORD_TYPE_ID,
9058       CURRENCY_CODE,
9059       RBS_ELEMENT_ID,
9060       RBS_VERSION_ID,
9061       PLAN_VERSION_ID,
9062       PLAN_TYPE_ID,
9063       PLAN_TYPE_CODE
9064     having not
9065       (nvl(sum(RAW_COST), 0)                 = 0 and
9066        nvl(sum(BRDN_COST), 0)                = 0 and
9067        nvl(sum(REVENUE), 0)                  = 0 and
9068        nvl(sum(BILL_RAW_COST), 0)            = 0 and
9069        nvl(sum(BILL_BRDN_COST), 0)           = 0 and
9070        nvl(sum(BILL_LABOR_RAW_COST), 0)      = 0 and
9071        nvl(sum(BILL_LABOR_BRDN_COST), 0)     = 0 and
9072        nvl(sum(BILL_LABOR_HRS), 0)           = 0 and
9073        nvl(sum(EQUIPMENT_RAW_COST), 0)       = 0 and
9074        nvl(sum(EQUIPMENT_BRDN_COST), 0)      = 0 and
9075        nvl(sum(CAPITALIZABLE_RAW_COST), 0)   = 0 and
9076        nvl(sum(CAPITALIZABLE_BRDN_COST), 0)  = 0 and
9077        nvl(sum(LABOR_RAW_COST), 0)           = 0 and
9078        nvl(sum(LABOR_BRDN_COST), 0)          = 0 and
9079        nvl(sum(LABOR_HRS), 0)                = 0 and
9080        nvl(sum(LABOR_REVENUE), 0)            = 0 and
9081        nvl(sum(EQUIPMENT_HOURS), 0)          = 0 and
9082        nvl(sum(BILLABLE_EQUIPMENT_HOURS), 0) = 0 and
9083        nvl(sum(SUP_INV_COMMITTED_COST), 0)   = 0 and
9084        nvl(sum(PO_COMMITTED_COST), 0)        = 0 and
9085        nvl(sum(PR_COMMITTED_COST), 0)        = 0 and
9086        nvl(sum(OTH_COMMITTED_COST), 0)       = 0 and
9087        nvl(sum(ACT_LABOR_HRS), 0)            = 0 and
9088        nvl(sum(ACT_EQUIP_HRS), 0)            = 0 and
9089        nvl(sum(ACT_LABOR_BRDN_COST), 0)      = 0 and
9090        nvl(sum(ACT_EQUIP_BRDN_COST), 0)      = 0 and
9091        nvl(sum(ACT_BRDN_COST), 0)            = 0 and
9092        nvl(sum(ACT_RAW_COST), 0)             = 0 and
9093        nvl(sum(ACT_REVENUE), 0)              = 0 and
9094        nvl(sum(ACT_LABOR_RAW_COST), 0)       = 0 and
9095        nvl(sum(ACT_EQUIP_RAW_COST), 0)       = 0 and
9096        nvl(sum(ETC_LABOR_HRS), 0)            = 0 and
9097        nvl(sum(ETC_EQUIP_HRS), 0)            = 0 and
9098        nvl(sum(ETC_LABOR_BRDN_COST), 0)      = 0 and
9099        nvl(sum(ETC_EQUIP_BRDN_COST), 0)      = 0 and
9100        nvl(sum(ETC_BRDN_COST), 0)            = 0 and
9101        nvl(sum(ETC_RAW_COST), 0)             = 0 and
9102        nvl(sum(ETC_LABOR_RAW_COST), 0)       = 0 and
9103        nvl(sum(ETC_EQUIP_RAW_COST), 0)       = 0 and
9104        nvl(sum(CUSTOM1), 0)                  = 0 and
9105        nvl(sum(CUSTOM2), 0)                  = 0 and
9106        nvl(sum(CUSTOM3), 0)                  = 0 and
9107        nvl(sum(CUSTOM4), 0)                  = 0 and
9108        nvl(sum(CUSTOM5), 0)                  = 0 and
9109        nvl(sum(CUSTOM6), 0)                  = 0 and
9110        nvl(sum(CUSTOM7), 0)                  = 0 and
9111        nvl(sum(CUSTOM8), 0)                  = 0 and
9112        nvl(sum(CUSTOM9), 0)                  = 0 and
9113        nvl(sum(CUSTOM10), 0)                 = 0 and
9114        nvl(sum(CUSTOM11), 0)                 = 0 and
9115        nvl(sum(CUSTOM12), 0)                 = 0 and
9116        nvl(sum(CUSTOM13), 0)                 = 0 and
9117        nvl(sum(CUSTOM14), 0)                 = 0 and
9118        nvl(sum(CUSTOM15), 0)                 = 0);
9119 
9120        if  (  l_extraction_type    =  'PARTIAL' ) then    -- Partial Refresh Performance Improvement
9121     delete from PJI_FM_EXTR_PLNVER3_T where worker_id=p_worker_id;
9122   end if;
9123 
9124     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_CUST_SLICES(p_worker_id);');
9125 
9126     commit;
9127 
9128 	end if;
9129 
9130   end AGGREGATE_FP_CUST_SLICES;
9131 
9132 
9133   -- -----------------------------------------------------
9134   -- procedure AGGREGATE_AC_CUST_SLICES
9135   --
9136   --   History
9137   --   19-MAR-2004  SVERMETT  Created
9138   --
9139   -- Internal PJP Summarization API.
9140   --
9141   -- -----------------------------------------------------
9142   procedure AGGREGATE_AC_CUST_SLICES (p_worker_id in number) is
9143 
9144     l_process varchar2(30);
9145     l_extraction_type varchar2(30);
9146     l_refresh_code number;   --  Bug#5099574
9147     l_plan_type_id number;
9148   begin
9149 
9150     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
9151 
9152     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_CUST_SLICES(p_worker_id);')) then
9153       return;
9154     end if;
9155 
9156     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
9157 
9158      --  Bug#5099574
9159      l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
9160     l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
9161 
9162     -- Bug 15881881
9163     fnd_stats.gather_table_stats('PJI','PJI_AC_AGGR_PJP0',PERCENT=>40);
9164     fnd_stats.gather_table_stats('PJI','PJI_AC_CUST_PJP0',PERCENT=>40);
9165     fnd_stats.gather_table_stats('PJI','PJI_AC_XBS_ACCUM_F',PERCENT=>40);
9166     fnd_stats.gather_table_stats('PJI','PJI_ORG_EXTR_INFO',PERCENT=>40);
9167     fnd_stats.gather_table_stats('PJI','PJI_PJP_PROJ_BATCH_MAP',PERCENT=>40);
9168     fnd_stats.gather_table_stats('PJI','PJI_TIME_CAL_PERIOD',PERCENT=>40);
9169     fnd_stats.gather_table_stats('PJI','PJI_TIME_CAL_RPT_STRUCT',PERCENT=>40);
9170     fnd_stats.gather_table_stats('PJI','PJI_TIME_ENT_PERIOD',PERCENT=>40);
9171     fnd_stats.gather_table_stats('PJI','PJI_TIME_RPT_STRUCT',PERCENT=>40);
9172 
9173     --End Bug 15881881
9174     if (l_plan_type_id = -1) then
9175       l_plan_type_id := null;
9176     end if;
9177 /* spliited the SQL to remove unnecessasry hits based on extraction type */
9178 IF l_extraction_type='PARTIAL' THEN      -- Bug#5453009 Performance Fix  .
9179                       -- Sql was split into 2 for Partial  and Non Partial Flows
9180 
9181     insert into PJI_AC_AGGR_PJP1 pjp1_i
9182     (
9183       WORKER_ID,
9184       RECORD_TYPE,
9185       PRG_LEVEL,
9186       PROJECT_ID,
9187       PROJECT_ORG_ID,
9188       PROJECT_ORGANIZATION_ID,
9189       PROJECT_ELEMENT_ID,
9190       TIME_ID,
9191       PERIOD_TYPE_ID,
9192       CALENDAR_TYPE,
9193       WBS_ROLLUP_FLAG,
9194       PRG_ROLLUP_FLAG,
9195       CURR_RECORD_TYPE_ID,
9196       CURRENCY_CODE,
9197       REVENUE,
9198       INITIAL_FUNDING_AMOUNT,
9199       INITIAL_FUNDING_COUNT,
9200       ADDITIONAL_FUNDING_AMOUNT,
9201       ADDITIONAL_FUNDING_COUNT,
9202       CANCELLED_FUNDING_AMOUNT,
9203       CANCELLED_FUNDING_COUNT,
9204       FUNDING_ADJUSTMENT_AMOUNT,
9205       FUNDING_ADJUSTMENT_COUNT,
9206       REVENUE_WRITEOFF,
9207       AR_INVOICE_AMOUNT,
9208       AR_INVOICE_COUNT,
9209       AR_CASH_APPLIED_AMOUNT,
9210       AR_INVOICE_WRITE_OFF_AMOUNT,
9211       AR_INVOICE_WRITEOFF_COUNT,
9212       AR_CREDIT_MEMO_AMOUNT,
9213       AR_CREDIT_MEMO_COUNT,
9214       UNBILLED_RECEIVABLES,
9215       UNEARNED_REVENUE,
9216       AR_UNAPPR_INVOICE_AMOUNT,
9217       AR_UNAPPR_INVOICE_COUNT,
9218       AR_APPR_INVOICE_AMOUNT,
9219       AR_APPR_INVOICE_COUNT,
9220       AR_AMOUNT_DUE,
9221       AR_COUNT_DUE,
9222       AR_AMOUNT_OVERDUE,
9223       AR_COUNT_OVERDUE,
9224       CUSTOM1,
9225       CUSTOM2,
9226       CUSTOM3,
9227       CUSTOM4,
9228       CUSTOM5,
9229       CUSTOM6,
9230       CUSTOM7,
9231       CUSTOM8,
9232       CUSTOM9,
9233       CUSTOM10,
9234       CUSTOM11,
9235       CUSTOM12,
9236       CUSTOM13,
9237       CUSTOM14,
9238       CUSTOM15
9239     )
9240     select
9241       WORKER_ID,
9242       null                                         RECORD_TYPE,
9243       0                                            PRG_LEVEL,
9244       PROJECT_ID,
9245       PROJECT_ORG_ID,
9246       PROJECT_ORGANIZATION_ID,
9247       PROJECT_ELEMENT_ID,
9248       TIME_ID,
9249       PERIOD_TYPE_ID,
9250       CALENDAR_TYPE,
9251       WBS_ROLLUP_FLAG,
9252       PRG_ROLLUP_FLAG,
9253       CURR_RECORD_TYPE_ID,
9254       CURRENCY_CODE,
9255       sum(REVENUE)                                 REVENUE,
9256       sum(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
9257       sum(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
9258       sum(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
9259       sum(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
9260       sum(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
9261       sum(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
9262       sum(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
9263       sum(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
9264       sum(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
9265       sum(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
9266       sum(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
9267       sum(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
9268       sum(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
9269       sum(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
9270       sum(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
9271       sum(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
9272       sum(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
9273       sum(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
9274       sum(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
9275       sum(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
9276       sum(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
9277       sum(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
9278       sum(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
9279       sum(AR_COUNT_DUE)                            AR_COUNT_DUE,
9280       sum(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
9281       sum(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE,
9282       sum(CUSTOM1)                                 CUSTOM1,
9283       sum(CUSTOM2)                                 CUSTOM2,
9284       sum(CUSTOM3)                                 CUSTOM3,
9285       sum(CUSTOM4)                                 CUSTOM4,
9286       sum(CUSTOM5)                                 CUSTOM5,
9287       sum(CUSTOM6)                                 CUSTOM6,
9288       sum(CUSTOM7)                                 CUSTOM7,
9289       sum(CUSTOM8)                                 CUSTOM8,
9290       sum(CUSTOM9)                                 CUSTOM9,
9291       sum(CUSTOM10)                                CUSTOM10,
9292       sum(CUSTOM11)                                CUSTOM11,
9293       sum(CUSTOM12)                                CUSTOM12,
9294       sum(CUSTOM13)                                CUSTOM13,
9295       sum(CUSTOM14)                                CUSTOM14,
9296       sum(CUSTOM15)                                CUSTOM15
9297     from
9298       (
9299       select
9300         WORKER_ID,
9301         PROJECT_ID,
9302         PROJECT_ORG_ID,
9303         PROJECT_ORGANIZATION_ID,
9304         PROJECT_ELEMENT_ID,
9305         TIME_ID,
9306         PERIOD_TYPE_ID,
9307         CALENDAR_TYPE,
9308         WBS_ROLLUP_FLAG,
9309         PRG_ROLLUP_FLAG,
9310         CURR_RECORD_TYPE_ID,
9311         CURRENCY_CODE,
9312         REVENUE,
9313         INITIAL_FUNDING_AMOUNT,
9314         INITIAL_FUNDING_COUNT,
9315         ADDITIONAL_FUNDING_AMOUNT,
9316         ADDITIONAL_FUNDING_COUNT,
9317         CANCELLED_FUNDING_AMOUNT,
9318         CANCELLED_FUNDING_COUNT,
9319         FUNDING_ADJUSTMENT_AMOUNT,
9320         FUNDING_ADJUSTMENT_COUNT,
9321         REVENUE_WRITEOFF,
9322         AR_INVOICE_AMOUNT,
9323         AR_INVOICE_COUNT,
9324         AR_CASH_APPLIED_AMOUNT,
9325         AR_INVOICE_WRITE_OFF_AMOUNT,
9326         AR_INVOICE_WRITEOFF_COUNT,
9327         AR_CREDIT_MEMO_AMOUNT,
9328         AR_CREDIT_MEMO_COUNT,
9329         UNBILLED_RECEIVABLES,
9330         UNEARNED_REVENUE,
9331         AR_UNAPPR_INVOICE_AMOUNT,
9332         AR_UNAPPR_INVOICE_COUNT,
9333         AR_APPR_INVOICE_AMOUNT,
9334         AR_APPR_INVOICE_COUNT,
9335         AR_AMOUNT_DUE,
9336         AR_COUNT_DUE,
9337         AR_AMOUNT_OVERDUE,
9338         AR_COUNT_OVERDUE,
9339         to_number(null)                            CUSTOM1,
9340         to_number(null)                            CUSTOM2,
9341         to_number(null)                            CUSTOM3,
9342         to_number(null)                            CUSTOM4,
9343         to_number(null)                            CUSTOM5,
9344         to_number(null)                            CUSTOM6,
9345         to_number(null)                            CUSTOM7,
9346         to_number(null)                            CUSTOM8,
9347         to_number(null)                            CUSTOM9,
9348         to_number(null)                            CUSTOM10,
9349         to_number(null)                            CUSTOM11,
9350         to_number(null)                            CUSTOM12,
9351         to_number(null)                            CUSTOM13,
9352         to_number(null)                            CUSTOM14,
9353         to_number(null)                            CUSTOM15
9354       from
9355         PJI_AC_AGGR_PJP0
9356       where
9357         WORKER_ID = p_worker_id
9358       union all
9359       select
9360         WORKER_ID,
9361         PROJECT_ID,
9362         PROJECT_ORG_ID,
9363         PROJECT_ORGANIZATION_ID,
9364         PROJECT_ELEMENT_ID,
9365         TIME_ID,
9366         PERIOD_TYPE_ID,
9367         CALENDAR_TYPE,
9368         WBS_ROLLUP_FLAG,
9369         PRG_ROLLUP_FLAG,
9370         CURR_RECORD_TYPE_ID,
9371         CURRENCY_CODE,
9372         to_number(null)                            REVENUE,
9373         to_number(null)                            INITIAL_FUNDING_AMOUNT,
9374         to_number(null)                            INITIAL_FUNDING_COUNT,
9375         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
9376         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
9377         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
9378         to_number(null)                            CANCELLED_FUNDING_COUNT,
9379         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
9380         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
9381         to_number(null)                            REVENUE_WRITEOFF,
9382         to_number(null)                            AR_INVOICE_AMOUNT,
9383         to_number(null)                            AR_INVOICE_COUNT,
9384         to_number(null)                            AR_CASH_APPLIED_AMOUNT,
9385         to_number(null)                            AR_INVOICE_WRITE_OFF_AMOUNT,
9386         to_number(null)                            AR_INVOICE_WRITEOFF_COUNT,
9387         to_number(null)                            AR_CREDIT_MEMO_AMOUNT,
9388         to_number(null)                            AR_CREDIT_MEMO_COUNT,
9389         to_number(null)                            UNBILLED_RECEIVABLES,
9390         to_number(null)                            UNEARNED_REVENUE,
9391         to_number(null)                            AR_UNAPPR_INVOICE_AMOUNT,
9392         to_number(null)                            AR_UNAPPR_INVOICE_COUNT,
9393         to_number(null)                            AR_APPR_INVOICE_AMOUNT,
9394         to_number(null)                            AR_APPR_INVOICE_COUNT,
9395         to_number(null)                            AR_AMOUNT_DUE,
9396         to_number(null)                            AR_COUNT_DUE,
9397         to_number(null)                            AR_AMOUNT_OVERDUE,
9398         to_number(null)                            AR_COUNT_OVERDUE,
9399         CUSTOM1,
9400         CUSTOM2,
9401         CUSTOM3,
9402         CUSTOM4,
9403         CUSTOM5,
9404         CUSTOM6,
9405         CUSTOM7,
9406         CUSTOM8,
9407         CUSTOM9,
9408         CUSTOM10,
9409         CUSTOM11,
9410         CUSTOM12,
9411         CUSTOM13,
9412         CUSTOM14,
9413         CUSTOM15
9414       from
9415         PJI_AC_CUST_PJP0
9416       where
9417         WORKER_ID = p_worker_id
9418       union all                        -- partial refresh reversals
9419       select /*+  full(map) use_nl(acr) */
9420         p_worker_id                                WORKER_ID,
9421         acr.PROJECT_ID,
9422         acr.PROJECT_ORG_ID,
9423         acr.PROJECT_ORGANIZATION_ID,
9424         acr.PROJECT_ELEMENT_ID,
9425         acr.TIME_ID,
9426         acr.PERIOD_TYPE_ID,
9427         acr.CALENDAR_TYPE,
9428         acr.WBS_ROLLUP_FLAG,
9429         acr.PRG_ROLLUP_FLAG,
9430         acr.CURR_RECORD_TYPE_ID,
9431         acr.CURRENCY_CODE,
9432         - acr.REVENUE                              REVENUE,
9433         - acr.INITIAL_FUNDING_AMOUNT               INITIAL_FUNDING_AMOUNT,
9434         - acr.INITIAL_FUNDING_COUNT                INITIAL_FUNDING_COUNT,
9435         - acr.ADDITIONAL_FUNDING_AMOUNT            ADDITIONAL_FUNDING_AMOUNT,
9436         - acr.ADDITIONAL_FUNDING_COUNT             ADDITIONAL_FUNDING_COUNT,
9437         - acr.CANCELLED_FUNDING_AMOUNT             CANCELLED_FUNDING_AMOUNT,
9438         - acr.CANCELLED_FUNDING_COUNT              CANCELLED_FUNDING_COUNT,
9439         - acr.FUNDING_ADJUSTMENT_AMOUNT            FUNDING_ADJUSTMENT_AMOUNT,
9440         - acr.FUNDING_ADJUSTMENT_COUNT             FUNDING_ADJUSTMENT_COUNT,
9441         - acr.REVENUE_WRITEOFF                     REVENUE_WRITEOFF,
9442         - acr.AR_INVOICE_AMOUNT                    AR_INVOICE_AMOUNT,
9443         - acr.AR_INVOICE_COUNT                     AR_INVOICE_COUNT,
9444         - acr.AR_CASH_APPLIED_AMOUNT               AR_CASH_APPLIED_AMOUNT,
9445         - acr.AR_INVOICE_WRITE_OFF_AMOUNT          AR_INVOICE_WRITE_OFF_AMOUNT,
9446         - acr.AR_INVOICE_WRITEOFF_COUNT            AR_INVOICE_WRITEOFF_COUNT,
9447         - acr.AR_CREDIT_MEMO_AMOUNT                AR_CREDIT_MEMO_AMOUNT,
9448         - acr.AR_CREDIT_MEMO_COUNT                 AR_CREDIT_MEMO_COUNT,
9449         - acr.UNBILLED_RECEIVABLES                 UNBILLED_RECEIVABLES,
9450         - acr.UNEARNED_REVENUE                     UNEARNED_REVENUE,
9451         - acr.AR_UNAPPR_INVOICE_AMOUNT             AR_UNAPPR_INVOICE_AMOUNT,
9452         - acr.AR_UNAPPR_INVOICE_COUNT              AR_UNAPPR_INVOICE_COUNT,
9453         - acr.AR_APPR_INVOICE_AMOUNT               AR_APPR_INVOICE_AMOUNT,
9454         - acr.AR_APPR_INVOICE_COUNT                AR_APPR_INVOICE_COUNT,
9455         - acr.AR_AMOUNT_DUE                        AR_AMOUNT_DUE,
9456         - acr.AR_COUNT_DUE                         AR_COUNT_DUE,
9457         - acr.AR_AMOUNT_OVERDUE                    AR_AMOUNT_OVERDUE,
9458         - acr.AR_COUNT_OVERDUE                     AR_COUNT_OVERDUE,
9459         - acr.CUSTOM1                              CUSTOM1,
9460         - acr.CUSTOM2                              CUSTOM2,
9461         - acr.CUSTOM3                              CUSTOM3,
9462         - acr.CUSTOM4                              CUSTOM4,
9463         - acr.CUSTOM5                              CUSTOM5,
9464         - acr.CUSTOM6                              CUSTOM6,
9465         - acr.CUSTOM7                              CUSTOM7,
9466         - acr.CUSTOM8                              CUSTOM8,
9467         - acr.CUSTOM9                              CUSTOM9,
9468         - acr.CUSTOM10                             CUSTOM10,
9469         - acr.CUSTOM11                             CUSTOM11,
9470         - acr.CUSTOM12                             CUSTOM12,
9471         - acr.CUSTOM13                             CUSTOM13,
9472         - acr.CUSTOM14                             CUSTOM14,
9473         - acr.CUSTOM15                             CUSTOM15
9474       from
9475         PJI_PJP_PROJ_BATCH_MAP map,
9476         PJI_AC_XBS_ACCUM_F acr
9477       where
9478         l_extraction_type   = 'PARTIAL'      and
9479         map.WORKER_ID       = p_worker_id    and
9480         acr.PROJECT_ID      = map.PROJECT_ID and
9481         acr.PERIOD_TYPE_ID  = 32             and
9482         acr.WBS_ROLLUP_FLAG = 'N'            and
9483         acr.PRG_ROLLUP_FLAG = 'N'         and
9484   decode(bitand(l_refresh_code,1),1,'Y','N') ='Y'   and   --  Bug#5099574
9485   l_plan_type_id is null
9486       )
9487     group by
9488       WORKER_ID,
9489       PROJECT_ID,
9490       PROJECT_ORG_ID,
9491       PROJECT_ORGANIZATION_ID,
9492       PROJECT_ELEMENT_ID,
9493       TIME_ID,
9494       PERIOD_TYPE_ID,
9495       CALENDAR_TYPE,
9496       WBS_ROLLUP_FLAG,
9497       PRG_ROLLUP_FLAG,
9498       CURR_RECORD_TYPE_ID,
9499       CURRENCY_CODE
9500     having not
9501       (nvl(sum(REVENUE), 0)                     = 0 and
9502        nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
9503        nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
9504        nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
9505        nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
9506        nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
9507        nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
9508        nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
9509        nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
9510        nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
9511        nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
9512        nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
9513        nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
9514        nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
9515        nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
9516        nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
9517        nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
9518        nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
9519        nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
9520        nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
9521        nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
9522        nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
9523        nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
9524        nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
9525        nvl(sum(AR_COUNT_DUE), 0)                = 0 and
9526        nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
9527        nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
9528        nvl(sum(CUSTOM1), 0)                     = 0 and
9529        nvl(sum(CUSTOM2), 0)                     = 0 and
9530        nvl(sum(CUSTOM3), 0)                     = 0 and
9531        nvl(sum(CUSTOM4), 0)                     = 0 and
9532        nvl(sum(CUSTOM5), 0)                     = 0 and
9533        nvl(sum(CUSTOM6), 0)                     = 0 and
9534        nvl(sum(CUSTOM7), 0)                     = 0 and
9535        nvl(sum(CUSTOM8), 0)                     = 0 and
9536        nvl(sum(CUSTOM9), 0)                     = 0 and
9537        nvl(sum(CUSTOM10), 0)                    = 0 and
9538        nvl(sum(CUSTOM11), 0)                    = 0 and
9539        nvl(sum(CUSTOM12), 0)                    = 0 and
9540        nvl(sum(CUSTOM13), 0)                    = 0 and
9541        nvl(sum(CUSTOM14), 0)                    = 0 and
9542        nvl(sum(CUSTOM15), 0)                    = 0);
9543 
9544 else
9545  insert into PJI_AC_AGGR_PJP1 pjp1_i
9546     (
9547       WORKER_ID,
9548       RECORD_TYPE,
9549       PRG_LEVEL,
9550       PROJECT_ID,
9551       PROJECT_ORG_ID,
9552       PROJECT_ORGANIZATION_ID,
9553       PROJECT_ELEMENT_ID,
9554       TIME_ID,
9555       PERIOD_TYPE_ID,
9556       CALENDAR_TYPE,
9557       WBS_ROLLUP_FLAG,
9558       PRG_ROLLUP_FLAG,
9559       CURR_RECORD_TYPE_ID,
9560       CURRENCY_CODE,
9561       REVENUE,
9562       INITIAL_FUNDING_AMOUNT,
9563       INITIAL_FUNDING_COUNT,
9564       ADDITIONAL_FUNDING_AMOUNT,
9565       ADDITIONAL_FUNDING_COUNT,
9566       CANCELLED_FUNDING_AMOUNT,
9567       CANCELLED_FUNDING_COUNT,
9568       FUNDING_ADJUSTMENT_AMOUNT,
9569       FUNDING_ADJUSTMENT_COUNT,
9570       REVENUE_WRITEOFF,
9571       AR_INVOICE_AMOUNT,
9572       AR_INVOICE_COUNT,
9573       AR_CASH_APPLIED_AMOUNT,
9574       AR_INVOICE_WRITE_OFF_AMOUNT,
9575       AR_INVOICE_WRITEOFF_COUNT,
9576       AR_CREDIT_MEMO_AMOUNT,
9577       AR_CREDIT_MEMO_COUNT,
9578       UNBILLED_RECEIVABLES,
9579       UNEARNED_REVENUE,
9580       AR_UNAPPR_INVOICE_AMOUNT,
9581       AR_UNAPPR_INVOICE_COUNT,
9582       AR_APPR_INVOICE_AMOUNT,
9583       AR_APPR_INVOICE_COUNT,
9584       AR_AMOUNT_DUE,
9585       AR_COUNT_DUE,
9586       AR_AMOUNT_OVERDUE,
9587       AR_COUNT_OVERDUE,
9588       CUSTOM1,
9589       CUSTOM2,
9590       CUSTOM3,
9591       CUSTOM4,
9592       CUSTOM5,
9593       CUSTOM6,
9594       CUSTOM7,
9595       CUSTOM8,
9596       CUSTOM9,
9597       CUSTOM10,
9598       CUSTOM11,
9599       CUSTOM12,
9600       CUSTOM13,
9601       CUSTOM14,
9602       CUSTOM15
9603     )
9604     select
9605       WORKER_ID,
9606       null                                         RECORD_TYPE,
9607       0                                            PRG_LEVEL,
9608       PROJECT_ID,
9609       PROJECT_ORG_ID,
9610       PROJECT_ORGANIZATION_ID,
9611       PROJECT_ELEMENT_ID,
9612       TIME_ID,
9613       PERIOD_TYPE_ID,
9614       CALENDAR_TYPE,
9615       WBS_ROLLUP_FLAG,
9616       PRG_ROLLUP_FLAG,
9617       CURR_RECORD_TYPE_ID,
9618       CURRENCY_CODE,
9619       sum(REVENUE)                                 REVENUE,
9620       sum(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
9621       sum(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
9622       sum(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
9623       sum(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
9624       sum(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
9625       sum(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
9626       sum(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
9627       sum(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
9628       sum(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
9629       sum(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
9630       sum(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
9631       sum(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
9632       sum(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
9633       sum(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
9634       sum(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
9635       sum(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
9636       sum(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
9637       sum(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
9638       sum(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
9639       sum(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
9640       sum(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
9641       sum(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
9642       sum(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
9643       sum(AR_COUNT_DUE)                            AR_COUNT_DUE,
9644       sum(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
9645       sum(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE,
9646       sum(CUSTOM1)                                 CUSTOM1,
9647       sum(CUSTOM2)                                 CUSTOM2,
9648       sum(CUSTOM3)                                 CUSTOM3,
9649       sum(CUSTOM4)                                 CUSTOM4,
9650       sum(CUSTOM5)                                 CUSTOM5,
9651       sum(CUSTOM6)                                 CUSTOM6,
9652       sum(CUSTOM7)                                 CUSTOM7,
9653       sum(CUSTOM8)                                 CUSTOM8,
9654       sum(CUSTOM9)                                 CUSTOM9,
9655       sum(CUSTOM10)                                CUSTOM10,
9656       sum(CUSTOM11)                                CUSTOM11,
9657       sum(CUSTOM12)                                CUSTOM12,
9658       sum(CUSTOM13)                                CUSTOM13,
9659       sum(CUSTOM14)                                CUSTOM14,
9660       sum(CUSTOM15)                                CUSTOM15
9661     from
9662       (
9663       select
9664         WORKER_ID,
9665         PROJECT_ID,
9666         PROJECT_ORG_ID,
9667         PROJECT_ORGANIZATION_ID,
9668         PROJECT_ELEMENT_ID,
9669         TIME_ID,
9670         PERIOD_TYPE_ID,
9671         CALENDAR_TYPE,
9672         WBS_ROLLUP_FLAG,
9673         PRG_ROLLUP_FLAG,
9674         CURR_RECORD_TYPE_ID,
9675         CURRENCY_CODE,
9676         REVENUE,
9677         INITIAL_FUNDING_AMOUNT,
9678         INITIAL_FUNDING_COUNT,
9679         ADDITIONAL_FUNDING_AMOUNT,
9680         ADDITIONAL_FUNDING_COUNT,
9681         CANCELLED_FUNDING_AMOUNT,
9682         CANCELLED_FUNDING_COUNT,
9683         FUNDING_ADJUSTMENT_AMOUNT,
9684         FUNDING_ADJUSTMENT_COUNT,
9685         REVENUE_WRITEOFF,
9686         AR_INVOICE_AMOUNT,
9687         AR_INVOICE_COUNT,
9688         AR_CASH_APPLIED_AMOUNT,
9689         AR_INVOICE_WRITE_OFF_AMOUNT,
9690         AR_INVOICE_WRITEOFF_COUNT,
9691         AR_CREDIT_MEMO_AMOUNT,
9692         AR_CREDIT_MEMO_COUNT,
9693         UNBILLED_RECEIVABLES,
9694         UNEARNED_REVENUE,
9695         AR_UNAPPR_INVOICE_AMOUNT,
9696         AR_UNAPPR_INVOICE_COUNT,
9697         AR_APPR_INVOICE_AMOUNT,
9698         AR_APPR_INVOICE_COUNT,
9699         AR_AMOUNT_DUE,
9700         AR_COUNT_DUE,
9701         AR_AMOUNT_OVERDUE,
9702         AR_COUNT_OVERDUE,
9703         to_number(null)                            CUSTOM1,
9704         to_number(null)                            CUSTOM2,
9705         to_number(null)                            CUSTOM3,
9706         to_number(null)                            CUSTOM4,
9707         to_number(null)                            CUSTOM5,
9708         to_number(null)                            CUSTOM6,
9709         to_number(null)                            CUSTOM7,
9710         to_number(null)                            CUSTOM8,
9711         to_number(null)                            CUSTOM9,
9712         to_number(null)                            CUSTOM10,
9713         to_number(null)                            CUSTOM11,
9714         to_number(null)                            CUSTOM12,
9715         to_number(null)                            CUSTOM13,
9716         to_number(null)                            CUSTOM14,
9717         to_number(null)                            CUSTOM15
9718       from
9719         PJI_AC_AGGR_PJP0
9720       where
9721         WORKER_ID = p_worker_id
9722       union all
9723       select
9724         WORKER_ID,
9725         PROJECT_ID,
9726         PROJECT_ORG_ID,
9727         PROJECT_ORGANIZATION_ID,
9728         PROJECT_ELEMENT_ID,
9729         TIME_ID,
9730         PERIOD_TYPE_ID,
9731         CALENDAR_TYPE,
9732         WBS_ROLLUP_FLAG,
9733         PRG_ROLLUP_FLAG,
9734         CURR_RECORD_TYPE_ID,
9735         CURRENCY_CODE,
9736         to_number(null)                            REVENUE,
9737         to_number(null)                            INITIAL_FUNDING_AMOUNT,
9738         to_number(null)                            INITIAL_FUNDING_COUNT,
9739         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
9740         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
9741         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
9742         to_number(null)                            CANCELLED_FUNDING_COUNT,
9743         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
9744         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
9745         to_number(null)                            REVENUE_WRITEOFF,
9746         to_number(null)                            AR_INVOICE_AMOUNT,
9747         to_number(null)                            AR_INVOICE_COUNT,
9748         to_number(null)                            AR_CASH_APPLIED_AMOUNT,
9749         to_number(null)                            AR_INVOICE_WRITE_OFF_AMOUNT,
9750         to_number(null)                            AR_INVOICE_WRITEOFF_COUNT,
9751         to_number(null)                            AR_CREDIT_MEMO_AMOUNT,
9752         to_number(null)                            AR_CREDIT_MEMO_COUNT,
9753         to_number(null)                            UNBILLED_RECEIVABLES,
9754         to_number(null)                            UNEARNED_REVENUE,
9755         to_number(null)                            AR_UNAPPR_INVOICE_AMOUNT,
9756         to_number(null)                            AR_UNAPPR_INVOICE_COUNT,
9757         to_number(null)                            AR_APPR_INVOICE_AMOUNT,
9758         to_number(null)                            AR_APPR_INVOICE_COUNT,
9759         to_number(null)                            AR_AMOUNT_DUE,
9760         to_number(null)                            AR_COUNT_DUE,
9761         to_number(null)                            AR_AMOUNT_OVERDUE,
9762         to_number(null)                            AR_COUNT_OVERDUE,
9763         CUSTOM1,
9764         CUSTOM2,
9765         CUSTOM3,
9766         CUSTOM4,
9767         CUSTOM5,
9768         CUSTOM6,
9769         CUSTOM7,
9770         CUSTOM8,
9771         CUSTOM9,
9772         CUSTOM10,
9773         CUSTOM11,
9774         CUSTOM12,
9775         CUSTOM13,
9776         CUSTOM14,
9777         CUSTOM15
9778       from
9779         PJI_AC_CUST_PJP0
9780       where
9781         WORKER_ID = p_worker_id
9782       union all    -- activity and snapshot reversals  -  PART 1  -  ENT dates
9783                    -- Select old ITD amounts for snapshots with
9784                    -- reverse sign from base level fact
9785       select /*+  ordered use_nl(acr map) index(cal PJI_TIME_RPT_STRUCT_N1) index(acr PJI_AC_XBS_ACCUM_F_N1) index(map PJI_PJP_PROJ_BATCH_MAP_N1) */    -- Modified for bug 15996434
9786             distinct                                   -- Bug 6689297
9787         p_worker_id                                WORKER_ID,
9788         acr.PROJECT_ID,
9789         acr.PROJECT_ORG_ID,
9790         acr.PROJECT_ORGANIZATION_ID,
9791         acr.PROJECT_ELEMENT_ID,
9792         decode(invert.INVERT_ID,
9793                'ACTIVITY', acr.TIME_ID,
9794                'SNAPSHOT', ent.ENT_PERIOD_ID)      TIME_ID,
9795         32                                         PERIOD_TYPE_ID,
9796         'E'                                        CALENDAR_TYPE,
9797         acr.WBS_ROLLUP_FLAG,
9798         acr.PRG_ROLLUP_FLAG,
9799         acr.CURR_RECORD_TYPE_ID,
9800         acr.CURRENCY_CODE,
9801         to_number(null)                            REVENUE,
9802         to_number(null)                            INITIAL_FUNDING_AMOUNT,
9803         to_number(null)                            INITIAL_FUNDING_COUNT,
9804         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
9805         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
9806         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
9807         to_number(null)                            CANCELLED_FUNDING_COUNT,
9808         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
9809         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
9810         to_number(null)                            REVENUE_WRITEOFF,
9811         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
9812         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
9813 /*        decode(invert.INVERT_ID,
9814                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
9815                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
9816         decode(invert.INVERT_ID,
9817                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
9818                                   acr.TIME_ID, to_number(null),
9819                                                - acr.AR_INVOICE_COUNT),
9820                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT, */
9821         decode(invert.INVERT_ID,
9822                'ACTIVITY', to_number(null),
9823                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
9824                                                    AR_CASH_APPLIED_AMOUNT,
9825         decode(invert.INVERT_ID,
9826                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
9827                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
9828         decode(invert.INVERT_ID,
9829                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
9830                                   acr.TIME_ID, to_number(null),
9831                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
9832                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
9833                                                    AR_INVOICE_WRITEOFF_COUNT,
9834         decode(invert.INVERT_ID,
9835                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
9836                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
9837         decode(invert.INVERT_ID,
9838                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
9839                                   acr.TIME_ID, to_number(null),
9840                                                - acr.AR_CREDIT_MEMO_COUNT),
9841                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
9842                                                    AR_CREDIT_MEMO_COUNT,
9843         to_number(null)                            UNBILLED_RECEIVABLES,
9844         to_number(null)                            UNEARNED_REVENUE,
9845         decode(invert.INVERT_ID,
9846                'ACTIVITY', to_number(null),
9847                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
9848                                                    AR_UNAPPR_INVOICE_AMOUNT,
9849         decode(invert.INVERT_ID,
9850                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
9851                                   acr.TIME_ID, to_number(null),
9852                                                - acr.AR_UNAPPR_INVOICE_COUNT),
9853                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
9854                                                    AR_UNAPPR_INVOICE_COUNT,
9855         decode(invert.INVERT_ID,
9856                'ACTIVITY', to_number(null),
9857                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
9858                                                    AR_APPR_INVOICE_AMOUNT,
9859         decode(invert.INVERT_ID,
9860                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
9861                                   acr.TIME_ID, to_number(null),
9862                                                - acr.AR_APPR_INVOICE_COUNT),
9863                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
9864                                                    AR_APPR_INVOICE_COUNT,
9865         decode(invert.INVERT_ID,
9866                'ACTIVITY', to_number(null),
9867                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
9868         decode(invert.INVERT_ID,
9869                'ACTIVITY', to_number(null),
9870                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
9871         decode(invert.INVERT_ID,
9872                'ACTIVITY', to_number(null),
9873                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
9874         decode(invert.INVERT_ID,
9875                'ACTIVITY', to_number(null),
9876                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
9877         to_number(null)                            CUSTOM1,
9878         to_number(null)                            CUSTOM2,
9879         to_number(null)                            CUSTOM3,
9880         to_number(null)                            CUSTOM4,
9881         to_number(null)                            CUSTOM5,
9882         to_number(null)                            CUSTOM6,
9883         to_number(null)                            CUSTOM7,
9884         to_number(null)                            CUSTOM8,
9885         to_number(null)                            CUSTOM9,
9886         to_number(null)                            CUSTOM10,
9887         to_number(null)                            CUSTOM11,
9888         to_number(null)                            CUSTOM12,
9889         to_number(null)                            CUSTOM13,
9890         to_number(null)                            CUSTOM14,
9891         to_number(null)                            CUSTOM15
9892       from
9893         PJI_AC_AGGR_PJP0       pjp0,    -- Re-orderdered the tables for bug 15996434
9894         PJI_TIME_ENT_PERIOD_V  ent,
9895         PJI_TIME_RPT_STRUCT    cal,
9896         PJI_AC_XBS_ACCUM_F     acr,
9897         PJI_PJP_PROJ_BATCH_MAP map,
9898         (
9899           select 'ACTIVITY' INVERT_ID from DUAL union all
9900           select 'SNAPSHOT' INVERT_ID from DUAL
9901         ) invert
9902       where
9903         l_extraction_type                <> 'PARTIAL'                   and
9904         map.WORKER_ID                    =  p_worker_id                 and
9905         acr.PROJECT_ID                   =  map.PROJECT_ID              and
9906         pjp0.WORKER_ID                   =  p_worker_id                 and    -- Bug 6689297
9907         acr.PROJECT_ID                   =  pjp0.PROJECT_ID             and    -- Bug 6689297
9908         acr.WBS_ROLLUP_FLAG              =  'N'                         and
9909         acr.PRG_ROLLUP_FLAG              =  'N'                         and
9910         cal.REPORT_DATE                  =  trunc(ent.START_DATE, 'J')  and
9911         cal.CALENDAR_TYPE                =  acr.CALENDAR_TYPE           and
9912         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID          and
9913         cal.TIME_ID                      =  acr.TIME_ID                 and
9914         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID          and
9915         sysdate between ent.START_DATE and ent.END_DATE                 and
9916         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
9917           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
9918           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
9919           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
9920           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
9921           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
9922           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
9923           abs(nvl(acr.AR_COUNT_DUE,0)) +
9924           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
9925       union all    -- activity and snapshot reversals  -  PART 2  -  GL dates
9926                    -- Select old ITD amounts for snapshots with
9927                    -- reverse sign from base level fact
9928       select /*+ ordered use_nl(acr map) full(info) index(cal PJI_TIME_CAL_RPT_STRUCT_N1) index(acr PJI_AC_XBS_ACCUM_F_N1) index(map PJI_PJP_PROJ_BATCH_MAP_N1) */   -- Modified for bug 15996434
9929             distinct                                   -- Bug 6689297
9930         p_worker_id                                WORKER_ID,
9931         acr.PROJECT_ID,
9932         acr.PROJECT_ORG_ID,
9933         acr.PROJECT_ORGANIZATION_ID,
9934         acr.PROJECT_ELEMENT_ID,
9935         decode(invert.INVERT_ID,
9936                'ACTIVITY', acr.TIME_ID,
9937                'SNAPSHOT', gl_cal.CAL_PERIOD_ID)   TIME_ID,
9938         32                                         PERIOD_TYPE_ID,
9939         'G'                                        CALENDAR_TYPE,
9940         acr.WBS_ROLLUP_FLAG,
9941         acr.PRG_ROLLUP_FLAG,
9942         acr.CURR_RECORD_TYPE_ID,
9943         acr.CURRENCY_CODE,
9944         to_number(null)                            REVENUE,
9945         to_number(null)                            INITIAL_FUNDING_AMOUNT,
9946         to_number(null)                            INITIAL_FUNDING_COUNT,
9947         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
9948         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
9949         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
9950         to_number(null)                            CANCELLED_FUNDING_COUNT,
9951         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
9952         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
9953         to_number(null)                            REVENUE_WRITEOFF,
9954         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
9955         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
9956 /*        decode(invert.INVERT_ID,
9957                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
9958                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
9959         decode(invert.INVERT_ID,
9960                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
9961                                   acr.TIME_ID, to_number(null),
9962                                                - acr.AR_INVOICE_COUNT),
9963                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT,   */
9964         decode(invert.INVERT_ID,
9965                'ACTIVITY', to_number(null),
9966                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
9967                                                    AR_CASH_APPLIED_AMOUNT,
9968         decode(invert.INVERT_ID,
9969                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
9970                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
9971         decode(invert.INVERT_ID,
9972                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
9973                                   acr.TIME_ID, to_number(null),
9974                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
9975                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
9976                                                    AR_INVOICE_WRITEOFF_COUNT,
9977         decode(invert.INVERT_ID,
9978                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
9979                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
9980         decode(invert.INVERT_ID,
9981                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
9982                                   acr.TIME_ID, to_number(null),
9983                                                - acr.AR_CREDIT_MEMO_COUNT),
9984                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
9985                                                    AR_CREDIT_MEMO_COUNT,
9986         to_number(null)                            UNBILLED_RECEIVABLES,
9987         to_number(null)                            UNEARNED_REVENUE,
9988         decode(invert.INVERT_ID,
9989                'ACTIVITY', to_number(null),
9990                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
9991                                                    AR_UNAPPR_INVOICE_AMOUNT,
9992         decode(invert.INVERT_ID,
9993                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
9994                                   acr.TIME_ID, to_number(null),
9995                                                - acr.AR_UNAPPR_INVOICE_COUNT),
9996                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
9997                                                    AR_UNAPPR_INVOICE_COUNT,
9998         decode(invert.INVERT_ID,
9999                'ACTIVITY', to_number(null),
10000                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
10001                                                    AR_APPR_INVOICE_AMOUNT,
10002         decode(invert.INVERT_ID,
10003                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
10004                                   acr.TIME_ID, to_number(null),
10005                                                - acr.AR_APPR_INVOICE_COUNT),
10006                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
10007                                                    AR_APPR_INVOICE_COUNT,
10008         decode(invert.INVERT_ID,
10009                'ACTIVITY', to_number(null),
10010                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
10011         decode(invert.INVERT_ID,
10012                'ACTIVITY', to_number(null),
10013                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
10014         decode(invert.INVERT_ID,
10015                'ACTIVITY', to_number(null),
10016                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
10017         decode(invert.INVERT_ID,
10018                'ACTIVITY', to_number(null),
10019                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
10020         to_number(null)                            CUSTOM1,
10021         to_number(null)                            CUSTOM2,
10022         to_number(null)                            CUSTOM3,
10023         to_number(null)                            CUSTOM4,
10024         to_number(null)                            CUSTOM5,
10025         to_number(null)                            CUSTOM6,
10026         to_number(null)                            CUSTOM7,
10027         to_number(null)                            CUSTOM8,
10028         to_number(null)                            CUSTOM9,
10029         to_number(null)                            CUSTOM10,
10030         to_number(null)                            CUSTOM11,
10031         to_number(null)                            CUSTOM12,
10032         to_number(null)                            CUSTOM13,
10033         to_number(null)                            CUSTOM14,
10034         to_number(null)                            CUSTOM15
10035       from
10036         PJI_AC_AGGR_PJP0        pjp0,    -- Re-orderdered the tables for bug 15996434
10037         PJI_AC_XBS_ACCUM_F      acr,
10038         PJI_ORG_EXTR_INFO       info,
10039         PJI_TIME_CAL_PERIOD_V   gl_cal,
10040         PJI_TIME_CAL_RPT_STRUCT cal,
10041         PJI_PJP_PROJ_BATCH_MAP  map,
10042         (
10043           select 'ACTIVITY' INVERT_ID from DUAL union all
10044           select 'SNAPSHOT' INVERT_ID from DUAL
10045         ) invert
10046       where
10047         l_extraction_type                <> 'PARTIAL'                     and
10048         map.WORKER_ID                    =  p_worker_id                   and
10049         acr.PROJECT_ID                   =  map.PROJECT_ID                and
10050         pjp0.WORKER_ID                   =  p_worker_id                   and    -- Bug 6689297
10051         acr.PROJECT_ID                   =  pjp0.PROJECT_ID               and    -- Bug 6689297
10052         acr.WBS_ROLLUP_FLAG              =  'N'                           and
10053         acr.PRG_ROLLUP_FLAG              =  'N'                           and
10054         acr.PROJECT_ORG_ID               =  info.ORG_ID                   and  /*5377133 */
10055         acr.CALENDAR_TYPE                =  'G'                           and
10056         cal.REPORT_DATE                  =  trunc(gl_cal.START_DATE, 'J') and
10057         cal.CALENDAR_ID                  =  info.GL_CALENDAR_ID           and
10058         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID            and
10059         cal.TIME_ID                      =  acr.TIME_ID                   and
10060         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID            and
10061         gl_cal.CALENDAR_ID               =  info.GL_CALENDAR_ID           and
10062         sysdate between gl_cal.START_DATE and gl_cal.END_DATE             and
10063         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
10064           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
10065           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
10066           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
10067           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
10068           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
10069           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
10070           abs(nvl(acr.AR_COUNT_DUE,0)) +
10071           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
10072       union all    -- activity and snapshot reversals  -  PART 3  -  PA dates
10073                    -- Select old ITD amounts for snapshots with
10074                    -- reverse sign from base level fact
10075       select /*+ ordered use_nl(acr map) full(info) index(cal PJI_TIME_CAL_RPT_STRUCT_N1) index(acr PJI_AC_XBS_ACCUM_F_N1) index(map PJI_PJP_PROJ_BATCH_MAP_N1) */   -- Modified for bug 15996434
10076             distinct                                   -- Bug 6689297
10077         p_worker_id                                WORKER_ID,
10078         acr.PROJECT_ID,
10079         acr.PROJECT_ORG_ID,
10080         acr.PROJECT_ORGANIZATION_ID,
10081         acr.PROJECT_ELEMENT_ID,
10082         decode(invert.INVERT_ID,
10083                'ACTIVITY', acr.TIME_ID,
10084                'SNAPSHOT', pa_cal.CAL_PERIOD_ID)   TIME_ID,
10085         32                                         PERIOD_TYPE_ID,
10086         'P'                                        CALENDAR_TYPE,
10087         acr.WBS_ROLLUP_FLAG,
10088         acr.PRG_ROLLUP_FLAG,
10089         acr.CURR_RECORD_TYPE_ID,
10090         acr.CURRENCY_CODE,
10091         to_number(null)                            REVENUE,
10092         to_number(null)                            INITIAL_FUNDING_AMOUNT,
10093         to_number(null)                            INITIAL_FUNDING_COUNT,
10094         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
10095         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
10096         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
10097         to_number(null)                            CANCELLED_FUNDING_COUNT,
10098         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
10099         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
10100         to_number(null)                            REVENUE_WRITEOFF,
10101         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
10102         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
10103 /*        decode(invert.INVERT_ID,
10104                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
10105                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
10106         decode(invert.INVERT_ID,
10107                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
10108                                   acr.TIME_ID, to_number(null),
10109                                                - acr.AR_INVOICE_COUNT),
10110                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT,  */
10111         decode(invert.INVERT_ID,
10112                'ACTIVITY', to_number(null),
10113                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
10114                                                    AR_CASH_APPLIED_AMOUNT,
10115         decode(invert.INVERT_ID,
10116                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
10117                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
10118         decode(invert.INVERT_ID,
10119                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
10120                                   acr.TIME_ID, to_number(null),
10121                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
10122                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
10123                                                    AR_INVOICE_WRITEOFF_COUNT,
10124         decode(invert.INVERT_ID,
10125                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
10126                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
10127         decode(invert.INVERT_ID,
10128                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
10129                                   acr.TIME_ID, to_number(null),
10130                                                - acr.AR_CREDIT_MEMO_COUNT),
10131                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
10132                                                    AR_CREDIT_MEMO_COUNT,
10133         to_number(null)                            UNBILLED_RECEIVABLES,
10134         to_number(null)                            UNEARNED_REVENUE,
10135         decode(invert.INVERT_ID,
10136                'ACTIVITY', to_number(null),
10137                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
10138                                                    AR_UNAPPR_INVOICE_AMOUNT,
10139         decode(invert.INVERT_ID,
10140                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
10141                                   acr.TIME_ID, to_number(null),
10142                                                - acr.AR_UNAPPR_INVOICE_COUNT),
10143                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
10144                                                    AR_UNAPPR_INVOICE_COUNT,
10145         decode(invert.INVERT_ID,
10146                'ACTIVITY', to_number(null),
10147                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
10148                                                    AR_APPR_INVOICE_AMOUNT,
10149         decode(invert.INVERT_ID,
10150                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
10151                                   acr.TIME_ID, to_number(null),
10152                                                - acr.AR_APPR_INVOICE_COUNT),
10153                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
10154                                                    AR_APPR_INVOICE_COUNT,
10155         decode(invert.INVERT_ID,
10156                'ACTIVITY', to_number(null),
10157                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
10158         decode(invert.INVERT_ID,
10159                'ACTIVITY', to_number(null),
10160                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
10161         decode(invert.INVERT_ID,
10162                'ACTIVITY', to_number(null),
10163                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
10164         decode(invert.INVERT_ID,
10165                'ACTIVITY', to_number(null),
10166                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
10167         to_number(null)                            CUSTOM1,
10168         to_number(null)                            CUSTOM2,
10169         to_number(null)                            CUSTOM3,
10170         to_number(null)                            CUSTOM4,
10171         to_number(null)                            CUSTOM5,
10172         to_number(null)                            CUSTOM6,
10173         to_number(null)                            CUSTOM7,
10174         to_number(null)                            CUSTOM8,
10175         to_number(null)                            CUSTOM9,
10176         to_number(null)                            CUSTOM10,
10177         to_number(null)                            CUSTOM11,
10178         to_number(null)                            CUSTOM12,
10179         to_number(null)                            CUSTOM13,
10180         to_number(null)                            CUSTOM14,
10181         to_number(null)                            CUSTOM15
10182       from
10183         PJI_AC_AGGR_PJP0        pjp0,    -- Re-orderdered the tables for bug 15996434
10184         PJI_AC_XBS_ACCUM_F      acr,
10185         PJI_ORG_EXTR_INFO       info,
10186         PJI_TIME_CAL_PERIOD_V   pa_cal,
10187         PJI_TIME_CAL_RPT_STRUCT cal,
10188         PJI_PJP_PROJ_BATCH_MAP  map,
10189         (
10190           select 'ACTIVITY' INVERT_ID from DUAL union all
10191           select 'SNAPSHOT' INVERT_ID from DUAL
10192         ) invert
10193       where
10194         l_extraction_type                <> 'PARTIAL'                     and
10195         map.WORKER_ID                    =  p_worker_id                   and
10196         acr.PROJECT_ID                   =  map.PROJECT_ID                and
10197         pjp0.WORKER_ID                   =  p_worker_id                   and    -- Bug 6689297
10198         acr.PROJECT_ID                   =  pjp0.PROJECT_ID               and    -- Bug 6689297
10199         acr.WBS_ROLLUP_FLAG              =  'N'                           and
10200         acr.PRG_ROLLUP_FLAG              =  'N'                           and
10201         acr.PROJECT_ORG_ID               =  info.ORG_ID                   and /*5377133 */
10202         acr.CALENDAR_TYPE                =  'P'                           and
10203         cal.REPORT_DATE                  =  trunc(pa_cal.START_DATE, 'J') and
10204         cal.CALENDAR_ID                  =  info.PA_CALENDAR_ID           and
10205         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID            and
10206         cal.TIME_ID                      =  acr.TIME_ID                   and
10207         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID            and
10208         pa_cal.CALENDAR_ID               =  info.PA_CALENDAR_ID           and
10209         sysdate between pa_cal.START_DATE and pa_cal.END_DATE             and
10210         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
10211           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
10212           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
10213           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
10214           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
10215           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
10216           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
10217           abs(nvl(acr.AR_COUNT_DUE,0)) +
10218           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
10219       )
10220     group by
10221       WORKER_ID,
10222       PROJECT_ID,
10223       PROJECT_ORG_ID,
10224       PROJECT_ORGANIZATION_ID,
10225       PROJECT_ELEMENT_ID,
10226       TIME_ID,
10227       PERIOD_TYPE_ID,
10228       CALENDAR_TYPE,
10229       WBS_ROLLUP_FLAG,
10230       PRG_ROLLUP_FLAG,
10231       CURR_RECORD_TYPE_ID,
10232       CURRENCY_CODE
10233     having not
10234       (nvl(sum(REVENUE), 0)                     = 0 and
10235        nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
10236        nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
10237        nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
10238        nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
10239        nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
10240        nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
10241        nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
10242        nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
10243        nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
10244        nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
10245        nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
10246        nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
10247        nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
10248        nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
10249        nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
10250        nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
10251        nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
10252        nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
10253        nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
10254        nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
10255        nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
10256        nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
10257        nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
10258        nvl(sum(AR_COUNT_DUE), 0)                = 0 and
10259        nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
10260        nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
10261        nvl(sum(CUSTOM1), 0)                     = 0 and
10262        nvl(sum(CUSTOM2), 0)                     = 0 and
10263        nvl(sum(CUSTOM3), 0)                     = 0 and
10264        nvl(sum(CUSTOM4), 0)                     = 0 and
10265        nvl(sum(CUSTOM5), 0)                     = 0 and
10266        nvl(sum(CUSTOM6), 0)                     = 0 and
10267        nvl(sum(CUSTOM7), 0)                     = 0 and
10268        nvl(sum(CUSTOM8), 0)                     = 0 and
10269        nvl(sum(CUSTOM9), 0)                     = 0 and
10270        nvl(sum(CUSTOM10), 0)                    = 0 and
10271        nvl(sum(CUSTOM11), 0)                    = 0 and
10272        nvl(sum(CUSTOM12), 0)                    = 0 and
10273        nvl(sum(CUSTOM13), 0)                    = 0 and
10274        nvl(sum(CUSTOM14), 0)                    = 0 and
10275        nvl(sum(CUSTOM15), 0)                    = 0);
10276 end if;
10277 
10278     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_CUST_SLICES(p_worker_id);');
10279 
10280     commit;
10281 
10282   end AGGREGATE_AC_CUST_SLICES;
10283 
10284 
10285   -- -----------------------------------------------------
10286   -- procedure PULL_DANGLING_PLANS
10287   --
10288   --   History
10289   --   19-MAR-2004  SVERMETT  Created
10290   --
10291   -- Internal PJP Summarization API.
10292   --
10293   -- -----------------------------------------------------
10294   procedure PULL_DANGLING_PLANS (p_worker_id in number) is
10295 
10296     l_process         varchar2(30);
10297     l_extraction_type varchar2(30);
10298 
10299     l_return_status   varchar2(255);
10300     l_msg_count       number;
10301     l_msg_data        varchar2(2000);
10302 
10303   begin
10304 
10305     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
10306 
10307     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_DANGLING_PLANS(p_worker_id);')) then
10308       return;
10309     end if;
10310 
10311     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
10312 
10313     IF (l_extraction_type = 'INCREMENTAL') THEN
10314       Pji_Fm_Plan_Maint.CREATE_SECONDARY_PVT;
10315       -- PJI_FM_PLAN_MAINT_PVT.PULL_DANGLING_PLANS; -- Removing redundant api nesting.
10316     END IF;
10317 
10318     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_DANGLING_PLANS(p_worker_id);');
10319 
10320     commit;
10321 
10322   end PULL_DANGLING_PLANS;
10323 
10324 
10325   -- -----------------------------------------------------
10326   -- procedure PULL_PLANS_FOR_PR
10327   --
10328   --   History
10329   --   19-MAR-2004  SVERMETT  Created
10330   --
10331   -- Internal PJP Summarization API.
10332   --
10333   -- -----------------------------------------------------
10334   procedure PULL_PLANS_FOR_PR (p_worker_id in number) is
10335 
10336     l_process         varchar2(30);
10337     l_extraction_type varchar2(30);
10338 
10339     l_return_status   varchar2(255);
10340     l_msg_code        varchar2(255);
10341     l_msg_data        varchar2(2000);
10342 
10343     l_plan_type_id    number;
10344 
10345   begin
10346 
10347     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
10348 
10349     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_PR(p_worker_id);')) then
10350       return;
10351     end if;
10352 
10353     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
10354 
10355     if (l_extraction_type = 'PARTIAL') then
10356 
10357       l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
10358                         (l_process, 'PLAN_TYPE_ID');
10359 
10360       if (l_plan_type_id = -1) then
10361         l_plan_type_id := null;
10362       end if;
10363 
10364       PJI_FM_PLAN_MAINT.PULL_PLANS_FOR_PR(null,
10365                                           l_plan_type_id,
10366                                           'PLANTYPE',
10367                                           l_return_status,
10368                                           l_msg_code);
10369 
10370     end if;
10371 
10372     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_PR(p_worker_id);');
10373 
10374     commit;
10375 
10376   end PULL_PLANS_FOR_PR;
10377 
10378 
10379   -- -----------------------------------------------------
10380   -- procedure PULL_PLANS_FOR_RBS
10381   --
10382   --   History
10383   --   19-MAR-2004  SVERMETT  Created
10384   --
10385   -- Internal PJP Summarization API.
10386   --
10387   -- Called by RBS program
10388   --
10389   -- -----------------------------------------------------
10390   procedure PULL_PLANS_FOR_RBS (p_worker_id in number) is
10391 
10392     l_process         varchar2(30);
10393     l_extraction_type varchar2(30);
10394 
10395     l_return_status   varchar2(255);
10396     l_msg_code        varchar2(255);
10397     l_msg_data        varchar2(2000);
10398 
10399     l_rbs_version_id  number;
10400 
10401   begin
10402 
10403     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
10404 
10405     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_RBS(p_worker_id);')) then
10406       return;
10407     end if;
10408 
10409     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
10410 
10411     if (l_extraction_type = 'RBS') then
10412 
10413       l_rbs_version_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
10414                           (l_process, 'RBS_VERSION_ID');
10415 
10416       PJI_FM_PLAN_MAINT.PULL_PLANS_FOR_PR(l_rbs_version_id,
10417                                           null,
10418                                           'RBS',
10419                                           l_return_status,
10420                                           l_msg_code);
10421 
10422     end if;
10423 
10424     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_RBS(p_worker_id);');
10425 
10426     commit;
10427 
10428   end PULL_PLANS_FOR_RBS;
10429 
10430 
10431   -- -----------------------------------------------------
10432   -- procedure ROLLUP_FPR_RBS_TOP
10433   --
10434   --   History
10435   --   19-MAR-2004  SVERMETT  Created
10436   --
10437   -- Internal PJP Summarization API.
10438   --
10439   -- -----------------------------------------------------
10440   procedure ROLLUP_FPR_RBS_TOP (p_worker_id in number) is
10441 
10442     l_process varchar2(30);
10443     l_extraction_type varchar2(30);
10444 
10445   begin
10446 
10447     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
10448 
10449     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_TOP(p_worker_id);')) then
10450       return;
10451     end if;
10452 
10453     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
10454 
10455     insert /*+ parallel(pjp1_i) */  into PJI_FP_AGGR_PJP1 pjp1_i /* Added for bug 13030627 */
10456     (
10457       WORKER_ID,
10458       RECORD_TYPE,
10459       PRG_LEVEL,
10460       LINE_TYPE,
10461       PROJECT_ID,
10462       PROJECT_ORG_ID,
10463       PROJECT_ORGANIZATION_ID,
10464       PROJECT_ELEMENT_ID,
10465       TIME_ID,
10466       PERIOD_TYPE_ID,
10467       CALENDAR_TYPE,
10468       RBS_AGGR_LEVEL,
10469       WBS_ROLLUP_FLAG,
10470       PRG_ROLLUP_FLAG,
10471       CURR_RECORD_TYPE_ID,
10472       CURRENCY_CODE,
10473       RBS_ELEMENT_ID,
10474       RBS_VERSION_ID,
10475       PLAN_VERSION_ID,
10476       PLAN_TYPE_ID,
10477       PLAN_TYPE_CODE,
10478       RAW_COST,
10479       BRDN_COST,
10480       REVENUE,
10481       BILL_RAW_COST,
10482       BILL_BRDN_COST,
10483       BILL_LABOR_RAW_COST,
10484       BILL_LABOR_BRDN_COST,
10485       BILL_LABOR_HRS,
10486       EQUIPMENT_RAW_COST,
10487       EQUIPMENT_BRDN_COST,
10488       CAPITALIZABLE_RAW_COST,
10489       CAPITALIZABLE_BRDN_COST,
10490       LABOR_RAW_COST,
10491       LABOR_BRDN_COST,
10492       LABOR_HRS,
10493       LABOR_REVENUE,
10494       EQUIPMENT_HOURS,
10495       BILLABLE_EQUIPMENT_HOURS,
10496       SUP_INV_COMMITTED_COST,
10497       PO_COMMITTED_COST,
10498       PR_COMMITTED_COST,
10499       OTH_COMMITTED_COST,
10500       ACT_LABOR_HRS,
10501       ACT_EQUIP_HRS,
10502       ACT_LABOR_BRDN_COST,
10503       ACT_EQUIP_BRDN_COST,
10504       ACT_BRDN_COST,
10505       ACT_RAW_COST,
10506       ACT_REVENUE,
10507       ACT_LABOR_RAW_COST,
10508       ACT_EQUIP_RAW_COST,
10509       ETC_LABOR_HRS,
10510       ETC_EQUIP_HRS,
10511       ETC_LABOR_BRDN_COST,
10512       ETC_EQUIP_BRDN_COST,
10513       ETC_BRDN_COST,
10514       ETC_RAW_COST,
10515       ETC_LABOR_RAW_COST,
10516       ETC_EQUIP_RAW_COST,
10517       CUSTOM1,
10518       CUSTOM2,
10519       CUSTOM3,
10520       CUSTOM4,
10521       CUSTOM5,
10522       CUSTOM6,
10523       CUSTOM7,
10524       CUSTOM8,
10525       CUSTOM9,
10526       CUSTOM10,
10527       CUSTOM11,
10528       CUSTOM12,
10529       CUSTOM13,
10530       CUSTOM14,
10531       CUSTOM15
10532     )
10533     select
10534       p_worker_id                                     WORKER_ID,
10535       null                                            RECORD_TYPE,
10536       pjp1.PRG_LEVEL,
10537       pjp1.LINE_TYPE,
10538       pjp1.PROJECT_ID,
10539       pjp1.PROJECT_ORG_ID,
10540       pjp1.PROJECT_ORGANIZATION_ID,
10541       pjp1.PROJECT_ELEMENT_ID,
10542       pjp1.TIME_ID,
10543       pjp1.PERIOD_TYPE_ID,
10544       pjp1.CALENDAR_TYPE,
10545       pjp1.RBS_AGGR_LEVEL,
10546       pjp1.WBS_ROLLUP_FLAG,
10547       pjp1.PRG_ROLLUP_FLAG,
10548       pjp1.CURR_RECORD_TYPE_ID,
10549       pjp1.CURRENCY_CODE,
10550       pjp1.RBS_ELEMENT_ID,
10551       pjp1.RBS_VERSION_ID,
10552       pjp1.PLAN_VERSION_ID,
10553       pjp1.PLAN_TYPE_ID,
10554       pjp1.PLAN_TYPE_CODE,
10555       sum(pjp1.RAW_COST)                              RAW_COST,
10556       sum(pjp1.BRDN_COST)                             BRDN_COST,
10557       sum(pjp1.REVENUE)                               REVENUE,
10558       sum(pjp1.BILL_RAW_COST)                         BILL_RAW_COST,
10559       sum(pjp1.BILL_BRDN_COST)                        BILL_BRDN_COST,
10560       sum(pjp1.BILL_LABOR_RAW_COST)                   BILL_LABOR_RAW_COST,
10561       sum(pjp1.BILL_LABOR_BRDN_COST)                  BILL_LABOR_BRDN_COST,
10562       sum(pjp1.BILL_LABOR_HRS)                        BILL_LABOR_HRS,
10563       sum(pjp1.EQUIPMENT_RAW_COST)                    EQUIPMENT_RAW_COST,
10564       sum(pjp1.EQUIPMENT_BRDN_COST)                   EQUIPMENT_BRDN_COST,
10565       sum(pjp1.CAPITALIZABLE_RAW_COST)                CAPITALIZABLE_RAW_COST,
10566       sum(pjp1.CAPITALIZABLE_BRDN_COST)               CAPITALIZABLE_BRDN_COST,
10567       sum(pjp1.LABOR_RAW_COST)                        LABOR_RAW_COST,
10568       sum(pjp1.LABOR_BRDN_COST)                       LABOR_BRDN_COST,
10569       sum(pjp1.LABOR_HRS)                             LABOR_HRS,
10570       sum(pjp1.LABOR_REVENUE)                         LABOR_REVENUE,
10571       sum(pjp1.EQUIPMENT_HOURS)                       EQUIPMENT_HOURS,
10572       sum(pjp1.BILLABLE_EQUIPMENT_HOURS)              BILLABLE_EQUIPMENT_HOURS,
10573       sum(pjp1.SUP_INV_COMMITTED_COST)                SUP_INV_COMMITTED_COST,
10574       sum(pjp1.PO_COMMITTED_COST)                     PO_COMMITTED_COST,
10575       sum(pjp1.PR_COMMITTED_COST)                     PR_COMMITTED_COST,
10576       sum(pjp1.OTH_COMMITTED_COST)                    OTH_COMMITTED_COST,
10577       sum(pjp1.ACT_LABOR_HRS)                         ACT_LABOR_HRS,
10578       sum(pjp1.ACT_EQUIP_HRS)                         ACT_EQUIP_HRS,
10579       sum(pjp1.ACT_LABOR_BRDN_COST)                   ACT_LABOR_BRDN_COST,
10580       sum(pjp1.ACT_EQUIP_BRDN_COST)                   ACT_EQUIP_BRDN_COST,
10581       sum(pjp1.ACT_BRDN_COST)                         ACT_BRDN_COST,
10582       sum(pjp1.ACT_RAW_COST)                          ACT_RAW_COST,
10583       sum(pjp1.ACT_REVENUE)                           ACT_REVENUE,
10584       sum(pjp1.ACT_LABOR_RAW_COST)                    ACT_LABOR_RAW_COST,
10585       sum(pjp1.ACT_EQUIP_RAW_COST)                    ACT_EQUIP_RAW_COST,
10586       sum(pjp1.ETC_LABOR_HRS)                         ETC_LABOR_HRS,
10587       sum(pjp1.ETC_EQUIP_HRS)                         ETC_EQUIP_HRS,
10588       sum(pjp1.ETC_LABOR_BRDN_COST)                   ETC_LABOR_BRDN_COST,
10589       sum(pjp1.ETC_EQUIP_BRDN_COST)                   ETC_EQUIP_BRDN_COST,
10590       sum(pjp1.ETC_BRDN_COST)                         ETC_BRDN_COST,
10591       sum(pjp1.ETC_RAW_COST)                          ETC_RAW_COST,
10592       sum(pjp1.ETC_LABOR_RAW_COST)                    ETC_LABOR_RAW_COST,
10593       sum(pjp1.ETC_EQUIP_RAW_COST)                    ETC_EQUIP_RAW_COST,
10594       sum(pjp1.CUSTOM1)                               CUSTOM1,
10595       sum(pjp1.CUSTOM2)                               CUSTOM2,
10596       sum(pjp1.CUSTOM3)                               CUSTOM3,
10597       sum(pjp1.CUSTOM4)                               CUSTOM4,
10598       sum(pjp1.CUSTOM5)                               CUSTOM5,
10599       sum(pjp1.CUSTOM6)                               CUSTOM6,
10600       sum(pjp1.CUSTOM7)                               CUSTOM7,
10601       sum(pjp1.CUSTOM8)                               CUSTOM8,
10602       sum(pjp1.CUSTOM9)                               CUSTOM9,
10603       sum(pjp1.CUSTOM10)                              CUSTOM10,
10604       sum(pjp1.CUSTOM11)                              CUSTOM11,
10605       sum(pjp1.CUSTOM12)                              CUSTOM12,
10606       sum(pjp1.CUSTOM13)                              CUSTOM13,
10607       sum(pjp1.CUSTOM14)                              CUSTOM14,
10608       sum(pjp1.CUSTOM15)                              CUSTOM15
10609     from
10610       (
10611       select
10612         pjp1.PRG_LEVEL,
10613         pjp1.LINE_TYPE,
10614         pjp1.PROJECT_ID,
10615         pjp1.PROJECT_ORG_ID,
10616         pjp1.PROJECT_ORGANIZATION_ID,
10617         pjp1.PROJECT_ELEMENT_ID,
10618         pjp1.TIME_ID,
10619         pjp1.PERIOD_TYPE_ID,
10620         pjp1.CALENDAR_TYPE,
10621         'T'                                           RBS_AGGR_LEVEL,
10622         pjp1.WBS_ROLLUP_FLAG,
10623         pjp1.PRG_ROLLUP_FLAG,
10624         pjp1.CURR_RECORD_TYPE_ID,
10625         pjp1.CURRENCY_CODE,
10626         pjp1.RBS_ELEMENT_ID,
10627         -1                                            RBS_VERSION_ID,
10628         pjp1.PLAN_VERSION_ID,
10629         pjp1.PLAN_TYPE_ID,
10630         pjp1.PLAN_TYPE_CODE,
10631         max(pjp1.RAW_COST)                            RAW_COST,
10632         max(pjp1.BRDN_COST)                           BRDN_COST,
10633         max(pjp1.REVENUE)                             REVENUE,
10634         max(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
10635         max(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
10636         max(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
10637         max(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
10638         max(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
10639         max(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
10640         max(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
10641         max(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
10642         max(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
10643         max(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
10644         max(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
10645         max(pjp1.LABOR_HRS)                           LABOR_HRS,
10646         max(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
10647         max(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
10648         max(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
10649         max(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
10650         max(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
10651         max(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
10652         max(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
10653         max(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
10654         max(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
10655         max(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
10656         max(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
10657         max(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
10658         max(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
10659         max(pjp1.ACT_REVENUE)                         ACT_REVENUE,
10660         max(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
10661         max(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
10662         max(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
10663         max(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
10664         max(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
10665         max(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
10666         max(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
10667         max(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
10668         max(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
10669         max(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
10670         max(pjp1.CUSTOM1)                             CUSTOM1,
10671         max(pjp1.CUSTOM2)                             CUSTOM2,
10672         max(pjp1.CUSTOM3)                             CUSTOM3,
10673         max(pjp1.CUSTOM4)                             CUSTOM4,
10674         max(pjp1.CUSTOM5)                             CUSTOM5,
10675         max(pjp1.CUSTOM6)                             CUSTOM6,
10676         max(pjp1.CUSTOM7)                             CUSTOM7,
10677         max(pjp1.CUSTOM8)                             CUSTOM8,
10678         max(pjp1.CUSTOM9)                             CUSTOM9,
10679         max(pjp1.CUSTOM10)                            CUSTOM10,
10680         max(pjp1.CUSTOM11)                            CUSTOM11,
10681         max(pjp1.CUSTOM12)                            CUSTOM12,
10682         max(pjp1.CUSTOM13)                            CUSTOM13,
10683         max(pjp1.CUSTOM14)                            CUSTOM14,
10684         max(pjp1.CUSTOM15)                            CUSTOM15
10685       from
10686         (
10687         /* Modified for bug 16022598 starts*/
10688         select /*+ parallel(pjp1) */ /* Added for bug 13030627 */
10689           pjp1.PRG_LEVEL,
10690           pjp1.LINE_TYPE,
10691           pjp1.PROJECT_ID,
10692           pjp1.PROJECT_ORG_ID,
10693           pjp1.PROJECT_ORGANIZATION_ID,
10694           pjp1.PROJECT_ELEMENT_ID,
10695           pjp1.TIME_ID,
10696           pjp1.PERIOD_TYPE_ID,
10697           pjp1.CALENDAR_TYPE,
10698           pjp1.WBS_ROLLUP_FLAG,
10699           pjp1.PRG_ROLLUP_FLAG,
10700           pjp1.CURR_RECORD_TYPE_ID,
10701           pjp1.CURRENCY_CODE,
10702           -1                                          RBS_ELEMENT_ID,
10703           pjp1.RBS_VERSION_ID,
10704           pjp1.PLAN_VERSION_ID,
10705           pjp1.PLAN_TYPE_ID,
10706           pjp1.PLAN_TYPE_CODE,
10707           sum(pjp1.RAW_COST)                          RAW_COST,
10708           sum(pjp1.BRDN_COST)                         BRDN_COST,
10709           sum(pjp1.REVENUE)                           REVENUE,
10710           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
10711           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
10712           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
10713           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
10714           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
10715           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
10716           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
10717           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
10718           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
10719           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
10720           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
10721           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
10722           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
10723           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
10724           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
10725           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
10726           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
10727           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
10728           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
10729           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
10730           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
10731           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
10732           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
10733           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
10734           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
10735           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
10736           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
10737           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
10738           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
10739           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
10740           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
10741           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
10742           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
10743           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
10744           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
10745           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
10746           sum(pjp1.CUSTOM1)                           CUSTOM1,
10747           sum(pjp1.CUSTOM2)                           CUSTOM2,
10748           sum(pjp1.CUSTOM3)                           CUSTOM3,
10749           sum(pjp1.CUSTOM4)                           CUSTOM4,
10750           sum(pjp1.CUSTOM5)                           CUSTOM5,
10751           sum(pjp1.CUSTOM6)                           CUSTOM6,
10752           sum(pjp1.CUSTOM7)                           CUSTOM7,
10753           sum(pjp1.CUSTOM8)                           CUSTOM8,
10754           sum(pjp1.CUSTOM9)                           CUSTOM9,
10755           sum(pjp1.CUSTOM10)                          CUSTOM10,
10756           sum(pjp1.CUSTOM11)                          CUSTOM11,
10757           sum(pjp1.CUSTOM12)                          CUSTOM12,
10758           sum(pjp1.CUSTOM13)                          CUSTOM13,
10759           sum(pjp1.CUSTOM14)                          CUSTOM14,
10760           sum(pjp1.CUSTOM15)                          CUSTOM15
10761         from
10762           PJI_FP_AGGR_PJP1 pjp1,
10763           (
10764           select
10765             distinct
10766             to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
10767             to_number(log.ATTRIBUTE1)            PROJECT_ID
10768           from
10769             PJI_PA_PROJ_EVENTS_LOG log
10770           where
10771             log.WORKER_ID = p_worker_id and
10772             log.EVENT_TYPE = 'RBS_ASSOC'
10773           ) log
10774         where
10775           pjp1.WORKER_ID      = p_worker_id            and
10776           pjp1.plan_type_id    = -1                    and  -- Added to pull the actuals data
10777           pjp1.plan_version_id = -1                    and
10778           pjp1.rbs_version_id  = -1                    and
10779           pjp1.PROJECT_ID     = log.PROJECT_ID     (+) and
10780           pjp1.RBS_VERSION_ID = log.RBS_VERSION_ID (+) and
10781           log.PROJECT_ID      is null
10782         group by
10783           pjp1.PRG_LEVEL,
10784           pjp1.LINE_TYPE,
10785           pjp1.PROJECT_ID,
10786           pjp1.PROJECT_ORG_ID,
10787           pjp1.PROJECT_ORGANIZATION_ID,
10788           pjp1.PROJECT_ELEMENT_ID,
10789           pjp1.TIME_ID,
10790           pjp1.PERIOD_TYPE_ID,
10791           pjp1.CALENDAR_TYPE,
10792           pjp1.WBS_ROLLUP_FLAG,
10793           pjp1.PRG_ROLLUP_FLAG,
10794           pjp1.CURR_RECORD_TYPE_ID,
10795           pjp1.CURRENCY_CODE,
10796           pjp1.RBS_VERSION_ID,
10797           pjp1.PLAN_VERSION_ID,
10798           pjp1.PLAN_TYPE_ID,
10799           pjp1.PLAN_TYPE_CODE
10800         UNION ALL
10801         select /*+ parallel(pjp1) */ /* Added for bug 13030627 */
10802           pjp1.PRG_LEVEL,
10803           pjp1.LINE_TYPE,
10804           pjp1.PROJECT_ID,
10805           pjp1.PROJECT_ORG_ID,
10806           pjp1.PROJECT_ORGANIZATION_ID,
10807           pjp1.PROJECT_ELEMENT_ID,
10808           pjp1.TIME_ID,
10809           pjp1.PERIOD_TYPE_ID,
10810           pjp1.CALENDAR_TYPE,
10811           pjp1.WBS_ROLLUP_FLAG,
10812           pjp1.PRG_ROLLUP_FLAG,
10813           pjp1.CURR_RECORD_TYPE_ID,
10814           pjp1.CURRENCY_CODE,
10815           -1                                          RBS_ELEMENT_ID,
10816           pjp1.RBS_VERSION_ID,
10817           pjp1.PLAN_VERSION_ID,
10818           pjp1.PLAN_TYPE_ID,
10819           pjp1.PLAN_TYPE_CODE,
10820           sum(pjp1.RAW_COST)                          RAW_COST,
10821           sum(pjp1.BRDN_COST)                         BRDN_COST,
10822           sum(pjp1.REVENUE)                           REVENUE,
10823           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
10824           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
10825           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
10826           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
10827           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
10828           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
10829           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
10830           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
10831           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
10832           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
10833           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
10834           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
10835           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
10836           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
10837           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
10838           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
10839           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
10840           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
10841           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
10842           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
10843           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
10844           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
10845           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
10846           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
10847           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
10848           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
10849           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
10850           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
10851           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
10852           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
10853           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
10854           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
10855           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
10856           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
10857           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
10858           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
10859           sum(pjp1.CUSTOM1)                           CUSTOM1,
10860           sum(pjp1.CUSTOM2)                           CUSTOM2,
10861           sum(pjp1.CUSTOM3)                           CUSTOM3,
10862           sum(pjp1.CUSTOM4)                           CUSTOM4,
10863           sum(pjp1.CUSTOM5)                           CUSTOM5,
10864           sum(pjp1.CUSTOM6)                           CUSTOM6,
10865           sum(pjp1.CUSTOM7)                           CUSTOM7,
10866           sum(pjp1.CUSTOM8)                           CUSTOM8,
10867           sum(pjp1.CUSTOM9)                           CUSTOM9,
10868           sum(pjp1.CUSTOM10)                          CUSTOM10,
10869           sum(pjp1.CUSTOM11)                          CUSTOM11,
10870           sum(pjp1.CUSTOM12)                          CUSTOM12,
10871           sum(pjp1.CUSTOM13)                          CUSTOM13,
10872           sum(pjp1.CUSTOM14)                          CUSTOM14,
10873           sum(pjp1.CUSTOM15)                          CUSTOM15
10874         from
10875           PJI_FP_AGGR_PJP1 pjp1,
10876 	  PJI_FM_EXTR_PLNVER4 ver,
10877           (
10878           select
10879             distinct
10880             to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
10881             to_number(log.ATTRIBUTE1)            PROJECT_ID
10882           from
10883             PJI_PA_PROJ_EVENTS_LOG log
10884           where
10885             log.WORKER_ID = p_worker_id and
10886             log.EVENT_TYPE = 'RBS_ASSOC'
10887           ) log
10888         where
10889           pjp1.WORKER_ID      = p_worker_id            and
10890           ver.WORKER_ID       = p_worker_id            and  -- Added to pull the primary rbs specific data
10891           ver.project_id      = pjp1.project_id        and
10892           ver.plan_version_id = pjp1.plan_version_id   and
10893           ver.plan_type_id    = pjp1.plan_type_id      and
10894           ver.secondary_rbs_flag  = 'N'                and
10895           nvl(ver.rbs_struct_version_id,-1) = pjp1.rbs_version_id and
10896           pjp1.PROJECT_ID     = log.PROJECT_ID     (+) and
10897           pjp1.RBS_VERSION_ID = log.RBS_VERSION_ID (+) and
10898           log.PROJECT_ID      is null
10899         group by
10900           pjp1.PRG_LEVEL,
10901           pjp1.LINE_TYPE,
10902           pjp1.PROJECT_ID,
10903           pjp1.PROJECT_ORG_ID,
10904           pjp1.PROJECT_ORGANIZATION_ID,
10905           pjp1.PROJECT_ELEMENT_ID,
10906           pjp1.TIME_ID,
10907           pjp1.PERIOD_TYPE_ID,
10908           pjp1.CALENDAR_TYPE,
10909           pjp1.WBS_ROLLUP_FLAG,
10910           pjp1.PRG_ROLLUP_FLAG,
10911           pjp1.CURR_RECORD_TYPE_ID,
10912           pjp1.CURRENCY_CODE,
10913           pjp1.RBS_VERSION_ID,
10914           pjp1.PLAN_VERSION_ID,
10915           pjp1.PLAN_TYPE_ID,
10916           pjp1.PLAN_TYPE_CODE
10917       /* Modified for bug 16022598 ends*/
10918       ) pjp1
10919       group by
10920         pjp1.PRG_LEVEL,
10921         pjp1.LINE_TYPE,
10922         pjp1.PROJECT_ID,
10923         pjp1.PROJECT_ORG_ID,
10924         pjp1.PROJECT_ORGANIZATION_ID,
10925         pjp1.PROJECT_ELEMENT_ID,
10926         pjp1.TIME_ID,
10927         pjp1.PERIOD_TYPE_ID,
10928         pjp1.CALENDAR_TYPE,
10929         pjp1.WBS_ROLLUP_FLAG,
10930         pjp1.PRG_ROLLUP_FLAG,
10931         pjp1.CURR_RECORD_TYPE_ID,
10932         pjp1.CURRENCY_CODE,
10933         pjp1.RBS_ELEMENT_ID,
10934         pjp1.PLAN_VERSION_ID,
10935         pjp1.PLAN_TYPE_ID,
10936         pjp1.PLAN_TYPE_CODE
10937       ) pjp1
10938     group by
10939       pjp1.PRG_LEVEL,
10940       pjp1.LINE_TYPE,
10941       pjp1.PROJECT_ID,
10942       pjp1.PROJECT_ORG_ID,
10943       pjp1.PROJECT_ORGANIZATION_ID,
10944       pjp1.PROJECT_ELEMENT_ID,
10945       pjp1.TIME_ID,
10946       pjp1.PERIOD_TYPE_ID,
10947       pjp1.CALENDAR_TYPE,
10948       pjp1.RBS_AGGR_LEVEL,
10949       pjp1.WBS_ROLLUP_FLAG,
10950       pjp1.PRG_ROLLUP_FLAG,
10951       pjp1.CURR_RECORD_TYPE_ID,
10952       pjp1.CURRENCY_CODE,
10953       pjp1.RBS_ELEMENT_ID,
10954       pjp1.RBS_VERSION_ID,
10955       pjp1.PLAN_VERSION_ID,
10956       pjp1.PLAN_TYPE_ID,
10957       pjp1.PLAN_TYPE_CODE;
10958 
10959     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_TOP(p_worker_id);');
10960 
10961     commit;
10962 
10963   end ROLLUP_FPR_RBS_TOP;
10964 
10965 
10966   -- -----------------------------------------------------
10967   -- procedure ROLLUP_FPR_WBS
10968   --
10969   --   History
10970   --   19-MAR-2004  SVERMETT  Created
10971   --
10972   -- This API will be called for both online and bulk processing.
10973   --
10974   -- -----------------------------------------------------
10975   procedure ROLLUP_FPR_WBS (p_worker_id in number default null) is
10976 
10977     l_process         varchar2(30);
10978     l_extraction_type varchar2(30);
10979     l_fpm_upgrade     varchar2(30);
10980     l_max_level       number;
10981     l_level           number;
10982     l_step_seq        number;
10983     l_level_seq       number;
10984     l_count           number;
10985     l_partial_mode    varchar2(30);
10986 	l_worker_id       number;  /* Added for bug 13030627 */
10987 
10988   begin
10989 
10990     if (p_worker_id is not null) then
10991 
10992 	   /* Added for bug 13030627 */
10993        l_worker_id := p_worker_id;
10994         if PJI_UTILS.GET_PARAMETER('PJP_SIN_PRG') = 'Y' then
10995 
10996            PJI_PJP_PRG_PERF_ALL.ROLLUP_FPR_WBS(
10997            p_worker_id  => l_worker_id);
10998 
10999         else
11000        /* Added for bug 13030627 */
11001 
11002       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
11003 
11004       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);')) then
11005         return;
11006       end if;
11007 
11008       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
11009 
11010       l_fpm_upgrade := nvl(PJI_UTILS.GET_PARAMETER('PJI_FPM_UPGRADE'), 'C');
11011 
11012       select decode(l_extraction_type,'PARTIAL','PARTIAL',NULL)
11013       into l_partial_mode
11014       from dual;
11015 
11016       -- allow recovery after each level is processed
11017 
11018       select
11019         STEP_SEQ
11020       into
11021         l_step_seq
11022       from
11023         PJI_SYSTEM_PRC_STATUS
11024       where
11025         PROCESS_NAME = l_process and
11026         STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);';
11027 
11028       select
11029         count(*)
11030       into
11031         l_count
11032       from
11033         PJI_SYSTEM_PRC_STATUS
11034       where
11035         PROCESS_NAME = l_process and
11036         STEP_NAME like 'ROLLUP_FPR_WBS%';
11037 
11038       if (l_count = 0) then
11039 
11040         select /*+ ordered index(den PJI_XBS_DENORM_N3) use_hash(den) */    /* Modified for Bug 7669026 */
11041           nvl(max(den.SUP_LEVEL), 0)
11042         into
11043           l_level
11044         from
11045           PJI_PJP_PROJ_BATCH_MAP map,
11046           PJI_XBS_DENORM den
11047         where
11048           map.WORKER_ID      = p_worker_id    and
11049           den.STRUCT_TYPE    = 'PRG'          and
11050           den.SUB_LEVEL      = den.SUP_LEVEL  and
11051           den.SUP_PROJECT_ID = map.PROJECT_ID;
11052 
11053         PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
11054                                                'MAX_PROGRAM_LEVEL',
11055                                                l_level);
11056 
11057         for x in 1 .. l_level loop
11058 
11059           insert into PJI_SYSTEM_PRC_STATUS
11060           (
11061             PROCESS_NAME,
11062             STEP_SEQ,
11063             STEP_STATUS,
11064             STEP_NAME,
11065             START_DATE,
11066             END_DATE
11067           )
11068           select
11069             l_process                                             PROCESS_NAME,
11070             to_char(l_step_seq + x / 1000)                        STEP_SEQ,
11071             null                                                  STEP_STATUS,
11072             'ROLLUP_FPR_WBS - level ' || to_char(l_level - x + 1) STEP_NAME,
11073             null                                                  START_DATE,
11074             null                                                  END_DATE
11075           from
11076             DUAL;
11077 
11078         end loop;
11079 
11080       end if;
11081 
11082       l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
11083                      (l_process, 'MAX_PROGRAM_LEVEL');
11084 
11085       select
11086         nvl(to_number(min(STEP_SEQ)), 0)
11087       into
11088         l_level_seq
11089       from
11090         PJI_SYSTEM_PRC_STATUS
11091       where
11092         PROCESS_NAME = l_process and
11093         STEP_NAME like 'ROLLUP_FPR_WBS%' and
11094         STEP_STATUS is null;
11095 
11096       if (l_level_seq = 0) then
11097         l_level := 0;
11098       else
11099         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
11100       end if;
11101 
11102 
11103  -- Begin Bug# 9904361
11104      if ( l_extraction_type  not in ( 'FULL','RBS') ) then
11105 
11106       ROLLUP_FPR_WBS_PARTIAL
11107        (   p_worker_id  ,
11108            l_process   ,
11109            l_extraction_type ,
11110            l_fpm_upgrade    ,
11111            l_max_level     ,
11112            l_level        ,
11113            l_step_seq    ,
11114            l_level_seq  ,
11115            l_count     ,
11116            l_partial_mode
11117        ) ;
11118 
11119     else
11120 
11121     ROLLUP_FPR_WBS_FULL
11122        (   p_worker_id  ,
11123            l_process   ,
11124            l_extraction_type ,
11125            l_fpm_upgrade    ,
11126            l_max_level     ,
11127            l_level        ,
11128            l_step_seq    ,
11129            l_level_seq  ,
11130            l_count     ,
11131            l_partial_mode
11132        ) ;
11133 
11134 
11135 
11136     end if;
11137  -- End Bug# 9904361
11138 
11139       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);');
11140 
11141       commit;
11142 
11143         end if;    /* Added for bug 13030627 */
11144 
11145     else -- online mode
11146 
11147       -- rollup just WBS for online processing
11148 
11149       select /*+ ordered use_nl(den) */ -- bug 7607077 asahoo - removed index hint
11150         nvl(max(den.SUP_LEVEL), 0)
11151       into
11152         l_level
11153       from
11154         PJI_FM_EXTR_PLNVER3_T ver3,
11155         PJI_XBS_DENORM den
11156       where
11157         den.STRUCT_TYPE    = 'PRG'          and
11158         den.SUB_LEVEL      = den.SUP_LEVEL  and
11159         den.SUP_PROJECT_ID = ver3.PROJECT_ID;
11160 
11161       while (l_level > 0) loop
11162 
11163         -- rollup project hiearchy
11164 
11165         insert into PJI_FP_AGGR_PJP1_T
11166         (
11167           WORKER_ID,
11168           RECORD_TYPE,
11169           PRG_LEVEL,
11170           LINE_TYPE,
11171           PROJECT_ID,
11172           PROJECT_ORG_ID,
11173           PROJECT_ORGANIZATION_ID,
11174           PROJECT_ELEMENT_ID,
11175           TIME_ID,
11176           PERIOD_TYPE_ID,
11177           CALENDAR_TYPE,
11178           RBS_AGGR_LEVEL,
11179           WBS_ROLLUP_FLAG,
11180           PRG_ROLLUP_FLAG,
11181           CURR_RECORD_TYPE_ID,
11182           CURRENCY_CODE,
11183           RBS_ELEMENT_ID,
11184           RBS_VERSION_ID,
11185           PLAN_VERSION_ID,
11186           PLAN_TYPE_ID,
11187           PLAN_TYPE_CODE,
11188           RAW_COST,
11189           BRDN_COST,
11190           REVENUE,
11191           BILL_RAW_COST,
11192           BILL_BRDN_COST,
11193           BILL_LABOR_RAW_COST,
11194           BILL_LABOR_BRDN_COST,
11195           BILL_LABOR_HRS,
11196           EQUIPMENT_RAW_COST,
11197           EQUIPMENT_BRDN_COST,
11198           CAPITALIZABLE_RAW_COST,
11199           CAPITALIZABLE_BRDN_COST,
11200           LABOR_RAW_COST,
11201           LABOR_BRDN_COST,
11202           LABOR_HRS,
11203           LABOR_REVENUE,
11204           EQUIPMENT_HOURS,
11205           BILLABLE_EQUIPMENT_HOURS,
11206           SUP_INV_COMMITTED_COST,
11207           PO_COMMITTED_COST,
11208           PR_COMMITTED_COST,
11209           OTH_COMMITTED_COST,
11210           ACT_LABOR_HRS,
11211           ACT_EQUIP_HRS,
11212           ACT_LABOR_BRDN_COST,
11213           ACT_EQUIP_BRDN_COST,
11214           ACT_BRDN_COST,
11215           ACT_RAW_COST,
11216           ACT_REVENUE,
11217           ACT_LABOR_RAW_COST,
11218           ACT_EQUIP_RAW_COST,
11219           ETC_LABOR_HRS,
11220           ETC_EQUIP_HRS,
11221           ETC_LABOR_BRDN_COST,
11222           ETC_EQUIP_BRDN_COST,
11223           ETC_BRDN_COST,
11224           ETC_RAW_COST,
11225           ETC_LABOR_RAW_COST,
11226           ETC_EQUIP_RAW_COST,
11227           CUSTOM1,
11228           CUSTOM2,
11229           CUSTOM3,
11230           CUSTOM4,
11231           CUSTOM5,
11232           CUSTOM6,
11233           CUSTOM7,
11234           CUSTOM8,
11235           CUSTOM9,
11236           CUSTOM10,
11237           CUSTOM11,
11238           CUSTOM12,
11239           CUSTOM13,
11240           CUSTOM14,
11241           CUSTOM15
11242         )
11243         select
11244           pjp1_i.WORKER_ID,
11245           pjp1_i.RECORD_TYPE,
11246           pjp1_i.PRG_LEVEL,
11247           pjp1_i.LINE_TYPE,
11248           pjp1_i.PROJECT_ID,
11249           pjp1_i.PROJECT_ORG_ID,
11250           pjp1_i.PROJECT_ORGANIZATION_ID,
11251           pjp1_i.PROJECT_ELEMENT_ID,
11252           pjp1_i.TIME_ID,
11253           pjp1_i.PERIOD_TYPE_ID,
11254           pjp1_i.CALENDAR_TYPE,
11255           pjp1_i.RBS_AGGR_LEVEL,
11256           pjp1_i.WBS_ROLLUP_FLAG,
11257           pjp1_i.PRG_ROLLUP_FLAG,
11258           pjp1_i.CURR_RECORD_TYPE_ID,
11259           pjp1_i.CURRENCY_CODE,
11260           pjp1_i.RBS_ELEMENT_ID,
11261           pjp1_i.RBS_VERSION_ID,
11262           pjp1_i.PLAN_VERSION_ID,
11263           pjp1_i.PLAN_TYPE_ID,
11264           pjp1_i.PLAN_TYPE_CODE,
11265           decode(pjp1_i.RELATIONSHIP_TYPE
11266                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11267                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11268                    || '_' || pjp1_i.SUB_STATUS_CODE
11269                    || '_' || pjp1_i.SUP_STATUS_CODE,
11270                  'LW_N_Y__', to_number(null),
11271                  decode(pjp1_i.RELATIONSHIP_TYPE
11272                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11273                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11274                           || '_' || pjp1_i.SUP_VER_ENABLED,
11275                         'LW_N_Y_Y', to_number(null),
11276                  pjp1_i.RAW_COST))                    RAW_COST,
11277           decode(pjp1_i.RELATIONSHIP_TYPE
11278                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11279                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11280                    || '_' || pjp1_i.SUB_STATUS_CODE
11281                    || '_' || pjp1_i.SUP_STATUS_CODE,
11282                  'LW_N_Y__', to_number(null),
11283                  decode(pjp1_i.RELATIONSHIP_TYPE
11284                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11285                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11286                           || '_' || pjp1_i.SUP_VER_ENABLED,
11287                         'LW_N_Y_Y', to_number(null),
11288                  pjp1_i.BRDN_COST))                   BRDN_COST,
11289           decode(pjp1_i.RELATIONSHIP_TYPE
11290                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11291                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11292                    || '_' || pjp1_i.SUB_STATUS_CODE
11293                    || '_' || pjp1_i.SUP_STATUS_CODE,
11294                  'LW_N_Y__', to_number(null),
11295                  decode(pjp1_i.RELATIONSHIP_TYPE
11296                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11297                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11298                           || '_' || pjp1_i.SUP_VER_ENABLED,
11299                         'LW_N_Y_Y', to_number(null),
11300                  pjp1_i.REVENUE))                     REVENUE,
11301           decode(pjp1_i.RELATIONSHIP_TYPE
11302                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11303                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11304                    || '_' || pjp1_i.SUB_STATUS_CODE
11305                    || '_' || pjp1_i.SUP_STATUS_CODE,
11306                  'LW_N_Y__', to_number(null),
11307                  decode(pjp1_i.RELATIONSHIP_TYPE
11308                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11309                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11310                           || '_' || pjp1_i.SUP_VER_ENABLED,
11311                         'LW_N_Y_Y', to_number(null),
11312                  pjp1_i.BILL_RAW_COST))               BILL_RAW_COST,
11313           decode(pjp1_i.RELATIONSHIP_TYPE
11314                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11315                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11316                    || '_' || pjp1_i.SUB_STATUS_CODE
11317                    || '_' || pjp1_i.SUP_STATUS_CODE,
11318                  'LW_N_Y__', to_number(null),
11319                  decode(pjp1_i.RELATIONSHIP_TYPE
11320                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11321                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11322                           || '_' || pjp1_i.SUP_VER_ENABLED,
11323                         'LW_N_Y_Y', to_number(null),
11324                  pjp1_i.BILL_BRDN_COST))              BILL_BRDN_COST,
11325           decode(pjp1_i.RELATIONSHIP_TYPE
11326                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11327                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11328                    || '_' || pjp1_i.SUB_STATUS_CODE
11329                    || '_' || pjp1_i.SUP_STATUS_CODE,
11330                  'LW_N_Y__', to_number(null),
11331                  decode(pjp1_i.RELATIONSHIP_TYPE
11332                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11333                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11334                           || '_' || pjp1_i.SUP_VER_ENABLED,
11335                         'LW_N_Y_Y', to_number(null),
11336                  pjp1_i.BILL_LABOR_RAW_COST))         BILL_LABOR_RAW_COST,
11337           decode(pjp1_i.RELATIONSHIP_TYPE
11338                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11339                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11340                    || '_' || pjp1_i.SUB_STATUS_CODE
11341                    || '_' || pjp1_i.SUP_STATUS_CODE,
11342                  'LW_N_Y__', to_number(null),
11343                  decode(pjp1_i.RELATIONSHIP_TYPE
11344                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11345                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11346                           || '_' || pjp1_i.SUP_VER_ENABLED,
11347                         'LW_N_Y_Y', to_number(null),
11348                  pjp1_i.BILL_LABOR_BRDN_COST))        BILL_LABOR_BRDN_COST,
11349           decode(pjp1_i.RELATIONSHIP_TYPE
11350                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11351                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11352                    || '_' || pjp1_i.SUB_STATUS_CODE
11353                    || '_' || pjp1_i.SUP_STATUS_CODE,
11354                  'LW_N_Y__', to_number(null),
11355                  decode(pjp1_i.RELATIONSHIP_TYPE
11356                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11357                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11358                           || '_' || pjp1_i.SUP_VER_ENABLED,
11359                         'LW_N_Y_Y', to_number(null),
11360                  pjp1_i.BILL_LABOR_HRS))              BILL_LABOR_HRS,
11361           decode(pjp1_i.RELATIONSHIP_TYPE
11362                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11363                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11364                    || '_' || pjp1_i.SUB_STATUS_CODE
11365                    || '_' || pjp1_i.SUP_STATUS_CODE,
11366                  'LW_N_Y__', to_number(null),
11367                  decode(pjp1_i.RELATIONSHIP_TYPE
11368                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11369                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11370                           || '_' || pjp1_i.SUP_VER_ENABLED,
11371                         'LW_N_Y_Y', to_number(null),
11372                  pjp1_i.EQUIPMENT_RAW_COST))          EQUIPMENT_RAW_COST,
11373           decode(pjp1_i.RELATIONSHIP_TYPE
11374                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11375                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11376                    || '_' || pjp1_i.SUB_STATUS_CODE
11377                    || '_' || pjp1_i.SUP_STATUS_CODE,
11378                  'LW_N_Y__', to_number(null),
11379                  decode(pjp1_i.RELATIONSHIP_TYPE
11380                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11381                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11382                           || '_' || pjp1_i.SUP_VER_ENABLED,
11383                         'LW_N_Y_Y', to_number(null),
11384                  pjp1_i.EQUIPMENT_BRDN_COST))         EQUIPMENT_BRDN_COST,
11385           decode(pjp1_i.RELATIONSHIP_TYPE
11386                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11387                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11388                    || '_' || pjp1_i.SUB_STATUS_CODE
11389                    || '_' || pjp1_i.SUP_STATUS_CODE,
11390                  'LW_N_Y__', to_number(null),
11391                  decode(pjp1_i.RELATIONSHIP_TYPE
11392                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11393                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11394                           || '_' || pjp1_i.SUP_VER_ENABLED,
11395                         'LW_N_Y_Y', to_number(null),
11396                  pjp1_i.CAPITALIZABLE_RAW_COST))      CAPITALIZABLE_RAW_COST,
11397           decode(pjp1_i.RELATIONSHIP_TYPE
11398                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11399                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11400                    || '_' || pjp1_i.SUB_STATUS_CODE
11401                    || '_' || pjp1_i.SUP_STATUS_CODE,
11402                  'LW_N_Y__', to_number(null),
11403                  decode(pjp1_i.RELATIONSHIP_TYPE
11404                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11405                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11406                           || '_' || pjp1_i.SUP_VER_ENABLED,
11407                         'LW_N_Y_Y', to_number(null),
11408                  pjp1_i.CAPITALIZABLE_BRDN_COST))     CAPITALIZABLE_BRDN_COST,
11409           decode(pjp1_i.RELATIONSHIP_TYPE
11410                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11411                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11412                    || '_' || pjp1_i.SUB_STATUS_CODE
11413                    || '_' || pjp1_i.SUP_STATUS_CODE,
11414                  'LW_N_Y__', to_number(null),
11415                  decode(pjp1_i.RELATIONSHIP_TYPE
11416                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11417                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11418                           || '_' || pjp1_i.SUP_VER_ENABLED,
11419                         'LW_N_Y_Y', to_number(null),
11420                  pjp1_i.LABOR_RAW_COST))              LABOR_RAW_COST,
11421           decode(pjp1_i.RELATIONSHIP_TYPE
11422                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11423                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11424                    || '_' || pjp1_i.SUB_STATUS_CODE
11425                    || '_' || pjp1_i.SUP_STATUS_CODE,
11426                  'LW_N_Y__', to_number(null),
11427                  decode(pjp1_i.RELATIONSHIP_TYPE
11428                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11429                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11430                           || '_' || pjp1_i.SUP_VER_ENABLED,
11431                         'LW_N_Y_Y', to_number(null),
11432                  pjp1_i.LABOR_BRDN_COST))             LABOR_BRDN_COST,
11433           decode(pjp1_i.RELATIONSHIP_TYPE
11434                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11435                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11436                    || '_' || pjp1_i.SUB_STATUS_CODE
11437                    || '_' || pjp1_i.SUP_STATUS_CODE,
11438                  'LW_N_Y__', to_number(null),
11439                  decode(pjp1_i.RELATIONSHIP_TYPE
11440                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11441                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11442                           || '_' || pjp1_i.SUP_VER_ENABLED,
11443                         'LW_N_Y_Y', to_number(null),
11444                  pjp1_i.LABOR_HRS))                   LABOR_HRS,
11445           decode(pjp1_i.RELATIONSHIP_TYPE
11446                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11447                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11448                    || '_' || pjp1_i.SUB_STATUS_CODE
11449                    || '_' || pjp1_i.SUP_STATUS_CODE,
11450                  'LW_N_Y__', to_number(null),
11451                  decode(pjp1_i.RELATIONSHIP_TYPE
11452                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11453                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11454                           || '_' || pjp1_i.SUP_VER_ENABLED,
11455                         'LW_N_Y_Y', to_number(null),
11456                  pjp1_i.LABOR_REVENUE))               LABOR_REVENUE,
11457           decode(pjp1_i.RELATIONSHIP_TYPE
11458                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11459                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11460                    || '_' || pjp1_i.SUB_STATUS_CODE
11461                    || '_' || pjp1_i.SUP_STATUS_CODE,
11462                  'LW_N_Y__', to_number(null),
11463                  decode(pjp1_i.RELATIONSHIP_TYPE
11464                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11465                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11466                           || '_' || pjp1_i.SUP_VER_ENABLED,
11467                         'LW_N_Y_Y', to_number(null),
11468                  pjp1_i.EQUIPMENT_HOURS))             EQUIPMENT_HOURS,
11469           decode(pjp1_i.RELATIONSHIP_TYPE
11470                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11471                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11472                    || '_' || pjp1_i.SUB_STATUS_CODE
11473                    || '_' || pjp1_i.SUP_STATUS_CODE,
11474                  'LW_N_Y__', to_number(null),
11475                  decode(pjp1_i.RELATIONSHIP_TYPE
11476                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11477                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11478                           || '_' || pjp1_i.SUP_VER_ENABLED,
11479                         'LW_N_Y_Y', to_number(null),
11480                  pjp1_i.BILLABLE_EQUIPMENT_HOURS))    BILLABLE_EQUIPMENT_HOURS,
11481           decode(pjp1_i.RELATIONSHIP_TYPE
11482                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11483                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11484                    || '_' || pjp1_i.SUB_STATUS_CODE
11485                    || '_' || pjp1_i.SUP_STATUS_CODE,
11486                  'LW_N_Y__', to_number(null),
11487                  decode(pjp1_i.RELATIONSHIP_TYPE
11488                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11489                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11490                           || '_' || pjp1_i.SUP_VER_ENABLED,
11491                         'LW_N_Y_Y', to_number(null),
11492                  pjp1_i.SUP_INV_COMMITTED_COST))      SUP_INV_COMMITTED_COST,
11493           decode(pjp1_i.RELATIONSHIP_TYPE
11494                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11495                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11496                    || '_' || pjp1_i.SUB_STATUS_CODE
11497                    || '_' || pjp1_i.SUP_STATUS_CODE,
11498                  'LW_N_Y__', to_number(null),
11499                  decode(pjp1_i.RELATIONSHIP_TYPE
11500                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11501                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11502                           || '_' || pjp1_i.SUP_VER_ENABLED,
11503                         'LW_N_Y_Y', to_number(null),
11504                  pjp1_i.PO_COMMITTED_COST))           PO_COMMITTED_COST,
11505           decode(pjp1_i.RELATIONSHIP_TYPE
11506                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11507                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11508                    || '_' || pjp1_i.SUB_STATUS_CODE
11509                    || '_' || pjp1_i.SUP_STATUS_CODE,
11510                  'LW_N_Y__', to_number(null),
11511                  decode(pjp1_i.RELATIONSHIP_TYPE
11512                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11513                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11514                           || '_' || pjp1_i.SUP_VER_ENABLED,
11515                         'LW_N_Y_Y', to_number(null),
11516                  pjp1_i.PR_COMMITTED_COST))           PR_COMMITTED_COST,
11517           decode(pjp1_i.RELATIONSHIP_TYPE
11518                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11519                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11520                    || '_' || pjp1_i.SUB_STATUS_CODE
11521                    || '_' || pjp1_i.SUP_STATUS_CODE,
11522                  'LW_N_Y__', to_number(null),
11523                  decode(pjp1_i.RELATIONSHIP_TYPE
11524                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
11525                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
11526                           || '_' || pjp1_i.SUP_VER_ENABLED,
11527                         'LW_N_Y_Y', to_number(null),
11528                  pjp1_i.OTH_COMMITTED_COST))          OTH_COMMITTED_COST,
11529           decode(pjp1_i.RELATIONSHIP_TYPE
11530                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11531                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11532                    || '_' || pjp1_i.SUP_STATUS_CODE,
11533                  'LW_N_Y_', to_number(null),
11534                           pjp1_i.ACT_LABOR_HRS)       ACT_LABOR_HRS,
11535           decode(pjp1_i.RELATIONSHIP_TYPE
11536                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11537                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11538                    || '_' || pjp1_i.SUP_STATUS_CODE,
11539                  'LW_N_Y_', to_number(null),
11540                           pjp1_i.ACT_EQUIP_HRS)       ACT_EQUIP_HRS,
11541           decode(pjp1_i.RELATIONSHIP_TYPE
11542                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11543                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11544                    || '_' || pjp1_i.SUP_STATUS_CODE,
11545                  'LW_N_Y_', to_number(null),
11546                           pjp1_i.ACT_LABOR_BRDN_COST) ACT_LABOR_BRDN_COST,
11547           decode(pjp1_i.RELATIONSHIP_TYPE
11548                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11549                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11550                    || '_' || pjp1_i.SUP_STATUS_CODE,
11551                  'LW_N_Y_', to_number(null),
11552                           pjp1_i.ACT_EQUIP_BRDN_COST) ACT_EQUIP_BRDN_COST,
11553           decode(pjp1_i.RELATIONSHIP_TYPE
11554                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11555                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11556                    || '_' || pjp1_i.SUP_STATUS_CODE,
11557                  'LW_N_Y_', to_number(null),
11558                           pjp1_i.ACT_BRDN_COST)       ACT_BRDN_COST,
11559           decode(pjp1_i.RELATIONSHIP_TYPE
11560                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11561                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11562                    || '_' || pjp1_i.SUP_STATUS_CODE,
11563                  'LW_N_Y_', to_number(null),
11564                           pjp1_i.ACT_RAW_COST)        ACT_RAW_COST,
11565           decode(pjp1_i.RELATIONSHIP_TYPE
11566                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11567                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11568                    || '_' || pjp1_i.SUP_STATUS_CODE,
11569                  'LW_N_Y_', to_number(null),
11570                           pjp1_i.ACT_REVENUE)         ACT_REVENUE,
11571           decode(pjp1_i.RELATIONSHIP_TYPE
11572                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11573                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11574                    || '_' || pjp1_i.SUP_STATUS_CODE,
11575                  'LW_N_Y_', to_number(null),
11576                           pjp1_i.ACT_LABOR_RAW_COST)  ACT_LABOR_RAW_COST,
11577           decode(pjp1_i.RELATIONSHIP_TYPE
11578                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11579                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11580                    || '_' || pjp1_i.SUP_STATUS_CODE,
11581                  'LW_N_Y_', to_number(null),
11582                           pjp1_i.ACT_EQUIP_RAW_COST)  ACT_EQUIP_RAW_COST,
11583           decode(pjp1_i.RELATIONSHIP_TYPE
11584                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11585                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11586                    || '_' || pjp1_i.SUP_STATUS_CODE,
11587                  'LW_N_Y_', to_number(null),
11588                           pjp1_i.ETC_LABOR_HRS)       ETC_LABOR_HRS,
11589           decode(pjp1_i.RELATIONSHIP_TYPE
11590                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11591                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11592                    || '_' || pjp1_i.SUP_STATUS_CODE,
11593                  'LW_N_Y_', to_number(null),
11594                           pjp1_i.ETC_EQUIP_HRS)       ETC_EQUIP_HRS,
11595           decode(pjp1_i.RELATIONSHIP_TYPE
11596                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11597                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11598                    || '_' || pjp1_i.SUP_STATUS_CODE,
11599                  'LW_N_Y_', to_number(null),
11600                           pjp1_i.ETC_LABOR_BRDN_COST) ETC_LABOR_BRDN_COST,
11601           decode(pjp1_i.RELATIONSHIP_TYPE
11602                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11603                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11604                    || '_' || pjp1_i.SUP_STATUS_CODE,
11605                  'LW_N_Y_', to_number(null),
11606                           pjp1_i.ETC_EQUIP_BRDN_COST) ETC_EQUIP_BRDN_COST,
11607           decode(pjp1_i.RELATIONSHIP_TYPE
11608                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11609                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11610                    || '_' || pjp1_i.SUP_STATUS_CODE,
11611                  'LW_N_Y_', to_number(null),
11612                           pjp1_i.ETC_BRDN_COST)       ETC_BRDN_COST,
11613           decode(pjp1_i.RELATIONSHIP_TYPE
11614                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11615                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11616                    || '_' || pjp1_i.SUP_STATUS_CODE,
11617                  'LW_N_Y_', to_number(null),
11618                           pjp1_i.ETC_RAW_COST)        ETC_RAW_COST,
11619           decode(pjp1_i.RELATIONSHIP_TYPE
11620                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11621                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11622                    || '_' || pjp1_i.SUP_STATUS_CODE,
11623                  'LW_N_Y_', to_number(null),
11624                           pjp1_i.ETC_LABOR_RAW_COST)  ETC_LABOR_RAW_COST,
11625           decode(pjp1_i.RELATIONSHIP_TYPE
11626                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
11627                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
11628                    || '_' || pjp1_i.SUP_STATUS_CODE,
11629                  'LW_N_Y_', to_number(null),
11630                           pjp1_i.ETC_EQUIP_RAW_COST)  ETC_EQUIP_RAW_COST,
11631           pjp1_i.CUSTOM1,
11632           pjp1_i.CUSTOM2,
11633           pjp1_i.CUSTOM3,
11634           pjp1_i.CUSTOM4,
11635           pjp1_i.CUSTOM5,
11636           pjp1_i.CUSTOM6,
11637           pjp1_i.CUSTOM7,
11638           pjp1_i.CUSTOM8,
11639           pjp1_i.CUSTOM9,
11640           pjp1_i.CUSTOM10,
11641           pjp1_i.CUSTOM11,
11642           pjp1_i.CUSTOM12,
11643           pjp1_i.CUSTOM13,
11644           pjp1_i.CUSTOM14,
11645           pjp1_i.CUSTOM15
11646         from
11647           (
11648         select
11649           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11650                  pjp.INSERT_FLAG, 'Y')                INSERT_FLAG,
11651           pjp.RELATIONSHIP_TYPE,
11652           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11653                  null, sub_ver.STATUS_CODE)           SUB_STATUS_CODE,
11654           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11655                  null, sup_ver.STATUS_CODE)           SUP_STATUS_CODE,
11656           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11657                  null, sup_wpa.WP_ENABLE_VERSION_FLAG)SUP_VER_ENABLED,
11658           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11659                  null, decode(pjp.PLAN_VERSION_ID,
11660                               -1, prg.SUP_ID,
11661                               -3, prg.SUP_ID,
11662                               -4, prg.SUP_ID,
11663                                   null))              SUP_ID,
11664           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11665                  null, decode(pjp.PLAN_VERSION_ID,
11666                               -1, prg.SUP_EMT_ID,
11667                               -3, prg.SUP_EMT_ID,
11668                               -4, prg.SUP_EMT_ID,
11669                                   null))              SUP_EMT_ID,
11670           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11671                  null, decode(pjp.PLAN_VERSION_ID,
11672                               -1, prg.WP_FLAG,
11673                               -3, prg.WP_FLAG,
11674                               -4, prg.WP_FLAG,
11675                                   null))              SUP_WP_FLAG,
11676           1                                           WORKER_ID,
11677           -- p_worker_id                              WORKER_ID,
11678           'W'                                         RECORD_TYPE,
11679           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11680                  l_level, prg.SUP_LEVEL)              PRG_LEVEL,
11681           pjp.LINE_TYPE,
11682           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11683                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID)  PROJECT_ID,
11684           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11685                  pjp.PROJECT_ORG_ID,
11686                  prg.SUP_PROJECT_ORG_ID)              PROJECT_ORG_ID,
11687           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11688                  pjp.PROJECT_ORGANIZATION_ID,
11689                  prg.SUP_PROJECT_ORGANIZATION_ID)     PROJECT_ORGANIZATION_ID,
11690           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11691                  pjp.PROJECT_ELEMENT_ID,
11692                  prg.SUB_ROLLUP_ID)                   PROJECT_ELEMENT_ID,
11693           pjp.TIME_ID,
11694           pjp.PERIOD_TYPE_ID,
11695           pjp.CALENDAR_TYPE,
11696           pjp.RBS_AGGR_LEVEL,
11697           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11698                  pjp.WBS_ROLLUP_FLAG, 'N')            WBS_ROLLUP_FLAG,
11699           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11700                  pjp.PRG_ROLLUP_FLAG, 'Y')            PRG_ROLLUP_FLAG,
11701           pjp.CURR_RECORD_TYPE_ID,
11702           pjp.CURRENCY_CODE,
11703           pjp.RBS_ELEMENT_ID,
11704           pjp.RBS_VERSION_ID,
11705           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11706                  pjp.PLAN_VERSION_ID,
11707                  decode(pjp.PLAN_VERSION_ID,
11708                         -1, pjp.PLAN_VERSION_ID,
11709                         -2, pjp.PLAN_VERSION_ID,
11710                         -3, pjp.PLAN_VERSION_ID,
11711                         -4, pjp.PLAN_VERSION_ID,
11712                             wbs_hdr.PLAN_VERSION_ID)) PLAN_VERSION_ID,
11713           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11714                  pjp.PLAN_TYPE_ID,
11715                  decode(pjp.PLAN_VERSION_ID,
11716                         -1, pjp.PLAN_TYPE_ID,
11717                         -2, pjp.PLAN_TYPE_ID,
11718                         -3, pjp.PLAN_TYPE_ID,
11719                         -4, pjp.PLAN_TYPE_ID,
11720                             wbs_hdr.PLAN_TYPE_ID))    PLAN_TYPE_ID,
11721           pjp.PLAN_TYPE_CODE,
11722           sum(pjp.RAW_COST)                           RAW_COST,
11723           sum(pjp.BRDN_COST)                          BRDN_COST,
11724           sum(pjp.REVENUE)                            REVENUE,
11725           sum(pjp.BILL_RAW_COST)                      BILL_RAW_COST,
11726           sum(pjp.BILL_BRDN_COST)                     BILL_BRDN_COST,
11727           sum(pjp.BILL_LABOR_RAW_COST)                BILL_LABOR_RAW_COST,
11728           sum(pjp.BILL_LABOR_BRDN_COST)               BILL_LABOR_BRDN_COST,
11729           sum(pjp.BILL_LABOR_HRS)                     BILL_LABOR_HRS,
11730           sum(pjp.EQUIPMENT_RAW_COST)                 EQUIPMENT_RAW_COST,
11731           sum(pjp.EQUIPMENT_BRDN_COST)                EQUIPMENT_BRDN_COST,
11732           sum(pjp.CAPITALIZABLE_RAW_COST)             CAPITALIZABLE_RAW_COST,
11733           sum(pjp.CAPITALIZABLE_BRDN_COST)            CAPITALIZABLE_BRDN_COST,
11734           sum(pjp.LABOR_RAW_COST)                     LABOR_RAW_COST,
11735           sum(pjp.LABOR_BRDN_COST)                    LABOR_BRDN_COST,
11736           sum(pjp.LABOR_HRS)                          LABOR_HRS,
11737           sum(pjp.LABOR_REVENUE)                      LABOR_REVENUE,
11738           sum(pjp.EQUIPMENT_HOURS)                    EQUIPMENT_HOURS,
11739           sum(pjp.BILLABLE_EQUIPMENT_HOURS)           BILLABLE_EQUIPMENT_HOURS,
11740           sum(pjp.SUP_INV_COMMITTED_COST)             SUP_INV_COMMITTED_COST,
11741           sum(pjp.PO_COMMITTED_COST)                  PO_COMMITTED_COST,
11742           sum(pjp.PR_COMMITTED_COST)                  PR_COMMITTED_COST,
11743           sum(pjp.OTH_COMMITTED_COST)                 OTH_COMMITTED_COST,
11744           sum(pjp.ACT_LABOR_HRS)                      ACT_LABOR_HRS,
11745           sum(pjp.ACT_EQUIP_HRS)                      ACT_EQUIP_HRS,
11746           sum(pjp.ACT_LABOR_BRDN_COST)                ACT_LABOR_BRDN_COST,
11747           sum(pjp.ACT_EQUIP_BRDN_COST)                ACT_EQUIP_BRDN_COST,
11748           sum(pjp.ACT_BRDN_COST)                      ACT_BRDN_COST,
11749           sum(pjp.ACT_RAW_COST)                       ACT_RAW_COST,
11750           sum(pjp.ACT_REVENUE)                        ACT_REVENUE,
11751           sum(pjp.ACT_LABOR_RAW_COST)                 ACT_LABOR_RAW_COST,
11752           sum(pjp.ACT_EQUIP_RAW_COST)                 ACT_EQUIP_RAW_COST,
11753           sum(pjp.ETC_LABOR_HRS)                      ETC_LABOR_HRS,
11754           sum(pjp.ETC_EQUIP_HRS)                      ETC_EQUIP_HRS,
11755           sum(pjp.ETC_LABOR_BRDN_COST)                ETC_LABOR_BRDN_COST,
11756           sum(pjp.ETC_EQUIP_BRDN_COST)                ETC_EQUIP_BRDN_COST,
11757           sum(pjp.ETC_BRDN_COST)                      ETC_BRDN_COST,
11758           sum(pjp.ETC_RAW_COST)                       ETC_RAW_COST,
11759           sum(pjp.ETC_LABOR_RAW_COST)                 ETC_LABOR_RAW_COST,
11760           sum(pjp.ETC_EQUIP_RAW_COST)                 ETC_EQUIP_RAW_COST,
11761           sum(pjp.CUSTOM1)                            CUSTOM1,
11762           sum(pjp.CUSTOM2)                            CUSTOM2,
11763           sum(pjp.CUSTOM3)                            CUSTOM3,
11764           sum(pjp.CUSTOM4)                            CUSTOM4,
11765           sum(pjp.CUSTOM5)                            CUSTOM5,
11766           sum(pjp.CUSTOM6)                            CUSTOM6,
11767           sum(pjp.CUSTOM7)                            CUSTOM7,
11768           sum(pjp.CUSTOM8)                            CUSTOM8,
11769           sum(pjp.CUSTOM9)                            CUSTOM9,
11770           sum(pjp.CUSTOM10)                           CUSTOM10,
11771           sum(pjp.CUSTOM11)                           CUSTOM11,
11772           sum(pjp.CUSTOM12)                           CUSTOM12,
11773           sum(pjp.CUSTOM13)                           CUSTOM13,
11774           sum(pjp.CUSTOM14)                           CUSTOM14,
11775           sum(pjp.CUSTOM15)                           CUSTOM15
11776         from
11777           (
11778           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
11779                  -- get incremental task level amounts from source and
11780                  -- program rollup amounts from interim
11781             to_char(null)                             LINE_TYPE,
11782             wbs_hdr.WBS_VERSION_ID,
11783             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
11784             decode(wbs_hdr.WP_FLAG
11785                      || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
11786                      || '_' || nvl(fin_plan.INVERT_ID, 'PRJ'),
11787                    'N_1_PRJ', 'N',
11788                    'N_-1_PRG', 'N',
11789                    decode(top_slice.INVERT_ID,
11790                           'PRJ', 'Y',
11791                           decode(wbs.SUB_LEVEL,
11792                                  1, 'Y', 'N')))       PUSHUP_FLAG,
11793             decode(pjp1.RBS_AGGR_LEVEL,
11794                    'L', 'N',
11795                         decode(wbs_hdr.WP_FLAG
11796                                  || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
11797                                  || '_' || fin_plan.INVERT_ID,
11798                                'N_1_PRG', decode(top_slice.INVERT_ID,
11799                                                  'PRJ', 'Y',
11800                                                  decode(wbs.SUB_LEVEL,
11801                                                         1, 'Y', 'N')),
11802                                'N_-1_PRG', 'N',
11803                                decode(wbs_hdr.WP_FLAG
11804                                         || '_' || fin_plan.INVERT_ID
11805                                         || '_' || fin_plan.CB
11806                                         || '_' || fin_plan.CO
11807                                         || '_'
11808                                         || to_char(fin_plan.PLAN_VERSION_ID),
11809                                       'N_PRJ_Y_Y_-4', 'N',
11810                                                       'Y'))
11811                   )                                   INSERT_FLAG,
11812             pjp1.PROJECT_ID,
11813             pjp1.PROJECT_ORG_ID,
11814             pjp1.PROJECT_ORGANIZATION_ID,
11815             decode(top_slice.INVERT_ID,
11816                    'PRJ', prg.SUP_EMT_ID,
11817                           decode(wbs.SUB_LEVEL,
11818                                  1, prg.SUP_EMT_ID,
11819                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
11820             pjp1.TIME_ID,
11821             pjp1.PERIOD_TYPE_ID,
11822             pjp1.CALENDAR_TYPE,
11823             pjp1.RBS_AGGR_LEVEL,
11824             'Y'                                       WBS_ROLLUP_FLAG,
11825             pjp1.PRG_ROLLUP_FLAG,
11826             pjp1.CURR_RECORD_TYPE_ID,
11827             pjp1.CURRENCY_CODE,
11828             pjp1.RBS_ELEMENT_ID,
11829             pjp1.RBS_VERSION_ID,
11830             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
11831                    'N_PRG', fin_plan.PLAN_VERSION_ID,
11832                             pjp1.PLAN_VERSION_ID)     PLAN_VERSION_ID,
11833             pjp1.PLAN_TYPE_ID,
11834             pjp1.PLAN_TYPE_CODE,
11835             pjp1.RAW_COST,
11836             pjp1.BRDN_COST,
11837             pjp1.REVENUE,
11838             pjp1.BILL_RAW_COST,
11839             pjp1.BILL_BRDN_COST,
11840             pjp1.BILL_LABOR_RAW_COST,
11841             pjp1.BILL_LABOR_BRDN_COST,
11842             pjp1.BILL_LABOR_HRS,
11843             pjp1.EQUIPMENT_RAW_COST,
11844             pjp1.EQUIPMENT_BRDN_COST,
11845             pjp1.CAPITALIZABLE_RAW_COST,
11846             pjp1.CAPITALIZABLE_BRDN_COST,
11847             pjp1.LABOR_RAW_COST,
11848             pjp1.LABOR_BRDN_COST,
11849             pjp1.LABOR_HRS,
11850             pjp1.LABOR_REVENUE,
11851             pjp1.EQUIPMENT_HOURS,
11852             pjp1.BILLABLE_EQUIPMENT_HOURS,
11853             pjp1.SUP_INV_COMMITTED_COST,
11854             pjp1.PO_COMMITTED_COST,
11855             pjp1.PR_COMMITTED_COST,
11856             pjp1.OTH_COMMITTED_COST,
11857             pjp1.ACT_LABOR_HRS,
11858             pjp1.ACT_EQUIP_HRS,
11859             pjp1.ACT_LABOR_BRDN_COST,
11860             pjp1.ACT_EQUIP_BRDN_COST,
11861             pjp1.ACT_BRDN_COST,
11862             pjp1.ACT_RAW_COST,
11863             pjp1.ACT_REVENUE,
11864             pjp1.ACT_LABOR_RAW_COST,
11865             pjp1.ACT_EQUIP_RAW_COST,
11866             pjp1.ETC_LABOR_HRS,
11867             pjp1.ETC_EQUIP_HRS,
11868             pjp1.ETC_LABOR_BRDN_COST,
11869             pjp1.ETC_EQUIP_BRDN_COST,
11870             pjp1.ETC_BRDN_COST,
11871             pjp1.ETC_RAW_COST,
11872             pjp1.ETC_LABOR_RAW_COST,
11873             pjp1.ETC_EQUIP_RAW_COST,
11874             pjp1.CUSTOM1,
11875             pjp1.CUSTOM2,
11876             pjp1.CUSTOM3,
11877             pjp1.CUSTOM4,
11878             pjp1.CUSTOM5,
11879             pjp1.CUSTOM6,
11880             pjp1.CUSTOM7,
11881             pjp1.CUSTOM8,
11882             pjp1.CUSTOM9,
11883             pjp1.CUSTOM10,
11884             pjp1.CUSTOM11,
11885             pjp1.CUSTOM12,
11886             pjp1.CUSTOM13,
11887             pjp1.CUSTOM14,
11888             pjp1.CUSTOM15
11889           from
11890             PJI_FP_AGGR_PJP1_T pjp1,
11891             PJI_PJP_WBS_HEADER wbs_hdr,
11892             PA_XBS_DENORM      wbs,
11893             PJI_XBS_DENORM     prg,
11894             (
11895               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
11896               from DUAL union all
11897               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
11898               from DUAL union all
11899               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
11900               from DUAL union all
11901               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
11902               from DUAL union all
11903               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
11904               from DUAL union all
11905               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
11906               from DUAL union all
11907               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
11908               from DUAL union all
11909               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
11910               from DUAL
11911             ) fin_plan,
11912             (
11913               select 1     WBS_SUP_LEVEL,
11914                      1     WBS_SUB_LEVEL,
11915                      'PRJ' INVERT_ID
11916               from   DUAL
11917               union all
11918               select 1     WBS_SUP_LEVEL,
11919                      1     WBS_SUB_LEVEL,
11920                      'WBS' INVERT_ID
11921               from   DUAL
11922             ) top_slice
11923           where
11924             prg.STRUCT_TYPE         =  'PRG'                       and
11925             prg.SUP_LEVEL           =  l_level                     and
11926             prg.SUB_LEVEL           =  l_level                     and
11927             wbs.STRUCT_TYPE         =  'WBS'                       and
11928             ((wbs.SUP_LEVEL = 1 and
11929               wbs.SUB_LEVEL = 1) or
11930              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
11931             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
11932             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
11933             -- pjp1.WORKER_ID       =  p_worker_id                 and
11934             pjp1.PRG_LEVEL          in (0, l_level)                and
11935             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')                  and
11936             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
11937             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
11938             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
11939             pjp1.PLAN_VERSION_ID    =  wbs_hdr.PLAN_VERSION_ID     and
11940             pjp1.PLAN_TYPE_CODE     =  wbs_hdr.PLAN_TYPE_CODE      and
11941             decode(pjp1.PLAN_VERSION_ID,
11942                    -3, pjp1.PLAN_TYPE_ID,
11943                    -4, pjp1.PLAN_TYPE_ID,
11944                        -1)          =  decode(pjp1.PLAN_VERSION_ID,
11945                                               -3, wbs_hdr.PLAN_TYPE_ID,
11946                                               -4, wbs_hdr.PLAN_TYPE_ID,
11947                                                   -1)              and
11948             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
11949             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
11950             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
11951             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
11952             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
11953             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
11954           union all
11955           select /*+ ordered index(prg pji_xbs_denorm_n3) */     -- Bug 10632614
11956                  -- get incremental project level amounts from source
11957             to_char(null)                             LINE_TYPE,
11958             wbs_hdr.WBS_VERSION_ID,
11959             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
11960             'Y'                                       PUSHUP_FLAG,
11961             decode(pjp1.RBS_AGGR_LEVEL,
11962                    'L', 'N',
11963                         decode(fin_plan.PLAN_VERSION_ID,
11964                                null, 'N', 'Y'))       INSERT_FLAG,
11965             pjp1.PROJECT_ID,
11966             pjp1.PROJECT_ORG_ID,
11967             pjp1.PROJECT_ORGANIZATION_ID,
11968             pjp1.PROJECT_ELEMENT_ID,
11969             pjp1.TIME_ID,
11970             pjp1.PERIOD_TYPE_ID,
11971             pjp1.CALENDAR_TYPE,
11972             pjp1.RBS_AGGR_LEVEL,
11973             'Y'                                       WBS_ROLLUP_FLAG,
11974             pjp1.PRG_ROLLUP_FLAG,
11975             pjp1.CURR_RECORD_TYPE_ID,
11976             pjp1.CURRENCY_CODE,
11977             pjp1.RBS_ELEMENT_ID,
11978             pjp1.RBS_VERSION_ID,
11979             decode(wbs_hdr.WP_FLAG,
11980                    'N', decode(pjp1.PLAN_VERSION_ID,
11981                                -1, pjp1.PLAN_VERSION_ID,
11982                                -2, pjp1.PLAN_VERSION_ID,
11983                                -3, pjp1.PLAN_VERSION_ID, -- won't exist
11984                                -4, pjp1.PLAN_VERSION_ID, -- won't exist
11985                                    fin_plan.PLAN_VERSION_ID),
11986                         pjp1.PLAN_VERSION_ID)         PLAN_VERSION_ID,
11987             pjp1.PLAN_TYPE_ID,
11988             pjp1.PLAN_TYPE_CODE,
11989             pjp1.RAW_COST,
11990             pjp1.BRDN_COST,
11991             pjp1.REVENUE,
11992             pjp1.BILL_RAW_COST,
11993             pjp1.BILL_BRDN_COST,
11994             pjp1.BILL_LABOR_RAW_COST,
11995             pjp1.BILL_LABOR_BRDN_COST,
11996             pjp1.BILL_LABOR_HRS,
11997             pjp1.EQUIPMENT_RAW_COST,
11998             pjp1.EQUIPMENT_BRDN_COST,
11999             pjp1.CAPITALIZABLE_RAW_COST,
12000             pjp1.CAPITALIZABLE_BRDN_COST,
12001             pjp1.LABOR_RAW_COST,
12002             pjp1.LABOR_BRDN_COST,
12003             pjp1.LABOR_HRS,
12004             pjp1.LABOR_REVENUE,
12005             pjp1.EQUIPMENT_HOURS,
12006             pjp1.BILLABLE_EQUIPMENT_HOURS,
12007             pjp1.SUP_INV_COMMITTED_COST,
12008             pjp1.PO_COMMITTED_COST,
12009             pjp1.PR_COMMITTED_COST,
12010             pjp1.OTH_COMMITTED_COST,
12011             pjp1.ACT_LABOR_HRS,
12012             pjp1.ACT_EQUIP_HRS,
12013             pjp1.ACT_LABOR_BRDN_COST,
12014             pjp1.ACT_EQUIP_BRDN_COST,
12015             pjp1.ACT_BRDN_COST,
12016             pjp1.ACT_RAW_COST,
12017             pjp1.ACT_REVENUE,
12018             pjp1.ACT_LABOR_RAW_COST,
12019             pjp1.ACT_EQUIP_RAW_COST,
12020             pjp1.ETC_LABOR_HRS,
12021             pjp1.ETC_EQUIP_HRS,
12022             pjp1.ETC_LABOR_BRDN_COST,
12023             pjp1.ETC_EQUIP_BRDN_COST,
12024             pjp1.ETC_BRDN_COST,
12025             pjp1.ETC_RAW_COST,
12026             pjp1.ETC_LABOR_RAW_COST,
12027             pjp1.ETC_EQUIP_RAW_COST,
12028             pjp1.CUSTOM1,
12029             pjp1.CUSTOM2,
12030             pjp1.CUSTOM3,
12031             pjp1.CUSTOM4,
12032             pjp1.CUSTOM5,
12033             pjp1.CUSTOM6,
12034             pjp1.CUSTOM7,
12035             pjp1.CUSTOM8,
12036             pjp1.CUSTOM9,
12037             pjp1.CUSTOM10,
12038             pjp1.CUSTOM11,
12039             pjp1.CUSTOM12,
12040             pjp1.CUSTOM13,
12041             pjp1.CUSTOM14,
12042             pjp1.CUSTOM15
12043           from
12044             PJI_FP_AGGR_PJP1_T pjp1,
12045             PJI_PJP_WBS_HEADER wbs_hdr,
12046             PJI_XBS_DENORM     prg,
12047             (
12048               select 'Y' CB_FLAG,
12049                      'N' CO_FLAG,
12050                      -3  PLAN_VERSION_ID
12051               from DUAL union all
12052               select 'N' CB_FLAG,
12053                      'Y' CO_FLAG,
12054                      -4  PLAN_VERSION_ID
12055               from DUAL union all
12056               select 'Y' CB_FLAG,
12057                      'Y' CO_FLAG,
12058                      -3  PLAN_VERSION_ID
12059               from DUAL union all
12060               select 'Y' CB_FLAG,
12061                      'Y' CO_FLAG,
12062                      -4  PLAN_VERSION_ID
12063               from DUAL
12064             ) fin_plan
12065           where
12066             prg.STRUCT_TYPE         = 'PRG'                    and
12067             prg.SUP_LEVEL           = l_level                  and
12068             prg.SUB_LEVEL           = l_level                  and
12069             -- pjp1.WORKER_ID       = p_worker_id              and
12070             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID       and
12071             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID           and
12072             pjp1.PRG_LEVEL          = 0                        and
12073             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')              and
12074             pjp1.WBS_ROLLUP_FLAG    = 'N'                      and
12075             pjp1.PRG_ROLLUP_FLAG    = 'N'                      and
12076             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID          and
12077             wbs_hdr.PLAN_VERSION_ID = pjp1.PLAN_VERSION_ID     and
12078             wbs_hdr.PLAN_TYPE_CODE  = pjp1.PLAN_TYPE_CODE      and
12079             decode(wbs_hdr.WP_FLAG,
12080                    'N', decode(pjp1.PLAN_VERSION_ID,
12081                                -1, 'Y',
12082                                -2, 'Y',
12083                                -3, 'Y', -- won't exist
12084                                -4, 'Y', -- won't exist
12085                                    decode(wbs_hdr.CB_FLAG || '_' ||
12086                                           wbs_hdr.CO_FLAG,
12087                                           'Y_Y', 'Y',
12088                                           'N_Y', 'Y',
12089                                           'Y_N', 'Y',
12090                                                  'N')),
12091                         'Y')        =  'Y'                     and
12092             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID               and
12093             wbs_hdr.CB_FLAG         = fin_plan.CB_FLAG     (+) and
12094             wbs_hdr.CO_FLAG         = fin_plan.CO_FLAG     (+)
12095           union all
12096           select /*+ ordered
12097                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
12098                      index(fpr PJI_FP_XBS_ACCUM_F_N1)
12099                      index(prg pji_xbs_denorm_n3) */                    -- Bug 10632614
12100                  -- get delta task level amounts from Reporting Lines
12101             to_char(null)                             LINE_TYPE,
12102             wbs_hdr.WBS_VERSION_ID,
12103             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
12104             decode(log.EVENT_TYPE,
12105                    'WBS_CHANGE', 'Y',
12106                    'WBS_PUBLISH', 'N')                PUSHUP_FLAG,
12107             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
12108                    'N_PRG', decode(top_slice.INVERT_ID,
12109                                    'PRJ', 'Y',
12110                                    decode(wbs.SUB_LEVEL,
12111                                           1, 'Y', 'N')),
12112                    decode(wbs_hdr.WP_FLAG
12113                             || '_' || fin_plan.INVERT_ID
12114                             || '_' || fin_plan.CB
12115                             || '_' || fin_plan.CO
12116                             || '_' || to_char(fin_plan.PLAN_VERSION_ID),
12117                           'N_PRJ_Y_Y_-4', 'N',
12118                                           'Y'))       INSERT_FLAG,
12119             fpr.PROJECT_ID,
12120             fpr.PROJECT_ORG_ID,
12121             fpr.PROJECT_ORGANIZATION_ID,
12122             decode(top_slice.INVERT_ID,
12123                    'PRJ', prg.SUP_EMT_ID,
12124                           decode(wbs.SUB_LEVEL,
12125                                  1, prg.SUP_EMT_ID,
12126                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
12127             fpr.TIME_ID,
12128             fpr.PERIOD_TYPE_ID,
12129             fpr.CALENDAR_TYPE,
12130             fpr.RBS_AGGR_LEVEL,
12131             'Y'                                       WBS_ROLLUP_FLAG,
12132             fpr.PRG_ROLLUP_FLAG,
12133             fpr.CURR_RECORD_TYPE_ID,
12134             fpr.CURRENCY_CODE,
12135             fpr.RBS_ELEMENT_ID,
12136             fpr.RBS_VERSION_ID,
12137             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
12138                    'N_PRG', fin_plan.PLAN_VERSION_ID,
12139                             fpr.PLAN_VERSION_ID)      PLAN_VERSION_ID,
12140             fpr.PLAN_TYPE_ID,
12141             fpr.PLAN_TYPE_CODE,
12142             wbs.SIGN * fpr.RAW_COST                   RAW_COST,
12143             wbs.SIGN * fpr.BRDN_COST                  BRDN_COST,
12144             wbs.SIGN * fpr.REVENUE                    REVENUE,
12145             wbs.SIGN * fpr.BILL_RAW_COST              BILL_RAW_COST,
12146             wbs.SIGN * fpr.BILL_BRDN_COST             BILL_BRDN_COST,
12147             wbs.SIGN * fpr.BILL_LABOR_RAW_COST        BILL_LABOR_RAW_COST,
12148             wbs.SIGN * fpr.BILL_LABOR_BRDN_COST       BILL_LABOR_BRDN_COST,
12149             wbs.SIGN * fpr.BILL_LABOR_HRS             BILL_LABOR_HRS,
12150             wbs.SIGN * fpr.EQUIPMENT_RAW_COST         EQUIPMENT_RAW_COST,
12151             wbs.SIGN * fpr.EQUIPMENT_BRDN_COST        EQUIPMENT_BRDN_COST,
12152             wbs.SIGN * fpr.CAPITALIZABLE_RAW_COST     CAPITALIZABLE_RAW_COST,
12153             wbs.SIGN * fpr.CAPITALIZABLE_BRDN_COST    CAPITALIZABLE_BRDN_COST,
12154             wbs.SIGN * fpr.LABOR_RAW_COST             LABOR_RAW_COST,
12155             wbs.SIGN * fpr.LABOR_BRDN_COST            LABOR_BRDN_COST,
12156             wbs.SIGN * fpr.LABOR_HRS                  LABOR_HRS,
12157             wbs.SIGN * fpr.LABOR_REVENUE              LABOR_REVENUE,
12158             wbs.SIGN * fpr.EQUIPMENT_HOURS            EQUIPMENT_HOURS,
12159             wbs.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS   BILLABLE_EQUIPMENT_HOURS,
12160             wbs.SIGN * fpr.SUP_INV_COMMITTED_COST     SUP_INV_COMMITTED_COST,
12161             wbs.SIGN * fpr.PO_COMMITTED_COST          PO_COMMITTED_COST,
12162             wbs.SIGN * fpr.PR_COMMITTED_COST          PR_COMMITTED_COST,
12163             wbs.SIGN * fpr.OTH_COMMITTED_COST         OTH_COMMITTED_COST,
12164             wbs.SIGN * fpr.ACT_LABOR_HRS              ACT_LABOR_HRS,
12165             wbs.SIGN * fpr.ACT_EQUIP_HRS              ACT_EQUIP_HRS,
12166             wbs.SIGN * fpr.ACT_LABOR_BRDN_COST        ACT_LABOR_BRDN_COST,
12167             wbs.SIGN * fpr.ACT_EQUIP_BRDN_COST        ACT_EQUIP_BRDN_COST,
12168             wbs.SIGN * fpr.ACT_BRDN_COST              ACT_BRDN_COST,
12169             wbs.SIGN * fpr.ACT_RAW_COST               ACT_RAW_COST,
12170             wbs.SIGN * fpr.ACT_REVENUE                ACT_REVENUE,
12171             wbs.SIGN * fpr.ACT_LABOR_RAW_COST         ACT_LABOR_RAW_COST,
12172             wbs.SIGN * fpr.ACT_EQUIP_RAW_COST         ACT_EQUIP_RAW_COST,
12173             wbs.SIGN * fpr.ETC_LABOR_HRS              ETC_LABOR_HRS,
12174             wbs.SIGN * fpr.ETC_EQUIP_HRS              ETC_EQUIP_HRS,
12175             wbs.SIGN * fpr.ETC_LABOR_BRDN_COST        ETC_LABOR_BRDN_COST,
12176             wbs.SIGN * fpr.ETC_EQUIP_BRDN_COST        ETC_EQUIP_BRDN_COST,
12177             wbs.SIGN * fpr.ETC_BRDN_COST              ETC_BRDN_COST,
12178             wbs.SIGN * fpr.ETC_RAW_COST               ETC_RAW_COST,
12179             wbs.SIGN * fpr.ETC_LABOR_RAW_COST         ETC_LABOR_RAW_COST,
12180             wbs.SIGN * fpr.ETC_EQUIP_RAW_COST         ETC_EQUIP_RAW_COST,
12181             wbs.SIGN * fpr.CUSTOM1                    CUSTOM1,
12182             wbs.SIGN * fpr.CUSTOM2                    CUSTOM2,
12183             wbs.SIGN * fpr.CUSTOM3                    CUSTOM3,
12184             wbs.SIGN * fpr.CUSTOM4                    CUSTOM4,
12185             wbs.SIGN * fpr.CUSTOM5                    CUSTOM5,
12186             wbs.SIGN * fpr.CUSTOM6                    CUSTOM6,
12187             wbs.SIGN * fpr.CUSTOM7                    CUSTOM7,
12188             wbs.SIGN * fpr.CUSTOM8                    CUSTOM8,
12189             wbs.SIGN * fpr.CUSTOM9                    CUSTOM9,
12190             wbs.SIGN * fpr.CUSTOM10                   CUSTOM10,
12191             wbs.SIGN * fpr.CUSTOM11                   CUSTOM11,
12192             wbs.SIGN * fpr.CUSTOM12                   CUSTOM12,
12193             wbs.SIGN * fpr.CUSTOM13                   CUSTOM13,
12194             wbs.SIGN * fpr.CUSTOM14                   CUSTOM14,
12195             wbs.SIGN * fpr.CUSTOM15                   CUSTOM15
12196           from
12197             PA_PJI_PROJ_EVENTS_LOG log,
12198             PJI_PJP_WBS_HEADER     wbs_hdr,
12199             PJI_XBS_DENORM_DELTA_T wbs,
12200             PJI_XBS_DENORM         prg,
12201             PJI_FP_XBS_ACCUM_F     fpr,
12202             (
12203               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
12204               from DUAL union all
12205               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
12206               from DUAL union all
12207               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
12208               from DUAL union all
12209               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
12210               from DUAL union all
12211               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
12212               from DUAL union all
12213               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
12214               from DUAL union all
12215               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
12216               from DUAL union all
12217               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
12218               from DUAL
12219             ) fin_plan,
12220             (
12221               select 1     WBS_SUP_LEVEL,
12222                      1     WBS_SUB_LEVEL,
12223                      'PRJ' INVERT_ID
12224               from   DUAL
12225               union all
12226               select 1     WBS_SUP_LEVEL,
12227                      1     WBS_SUB_LEVEL,
12228                      'WBS' INVERT_ID
12229               from   DUAL
12230             ) top_slice
12231           where
12232             prg.STRUCT_TYPE         =  'PRG'                       and
12233             prg.SUP_LEVEL           =  l_level                     and
12234             prg.SUB_LEVEL           =  l_level                     and
12235             -- wbs.WORKER_ID        =  p_worker_id                 and
12236             wbs.STRUCT_TYPE         =  'WBS'                       and
12237             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
12238             -- log.WORKER_ID        =  p_worker_id                 and
12239             log.EVENT_ID            =  g_event_id                  and
12240             log.EVENT_TYPE          in ('WBS_CHANGE',
12241                                         'WBS_PUBLISH')             and
12242             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
12243             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
12244             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
12245             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
12246             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
12247             fpr.RBS_AGGR_LEVEL      =  'T'                         and
12248             fpr.WBS_ROLLUP_FLAG     =  'N'                         and
12249             fpr.PRG_ROLLUP_FLAG     in ('Y', 'N')                  and
12250             fpr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
12251             fpr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
12252             fpr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
12253             fpr.PLAN_VERSION_ID     =  wbs_hdr.PLAN_VERSION_ID     and
12254             fpr.PLAN_TYPE_CODE      =  wbs_hdr.PLAN_TYPE_CODE      and
12255             decode(fpr.PLAN_VERSION_ID,
12256                    -3, fpr.PLAN_TYPE_ID,
12257                    -4, fpr.PLAN_TYPE_ID,
12258                        -1)          =  decode(fpr.PLAN_VERSION_ID,
12259                                               -3, wbs_hdr.PLAN_TYPE_ID,
12260                                               -4, wbs_hdr.PLAN_TYPE_ID,
12261                                                   -1)              and
12262             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
12263             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
12264             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
12265             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
12266             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
12267              (wbs.SUP_LEVEL = 1 and
12268               wbs.SUB_LEVEL = 1))
12269           union all
12270           select /*+ ordered
12271                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
12272                      index(fpr PJI_FP_XBS_ACCUM_F_N1)
12273                      index(prg pji_xbs_denorm_n3) */               -- Bug 10632614
12274                  -- Baseline reversals and fact amounts  (-3 slice)
12275                  -- Current Original reversals and fact amounts  (-4 slice)
12276                  -- Part 1
12277             to_char(null)                             LINE_TYPE,
12278             wbs_hdr.WBS_VERSION_ID,
12279             'LF'                                      RELATIONSHIP_TYPE,
12280             'Y'                                       PUSHUP_FLAG,
12281             decode(fpr.RBS_AGGR_LEVEL,
12282                    'L', 'N', 'Y')                     INSERT_FLAG,
12283             fpr.PROJECT_ID,
12284             fpr.PROJECT_ORG_ID,
12285             fpr.PROJECT_ORGANIZATION_ID,
12286             prg.SUP_EMT_ID                            PROJECT_ELEMENT_ID,
12287             fpr.TIME_ID,
12288             fpr.PERIOD_TYPE_ID,
12289             fpr.CALENDAR_TYPE,
12290             fpr.RBS_AGGR_LEVEL,
12291             'Y'                                       WBS_ROLLUP_FLAG,
12292             fpr.PRG_ROLLUP_FLAG,
12293             fpr.CURR_RECORD_TYPE_ID,
12294             fpr.CURRENCY_CODE,
12295             fpr.RBS_ELEMENT_ID,
12296             fpr.RBS_VERSION_ID,
12297             decode(log.EVENT_TYPE,
12298                    'PLAN_BASELINE', -3,
12299                    'PLAN_ORIGINAL', -4)               PLAN_VERSION_ID,
12300             fpr.PLAN_TYPE_ID,
12301             fpr.PLAN_TYPE_CODE,
12302             decode(fpr.PLAN_VERSION_ID,
12303                    log.ATTRIBUTE3,   -1,
12304                    log.EVENT_OBJECT,  1,
12305                    -3,               -1,
12306                    -4,               -1)
12307               * fpr.RAW_COST                          RAW_COST,
12308             decode(fpr.PLAN_VERSION_ID,
12309                    log.ATTRIBUTE3,   -1,
12310                    log.EVENT_OBJECT,  1,
12311                    -3,               -1,
12312                    -4,               -1)
12313               * fpr.BRDN_COST                         BRDN_COST,
12314             decode(fpr.PLAN_VERSION_ID,
12315                    log.ATTRIBUTE3,   -1,
12316                    log.EVENT_OBJECT,  1,
12317                    -3,               -1,
12318                    -4,               -1)
12319               * fpr.REVENUE                           REVENUE,
12320             decode(fpr.PLAN_VERSION_ID,
12321                    log.ATTRIBUTE3,   -1,
12322                    log.EVENT_OBJECT,  1,
12323                    -3,               -1,
12324                    -4,               -1)
12325               * fpr.BILL_RAW_COST                     BILL_RAW_COST,
12326             decode(fpr.PLAN_VERSION_ID,
12327                    log.ATTRIBUTE3,   -1,
12328                    log.EVENT_OBJECT,  1,
12329                    -3,               -1,
12330                    -4,               -1)
12331               * fpr.BILL_BRDN_COST                    BILL_BRDN_COST,
12332             decode(fpr.PLAN_VERSION_ID,
12333                    log.ATTRIBUTE3,   -1,
12334                    log.EVENT_OBJECT,  1,
12335                    -3,               -1,
12336                    -4,               -1)
12337               * fpr.BILL_LABOR_RAW_COST               BILL_LABOR_RAW_COST,
12338             decode(fpr.PLAN_VERSION_ID,
12339                    log.ATTRIBUTE3,   -1,
12340                    log.EVENT_OBJECT,  1,
12341                    -3,               -1,
12342                    -4,               -1)
12343               * fpr.BILL_LABOR_BRDN_COST              BILL_LABOR_BRDN_COST,
12344             decode(fpr.PLAN_VERSION_ID,
12345                    log.ATTRIBUTE3,   -1,
12346                    log.EVENT_OBJECT,  1,
12347                    -3,               -1,
12348                    -4,               -1)
12349               * fpr.BILL_LABOR_HRS                    BILL_LABOR_HRS,
12350             decode(fpr.PLAN_VERSION_ID,
12351                    log.ATTRIBUTE3,   -1,
12352                    log.EVENT_OBJECT,  1,
12353                    -3,               -1,
12354                    -4,               -1)
12355               * fpr.EQUIPMENT_RAW_COST                EQUIPMENT_RAW_COST,
12356             decode(fpr.PLAN_VERSION_ID,
12357                    log.ATTRIBUTE3,   -1,
12358                    log.EVENT_OBJECT,  1,
12359                    -3,               -1,
12360                    -4,               -1)
12361               * fpr.EQUIPMENT_BRDN_COST               EQUIPMENT_BRDN_COST,
12362             decode(fpr.PLAN_VERSION_ID,
12363                    log.ATTRIBUTE3,   -1,
12364                    log.EVENT_OBJECT,  1,
12365                    -3,               -1,
12366                    -4,               -1)
12367               * fpr.CAPITALIZABLE_RAW_COST            CAPITALIZABLE_RAW_COST,
12368             decode(fpr.PLAN_VERSION_ID,
12369                    log.ATTRIBUTE3,   -1,
12370                    log.EVENT_OBJECT,  1,
12371                    -3,               -1,
12372                    -4,               -1)
12373               * fpr.CAPITALIZABLE_BRDN_COST           CAPITALIZABLE_BRDN_COST,
12374             decode(fpr.PLAN_VERSION_ID,
12375                    log.ATTRIBUTE3,   -1,
12376                    log.EVENT_OBJECT,  1,
12377                    -3,               -1,
12378                    -4,               -1)
12379               * fpr.LABOR_RAW_COST                    LABOR_RAW_COST,
12380             decode(fpr.PLAN_VERSION_ID,
12381                    log.ATTRIBUTE3,   -1,
12382                    log.EVENT_OBJECT,  1,
12383                    -3,               -1,
12384                    -4,               -1)
12385               * fpr.LABOR_BRDN_COST                   LABOR_BRDN_COST,
12386             decode(fpr.PLAN_VERSION_ID,
12387                    log.ATTRIBUTE3,   -1,
12388                    log.EVENT_OBJECT,  1,
12389                    -3,               -1,
12390                    -4,               -1)
12391               * fpr.LABOR_HRS                         LABOR_HRS,
12392             decode(fpr.PLAN_VERSION_ID,
12393                    log.ATTRIBUTE3,   -1,
12394                    log.EVENT_OBJECT,  1,
12395                    -3,               -1,
12396                    -4,               -1)
12397               * fpr.LABOR_REVENUE                     LABOR_REVENUE,
12398             decode(fpr.PLAN_VERSION_ID,
12399                    log.ATTRIBUTE3,   -1,
12400                    log.EVENT_OBJECT,  1,
12401                    -3,               -1,
12402                    -4,               -1)
12403               * fpr.EQUIPMENT_HOURS                   EQUIPMENT_HOURS,
12404             decode(fpr.PLAN_VERSION_ID,
12405                    log.ATTRIBUTE3,   -1,
12406                    log.EVENT_OBJECT,  1,
12407                    -3,               -1,
12408                    -4,               -1)
12409               * fpr.BILLABLE_EQUIPMENT_HOURS          BILLABLE_EQUIPMENT_HOURS,
12410             decode(fpr.PLAN_VERSION_ID,
12411                    log.ATTRIBUTE3,   -1,
12412                    log.EVENT_OBJECT,  1,
12413                    -3,               -1,
12414                    -4,               -1)
12415               * fpr.SUP_INV_COMMITTED_COST            SUP_INV_COMMITTED_COST,
12416             decode(fpr.PLAN_VERSION_ID,
12417                    log.ATTRIBUTE3,   -1,
12418                    log.EVENT_OBJECT,  1,
12419                    -3,               -1,
12420                    -4,               -1)
12421               * fpr.PO_COMMITTED_COST                 PO_COMMITTED_COST,
12422             decode(fpr.PLAN_VERSION_ID,
12423                    log.ATTRIBUTE3,   -1,
12424                    log.EVENT_OBJECT,  1,
12425                    -3,               -1,
12426                    -4,               -1)
12427               * fpr.PR_COMMITTED_COST                 PR_COMMITTED_COST,
12428             decode(fpr.PLAN_VERSION_ID,
12429                    log.ATTRIBUTE3,   -1,
12430                    log.EVENT_OBJECT,  1,
12431                    -3,               -1,
12432                    -4,               -1)
12433               * fpr.OTH_COMMITTED_COST                OTH_COMMITTED_COST,
12434             decode(fpr.PLAN_VERSION_ID,
12435                    log.ATTRIBUTE3,   -1,
12436                    log.EVENT_OBJECT,  1,
12437                    -3,               -1,
12438                    -4,               -1)
12439               * fpr.ACT_LABOR_HRS                     ACT_LABOR_HRS,
12440             decode(fpr.PLAN_VERSION_ID,
12441                    log.ATTRIBUTE3,   -1,
12442                    log.EVENT_OBJECT,  1,
12443                    -3,               -1,
12444                    -4,               -1)
12445               * fpr.ACT_EQUIP_HRS                     ACT_EQUIP_HRS,
12446             decode(fpr.PLAN_VERSION_ID,
12447                    log.ATTRIBUTE3,   -1,
12448                    log.EVENT_OBJECT,  1,
12449                    -3,               -1,
12450                    -4,               -1)
12451               * fpr.ACT_LABOR_BRDN_COST               ACT_LABOR_BRDN_COST,
12452             decode(fpr.PLAN_VERSION_ID,
12453                    log.ATTRIBUTE3,   -1,
12454                    log.EVENT_OBJECT,  1,
12455                    -3,               -1,
12456                    -4,               -1)
12457               * fpr.ACT_EQUIP_BRDN_COST               ACT_EQUIP_BRDN_COST,
12458             decode(fpr.PLAN_VERSION_ID,
12459                    log.ATTRIBUTE3,   -1,
12460                    log.EVENT_OBJECT,  1,
12461                    -3,               -1,
12462                    -4,               -1)
12463               * fpr.ACT_BRDN_COST                     ACT_BRDN_COST,
12464             decode(fpr.PLAN_VERSION_ID,
12465                    log.ATTRIBUTE3,   -1,
12466                    log.EVENT_OBJECT,  1,
12467                    -3,               -1,
12468                    -4,               -1)
12469               * fpr.ACT_RAW_COST                      ACT_RAW_COST,
12470             decode(fpr.PLAN_VERSION_ID,
12471                    log.ATTRIBUTE3,   -1,
12472                    log.EVENT_OBJECT,  1,
12473                    -3,               -1,
12474                    -4,               -1)
12475               * fpr.ACT_REVENUE                       ACT_REVENUE,
12476             decode(fpr.PLAN_VERSION_ID,
12477                    log.ATTRIBUTE3,   -1,
12478                    log.EVENT_OBJECT,  1,
12479                    -3,               -1,
12480                    -4,               -1)
12481               * fpr.ACT_LABOR_RAW_COST                ACT_LABOR_RAW_COST,
12482             decode(fpr.PLAN_VERSION_ID,
12483                    log.ATTRIBUTE3,   -1,
12484                    log.EVENT_OBJECT,  1,
12485                    -3,               -1,
12486                    -4,               -1)
12487               * fpr.ACT_EQUIP_RAW_COST                ACT_EQUIP_RAW_COST,
12488             decode(fpr.PLAN_VERSION_ID,
12489                    log.ATTRIBUTE3,   -1,
12490                    log.EVENT_OBJECT,  1,
12491                    -3,               -1,
12492                    -4,               -1)
12493               * fpr.ETC_LABOR_HRS                     ETC_LABOR_HRS,
12494             decode(fpr.PLAN_VERSION_ID,
12495                    log.ATTRIBUTE3,   -1,
12496                    log.EVENT_OBJECT,  1,
12497                    -3,               -1,
12498                    -4,               -1)
12499               * fpr.ETC_EQUIP_HRS                     ETC_EQUIP_HRS,
12500             decode(fpr.PLAN_VERSION_ID,
12501                    log.ATTRIBUTE3,   -1,
12502                    log.EVENT_OBJECT,  1,
12503                    -3,               -1,
12504                    -4,               -1)
12505               * fpr.ETC_LABOR_BRDN_COST               ETC_LABOR_BRDN_COST,
12506             decode(fpr.PLAN_VERSION_ID,
12507                    log.ATTRIBUTE3,   -1,
12508                    log.EVENT_OBJECT,  1,
12509                    -3,               -1,
12510                    -4,               -1)
12511               * fpr.ETC_EQUIP_BRDN_COST               ETC_EQUIP_BRDN_COST,
12512             decode(fpr.PLAN_VERSION_ID,
12513                    log.ATTRIBUTE3,   -1,
12514                    log.EVENT_OBJECT,  1,
12515                    -3,               -1,
12516                    -4,               -1)
12517               * fpr.ETC_BRDN_COST                     ETC_BRDN_COST,
12518             decode(fpr.PLAN_VERSION_ID,
12519                    log.ATTRIBUTE3,   -1,
12520                    log.EVENT_OBJECT,  1,
12521                    -3,               -1,
12522                    -4,               -1)
12523               * fpr.ETC_RAW_COST                      ETC_RAW_COST,
12524             decode(fpr.PLAN_VERSION_ID,
12525                    log.ATTRIBUTE3,   -1,
12526                    log.EVENT_OBJECT,  1,
12527                    -3,               -1,
12528                    -4,               -1)
12529               * fpr.ETC_LABOR_RAW_COST                ETC_LABOR_RAW_COST,
12530             decode(fpr.PLAN_VERSION_ID,
12531                    log.ATTRIBUTE3,   -1,
12532                    log.EVENT_OBJECT,  1,
12533                    -3,               -1,
12534                    -4,               -1)
12535               * fpr.ETC_EQUIP_RAW_COST                ETC_EQUIP_RAW_COST,
12536             decode(fpr.PLAN_VERSION_ID,
12537                    log.ATTRIBUTE3,   -1,
12538                    log.EVENT_OBJECT,  1,
12539                    -3,               -1,
12540                    -4,               -1)
12541               * fpr.CUSTOM1                           CUSTOM1,
12542             decode(fpr.PLAN_VERSION_ID,
12543                    log.ATTRIBUTE3,   -1,
12544                    log.EVENT_OBJECT,  1,
12545                    -3,               -1,
12546                    -4,               -1)
12547               * fpr.CUSTOM2                           CUSTOM2,
12548             decode(fpr.PLAN_VERSION_ID,
12549                    log.ATTRIBUTE3,   -1,
12550                    log.EVENT_OBJECT,  1,
12551                    -3,               -1,
12552                    -4,               -1)
12553               * fpr.CUSTOM3                           CUSTOM3,
12554             decode(fpr.PLAN_VERSION_ID,
12555                    log.ATTRIBUTE3,   -1,
12556                    log.EVENT_OBJECT,  1,
12557                    -3,               -1,
12558                    -4,               -1)
12559               * fpr.CUSTOM4                           CUSTOM4,
12560             decode(fpr.PLAN_VERSION_ID,
12561                    log.ATTRIBUTE3,   -1,
12562                    log.EVENT_OBJECT,  1,
12563                    -3,               -1,
12564                    -4,               -1)
12565               * fpr.CUSTOM5                           CUSTOM5,
12566             decode(fpr.PLAN_VERSION_ID,
12567                    log.ATTRIBUTE3,   -1,
12568                    log.EVENT_OBJECT,  1,
12569                    -3,               -1,
12570                    -4,               -1)
12571               * fpr.CUSTOM6                           CUSTOM6,
12572             decode(fpr.PLAN_VERSION_ID,
12573                    log.ATTRIBUTE3,   -1,
12574                    log.EVENT_OBJECT,  1,
12575                    -3,               -1,
12576                    -4,               -1)
12577               * fpr.CUSTOM7                           CUSTOM7,
12578             decode(fpr.PLAN_VERSION_ID,
12579                    log.ATTRIBUTE3,   -1,
12580                    log.EVENT_OBJECT,  1,
12581                    -3,               -1,
12582                    -4,               -1)
12583               * fpr.CUSTOM8                           CUSTOM8,
12584             decode(fpr.PLAN_VERSION_ID,
12585                    log.ATTRIBUTE3,   -1,
12586                    log.EVENT_OBJECT,  1,
12587                    -3,               -1,
12588                    -4,               -1)
12589               * fpr.CUSTOM9                           CUSTOM9,
12590             decode(fpr.PLAN_VERSION_ID,
12591                    log.ATTRIBUTE3,   -1,
12592                    log.EVENT_OBJECT,  1,
12593                    -3,               -1,
12594                    -4,               -1)
12595               * fpr.CUSTOM10                          CUSTOM10,
12596             decode(fpr.PLAN_VERSION_ID,
12597                    log.ATTRIBUTE3,   -1,
12598                    log.EVENT_OBJECT,  1,
12599                    -3,               -1,
12600                    -4,               -1)
12601               * fpr.CUSTOM11                          CUSTOM11,
12602             decode(fpr.PLAN_VERSION_ID,
12603                    log.ATTRIBUTE3,   -1,
12604                    log.EVENT_OBJECT,  1,
12605                    -3,               -1,
12606                    -4,               -1)
12607               * fpr.CUSTOM12                          CUSTOM12,
12608             decode(fpr.PLAN_VERSION_ID,
12609                    log.ATTRIBUTE3,   -1,
12610                    log.EVENT_OBJECT,  1,
12611                    -3,               -1,
12612                    -4,               -1)
12613               * fpr.CUSTOM13                          CUSTOM13,
12614             decode(fpr.PLAN_VERSION_ID,
12615                    log.ATTRIBUTE3,   -1,
12616                    log.EVENT_OBJECT,  1,
12617                    -3,               -1,
12618                    -4,               -1)
12619               * fpr.CUSTOM14                          CUSTOM14,
12620             decode(fpr.PLAN_VERSION_ID,
12621                    log.ATTRIBUTE3,   -1,
12622                    log.EVENT_OBJECT,  1,
12623                    -3,               -1,
12624                    -4,               -1)
12625               * fpr.CUSTOM15                          CUSTOM15
12626           from
12627             PA_PJI_PROJ_EVENTS_LOG log,
12628             PJI_PJP_WBS_HEADER     wbs_hdr,
12629             -- Changes done for bug 7354982.
12630             --PJI_XBS_DENORM         prg,
12631             PJI_FP_XBS_ACCUM_F     fpr,
12632             PJI_XBS_DENORM         prg
12633           where
12634             prg.STRUCT_TYPE         =  'PRG'                        and
12635             prg.SUP_LEVEL           =  l_level                      and
12636             prg.SUB_LEVEL           =  l_level                      and
12637             log.EVENT_ID            =  g_event_id                   and
12638             log.EVENT_TYPE          in ('PLAN_BASELINE',
12639                                         'PLAN_ORIGINAL')            and
12640             fpr.PROJECT_ID          =  log.ATTRIBUTE1               and
12641             fpr.PROJECT_ID          =  prg.SUP_PROJECT_ID           and
12642             fpr.PLAN_TYPE_ID        =  log.ATTRIBUTE2               and
12643             fpr.PLAN_VERSION_ID     in (decode(log.EVENT_TYPE,
12644                                                'PLAN_BASELINE', -3,
12645                                                'PLAN_ORIGINAL', -4),
12646                                         log.EVENT_OBJECT)           and
12647             (fpr.RBS_AGGR_LEVEL,
12648              fpr.WBS_ROLLUP_FLAG,
12649              fpr.PRG_ROLLUP_FLAG)   in (('T', 'Y', 'N'),
12650                                         ('T', 'N', 'N'),
12651                                         ('L', 'N', 'N'))            and
12652             fpr.PROJECT_ELEMENT_ID  =  prg.SUB_EMT_ID               and
12653             wbs_hdr.PROJECT_ID      =  fpr.PROJECT_ID               and
12654             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1               and
12655             wbs_hdr.PLAN_VERSION_ID in (log.ATTRIBUTE3,
12656                                         log.EVENT_OBJECT)           and
12657             wbs_hdr.PLAN_VERSION_ID =  decode(sign(fpr.PLAN_VERSION_ID),
12658                                               -1, log.ATTRIBUTE3,
12659                                                   log.EVENT_OBJECT) and
12660             wbs_hdr.PLAN_TYPE_ID    =  log.ATTRIBUTE2               and
12661             wbs_hdr.PLAN_TYPE_CODE  =  fpr.PLAN_TYPE_CODE           and
12662             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                   and
12663              prg.struct_version_id is NULL                               -- added for bug 5882260
12664           union all
12665           select /*+ ordered
12666                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
12667                      index(fpr PJI_FP_XBS_ACCUM_F_N1)
12668                      index(prg pji_xbs_denorm_n3) */                 -- Bug 10632614
12669                  -- Baseline reversals and fact amounts  (-3 slice)
12670                  -- Current Original reversals and fact amounts  (-4 slice)
12671                  -- Part 2
12672             to_char(null)                             LINE_TYPE,
12673             wbs_hdr.WBS_VERSION_ID,
12674             'LF'                                      RELATIONSHIP_TYPE,
12675             'Y'                                       PUSHUP_FLAG,
12676             decode(fpr.RBS_AGGR_LEVEL,
12677                    'L', 'N', 'Y')                     INSERT_FLAG,
12678             fpr.PROJECT_ID,
12679             fpr.PROJECT_ORG_ID,
12680             fpr.PROJECT_ORGANIZATION_ID,
12681             prg.SUP_EMT_ID                            PROJECT_ELEMENT_ID,
12682             fpr.TIME_ID,
12683             fpr.PERIOD_TYPE_ID,
12684             fpr.CALENDAR_TYPE,
12685             fpr.RBS_AGGR_LEVEL,
12686             'Y'                                       WBS_ROLLUP_FLAG,
12687             fpr.PRG_ROLLUP_FLAG,
12688             fpr.CURR_RECORD_TYPE_ID,
12689             fpr.CURRENCY_CODE,
12690             fpr.RBS_ELEMENT_ID,
12691             fpr.RBS_VERSION_ID,
12692             decode(log.EVENT_TYPE,
12693                    'PLAN_BASELINE', -3,
12694                    'PLAN_ORIGINAL', -4)               PLAN_VERSION_ID,
12695             fpr.PLAN_TYPE_ID,
12696             fpr.PLAN_TYPE_CODE,
12697             decode(fpr.PLAN_VERSION_ID,
12698                    log.ATTRIBUTE3,   -1,
12699                    log.EVENT_OBJECT,  1,
12700                    -3,               -1,
12701                    -4,               -1)
12702               * fpr.RAW_COST                          RAW_COST,
12703             decode(fpr.PLAN_VERSION_ID,
12704                    log.ATTRIBUTE3,   -1,
12705                    log.EVENT_OBJECT,  1,
12706                    -3,               -1,
12707                    -4,               -1)
12708               * fpr.BRDN_COST                         BRDN_COST,
12709             decode(fpr.PLAN_VERSION_ID,
12710                    log.ATTRIBUTE3,   -1,
12711                    log.EVENT_OBJECT,  1,
12712                    -3,               -1,
12713                    -4,               -1)
12714               * fpr.REVENUE                           REVENUE,
12715             decode(fpr.PLAN_VERSION_ID,
12716                    log.ATTRIBUTE3,   -1,
12717                    log.EVENT_OBJECT,  1,
12718                    -3,               -1,
12719                    -4,               -1)
12720               * fpr.BILL_RAW_COST                     BILL_RAW_COST,
12721             decode(fpr.PLAN_VERSION_ID,
12722                    log.ATTRIBUTE3,   -1,
12723                    log.EVENT_OBJECT,  1,
12724                    -3,               -1,
12725                    -4,               -1)
12726               * fpr.BILL_BRDN_COST                    BILL_BRDN_COST,
12727             decode(fpr.PLAN_VERSION_ID,
12728                    log.ATTRIBUTE3,   -1,
12729                    log.EVENT_OBJECT,  1,
12730                    -3,               -1,
12731                    -4,               -1)
12732               * fpr.BILL_LABOR_RAW_COST               BILL_LABOR_RAW_COST,
12733             decode(fpr.PLAN_VERSION_ID,
12734                    log.ATTRIBUTE3,   -1,
12735                    log.EVENT_OBJECT,  1,
12736                    -3,               -1,
12737                    -4,               -1)
12738               * fpr.BILL_LABOR_BRDN_COST              BILL_LABOR_BRDN_COST,
12739             decode(fpr.PLAN_VERSION_ID,
12740                    log.ATTRIBUTE3,   -1,
12741                    log.EVENT_OBJECT,  1,
12742                    -3,               -1,
12743                    -4,               -1)
12744               * fpr.BILL_LABOR_HRS                    BILL_LABOR_HRS,
12745             decode(fpr.PLAN_VERSION_ID,
12746                    log.ATTRIBUTE3,   -1,
12747                    log.EVENT_OBJECT,  1,
12748                    -3,               -1,
12749                    -4,               -1)
12750               * fpr.EQUIPMENT_RAW_COST                EQUIPMENT_RAW_COST,
12751             decode(fpr.PLAN_VERSION_ID,
12752                    log.ATTRIBUTE3,   -1,
12753                    log.EVENT_OBJECT,  1,
12754                    -3,               -1,
12755                    -4,               -1)
12756               * fpr.EQUIPMENT_BRDN_COST               EQUIPMENT_BRDN_COST,
12757             decode(fpr.PLAN_VERSION_ID,
12758                    log.ATTRIBUTE3,   -1,
12759                    log.EVENT_OBJECT,  1,
12760                    -3,               -1,
12761                    -4,               -1)
12762               * fpr.CAPITALIZABLE_RAW_COST            CAPITALIZABLE_RAW_COST,
12763             decode(fpr.PLAN_VERSION_ID,
12764                    log.ATTRIBUTE3,   -1,
12765                    log.EVENT_OBJECT,  1,
12766                    -3,               -1,
12767                    -4,               -1)
12768               * fpr.CAPITALIZABLE_BRDN_COST           CAPITALIZABLE_BRDN_COST,
12769             decode(fpr.PLAN_VERSION_ID,
12770                    log.ATTRIBUTE3,   -1,
12771                    log.EVENT_OBJECT,  1,
12772                    -3,               -1,
12773                    -4,               -1)
12774               * fpr.LABOR_RAW_COST                    LABOR_RAW_COST,
12775             decode(fpr.PLAN_VERSION_ID,
12776                    log.ATTRIBUTE3,   -1,
12777                    log.EVENT_OBJECT,  1,
12778                    -3,               -1,
12779                    -4,               -1)
12780               * fpr.LABOR_BRDN_COST                   LABOR_BRDN_COST,
12781             decode(fpr.PLAN_VERSION_ID,
12782                    log.ATTRIBUTE3,   -1,
12783                    log.EVENT_OBJECT,  1,
12784                    -3,               -1,
12785                    -4,               -1)
12786               * fpr.LABOR_HRS                         LABOR_HRS,
12787             decode(fpr.PLAN_VERSION_ID,
12788                    log.ATTRIBUTE3,   -1,
12789                    log.EVENT_OBJECT,  1,
12790                    -3,               -1,
12791                    -4,               -1)
12792               * fpr.LABOR_REVENUE                     LABOR_REVENUE,
12793             decode(fpr.PLAN_VERSION_ID,
12794                    log.ATTRIBUTE3,   -1,
12795                    log.EVENT_OBJECT,  1,
12796                    -3,               -1,
12797                    -4,               -1)
12798               * fpr.EQUIPMENT_HOURS                   EQUIPMENT_HOURS,
12799             decode(fpr.PLAN_VERSION_ID,
12800                    log.ATTRIBUTE3,   -1,
12801                    log.EVENT_OBJECT,  1,
12802                    -3,               -1,
12803                    -4,               -1)
12804               * fpr.BILLABLE_EQUIPMENT_HOURS          BILLABLE_EQUIPMENT_HOURS,
12805             decode(fpr.PLAN_VERSION_ID,
12806                    log.ATTRIBUTE3,   -1,
12807                    log.EVENT_OBJECT,  1,
12808                    -3,               -1,
12809                    -4,               -1)
12810               * fpr.SUP_INV_COMMITTED_COST            SUP_INV_COMMITTED_COST,
12811             decode(fpr.PLAN_VERSION_ID,
12812                    log.ATTRIBUTE3,   -1,
12813                    log.EVENT_OBJECT,  1,
12814                    -3,               -1,
12815                    -4,               -1)
12816               * fpr.PO_COMMITTED_COST                 PO_COMMITTED_COST,
12817             decode(fpr.PLAN_VERSION_ID,
12818                    log.ATTRIBUTE3,   -1,
12819                    log.EVENT_OBJECT,  1,
12820                    -3,               -1,
12821                    -4,               -1)
12822               * fpr.PR_COMMITTED_COST                 PR_COMMITTED_COST,
12823             decode(fpr.PLAN_VERSION_ID,
12824                    log.ATTRIBUTE3,   -1,
12825                    log.EVENT_OBJECT,  1,
12826                    -3,               -1,
12827                    -4,               -1)
12828               * fpr.OTH_COMMITTED_COST                OTH_COMMITTED_COST,
12829             decode(fpr.PLAN_VERSION_ID,
12830                    log.ATTRIBUTE3,   -1,
12831                    log.EVENT_OBJECT,  1,
12832                    -3,               -1,
12833                    -4,               -1)
12834               * fpr.ACT_LABOR_HRS                     ACT_LABOR_HRS,
12835             decode(fpr.PLAN_VERSION_ID,
12836                    log.ATTRIBUTE3,   -1,
12837                    log.EVENT_OBJECT,  1,
12838                    -3,               -1,
12839                    -4,               -1)
12840               * fpr.ACT_EQUIP_HRS                     ACT_EQUIP_HRS,
12841             decode(fpr.PLAN_VERSION_ID,
12842                    log.ATTRIBUTE3,   -1,
12843                    log.EVENT_OBJECT,  1,
12844                    -3,               -1,
12845                    -4,               -1)
12846               * fpr.ACT_LABOR_BRDN_COST               ACT_LABOR_BRDN_COST,
12847             decode(fpr.PLAN_VERSION_ID,
12848                    log.ATTRIBUTE3,   -1,
12849                    log.EVENT_OBJECT,  1,
12850                    -3,               -1,
12851                    -4,               -1)
12852               * fpr.ACT_EQUIP_BRDN_COST               ACT_EQUIP_BRDN_COST,
12853             decode(fpr.PLAN_VERSION_ID,
12854                    log.ATTRIBUTE3,   -1,
12855                    log.EVENT_OBJECT,  1,
12856                    -3,               -1,
12857                    -4,               -1)
12858               * fpr.ACT_BRDN_COST                     ACT_BRDN_COST,
12859             decode(fpr.PLAN_VERSION_ID,
12860                    log.ATTRIBUTE3,   -1,
12861                    log.EVENT_OBJECT,  1,
12862                    -3,               -1,
12863                    -4,               -1)
12864               * fpr.ACT_RAW_COST                      ACT_RAW_COST,
12865             decode(fpr.PLAN_VERSION_ID,
12866                    log.ATTRIBUTE3,   -1,
12867                    log.EVENT_OBJECT,  1,
12868                    -3,               -1,
12869                    -4,               -1)
12870               * fpr.ACT_REVENUE                       ACT_REVENUE,
12871             decode(fpr.PLAN_VERSION_ID,
12872                    log.ATTRIBUTE3,   -1,
12873                    log.EVENT_OBJECT,  1,
12874                    -3,               -1,
12875                    -4,               -1)
12876               * fpr.ACT_LABOR_RAW_COST                ACT_LABOR_RAW_COST,
12877             decode(fpr.PLAN_VERSION_ID,
12878                    log.ATTRIBUTE3,   -1,
12879                    log.EVENT_OBJECT,  1,
12880                    -3,               -1,
12881                    -4,               -1)
12882               * fpr.ACT_EQUIP_RAW_COST                ACT_EQUIP_RAW_COST,
12883             decode(fpr.PLAN_VERSION_ID,
12884                    log.ATTRIBUTE3,   -1,
12885                    log.EVENT_OBJECT,  1,
12886                    -3,               -1,
12887                    -4,               -1)
12888               * fpr.ETC_LABOR_HRS                     ETC_LABOR_HRS,
12889             decode(fpr.PLAN_VERSION_ID,
12890                    log.ATTRIBUTE3,   -1,
12891                    log.EVENT_OBJECT,  1,
12892                    -3,               -1,
12893                    -4,               -1)
12894               * fpr.ETC_EQUIP_HRS                     ETC_EQUIP_HRS,
12895             decode(fpr.PLAN_VERSION_ID,
12896                    log.ATTRIBUTE3,   -1,
12897                    log.EVENT_OBJECT,  1,
12898                    -3,               -1,
12899                    -4,               -1)
12900               * fpr.ETC_LABOR_BRDN_COST               ETC_LABOR_BRDN_COST,
12901             decode(fpr.PLAN_VERSION_ID,
12902                    log.ATTRIBUTE3,   -1,
12903                    log.EVENT_OBJECT,  1,
12904                    -3,               -1,
12905                    -4,               -1)
12906               * fpr.ETC_EQUIP_BRDN_COST               ETC_EQUIP_BRDN_COST,
12907             decode(fpr.PLAN_VERSION_ID,
12908                    log.ATTRIBUTE3,   -1,
12909                    log.EVENT_OBJECT,  1,
12910                    -3,               -1,
12911                    -4,               -1)
12912               * fpr.ETC_BRDN_COST                     ETC_BRDN_COST,
12913             decode(fpr.PLAN_VERSION_ID,
12914                    log.ATTRIBUTE3,   -1,
12915                    log.EVENT_OBJECT,  1,
12916                    -3,               -1,
12917                    -4,               -1)
12918               * fpr.ETC_RAW_COST                      ETC_RAW_COST,
12919             decode(fpr.PLAN_VERSION_ID,
12920                    log.ATTRIBUTE3,   -1,
12921                    log.EVENT_OBJECT,  1,
12922                    -3,               -1,
12923                    -4,               -1)
12924               * fpr.ETC_LABOR_RAW_COST                ETC_LABOR_RAW_COST,
12925             decode(fpr.PLAN_VERSION_ID,
12926                    log.ATTRIBUTE3,   -1,
12927                    log.EVENT_OBJECT,  1,
12928                    -3,               -1,
12929                    -4,               -1)
12930               * fpr.ETC_EQUIP_RAW_COST                ETC_EQUIP_RAW_COST,
12931             decode(fpr.PLAN_VERSION_ID,
12932                    log.ATTRIBUTE3,   -1,
12933                    log.EVENT_OBJECT,  1,
12934                    -3,               -1,
12935                    -4,               -1)
12936               * fpr.CUSTOM1                           CUSTOM1,
12937             decode(fpr.PLAN_VERSION_ID,
12938                    log.ATTRIBUTE3,   -1,
12939                    log.EVENT_OBJECT,  1,
12940                    -3,               -1,
12941                    -4,               -1)
12942               * fpr.CUSTOM2                           CUSTOM2,
12943             decode(fpr.PLAN_VERSION_ID,
12944                    log.ATTRIBUTE3,   -1,
12945                    log.EVENT_OBJECT,  1,
12946                    -3,               -1,
12947                    -4,               -1)
12948               * fpr.CUSTOM3                           CUSTOM3,
12949             decode(fpr.PLAN_VERSION_ID,
12950                    log.ATTRIBUTE3,   -1,
12951                    log.EVENT_OBJECT,  1,
12952                    -3,               -1,
12953                    -4,               -1)
12954               * fpr.CUSTOM4                           CUSTOM4,
12955             decode(fpr.PLAN_VERSION_ID,
12956                    log.ATTRIBUTE3,   -1,
12957                    log.EVENT_OBJECT,  1,
12958                    -3,               -1,
12959                    -4,               -1)
12960               * fpr.CUSTOM5                           CUSTOM5,
12961             decode(fpr.PLAN_VERSION_ID,
12962                    log.ATTRIBUTE3,   -1,
12963                    log.EVENT_OBJECT,  1,
12964                    -3,               -1,
12965                    -4,               -1)
12966               * fpr.CUSTOM6                           CUSTOM6,
12967             decode(fpr.PLAN_VERSION_ID,
12968                    log.ATTRIBUTE3,   -1,
12969                    log.EVENT_OBJECT,  1,
12970                    -3,               -1,
12971                    -4,               -1)
12972               * fpr.CUSTOM7                           CUSTOM7,
12973             decode(fpr.PLAN_VERSION_ID,
12974                    log.ATTRIBUTE3,   -1,
12975                    log.EVENT_OBJECT,  1,
12976                    -3,               -1,
12977                    -4,               -1)
12978               * fpr.CUSTOM8                           CUSTOM8,
12979             decode(fpr.PLAN_VERSION_ID,
12980                    log.ATTRIBUTE3,   -1,
12981                    log.EVENT_OBJECT,  1,
12982                    -3,               -1,
12983                    -4,               -1)
12984               * fpr.CUSTOM9                           CUSTOM9,
12985             decode(fpr.PLAN_VERSION_ID,
12986                    log.ATTRIBUTE3,   -1,
12987                    log.EVENT_OBJECT,  1,
12988                    -3,               -1,
12989                    -4,               -1)
12990               * fpr.CUSTOM10                          CUSTOM10,
12991             decode(fpr.PLAN_VERSION_ID,
12992                    log.ATTRIBUTE3,   -1,
12993                    log.EVENT_OBJECT,  1,
12994                    -3,               -1,
12995                    -4,               -1)
12996               * fpr.CUSTOM11                          CUSTOM11,
12997             decode(fpr.PLAN_VERSION_ID,
12998                    log.ATTRIBUTE3,   -1,
12999                    log.EVENT_OBJECT,  1,
13000                    -3,               -1,
13001                    -4,               -1)
13002               * fpr.CUSTOM12                          CUSTOM12,
13003             decode(fpr.PLAN_VERSION_ID,
13004                    log.ATTRIBUTE3,   -1,
13005                    log.EVENT_OBJECT,  1,
13006                    -3,               -1,
13007                    -4,               -1)
13008               * fpr.CUSTOM13                          CUSTOM13,
13009             decode(fpr.PLAN_VERSION_ID,
13010                    log.ATTRIBUTE3,   -1,
13011                    log.EVENT_OBJECT,  1,
13012                    -3,               -1,
13013                    -4,               -1)
13014               * fpr.CUSTOM14                          CUSTOM14,
13015             decode(fpr.PLAN_VERSION_ID,
13016                    log.ATTRIBUTE3,   -1,
13017                    log.EVENT_OBJECT,  1,
13018                    -3,               -1,
13019                    -4,               -1)
13020               * fpr.CUSTOM15                          CUSTOM15
13021           from
13022             PA_PJI_PROJ_EVENTS_LOG log,
13023             PJI_PJP_WBS_HEADER     wbs_hdr,
13024             -- Changes done for bug 7354982.
13025             --PJI_XBS_DENORM         prg,
13026             PJI_FP_XBS_ACCUM_F     fpr,
13027             PJI_XBS_DENORM         prg
13028           where
13029             prg.STRUCT_TYPE         =  'PRG'                        and
13030             prg.SUP_LEVEL           =  l_level                      and
13031             prg.SUB_LEVEL           =  l_level                      and
13032             log.EVENT_ID            =  g_event_id                   and
13033             log.EVENT_TYPE          in ('PLAN_BASELINE',
13034                                         'PLAN_ORIGINAL')            and
13035             fpr.PROJECT_ID          =  log.ATTRIBUTE1               and
13036             fpr.PROJECT_ID          =  prg.SUP_PROJECT_ID           and
13037             fpr.PLAN_TYPE_ID        =  log.ATTRIBUTE2               and
13038             fpr.PLAN_VERSION_ID     in (log.ATTRIBUTE3,
13039                                         log.EVENT_OBJECT)           and
13040             (fpr.RBS_AGGR_LEVEL,
13041              fpr.WBS_ROLLUP_FLAG,
13042              fpr.PRG_ROLLUP_FLAG)   in (('L', 'N', 'N'))            and
13043             fpr.PROJECT_ELEMENT_ID  <> prg.SUB_EMT_ID               and
13044             wbs_hdr.PROJECT_ID      =  fpr.PROJECT_ID               and
13045             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1               and
13046             wbs_hdr.PLAN_VERSION_ID in (log.ATTRIBUTE3,
13047                                         log.EVENT_OBJECT)           and
13048             wbs_hdr.PLAN_VERSION_ID =  decode(sign(fpr.PLAN_VERSION_ID),
13049                                               -1, log.ATTRIBUTE3,
13050                                                   log.EVENT_OBJECT) and
13051             wbs_hdr.PLAN_TYPE_ID    =  log.ATTRIBUTE2               and
13052             wbs_hdr.PLAN_TYPE_CODE  =  fpr.PLAN_TYPE_CODE           and
13053             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                   and
13054              prg.struct_version_id is NULL                               -- added for bug 5882260
13055           ) pjp,
13056           (
13057           select /*+ ordered
13058                      index(prg PJI_XBS_DENORM_N3)
13059                      index(prj PA_PROJECTS_U1) */
13060             prg.SUP_PROJECT_ID,
13061             prj.ORG_ID                       SUP_PROJECT_ORG_ID,
13062             prj.CARRYING_OUT_ORGANIZATION_ID SUP_PROJECT_ORGANIZATION_ID,
13063             prg.SUP_ID,
13064             prg.SUP_EMT_ID,
13065             prg.SUP_LEVEL,
13066             prg.SUB_ID,
13067             prg.SUB_EMT_ID,
13068             prg.SUB_ROLLUP_ID,
13069             invert.INVERT_VALUE              RELATIONSHIP_TYPE,
13070             decode(prg.RELATIONSHIP_TYPE,
13071                    'LW', 'Y',
13072                    'LF', 'N')                WP_FLAG,
13073             'Y'                              PUSHUP_FLAG
13074           from
13075             PJI_XBS_DENORM        prg,
13076             PA_PROJECTS_ALL       prj,
13077             (
13078               select 'LF' INVERT_ID, 'LF' INVERT_VALUE from dual union all
13079               select 'LW' INVERT_ID, 'LW' INVERT_VALUE from dual union all
13080               select 'A'  INVERT_ID, 'LF' INVERT_VALUE from dual union all
13081               select 'A'  INVERT_ID, 'LW' INVERT_VALUE from dual
13082             ) invert
13083           where
13084             l_level                       > 1                  and
13085             prg.STRUCT_TYPE               = 'PRG'              and
13086             prg.SUB_ROLLUP_ID             is not null          and
13087             prg.SUB_LEVEL                 = l_level            and
13088             -- map.WORKER_ID              = p_worker_id        and
13089             prj.PROJECT_ID                = prg.SUP_PROJECT_ID and
13090             decode(prg.SUB_LEVEL,
13091                    prg.SUP_LEVEL, 'A',
13092                    prg.RELATIONSHIP_TYPE) = invert.INVERT_ID
13093           )                          prg,
13094           PJI_PJP_WBS_HEADER         wbs_hdr,
13095           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
13096           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
13097           PA_PROJ_WORKPLAN_ATTR      sup_wpa
13098         where
13099           pjp.PROJECT_ID         = sub_ver.PROJECT_ID                (+) and
13100           pjp.WBS_VERSION_ID     = sub_ver.ELEMENT_VERSION_ID        (+) and
13101           'STRUCTURE_PUBLISHED'  = sub_ver.STATUS_CODE               (+) and
13102           pjp.WBS_VERSION_ID     = prg.SUB_ID                        (+) and
13103           pjp.RELATIONSHIP_TYPE  = prg.RELATIONSHIP_TYPE             (+) and
13104           pjp.PUSHUP_FLAG        = prg.PUSHUP_FLAG                   (+) and
13105           prg.SUP_PROJECT_ID     = wbs_hdr.PROJECT_ID                (+) and
13106           prg.SUP_ID             = wbs_hdr.WBS_VERSION_ID            (+) and
13107           prg.WP_FLAG            = wbs_hdr.WP_FLAG                   (+) and
13108           'Y'                    = wbs_hdr.WP_FLAG                   (+) and
13109           wbs_hdr.PROJECT_ID     = sup_ver.PROJECT_ID                (+) and
13110           wbs_hdr.WBS_VERSION_ID = sup_ver.ELEMENT_VERSION_ID        (+) and
13111           'STRUCTURE_PUBLISHED'  = sup_ver.STATUS_CODE               (+) and
13112           'Y'                    = sup_ver.LATEST_EFF_PUBLISHED_FLAG (+) and
13113           prg.SUP_EMT_ID         = sup_wpa.PROJ_ELEMENT_ID           (+)
13114         group by
13115           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13116                  pjp.INSERT_FLAG, 'Y'),
13117           pjp.RELATIONSHIP_TYPE,
13118           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13119                  null, sub_ver.STATUS_CODE),
13120           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13121                  null, sup_ver.STATUS_CODE),
13122           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13123                  null, sup_wpa.WP_ENABLE_VERSION_FLAG),
13124           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13125                  null, decode(pjp.PLAN_VERSION_ID,
13126                               -1, prg.SUP_ID,
13127                               -3, prg.SUP_ID,
13128                               -4, prg.SUP_ID,
13129                                   null)),
13130           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13131                  null, decode(pjp.PLAN_VERSION_ID,
13132                               -1, prg.SUP_EMT_ID,
13133                               -3, prg.SUP_EMT_ID,
13134                               -4, prg.SUP_EMT_ID,
13135                                   null)),
13136           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13137                  null, decode(pjp.PLAN_VERSION_ID,
13138                               -1, prg.WP_FLAG,
13139                               -3, prg.WP_FLAG,
13140                               -4, prg.WP_FLAG,
13141                                   null)),
13142           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13143                  l_level, prg.SUP_LEVEL),
13144           pjp.LINE_TYPE,
13145           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13146                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID),
13147           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13148                  pjp.PROJECT_ORG_ID,
13149                  prg.SUP_PROJECT_ORG_ID),
13150           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13151                  pjp.PROJECT_ORGANIZATION_ID,
13152                  prg.SUP_PROJECT_ORGANIZATION_ID),
13153           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13154                  pjp.PROJECT_ELEMENT_ID,
13155                  prg.SUB_ROLLUP_ID),
13156           pjp.TIME_ID,
13157           pjp.PERIOD_TYPE_ID,
13158           pjp.CALENDAR_TYPE,
13159           pjp.RBS_AGGR_LEVEL,
13160           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13161                  pjp.WBS_ROLLUP_FLAG, 'N'),
13162           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13163                  pjp.PRG_ROLLUP_FLAG, 'Y'),
13164           pjp.CURR_RECORD_TYPE_ID,
13165           pjp.CURRENCY_CODE,
13166           pjp.RBS_ELEMENT_ID,
13167           pjp.RBS_VERSION_ID,
13168           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13169                  pjp.PLAN_VERSION_ID,
13170                  decode(pjp.PLAN_VERSION_ID,
13171                         -1, pjp.PLAN_VERSION_ID,
13172                         -2, pjp.PLAN_VERSION_ID,
13173                         -3, pjp.PLAN_VERSION_ID,
13174                         -4, pjp.PLAN_VERSION_ID,
13175                             wbs_hdr.PLAN_VERSION_ID)),
13176           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13177                  pjp.PLAN_TYPE_ID,
13178                  decode(pjp.PLAN_VERSION_ID,
13179                         -1, pjp.PLAN_TYPE_ID,
13180                         -2, pjp.PLAN_TYPE_ID,
13181                         -3, pjp.PLAN_TYPE_ID,
13182                         -4, pjp.PLAN_TYPE_ID,
13183                             wbs_hdr.PLAN_TYPE_ID)),
13184           pjp.PLAN_TYPE_CODE
13185           )                          pjp1_i,
13186           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
13187           PA_PROJ_WORKPLAN_ATTR      sup_wpa
13188         where
13189           pjp1_i.INSERT_FLAG  = 'Y'                                and
13190           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
13191           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
13192           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
13193           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
13194           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
13195           (pjp1_i.SUP_ID is null or
13196            (pjp1_i.SUP_ID is not null and
13197             (sup_fin_ver.PROJECT_ID is not null or
13198              sup_wpa.PROJ_ELEMENT_ID is not null)));
13199 
13200         l_level := l_level - 1;
13201 
13202       end loop;
13203 
13204     end if;
13205 
13206   end ROLLUP_FPR_WBS;
13207 
13208 
13209   -- -----------------------------------------------------
13210   -- procedure ROLLUP_FPR_RBS_SMART_SLICES
13211   --
13212   --   History
13213   --   19-MAR-2004  SVERMETT  Created
13214   --
13215   -- This API will be called for both online and bulk processing.
13216   --
13217   -- -----------------------------------------------------
13218   procedure ROLLUP_FPR_RBS_SMART_SLICES (p_worker_id in number default null) is
13219 
13220     l_process varchar2(30);
13221     l_extraction_type varchar2(30);
13222 
13223   begin
13224 
13225     if (p_worker_id is not null) then
13226 
13227       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
13228 
13229       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_SMART_SLICES(p_worker_id);')) then
13230         return;
13231       end if;
13232 
13233       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
13234 
13235       insert into PJI_FP_AGGR_PJP1 pjp1_i
13236       (
13237         WORKER_ID,
13238         RECORD_TYPE,
13239         PRG_LEVEL,
13240         LINE_TYPE,
13241         PROJECT_ID,
13242         PROJECT_ORG_ID,
13243         PROJECT_ORGANIZATION_ID,
13244         PROJECT_ELEMENT_ID,
13245         TIME_ID,
13246         PERIOD_TYPE_ID,
13247         CALENDAR_TYPE,
13248         RBS_AGGR_LEVEL,
13249         WBS_ROLLUP_FLAG,
13250         PRG_ROLLUP_FLAG,
13251         CURR_RECORD_TYPE_ID,
13252         CURRENCY_CODE,
13253         RBS_ELEMENT_ID,
13254         RBS_VERSION_ID,
13255         PLAN_VERSION_ID,
13256         PLAN_TYPE_ID,
13257         PLAN_TYPE_CODE,
13258         RAW_COST,
13259         BRDN_COST,
13260         REVENUE,
13261         BILL_RAW_COST,
13262         BILL_BRDN_COST,
13263         BILL_LABOR_RAW_COST,
13264         BILL_LABOR_BRDN_COST,
13265         BILL_LABOR_HRS,
13266         EQUIPMENT_RAW_COST,
13267         EQUIPMENT_BRDN_COST,
13268         CAPITALIZABLE_RAW_COST,
13269         CAPITALIZABLE_BRDN_COST,
13270         LABOR_RAW_COST,
13271         LABOR_BRDN_COST,
13272         LABOR_HRS,
13273         LABOR_REVENUE,
13274         EQUIPMENT_HOURS,
13275         BILLABLE_EQUIPMENT_HOURS,
13276         SUP_INV_COMMITTED_COST,
13277         PO_COMMITTED_COST,
13278         PR_COMMITTED_COST,
13279         OTH_COMMITTED_COST,
13280         ACT_LABOR_HRS,
13281         ACT_EQUIP_HRS,
13282         ACT_LABOR_BRDN_COST,
13283         ACT_EQUIP_BRDN_COST,
13284         ACT_BRDN_COST,
13285         ACT_RAW_COST,
13286         ACT_REVENUE,
13287         ACT_LABOR_RAW_COST,
13288         ACT_EQUIP_RAW_COST,
13289         ETC_LABOR_HRS,
13290         ETC_EQUIP_HRS,
13291         ETC_LABOR_BRDN_COST,
13292         ETC_EQUIP_BRDN_COST,
13293         ETC_BRDN_COST,
13294         ETC_RAW_COST,
13295         ETC_LABOR_RAW_COST,
13296         ETC_EQUIP_RAW_COST,
13297         CUSTOM1,
13298         CUSTOM2,
13299         CUSTOM3,
13300         CUSTOM4,
13301         CUSTOM5,
13302         CUSTOM6,
13303         CUSTOM7,
13304         CUSTOM8,
13305         CUSTOM9,
13306         CUSTOM10,
13307         CUSTOM11,
13308         CUSTOM12,
13309         CUSTOM13,
13310         CUSTOM14,
13311         CUSTOM15
13312       )
13313       select
13314         p_worker_id                                   WORKER_ID,
13315         'R'                                           RECORD_TYPE,
13316         pjp1.PRG_LEVEL,
13317         pjp1.LINE_TYPE,
13318         pjp1.PROJECT_ID,
13319         pjp1.PROJECT_ORG_ID,
13320         pjp1.PROJECT_ORGANIZATION_ID,
13321         pjp1.PROJECT_ELEMENT_ID,
13322         pjp1.TIME_ID,
13323         pjp1.PERIOD_TYPE_ID,
13324         pjp1.CALENDAR_TYPE,
13325         pjp1.RBS_AGGR_LEVEL,
13326         pjp1.WBS_ROLLUP_FLAG,
13327         pjp1.PRG_ROLLUP_FLAG,
13328         pjp1.CURR_RECORD_TYPE_ID,
13329         pjp1.CURRENCY_CODE,
13330         pjp1.RBS_ELEMENT_ID,
13331         pjp1.RBS_VERSION_ID,
13332         pjp1.PLAN_VERSION_ID,
13333         pjp1.PLAN_TYPE_ID,
13334         pjp1.PLAN_TYPE_CODE,
13335         sum(pjp1.RAW_COST)                            RAW_COST,
13336         sum(pjp1.BRDN_COST)                           BRDN_COST,
13337         sum(pjp1.REVENUE)                             REVENUE,
13338         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
13339         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
13340         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
13341         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
13342         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
13343         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
13344         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
13345         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
13346         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
13347         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
13348         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
13349         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
13350         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
13351         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
13352         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
13353         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
13354         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
13355         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
13356         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
13357         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
13358         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
13359         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
13360         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
13361         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
13362         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
13363         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
13364         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
13365         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
13366         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
13367         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
13368         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
13369         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
13370         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
13371         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
13372         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
13373         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
13374         sum(pjp1.CUSTOM1)                             CUSTOM1,
13375         sum(pjp1.CUSTOM2)                             CUSTOM2,
13376         sum(pjp1.CUSTOM3)                             CUSTOM3,
13377         sum(pjp1.CUSTOM4)                             CUSTOM4,
13378         sum(pjp1.CUSTOM5)                             CUSTOM5,
13379         sum(pjp1.CUSTOM6)                             CUSTOM6,
13380         sum(pjp1.CUSTOM7)                             CUSTOM7,
13381         sum(pjp1.CUSTOM8)                             CUSTOM8,
13382         sum(pjp1.CUSTOM9)                             CUSTOM9,
13383         sum(pjp1.CUSTOM10)                            CUSTOM10,
13384         sum(pjp1.CUSTOM11)                            CUSTOM11,
13385         sum(pjp1.CUSTOM12)                            CUSTOM12,
13386         sum(pjp1.CUSTOM13)                            CUSTOM13,
13387         sum(pjp1.CUSTOM14)                            CUSTOM14,
13388         sum(pjp1.CUSTOM15)                            CUSTOM15
13389       from
13390         (
13391       select /*+ ordered index(wbs PA_XBS_DENORM_N2) */ -- smart slices
13392         decode(pjp1.RBS_AGGR_LEVEL ||
13393                decode(top_slice.INVERT_ID,
13394                       'PRJ', 'Y',
13395                              decode(wbs.SUP_EMT_ID,
13396                                     wbs.SUB_EMT_ID, 'N', 'Y')),
13397                'LN', 'X', null)                       RECORD_TYPE,
13398         pjp1.PRG_LEVEL,
13399         pjp1.LINE_TYPE,
13400         pjp1.PROJECT_ID,
13401         pjp1.PROJECT_ORG_ID,
13402         pjp1.PROJECT_ORGANIZATION_ID,
13403         decode(top_slice.INVERT_ID,
13404                'PRJ', wbs.STRUCT_EMT_ID,
13405                       nvl(wbs.SUP_EMT_ID,
13406                           pjp1.PROJECT_ELEMENT_ID))   PROJECT_ELEMENT_ID,
13407         pjp1.TIME_ID,
13408         pjp1.PERIOD_TYPE_ID,
13409         pjp1.CALENDAR_TYPE,
13410         pjp1.RBS_AGGR_LEVEL,
13411         decode(top_slice.INVERT_ID,
13412                'PRJ', 'Y',
13413                       decode(wbs.SUP_EMT_ID,
13414                              wbs.SUB_EMT_ID, 'N', 'Y')) WBS_ROLLUP_FLAG,
13415         pjp1.PRG_ROLLUP_FLAG,
13416         pjp1.CURR_RECORD_TYPE_ID,
13417         pjp1.CURRENCY_CODE,
13418         pjp1.RBS_ELEMENT_ID,
13419         pjp1.RBS_VERSION_ID,
13420         pjp1.PLAN_VERSION_ID,
13421         pjp1.PLAN_TYPE_ID,
13422         pjp1.PLAN_TYPE_CODE,
13423         sum(pjp1.RAW_COST)                            RAW_COST,
13424         sum(pjp1.BRDN_COST)                           BRDN_COST,
13425         sum(pjp1.REVENUE)                             REVENUE,
13426         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
13427         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
13428         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
13429         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
13430         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
13431         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
13432         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
13433         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
13434         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
13435         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
13436         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
13437         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
13438         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
13439         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
13440         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
13441         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
13442         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
13443         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
13444         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
13445         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
13446         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
13447         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
13448         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
13449         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
13450         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
13451         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
13452         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
13453         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
13454         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
13455         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
13456         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
13457         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
13458         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
13459         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
13460         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
13461         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
13462         sum(pjp1.CUSTOM1)                             CUSTOM1,
13463         sum(pjp1.CUSTOM2)                             CUSTOM2,
13464         sum(pjp1.CUSTOM3)                             CUSTOM3,
13465         sum(pjp1.CUSTOM4)                             CUSTOM4,
13466         sum(pjp1.CUSTOM5)                             CUSTOM5,
13467         sum(pjp1.CUSTOM6)                             CUSTOM6,
13468         sum(pjp1.CUSTOM7)                             CUSTOM7,
13469         sum(pjp1.CUSTOM8)                             CUSTOM8,
13470         sum(pjp1.CUSTOM9)                             CUSTOM9,
13471         sum(pjp1.CUSTOM10)                            CUSTOM10,
13472         sum(pjp1.CUSTOM11)                            CUSTOM11,
13473         sum(pjp1.CUSTOM12)                            CUSTOM12,
13474         sum(pjp1.CUSTOM13)                            CUSTOM13,
13475         sum(pjp1.CUSTOM14)                            CUSTOM14,
13476         sum(pjp1.CUSTOM15)                            CUSTOM15
13477       from
13478         (
13479         select /*+ ordered */
13480           wbs_hdr.WBS_VERSION_ID,
13481           pjp1.PRG_LEVEL,
13482           pjp1.LINE_TYPE,
13483           pjp1.PROJECT_ID,
13484           pjp1.PROJECT_ORG_ID,
13485           pjp1.PROJECT_ORGANIZATION_ID,
13486           pjp1.PROJECT_ELEMENT_ID,
13487           pjp1.TIME_ID,
13488           pjp1.PERIOD_TYPE_ID,
13489           pjp1.CALENDAR_TYPE,
13490           decode(rbs.SUP_LEVEL,
13491                  rbs.SUB_LEVEL, 'L', 'R')             RBS_AGGR_LEVEL,
13492           pjp1.WBS_ROLLUP_FLAG,
13493           pjp1.PRG_ROLLUP_FLAG,
13494           pjp1.CURR_RECORD_TYPE_ID,
13495           pjp1.CURRENCY_CODE,
13496           rbs.SUP_ID                                  RBS_ELEMENT_ID,
13497           pjp1.RBS_VERSION_ID,
13498           pjp1.PLAN_VERSION_ID,
13499           pjp1.PLAN_TYPE_ID,
13500           pjp1.PLAN_TYPE_CODE,
13501           sum(pjp1.RAW_COST)                          RAW_COST,
13502           sum(pjp1.BRDN_COST)                         BRDN_COST,
13503           sum(pjp1.REVENUE)                           REVENUE,
13504           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
13505           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
13506           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
13507           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
13508           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
13509           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
13510           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
13511           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
13512           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
13513           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
13514           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
13515           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
13516           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
13517           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
13518           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
13519           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
13520           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
13521           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
13522           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
13523           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
13524           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
13525           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
13526           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
13527           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
13528           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
13529           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
13530           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
13531           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
13532           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
13533           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
13534           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
13535           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
13536           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
13537           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
13538           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
13539           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
13540           sum(pjp1.CUSTOM1)                           CUSTOM1,
13541           sum(pjp1.CUSTOM2)                           CUSTOM2,
13542           sum(pjp1.CUSTOM3)                           CUSTOM3,
13543           sum(pjp1.CUSTOM4)                           CUSTOM4,
13544           sum(pjp1.CUSTOM5)                           CUSTOM5,
13545           sum(pjp1.CUSTOM6)                           CUSTOM6,
13546           sum(pjp1.CUSTOM7)                           CUSTOM7,
13547           sum(pjp1.CUSTOM8)                           CUSTOM8,
13548           sum(pjp1.CUSTOM9)                           CUSTOM9,
13549           sum(pjp1.CUSTOM10)                          CUSTOM10,
13550           sum(pjp1.CUSTOM11)                          CUSTOM11,
13551           sum(pjp1.CUSTOM12)                          CUSTOM12,
13552           sum(pjp1.CUSTOM13)                          CUSTOM13,
13553           sum(pjp1.CUSTOM14)                          CUSTOM14,
13554           sum(pjp1.CUSTOM15)                          CUSTOM15
13555         from
13556           PJI_FP_AGGR_PJP1        pjp1,
13557           PJI_ROLLUP_LEVEL_STATUS ss,
13558           PJI_PJP_RBS_HEADER      rbs_hdr,
13559           PJI_PJP_WBS_HEADER      wbs_hdr,
13560           PA_RBS_DENORM           rbs
13561         where
13562           l_extraction_type     <> 'RBS'                   and
13563           rbs.STRUCT_VERSION_ID =  ss.RBS_VERSION_ID       and
13564           pjp1.WORKER_ID        =  p_worker_id             and
13565           pjp1.RBS_AGGR_LEVEL   =  'L'                     and
13566           pjp1.WBS_ROLLUP_FLAG  =  'N'                     and
13567           pjp1.PRG_ROLLUP_FLAG  in ('Y', 'N')              and
13568           pjp1.PROJECT_ID       =  ss.PROJECT_ID           and
13569           pjp1.RBS_VERSION_ID   =  ss.RBS_VERSION_ID       and
13570           pjp1.RBS_ELEMENT_ID   =  rbs.SUB_ID              and
13571           pjp1.PLAN_VERSION_ID  =  ss.PLAN_VERSION_ID      and
13572           pjp1.PLAN_TYPE_CODE   =  ss.PLAN_TYPE_CODE       and
13573           pjp1.PROJECT_ID       =  rbs_hdr.PROJECT_ID      and
13574           pjp1.PLAN_VERSION_ID  =  rbs_hdr.PLAN_VERSION_ID and
13575           pjp1.PLAN_TYPE_CODE   =  rbs_hdr.PLAN_TYPE_CODE  and
13576           pjp1.RBS_VERSION_ID   =  rbs_hdr.RBS_VERSION_ID  and
13577           pjp1.PROJECT_ID       =  wbs_hdr.PROJECT_ID      and
13578           pjp1.PLAN_VERSION_ID  =  wbs_hdr.PLAN_VERSION_ID and
13579           pjp1.PLAN_TYPE_CODE   =  wbs_hdr.PLAN_TYPE_CODE  and
13580           decode(pjp1.PLAN_VERSION_ID,
13581                  -3, pjp1.PLAN_TYPE_ID,
13582                  -4, pjp1.PLAN_TYPE_ID,
13583                      -1)        =  decode(pjp1.PLAN_VERSION_ID,
13584                                           -3, wbs_hdr.PLAN_TYPE_ID,
13585                                           -4, wbs_hdr.PLAN_TYPE_ID,
13586                                               -1)
13587         group by
13588           wbs_hdr.WBS_VERSION_ID,
13589           pjp1.PRG_LEVEL,
13590           pjp1.LINE_TYPE,
13591           pjp1.PROJECT_ID,
13592           pjp1.PROJECT_ORG_ID,
13593           pjp1.PROJECT_ORGANIZATION_ID,
13594           pjp1.PROJECT_ELEMENT_ID,
13595           pjp1.TIME_ID,
13596           pjp1.PERIOD_TYPE_ID,
13597           pjp1.CALENDAR_TYPE,
13598           decode(rbs.SUP_LEVEL,
13599                  rbs.SUB_LEVEL, 'L', 'R'),
13600           pjp1.WBS_ROLLUP_FLAG,
13601           pjp1.PRG_ROLLUP_FLAG,
13602           pjp1.CURR_RECORD_TYPE_ID,
13603           pjp1.CURRENCY_CODE,
13604           rbs.SUP_ID,
13605           pjp1.RBS_VERSION_ID,
13606           pjp1.PLAN_VERSION_ID,
13607           pjp1.PLAN_TYPE_ID,
13608           pjp1.PLAN_TYPE_CODE
13609         )                  pjp1,
13610         PA_XBS_DENORM      wbs,
13611         (
13612           select 1     WBS_SUP_LEVEL,
13613                  'PRJ' INVERT_ID
13614           from   DUAL
13615           union all
13616           select 1     WBS_SUP_LEVEL,
13617                  'WBS' INVERT_ID
13618           from   DUAL
13619         ) top_slice
13620       where
13621         l_extraction_type       <> 'RBS'                       and
13622         'WBS'                   =  wbs.STRUCT_TYPE         (+) and
13623         pjp1.PROJECT_ID         =  wbs.SUP_PROJECT_ID      (+) and
13624         pjp1.WBS_VERSION_ID     =  wbs.STRUCT_VERSION_ID   (+) and
13625         pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID          (+) and
13626         wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+)
13627       group by
13628         decode(pjp1.RBS_AGGR_LEVEL ||
13629                decode(top_slice.INVERT_ID,
13630                       'PRJ', 'Y',
13631                              decode(wbs.SUP_EMT_ID,
13632                                     wbs.SUB_EMT_ID, 'N', 'Y')),
13633                'LN', 'X', null),
13634         pjp1.PRG_LEVEL,
13635         pjp1.LINE_TYPE,
13636         pjp1.PROJECT_ID,
13637         pjp1.PROJECT_ORG_ID,
13638         pjp1.PROJECT_ORGANIZATION_ID,
13639         decode(top_slice.INVERT_ID,
13640                'PRJ', wbs.STRUCT_EMT_ID,
13641                       nvl(wbs.SUP_EMT_ID,
13642                           pjp1.PROJECT_ELEMENT_ID)),
13643         pjp1.TIME_ID,
13644         pjp1.PERIOD_TYPE_ID,
13645         pjp1.CALENDAR_TYPE,
13646         pjp1.RBS_AGGR_LEVEL,
13647         decode(top_slice.INVERT_ID,
13648                'PRJ', 'Y',
13649                       decode(wbs.SUP_EMT_ID,
13650                              wbs.SUB_EMT_ID, 'N', 'Y')),
13651         pjp1.PRG_ROLLUP_FLAG,
13652         pjp1.CURR_RECORD_TYPE_ID,
13653         pjp1.CURRENCY_CODE,
13654         pjp1.RBS_ELEMENT_ID,
13655         pjp1.RBS_VERSION_ID,
13656         pjp1.PLAN_VERSION_ID,
13657         pjp1.PLAN_TYPE_ID,
13658         pjp1.PLAN_TYPE_CODE
13659         ) pjp1
13660       where
13661         nvl(pjp1.RECORD_TYPE, 'Y') = 'Y'
13662       group by
13663         pjp1.PRG_LEVEL,
13664         pjp1.LINE_TYPE,
13665         pjp1.PROJECT_ID,
13666         pjp1.PROJECT_ORG_ID,
13667         pjp1.PROJECT_ORGANIZATION_ID,
13668         pjp1.PROJECT_ELEMENT_ID,
13669         pjp1.TIME_ID,
13670         pjp1.PERIOD_TYPE_ID,
13671         pjp1.CALENDAR_TYPE,
13672         pjp1.RBS_AGGR_LEVEL,
13673         pjp1.WBS_ROLLUP_FLAG,
13674         pjp1.PRG_ROLLUP_FLAG,
13675         pjp1.CURR_RECORD_TYPE_ID,
13676         pjp1.CURRENCY_CODE,
13677         pjp1.RBS_ELEMENT_ID,
13678         pjp1.RBS_VERSION_ID,
13679         pjp1.PLAN_VERSION_ID,
13680         pjp1.PLAN_TYPE_ID,
13681         pjp1.PLAN_TYPE_CODE;
13682 
13683       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_SMART_SLICES(p_worker_id);');
13684 
13685       commit;
13686 
13687     else -- online mode
13688 
13689       insert into PJI_FP_AGGR_PJP1_T pjp1_i
13690       (
13691         WORKER_ID,
13692         RECORD_TYPE,
13693         PRG_LEVEL,
13694         LINE_TYPE,
13695         PROJECT_ID,
13696         PROJECT_ORG_ID,
13697         PROJECT_ORGANIZATION_ID,
13698         PROJECT_ELEMENT_ID,
13699         TIME_ID,
13700         PERIOD_TYPE_ID,
13701         CALENDAR_TYPE,
13702         RBS_AGGR_LEVEL,
13703         WBS_ROLLUP_FLAG,
13704         PRG_ROLLUP_FLAG,
13705         CURR_RECORD_TYPE_ID,
13706         CURRENCY_CODE,
13707         RBS_ELEMENT_ID,
13708         RBS_VERSION_ID,
13709         PLAN_VERSION_ID,
13710         PLAN_TYPE_ID,
13711         PLAN_TYPE_CODE,
13712         RAW_COST,
13713         BRDN_COST,
13714         REVENUE,
13715         BILL_RAW_COST,
13716         BILL_BRDN_COST,
13717         BILL_LABOR_RAW_COST,
13718         BILL_LABOR_BRDN_COST,
13719         BILL_LABOR_HRS,
13720         EQUIPMENT_RAW_COST,
13721         EQUIPMENT_BRDN_COST,
13722         CAPITALIZABLE_RAW_COST,
13723         CAPITALIZABLE_BRDN_COST,
13724         LABOR_RAW_COST,
13725         LABOR_BRDN_COST,
13726         LABOR_HRS,
13727         LABOR_REVENUE,
13728         EQUIPMENT_HOURS,
13729         BILLABLE_EQUIPMENT_HOURS,
13730         SUP_INV_COMMITTED_COST,
13731         PO_COMMITTED_COST,
13732         PR_COMMITTED_COST,
13733         OTH_COMMITTED_COST,
13734         ACT_LABOR_HRS,
13735         ACT_EQUIP_HRS,
13736         ACT_LABOR_BRDN_COST,
13737         ACT_EQUIP_BRDN_COST,
13738         ACT_BRDN_COST,
13739         ACT_RAW_COST,
13740         ACT_REVENUE,
13741         ACT_LABOR_RAW_COST,
13742         ACT_EQUIP_RAW_COST,
13743         ETC_LABOR_HRS,
13744         ETC_EQUIP_HRS,
13745         ETC_LABOR_BRDN_COST,
13746         ETC_EQUIP_BRDN_COST,
13747         ETC_BRDN_COST,
13748         ETC_RAW_COST,
13749         ETC_LABOR_RAW_COST,
13750         ETC_EQUIP_RAW_COST,
13751         CUSTOM1,
13752         CUSTOM2,
13753         CUSTOM3,
13754         CUSTOM4,
13755         CUSTOM5,
13756         CUSTOM6,
13757         CUSTOM7,
13758         CUSTOM8,
13759         CUSTOM9,
13760         CUSTOM10,
13761         CUSTOM11,
13762         CUSTOM12,
13763         CUSTOM13,
13764         CUSTOM14,
13765         CUSTOM15
13766       )
13767       select
13768         1                                             WORKER_ID,
13769         -- p_worker_id                                WORKER_ID,
13770         'R'                                           RECORD_TYPE,
13771         pjp1.PRG_LEVEL,
13772         pjp1.LINE_TYPE,
13773         pjp1.PROJECT_ID,
13774         pjp1.PROJECT_ORG_ID,
13775         pjp1.PROJECT_ORGANIZATION_ID,
13776         pjp1.PROJECT_ELEMENT_ID,
13777         pjp1.TIME_ID,
13778         pjp1.PERIOD_TYPE_ID,
13779         pjp1.CALENDAR_TYPE,
13780         pjp1.RBS_AGGR_LEVEL,
13781         pjp1.WBS_ROLLUP_FLAG,
13782         pjp1.PRG_ROLLUP_FLAG,
13783         pjp1.CURR_RECORD_TYPE_ID,
13784         pjp1.CURRENCY_CODE,
13785         pjp1.RBS_ELEMENT_ID,
13786         pjp1.RBS_VERSION_ID,
13787         pjp1.PLAN_VERSION_ID,
13788         pjp1.PLAN_TYPE_ID,
13789         pjp1.PLAN_TYPE_CODE,
13790         sum(pjp1.RAW_COST)                            RAW_COST,
13791         sum(pjp1.BRDN_COST)                           BRDN_COST,
13792         sum(pjp1.REVENUE)                             REVENUE,
13793         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
13794         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
13795         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
13796         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
13797         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
13798         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
13799         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
13800         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
13801         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
13802         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
13803         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
13804         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
13805         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
13806         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
13807         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
13808         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
13809         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
13810         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
13811         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
13812         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
13813         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
13814         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
13815         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
13816         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
13817         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
13818         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
13819         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
13820         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
13821         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
13822         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
13823         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
13824         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
13825         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
13826         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
13827         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
13828         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
13829         sum(pjp1.CUSTOM1)                             CUSTOM1,
13830         sum(pjp1.CUSTOM2)                             CUSTOM2,
13831         sum(pjp1.CUSTOM3)                             CUSTOM3,
13832         sum(pjp1.CUSTOM4)                             CUSTOM4,
13833         sum(pjp1.CUSTOM5)                             CUSTOM5,
13834         sum(pjp1.CUSTOM6)                             CUSTOM6,
13835         sum(pjp1.CUSTOM7)                             CUSTOM7,
13836         sum(pjp1.CUSTOM8)                             CUSTOM8,
13837         sum(pjp1.CUSTOM9)                             CUSTOM9,
13838         sum(pjp1.CUSTOM10)                            CUSTOM10,
13839         sum(pjp1.CUSTOM11)                            CUSTOM11,
13840         sum(pjp1.CUSTOM12)                            CUSTOM12,
13841         sum(pjp1.CUSTOM13)                            CUSTOM13,
13842         sum(pjp1.CUSTOM14)                            CUSTOM14,
13843         sum(pjp1.CUSTOM15)                            CUSTOM15
13844       from
13845         (
13846       select /*+ ordered index(wbs PA_XBS_DENORM_N2) */ -- smart slices
13847         decode(pjp1.RBS_AGGR_LEVEL ||
13848                decode(top_slice.INVERT_ID,
13849                       'PRJ', 'Y',
13850                              decode(wbs.SUP_EMT_ID,
13851                                     wbs.SUB_EMT_ID, 'N', 'Y')),
13852                'LN', 'X', null)                       RECORD_TYPE,
13853         pjp1.PRG_LEVEL,
13854         pjp1.LINE_TYPE,
13855         pjp1.PROJECT_ID,
13856         pjp1.PROJECT_ORG_ID,
13857         pjp1.PROJECT_ORGANIZATION_ID,
13858         decode(top_slice.INVERT_ID,
13859                'PRJ', wbs.STRUCT_EMT_ID,
13860                       nvl(wbs.SUP_EMT_ID,
13861                           pjp1.PROJECT_ELEMENT_ID))   PROJECT_ELEMENT_ID,
13862         pjp1.TIME_ID,
13863         pjp1.PERIOD_TYPE_ID,
13864         pjp1.CALENDAR_TYPE,
13865         pjp1.RBS_AGGR_LEVEL,
13866         decode(top_slice.INVERT_ID,
13867                'PRJ', 'Y',
13868                       decode(wbs.SUP_EMT_ID,
13869                              wbs.SUB_EMT_ID, 'N', 'Y')) WBS_ROLLUP_FLAG,
13870         pjp1.PRG_ROLLUP_FLAG,
13871         pjp1.CURR_RECORD_TYPE_ID,
13872         pjp1.CURRENCY_CODE,
13873         pjp1.RBS_ELEMENT_ID,
13874         pjp1.RBS_VERSION_ID,
13875         pjp1.PLAN_VERSION_ID,
13876         pjp1.PLAN_TYPE_ID,
13877         pjp1.PLAN_TYPE_CODE,
13878         sum(pjp1.RAW_COST)                            RAW_COST,
13879         sum(pjp1.BRDN_COST)                           BRDN_COST,
13880         sum(pjp1.REVENUE)                             REVENUE,
13881         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
13882         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
13883         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
13884         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
13885         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
13886         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
13887         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
13888         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
13889         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
13890         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
13891         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
13892         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
13893         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
13894         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
13895         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
13896         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
13897         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
13898         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
13899         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
13900         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
13901         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
13902         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
13903         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
13904         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
13905         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
13906         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
13907         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
13908         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
13909         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
13910         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
13911         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
13912         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
13913         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
13914         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
13915         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
13916         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
13917         sum(pjp1.CUSTOM1)                             CUSTOM1,
13918         sum(pjp1.CUSTOM2)                             CUSTOM2,
13919         sum(pjp1.CUSTOM3)                             CUSTOM3,
13920         sum(pjp1.CUSTOM4)                             CUSTOM4,
13921         sum(pjp1.CUSTOM5)                             CUSTOM5,
13922         sum(pjp1.CUSTOM6)                             CUSTOM6,
13923         sum(pjp1.CUSTOM7)                             CUSTOM7,
13924         sum(pjp1.CUSTOM8)                             CUSTOM8,
13925         sum(pjp1.CUSTOM9)                             CUSTOM9,
13926         sum(pjp1.CUSTOM10)                            CUSTOM10,
13927         sum(pjp1.CUSTOM11)                            CUSTOM11,
13928         sum(pjp1.CUSTOM12)                            CUSTOM12,
13929         sum(pjp1.CUSTOM13)                            CUSTOM13,
13930         sum(pjp1.CUSTOM14)                            CUSTOM14,
13931         sum(pjp1.CUSTOM15)                            CUSTOM15
13932       from
13933         (
13934         select /*+ ordered */
13935           wbs_hdr.WBS_VERSION_ID,
13936           pjp1.PRG_LEVEL,
13937           pjp1.LINE_TYPE,
13938           pjp1.PROJECT_ID,
13939           pjp1.PROJECT_ORG_ID,
13940           pjp1.PROJECT_ORGANIZATION_ID,
13941           pjp1.PROJECT_ELEMENT_ID,
13942           pjp1.TIME_ID,
13943           pjp1.PERIOD_TYPE_ID,
13944           pjp1.CALENDAR_TYPE,
13945           decode(rbs.SUP_LEVEL,
13946                  rbs.SUB_LEVEL, 'L', 'R')             RBS_AGGR_LEVEL,
13947           pjp1.WBS_ROLLUP_FLAG,
13948           pjp1.PRG_ROLLUP_FLAG,
13949           pjp1.CURR_RECORD_TYPE_ID,
13950           pjp1.CURRENCY_CODE,
13951           rbs.SUP_ID                                  RBS_ELEMENT_ID,
13952           pjp1.RBS_VERSION_ID,
13953           pjp1.PLAN_VERSION_ID,
13954           pjp1.PLAN_TYPE_ID,
13955           pjp1.PLAN_TYPE_CODE,
13956           sum(pjp1.RAW_COST)                          RAW_COST,
13957           sum(pjp1.BRDN_COST)                         BRDN_COST,
13958           sum(pjp1.REVENUE)                           REVENUE,
13959           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
13960           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
13961           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
13962           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
13963           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
13964           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
13965           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
13966           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
13967           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
13968           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
13969           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
13970           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
13971           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
13972           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
13973           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
13974           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
13975           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
13976           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
13977           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
13978           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
13979           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
13980           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
13981           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
13982           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
13983           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
13984           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
13985           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
13986           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
13987           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
13988           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
13989           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
13990           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
13991           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
13992           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
13993           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
13994           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
13995           sum(pjp1.CUSTOM1)                           CUSTOM1,
13996           sum(pjp1.CUSTOM2)                           CUSTOM2,
13997           sum(pjp1.CUSTOM3)                           CUSTOM3,
13998           sum(pjp1.CUSTOM4)                           CUSTOM4,
13999           sum(pjp1.CUSTOM5)                           CUSTOM5,
14000           sum(pjp1.CUSTOM6)                           CUSTOM6,
14001           sum(pjp1.CUSTOM7)                           CUSTOM7,
14002           sum(pjp1.CUSTOM8)                           CUSTOM8,
14003           sum(pjp1.CUSTOM9)                           CUSTOM9,
14004           sum(pjp1.CUSTOM10)                          CUSTOM10,
14005           sum(pjp1.CUSTOM11)                          CUSTOM11,
14006           sum(pjp1.CUSTOM12)                          CUSTOM12,
14007           sum(pjp1.CUSTOM13)                          CUSTOM13,
14008           sum(pjp1.CUSTOM14)                          CUSTOM14,
14009           sum(pjp1.CUSTOM15)                          CUSTOM15
14010         from
14011           PJI_FP_AGGR_PJP1_T      pjp1,
14012           PJI_ROLLUP_LEVEL_STATUS ss,
14013           PJI_PJP_RBS_HEADER      rbs_hdr,
14014           PJI_PJP_WBS_HEADER      wbs_hdr,
14015           PA_RBS_DENORM           rbs
14016         where
14017           -- l_extraction_type  <> 'RBS'                   and
14018           rbs.STRUCT_VERSION_ID =  ss.RBS_VERSION_ID       and
14019           -- pjp1.WORKER_ID     =  p_worker_id             and
14020           pjp1.RBS_AGGR_LEVEL   =  'L'                     and
14021           pjp1.WBS_ROLLUP_FLAG  =  'N'                     and
14022           pjp1.PRG_ROLLUP_FLAG  in ('Y', 'N')              and
14023           pjp1.PROJECT_ID       =  ss.PROJECT_ID           and
14024           pjp1.RBS_VERSION_ID   =  ss.RBS_VERSION_ID       and
14025           pjp1.RBS_ELEMENT_ID   =  rbs.SUB_ID              and
14026           pjp1.PLAN_VERSION_ID  =  ss.PLAN_VERSION_ID      and
14027           pjp1.PLAN_TYPE_CODE   =  ss.PLAN_TYPE_CODE       and
14028           pjp1.PROJECT_ID       =  rbs_hdr.PROJECT_ID      and
14029           pjp1.PLAN_VERSION_ID  =  rbs_hdr.PLAN_VERSION_ID and
14030           pjp1.PLAN_TYPE_CODE   =  rbs_hdr.PLAN_TYPE_CODE  and
14031           pjp1.RBS_VERSION_ID   =  rbs_hdr.RBS_VERSION_ID  and
14032           pjp1.PROJECT_ID       =  wbs_hdr.PROJECT_ID      and
14033           pjp1.PLAN_VERSION_ID  =  wbs_hdr.PLAN_VERSION_ID and
14034           pjp1.PLAN_TYPE_CODE   =  wbs_hdr.PLAN_TYPE_CODE  and
14035           decode(pjp1.PLAN_VERSION_ID,
14036                  -3, pjp1.PLAN_TYPE_ID,
14037                  -4, pjp1.PLAN_TYPE_ID,
14038                      -1)        =  decode(pjp1.PLAN_VERSION_ID,
14039                                           -3, wbs_hdr.PLAN_TYPE_ID,
14040                                           -4, wbs_hdr.PLAN_TYPE_ID,
14041                                               -1)
14042         group by
14043           wbs_hdr.WBS_VERSION_ID,
14044           pjp1.PRG_LEVEL,
14045           pjp1.LINE_TYPE,
14046           pjp1.PROJECT_ID,
14047           pjp1.PROJECT_ORG_ID,
14048           pjp1.PROJECT_ORGANIZATION_ID,
14049           pjp1.PROJECT_ELEMENT_ID,
14050           pjp1.TIME_ID,
14051           pjp1.PERIOD_TYPE_ID,
14052           pjp1.CALENDAR_TYPE,
14053           decode(rbs.SUP_LEVEL,
14054                  rbs.SUB_LEVEL, 'L', 'R'),
14055           pjp1.WBS_ROLLUP_FLAG,
14056           pjp1.PRG_ROLLUP_FLAG,
14057           pjp1.CURR_RECORD_TYPE_ID,
14058           pjp1.CURRENCY_CODE,
14059           rbs.SUP_ID,
14060           pjp1.RBS_VERSION_ID,
14061           pjp1.PLAN_VERSION_ID,
14062           pjp1.PLAN_TYPE_ID,
14063           pjp1.PLAN_TYPE_CODE
14064         )                  pjp1,
14065         PA_XBS_DENORM      wbs,
14066         (
14067           select 1     WBS_SUP_LEVEL,
14068                  'PRJ' INVERT_ID
14069           from   DUAL
14070           union all
14071           select 1     WBS_SUP_LEVEL,
14072                  'WBS' INVERT_ID
14073           from   DUAL
14074         ) top_slice
14075       where
14076         -- l_extraction_type    <> 'RBS'                       and
14077         'WBS'                   =  wbs.STRUCT_TYPE         (+) and
14078         pjp1.PROJECT_ID         =  wbs.SUP_PROJECT_ID      (+) and
14079         pjp1.WBS_VERSION_ID     =  wbs.STRUCT_VERSION_ID   (+) and
14080         pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID          (+) and
14081         wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+)
14082       group by
14083         decode(pjp1.RBS_AGGR_LEVEL ||
14084                decode(top_slice.INVERT_ID,
14085                       'PRJ', 'Y',
14086                              decode(wbs.SUP_EMT_ID,
14087                                     wbs.SUB_EMT_ID, 'N', 'Y')),
14088                'LN', 'X', null),
14089         pjp1.PRG_LEVEL,
14090         pjp1.LINE_TYPE,
14091         pjp1.PROJECT_ID,
14092         pjp1.PROJECT_ORG_ID,
14093         pjp1.PROJECT_ORGANIZATION_ID,
14094         decode(top_slice.INVERT_ID,
14095                'PRJ', wbs.STRUCT_EMT_ID,
14096                       nvl(wbs.SUP_EMT_ID,
14097                           pjp1.PROJECT_ELEMENT_ID)),
14098         pjp1.TIME_ID,
14099         pjp1.PERIOD_TYPE_ID,
14100         pjp1.CALENDAR_TYPE,
14101         pjp1.RBS_AGGR_LEVEL,
14102         decode(top_slice.INVERT_ID,
14103                'PRJ', 'Y',
14104                       decode(wbs.SUP_EMT_ID,
14105                              wbs.SUB_EMT_ID, 'N', 'Y')),
14106         pjp1.PRG_ROLLUP_FLAG,
14107         pjp1.CURR_RECORD_TYPE_ID,
14108         pjp1.CURRENCY_CODE,
14109         pjp1.RBS_ELEMENT_ID,
14110         pjp1.RBS_VERSION_ID,
14111         pjp1.PLAN_VERSION_ID,
14112         pjp1.PLAN_TYPE_ID,
14113         pjp1.PLAN_TYPE_CODE
14114         ) pjp1
14115       where
14116         nvl(pjp1.RECORD_TYPE, 'Y') = 'Y'
14117       group by
14118         pjp1.PRG_LEVEL,
14119         pjp1.LINE_TYPE,
14120         pjp1.PROJECT_ID,
14121         pjp1.PROJECT_ORG_ID,
14122         pjp1.PROJECT_ORGANIZATION_ID,
14123         pjp1.PROJECT_ELEMENT_ID,
14124         pjp1.TIME_ID,
14125         pjp1.PERIOD_TYPE_ID,
14126         pjp1.CALENDAR_TYPE,
14127         pjp1.RBS_AGGR_LEVEL,
14128         pjp1.WBS_ROLLUP_FLAG,
14129         pjp1.PRG_ROLLUP_FLAG,
14130         pjp1.CURR_RECORD_TYPE_ID,
14131         pjp1.CURRENCY_CODE,
14132         pjp1.RBS_ELEMENT_ID,
14133         pjp1.RBS_VERSION_ID,
14134         pjp1.PLAN_VERSION_ID,
14135         pjp1.PLAN_TYPE_ID,
14136         pjp1.PLAN_TYPE_CODE;
14137 
14138     end if;
14139 
14140   end ROLLUP_FPR_RBS_SMART_SLICES;
14141 
14142 
14143   -- -----------------------------------------------------
14144   -- procedure ROLLUP_ACR_WBS
14145   --
14146   --   History
14147   --   19-MAR-2004  SVERMETT  Created
14148   --
14149   -- This API will be called for both online and bulk processing.
14150   --
14151   -- -----------------------------------------------------
14152   procedure ROLLUP_ACR_WBS (p_worker_id in number default null) is
14153 
14154     l_process         varchar2(30);
14155     l_extraction_type varchar2(30);
14156     l_level           number;
14157     l_max_level       number;
14158     l_step_seq        number;
14159     l_level_seq       number;
14160     l_count           number;
14161 
14162   begin
14163 
14164     if (p_worker_id is not null) then
14165 
14166       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
14167 
14168       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);')) then
14169         return;
14170       end if;
14171 
14172       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
14173 
14174       -- allow recovery after each level is processed
14175 
14176       select
14177         STEP_SEQ
14178       into
14179         l_step_seq
14180       from
14181         PJI_SYSTEM_PRC_STATUS
14182       where
14183         PROCESS_NAME = l_process and
14184         STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);';
14185 
14186       select
14187         count(*)
14188       into
14189         l_count
14190       from
14191         PJI_SYSTEM_PRC_STATUS
14192       where
14193         PROCESS_NAME = l_process and
14194         STEP_NAME like 'ROLLUP_ACR_WBS%';
14195 
14196       if (l_count = 0) then
14197 
14198         select /*+ ordered index(den PJI_XBS_DENORM_N3) use_hash(den) */             /* Modified for Bug 7669026 */
14199           nvl(max(den.SUP_LEVEL), 0)
14200         into
14201           l_level
14202         from
14203           PJI_PJP_PROJ_BATCH_MAP map,
14204           PJI_XBS_DENORM den
14205         where
14206           map.WORKER_ID      = p_worker_id    and
14207           den.STRUCT_TYPE    = 'PRG'          and
14208           den.SUB_LEVEL      = den.SUP_LEVEL  and
14209           den.SUP_PROJECT_ID = map.PROJECT_ID;
14210 
14211         PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
14212                                                'MAX_PROGRAM_LEVEL',
14213                                                l_level);
14214 
14215         for x in 1 .. l_level loop
14216 
14217           insert into PJI_SYSTEM_PRC_STATUS
14218           (
14219             PROCESS_NAME,
14220             STEP_SEQ,
14221             STEP_STATUS,
14222             STEP_NAME,
14223             START_DATE,
14224             END_DATE
14225           )
14226           select
14227             l_process                                             PROCESS_NAME,
14228             to_char(l_step_seq + x / 1000)                        STEP_SEQ,
14229             null                                                  STEP_STATUS,
14230             'ROLLUP_ACR_WBS - level ' || to_char(l_level - x + 1) STEP_NAME,
14231             null                                                  START_DATE,
14232             null                                                  END_DATE
14233           from
14234             DUAL;
14235 
14236         end loop;
14237 
14238       end if;
14239 
14240       l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
14241                      (l_process, 'MAX_PROGRAM_LEVEL');
14242 
14243       select
14244         nvl(to_number(min(STEP_SEQ)), 0)
14245       into
14246         l_level_seq
14247       from
14248         PJI_SYSTEM_PRC_STATUS
14249       where
14250         PROCESS_NAME = l_process and
14251         STEP_NAME like 'ROLLUP_ACR_WBS%' and
14252         STEP_STATUS is null;
14253 
14254       if (l_level_seq = 0) then
14255         l_level := 0;
14256       else
14257         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
14258       end if;
14259 
14260       while (l_level > 0) loop
14261 
14262         update PJI_SYSTEM_PRC_STATUS
14263         set    START_DATE = sysdate
14264         where  PROCESS_NAME = l_process and
14265                STEP_SEQ = l_level_seq;
14266 
14267         -- rollup project hiearchy
14268 /* Call to Paritioned procedure for bug 7551819 */
14269         PJI_PROCESS_UTIL.EXECUTE_ROLLUP_ACR_WBS(p_worker_id,
14270                                                 l_level);
14271 
14272 /* Commented for bug 7551819 */
14273 --         insert /*+ parallel(pjp1_in)
14274   --                 noappend(pjp1_in) */ into PJI_AC_AGGR_PJP1 pjp1_in       -- changed for bug 5927368
14275     /*    (          WORKER_ID,
14276           RECORD_TYPE,
14277           PRG_LEVEL,
14278           PROJECT_ID,
14279           PROJECT_ORG_ID,
14280           PROJECT_ORGANIZATION_ID,
14281           PROJECT_ELEMENT_ID,
14282           TIME_ID,
14283           PERIOD_TYPE_ID,
14284           CALENDAR_TYPE,
14285           WBS_ROLLUP_FLAG,
14286           PRG_ROLLUP_FLAG,
14287           CURR_RECORD_TYPE_ID,
14288           CURRENCY_CODE,
14289           REVENUE,
14290           INITIAL_FUNDING_AMOUNT,
14291           INITIAL_FUNDING_COUNT,
14292           ADDITIONAL_FUNDING_AMOUNT,
14293           ADDITIONAL_FUNDING_COUNT,
14294           CANCELLED_FUNDING_AMOUNT,
14295           CANCELLED_FUNDING_COUNT,
14296           FUNDING_ADJUSTMENT_AMOUNT,
14297           FUNDING_ADJUSTMENT_COUNT,
14298           REVENUE_WRITEOFF,
14299           AR_INVOICE_AMOUNT,
14300           AR_INVOICE_COUNT,
14301           AR_CASH_APPLIED_AMOUNT,
14302           AR_INVOICE_WRITE_OFF_AMOUNT,
14303           AR_INVOICE_WRITEOFF_COUNT,
14304           AR_CREDIT_MEMO_AMOUNT,
14305           AR_CREDIT_MEMO_COUNT,
14306           UNBILLED_RECEIVABLES,
14307           UNEARNED_REVENUE,
14308           AR_UNAPPR_INVOICE_AMOUNT,
14309           AR_UNAPPR_INVOICE_COUNT,
14310           AR_APPR_INVOICE_AMOUNT,
14311           AR_APPR_INVOICE_COUNT,
14312           AR_AMOUNT_DUE,
14313           AR_COUNT_DUE,
14314           AR_AMOUNT_OVERDUE,
14315           AR_COUNT_OVERDUE,
14316           CUSTOM1,
14317           CUSTOM2,
14318           CUSTOM3,
14319           CUSTOM4,
14320           CUSTOM5,
14321           CUSTOM6,
14322           CUSTOM7,
14323           CUSTOM8,
14324           CUSTOM9,
14325           CUSTOM10,
14326           CUSTOM11,
14327           CUSTOM12,
14328           CUSTOM13,
14329           CUSTOM14,
14330           CUSTOM15
14331         )
14332         select
14333           pjp1_i.WORKER_ID,
14334           pjp1_i.RECORD_TYPE,
14335           pjp1_i.PRG_LEVEL,
14336           pjp1_i.PROJECT_ID,
14337           pjp1_i.PROJECT_ORG_ID,
14338           pjp1_i.PROJECT_ORGANIZATION_ID,
14339           pjp1_i.PROJECT_ELEMENT_ID,
14340           pjp1_i.TIME_ID,
14341           pjp1_i.PERIOD_TYPE_ID,
14342           pjp1_i.CALENDAR_TYPE,
14343           pjp1_i.WBS_ROLLUP_FLAG,
14344           pjp1_i.PRG_ROLLUP_FLAG,
14345           pjp1_i.CURR_RECORD_TYPE_ID,
14346           pjp1_i.CURRENCY_CODE,
14347           pjp1_i.REVENUE,
14348           pjp1_i.INITIAL_FUNDING_AMOUNT,
14349           pjp1_i.INITIAL_FUNDING_COUNT,
14350           pjp1_i.ADDITIONAL_FUNDING_AMOUNT,
14351           pjp1_i.ADDITIONAL_FUNDING_COUNT,
14352           pjp1_i.CANCELLED_FUNDING_AMOUNT,
14353           pjp1_i.CANCELLED_FUNDING_COUNT,
14354           pjp1_i.FUNDING_ADJUSTMENT_AMOUNT,
14355           pjp1_i.FUNDING_ADJUSTMENT_COUNT,
14356           pjp1_i.REVENUE_WRITEOFF,
14357           pjp1_i.AR_INVOICE_AMOUNT,
14358           pjp1_i.AR_INVOICE_COUNT,
14359           pjp1_i.AR_CASH_APPLIED_AMOUNT,
14360           pjp1_i.AR_INVOICE_WRITE_OFF_AMOUNT,
14361           pjp1_i.AR_INVOICE_WRITEOFF_COUNT,
14362           pjp1_i.AR_CREDIT_MEMO_AMOUNT,
14363           pjp1_i.AR_CREDIT_MEMO_COUNT,
14364           pjp1_i.UNBILLED_RECEIVABLES,
14365           pjp1_i.UNEARNED_REVENUE,
14366           pjp1_i.AR_UNAPPR_INVOICE_AMOUNT,
14367           pjp1_i.AR_UNAPPR_INVOICE_COUNT,
14368           pjp1_i.AR_APPR_INVOICE_AMOUNT,
14369           pjp1_i.AR_APPR_INVOICE_COUNT,
14370           pjp1_i.AR_AMOUNT_DUE,
14371           pjp1_i.AR_COUNT_DUE,
14372           pjp1_i.AR_AMOUNT_OVERDUE,
14373           pjp1_i.AR_COUNT_OVERDUE,
14374           pjp1_i.CUSTOM1,
14375           pjp1_i.CUSTOM2,
14376           pjp1_i.CUSTOM3,
14377           pjp1_i.CUSTOM4,
14378           pjp1_i.CUSTOM5,
14379           pjp1_i.CUSTOM6,
14380           pjp1_i.CUSTOM7,
14381           pjp1_i.CUSTOM8,
14382           pjp1_i.CUSTOM9,
14383           pjp1_i.CUSTOM10,
14384           pjp1_i.CUSTOM11,
14385           pjp1_i.CUSTOM12,
14386           pjp1_i.CUSTOM13,
14387           pjp1_i.CUSTOM14,
14388           pjp1_i.CUSTOM15
14389         from
14390           (
14391         select
14392           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14393                  pjp.INSERT_FLAG, 'Y')             INSERT_FLAG,
14394           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14395                  null, prg.SUP_ID)                 SUP_ID,
14396           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14397                  null, prg.SUP_EMT_ID)             SUP_EMT_ID,
14398           p_worker_id                              WORKER_ID,
14399           'W'                                      RECORD_TYPE,
14400           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14401                  l_level, prg.SUP_LEVEL)           PRG_LEVEL,
14402           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14403                  pjp.PROJECT_ID,
14404                  prg.SUP_PROJECT_ID)               PROJECT_ID,
14405           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14406                  pjp.PROJECT_ORG_ID,
14407                  prg.SUP_PROJECT_ORG_ID)           PROJECT_ORG_ID,
14408           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14409                  pjp.PROJECT_ORGANIZATION_ID,
14410                  prg.SUP_PROJECT_ORGANIZATION_ID)  PROJECT_ORGANIZATION_ID,
14411           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14412                  pjp.PROJECT_ELEMENT_ID,
14413                  prg.SUB_ROLLUP_ID)                PROJECT_ELEMENT_ID,
14414           pjp.TIME_ID,
14415           pjp.PERIOD_TYPE_ID,
14416           pjp.CALENDAR_TYPE,
14417           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14418                  pjp.WBS_ROLLUP_FLAG, 'N')         WBS_ROLLUP_FLAG,
14419           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14420                  pjp.PRG_ROLLUP_FLAG, 'Y')         PRG_ROLLUP_FLAG,
14421           pjp.CURR_RECORD_TYPE_ID,
14422           pjp.CURRENCY_CODE,
14423           sum(pjp.REVENUE)                         REVENUE,
14424           sum(pjp.INITIAL_FUNDING_AMOUNT)          INITIAL_FUNDING_AMOUNT,
14425           sum(pjp.INITIAL_FUNDING_COUNT)           INITIAL_FUNDING_COUNT,
14426           sum(pjp.ADDITIONAL_FUNDING_AMOUNT)       ADDITIONAL_FUNDING_AMOUNT,
14427           sum(pjp.ADDITIONAL_FUNDING_COUNT)        ADDITIONAL_FUNDING_COUNT,
14428           sum(pjp.CANCELLED_FUNDING_AMOUNT)        CANCELLED_FUNDING_AMOUNT,
14429           sum(pjp.CANCELLED_FUNDING_COUNT)         CANCELLED_FUNDING_COUNT,
14430           sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)       FUNDING_ADJUSTMENT_AMOUNT,
14431           sum(pjp.FUNDING_ADJUSTMENT_COUNT)        FUNDING_ADJUSTMENT_COUNT,
14432           sum(pjp.REVENUE_WRITEOFF)                REVENUE_WRITEOFF,
14433           sum(pjp.AR_INVOICE_AMOUNT)               AR_INVOICE_AMOUNT,
14434           sum(pjp.AR_INVOICE_COUNT)                AR_INVOICE_COUNT,
14435           sum(pjp.AR_CASH_APPLIED_AMOUNT)          AR_CASH_APPLIED_AMOUNT,
14436           sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)     AR_INVOICE_WRITE_OFF_AMOUNT,
14437           sum(pjp.AR_INVOICE_WRITEOFF_COUNT)       AR_INVOICE_WRITEOFF_COUNT,
14438           sum(pjp.AR_CREDIT_MEMO_AMOUNT)           AR_CREDIT_MEMO_AMOUNT,
14439           sum(pjp.AR_CREDIT_MEMO_COUNT)            AR_CREDIT_MEMO_COUNT,
14440           sum(pjp.UNBILLED_RECEIVABLES)            UNBILLED_RECEIVABLES,
14441           sum(pjp.UNEARNED_REVENUE)                UNEARNED_REVENUE,
14442           sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)        AR_UNAPPR_INVOICE_AMOUNT,
14443           sum(pjp.AR_UNAPPR_INVOICE_COUNT)         AR_UNAPPR_INVOICE_COUNT,
14444           sum(pjp.AR_APPR_INVOICE_AMOUNT)          AR_APPR_INVOICE_AMOUNT,
14445           sum(pjp.AR_APPR_INVOICE_COUNT)           AR_APPR_INVOICE_COUNT,
14446           sum(pjp.AR_AMOUNT_DUE)                   AR_AMOUNT_DUE,
14447           sum(pjp.AR_COUNT_DUE)                    AR_COUNT_DUE,
14448           sum(pjp.AR_AMOUNT_OVERDUE)               AR_AMOUNT_OVERDUE,
14449           sum(pjp.AR_COUNT_OVERDUE)                AR_COUNT_OVERDUE,
14450           sum(pjp.CUSTOM1)                         CUSTOM1,
14451           sum(pjp.CUSTOM2)                         CUSTOM2,
14452           sum(pjp.CUSTOM3)                         CUSTOM3,
14453           sum(pjp.CUSTOM4)                         CUSTOM4,
14454           sum(pjp.CUSTOM5)                         CUSTOM5,
14455           sum(pjp.CUSTOM6)                         CUSTOM6,
14456           sum(pjp.CUSTOM7)                         CUSTOM7,
14457           sum(pjp.CUSTOM8)                         CUSTOM8,
14458           sum(pjp.CUSTOM9)                         CUSTOM9,
14459           sum(pjp.CUSTOM10)                        CUSTOM10,
14460           sum(pjp.CUSTOM11)                        CUSTOM11,
14461           sum(pjp.CUSTOM12)                        CUSTOM12,
14462           sum(pjp.CUSTOM13)                        CUSTOM13,
14463           sum(pjp.CUSTOM14)                        CUSTOM14,
14464           sum(pjp.CUSTOM15)                        CUSTOM15
14465         from
14466           (
14467           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
14468                  -- get incremental task level amounts from source and
14469                  -- program rollup amounts from interim
14470             /*wbs_hdr.WBS_VERSION_ID,
14471             'LF'                                      RELATIONSHIP_TYPE,
14472             decode(top_slice.INVERT_ID,
14473                    'PRJ', 'Y',
14474                           decode(wbs.SUB_LEVEL,
14475                                  1, 'Y', 'N'))        PUSHUP_FLAG,
14476             'Y'                                       INSERT_FLAG,
14477             pjp1.PROJECT_ID,
14478             pjp1.PROJECT_ORG_ID,
14479             pjp1.PROJECT_ORGANIZATION_ID,
14480             decode(top_slice.INVERT_ID,
14481                    'PRJ', prg.SUP_EMT_ID,
14482                           decode(wbs.SUB_LEVEL,
14483                                  1, prg.SUP_EMT_ID,
14484                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
14485             pjp1.TIME_ID,
14486             pjp1.PERIOD_TYPE_ID,
14487             pjp1.CALENDAR_TYPE,
14488             'Y'                                       WBS_ROLLUP_FLAG,
14489             pjp1.PRG_ROLLUP_FLAG,
14490             pjp1.CURR_RECORD_TYPE_ID,
14491             pjp1.CURRENCY_CODE,
14492             pjp1.REVENUE,
14493             pjp1.INITIAL_FUNDING_AMOUNT,
14494             pjp1.INITIAL_FUNDING_COUNT,
14495             pjp1.ADDITIONAL_FUNDING_AMOUNT,
14496             pjp1.ADDITIONAL_FUNDING_COUNT,
14497             pjp1.CANCELLED_FUNDING_AMOUNT,
14498             pjp1.CANCELLED_FUNDING_COUNT,
14499             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
14500             pjp1.FUNDING_ADJUSTMENT_COUNT,
14501             pjp1.REVENUE_WRITEOFF,
14502             pjp1.AR_INVOICE_AMOUNT,
14503             pjp1.AR_INVOICE_COUNT,
14504             pjp1.AR_CASH_APPLIED_AMOUNT,
14505             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
14506             pjp1.AR_INVOICE_WRITEOFF_COUNT,
14507             pjp1.AR_CREDIT_MEMO_AMOUNT,
14508             pjp1.AR_CREDIT_MEMO_COUNT,
14509             pjp1.UNBILLED_RECEIVABLES,
14510             pjp1.UNEARNED_REVENUE,
14511             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
14512             pjp1.AR_UNAPPR_INVOICE_COUNT,
14513             pjp1.AR_APPR_INVOICE_AMOUNT,
14514             pjp1.AR_APPR_INVOICE_COUNT,
14515             pjp1.AR_AMOUNT_DUE,
14516             pjp1.AR_COUNT_DUE,
14517             pjp1.AR_AMOUNT_OVERDUE,
14518             pjp1.AR_COUNT_OVERDUE,
14519             pjp1.CUSTOM1,
14520             pjp1.CUSTOM2,
14521             pjp1.CUSTOM3,
14522             pjp1.CUSTOM4,
14523             pjp1.CUSTOM5,
14524             pjp1.CUSTOM6,
14525             pjp1.CUSTOM7,
14526             pjp1.CUSTOM8,
14527             pjp1.CUSTOM9,
14528             pjp1.CUSTOM10,
14529             pjp1.CUSTOM11,
14530             pjp1.CUSTOM12,
14531             pjp1.CUSTOM13,
14532             pjp1.CUSTOM14,
14533             pjp1.CUSTOM15
14534           from
14535             PJI_AC_AGGR_PJP1   pjp1,
14536             PJI_PJP_WBS_HEADER wbs_hdr,
14537             PA_XBS_DENORM      wbs,
14538             PJI_XBS_DENORM     prg,
14539             (
14540               select 1     WBS_SUP_LEVEL,
14541                      1     WBS_SUB_LEVEL,
14542                      'PRJ' INVERT_ID
14543               from   DUAL
14544               union all
14545               select 1     WBS_SUP_LEVEL,
14546                      1     WBS_SUB_LEVEL,
14547                      'WBS' INVERT_ID
14548               from   DUAL
14549             ) top_slice
14550           where
14551             prg.STRUCT_TYPE         =  'PRG'                       and
14552             prg.SUP_LEVEL           =  l_level                     and
14553             prg.SUB_LEVEL           =  l_level                     and
14554             wbs.STRUCT_TYPE         =  'WBS'                       and
14555             ((wbs.SUP_LEVEL = 1 and
14556               wbs.SUB_LEVEL = 1) or
14557              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
14558             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
14559             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
14560             pjp1.WORKER_ID          =  p_worker_id                 and
14561             pjp1.PRG_LEVEL          in (0, l_level)                and
14562             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
14563             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
14564             wbs_hdr.PLAN_VERSION_ID =  -1                          and
14565             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
14566             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
14567             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
14568             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
14569             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
14570           union all
14571           select /*+ ordered */
14572                  -- get incremental project level amounts from source
14573            /* wbs_hdr.WBS_VERSION_ID,
14574             'LF'                                   RELATIONSHIP_TYPE,
14575             'Y'                                    PUSHUP_FLAG,
14576             'N'                                    INSERT_FLAG,
14577             pjp1.PROJECT_ID,
14578             pjp1.PROJECT_ORG_ID,
14579             pjp1.PROJECT_ORGANIZATION_ID,
14580             pjp1.PROJECT_ELEMENT_ID,
14581             pjp1.TIME_ID,
14582             pjp1.PERIOD_TYPE_ID,
14583             pjp1.CALENDAR_TYPE,
14584             'Y'                                    WBS_ROLLUP_FLAG,
14585             pjp1.PRG_ROLLUP_FLAG,
14586             pjp1.CURR_RECORD_TYPE_ID,
14587             pjp1.CURRENCY_CODE,
14588             pjp1.REVENUE,
14589             pjp1.INITIAL_FUNDING_AMOUNT,
14590             pjp1.INITIAL_FUNDING_COUNT,
14591             pjp1.ADDITIONAL_FUNDING_AMOUNT,
14592             pjp1.ADDITIONAL_FUNDING_COUNT,
14593             pjp1.CANCELLED_FUNDING_AMOUNT,
14594             pjp1.CANCELLED_FUNDING_COUNT,
14595             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
14596             pjp1.FUNDING_ADJUSTMENT_COUNT,
14597             pjp1.REVENUE_WRITEOFF,
14598             pjp1.AR_INVOICE_AMOUNT,
14599             pjp1.AR_INVOICE_COUNT,
14600             pjp1.AR_CASH_APPLIED_AMOUNT,
14601             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
14602             pjp1.AR_INVOICE_WRITEOFF_COUNT,
14603             pjp1.AR_CREDIT_MEMO_AMOUNT,
14604             pjp1.AR_CREDIT_MEMO_COUNT,
14605             pjp1.UNBILLED_RECEIVABLES,
14606             pjp1.UNEARNED_REVENUE,
14607             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
14608             pjp1.AR_UNAPPR_INVOICE_COUNT,
14609             pjp1.AR_APPR_INVOICE_AMOUNT,
14610             pjp1.AR_APPR_INVOICE_COUNT,
14611             pjp1.AR_AMOUNT_DUE,
14612             pjp1.AR_COUNT_DUE,
14613             pjp1.AR_AMOUNT_OVERDUE,
14614             pjp1.AR_COUNT_OVERDUE,
14615             pjp1.CUSTOM1,
14616             pjp1.CUSTOM2,
14617             pjp1.CUSTOM3,
14618             pjp1.CUSTOM4,
14619             pjp1.CUSTOM5,
14620             pjp1.CUSTOM6,
14621             pjp1.CUSTOM7,
14622             pjp1.CUSTOM8,
14623             pjp1.CUSTOM9,
14624             pjp1.CUSTOM10,
14625             pjp1.CUSTOM11,
14626             pjp1.CUSTOM12,
14627             pjp1.CUSTOM13,
14628             pjp1.CUSTOM14,
14629             pjp1.CUSTOM15
14630           from
14631             PJI_AC_AGGR_PJP1   pjp1,
14632             PJI_PJP_WBS_HEADER wbs_hdr,
14633             PJI_XBS_DENORM     prg
14634           where
14635             prg.STRUCT_TYPE         = 'PRG'                              and
14636             prg.SUP_LEVEL           = l_level                            and
14637             prg.SUB_LEVEL           = l_level                            and
14638             pjp1.WORKER_ID          = p_worker_id                        and
14639             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID                 and
14640             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID                     and
14641             pjp1.PRG_LEVEL          = 0                                  and
14642             pjp1.WBS_ROLLUP_FLAG    = 'N'                                and
14643             pjp1.PRG_ROLLUP_FLAG    = 'N'                                and
14644             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID                    and
14645             wbs_hdr.PLAN_VERSION_ID = -1                                 and
14646             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID
14647           union all
14648           select /*+ ordered
14649                      index(fpr PJI_AC_XBR_ACCUM_F_N1) */
14650                  -- get delta task level amounts from Reporting Lines
14651             /*wbs_hdr.WBS_VERSION_ID,
14652             'LF'                                   RELATIONSHIP_TYPE,
14653             decode(log.EVENT_TYPE,
14654                    'WBS_CHANGE', 'Y',
14655                    'WBS_PUBLISH', 'N')             PUSHUP_FLAG,
14656             'Y'                                    INSERT_FLAG,
14657             acr.PROJECT_ID,
14658             acr.PROJECT_ORG_ID,
14659             acr.PROJECT_ORGANIZATION_ID,
14660             decode(top_slice.INVERT_ID,
14661                    'PRJ', prg.SUP_EMT_ID,
14662                           decode(wbs.SUB_LEVEL,
14663                                  1, prg.SUP_EMT_ID,
14664                                     wbs.SUP_EMT_ID))
14665                                                    PROJECT_ELEMENT_ID,
14666             acr.TIME_ID,
14667             acr.PERIOD_TYPE_ID,
14668             acr.CALENDAR_TYPE,
14669             'Y'                                    WBS_ROLLUP_FLAG,
14670             acr.PRG_ROLLUP_FLAG,
14671             acr.CURR_RECORD_TYPE_ID,
14672             acr.CURRENCY_CODE,
14673             wbs.SIGN * acr.REVENUE                 REVENUE,
14674             wbs.SIGN * acr.INITIAL_FUNDING_AMOUNT  INITIAL_FUNDING_AMOUNT,
14675             wbs.SIGN * acr.INITIAL_FUNDING_COUNT   INITIAL_FUNDING_COUNT,
14676             wbs.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT
14677                                                    ADDITIONAL_FUNDING_AMOUNT,
14678             wbs.SIGN * acr.ADDITIONAL_FUNDING_COUNT
14679                                                    ADDITIONAL_FUNDING_COUNT,
14680             wbs.SIGN * acr.CANCELLED_FUNDING_AMOUNT
14681                                                    CANCELLED_FUNDING_AMOUNT,
14682             wbs.SIGN * acr.CANCELLED_FUNDING_COUNT CANCELLED_FUNDING_COUNT,
14683             wbs.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT
14684                                                    FUNDING_ADJUSTMENT_AMOUNT,
14685             wbs.SIGN * acr.FUNDING_ADJUSTMENT_COUNT
14686                                                    FUNDING_ADJUSTMENT_COUNT,
14687             wbs.SIGN * acr.REVENUE_WRITEOFF        REVENUE_WRITEOFF,
14688             wbs.SIGN * acr.AR_INVOICE_AMOUNT       AR_INVOICE_AMOUNT,
14689             wbs.SIGN * acr.AR_INVOICE_COUNT        AR_INVOICE_COUNT,
14690             wbs.SIGN * acr.AR_CASH_APPLIED_AMOUNT  AR_CASH_APPLIED_AMOUNT,
14691             wbs.SIGN * acr.AR_INVOICE_WRITE_OFF_AMOUNT
14692                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
14693             wbs.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT
14694                                                    AR_INVOICE_WRITEOFF_COUNT,
14695             wbs.SIGN * acr.AR_CREDIT_MEMO_AMOUNT   AR_CREDIT_MEMO_AMOUNT,
14696             wbs.SIGN * acr.AR_CREDIT_MEMO_COUNT    AR_CREDIT_MEMO_COUNT,
14697             wbs.SIGN * acr.UNBILLED_RECEIVABLES    UNBILLED_RECEIVABLES,
14698             wbs.SIGN * acr.UNEARNED_REVENUE        UNEARNED_REVENUE,
14699             wbs.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT
14700                                                    AR_UNAPPR_INVOICE_AMOUNT,
14701             wbs.SIGN * acr.AR_UNAPPR_INVOICE_COUNT AR_UNAPPR_INVOICE_COUNT,
14702             wbs.SIGN * acr.AR_APPR_INVOICE_AMOUNT  AR_APPR_INVOICE_AMOUNT,
14703             wbs.SIGN * acr.AR_APPR_INVOICE_COUNT   AR_APPR_INVOICE_COUNT,
14704             wbs.SIGN * acr.AR_AMOUNT_DUE           AR_AMOUNT_DUE,
14705             wbs.SIGN * acr.AR_COUNT_DUE            AR_COUNT_DUE,
14706             wbs.SIGN * acr.AR_AMOUNT_OVERDUE       AR_AMOUNT_OVERDUE,
14707             wbs.SIGN * acr.AR_COUNT_OVERDUE        AR_COUNT_OVERDUE,
14708             wbs.SIGN * acr.CUSTOM1                 CUSTOM1,
14709             wbs.SIGN * acr.CUSTOM2                 CUSTOM2,
14710             wbs.SIGN * acr.CUSTOM3                 CUSTOM3,
14711             wbs.SIGN * acr.CUSTOM4                 CUSTOM4,
14712             wbs.SIGN * acr.CUSTOM5                 CUSTOM5,
14713             wbs.SIGN * acr.CUSTOM6                 CUSTOM6,
14714             wbs.SIGN * acr.CUSTOM7                 CUSTOM7,
14715             wbs.SIGN * acr.CUSTOM8                 CUSTOM8,
14716             wbs.SIGN * acr.CUSTOM9                 CUSTOM9,
14717             wbs.SIGN * acr.CUSTOM10                CUSTOM10,
14718             wbs.SIGN * acr.CUSTOM11                CUSTOM11,
14719             wbs.SIGN * acr.CUSTOM12                CUSTOM12,
14720             wbs.SIGN * acr.CUSTOM13                CUSTOM13,
14721             wbs.SIGN * acr.CUSTOM14                CUSTOM14,
14722             wbs.SIGN * acr.CUSTOM15                CUSTOM15
14723           from
14724             PJI_PA_PROJ_EVENTS_LOG log,
14725             PJI_PJP_WBS_HEADER     wbs_hdr,
14726             PJI_XBS_DENORM_DELTA   wbs,
14727             PJI_XBS_DENORM         prg,
14728             PJI_AC_XBS_ACCUM_F     acr,
14729             (
14730               select 1     WBS_SUP_LEVEL,
14731                      1     WBS_SUB_LEVEL,
14732                      'PRJ' INVERT_ID
14733               from   DUAL
14734               union all
14735               select 1     WBS_SUP_LEVEL,
14736                      1     WBS_SUB_LEVEL,
14737                      'WBS' INVERT_ID
14738               from   DUAL
14739             ) top_slice
14740           where
14741             prg.STRUCT_TYPE         =  'PRG'                       and
14742             prg.SUP_LEVEL           =  l_level                     and
14743             prg.SUB_LEVEL           =  l_level                     and
14744             wbs.WORKER_ID           =  p_worker_id                 and
14745             wbs.STRUCT_TYPE         =  'WBS'                       and
14746             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
14747             log.WORKER_ID           =  p_worker_id                 and
14748             log.EVENT_ID            =  wbs.EVENT_ID                and
14749             log.EVENT_TYPE          in ('WBS_CHANGE',
14750                                         'WBS_PUBLISH')             and
14751             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
14752             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
14753             wbs_hdr.PLAN_VERSION_ID =  -1                          and
14754             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
14755             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
14756             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
14757             acr.WBS_ROLLUP_FLAG     =  'N'                         and
14758             acr.PRG_ROLLUP_FLAG     =  'N'                         and
14759             acr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
14760             acr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
14761             acr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
14762             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
14763             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
14764             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
14765              (wbs.SUP_LEVEL = 1 and
14766               wbs.SUB_LEVEL = 1))
14767           ) pjp,
14768           (
14769           select /*+ ordered */
14770             /*prg.SUP_PROJECT_ID,
14771             map.PROJECT_ORG_ID               SUP_PROJECT_ORG_ID,
14772             map.PROJECT_ORGANIZATION_ID      SUP_PROJECT_ORGANIZATION_ID,
14773             prg.SUP_ID,
14774             prg.SUP_EMT_ID,
14775             prg.SUP_LEVEL,
14776             prg.SUB_ID,
14777             prg.SUB_EMT_ID,
14778             prg.SUB_ROLLUP_ID,
14779             prg.RELATIONSHIP_TYPE            RELATIONSHIP_TYPE,
14780             'Y'                              PUSHUP_FLAG
14781           from
14782             PJI_PJP_PROJ_BATCH_MAP map,
14783             PJI_XBS_DENORM         prg,
14784             PJI_XBS_DENORM_DELTA   prg_delta
14785           where
14786             prg.STRUCT_TYPE          = 'PRG'                           and
14787             prg.RELATIONSHIP_TYPE    = 'LF'                            and
14788             prg.SUB_ROLLUP_ID        is not null                       and
14789             prg.SUB_LEVEL            = l_level                         and
14790             map.WORKER_ID            = p_worker_id                     and
14791             map.PROJECT_ID           = prg.SUP_PROJECT_ID              and
14792             p_worker_id              = prg_delta.WORKER_ID         (+) and
14793             prg.STRUCT_TYPE          = prg_delta.STRUCT_TYPE       (+) and
14794             prg.SUP_PROJECT_ID       = prg_delta.SUP_PROJECT_ID    (+) and
14795             prg.SUP_LEVEL            = prg_delta.SUP_LEVEL         (+) and
14796             prg.SUP_ID               = prg_delta.SUP_ID            (+) and
14797             prg.SUB_LEVEL            = prg_delta.SUB_LEVEL         (+) and
14798             prg.SUB_ID               = prg_delta.SUB_ID            (+) and
14799             prg.RELATIONSHIP_TYPE    = prg_delta.RELATIONSHIP_TYPE (+) and
14800             -1                       = prg_delta.SIGN              (+) and
14801             prg_delta.SUP_PROJECT_ID is null
14802           ) prg
14803         where
14804           pjp.WBS_VERSION_ID    = prg.SUB_ID            (+) and
14805           pjp.RELATIONSHIP_TYPE = prg.RELATIONSHIP_TYPE (+) and
14806           pjp.PUSHUP_FLAG       = prg.PUSHUP_FLAG       (+)
14807         group by
14808           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14809                  pjp.INSERT_FLAG, 'Y'),
14810           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14811                  null, prg.SUP_ID),
14812           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14813                  null, prg.SUP_EMT_ID),
14814           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14815                  l_level, prg.SUP_LEVEL),
14816           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14817                  pjp.PROJECT_ID,
14818                  prg.SUP_PROJECT_ID),
14819           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14820                  pjp.PROJECT_ORG_ID,
14821                  prg.SUP_PROJECT_ORG_ID),
14822           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14823                  pjp.PROJECT_ORGANIZATION_ID,
14824                  prg.SUP_PROJECT_ORGANIZATION_ID),
14825           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14826                  pjp.PROJECT_ELEMENT_ID,
14827                  prg.SUB_ROLLUP_ID),
14828           pjp.TIME_ID,
14829           pjp.PERIOD_TYPE_ID,
14830           pjp.CALENDAR_TYPE,
14831           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14832                  pjp.WBS_ROLLUP_FLAG, 'N'),
14833           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
14834                  pjp.PRG_ROLLUP_FLAG, 'Y'),
14835           pjp.CURR_RECORD_TYPE_ID,
14836           pjp.CURRENCY_CODE
14837           )                          pjp1_i,
14838           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
14839           PA_PROJ_WORKPLAN_ATTR      sup_wpa
14840         where
14841           pjp1_i.INSERT_FLAG  = 'Y'                                and
14842           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
14843           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
14844           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
14845           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
14846           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
14847           (pjp1_i.SUP_ID is null or
14848            (pjp1_i.SUP_ID is not null and
14849             (sup_fin_ver.PROJECT_ID is not null or
14850              sup_wpa.PROJ_ELEMENT_ID is not null)));*/
14851 
14852         update PJI_SYSTEM_PRC_STATUS
14853         set    STEP_STATUS = 'C',
14854                END_DATE = sysdate
14855         where  PROCESS_NAME = l_process and
14856                STEP_SEQ = l_level_seq;
14857 
14858         commit;
14859 
14860         select
14861           nvl(to_number(min(STEP_SEQ)), 0)
14862         into
14863           l_level_seq
14864         from
14865           PJI_SYSTEM_PRC_STATUS
14866         where
14867           PROCESS_NAME = l_process and
14868           STEP_NAME like 'ROLLUP_ACR_WBS%' and
14869           STEP_STATUS is null;
14870 
14871         if (l_level_seq = 0) then
14872           l_level := 0;
14873         else
14874           l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
14875         end if;
14876 
14877       end loop;
14878 
14879       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);');
14880 
14881       commit;
14882 
14883     else -- online mode
14884 
14885       -- rollup just WBS for online processing
14886 
14887       select /*+ ordered use_nl(den) */ -- bug 7607077 asahoo - removed index hint
14888         nvl(max(den.SUP_LEVEL), 0)
14889       into
14890         l_level
14891       from
14892         PJI_FM_EXTR_PLNVER3_T ver3,
14893         PJI_XBS_DENORM den
14894       where
14895         den.STRUCT_TYPE    = 'PRG'          and
14896         den.SUB_LEVEL      = den.SUP_LEVEL  and
14897         den.SUP_PROJECT_ID = ver3.PROJECT_ID;
14898 
14899       while (l_level > 0) loop
14900 
14901         -- rollup project hiearchy
14902 
14903         insert into PJI_AC_AGGR_PJP1_T
14904         (
14905           WORKER_ID,
14906           RECORD_TYPE,
14907           PRG_LEVEL,
14908           PROJECT_ID,
14909           PROJECT_ORG_ID,
14910           PROJECT_ORGANIZATION_ID,
14911           PROJECT_ELEMENT_ID,
14912           TIME_ID,
14913           PERIOD_TYPE_ID,
14914           CALENDAR_TYPE,
14915           WBS_ROLLUP_FLAG,
14916           PRG_ROLLUP_FLAG,
14917           CURR_RECORD_TYPE_ID,
14918           CURRENCY_CODE,
14919           REVENUE,
14920           INITIAL_FUNDING_AMOUNT,
14921           INITIAL_FUNDING_COUNT,
14922           ADDITIONAL_FUNDING_AMOUNT,
14923           ADDITIONAL_FUNDING_COUNT,
14924           CANCELLED_FUNDING_AMOUNT,
14925           CANCELLED_FUNDING_COUNT,
14926           FUNDING_ADJUSTMENT_AMOUNT,
14927           FUNDING_ADJUSTMENT_COUNT,
14928           REVENUE_WRITEOFF,
14929           AR_INVOICE_AMOUNT,
14930           AR_INVOICE_COUNT,
14931           AR_CASH_APPLIED_AMOUNT,
14932           AR_INVOICE_WRITE_OFF_AMOUNT,
14933           AR_INVOICE_WRITEOFF_COUNT,
14934           AR_CREDIT_MEMO_AMOUNT,
14935           AR_CREDIT_MEMO_COUNT,
14936           UNBILLED_RECEIVABLES,
14937           UNEARNED_REVENUE,
14938           AR_UNAPPR_INVOICE_AMOUNT,
14939           AR_UNAPPR_INVOICE_COUNT,
14940           AR_APPR_INVOICE_AMOUNT,
14941           AR_APPR_INVOICE_COUNT,
14942           AR_AMOUNT_DUE,
14943           AR_COUNT_DUE,
14944           AR_AMOUNT_OVERDUE,
14945           AR_COUNT_OVERDUE,
14946           CUSTOM1,
14947           CUSTOM2,
14948           CUSTOM3,
14949           CUSTOM4,
14950           CUSTOM5,
14951           CUSTOM6,
14952           CUSTOM7,
14953           CUSTOM8,
14954           CUSTOM9,
14955           CUSTOM10,
14956           CUSTOM11,
14957           CUSTOM12,
14958           CUSTOM13,
14959           CUSTOM14,
14960           CUSTOM15
14961         )
14962         select
14963           pjp1_i.WORKER_ID,
14964           pjp1_i.RECORD_TYPE,
14965           pjp1_i.PRG_LEVEL,
14966           pjp1_i.PROJECT_ID,
14967           pjp1_i.PROJECT_ORG_ID,
14968           pjp1_i.PROJECT_ORGANIZATION_ID,
14969           pjp1_i.PROJECT_ELEMENT_ID,
14970           pjp1_i.TIME_ID,
14971           pjp1_i.PERIOD_TYPE_ID,
14972           pjp1_i.CALENDAR_TYPE,
14973           pjp1_i.WBS_ROLLUP_FLAG,
14974           pjp1_i.PRG_ROLLUP_FLAG,
14975           pjp1_i.CURR_RECORD_TYPE_ID,
14976           pjp1_i.CURRENCY_CODE,
14977           pjp1_i.REVENUE,
14978           pjp1_i.INITIAL_FUNDING_AMOUNT,
14979           pjp1_i.INITIAL_FUNDING_COUNT,
14980           pjp1_i.ADDITIONAL_FUNDING_AMOUNT,
14981           pjp1_i.ADDITIONAL_FUNDING_COUNT,
14982           pjp1_i.CANCELLED_FUNDING_AMOUNT,
14983           pjp1_i.CANCELLED_FUNDING_COUNT,
14984           pjp1_i.FUNDING_ADJUSTMENT_AMOUNT,
14985           pjp1_i.FUNDING_ADJUSTMENT_COUNT,
14986           pjp1_i.REVENUE_WRITEOFF,
14987           pjp1_i.AR_INVOICE_AMOUNT,
14988           pjp1_i.AR_INVOICE_COUNT,
14989           pjp1_i.AR_CASH_APPLIED_AMOUNT,
14990           pjp1_i.AR_INVOICE_WRITE_OFF_AMOUNT,
14991           pjp1_i.AR_INVOICE_WRITEOFF_COUNT,
14992           pjp1_i.AR_CREDIT_MEMO_AMOUNT,
14993           pjp1_i.AR_CREDIT_MEMO_COUNT,
14994           pjp1_i.UNBILLED_RECEIVABLES,
14995           pjp1_i.UNEARNED_REVENUE,
14996           pjp1_i.AR_UNAPPR_INVOICE_AMOUNT,
14997           pjp1_i.AR_UNAPPR_INVOICE_COUNT,
14998           pjp1_i.AR_APPR_INVOICE_AMOUNT,
14999           pjp1_i.AR_APPR_INVOICE_COUNT,
15000           pjp1_i.AR_AMOUNT_DUE,
15001           pjp1_i.AR_COUNT_DUE,
15002           pjp1_i.AR_AMOUNT_OVERDUE,
15003           pjp1_i.AR_COUNT_OVERDUE,
15004           pjp1_i.CUSTOM1,
15005           pjp1_i.CUSTOM2,
15006           pjp1_i.CUSTOM3,
15007           pjp1_i.CUSTOM4,
15008           pjp1_i.CUSTOM5,
15009           pjp1_i.CUSTOM6,
15010           pjp1_i.CUSTOM7,
15011           pjp1_i.CUSTOM8,
15012           pjp1_i.CUSTOM9,
15013           pjp1_i.CUSTOM10,
15014           pjp1_i.CUSTOM11,
15015           pjp1_i.CUSTOM12,
15016           pjp1_i.CUSTOM13,
15017           pjp1_i.CUSTOM14,
15018           pjp1_i.CUSTOM15
15019         from
15020           (
15021         select
15022           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15023                  pjp.INSERT_FLAG, 'Y')             INSERT_FLAG,
15024           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15025                  null, prg.SUP_ID)                 SUP_ID,
15026           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15027                  null, prg.SUP_EMT_ID)             SUP_EMT_ID,
15028           1                                        WORKER_ID,
15029           -- p_worker_id                           WORKER_ID,
15030           'W'                                      RECORD_TYPE,
15031           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15032                  l_level, prg.SUP_LEVEL)           PRG_LEVEL,
15033           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15034                  pjp.PROJECT_ID,
15035                  prg.SUP_PROJECT_ID)               PROJECT_ID,
15036           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15037                  pjp.PROJECT_ORG_ID,
15038                  prg.SUP_PROJECT_ORG_ID)           PROJECT_ORG_ID,
15039           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15040                  pjp.PROJECT_ORGANIZATION_ID,
15041                  prg.SUP_PROJECT_ORGANIZATION_ID)  PROJECT_ORGANIZATION_ID,
15042           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15043                  pjp.PROJECT_ELEMENT_ID,
15044                  prg.SUB_ROLLUP_ID)                PROJECT_ELEMENT_ID,
15045           pjp.TIME_ID,
15046           pjp.PERIOD_TYPE_ID,
15047           pjp.CALENDAR_TYPE,
15048           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15049                  pjp.WBS_ROLLUP_FLAG, 'N')         WBS_ROLLUP_FLAG,
15050           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15051                  pjp.PRG_ROLLUP_FLAG, 'Y')         PRG_ROLLUP_FLAG,
15052           pjp.CURR_RECORD_TYPE_ID,
15053           pjp.CURRENCY_CODE,
15054           sum(pjp.REVENUE)                         REVENUE,
15055           sum(pjp.INITIAL_FUNDING_AMOUNT)          INITIAL_FUNDING_AMOUNT,
15056           sum(pjp.INITIAL_FUNDING_COUNT)           INITIAL_FUNDING_COUNT,
15057           sum(pjp.ADDITIONAL_FUNDING_AMOUNT)       ADDITIONAL_FUNDING_AMOUNT,
15058           sum(pjp.ADDITIONAL_FUNDING_COUNT)        ADDITIONAL_FUNDING_COUNT,
15059           sum(pjp.CANCELLED_FUNDING_AMOUNT)        CANCELLED_FUNDING_AMOUNT,
15060           sum(pjp.CANCELLED_FUNDING_COUNT)         CANCELLED_FUNDING_COUNT,
15061           sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)       FUNDING_ADJUSTMENT_AMOUNT,
15062           sum(pjp.FUNDING_ADJUSTMENT_COUNT)        FUNDING_ADJUSTMENT_COUNT,
15063           sum(pjp.REVENUE_WRITEOFF)                REVENUE_WRITEOFF,
15064           sum(pjp.AR_INVOICE_AMOUNT)               AR_INVOICE_AMOUNT,
15065           sum(pjp.AR_INVOICE_COUNT)                AR_INVOICE_COUNT,
15066           sum(pjp.AR_CASH_APPLIED_AMOUNT)          AR_CASH_APPLIED_AMOUNT,
15067           sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)     AR_INVOICE_WRITE_OFF_AMOUNT,
15068           sum(pjp.AR_INVOICE_WRITEOFF_COUNT)       AR_INVOICE_WRITEOFF_COUNT,
15069           sum(pjp.AR_CREDIT_MEMO_AMOUNT)           AR_CREDIT_MEMO_AMOUNT,
15070           sum(pjp.AR_CREDIT_MEMO_COUNT)            AR_CREDIT_MEMO_COUNT,
15071           sum(pjp.UNBILLED_RECEIVABLES)            UNBILLED_RECEIVABLES,
15072           sum(pjp.UNEARNED_REVENUE)                UNEARNED_REVENUE,
15073           sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)        AR_UNAPPR_INVOICE_AMOUNT,
15074           sum(pjp.AR_UNAPPR_INVOICE_COUNT)         AR_UNAPPR_INVOICE_COUNT,
15075           sum(pjp.AR_APPR_INVOICE_AMOUNT)          AR_APPR_INVOICE_AMOUNT,
15076           sum(pjp.AR_APPR_INVOICE_COUNT)           AR_APPR_INVOICE_COUNT,
15077           sum(pjp.AR_AMOUNT_DUE)                   AR_AMOUNT_DUE,
15078           sum(pjp.AR_COUNT_DUE)                    AR_COUNT_DUE,
15079           sum(pjp.AR_AMOUNT_OVERDUE)               AR_AMOUNT_OVERDUE,
15080           sum(pjp.AR_COUNT_OVERDUE)                AR_COUNT_OVERDUE,
15081           sum(pjp.CUSTOM1)                         CUSTOM1,
15082           sum(pjp.CUSTOM2)                         CUSTOM2,
15083           sum(pjp.CUSTOM3)                         CUSTOM3,
15084           sum(pjp.CUSTOM4)                         CUSTOM4,
15085           sum(pjp.CUSTOM5)                         CUSTOM5,
15086           sum(pjp.CUSTOM6)                         CUSTOM6,
15087           sum(pjp.CUSTOM7)                         CUSTOM7,
15088           sum(pjp.CUSTOM8)                         CUSTOM8,
15089           sum(pjp.CUSTOM9)                         CUSTOM9,
15090           sum(pjp.CUSTOM10)                        CUSTOM10,
15091           sum(pjp.CUSTOM11)                        CUSTOM11,
15092           sum(pjp.CUSTOM12)                        CUSTOM12,
15093           sum(pjp.CUSTOM13)                        CUSTOM13,
15094           sum(pjp.CUSTOM14)                        CUSTOM14,
15095           sum(pjp.CUSTOM15)                        CUSTOM15
15096         from
15097           (
15098           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
15099                  -- get incremental task level amounts from source and
15100                  -- program rollup amounts from interim
15101             wbs_hdr.WBS_VERSION_ID,
15102             'LF'                                      RELATIONSHIP_TYPE,
15103             decode(top_slice.INVERT_ID,
15104                    'PRJ', 'Y',
15105                           decode(wbs.SUB_LEVEL,
15106                                  1, 'Y', 'N'))        PUSHUP_FLAG,
15107             'Y'                                       INSERT_FLAG,
15108             pjp1.PROJECT_ID,
15109             pjp1.PROJECT_ORG_ID,
15110             pjp1.PROJECT_ORGANIZATION_ID,
15111             decode(top_slice.INVERT_ID,
15112                    'PRJ', prg.SUP_EMT_ID,
15113                           decode(wbs.SUB_LEVEL,
15114                                  1, prg.SUP_EMT_ID,
15115                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
15116             pjp1.TIME_ID,
15117             pjp1.PERIOD_TYPE_ID,
15118             pjp1.CALENDAR_TYPE,
15119             'Y'                                       WBS_ROLLUP_FLAG,
15120             pjp1.PRG_ROLLUP_FLAG,
15121             pjp1.CURR_RECORD_TYPE_ID,
15122             pjp1.CURRENCY_CODE,
15123             pjp1.REVENUE,
15124             pjp1.INITIAL_FUNDING_AMOUNT,
15125             pjp1.INITIAL_FUNDING_COUNT,
15126             pjp1.ADDITIONAL_FUNDING_AMOUNT,
15127             pjp1.ADDITIONAL_FUNDING_COUNT,
15128             pjp1.CANCELLED_FUNDING_AMOUNT,
15129             pjp1.CANCELLED_FUNDING_COUNT,
15130             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
15131             pjp1.FUNDING_ADJUSTMENT_COUNT,
15132             pjp1.REVENUE_WRITEOFF,
15133             pjp1.AR_INVOICE_AMOUNT,
15134             pjp1.AR_INVOICE_COUNT,
15135             pjp1.AR_CASH_APPLIED_AMOUNT,
15136             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
15137             pjp1.AR_INVOICE_WRITEOFF_COUNT,
15138             pjp1.AR_CREDIT_MEMO_AMOUNT,
15139             pjp1.AR_CREDIT_MEMO_COUNT,
15140             pjp1.UNBILLED_RECEIVABLES,
15141             pjp1.UNEARNED_REVENUE,
15142             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
15143             pjp1.AR_UNAPPR_INVOICE_COUNT,
15144             pjp1.AR_APPR_INVOICE_AMOUNT,
15145             pjp1.AR_APPR_INVOICE_COUNT,
15146             pjp1.AR_AMOUNT_DUE,
15147             pjp1.AR_COUNT_DUE,
15148             pjp1.AR_AMOUNT_OVERDUE,
15149             pjp1.AR_COUNT_OVERDUE,
15150             pjp1.CUSTOM1,
15151             pjp1.CUSTOM2,
15152             pjp1.CUSTOM3,
15153             pjp1.CUSTOM4,
15154             pjp1.CUSTOM5,
15155             pjp1.CUSTOM6,
15156             pjp1.CUSTOM7,
15157             pjp1.CUSTOM8,
15158             pjp1.CUSTOM9,
15159             pjp1.CUSTOM10,
15160             pjp1.CUSTOM11,
15161             pjp1.CUSTOM12,
15162             pjp1.CUSTOM13,
15163             pjp1.CUSTOM14,
15164             pjp1.CUSTOM15
15165           from
15166             PJI_AC_AGGR_PJP1_T pjp1,
15167             PJI_PJP_WBS_HEADER wbs_hdr,
15168             PA_XBS_DENORM      wbs,
15169             PJI_XBS_DENORM     prg,
15170             (
15171               select 1     WBS_SUP_LEVEL,
15172                      1     WBS_SUB_LEVEL,
15173                      'PRJ' INVERT_ID
15174               from   DUAL
15175               union all
15176               select 1     WBS_SUP_LEVEL,
15177                      1     WBS_SUB_LEVEL,
15178                      'WBS' INVERT_ID
15179               from   DUAL
15180             ) top_slice
15181           where
15182             prg.STRUCT_TYPE         =  'PRG'                       and
15183             prg.SUP_LEVEL           =  l_level                     and
15184             prg.SUB_LEVEL           =  l_level                     and
15185             wbs.STRUCT_TYPE         =  'WBS'                       and
15186             ((wbs.SUP_LEVEL = 1 and
15187               wbs.SUB_LEVEL = 1) or
15188              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
15189             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
15190             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
15191             -- pjp1.WORKER_ID       =  p_worker_id                 and
15192             pjp1.PRG_LEVEL          in (0, l_level)                and
15193             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
15194             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
15195             wbs_hdr.PLAN_VERSION_ID =  -1                          and
15196             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
15197             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
15198             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
15199             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
15200             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
15201           union all
15202           select /*+ ordered */
15203                  -- get incremental project level amounts from source
15204             wbs_hdr.WBS_VERSION_ID,
15205             'LF'                                   RELATIONSHIP_TYPE,
15206             'Y'                                    PUSHUP_FLAG,
15207             'N'                                    INSERT_FLAG,
15208             pjp1.PROJECT_ID,
15209             pjp1.PROJECT_ORG_ID,
15210             pjp1.PROJECT_ORGANIZATION_ID,
15211             pjp1.PROJECT_ELEMENT_ID,
15212             pjp1.TIME_ID,
15213             pjp1.PERIOD_TYPE_ID,
15214             pjp1.CALENDAR_TYPE,
15215             'Y'                                    WBS_ROLLUP_FLAG,
15216             pjp1.PRG_ROLLUP_FLAG,
15217             pjp1.CURR_RECORD_TYPE_ID,
15218             pjp1.CURRENCY_CODE,
15219             pjp1.REVENUE,
15220             pjp1.INITIAL_FUNDING_AMOUNT,
15221             pjp1.INITIAL_FUNDING_COUNT,
15222             pjp1.ADDITIONAL_FUNDING_AMOUNT,
15223             pjp1.ADDITIONAL_FUNDING_COUNT,
15224             pjp1.CANCELLED_FUNDING_AMOUNT,
15225             pjp1.CANCELLED_FUNDING_COUNT,
15226             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
15227             pjp1.FUNDING_ADJUSTMENT_COUNT,
15228             pjp1.REVENUE_WRITEOFF,
15229             pjp1.AR_INVOICE_AMOUNT,
15230             pjp1.AR_INVOICE_COUNT,
15231             pjp1.AR_CASH_APPLIED_AMOUNT,
15232             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
15233             pjp1.AR_INVOICE_WRITEOFF_COUNT,
15234             pjp1.AR_CREDIT_MEMO_AMOUNT,
15235             pjp1.AR_CREDIT_MEMO_COUNT,
15236             pjp1.UNBILLED_RECEIVABLES,
15237             pjp1.UNEARNED_REVENUE,
15238             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
15239             pjp1.AR_UNAPPR_INVOICE_COUNT,
15240             pjp1.AR_APPR_INVOICE_AMOUNT,
15241             pjp1.AR_APPR_INVOICE_COUNT,
15242             pjp1.AR_AMOUNT_DUE,
15243             pjp1.AR_COUNT_DUE,
15244             pjp1.AR_AMOUNT_OVERDUE,
15245             pjp1.AR_COUNT_OVERDUE,
15246             pjp1.CUSTOM1,
15247             pjp1.CUSTOM2,
15248             pjp1.CUSTOM3,
15249             pjp1.CUSTOM4,
15250             pjp1.CUSTOM5,
15251             pjp1.CUSTOM6,
15252             pjp1.CUSTOM7,
15253             pjp1.CUSTOM8,
15254             pjp1.CUSTOM9,
15255             pjp1.CUSTOM10,
15256             pjp1.CUSTOM11,
15257             pjp1.CUSTOM12,
15258             pjp1.CUSTOM13,
15259             pjp1.CUSTOM14,
15260             pjp1.CUSTOM15
15261           from
15262             PJI_AC_AGGR_PJP1_T pjp1,
15263             PJI_PJP_WBS_HEADER wbs_hdr,
15264             PJI_XBS_DENORM     prg
15265           where
15266             prg.STRUCT_TYPE         = 'PRG'                              and
15267             prg.SUP_LEVEL           = l_level                            and
15268             prg.SUB_LEVEL           = l_level                            and
15269             -- pjp1.WORKER_ID       = p_worker_id                        and
15270             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID                 and
15271             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID                     and
15272             pjp1.PRG_LEVEL          = 0                                  and
15273             pjp1.WBS_ROLLUP_FLAG    = 'N'                                and
15274             pjp1.PRG_ROLLUP_FLAG    = 'N'                                and
15275             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID                    and
15276             wbs_hdr.PLAN_VERSION_ID = -1                                 and
15277             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID
15278           union all
15279           select /*+ ordered
15280                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
15281                      index(fpr PJI_AC_XBR_ACCUM_F_N1) */
15282                  -- get delta task level amounts from Reporting Lines
15283             wbs_hdr.WBS_VERSION_ID,
15284             'LF'                                   RELATIONSHIP_TYPE,
15285             decode(log.EVENT_TYPE,
15286                    'WBS_CHANGE', 'Y',
15287                    'WBS_PUBLISH', 'N')             PUSHUP_FLAG,
15288             'Y'                                    INSERT_FLAG,
15289             acr.PROJECT_ID,
15290             acr.PROJECT_ORG_ID,
15291             acr.PROJECT_ORGANIZATION_ID,
15292             decode(top_slice.INVERT_ID,
15293                    'PRJ', prg.SUP_EMT_ID,
15294                           decode(wbs.SUB_LEVEL,
15295                                  1, prg.SUP_EMT_ID,
15296                                     wbs.SUP_EMT_ID))
15297                                                    PROJECT_ELEMENT_ID,
15298             acr.TIME_ID,
15299             acr.PERIOD_TYPE_ID,
15300             acr.CALENDAR_TYPE,
15301             'Y'                                    WBS_ROLLUP_FLAG,
15302             acr.PRG_ROLLUP_FLAG,
15303             acr.CURR_RECORD_TYPE_ID,
15304             acr.CURRENCY_CODE,
15305             wbs.SIGN * acr.REVENUE                 REVENUE,
15306             wbs.SIGN * acr.INITIAL_FUNDING_AMOUNT  INITIAL_FUNDING_AMOUNT,
15307             wbs.SIGN * acr.INITIAL_FUNDING_COUNT   INITIAL_FUNDING_COUNT,
15308             wbs.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT
15309                                                    ADDITIONAL_FUNDING_AMOUNT,
15310             wbs.SIGN * acr.ADDITIONAL_FUNDING_COUNT
15311                                                    ADDITIONAL_FUNDING_COUNT,
15312             wbs.SIGN * acr.CANCELLED_FUNDING_AMOUNT
15313                                                    CANCELLED_FUNDING_AMOUNT,
15314             wbs.SIGN * acr.CANCELLED_FUNDING_COUNT CANCELLED_FUNDING_COUNT,
15315             wbs.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT
15316                                                    FUNDING_ADJUSTMENT_AMOUNT,
15317             wbs.SIGN * acr.FUNDING_ADJUSTMENT_COUNT
15318                                                    FUNDING_ADJUSTMENT_COUNT,
15319             wbs.SIGN * acr.REVENUE_WRITEOFF        REVENUE_WRITEOFF,
15320             wbs.SIGN * acr.AR_INVOICE_AMOUNT       AR_INVOICE_AMOUNT,
15321             wbs.SIGN * acr.AR_INVOICE_COUNT        AR_INVOICE_COUNT,
15322             wbs.SIGN * acr.AR_CASH_APPLIED_AMOUNT  AR_CASH_APPLIED_AMOUNT,
15323             wbs.SIGN * acr.AR_INVOICE_WRITE_OFF_AMOUNT
15324                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
15325             wbs.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT
15326                                                    AR_INVOICE_WRITEOFF_COUNT,
15327             wbs.SIGN * acr.AR_CREDIT_MEMO_AMOUNT   AR_CREDIT_MEMO_AMOUNT,
15328             wbs.SIGN * acr.AR_CREDIT_MEMO_COUNT    AR_CREDIT_MEMO_COUNT,
15329             wbs.SIGN * acr.UNBILLED_RECEIVABLES    UNBILLED_RECEIVABLES,
15330             wbs.SIGN * acr.UNEARNED_REVENUE        UNEARNED_REVENUE,
15331             wbs.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT
15332                                                    AR_UNAPPR_INVOICE_AMOUNT,
15333             wbs.SIGN * acr.AR_UNAPPR_INVOICE_COUNT AR_UNAPPR_INVOICE_COUNT,
15334             wbs.SIGN * acr.AR_APPR_INVOICE_AMOUNT  AR_APPR_INVOICE_AMOUNT,
15335             wbs.SIGN * acr.AR_APPR_INVOICE_COUNT   AR_APPR_INVOICE_COUNT,
15336             wbs.SIGN * acr.AR_AMOUNT_DUE           AR_AMOUNT_DUE,
15337             wbs.SIGN * acr.AR_COUNT_DUE            AR_COUNT_DUE,
15338             wbs.SIGN * acr.AR_AMOUNT_OVERDUE       AR_AMOUNT_OVERDUE,
15339             wbs.SIGN * acr.AR_COUNT_OVERDUE        AR_COUNT_OVERDUE,
15340             wbs.SIGN * acr.CUSTOM1                 CUSTOM1,
15341             wbs.SIGN * acr.CUSTOM2                 CUSTOM2,
15342             wbs.SIGN * acr.CUSTOM3                 CUSTOM3,
15343             wbs.SIGN * acr.CUSTOM4                 CUSTOM4,
15344             wbs.SIGN * acr.CUSTOM5                 CUSTOM5,
15345             wbs.SIGN * acr.CUSTOM6                 CUSTOM6,
15346             wbs.SIGN * acr.CUSTOM7                 CUSTOM7,
15347             wbs.SIGN * acr.CUSTOM8                 CUSTOM8,
15348             wbs.SIGN * acr.CUSTOM9                 CUSTOM9,
15349             wbs.SIGN * acr.CUSTOM10                CUSTOM10,
15350             wbs.SIGN * acr.CUSTOM11                CUSTOM11,
15351             wbs.SIGN * acr.CUSTOM12                CUSTOM12,
15352             wbs.SIGN * acr.CUSTOM13                CUSTOM13,
15353             wbs.SIGN * acr.CUSTOM14                CUSTOM14,
15354             wbs.SIGN * acr.CUSTOM15                CUSTOM15
15355           from
15356             PA_PJI_PROJ_EVENTS_LOG log,
15357             PJI_PJP_WBS_HEADER     wbs_hdr,
15358             PJI_XBS_DENORM_DELTA_T wbs,
15359             PJI_XBS_DENORM         prg,
15360             PJI_AC_XBS_ACCUM_F     acr,
15361             (
15362               select 1     WBS_SUP_LEVEL,
15363                      1     WBS_SUB_LEVEL,
15364                      'PRJ' INVERT_ID
15365               from   DUAL
15366               union all
15367               select 1     WBS_SUP_LEVEL,
15368                      1     WBS_SUB_LEVEL,
15369                      'WBS' INVERT_ID
15370               from   DUAL
15371             ) top_slice
15372           where
15373             prg.STRUCT_TYPE         =  'PRG'                       and
15374             prg.SUP_LEVEL           =  l_level                     and
15375             prg.SUB_LEVEL           =  l_level                     and
15376             wbs.WORKER_ID           =  p_worker_id                 and
15377             wbs.STRUCT_TYPE         =  'WBS'                       and
15378             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
15379             -- log.WORKER_ID        =  p_worker_id                 and
15380             log.EVENT_ID            =  g_event_id                  and
15381             log.EVENT_TYPE          in ('WBS_CHANGE',
15382                                         'WBS_PUBLISH')             and
15383             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
15384             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
15385             wbs_hdr.PLAN_VERSION_ID =  -1                          and
15386             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
15387             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
15388             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
15389             acr.WBS_ROLLUP_FLAG     =  'N'                         and
15390             acr.PRG_ROLLUP_FLAG     =  'N'                         and
15391             acr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
15392             acr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
15393             acr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
15394             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
15395             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
15396             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
15397              (wbs.SUP_LEVEL = 1 and
15398               wbs.SUB_LEVEL = 1))
15399           ) pjp,
15400           (
15401           select
15402             prg.SUP_PROJECT_ID,
15403             map.ORG_ID                       SUP_PROJECT_ORG_ID,
15404             map.CARRYING_OUT_ORGANIZATION_ID SUP_PROJECT_ORGANIZATION_ID,
15405             prg.SUP_ID,
15406             prg.SUP_EMT_ID,
15407             prg.SUP_LEVEL,
15408             prg.SUB_ID,
15409             prg.SUB_EMT_ID,
15410             prg.SUB_ROLLUP_ID,
15411             prg.RELATIONSHIP_TYPE            RELATIONSHIP_TYPE,
15412             'Y'                              PUSHUP_FLAG
15413           from
15414             PJI_XBS_DENORM prg,
15415             PA_PROJECTS_ALL map
15416           where
15417             l_level               >  1                  and
15418             prg.STRUCT_TYPE       =  'PRG'              and
15419             prg.RELATIONSHIP_TYPE =  'LF'               and
15420             prg.SUB_ROLLUP_ID     is not null           and
15421             prg.SUB_LEVEL         =  l_level            and
15422             -- map.WORKER_ID      =  p_worker_id        and
15423             map.PROJECT_ID        =  prg.SUP_PROJECT_ID
15424           ) prg
15425         where
15426           pjp.WBS_VERSION_ID    = prg.SUB_ID            (+) and
15427           pjp.RELATIONSHIP_TYPE = prg.RELATIONSHIP_TYPE (+) and
15428           pjp.PUSHUP_FLAG       = prg.PUSHUP_FLAG       (+)
15429         group by
15430           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15431                  pjp.INSERT_FLAG, 'Y'),
15432           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15433                  null, prg.SUP_ID),
15434           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15435                  null, prg.SUP_EMT_ID),
15436           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15437                  l_level, prg.SUP_LEVEL),
15438           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15439                  pjp.PROJECT_ID,
15440                  prg.SUP_PROJECT_ID),
15441           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15442                  pjp.PROJECT_ORG_ID,
15443                  prg.SUP_PROJECT_ORG_ID),
15444           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15445                  pjp.PROJECT_ORGANIZATION_ID,
15446                  prg.SUP_PROJECT_ORGANIZATION_ID),
15447           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15448                  pjp.PROJECT_ELEMENT_ID,
15449                  prg.SUB_ROLLUP_ID),
15450           pjp.TIME_ID,
15451           pjp.PERIOD_TYPE_ID,
15452           pjp.CALENDAR_TYPE,
15453           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15454                  pjp.WBS_ROLLUP_FLAG, 'N'),
15455           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
15456                  pjp.PRG_ROLLUP_FLAG, 'Y'),
15457           pjp.CURR_RECORD_TYPE_ID,
15458           pjp.CURRENCY_CODE
15459           )                          pjp1_i,
15460           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
15461           PA_PROJ_WORKPLAN_ATTR      sup_wpa
15462         where
15463           pjp1_i.INSERT_FLAG  = 'Y'                                and
15464           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
15465           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
15466           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
15467           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
15468           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
15469           (pjp1_i.SUP_ID is null or
15470            (pjp1_i.SUP_ID is not null and
15471             (sup_fin_ver.PROJECT_ID is not null or
15472              sup_wpa.PROJ_ELEMENT_ID is not null)));
15473 
15474         l_level := l_level - 1;
15475 
15476       end loop;
15477 
15478     end if;
15479 
15480   end ROLLUP_ACR_WBS;
15481 
15482 
15483   -- -----------------------------------------------------
15484   -- procedure ROLLUP_FPR_PRG
15485   --
15486   --   History
15487   --   19-MAR-2004  SVERMETT  Created
15488   --
15489   -- Internal PJP Summarization API.
15490   --
15491   -- -----------------------------------------------------
15492   procedure ROLLUP_FPR_PRG (p_worker_id in number) is
15493 
15494     l_process         varchar2(30);
15495     l_prg_exists      varchar2(25);
15496     l_extraction_type varchar2(30);
15497     l_level           number;
15498     l_max_level       number;
15499     l_step_seq        number;
15500     l_level_seq       number;
15501     l_count           number;
15502 
15503   begin
15504 
15505     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15506 
15507     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);')) then
15508       return;
15509     end if;
15510 
15511     l_prg_exists := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
15512                     (l_process, 'PROGRAM_EXISTS');
15513 
15514     if (l_prg_exists = 'N') then
15515       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process,
15516         'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);');
15517       commit;
15518       return;
15519     end if;
15520 
15521     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15522 
15523     -- allow recovery after each level is processed
15524 
15525     select
15526       STEP_SEQ
15527     into
15528       l_step_seq
15529     from
15530       PJI_SYSTEM_PRC_STATUS
15531     where
15532       PROCESS_NAME = l_process and
15533       STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);';
15534 
15535     select
15536       count(*)
15537     into
15538       l_count
15539     from
15540       PJI_SYSTEM_PRC_STATUS
15541     where
15542       PROCESS_NAME = l_process and
15543       STEP_NAME like 'ROLLUP_FPR_PRG%';
15544 
15545     if (l_count = 0) then
15546 
15547       select
15548         nvl(max(den.SUP_LEVEL), 0)
15549       into
15550         l_level
15551       from
15552         PJI_XBS_DENORM_DELTA den
15553       where
15554         den.WORKER_ID = p_worker_id and
15555         den.STRUCT_TYPE = 'PRG';
15556 
15557       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
15558                                              'MAX_PROGRAM_LEVEL',
15559                                              l_level);
15560 
15561       insert into PJI_SYSTEM_PRC_STATUS
15562       (
15563         PROCESS_NAME,
15564         STEP_SEQ,
15565         STEP_STATUS,
15566         STEP_NAME,
15567         START_DATE,
15568         END_DATE
15569       )
15570       select
15571         l_process                              PROCESS_NAME,
15572         to_char(l_step_seq + SUP_LEVEL / 1000) STEP_SEQ,
15573         null                                   STEP_STATUS,
15574         'ROLLUP_FPR_PRG - level ' ||
15575           to_char(l_level - SUP_LEVEL + 1)     STEP_NAME,
15576         null                                   START_DATE,
15577         null                                   END_DATE
15578       from
15579       (
15580         select
15581           SUP_LEVEL
15582         from
15583           PJI_XBS_DENORM_DELTA
15584         where
15585           worker_id = p_worker_id and
15586           STRUCT_TYPE = 'PRG'
15587         union all
15588         select
15589           SUP_LEVEL
15590         from
15591           PA_XBS_DENORM den,
15592           PJI_PJP_PROJ_BATCH_MAP map
15593         where
15594           map.WORKER_ID      = p_worker_id    and
15595           den.STRUCT_TYPE    = 'PRG'          and
15596           den.SUP_PROJECT_ID = map.PROJECT_ID
15597       )
15598       where
15599         exists
15600         (
15601         select
15602           1
15603         from
15604           PJI_XBS_DENORM_DELTA
15605         where
15606           WORKER_ID = p_worker_id and
15607           ROWNUM = 1
15608         )
15609       group by
15610         SUP_LEVEL
15611       order by
15612         SUP_LEVEL desc;
15613 
15614     end if;
15615 
15616     l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
15617                    (l_process, 'MAX_PROGRAM_LEVEL');
15618 
15619     select
15620       nvl(to_number(min(STEP_SEQ)), 0)
15621     into
15622       l_level_seq
15623     from
15624       PJI_SYSTEM_PRC_STATUS
15625     where
15626       PROCESS_NAME = l_process and
15627       STEP_NAME like 'ROLLUP_FPR_PRG%' and
15628       STEP_STATUS is null;
15629 
15630     if (l_level_seq = 0) then
15631       l_level := 0;
15632     else
15633       l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
15634     end if;
15635 
15636     while (l_level > 0) loop
15637 
15638       update PJI_SYSTEM_PRC_STATUS
15639       set    START_DATE = sysdate
15640       where  PROCESS_NAME = l_process and
15641              STEP_SEQ = l_level_seq;
15642 
15643       -- rollup project hiearchy
15644 /* Call to Paritioned procedure for bug 7551819 */
15645         PJI_PROCESS_UTIL.EXECUTE_ROLLUP_FPR_PRG(p_worker_id,
15646                                                 l_level);
15647 
15648 /* Commented for bug 7551819 */
15649 --      insert /*+ parallel(pjp1_in)
15650   --               noappend(pjp1_in) */ into PJI_FP_AGGR_PJP1 pjp1_in  -- changed for bug 5927368
15651     /*  (        WORKER_ID,
15652         RECORD_TYPE,
15653         PRG_LEVEL,
15654         LINE_TYPE,
15655         PROJECT_ID,
15656         PROJECT_ORG_ID,
15657         PROJECT_ORGANIZATION_ID,
15658         PROJECT_ELEMENT_ID,
15659         TIME_ID,
15660         PERIOD_TYPE_ID,
15661         CALENDAR_TYPE,
15662         RBS_AGGR_LEVEL,
15663         WBS_ROLLUP_FLAG,
15664         PRG_ROLLUP_FLAG,
15665         CURR_RECORD_TYPE_ID,
15666         CURRENCY_CODE,
15667         RBS_ELEMENT_ID,
15668         RBS_VERSION_ID,
15669         PLAN_VERSION_ID,
15670         PLAN_TYPE_ID,
15671         PLAN_TYPE_CODE,
15672         RAW_COST,
15673         BRDN_COST,
15674         REVENUE,
15675         BILL_RAW_COST,
15676         BILL_BRDN_COST,
15677         BILL_LABOR_RAW_COST,
15678         BILL_LABOR_BRDN_COST,
15679         BILL_LABOR_HRS,
15680         EQUIPMENT_RAW_COST,
15681         EQUIPMENT_BRDN_COST,
15682         CAPITALIZABLE_RAW_COST,
15683         CAPITALIZABLE_BRDN_COST,
15684         LABOR_RAW_COST,
15685         LABOR_BRDN_COST,
15686         LABOR_HRS,
15687         LABOR_REVENUE,
15688         EQUIPMENT_HOURS,
15689         BILLABLE_EQUIPMENT_HOURS,
15690         SUP_INV_COMMITTED_COST,
15691         PO_COMMITTED_COST,
15692         PR_COMMITTED_COST,
15693         OTH_COMMITTED_COST,
15694         ACT_LABOR_HRS,
15695         ACT_EQUIP_HRS,
15696         ACT_LABOR_BRDN_COST,
15697         ACT_EQUIP_BRDN_COST,
15698         ACT_BRDN_COST,
15699         ACT_RAW_COST,
15700         ACT_REVENUE,
15701         ACT_LABOR_RAW_COST,
15702         ACT_EQUIP_RAW_COST,
15703         ETC_LABOR_HRS,
15704         ETC_EQUIP_HRS,
15705         ETC_LABOR_BRDN_COST,
15706         ETC_EQUIP_BRDN_COST,
15707         ETC_BRDN_COST,
15708         ETC_RAW_COST,
15709         ETC_LABOR_RAW_COST,
15710         ETC_EQUIP_RAW_COST,
15711         CUSTOM1,
15712         CUSTOM2,
15713         CUSTOM3,
15714         CUSTOM4,
15715         CUSTOM5,
15716         CUSTOM6,
15717         CUSTOM7,
15718         CUSTOM8,
15719         CUSTOM9,
15720         CUSTOM10,
15721         CUSTOM11,
15722         CUSTOM12,
15723         CUSTOM13,
15724         CUSTOM14,
15725         CUSTOM15
15726       )
15727       select /*+ no_merge(pjp) */
15728         /*p_worker_id                                   WORKER_ID,
15729         'P'                                           RECORD_TYPE,
15730         l_level                                       PRG_LEVEL,
15731         pjp.LINE_TYPE,
15732         pjp.SUP_PROJECT_ID                            PROJECT_ID,
15733         map.PROJECT_ORG_ID,
15734         map.PROJECT_ORGANIZATION_ID,
15735         decode(pjp.STRUCT_TYPE,
15736                'DO_NOT_ROLLUP', pjp.SUB_ROLLUP_ID,
15737                                 decode(top_slice.INVERT_ID,
15738                                        'PRJ', pjp.SUP_EMT_ID, wbs.SUP_EMT_ID)
15739               )                                       PROJECT_ELEMENT_ID,
15740         pjp.TIME_ID,
15741         pjp.PERIOD_TYPE_ID,
15742         pjp.CALENDAR_TYPE,
15743         pjp.RBS_AGGR_LEVEL,
15744         decode(pjp.STRUCT_TYPE,
15745                'DO_NOT_ROLLUP', 'N',
15746                                 decode(top_slice.INVERT_ID,
15747                                        'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
15748                                                           wbs.SUP_EMT_ID,
15749                                                           'N', 'Y'))
15750               )                                       WBS_ROLLUP_FLAG,
15751         'Y'                                           PRG_ROLLUP_FLAG,
15752         pjp.CURR_RECORD_TYPE_ID,
15753         pjp.CURRENCY_CODE,
15754         pjp.RBS_ELEMENT_ID,
15755         pjp.RBS_VERSION_ID,
15756         pjp.PLAN_VERSION_ID,
15757         pjp.PLAN_TYPE_ID,
15758         pjp.PLAN_TYPE_CODE,
15759         sum(pjp.RAW_COST)                             RAW_COST,
15760         sum(pjp.BRDN_COST)                            BRDN_COST,
15761         sum(pjp.REVENUE)                              REVENUE,
15762         sum(pjp.BILL_RAW_COST)                        BILL_RAW_COST,
15763         sum(pjp.BILL_BRDN_COST)                       BILL_BRDN_COST,
15764         sum(pjp.BILL_LABOR_RAW_COST)                  BILL_LABOR_RAW_COST,
15765         sum(pjp.BILL_LABOR_BRDN_COST)                 BILL_LABOR_BRDN_COST,
15766         sum(pjp.BILL_LABOR_HRS)                       BILL_LABOR_HRS,
15767         sum(pjp.EQUIPMENT_RAW_COST)                   EQUIPMENT_RAW_COST,
15768         sum(pjp.EQUIPMENT_BRDN_COST)                  EQUIPMENT_BRDN_COST,
15769         sum(pjp.CAPITALIZABLE_RAW_COST)               CAPITALIZABLE_RAW_COST,
15770         sum(pjp.CAPITALIZABLE_BRDN_COST)              CAPITALIZABLE_BRDN_COST,
15771         sum(pjp.LABOR_RAW_COST)                       LABOR_RAW_COST,
15772         sum(pjp.LABOR_BRDN_COST)                      LABOR_BRDN_COST,
15773         sum(pjp.LABOR_HRS)                            LABOR_HRS,
15774         sum(pjp.LABOR_REVENUE)                        LABOR_REVENUE,
15775         sum(pjp.EQUIPMENT_HOURS)                      EQUIPMENT_HOURS,
15776         sum(pjp.BILLABLE_EQUIPMENT_HOURS)             BILLABLE_EQUIPMENT_HOURS,
15777         sum(pjp.SUP_INV_COMMITTED_COST)               SUP_INV_COMMITTED_COST,
15778         sum(pjp.PO_COMMITTED_COST)                    PO_COMMITTED_COST,
15779         sum(pjp.PR_COMMITTED_COST)                    PR_COMMITTED_COST,
15780         sum(pjp.OTH_COMMITTED_COST)                   OTH_COMMITTED_COST,
15781         sum(pjp.ACT_LABOR_HRS)                        ACT_LABOR_HRS,
15782         sum(pjp.ACT_EQUIP_HRS)                        ACT_EQUIP_HRS,
15783         sum(pjp.ACT_LABOR_BRDN_COST)                  ACT_LABOR_BRDN_COST,
15784         sum(pjp.ACT_EQUIP_BRDN_COST)                  ACT_EQUIP_BRDN_COST,
15785         sum(pjp.ACT_BRDN_COST)                        ACT_BRDN_COST,
15786         sum(pjp.ACT_RAW_COST)                         ACT_RAW_COST,
15787         sum(pjp.ACT_REVENUE)                          ACT_REVENUE,
15788         sum(pjp.ACT_LABOR_RAW_COST)                   ACT_LABOR_RAW_COST,
15789         sum(pjp.ACT_EQUIP_RAW_COST)                   ACT_EQUIP_RAW_COST,
15790         sum(pjp.ETC_LABOR_HRS)                        ETC_LABOR_HRS,
15791         sum(pjp.ETC_EQUIP_HRS)                        ETC_EQUIP_HRS,
15792         sum(pjp.ETC_LABOR_BRDN_COST)                  ETC_LABOR_BRDN_COST,
15793         sum(pjp.ETC_EQUIP_BRDN_COST)                  ETC_EQUIP_BRDN_COST,
15794         sum(pjp.ETC_BRDN_COST)                        ETC_BRDN_COST,
15795         sum(pjp.ETC_RAW_COST)                         ETC_RAW_COST,
15796         sum(pjp.ETC_LABOR_RAW_COST)                   ETC_LABOR_RAW_COST,
15797         sum(pjp.ETC_EQUIP_RAW_COST)                   ETC_EQUIP_RAW_COST,
15798         sum(pjp.CUSTOM1)                              CUSTOM1,
15799         sum(pjp.CUSTOM2)                              CUSTOM2,
15800         sum(pjp.CUSTOM3)                              CUSTOM3,
15801         sum(pjp.CUSTOM4)                              CUSTOM4,
15802         sum(pjp.CUSTOM5)                              CUSTOM5,
15803         sum(pjp.CUSTOM6)                              CUSTOM6,
15804         sum(pjp.CUSTOM7)                              CUSTOM7,
15805         sum(pjp.CUSTOM8)                              CUSTOM8,
15806         sum(pjp.CUSTOM9)                              CUSTOM9,
15807         sum(pjp.CUSTOM10)                             CUSTOM10,
15808         sum(pjp.CUSTOM11)                             CUSTOM11,
15809         sum(pjp.CUSTOM12)                             CUSTOM12,
15810         sum(pjp.CUSTOM13)                             CUSTOM13,
15811         sum(pjp.CUSTOM14)                             CUSTOM14,
15812         sum(pjp.CUSTOM15)                             CUSTOM15
15813       from
15814         (
15815         select /*+ ordered index(fpr PJI_FP_XBS_ACCUM_F_N1) */
15816                -- get structure level amounts from Reporting Lines
15817          /* decode(fpr.RBS_AGGR_LEVEL,
15818                  'L', 'DO_NOT_ROLLUP',
15819                       'WBS')                          STRUCT_TYPE,
15820           to_char(null)                               LINE_TYPE,
15821           prg.SUP_PROJECT_ID,
15822           prg.SUP_ID,
15823           prg.SUP_EMT_ID,
15824           prg.SUB_EMT_ID,
15825           prg.SUB_ROLLUP_ID,
15826           'FPR'                                       LINE_SOURCE,
15827           decode(fpr.PLAN_VERSION_ID,
15828                  -1, prg.SUB_ID,
15829                  -3, prg.SUB_ID,
15830                  -4, prg.SUB_ID,
15831                      decode(fin_plan.PLAN_VERSION_ID,
15832                             null, null,
15833                                   prg.SUB_ID))        SUB_ID,
15834           decode(fpr.PLAN_VERSION_ID,
15835                  -1, 'N',
15836                  -3, 'N',
15837                  -4, 'N',
15838                      decode(fin_plan.PLAN_VERSION_ID,
15839                             null, null,
15840                                   'N'))               SUP_WP_FLAG,
15841           decode(fpr.PLAN_VERSION_ID,
15842                  -1, fpr.PLAN_VERSION_ID,
15843                  -3, fpr.PLAN_VERSION_ID,
15844                  -4, fpr.PLAN_VERSION_ID,
15845                      decode(fin_plan.PLAN_VERSION_ID,
15846                             null, null,
15847                                   fin_plan.PLAN_VERSION_ID)
15848                 )                                     SUB_PLAN_VERSION_ID,
15849           decode(fpr.PLAN_VERSION_ID,
15850                  -1, fpr.PLAN_TYPE_ID,
15851                  -3, fpr.PLAN_TYPE_ID,
15852                  -4, fpr.PLAN_TYPE_ID,
15853                      decode(fin_plan.PLAN_VERSION_ID,
15854                             null, null,
15855                                   fpr.PLAN_TYPE_ID))  SUB_PLAN_TYPE_ID,
15856           fpr.TIME_ID,
15857           fpr.PERIOD_TYPE_ID,
15858           fpr.CALENDAR_TYPE,
15859           fpr.RBS_AGGR_LEVEL,
15860           fpr.CURR_RECORD_TYPE_ID,
15861           fpr.CURRENCY_CODE,
15862           fpr.RBS_ELEMENT_ID,
15863           fpr.RBS_VERSION_ID,
15864           decode(wbs_hdr.WP_FLAG,
15865                  'N', decode(wbs_hdr.PLAN_VERSION_ID,
15866                              -1, fpr.PLAN_VERSION_ID,
15867                                  fin_plan.PLAN_VERSION_ID),
15868                       sup_wbs_hdr.PLAN_VERSION_ID)    PLAN_VERSION_ID,
15869           decode(wbs_hdr.WP_FLAG,
15870                  'N', fpr.PLAN_TYPE_ID,
15871                       sup_wbs_hdr.PLAN_TYPE_ID)       PLAN_TYPE_ID,
15872           fpr.PLAN_TYPE_CODE,
15873           decode(wbs_hdr.WP_FLAG
15874                    || '_' || sup_wbs_hdr.WP_FLAG
15875                    || '_' || sub_ver.STATUS_CODE
15876                    || '_' || sup_ver.STATUS_CODE,
15877                  'Y_Y__', to_number(null),
15878                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15879                  prg.SIGN * fpr.RAW_COST)             RAW_COST,
15880           decode(wbs_hdr.WP_FLAG
15881                    || '_' || sup_wbs_hdr.WP_FLAG
15882                    || '_' || sub_ver.STATUS_CODE
15883                    || '_' || sup_ver.STATUS_CODE,
15884                  'Y_Y__', to_number(null),
15885                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15886                  prg.SIGN * fpr.BRDN_COST)            BRDN_COST,
15887           decode(wbs_hdr.WP_FLAG
15888                    || '_' || sup_wbs_hdr.WP_FLAG
15889                    || '_' || sub_ver.STATUS_CODE
15890                    || '_' || sup_ver.STATUS_CODE,
15891                  'Y_Y__', to_number(null),
15892                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15893                  prg.SIGN * fpr.REVENUE)              REVENUE,
15894           decode(wbs_hdr.WP_FLAG
15895                    || '_' || sup_wbs_hdr.WP_FLAG
15896                    || '_' || sub_ver.STATUS_CODE
15897                    || '_' || sup_ver.STATUS_CODE,
15898                  'Y_Y__', to_number(null),
15899                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15900                  prg.SIGN * fpr.BILL_RAW_COST)        BILL_RAW_COST,
15901           decode(wbs_hdr.WP_FLAG
15902                    || '_' || sup_wbs_hdr.WP_FLAG
15903                    || '_' || sub_ver.STATUS_CODE
15904                    || '_' || sup_ver.STATUS_CODE,
15905                  'Y_Y__', to_number(null),
15906                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15907                  prg.SIGN * fpr.BILL_BRDN_COST)       BILL_BRDN_COST,
15908           decode(wbs_hdr.WP_FLAG
15909                    || '_' || sup_wbs_hdr.WP_FLAG
15910                    || '_' || sub_ver.STATUS_CODE
15911                    || '_' || sup_ver.STATUS_CODE,
15912                  'Y_Y__', to_number(null),
15913                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15914                  prg.SIGN * fpr.BILL_LABOR_RAW_COST)  BILL_LABOR_RAW_COST,
15915           decode(wbs_hdr.WP_FLAG
15916                    || '_' || sup_wbs_hdr.WP_FLAG
15917                    || '_' || sub_ver.STATUS_CODE
15918                    || '_' || sup_ver.STATUS_CODE,
15919                  'Y_Y__', to_number(null),
15920                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15921                  prg.SIGN * fpr.BILL_LABOR_BRDN_COST) BILL_LABOR_BRDN_COST,
15922           decode(wbs_hdr.WP_FLAG
15923                    || '_' || sup_wbs_hdr.WP_FLAG
15924                    || '_' || sub_ver.STATUS_CODE
15925                    || '_' || sup_ver.STATUS_CODE,
15926                  'Y_Y__', to_number(null),
15927                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15928                  prg.SIGN * fpr.BILL_LABOR_HRS)       BILL_LABOR_HRS,
15929           decode(wbs_hdr.WP_FLAG
15930                    || '_' || sup_wbs_hdr.WP_FLAG
15931                    || '_' || sub_ver.STATUS_CODE
15932                    || '_' || sup_ver.STATUS_CODE,
15933                  'Y_Y__', to_number(null),
15934                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15935                  prg.SIGN * fpr.EQUIPMENT_RAW_COST)   EQUIPMENT_RAW_COST,
15936           decode(wbs_hdr.WP_FLAG
15937                    || '_' || sup_wbs_hdr.WP_FLAG
15938                    || '_' || sub_ver.STATUS_CODE
15939                    || '_' || sup_ver.STATUS_CODE,
15940                  'Y_Y__', to_number(null),
15941                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15942                  prg.SIGN * fpr.EQUIPMENT_BRDN_COST)  EQUIPMENT_BRDN_COST,
15943           decode(wbs_hdr.WP_FLAG
15944                    || '_' || sup_wbs_hdr.WP_FLAG
15945                    || '_' || sub_ver.STATUS_CODE
15946                    || '_' || sup_ver.STATUS_CODE,
15947                  'Y_Y__', to_number(null),
15948                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15949                  prg.SIGN * fpr.CAPITALIZABLE_RAW_COST)
15950                                                       CAPITALIZABLE_RAW_COST,
15951           decode(wbs_hdr.WP_FLAG
15952                    || '_' || sup_wbs_hdr.WP_FLAG
15953                    || '_' || sub_ver.STATUS_CODE
15954                    || '_' || sup_ver.STATUS_CODE,
15955                  'Y_Y__', to_number(null),
15956                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15957                  prg.SIGN * fpr.CAPITALIZABLE_BRDN_COST)
15958                                                       CAPITALIZABLE_BRDN_COST,
15959           decode(wbs_hdr.WP_FLAG
15960                    || '_' || sup_wbs_hdr.WP_FLAG
15961                    || '_' || sub_ver.STATUS_CODE
15962                    || '_' || sup_ver.STATUS_CODE,
15963                  'Y_Y__', to_number(null),
15964                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15965                  prg.SIGN * fpr.LABOR_RAW_COST)       LABOR_RAW_COST,
15966           decode(wbs_hdr.WP_FLAG
15967                    || '_' || sup_wbs_hdr.WP_FLAG
15968                    || '_' || sub_ver.STATUS_CODE
15969                    || '_' || sup_ver.STATUS_CODE,
15970                  'Y_Y__', to_number(null),
15971                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15972                  prg.SIGN * fpr.LABOR_BRDN_COST)      LABOR_BRDN_COST,
15973           decode(wbs_hdr.WP_FLAG
15974                    || '_' || sup_wbs_hdr.WP_FLAG
15975                    || '_' || sub_ver.STATUS_CODE
15976                    || '_' || sup_ver.STATUS_CODE,
15977                  'Y_Y__', to_number(null),
15978                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15979                  prg.SIGN * fpr.LABOR_HRS)            LABOR_HRS,
15980           decode(wbs_hdr.WP_FLAG
15981                    || '_' || sup_wbs_hdr.WP_FLAG
15982                    || '_' || sub_ver.STATUS_CODE
15983                    || '_' || sup_ver.STATUS_CODE,
15984                  'Y_Y__', to_number(null),
15985                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15986                  prg.SIGN * fpr.LABOR_REVENUE)        LABOR_REVENUE,
15987           decode(wbs_hdr.WP_FLAG
15988                    || '_' || sup_wbs_hdr.WP_FLAG
15989                    || '_' || sub_ver.STATUS_CODE
15990                    || '_' || sup_ver.STATUS_CODE,
15991                  'Y_Y__', to_number(null),
15992                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
15993                  prg.SIGN * fpr.EQUIPMENT_HOURS)      EQUIPMENT_HOURS,
15994           decode(wbs_hdr.WP_FLAG
15995                    || '_' || sup_wbs_hdr.WP_FLAG
15996                    || '_' || sub_ver.STATUS_CODE
15997                    || '_' || sup_ver.STATUS_CODE,
15998                  'Y_Y__', to_number(null),
15999                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16000                  prg.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS)
16001                                                       BILLABLE_EQUIPMENT_HOURS,
16002           decode(wbs_hdr.WP_FLAG
16003                    || '_' || sup_wbs_hdr.WP_FLAG
16004                    || '_' || sub_ver.STATUS_CODE
16005                    || '_' || sup_ver.STATUS_CODE,
16006                  'Y_Y__', to_number(null),
16007                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16008                  prg.SIGN * fpr.SUP_INV_COMMITTED_COST)
16009                                                       SUP_INV_COMMITTED_COST,
16010           decode(wbs_hdr.WP_FLAG
16011                    || '_' || sup_wbs_hdr.WP_FLAG
16012                    || '_' || sub_ver.STATUS_CODE
16013                    || '_' || sup_ver.STATUS_CODE,
16014                  'Y_Y__', to_number(null),
16015                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16016                  prg.SIGN * fpr.PO_COMMITTED_COST)    PO_COMMITTED_COST,
16017           decode(wbs_hdr.WP_FLAG
16018                    || '_' || sup_wbs_hdr.WP_FLAG
16019                    || '_' || sub_ver.STATUS_CODE
16020                    || '_' || sup_ver.STATUS_CODE,
16021                  'Y_Y__', to_number(null),
16022                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16023                  prg.SIGN * fpr.PR_COMMITTED_COST)    PR_COMMITTED_COST,
16024           decode(wbs_hdr.WP_FLAG
16025                    || '_' || sup_wbs_hdr.WP_FLAG
16026                    || '_' || sub_ver.STATUS_CODE
16027                    || '_' || sup_ver.STATUS_CODE,
16028                  'Y_Y__', to_number(null),
16029                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16030                  prg.SIGN * fpr.OTH_COMMITTED_COST)   OTH_COMMITTED_COST,
16031           decode(wbs_hdr.WP_FLAG
16032                    || '_' || sup_wbs_hdr.WP_FLAG
16033                    || '_' || sup_ver.STATUS_CODE,
16034                  'Y_Y_', to_number(null),
16035                  prg.SIGN * fpr.ACT_LABOR_HRS)        ACT_LABOR_HRS,
16036           decode(wbs_hdr.WP_FLAG
16037                    || '_' || sup_wbs_hdr.WP_FLAG
16038                    || '_' || sup_ver.STATUS_CODE,
16039                  'Y_Y_', to_number(null),
16040                  prg.SIGN * fpr.ACT_EQUIP_HRS)        ACT_EQUIP_HRS,
16041           decode(wbs_hdr.WP_FLAG
16042                    || '_' || sup_wbs_hdr.WP_FLAG
16043                    || '_' || sup_ver.STATUS_CODE,
16044                  'Y_Y_', to_number(null),
16045                  prg.SIGN * fpr.ACT_LABOR_BRDN_COST)  ACT_LABOR_BRDN_COST,
16046           decode(wbs_hdr.WP_FLAG
16047                    || '_' || sup_wbs_hdr.WP_FLAG
16048                    || '_' || sup_ver.STATUS_CODE,
16049                  'Y_Y_', to_number(null),
16050                  prg.SIGN * fpr.ACT_EQUIP_BRDN_COST)  ACT_EQUIP_BRDN_COST,
16051           decode(wbs_hdr.WP_FLAG
16052                    || '_' || sup_wbs_hdr.WP_FLAG
16053                    || '_' || sup_ver.STATUS_CODE,
16054                  'Y_Y_', to_number(null),
16055                  prg.SIGN * fpr.ACT_BRDN_COST)        ACT_BRDN_COST,
16056           decode(wbs_hdr.WP_FLAG
16057                    || '_' || sup_wbs_hdr.WP_FLAG
16058                    || '_' || sup_ver.STATUS_CODE,
16059                  'Y_Y_', to_number(null),
16060                  prg.SIGN * fpr.ACT_RAW_COST)         ACT_RAW_COST,
16061           decode(wbs_hdr.WP_FLAG
16062                    || '_' || sup_wbs_hdr.WP_FLAG
16063                    || '_' || sup_ver.STATUS_CODE,
16064                  'Y_Y_', to_number(null),
16065                  prg.SIGN * fpr.ACT_REVENUE)          ACT_REVENUE,
16066           decode(wbs_hdr.WP_FLAG
16067                    || '_' || sup_wbs_hdr.WP_FLAG
16068                    || '_' || sup_ver.STATUS_CODE,
16069                  'Y_Y_', to_number(null),
16070                  prg.SIGN * fpr.ACT_LABOR_RAW_COST)   ACT_LABOR_RAW_COST,
16071           decode(wbs_hdr.WP_FLAG
16072                    || '_' || sup_wbs_hdr.WP_FLAG
16073                    || '_' || sup_ver.STATUS_CODE,
16074                  'Y_Y_', to_number(null),
16075                  prg.SIGN * fpr.ACT_EQUIP_RAW_COST)   ACT_EQUIP_RAW_COST,
16076           decode(wbs_hdr.WP_FLAG
16077                    || '_' || sup_wbs_hdr.WP_FLAG
16078                    || '_' || sup_ver.STATUS_CODE,
16079                  'Y_Y_', to_number(null),
16080                  prg.SIGN * fpr.ETC_LABOR_HRS)        ETC_LABOR_HRS,
16081           decode(wbs_hdr.WP_FLAG
16082                    || '_' || sup_wbs_hdr.WP_FLAG
16083                    || '_' || sup_ver.STATUS_CODE,
16084                  'Y_Y_', to_number(null),
16085                  prg.SIGN * fpr.ETC_EQUIP_HRS)        ETC_EQUIP_HRS,
16086           decode(wbs_hdr.WP_FLAG
16087                    || '_' || sup_wbs_hdr.WP_FLAG
16088                    || '_' || sup_ver.STATUS_CODE,
16089                  'Y_Y_', to_number(null),
16090                  prg.SIGN * fpr.ETC_LABOR_BRDN_COST)  ETC_LABOR_BRDN_COST,
16091           decode(wbs_hdr.WP_FLAG
16092                    || '_' || sup_wbs_hdr.WP_FLAG
16093                    || '_' || sup_ver.STATUS_CODE,
16094                  'Y_Y_', to_number(null),
16095                  prg.SIGN * fpr.ETC_EQUIP_BRDN_COST)  ETC_EQUIP_BRDN_COST,
16096           decode(wbs_hdr.WP_FLAG
16097                    || '_' || sup_wbs_hdr.WP_FLAG
16098                    || '_' || sup_ver.STATUS_CODE,
16099                  'Y_Y_', to_number(null),
16100                  prg.SIGN * fpr.ETC_BRDN_COST)        ETC_BRDN_COST,
16101           decode(wbs_hdr.WP_FLAG
16102                    || '_' || sup_wbs_hdr.WP_FLAG
16103                    || '_' || sup_ver.STATUS_CODE,
16104                  'Y_Y_', to_number(null),
16105                  prg.SIGN * fpr.ETC_RAW_COST)         ETC_RAW_COST,
16106           decode(wbs_hdr.WP_FLAG
16107                    || '_' || sup_wbs_hdr.WP_FLAG
16108                    || '_' || sup_ver.STATUS_CODE,
16109                  'Y_Y_', to_number(null),
16110                  prg.SIGN * fpr.ETC_LABOR_RAW_COST)   ETC_LABOR_RAW_COST,
16111           decode(wbs_hdr.WP_FLAG
16112                    || '_' || sup_wbs_hdr.WP_FLAG
16113                    || '_' || sup_ver.STATUS_CODE,
16114                  'Y_Y_', to_number(null),
16115                  prg.SIGN * fpr.ETC_EQUIP_RAW_COST)   ETC_EQUIP_RAW_COST,
16116           prg.SIGN * fpr.CUSTOM1                      CUSTOM1,
16117           prg.SIGN * fpr.CUSTOM2                      CUSTOM2,
16118           prg.SIGN * fpr.CUSTOM3                      CUSTOM3,
16119           prg.SIGN * fpr.CUSTOM4                      CUSTOM4,
16120           prg.SIGN * fpr.CUSTOM5                      CUSTOM5,
16121           prg.SIGN * fpr.CUSTOM6                      CUSTOM6,
16122           prg.SIGN * fpr.CUSTOM7                      CUSTOM7,
16123           prg.SIGN * fpr.CUSTOM8                      CUSTOM8,
16124           prg.SIGN * fpr.CUSTOM9                      CUSTOM9,
16125           prg.SIGN * fpr.CUSTOM10                     CUSTOM10,
16126           prg.SIGN * fpr.CUSTOM11                     CUSTOM11,
16127           prg.SIGN * fpr.CUSTOM12                     CUSTOM12,
16128           prg.SIGN * fpr.CUSTOM13                     CUSTOM13,
16129           prg.SIGN * fpr.CUSTOM14                     CUSTOM14,
16130           prg.SIGN * fpr.CUSTOM15                     CUSTOM15
16131         from
16132           PJI_XBS_DENORM_DELTA       prg,
16133           PA_PROJ_ELEMENTS           prj_emt,
16134           PJI_PJP_WBS_HEADER         wbs_hdr,
16135           PJI_FP_XBS_ACCUM_F         fpr,
16136           PJI_PJP_WBS_HEADER         sup_wbs_hdr,
16137           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
16138           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
16139           (
16140             select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID
16141             from DUAL union all
16142             select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID
16143             from DUAL union all
16144             select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID
16145             from DUAL union all
16146             select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID
16147             from DUAL
16148           ) fin_plan
16149         where
16150           prg.WORKER_ID              =  p_worker_id                    and
16151           prg.STRUCT_TYPE            =  'PRG'                          and
16152           prg.SUP_LEVEL              =  l_level                        and
16153           nvl(prg.SUB_ROLLUP_ID,
16154               prg.SUP_EMT_ID)        <> prg.SUP_EMT_ID                 and
16155           fpr.PROJECT_ID             =  prj_emt.PROJECT_ID             and
16156           (((fpr.RBS_AGGR_LEVEL,
16157              fpr.WBS_ROLLUP_FLAG,
16158              fpr.PRG_ROLLUP_FLAG) in (('T', 'Y', 'Y'),
16159                                       ('T', 'Y', 'N'),
16160                                       ('T', 'N', 'Y'),
16161                                       ('T', 'N', 'N'),
16162                                       ('L', 'N', 'N')) and
16163              fpr.PROJECT_ELEMENT_ID = prg.SUB_EMT_ID) or
16164            ((fpr.RBS_AGGR_LEVEL,
16165              fpr.WBS_ROLLUP_FLAG,
16166              fpr.PRG_ROLLUP_FLAG) in (('L', 'N', 'Y'),
16167                                       ('L', 'N', 'N')) and
16168              fpr.PROJECT_ELEMENT_ID <> prg.SUB_EMT_ID))                and
16169           decode(fpr.PLAN_VERSION_ID,
16170                  -1, 'LF',
16171                  -2, 'LF',
16172                  -3, 'LF',
16173                  -4, 'LF',
16174                      decode(wbs_hdr.WP_FLAG,
16175                             'N', 'LF',
16176                               'LW')) =  prg.RELATIONSHIP_TYPE          and
16177           prj_emt.PROJ_ELEMENT_ID    =  prg.SUB_EMT_ID                 and
16178           wbs_hdr.PROJECT_ID         =  prj_emt.PROJECT_ID             and
16179           decode(wbs_hdr.WP_FLAG,
16180                  'Y', wbs_hdr.WBS_VERSION_ID,
16181                       -1)            = decode(wbs_hdr.WP_FLAG,
16182                                               'Y', prg.SUB_ID,
16183                                                    -1)                 and
16184           wbs_hdr.PLAN_VERSION_ID    =  fpr.PLAN_VERSION_ID            and
16185           wbs_hdr.PLAN_TYPE_CODE     =  fpr.PLAN_TYPE_CODE             and
16186           decode(fpr.PLAN_VERSION_ID,
16187                  -3, fpr.PLAN_TYPE_ID,
16188                  -4, fpr.PLAN_TYPE_ID,
16189                      -1)             =  decode(fpr.PLAN_VERSION_ID,
16190                                                -3, wbs_hdr.PLAN_TYPE_ID,
16191                                                -4, wbs_hdr.PLAN_TYPE_ID,
16192                                                    -1)                 and
16193           decode(wbs_hdr.WP_FLAG,
16194                  'N', decode(fpr.PLAN_VERSION_ID,
16195                              -1, 'Y',
16196                              -2, 'Y',
16197                              -3, 'Y',
16198                              -4, 'Y',
16199                                  decode(fpr.RBS_AGGR_LEVEL
16200                                           || '_' || wbs_hdr.CB_FLAG
16201                                           || '_' || wbs_hdr.CO_FLAG,
16202                                         'L_Y_Y', 'Y',
16203                                         'L_N_Y', 'Y',
16204                                         'L_Y_N', 'Y',
16205                                                  'N')),
16206                       'Y')           =  'Y'                            and
16207           prg.SUP_PROJECT_ID         =  sup_wbs_hdr.PROJECT_ID     (+) and
16208           prg.SUP_ID                 =  sup_wbs_hdr.WBS_VERSION_ID (+) and
16209           'Y'                        =  sup_wbs_hdr.WP_FLAG        (+) and
16210           wbs_hdr.PROJECT_ID         =  sub_ver.PROJECT_ID         (+) and
16211           wbs_hdr.WBS_VERSION_ID     =  sub_ver.ELEMENT_VERSION_ID (+) and
16212           'STRUCTURE_PUBLISHED'      =  sub_ver.STATUS_CODE        (+) and
16213           sup_wbs_hdr.PROJECT_ID     =  sup_ver.PROJECT_ID         (+) and
16214           sup_wbs_hdr.WBS_VERSION_ID =  sup_ver.ELEMENT_VERSION_ID (+) and
16215           'STRUCTURE_PUBLISHED'      =  sup_ver.STATUS_CODE        (+) and
16216           wbs_hdr.CB_FLAG            =  fin_plan.CB                (+) and
16217           wbs_hdr.CO_FLAG            =  fin_plan.CO                (+)
16218         union all
16219         select /*+ ordered */
16220                -- get structure level amounts from interim
16221          /* decode(pjp1.RBS_AGGR_LEVEL,
16222                  'L', 'DO_NOT_ROLLUP',
16223                       'WBS')                          STRUCT_TYPE,
16224           to_char(null)                               LINE_TYPE,
16225           prg.SUP_PROJECT_ID,
16226           prg.SUP_ID,
16227           prg.SUP_EMT_ID,
16228           prg.SUB_EMT_ID,
16229           prg.SUB_ROLLUP_ID,
16230           'PJP1'                                      LINE_SOURCE,
16231           decode(pjp1.PLAN_VERSION_ID,
16232                  -1, prg.SUB_ID,
16233                  -3, prg.SUB_ID,
16234                  -4, prg.SUB_ID,
16235                      decode(fin_plan.PLAN_VERSION_ID,
16236                             null, null,
16237                                   prg.SUB_ID))        SUB_ID,
16238           decode(pjp1.PLAN_VERSION_ID,
16239                  -1, 'N',
16240                  -3, 'N',
16241                  -4, 'N',
16242                      decode(fin_plan.PLAN_VERSION_ID,
16243                             null, null,
16244                                   'N'))               SUP_WP_FLAG,
16245           decode(pjp1.PLAN_VERSION_ID,
16246                  -1, pjp1.PLAN_VERSION_ID,
16247                  -3, pjp1.PLAN_VERSION_ID,
16248                  -4, pjp1.PLAN_VERSION_ID,
16249                      decode(fin_plan.PLAN_VERSION_ID,
16250                             null, null,
16251                                   fin_plan.PLAN_VERSION_ID)
16252                 )                                     SUB_PLAN_VERSION_ID,
16253           decode(pjp1.PLAN_VERSION_ID,
16254                  -1, pjp1.PLAN_TYPE_ID,
16255                  -3, pjp1.PLAN_TYPE_ID,
16256                  -4, pjp1.PLAN_TYPE_ID,
16257                      decode(fin_plan.PLAN_VERSION_ID,
16258                             null, null,
16259                                   pjp1.PLAN_TYPE_ID)) SUB_PLAN_TYPE_ID,
16260           pjp1.TIME_ID,
16261           pjp1.PERIOD_TYPE_ID,
16262           pjp1.CALENDAR_TYPE,
16263           pjp1.RBS_AGGR_LEVEL,
16264           pjp1.CURR_RECORD_TYPE_ID,
16265           pjp1.CURRENCY_CODE,
16266           pjp1.RBS_ELEMENT_ID,
16267           pjp1.RBS_VERSION_ID,
16268           decode(wbs_hdr.WP_FLAG,
16269                  'N', decode(wbs_hdr.PLAN_VERSION_ID,
16270                              -1, pjp1.PLAN_VERSION_ID,
16271                                  fin_plan.PLAN_VERSION_ID),
16272                       sup_wbs_hdr.PLAN_VERSION_ID)    PLAN_VERSION_ID,
16273           decode(wbs_hdr.WP_FLAG,
16274                  'N', pjp1.PLAN_TYPE_ID,
16275                       sup_wbs_hdr.PLAN_TYPE_ID)       PLAN_TYPE_ID,
16276           pjp1.PLAN_TYPE_CODE,
16277           decode(wbs_hdr.WP_FLAG
16278                    || '_' || sup_wbs_hdr.WP_FLAG
16279                    || '_' || sub_ver.STATUS_CODE
16280                    || '_' || sup_ver.STATUS_CODE,
16281                  'Y_Y__', to_number(null),
16282                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16283                  pjp1.RAW_COST)                       RAW_COST,
16284           decode(wbs_hdr.WP_FLAG
16285                    || '_' || sup_wbs_hdr.WP_FLAG
16286                    || '_' || sub_ver.STATUS_CODE
16287                    || '_' || sup_ver.STATUS_CODE,
16288                  'Y_Y__', to_number(null),
16289                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16290                  pjp1.BRDN_COST)                      BRDN_COST,
16291           decode(wbs_hdr.WP_FLAG
16292                    || '_' || sup_wbs_hdr.WP_FLAG
16293                    || '_' || sub_ver.STATUS_CODE
16294                    || '_' || sup_ver.STATUS_CODE,
16295                  'Y_Y__', to_number(null),
16296                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16297                  pjp1.REVENUE)                        REVENUE,
16298           decode(wbs_hdr.WP_FLAG
16299                    || '_' || sup_wbs_hdr.WP_FLAG
16300                    || '_' || sub_ver.STATUS_CODE
16301                    || '_' || sup_ver.STATUS_CODE,
16302                  'Y_Y__', to_number(null),
16303                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16304                  pjp1.BILL_RAW_COST)                  BILL_RAW_COST,
16305           decode(wbs_hdr.WP_FLAG
16306                    || '_' || sup_wbs_hdr.WP_FLAG
16307                    || '_' || sub_ver.STATUS_CODE
16308                    || '_' || sup_ver.STATUS_CODE,
16309                  'Y_Y__', to_number(null),
16310                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16311                  pjp1.BILL_BRDN_COST)                 BILL_BRDN_COST,
16312           decode(wbs_hdr.WP_FLAG
16313                    || '_' || sup_wbs_hdr.WP_FLAG
16314                    || '_' || sub_ver.STATUS_CODE
16315                    || '_' || sup_ver.STATUS_CODE,
16316                  'Y_Y__', to_number(null),
16317                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16318                  pjp1.BILL_LABOR_RAW_COST)            BILL_LABOR_RAW_COST,
16319           decode(wbs_hdr.WP_FLAG
16320                    || '_' || sup_wbs_hdr.WP_FLAG
16321                    || '_' || sub_ver.STATUS_CODE
16322                    || '_' || sup_ver.STATUS_CODE,
16323                  'Y_Y__', to_number(null),
16324                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16325                  pjp1.BILL_LABOR_BRDN_COST)           BILL_LABOR_BRDN_COST,
16326           decode(wbs_hdr.WP_FLAG
16327                    || '_' || sup_wbs_hdr.WP_FLAG
16328                    || '_' || sub_ver.STATUS_CODE
16329                    || '_' || sup_ver.STATUS_CODE,
16330                  'Y_Y__', to_number(null),
16331                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16332                  pjp1.BILL_LABOR_HRS)                 BILL_LABOR_HRS,
16333           decode(wbs_hdr.WP_FLAG
16334                    || '_' || sup_wbs_hdr.WP_FLAG
16335                    || '_' || sub_ver.STATUS_CODE
16336                    || '_' || sup_ver.STATUS_CODE,
16337                  'Y_Y__', to_number(null),
16338                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16339                  pjp1.EQUIPMENT_RAW_COST)             EQUIPMENT_RAW_COST,
16340           decode(wbs_hdr.WP_FLAG
16341                    || '_' || sup_wbs_hdr.WP_FLAG
16342                    || '_' || sub_ver.STATUS_CODE
16343                    || '_' || sup_ver.STATUS_CODE,
16344                  'Y_Y__', to_number(null),
16345                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16346                  pjp1.EQUIPMENT_BRDN_COST)            EQUIPMENT_BRDN_COST,
16347           decode(wbs_hdr.WP_FLAG
16348                    || '_' || sup_wbs_hdr.WP_FLAG
16349                    || '_' || sub_ver.STATUS_CODE
16350                    || '_' || sup_ver.STATUS_CODE,
16351                  'Y_Y__', to_number(null),
16352                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16353                  pjp1.CAPITALIZABLE_RAW_COST)         CAPITALIZABLE_RAW_COST,
16354           decode(wbs_hdr.WP_FLAG
16355                    || '_' || sup_wbs_hdr.WP_FLAG
16356                    || '_' || sub_ver.STATUS_CODE
16357                    || '_' || sup_ver.STATUS_CODE,
16358                  'Y_Y__', to_number(null),
16359                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16360                  pjp1.CAPITALIZABLE_BRDN_COST)        CAPITALIZABLE_BRDN_COST,
16361           decode(wbs_hdr.WP_FLAG
16362                    || '_' || sup_wbs_hdr.WP_FLAG
16363                    || '_' || sub_ver.STATUS_CODE
16364                    || '_' || sup_ver.STATUS_CODE,
16365                  'Y_Y__', to_number(null),
16366                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16367                  pjp1.LABOR_RAW_COST)                 LABOR_RAW_COST,
16368           decode(wbs_hdr.WP_FLAG
16369                    || '_' || sup_wbs_hdr.WP_FLAG
16370                    || '_' || sub_ver.STATUS_CODE
16371                    || '_' || sup_ver.STATUS_CODE,
16372                  'Y_Y__', to_number(null),
16373                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16374                  pjp1.LABOR_BRDN_COST)                LABOR_BRDN_COST,
16375           decode(wbs_hdr.WP_FLAG
16376                    || '_' || sup_wbs_hdr.WP_FLAG
16377                    || '_' || sub_ver.STATUS_CODE
16378                    || '_' || sup_ver.STATUS_CODE,
16379                  'Y_Y__', to_number(null),
16380                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16381                  pjp1.LABOR_HRS)                      LABOR_HRS,
16382           decode(wbs_hdr.WP_FLAG
16383                    || '_' || sup_wbs_hdr.WP_FLAG
16384                    || '_' || sub_ver.STATUS_CODE
16385                    || '_' || sup_ver.STATUS_CODE,
16386                  'Y_Y__', to_number(null),
16387                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16388                  pjp1.LABOR_REVENUE)                  LABOR_REVENUE,
16389           decode(wbs_hdr.WP_FLAG
16390                    || '_' || sup_wbs_hdr.WP_FLAG
16391                    || '_' || sub_ver.STATUS_CODE
16392                    || '_' || sup_ver.STATUS_CODE,
16393                  'Y_Y__', to_number(null),
16394                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16395                  pjp1.EQUIPMENT_HOURS)                EQUIPMENT_HOURS,
16396           decode(wbs_hdr.WP_FLAG
16397                    || '_' || sup_wbs_hdr.WP_FLAG
16398                    || '_' || sub_ver.STATUS_CODE
16399                    || '_' || sup_ver.STATUS_CODE,
16400                  'Y_Y__', to_number(null),
16401                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16402                  pjp1.BILLABLE_EQUIPMENT_HOURS)       BILLABLE_EQUIPMENT_HOURS,
16403           decode(wbs_hdr.WP_FLAG
16404                    || '_' || sup_wbs_hdr.WP_FLAG
16405                    || '_' || sub_ver.STATUS_CODE
16406                    || '_' || sup_ver.STATUS_CODE,
16407                  'Y_Y__', to_number(null),
16408                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16409                  pjp1.SUP_INV_COMMITTED_COST)         SUP_INV_COMMITTED_COST,
16410           decode(wbs_hdr.WP_FLAG
16411                    || '_' || sup_wbs_hdr.WP_FLAG
16412                    || '_' || sub_ver.STATUS_CODE
16413                    || '_' || sup_ver.STATUS_CODE,
16414                  'Y_Y__', to_number(null),
16415                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16416                  pjp1.PO_COMMITTED_COST)              PO_COMMITTED_COST,
16417           decode(wbs_hdr.WP_FLAG
16418                    || '_' || sup_wbs_hdr.WP_FLAG
16419                    || '_' || sub_ver.STATUS_CODE
16420                    || '_' || sup_ver.STATUS_CODE,
16421                  'Y_Y__', to_number(null),
16422                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16423                  pjp1.PR_COMMITTED_COST)              PR_COMMITTED_COST,
16424           decode(wbs_hdr.WP_FLAG
16425                    || '_' || sup_wbs_hdr.WP_FLAG
16426                    || '_' || sub_ver.STATUS_CODE
16427                    || '_' || sup_ver.STATUS_CODE,
16428                  'Y_Y__', to_number(null),
16429                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
16430                  pjp1.OTH_COMMITTED_COST)             OTH_COMMITTED_COST,
16431           decode(wbs_hdr.WP_FLAG
16432                    || '_' || sup_wbs_hdr.WP_FLAG
16433                    || '_' || sup_ver.STATUS_CODE,
16434                  'Y_Y_', to_number(null),
16435                  pjp1.ACT_LABOR_HRS)                  ACT_LABOR_HRS,
16436           decode(wbs_hdr.WP_FLAG
16437                    || '_' || sup_wbs_hdr.WP_FLAG
16438                    || '_' || sup_ver.STATUS_CODE,
16439                  'Y_Y_', to_number(null),
16440                  pjp1.ACT_EQUIP_HRS)                  ACT_EQUIP_HRS,
16441           decode(wbs_hdr.WP_FLAG
16442                    || '_' || sup_wbs_hdr.WP_FLAG
16443                    || '_' || sup_ver.STATUS_CODE,
16444                  'Y_Y_', to_number(null),
16445                  pjp1.ACT_LABOR_BRDN_COST)            ACT_LABOR_BRDN_COST,
16446           decode(wbs_hdr.WP_FLAG
16447                    || '_' || sup_wbs_hdr.WP_FLAG
16448                    || '_' || sup_ver.STATUS_CODE,
16449                  'Y_Y_', to_number(null),
16450                  pjp1.ACT_EQUIP_BRDN_COST)            ACT_EQUIP_BRDN_COST,
16451           decode(wbs_hdr.WP_FLAG
16452                    || '_' || sup_wbs_hdr.WP_FLAG
16453                    || '_' || sup_ver.STATUS_CODE,
16454                  'Y_Y_', to_number(null),
16455                  pjp1.ACT_BRDN_COST)                  ACT_BRDN_COST,
16456           decode(wbs_hdr.WP_FLAG
16457                    || '_' || sup_wbs_hdr.WP_FLAG
16458                    || '_' || sup_ver.STATUS_CODE,
16459                  'Y_Y_', to_number(null),
16460                  pjp1.ACT_RAW_COST)                   ACT_RAW_COST,
16461           decode(wbs_hdr.WP_FLAG
16462                    || '_' || sup_wbs_hdr.WP_FLAG
16463                    || '_' || sup_ver.STATUS_CODE,
16464                  'Y_Y_', to_number(null),
16465                  pjp1.ACT_REVENUE)                    ACT_REVENUE,
16466           decode(wbs_hdr.WP_FLAG
16467                    || '_' || sup_wbs_hdr.WP_FLAG
16468                    || '_' || sup_ver.STATUS_CODE,
16469                  'Y_Y_', to_number(null),
16470                  pjp1.ACT_LABOR_RAW_COST)             ACT_LABOR_RAW_COST,
16471           decode(wbs_hdr.WP_FLAG
16472                    || '_' || sup_wbs_hdr.WP_FLAG
16473                    || '_' || sup_ver.STATUS_CODE,
16474                  'Y_Y_', to_number(null),
16475                  pjp1.ACT_EQUIP_RAW_COST)             ACT_EQUIP_RAW_COST,
16476           decode(wbs_hdr.WP_FLAG
16477                    || '_' || sup_wbs_hdr.WP_FLAG
16478                    || '_' || sup_ver.STATUS_CODE,
16479                  'Y_Y_', to_number(null),
16480                  pjp1.ETC_LABOR_HRS)                  ETC_LABOR_HRS,
16481           decode(wbs_hdr.WP_FLAG
16482                    || '_' || sup_wbs_hdr.WP_FLAG
16483                    || '_' || sup_ver.STATUS_CODE,
16484                  'Y_Y_', to_number(null),
16485                  pjp1.ETC_EQUIP_HRS)                  ETC_EQUIP_HRS,
16486           decode(wbs_hdr.WP_FLAG
16487                    || '_' || sup_wbs_hdr.WP_FLAG
16488                    || '_' || sup_ver.STATUS_CODE,
16489                  'Y_Y_', to_number(null),
16490                  pjp1.ETC_LABOR_BRDN_COST)            ETC_LABOR_BRDN_COST,
16491           decode(wbs_hdr.WP_FLAG
16492                    || '_' || sup_wbs_hdr.WP_FLAG
16493                    || '_' || sup_ver.STATUS_CODE,
16494                  'Y_Y_', to_number(null),
16495                  pjp1.ETC_EQUIP_BRDN_COST)            ETC_EQUIP_BRDN_COST,
16496           decode(wbs_hdr.WP_FLAG
16497                    || '_' || sup_wbs_hdr.WP_FLAG
16498                    || '_' || sup_ver.STATUS_CODE,
16499                  'Y_Y_', to_number(null),
16500                  pjp1.ETC_BRDN_COST)                  ETC_BRDN_COST,
16501           decode(wbs_hdr.WP_FLAG
16502                    || '_' || sup_wbs_hdr.WP_FLAG
16503                    || '_' || sup_ver.STATUS_CODE,
16504                  'Y_Y_', to_number(null),
16505                  pjp1.ETC_RAW_COST)                   ETC_RAW_COST,
16506           decode(wbs_hdr.WP_FLAG
16507                    || '_' || sup_wbs_hdr.WP_FLAG
16508                    || '_' || sup_ver.STATUS_CODE,
16509                  'Y_Y_', to_number(null),
16510                  pjp1.ETC_LABOR_RAW_COST)             ETC_LABOR_RAW_COST,
16511           decode(wbs_hdr.WP_FLAG
16512                    || '_' || sup_wbs_hdr.WP_FLAG
16513                    || '_' || sup_ver.STATUS_CODE,
16514                  'Y_Y_', to_number(null),
16515                  pjp1.ETC_EQUIP_RAW_COST)             ETC_EQUIP_RAW_COST,
16516           pjp1.CUSTOM1,
16517           pjp1.CUSTOM2,
16518           pjp1.CUSTOM3,
16519           pjp1.CUSTOM4,
16520           pjp1.CUSTOM5,
16521           pjp1.CUSTOM6,
16522           pjp1.CUSTOM7,
16523           pjp1.CUSTOM8,
16524           pjp1.CUSTOM9,
16525           pjp1.CUSTOM10,
16526           pjp1.CUSTOM11,
16527           pjp1.CUSTOM12,
16528           pjp1.CUSTOM13,
16529           pjp1.CUSTOM14,
16530           pjp1.CUSTOM15
16531         from
16532           PJI_FP_AGGR_PJP1           pjp1,
16533           PJI_PJP_WBS_HEADER         wbs_hdr,
16534           PA_PROJ_ELEMENTS           prj_emt,
16535           PA_XBS_DENORM              prg,
16536           PJI_XBS_DENORM_DELTA       prg_delta,
16537           PJI_PJP_WBS_HEADER         sup_wbs_hdr,
16538           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
16539           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
16540           (
16541             select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID
16542             from DUAL union all
16543             select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID
16544             from DUAL union all
16545             select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID
16546             from DUAL union all
16547             select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID
16548             from DUAL
16549           ) fin_plan
16550         where
16551           prg.STRUCT_TYPE            =  'PRG'                           and
16552           prg.SUP_LEVEL              =  l_level                         and
16553           nvl(prg.SUB_ROLLUP_ID,
16554               prg.SUP_EMT_ID)        <> prg.SUP_EMT_ID                  and
16555           p_worker_id                =  prg_delta.WORKER_ID         (+) and
16556           prg.STRUCT_TYPE            =  prg_delta.STRUCT_TYPE       (+) and
16557           prg.SUP_PROJECT_ID         =  prg_delta.SUP_PROJECT_ID    (+) and
16558           prg.SUP_LEVEL              =  prg_delta.SUP_LEVEL         (+) and
16559           prg.SUP_ID                 =  prg_delta.SUP_ID            (+) and
16560           prg.SUB_LEVEL              =  prg_delta.SUB_LEVEL         (+) and
16561           prg.SUB_ID                 =  prg_delta.SUB_ID            (+) and
16562           prg.RELATIONSHIP_TYPE      =  prg_delta.RELATIONSHIP_TYPE (+) and
16563           1                          =  prg_delta.SIGN              (+) and
16564           (prg_delta.SUP_PROJECT_ID is not null or
16565            (prg_delta.SUP_PROJECT_ID is null and
16566             pjp1.RECORD_TYPE = 'P'))                                    and
16567           pjp1.WORKER_ID             =  p_worker_id                     and
16568           pjp1.PRG_LEVEL             in (0, prg.SUB_LEVEL)              and
16569           pjp1.PROJECT_ID            =  prj_emt.PROJECT_ID              and
16570           (((pjp1.RBS_AGGR_LEVEL,
16571              pjp1.WBS_ROLLUP_FLAG,
16572              pjp1.PRG_ROLLUP_FLAG) in (('T', 'Y', 'Y'),
16573                                        ('T', 'Y', 'N'),
16574                                        ('T', 'N', 'Y'),
16575                                        ('T', 'N', 'N'),
16576                                        ('L', 'N', 'N')) and
16577              pjp1.PROJECT_ELEMENT_ID = prg.SUB_EMT_ID) or
16578            ((pjp1.RBS_AGGR_LEVEL,
16579              pjp1.WBS_ROLLUP_FLAG,
16580              pjp1.PRG_ROLLUP_FLAG) in (('L', 'N', 'Y'),
16581                                        ('L', 'N', 'N')) and
16582              pjp1.PROJECT_ELEMENT_ID <> prg.SUB_EMT_ID))                and
16583           decode(pjp1.PLAN_VERSION_ID,
16584                  -1, 'LF',
16585                  -2, 'LF',
16586                  -3, 'LF',
16587                  -4, 'LF',
16588                      decode(wbs_hdr.WP_FLAG,
16589                             'N', 'LF',
16590                               'LW')) =  prg.RELATIONSHIP_TYPE           and
16591           prg.STRUCT_VERSION_ID      is null                            and
16592           prj_emt.OBJECT_TYPE        =  'PA_STRUCTURES'                 and
16593           prj_emt.PROJ_ELEMENT_ID    =  prg.SUB_EMT_ID                  and
16594           wbs_hdr.PROJECT_ID         =  prj_emt.PROJECT_ID              and
16595           wbs_hdr.WBS_VERSION_ID     =  prg.SUB_ID                      and
16596           wbs_hdr.PROJECT_ID         =  pjp1.PROJECT_ID                 and
16597           wbs_hdr.PLAN_VERSION_ID    =  pjp1.PLAN_VERSION_ID            and
16598           wbs_hdr.PLAN_TYPE_CODE     =  pjp1.PLAN_TYPE_CODE             and
16599           decode(pjp1.PLAN_VERSION_ID,
16600                  -3, pjp1.PLAN_TYPE_ID,
16601                  -4, pjp1.PLAN_TYPE_ID,
16602                      -1)             =  decode(pjp1.PLAN_VERSION_ID,
16603                                                -3, wbs_hdr.PLAN_TYPE_ID,
16604                                                -4, wbs_hdr.PLAN_TYPE_ID,
16605                                                    -1)                  and
16606           decode(wbs_hdr.WP_FLAG,
16607                  'N', decode(pjp1.PLAN_VERSION_ID,
16608                              -1, 'Y',
16609                              -2, 'Y',
16610                              -3, 'Y',
16611                              -4, 'Y',
16612                                  decode(pjp1.RBS_AGGR_LEVEL
16613                                           || '_' || wbs_hdr.CB_FLAG
16614                                           || '_' || wbs_hdr.CO_FLAG,
16615                                         'L_Y_Y', 'Y',
16616                                         'L_N_Y', 'Y',
16617                                         'L_Y_N', 'Y',
16618                                                  'N')),
16619                       'Y')           =  'Y'                             and
16620           prg.SUP_PROJECT_ID         =  sup_wbs_hdr.PROJECT_ID      (+) and
16621           prg.SUP_ID                 =  sup_wbs_hdr.WBS_VERSION_ID  (+) and
16622           'Y'                        =  sup_wbs_hdr.WP_FLAG         (+) and
16623           wbs_hdr.PROJECT_ID         =  sub_ver.PROJECT_ID          (+) and
16624           wbs_hdr.WBS_VERSION_ID     =  sub_ver.ELEMENT_VERSION_ID  (+) and
16625           'STRUCTURE_PUBLISHED'      =  sub_ver.STATUS_CODE         (+) and
16626           sup_wbs_hdr.PROJECT_ID     =  sup_ver.PROJECT_ID          (+) and
16627           sup_wbs_hdr.WBS_VERSION_ID =  sup_ver.ELEMENT_VERSION_ID  (+) and
16628           'STRUCTURE_PUBLISHED'      =  sup_ver.STATUS_CODE         (+) and
16629           wbs_hdr.CB_FLAG            =  fin_plan.CB                 (+) and
16630           wbs_hdr.CO_FLAG            =  fin_plan.CO                 (+)
16631         )                          pjp,
16632         PJI_PJP_PROJ_BATCH_MAP     map,
16633         PA_PROJ_WORKPLAN_ATTR      sup_wpa,
16634         PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
16635         PA_XBS_DENORM              wbs,
16636         (
16637           select 1     WBS_SUP_LEVEL,
16638                  'PRJ' INVERT_ID
16639           from   DUAL
16640           union all
16641           select 1     WBS_SUP_LEVEL,
16642                  'WBS' INVERT_ID
16643           from   DUAL
16644         ) top_slice
16645       where
16646         map.WORKER_ID           = p_worker_id                         and
16647         map.PROJECT_ID          = pjp.SUP_PROJECT_ID                  and
16648         pjp.SUP_EMT_ID          = sup_wpa.PROJ_ELEMENT_ID             and
16649         pjp.SUP_PROJECT_ID      = sup_fin_ver.PROJECT_ID          (+) and
16650         pjp.SUP_ID              = sup_fin_ver.ELEMENT_VERSION_ID  (+) and
16651         'STRUCTURE_WORKING'     = sup_fin_ver.STATUS_CODE         (+) and
16652         (pjp.SUP_WP_FLAG is null or
16653          (pjp.SUP_WP_FLAG is not null and
16654           (sup_fin_ver.PROJECT_ID is not null or
16655            sup_wpa.WP_ENABLE_VERSION_FLAG = 'N')))                    and
16656         'WBS'                   = wbs.STRUCT_TYPE                 (+) and
16657         pjp.STRUCT_TYPE         = wbs.STRUCT_TYPE                 (+) and
16658         pjp.SUP_PROJECT_ID      = wbs.SUP_PROJECT_ID              (+) and
16659         pjp.SUP_ID              = wbs.STRUCT_VERSION_ID           (+) and
16660         pjp.SUB_ROLLUP_ID       = wbs.SUB_EMT_ID                  (+) and
16661         wbs.SUP_LEVEL           = top_slice.WBS_SUP_LEVEL         (+)
16662       group by
16663         pjp.LINE_TYPE,
16664         pjp.SUP_PROJECT_ID,
16665         map.PROJECT_ORG_ID,
16666         map.PROJECT_ORGANIZATION_ID,
16667         decode(pjp.STRUCT_TYPE,
16668                'DO_NOT_ROLLUP', pjp.SUB_ROLLUP_ID,
16669                                 decode(top_slice.INVERT_ID,
16670                                        'PRJ', pjp.SUP_EMT_ID, wbs.SUP_EMT_ID)
16671               ),
16672         pjp.TIME_ID,
16673         pjp.PERIOD_TYPE_ID,
16674         pjp.CALENDAR_TYPE,
16675         pjp.RBS_AGGR_LEVEL,
16676         decode(pjp.STRUCT_TYPE,
16677                'DO_NOT_ROLLUP', 'N',
16678                                 decode(top_slice.INVERT_ID,
16679                                        'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
16680                                                           wbs.SUP_EMT_ID,
16681                                                           'N', 'Y'))
16682               ),
16683         pjp.CURR_RECORD_TYPE_ID,
16684         pjp.CURRENCY_CODE,
16685         pjp.RBS_ELEMENT_ID,
16686         pjp.RBS_VERSION_ID,
16687         pjp.PLAN_VERSION_ID,
16688         pjp.PLAN_TYPE_ID,
16689         pjp.PLAN_TYPE_CODE;*/
16690 
16691       update PJI_SYSTEM_PRC_STATUS
16692       set    STEP_STATUS = 'C',
16693              END_DATE = sysdate
16694       where  PROCESS_NAME = l_process and
16695              STEP_SEQ = l_level_seq;
16696 
16697       commit;
16698 
16699       select
16700         nvl(to_number(min(STEP_SEQ)), 0)
16701       into
16702         l_level_seq
16703       from
16704         PJI_SYSTEM_PRC_STATUS
16705       where
16706         PROCESS_NAME = l_process and
16707         STEP_NAME like 'ROLLUP_FPR_PRG%' and
16708         STEP_STATUS is null;
16709 
16710       if (l_level_seq = 0) then
16711         l_level := 0;
16712       else
16713         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
16714       end if;
16715 
16716     end loop;
16717 
16718     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);');
16719 
16720     commit;
16721 
16722   end ROLLUP_FPR_PRG;
16723 
16724 
16725   -- -----------------------------------------------------
16726   -- procedure ROLLUP_ACR_PRG
16727   --
16728   --   History
16729   --   19-MAR-2004  SVERMETT  Created
16730   --
16731   -- Internal PJP Summarization API.
16732   --
16733   -- -----------------------------------------------------
16734   procedure ROLLUP_ACR_PRG (p_worker_id in number) is
16735 
16736     l_process         varchar2(30);
16737     l_prg_exists      varchar2(25);
16738     l_extraction_type varchar2(30);
16739     l_level           number;
16740     l_max_level       number;
16741     l_step_seq        number;
16742     l_level_seq       number;
16743     l_count           number;
16744 
16745   begin
16746 
16747     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16748 
16749     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);')) then
16750       return;
16751     end if;
16752 
16753     l_prg_exists := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
16754                     (l_process, 'PROGRAM_EXISTS');
16755 
16756     if (l_prg_exists = 'N') then
16757       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process,
16758         'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);');
16759       commit;
16760       return;
16761     end if;
16762 
16763     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16764 
16765     -- allow recovery after each level is processed
16766 
16767     select
16768       STEP_SEQ
16769     into
16770       l_step_seq
16771     from
16772       PJI_SYSTEM_PRC_STATUS
16773     where
16774       PROCESS_NAME = l_process and
16775       STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);';
16776 
16777     select
16778       count(*)
16779     into
16780       l_count
16781     from
16782       PJI_SYSTEM_PRC_STATUS
16783     where
16784       PROCESS_NAME = l_process and
16785       STEP_NAME like 'ROLLUP_ACR_PRG%';
16786 
16787     if (l_count = 0) then
16788 
16789       select
16790          nvl(max(den.SUP_LEVEL), 0)
16791       into
16792         l_level
16793       from
16794         PJI_XBS_DENORM_DELTA den
16795       where
16796         den.WORKER_ID = p_worker_id and
16797         den.STRUCT_TYPE = 'PRG';
16798 
16799       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
16800                                              'MAX_PROGRAM_LEVEL',
16801                                              l_level);
16802 
16803       insert into PJI_SYSTEM_PRC_STATUS
16804       (
16805         PROCESS_NAME,
16806         STEP_SEQ,
16807         STEP_STATUS,
16808         STEP_NAME,
16809         START_DATE,
16810         END_DATE
16811       )
16812       select
16813         l_process                              PROCESS_NAME,
16814         to_char(l_step_seq + SUP_LEVEL / 1000) STEP_SEQ,
16815         null                                   STEP_STATUS,
16816         'ROLLUP_ACR_PRG - level ' ||
16817           to_char(l_level - SUP_LEVEL + 1)     STEP_NAME,
16818         null                                   START_DATE,
16819         null                                   END_DATE
16820       from
16821       (
16822         select
16823           SUP_LEVEL
16824         from
16825           PJI_XBS_DENORM_DELTA
16826         where
16827           worker_id = p_worker_id and
16828           STRUCT_TYPE = 'PRG'
16829         union all
16830         select
16831           SUP_LEVEL
16832         from
16833           PA_XBS_DENORM den,
16834           PJI_PJP_PROJ_BATCH_MAP map
16835         where
16836           map.WORKER_ID      = p_worker_id    and
16837           den.STRUCT_TYPE    = 'PRG'          and
16838           den.SUP_PROJECT_ID = map.PROJECT_ID
16839       )
16840       where
16841         exists
16842         (
16843         select
16844           1
16845         from
16846           PJI_XBS_DENORM_DELTA
16847         where
16848           WORKER_ID = p_worker_id and
16849           ROWNUM = 1
16850         )
16851       group by
16852         SUP_LEVEL
16853       order by
16854         SUP_LEVEL desc;
16855 
16856     end if;
16857 
16858     l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
16859                    (l_process, 'MAX_PROGRAM_LEVEL');
16860 
16861     select
16862       nvl(to_number(min(STEP_SEQ)), 0)
16863     into
16864       l_level_seq
16865     from
16866       PJI_SYSTEM_PRC_STATUS
16867     where
16868       PROCESS_NAME = l_process and
16869       STEP_NAME like 'ROLLUP_ACR_PRG%' and
16870       STEP_STATUS is null;
16871 
16872     if (l_level_seq = 0) then
16873       l_level := 0;
16874     else
16875       l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
16876     end if;
16877 
16878     while (l_level > 0) loop
16879 
16880       update PJI_SYSTEM_PRC_STATUS
16881       set    START_DATE = sysdate
16882       where  PROCESS_NAME = l_process and
16883              STEP_SEQ = l_level_seq;
16884 
16885       -- rollup project hiearchy
16886 /* Call to Paritioned procedure for bug 7551819 */
16887       PJI_PROCESS_UTIL.EXECUTE_ROLLUP_ACR_PRG(p_worker_id,
16888                                               l_level);
16889 
16890 /* Commented for bug 7551819 */
16891   --    insert /*+ parallel(pjp1_in)
16892     --             noappend(pjp1_in) */ into PJI_AC_AGGR_PJP1 pjp1_in      -- changed for bug 5927368
16893      /* (
16894         WORKER_ID,
16895         RECORD_TYPE,
16896         PRG_LEVEL,
16897         PROJECT_ID,
16898         PROJECT_ORG_ID,
16899         PROJECT_ORGANIZATION_ID,
16900         PROJECT_ELEMENT_ID,
16901         TIME_ID,
16902         PERIOD_TYPE_ID,
16903         CALENDAR_TYPE,
16904         WBS_ROLLUP_FLAG,
16905         PRG_ROLLUP_FLAG,
16906         CURR_RECORD_TYPE_ID,
16907         CURRENCY_CODE,
16908         REVENUE,
16909         INITIAL_FUNDING_AMOUNT,
16910         INITIAL_FUNDING_COUNT,
16911         ADDITIONAL_FUNDING_AMOUNT,
16912         ADDITIONAL_FUNDING_COUNT,
16913         CANCELLED_FUNDING_AMOUNT,
16914         CANCELLED_FUNDING_COUNT,
16915         FUNDING_ADJUSTMENT_AMOUNT,
16916         FUNDING_ADJUSTMENT_COUNT,
16917         REVENUE_WRITEOFF,
16918         AR_INVOICE_AMOUNT,
16919         AR_INVOICE_COUNT,
16920         AR_CASH_APPLIED_AMOUNT,
16921         AR_INVOICE_WRITE_OFF_AMOUNT,
16922         AR_INVOICE_WRITEOFF_COUNT,
16923         AR_CREDIT_MEMO_AMOUNT,
16924         AR_CREDIT_MEMO_COUNT,
16925         UNBILLED_RECEIVABLES,
16926         UNEARNED_REVENUE,
16927         AR_UNAPPR_INVOICE_AMOUNT,
16928         AR_UNAPPR_INVOICE_COUNT,
16929         AR_APPR_INVOICE_AMOUNT,
16930         AR_APPR_INVOICE_COUNT,
16931         AR_AMOUNT_DUE,
16932         AR_COUNT_DUE,
16933         AR_AMOUNT_OVERDUE,
16934         AR_COUNT_OVERDUE,
16935         CUSTOM1,
16936         CUSTOM2,
16937         CUSTOM3,
16938         CUSTOM4,
16939         CUSTOM5,
16940         CUSTOM6,
16941         CUSTOM7,
16942         CUSTOM8,
16943         CUSTOM9,
16944         CUSTOM10,
16945         CUSTOM11,
16946         CUSTOM12,
16947         CUSTOM13,
16948         CUSTOM14,
16949         CUSTOM15
16950       )
16951       select /*+ no_merge(pjp) */
16952         /*p_worker_id                                WORKER_ID,
16953         'P'                                        RECORD_TYPE,
16954         l_level                                    PRG_LEVEL,
16955         pjp.SUP_PROJECT_ID                         PROJECT_ID,
16956         map.PROJECT_ORG_ID,
16957         map.PROJECT_ORGANIZATION_ID,
16958         decode(top_slice.INVERT_ID,
16959                'PRJ', pjp.SUP_EMT_ID,
16960                wbs.SUP_EMT_ID)                     PROJECT_ELEMENT_ID,
16961         pjp.TIME_ID,
16962         pjp.PERIOD_TYPE_ID,
16963         pjp.CALENDAR_TYPE,
16964         decode(top_slice.INVERT_ID,
16965                'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
16966                                   wbs.SUP_EMT_ID,
16967                                   'N', 'Y'))       WBS_ROLLUP_FLAG,
16968         'Y'                                        PRG_ROLLUP_FLAG,
16969         pjp.CURR_RECORD_TYPE_ID,
16970         pjp.CURRENCY_CODE,
16971         sum(pjp.REVENUE)                           REVENUE,
16972         sum(pjp.INITIAL_FUNDING_AMOUNT)            INITIAL_FUNDING_AMOUNT,
16973         sum(pjp.INITIAL_FUNDING_COUNT)             INITIAL_FUNDING_COUNT,
16974         sum(pjp.ADDITIONAL_FUNDING_AMOUNT)         ADDITIONAL_FUNDING_AMOUNT,
16975         sum(pjp.ADDITIONAL_FUNDING_COUNT)          ADDITIONAL_FUNDING_COUNT,
16976         sum(pjp.CANCELLED_FUNDING_AMOUNT)          CANCELLED_FUNDING_AMOUNT,
16977         sum(pjp.CANCELLED_FUNDING_COUNT)           CANCELLED_FUNDING_COUNT,
16978         sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)         FUNDING_ADJUSTMENT_AMOUNT,
16979         sum(pjp.FUNDING_ADJUSTMENT_COUNT)          FUNDING_ADJUSTMENT_COUNT,
16980         sum(pjp.REVENUE_WRITEOFF)                  REVENUE_WRITEOFF,
16981         sum(pjp.AR_INVOICE_AMOUNT)                 AR_INVOICE_AMOUNT,
16982         sum(pjp.AR_INVOICE_COUNT)                  AR_INVOICE_COUNT,
16983         sum(pjp.AR_CASH_APPLIED_AMOUNT)            AR_CASH_APPLIED_AMOUNT,
16984         sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)       AR_INVOICE_WRITE_OFF_AMOUNT,
16985         sum(pjp.AR_INVOICE_WRITEOFF_COUNT)         AR_INVOICE_WRITEOFF_COUNT,
16986         sum(pjp.AR_CREDIT_MEMO_AMOUNT)             AR_CREDIT_MEMO_AMOUNT,
16987         sum(pjp.AR_CREDIT_MEMO_COUNT)              AR_CREDIT_MEMO_COUNT,
16988         sum(pjp.UNBILLED_RECEIVABLES)              UNBILLED_RECEIVABLES,
16989         sum(pjp.UNEARNED_REVENUE)                  UNEARNED_REVENUE,
16990         sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)          AR_UNAPPR_INVOICE_AMOUNT,
16991         sum(pjp.AR_UNAPPR_INVOICE_COUNT)           AR_UNAPPR_INVOICE_COUNT,
16992         sum(pjp.AR_APPR_INVOICE_AMOUNT)            AR_APPR_INVOICE_AMOUNT,
16993         sum(pjp.AR_APPR_INVOICE_COUNT)             AR_APPR_INVOICE_COUNT,
16994         sum(pjp.AR_AMOUNT_DUE)                     AR_AMOUNT_DUE,
16995         sum(pjp.AR_COUNT_DUE)                      AR_COUNT_DUE,
16996         sum(pjp.AR_AMOUNT_OVERDUE)                 AR_AMOUNT_OVERDUE,
16997         sum(pjp.AR_COUNT_OVERDUE)                  AR_COUNT_OVERDUE,
16998         sum(pjp.CUSTOM1)                           CUSTOM1,
16999         sum(pjp.CUSTOM2)                           CUSTOM2,
17000         sum(pjp.CUSTOM3)                           CUSTOM3,
17001         sum(pjp.CUSTOM4)                           CUSTOM4,
17002         sum(pjp.CUSTOM5)                           CUSTOM5,
17003         sum(pjp.CUSTOM6)                           CUSTOM6,
17004         sum(pjp.CUSTOM7)                           CUSTOM7,
17005         sum(pjp.CUSTOM8)                           CUSTOM8,
17006         sum(pjp.CUSTOM9)                           CUSTOM9,
17007         sum(pjp.CUSTOM10)                          CUSTOM10,
17008         sum(pjp.CUSTOM11)                          CUSTOM11,
17009         sum(pjp.CUSTOM12)                          CUSTOM12,
17010         sum(pjp.CUSTOM13)                          CUSTOM13,
17011         sum(pjp.CUSTOM14)                          CUSTOM14,
17012         sum(pjp.CUSTOM15)                          CUSTOM15
17013       from
17014         (
17015         select /*+ ordered index(acr PJI_AC_XBS_ACCUM_F_N1) */
17016                -- get structure level amounts from Reporting Lines
17017           /*prg.SUP_PROJECT_ID,
17018           prg.SUP_ID,
17019           prg.SUP_EMT_ID,
17020           prg.SUB_EMT_ID,
17021           prg.SUB_ROLLUP_ID,
17022           'ACR'                                    LINE_SOURCE,
17023           prg.SUB_ID,
17024           acr.TIME_ID,
17025           acr.PERIOD_TYPE_ID,
17026           acr.CALENDAR_TYPE,
17027           acr.CURR_RECORD_TYPE_ID,
17028           acr.CURRENCY_CODE,
17029           prg.SIGN * acr.REVENUE                   REVENUE,
17030           prg.SIGN * acr.INITIAL_FUNDING_AMOUNT    INITIAL_FUNDING_AMOUNT,
17031           prg.SIGN * acr.INITIAL_FUNDING_COUNT     INITIAL_FUNDING_COUNT,
17032           prg.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT ADDITIONAL_FUNDING_AMOUNT,
17033           prg.SIGN * acr.ADDITIONAL_FUNDING_COUNT  ADDITIONAL_FUNDING_COUNT,
17034           prg.SIGN * acr.CANCELLED_FUNDING_AMOUNT  CANCELLED_FUNDING_AMOUNT,
17035           prg.SIGN * acr.CANCELLED_FUNDING_COUNT   CANCELLED_FUNDING_COUNT,
17036           prg.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT FUNDING_ADJUSTMENT_AMOUNT,
17037           prg.SIGN * acr.FUNDING_ADJUSTMENT_COUNT  FUNDING_ADJUSTMENT_COUNT,
17038           prg.SIGN * acr.REVENUE_WRITEOFF          REVENUE_WRITEOFF,
17039           prg.SIGN * acr.AR_INVOICE_AMOUNT         AR_INVOICE_AMOUNT,
17040           prg.SIGN * acr.AR_INVOICE_COUNT          AR_INVOICE_COUNT,
17041           prg.SIGN * acr.AR_CASH_APPLIED_AMOUNT    AR_CASH_APPLIED_AMOUNT,
17042           prg.SIGN *
17043             acr.AR_INVOICE_WRITE_OFF_AMOUNT        AR_INVOICE_WRITE_OFF_AMOUNT,
17044           prg.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT AR_INVOICE_WRITEOFF_COUNT,
17045           prg.SIGN * acr.AR_CREDIT_MEMO_AMOUNT     AR_CREDIT_MEMO_AMOUNT,
17046           prg.SIGN * acr.AR_CREDIT_MEMO_COUNT      AR_CREDIT_MEMO_COUNT,
17047           prg.SIGN * acr.UNBILLED_RECEIVABLES      UNBILLED_RECEIVABLES,
17048           prg.SIGN * acr.UNEARNED_REVENUE          UNEARNED_REVENUE,
17049           prg.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT  AR_UNAPPR_INVOICE_AMOUNT,
17050           prg.SIGN * acr.AR_UNAPPR_INVOICE_COUNT   AR_UNAPPR_INVOICE_COUNT,
17051           prg.SIGN * acr.AR_APPR_INVOICE_AMOUNT    AR_APPR_INVOICE_AMOUNT,
17052           prg.SIGN * acr.AR_APPR_INVOICE_COUNT     AR_APPR_INVOICE_COUNT,
17053           prg.SIGN * acr.AR_AMOUNT_DUE             AR_AMOUNT_DUE,
17054           prg.SIGN * acr.AR_COUNT_DUE              AR_COUNT_DUE,
17055           prg.SIGN * acr.AR_AMOUNT_OVERDUE         AR_AMOUNT_OVERDUE,
17056           prg.SIGN * acr.AR_COUNT_OVERDUE          AR_COUNT_OVERDUE,
17057           prg.SIGN * acr.CUSTOM1                   CUSTOM1,
17058           prg.SIGN * acr.CUSTOM2                   CUSTOM2,
17059           prg.SIGN * acr.CUSTOM3                   CUSTOM3,
17060           prg.SIGN * acr.CUSTOM4                   CUSTOM4,
17061           prg.SIGN * acr.CUSTOM5                   CUSTOM5,
17062           prg.SIGN * acr.CUSTOM6                   CUSTOM6,
17063           prg.SIGN * acr.CUSTOM7                   CUSTOM7,
17064           prg.SIGN * acr.CUSTOM8                   CUSTOM8,
17065           prg.SIGN * acr.CUSTOM9                   CUSTOM9,
17066           prg.SIGN * acr.CUSTOM10                  CUSTOM10,
17067           prg.SIGN * acr.CUSTOM11                  CUSTOM11,
17068           prg.SIGN * acr.CUSTOM12                  CUSTOM12,
17069           prg.SIGN * acr.CUSTOM13                  CUSTOM13,
17070           prg.SIGN * acr.CUSTOM14                  CUSTOM14,
17071           prg.SIGN * acr.CUSTOM15                  CUSTOM15
17072         from
17073           PJI_XBS_DENORM_DELTA prg,
17074           PA_PROJ_ELEMENTS     prj_emt,
17075           PJI_PJP_WBS_HEADER   wbs_hdr,
17076           PJI_AC_XBS_ACCUM_F   acr
17077         where
17078           prg.WORKER_ID           =  p_worker_id        and
17079           prg.STRUCT_TYPE         =  'PRG'              and
17080           prg.RELATIONSHIP_TYPE   =  'LF'               and
17081           prg.SUP_LEVEL           =  l_level            and
17082           nvl(prg.SUB_ROLLUP_ID,
17083               prg.SUP_EMT_ID)     <> prg.SUP_EMT_ID     and
17084           acr.WBS_ROLLUP_FLAG     in ('Y', 'N')         and
17085           acr.PRG_ROLLUP_FLAG     in ('Y', 'N')         and
17086           acr.PROJECT_ID          =  prj_emt.PROJECT_ID and
17087           acr.PROJECT_ELEMENT_ID  =  prg.SUB_EMT_ID     and
17088           prj_emt.PROJ_ELEMENT_ID =  prg.SUB_EMT_ID     and
17089           wbs_hdr.PROJECT_ID      =  prj_emt.PROJECT_ID and
17090           wbs_hdr.PLAN_VERSION_ID =  -1
17091         union all
17092         select /*+ ordered */
17093                -- get program rollup amounts
17094           /*prg.SUP_PROJECT_ID,
17095           prg.SUP_ID,
17096           prg.SUP_EMT_ID,
17097           prg.SUB_EMT_ID,
17098           prg.SUB_ROLLUP_ID,
17099           'PJP1'                                   LINE_SOURCE,
17100           prg.SUB_ID,
17101           pjp1.TIME_ID,
17102           pjp1.PERIOD_TYPE_ID,
17103           pjp1.CALENDAR_TYPE,
17104           pjp1.CURR_RECORD_TYPE_ID,
17105           pjp1.CURRENCY_CODE,
17106           pjp1.REVENUE,
17107           pjp1.INITIAL_FUNDING_AMOUNT,
17108           pjp1.INITIAL_FUNDING_COUNT,
17109           pjp1.ADDITIONAL_FUNDING_AMOUNT,
17110           pjp1.ADDITIONAL_FUNDING_COUNT,
17111           pjp1.CANCELLED_FUNDING_AMOUNT,
17112           pjp1.CANCELLED_FUNDING_COUNT,
17113           pjp1.FUNDING_ADJUSTMENT_AMOUNT,
17114           pjp1.FUNDING_ADJUSTMENT_COUNT,
17115           pjp1.REVENUE_WRITEOFF,
17116           pjp1.AR_INVOICE_AMOUNT,
17117           pjp1.AR_INVOICE_COUNT,
17118           pjp1.AR_CASH_APPLIED_AMOUNT,
17119           pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
17120           pjp1.AR_INVOICE_WRITEOFF_COUNT,
17121           pjp1.AR_CREDIT_MEMO_AMOUNT,
17122           pjp1.AR_CREDIT_MEMO_COUNT,
17123           pjp1.UNBILLED_RECEIVABLES,
17124           pjp1.UNEARNED_REVENUE,
17125           pjp1.AR_UNAPPR_INVOICE_AMOUNT,
17126           pjp1.AR_UNAPPR_INVOICE_COUNT,
17127           pjp1.AR_APPR_INVOICE_AMOUNT,
17128           pjp1.AR_APPR_INVOICE_COUNT,
17129           pjp1.AR_AMOUNT_DUE,
17130           pjp1.AR_COUNT_DUE,
17131           pjp1.AR_AMOUNT_OVERDUE,
17132           pjp1.AR_COUNT_OVERDUE,
17133           pjp1.CUSTOM1,
17134           pjp1.CUSTOM2,
17135           pjp1.CUSTOM3,
17136           pjp1.CUSTOM4,
17137           pjp1.CUSTOM5,
17138           pjp1.CUSTOM6,
17139           pjp1.CUSTOM7,
17140           pjp1.CUSTOM8,
17141           pjp1.CUSTOM9,
17142           pjp1.CUSTOM10,
17143           pjp1.CUSTOM11,
17144           pjp1.CUSTOM12,
17145           pjp1.CUSTOM13,
17146           pjp1.CUSTOM14,
17147           pjp1.CUSTOM15
17148         from
17149           PJI_AC_AGGR_PJP1     pjp1,
17150           PJI_PJP_WBS_HEADER   wbs_hdr,
17151           PA_PROJ_ELEMENTS     prj_emt,
17152           PA_XBS_DENORM        prg,
17153           PJI_XBS_DENORM_DELTA prg_delta
17154         where
17155           prg.STRUCT_TYPE         =  'PRG'                           and
17156           prg.SUP_LEVEL           =  l_level                         and
17157           nvl(prg.SUB_ROLLUP_ID,
17158               prg.SUP_EMT_ID)     <> prg.SUP_EMT_ID                  and
17159           prg.RELATIONSHIP_TYPE   =  'LF'                            and
17160           p_worker_id             =  prg_delta.WORKER_ID         (+) and
17161           prg.STRUCT_TYPE         =  prg_delta.STRUCT_TYPE       (+) and
17162           prg.SUP_PROJECT_ID      =  prg_delta.SUP_PROJECT_ID    (+) and
17163           prg.SUP_LEVEL           =  prg_delta.SUP_LEVEL         (+) and
17164           prg.SUP_ID              =  prg_delta.SUP_ID            (+) and
17165           prg.SUB_LEVEL           =  prg_delta.SUB_LEVEL         (+) and
17166           prg.SUB_ID              =  prg_delta.SUB_ID            (+) and
17167           prg.RELATIONSHIP_TYPE   =  prg_delta.RELATIONSHIP_TYPE (+) and
17168           1                       =  prg_delta.SIGN              (+) and
17169           (prg_delta.SUP_PROJECT_ID is not null or
17170            (prg_delta.SUP_PROJECT_ID is null and
17171             pjp1.RECORD_TYPE = 'P'))                                 and
17172           pjp1.WORKER_ID          =  p_worker_id                     and
17173           pjp1.PRG_LEVEL          in (0, prg.SUB_LEVEL)              and
17174           pjp1.WBS_ROLLUP_FLAG    in ('Y', 'N')                      and
17175           pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                      and
17176           pjp1.PROJECT_ID         =  prj_emt.PROJECT_ID              and
17177           pjp1.PROJECT_ELEMENT_ID =  prg.SUB_EMT_ID                  and
17178           prg.STRUCT_VERSION_ID   is null                            and
17179           prj_emt.OBJECT_TYPE     =  'PA_STRUCTURES'                 and
17180           prj_emt.PROJ_ELEMENT_ID =  prg.SUB_EMT_ID                  and
17181           wbs_hdr.PROJECT_ID      =  prj_emt.PROJECT_ID              and
17182           wbs_hdr.WBS_VERSION_ID  =  prg.SUB_ID                      and
17183           wbs_hdr.PROJECT_ID      =  pjp1.PROJECT_ID                 and
17184           wbs_hdr.PLAN_VERSION_ID =  -1
17185         )                          pjp,
17186         PJI_PJP_PROJ_BATCH_MAP     map,
17187         PA_PROJ_WORKPLAN_ATTR      sup_wpa,
17188         PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
17189         PA_XBS_DENORM              wbs,
17190         (
17191           select 1     WBS_SUP_LEVEL,
17192                  'PRJ' INVERT_ID
17193           from   DUAL
17194           union all
17195           select 1     WBS_SUP_LEVEL,
17196                  'WBS' INVERT_ID
17197           from   DUAL
17198         ) top_slice
17199       where
17200         map.WORKER_ID         =  p_worker_id                        and
17201         map.PROJECT_ID        = pjp.SUP_PROJECT_ID                  and
17202         pjp.SUP_EMT_ID        = sup_wpa.PROJ_ELEMENT_ID             and
17203         pjp.SUP_PROJECT_ID    = sup_fin_ver.PROJECT_ID          (+) and
17204         pjp.SUP_ID            = sup_fin_ver.ELEMENT_VERSION_ID  (+) and
17205         'STRUCTURE_WORKING'   = sup_fin_ver.STATUS_CODE         (+) and
17206         (sup_fin_ver.PROJECT_ID is not null or
17207          sup_wpa.WP_ENABLE_VERSION_FLAG = 'N')                      and
17208         wbs.STRUCT_TYPE       =  'WBS'                              and
17209         wbs.SUP_PROJECT_ID    =  map.PROJECT_ID                     and
17210         wbs.SUP_PROJECT_ID    =  pjp.SUP_PROJECT_ID                 and
17211         wbs.STRUCT_VERSION_ID =  pjp.SUP_ID                         and
17212         wbs.SUB_EMT_ID        =  pjp.SUB_ROLLUP_ID                  and
17213         wbs.SUP_LEVEL         =  top_slice.WBS_SUP_LEVEL        (+)
17214       group by
17215         pjp.SUP_PROJECT_ID,
17216         map.PROJECT_ORG_ID,
17217         map.PROJECT_ORGANIZATION_ID,
17218         decode(top_slice.INVERT_ID,
17219                'PRJ', pjp.SUP_EMT_ID,
17220                wbs.SUP_EMT_ID),
17221         pjp.TIME_ID,
17222         pjp.PERIOD_TYPE_ID,
17223         pjp.CALENDAR_TYPE,
17224         decode(top_slice.INVERT_ID,
17225                'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
17226                                   wbs.SUP_EMT_ID,
17227                                   'N', 'Y')),
17228         pjp.CURR_RECORD_TYPE_ID,
17229         pjp.CURRENCY_CODE;*/
17230 
17231       update PJI_SYSTEM_PRC_STATUS
17232       set    STEP_STATUS = 'C',
17233              END_DATE = sysdate
17234       where  PROCESS_NAME = l_process and
17235              STEP_SEQ = l_level_seq;
17236 
17237       commit;
17238 
17239       select
17240         nvl(to_number(min(STEP_SEQ)), 0)
17241       into
17242         l_level_seq
17243       from
17244         PJI_SYSTEM_PRC_STATUS
17245       where
17246         PROCESS_NAME = l_process and
17247         STEP_NAME like 'ROLLUP_ACR_PRG%' and
17248         STEP_STATUS is null;
17249 
17250       if (l_level_seq = 0) then
17251         l_level := 0;
17252       else
17253         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
17254       end if;
17255 
17256     end loop;
17257 
17258     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);');
17259 
17260     commit;
17261 
17262   end ROLLUP_ACR_PRG;
17263 
17264 
17265   -- -----------------------------------------------------
17266   -- procedure ROLLUP_FPR_CAL_NONTP
17267   --
17268   --   History
17269   --   19-MAR-2004  SVERMETT  Created
17270   --
17271   -- Internal PJP Summarization API.
17272   --
17273   -- Called by RBS program
17274   --
17275   -- -----------------------------------------------------
17276   procedure ROLLUP_FPR_CAL_NONTP (p_worker_id in number) is
17277 
17278     l_process         varchar2(30);
17279     l_extraction_type varchar2(30);
17280 
17281     l_return_status   varchar2(255);
17282     l_msg_count       number;
17283     l_msg_data        varchar2(2000);
17284 
17285   begin
17286 
17287     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17288 
17289     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_NONTP(p_worker_id);')) then
17290       return;
17291     end if;
17292 
17293     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17294 
17295     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_NONTP_ROLLUP;
17296 
17297     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_NONTP(p_worker_id);');
17298 
17299     commit;
17300 
17301   end ROLLUP_FPR_CAL_NONTP;
17302 
17303 
17304   -- -----------------------------------------------------
17305   -- procedure ROLLUP_FPR_CAL_PA
17306   --
17307   --   History
17308   --   19-MAR-2004  SVERMETT  Created
17309   --
17310   -- Internal PJP Summarization API.
17311   --
17312   -- Called by RBS program
17313   --
17314   -- -----------------------------------------------------
17315   procedure ROLLUP_FPR_CAL_PA (p_worker_id in number) is
17316 
17317     l_process         varchar2(30);
17318     l_extraction_type varchar2(30);
17319 
17320     l_return_status   varchar2(255);
17321     l_msg_count       number;
17322     l_msg_data        varchar2(2000);
17323 
17324   begin
17325 
17326     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17327 
17328     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_PA(p_worker_id);')) then
17329       return;
17330     end if;
17331 
17332     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17333 
17334     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_PA_ROLLUP;
17335 
17336     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_PA(p_worker_id);');
17337 
17338     commit;
17339 
17340   end ROLLUP_FPR_CAL_PA;
17341 
17342 
17343   -- -----------------------------------------------------
17344   -- procedure ROLLUP_FPR_CAL_GL
17345   --
17346   --   History
17347   --   19-MAR-2004  SVERMETT  Created
17348   --
17349   -- Internal PJP Summarization API.
17350   --
17351   -- Called by RBS program
17352   --
17353   -- -----------------------------------------------------
17354   procedure ROLLUP_FPR_CAL_GL (p_worker_id in number) is
17355 
17356     l_process         varchar2(30);
17357     l_extraction_type varchar2(30);
17358 
17359     l_return_status   varchar2(255);
17360     l_msg_count       number;
17361     l_msg_data        varchar2(2000);
17362 
17363   begin
17364 
17365     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17366 
17367     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_GL(p_worker_id);')) then
17368       return;
17369     end if;
17370 
17371     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17372 
17373     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_GL_ROLLUP;
17374 
17375     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_GL(p_worker_id);');
17376 
17377     commit;
17378 
17379   end ROLLUP_FPR_CAL_GL;
17380 
17381 
17382   -- -----------------------------------------------------
17383   -- procedure ROLLUP_FPR_CAL_EN
17384   --
17385   --   History
17386   --   19-MAR-2004  SVERMETT  Created
17387   --
17388   -- Internal PJP Summarization API.
17389   --
17390   -- Called by RBS program
17391   --
17392   -- -----------------------------------------------------
17393   procedure ROLLUP_FPR_CAL_EN (p_worker_id in number) is
17394 
17395     l_process         varchar2(30);
17396     l_extraction_type varchar2(30);
17397 
17398     l_return_status   varchar2(255);
17399     l_msg_count       number;
17400     l_msg_data        varchar2(2000);
17401 
17402   begin
17403 
17404     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17405 
17406     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_EN(p_worker_id);')) then
17407       return;
17408     end if;
17409 
17410     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17411 
17412     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ENT_ROLLUP;
17413 
17414     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_EN(p_worker_id);');
17415 
17416     commit;
17417 
17418   end ROLLUP_FPR_CAL_EN;
17419 
17420 
17421   -- -----------------------------------------------------
17422   -- procedure ROLLUP_FPR_CAL_ALL
17423   --
17424   --   History
17425   --   19-MAR-2004  SVERMETT  Created
17426   --
17427   -- Internal PJP Summarization API.
17428   --
17429   -- Called by RBS program
17430   --
17431   -- -----------------------------------------------------
17432   procedure ROLLUP_FPR_CAL_ALL (p_worker_id in number) is
17433 
17434     l_process         varchar2(30);
17435     l_extraction_type varchar2(30);
17436 
17437     l_return_status   varchar2(255);
17438     l_msg_count       number;
17439     l_msg_data        varchar2(2000);
17440 
17441   begin
17442 
17443     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17444 
17445     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_ALL(p_worker_id);')) then
17446       return;
17447     end if;
17448 
17449     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17450 
17451     -- Changes done for bug 6381284
17452     --PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('G');
17453     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('C');
17454 
17455     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_ALL(p_worker_id);');
17456 
17457     commit;
17458 
17459   end ROLLUP_FPR_CAL_ALL;
17460 
17461 
17462   -- -----------------------------------------------------
17463   -- procedure ROLLUP_ACR_CAL_PA
17464   --
17465   --   History
17466   --   19-MAR-2004  SVERMETT  Created
17467   --
17468   -- Internal PJP Summarization API.
17469   --
17470   -- -----------------------------------------------------
17471   procedure ROLLUP_ACR_CAL_PA (p_worker_id in number) is
17472 
17473     l_process         varchar2(30);
17474     l_extraction_type varchar2(30);
17475 
17476     l_return_status   varchar2(255);
17477     l_msg_count       number;
17478     l_msg_data        varchar2(2000);
17479 
17480   begin
17481 
17482     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17483 
17484     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_PA(p_worker_id);')) then
17485       return;
17486     end if;
17487 
17488     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17489 
17490     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_PA_ROLLUP;
17491 
17492     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_PA(p_worker_id);');
17493 
17494     commit;
17495 
17496   end ROLLUP_ACR_CAL_PA;
17497 
17498 
17499   -- -----------------------------------------------------
17500   -- procedure ROLLUP_ACR_CAL_GL
17501   --
17502   --   History
17503   --   19-MAR-2004  SVERMETT  Created
17504   --
17505   -- Internal PJP Summarization API.
17506   --
17507   -- -----------------------------------------------------
17508   procedure ROLLUP_ACR_CAL_GL (p_worker_id in number) is
17509 
17510     l_process         varchar2(30);
17511     l_extraction_type varchar2(30);
17512 
17513     l_return_status   varchar2(255);
17514     l_msg_count       number;
17515     l_msg_data        varchar2(2000);
17516 
17517   begin
17518 
17519     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17520 
17521     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_GL(p_worker_id);')) then
17522       return;
17523     end if;
17524 
17525     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17526 
17527    PJI_FM_PLAN_CAL_RLPS.CREATE_AC_GL_ROLLUP;
17528 
17529     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_GL(p_worker_id);');
17530 
17531     commit;
17532 
17533   end ROLLUP_ACR_CAL_GL;
17534 
17535 
17536   -- -----------------------------------------------------
17537   -- procedure ROLLUP_ACR_CAL_EN
17538   --
17539   --   History
17540   --   19-MAR-2004  SVERMETT  Created
17541   --
17542   -- Internal PJP Summarization API.
17543   --
17544   -- -----------------------------------------------------
17545   procedure ROLLUP_ACR_CAL_EN (p_worker_id in number) is
17546 
17547     l_process         varchar2(30);
17548     l_extraction_type varchar2(30);
17549 
17550     l_return_status   varchar2(255);
17551     l_msg_count       number;
17552     l_msg_data        varchar2(2000);
17553 
17554   begin
17555 
17556     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17557 
17558     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_EN(p_worker_id);')) then
17559       return;
17560     end if;
17561 
17562     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17563 
17564     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_ENT_ROLLUP;
17565 
17566     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_EN(p_worker_id);');
17567 
17568     commit;
17569 
17570   end ROLLUP_ACR_CAL_EN;
17571 
17572 
17573   -- -----------------------------------------------------
17574   -- procedure ROLLUP_ACR_CAL_ALL
17575   --
17576   --   History
17577   --   19-MAR-2004  SVERMETT  Created
17578   --
17579   -- Internal PJP Summarization API.
17580   --
17581   -- -----------------------------------------------------
17582   procedure ROLLUP_ACR_CAL_ALL (p_worker_id in number) is
17583 
17584     l_process         varchar2(30);
17585     l_extraction_type varchar2(30);
17586 
17587     l_return_status   varchar2(255);
17588     l_msg_count       number;
17589     l_msg_data        varchar2(2000);
17590 
17591   begin
17592 
17593     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17594 
17595     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_ALL(p_worker_id);')) then
17596       return;
17597     end if;
17598 
17599     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17600 
17601     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_ALL_T_PRI_ROLLUP('G');
17602 
17603     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_ALL(p_worker_id);');
17604 
17605     commit;
17606 
17607   end ROLLUP_ACR_CAL_ALL;
17608 
17609 
17610 
17611   -- -----------------------------------------------------
17612   -- procedure AGGREGATE_PLAN_DATA
17613   --
17614   --   History
17615   --   21-OCT-2004  SVERMETT  Created
17616   --
17617   -- Internal PJP Summarization API.
17618   --
17619   -- Called by RBS program
17620   --
17621   -- -----------------------------------------------------
17622   procedure AGGREGATE_PLAN_DATA (p_worker_id in number) is
17623 
17624     l_process         varchar2(30);
17625     l_extraction_type varchar2(30);
17626 
17627   begin
17628 
17629     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17630 
17631     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_PLAN_DATA(p_worker_id);')) then
17632       return;
17633     end if;
17634 
17635     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17636 
17637     IF (l_extraction_type IN ('PARTIAL', 'RBS', 'INCREMENTAL', 'FULL')) THEN
17638 /* Call to Paritioned procedure for bug 7551819 */
17639       PJI_PROCESS_UTIL.EXECUTE_AGGREGATE_PLAN_DATA(p_worker_id);
17640 
17641 /* Commented for bug 7551819 */
17642 --      insert /*+ parallel(pjp1_in)
17643   --               noappend(pjp1_in) */ into PJI_FP_AGGR_PJP1 pjp1_in   -- changed for bug 5927368
17644     /*  (
17645         WORKER_ID,
17646         RECORD_TYPE,
17647         PRG_LEVEL,
17648         LINE_TYPE,
17649         PROJECT_ID,
17650         PROJECT_ORG_ID,
17651         PROJECT_ORGANIZATION_ID,
17652         PROJECT_ELEMENT_ID,
17653         TIME_ID,
17654         PERIOD_TYPE_ID,
17655         CALENDAR_TYPE,
17656         RBS_AGGR_LEVEL,
17657         WBS_ROLLUP_FLAG,
17658         PRG_ROLLUP_FLAG,
17659         CURR_RECORD_TYPE_ID,
17660         CURRENCY_CODE,
17661         RBS_ELEMENT_ID,
17662         RBS_VERSION_ID,
17663         PLAN_VERSION_ID,
17664         PLAN_TYPE_ID,
17665         PLAN_TYPE_CODE,
17666         RAW_COST,
17667         BRDN_COST,
17668         REVENUE,
17669         BILL_RAW_COST,
17670         BILL_BRDN_COST,
17671         BILL_LABOR_RAW_COST,
17672         BILL_LABOR_BRDN_COST,
17673         BILL_LABOR_HRS,
17674         EQUIPMENT_RAW_COST,
17675         EQUIPMENT_BRDN_COST,
17676         CAPITALIZABLE_RAW_COST,
17677         CAPITALIZABLE_BRDN_COST,
17678         LABOR_RAW_COST,
17679         LABOR_BRDN_COST,
17680         LABOR_HRS,
17681         LABOR_REVENUE,
17682         EQUIPMENT_HOURS,
17683         BILLABLE_EQUIPMENT_HOURS,
17684         SUP_INV_COMMITTED_COST,
17685         PO_COMMITTED_COST,
17686         PR_COMMITTED_COST,
17687         OTH_COMMITTED_COST,
17688         ACT_LABOR_HRS,
17689         ACT_EQUIP_HRS,
17690         ACT_LABOR_BRDN_COST,
17691         ACT_EQUIP_BRDN_COST,
17692         ACT_BRDN_COST,
17693         ACT_RAW_COST,
17694         ACT_REVENUE,
17695         ACT_LABOR_RAW_COST,
17696         ACT_EQUIP_RAW_COST,
17697         ETC_LABOR_HRS,
17698         ETC_EQUIP_HRS,
17699         ETC_LABOR_BRDN_COST,
17700         ETC_EQUIP_BRDN_COST,
17701         ETC_BRDN_COST,
17702         ETC_RAW_COST,
17703         ETC_LABOR_RAW_COST,
17704         ETC_EQUIP_RAW_COST,
17705         CUSTOM1,
17706         CUSTOM2,
17707         CUSTOM3,
17708         CUSTOM4,
17709         CUSTOM5,
17710         CUSTOM6,
17711         CUSTOM7,
17712         CUSTOM8,
17713         CUSTOM9,
17714         CUSTOM10,
17715         CUSTOM11,
17716         CUSTOM12,
17717         CUSTOM13,
17718         CUSTOM14,
17719         CUSTOM15
17720       )
17721       select
17722         pjp1.WORKER_ID,
17723         'A'                                 RECORD_TYPE,
17724         pjp1.PRG_LEVEL,
17725         'AGGR_PLAN'                         LINE_TYPE,
17726         pjp1.PROJECT_ID,
17727         pjp1.PROJECT_ORG_ID,
17728         pjp1.PROJECT_ORGANIZATION_ID,
17729         pjp1.PROJECT_ELEMENT_ID,
17730         pjp1.TIME_ID,
17731         pjp1.PERIOD_TYPE_ID,
17732         pjp1.CALENDAR_TYPE,
17733         pjp1.RBS_AGGR_LEVEL,
17734         pjp1.WBS_ROLLUP_FLAG,
17735         pjp1.PRG_ROLLUP_FLAG,
17736         pjp1.CURR_RECORD_TYPE_ID,
17737         pjp1.CURRENCY_CODE,
17738         pjp1.RBS_ELEMENT_ID,
17739         pjp1.RBS_VERSION_ID,
17740         pjp1.PLAN_VERSION_ID,
17741         pjp1.PLAN_TYPE_ID,
17742         pjp1.PLAN_TYPE_CODE,
17743         sum(pjp1.RAW_COST)                  RAW_COST,
17744         sum(pjp1.BRDN_COST)                 BRDN_COST,
17745         sum(pjp1.REVENUE)                   REVENUE,
17746         sum(pjp1.BILL_RAW_COST)             BILL_RAW_COST,
17747         sum(pjp1.BILL_BRDN_COST)            BILL_BRDN_COST,
17748         sum(pjp1.BILL_LABOR_RAW_COST)       BILL_LABOR_RAW_COST,
17749         sum(pjp1.BILL_LABOR_BRDN_COST)      BILL_LABOR_BRDN_COST,
17750         sum(pjp1.BILL_LABOR_HRS)            BILL_LABOR_HRS,
17751         sum(pjp1.EQUIPMENT_RAW_COST)        EQUIPMENT_RAW_COST,
17752         sum(pjp1.EQUIPMENT_BRDN_COST)       EQUIPMENT_BRDN_COST,
17753         sum(pjp1.CAPITALIZABLE_RAW_COST)    CAPITALIZABLE_RAW_COST,
17754         sum(pjp1.CAPITALIZABLE_BRDN_COST)   CAPITALIZABLE_BRDN_COST,
17755         sum(pjp1.LABOR_RAW_COST)            LABOR_RAW_COST,
17756         sum(pjp1.LABOR_BRDN_COST)           LABOR_BRDN_COST,
17757         sum(pjp1.LABOR_HRS)                 LABOR_HRS,
17758         sum(pjp1.LABOR_REVENUE)             LABOR_REVENUE,
17759         sum(pjp1.EQUIPMENT_HOURS)           EQUIPMENT_HOURS,
17760         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)  BILLABLE_EQUIPMENT_HOURS,
17761         sum(pjp1.SUP_INV_COMMITTED_COST)    SUP_INV_COMMITTED_COST,
17762         sum(pjp1.PO_COMMITTED_COST)         PO_COMMITTED_COST,
17763         sum(pjp1.PR_COMMITTED_COST)         PR_COMMITTED_COST,
17764         sum(pjp1.OTH_COMMITTED_COST)        OTH_COMMITTED_COST,
17765         sum(pjp1.ACT_LABOR_HRS)             ACT_LABOR_HRS,
17766         sum(pjp1.ACT_EQUIP_HRS)             ACT_EQUIP_HRS,
17767         sum(pjp1.ACT_LABOR_BRDN_COST)       ACT_LABOR_BRDN_COST,
17768         sum(pjp1.ACT_EQUIP_BRDN_COST)       ACT_EQUIP_BRDN_COST,
17769         sum(pjp1.ACT_BRDN_COST)             ACT_BRDN_COST,
17770         sum(pjp1.ACT_RAW_COST)              ACT_RAW_COST,
17771         sum(pjp1.ACT_REVENUE)               ACT_REVENUE,
17772         sum(pjp1.ACT_LABOR_RAW_COST)        ACT_LABOR_RAW_COST,
17773         sum(pjp1.ACT_EQUIP_RAW_COST)        ACT_EQUIP_RAW_COST,
17774         sum(pjp1.ETC_LABOR_HRS)             ETC_LABOR_HRS,
17775         sum(pjp1.ETC_EQUIP_HRS)             ETC_EQUIP_HRS,
17776         sum(pjp1.ETC_LABOR_BRDN_COST)       ETC_LABOR_BRDN_COST,
17777         sum(pjp1.ETC_EQUIP_BRDN_COST)       ETC_EQUIP_BRDN_COST,
17778         sum(pjp1.ETC_BRDN_COST)             ETC_BRDN_COST,
17779         sum(pjp1.ETC_RAW_COST)              ETC_RAW_COST,
17780         sum(pjp1.ETC_LABOR_RAW_COST)        ETC_LABOR_RAW_COST,
17781         sum(pjp1.ETC_EQUIP_RAW_COST)        ETC_EQUIP_RAW_COST,
17782         sum(pjp1.CUSTOM1)                   CUSTOM1,
17783         sum(pjp1.CUSTOM2)                   CUSTOM2,
17784         sum(pjp1.CUSTOM3)                   CUSTOM3,
17785         sum(pjp1.CUSTOM4)                   CUSTOM4,
17786         sum(pjp1.CUSTOM5)                   CUSTOM5,
17787         sum(pjp1.CUSTOM6)                   CUSTOM6,
17788         sum(pjp1.CUSTOM7)                   CUSTOM7,
17789         sum(pjp1.CUSTOM8)                   CUSTOM8,
17790         sum(pjp1.CUSTOM9)                   CUSTOM9,
17791         sum(pjp1.CUSTOM10)                  CUSTOM10,
17792         sum(pjp1.CUSTOM11)                  CUSTOM11,
17793         sum(pjp1.CUSTOM12)                  CUSTOM12,
17794         sum(pjp1.CUSTOM13)                  CUSTOM13,
17795         sum(pjp1.CUSTOM14)                  CUSTOM14,
17796         sum(pjp1.CUSTOM15)                  CUSTOM15
17797       from
17798         PJI_FP_AGGR_PJP1 pjp1
17799       where
17800         pjp1.WORKER_ID = p_worker_id
17801       group by
17802         pjp1.WORKER_ID,
17803         pjp1.PRG_LEVEL,
17804         pjp1.PROJECT_ID,
17805         pjp1.PROJECT_ORG_ID,
17806         pjp1.PROJECT_ORGANIZATION_ID,
17807         pjp1.PROJECT_ELEMENT_ID,
17808         pjp1.TIME_ID,
17809         pjp1.PERIOD_TYPE_ID,
17810         pjp1.CALENDAR_TYPE,
17811         pjp1.RBS_AGGR_LEVEL,
17812         pjp1.WBS_ROLLUP_FLAG,
17813         pjp1.PRG_ROLLUP_FLAG,
17814         pjp1.CURR_RECORD_TYPE_ID,
17815         pjp1.CURRENCY_CODE,
17816         pjp1.RBS_ELEMENT_ID,
17817         pjp1.RBS_VERSION_ID,
17818         pjp1.PLAN_VERSION_ID,
17819         pjp1.PLAN_TYPE_ID,
17820         pjp1.PLAN_TYPE_CODE
17821       having not
17822         (nvl(sum(pjp1.RAW_COST), 0)                 = 0 and
17823          nvl(sum(pjp1.BRDN_COST), 0)                = 0 and
17824          nvl(sum(pjp1.REVENUE), 0)                  = 0 and
17825          nvl(sum(pjp1.BILL_RAW_COST), 0)            = 0 and
17826          nvl(sum(pjp1.BILL_BRDN_COST), 0)           = 0 and
17827          nvl(sum(pjp1.BILL_LABOR_RAW_COST), 0)      = 0 and
17828          nvl(sum(pjp1.BILL_LABOR_BRDN_COST), 0)     = 0 and
17829          nvl(sum(pjp1.BILL_LABOR_HRS), 0)           = 0 and
17830          nvl(sum(pjp1.EQUIPMENT_RAW_COST), 0)       = 0 and
17831          nvl(sum(pjp1.EQUIPMENT_BRDN_COST), 0)      = 0 and
17832          nvl(sum(pjp1.CAPITALIZABLE_RAW_COST), 0)   = 0 and
17833          nvl(sum(pjp1.CAPITALIZABLE_BRDN_COST), 0)  = 0 and
17834          nvl(sum(pjp1.LABOR_RAW_COST), 0)           = 0 and
17835          nvl(sum(pjp1.LABOR_BRDN_COST), 0)          = 0 and
17836          nvl(sum(pjp1.LABOR_HRS), 0)                = 0 and
17837          nvl(sum(pjp1.LABOR_REVENUE), 0)            = 0 and
17838          nvl(sum(pjp1.EQUIPMENT_HOURS), 0)          = 0 and
17839          nvl(sum(pjp1.BILLABLE_EQUIPMENT_HOURS), 0) = 0 and
17840          nvl(sum(pjp1.SUP_INV_COMMITTED_COST), 0)   = 0 and
17841          nvl(sum(pjp1.PO_COMMITTED_COST), 0)        = 0 and
17842          nvl(sum(pjp1.PR_COMMITTED_COST), 0)        = 0 and
17843          nvl(sum(pjp1.OTH_COMMITTED_COST), 0)       = 0 and
17844          nvl(sum(pjp1.ACT_LABOR_HRS), 0)            = 0 and
17845          nvl(sum(pjp1.ACT_EQUIP_HRS), 0)            = 0 and
17846          nvl(sum(pjp1.ACT_LABOR_BRDN_COST), 0)      = 0 and
17847          nvl(sum(pjp1.ACT_EQUIP_BRDN_COST), 0)      = 0 and
17848          nvl(sum(pjp1.ACT_BRDN_COST), 0)            = 0 and
17849          nvl(sum(pjp1.ACT_RAW_COST), 0)             = 0 and
17850          nvl(sum(pjp1.ACT_REVENUE), 0)              = 0 and
17851          nvl(sum(pjp1.ACT_LABOR_RAW_COST), 0)       = 0 and
17852          nvl(sum(pjp1.ACT_EQUIP_RAW_COST), 0)       = 0 and
17853          nvl(sum(pjp1.ETC_LABOR_HRS), 0)            = 0 and
17854          nvl(sum(pjp1.ETC_EQUIP_HRS), 0)            = 0 and
17855          nvl(sum(pjp1.ETC_LABOR_BRDN_COST), 0)      = 0 and
17856          nvl(sum(pjp1.ETC_EQUIP_BRDN_COST), 0)      = 0 and
17857          nvl(sum(pjp1.ETC_BRDN_COST), 0)            = 0 and
17858          nvl(sum(pjp1.ETC_RAW_COST), 0)             = 0 and
17859          nvl(sum(pjp1.ETC_LABOR_RAW_COST), 0)       = 0 and
17860          nvl(sum(pjp1.ETC_EQUIP_RAW_COST), 0)       = 0 and
17861          nvl(sum(pjp1.CUSTOM1), 0)                  = 0 and
17862          nvl(sum(pjp1.CUSTOM2), 0)                  = 0 and
17863          nvl(sum(pjp1.CUSTOM3), 0)                  = 0 and
17864          nvl(sum(pjp1.CUSTOM4), 0)                  = 0 and
17865          nvl(sum(pjp1.CUSTOM5), 0)                  = 0 and
17866          nvl(sum(pjp1.CUSTOM6), 0)                  = 0 and
17867          nvl(sum(pjp1.CUSTOM7), 0)                  = 0 and
17868          nvl(sum(pjp1.CUSTOM8), 0)                  = 0 and
17869          nvl(sum(pjp1.CUSTOM9), 0)                  = 0 and
17870          nvl(sum(pjp1.CUSTOM10), 0)                 = 0 and
17871          nvl(sum(pjp1.CUSTOM11), 0)                 = 0 and
17872          nvl(sum(pjp1.CUSTOM12), 0)                 = 0 and
17873          nvl(sum(pjp1.CUSTOM13), 0)                 = 0 and
17874          nvl(sum(pjp1.CUSTOM14), 0)                 = 0 and
17875          nvl(sum(pjp1.CUSTOM15), 0)                 = 0);
17876 
17877       insert into PJI_AC_AGGR_PJP1 pjp1_i
17878       (
17879         WORKER_ID,
17880         RECORD_TYPE,
17881         PRG_LEVEL,
17882         PROJECT_ID,
17883         PROJECT_ORG_ID,
17884         PROJECT_ORGANIZATION_ID,
17885         PROJECT_ELEMENT_ID,
17886         TIME_ID,
17887         PERIOD_TYPE_ID,
17888         CALENDAR_TYPE,
17889         WBS_ROLLUP_FLAG,
17890         PRG_ROLLUP_FLAG,
17891         CURR_RECORD_TYPE_ID,
17892         CURRENCY_CODE,
17893         REVENUE,
17894         INITIAL_FUNDING_AMOUNT,
17895         INITIAL_FUNDING_COUNT,
17896         ADDITIONAL_FUNDING_AMOUNT,
17897         ADDITIONAL_FUNDING_COUNT,
17898         CANCELLED_FUNDING_AMOUNT,
17899         CANCELLED_FUNDING_COUNT,
17900         FUNDING_ADJUSTMENT_AMOUNT,
17901         FUNDING_ADJUSTMENT_COUNT,
17902         REVENUE_WRITEOFF,
17903         AR_INVOICE_AMOUNT,
17904         AR_INVOICE_COUNT,
17905         AR_CASH_APPLIED_AMOUNT,
17906         AR_INVOICE_WRITE_OFF_AMOUNT,
17907         AR_INVOICE_WRITEOFF_COUNT,
17908         AR_CREDIT_MEMO_AMOUNT,
17909         AR_CREDIT_MEMO_COUNT,
17910         UNBILLED_RECEIVABLES,
17911         UNEARNED_REVENUE,
17912         AR_UNAPPR_INVOICE_AMOUNT,
17913         AR_UNAPPR_INVOICE_COUNT,
17914         AR_APPR_INVOICE_AMOUNT,
17915         AR_APPR_INVOICE_COUNT,
17916         AR_AMOUNT_DUE,
17917         AR_COUNT_DUE,
17918         AR_AMOUNT_OVERDUE,
17919         AR_COUNT_OVERDUE,
17920         CUSTOM1,
17921         CUSTOM2,
17922         CUSTOM3,
17923         CUSTOM4,
17924         CUSTOM5,
17925         CUSTOM6,
17926         CUSTOM7,
17927         CUSTOM8,
17928         CUSTOM9,
17929         CUSTOM10,
17930         CUSTOM11,
17931         CUSTOM12,
17932         CUSTOM13,
17933         CUSTOM14,
17934         CUSTOM15
17935       )
17936       select
17937         pjp1.WORKER_ID,
17938         'A'                                        RECORD_TYPE,
17939         pjp1.PRG_LEVEL,
17940         pjp1.PROJECT_ID,
17941         pjp1.PROJECT_ORG_ID,
17942         pjp1.PROJECT_ORGANIZATION_ID,
17943         pjp1.PROJECT_ELEMENT_ID,
17944         pjp1.TIME_ID,
17945         pjp1.PERIOD_TYPE_ID,
17946         pjp1.CALENDAR_TYPE,
17947         pjp1.WBS_ROLLUP_FLAG,
17948         pjp1.PRG_ROLLUP_FLAG,
17949         pjp1.CURR_RECORD_TYPE_ID,
17950         pjp1.CURRENCY_CODE,
17951         sum(pjp1.REVENUE)                          REVENUE,
17952         sum(pjp1.INITIAL_FUNDING_AMOUNT)           INITIAL_FUNDING_AMOUNT,
17953         sum(pjp1.INITIAL_FUNDING_COUNT)            INITIAL_FUNDING_COUNT,
17954         sum(pjp1.ADDITIONAL_FUNDING_AMOUNT)        ADDITIONAL_FUNDING_AMOUNT,
17955         sum(pjp1.ADDITIONAL_FUNDING_COUNT)         ADDITIONAL_FUNDING_COUNT,
17956         sum(pjp1.CANCELLED_FUNDING_AMOUNT)         CANCELLED_FUNDING_AMOUNT,
17957         sum(pjp1.CANCELLED_FUNDING_COUNT)          CANCELLED_FUNDING_COUNT,
17958         sum(pjp1.FUNDING_ADJUSTMENT_AMOUNT)        FUNDING_ADJUSTMENT_AMOUNT,
17959         sum(pjp1.FUNDING_ADJUSTMENT_COUNT)         FUNDING_ADJUSTMENT_COUNT,
17960         sum(pjp1.REVENUE_WRITEOFF)                 REVENUE_WRITEOFF,
17961         sum(pjp1.AR_INVOICE_AMOUNT)                AR_INVOICE_AMOUNT,
17962         sum(pjp1.AR_INVOICE_COUNT)                 AR_INVOICE_COUNT,
17963         sum(pjp1.AR_CASH_APPLIED_AMOUNT)           AR_CASH_APPLIED_AMOUNT,
17964         sum(pjp1.AR_INVOICE_WRITE_OFF_AMOUNT)      AR_INVOICE_WRITE_OFF_AMOUNT,
17965         sum(pjp1.AR_INVOICE_WRITEOFF_COUNT)        AR_INVOICE_WRITEOFF_COUNT,
17966         sum(pjp1.AR_CREDIT_MEMO_AMOUNT)            AR_CREDIT_MEMO_AMOUNT,
17967         sum(pjp1.AR_CREDIT_MEMO_COUNT)             AR_CREDIT_MEMO_COUNT,
17968         sum(pjp1.UNBILLED_RECEIVABLES)             UNBILLED_RECEIVABLES,
17969         sum(pjp1.UNEARNED_REVENUE)                 UNEARNED_REVENUE,
17970         sum(pjp1.AR_UNAPPR_INVOICE_AMOUNT)         AR_UNAPPR_INVOICE_AMOUNT,
17971         sum(pjp1.AR_UNAPPR_INVOICE_COUNT)          AR_UNAPPR_INVOICE_COUNT,
17972         sum(pjp1.AR_APPR_INVOICE_AMOUNT)           AR_APPR_INVOICE_AMOUNT,
17973         sum(pjp1.AR_APPR_INVOICE_COUNT)            AR_APPR_INVOICE_COUNT,
17974         sum(pjp1.AR_AMOUNT_DUE)                    AR_AMOUNT_DUE,
17975         sum(pjp1.AR_COUNT_DUE)                     AR_COUNT_DUE,
17976         sum(pjp1.AR_AMOUNT_OVERDUE)                AR_AMOUNT_OVERDUE,
17977         sum(pjp1.AR_COUNT_OVERDUE)                 AR_COUNT_OVERDUE,
17978         sum(pjp1.CUSTOM1)                          CUSTOM1,
17979         sum(pjp1.CUSTOM2)                          CUSTOM2,
17980         sum(pjp1.CUSTOM3)                          CUSTOM3,
17981         sum(pjp1.CUSTOM4)                          CUSTOM4,
17982         sum(pjp1.CUSTOM5)                          CUSTOM5,
17983         sum(pjp1.CUSTOM6)                          CUSTOM6,
17984         sum(pjp1.CUSTOM7)                          CUSTOM7,
17985         sum(pjp1.CUSTOM8)                          CUSTOM8,
17986         sum(pjp1.CUSTOM9)                          CUSTOM9,
17987         sum(pjp1.CUSTOM10)                         CUSTOM10,
17988         sum(pjp1.CUSTOM11)                         CUSTOM11,
17989         sum(pjp1.CUSTOM12)                         CUSTOM12,
17990         sum(pjp1.CUSTOM13)                         CUSTOM13,
17991         sum(pjp1.CUSTOM14)                         CUSTOM14,
17992         sum(pjp1.CUSTOM15)                         CUSTOM15
17993       from
17994         PJI_AC_AGGR_PJP1 pjp1
17995       where
17996         pjp1.WORKER_ID = p_worker_id
17997       group by
17998         pjp1.WORKER_ID,
17999         pjp1.PRG_LEVEL,
18000         pjp1.PROJECT_ID,
18001         pjp1.PROJECT_ORG_ID,
18002         pjp1.PROJECT_ORGANIZATION_ID,
18003         pjp1.PROJECT_ELEMENT_ID,
18004         pjp1.TIME_ID,
18005         pjp1.PERIOD_TYPE_ID,
18006         pjp1.CALENDAR_TYPE,
18007         pjp1.WBS_ROLLUP_FLAG,
18008         pjp1.PRG_ROLLUP_FLAG,
18009         pjp1.CURR_RECORD_TYPE_ID,
18010         pjp1.CURRENCY_CODE
18011       having not
18012         (nvl(sum(REVENUE), 0)                     = 0 and
18013          nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
18014          nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
18015          nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
18016          nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
18017          nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
18018          nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
18019          nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
18020          nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
18021          nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
18022          nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
18023          nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
18024          nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
18025          nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
18026          nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
18027          nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
18028          nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
18029          nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
18030          nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
18031          nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
18032          nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
18033          nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
18034          nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
18035          nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
18036          nvl(sum(AR_COUNT_DUE), 0)                = 0 and
18037          nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
18038          nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
18039          nvl(sum(CUSTOM1), 0)                     = 0 and
18040          nvl(sum(CUSTOM2), 0)                     = 0 and
18041          nvl(sum(CUSTOM3), 0)                     = 0 and
18042          nvl(sum(CUSTOM4), 0)                     = 0 and
18043          nvl(sum(CUSTOM5), 0)                     = 0 and
18044          nvl(sum(CUSTOM6), 0)                     = 0 and
18045          nvl(sum(CUSTOM7), 0)                     = 0 and
18046          nvl(sum(CUSTOM8), 0)                     = 0 and
18047          nvl(sum(CUSTOM9), 0)                     = 0 and
18048          nvl(sum(CUSTOM10), 0)                    = 0 and
18049          nvl(sum(CUSTOM11), 0)                    = 0 and
18050          nvl(sum(CUSTOM12), 0)                    = 0 and
18051          nvl(sum(CUSTOM13), 0)                    = 0 and
18052          nvl(sum(CUSTOM14), 0)                    = 0 and
18053          nvl(sum(CUSTOM15), 0)                    = 0); */
18054 
18055     end if;
18056 
18057     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_PLAN_DATA(p_worker_id);');
18058 
18059     commit;
18060 
18061   end AGGREGATE_PLAN_DATA;
18062 
18063 
18064   -- -----------------------------------------------------
18065   -- procedure PURGE_PLAN_DATA
18066   --
18067   --   History
18068   --   21-OCT-2004  SVERMETT  Created
18069   --
18070   -- Internal PJP Summarization API.
18071   --
18072   -- Called by RBS program
18073   --
18074   -- -----------------------------------------------------
18075   procedure PURGE_PLAN_DATA (p_worker_id in number) is
18076 
18077     l_process         varchar2(30);
18078     l_extraction_type varchar2(30);
18079     l_worker_id       number;   /* Added for bug 13030627 */
18080 
18081   -- begin: bug 7146014
18082   TYPE row_id_tab_type   IS TABLE OF rowid index by binary_integer;
18083   x_row_id               row_id_tab_type;
18084 
18085   cursor c1 is
18086     select rowid from pji_fp_aggr_pjp1
18087      where worker_id = p_worker_id
18088        and nvl(LINE_TYPE, 'X') <> 'AGGR_PLAN';
18089   -- end: bug 7146014
18090   begin
18091 
18092     /* Added for bug 13030627 */
18093      l_worker_id := p_worker_id;
18094     if PJI_UTILS.GET_PARAMETER('PJP_SIN_PRG') = 'Y' then
18095 
18096        PJI_PJP_PRG_PERF_ALL.PURGE_PLAN_DATA(
18097        p_worker_id  => l_worker_id);
18098 
18099     else
18100 
18101     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18102 
18103     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_PLAN_DATA(p_worker_id);')) then
18104       return;
18105     end if;
18106 
18107     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18108 
18109     IF (l_extraction_type IN ('PARTIAL', 'RBS', 'INCREMENTAL', 'FULL')) THEN
18110 
18111 	-- begin: bug 7146014
18112 
18113         open c1;
18114         loop
18115          fetch c1 bulk collect into x_row_id limit 500000;
18116 
18117           If x_row_id.count > 0  then
18118              Forall j in x_row_id.first..x_row_id.last
18119                delete from pji_fp_aggr_pjp1
18120           	    where worker_id = p_worker_id
18121           	      and rowid = x_row_id(j);
18122 
18123           	 commit;
18124           	 x_row_id.delete;
18125              exit when c1%notfound;
18126 
18127         	 Else
18128         	   Exit;
18129         	 End if;
18130 
18131         	 end loop;
18132 
18133           close c1;
18134         -- End: bug 7146014
18135 
18136 	/* Commented for bug 7146014
18137       delete
18138       from   PJI_FP_AGGR_PJP1 pjp1
18139       where  pjp1.WORKER_ID = p_worker_id and
18140              nvl(pjp1.LINE_TYPE, 'X') <> 'AGGR_PLAN';
18141 */
18142       delete
18143       from   PJI_AC_AGGR_PJP1 pjp1
18144       where  pjp1.WORKER_ID = p_worker_id and
18145              nvl(pjp1.RECORD_TYPE, 'X') <> 'A';
18146 
18147     end if;
18148 
18149     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_PLAN_DATA(p_worker_id);');
18150 
18151     commit;
18152 
18153    end if; -- Added for bug 13451898
18154 
18155   end PURGE_PLAN_DATA;
18156 
18157 
18158   -- -----------------------------------------------------
18159   -- procedure GET_FPR_ROWIDS
18160   --
18161   --   History
18162   --   19-MAR-2004  SVERMETT  Created
18163   --
18164   -- Internal PJP Summarization API.
18165   --
18166   -- Called by RBS program
18167   --
18168   -- -----------------------------------------------------
18169   procedure GET_FPR_ROWIDS (p_worker_id in number) is
18170 
18171     l_process         varchar2(30);
18172     l_extraction_type varchar2(30);
18173 
18174     l_return_status   varchar2(255);
18175     l_msg_count       number;
18176     l_msg_data        varchar2(2000);
18177 
18178   begin
18179 
18180     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18181 
18182     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_FPR_ROWIDS(p_worker_id);')) then
18183       return;
18184     end if;
18185 
18186     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18187 
18188     PJI_FM_PLAN_MAINT_PVT.GET_FP_ROW_IDS;
18189 
18190     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_FPR_ROWIDS(p_worker_id);');
18191 
18192     commit;
18193 
18194   end GET_FPR_ROWIDS;
18195 
18196 
18197   -- -----------------------------------------------------
18198   -- procedure UPDATE_FPR_ROWS
18199   --
18200   --   History
18201   --   19-MAR-2004  SVERMETT  Created
18202   --
18203   -- Internal PJP Summarization API.
18204   --
18205   -- Called by RBS program
18206   --
18207   -- -----------------------------------------------------
18208   procedure UPDATE_FPR_ROWS (p_worker_id in number) is
18209 
18210     l_process         varchar2(30);
18211     l_extraction_type varchar2(30);
18212 
18213     l_return_status   varchar2(255);
18214     l_msg_count       number;
18215     l_msg_data        varchar2(2000);
18216 
18217   begin
18218 
18219     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18220 
18221     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_FPR_ROWS(p_worker_id);')) then
18222       return;
18223     end if;
18224 
18225     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18226 
18227     PJI_FM_PLAN_MAINT_PVT.UPDATE_FP_ROWS;
18228 
18229     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_FPR_ROWS(p_worker_id);');
18230 
18231     commit;
18232 
18233   end UPDATE_FPR_ROWS;
18234 
18235 
18236   -- -----------------------------------------------------
18237   -- procedure INSERT_FPR_ROWS
18238   --
18239   --   History
18240   --   19-MAR-2004  SVERMETT  Created
18241   --
18242   -- Internal PJP Summarization API.
18243   --
18244   -- Called by RBS program
18245   --
18246   -- -----------------------------------------------------
18247   procedure INSERT_FPR_ROWS (p_worker_id in number) is
18248 
18249     l_process         varchar2(30);
18250     l_extraction_type varchar2(30);
18251 
18252     l_return_status   varchar2(255);
18253     l_msg_count       number;
18254     l_msg_data        varchar2(2000);
18255 
18256   begin
18257 
18258     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18259 
18260     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_FPR_ROWS(p_worker_id);')) then
18261       return;
18262     end if;
18263 
18264     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18265 
18266     PJI_FM_PLAN_MAINT_PVT.INSERT_FP_ROWS;
18267 
18268     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_FPR_ROWS(p_worker_id);');
18269 
18270     commit;
18271 
18272   end INSERT_FPR_ROWS;
18273 
18274 
18275   -- -----------------------------------------------------
18276   -- procedure CLEANUP_FPR_ROWID_TABLE
18277   --
18278   --   History
18279   --   19-MAR-2004  SVERMETT  Created
18280   --
18281   -- Internal PJP Summarization API.
18282   --
18283   -- Called by RBS program
18284   --
18285   -- -----------------------------------------------------
18286   procedure CLEANUP_FPR_ROWID_TABLE (p_worker_id in number) is
18287 
18288     l_process         varchar2(30);
18289     l_extraction_type varchar2(30);
18290 
18291     l_return_status   varchar2(255);
18292     l_msg_count       number;
18293     l_msg_data        varchar2(2000);
18294 
18295   begin
18296 
18297     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18298 
18299     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_FPR_ROWID_TABLE(p_worker_id);')) then
18300       return;
18301     end if;
18302 
18303     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18304 
18305     -- PJI_FM_PLAN_MAINT_PVT.CLEANUP_FP_RMAP_FPR;
18306 
18307     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_FPR_ROWID_TABLE(p_worker_id);');
18308 
18309     commit;
18310 
18311   end CLEANUP_FPR_ROWID_TABLE;
18312 
18313 
18314   -- -----------------------------------------------------
18315   -- procedure GET_ACR_ROWIDS
18316   --
18317   --   History
18318   --   19-MAR-2004  SVERMETT  Created
18319   --
18320   -- Internal PJP Summarization API.
18321   --
18322   -- -----------------------------------------------------
18323   procedure GET_ACR_ROWIDS (p_worker_id in number) is
18324 
18325     l_process         varchar2(30);
18326     l_extraction_type varchar2(30);
18327 
18328     l_return_status   varchar2(255);
18329     l_msg_count       number;
18330     l_msg_data        varchar2(2000);
18331 
18332   begin
18333 
18334     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18335 
18336     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_ACR_ROWIDS(p_worker_id);')) then
18337       return;
18338     end if;
18339 
18340     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18341 
18342     if (l_extraction_type = 'INCREMENTAL' or
18343         l_extraction_type = 'PARTIAL' or
18344         l_extraction_type = 'RBS') then
18345 
18346       PJI_FM_PLAN_MAINT_PVT.GET_AC_ROW_IDS;
18347 
18348     end if;
18349 
18350     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_ACR_ROWIDS(p_worker_id);');
18351 
18352     commit;
18353 
18354   end GET_ACR_ROWIDS;
18355 
18356 
18357   -- -----------------------------------------------------
18358   -- procedure UPDATE_ACR_ROWS
18359   --
18360   --   History
18361   --   19-MAR-2004  SVERMETT  Created
18362   --
18363   -- Internal PJP Summarization API.
18364   --
18365   -- -----------------------------------------------------
18366   procedure UPDATE_ACR_ROWS (p_worker_id in number) is
18367 
18368     l_process         varchar2(30);
18369     l_extraction_type varchar2(30);
18370 
18371     l_return_status   varchar2(255);
18372     l_msg_count       number;
18373     l_msg_data        varchar2(2000);
18374 
18375   begin
18376 
18377     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18378 
18379     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_ACR_ROWS(p_worker_id);')) then
18380       return;
18381     end if;
18382 
18383     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18384 
18385     if (l_extraction_type = 'INCREMENTAL' or
18386         l_extraction_type = 'PARTIAL' or
18387         l_extraction_type = 'RBS') then
18388 
18389       PJI_FM_PLAN_MAINT_PVT.UPDATE_AC_ROWS;
18390 
18391     end if;
18392 
18393     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_ACR_ROWS(p_worker_id);');
18394 
18395     commit;
18396 
18397   end UPDATE_ACR_ROWS;
18398 
18399 
18400   -- -----------------------------------------------------
18401   -- procedure INSERT_ACR_ROWS
18402   --
18403   --   History
18404   --   19-MAR-2004  SVERMETT  Created
18405   --
18406   -- Internal PJP Summarization API.
18407   --
18408   -- -----------------------------------------------------
18409   procedure INSERT_ACR_ROWS (p_worker_id in number) is
18410 
18411     l_process         varchar2(30);
18412     l_extraction_type varchar2(30);
18413 
18414     l_return_status   varchar2(255);
18415     l_msg_count       number;
18416     l_msg_data        varchar2(2000);
18417 
18418   begin
18419 
18420     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18421 
18422     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_ACR_ROWS(p_worker_id);')) then
18423       return;
18424     end if;
18425 
18426     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18427 
18428     if (l_extraction_type = 'FULL') then
18429 
18430       PJI_FM_PLAN_MAINT_PVT.INSERT_INTO_AC_FACT;
18431 
18432     elsif (l_extraction_type = 'INCREMENTAL' or
18433            l_extraction_type = 'PARTIAL' or
18434            l_extraction_type = 'RBS') then
18435 
18436       PJI_FM_PLAN_MAINT_PVT.INSERT_AC_ROWS;
18437 
18438     end if;
18439 
18440     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_ACR_ROWS(p_worker_id);');
18441 
18442     commit;
18443 
18444   end INSERT_ACR_ROWS;
18445 
18446 
18447   -- -----------------------------------------------------
18448   -- procedure CLEANUP_ACR_ROWID_TABLE
18449   --
18450   --   History
18451   --   19-MAR-2004  SVERMETT  Created
18452   --
18453   -- Internal PJP Summarization API.
18454   --
18455   -- -----------------------------------------------------
18456   procedure CLEANUP_ACR_ROWID_TABLE (p_worker_id in number) is
18457 
18458     l_process         varchar2(30);
18459     l_extraction_type varchar2(30);
18460 
18461     l_return_status   varchar2(255);
18462     l_msg_count       number;
18463     l_msg_data        varchar2(2000);
18464 
18465   begin
18466 
18467     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18468 
18469     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_ACR_ROWID_TABLE(p_worker_id);')) then
18470       return;
18471     end if;
18472 
18473     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18474 
18475     -- if (l_extraction_type = 'INCREMENTAL' or
18476     --     l_extraction_type = 'PARTIAL' or
18477     --     l_extraction_type = 'RBS') then
18478     --
18479     --   PJI_FM_PLAN_MAINT_PVT.CLEANUP_AC_RMAP_FPR;
18480     --
18481     -- end if;
18482 
18483     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_ACR_ROWID_TABLE(p_worker_id);');
18484 
18485     commit;
18486 
18487   end CLEANUP_ACR_ROWID_TABLE;
18488 
18489 
18490   -- -----------------------------------------------------
18491   -- procedure UPDATE_XBS_DENORM
18492   --
18493   --   History
18494   --   19-MAR-2004  SVERMETT  Created
18495   --
18496   -- This API will be called for both online and bulk processing.
18497   --
18498   -- -----------------------------------------------------
18499   procedure UPDATE_XBS_DENORM (p_worker_id in number default null) is
18500 
18501     l_process           varchar2(30);
18502     l_extraction_type   varchar2(30);
18503 
18504     l_last_update_date  date;
18505     l_last_updated_by   number;
18506     l_creation_date     date;
18507     l_created_by        number;
18508     l_last_update_login number;
18509 
18510     l_count             number;
18511     l_wbs_version_id_tbl SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
18512 
18513   begin
18514 
18515     l_last_update_date  := sysdate;
18516     l_last_updated_by   := FND_GLOBAL.USER_ID;
18517     l_creation_date     := sysdate;
18518     l_created_by        := FND_GLOBAL.USER_ID;
18519     l_last_update_login := FND_GLOBAL.LOGIN_ID;
18520 
18521     if (p_worker_id is not null) then
18522 
18523       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18524 
18525       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM(p_worker_id);')) then
18526         return;
18527       end if;
18528 
18529       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18530 
18531       l_count := 0;
18532 
18533       if (l_extraction_type = 'INCREMENTAL') then
18534 
18535 
18536         BEGIN
18537             select distinct struct_version_id bulk collect
18538             into  l_wbs_version_id_tbl
18539             from (
18540                  select  ver.element_version_id struct_version_id
18541                  from    PA_PROJ_ELEMENT_VERSIONS ver
18542                  where   ver.OBJECT_TYPE = 'PA_STRUCTURES' and
18543                          ver.PRG_GROUP in
18544              (select
18545                 decode(invert.INVERT_ID,
18546                        1, log.EVENT_OBJECT,
18547                        2, log.ATTRIBUTE1) PRG_GROUP
18548               from
18549                 PJI_PA_PROJ_EVENTS_LOG log,
18550                 (
18551                   select 1 INVERT_ID from DUAL union all
18552                   select 2 INVERT_ID from DUAL
18553                 ) invert
18554               where
18555                 log.WORKER_ID    =  p_worker_id  and
18556                 log.EVENT_TYPE   =  'PRG_CHANGE' and
18557                 log.EVENT_OBJECT <> -1)
18558              union all
18559                  select ver.wbs_version_id
18560                  from   PJI_PA_PROJ_EVENTS_LOG log,Pji_pjp_wbs_header ver
18561                  where  ver.project_id=to_number(log.ATTRIBUTE1) and
18562                         log.WORKER_ID    = p_worker_id  and
18563                         log.EVENT_TYPE   = 'PRG_CHANGE' and
18564                         log.EVENT_OBJECT = -1
18565              union all
18566                  select   to_number(decode(invert.INVERT_ID,
18567                                            1, log.EVENT_OBJECT,
18568                                            2, log.ATTRIBUTE2)) struct_version_id
18569                  from    PJI_PA_PROJ_EVENTS_LOG log,
18570                          (
18571                           select 1 INVERT_ID from DUAL union all
18572                           select 2 INVERT_ID from DUAL
18573                          ) invert
18574                  where
18575                          log.WORKER_ID  = p_worker_id and
18576                          log.EVENT_TYPE in ('WBS_CHANGE',  'WBS_PUBLISH'));
18577               EXCEPTION
18578                   WHEN NO_DATA_FOUND then null;
18579               END;
18580 
18581 
18582 
18583         delete from PJI_XBS_DENORM
18584         where SUP_PROJECT_ID in
18585               (select
18586                  ver.PROJECT_ID
18587                from
18588                  PA_PROJ_ELEMENT_VERSIONS ver
18589                where
18590                  ver.OBJECT_TYPE = 'PA_STRUCTURES' and
18591                  ver.PRG_GROUP in
18592                  (select
18593                     decode(invert.INVERT_ID,
18594                            1, log.EVENT_OBJECT,
18595                            2, log.ATTRIBUTE1) PRG_GROUP
18596                   from
18597                     PJI_PA_PROJ_EVENTS_LOG log,
18598                     (
18599                       select 1 INVERT_ID from DUAL union all
18600                       select 2 INVERT_ID from DUAL
18601                     ) invert
18602                   where
18603                     log.WORKER_ID    =  p_worker_id  and
18604                     log.EVENT_TYPE   =  'PRG_CHANGE' and
18605                     log.EVENT_OBJECT <> -1));
18606 
18607         l_count := l_count + sql%rowcount;
18608 
18609         delete from PJI_XBS_DENORM
18610         where SUP_PROJECT_ID in (select log.ATTRIBUTE1
18611                                  from   PJI_PA_PROJ_EVENTS_LOG log
18612                                  where  log.WORKER_ID    = p_worker_id  and
18613                                         log.EVENT_TYPE   = 'PRG_CHANGE' and
18614                                         log.EVENT_OBJECT = -1);
18615 
18616         l_count := l_count + sql%rowcount;
18617 
18618         delete from PJI_XBS_DENORM
18619         where STRUCT_TYPE in ('WBS', 'XBS') and
18620               STRUCT_VERSION_ID in (select
18621                                       decode(invert.INVERT_ID,
18622                                              1, log.EVENT_OBJECT,
18623                                              2, log.ATTRIBUTE2)
18624                                     from
18625                                       PJI_PA_PROJ_EVENTS_LOG log,
18626                                       (
18627                                         select 1 INVERT_ID from DUAL union all
18628                                         select 2 INVERT_ID from DUAL
18629                                       ) invert
18630                                     where
18631                                       log.WORKER_ID  = p_worker_id and
18632                                       log.EVENT_TYPE in ('WBS_CHANGE',
18633                                                          'WBS_PUBLISH'));
18634 
18635         l_count := l_count + sql%rowcount;
18636 
18637         insert into PJI_XBS_DENORM
18638         (
18639           STRUCT_TYPE,
18640           PRG_GROUP,
18641           STRUCT_VERSION_ID,
18642           SUP_PROJECT_ID,
18643           SUP_ID,
18644           SUP_EMT_ID,
18645           SUBRO_ID,
18646           SUB_ID,
18647           SUB_EMT_ID,
18648           SUP_LEVEL,
18649           SUB_LEVEL,
18650           SUB_ROLLUP_ID,
18651           SUB_LEAF_FLAG,
18652           RELATIONSHIP_TYPE,
18653           LAST_UPDATE_DATE,
18654           LAST_UPDATED_BY,
18655           CREATION_DATE,
18656           CREATED_BY,
18657           LAST_UPDATE_LOGIN
18658         )
18659         select
18660           den.STRUCT_TYPE,
18661           den.PRG_GROUP,
18662           den.STRUCT_VERSION_ID,
18663           den.SUP_PROJECT_ID,
18664           den.SUP_ID,
18665           den.SUP_EMT_ID,
18666           den.SUBRO_ID,
18667           den.SUB_ID,
18668           den.SUB_EMT_ID,
18669           den.SUP_LEVEL,
18670           den.SUB_LEVEL,
18671           den.SUB_ROLLUP_ID,
18672           den.SUB_LEAF_FLAG,
18673           den.RELATIONSHIP_TYPE,
18674           l_last_update_date,
18675           l_last_updated_by,
18676           l_creation_date,
18677           l_created_by,
18678           l_last_update_login
18679         from
18680           PA_XBS_DENORM den
18681         where
18682           den.SUP_PROJECT_ID in
18683           (select
18684              ver.PROJECT_ID
18685            from
18686              PA_PROJ_ELEMENT_VERSIONS ver
18687            where
18688              ver.OBJECT_TYPE = 'PA_STRUCTURES' and
18689              ver.PRG_GROUP in
18690              (select
18691                 decode(invert.INVERT_ID,
18692                        1, log.EVENT_OBJECT,
18693                        2, log.ATTRIBUTE1) PRG_GROUP
18694               from
18695                 PJI_PA_PROJ_EVENTS_LOG log,
18696                 (
18697                   select 1 INVERT_ID from DUAL union all
18698                   select 2 INVERT_ID from DUAL
18699                 ) invert
18700               where
18701                 log.WORKER_ID    =  p_worker_id  and
18702                 log.EVENT_TYPE   =  'PRG_CHANGE' and
18703                 log.EVENT_OBJECT <> -1)
18704            union
18705            select to_number(log.ATTRIBUTE1) PROJECT_ID
18706            from   PJI_PA_PROJ_EVENTS_LOG log
18707            where  log.WORKER_ID    = p_worker_id  and
18708                   log.EVENT_TYPE   = 'PRG_CHANGE' and
18709                   log.EVENT_OBJECT = -1)
18710         union all
18711         select
18712           den.STRUCT_TYPE,
18713           den.PRG_GROUP,
18714           den.STRUCT_VERSION_ID,
18715           den.SUP_PROJECT_ID,
18716           den.SUP_ID,
18717           den.SUP_EMT_ID,
18718           den.SUBRO_ID,
18719           den.SUB_ID,
18720           den.SUB_EMT_ID,
18721           den.SUP_LEVEL,
18722           den.SUB_LEVEL,
18723           den.SUB_ROLLUP_ID,
18724           den.SUB_LEAF_FLAG,
18725           den.RELATIONSHIP_TYPE,
18726           l_last_update_date,
18727           l_last_updated_by,
18728           l_creation_date,
18729           l_created_by,
18730           l_last_update_login
18731         from
18732           PA_XBS_DENORM den,
18733           (
18734           select
18735             distinct
18736             EVENT_OBJECT,
18737             ATTRIBUTE2
18738           from
18739             PJI_PA_PROJ_EVENTS_LOG
18740           where
18741             WORKER_ID = p_worker_id and
18742             EVENT_TYPE in ('WBS_CHANGE', 'WBS_PUBLISH')
18743           ) log
18744         where
18745           den.STRUCT_TYPE in ('WBS', 'XBS') and
18746           (log.EVENT_OBJECT = den.STRUCT_VERSION_ID or
18747            log.ATTRIBUTE2 = den.STRUCT_VERSION_ID);
18748 
18749         l_count := l_count + sql%rowcount;
18750 
18751       elsif (l_extraction_type = 'PARTIAL') then
18752 
18753            BEGIN
18754             select distinct ver.wbs_version_id bulk collect
18755             into  l_wbs_version_id_tbl
18756             from  PJI_PJP_PROJ_BATCH_MAP map,Pji_pjp_wbs_header ver
18757             where map.PROJECT_ID=ver.project_id
18758             and   map.WORKER_ID = p_worker_id;
18759          EXCEPTION
18760             WHEN NO_DATA_FOUND then null;
18761          END;
18762 
18763         delete
18764         from   PJI_XBS_DENORM
18765         where  SUP_PROJECT_ID in (select map.PROJECT_ID
18766                                   from   PJI_PJP_PROJ_BATCH_MAP map
18767                                   where  WORKER_ID = p_worker_id);
18768 
18769         l_count := l_count + sql%rowcount;
18770 
18771         insert into PJI_XBS_DENORM
18772         (
18773           STRUCT_TYPE,
18774           PRG_GROUP,
18775           STRUCT_VERSION_ID,
18776           SUP_PROJECT_ID,
18777           SUP_ID,
18778           SUP_EMT_ID,
18779           SUBRO_ID,
18780           SUB_ID,
18781           SUB_EMT_ID,
18782           SUP_LEVEL,
18783           SUB_LEVEL,
18784           SUB_ROLLUP_ID,
18785           SUB_LEAF_FLAG,
18786           RELATIONSHIP_TYPE,
18787           LAST_UPDATE_DATE,
18788           LAST_UPDATED_BY,
18789           CREATION_DATE,
18790           CREATED_BY,
18791           LAST_UPDATE_LOGIN
18792         )
18793         select
18794           den.STRUCT_TYPE,
18795           den.PRG_GROUP,
18796           den.STRUCT_VERSION_ID,
18797           den.SUP_PROJECT_ID,
18798           den.SUP_ID,
18799           den.SUP_EMT_ID,
18800           den.SUBRO_ID,
18801           den.SUB_ID,
18802           den.SUB_EMT_ID,
18803           den.SUP_LEVEL,
18804           den.SUB_LEVEL,
18805           den.SUB_ROLLUP_ID,
18806           den.SUB_LEAF_FLAG,
18807           den.RELATIONSHIP_TYPE,
18808           l_last_update_date,
18809           l_last_updated_by,
18810           l_creation_date,
18811           l_created_by,
18812           l_last_update_login
18813         from
18814           PJI_PJP_PROJ_BATCH_MAP map,
18815           PA_XBS_DENORM den
18816         where
18817           map.WORKER_ID = p_worker_id and
18818           den.SUP_PROJECT_ID = map.PROJECT_ID;
18819 
18820         l_count := l_count + sql%rowcount;
18821 
18822       end if;
18823 
18824 	  --Commented below portion of code for bug 7197275
18825       if (l_count > 0) then -- Uncommented for bug 14571067
18826 
18827         --  delete        from   PJI_REP_XBS_DENORM;
18828         pji_rep_util.Log_Struct_Change_Event(l_wbs_version_id_tbl); --Uncommented for bug 14571067
18829         -- where  PROJECT_ID in (select map.PROJECT_ID
18830         --                       from   PJI_PJP_PROJ_BATCH_MAP map
18831         --                       where  map.WORKER_ID = p_worker_id);
18832 
18833       end if; -- Uncommented for bug 14571067
18834 
18835       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM(p_worker_id);');
18836 
18837       commit;
18838 
18839     else -- online mode
18840 
18841        IF g_old_struct_version IS NOT NULL THEN
18842           l_wbs_version_id_tbl.EXTEND;
18843           l_wbs_version_id_tbl(1) :=g_old_struct_version ;
18844           IF g_new_struct_version IS NOT NULL  and  g_old_struct_version<>g_new_struct_version THEN
18845              l_wbs_version_id_tbl.EXTEND;
18846              l_wbs_version_id_tbl(2) :=g_new_struct_version ;
18847           END IF;
18848        else
18849             IF g_new_struct_version IS NOT NULL THEN
18850               l_wbs_version_id_tbl.EXTEND;
18851               l_wbs_version_id_tbl(1) :=g_new_struct_version ;
18852             END IF;
18853        END IF;
18854 
18855       -- online mode, refresh denorm table for a single WBS version ID
18856 
18857       l_count := 0;
18858 	/* For 14040849 removed the hint in the below delete */
18859       delete
18860       from  PJI_XBS_DENORM den
18861       where den.STRUCT_TYPE       in ('WBS', 'XBS') and
18862             den.SUP_PROJECT_ID    =  g_project_id and
18863             den.STRUCT_VERSION_ID in (g_old_struct_version,
18864                                       g_new_struct_version);
18865 
18866       l_count := l_count + sql%rowcount;
18867 
18868       delete /*+ index(den PJI_XBS_DENORM_N4) */     /* modified the hint to use PJI_XBS_DENORM_N4 instead of PJI_XBS_DENORM_N3 */
18869       from  PJI_XBS_DENORM den
18870       where den.STRUCT_TYPE    =  'PRG' and
18871             den.SUP_PROJECT_ID in (select prg.SUP_PROJECT_ID
18872                                    from   PJI_FP_AGGR_XBS_T prg
18873                                    where  prg.STRUCT_TYPE = 'PRG');
18874 
18875       l_count := l_count + sql%rowcount;
18876 
18877       insert into PJI_XBS_DENORM
18878       (
18879         STRUCT_TYPE,
18880         PRG_GROUP,
18881         STRUCT_VERSION_ID,
18882         SUP_PROJECT_ID,
18883         SUP_ID,
18884         SUP_EMT_ID,
18885         SUBRO_ID,
18886         SUB_ID,
18887         SUB_EMT_ID,
18888         SUP_LEVEL,
18889         SUB_LEVEL,
18890         SUB_ROLLUP_ID,
18891         SUB_LEAF_FLAG,
18892         RELATIONSHIP_TYPE,
18893         LAST_UPDATE_DATE,
18894         LAST_UPDATED_BY,
18895         CREATION_DATE,
18896         CREATED_BY,
18897         LAST_UPDATE_LOGIN
18898       )
18899       select /*+ index(den PA_XBS_DENORM_N2) */
18900         den.STRUCT_TYPE,
18901         den.PRG_GROUP,
18902         den.STRUCT_VERSION_ID,
18903         den.SUP_PROJECT_ID,
18904         den.SUP_ID,
18905         den.SUP_EMT_ID,
18906         den.SUBRO_ID,
18907         den.SUB_ID,
18908         den.SUB_EMT_ID,
18909         den.SUP_LEVEL,
18910         den.SUB_LEVEL,
18911         den.SUB_ROLLUP_ID,
18912         den.SUB_LEAF_FLAG,
18913         den.RELATIONSHIP_TYPE,
18914         l_last_update_date,
18915         l_last_updated_by,
18916         l_creation_date,
18917         l_created_by,
18918         l_last_update_login
18919       from
18920         PA_XBS_DENORM den
18921       where
18922         den.STRUCT_TYPE       in ('WBS', 'XBS') and
18923         den.SUP_PROJECT_ID    =  g_project_id and
18924         den.STRUCT_VERSION_ID in (g_old_struct_version,
18925                                   g_new_struct_version)
18926       union all
18927       select /*+ index(den PA_XBS_DENORM_N4) */ /* modified the hint to use PA_XBS_DENORM_N4 instead of PA_XBS_DENORM_N3 */
18928         den.STRUCT_TYPE,
18929         den.PRG_GROUP,
18930         den.STRUCT_VERSION_ID,
18931         den.SUP_PROJECT_ID,
18932         den.SUP_ID,
18933         den.SUP_EMT_ID,
18934         den.SUBRO_ID,
18935         den.SUB_ID,
18936         den.SUB_EMT_ID,
18937         den.SUP_LEVEL,
18938         den.SUB_LEVEL,
18939         den.SUB_ROLLUP_ID,
18940         den.SUB_LEAF_FLAG,
18941         den.RELATIONSHIP_TYPE,
18942         l_last_update_date,
18943         l_last_updated_by,
18944         l_creation_date,
18945         l_created_by,
18946         l_last_update_login
18947       from
18948         PA_XBS_DENORM den
18949       where
18950         den.STRUCT_TYPE    =  'PRG' and
18951         den.SUP_PROJECT_ID in (select prg.SUP_PROJECT_ID
18952                                from   PJI_FP_AGGR_XBS_T prg
18953                                where  prg.STRUCT_TYPE = 'PRG');
18954 
18955 	  --Commented below portion of code for bug 7197275
18956       if (l_count > 0) then --Uncommented for bug 14571067
18957 
18958        --delete        from   PJI_REP_XBS_DENORM;
18959          pji_rep_util.Log_Struct_Change_Event(l_wbs_version_id_tbl); --Uncommented for bug 14571067
18960         -- where  PROJECT_ID = g_project_id and
18961         --        OWNER_WBS_VERSION_ID in (g_old_struct_version,
18962         --                                 g_new_struct_version);
18963 
18964       end if; --Uncommented for bug 14571067
18965 
18966       delete from PJI_XBS_DENORM_DELTA_T;
18967 
18968     end if;
18969 
18970   end UPDATE_XBS_DENORM;
18971 
18972 
18973   -- -----------------------------------------------------
18974   -- procedure UPDATE_RBS_DENORM
18975   --
18976   --   History
18977   --   19-MAR-2004  SVERMETT  Created
18978   --
18979   -- Internal PJP Summarization API.
18980   --
18981   -- Called by RBS program
18982   --
18983   -- This API will be called for both online and bulk processing.
18984   --
18985   -- -----------------------------------------------------
18986   procedure UPDATE_RBS_DENORM (p_worker_id in number default null) is
18987 
18988     l_process           varchar2(30);
18989     l_extraction_type   varchar2(30);
18990 
18991     l_last_update_date  date;
18992     l_last_updated_by   number;
18993     l_creation_date     date;
18994     l_created_by        number;
18995     l_last_update_login number;
18996 
18997     l_fpm_upgrade       varchar2(30);
18998 
18999   begin
19000 
19001     l_last_update_date  := sysdate;
19002     l_last_updated_by   := FND_GLOBAL.USER_ID;
19003     l_creation_date     := sysdate;
19004     l_created_by        := FND_GLOBAL.USER_ID;
19005     l_last_update_login := FND_GLOBAL.LOGIN_ID;
19006 
19007     l_fpm_upgrade := PJI_UTILS.GET_PARAMETER('PJI_FPM_UPGRADE');
19008 
19009     if (p_worker_id is not null) then
19010 
19011       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19012 
19013       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_RBS_DENORM(p_worker_id);')) then
19014         return;
19015       end if;
19016 
19017       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19018 
19019       if (nvl(l_fpm_upgrade, 'P') <> 'C' and
19020           l_extraction_type = 'FULL') then
19021 
19022         insert into PJI_RBS_DENORM den_i
19023         (
19024           STRUCT_VERSION_ID,
19025           SUP_ID,
19026           SUBRO_ID,
19027           SUB_ID,
19028           SUP_LEVEL,
19029           SUB_LEVEL,
19030           SUB_LEAF_FLAG,
19031           LAST_UPDATE_DATE,
19032           LAST_UPDATED_BY,
19033           CREATION_DATE,
19034           CREATED_BY,
19035           LAST_UPDATE_LOGIN
19036         )
19037         select
19038           pa.STRUCT_VERSION_ID,
19039           pa.SUP_ID,
19040           pa.SUBRO_ID,
19041           pa.SUB_ID,
19042           pa.SUP_LEVEL,
19043           pa.SUB_LEVEL,
19044           pa.SUB_LEAF_FLAG,
19045           l_last_update_date,
19046           l_last_updated_by,
19047           l_creation_date,
19048           l_created_by,
19049           l_last_update_login
19050         from
19051           PA_RBS_DENORM pa,
19052           PJI_RBS_DENORM pji
19053         where
19054           nvl(pa.STRUCT_VERSION_ID, -1)
19055                                    = nvl(pji.STRUCT_VERSION_ID (+), -1)     and
19056           nvl(pa.SUP_ID, -1)       = nvl(pji.SUP_ID (+), -1)                and
19057           nvl(pa.SUBRO_ID, -1)     = nvl(pji.SUBRO_ID (+), -1)              and
19058           nvl(pa.SUB_ID, -1)       = nvl(pji.SUB_ID (+), -1)                and
19059           nvl(pa.SUP_LEVEL, -1)    = nvl(pji.SUP_LEVEL (+), -1)             and
19060           nvl(pa.SUB_LEVEL, -1)    = nvl(pji.SUB_LEVEL (+), -1)             and
19061           nvl(pa.SUB_LEAF_FLAG, 'PJI$NULL')
19062                                    = nvl(pji.SUB_LEAF_FLAG (+), 'PJI$NULL') and
19063           pji.STRUCT_VERSION_ID    is null;
19064 
19065       elsif (l_extraction_type = 'INCREMENTAL' or
19066              (nvl(l_fpm_upgrade, 'P') = 'C' and
19067               l_extraction_type = 'FULL')) then
19068 
19069         /* Added for Bug 9099240 Start */
19070         if PA_RBS_MAPPING.g_max_rbs_id1 is not null or
19071            PA_RBS_MAPPING.g_max_rbs_id2 is not null then
19072 
19073           insert into PJI_RBS_DENORM
19074           (
19075             STRUCT_VERSION_ID,
19076             SUP_ID,
19077             SUBRO_ID,
19078             SUB_ID,
19079             SUP_LEVEL,
19080             SUB_LEVEL,
19081             SUB_LEAF_FLAG,
19082             LAST_UPDATE_DATE,
19083             LAST_UPDATED_BY,
19084             CREATION_DATE,
19085             CREATED_BY,
19086             LAST_UPDATE_LOGIN
19087           )
19088         	select
19089         		interim.struct_version_id,
19090         		interim.sup_id,
19091         		interim.subro_id,
19092         		interim.sub_id,
19093         		interim.sup_level,
19094         		interim.sub_level,
19095         		interim.sub_leaf_flag,
19096         		l_last_update_date,
19097         		l_last_updated_by,
19098         		l_creation_date,
19099         		l_created_by,
19100         		l_last_update_login
19101         	from 	PJI_FP_AGGR_RBS	interim
19102         	where 	interim.worker_id = p_worker_id;
19103 
19104         else
19105         /* Added for Bug 9099240 End */
19106 
19107         delete from PJI_RBS_DENORM
19108         where STRUCT_VERSION_ID in (select log.EVENT_OBJECT
19109                                     from   PJI_PA_PROJ_EVENTS_LOG log
19110                                     where  log.WORKER_ID = p_worker_id and
19111                                            log.EVENT_TYPE = 'PJI_RBS_CHANGE');
19112 
19113         insert into PJI_RBS_DENORM
19114         (
19115           STRUCT_VERSION_ID,
19116           SUP_ID,
19117           SUBRO_ID,
19118           SUB_ID,
19119           SUP_LEVEL,
19120           SUB_LEVEL,
19121           SUB_LEAF_FLAG,
19122           LAST_UPDATE_DATE,
19123           LAST_UPDATED_BY,
19124           CREATION_DATE,
19125           CREATED_BY,
19126           LAST_UPDATE_LOGIN
19127         )
19128         select
19129           den.STRUCT_VERSION_ID,
19130           den.SUP_ID,
19131           den.SUBRO_ID,
19132           den.SUB_ID,
19133           den.SUP_LEVEL,
19134           den.SUB_LEVEL,
19135           den.SUB_LEAF_FLAG,
19136           l_last_update_date,
19137           l_last_updated_by,
19138           l_creation_date,
19139           l_created_by,
19140           l_last_update_login
19141         from
19142           PA_RBS_DENORM den,
19143           (
19144           select
19145             distinct
19146             log.EVENT_OBJECT
19147           from
19148             PJI_PA_PROJ_EVENTS_LOG log
19149           where
19150             log.WORKER_ID = p_worker_id and
19151             log.EVENT_TYPE in ('PJI_RBS_CHANGE')
19152           ) log
19153         where
19154           den.STRUCT_VERSION_ID = log.EVENT_OBJECT;
19155 
19156         end if; /* Added for Bug 9099240 */
19157 
19158       elsif (l_extraction_type = 'RBS') then
19159 
19160         delete from PJI_RBS_DENORM
19161         where STRUCT_VERSION_ID in (select
19162                                       decode(log.EVENT_TYPE,
19163                                              'RBS_PUSH',
19164                                                decode(invert.INVERT_ID,
19165                                                       1, log.EVENT_OBJECT,
19166                                                       2, log.ATTRIBUTE2),
19167                                              'RBS_DELETE', log.EVENT_OBJECT)
19168                                     from
19169                                       PJI_PA_PROJ_EVENTS_LOG log,
19170                                       (
19171                                         select 1 INVERT_ID from DUAL union all
19172                                         select 2 INVERT_ID from DUAL
19173                                       ) invert
19174                                     where
19175                                       log.WORKER_ID = p_worker_id and
19176                                       log.EVENT_TYPE in ('RBS_PUSH',
19177                                                          'RBS_DELETE'));
19178 
19179         insert into PJI_RBS_DENORM
19180         (
19181           STRUCT_VERSION_ID,
19182           SUP_ID,
19183           SUBRO_ID,
19184           SUB_ID,
19185           SUP_LEVEL,
19186           SUB_LEVEL,
19187           SUB_LEAF_FLAG,
19188           LAST_UPDATE_DATE,
19189           LAST_UPDATED_BY,
19190           CREATION_DATE,
19191           CREATED_BY,
19192           LAST_UPDATE_LOGIN
19193         )
19194         select
19195           den.STRUCT_VERSION_ID,
19196           den.SUP_ID,
19197           den.SUBRO_ID,
19198           den.SUB_ID,
19199           den.SUP_LEVEL,
19200           den.SUB_LEVEL,
19201           den.SUB_LEAF_FLAG,
19202           l_last_update_date,
19203           l_last_updated_by,
19204           l_creation_date,
19205           l_created_by,
19206           l_last_update_login
19207         from
19208           PA_RBS_DENORM den,
19209           (
19210           select
19211             distinct
19212             EVENT_OBJECT,
19213             ATTRIBUTE2
19214           from
19215             PJI_PA_PROJ_EVENTS_LOG
19216           where
19217             WORKER_ID = p_worker_id and
19218             EVENT_TYPE = 'RBS_PUSH'
19219           ) log
19220         where
19221           den.STRUCT_VERSION_ID = log.EVENT_OBJECT;
19222 
19223       end if;
19224 
19225       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_RBS_DENORM(p_worker_id);');
19226 
19227       commit;
19228 
19229     else -- online mode
19230 
19231       /* Added for Bug 9099240 Start */
19232     if PA_RBS_MAPPING.g_max_rbs_id1 is not null or
19233        PA_RBS_MAPPING.g_max_rbs_id2 is not null then
19234 
19235       insert into PJI_RBS_DENORM
19236       (
19237         STRUCT_VERSION_ID,
19238         SUP_ID,
19239         SUBRO_ID,
19240         SUB_ID,
19241         SUP_LEVEL,
19242         SUB_LEVEL,
19243         SUB_LEAF_FLAG,
19244         LAST_UPDATE_DATE,
19245         LAST_UPDATED_BY,
19246         CREATION_DATE,
19247         CREATED_BY,
19248         LAST_UPDATE_LOGIN
19249       )
19250     	select
19251     		interim.struct_version_id,
19252     		interim.sup_id,
19253     		interim.subro_id,
19254     		interim.sub_id,
19255     		interim.sup_level,
19256     		interim.sub_level,
19257     		interim.sub_leaf_flag,
19258     		l_last_update_date,
19259     		l_last_updated_by,
19260     		l_creation_date,
19261     		l_created_by,
19262     		l_last_update_login
19263     	from 	PJI_FP_AGGR_RBS_T	interim
19264     	where 	interim.worker_id = 1;        /* Modified for bug 9709502 */
19265 
19266     else
19267      /* Added for Bug 9099240 End */
19268 
19269       delete from PJI_RBS_DENORM
19270       where STRUCT_VERSION_ID = g_rbs_version;
19271 
19272       insert into PJI_RBS_DENORM
19273       (
19274         STRUCT_VERSION_ID,
19275         SUP_ID,
19276         SUBRO_ID,
19277         SUB_ID,
19278         SUP_LEVEL,
19279         SUB_LEVEL,
19280         SUB_LEAF_FLAG,
19281         LAST_UPDATE_DATE,
19282         LAST_UPDATED_BY,
19283         CREATION_DATE,
19284         CREATED_BY,
19285         LAST_UPDATE_LOGIN
19286       )
19287       select
19288         den.STRUCT_VERSION_ID,
19289         den.SUP_ID,
19290         den.SUBRO_ID,
19291         den.SUB_ID,
19292         den.SUP_LEVEL,
19293         den.SUB_LEVEL,
19294         den.SUB_LEAF_FLAG,
19295         l_last_update_date,
19296         l_last_updated_by,
19297         l_creation_date,
19298         l_created_by,
19299         l_last_update_login
19300       from
19301         PA_RBS_DENORM den
19302       where
19303         den.STRUCT_VERSION_ID = g_rbs_version;
19304 
19305       -- delete from PJI_RBS_DENORM_DELTA_T;
19306 
19307       end if; /* Added for Bug 9099240 */
19308 
19309     end if;
19310 
19311     /* Added for Bug 9099240 Start */
19312     if l_extraction_type is null then
19313     	  PJI_PJP_SUM_DENORM.cleanup_rbs_denorm(p_worker_id,'ONLINE');
19314     else
19315     	  PJI_PJP_SUM_DENORM.cleanup_rbs_denorm(p_worker_id,l_extraction_type);
19316     end if;
19317     /* Added for Bug 9099240 End */
19318 
19319   end UPDATE_RBS_DENORM;
19320 
19321 
19322   -- -----------------------------------------------------
19323   -- procedure PROCESS_PENDING_EVENTS
19324   --
19325   --   History
19326   --   19-MAR-2004  SVERMETT  Created
19327   --
19328   -- Internal PJP Summarization API.
19329   --
19330   -- -----------------------------------------------------
19331   procedure PROCESS_PENDING_EVENTS (p_worker_id in number) is
19332 
19333     l_process         varchar2(30);
19334     l_extraction_type varchar2(30);
19335 
19336     l_return_status varchar2(255);
19337     l_msg_count     number;
19338     l_msg_data      varchar2(2000);
19339 
19340   begin
19341 
19342     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19343 
19344     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_EVENTS(p_worker_id);')) then
19345       return;
19346     end if;
19347 
19348     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19349 
19350     begin
19351     PJI_FM_XBS_ACCUM_MAINT.PROCESS_PENDING_EVENTS(l_return_status,
19352                                                   l_msg_data);
19353     exception when others then
19354       PJI_UTILS.WRITE2LOG('PROCESS_PENDING_EVENTS:' || SQLERRM);
19355     end;
19356 
19357     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_EVENTS(p_worker_id);');
19358 
19359     commit;
19360 
19361   end PROCESS_PENDING_EVENTS;
19362 
19363 
19364   -- -----------------------------------------------------
19365   -- procedure PROCESS_PENDING_PLAN_UPDATES
19366   --
19367   --   History
19368   --   19-MAR-2004  SVERMETT  Created
19369   --
19370   -- Internal PJP Summarization API.
19371   --
19372   -- -----------------------------------------------------
19373   procedure PROCESS_PENDING_PLAN_UPDATES (p_worker_id in number) is
19374 
19375     l_process         varchar2(30);
19376     l_extraction_type varchar2(30);
19377 
19378     l_return_status varchar2(255);
19379     l_msg_count     number;
19380     l_msg_data      varchar2(2000);
19381     l_pji_schema    varchar2(30);    -- Added for bug 13897252
19382 
19383   begin
19384 
19385     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19386     l_pji_schema  := pji_utils.get_pji_schema_name;  -- Added for bug 13897252
19387 
19388     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_PLAN_UPDATES(p_worker_id);')) then
19389       return;
19390     end if;
19391 
19392     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19393 
19394     PJI_FM_PLAN_MAINT_PVT.PROCESS_PENDING_PLAN_UPDATES(l_extraction_type,
19395                                                        l_return_status,
19396                                                        l_msg_data);
19397 
19398    /* Added for bug 13897252 starts */
19399    IF PJI_UTILS.GET_PARAMETER('PJP_SIN_PRG') = 'Y' then
19400       PJI_PJP_PRG_PERF_ALL.GATHER_TEMP_STATS(p_ownname => l_pji_schema
19401                                             ,p_tabname => 'PJI_FP_AGGR_PJP1'
19402                                             ,p_partname => 'P'||p_worker_id
19403                                             ,p_percent => 10);
19404 
19405    END IF;  /* Added for bug 13897252 ends */
19406 
19407     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_PLAN_UPDATES(p_worker_id);');
19408 
19409     commit;
19410 
19411   end PROCESS_PENDING_PLAN_UPDATES;
19412 
19413 
19414   -- -----------------------------------------------------
19415   -- procedure GET_PLANRES_ACTUALS
19416   --
19417   --   History
19418   --   26-JAN-2004  SASHAIK  Created
19419   --
19420   -- Internal PJP Summarization API.
19421   --
19422   -- -----------------------------------------------------
19423   procedure GET_PLANRES_ACTUALS (p_worker_id in number) is
19424 
19425     cursor project_list (p_worker_id in number) is
19426     select
19427       ROWNUM,
19428       PROJECT_ID
19429     from
19430       PJI_PJP_PROJ_BATCH_MAP
19431     where
19432       WORKER_ID = p_worker_id             and
19433       PJI_PROJECT_STATUS = 'Y'            and
19434       rownum <= G_PROGRESS_COMMIT_SIZE;
19435 
19436     l_process         varchar2(30);
19437     l_extraction_type varchar2(30);
19438     l_extraction_type_wp varchar2(30);
19439 
19440     l_project_id_tbl  system.pa_num_tbl_type;
19441     l_prj_index       number;
19442     l_return_status   varchar2(255);
19443     l_msg_count       number;
19444     l_msg_data        varchar2(2000);
19445     l_ret_msg_data        varchar2(2000);
19446     l_ret_status      varchar2(255);
19447     l_success         varchar2(1) := 'Y';
19448     l_err_msg1         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS -> PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS';
19449     l_err_msg2         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS -> PJI_FM_PLAN_MAINT.GET_ACTUALS_SUMM';
19450 
19451   begin
19452 
19453     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19454     l_ret_status := FND_API.G_RET_STS_SUCCESS;
19455 
19456     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS(p_worker_id);')) then
19457       return;
19458     end if;
19459 
19460     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19461 
19462     -- Incr-Incr, Full-Initial, rbs-full, pr-full.
19463     SELECT DECODE(l_extraction_type, 'INCREMENTAL', 'INCREMENTAL', 'FULL', 'INITIAL', 'FULL')
19464     INTO   l_extraction_type_wp
19465     FROM   DUAL;
19466 
19467   LOOP
19468 
19469     l_project_id_tbl := system.pa_num_tbl_type();
19470     l_project_id_tbl.delete;
19471     l_prj_index := 1;
19472 
19473     for c in project_list(p_worker_id) loop
19474       l_project_id_tbl.extend(1);
19475       l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
19476       l_prj_index := l_prj_index + 1;
19477     end loop;
19478 
19479     EXIT WHEN l_project_id_tbl.COUNT = 0;
19480 
19481     if (l_prj_index > 1) then
19482 
19483       Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N';
19484 
19485       savepoint S_PROGRESS_ROLLUP;
19486 
19487       PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS(p_project_id_list => l_project_id_tbl,
19488                                              p_extraction_type => l_extraction_type_wp,
19489                                              p_plan_res_level  => 'Y',
19490                                              x_return_status   => l_return_status,
19491                                              x_msg_count       => l_msg_count,
19492                                              x_msg_data        => l_msg_data);
19493 
19494 
19495       if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
19496       FND_MESSAGE.SET_NAME('PA', l_msg_data);
19497       l_ret_msg_data := FND_MESSAGE.GET;
19498         rollback to S_PROGRESS_ROLLUP;
19499         l_success := 'Y';
19500       end if;
19501 
19502       -- l_success := 'N'; -- NOTE!!! This condition is present only to simulate failure
19503                         --   condition. It is to be commented at all times in checked
19504                         --   in code.
19505 
19506       forall j in 1..l_project_id_tbl.COUNT
19507         update PJI_PJP_PROJ_BATCH_MAP
19508         set pji_project_status =
19509                      decode(l_return_status
19510                           , FND_API.G_RET_STS_SUCCESS
19511                           , 'S' -- Success
19512                           , 'S' -- keeping this for future requirement Pending processing as actuals did not get returned for this project.
19513                           ),
19514         act_err_msg=  decode(l_return_status
19515                           , FND_API.G_RET_STS_SUCCESS
19516                           , act_err_msg
19517                           , l_ret_msg_data
19518                           )
19519         where WORKER_ID  = p_worker_id and
19520               project_id = l_project_id_tbl(j);
19521 
19522       COMMIT;
19523 
19524     end if;
19525 
19526   END LOOP;
19527 
19528   if l_success <> 'Y' then
19529 
19530       update pji_pjp_proj_batch_map -- Process the pending projects in the next sumz run.
19531         set pji_project_status = 'Y'
19532       where
19533         WORKER_ID  = p_worker_id and
19534         pji_project_status = 'P';
19535 
19536       commit;
19537       dbms_standard.raise_application_error(-20110, l_err_msg1);
19538 
19539   end if;
19540 
19541   -- Reset flags. 'N' means actuals don't exist for this project.
19542   -- Reset flags for only those projects for which actuals exist.
19543   update pji_pjp_proj_batch_map
19544      set pji_project_status = 'Y'
19545   where
19546      WORKER_ID  = p_worker_id and
19547      pji_project_status <> 'N';
19548 
19549 
19550   PJI_FM_PLAN_MAINT.GET_ACTUALS_SUMM (
19551       p_extr_type       => l_extraction_type
19552     , x_return_status   => l_return_status
19553     , x_msg_code        => l_msg_data ) ;
19554 
19555   IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
19556     dbms_standard.raise_application_error(-20120, l_err_msg2);
19557   END IF;
19558 
19559   -- PA_ppr_rollup_PVT.CREATE_CBS_SLICE (p_worker_id, l_extraction_type ); -- This call is not needed since CBS version will not be frozen
19560 
19561     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS(p_worker_id);');
19562 
19563     commit;
19564 
19565   end GET_PLANRES_ACTUALS;
19566 
19567 
19568   -- -----------------------------------------------------
19569   -- procedure GET_TASK_ROLLUP_ACTUALS
19570   --
19571   --   History
19572   --   26-JAN-2004  SASHAIK  Created
19573   --
19574   -- Internal PJP Summarization API.
19575   --
19576   -- -----------------------------------------------------
19577   procedure GET_TASK_ROLLUP_ACTUALS (p_worker_id in number) is
19578 
19579     cursor project_list (p_worker_id in number) is
19580     SELECT nvl(ver.PRG_LEVEL,1) PRG_LEVEL,
19581            ver.PROJECT_ID
19582     FROM
19583            pji_pjp_proj_batch_map   map,
19584            pa_proj_element_versions ver,
19585            pa_proj_structure_types typ,
19586            pa_proj_elem_ver_structure str
19587     WHERE
19588            typ.STRUCTURE_TYPE_ID         = 1
19589        AND typ.PROJ_ELEMENT_ID           = str.PROJ_ELEMENT_ID
19590        AND str.LATEST_EFF_PUBLISHED_FLAG = 'Y'
19591        AND str.ELEMENT_VERSION_ID        = ver.ELEMENT_VERSION_ID
19592        AND str.PROJ_ELEMENT_ID           = ver.PROJ_ELEMENT_ID
19593        AND str.PROJECT_ID                = ver.PROJECT_ID
19594        AND ver.OBJECT_TYPE               = 'PA_STRUCTURES'
19595        AND ver.PROJECT_ID                = map.PROJECT_ID
19596        AND map.WORKER_ID                 = p_worker_id
19597        AND map.PJI_PROJECT_STATUS        = 'Y'
19598        ORDER BY ver.PRG_LEVEL DESC NULLS FIRST;
19599 
19600     l_process         varchar2(30);
19601     l_extraction_type varchar2(30);
19602 
19603     l_project_id_tbl  system.pa_num_tbl_type;
19604     l_prg_level_tbl   system.pa_num_tbl_type;
19605     l_prj_index       number;
19606     l_return_status   varchar2(255);
19607     l_msg_count       number;
19608     l_msg_data        varchar2(2000);
19609 
19610   begin
19611 
19612 
19613     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19614 
19615     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS(p_worker_id);')) then
19616       return;
19617     end if;
19618 
19619     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19620 
19621     if (l_extraction_type = 'FULL' or
19622         l_extraction_type = 'INCREMENTAL') then
19623 
19624       update PJI_PJP_PROJ_BATCH_MAP
19625       set    PJI_PROJECT_STATUS = 'Y'
19626       where  WORKER_ID = p_worker_id and
19627              PJI_PROJECT_STATUS is null and
19628              PROJECT_ID in (select distinct
19629                                    PROJECT_ID
19630                             from   PJI_FP_AGGR_PJP1
19631                             where  WORKER_ID = p_worker_id
19632                             and    PLAN_VERSION_ID = -1);
19633 
19634     end if;
19635 
19636     l_project_id_tbl := system.pa_num_tbl_type();
19637     l_project_id_tbl.delete;
19638     l_prg_level_tbl  := system.pa_num_tbl_type();
19639     l_prg_level_tbl.delete;
19640     l_prj_index := 1;
19641 
19642     for c in project_list(p_worker_id) loop
19643       l_project_id_tbl.extend(1);
19644       l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
19645       l_prg_level_tbl.extend(1);
19646       l_prg_level_tbl(l_prj_index) := c.PRG_LEVEL;
19647       l_prj_index := l_prj_index + 1;
19648     end loop;
19649 
19650 
19651 
19652     if (l_prj_index > 1) then
19653 
19654       PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS(p_project_id_list => l_project_id_tbl,
19655                                              p_extraction_type => l_extraction_type,
19656                                              p_plan_res_level  => 'N',
19657                                              p_proj_pgm_level  => l_prg_level_tbl,
19658                                              x_return_status   => l_return_status,
19659                                              x_msg_count       => l_msg_count,
19660                                              x_msg_data        => l_msg_data);
19661 
19662 
19663       if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
19664         dbms_standard.raise_application_error(-20130, 'Error in PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS -> PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS');
19665       end if;
19666 
19667     end if;
19668 
19669     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS(p_worker_id);');
19670 
19671     commit;
19672 
19673   end GET_TASK_ROLLUP_ACTUALS;
19674 
19675 
19676   -- -----------------------------------------------------
19677   -- procedure UNLOCK_ALL_HEADERS
19678   --
19679   --   History
19680   --   19-MAR-2004  SVERMETT  Created
19681   --
19682   -- Internal PJP Summarization API.
19683   --
19684   -- -----------------------------------------------------
19685   procedure UNLOCK_ALL_HEADERS (p_worker_id in number) is
19686 
19687     l_process         varchar2(30);
19688     l_extraction_type varchar2(30);
19689 
19690     l_return_status   varchar2(255);
19691     l_msg_count       number;
19692     l_msg_data        varchar2(2000);
19693     l_msg_code        varchar2(255);
19694 
19695   begin
19696 
19697     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19698 
19699     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UNLOCK_ALL_HEADERS(p_worker_id);')) then
19700       return;
19701     end if;
19702 
19703     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19704 
19705     update PJI_PJP_WBS_HEADER
19706     set    LOCK_FLAG = null
19707     where  LOCK_FLAG is not null
19708       and  project_id IN
19709            ( SELECT project_id
19710              FROM   pji_pjp_proj_batch_map
19711              WHERE  worker_id = p_worker_id );
19712 
19713     -- SELECT DECODE(l_extraction_type, 'PARTIAL', 'PLANTYPE', l_extraction_type)
19714     -- INTO   l_extraction_type
19715     -- FROM   DUAL ;
19716 
19717     Pji_Fm_Plan_Maint_Pvt.OBTAIN_RELEASE_LOCKS (
19718       p_context        => l_extraction_type
19719     , p_lock_mode      => NULL
19720     , x_return_status  => l_return_status
19721     , x_msg_code       => l_msg_code
19722     );
19723 
19724     PJI_FM_PLAN_MAINT_PVT.DELETE_PLAN_LINES ( x_return_status => l_return_status );
19725 
19726    -- Pji_Fm_Plan_Maint_Pvt.MARK_EXTRACTED_PLANS('SEC');
19727  --   Back to CREATE_SECONDARY_PVT due to issue 5155692
19728 
19729     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UNLOCK_ALL_HEADERS(p_worker_id);');
19730 
19731     commit;
19732 
19733   end UNLOCK_ALL_HEADERS;
19734 
19735 
19736   -- -----------------------------------------------------
19737   -- procedure EXTRACT_FIN_PLAN_VERS_BULK
19738   --
19739   --   History
19740   --   19-MAR-2004  SVERMETT  Created
19741   --
19742   -- Used solely for FP.M Upgrade
19743   --
19744   -- -----------------------------------------------------
19745   procedure EXTRACT_FIN_PLAN_VERS_BULK (p_worker_id in number) is
19746 
19747     l_process         varchar2(30);
19748     l_extraction_type varchar2(30);
19749 
19750     l_return_status varchar2(255);
19751     l_msg_count     number;
19752     l_msg_data      varchar2(2000);
19753 
19754   begin
19755 
19756     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19757 
19758     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_FIN_PLAN_VERS_BULK(p_worker_id);')) then
19759       return;
19760     end if;
19761 
19762     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19763 
19764     PJI_FM_PLAN_MAINT_PVT.EXTRACT_FIN_PLAN_VERS_BULK(p_slice_type => 'PRI');
19765 
19766     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_FIN_PLAN_VERS_BULK(p_worker_id);');
19767 
19768     commit;
19769 
19770   end EXTRACT_FIN_PLAN_VERS_BULK;
19771 
19772 
19773   -- -----------------------------------------------------
19774   -- procedure POPULATE_WBS_HDR
19775   --
19776   --   History
19777   --   19-MAR-2004  SVERMETT  Created
19778   --
19779   -- Used solely for FP.M Upgrade
19780   --
19781   -- -----------------------------------------------------
19782   procedure POPULATE_WBS_HDR (p_worker_id in number) is
19783 
19784     l_process         varchar2(30);
19785     l_extraction_type varchar2(30);
19786 
19787     l_return_status varchar2(255);
19788     l_msg_count     number;
19789     l_msg_data      varchar2(2000);
19790 
19791   begin
19792 
19793     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19794 
19795     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_WBS_HDR(p_worker_id);')) then
19796       return;
19797     end if;
19798 
19799     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19800 
19801     PJI_FM_PLAN_MAINT_PVT.POPULATE_WBS_HDR;
19802 
19803     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_WBS_HDR(p_worker_id);');
19804 
19805     commit;
19806 
19807   end POPULATE_WBS_HDR;
19808 
19809 
19810   -- -----------------------------------------------------
19811   -- procedure UPDATE_WBS_HDR
19812   --
19813   --   History
19814   --   19-MAR-2004  SASHAIK Created
19815   --
19816   -- Used solely for FP.M Upgrade
19817   --
19818   -- -----------------------------------------------------
19819   procedure UPDATE_WBS_HDR (p_worker_id in number) is
19820 
19821     l_process         varchar2(30);
19822     l_extraction_type varchar2(30);
19823 
19824     l_return_status varchar2(255);
19825     l_msg_count     number;
19826     l_msg_data      varchar2(2000);
19827 
19828   begin
19829 
19830     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19831 
19832     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_WBS_HDR(p_worker_id);')) then
19833       return;
19834     end if;
19835 
19836     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19837 
19838     -- PJI_FM_PLAN_MAINT_PVT.UPDATE_WBS_HDR;
19839     PJI_FM_PLAN_MAINT_PVT.UPDATE_WBS_HDR(p_worker_id);
19840 
19841     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_WBS_HDR(p_worker_id);');
19842 
19843     commit;
19844 
19845   end UPDATE_WBS_HDR;
19846 
19847 
19848   -- -----------------------------------------------------
19849   -- procedure POPULATE_RBS_HDR
19850   --
19851   --   History
19852   --   19-MAR-2004  SVERMETT  Created
19853   --
19854   -- Used solely for FP.M Upgrade
19855   --
19856   -- -----------------------------------------------------
19857   procedure POPULATE_RBS_HDR (p_worker_id in number) is
19858 
19859     l_process         varchar2(30);
19860     l_extraction_type varchar2(30);
19861 
19862     l_return_status varchar2(255);
19863     l_msg_count     number;
19864     l_msg_data      varchar2(2000);
19865 
19866   begin
19867 
19868     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19869 
19870     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_HDR(p_worker_id);')) then
19871       return;
19872     end if;
19873 
19874     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19875 
19876     PJI_FM_PLAN_MAINT_PVT.POPULATE_RBS_HDR;
19877 
19878     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_HDR(p_worker_id);');
19879 
19880     commit;
19881 
19882   end POPULATE_RBS_HDR;
19883 
19884 
19885   -- -----------------------------------------------------
19886   -- procedure EXTRACT_PLAN_AMOUNTS_PRIRBS
19887   --
19888   --   History
19889   --   19-MAR-2004  SVERMETT  Created
19890   --
19891   -- Used solely for FP.M Upgrade
19892   --
19893   -- -----------------------------------------------------
19894   procedure EXTRACT_PLAN_AMOUNTS_PRIRBS (p_worker_id in number) is
19895 
19896     l_process         varchar2(30);
19897     l_extraction_type varchar2(30);
19898 
19899     l_return_status varchar2(255);
19900     l_msg_count     number;
19901     l_msg_data      varchar2(2000);
19902 
19903   begin
19904 
19905     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19906 
19907     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_AMOUNTS_PRIRBS(p_worker_id);')) then
19908       return;
19909     end if;
19910 
19911     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19912 
19913     PJI_FM_PLAN_MAINT_PVT.EXTRACT_PLAN_AMOUNTS_PRIRBS;
19914 
19915     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_AMOUNTS_PRIRBS(p_worker_id);');
19916 
19917     commit;
19918 
19919   end EXTRACT_PLAN_AMOUNTS_PRIRBS;
19920 
19921 
19922   -- -----------------------------------------------------
19923   -- procedure ROLLUP_FPR_RBS_T_SLICE
19924   --
19925   --   History
19926   --   19-MAR-2004  SVERMETT  Created
19927   --
19928   -- Used solely for FP.M Upgrade
19929   --
19930   -- -----------------------------------------------------
19931   procedure ROLLUP_FPR_RBS_T_SLICE (p_worker_id in number) is
19932 
19933     l_process         varchar2(30);
19934     l_extraction_type varchar2(30);
19935 
19936     l_return_status varchar2(255);
19937     l_msg_count     number;
19938     l_msg_data      varchar2(2000);
19939 
19940   begin
19941 
19942     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19943 
19944     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_T_SLICE(p_worker_id);')) then
19945       return;
19946     end if;
19947 
19948     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19949 
19950     PJI_FM_PLAN_MAINT_PVT.ROLLUP_FPR_RBS_T_SLICE;
19951 
19952     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_T_SLICE(p_worker_id);');
19953 
19954     commit;
19955 
19956   end ROLLUP_FPR_RBS_T_SLICE;
19957 
19958 
19959   -- -----------------------------------------------------
19960   -- procedure CREATE_FP_PA_PRI_ROLLUP
19961   --
19962   --   History
19963   --   19-MAR-2004  SVERMETT  Created
19964   --
19965   -- Used solely for FP.M Upgrade
19966   --
19967   -- -----------------------------------------------------
19968   procedure CREATE_FP_PA_PRI_ROLLUP (p_worker_id in number) is
19969 
19970     l_process         varchar2(30);
19971     l_extraction_type varchar2(30);
19972 
19973     l_return_status varchar2(255);
19974     l_msg_count     number;
19975     l_msg_data      varchar2(2000);
19976 
19977   begin
19978 
19979     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
19980 
19981     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_PA_PRI_ROLLUP(p_worker_id);')) then
19982       return;
19983     end if;
19984 
19985     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
19986 
19987     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_PA_PRI_ROLLUP;
19988 
19989     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_PA_PRI_ROLLUP(p_worker_id);');
19990 
19991     commit;
19992 
19993   end CREATE_FP_PA_PRI_ROLLUP;
19994 
19995 
19996   -- -----------------------------------------------------
19997   -- procedure CREATE_FP_GL_PRI_ROLLUP
19998   --
19999   --   History
20000   --   19-MAR-2004  SVERMETT  Created
20001   --
20002   -- Used solely for FP.M Upgrade
20003   --
20004   -- -----------------------------------------------------
20005   procedure CREATE_FP_GL_PRI_ROLLUP (p_worker_id in number) is
20006 
20007     l_process         varchar2(30);
20008     l_extraction_type varchar2(30);
20009 
20010     l_return_status varchar2(255);
20011     l_msg_count     number;
20012     l_msg_data      varchar2(2000);
20013 
20014   begin
20015 
20016     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20017 
20018     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_GL_PRI_ROLLUP(p_worker_id);')) then
20019       return;
20020     end if;
20021 
20022     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20023 
20024     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_GL_PRI_ROLLUP;
20025 
20026     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_GL_PRI_ROLLUP(p_worker_id);');
20027 
20028     commit;
20029 
20030   end CREATE_FP_GL_PRI_ROLLUP;
20031 
20032 
20033   -- -----------------------------------------------------
20034   -- procedure CREATE_FP_ALL_PRI_ROLLUP
20035   --
20036   --   History
20037   --   19-MAR-2004  SVERMETT  Created
20038   --
20039   -- Used solely for FP.M Upgrade
20040   --
20041   -- -----------------------------------------------------
20042   procedure CREATE_FP_ALL_PRI_ROLLUP (p_worker_id in number) is
20043 
20044     l_process         varchar2(30);
20045     l_extraction_type varchar2(30);
20046 
20047     l_return_status varchar2(255);
20048     l_msg_count     number;
20049     l_msg_data      varchar2(2000);
20050 
20051   begin
20052 
20053     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20054 
20055     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_ALL_PRI_ROLLUP(p_worker_id);')) then
20056       return;
20057     end if;
20058 
20059     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20060 
20061     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('G');
20062 
20063     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('P');
20064 
20065     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_ALL_PRI_ROLLUP(p_worker_id);');
20066 
20067     commit;
20068 
20069   end CREATE_FP_ALL_PRI_ROLLUP;
20070 
20071 
20072   -- -----------------------------------------------------
20073   -- procedure INSERT_INTO_FP_FACT
20074   --
20075   --   History
20076   --   19-MAR-2004  SVERMETT  Created
20077   --
20078   -- Used solely for FP.M Upgrade
20079   --
20080   -- -----------------------------------------------------
20081   procedure INSERT_INTO_FP_FACT (p_worker_id in number) is
20082 
20083     l_process         varchar2(30);
20084     l_extraction_type varchar2(30);
20085 
20086     l_return_status varchar2(255);
20087     l_msg_count     number;
20088     l_msg_data      varchar2(2000);
20089 
20090   begin
20091 
20092     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20093 
20094     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_INTO_FP_FACT(p_worker_id);')) then
20095       return;
20096     end if;
20097 
20098     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20099 
20100     PJI_FM_PLAN_MAINT_PVT.INSERT_INTO_FP_FACT;
20101 
20102     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_INTO_FP_FACT(p_worker_id);');
20103 
20104     commit;
20105 
20106   end INSERT_INTO_FP_FACT;
20107 
20108 
20109   -- -----------------------------------------------------
20110   -- procedure MARK_EXTRACTED_PLANS
20111   --
20112   --   History
20113   --   19-MAR-2004  SVERMETT  Created
20114   --
20115   -- Used solely for FP.M Upgrade
20116   --
20117   -- -----------------------------------------------------
20118   procedure MARK_EXTRACTED_PLANS (p_worker_id in number) is
20119 
20120     l_process         varchar2(30);
20121     l_extraction_type varchar2(30);
20122 
20123     l_return_status varchar2(255);
20124     l_msg_count     number;
20125     l_msg_data      varchar2(2000);
20126 
20127   begin
20128 
20129     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20130 
20131     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PLANS(p_worker_id);')) then
20132       return;
20133     end if;
20134 
20135     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20136 
20137     PJI_FM_PLAN_MAINT_PVT.MARK_EXTRACTED_PLANS('PRI');
20138 
20139     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PLANS(p_worker_id);');
20140 
20141     commit;
20142 
20143   end MARK_EXTRACTED_PLANS;
20144 
20145 
20146   procedure REMAP_RBS_TXN_ACCUM_HDRS (p_worker_id in number) is
20147 
20148     l_process         varchar2(30);
20149     l_extraction_type varchar2(30);
20150 
20151     l_return_status varchar2(255);
20152     l_msg_count     number;
20153     l_msg_data      varchar2(2000);
20154 
20155   begin
20156 
20157     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20158 
20159     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.REMAP_RBS_TXN_ACCUM_HDRS(p_worker_id);')) then
20160       return;
20161     end if;
20162 
20163     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20164     -- Extraction type is not needed for this step.
20165     -- Retaining it to maintain coding style as well as for potential future use.
20166 
20167     PJI_FM_XBS_ACCUM_UTILS.REMAP_RBS_TXN_ACCUM_HDRS (
20168           x_return_status => l_return_status
20169          ,x_msg_data      => l_msg_data
20170          ,x_msg_count     => l_msg_count );
20171 
20172     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.REMAP_RBS_TXN_ACCUM_HDRS(p_worker_id);');
20173 
20174     commit;
20175 
20176   end REMAP_RBS_TXN_ACCUM_HDRS ;
20177 
20178 
20179   procedure RETRIEVE_OVERRIDDEN_WP_ETC (p_worker_id in number) is
20180 
20181     l_process         varchar2(30);
20182     l_extraction_type varchar2(30);
20183 
20184     l_return_status varchar2(255);
20185     l_msg_count     number;
20186     l_msg_data      varchar2(2000);
20187 
20188   begin
20189 
20190     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20191 
20192     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.RETRIEVE_OVERRIDDEN_WP_ETC(p_worker_id);')) then
20193       return;
20194     end if;
20195 
20196     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20197     -- Extraction type is not needed for this step.
20198     -- Retaining it to maintain coding style as well as for potential future use.
20199 
20200     PJI_FM_PLAN_MAINT_PVT.RETRIEVE_OVERRIDDEN_WP_ETC;
20201 
20202     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.RETRIEVE_OVERRIDDEN_WP_ETC(p_worker_id);');
20203 
20204     commit;
20205 
20206   end RETRIEVE_OVERRIDDEN_WP_ETC ;
20207 
20208 
20209   procedure EXTRACT_PLAN_ETC_PRIRBS (p_worker_id in number) is
20210 
20211     l_process         varchar2(30);
20212     l_extraction_type varchar2(30);
20213 
20214     l_return_status varchar2(255);
20215     l_msg_count     number;
20216     l_msg_data      varchar2(2000);
20217 
20218   begin
20219 
20220     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20221 
20222     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_ETC_PRIRBS(p_worker_id);')) then
20223       return;
20224     end if;
20225 
20226     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20227     -- Extraction type is not needed for this step.
20228     -- Retaining it to maintain coding style as well as for potential future use.
20229 
20230     PJI_FM_PLAN_MAINT_PVT.EXTRACT_PLAN_ETC_PRIRBS(p_slice_type => 'SEC');
20231 
20232     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_ETC_PRIRBS(p_worker_id);');
20233 
20234     commit;
20235 
20236   end EXTRACT_PLAN_ETC_PRIRBS ;
20237 
20238 
20239   -- -----------------------------------------------------
20240   -- procedure CLEANUP
20241   --
20242   --   History
20243   --   19-MAR-2004  SVERMETT  Created
20244   --
20245   -- Internal PJP Summarization API.
20246   --
20247   -- -----------------------------------------------------
20248   procedure CLEANUP (p_worker_id in number default null) is
20249 
20250     l_process varchar2(30);
20251     l_schema  varchar2(30);
20252 
20253  /* Added for bug#11789673 , starts here */
20254     resource_busy EXCEPTION;
20255     PRAGMA EXCEPTION_INIT(resource_busy, -54);
20256     l_ctr NUMBER := 0;
20257     l_tab1  VARCHAR2(1) := 'N';
20258     l_tab2  VARCHAR2(1) := 'N';
20259     l_tab3  VARCHAR2(1) := 'N';
20260     l_tab4  VARCHAR2(1) := 'N';
20261     l_tab5  VARCHAR2(1) := 'N';
20262     l_tab6  VARCHAR2(1) := 'N';
20263     l_tab7  VARCHAR2(1) := 'N';
20264     l_tab8  VARCHAR2(1) := 'N';
20265     l_tab9  VARCHAR2(1) := 'N';
20266     l_tab10 VARCHAR2(1) := 'N';
20267     l_tab11 VARCHAR2(1) := 'N';
20268     l_tab12 VARCHAR2(1) := 'N';
20269     l_tab13 VARCHAR2(1) := 'N';
20270     l_tab14 VARCHAR2(1) := 'N';
20271     l_tab15 VARCHAR2(1) := 'N';
20272     l_tab16 VARCHAR2(1) := 'N';
20273     l_tab17 VARCHAR2(1) := 'N';
20274     l_tab18 VARCHAR2(1) := 'N';    -- Added for bug 13897252
20275     l_tab19 VARCHAR2(1) := 'N';    -- Added for bug 13897252
20276     l_debugdate VARCHAR2(20);
20277     l_pji_fp_aggr_pjp1_n1 dba_indexes.status%TYPE := 'VALID';
20278     /* Added for bug#11789673 , ends here */
20279 
20280   begin
20281 
20282     if (p_worker_id is not null) then
20283 
20284     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20285 
20286 /* 5755229 Because No step entry in the delete process FPM Upgrade
20287     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP(p_worker_id);')) then -- Bug#5171542
20288     return;
20289     end if;
20290 5755229  */
20291 
20292     l_schema := PJI_UTILS.GET_PJI_SCHEMA_NAME;
20293 
20294     /* Modified for bug#11789673 , starts here */
20295      FOR i IN 1..100 LOOP
20296          l_ctr := i;
20297          begin
20298            if l_tab1 = 'N' then
20299                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20300                                                 'PJI_PJP_RMAP_FPR',
20301                                                 'PARTITION',
20302                                                 'P' || p_worker_id);
20303                l_tab1 := 'Y';
20304            end if;
20305            if l_tab2 = 'N' then
20306                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20307                                                 'PJI_PJP_RMAP_ACR',
20308                                                 'PARTITION',
20309                                                 'P' || p_worker_id);
20310                l_tab2 := 'Y';
20311            end if;
20312            if l_tab3 = 'N' then
20313                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20314                                                 'PJI_FP_AGGR_PJP0',
20315                                                 'PARTITION',
20316                                                 'P' || p_worker_id);
20317                l_tab3 := 'Y';
20318            end if;
20319            if l_tab4 = 'N' then
20320                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20321                                                 'PJI_AC_AGGR_PJP0',
20322                                                 'PARTITION',
20323                                                 'P' || p_worker_id);
20324                l_tab4 := 'Y';
20325            end if;
20326            if l_tab5 = 'N' then
20327                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20328                                                 'PJI_FP_CUST_PJP0',
20329                                                 'PARTITION',
20330                                                 'P' || p_worker_id);
20331                l_tab5 := 'Y';
20332            end if;
20333            if l_tab6 = 'N' then
20334 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20335                                                 'PJI_AC_CUST_PJP0',
20336                                                 'PARTITION',
20337                                                 'P' || p_worker_id);
20338                l_tab6 := 'Y';
20339            end if;
20340            if l_tab7 = 'N' then
20341 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20342                                                 'PJI_FM_EXTR_PLNVER4',
20343                                                 'PARTITION',
20344                                                 'P' || p_worker_id);
20345               l_tab7 := 'Y';
20346            end if;
20347            if l_tab8 = 'N' then
20348 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20349                                                 'PJI_FP_AGGR_PJP1',
20350                                                 'PARTITION',
20351                                                 'P' || p_worker_id);
20352               l_tab8 := 'Y';
20353            end if;
20354            if l_tab9 = 'N' then
20355 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20356                                                 'PJI_AC_AGGR_PJP1',
20357                                                 'PARTITION',
20358                                                 'P' || p_worker_id);
20359               l_tab9 := 'Y';
20360            end if;
20361            if l_tab10 = 'N' then
20362                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20363                                                 'PJI_FP_AGGR_XBS',
20364                                                 'PARTITION',
20365                                                 'P' || p_worker_id);
20366               l_tab10 := 'Y';
20367            end if;
20368            if l_tab11 = 'N' then
20369                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20370                                                 'PJI_FP_AGGR_RBS',
20371                                                 'PARTITION',
20372                                                 'P' || p_worker_id);
20373               l_tab11 := 'Y';
20374            end if;
20375            if l_tab12 = 'N' then
20376                PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20377                                                 'PJI_XBS_DENORM_DELTA',
20378                                                 'PARTITION',
20379                                                 'P' || p_worker_id);
20380               l_tab12 := 'Y';
20381            end if;
20382            if l_tab13 = 'N' then
20383 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20384                                                 'PJI_RBS_DENORM_DELTA',
20385                                                 'PARTITION',
20386                                                 'P' || p_worker_id);
20387               l_tab13 := 'Y';
20388            end if;
20389            if l_tab14 = 'N' then
20390 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20391                                                 'PJI_FP_RMAP_FPR',
20392                                                 'PARTITION',
20393                                                 'P' || p_worker_id);
20394               l_tab14 := 'Y';
20395            end if;
20396            if l_tab15 = 'N' then
20397 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20398                                                 'PJI_AC_RMAP_ACR',
20399                                                 'PARTITION',
20400                                                 'P' || p_worker_id);
20401               l_tab15 := 'Y';
20402            end if;
20403            if l_tab16 = 'N' then
20404 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20405                                                 'PJI_PA_PROJ_EVENTS_LOG',
20406                                                 'PARTITION',
20407                                                 'P' || p_worker_id);
20408               l_tab16 := 'Y';
20409            end if;
20410            if l_tab17 = 'N' then
20411                 select status into l_pji_fp_aggr_pjp1_n1 from sys.dba_indexes
20412 		 where index_name = 'PJI_FP_AGGR_PJP1_N1';
20413                 if l_pji_fp_aggr_pjp1_n1 <> 'VALID' then
20414 		   /* Added for bug 9676993 */
20415 		   execute immediate 'alter index '||l_schema||'.'||'PJI_FP_AGGR_PJP1_N1  rebuild';
20416 		   /* Added for bug 9676993 */
20417                 end if;
20418               l_tab17 := 'Y';
20419            end if;
20420           /* Added for bug 13897252 starts */
20421            if l_tab18 = 'N' then
20422 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20423                                                 'PJI_FP_AGGR_PJP2',
20424                                                 'PARTITION',
20425                                                 'P' || p_worker_id);
20426               l_tab18 := 'Y';
20427            end if;
20428            if l_tab19 = 'N' then
20429 	       PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
20430                                                 'PJI_MERGE_HELPER',
20431                                                 'NORMAL',
20432                                                 null);
20433               l_tab19 := 'Y';
20434            end if;
20435           /* Added for bug 13897252 ends */
20436 
20437            if SQLCODE = 0 then
20438                   exit;
20439            end if;
20440          exception
20441            when resource_busy then
20442 	      null;
20443            end;
20444         DBMS_LOCK.SLEEP(60);
20445      END LOOP;
20446     /* Modified for bug#11789673 , ends here */
20447 
20448     /* Added for bug 9736812  */
20449     /* execute immediate 'alter index '||l_schema||'.'||'PJI_FP_AGGR_PJP1_N1  rebuild'; */  /* commented for bug#11789673 */
20450     /* Added for bug 9736812  */
20451 
20452     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP(p_worker_id);'); -- Bug#5171542
20453     -- commented below bcoz the global index is modified to local for bug15983044
20454     -- execute immediate 'alter index '||l_schema||'.'||'PJI_PA_PROJ_EVENTS_LOG_N1 rebuild';        /* Added for bug 9840828 */
20455     commit;
20456 
20457     else -- online mode
20458 
20459       delete from PJI_XBS_DENORM_DELTA_T;
20460 
20461       delete from PJI_FP_AGGR_PJP1_T;
20462 
20463       delete from PJI_AC_AGGR_PJP1_T;
20464 
20465     end if;
20466 
20467   end CLEANUP;
20468 -- bug 6520936
20469 Procedure MERGE_INTO_FP_FACTS (p_worker_id in number) is
20470 
20471     l_process         varchar2(30);
20472     l_extraction_type varchar2(30);
20473 
20474     l_return_status   varchar2(255);
20475     l_msg_count       number;
20476     l_msg_data        varchar2(2000);
20477 
20478   begin
20479 
20480     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
20481 
20482     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MERGE_INTO_FP_FACT(p_worker_id);')) then
20483       return;
20484     end if;
20485 
20486     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
20487 
20488     PJI_FM_PLAN_MAINT_PVT.MERGE_INTO_FP_FACTS;
20489 
20490     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MERGE_INTO_FP_FACT(p_worker_id);');
20491 
20492     commit;
20493 
20494   end MERGE_INTO_FP_FACTS;
20495 -- bug 6520936
20496 
20497 
20498 end PJI_PJP_SUM_ROLLUP;