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.75.12010000.5 2008/12/11 10:03:47 vgovvala 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   -- -----------------------------------------------------
22   -- procedure POPULATE_TIME_DIMENSION
23   --
24   --   History
25   --   19-MAR-2004  SVERMETT  Created
26   --
27   -- Internal PJP Summarization API.
28   --
29   -- Called by RBS program
30   --
31   -- -----------------------------------------------------
32   procedure POPULATE_TIME_DIMENSION (p_worker_id in number) is
33 
34     l_process varchar2(30);
35 
36     l_return_status varchar2(255);
37     l_msg_count     number;
38     l_msg_data      varchar2(2000);
39 
40   begin
41 
42     l_process := PJI_PJP_SUM_MAIN.g_process || p_worker_id;
43 
44     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_TIME_DIMENSION(p_worker_id);')) then
45       return;
46     end if;
47 
48     PJI_TIME_C.LOAD(null, null, l_return_status, l_msg_count, l_msg_data);
49 
50     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_TIME_DIMENSION(p_worker_id);');
51 
52     commit;
53 
54   end POPULATE_TIME_DIMENSION;
55 
56 
57   -- -----------------------------------------------------
58   -- procedure CREATE_EVENTS_SNAPSHOT
59   --
60   --   History
61   --   19-MAR-2004  SVERMETT  Created
62   --
63   -- Internal PJP Summarization API.
64   --
65   -- Called by RBS program
66   --
67   -- -----------------------------------------------------
68   procedure CREATE_EVENTS_SNAPSHOT (p_worker_id in number) is
69 
70     cursor events (p_worker_id in number) is
71     select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
72       distinct
73       log.ROWID LOG_ROWID,
74       log.EVENT_TYPE,
75       log.EVENT_ID,
76       log.EVENT_OBJECT,
77       log.OPERATION_TYPE,
78       log.STATUS,
79       log.ATTRIBUTE_CATEGORY,
80       log.ATTRIBUTE1,
81       to_char(decode(log.EVENT_TYPE,
82                      'RBS_PRG',   ver.RBS_HEADER_ID,
83                      'RBS_ASSOC', ver.RBS_HEADER_ID,
84                                   log.ATTRIBUTE2)) ATTRIBUTE2,
85       log.ATTRIBUTE3,
86       log.ATTRIBUTE4,
87       log.ATTRIBUTE5,
88       log.ATTRIBUTE6,
89       log.ATTRIBUTE7,
90       log.ATTRIBUTE8,
91       log.ATTRIBUTE9,
92       log.ATTRIBUTE10,
93       log.ATTRIBUTE11,
94       log.ATTRIBUTE12,
95       log.ATTRIBUTE13,
96       log.ATTRIBUTE14,
97       log.ATTRIBUTE15,
98       log.ATTRIBUTE16,
99       log.ATTRIBUTE17,
100       log.ATTRIBUTE18,
101       log.ATTRIBUTE19,
102       log.ATTRIBUTE20
103     from
104       PJI_PJP_PROJ_BATCH_MAP map,
105       PA_PJI_PROJ_EVENTS_LOG log,
106       PA_RBS_VERSIONS_B      ver
107     where
108       map.WORKER_ID    =  p_worker_id and
109       log.EVENT_TYPE   in (-- 'WBS_CHANGE',          -- disable bulk processing
110                            -- 'WBS_PUBLISH',         -- of WBS events
111                            'RBS_ASSOC',
112                            'RBS_PRG') and
113       log.ATTRIBUTE1   = map.PROJECT_ID and
114       log.EVENT_OBJECT = ver.RBS_VERSION_ID (+)
115     union all
116     select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
117       distinct
118       log.ROWID LOG_ROWID,
119       log.EVENT_TYPE,
120       log.EVENT_ID,
121       log.EVENT_OBJECT,
122       log.OPERATION_TYPE,
123       log.STATUS,
124       log.ATTRIBUTE_CATEGORY,
125       log.ATTRIBUTE1,
126       log.ATTRIBUTE2,
127       log.ATTRIBUTE3,
128       log.ATTRIBUTE4,
129       log.ATTRIBUTE5,
130       log.ATTRIBUTE6,
131       log.ATTRIBUTE7,
132       log.ATTRIBUTE8,
133       log.ATTRIBUTE9,
134       log.ATTRIBUTE10,
135       log.ATTRIBUTE11,
136       log.ATTRIBUTE12,
137       log.ATTRIBUTE13,
138       log.ATTRIBUTE14,
139       log.ATTRIBUTE15,
140       log.ATTRIBUTE16,
141       log.ATTRIBUTE17,
142       log.ATTRIBUTE18,
143       log.ATTRIBUTE19,
144       log.ATTRIBUTE20
145     from
146       PJI_PJP_PROJ_BATCH_MAP map,
147       PA_PJI_PROJ_EVENTS_LOG log
148     where
149       map.WORKER_ID    = p_worker_id  and
150       log.EVENT_TYPE   = 'PRG_CHANGE' and
151       log.EVENT_OBJECT = -1           and
152       log.ATTRIBUTE1   = map.PROJECT_ID;
153 
154     cursor prg_change_events (p_worker_id in number) is
155     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
156       log.ROWID LOG_ROWID,
157       log.EVENT_TYPE,
158       log.EVENT_ID,
159       log.EVENT_OBJECT,
160       log.OPERATION_TYPE,
161       log.STATUS,
162       log.ATTRIBUTE_CATEGORY,
163       log.ATTRIBUTE1,
164       log.ATTRIBUTE2,
165       log.ATTRIBUTE3,
166       log.ATTRIBUTE4,
167       log.ATTRIBUTE5,
168       log.ATTRIBUTE6,
169       log.ATTRIBUTE7,
170       log.ATTRIBUTE8,
171       log.ATTRIBUTE9,
172       log.ATTRIBUTE10,
173       log.ATTRIBUTE11,
174       log.ATTRIBUTE12,
175       log.ATTRIBUTE13,
176       log.ATTRIBUTE14,
177       log.ATTRIBUTE15,
178       log.ATTRIBUTE16,
179       log.ATTRIBUTE17,
180       log.ATTRIBUTE18,
181       log.ATTRIBUTE19,
182       log.ATTRIBUTE20
183     from
184       PA_PJI_PROJ_EVENTS_LOG log,
185       (
186         select /*+ ordered index(ver PA_PROJ_ELEMENT_VERSIONS_N3) */
187           distinct
188           ver.PRG_GROUP
189         from
190           PJI_PJP_PROJ_BATCH_MAP map,
191           PA_PROJ_ELEMENT_VERSIONS ver
192         where
193           map.WORKER_ID = p_worker_id and
194           map.PROJECT_ID = ver.PROJECT_ID and
195           ver.PRG_GROUP is not null
196       ) map
197     where
198       log.EVENT_TYPE   =  'PRG_CHANGE' and
199       log.EVENT_OBJECT <> -1           and
200       map.PRG_GROUP    in (log.EVENT_OBJECT, log.ATTRIBUTE1);
201 
202     cursor rbs_push_events (p_worker_id in number,
203                             p_rbs_header_id in number) is
204     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
205       distinct
206       log.ROWID                             LOG_ROWID,
207       log.EVENT_TYPE,
208       log.EVENT_ID,
209       log.EVENT_OBJECT,
210       log.OPERATION_TYPE,
211       log.STATUS,
212       log.ATTRIBUTE_CATEGORY,
213       log.ATTRIBUTE1,
214       nvl(log.ATTRIBUTE2, log.EVENT_OBJECT) ATTRIBUTE2,
215       log.ATTRIBUTE3,
216       log.ATTRIBUTE4,
217       log.ATTRIBUTE5,
218       log.ATTRIBUTE6,
219       log.ATTRIBUTE7,
220       log.ATTRIBUTE8,
221       log.ATTRIBUTE9,
222       log.ATTRIBUTE10,
223       log.ATTRIBUTE11,
224       log.ATTRIBUTE12,
225       log.ATTRIBUTE13,
226       log.ATTRIBUTE14,
227       log.ATTRIBUTE15,
228       'N'                                   ATTRIBUTE16, -- project event flag
229       log.ATTRIBUTE17,                                   -- chain identifier
230       log.ATTRIBUTE18,                                   -- push chain flag
231       log.ATTRIBUTE19,                                   -- project id
232       ver.RBS_HEADER_ID                     ATTRIBUTE20  -- rbs header
233     from
234       PA_PJI_PROJ_EVENTS_LOG log,
235       (
236       select
237         distinct
238         asg.RBS_HEADER_ID,
239         asg.RBS_VERSION_ID
240       from
241         PJI_PJP_PROJ_BATCH_MAP map,
242         PA_RBS_PRJ_ASSIGNMENTS asg
243       where
244         map.WORKER_ID     = p_worker_id and
245         asg.PROJECT_ID    = map.PROJECT_ID and
246         asg.RBS_HEADER_ID = nvl(p_rbs_header_id,
247                                 asg.RBS_HEADER_ID)
248       ) ver
249     where
250       log.EVENT_TYPE = 'RBS_PUSH' and
251       ver.RBS_VERSION_ID in (log.EVENT_OBJECT, log.ATTRIBUTE2);
252 
253     cursor rbs_delete_events (p_worker_id in number,
254                               p_rbs_header_id in number) is
255     select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
256       distinct
257       log.ROWID LOG_ROWID,
258       log.EVENT_TYPE,
259       log.EVENT_ID,
260       log.EVENT_OBJECT,
261       log.OPERATION_TYPE,
262       log.STATUS,
263       log.ATTRIBUTE_CATEGORY,
264       log.ATTRIBUTE1,
265       log.ATTRIBUTE2,
266       log.ATTRIBUTE3,
267       log.ATTRIBUTE4,
268       log.ATTRIBUTE5,
269       log.ATTRIBUTE6,
270       log.ATTRIBUTE7,
271       log.ATTRIBUTE8,
272       log.ATTRIBUTE9,
273       log.ATTRIBUTE10,
274       log.ATTRIBUTE11,
275       log.ATTRIBUTE12,
276       log.ATTRIBUTE13,
277       log.ATTRIBUTE14,
278       log.ATTRIBUTE15,
279       log.ATTRIBUTE16,
280       log.ATTRIBUTE17,
281       log.ATTRIBUTE18,
282       log.ATTRIBUTE19,
283       log.ATTRIBUTE20
284     from
285       PJI_PJP_PROJ_BATCH_MAP map,
286       PA_RBS_PRJ_ASSIGNMENTS asg,
287       PA_PJI_PROJ_EVENTS_LOG log
288     where
289       map.WORKER_ID     = p_worker_id            and
290       asg.PROJECT_ID    = map.PROJECT_ID         and
291       asg.RBS_HEADER_ID = nvl(p_rbs_header_id,
292                               asg.RBS_HEADER_ID) and
293       log.EVENT_TYPE    = 'RBS_DELETE'           and
294       log.EVENT_OBJECT  = asg.RBS_VERSION_ID;
295 
296     l_process           varchar2(30);
297     l_extraction_type   varchar2(30);
298     l_rbs_header_id     number;
299     l_chain_flag        varchar2(150);
300     l_last_rbs_link     number;
301 
302     l_last_update_date  date;
303     l_last_updated_by   number;
304     l_creation_date     date;
305     l_created_by        number;
306     l_last_update_login number;
307 
308   begin
309 
310     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
311 
312     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_EVENTS_SNAPSHOT(p_worker_id);')) then
313       return;
314     end if;
315 
316     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
317 
318     l_last_update_date  := sysdate;
319     l_last_updated_by   := FND_GLOBAL.USER_ID;
320     l_creation_date     := sysdate;
321     l_created_by        := FND_GLOBAL.USER_ID;
322     l_last_update_login := FND_GLOBAL.LOGIN_ID;
323 
324     if (l_extraction_type = 'FULL') then
325 
326       insert into PJI_PA_PROJ_EVENTS_LOG
327       (
328         WORKER_ID,
329         LOG_ROWID,
330         EVENT_TYPE,
331         EVENT_ID,
332         EVENT_OBJECT,
333         OPERATION_TYPE,
334         STATUS,
335         ATTRIBUTE_CATEGORY,
336         ATTRIBUTE1,
337         ATTRIBUTE2,
338         ATTRIBUTE3,
339         ATTRIBUTE4,
340         ATTRIBUTE5,
341         ATTRIBUTE6,
342         ATTRIBUTE7,
343         ATTRIBUTE8,
344         ATTRIBUTE9,
345         ATTRIBUTE10,
346         ATTRIBUTE11,
347         ATTRIBUTE12,
348         ATTRIBUTE13,
349         ATTRIBUTE14,
350         ATTRIBUTE15,
351         ATTRIBUTE16,
352         ATTRIBUTE17,
353         ATTRIBUTE18,
354         ATTRIBUTE19,
355         ATTRIBUTE20
356       )
357       select /*+ ordered index(log PA_PJI_PROJ_EVENTS_LOG_N1)
358                          use_hash(log)
359                          use_hash(map) */
360         p_worker_id,
361         log.ROWID,
362         log.EVENT_TYPE,
363         log.EVENT_ID,
364         log.EVENT_OBJECT,
365         log.OPERATION_TYPE,
366         log.STATUS,
367         log.ATTRIBUTE_CATEGORY,
368         log.ATTRIBUTE1,
369         log.ATTRIBUTE2,
370         log.ATTRIBUTE3,
371         log.ATTRIBUTE4,
372         log.ATTRIBUTE5,
373         log.ATTRIBUTE6,
374         log.ATTRIBUTE7,
375         log.ATTRIBUTE8,
376         log.ATTRIBUTE9,
377         log.ATTRIBUTE10,
378         log.ATTRIBUTE11,
379         log.ATTRIBUTE12,
380         log.ATTRIBUTE13,
381         log.ATTRIBUTE14,
382         log.ATTRIBUTE15,
383         log.ATTRIBUTE16,
384         log.ATTRIBUTE17,
385         log.ATTRIBUTE18,
386         log.ATTRIBUTE19,
387         log.ATTRIBUTE20
388       from
389         PA_PJI_PROJ_EVENTS_LOG log,
390         PJI_PJP_PROJ_BATCH_MAP map
391       where
392         map.WORKER_ID    = p_worker_id    and
393         log.EVENT_TYPE   = 'PRG_CHANGE'   and
394         log.EVENT_OBJECT = -1             and
395         log.ATTRIBUTE1   = map.PROJECT_ID;
396 
397       delete
398       from   PA_PJI_PROJ_EVENTS_LOG
399       where  ROWID in (select LOG_ROWID
400                        from   PJI_PA_PROJ_EVENTS_LOG
401                        where  WORKER_ID = p_worker_id);
402 
403     elsif (l_extraction_type = 'INCREMENTAL') then
404 
405       for c in events(p_worker_id) loop
406 
407         insert into PJI_PA_PROJ_EVENTS_LOG
408         (
409           WORKER_ID,
410           LOG_ROWID,
411           EVENT_TYPE,
412           EVENT_ID,
413           EVENT_OBJECT,
414           OPERATION_TYPE,
415           STATUS,
416           ATTRIBUTE_CATEGORY,
417           ATTRIBUTE1,
418           ATTRIBUTE2,
419           ATTRIBUTE3,
420           ATTRIBUTE4,
421           ATTRIBUTE5,
422           ATTRIBUTE6,
423           ATTRIBUTE7,
424           ATTRIBUTE8,
425           ATTRIBUTE9,
426           ATTRIBUTE10,
427           ATTRIBUTE11,
428           ATTRIBUTE12,
429           ATTRIBUTE13,
430           ATTRIBUTE14,
431           ATTRIBUTE15,
432           ATTRIBUTE16,
433           ATTRIBUTE17,
434           ATTRIBUTE18,
435           ATTRIBUTE19,
436           ATTRIBUTE20
437         )
438         values
439         (
440           p_worker_id,
441           c.LOG_ROWID,
442           c.EVENT_TYPE,
443           c.EVENT_ID,
444           c.EVENT_OBJECT,
445           c.OPERATION_TYPE,
446           c.STATUS,
447           c.ATTRIBUTE_CATEGORY,
448           c.ATTRIBUTE1,
449           c.ATTRIBUTE2,
450           c.ATTRIBUTE3,
451           c.ATTRIBUTE4,
452           c.ATTRIBUTE5,
453           c.ATTRIBUTE6,
454           c.ATTRIBUTE7,
455           c.ATTRIBUTE8,
456           c.ATTRIBUTE9,
457           c.ATTRIBUTE10,
458           c.ATTRIBUTE11,
459           c.ATTRIBUTE12,
460           c.ATTRIBUTE13,
461           c.ATTRIBUTE14,
462           c.ATTRIBUTE15,
463           c.ATTRIBUTE16,
464           c.ATTRIBUTE17,
465           c.ATTRIBUTE18,
466           c.ATTRIBUTE19,
467           c.ATTRIBUTE20
468         );
469 
470         delete
471         from   PA_PJI_PROJ_EVENTS_LOG
472         where  ROWID = c.LOG_ROWID;
473 
474       end loop;
475 
476       for c in prg_change_events(p_worker_id) loop
477 
478         insert into PJI_PA_PROJ_EVENTS_LOG
479         (
480           WORKER_ID,
481           LOG_ROWID,
482           EVENT_TYPE,
483           EVENT_ID,
484           EVENT_OBJECT,
485           OPERATION_TYPE,
486           STATUS,
487           ATTRIBUTE_CATEGORY,
488           ATTRIBUTE1,
489           ATTRIBUTE2,
490           ATTRIBUTE3,
491           ATTRIBUTE4,
492           ATTRIBUTE5,
493           ATTRIBUTE6,
494           ATTRIBUTE7,
495           ATTRIBUTE8,
496           ATTRIBUTE9,
497           ATTRIBUTE10,
498           ATTRIBUTE11,
499           ATTRIBUTE12,
500           ATTRIBUTE13,
501           ATTRIBUTE14,
502           ATTRIBUTE15,
503           ATTRIBUTE16,
504           ATTRIBUTE17,
505           ATTRIBUTE18,
506           ATTRIBUTE19,
507           ATTRIBUTE20
508         )
509         values
510         (
511           p_worker_id,
512           c.LOG_ROWID,
513           c.EVENT_TYPE,
514           c.EVENT_ID,
515           c.EVENT_OBJECT,
516           c.OPERATION_TYPE,
517           c.STATUS,
518           c.ATTRIBUTE_CATEGORY,
519           c.ATTRIBUTE1,
520           c.ATTRIBUTE2,
521           c.ATTRIBUTE3,
522           c.ATTRIBUTE4,
523           c.ATTRIBUTE5,
524           c.ATTRIBUTE6,
525           c.ATTRIBUTE7,
526           c.ATTRIBUTE8,
527           c.ATTRIBUTE9,
528           c.ATTRIBUTE10,
529           c.ATTRIBUTE11,
530           c.ATTRIBUTE12,
531           c.ATTRIBUTE13,
532           c.ATTRIBUTE14,
533           c.ATTRIBUTE15,
534           c.ATTRIBUTE16,
535           c.ATTRIBUTE17,
536           c.ATTRIBUTE18,
537           c.ATTRIBUTE19,
538           c.ATTRIBUTE20
539         );
540 
541         delete
542         from   PA_PJI_PROJ_EVENTS_LOG
543         where  ROWID = c.LOG_ROWID;
544 
545       end loop;
546 
547       -- RBS_PRG events override RBS_ASSOC events
548 
549       delete
550       from   PJI_PA_PROJ_EVENTS_LOG log1
551       where  log1.WORKER_ID = p_worker_id and
552              log1.EVENT_TYPE = 'RBS_ASSOC' and
553              exists (select 1
554                      from   PJI_PA_PROJ_EVENTS_LOG log2
555                      where  log2.WORKER_ID    = p_worker_id       and
556                             log2.EVENT_TYPE   = 'RBS_PRG'         and
557                             log2.EVENT_OBJECT = log1.EVENT_OBJECT and
558                             log2.ATTRIBUTE1   = log1.ATTRIBUTE1);
559 
560       -- convert RBS_PRG events into RBS_ASSOC events
561 
562       for c in (select distinct
563                        EVENT_OBJECT RBS_VERSION_ID,
564                        ATTRIBUTE1   PROJECT_ID,
565                        ATTRIBUTE2   RBS_HEADER_ID
566                 from   PJI_PA_PROJ_EVENTS_LOG
567                 where  WORKER_ID = p_worker_id and
568                        EVENT_TYPE = 'RBS_PRG') loop
569 
570         insert into PJI_PA_PROJ_EVENTS_LOG
571         (
572           WORKER_ID,
573           LOG_ROWID,
574           EVENT_TYPE,
575           EVENT_ID,
576           EVENT_OBJECT,
577           OPERATION_TYPE,
578           STATUS,
579           ATTRIBUTE_CATEGORY,
580           ATTRIBUTE1,
581           ATTRIBUTE2,
582           ATTRIBUTE3,
583           ATTRIBUTE4,
584           ATTRIBUTE5,
585           ATTRIBUTE6,
586           ATTRIBUTE7,
587           ATTRIBUTE8,
588           ATTRIBUTE9,
589           ATTRIBUTE10,
590           ATTRIBUTE11,
591           ATTRIBUTE12,
592           ATTRIBUTE13,
593           ATTRIBUTE14,
594           ATTRIBUTE15,
595           ATTRIBUTE16,
596           ATTRIBUTE17,
597           ATTRIBUTE18,
598           ATTRIBUTE19,
599           ATTRIBUTE20
600         )
601         select
602           distinct
603           p_worker_id                      WORKER_ID,
604           null                             LOG_ROWID,
605           'RBS_ASSOC'                      EVENT_TYPE,
606           -1                               EVENT_ID,
607           c.RBS_VERSION_ID                 EVENT_OBJECT,
608           'I'                              OPERATION_TYPE,
609           'X'                              STATUS,
610           null                             ATTRIBUTE_CATEGORY,
611           emt.PROJECT_ID                   ATTRIBUTE1,
612           c.RBS_HEADER_ID                  ATTRIBUTE2,
613           null                             ATTRIBUTE3,
614           null                             ATTRIBUTE4,
615           null                             ATTRIBUTE5,
616           null                             ATTRIBUTE6,
617           null                             ATTRIBUTE7,
618           null                             ATTRIBUTE8,
619           null                             ATTRIBUTE9,
620           null                             ATTRIBUTE10,
621           null                             ATTRIBUTE11,
622           null                             ATTRIBUTE12,
623           null                             ATTRIBUTE13,
624           null                             ATTRIBUTE14,
625           null                             ATTRIBUTE15,
626           null                             ATTRIBUTE16,
627           c.PROJECT_ID                     ATTRIBUTE17, -- program's PROJECT_ID
628           decode(prg.SUB_EMT_ID,
629                  prg.SUB_ROLLUP_ID, 'Y',
630                                     'N')   ATTRIBUTE18, -- PROG_REP_USAGE_FLAG
631           decode(rbs_hdr.PROJECT_ID,
632                  null, null,
633                        'MARK_AS_PROG_REP') ATTRIBUTE19, -- update header only
634           'CONVERTED_RBS_PRG_EVENT'        ATTRIBUTE20  -- flg converted events
635         from
636           PA_XBS_DENORM          prg,
637           PA_PROJ_ELEMENTS       emt,
638           PJI_PJP_RBS_HEADER     rbs_hdr,
639           PJI_PA_PROJ_EVENTS_LOG log
640         where
641           prg.SUP_PROJECT_ID  = c.PROJECT_ID                and
642           (prg.SUB_EMT_ID = prg.SUB_ROLLUP_ID or
643            prg.SUP_EMT_ID <> prg.SUB_EMT_ID)                and
644           emt.PROJ_ELEMENT_ID = prg.SUB_EMT_ID              and
645           emt.PROJECT_ID      = rbs_hdr.PROJECT_ID      (+) and
646           -1                  = rbs_hdr.PLAN_VERSION_ID (+) and
647           c.RBS_VERSION_ID    = rbs_hdr.RBS_VERSION_ID  (+) and
648           (rbs_hdr.PROJECT_ID is null or
649            prg.SUB_EMT_ID = prg.SUB_ROLLUP_ID)              and
650           p_worker_id         = log.WORKER_ID           (+) and
651           'RBS_ASSOC'         = log.EVENT_TYPE          (+) and
652           c.RBS_VERSION_ID    = log.EVENT_OBJECT        (+) and
653           emt.PROJECT_ID      = log.ATTRIBUTE1          (+) and
654           log.WORKER_ID       is null;
655 
656       end loop;
657 
658       delete
659       from   PJI_PA_PROJ_EVENTS_LOG
660       where  WORKER_ID = p_worker_id and
661              EVENT_TYPE = 'RBS_PRG';
662 
663     elsif (l_extraction_type = 'PARTIAL') then
664 
665       null; -- do not process any events during partial refresh
666 
667     elsif (l_extraction_type = 'RBS') then
668 
669       l_rbs_header_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
670                          (l_process, 'RBS_HEADER_ID');
671 
672       if (l_rbs_header_id = -1) then
673         l_rbs_header_id := null;
674       end if;
675 
676       --ensure all RBS_ASSOC and RBS_PRG events point to the latest version
677 
678       update PA_PJI_PROJ_EVENTS_LOG log
679       set    log.EVENT_OBJECT =
680              (
681              select
682                ver1.RBS_VERSION_ID
683              from
684                (
685                select
686                  ver.RBS_VERSION_ID
687                from
688                  PA_RBS_VERSIONS_B ver
689                where
690                  ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
691                                          ver.RBS_HEADER_ID) and
692                  ver.STATUS_CODE = 'FROZEN'
693                order by
694                  ver.VERSION_NUMBER desc
695                ) ver1
696              where
697                ROWNUM = 1
698              )
699       where  log.EVENT_TYPE in ('RBS_ASSOC', 'RBS_PRG') and
700              log.EVENT_OBJECT in
701              (
702              select
703                ver.RBS_VERSION_ID
704              from
705                PA_RBS_VERSIONS_B ver
706              where
707                ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
708                                        ver.RBS_HEADER_ID)
709              ) and
710              log.EVENT_OBJECT not in
711              (
712              select
713                ver1.RBS_VERSION_ID
714              from
715                (
716                select
717                  ver.RBS_VERSION_ID
718                from
719                  PA_RBS_VERSIONS_B ver
720                where
721                  ver.RBS_HEADER_ID = nvl(l_rbs_header_id,
722                                          ver.RBS_HEADER_ID) and
723                  ver.STATUS_CODE = 'FROZEN'
724                order by
725                  ver.VERSION_NUMBER desc
726                ) ver1
727              where
728                ROWNUM = 1
729              );
730 
731       -- get RBS_PUSH events
732 
733       for c in rbs_push_events(p_worker_id, l_rbs_header_id) loop
734 
735         if (c.ATTRIBUTE2 is not null) then
736 
737           insert into PJI_PA_PROJ_EVENTS_LOG
738           (
739             WORKER_ID,
740             LOG_ROWID,
741             EVENT_TYPE,
742             EVENT_ID,
743             EVENT_OBJECT,
744             OPERATION_TYPE,
745             STATUS,
746             ATTRIBUTE_CATEGORY,
747             ATTRIBUTE1,
748             ATTRIBUTE2,
749             ATTRIBUTE3,
750             ATTRIBUTE4,
751             ATTRIBUTE5,
752             ATTRIBUTE6,
753             ATTRIBUTE7,
754             ATTRIBUTE8,
755             ATTRIBUTE9,
756             ATTRIBUTE10,
757             ATTRIBUTE11,
758             ATTRIBUTE12,
759             ATTRIBUTE13,
760             ATTRIBUTE14,
761             ATTRIBUTE15,
762             ATTRIBUTE16,
763             ATTRIBUTE17,
764             ATTRIBUTE18,
765             ATTRIBUTE19,
766             ATTRIBUTE20
767           )
768           values
769           (
770             p_worker_id,
771             c.LOG_ROWID,
772             c.EVENT_TYPE,
773             c.EVENT_ID,
774             c.EVENT_OBJECT,
775             c.OPERATION_TYPE,
776             c.STATUS,
777             c.ATTRIBUTE_CATEGORY,
778             c.ATTRIBUTE1,
779             c.ATTRIBUTE2,
780             c.ATTRIBUTE3,
781             c.ATTRIBUTE4,
782             c.ATTRIBUTE5,
783             c.ATTRIBUTE6,
784             c.ATTRIBUTE7,
785             c.ATTRIBUTE8,
786             c.ATTRIBUTE9,
787             c.ATTRIBUTE10,
788             c.ATTRIBUTE11,
789             c.ATTRIBUTE12,
790             c.ATTRIBUTE13,
791             c.ATTRIBUTE14,
792             c.ATTRIBUTE15,
793             c.ATTRIBUTE16,
794             c.ATTRIBUTE17,
795             c.ATTRIBUTE18,
796             c.ATTRIBUTE19,
797             c.ATTRIBUTE20
798           );
799 
800         end if;
801 
802         delete
803         from   PA_PJI_PROJ_EVENTS_LOG
804         where  ROWID = c.LOG_ROWID;
805 
806       end loop;
807 
808       -- get RBS_DELETE events
809 
810       for c in rbs_delete_events(p_worker_id, l_rbs_header_id) loop
811 
812         insert into PJI_PA_PROJ_EVENTS_LOG
813         (
814           WORKER_ID,
815           LOG_ROWID,
816           EVENT_TYPE,
817           EVENT_ID,
818           EVENT_OBJECT,
819           OPERATION_TYPE,
820           STATUS,
821           ATTRIBUTE_CATEGORY,
822           ATTRIBUTE1,
823           ATTRIBUTE2,
824           ATTRIBUTE3,
825           ATTRIBUTE4,
826           ATTRIBUTE5,
827           ATTRIBUTE6,
828           ATTRIBUTE7,
829           ATTRIBUTE8,
830           ATTRIBUTE9,
831           ATTRIBUTE10,
832           ATTRIBUTE11,
833           ATTRIBUTE12,
834           ATTRIBUTE13,
835           ATTRIBUTE14,
836           ATTRIBUTE15,
837           ATTRIBUTE16,
838           ATTRIBUTE17,
839           ATTRIBUTE18,
840           ATTRIBUTE19,
841           ATTRIBUTE20
842         )
843         values
844         (
845           p_worker_id,
846           c.LOG_ROWID,
847           c.EVENT_TYPE,
848           c.EVENT_ID,
849           c.EVENT_OBJECT,
850           c.OPERATION_TYPE,
851           c.STATUS,
852           c.ATTRIBUTE_CATEGORY,
853           c.ATTRIBUTE1,
854           c.ATTRIBUTE2,
855           c.ATTRIBUTE3,
856           c.ATTRIBUTE4,
857           c.ATTRIBUTE5,
858           c.ATTRIBUTE6,
859           c.ATTRIBUTE7,
860           c.ATTRIBUTE8,
861           c.ATTRIBUTE9,
862           c.ATTRIBUTE10,
863           c.ATTRIBUTE11,
864           c.ATTRIBUTE12,
865           c.ATTRIBUTE13,
866           c.ATTRIBUTE14,
867           c.ATTRIBUTE15,
868           c.ATTRIBUTE16,
869           c.ATTRIBUTE17,
870           c.ATTRIBUTE18,
871           c.ATTRIBUTE19,
872           c.ATTRIBUTE20
873         );
874 
875         delete
876         from   PA_PJI_PROJ_EVENTS_LOG
877         where  ROWID = c.LOG_ROWID;
878 
879       end loop;
880 
881       -- normalize chains of 'RBS_PUSH' events
882 
883       for c in (select   EVENT_ID
884                 from     PJI_PA_PROJ_EVENTS_LOG
885                 where    WORKER_ID = p_worker_id and
886                          EVENT_TYPE = 'RBS_PUSH'
887                 order by EVENT_ID) loop
888 
889         select ATTRIBUTE18
890         into   l_chain_flag
891         from   PJI_PA_PROJ_EVENTS_LOG
892         where  WORKER_ID = p_worker_id and
893                EVENT_TYPE = 'RBS_PUSH' and
894                EVENT_ID = c.EVENT_ID;
895 
896         if (l_chain_flag is null) then
897 
898           update PJI_PA_PROJ_EVENTS_LOG log1
899           set    log1.ATTRIBUTE18 = 'PJI$LIST',
900                  log1.ATTRIBUTE17 = c.EVENT_ID
901           where  log1.WORKER_ID   = p_worker_id and
902                  log1.EVENT_TYPE  = 'RBS_PUSH' and
903                  log1.EVENT_ID    in
904                    (select
905                       log1.EVENT_ID
906                     from
907                       PJI_PA_PROJ_EVENTS_LOG log1
908                     start with
909                       log1.WORKER_ID   = p_worker_id and
910                       log1.EVENT_TYPE  = 'RBS_PUSH'  and
911                       log1.EVENT_ID    = c.EVENT_ID  and
912                       log1.ATTRIBUTE18 is null
913                     connect by
914                       log1.ATTRIBUTE2 = prior log1.EVENT_OBJECT);
915 
916           select log1.EVENT_OBJECT
917           into   l_last_rbs_link
918           from   PJI_PA_PROJ_EVENTS_LOG log1
919           where  log1.WORKER_ID   = p_worker_id and
920                  log1.EVENT_TYPE  = 'RBS_PUSH'  and
921                  log1.ATTRIBUTE17 = c.EVENT_ID  and
922                  log1.ATTRIBUTE18 = 'PJI$LIST'  and
923                  log1.EVENT_ID    in (select max(log2.EVENT_ID)
924                                       from   PJI_PA_PROJ_EVENTS_LOG log2
925                                       where  log2.WORKER_ID = p_worker_id  and
926                                              log2.EVENT_TYPE = 'RBS_PUSH'  and
927                                              log2.ATTRIBUTE17 = c.EVENT_ID and
928                                              log2.ATTRIBUTE18 = 'PJI$LIST');
929 
930           update PJI_PA_PROJ_EVENTS_LOG
931           set    EVENT_OBJECT = l_last_rbs_link
932           where  WORKER_ID    = p_worker_id and
933                  EVENT_TYPE   = 'RBS_PUSH'  and
934                  ATTRIBUTE17  = c.EVENT_ID  and
935                  ATTRIBUTE18  = 'PJI$LIST';
936 
937         end if;
938 
939       end loop;
940 
941       -- 'RBS_DELETE' event overrides 'RBS_PUSH' event
942 
943       insert into PJI_PA_PROJ_EVENTS_LOG
944       (
945         WORKER_ID,
946         LOG_ROWID,
947         EVENT_TYPE,
948         EVENT_ID,
949         EVENT_OBJECT,
950         OPERATION_TYPE,
951         STATUS,
952         ATTRIBUTE_CATEGORY,
953         ATTRIBUTE1,
954         ATTRIBUTE2,
955         ATTRIBUTE3,
956         ATTRIBUTE4,
957         ATTRIBUTE5,
958         ATTRIBUTE6,
959         ATTRIBUTE7,
960         ATTRIBUTE8,
961         ATTRIBUTE9,
962         ATTRIBUTE10,
963         ATTRIBUTE11,
964         ATTRIBUTE12,
965         ATTRIBUTE13,
966         ATTRIBUTE14,
967         ATTRIBUTE15,
968         ATTRIBUTE16,
969         ATTRIBUTE17,
970         ATTRIBUTE18,
971         ATTRIBUTE19,
972         ATTRIBUTE20
973       )
974       select
975         distinct
976         log_del.WORKER_ID,
977         log_del.LOG_ROWID,
978         log_del.EVENT_TYPE,
979         log_del.EVENT_ID,
980         log_push.ATTRIBUTE2              EVENT_OBJECT,
981         log_del.OPERATION_TYPE,
982         log_del.STATUS,
983         log_del.ATTRIBUTE_CATEGORY,
984         log_del.ATTRIBUTE1,
985         log_del.ATTRIBUTE2,
986         log_del.ATTRIBUTE3,
987         log_del.ATTRIBUTE4,
988         log_del.ATTRIBUTE5,
989         log_del.ATTRIBUTE6,
990         log_del.ATTRIBUTE7,
991         log_del.ATTRIBUTE8,
992         log_del.ATTRIBUTE9,
993         log_del.ATTRIBUTE10,
994         log_del.ATTRIBUTE11,
995         log_del.ATTRIBUTE12,
996         log_del.ATTRIBUTE13,
997         log_del.ATTRIBUTE14,
998         log_del.ATTRIBUTE15,
999         log_del.ATTRIBUTE16,
1000         log_del.ATTRIBUTE17,
1001         log_del.ATTRIBUTE18,
1002         log_del.ATTRIBUTE19,
1003         log_del.ATTRIBUTE20
1004       from
1005         PJI_PA_PROJ_EVENTS_LOG log_del,
1006         PJI_PA_PROJ_EVENTS_LOG log_push
1007       where
1008         log_del.WORKER_ID     = p_worker_id  and
1009         log_del.EVENT_TYPE    = 'RBS_DELETE' and
1010         log_push.WORKER_ID    = p_worker_id  and
1011         log_push.EVENT_TYPE   = 'RBS_PUSH'   and
1012         log_push.EVENT_OBJECT = log_del.EVENT_OBJECT;
1013 
1014       delete
1015       from   PJI_PA_PROJ_EVENTS_LOG log1
1016       where  log1.WORKER_ID    =  p_worker_id and
1017              log1.EVENT_TYPE   =  'RBS_PUSH' and
1018              log1.EVENT_OBJECT in (select log2.EVENT_OBJECT
1019                                    from   PJI_PA_PROJ_EVENTS_LOG log2
1020                                    where  log2.WORKER_ID = p_worker_id and
1021                                           log2.EVENT_TYPE = 'RBS_DELETE');
1022 
1023       -- add PROJECT_ID to RBS_PUSH events
1024 /* Midified this insert for bug#6450097 */
1025       insert into PJI_PA_PROJ_EVENTS_LOG
1026       (
1027         WORKER_ID,
1028         LOG_ROWID,
1029         EVENT_TYPE,
1030         EVENT_ID,
1031         EVENT_OBJECT,
1032         OPERATION_TYPE,
1033         STATUS,
1034         ATTRIBUTE_CATEGORY,
1035         ATTRIBUTE1,
1036         ATTRIBUTE2,
1037         ATTRIBUTE3,
1038         ATTRIBUTE4,
1039         ATTRIBUTE5,
1040         ATTRIBUTE6,
1041         ATTRIBUTE7,
1042         ATTRIBUTE8,
1043         ATTRIBUTE9,
1044         ATTRIBUTE10,
1045         ATTRIBUTE11,
1046         ATTRIBUTE12,
1047         ATTRIBUTE13,
1048         ATTRIBUTE14,
1049         ATTRIBUTE15,
1050         ATTRIBUTE16,
1051         ATTRIBUTE17,
1052         ATTRIBUTE18,
1053         ATTRIBUTE19,
1054         ATTRIBUTE20
1055       )
1056       select
1057         distinct
1058         log.WORKER_ID,
1059         log.LOG_ROWID,
1060         log.EVENT_TYPE,
1061         log.EVENT_ID,
1062         log.EVENT_OBJECT,
1063         log.OPERATION_TYPE,
1064         log.STATUS,
1065         log.ATTRIBUTE_CATEGORY,
1066         log.ATTRIBUTE1,
1067         log.ATTRIBUTE2,
1068         log.ATTRIBUTE3,
1069         log.ATTRIBUTE4,
1070         log.ATTRIBUTE5,
1071         log.ATTRIBUTE6,
1072         log.ATTRIBUTE7,
1073         log.ATTRIBUTE8,
1074         log.ATTRIBUTE9,
1075         log.ATTRIBUTE10,
1076         log.ATTRIBUTE11,
1077         log.ATTRIBUTE12,
1078         log.ATTRIBUTE13,
1079         log.ATTRIBUTE14,
1080         log.ATTRIBUTE15,
1081         'Y'                              ATTRIBUTE16,
1082         log.ATTRIBUTE17,
1083         log.ATTRIBUTE18,
1084         rbs_prj.PROJECT_ID               ATTRIBUTE19,
1085         log.ATTRIBUTE20
1086       from
1087         PJI_PA_PROJ_EVENTS_LOG log,
1088         PA_RBS_PRJ_ASSIGNMENTS rbs_prj,
1089 	PA_RBS_VERSIONS_B rbs
1090       where
1091         log.WORKER_ID           = p_worker_id and
1092         log.EVENT_TYPE          = 'RBS_PUSH'  and
1093         rbs.RBS_VERSION_ID  = log.ATTRIBUTE2 and
1094 	rbs.rbs_header_id = rbs_prj.rbs_header_id;
1095 
1096       delete
1097       from   PJI_PA_PROJ_EVENTS_LOG
1098       where  WORKER_ID   = p_worker_id and
1099              EVENT_TYPE  = 'RBS_PUSH' and
1100              ATTRIBUTE16 = 'N';
1101 
1102     end if;
1103 
1104     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_EVENTS_SNAPSHOT(p_worker_id);');
1105 
1106     commit;
1107 
1108   end CREATE_EVENTS_SNAPSHOT;
1109 
1110 
1111   -- -----------------------------------------------------
1112   -- procedure PROCESS_RBS_CHANGES
1113   --
1114   --   History
1115   --   19-MAR-2004  SVERMETT  Created
1116   --
1117   -- Internal PJP Summarization API.
1118   --
1119   -- Called by RBS program
1120   --
1121   -- -----------------------------------------------------
1122   procedure PROCESS_RBS_CHANGES (p_worker_id in number) is
1123 
1124     cursor rbs_events (p_worker_id in number) is
1125     select
1126       distinct
1127       ATTRIBUTE20  RBS_HEADER_ID,
1128       ATTRIBUTE2   OLD_RBS_VERSION_ID,
1129       EVENT_OBJECT NEW_RBS_VERSION_ID
1130     from
1131       PJI_PA_PROJ_EVENTS_LOG
1132     where
1133       WORKER_ID = p_worker_id and
1134       EVENT_TYPE = 'RBS_PUSH';
1135 
1136     l_process         varchar2(30);
1137     l_extraction_type varchar2(30);
1138 
1139     l_return_status   varchar2(255);
1140     l_msg_count       number;
1141     l_msg_data        varchar2(2000);
1142 
1143   begin
1144 
1145     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1146 
1147     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_RBS_CHANGES(p_worker_id);')) then
1148       return;
1149     end if;
1150 
1151     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1152 
1153     if (l_extraction_type = 'RBS') then
1154 
1155       for c in rbs_events(p_worker_id) loop
1156 
1157         PA_RBS_UTILS.PROCESS_RBS_CHANGES(c.RBS_HEADER_ID,
1158                                          c.NEW_RBS_VERSION_ID,
1159                                          c.OLD_RBS_VERSION_ID,
1160                                          l_return_status,
1161                                          l_msg_count,
1162                                          l_msg_data);
1163 
1164       end loop;
1165 
1166     end if;
1167 
1168     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_RBS_CHANGES(p_worker_id);');
1169 
1170     commit;
1171 
1172   end PROCESS_RBS_CHANGES;
1173 
1174 
1175   -- -----------------------------------------------------
1176   -- procedure CREATE_MAPPING_RULES
1177   --
1178   --   History
1179   --   19-MAR-2004  SVERMETT  Created
1180   --
1181   -- Internal PJP Summarization API.
1182   --
1183   -- Called by RBS program
1184   --
1185   -- -----------------------------------------------------
1186   procedure CREATE_MAPPING_RULES (p_worker_id in number) is
1187 
1188     cursor required_rbs (p_worker_id in number) is
1189     select
1190       asg.RBS_VERSION_ID
1191     from
1192       PJI_PJP_PROJ_BATCH_MAP map,
1193       PA_RBS_PRJ_ASSIGNMENTS asg
1194     where
1195       map.WORKER_ID            = p_worker_id    and
1196       asg.PROJECT_ID           = map.PROJECT_ID and
1197       asg.REPORTING_USAGE_FLAG = 'Y';
1198 
1199     l_process         varchar2(30);
1200     l_extraction_type varchar2(30);
1201 
1202     l_return_status   varchar2(255);
1203     l_msg_count       number;
1204     l_msg_data        varchar2(2000);
1205 
1206   begin
1207 
1208     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1209 
1210     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_MAPPING_RULES(p_worker_id);')) then
1211       return;
1212     end if;
1213 
1214     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1215 
1216     for c in required_rbs(p_worker_id) loop
1217 
1218       begin
1219       PA_RBS_MAPPING.CREATE_MAPPING_RULES(c.RBS_VERSION_ID,
1220                                           l_return_status,
1221                                           l_msg_count,
1222                                           l_msg_data);
1223       exception when others then
1224         PJI_UTILS.WRITE2LOG('CREATE_MAPPING_RULES:' ||
1225                             c.RBS_VERSION_ID || ' : ' || SQLERRM);
1226       end;
1227 
1228     end loop;
1229 
1230     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_MAPPING_RULES(p_worker_id);');
1231 
1232     commit;
1233 
1234   end CREATE_MAPPING_RULES;
1235 
1236 
1237   -- -----------------------------------------------------
1238   -- procedure MAP_RBS_HEADERS
1239   --
1240   --   History
1241   --   19-MAR-2004  SVERMETT  Created
1242   --
1243   -- Internal PJP Summarization API.
1244   --
1245   -- Called by RBS program
1246   --
1247   -- -----------------------------------------------------
1248   procedure MAP_RBS_HEADERS (p_worker_id in number) is
1249 
1250     l_process         varchar2(30);
1251     l_extraction_type varchar2(30);
1252 
1253     l_return_status   varchar2(255);
1254     l_msg_count       number;
1255     l_msg_data        varchar2(2000);
1256 
1257   begin
1258 
1259     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1260 
1261     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MAP_RBS_HEADERS(p_worker_id);')) then
1262       return;
1263     end if;
1264 
1265     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1266 
1267     begin
1268     PA_RBS_MAPPING.MAP_RBS_ACTUALS(p_worker_id,
1269                                    l_return_status,
1270                                    l_msg_count,
1271                                    l_msg_data);
1272     exception when others then
1273       PJI_UTILS.WRITE2LOG('MAP_RBS_HEADERS:' || SQLERRM);
1274     end;
1275 
1276     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MAP_RBS_HEADERS(p_worker_id);');
1277 
1278     commit;
1279 
1280   end MAP_RBS_HEADERS;
1281 
1282 
1283   -- -----------------------------------------------------
1284   -- procedure UPDATE_XBS_DENORM_FULL
1285   --
1286   --   History
1287   --   19-MAR-2004  SVERMETT  Created
1288   --
1289   -- Internal PJP Summarization API.
1290   --
1291   -- -----------------------------------------------------
1292   procedure UPDATE_XBS_DENORM_FULL (p_worker_id in number) is
1293 
1294     l_process           varchar2(30);
1295     l_extraction_type   varchar2(30);
1296 
1297     l_last_update_date  date;
1298     l_last_updated_by   number;
1299     l_creation_date     date;
1300     l_created_by        number;
1301     l_last_update_login number;
1302 
1303     l_count             number;
1304 
1305   begin
1306 
1307     l_last_update_date  := sysdate;
1308     l_last_updated_by   := FND_GLOBAL.USER_ID;
1309     l_creation_date     := sysdate;
1310     l_created_by        := FND_GLOBAL.USER_ID;
1311     l_last_update_login := FND_GLOBAL.LOGIN_ID;
1312 
1313     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1314 
1315     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM_FULL(p_worker_id);')) then
1316       return;
1317     end if;
1318 
1319     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1320 
1321     l_count := 0;
1322 
1323     if (l_extraction_type = 'FULL') then
1324 
1325       insert into PJI_XBS_DENORM den_i
1326       (
1327         STRUCT_TYPE,
1328         PRG_GROUP,
1329         STRUCT_VERSION_ID,
1330         SUP_PROJECT_ID,
1331         SUP_ID,
1332         SUP_EMT_ID,
1333         SUBRO_ID,
1334         SUB_ID,
1335         SUB_EMT_ID,
1336         SUP_LEVEL,
1337         SUB_LEVEL,
1338         SUB_ROLLUP_ID,
1339         SUB_LEAF_FLAG,
1340         RELATIONSHIP_TYPE,
1341         LAST_UPDATE_DATE,
1342         LAST_UPDATED_BY,
1343         CREATION_DATE,
1344         CREATED_BY,
1345         LAST_UPDATE_LOGIN
1346       )
1347       select
1348         pa.STRUCT_TYPE,
1349         pa.PRG_GROUP,
1350         pa.STRUCT_VERSION_ID,
1351         pa.SUP_PROJECT_ID,
1352         pa.SUP_ID,
1353         pa.SUP_EMT_ID,
1354         pa.SUBRO_ID,
1355         pa.SUB_ID,
1356         pa.SUB_EMT_ID,
1357         pa.SUP_LEVEL,
1358         pa.SUB_LEVEL,
1359         pa.SUB_ROLLUP_ID,
1360         pa.SUB_LEAF_FLAG,
1361         pa.RELATIONSHIP_TYPE,
1362         l_last_update_date,
1363         l_last_updated_by,
1364         l_creation_date,
1365         l_created_by,
1366         l_last_update_login
1367       from
1368         PJI_PJP_PROJ_BATCH_MAP map,
1369         PA_XBS_DENORM pa
1370       where
1371         map.WORKER_ID = p_worker_id and
1372         pa.SUP_PROJECT_ID = map.PROJECT_ID and
1373         not exists (select /*+ index(pji, PJI_XBS_DENORM_N3) */
1374                            1
1375                     from   PJI_XBS_DENORM pji
1376                     where  pji.STRUCT_TYPE    = 'PRG' and
1377                            pji.SUB_EMT_ID     = pji.SUB_ROLLUP_ID and
1378                            pji.SUP_PROJECT_ID = pa.SUP_PROJECT_ID);
1379 
1380         l_count := l_count + sql%rowcount;
1381 
1382     elsif (l_extraction_type = 'INCREMENTAL') then
1383 
1384       insert into PJI_XBS_DENORM den_i
1385       (
1386         STRUCT_TYPE,
1387         PRG_GROUP,
1388         STRUCT_VERSION_ID,
1389         SUP_PROJECT_ID,
1390         SUP_ID,
1391         SUP_EMT_ID,
1392         SUBRO_ID,
1393         SUB_ID,
1394         SUB_EMT_ID,
1395         SUP_LEVEL,
1396         SUB_LEVEL,
1397         SUB_ROLLUP_ID,
1398         SUB_LEAF_FLAG,
1399         RELATIONSHIP_TYPE,
1400         LAST_UPDATE_DATE,
1401         LAST_UPDATED_BY,
1402         CREATION_DATE,
1403         CREATED_BY,
1404         LAST_UPDATE_LOGIN
1405       )
1406       select /*+ ordered index(pa PA_XBS_DENORM_N3) */
1407         pa.STRUCT_TYPE,
1408         pa.PRG_GROUP,
1409         pa.STRUCT_VERSION_ID,
1410         pa.SUP_PROJECT_ID,
1411         pa.SUP_ID,
1412         pa.SUP_EMT_ID,
1413         pa.SUBRO_ID,
1414         pa.SUB_ID,
1415         pa.SUB_EMT_ID,
1416         pa.SUP_LEVEL,
1417         pa.SUB_LEVEL,
1418         pa.SUB_ROLLUP_ID,
1419         pa.SUB_LEAF_FLAG,
1420         pa.RELATIONSHIP_TYPE,
1421         l_last_update_date,
1422         l_last_updated_by,
1423         l_creation_date,
1424         l_created_by,
1425         l_last_update_login
1426       from
1427         PJI_PJP_PROJ_BATCH_MAP map,
1428         PA_XBS_DENORM pa
1429       where
1430         map.WORKER_ID     = p_worker_id      and
1431         pa.SUP_PROJECT_ID = map.PROJECT_ID   and
1432         pa.STRUCT_TYPE    = 'PRG'            and
1433         pa.SUB_EMT_ID     = pa.SUB_ROLLUP_ID and
1434         not exists (select /*+ index(pji, PJI_XBS_DENORM_N3) */
1435                            1
1436                     from   PJI_XBS_DENORM pji
1437                     where  pji.STRUCT_TYPE    = 'PRG' and
1438                            pji.SUB_EMT_ID     = pji.SUB_ROLLUP_ID and
1439                            pji.SUP_PROJECT_ID = pa.SUP_PROJECT_ID);
1440 
1441     end if;
1442 
1443     if (l_count > 0) then
1444 
1445       delete
1446       from   PJI_REP_XBS_DENORM;
1447       -- where  PROJECT_ID in (select map.PROJECT_ID
1448       --                       from   PJI_PJP_PROJ_BATCH_MAP map
1449       --                       where  map.WORKER_ID = p_worker_id);
1450 
1451     end if;
1452 
1453     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM_FULL(p_worker_id);');
1454 
1455     commit;
1456 
1457   end UPDATE_XBS_DENORM_FULL;
1458 
1459 
1460   -- -----------------------------------------------------
1461   -- procedure LOCK_HEADERS
1462   --
1463   --   History
1464   --   19-MAR-2004  SVERMETT  Created
1465   --
1466   -- Internal PJP Summarization API.
1467   --
1468   -- Called by RBS program
1469   --
1470   -- -----------------------------------------------------
1471   procedure LOCK_HEADERS (p_worker_id in number) is
1472 
1473     l_process         varchar2(30);
1474     l_extraction_type varchar2(30);
1475 
1476     l_lock_mode       varchar2(255);
1477     l_return_status   varchar2(255);
1478     l_msg_code        varchar2(255);
1479 
1480   begin
1481 
1482     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1483 
1484     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.LOCK_HEADERS(p_worker_id);')) then
1485       return;
1486     end if;
1487 
1488     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1489 
1490     -- PJI_FM_XBS_ACCUM_MAINT.WBS_LOCK_PVT(p_online_flag   => 'N',
1491     --                                     x_lock_mode     => l_lock_mode,
1492     --                                     x_return_status => l_return_status);
1493 
1494     -- SELECT DECODE(l_extraction_type, 'PARTIAL', 'PLANTYPE', l_extraction_type)
1495     -- INTO   l_extraction_type
1496     -- FROM   DUAL ;
1497 
1498     Pji_Fm_Plan_Maint_Pvt.OBTAIN_RELEASE_LOCKS (
1499       p_context        => l_extraction_type
1500     , p_lock_mode      => 'P'
1501     , x_return_status  => l_return_status
1502     , x_msg_code       => l_msg_code
1503     );
1504 
1505     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.LOCK_HEADERS(p_worker_id);');
1506 
1507     commit;
1508 
1509   end LOCK_HEADERS;
1510 
1511 
1512   -- -----------------------------------------------------
1513   -- procedure UPDATE_PROGRAM_WBS
1514   --
1515   --   History
1516   --   19-MAR-2004  SVERMETT  Created
1517   --
1518   -- Internal PJP Summarization API.
1519   --
1520   -- -----------------------------------------------------
1521   procedure UPDATE_PROGRAM_WBS (p_worker_id in number) is
1522 
1523     l_process           varchar2(30);
1524     l_extraction_type   varchar2(30);
1525 
1526     l_last_update_date  date;
1527     l_last_updated_by   number;
1528     l_creation_date     date;
1529     l_created_by        number;
1530     l_last_update_login number;
1531 
1532   begin
1533 
1534     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1535 
1536     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_WBS(p_worker_id);')) then
1537       return;
1538     end if;
1539 
1540     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1541 
1542     l_last_update_date  := sysdate;
1543     l_last_updated_by   := FND_GLOBAL.USER_ID;
1544     l_creation_date     := sysdate;
1545     l_created_by        := FND_GLOBAL.USER_ID;
1546     l_last_update_login := FND_GLOBAL.LOGIN_ID;
1547 
1548     if (l_extraction_type = 'FULL') then
1549 
1550       insert into PJI_PJP_WBS_HEADER
1551       (
1552         PROJECT_ID,
1553         PLAN_VERSION_ID,
1554         WBS_VERSION_ID,
1555         WP_FLAG,
1556         CB_FLAG,
1557         CO_FLAG,
1558         LOCK_FLAG,
1559         PLAN_TYPE_ID,
1560         MIN_TXN_DATE,
1561         MAX_TXN_DATE,
1562         LAST_UPDATE_DATE,
1563         LAST_UPDATED_BY,
1564         CREATION_DATE,
1565         CREATED_BY,
1566         LAST_UPDATE_LOGIN,
1567         PLAN_TYPE_CODE
1568       )
1569       select
1570         PROJECT_ID,
1571         -1,
1572         PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(PROJECT_ID),
1573         'N',
1574         null,
1575         null,
1576         'P',
1577         null,
1578         to_date('3000/01/01', 'YYYY/MM/DD') MIN_TXN_DATE,
1579         to_date('0001/01/01', 'YYYY/MM/DD') MAX_TXN_DATE,
1580         l_last_update_date,
1581         l_last_updated_by,
1582         l_creation_date,
1583         l_created_by,
1584         l_last_update_login,
1585         'A'
1586       from
1587         (
1588         select
1589           distinct
1590           prj_emt.PROJECT_ID
1591         from
1592           PJI_PJP_PROJ_BATCH_MAP map,
1593           PA_PROJ_ELEMENTS prj_emt
1594         where
1595           map.WORKER_ID       = p_worker_id and
1596           prj_emt.OBJECT_TYPE = 'PA_STRUCTURES' and
1597           prj_emt.PROJECT_ID  = map.PROJECT_ID
1598         )
1599       order by
1600         PROJECT_ID;
1601 
1602       while (SQL%ROWCOUNT > 0) loop
1603 
1604         update PJI_PJP_WBS_HEADER wbs_hdr
1605         set    wbs_hdr.WBS_VERSION_ID =
1606                (select /*+ index(log PA_PJI_PROJ_EVENTS_LOG_N1) */
1607                        distinct log.ATTRIBUTE2
1608                 from   PA_PJI_PROJ_EVENTS_LOG log
1609                 where  log.EVENT_TYPE = 'WBS_PUBLISH' and
1610                        log.EVENT_OBJECT = wbs_hdr.WBS_VERSION_ID),
1611                wbs_hdr.LAST_UPDATE_DATE  = l_last_update_date,
1612                wbs_hdr.LAST_UPDATED_BY   = l_last_updated_by,
1613                wbs_hdr.LAST_UPDATE_LOGIN = l_last_update_login
1614         where  wbs_hdr.PROJECT_ID in
1615                (select map.PROJECT_ID
1616                 from   PJI_PJP_PROJ_BATCH_MAP map
1617                 where  map.WORKER_ID = p_worker_id) and
1618                wbs_hdr.PLAN_VERSION_ID = -1 and
1619                wbs_hdr.WBS_VERSION_ID in
1620                (select log.EVENT_OBJECT
1621                 from   PA_PJI_PROJ_EVENTS_LOG log
1622                 where  log.EVENT_TYPE = 'WBS_PUBLISH');
1623 
1624       end loop;
1625 
1626     else
1627 
1628       update PJI_PJP_WBS_HEADER
1629       set    WBS_VERSION_ID =
1630                          PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID
1631                          (PROJECT_ID),
1632              LOCK_FLAG         = 'P',
1633              LAST_UPDATE_DATE  = l_last_update_date,
1634              LAST_UPDATED_BY   = l_last_updated_by,
1635              LAST_UPDATE_LOGIN = l_last_update_login
1636       where  PLAN_VERSION_ID = -1 and
1637              PROJECT_ID in (select EVENT_OBJECT
1638                             from   PJI_PA_PROJ_EVENTS_LOG
1639                             where  WORKER_ID = p_worker_id and
1640                                    EVENT_TYPE in ('WBS_CHANGE',
1641                                                   'WBS_PUBLISH'));
1642 
1643       insert into PJI_PJP_WBS_HEADER
1644       (
1645         PROJECT_ID,
1646         PLAN_VERSION_ID,
1647         WBS_VERSION_ID,
1648         WP_FLAG,
1649         CB_FLAG,
1650         CO_FLAG,
1651         LOCK_FLAG,
1652         PLAN_TYPE_ID,
1653         MIN_TXN_DATE,
1654         MAX_TXN_DATE,
1655         LAST_UPDATE_DATE,
1656         LAST_UPDATED_BY,
1657         CREATION_DATE,
1658         CREATED_BY,
1659         LAST_UPDATE_LOGIN,
1660         PLAN_TYPE_CODE
1661       )
1662       select
1663         PROJECT_ID,
1664         -1,
1665         PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(PROJECT_ID),
1666         'N',
1667         null,
1668         null,
1669         'P',
1670         null,
1671         to_date('3000/01/01', 'YYYY/MM/DD') MIN_TXN_DATE,
1672         to_date('0001/01/01', 'YYYY/MM/DD') MAX_TXN_DATE,
1673         l_last_update_date,
1674         l_last_updated_by,
1675         l_creation_date,
1676         l_created_by,
1677         l_last_update_login,
1678         'A'
1679       from
1680         (
1681         select
1682           distinct
1683           prj_emt.PROJECT_ID
1684         from
1685           PJI_PA_PROJ_EVENTS_LOG log,
1686           PA_PROJ_ELEMENTS       prj_emt,
1687           PJI_PJP_WBS_HEADER     hdr
1688         where
1689           log.WORKER_ID       =  p_worker_id                   and
1690           log.EVENT_TYPE      in ('WBS_CHANGE', 'WBS_PUBLISH') and
1691           prj_emt.OBJECT_TYPE =  'PA_STRUCTURES'               and
1692           prj_emt.PROJECT_ID  =  log.EVENT_OBJECT              and
1693           -1                  =  hdr.PLAN_VERSION_ID (+)       and
1694           prj_emt.PROJECT_ID  =  hdr.PROJECT_ID      (+)       and
1695           hdr.PROJECT_ID      is null
1696         )
1697       order by
1698         PROJECT_ID;
1699 
1700     end if;
1701 
1702     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_WBS(p_worker_id);');
1703 
1704     commit;
1705 
1706   end UPDATE_PROGRAM_WBS;
1707 
1708 
1709   -- -----------------------------------------------------
1710   -- procedure PURGE_EVENT_DATA
1711   --
1712   --   History
1713   --   19-MAR-2004  SVERMETT  Created
1714   --
1715   -- Internal PJP Summarization API.
1716   --
1717   -- Called by RBS program
1718   --
1719   -- -----------------------------------------------------
1720   procedure PURGE_EVENT_DATA (p_worker_id in number) is
1721 
1722     l_process         varchar2(30);
1723     l_extraction_type varchar2(30);
1724 
1725   begin
1726 
1727     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1728 
1729     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_EVENT_DATA(p_worker_id);')) then
1730       return;
1731     end if;
1732 
1733     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1734 
1735     if (l_extraction_type = 'INCREMENTAL') then
1736 
1737       delete
1738       from   PJI_FP_XBS_ACCUM_F
1739       where  (RBS_AGGR_LEVEL,
1740               WBS_ROLLUP_FLAG,
1741               PRG_ROLLUP_FLAG) in (('L', 'Y', 'N'),
1742                                    ('R', 'N', 'N'),
1743                                    ('R', 'Y', 'N')) and
1744              (PROJECT_ID,
1745               PLAN_VERSION_ID,
1746               decode(PLAN_VERSION_ID,
1747                      -3, PLAN_TYPE_ID,
1748                      -4, PLAN_TYPE_ID,
1749                          -1)) in (select
1750                                     log.ATTRIBUTE1,
1751                                     decode(log.EVENT_TYPE,
1752                                            'WBS_CHANGE',    log.ATTRIBUTE3,
1753                                            'WBS_PUBLISH',   log.ATTRIBUTE3,
1754                                            'PLAN_BASELINE', -3,
1755                                            'PLAN_ORIGINAL', -4),
1756                                     decode(log.EVENT_TYPE,
1757                                            'WBS_CHANGE',    -1,
1758                                            'WBS_PUBLISH',   -1,
1759                                            'PLAN_BASELINE', log.ATTRIBUTE2,
1760                                            'PLAN_ORIGINAL', log.ATTRIBUTE2)
1761                                    from
1762                                      PJI_PA_PROJ_EVENTS_LOG log
1763                                    where
1764                                      log.WORKER_ID = p_worker_id and
1765                                      log.EVENT_TYPE in ('WBS_CHANGE',
1766                                                         'WBS_PUBLISH',
1767                                                         'PLAN_BASELINE',
1768                                                         'PLAN_ORIGINAL'));
1769 
1770     elsif (l_extraction_type = 'RBS') then
1771 
1772       delete
1773       from   PJI_PJP_RBS_HEADER
1774       where  RBS_VERSION_ID in (select distinct
1775                                        log.EVENT_OBJECT
1776                                 from   PJI_PA_PROJ_EVENTS_LOG log
1777                                 where  log.WORKER_ID = p_worker_id and
1778                                        log.EVENT_TYPE = 'RBS_DELETE');
1779 
1780       delete
1781       from   PJI_ROLLUP_LEVEL_STATUS
1782       where  RBS_VERSION_ID in (select distinct
1783                                        decode(log.EVENT_TYPE,
1784                                               'RBS_PUSH', log.ATTRIBUTE2,
1785                                               'RBS_DELETE', log.EVENT_OBJECT)
1786                                 from   PJI_PA_PROJ_EVENTS_LOG log
1787                                 where  log.WORKER_ID = p_worker_id and
1788                                        log.EVENT_TYPE in ('RBS_PUSH',
1789                                                           'RBS_DELETE'));
1790 
1791       delete
1792       from   PJI_FP_XBS_ACCUM_F
1793       where  RBS_AGGR_LEVEL in ('L', 'R') and
1794              (PROJECT_ID,
1795               PLAN_VERSION_ID,
1796               RBS_VERSION_ID) in (select distinct
1797                                          rbs_hdr.PROJECT_ID,
1798                                          rbs_hdr.PLAN_VERSION_ID,
1799                                          rbs_hdr.RBS_VERSION_ID
1800                                   from   PJI_PA_PROJ_EVENTS_LOG log,
1801                                          PJI_PJP_RBS_HEADER rbs_hdr
1802                                   where  log.WORKER_ID = p_worker_id and
1803                                          log.EVENT_TYPE = 'RBS_PUSH' and
1804                                          rbs_hdr.RBS_VERSION_ID =
1805                                            log.ATTRIBUTE2
1806                                   union
1807                                   select distinct
1808                                          rbs_hdr.PROJECT_ID,
1809                                          rbs_hdr.PLAN_VERSION_ID,
1810                                          rbs_hdr.RBS_VERSION_ID
1811                                   from   PJI_PA_PROJ_EVENTS_LOG log,
1812                                          PJI_PJP_RBS_HEADER rbs_hdr
1813                                   where  log.WORKER_ID = p_worker_id and
1814                                          log.EVENT_TYPE = 'RBS_DELETE' and
1815                                          rbs_hdr.RBS_VERSION_ID =
1816                                            log.EVENT_OBJECT);
1817 
1818     end if;
1819 
1820     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_EVENT_DATA(p_worker_id);');
1821 
1822     commit;
1823 
1824   end PURGE_EVENT_DATA;
1825 
1826 
1827   -- -----------------------------------------------------
1828   -- procedure UPDATE_PROGRAM_RBS
1829   --
1830   --   History
1831   --   19-MAR-2004  SVERMETT  Created
1832   --
1833   -- Internal PJP Summarization API.
1834   --
1835   -- Called by RBS program
1836   --
1837   -- -----------------------------------------------------
1838   procedure UPDATE_PROGRAM_RBS (p_worker_id in number) is
1839 
1840     cursor rbs_prg_full (p_worker_id in number) is
1841     select
1842       distinct
1843       asg.RBS_HEADER_ID,
1844       asg.RBS_VERSION_ID,
1845       den2.SUP_PROJECT_ID             PROJECT_ID,
1846       decode(den1.SUB_EMT_ID,
1847              den1.SUB_ROLLUP_ID, 'Y',
1848                                  'N') PROG_REP_USAGE_FLAG,
1849       'Y'                             REPORTING_USAGE_FLAG,
1850       'N'                             FP_USAGE_FLAG
1851     from
1852       PJI_PJP_PROJ_BATCH_MAP map,
1853       PA_RBS_PRJ_ASSIGNMENTS asg,
1854       PA_XBS_DENORM          den1,
1855       PA_XBS_DENORM          den2
1856     where
1857       map.WORKER_ID            =  p_worker_id     and
1858       asg.PROJECT_ID           =  map.PROJECT_ID  and
1859       asg.PROG_REP_USAGE_FLAG  =  'Y'             and
1860       asg.REPORTING_USAGE_FLAG =  'Y'             and
1861       den1.STRUCT_TYPE         =  'PRG'           and
1862       den1.STRUCT_VERSION_ID   is null            and
1863       den1.SUP_PROJECT_ID      =  asg.PROJECT_ID  and
1864       (den1.SUB_EMT_ID = den1.SUB_ROLLUP_ID or
1865        den1.SUP_EMT_ID <> den1.SUB_EMT_ID)        and
1866       den2.STRUCT_TYPE         =  'PRG'           and
1867       den2.STRUCT_VERSION_ID   is null            and
1868       den2.SUP_EMT_ID          =  den2.SUB_EMT_ID and
1869       den2.SUP_EMT_ID          =  den1.SUB_EMT_ID
1870     order by
1871       asg.RBS_HEADER_ID,
1872       asg.RBS_VERSION_ID;
1873 
1874     cursor rbs_prg (p_worker_id in number) is
1875     select
1876       distinct
1877       log.ATTRIBUTE2   RBS_HEADER_ID,
1878       log.EVENT_OBJECT RBS_VERSION_ID,
1879       log.ATTRIBUTE1   PROJECT_ID,
1880       log.ATTRIBUTE17  PROGRAM_ID,
1881       log.ATTRIBUTE18  PROG_REP_USAGE_FLAG,
1882       'Y'              REPORTING_USAGE_FLAG,
1883       'N'              FP_USAGE_FLAG,
1884       log.ATTRIBUTE19  UPDATE_HEADER_ONLY_FLAG
1885     from
1886       PJI_PA_PROJ_EVENTS_LOG log
1887     where
1888       log.WORKER_ID   = p_worker_id               and
1889       log.EVENT_TYPE  = 'RBS_ASSOC'               and
1890       log.ATTRIBUTE20 = 'CONVERTED_RBS_PRG_EVENT'
1891     order by
1892       log.ATTRIBUTE17,
1893       log.ATTRIBUTE2,
1894       log.EVENT_OBJECT;
1895 
1896     cursor rbs_assoc (p_worker_id in number) is
1897     select
1898       distinct
1899       log.ATTRIBUTE2   RBS_HEADER_ID,
1900       log.EVENT_OBJECT RBS_VERSION_ID,
1901       log.ATTRIBUTE1   PROJECT_ID,
1902       'N'              PROG_REP_USAGE_FLAG,
1903       'Y'              REPORTING_USAGE_FLAG,
1904       'N'              FP_USAGE_FLAG
1905     from
1906       PJI_PA_PROJ_EVENTS_LOG log
1907     where
1908       log.WORKER_ID   = p_worker_id and
1909       log.EVENT_TYPE  = 'RBS_ASSOC' and
1910       log.ATTRIBUTE20 is null
1911     order by
1912       log.ATTRIBUTE2,
1913       log.EVENT_OBJECT;
1914 
1915     cursor rbs_push (p_worker_id in number) is
1916     select
1917       distinct
1918       log.ATTRIBUTE20  RBS_HEADER_ID,
1919       log.EVENT_OBJECT RBS_VERSION_ID,
1920       log.ATTRIBUTE2   OLD_RBS_VERSION_ID,
1921       log.ATTRIBUTE19  PROJECT_ID,
1922       'N'              PROG_REP_USAGE_FLAG,
1923       'Y'              REPORTING_USAGE_FLAG,
1924       'N'              FP_USAGE_FLAG
1925     from
1926       PJI_PA_PROJ_EVENTS_LOG log
1927     where
1928       log.WORKER_ID = p_worker_id and
1929       log.EVENT_TYPE = 'RBS_PUSH'
1930     order by
1931       log.ATTRIBUTE20,
1932       log.EVENT_OBJECT;
1933 
1934     l_process           varchar2(30);
1935     l_extraction_type   varchar2(30);
1936 
1937     l_program_id        number;
1938     l_rbs_header_id     number;
1939     l_rbs_version_id    number;
1940     l_prj_index         number;
1941     l_project_id_tbl    system.pa_num_tbl_type;
1942     l_count             number;
1943     l_rowid             rowid;
1944     l_return_status     varchar2(255);
1945     l_error_code        varchar2(255);
1946 
1947     l_last_update_date  date;
1948     l_last_updated_by   number;
1949     l_creation_date     date;
1950     l_created_by        number;
1951     l_last_update_login number;
1952 
1953   begin
1954 
1955     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
1956 
1957     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_RBS(p_worker_id);')) then
1958       return;
1959     end if;
1960 
1961     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
1962 
1963     l_last_update_date  := sysdate;
1964     l_last_updated_by   := FND_GLOBAL.USER_ID;
1965     l_creation_date     := sysdate;
1966     l_created_by        := FND_GLOBAL.USER_ID;
1967     l_last_update_login := FND_GLOBAL.LOGIN_ID;
1968 
1969     if (l_extraction_type = 'FULL') then
1970 
1971       l_rbs_header_id := -1;
1972       l_rbs_version_id := -1;
1973       l_prj_index := 1;
1974       l_project_id_tbl := system.pa_num_tbl_type();
1975       l_project_id_tbl.delete;
1976 
1977       for c in rbs_prg_full(p_worker_id) loop
1978 
1979         l_project_id_tbl.extend(1);
1980         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
1981         l_prj_index := l_prj_index + 1;
1982 
1983         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
1984 
1985           l_rbs_header_id := c.RBS_HEADER_ID;
1986           l_rbs_version_id := c.RBS_VERSION_ID;
1987 
1988         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
1989                c.RBS_VERSION_ID <> l_rbs_version_id) then
1990 
1991           PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
1992                                                     l_rbs_version_id,
1993                                                     l_project_id_tbl,
1994                                                     l_return_status);
1995 
1996           l_rbs_header_id := c.RBS_HEADER_ID;
1997           l_rbs_version_id := c.RBS_VERSION_ID;
1998           l_prj_index := 1;
1999           l_project_id_tbl.delete;
2000 
2001         end if;
2002 
2003         insert into PJI_PJP_RBS_HEADER
2004         (
2005           PROJECT_ID,
2006           PLAN_VERSION_ID,
2007           RBS_VERSION_ID,
2008           REPORTING_USAGE_FLAG,
2009           PROG_REP_USAGE_FLAG,
2010           PLAN_USAGE_FLAG,
2011           LAST_UPDATE_DATE,
2012           LAST_UPDATED_BY,
2013           CREATION_DATE,
2014           CREATED_BY,
2015           LAST_UPDATE_LOGIN,
2016           PLAN_TYPE_CODE
2017         )
2018         select
2019           c.PROJECT_ID,
2020           -1,
2021           c.RBS_VERSION_ID,
2022           c.REPORTING_USAGE_FLAG,
2023           c.PROG_REP_USAGE_FLAG,
2024           c.FP_USAGE_FLAG,
2025           l_last_update_date,
2026           l_last_updated_by,
2027           l_creation_date,
2028           l_created_by,
2029           l_last_update_login,
2030           'A'
2031         from
2032           dual
2033         where
2034           not exists
2035           (
2036           select
2037             1
2038           from
2039             PJI_PJP_RBS_HEADER rbs_hdr
2040           where
2041             rbs_hdr.PROJECT_ID      = c.PROJECT_ID and
2042             rbs_hdr.PLAN_VERSION_ID = -1 and
2043             rbs_hdr.RBS_VERSION_ID  = c.RBS_VERSION_ID
2044           );
2045 
2046       end loop;
2047 
2048       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
2049 
2050         PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
2051                                                   l_rbs_version_id,
2052                                                   l_project_id_tbl,
2053                                                   l_return_status);
2054 
2055       end if;
2056 
2057       insert into PJI_PJP_RBS_HEADER
2058       (
2059         PROJECT_ID,
2060         PLAN_VERSION_ID,
2061         RBS_VERSION_ID,
2062         REPORTING_USAGE_FLAG,
2063         PROG_REP_USAGE_FLAG,
2064         PLAN_USAGE_FLAG,
2065         LAST_UPDATE_DATE,
2066         LAST_UPDATED_BY,
2067         CREATION_DATE,
2068         CREATED_BY,
2069         LAST_UPDATE_LOGIN,
2070         PLAN_TYPE_CODE
2071       )
2072       select
2073         distinct
2074         asg.PROJECT_ID,
2075         -1,
2076         asg.RBS_VERSION_ID,
2077         asg.REPORTING_USAGE_FLAG,
2078         asg.PROG_REP_USAGE_FLAG,
2079         asg.FP_USAGE_FLAG,
2080         l_last_update_date,
2081         l_last_updated_by,
2082         l_creation_date,
2083         l_created_by,
2084         l_last_update_login,
2085         'A'
2086       from
2087         PJI_PJP_PROJ_BATCH_MAP map,
2088         PA_RBS_PRJ_ASSIGNMENTS asg,
2089         PJI_PJP_RBS_HEADER     rbs_hdr
2090       where
2091         map.WORKER_ID            = p_worker_id                 and
2092         asg.PROJECT_ID           = map.PROJECT_ID              and
2093         asg.REPORTING_USAGE_FLAG =  'Y'                        and
2094         asg.PROJECT_ID           = rbs_hdr.PROJECT_ID      (+) and
2095         -1                       = rbs_hdr.PLAN_VERSION_ID (+) and
2096         asg.RBS_VERSION_ID       = rbs_hdr.RBS_VERSION_ID  (+) and
2097         rbs_hdr.PROJECT_ID is null;
2098 
2099       insert into PJI_PJP_RBS_HEADER
2100       (
2101         PROJECT_ID,
2102         PLAN_VERSION_ID,
2103         RBS_VERSION_ID,
2104         REPORTING_USAGE_FLAG,
2105         PROG_REP_USAGE_FLAG,
2106         PLAN_USAGE_FLAG,
2107         LAST_UPDATE_DATE,
2108         LAST_UPDATED_BY,
2109         CREATION_DATE,
2110         CREATED_BY,
2111         LAST_UPDATE_LOGIN,
2112         PLAN_TYPE_CODE
2113       )
2114       select
2115         map.PROJECT_ID,
2116         -1,
2117         -1,
2118         'N',
2119         'N',
2120         'N',
2121         l_last_update_date,
2122         l_last_updated_by,
2123         l_creation_date,
2124         l_created_by,
2125         l_last_update_login,
2126         'A'
2127       from
2128         PJI_PJP_PROJ_BATCH_MAP map
2129       where
2130         map.WORKER_ID = p_worker_id;
2131 
2132     elsif (l_extraction_type = 'INCREMENTAL' or
2133            l_extraction_type = 'PARTIAL') then
2134 
2135       -- RBS_PRG
2136 
2137       l_program_id     := -1;
2138       l_rbs_header_id  := -1;
2139       l_rbs_version_id := -1;
2140       l_prj_index      :=  1;
2141       l_project_id_tbl :=  system.pa_num_tbl_type();
2142       l_project_id_tbl.delete;
2143 
2144       for c in rbs_prg(p_worker_id) loop
2145 
2146         if (c.UPDATE_HEADER_ONLY_FLAG is null) then
2147 
2148           l_project_id_tbl.extend(1);
2149           l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
2150           l_prj_index := l_prj_index + 1;
2151 
2152           if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
2153 
2154             l_program_id     := c.PROGRAM_ID;
2155             l_rbs_header_id  := c.RBS_HEADER_ID;
2156             l_rbs_version_id := c.RBS_VERSION_ID;
2157 
2158           elsif (c.PROGRAM_ID     <> l_program_id or
2159                  c.RBS_HEADER_ID  <> l_rbs_header_id or
2160                  c.RBS_VERSION_ID <> l_rbs_version_id) then
2161 
2162             PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
2163                                                       l_rbs_version_id,
2164                                                       l_project_id_tbl,
2165                                                       l_return_status);
2166 
2167             l_program_id     := c.PROGRAM_ID;
2168             l_rbs_header_id  := c.RBS_HEADER_ID;
2169             l_rbs_version_id := c.RBS_VERSION_ID;
2170             l_prj_index      := 1;
2171             l_project_id_tbl.delete;
2172 
2173           end if;
2174 
2175         end if;
2176 
2177         update PJI_PJP_RBS_HEADER
2178         set    RBS_VERSION_ID       = c.RBS_VERSION_ID,
2179                REPORTING_USAGE_FLAG = c.REPORTING_USAGE_FLAG,
2180                PROG_REP_USAGE_FLAG  = c.PROG_REP_USAGE_FLAG,
2181                LAST_UPDATE_DATE     = l_last_update_date,
2182                LAST_UPDATED_BY      = l_last_updated_by,
2183                LAST_UPDATE_LOGIN    = l_last_update_login
2184         where  PROJECT_ID                = c.PROJECT_ID     and
2185                RBS_VERSION_ID            = c.RBS_VERSION_ID and
2186                PLAN_VERSION_ID           = -1               and
2187                c.UPDATE_HEADER_ONLY_FLAG = 'MARK_AS_PROG_REP';
2188 
2189         if (sql%rowcount = 0) then
2190 
2191           insert into PJI_PJP_RBS_HEADER
2192           (
2193             PROJECT_ID,
2194             PLAN_VERSION_ID,
2195             RBS_VERSION_ID,
2196             REPORTING_USAGE_FLAG,
2197             PROG_REP_USAGE_FLAG,
2198             PLAN_USAGE_FLAG,
2199             LAST_UPDATE_DATE,
2200             LAST_UPDATED_BY,
2201             CREATION_DATE,
2202             CREATED_BY,
2203             LAST_UPDATE_LOGIN,
2204             PLAN_TYPE_CODE
2205           )
2206           values
2207           (
2208             c.PROJECT_ID,
2209             -1,
2210             c.RBS_VERSION_ID,
2211             c.REPORTING_USAGE_FLAG,
2212             c.PROG_REP_USAGE_FLAG,
2213             c.FP_USAGE_FLAG,
2214             l_last_update_date,
2215             l_last_updated_by,
2216             l_creation_date,
2217             l_created_by,
2218             l_last_update_login,
2219             'A'
2220           );
2221 
2222           insert into PJI_PA_PROJ_EVENTS_LOG
2223           (
2224             WORKER_ID,
2225             EVENT_TYPE,
2226             EVENT_ID,
2227             EVENT_OBJECT,
2228             OPERATION_TYPE,
2229             STATUS
2230           )
2231           select
2232             p_worker_id,
2233             'PJI_RBS_CHANGE',
2234             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
2235             c.RBS_VERSION_ID,
2236             'I',
2237             'X'
2238           from
2239             DUAL
2240           where
2241             not exists (select 1
2242                         from   PA_RBS_DENORM rbs
2243                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
2244 
2245         end if;
2246 
2247       end loop;
2248 
2249       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
2250 
2251         PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
2252                                                   l_rbs_version_id,
2253                                                   l_project_id_tbl,
2254                                                   l_return_status);
2255 
2256       end if;
2257 
2258       delete
2259       from   PJI_PA_PROJ_EVENTS_LOG
2260       where  WORKER_ID   = p_worker_id and
2261              EVENT_TYPE  = 'RBS_ASSOC' and
2262              ATTRIBUTE19 = 'MARK_AS_PROG_REP';
2263 
2264       -- RBS_ASSOC
2265 
2266       l_rbs_header_id := -1;
2267       l_rbs_version_id := -1;
2268       l_prj_index := 1;
2269       l_project_id_tbl := system.pa_num_tbl_type();
2270       l_project_id_tbl.delete;
2271 
2272       for c in rbs_assoc(p_worker_id) loop
2273 
2274         l_project_id_tbl.extend(1);
2275         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
2276         l_prj_index := l_prj_index + 1;
2277 
2278         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
2279 
2280           l_rbs_header_id := c.RBS_HEADER_ID;
2281           l_rbs_version_id := c.RBS_VERSION_ID;
2282 
2283         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
2284                c.RBS_VERSION_ID <> l_rbs_version_id) then
2285 
2286           PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
2287                                               l_project_id_tbl,
2288                                               l_return_status);
2289 
2290           l_rbs_header_id := c.RBS_HEADER_ID;
2291           l_rbs_version_id := c.RBS_VERSION_ID;
2292           l_prj_index := 1;
2293           l_project_id_tbl.delete;
2294 
2295         end if;
2296 
2297         update PJI_PJP_RBS_HEADER
2298         set    RBS_VERSION_ID    = c.RBS_VERSION_ID,
2299                LAST_UPDATE_DATE  = l_last_update_date,
2300                LAST_UPDATED_BY   = l_last_updated_by,
2301                LAST_UPDATE_LOGIN = l_last_update_login
2302         where  PROJECT_ID      = c.PROJECT_ID and
2303                RBS_VERSION_ID  = c.RBS_VERSION_ID and
2304                PLAN_VERSION_ID = -1;
2305 
2306         if (sql%rowcount = 0) then
2307 
2308           insert into PJI_PJP_RBS_HEADER
2309           (
2310             PROJECT_ID,
2311             PLAN_VERSION_ID,
2312             RBS_VERSION_ID,
2313             REPORTING_USAGE_FLAG,
2314             PROG_REP_USAGE_FLAG,
2315             PLAN_USAGE_FLAG,
2316             LAST_UPDATE_DATE,
2317             LAST_UPDATED_BY,
2318             CREATION_DATE,
2319             CREATED_BY,
2320             LAST_UPDATE_LOGIN,
2321             PLAN_TYPE_CODE
2322           )
2323           values
2324           (
2325             c.PROJECT_ID,
2326             -1,
2327             c.RBS_VERSION_ID,
2328             c.REPORTING_USAGE_FLAG,
2329             c.PROG_REP_USAGE_FLAG,
2330             c.FP_USAGE_FLAG,
2331             l_last_update_date,
2332             l_last_updated_by,
2333             l_creation_date,
2334             l_created_by,
2335             l_last_update_login,
2336             'A'
2337           );
2338 
2339           insert into PJI_PA_PROJ_EVENTS_LOG
2340           (
2341             WORKER_ID,
2342             EVENT_TYPE,
2343             EVENT_ID,
2344             EVENT_OBJECT,
2345             OPERATION_TYPE,
2346             STATUS
2347           )
2348           select
2349             p_worker_id,
2350             'PJI_RBS_CHANGE',
2351             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
2352             c.RBS_VERSION_ID,
2353             'I',
2354             'X'
2355           from
2356             DUAL
2357           where
2358             not exists (select 1
2359                         from   PA_RBS_DENORM rbs
2360                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
2361 
2362         end if;
2363 
2364       end loop;
2365 
2366       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
2367 
2368         PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
2369                                             l_project_id_tbl,
2370                                             l_return_status);
2371 
2372       end if;
2373 
2374     elsif (l_extraction_type = 'RBS') then
2375 
2376       l_rbs_header_id := -1;
2377       l_rbs_version_id := -1;
2378       l_prj_index := 1;
2379       l_project_id_tbl := system.pa_num_tbl_type();
2380       l_project_id_tbl.delete;
2381 
2382       for c in rbs_push(p_worker_id) loop
2383 
2384         l_project_id_tbl.extend(1);
2385         l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
2386         l_prj_index := l_prj_index + 1;
2387 
2388         if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
2389 
2390           l_rbs_header_id := c.RBS_HEADER_ID;
2391           l_rbs_version_id := c.RBS_VERSION_ID;
2392 
2393         elsif (c.RBS_HEADER_ID <> l_rbs_header_id or
2394                c.RBS_VERSION_ID <> l_rbs_version_id) then
2395 
2396           PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
2397                                               l_project_id_tbl,
2398                                               l_return_status);
2399 
2400           l_rbs_header_id := c.RBS_HEADER_ID;
2401           l_rbs_version_id := c.RBS_VERSION_ID;
2402           l_prj_index := 1;
2403           l_project_id_tbl.delete;
2404 
2405         end if;
2406 
2407         update PJI_PJP_RBS_HEADER
2408         set    RBS_VERSION_ID    = c.RBS_VERSION_ID,
2409                LAST_UPDATE_DATE  = l_last_update_date,
2410                LAST_UPDATED_BY   = l_last_updated_by,
2411                LAST_UPDATE_LOGIN = l_last_update_login
2412         where  PROJECT_ID      = c.PROJECT_ID and
2413                RBS_VERSION_ID  = c.OLD_RBS_VERSION_ID and
2414                PLAN_VERSION_ID = -1;
2415 
2416         insert into PJI_PA_PROJ_EVENTS_LOG
2417         (
2418           WORKER_ID,
2419           EVENT_TYPE,
2420           EVENT_ID,
2421           EVENT_OBJECT,
2422           OPERATION_TYPE,
2423           STATUS
2424         )
2425         select
2426           p_worker_id,
2427           'PJI_RBS_CHANGE',
2428           PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
2429           c.RBS_VERSION_ID,
2430           'I',
2431           'X'
2432         from
2433           DUAL
2434         where
2435           not exists (select 1
2436                       from   PA_RBS_DENORM rbs
2437                       where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
2438 
2439       end loop;
2440 
2441       if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
2442 
2443         PA_RBS_ASGMT_PVT.ASSIGN_NEW_VERSION(l_rbs_version_id,
2444                                             l_project_id_tbl,
2445                                             l_return_status);
2446 
2447       end if;
2448 
2449     end if;
2450 
2451     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_PROGRAM_RBS(p_worker_id);');
2452 
2453     commit;
2454 
2455   end UPDATE_PROGRAM_RBS;
2456 
2457 
2458   -- -----------------------------------------------------
2459   -- procedure SET_ONLINE_CONTEXT
2460   --
2461   --   History
2462   --   19-MAR-2004  SVERMETT  Created
2463   --
2464   -- This API will be called during online processing.
2465   --
2466   -- -----------------------------------------------------
2467   procedure SET_ONLINE_CONTEXT (p_event_id              in number,
2468                                 p_project_id            in number,
2469                                 p_plan_type_id          in number,
2470                                 p_old_baselined_version in number,
2471                                 p_new_baselined_version in number,
2472                                 p_old_original_version  in number,
2473                                 p_new_original_version  in number,
2474                                 p_old_struct_version    in number,
2475                                 p_new_struct_version    in number,
2476                                 p_rbs_version in number default null) is
2477 
2478   begin
2479 
2480     g_event_id              := p_event_id;
2481     g_project_id            := p_project_id;
2482     g_plan_type_id          := p_plan_type_id;
2483     g_old_baselined_version := p_old_baselined_version;
2484     g_new_baselined_version := p_new_baselined_version;
2485     g_old_original_version  := p_old_original_version;
2486     g_new_original_version  := p_new_original_version;
2487     g_old_struct_version    := p_old_struct_version;
2488     g_new_struct_version    := p_new_struct_version;
2489     g_rbs_version           := p_rbs_version;
2490 
2491   end SET_ONLINE_CONTEXT;
2492 
2493 
2494   -- -----------------------------------------------------
2495   -- procedure POPULATE_XBS_DENORM_DELTA
2496   --
2497   --   History
2498   --   19-MAR-2004  SVERMETT  Created
2499   --
2500   -- This API will be called for both online and bulk processing.
2501   --
2502   -- -----------------------------------------------------
2503   procedure POPULATE_XBS_DENORM_DELTA (p_worker_id in number default null) is
2504 
2505     l_process           varchar2(30);
2506     l_extraction_type   varchar2(30);
2507 
2508     l_program_id        number;
2509     l_rbs_header_id     number;
2510     l_rbs_version_id    number;
2511     l_prj_index         number;
2512     l_project_id_tbl    system.pa_num_tbl_type;
2513     l_count             number;
2514     l_rowid             rowid;
2515     l_return_status     varchar2(255);
2516     l_error_code        varchar2(255);
2517 
2518     l_last_update_date  date;
2519     l_last_updated_by   number;
2520     l_creation_date     date;
2521     l_created_by        number;
2522     l_last_update_login number;
2523 
2524   begin
2525 
2526     if (p_worker_id is not null) then
2527 
2528       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
2529 
2530       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_XBS_DENORM_DELTA(p_worker_id);')) then
2531         return;
2532       end if;
2533 
2534       l_last_update_date  := sysdate;
2535       l_last_updated_by   := FND_GLOBAL.USER_ID;
2536       l_creation_date     := sysdate;
2537       l_created_by        := FND_GLOBAL.USER_ID;
2538       l_last_update_login := FND_GLOBAL.LOGIN_ID;
2539 
2540       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
2541 
2542       if (l_extraction_type = 'INCREMENTAL') then
2543 
2544         insert into PJI_XBS_DENORM_DELTA delta_i
2545         (
2546           WORKER_ID,
2547           EVENT_ID,
2548           STRUCT_TYPE,
2549           PRG_GROUP,
2550           STRUCT_VERSION_ID,
2551           SUP_PROJECT_ID,
2552           SUP_ID,
2553           SUP_EMT_ID,
2554           SUBRO_ID,
2555           SUB_ID,
2556           SUB_EMT_ID,
2557           SUP_LEVEL,
2558           SUB_LEVEL,
2559           SUB_ROLLUP_ID,
2560           SUB_LEAF_FLAG,
2561           RELATIONSHIP_TYPE,
2562           SIGN
2563         )
2564         select
2565           p_worker_id,
2566           EVENT_ID,
2567           STRUCT_TYPE,
2568           PRG_GROUP,
2569           STRUCT_VERSION_ID,
2570           SUP_PROJECT_ID,
2571           SUP_ID,
2572           SUP_EMT_ID,
2573           SUBRO_ID,
2574           SUB_ID,
2575           SUB_EMT_ID,
2576           decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
2577                                         sum(SUP_LEVEL_NEW)) SUP_LEVEL,
2578           decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
2579                                         sum(SUB_LEVEL_NEW)) SUB_LEVEL,
2580           SUB_ROLLUP_ID,
2581           SUB_LEAF_FLAG,
2582           RELATIONSHIP_TYPE,
2583           sum(SIGN) SIGN
2584         from
2585           (
2586           select
2587             distinct
2588             log.EVENT_ID,
2589             wbs.STRUCT_TYPE,
2590             -1                               PRG_GROUP,
2591             wbs.STRUCT_VERSION_ID,
2592             wbs.SUP_PROJECT_ID,
2593             -1                               SUP_ID,
2594             wbs.SUP_EMT_ID,
2595             -1                               SUBRO_ID,
2596             -1                               SUB_ID,
2597             wbs.SUB_EMT_ID,
2598             wbs.SUP_LEVEL                    SUP_LEVEL_NEW,
2599             wbs.SUB_LEVEL                    SUB_LEVEL_NEW,
2600             0                                SUP_LEVEL_OLD,
2601             0                                SUB_LEVEL_OLD,
2602             wbs.SUB_ROLLUP_ID,
2603             'X'                              SUB_LEAF_FLAG,
2604             'X'                              RELATIONSHIP_TYPE,
2605             +1                               SIGN
2606           from
2607             PA_XBS_DENORM wbs,
2608             PJI_PA_PROJ_EVENTS_LOG log
2609           where
2610             log.WORKER_ID         =  p_worker_id                   and
2611             log.EVENT_TYPE        in ('WBS_CHANGE', 'WBS_PUBLISH') and
2612             wbs.STRUCT_TYPE       =  'WBS'                         and
2613             wbs.SUP_PROJECT_ID    =  log.ATTRIBUTE1                and
2614             wbs.STRUCT_VERSION_ID =  log.EVENT_OBJECT
2615           union all
2616           select
2617             distinct
2618             log.EVENT_ID,
2619             wbs.STRUCT_TYPE,
2620             -1                               PRG_GROUP,
2621             wbs.STRUCT_VERSION_ID,
2622             wbs.SUP_PROJECT_ID,
2623             -1                               SUP_ID,
2624             wbs.SUP_EMT_ID,
2625             -1                               SUBRO_ID,
2626             -1                               SUB_ID,
2627             wbs.SUB_EMT_ID,
2628             0                                SUP_LEVEL_NEW,
2629             0                                SUB_LEVEL_NEW,
2630             wbs.SUP_LEVEL                    SUP_LEVEL_OLD,
2631             wbs.SUB_LEVEL                    SUB_LEVEL_OLD,
2632             wbs.SUB_ROLLUP_ID,
2633             'X'                              SUB_LEAF_FLAG,
2634             'X'                              RELATIONSHIP_TYPE,
2635             -1                               SIGN
2636           from
2637             PJI_XBS_DENORM wbs,
2638             PJI_PA_PROJ_EVENTS_LOG log
2639           where
2640             log.WORKER_ID         =  p_worker_id                   and
2641             log.EVENT_TYPE        in ('WBS_CHANGE', 'WBS_PUBLISH') and
2642             wbs.STRUCT_TYPE       =  'WBS'                         and
2643             wbs.SUP_PROJECT_ID    =  log.ATTRIBUTE1                and
2644             wbs.STRUCT_VERSION_ID =  log.ATTRIBUTE2
2645           union all
2646           select
2647             distinct
2648             -1                               EVENT_ID,
2649             prg.STRUCT_TYPE,
2650             -1                               PRG_GROUP,
2651             -1                               STRUCT_VERSION_ID,
2652             prg.SUP_PROJECT_ID,
2653             prg.SUP_ID,
2654             prg.SUP_EMT_ID,
2655             -1                               SUBRO_ID,
2656             prg.SUB_ID,
2657             prg.SUB_EMT_ID,
2658             prg.SUP_LEVEL                    SUP_LEVEL_NEW,
2659             prg.SUB_LEVEL                    SUB_LEVEL_NEW,
2660             0                                SUP_LEVEL_OLD,
2661             0                                SUB_LEVEL_OLD,
2662             prg.SUB_ROLLUP_ID,
2663             'X'                              SUB_LEAF_FLAG,
2664             prg.RELATIONSHIP_TYPE,
2665             +1                               SIGN
2666           from
2667             PA_XBS_DENORM prg,
2668             PJI_PA_PROJ_EVENTS_LOG log
2669           where
2670             log.WORKER_ID     =  p_worker_id                        and
2671             log.EVENT_TYPE    =  'PRG_CHANGE'                       and
2672             log.EVENT_OBJECT  <> -1                                 and
2673             prg.STRUCT_TYPE   =  'PRG'                              and
2674             prg.PRG_GROUP     in (log.EVENT_OBJECT, log.ATTRIBUTE1)
2675           union all
2676           select
2677             distinct
2678             -1                               EVENT_ID,
2679             prg.STRUCT_TYPE,
2680             -1                               PRG_GROUP,
2681             -1                               STRUCT_VERSION_ID,
2682             prg.SUP_PROJECT_ID,
2683             prg.SUP_ID,
2684             prg.SUP_EMT_ID,
2685             -1                               SUBRO_ID,
2686             prg.SUB_ID,
2687             prg.SUB_EMT_ID,
2688             0                                SUP_LEVEL_NEW,
2689             0                                SUB_LEVEL_NEW,
2690             prg.SUP_LEVEL                    SUP_LEVEL_OLD,
2691             prg.SUB_LEVEL                    SUB_LEVEL_OLD,
2692             prg.SUB_ROLLUP_ID,
2693             'X'                              SUB_LEAF_FLAG,
2694             prg.RELATIONSHIP_TYPE,
2695             -1 SIGN
2696           from
2697             PJI_XBS_DENORM prg,
2698             PJI_PA_PROJ_EVENTS_LOG log
2699           where
2700             log.WORKER_ID    =  p_worker_id  and
2701             log.EVENT_TYPE   =  'PRG_CHANGE' and
2702             log.EVENT_OBJECT <> -1           and
2703             prg.STRUCT_TYPE  =  'PRG'        and
2704             prg.PRG_GROUP    in (log.EVENT_OBJECT, log.ATTRIBUTE1)
2705           )
2706         group by
2707           EVENT_ID,
2708           STRUCT_TYPE,
2709           PRG_GROUP,
2710           STRUCT_VERSION_ID,
2711           SUP_PROJECT_ID,
2712           SUP_ID,
2713           SUP_EMT_ID,
2714           SUBRO_ID,
2715           SUB_ID,
2716           SUB_EMT_ID,
2717           SUB_ROLLUP_ID,
2718           SUB_LEAF_FLAG,
2719           RELATIONSHIP_TYPE
2720         having
2721           sum(SIGN) <> 0;
2722 
2723         -- push down program RBSs across new links
2724 
2725         insert into PJI_PA_PROJ_EVENTS_LOG
2726         (
2727           WORKER_ID,
2728           LOG_ROWID,
2729           EVENT_TYPE,
2730           EVENT_ID,
2731           EVENT_OBJECT,
2732           OPERATION_TYPE,
2733           STATUS,
2734           ATTRIBUTE_CATEGORY,
2735           ATTRIBUTE1,
2736           ATTRIBUTE2,
2737           ATTRIBUTE3,
2738           ATTRIBUTE4,
2739           ATTRIBUTE5,
2740           ATTRIBUTE6,
2741           ATTRIBUTE7,
2742           ATTRIBUTE8,
2743           ATTRIBUTE9,
2744           ATTRIBUTE10,
2745           ATTRIBUTE11,
2746           ATTRIBUTE12,
2747           ATTRIBUTE13,
2748           ATTRIBUTE14,
2749           ATTRIBUTE15,
2750           ATTRIBUTE16,
2751           ATTRIBUTE17,
2752           ATTRIBUTE18,
2753           ATTRIBUTE19,
2754           ATTRIBUTE20
2755         )
2756         select
2757           distinct
2758           evt.WORKER_ID,
2759           evt.LOG_ROWID,
2760           evt.EVENT_TYPE,
2761           evt.EVENT_ID,
2762           evt.EVENT_OBJECT,
2763           evt.OPERATION_TYPE,
2764           evt.STATUS,
2765           evt.ATTRIBUTE_CATEGORY,
2766           evt.ATTRIBUTE1,
2767           evt.ATTRIBUTE2,
2768           evt.ATTRIBUTE3,
2769           evt.ATTRIBUTE4,
2770           evt.ATTRIBUTE5,
2771           evt.ATTRIBUTE6,
2772           evt.ATTRIBUTE7,
2773           evt.ATTRIBUTE8,
2774           evt.ATTRIBUTE9,
2775           evt.ATTRIBUTE10,
2776           evt.ATTRIBUTE11,
2777           evt.ATTRIBUTE12,
2778           evt.ATTRIBUTE13,
2779           evt.ATTRIBUTE14,
2780           evt.ATTRIBUTE15,
2781           evt.ATTRIBUTE16,
2782           evt.ATTRIBUTE17,
2783           evt.ATTRIBUTE18,
2784           evt.ATTRIBUTE19,
2785           evt.ATTRIBUTE20
2786         from
2787           (
2788           select
2789             distinct
2790             p_worker_id                   WORKER_ID,
2791             null                          LOG_ROWID,
2792             'RBS_ASSOC'                   EVENT_TYPE,
2793             -1                            EVENT_ID,
2794             sup_rbs_hdr.RBS_VERSION_ID    EVENT_OBJECT,
2795             'I'                           OPERATION_TYPE,
2796             'X'                           STATUS,
2797             null                          ATTRIBUTE_CATEGORY,
2798             sub_ver.PROJECT_ID            ATTRIBUTE1,
2799             hdr.RBS_HEADER_ID             ATTRIBUTE2,
2800             null                          ATTRIBUTE3,
2801             null                          ATTRIBUTE4,
2802             null                          ATTRIBUTE5,
2803             null                          ATTRIBUTE6,
2804             null                          ATTRIBUTE7,
2805             null                          ATTRIBUTE8,
2806             null                          ATTRIBUTE9,
2807             null                          ATTRIBUTE10,
2808             null                          ATTRIBUTE11,
2809             null                          ATTRIBUTE12,
2810             null                          ATTRIBUTE13,
2811             null                          ATTRIBUTE14,
2812             null                          ATTRIBUTE15,
2813             null                          ATTRIBUTE16,
2814             prg.SUP_PROJECT_ID            ATTRIBUTE17, -- program's PROJECT_ID
2815             'N'                           ATTRIBUTE18, -- PROG_REP_USAGE_FLAG
2816             null                          ATTRIBUTE19, -- update header only
2817             'NEW_CONVERTED_RBS_PRG_EVENT' ATTRIBUTE20  -- flg converted events
2818           from
2819             PJI_XBS_DENORM_DELTA     prg,
2820             PJI_PJP_RBS_HEADER       sup_rbs_hdr,
2821             PA_PROJ_ELEMENT_VERSIONS sub_ver,
2822             PA_RBS_VERSIONS_B        hdr
2823           where
2824             prg.STRUCT_TYPE                 =  'PRG'                      and
2825             prg.SUP_ID                      <> prg.SUB_ID                 and
2826             prg.SIGN                        =  1                          and
2827             sup_rbs_hdr.PROJECT_ID          =  prg.SUP_PROJECT_ID         and
2828             sup_rbs_hdr.PLAN_VERSION_ID     =  -1                         and
2829             sup_rbs_hdr.PROG_REP_USAGE_FLAG =  'Y'                        and
2830             sub_ver.ELEMENT_VERSION_ID      =  prg.SUB_ID                 and
2831             hdr.RBS_VERSION_ID              =  sup_rbs_hdr.RBS_VERSION_ID
2832           )                      evt,
2833           PJI_PJP_RBS_HEADER     sub_rbs_hdr,
2834           PJI_PA_PROJ_EVENTS_LOG log
2835         where
2836           evt.ATTRIBUTE1         = sub_rbs_hdr.PROJECT_ID      (+) and
2837           -1                     = sub_rbs_hdr.PLAN_VERSION_ID (+) and
2838           evt.EVENT_OBJECT       = sub_rbs_hdr.RBS_VERSION_ID  (+) and
2839           sub_rbs_hdr.PROJECT_ID is null                           and
2840           'RBS_ASSOC'            = log.EVENT_TYPE              (+) and
2841           evt.ATTRIBUTE1         = log.ATTRIBUTE1              (+) and
2842           evt.EVENT_OBJECT       = log.EVENT_OBJECT            (+) and
2843           log.EVENT_TYPE         is null;
2844 
2845         l_program_id     := -1;
2846         l_rbs_header_id  := -1;
2847         l_rbs_version_id := -1;
2848         l_prj_index      :=  1;
2849         l_project_id_tbl :=  system.pa_num_tbl_type();
2850         l_project_id_tbl.delete;
2851 
2852         for c in (select
2853                     distinct
2854                     log.ATTRIBUTE2   RBS_HEADER_ID,
2855                     log.EVENT_OBJECT RBS_VERSION_ID,
2856                     log.ATTRIBUTE1   PROJECT_ID,
2857                     log.ATTRIBUTE17  PROGRAM_ID,
2858                     log.ATTRIBUTE18  PROG_REP_USAGE_FLAG,
2859                     'Y'              REPORTING_USAGE_FLAG,
2860                     'N'              FP_USAGE_FLAG,
2861                     log.ATTRIBUTE19  UPDATE_HEADER_ONLY_FLAG
2862                   from
2863                     PJI_PA_PROJ_EVENTS_LOG log
2864                   where
2865                     log.WORKER_ID   = p_worker_id                   and
2866                     log.EVENT_TYPE  = 'RBS_ASSOC'                   and
2867                     log.ATTRIBUTE20 = 'NEW_CONVERTED_RBS_PRG_EVENT'
2868                   order by
2869                     log.ATTRIBUTE17,
2870                     log.ATTRIBUTE2,
2871                     log.EVENT_OBJECT) loop
2872 
2873           l_project_id_tbl.extend(1);
2874           l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
2875           l_prj_index := l_prj_index + 1;
2876 
2877           if (l_rbs_header_id = -1 and l_rbs_version_id = -1) then
2878 
2879             l_program_id     := c.PROGRAM_ID;
2880             l_rbs_header_id  := c.RBS_HEADER_ID;
2881             l_rbs_version_id := c.RBS_VERSION_ID;
2882 
2883           elsif (c.PROGRAM_ID     <> l_program_id or
2884                  c.RBS_HEADER_ID  <> l_rbs_header_id or
2885                  c.RBS_VERSION_ID <> l_rbs_version_id) then
2886 
2887             PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
2888                                                       l_rbs_version_id,
2889                                                       l_project_id_tbl,
2890                                                       l_return_status);
2891 
2892             l_program_id     := c.PROGRAM_ID;
2893             l_rbs_header_id  := c.RBS_HEADER_ID;
2894             l_rbs_version_id := c.RBS_VERSION_ID;
2895             l_prj_index      := 1;
2896             l_project_id_tbl.delete;
2897 
2898           end if;
2899 
2900           insert into PJI_PJP_RBS_HEADER
2901           (
2902             PROJECT_ID,
2903             PLAN_VERSION_ID,
2904             RBS_VERSION_ID,
2905             REPORTING_USAGE_FLAG,
2906             PROG_REP_USAGE_FLAG,
2907             PLAN_USAGE_FLAG,
2908             LAST_UPDATE_DATE,
2909             LAST_UPDATED_BY,
2910             CREATION_DATE,
2911             CREATED_BY,
2912             LAST_UPDATE_LOGIN,
2913             PLAN_TYPE_CODE
2914           )
2915           values
2916           (
2917             c.PROJECT_ID,
2918             -1,
2919             c.RBS_VERSION_ID,
2920             c.REPORTING_USAGE_FLAG,
2921             c.PROG_REP_USAGE_FLAG,
2922             c.FP_USAGE_FLAG,
2923             l_last_update_date,
2924             l_last_updated_by,
2925             l_creation_date,
2926             l_created_by,
2927             l_last_update_login,
2928             'A'
2929           );
2930 
2931           insert into PJI_PA_PROJ_EVENTS_LOG
2932           (
2933             WORKER_ID,
2934             EVENT_TYPE,
2935             EVENT_ID,
2936             EVENT_OBJECT,
2937             OPERATION_TYPE,
2938             STATUS
2939           )
2940           select
2941             p_worker_id,
2942             'PJI_RBS_CHANGE',
2943             PA_PJI_PROJ_EVENTS_LOG_S.NEXTVAL,
2944             c.RBS_VERSION_ID,
2945             'I',
2946             'X'
2947           from
2948             DUAL
2949           where
2950             not exists (select 1
2951                         from   PA_RBS_DENORM rbs
2952                         where  rbs.STRUCT_VERSION_ID = c.RBS_VERSION_ID);
2953 
2954         end loop;
2955 
2956         if (l_rbs_header_id <> -1 and l_rbs_version_id <> -1) then
2957 
2958           PA_RBS_ASGMT_PVT.ASSOCIATE_RBS_TO_PROGRAM(l_rbs_header_id,
2959                                                     l_rbs_version_id,
2960                                                     l_project_id_tbl,
2961                                                     l_return_status);
2962 
2963         end if;
2964 
2965       end if;
2966 
2967       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_XBS_DENORM_DELTA(p_worker_id);');
2968 
2969       commit;
2970 
2971     else -- online mode
2972 
2973       -- get WBS delta for online processing
2974 
2975       insert into PJI_XBS_DENORM_DELTA_T
2976       (
2977         WORKER_ID,
2978         STRUCT_TYPE,
2979         PRG_GROUP,
2980         STRUCT_VERSION_ID,
2981         SUP_PROJECT_ID,
2982         SUP_ID,
2983         SUP_EMT_ID,
2984         SUBRO_ID,
2985         SUB_ID,
2986         SUB_EMT_ID,
2987         SUP_LEVEL,
2988         SUB_LEVEL,
2989         SUB_ROLLUP_ID,
2990         SUB_LEAF_FLAG,
2991         RELATIONSHIP_TYPE,
2992         SIGN
2993       )
2994       select
2995         1 WORKER_ID,
2996         -- p_worker_id WORKER_ID,
2997         STRUCT_TYPE,
2998         PRG_GROUP,
2999         STRUCT_VERSION_ID,
3000         SUP_PROJECT_ID,
3001         SUP_ID,
3002         SUP_EMT_ID,
3003         SUBRO_ID,
3004         SUB_ID,
3005         SUB_EMT_ID,
3006         decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
3007                                       sum(SUP_LEVEL_NEW)) SUP_LEVEL,
3008         decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
3009                                       sum(SUB_LEVEL_NEW)) SUB_LEVEL,
3010         SUB_ROLLUP_ID,
3011         SUB_LEAF_FLAG,
3012         RELATIONSHIP_TYPE,
3013         sum(SIGN) SIGN
3014       from
3015         (
3016         select
3017           wbs.STRUCT_TYPE,
3018           -1                               PRG_GROUP,
3019           wbs.STRUCT_VERSION_ID,
3020           wbs.SUP_PROJECT_ID,
3021           -1                               SUP_ID,
3022           wbs.SUP_EMT_ID,
3023           -1                               SUBRO_ID,
3024           -1                               SUB_ID,
3025           wbs.SUB_EMT_ID,
3026           wbs.SUP_LEVEL                    SUP_LEVEL_NEW,
3027           wbs.SUB_LEVEL                    SUB_LEVEL_NEW,
3028           0                                SUP_LEVEL_OLD,
3029           0                                SUB_LEVEL_OLD,
3030           wbs.SUB_ROLLUP_ID,
3031           'X'                              SUB_LEAF_FLAG,
3032           'X'                              RELATIONSHIP_TYPE,
3033           +1                               SIGN
3034         from
3035           PA_XBS_DENORM wbs
3036         where
3037           wbs.STRUCT_TYPE       = 'WBS' and
3038           wbs.SUP_PROJECT_ID    = g_project_id and
3039           wbs.STRUCT_VERSION_ID in (g_new_struct_version)
3040         union all
3041         select
3042           wbs.STRUCT_TYPE,
3043           -1                               PRG_GROUP,
3044           wbs.STRUCT_VERSION_ID,
3045           wbs.SUP_PROJECT_ID,
3046           -1                               SUP_ID,
3047           wbs.SUP_EMT_ID,
3048           -1                               SUBRO_ID,
3049           -1                               SUB_ID,
3050           wbs.SUB_EMT_ID,
3051           0                                SUP_LEVEL_NEW,
3052           0                                SUB_LEVEL_NEW,
3053           wbs.SUP_LEVEL                    SUP_LEVEL_OLD,
3054           wbs.SUB_LEVEL                    SUB_LEVEL_OLD,
3055           wbs.SUB_ROLLUP_ID,
3056           'X'                              SUB_LEAF_FLAG,
3057           'X'                              RELATIONSHIP_TYPE,
3058           -1                               SIGN
3059         from
3060           PJI_XBS_DENORM wbs
3061         where
3062           wbs.STRUCT_TYPE       =  'WBS' and
3063           wbs.SUP_PROJECT_ID    =  g_project_id and
3064           wbs.STRUCT_VERSION_ID in (g_old_struct_version)
3065         )
3066       group by
3067         STRUCT_TYPE,
3068         PRG_GROUP,
3069         STRUCT_VERSION_ID,
3070         SUP_PROJECT_ID,
3071         SUP_ID,
3072         SUP_EMT_ID,
3073         SUBRO_ID,
3074         SUB_ID,
3075         SUB_EMT_ID,
3076         SUB_ROLLUP_ID,
3077         SUB_LEAF_FLAG,
3078         RELATIONSHIP_TYPE
3079       having
3080         sum(SIGN) <> 0;
3081 
3082     end if;
3083 
3084   end POPULATE_XBS_DENORM_DELTA;
3085 
3086 
3087   -- -----------------------------------------------------
3088   -- procedure POPULATE_RBS_DENORM_DELTA
3089   --
3090   --   History
3091   --   19-MAR-2004  SVERMETT  Created
3092   --
3093   -- Internal PJP Summarization API.
3094   --
3095   -- Called by RBS program
3096   --
3097   -- -----------------------------------------------------
3098   procedure POPULATE_RBS_DENORM_DELTA (p_worker_id in number) is
3099 
3100     l_process varchar2(30);
3101     l_extraction_type varchar2(30);
3102 
3103   begin
3104 
3105     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
3106 
3107     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_DENORM_DELTA(p_worker_id);')) then
3108       return;
3109     end if;
3110 
3111     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
3112 
3113     if (l_extraction_type = 'RBS') then
3114 
3115       insert into PJI_RBS_DENORM_DELTA delta_i
3116       (
3117         WORKER_ID,
3118         STRUCT_VERSION_ID,
3119         SUP_ID,
3120         SUBRO_ID,
3121         SUB_ID,
3122         SUP_LEVEL,
3123         SUB_LEVEL,
3124         SUB_LEAF_FLAG,
3125         SIGN
3126       )
3127       select
3128         p_worker_id,
3129         STRUCT_VERSION_ID,
3130         SUP_ID,
3131         SUBRO_ID,
3132         SUB_ID,
3133         decode(sum(SUP_LEVEL_NEW), 0, sum(SUP_LEVEL_OLD),
3134                                       sum(SUP_LEVEL_NEW)) SUP_LEVEL,
3135         decode(sum(SUB_LEVEL_NEW), 0, sum(SUB_LEVEL_OLD),
3136                                       sum(SUB_LEVEL_NEW)) SUB_LEVEL,
3137         SUB_LEAF_FLAG,
3138         sum(SIGN) SIGN
3139       from
3140         (
3141         select
3142           distinct
3143           rbs.STRUCT_VERSION_ID,
3144           rbs.SUP_ID,
3145           -1                               SUBRO_ID,
3146           rbs.SUB_ID,
3147           rbs.SUP_LEVEL                    SUP_LEVEL_NEW,
3148           rbs.SUB_LEVEL                    SUB_LEVEL_NEW,
3149           0                                SUP_LEVEL_OLD,
3150           0                                SUB_LEVEL_OLD,
3151           'X'                              SUB_LEAF_FLAG,
3152           +1                               SIGN
3153         from
3154           PA_RBS_DENORM rbs,
3155           PJI_PA_PROJ_EVENTS_LOG log
3156         where
3157           log.WORKER_ID         = p_worker_id and
3158           log.EVENT_TYPE        = 'RBS_PUSH'  and
3159           rbs.STRUCT_VERSION_ID = log.EVENT_OBJECT
3160         union all
3161         select
3162           distinct
3163           rbs.STRUCT_VERSION_ID,
3164           rbs.SUP_ID,
3165           -1                               SUBRO_ID,
3166           rbs.SUB_ID,
3167           0                                SUP_LEVEL_NEW,
3168           0                                SUB_LEVEL_NEW,
3169           rbs.SUP_LEVEL                    SUP_LEVEL_OLD,
3170           rbs.SUB_LEVEL                    SUB_LEVEL_OLD,
3171           'X'                              SUB_LEAF_FLAG,
3172           -1                               SIGN
3173         from
3174           PJI_RBS_DENORM rbs,
3175           PJI_PA_PROJ_EVENTS_LOG log
3176         where
3177           log.WORKER_ID         = p_worker_id and
3178           log.EVENT_TYPE        = 'RBS_PUSH'  and
3179           rbs.STRUCT_VERSION_ID = log.ATTRIBUTE2
3180         )
3181       group by
3182         STRUCT_VERSION_ID,
3183         SUP_ID,
3184         SUBRO_ID,
3185         SUB_ID,
3186         SUB_LEAF_FLAG
3187       having
3188         sum(SIGN) <> 0;
3189 
3190     end if;
3191 
3192     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_DENORM_DELTA(p_worker_id);');
3193 
3194     commit;
3195 
3196   end POPULATE_RBS_DENORM_DELTA;
3197 
3198 
3199   -- -----------------------------------------------------
3200   -- procedure AGGREGATE_FP_SLICES
3201   --
3202   --   History
3203   --   19-MAR-2004  SVERMETT  Created
3204   --
3205   -- Internal PJP Summarization API.
3206   --
3207   -- Called by RBS program
3208   --
3209   -- -----------------------------------------------------
3210   procedure AGGREGATE_FP_SLICES (p_worker_id in number) is
3211 
3212     l_process           varchar2(30);
3213     l_extraction_type   varchar2(30);
3214 
3215     l_txn_currency_flag varchar2(1);
3216     l_g2_currency_flag  varchar2(1);
3217 
3218     l_g1_currency_code  varchar2(30);
3219     l_g2_currency_code  varchar2(30);
3220 
3221     l_plan_type_id      number;    -- Bug#5099574
3222     l_refresh_code      number;
3223 
3224 
3225   begin
3226 
3227     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
3228 
3229     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);')) then
3230       return;
3231     end if;
3232 
3233     l_extraction_type :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
3234 
3235    --  Bug#5099574  - Start
3236 
3237       l_plan_type_id     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
3238       l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
3239 
3240       if (l_plan_type_id = -1) then
3241         l_plan_type_id := null;
3242       end if;
3243 
3244     -- If  condtion is true then mark the process as completed and return
3245       if ( l_extraction_type='PARTIAL' and ( bitand(l_refresh_code,1) <> 1) ) then
3246        PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);');
3247        commit;
3248        return;
3249       end if;
3250 
3251   --  Bug#5099574 - End
3252 
3253 
3254     select
3255       TXN_CURR_FLAG,
3256       GLOBAL_CURR2_FLAG
3257     into
3258       l_txn_currency_flag,
3259       l_g2_currency_flag
3260     from
3261       PJI_SYSTEM_SETTINGS;
3262 
3263     l_g1_currency_code := PJI_UTILS.GET_GLOBAL_PRIMARY_CURRENCY;
3264     l_g2_currency_code := PJI_UTILS.GET_GLOBAL_SECONDARY_CURRENCY;
3265 
3266     insert into PJI_FP_AGGR_PJP0 pjp0_i
3267     (
3268       WORKER_ID,
3269       TXN_ACCUM_HEADER_ID,
3270       PROJECT_ID,
3271       PROJECT_ORG_ID,
3272       PROJECT_ORGANIZATION_ID,
3273       PROJECT_ELEMENT_ID,
3274       TIME_ID,
3275       PERIOD_TYPE_ID,
3276       CALENDAR_TYPE,
3277       RBS_AGGR_LEVEL,
3278       WBS_ROLLUP_FLAG,
3279       PRG_ROLLUP_FLAG,
3280       CURR_RECORD_TYPE_ID,
3281       CURRENCY_CODE,
3282       RBS_ELEMENT_ID,
3283       RBS_VERSION_ID,
3284       PLAN_VERSION_ID,
3285       PLAN_TYPE_ID,
3286       RAW_COST,
3287       BRDN_COST,
3288       REVENUE,
3289       BILL_RAW_COST,
3290       BILL_BRDN_COST,
3291       BILL_LABOR_RAW_COST,
3292       BILL_LABOR_BRDN_COST,
3293       BILL_LABOR_HRS,
3294       EQUIPMENT_RAW_COST,
3295       EQUIPMENT_BRDN_COST,
3296       CAPITALIZABLE_RAW_COST,
3297       CAPITALIZABLE_BRDN_COST,
3298       LABOR_RAW_COST,
3299       LABOR_BRDN_COST,
3300       LABOR_HRS,
3301       LABOR_REVENUE,
3302       EQUIPMENT_HOURS,
3303       BILLABLE_EQUIPMENT_HOURS,
3304       SUP_INV_COMMITTED_COST,
3305       PO_COMMITTED_COST,
3306       PR_COMMITTED_COST,
3307       OTH_COMMITTED_COST
3308     )
3309     select
3310       src.WORKER_ID,
3311       src.TXN_ACCUM_HEADER_ID,
3312       src.PROJECT_ID,
3313       src.PROJECT_ORG_ID,
3314       src.PROJECT_ORGANIZATION_ID,
3315       src.PROJECT_ELEMENT_ID,
3316       src.TIME_ID,
3317       src.PERIOD_TYPE_ID,
3318       src.CALENDAR_TYPE,
3319       src.RBS_AGGR_LEVEL,
3320       src.WBS_ROLLUP_FLAG,
3321       src.PRG_ROLLUP_FLAG,
3322       src.CURR_RECORD_TYPE_ID,
3323       src.CURRENCY_CODE,
3324       src.RBS_ELEMENT_ID,
3325       src.RBS_VERSION_ID,
3326       src.PLAN_VERSION_ID,
3327       src.PLAN_TYPE_ID,
3328       sum(src.RAW_COST)                               RAW_COST,
3329       sum(src.BRDN_COST)                              BRDN_COST,
3330       sum(src.REVENUE)                                REVENUE,
3331       sum(decode(src.PROJECT_TYPE_CLASS, 'B',
3332                  src.BILL_RAW_COST, to_number(null))) BILL_RAW_COST,
3333       sum(decode(src.PROJECT_TYPE_CLASS, 'B',
3334                  src.BILL_BRDN_COST, to_number(null)))BILL_BRDN_COST,
3335       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
3336                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
3337                  src.BILL_RAW_COST, to_number(null))) BILL_LABOR_RAW_COST,
3338       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
3339                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
3340                  src.BILL_BRDN_COST, to_number(null)))BILL_LABOR_BRDN_COST,
3341       sum(decode(src.PROJECT_TYPE_CLASS || '_' ||
3342                  cls.RESOURCE_CLASS_CODE, 'B_PEOPLE',
3343                  src.BILL_QUANTITY, to_number(null))) BILL_LABOR_HRS,
3344       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
3345                  src.RAW_COST, to_number(null)))      EQUIPMENT_RAW_COST,
3346       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
3347                  src.BRDN_COST, to_number(null)))     EQUIPMENT_BRDN_COST,
3348       sum(decode(src.PROJECT_TYPE_CLASS, 'C',
3349                  src.BILL_RAW_COST, to_number(null))) CAPITALIZABLE_RAW_COST,
3350       sum(decode(src.PROJECT_TYPE_CLASS, 'C',
3351                  src.BILL_BRDN_COST, to_number(null)))CAPITALIZABLE_BRDN_COST,
3352       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
3353                  src.RAW_COST, to_number(null)))      LABOR_RAW_COST,
3354       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
3355                  src.BRDN_COST, to_number(null)))     LABOR_BRDN_COST,
3356       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
3357                  src.QUANTITY, to_number(null)))      LABOR_HRS,
3358       sum(decode(cls.RESOURCE_CLASS_CODE, 'PEOPLE',
3359                  src.REVENUE, to_number(null)))       LABOR_REVENUE,
3360       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
3361                  src.QUANTITY, to_number(null)))      EQUIPMENT_HOURS,
3362       sum(decode(cls.RESOURCE_CLASS_CODE, 'EQUIPMENT',
3363                  src.BILL_QUANTITY, to_number(null))) BILLABLE_EQUIPMENT_HOURS,
3364       sum(src.SUP_INV_COMMITTED_COST)                 SUP_INV_COMMITTED_COST,
3365       sum(src.PO_COMMITTED_COST)                      PO_COMMITTED_COST,
3366       sum(src.PR_COMMITTED_COST)                      PR_COMMITTED_COST,
3367       sum(src.OTH_COMMITTED_COST)                     OTH_COMMITTED_COST
3368     from
3369       (
3370       select
3371         src3.WORKER_ID,
3372         src3.TXN_ACCUM_HEADER_ID,
3373         src3.RESOURCE_CLASS_ID,
3374         src3.PROJECT_ID,
3375         src3.PROJECT_ORG_ID,
3376         src3.PROJECT_ORGANIZATION_ID,
3377         src3.PROJECT_TYPE_CLASS,
3378         src3.PROJECT_ELEMENT_ID,
3379         src3.TIME_ID,
3380         src3.PERIOD_TYPE_ID,
3381         src3.CALENDAR_TYPE,
3382         src3.RBS_AGGR_LEVEL,
3383         src3.WBS_ROLLUP_FLAG,
3384         src3.PRG_ROLLUP_FLAG,
3385         sum(src3.CURR_RECORD_TYPE_ID)                 CURR_RECORD_TYPE_ID,
3386         nvl(src3.CURRENCY_CODE, 'PJI$NULL')           CURRENCY_CODE,
3387         src3.RBS_ELEMENT_ID,
3388         src3.RBS_VERSION_ID,
3389         src3.PLAN_VERSION_ID,
3390         src3.PLAN_TYPE_ID,
3391         max(src3.RAW_COST)                            RAW_COST,
3392         max(src3.BRDN_COST)                           BRDN_COST,
3393         max(src3.REVENUE)                             REVENUE,
3394         max(src3.BILL_RAW_COST)                       BILL_RAW_COST,
3395         max(src3.BILL_BRDN_COST)                      BILL_BRDN_COST,
3396         max(src3.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
3397         max(src3.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
3398         max(src3.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
3399         max(src3.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
3400         max(src3.QUANTITY)                            QUANTITY,
3401         max(src3.BILL_QUANTITY)                       BILL_QUANTITY
3402       from
3403         (
3404         select /*+ ordered */
3405           p_worker_id                                 WORKER_ID,
3406           src.TXN_ACCUM_HEADER_ID,
3407           src.RESOURCE_CLASS_ID,
3408           src.PROJECT_ID,
3409           src.PROJECT_ORG_ID,
3410           map.PROJECT_ORGANIZATION_ID,
3411           src.PROJECT_TYPE_CLASS,
3412           decode(src.TASK_ID,
3413                  -1, ver.PROJ_ELEMENT_ID,
3414                  src.TASK_ID)                         PROJECT_ELEMENT_ID,
3415           src.RECVR_PERIOD_ID                         TIME_ID,
3416           32                                          PERIOD_TYPE_ID,
3417           decode(src.RECVR_PERIOD_TYPE,
3418                  'ENT', 'E',
3419                  'GL',  'G',
3420                  'PA',  'P')                          CALENDAR_TYPE,
3421           'L'                                         RBS_AGGR_LEVEL,
3422           'N'                                         WBS_ROLLUP_FLAG,
3423           'N'                                         PRG_ROLLUP_FLAG,
3424           invert.INVERT_ID                            CURR_RECORD_TYPE_ID,
3425           decode(invert.INVERT_ID,
3426                  1,   l_g1_currency_code,
3427                  2,   l_g2_currency_code,
3428                  4,   info.PF_CURRENCY_CODE,
3429                  8,   map.PRJ_CURRENCY_CODE,
3430                  16,  src.TXN_CURRENCY_CODE,
3431                  32,  l_g1_currency_code,
3432                  64,  l_g2_currency_code,
3433                  128, info.PF_CURRENCY_CODE,
3434                  256, map.PRJ_CURRENCY_CODE)          DIFF_CURRENCY_CODE,
3435           DIFF_ROWNUM                                 DIFF_ROWNUM,
3436           decode(invert.INVERT_ID,
3437                  1,   l_g1_currency_code,
3438                  2,   l_g2_currency_code,
3439                  4,   info.PF_CURRENCY_CODE,
3440                  8,   map.PRJ_CURRENCY_CODE,
3441                  16,  src.TXN_CURRENCY_CODE,
3442                  32,  src.TXN_CURRENCY_CODE,
3443                  64,  src.TXN_CURRENCY_CODE,
3444                  128, src.TXN_CURRENCY_CODE,
3445                  256, src.TXN_CURRENCY_CODE)          CURRENCY_CODE,
3446           nvl(rbs.ELEMENT_ID, -1)                     RBS_ELEMENT_ID,
3447           src.RBS_VERSION_ID,
3448           -1                                          PLAN_VERSION_ID,
3449           -1                                          PLAN_TYPE_ID,
3450           decode(invert.INVERT_ID,
3451                  1,   src.G1_RAW_COST,
3452                  2,   src.G2_RAW_COST,
3453                  4,   src.POU_RAW_COST,
3454                  8,   src.PRJ_RAW_COST,
3455                  16,  src.TXN_RAW_COST,
3456                  32,  src.G1_RAW_COST,
3457                  64,  src.G2_RAW_COST,
3458                  128, src.POU_RAW_COST,
3459                  256, src.PRJ_RAW_COST)               RAW_COST,
3460           decode(invert.INVERT_ID,
3461                  1,   src.G1_BRDN_COST,
3462                  2,   src.G2_BRDN_COST,
3463                  4,   src.POU_BRDN_COST,
3464                  8,   src.PRJ_BRDN_COST,
3465                  16,  src.TXN_BRDN_COST,
3466                  32,  src.G1_BRDN_COST,
3467                  64,  src.G2_BRDN_COST,
3468                  128, src.POU_BRDN_COST,
3469                  256, src.PRJ_BRDN_COST)              BRDN_COST,
3470           decode(invert.INVERT_ID,
3471                  1,   src.G1_REVENUE,
3472                  2,   src.G2_REVENUE,
3473                  4,   src.POU_REVENUE,
3474                  8,   src.PRJ_REVENUE,
3475                  16,  src.TXN_REVENUE,
3476                  32,  src.G1_REVENUE,
3477                  64,  src.G2_REVENUE,
3478                  128, src.POU_REVENUE,
3479                  256, src.PRJ_REVENUE)                REVENUE,
3480           decode(invert.INVERT_ID,
3481                  1,   src.G1_BILL_RAW_COST,
3482                  2,   src.G2_BILL_RAW_COST,
3483                  4,   src.POU_BILL_RAW_COST,
3484                  8,   src.PRJ_BILL_RAW_COST,
3485                  16,  src.TXN_BILL_RAW_COST,
3486                  32,  src.G1_BILL_RAW_COST,
3487                  64,  src.G2_BILL_RAW_COST,
3488                  128, src.POU_BILL_RAW_COST,
3489                  256, src.PRJ_BILL_RAW_COST)          BILL_RAW_COST,
3490           decode(invert.INVERT_ID,
3491                  1,   src.G1_BILL_BRDN_COST,
3492                  2,   src.G2_BILL_BRDN_COST,
3493                  4,   src.POU_BILL_BRDN_COST,
3494                  8,   src.PRJ_BILL_BRDN_COST,
3495                  16,  src.TXN_BILL_BRDN_COST,
3496                  32,  src.G1_BILL_BRDN_COST,
3497                  64,  src.G2_BILL_BRDN_COST,
3498                  128, src.POU_BILL_BRDN_COST,
3499                  256, src.PRJ_BILL_BRDN_COST)         BILL_BRDN_COST,
3500           decode(invert.INVERT_ID,
3501                  1,   src.G1_SUP_INV_COMMITTED_COST,
3502                  2,   src.G2_SUP_INV_COMMITTED_COST,
3503                  4,   src.POU_SUP_INV_COMMITTED_COST,
3504                  8,   src.PRJ_SUP_INV_COMMITTED_COST,
3505                  16,  src.TXN_SUP_INV_COMMITTED_COST,
3506                  32,  src.G1_SUP_INV_COMMITTED_COST,
3507                  64,  src.G2_SUP_INV_COMMITTED_COST,
3508                  128, src.POU_SUP_INV_COMMITTED_COST,
3509                  256, src.PRJ_SUP_INV_COMMITTED_COST) SUP_INV_COMMITTED_COST,
3510           decode(invert.INVERT_ID,
3511                  1,   src.G1_PO_COMMITTED_COST,
3512                  2,   src.G2_PO_COMMITTED_COST,
3513                  4,   src.POU_PO_COMMITTED_COST,
3514                  8,   src.PRJ_PO_COMMITTED_COST,
3515                  16,  src.TXN_PO_COMMITTED_COST,
3516                  32,  src.G1_PO_COMMITTED_COST,
3517                  64,  src.G2_PO_COMMITTED_COST,
3518                  128, src.POU_PO_COMMITTED_COST,
3519                  256, src.PRJ_PO_COMMITTED_COST)      PO_COMMITTED_COST,
3520           decode(invert.INVERT_ID,
3521                  1,   src.G1_PR_COMMITTED_COST,
3522                  2,   src.G2_PR_COMMITTED_COST,
3523                  4,   src.POU_PR_COMMITTED_COST,
3524                  8,   src.PRJ_PR_COMMITTED_COST,
3525                  16,  src.TXN_PR_COMMITTED_COST,
3526                  32,  src.G1_PR_COMMITTED_COST,
3527                  64,  src.G2_PR_COMMITTED_COST,
3528                  128, src.POU_PR_COMMITTED_COST,
3529                  256, src.PRJ_PR_COMMITTED_COST)      PR_COMMITTED_COST,
3530           decode(invert.INVERT_ID,
3531                  1,   src.G1_OTH_COMMITTED_COST,
3532                  2,   src.G2_OTH_COMMITTED_COST,
3533                  4,   src.POU_OTH_COMMITTED_COST,
3534                  8,   src.PRJ_OTH_COMMITTED_COST,
3535                  16,  src.TXN_OTH_COMMITTED_COST,
3536                  32,  src.G1_OTH_COMMITTED_COST,
3537                  64,  src.G2_OTH_COMMITTED_COST,
3538                  128, src.POU_OTH_COMMITTED_COST,
3539                  256, src.PRJ_OTH_COMMITTED_COST)     OTH_COMMITTED_COST,
3540           src.QUANTITY,
3541           src.BILL_QUANTITY
3542         from
3543           (
3544           select
3545             ROWNUM                                       DIFF_ROWNUM,
3546             src2.TXN_ACCUM_HEADER_ID,
3547             src2.RESOURCE_CLASS_ID,
3548             src2.PROJECT_ID,
3549             src2.PROJECT_ORG_ID,
3550             src2.PROJECT_ORGANIZATION_ID,
3551             src2.PROJECT_TYPE_CLASS,
3552             src2.TASK_ID,
3553             src2.RECVR_PERIOD_TYPE,
3554             src2.RECVR_PERIOD_ID,
3555             src2.RBS_VERSION_ID,
3556             src2.TXN_CURRENCY_CODE,
3557             src2.TXN_RAW_COST,
3558             src2.TXN_BILL_RAW_COST,
3559             src2.TXN_BRDN_COST,
3560             src2.TXN_BILL_BRDN_COST,
3561             src2.TXN_REVENUE,
3562             src2.TXN_SUP_INV_COMMITTED_COST,
3563             src2.TXN_PO_COMMITTED_COST,
3564             src2.TXN_PR_COMMITTED_COST,
3565             src2.TXN_OTH_COMMITTED_COST,
3566             src2.PRJ_RAW_COST,
3567             src2.PRJ_BILL_RAW_COST,
3568             src2.PRJ_BRDN_COST,
3569             src2.PRJ_BILL_BRDN_COST,
3570             src2.PRJ_REVENUE,
3571             src2.PRJ_SUP_INV_COMMITTED_COST,
3572             src2.PRJ_PO_COMMITTED_COST,
3573             src2.PRJ_PR_COMMITTED_COST,
3574             src2.PRJ_OTH_COMMITTED_COST,
3575             src2.POU_RAW_COST,
3576             src2.POU_BILL_RAW_COST,
3577             src2.POU_BRDN_COST,
3578             src2.POU_BILL_BRDN_COST,
3579             src2.POU_REVENUE,
3580             src2.POU_SUP_INV_COMMITTED_COST,
3581             src2.POU_PO_COMMITTED_COST,
3582             src2.POU_PR_COMMITTED_COST,
3583             src2.POU_OTH_COMMITTED_COST,
3584             src2.EOU_RAW_COST,
3585             src2.EOU_BILL_RAW_COST,
3586             src2.EOU_BRDN_COST,
3587             src2.EOU_BILL_BRDN_COST,
3588             src2.EOU_SUP_INV_COMMITTED_COST,
3589             src2.EOU_PO_COMMITTED_COST,
3590             src2.EOU_PR_COMMITTED_COST,
3591             src2.EOU_OTH_COMMITTED_COST,
3592             src2.G1_RAW_COST,
3593             src2.G1_BILL_RAW_COST,
3594             src2.G1_BRDN_COST,
3595             src2.G1_BILL_BRDN_COST,
3596             src2.G1_REVENUE,
3597             src2.G1_SUP_INV_COMMITTED_COST,
3598             src2.G1_PO_COMMITTED_COST,
3599             src2.G1_PR_COMMITTED_COST,
3600             src2.G1_OTH_COMMITTED_COST,
3601             src2.G2_RAW_COST,
3602             src2.G2_BILL_RAW_COST,
3603             src2.G2_BRDN_COST,
3604             src2.G2_BILL_BRDN_COST,
3605             src2.G2_REVENUE,
3606             src2.G2_SUP_INV_COMMITTED_COST,
3607             src2.G2_PO_COMMITTED_COST,
3608             src2.G2_PR_COMMITTED_COST,
3609             src2.G2_OTH_COMMITTED_COST,
3610             src2.QUANTITY,
3611             src2.BILL_QUANTITY
3612           from
3613             (
3614           select
3615             src1.TXN_ACCUM_HEADER_ID,
3616             src1.RESOURCE_CLASS_ID,
3617             src1.PROJECT_ID,
3618             src1.PROJECT_ORG_ID,
3619             src1.PROJECT_ORGANIZATION_ID,
3620             src1.PROJECT_TYPE_CLASS,
3621             src1.TASK_ID,
3622             src1.RECVR_PERIOD_TYPE,
3623             src1.RECVR_PERIOD_ID,
3624             src1.RBS_VERSION_ID,
3625             src1.TXN_CURRENCY_CODE,
3626             sum(src1.TXN_RAW_COST)                  TXN_RAW_COST,
3627             sum(src1.TXN_BILL_RAW_COST)             TXN_BILL_RAW_COST,
3628             sum(src1.TXN_BRDN_COST)                 TXN_BRDN_COST,
3629             sum(src1.TXN_BILL_BRDN_COST)            TXN_BILL_BRDN_COST,
3630             sum(src1.TXN_REVENUE)                   TXN_REVENUE,
3631             sum(src1.TXN_SUP_INV_COMMITTED_COST)    TXN_SUP_INV_COMMITTED_COST,
3632             sum(src1.TXN_PO_COMMITTED_COST)         TXN_PO_COMMITTED_COST,
3633             sum(src1.TXN_PR_COMMITTED_COST)         TXN_PR_COMMITTED_COST,
3634             sum(src1.TXN_OTH_COMMITTED_COST)        TXN_OTH_COMMITTED_COST,
3635             sum(src1.PRJ_RAW_COST)                  PRJ_RAW_COST,
3636             sum(src1.PRJ_BILL_RAW_COST)             PRJ_BILL_RAW_COST,
3637             sum(src1.PRJ_BRDN_COST)                 PRJ_BRDN_COST,
3638             sum(src1.PRJ_BILL_BRDN_COST)            PRJ_BILL_BRDN_COST,
3639             sum(src1.PRJ_REVENUE)                   PRJ_REVENUE,
3640             sum(src1.PRJ_SUP_INV_COMMITTED_COST)    PRJ_SUP_INV_COMMITTED_COST,
3641             sum(src1.PRJ_PO_COMMITTED_COST)         PRJ_PO_COMMITTED_COST,
3642             sum(src1.PRJ_PR_COMMITTED_COST)         PRJ_PR_COMMITTED_COST,
3643             sum(src1.PRJ_OTH_COMMITTED_COST)        PRJ_OTH_COMMITTED_COST,
3644             sum(src1.POU_RAW_COST)                  POU_RAW_COST,
3645             sum(src1.POU_BILL_RAW_COST)             POU_BILL_RAW_COST,
3646             sum(src1.POU_BRDN_COST)                 POU_BRDN_COST,
3647             sum(src1.POU_BILL_BRDN_COST)            POU_BILL_BRDN_COST,
3648             sum(src1.POU_REVENUE)                   POU_REVENUE,
3649             sum(src1.POU_SUP_INV_COMMITTED_COST)    POU_SUP_INV_COMMITTED_COST,
3650             sum(src1.POU_PO_COMMITTED_COST)         POU_PO_COMMITTED_COST,
3651             sum(src1.POU_PR_COMMITTED_COST)         POU_PR_COMMITTED_COST,
3652             sum(src1.POU_OTH_COMMITTED_COST)        POU_OTH_COMMITTED_COST,
3653             sum(src1.EOU_RAW_COST)                  EOU_RAW_COST,
3654             sum(src1.EOU_BILL_RAW_COST)             EOU_BILL_RAW_COST,
3655             sum(src1.EOU_BRDN_COST)                 EOU_BRDN_COST,
3656             sum(src1.EOU_BILL_BRDN_COST)            EOU_BILL_BRDN_COST,
3657             sum(src1.EOU_SUP_INV_COMMITTED_COST)    EOU_SUP_INV_COMMITTED_COST,
3658             sum(src1.EOU_PO_COMMITTED_COST)         EOU_PO_COMMITTED_COST,
3659             sum(src1.EOU_PR_COMMITTED_COST)         EOU_PR_COMMITTED_COST,
3660             sum(src1.EOU_OTH_COMMITTED_COST)        EOU_OTH_COMMITTED_COST,
3661             sum(src1.G1_RAW_COST)                   G1_RAW_COST,
3662             sum(src1.G1_BILL_RAW_COST)              G1_BILL_RAW_COST,
3663             sum(src1.G1_BRDN_COST)                  G1_BRDN_COST,
3664             sum(src1.G1_BILL_BRDN_COST)             G1_BILL_BRDN_COST,
3665             sum(src1.G1_REVENUE)                    G1_REVENUE,
3666             sum(src1.G1_SUP_INV_COMMITTED_COST)     G1_SUP_INV_COMMITTED_COST,
3667             sum(src1.G1_PO_COMMITTED_COST)          G1_PO_COMMITTED_COST,
3668             sum(src1.G1_PR_COMMITTED_COST)          G1_PR_COMMITTED_COST,
3669             sum(src1.G1_OTH_COMMITTED_COST)         G1_OTH_COMMITTED_COST,
3670             sum(src1.G2_RAW_COST)                   G2_RAW_COST,
3671             sum(src1.G2_BILL_RAW_COST)              G2_BILL_RAW_COST,
3672             sum(src1.G2_BRDN_COST)                  G2_BRDN_COST,
3673             sum(src1.G2_BILL_BRDN_COST)             G2_BILL_BRDN_COST,
3674             sum(src1.G2_REVENUE)                    G2_REVENUE,
3675             sum(src1.G2_SUP_INV_COMMITTED_COST)     G2_SUP_INV_COMMITTED_COST,
3676             sum(src1.G2_PO_COMMITTED_COST)          G2_PO_COMMITTED_COST,
3677             sum(src1.G2_PR_COMMITTED_COST)          G2_PR_COMMITTED_COST,
3678             sum(src1.G2_OTH_COMMITTED_COST)         G2_OTH_COMMITTED_COST,
3679             sum(src1.QUANTITY)                      QUANTITY,
3680             sum(src1.BILL_QUANTITY)                 BILL_QUANTITY
3681           from
3682             (
3683           select                           -- initial actuals data
3684             bal.TXN_ACCUM_HEADER_ID,
3685             bal.RESOURCE_CLASS_ID,
3686             bal.PROJECT_ID,
3687             bal.PROJECT_ORG_ID,
3688             bal.PROJECT_ORGANIZATION_ID,
3689             bal.PROJECT_TYPE_CLASS,
3690             nvl(bal.TASK_ID, -1)                    TASK_ID,
3691             bal.RECVR_PERIOD_TYPE,
3692             bal.RECVR_PERIOD_ID,
3693             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
3694             bal.TXN_CURRENCY_CODE,
3695             bal.TXN_RAW_COST,
3696             bal.TXN_BILL_RAW_COST,
3697             bal.TXN_BRDN_COST,
3698             bal.TXN_BILL_BRDN_COST,
3699             bal.TXN_REVENUE,
3700             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
3701             to_number(null)                         TXN_PO_COMMITTED_COST,
3702             to_number(null)                         TXN_PR_COMMITTED_COST,
3703             to_number(null)                         TXN_OTH_COMMITTED_COST,
3704             bal.PRJ_RAW_COST,
3705             bal.PRJ_BILL_RAW_COST,
3706             bal.PRJ_BRDN_COST,
3707             bal.PRJ_BILL_BRDN_COST,
3708             bal.PRJ_REVENUE,
3709             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
3710             to_number(null)                         PRJ_PO_COMMITTED_COST,
3711             to_number(null)                         PRJ_PR_COMMITTED_COST,
3712             to_number(null)                         PRJ_OTH_COMMITTED_COST,
3713             bal.POU_RAW_COST,
3714             bal.POU_BILL_RAW_COST,
3715             bal.POU_BRDN_COST,
3716             bal.POU_BILL_BRDN_COST,
3717             bal.POU_REVENUE,
3718             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
3719             to_number(null)                         POU_PO_COMMITTED_COST,
3720             to_number(null)                         POU_PR_COMMITTED_COST,
3721             to_number(null)                         POU_OTH_COMMITTED_COST,
3722             bal.EOU_RAW_COST,
3723             bal.EOU_BILL_RAW_COST,
3724             bal.EOU_BRDN_COST,
3725             bal.EOU_BILL_BRDN_COST,
3726             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
3727             to_number(null)                         EOU_PO_COMMITTED_COST,
3728             to_number(null)                         EOU_PR_COMMITTED_COST,
3729             to_number(null)                         EOU_OTH_COMMITTED_COST,
3730             bal.G1_RAW_COST,
3731             bal.G1_BILL_RAW_COST,
3732             bal.G1_BRDN_COST,
3733             bal.G1_BILL_BRDN_COST,
3734             bal.G1_REVENUE,
3735             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
3736             to_number(null)                         G1_PO_COMMITTED_COST,
3737             to_number(null)                         G1_PR_COMMITTED_COST,
3738             to_number(null)                         G1_OTH_COMMITTED_COST,
3739             bal.G2_RAW_COST,
3740             bal.G2_BILL_RAW_COST,
3741             bal.G2_BRDN_COST,
3742             bal.G2_BILL_BRDN_COST,
3743             bal.G2_REVENUE,
3744             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
3745             to_number(null)                         G2_PO_COMMITTED_COST,
3746             to_number(null)                         G2_PR_COMMITTED_COST,
3747             to_number(null)                         G2_OTH_COMMITTED_COST,
3748             bal.QUANTITY,
3749             bal.BILL_QUANTITY
3750           from
3751             PJI_PJP_PROJ_BATCH_MAP map,
3752             PJI_FP_TXN_ACCUM       bal,
3753             PJI_PJP_RBS_HEADER     rbs_hdr
3754           where
3755             l_extraction_type in ('FULL', 'PARTIAL')    and
3756 --     decode(l_extraction_type,'FULL','Y','PARTIAL',decode(bitand(l_refresh_code,1),1,'Y','N'),'N') ='Y'  and --  Bug#5099574
3757 --      l_plan_type_id IS NULL        and                                 --  Bug#5099574
3758             map.WORKER_ID     = p_worker_id             and
3759             bal.PROJECT_ID    = map.PROJECT_ID          and
3760             bal.PROJECT_ID    = rbs_hdr.PROJECT_ID      and
3761             -1                = rbs_hdr.PLAN_VERSION_ID
3762           union all                     -- initial commitments data
3763           select
3764             bal.TXN_ACCUM_HEADER_ID,
3765             to_number(null)                         RESOURCE_CLASS_ID,
3766             bal.PROJECT_ID,
3767             bal.PROJECT_ORG_ID,
3768             bal.PROJECT_ORGANIZATION_ID,
3769             to_char(null)                           PROJECT_TYPE_CLASS,
3770             nvl(bal.TASK_ID, -1)                    TASK_ID,
3771             bal.RECVR_PERIOD_TYPE,
3772             bal.RECVR_PERIOD_ID,
3773             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
3774             bal.TXN_CURRENCY_CODE,
3775             to_number(null)                         TXN_RAW_COST,
3776             to_number(null)                         TXN_BILL_RAW_COST,
3777             to_number(null)                         TXN_BRDN_COST,
3778             to_number(null)                         TXN_BILL_BRDN_COST,
3779             to_number(null)                         TXN_REVENUE,
3780             bal.TXN_SUP_INV_COMMITTED_COST,
3781             bal.TXN_PO_COMMITTED_COST,
3782             bal.TXN_PR_COMMITTED_COST,
3783             bal.TXN_OTH_COMMITTED_COST,
3784             to_number(null)                         PRJ_RAW_COST,
3785             to_number(null)                         PRJ_BILL_RAW_COST,
3786             to_number(null)                         PRJ_BRDN_COST,
3787             to_number(null)                         PRJ_BILL_BRDN_COST,
3788             to_number(null)                         PRJ_REVENUE,
3789             bal.PRJ_SUP_INV_COMMITTED_COST,
3790             bal.PRJ_PO_COMMITTED_COST,
3791             bal.PRJ_PR_COMMITTED_COST,
3792             bal.PRJ_OTH_COMMITTED_COST,
3793             to_number(null)                         POU_RAW_COST,
3794             to_number(null)                         POU_BILL_RAW_COST,
3795             to_number(null)                         POU_BRDN_COST,
3796             to_number(null)                         POU_BILL_BRDN_COST,
3797             to_number(null)                         POU_REVENUE,
3798             bal.POU_SUP_INV_COMMITTED_COST,
3799             bal.POU_PO_COMMITTED_COST,
3800             bal.POU_PR_COMMITTED_COST,
3801             bal.POU_OTH_COMMITTED_COST,
3802             to_number(null)                         EOU_RAW_COST,
3803             to_number(null)                         EOU_BILL_RAW_COST,
3804             to_number(null)                         EOU_BRDN_COST,
3805             to_number(null)                         EOU_BILL_BRDN_COST,
3806             bal.EOU_SUP_INV_COMMITTED_COST,
3807             bal.EOU_PO_COMMITTED_COST,
3808             bal.EOU_PR_COMMITTED_COST,
3809             bal.EOU_OTH_COMMITTED_COST,
3810             to_number(null)                         G1_RAW_COST,
3811             to_number(null)                         G1_BILL_RAW_COST,
3812             to_number(null)                         G1_BRDN_COST,
3813             to_number(null)                         G1_BILL_BRDN_COST,
3814             to_number(null)                         G1_REVENUE,
3815             bal.G1_SUP_INV_COMMITTED_COST,
3816             bal.G1_PO_COMMITTED_COST,
3817             bal.G1_PR_COMMITTED_COST,
3818             bal.G1_OTH_COMMITTED_COST,
3819             to_number(null)                         G2_RAW_COST,
3820             to_number(null)                         G2_BILL_RAW_COST,
3821             to_number(null)                         G2_BRDN_COST,
3822             to_number(null)                         G2_BILL_BRDN_COST,
3823             to_number(null)                         G2_REVENUE,
3824             bal.G2_SUP_INV_COMMITTED_COST,
3825             bal.G2_PO_COMMITTED_COST,
3826             bal.G2_PR_COMMITTED_COST,
3827             bal.G2_OTH_COMMITTED_COST,
3828             to_number(null)                         QUANTITY,
3829             to_number(null)                         BILL_QUANTITY
3830           from
3831             PJI_PJP_PROJ_BATCH_MAP map,
3832             PJI_FP_TXN_ACCUM1      bal,
3833             PJI_PJP_RBS_HEADER     rbs_hdr
3834           where
3835             l_extraction_type in ('FULL', 'PARTIAL')    and
3836 --            decode(l_extraction_type,'FULL','Y','PARTIAL',decode(bitand(l_refresh_code,1),1,'Y','N'),'N') ='Y'  and  --  Bug#5099574
3837   --          l_plan_type_id IS NULL        and                             --  Bug#5099574
3838             map.WORKER_ID     = p_worker_id             and
3839             bal.PROJECT_ID    = map.PROJECT_ID          and
3840             bal.PROJECT_ID    = rbs_hdr.PROJECT_ID      and
3841             -1                = rbs_hdr.PLAN_VERSION_ID
3842           union all                       -- incremental data
3843           select
3844             tmp7.TXN_ACCUM_HEADER_ID,
3845             tmp7.RESOURCE_CLASS_ID,
3846             tmp7.PROJECT_ID,
3847             tmp7.PROJECT_ORG_ID,
3848             tmp7.PROJECT_ORGANIZATION_ID,
3849             tmp7.PROJECT_TYPE_CLASS,
3850             nvl(tmp7.TASK_ID, -1)                   TASK_ID,
3851             tmp7.RECVR_PERIOD_TYPE,
3852             tmp7.RECVR_PERIOD_ID,
3853             nvl(rbs_hdr.RBS_VERSION_ID, -1)         RBS_VERSION_ID,
3854             tmp7.TXN_CURRENCY_CODE,
3855             tmp7.TXN_RAW_COST,
3856             tmp7.TXN_BILL_RAW_COST,
3857             tmp7.TXN_BRDN_COST,
3858             tmp7.TXN_BILL_BRDN_COST,
3859             tmp7.TXN_REVENUE,
3860             tmp7.TXN_SUP_INV_COMMITTED_COST,
3861             tmp7.TXN_PO_COMMITTED_COST,
3862             tmp7.TXN_PR_COMMITTED_COST,
3863             tmp7.TXN_OTH_COMMITTED_COST,
3864             tmp7.PRJ_RAW_COST,
3865             tmp7.PRJ_BILL_RAW_COST,
3866             tmp7.PRJ_BRDN_COST,
3867             tmp7.PRJ_BILL_BRDN_COST,
3868             tmp7.PRJ_REVENUE,
3869             tmp7.PRJ_SUP_INV_COMMITTED_COST,
3870             tmp7.PRJ_PO_COMMITTED_COST,
3871             tmp7.PRJ_PR_COMMITTED_COST,
3872             tmp7.PRJ_OTH_COMMITTED_COST,
3873             tmp7.POU_RAW_COST,
3874             tmp7.POU_BILL_RAW_COST,
3875             tmp7.POU_BRDN_COST,
3876             tmp7.POU_BILL_BRDN_COST,
3877             tmp7.POU_REVENUE,
3878             tmp7.POU_SUP_INV_COMMITTED_COST,
3879             tmp7.POU_PO_COMMITTED_COST,
3880             tmp7.POU_PR_COMMITTED_COST,
3881             tmp7.POU_OTH_COMMITTED_COST,
3882             tmp7.EOU_RAW_COST,
3883             tmp7.EOU_BILL_RAW_COST,
3884             tmp7.EOU_BRDN_COST,
3885             tmp7.EOU_BILL_BRDN_COST,
3886             tmp7.EOU_SUP_INV_COMMITTED_COST,
3887             tmp7.EOU_PO_COMMITTED_COST,
3888             tmp7.EOU_PR_COMMITTED_COST,
3889             tmp7.EOU_OTH_COMMITTED_COST,
3890             tmp7.G1_RAW_COST,
3891             tmp7.G1_BILL_RAW_COST,
3892             tmp7.G1_BRDN_COST,
3893             tmp7.G1_BILL_BRDN_COST,
3894             tmp7.G1_REVENUE,
3895             tmp7.G1_SUP_INV_COMMITTED_COST,
3896             tmp7.G1_PO_COMMITTED_COST,
3897             tmp7.G1_PR_COMMITTED_COST,
3898             tmp7.G1_OTH_COMMITTED_COST,
3899             tmp7.G2_RAW_COST,
3900             tmp7.G2_BILL_RAW_COST,
3901             tmp7.G2_BRDN_COST,
3902             tmp7.G2_BILL_BRDN_COST,
3903             tmp7.G2_REVENUE,
3904             tmp7.G2_SUP_INV_COMMITTED_COST,
3905             tmp7.G2_PO_COMMITTED_COST,
3906             tmp7.G2_PR_COMMITTED_COST,
3907             tmp7.G2_OTH_COMMITTED_COST,
3908             tmp7.QUANTITY,
3909             tmp7.BILL_QUANTITY
3910           from
3911             PJI_PJP_RMAP_FPR   tmp7_r,
3912             PJI_FM_AGGR_FIN7   tmp7,
3913             PJI_PJP_RBS_HEADER rbs_hdr
3914           where
3915             l_extraction_type = 'INCREMENTAL'           and
3916             tmp7_r.WORKER_ID  = p_worker_id             and
3917             tmp7_r.STG_ROWID  = tmp7.ROWID              and
3918             tmp7.PROJECT_ID   = rbs_hdr.PROJECT_ID      and
3919             -1                = rbs_hdr.PLAN_VERSION_ID
3920           union all                  -- newly associated RBSs for actuals
3921           select
3922             bal.TXN_ACCUM_HEADER_ID,
3923             bal.RESOURCE_CLASS_ID,
3924             bal.PROJECT_ID,
3925             bal.PROJECT_ORG_ID,
3926             bal.PROJECT_ORGANIZATION_ID,
3927             bal.PROJECT_TYPE_CLASS,
3928             nvl(bal.TASK_ID, -1)                    TASK_ID,
3929             bal.RECVR_PERIOD_TYPE,
3930             bal.RECVR_PERIOD_ID,
3931             log.RBS_VERSION_ID,
3932             bal.TXN_CURRENCY_CODE,
3933             bal.TXN_RAW_COST,
3934             bal.TXN_BILL_RAW_COST,
3935             bal.TXN_BRDN_COST,
3936             bal.TXN_BILL_BRDN_COST,
3937             bal.TXN_REVENUE,
3938             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
3939             to_number(null)                         TXN_PO_COMMITTED_COST,
3940             to_number(null)                         TXN_PR_COMMITTED_COST,
3941             to_number(null)                         TXN_OTH_COMMITTED_COST,
3942             bal.PRJ_RAW_COST,
3943             bal.PRJ_BILL_RAW_COST,
3944             bal.PRJ_BRDN_COST,
3945             bal.PRJ_BILL_BRDN_COST,
3946             bal.PRJ_REVENUE,
3947             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
3948             to_number(null)                         PRJ_PO_COMMITTED_COST,
3949             to_number(null)                         PRJ_PR_COMMITTED_COST,
3950             to_number(null)                         PRJ_OTH_COMMITTED_COST,
3951             bal.POU_RAW_COST,
3952             bal.POU_BILL_RAW_COST,
3953             bal.POU_BRDN_COST,
3954             bal.POU_BILL_BRDN_COST,
3955             bal.POU_REVENUE,
3956             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
3957             to_number(null)                         POU_PO_COMMITTED_COST,
3958             to_number(null)                         POU_PR_COMMITTED_COST,
3959             to_number(null)                         POU_OTH_COMMITTED_COST,
3960             bal.EOU_RAW_COST,
3961             bal.EOU_BILL_RAW_COST,
3962             bal.EOU_BRDN_COST,
3963             bal.EOU_BILL_BRDN_COST,
3964             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
3965             to_number(null)                         EOU_PO_COMMITTED_COST,
3966             to_number(null)                         EOU_PR_COMMITTED_COST,
3967             to_number(null)                         EOU_OTH_COMMITTED_COST,
3968             bal.G1_RAW_COST,
3969             bal.G1_BILL_RAW_COST,
3970             bal.G1_BRDN_COST,
3971             bal.G1_BILL_BRDN_COST,
3972             bal.G1_REVENUE,
3973             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
3974             to_number(null)                         G1_PO_COMMITTED_COST,
3975             to_number(null)                         G1_PR_COMMITTED_COST,
3976             to_number(null)                         G1_OTH_COMMITTED_COST,
3977             bal.G2_RAW_COST,
3978             bal.G2_BILL_RAW_COST,
3979             bal.G2_BRDN_COST,
3980             bal.G2_BILL_BRDN_COST,
3981             bal.G2_REVENUE,
3982             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
3983             to_number(null)                         G2_PO_COMMITTED_COST,
3984             to_number(null)                         G2_PR_COMMITTED_COST,
3985             to_number(null)                         G2_OTH_COMMITTED_COST,
3986             bal.QUANTITY,
3987             bal.BILL_QUANTITY
3988           from
3989             PJI_FP_TXN_ACCUM bal,
3990             (
3991             select
3992               distinct
3993               to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
3994               to_number(log.ATTRIBUTE1)            PROJECT_ID
3995             from
3996               PJI_PA_PROJ_EVENTS_LOG log
3997             where
3998               log.WORKER_ID = p_worker_id and
3999               log.EVENT_TYPE = 'RBS_ASSOC'
4000             ) log
4001           where
4002             l_extraction_type = 'INCREMENTAL' and
4003             bal.PROJECT_ID = log.PROJECT_ID
4004           union all                    -- newly associated RBSs for commitments
4005           select
4006             bal.TXN_ACCUM_HEADER_ID,
4007             to_number(null)                         RESOURCE_CLASS_ID,
4008             bal.PROJECT_ID,
4009             bal.PROJECT_ORG_ID,
4010             bal.PROJECT_ORGANIZATION_ID,
4011             to_char(null)                           PROJECT_TYPE_CLASS,
4012             nvl(bal.TASK_ID, -1)                    TASK_ID,
4013             bal.RECVR_PERIOD_TYPE,
4014             bal.RECVR_PERIOD_ID,
4015             log.RBS_VERSION_ID,
4016             bal.TXN_CURRENCY_CODE,
4017             to_number(null)                         TXN_RAW_COST,
4018             to_number(null)                         TXN_BILL_RAW_COST,
4019             to_number(null)                         TXN_BRDN_COST,
4020             to_number(null)                         TXN_BILL_BRDN_COST,
4021             to_number(null)                         TXN_REVENUE,
4022             bal.TXN_SUP_INV_COMMITTED_COST,
4023             bal.TXN_PO_COMMITTED_COST,
4024             bal.TXN_PR_COMMITTED_COST,
4025             bal.TXN_OTH_COMMITTED_COST,
4026             to_number(null)                         PRJ_RAW_COST,
4027             to_number(null)                         PRJ_BILL_RAW_COST,
4028             to_number(null)                         PRJ_BRDN_COST,
4029             to_number(null)                         PRJ_BILL_BRDN_COST,
4030             to_number(null)                         PRJ_REVENUE,
4031             bal.PRJ_SUP_INV_COMMITTED_COST,
4032             bal.PRJ_PO_COMMITTED_COST,
4033             bal.PRJ_PR_COMMITTED_COST,
4034             bal.PRJ_OTH_COMMITTED_COST,
4035             to_number(null)                         POU_RAW_COST,
4036             to_number(null)                         POU_BILL_RAW_COST,
4037             to_number(null)                         POU_BRDN_COST,
4038             to_number(null)                         POU_BILL_BRDN_COST,
4039             to_number(null)                         POU_REVENUE,
4040             bal.POU_SUP_INV_COMMITTED_COST,
4041             bal.POU_PO_COMMITTED_COST,
4042             bal.POU_PR_COMMITTED_COST,
4043             bal.POU_OTH_COMMITTED_COST,
4044             to_number(null)                         EOU_RAW_COST,
4045             to_number(null)                         EOU_BILL_RAW_COST,
4046             to_number(null)                         EOU_BRDN_COST,
4047             to_number(null)                         EOU_BILL_BRDN_COST,
4048             bal.EOU_SUP_INV_COMMITTED_COST,
4049             bal.EOU_PO_COMMITTED_COST,
4050             bal.EOU_PR_COMMITTED_COST,
4051             bal.EOU_OTH_COMMITTED_COST,
4052             to_number(null)                         G1_RAW_COST,
4053             to_number(null)                         G1_BILL_RAW_COST,
4054             to_number(null)                         G1_BRDN_COST,
4055             to_number(null)                         G1_BILL_BRDN_COST,
4056             to_number(null)                         G1_REVENUE,
4057             bal.G1_SUP_INV_COMMITTED_COST,
4058             bal.G1_PO_COMMITTED_COST,
4059             bal.G1_PR_COMMITTED_COST,
4060             bal.G1_OTH_COMMITTED_COST,
4061             to_number(null)                         G2_RAW_COST,
4062             to_number(null)                         G2_BILL_RAW_COST,
4063             to_number(null)                         G2_BRDN_COST,
4064             to_number(null)                         G2_BILL_BRDN_COST,
4065             to_number(null)                         G2_REVENUE,
4066             bal.G2_SUP_INV_COMMITTED_COST,
4067             bal.G2_PO_COMMITTED_COST,
4068             bal.G2_PR_COMMITTED_COST,
4069             bal.G2_OTH_COMMITTED_COST,
4070             to_number(null)                         QUANTITY,
4071             to_number(null)                         BILL_QUANTITY
4072           from
4073             PJI_FP_TXN_ACCUM1 bal,
4074             (
4075             select
4076               distinct
4077               to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
4078               to_numbeR(log.ATTRIBUTE1)            PROJECT_ID
4079             from
4080               PJI_PA_PROJ_EVENTS_LOG log
4081             where
4082               log.WORKER_ID = p_worker_id and
4083               log.EVENT_TYPE = 'RBS_ASSOC'
4084             ) log
4085           where
4086             l_extraction_type = 'INCREMENTAL' and
4087             bal.PROJECT_ID = log.PROJECT_ID
4088           union all
4089           select /*+ ordered */            -- RBS change processing actuals
4090             bal.TXN_ACCUM_HEADER_ID,
4091             bal.RESOURCE_CLASS_ID,
4092             bal.PROJECT_ID,
4093             bal.PROJECT_ORG_ID,
4094             bal.PROJECT_ORGANIZATION_ID,
4095             bal.PROJECT_TYPE_CLASS,
4096             nvl(bal.TASK_ID, -1)                    TASK_ID,
4097             bal.RECVR_PERIOD_TYPE,
4098             bal.RECVR_PERIOD_ID,
4099             nvl(to_number(log.EVENT_OBJECT), -1)    RBS_VERSION_ID,
4100             bal.TXN_CURRENCY_CODE,
4101             bal.TXN_RAW_COST,
4102             bal.TXN_BILL_RAW_COST,
4103             bal.TXN_BRDN_COST,
4104             bal.TXN_BILL_BRDN_COST,
4105             bal.TXN_REVENUE,
4106             to_number(null)                         TXN_SUP_INV_COMMITTED_COST,
4107             to_number(null)                         TXN_PO_COMMITTED_COST,
4108             to_number(null)                         TXN_PR_COMMITTED_COST,
4109             to_number(null)                         TXN_OTH_COMMITTED_COST,
4110             bal.PRJ_RAW_COST,
4111             bal.PRJ_BILL_RAW_COST,
4112             bal.PRJ_BRDN_COST,
4113             bal.PRJ_BILL_BRDN_COST,
4114             bal.PRJ_REVENUE,
4115             to_number(null)                         PRJ_SUP_INV_COMMITTED_COST,
4116             to_number(null)                         PRJ_PO_COMMITTED_COST,
4117             to_number(null)                         PRJ_PR_COMMITTED_COST,
4118             to_number(null)                         PRJ_OTH_COMMITTED_COST,
4119             bal.POU_RAW_COST,
4120             bal.POU_BILL_RAW_COST,
4121             bal.POU_BRDN_COST,
4122             bal.POU_BILL_BRDN_COST,
4123             bal.POU_REVENUE,
4124             to_number(null)                         POU_SUP_INV_COMMITTED_COST,
4125             to_number(null)                         POU_PO_COMMITTED_COST,
4126             to_number(null)                         POU_PR_COMMITTED_COST,
4127             to_number(null)                         POU_OTH_COMMITTED_COST,
4128             bal.EOU_RAW_COST,
4129             bal.EOU_BILL_RAW_COST,
4130             bal.EOU_BRDN_COST,
4131             bal.EOU_BILL_BRDN_COST,
4132             to_number(null)                         EOU_SUP_INV_COMMITTED_COST,
4133             to_number(null)                         EOU_PO_COMMITTED_COST,
4134             to_number(null)                         EOU_PR_COMMITTED_COST,
4135             to_number(null)                         EOU_OTH_COMMITTED_COST,
4136             bal.G1_RAW_COST,
4137             bal.G1_BILL_RAW_COST,
4138             bal.G1_BRDN_COST,
4139             bal.G1_BILL_BRDN_COST,
4140             bal.G1_REVENUE,
4141             to_number(null)                         G1_SUP_INV_COMMITTED_COST,
4142             to_number(null)                         G1_PO_COMMITTED_COST,
4143             to_number(null)                         G1_PR_COMMITTED_COST,
4144             to_number(null)                         G1_OTH_COMMITTED_COST,
4145             bal.G2_RAW_COST,
4146             bal.G2_BILL_RAW_COST,
4147             bal.G2_BRDN_COST,
4148             bal.G2_BILL_BRDN_COST,
4149             bal.G2_REVENUE,
4150             to_number(null)                         G2_SUP_INV_COMMITTED_COST,
4151             to_number(null)                         G2_PO_COMMITTED_COST,
4152             to_number(null)                         G2_PR_COMMITTED_COST,
4153             to_number(null)                         G2_OTH_COMMITTED_COST,
4154             bal.QUANTITY,
4155             bal.BILL_QUANTITY
4156           from
4157             PJI_PA_PROJ_EVENTS_LOG   log,
4158             PJI_PJP_PROJ_EXTR_STATUS stat,
4159             PJI_FP_TXN_ACCUM         bal
4160           where
4161             l_extraction_type      = 'RBS'           and
4162             log.WORKER_ID          = p_worker_id     and
4163             log.EVENT_TYPE         = 'RBS_PUSH'      and
4164             stat.PROJECT_ID        = log.ATTRIBUTE19 and
4165             stat.EXTRACTION_STATUS = 'I'             and
4166             bal.PROJECT_ID         = log.ATTRIBUTE19
4167           union all                        -- RBS change processing commitments
4168           select
4169             bal.TXN_ACCUM_HEADER_ID,
4170             to_number(null)                         RESOURCE_CLASS_ID,
4171             bal.PROJECT_ID,
4172             bal.PROJECT_ORG_ID,
4173             bal.PROJECT_ORGANIZATION_ID,
4174             to_char(null)                           PROJECT_TYPE_CLASS,
4175             nvl(bal.TASK_ID, -1)                    TASK_ID,
4176             bal.RECVR_PERIOD_TYPE,
4177             bal.RECVR_PERIOD_ID,
4178             nvl(to_number(log.EVENT_OBJECT), -1)    RBS_VERSION_ID,
4179             bal.TXN_CURRENCY_CODE,
4180             to_number(null)                         TXN_RAW_COST,
4181             to_number(null)                         TXN_BILL_RAW_COST,
4182             to_number(null)                         TXN_BRDN_COST,
4183             to_number(null)                         TXN_BILL_BRDN_COST,
4184             to_number(null)                         TXN_REVENUE,
4185             bal.TXN_SUP_INV_COMMITTED_COST,
4186             bal.TXN_PO_COMMITTED_COST,
4187             bal.TXN_PR_COMMITTED_COST,
4188             bal.TXN_OTH_COMMITTED_COST,
4189             to_number(null)                         PRJ_RAW_COST,
4190             to_number(null)                         PRJ_BILL_RAW_COST,
4191             to_number(null)                         PRJ_BRDN_COST,
4192             to_number(null)                         PRJ_BILL_BRDN_COST,
4193             to_number(null)                         PRJ_REVENUE,
4194             bal.PRJ_SUP_INV_COMMITTED_COST,
4195             bal.PRJ_PO_COMMITTED_COST,
4196             bal.PRJ_PR_COMMITTED_COST,
4197             bal.PRJ_OTH_COMMITTED_COST,
4198             to_number(null)                         POU_RAW_COST,
4199             to_number(null)                         POU_BILL_RAW_COST,
4200             to_number(null)                         POU_BRDN_COST,
4201             to_number(null)                         POU_BILL_BRDN_COST,
4202             to_number(null)                         POU_REVENUE,
4203             bal.POU_SUP_INV_COMMITTED_COST,
4204             bal.POU_PO_COMMITTED_COST,
4205             bal.POU_PR_COMMITTED_COST,
4206             bal.POU_OTH_COMMITTED_COST,
4207             to_number(null)                         EOU_RAW_COST,
4208             to_number(null)                         EOU_BILL_RAW_COST,
4209             to_number(null)                         EOU_BRDN_COST,
4210             to_number(null)                         EOU_BILL_BRDN_COST,
4211             bal.EOU_SUP_INV_COMMITTED_COST,
4212             bal.EOU_PO_COMMITTED_COST,
4213             bal.EOU_PR_COMMITTED_COST,
4214             bal.EOU_OTH_COMMITTED_COST,
4215             to_number(null)                         G1_RAW_COST,
4216             to_number(null)                         G1_BILL_RAW_COST,
4217             to_number(null)                         G1_BRDN_COST,
4218             to_number(null)                         G1_BILL_BRDN_COST,
4219             to_number(null)                         G1_REVENUE,
4220             bal.G1_SUP_INV_COMMITTED_COST,
4221             bal.G1_PO_COMMITTED_COST,
4222             bal.G1_PR_COMMITTED_COST,
4223             bal.G1_OTH_COMMITTED_COST,
4224             to_number(null)                         G2_RAW_COST,
4225             to_number(null)                         G2_BILL_RAW_COST,
4226             to_number(null)                         G2_BRDN_COST,
4227             to_number(null)                         G2_BILL_BRDN_COST,
4228             to_number(null)                         G2_REVENUE,
4229             bal.G2_SUP_INV_COMMITTED_COST,
4230             bal.G2_PO_COMMITTED_COST,
4231             bal.G2_PR_COMMITTED_COST,
4232             bal.G2_OTH_COMMITTED_COST,
4233             to_number(null)                         QUANTITY,
4234             to_number(null)                         BILL_QUANTITY
4235           from
4236             PJI_PA_PROJ_EVENTS_LOG   log,
4237             PJI_PJP_PROJ_EXTR_STATUS stat,
4238             PJI_FP_TXN_ACCUM1        bal
4239           where
4240             l_extraction_type      = 'RBS'           and
4241             log.WORKER_ID          = p_worker_id     and
4242             log.EVENT_TYPE         = 'RBS_PUSH'      and
4243             stat.PROJECT_ID        = log.ATTRIBUTE19 and
4244             stat.EXTRACTION_STATUS = 'I'             and
4245             bal.PROJECT_ID         = log.ATTRIBUTE19
4246             ) src1
4247           group by
4248             src1.TXN_ACCUM_HEADER_ID,
4249             src1.RESOURCE_CLASS_ID,
4250             src1.PROJECT_ID,
4251             src1.PROJECT_ORG_ID,
4252             src1.PROJECT_ORGANIZATION_ID,
4253             src1.PROJECT_TYPE_CLASS,
4254             src1.TASK_ID,
4255             src1.RECVR_PERIOD_TYPE,
4256             src1.RECVR_PERIOD_ID,
4257             src1.RBS_VERSION_ID,
4258             src1.TXN_CURRENCY_CODE
4259             ) src2
4260           ) src,
4261           PA_RBS_TXN_ACCUM_MAP     rbs,
4262           PJI_PJP_PROJ_BATCH_MAP   map,
4263           PJI_ORG_EXTR_INFO        info,
4264           PJI_PJP_WBS_HEADER       wbs_hdr,
4265           PA_PROJ_ELEMENT_VERSIONS ver,
4266           (
4267             select 1   INVERT_ID from dual
4268                                  where l_g1_currency_code is not null union all
4269             select 2   INVERT_ID from dual
4270                                  where l_g2_currency_flag = 'Y' and
4271                                        l_g2_currency_code is not null union all
4272             select 4   INVERT_ID from dual union all
4273             select 8   INVERT_ID from dual union all
4274             select 16  INVERT_ID from dual
4275                                  where l_txn_currency_flag = 'Y'
4276          -- select 32  INVERT_ID from dual  OMIT DETAIL SLICES FOR NOW
4277          --                      where l_g1_currency_code is not null union all
4278          -- select 64  INVERT_ID from dual
4279          --                      where l_g2_currency_flag = 'Y' and
4280          --                            l_g2_currency_code is not null union all
4281          -- select 128 INVERT_ID from dual union all
4282          -- select 256 INVERT_ID from dual
4283           ) invert
4284         where
4285           src.TXN_ACCUM_HEADER_ID     = rbs.TXN_ACCUM_HEADER_ID (+) and
4286           src.RBS_VERSION_ID          = rbs.STRUCT_VERSION_ID   (+) and
4287           map.WORKER_ID               = p_worker_id                 and
4288           src.PROJECT_ID              = map.PROJECT_ID              and
4289           src.PROJECT_ORG_ID          = info.ORG_ID                 and  /*5377133 */
4290           wbs_hdr.PLAN_VERSION_ID     = -1                          and
4291           src.PROJECT_ID              = wbs_hdr.PROJECT_ID          and
4292           ver.ELEMENT_VERSION_ID      = wbs_hdr.WBS_VERSION_ID
4293         ) src3
4294       group by
4295         src3.WORKER_ID,
4296         src3.TXN_ACCUM_HEADER_ID,
4297         src3.RESOURCE_CLASS_ID,
4298         src3.PROJECT_ID,
4299         src3.PROJECT_ORG_ID,
4300         src3.PROJECT_ORGANIZATION_ID,
4301         src3.PROJECT_TYPE_CLASS,
4302         src3.PROJECT_ELEMENT_ID,
4303         src3.TIME_ID,
4304         src3.PERIOD_TYPE_ID,
4305         src3.CALENDAR_TYPE,
4306         src3.RBS_AGGR_LEVEL,
4307         src3.WBS_ROLLUP_FLAG,
4308         src3.PRG_ROLLUP_FLAG,
4309         src3.DIFF_CURRENCY_CODE,
4310         src3.DIFF_ROWNUM,
4311         nvl(src3.CURRENCY_CODE, 'PJI$NULL'),
4312         src3.RBS_ELEMENT_ID,
4313         src3.RBS_VERSION_ID,
4314         src3.PLAN_VERSION_ID,
4315         src3.PLAN_TYPE_ID
4316       ) src,
4317       PA_RESOURCE_CLASSES_B cls
4318     where
4319       src.RESOURCE_CLASS_ID = cls.RESOURCE_CLASS_ID (+)
4320     group by
4321       src.WORKER_ID,
4322       src.TXN_ACCUM_HEADER_ID,
4323       src.PROJECT_ID,
4324       src.PROJECT_ORG_ID,
4325       src.PROJECT_ORGANIZATION_ID,
4326       src.PROJECT_ELEMENT_ID,
4327       src.TIME_ID,
4328       src.PERIOD_TYPE_ID,
4329       src.CALENDAR_TYPE,
4330       src.RBS_AGGR_LEVEL,
4331       src.WBS_ROLLUP_FLAG,
4332       src.PRG_ROLLUP_FLAG,
4333       src.CURR_RECORD_TYPE_ID,
4334       src.CURRENCY_CODE,
4335       src.RBS_ELEMENT_ID,
4336       src.RBS_VERSION_ID,
4337       src.PLAN_VERSION_ID,
4338       src.PLAN_TYPE_ID;
4339 
4340     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_SLICES(p_worker_id);');
4341 
4342     commit;
4343 
4344   end AGGREGATE_FP_SLICES;
4345 
4346 
4347   -- -----------------------------------------------------
4348   -- procedure AGGREGATE_AC_SLICES
4349   --
4350   --   History
4351   --   19-MAR-2004  SVERMETT  Created
4352   --
4353   -- Internal PJP Summarization API.
4354   --
4355   -- -----------------------------------------------------
4356   procedure AGGREGATE_AC_SLICES (p_worker_id in number) is
4357 
4358     l_process           varchar2(30);
4359     l_extraction_type   varchar2(30);
4360 
4361 
4362     l_txn_currency_flag varchar2(1);
4363     l_g2_currency_flag  varchar2(1);
4364 
4365     l_g1_currency_code  varchar2(30);
4366     l_g2_currency_code  varchar2(30);
4367 
4368     l_plan_type_id      number;    -- Bug#5099574
4369     l_refresh_code      number;
4370 
4371 
4372   begin
4373 
4374     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
4375 
4376     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
4377 
4378     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);')) then
4379       return;
4380     end if;
4381 
4382    --  Bug#5099574  - Start
4383 
4384       l_plan_type_id     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
4385       l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
4386 
4387       if (l_plan_type_id = -1) then
4388         l_plan_type_id := null;
4389       end if;
4390 
4391     -- If the condtion is true then mark the process as completed and return
4392       if ( l_extraction_type='PARTIAL' and ( l_plan_type_id is not null  or bitand(l_refresh_code,1) <> 1) ) then
4393        PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);');
4394        commit;
4395        return;
4396       end if;
4397 
4398   --  Bug#5099574 - End
4399 
4400     if (l_extraction_type <> 'RBS') then
4401 
4402     select
4403       TXN_CURR_FLAG,
4404       GLOBAL_CURR2_FLAG
4405     into
4406       l_txn_currency_flag,
4407       l_g2_currency_flag
4408     from
4409       PJI_SYSTEM_SETTINGS;
4410 
4411     l_g1_currency_code := PJI_UTILS.GET_GLOBAL_PRIMARY_CURRENCY;
4412     l_g2_currency_code := PJI_UTILS.GET_GLOBAL_SECONDARY_CURRENCY;
4413 
4414     insert into PJI_AC_AGGR_PJP0 pjp0_i
4415     (
4416       WORKER_ID,
4417       PROJECT_ID,
4418       PROJECT_ORG_ID,
4419       PROJECT_ORGANIZATION_ID,
4420       PROJECT_ELEMENT_ID,
4421       TIME_ID,
4422       PERIOD_TYPE_ID,
4423       CALENDAR_TYPE,
4424       WBS_ROLLUP_FLAG,
4425       PRG_ROLLUP_FLAG,
4426       CURR_RECORD_TYPE_ID,
4427       CURRENCY_CODE,
4428       REVENUE,
4429       INITIAL_FUNDING_AMOUNT,
4430       INITIAL_FUNDING_COUNT,
4431       ADDITIONAL_FUNDING_AMOUNT,
4432       ADDITIONAL_FUNDING_COUNT,
4433       CANCELLED_FUNDING_AMOUNT,
4434       CANCELLED_FUNDING_COUNT,
4435       FUNDING_ADJUSTMENT_AMOUNT,
4436       FUNDING_ADJUSTMENT_COUNT,
4437       REVENUE_WRITEOFF,
4438       AR_INVOICE_AMOUNT,
4439       AR_INVOICE_COUNT,
4440       AR_CASH_APPLIED_AMOUNT,
4441       AR_INVOICE_WRITE_OFF_AMOUNT,
4442       AR_INVOICE_WRITEOFF_COUNT,
4443       AR_CREDIT_MEMO_AMOUNT,
4444       AR_CREDIT_MEMO_COUNT,
4445       UNBILLED_RECEIVABLES,
4446       UNEARNED_REVENUE,
4447       AR_UNAPPR_INVOICE_AMOUNT,
4448       AR_UNAPPR_INVOICE_COUNT,
4449       AR_APPR_INVOICE_AMOUNT,
4450       AR_APPR_INVOICE_COUNT,
4451       AR_AMOUNT_DUE,
4452       AR_COUNT_DUE,
4453       AR_AMOUNT_OVERDUE,
4454       AR_COUNT_OVERDUE
4455     )
4456     select
4457       WORKER_ID,
4458       PROJECT_ID,
4459       PROJECT_ORG_ID,
4460       PROJECT_ORGANIZATION_ID,
4461       PROJECT_ELEMENT_ID,
4462       TIME_ID,
4463       PERIOD_TYPE_ID,
4464       CALENDAR_TYPE,
4465       WBS_ROLLUP_FLAG,
4466       PRG_ROLLUP_FLAG,
4467       sum(CURR_RECORD_TYPE_ID)                     CURR_RECORD_TYPE_ID,
4468       nvl(CURRENCY_CODE, 'PJI$NULL')               CURRENCY_CODE,
4469       max(REVENUE)                                 REVENUE,
4470       max(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
4471       max(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
4472       max(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
4473       max(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
4474       max(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
4475       max(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
4476       max(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
4477       max(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
4478       max(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
4479       max(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
4480       max(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
4481       max(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
4482       max(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
4483       max(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
4484       max(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
4485       max(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
4486       max(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
4487       max(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
4488       max(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
4489       max(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
4490       max(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
4491       max(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
4492       max(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
4493       max(AR_COUNT_DUE)                            AR_COUNT_DUE,
4494       max(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
4495       max(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE
4496     from
4497       (
4498       select /*+ ordered */
4499         p_worker_id                                WORKER_ID,
4500         src.PROJECT_ID,
4501         src.PROJECT_ORG_ID,
4502         map.PROJECT_ORGANIZATION_ID,
4503         decode(src.TASK_ID,
4504                -1, ver.PROJ_ELEMENT_ID,
4505                src.TASK_ID)                        PROJECT_ELEMENT_ID,
4506         src.PERIOD_ID                              TIME_ID,
4507         32                                         PERIOD_TYPE_ID,
4508         decode(src.PERIOD_TYPE,
4509                'ENT', 'E',
4510                'GL',  'G',
4511                'PA',  'P')                         CALENDAR_TYPE,
4512         'N'                                        WBS_ROLLUP_FLAG,
4513         'N'                                        PRG_ROLLUP_FLAG,
4514         invert.INVERT_ID                           CURR_RECORD_TYPE_ID,
4515         decode(invert.INVERT_ID,
4516                1,   l_g1_currency_code,
4517                2,   l_g2_currency_code,
4518                4,   src.PF_CURRENCY_CODE,
4519                8,   src.PRJ_CURRENCY_CODE,
4520                16,  src.TXN_CURRENCY_CODE,
4521                32,  l_g1_currency_code,
4522                64,  l_g2_currency_code,
4523                128, src.PF_CURRENCY_CODE,
4524                256, src.PRJ_CURRENCY_CODE)         DIFF_CURRENCY_CODE,
4525         DIFF_ROWNUM                                DIFF_ROWNUM,
4526         decode(invert.INVERT_ID,
4527                1,   l_g1_currency_code,
4528                2,   l_g2_currency_code,
4529                4,   src.PF_CURRENCY_CODE,
4530                8,   src.PRJ_CURRENCY_CODE,
4531                16,  src.TXN_CURRENCY_CODE,
4532                32,  src.TXN_CURRENCY_CODE,
4533                64,  src.TXN_CURRENCY_CODE,
4534                128, src.TXN_CURRENCY_CODE,
4535                256, src.TXN_CURRENCY_CODE)         CURRENCY_CODE,
4536         decode(invert.INVERT_ID,
4537                1,   src.G1_REVENUE,
4538                2,   src.G2_REVENUE,
4539                4,   src.POU_REVENUE,
4540                8,   src.PRJ_REVENUE,
4541                16,  src.TXN_REVENUE,
4542                32,  src.G1_REVENUE,
4543                64,  src.G2_REVENUE,
4544                128, src.POU_REVENUE,
4545                256, src.PRJ_REVENUE)               REVENUE,
4546         decode(invert.INVERT_ID,
4547                1,   src.G1_INITIAL_FUNDING_AMOUNT,
4548                2,   src.G2_INITIAL_FUNDING_AMOUNT,
4549                4,   src.POU_INITIAL_FUNDING_AMOUNT,
4550                8,   src.PRJ_INITIAL_FUNDING_AMOUNT,
4551                16,  src.TXN_INITIAL_FUNDING_AMOUNT,
4552                32,  src.G1_INITIAL_FUNDING_AMOUNT,
4553                64,  src.G2_INITIAL_FUNDING_AMOUNT,
4554                128, src.POU_INITIAL_FUNDING_AMOUNT,
4555                256, src.PRJ_INITIAL_FUNDING_AMOUNT)
4556                                                    INITIAL_FUNDING_AMOUNT,
4557         src.INITIAL_FUNDING_COUNT,
4558         decode(invert.INVERT_ID,
4559                1,   src.G1_ADDITIONAL_FUNDING_AMOUNT,
4560                2,   src.G2_ADDITIONAL_FUNDING_AMOUNT,
4561                4,   src.POU_ADDITIONAL_FUNDING_AMOUNT,
4562                8,   src.PRJ_ADDITIONAL_FUNDING_AMOUNT,
4563                16,  src.TXN_ADDITIONAL_FUNDING_AMOUNT,
4564                32,  src.G1_ADDITIONAL_FUNDING_AMOUNT,
4565                64,  src.G2_ADDITIONAL_FUNDING_AMOUNT,
4566                128, src.POU_ADDITIONAL_FUNDING_AMOUNT,
4567                256, src.PRJ_ADDITIONAL_FUNDING_AMOUNT)
4568                                                    ADDITIONAL_FUNDING_AMOUNT,
4569         src.ADDITIONAL_FUNDING_COUNT,
4570         decode(invert.INVERT_ID,
4571                1,   src.G1_CANCELLED_FUNDING_AMOUNT,
4572                2,   src.G2_CANCELLED_FUNDING_AMOUNT,
4573                4,   src.POU_CANCELLED_FUNDING_AMOUNT,
4574                8,   src.PRJ_CANCELLED_FUNDING_AMOUNT,
4575                16,  src.TXN_CANCELLED_FUNDING_AMOUNT,
4576                32,  src.G1_CANCELLED_FUNDING_AMOUNT,
4577                64,  src.G2_CANCELLED_FUNDING_AMOUNT,
4578                128, src.POU_CANCELLED_FUNDING_AMOUNT,
4579                256, src.PRJ_CANCELLED_FUNDING_AMOUNT)
4580                                                    CANCELLED_FUNDING_AMOUNT,
4581         src.CANCELLED_FUNDING_COUNT,
4582         decode(invert.INVERT_ID,
4583                1,   src.G1_FUNDING_ADJUSTMENT_AMOUNT,
4584                2,   src.G2_FUNDING_ADJUSTMENT_AMOUNT,
4585                4,   src.POU_FUNDING_ADJUSTMENT_AMOUNT,
4586                8,   src.PRJ_FUNDING_ADJUSTMENT_AMOUNT,
4587                16,  src.TXN_FUNDING_ADJUSTMENT_AMOUNT,
4588                32,  src.G1_FUNDING_ADJUSTMENT_AMOUNT,
4589                64,  src.G2_FUNDING_ADJUSTMENT_AMOUNT,
4590                128, src.POU_FUNDING_ADJUSTMENT_AMOUNT,
4591                256, src.PRJ_FUNDING_ADJUSTMENT_AMOUNT)
4592                                                    FUNDING_ADJUSTMENT_AMOUNT,
4593         src.FUNDING_ADJUSTMENT_COUNT,
4594         decode(invert.INVERT_ID,
4595                1,   src.G1_REVENUE_WRITEOFF,
4596                2,   src.G2_REVENUE_WRITEOFF,
4597                4,   src.POU_REVENUE_WRITEOFF,
4598                8,   src.PRJ_REVENUE_WRITEOFF,
4599                16,  src.TXN_REVENUE_WRITEOFF,
4600                32,  src.G1_REVENUE_WRITEOFF,
4601                64,  src.G2_REVENUE_WRITEOFF,
4602                128, src.POU_REVENUE_WRITEOFF,
4603                256, src.PRJ_REVENUE_WRITEOFF)      REVENUE_WRITEOFF,
4604         decode(invert.INVERT_ID,
4605                1,   src.G1_AR_INVOICE_AMOUNT,
4606                2,   src.G2_AR_INVOICE_AMOUNT,
4607                4,   src.POU_AR_INVOICE_AMOUNT,
4608                8,   src.PRJ_AR_INVOICE_AMOUNT,
4609                16,  src.TXN_AR_INVOICE_AMOUNT,
4610                32,  src.G1_AR_INVOICE_AMOUNT,
4611                64,  src.G2_AR_INVOICE_AMOUNT,
4612                128, src.POU_AR_INVOICE_AMOUNT,
4613                256, src.PRJ_AR_INVOICE_AMOUNT)     AR_INVOICE_AMOUNT,
4614         src.AR_INVOICE_COUNT,
4615         decode(invert.INVERT_ID,
4616                1,   src.G1_AR_CASH_APPLIED_AMOUNT,
4617                2,   src.G2_AR_CASH_APPLIED_AMOUNT,
4618                4,   src.POU_AR_CASH_APPLIED_AMOUNT,
4619                8,   src.PRJ_AR_CASH_APPLIED_AMOUNT,
4620                16,  src.TXN_AR_CASH_APPLIED_AMOUNT,
4621                32,  src.G1_AR_CASH_APPLIED_AMOUNT,
4622                64,  src.G2_AR_CASH_APPLIED_AMOUNT,
4623                128, src.POU_AR_CASH_APPLIED_AMOUNT,
4624                256, src.PRJ_AR_CASH_APPLIED_AMOUNT)
4625                                                    AR_CASH_APPLIED_AMOUNT,
4626         decode(invert.INVERT_ID,
4627                1,   src.G1_AR_INVOICE_WRITEOFF_AMOUNT,
4628                2,   src.G2_AR_INVOICE_WRITEOFF_AMOUNT,
4629                4,   src.POU_AR_INVOICE_WRITEOFF_AMOUNT,
4630                8,   src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
4631                16,  src.TXN_AR_INVOICE_WRITEOFF_AMOUNT,
4632                32,  src.G1_AR_INVOICE_WRITEOFF_AMOUNT,
4633                64,  src.G2_AR_INVOICE_WRITEOFF_AMOUNT,
4634                128, src.POU_AR_INVOICE_WRITEOFF_AMOUNT,
4635                256, src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT)
4636                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
4637         src.AR_INVOICE_WRITEOFF_COUNT,
4638         decode(invert.INVERT_ID,
4639                1,   src.G1_AR_CREDIT_MEMO_AMOUNT,
4640                2,   src.G2_AR_CREDIT_MEMO_AMOUNT,
4641                4,   src.POU_AR_CREDIT_MEMO_AMOUNT,
4642                8,   src.PRJ_AR_CREDIT_MEMO_AMOUNT,
4643                16,  src.TXN_AR_CREDIT_MEMO_AMOUNT,
4644                32,  src.G1_AR_CREDIT_MEMO_AMOUNT,
4645                64,  src.G2_AR_CREDIT_MEMO_AMOUNT,
4646                128, src.POU_AR_CREDIT_MEMO_AMOUNT,
4647                256, src.PRJ_AR_CREDIT_MEMO_AMOUNT) AR_CREDIT_MEMO_AMOUNT,
4648         src.AR_CREDIT_MEMO_COUNT,
4649         decode(invert.INVERT_ID,
4650                1,   src.G1_UNBILLED_RECEIVABLES,
4651                2,   src.G2_UNBILLED_RECEIVABLES,
4652                4,   src.POU_UNBILLED_RECEIVABLES,
4653                8,   src.PRJ_UNBILLED_RECEIVABLES,
4654                16,  src.TXN_UNBILLED_RECEIVABLES,
4655                32,  src.G1_UNBILLED_RECEIVABLES,
4656                64,  src.G2_UNBILLED_RECEIVABLES,
4657                128, src.POU_UNBILLED_RECEIVABLES,
4658                256, src.PRJ_UNBILLED_RECEIVABLES)  UNBILLED_RECEIVABLES,
4659         decode(invert.INVERT_ID,
4660                1,   src.G1_UNEARNED_REVENUE,
4661                2,   src.G2_UNEARNED_REVENUE,
4662                4,   src.POU_UNEARNED_REVENUE,
4663                8,   src.PRJ_UNEARNED_REVENUE,
4664                16,  src.TXN_UNEARNED_REVENUE,
4665                32,  src.G1_UNEARNED_REVENUE,
4666                64,  src.G2_UNEARNED_REVENUE,
4667                128, src.POU_UNEARNED_REVENUE,
4668                256, src.PRJ_UNEARNED_REVENUE)      UNEARNED_REVENUE,
4669         decode(invert.INVERT_ID,
4670                1,   src.G1_AR_UNAPPR_INVOICE_AMOUNT,
4671                2,   src.G2_AR_UNAPPR_INVOICE_AMOUNT,
4672                4,   src.POU_AR_UNAPPR_INVOICE_AMOUNT,
4673                8,   src.PRJ_AR_UNAPPR_INVOICE_AMOUNT,
4674                16,  src.TXN_AR_UNAPPR_INVOICE_AMOUNT,
4675                32,  src.G1_AR_UNAPPR_INVOICE_AMOUNT,
4676                64,  src.G2_AR_UNAPPR_INVOICE_AMOUNT,
4677                128, src.POU_AR_UNAPPR_INVOICE_AMOUNT,
4678                256, src.PRJ_AR_UNAPPR_INVOICE_AMOUNT)
4679                                                    AR_UNAPPR_INVOICE_AMOUNT,
4680         src.AR_UNAPPR_INVOICE_COUNT,
4681         decode(invert.INVERT_ID,
4682                1,   src.G1_AR_APPR_INVOICE_AMOUNT,
4683                2,   src.G2_AR_APPR_INVOICE_AMOUNT,
4684                4,   src.POU_AR_APPR_INVOICE_AMOUNT,
4685                8,   src.PRJ_AR_APPR_INVOICE_AMOUNT,
4686                16,  src.TXN_AR_APPR_INVOICE_AMOUNT,
4687                32,  src.G1_AR_APPR_INVOICE_AMOUNT,
4688                64,  src.G2_AR_APPR_INVOICE_AMOUNT,
4689                128, src.POU_AR_APPR_INVOICE_AMOUNT,
4690                256, src.PRJ_AR_APPR_INVOICE_AMOUNT)
4691                                                    AR_APPR_INVOICE_AMOUNT,
4692         src.AR_APPR_INVOICE_COUNT,
4693         decode(invert.INVERT_ID,
4694                1,   src.G1_AR_AMOUNT_DUE,
4695                2,   src.G2_AR_AMOUNT_DUE,
4696                4,   src.POU_AR_AMOUNT_DUE,
4697                8,   src.PRJ_AR_AMOUNT_DUE,
4698                16,  src.TXN_AR_AMOUNT_DUE,
4699                32,  src.G1_AR_AMOUNT_DUE,
4700                64,  src.G2_AR_AMOUNT_DUE,
4701                128, src.POU_AR_AMOUNT_DUE,
4702                256, src.PRJ_AR_AMOUNT_DUE)         AR_AMOUNT_DUE,
4703         src.AR_COUNT_DUE,
4704         decode(invert.INVERT_ID,
4705                1,   src.G1_AR_AMOUNT_OVERDUE,
4706                2,   src.G2_AR_AMOUNT_OVERDUE,
4707                4,   src.POU_AR_AMOUNT_OVERDUE,
4708                8,   src.PRJ_AR_AMOUNT_OVERDUE,
4709                16,  src.TXN_AR_AMOUNT_OVERDUE,
4710                32,  src.G1_AR_AMOUNT_OVERDUE,
4711                64,  src.G2_AR_AMOUNT_OVERDUE,
4712                128, src.POU_AR_AMOUNT_OVERDUE,
4713                256, src.PRJ_AR_AMOUNT_OVERDUE)     AR_AMOUNT_OVERDUE,
4714         src.AR_COUNT_OVERDUE
4715       from
4716         (
4717         select
4718           ROWNUM                                DIFF_ROWNUM,
4719           PROJECT_ID,
4720           PROJECT_ORG_ID,
4721           PROJECT_ORGANIZATION_ID,
4722           TASK_ID,
4723           PERIOD_TYPE,
4724           PERIOD_ID,
4725           PF_CURRENCY_CODE,
4726           PRJ_CURRENCY_CODE,
4727           TXN_CURRENCY_CODE,
4728           TXN_REVENUE,
4729           TXN_FUNDING,
4730           TXN_INITIAL_FUNDING_AMOUNT,
4731           TXN_ADDITIONAL_FUNDING_AMOUNT,
4732           TXN_CANCELLED_FUNDING_AMOUNT,
4733           TXN_FUNDING_ADJUSTMENT_AMOUNT,
4734           TXN_REVENUE_WRITEOFF,
4735           TXN_AR_INVOICE_AMOUNT,
4736           TXN_AR_CASH_APPLIED_AMOUNT,
4737           TXN_AR_INVOICE_WRITEOFF_AMOUNT,
4738           TXN_AR_CREDIT_MEMO_AMOUNT,
4739           TXN_UNBILLED_RECEIVABLES,
4740           TXN_UNEARNED_REVENUE,
4741           TXN_AR_UNAPPR_INVOICE_AMOUNT,
4742           TXN_AR_APPR_INVOICE_AMOUNT,
4743           TXN_AR_AMOUNT_DUE,
4744           TXN_AR_AMOUNT_OVERDUE,
4745           PRJ_REVENUE,
4746           PRJ_FUNDING,
4747           PRJ_INITIAL_FUNDING_AMOUNT,
4748           PRJ_ADDITIONAL_FUNDING_AMOUNT,
4749           PRJ_CANCELLED_FUNDING_AMOUNT,
4750           PRJ_FUNDING_ADJUSTMENT_AMOUNT,
4751           PRJ_REVENUE_WRITEOFF,
4752           PRJ_AR_INVOICE_AMOUNT,
4753           PRJ_AR_CASH_APPLIED_AMOUNT,
4754           PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
4755           PRJ_AR_CREDIT_MEMO_AMOUNT,
4756           PRJ_UNBILLED_RECEIVABLES,
4757           PRJ_UNEARNED_REVENUE,
4758           PRJ_AR_UNAPPR_INVOICE_AMOUNT,
4759           PRJ_AR_APPR_INVOICE_AMOUNT,
4760           PRJ_AR_AMOUNT_DUE,
4761           PRJ_AR_AMOUNT_OVERDUE,
4762           POU_REVENUE,
4763           POU_FUNDING,
4764           POU_INITIAL_FUNDING_AMOUNT,
4765           POU_ADDITIONAL_FUNDING_AMOUNT,
4766           POU_CANCELLED_FUNDING_AMOUNT,
4767           POU_FUNDING_ADJUSTMENT_AMOUNT,
4768           POU_REVENUE_WRITEOFF,
4769           POU_AR_INVOICE_AMOUNT,
4770           POU_AR_CASH_APPLIED_AMOUNT,
4771           POU_AR_INVOICE_WRITEOFF_AMOUNT,
4772           POU_AR_CREDIT_MEMO_AMOUNT,
4773           POU_UNBILLED_RECEIVABLES,
4774           POU_UNEARNED_REVENUE,
4775           POU_AR_UNAPPR_INVOICE_AMOUNT,
4776           POU_AR_APPR_INVOICE_AMOUNT,
4777           POU_AR_AMOUNT_DUE,
4778           POU_AR_AMOUNT_OVERDUE,
4779           INITIAL_FUNDING_COUNT,
4780           ADDITIONAL_FUNDING_COUNT,
4781           CANCELLED_FUNDING_COUNT,
4782           FUNDING_ADJUSTMENT_COUNT,
4783           AR_INVOICE_COUNT,
4784           AR_CASH_APPLIED_COUNT,
4785           AR_INVOICE_WRITEOFF_COUNT,
4786           AR_CREDIT_MEMO_COUNT,
4787           AR_UNAPPR_INVOICE_COUNT,
4788           AR_APPR_INVOICE_COUNT,
4789           AR_COUNT_DUE,
4790           AR_COUNT_OVERDUE,
4791           G1_REVENUE,
4792           G1_FUNDING,
4793           G1_INITIAL_FUNDING_AMOUNT,
4794           G1_ADDITIONAL_FUNDING_AMOUNT,
4795           G1_CANCELLED_FUNDING_AMOUNT,
4796           G1_FUNDING_ADJUSTMENT_AMOUNT,
4797           G1_REVENUE_WRITEOFF,
4798           G1_AR_INVOICE_AMOUNT,
4799           G1_AR_CASH_APPLIED_AMOUNT,
4800           G1_AR_INVOICE_WRITEOFF_AMOUNT,
4801           G1_AR_CREDIT_MEMO_AMOUNT,
4802           G1_UNBILLED_RECEIVABLES,
4803           G1_UNEARNED_REVENUE,
4804           G1_AR_UNAPPR_INVOICE_AMOUNT,
4805           G1_AR_APPR_INVOICE_AMOUNT,
4806           G1_AR_AMOUNT_DUE,
4807           G1_AR_AMOUNT_OVERDUE,
4808           G2_REVENUE,
4809           G2_FUNDING,
4810           G2_INITIAL_FUNDING_AMOUNT,
4811           G2_ADDITIONAL_FUNDING_AMOUNT,
4812           G2_CANCELLED_FUNDING_AMOUNT,
4813           G2_FUNDING_ADJUSTMENT_AMOUNT,
4814           G2_REVENUE_WRITEOFF,
4815           G2_AR_INVOICE_AMOUNT,
4816           G2_AR_CASH_APPLIED_AMOUNT,
4817           G2_AR_INVOICE_WRITEOFF_AMOUNT,
4818           G2_AR_CREDIT_MEMO_AMOUNT,
4819           G2_UNBILLED_RECEIVABLES,
4820           G2_UNEARNED_REVENUE,
4821           G2_AR_UNAPPR_INVOICE_AMOUNT,
4822           G2_AR_APPR_INVOICE_AMOUNT,
4823           G2_AR_AMOUNT_DUE,
4824           G2_AR_AMOUNT_OVERDUE
4825         from
4826           (
4827         select /*+ ordered */
4828           src.PROJECT_ID,
4829           src.PROJECT_ORG_ID,
4830           src.PROJECT_ORGANIZATION_ID,
4831           nvl(src.TASK_ID, -1)                  TASK_ID,
4832           src.PERIOD_TYPE,
4833           src.PERIOD_ID,
4834           info.PF_CURRENCY_CODE,
4835           prj.PROJECT_CURRENCY_CODE             PRJ_CURRENCY_CODE,
4836           src.TXN_CURRENCY_CODE,
4837           sum(src.TXN_REVENUE)                  TXN_REVENUE,
4838           sum(src.TXN_FUNDING)                  TXN_FUNDING,
4839           sum(src.TXN_INITIAL_FUNDING_AMOUNT)   TXN_INITIAL_FUNDING_AMOUNT,
4840           sum(src.TXN_ADDITIONAL_FUNDING_AMOUNT)TXN_ADDITIONAL_FUNDING_AMOUNT,
4841           sum(src.TXN_CANCELLED_FUNDING_AMOUNT) TXN_CANCELLED_FUNDING_AMOUNT,
4842           sum(src.TXN_FUNDING_ADJUSTMENT_AMOUNT)TXN_FUNDING_ADJUSTMENT_AMOUNT,
4843           sum(src.TXN_REVENUE_WRITEOFF)         TXN_REVENUE_WRITEOFF,
4844           sum(src.TXN_AR_INVOICE_AMOUNT)        TXN_AR_INVOICE_AMOUNT,
4845           sum(src.TXN_AR_CASH_APPLIED_AMOUNT)   TXN_AR_CASH_APPLIED_AMOUNT,
4846           sum(src.TXN_AR_INVOICE_WRITEOFF_AMOUNT)
4847                                                 TXN_AR_INVOICE_WRITEOFF_AMOUNT,
4848           sum(src.TXN_AR_CREDIT_MEMO_AMOUNT)    TXN_AR_CREDIT_MEMO_AMOUNT,
4849           sum(src.TXN_UNBILLED_RECEIVABLES)     TXN_UNBILLED_RECEIVABLES,
4850           sum(src.TXN_UNEARNED_REVENUE)         TXN_UNEARNED_REVENUE,
4851           sum(src.TXN_AR_UNAPPR_INVOICE_AMOUNT) TXN_AR_UNAPPR_INVOICE_AMOUNT,
4852           sum(src.TXN_AR_APPR_INVOICE_AMOUNT)   TXN_AR_APPR_INVOICE_AMOUNT,
4853           sum(src.TXN_AR_AMOUNT_DUE)            TXN_AR_AMOUNT_DUE,
4854           sum(src.TXN_AR_AMOUNT_OVERDUE)        TXN_AR_AMOUNT_OVERDUE,
4855           sum(src.PRJ_REVENUE)                  PRJ_REVENUE,
4856           sum(src.PRJ_FUNDING)                  PRJ_FUNDING,
4857           sum(src.PRJ_INITIAL_FUNDING_AMOUNT)   PRJ_INITIAL_FUNDING_AMOUNT,
4858           sum(src.PRJ_ADDITIONAL_FUNDING_AMOUNT)PRJ_ADDITIONAL_FUNDING_AMOUNT,
4859           sum(src.PRJ_CANCELLED_FUNDING_AMOUNT) PRJ_CANCELLED_FUNDING_AMOUNT,
4860           sum(src.PRJ_FUNDING_ADJUSTMENT_AMOUNT)PRJ_FUNDING_ADJUSTMENT_AMOUNT,
4861           sum(src.PRJ_REVENUE_WRITEOFF)         PRJ_REVENUE_WRITEOFF,
4862           sum(src.PRJ_AR_INVOICE_AMOUNT)        PRJ_AR_INVOICE_AMOUNT,
4863           sum(src.PRJ_AR_CASH_APPLIED_AMOUNT)   PRJ_AR_CASH_APPLIED_AMOUNT,
4864           sum(src.PRJ_AR_INVOICE_WRITEOFF_AMOUNT)
4865                                                 PRJ_AR_INVOICE_WRITEOFF_AMOUNT,
4866           sum(src.PRJ_AR_CREDIT_MEMO_AMOUNT)    PRJ_AR_CREDIT_MEMO_AMOUNT,
4867           sum(src.PRJ_UNBILLED_RECEIVABLES)     PRJ_UNBILLED_RECEIVABLES,
4868           sum(src.PRJ_UNEARNED_REVENUE)         PRJ_UNEARNED_REVENUE,
4869           sum(src.PRJ_AR_UNAPPR_INVOICE_AMOUNT) PRJ_AR_UNAPPR_INVOICE_AMOUNT,
4870           sum(src.PRJ_AR_APPR_INVOICE_AMOUNT)   PRJ_AR_APPR_INVOICE_AMOUNT,
4871           sum(src.PRJ_AR_AMOUNT_DUE)            PRJ_AR_AMOUNT_DUE,
4872           sum(src.PRJ_AR_AMOUNT_OVERDUE)        PRJ_AR_AMOUNT_OVERDUE,
4873           sum(src.POU_REVENUE)                  POU_REVENUE,
4874           sum(src.POU_FUNDING)                  POU_FUNDING,
4875           sum(src.POU_INITIAL_FUNDING_AMOUNT)   POU_INITIAL_FUNDING_AMOUNT,
4876           sum(src.POU_ADDITIONAL_FUNDING_AMOUNT)POU_ADDITIONAL_FUNDING_AMOUNT,
4877           sum(src.POU_CANCELLED_FUNDING_AMOUNT) POU_CANCELLED_FUNDING_AMOUNT,
4878           sum(src.POU_FUNDING_ADJUSTMENT_AMOUNT)POU_FUNDING_ADJUSTMENT_AMOUNT,
4879           sum(src.POU_REVENUE_WRITEOFF)         POU_REVENUE_WRITEOFF,
4880           sum(src.POU_AR_INVOICE_AMOUNT)        POU_AR_INVOICE_AMOUNT,
4881           sum(src.POU_AR_CASH_APPLIED_AMOUNT)   POU_AR_CASH_APPLIED_AMOUNT,
4882           sum(src.POU_AR_INVOICE_WRITEOFF_AMOUNT)
4883                                                 POU_AR_INVOICE_WRITEOFF_AMOUNT,
4884           sum(src.POU_AR_CREDIT_MEMO_AMOUNT)    POU_AR_CREDIT_MEMO_AMOUNT,
4885           sum(src.POU_UNBILLED_RECEIVABLES)     POU_UNBILLED_RECEIVABLES,
4886           sum(src.POU_UNEARNED_REVENUE)         POU_UNEARNED_REVENUE,
4887           sum(src.POU_AR_UNAPPR_INVOICE_AMOUNT) POU_AR_UNAPPR_INVOICE_AMOUNT,
4888           sum(src.POU_AR_APPR_INVOICE_AMOUNT)   POU_AR_APPR_INVOICE_AMOUNT,
4889           sum(src.POU_AR_AMOUNT_DUE)            POU_AR_AMOUNT_DUE,
4890           sum(src.POU_AR_AMOUNT_OVERDUE)        POU_AR_AMOUNT_OVERDUE,
4891           sum(src.INITIAL_FUNDING_COUNT)        INITIAL_FUNDING_COUNT,
4892           sum(src.ADDITIONAL_FUNDING_COUNT)     ADDITIONAL_FUNDING_COUNT,
4893           sum(src.CANCELLED_FUNDING_COUNT)      CANCELLED_FUNDING_COUNT,
4894           sum(src.FUNDING_ADJUSTMENT_COUNT)     FUNDING_ADJUSTMENT_COUNT,
4895           sum(src.AR_INVOICE_COUNT)             AR_INVOICE_COUNT,
4896           sum(src.AR_CASH_APPLIED_COUNT)        AR_CASH_APPLIED_COUNT,
4897           sum(src.AR_INVOICE_WRITEOFF_COUNT)    AR_INVOICE_WRITEOFF_COUNT,
4898           sum(src.AR_CREDIT_MEMO_COUNT)         AR_CREDIT_MEMO_COUNT,
4899           sum(src.AR_UNAPPR_INVOICE_COUNT)      AR_UNAPPR_INVOICE_COUNT,
4900           sum(src.AR_APPR_INVOICE_COUNT)        AR_APPR_INVOICE_COUNT,
4901           sum(src.AR_COUNT_DUE)                 AR_COUNT_DUE,
4902           sum(src.AR_COUNT_OVERDUE)             AR_COUNT_OVERDUE,
4903           sum(src.G1_REVENUE)                   G1_REVENUE,
4904           sum(src.G1_FUNDING)                   G1_FUNDING,
4905           sum(src.G1_INITIAL_FUNDING_AMOUNT)    G1_INITIAL_FUNDING_AMOUNT,
4906           sum(src.G1_ADDITIONAL_FUNDING_AMOUNT) G1_ADDITIONAL_FUNDING_AMOUNT,
4907           sum(src.G1_CANCELLED_FUNDING_AMOUNT)  G1_CANCELLED_FUNDING_AMOUNT,
4908           sum(src.G1_FUNDING_ADJUSTMENT_AMOUNT) G1_FUNDING_ADJUSTMENT_AMOUNT,
4909           sum(src.G1_REVENUE_WRITEOFF)          G1_REVENUE_WRITEOFF,
4910           sum(src.G1_AR_INVOICE_AMOUNT)         G1_AR_INVOICE_AMOUNT,
4911           sum(src.G1_AR_CASH_APPLIED_AMOUNT)    G1_AR_CASH_APPLIED_AMOUNT,
4912           sum(src.G1_AR_INVOICE_WRITEOFF_AMOUNT)G1_AR_INVOICE_WRITEOFF_AMOUNT,
4913           sum(src.G1_AR_CREDIT_MEMO_AMOUNT)     G1_AR_CREDIT_MEMO_AMOUNT,
4914           sum(src.G1_UNBILLED_RECEIVABLES)      G1_UNBILLED_RECEIVABLES,
4915           sum(src.G1_UNEARNED_REVENUE)          G1_UNEARNED_REVENUE,
4916           sum(src.G1_AR_UNAPPR_INVOICE_AMOUNT)  G1_AR_UNAPPR_INVOICE_AMOUNT,
4917           sum(src.G1_AR_APPR_INVOICE_AMOUNT)    G1_AR_APPR_INVOICE_AMOUNT,
4918           sum(src.G1_AR_AMOUNT_DUE)             G1_AR_AMOUNT_DUE,
4919           sum(src.G1_AR_AMOUNT_OVERDUE)         G1_AR_AMOUNT_OVERDUE,
4920           sum(src.G2_REVENUE)                   G2_REVENUE,
4921           sum(src.G2_FUNDING)                   G2_FUNDING,
4922           sum(src.G2_INITIAL_FUNDING_AMOUNT)    G2_INITIAL_FUNDING_AMOUNT,
4923           sum(src.G2_ADDITIONAL_FUNDING_AMOUNT) G2_ADDITIONAL_FUNDING_AMOUNT,
4924           sum(src.G2_CANCELLED_FUNDING_AMOUNT)  G2_CANCELLED_FUNDING_AMOUNT,
4925           sum(src.G2_FUNDING_ADJUSTMENT_AMOUNT) G2_FUNDING_ADJUSTMENT_AMOUNT,
4926           sum(src.G2_REVENUE_WRITEOFF)          G2_REVENUE_WRITEOFF,
4927           sum(src.G2_AR_INVOICE_AMOUNT)         G2_AR_INVOICE_AMOUNT,
4928           sum(src.G2_AR_CASH_APPLIED_AMOUNT)    G2_AR_CASH_APPLIED_AMOUNT,
4929           sum(src.G2_AR_INVOICE_WRITEOFF_AMOUNT)G2_AR_INVOICE_WRITEOFF_AMOUNT,
4930           sum(src.G2_AR_CREDIT_MEMO_AMOUNT)     G2_AR_CREDIT_MEMO_AMOUNT,
4931           sum(src.G2_UNBILLED_RECEIVABLES)      G2_UNBILLED_RECEIVABLES,
4932           sum(src.G2_UNEARNED_REVENUE)          G2_UNEARNED_REVENUE,
4933           sum(src.G2_AR_UNAPPR_INVOICE_AMOUNT)  G2_AR_UNAPPR_INVOICE_AMOUNT,
4934           sum(src.G2_AR_APPR_INVOICE_AMOUNT)    G2_AR_APPR_INVOICE_AMOUNT,
4935           sum(src.G2_AR_AMOUNT_DUE)             G2_AR_AMOUNT_DUE,
4936           sum(src.G2_AR_AMOUNT_OVERDUE)         G2_AR_AMOUNT_OVERDUE
4937         from
4938           PJI_PJP_RMAP_ACR  src_r,
4939           PJI_FM_AGGR_ACT4  src,
4940           PA_PROJECTS_ALL   prj,
4941           PJI_ORG_EXTR_INFO info
4942         where
4943           src_r.WORKER_ID     = p_worker_id          and
4944           src.ROWID           = src_r.STG_ROWID      and
4945           src.PROJECT_ID      = prj.PROJECT_ID       and
4946           prj.ORG_ID          = info.ORG_ID          /*5377133 */
4947         group by
4948           src.PROJECT_ID,
4949           src.PROJECT_ORG_ID,
4950           src.PROJECT_ORGANIZATION_ID,
4951           nvl(src.TASK_ID, -1),
4952           src.PERIOD_TYPE,
4953           src.PERIOD_ID,
4954           info.PF_CURRENCY_CODE,
4955           prj.PROJECT_CURRENCY_CODE,
4956           src.TXN_CURRENCY_CODE
4957           )
4958         )                        src,
4959         PJI_PJP_PROJ_BATCH_MAP   map,
4960         PJI_PJP_WBS_HEADER       wbs_hdr,
4961         PA_PROJ_ELEMENT_VERSIONS ver,
4962         (
4963           select 1   INVERT_ID from dual
4964                                where l_g1_currency_code is not null union all
4965           select 2   INVERT_ID from dual
4966                                where l_g2_currency_flag = 'Y' and
4967                                      l_g2_currency_code is not null union all
4968           select 4   INVERT_ID from dual union all
4969           select 8   INVERT_ID from dual union all
4970           select 16  INVERT_ID from dual
4971                                where l_txn_currency_flag = 'Y'
4972        -- select 32  INVERT_ID from dual  OMIT DETAIL SLICES FOR NOW
4973        --                      where l_g1_currency_code is not null union all
4974        -- select 64  INVERT_ID from dual
4975        --                      where l_g2_currency_flag = 'Y' and
4976        --                            l_g2_currency_code is not null union all
4977        -- select 128 INVERT_ID from dual union all
4978        -- select 256 INVERT_ID from dual
4979         ) invert
4980       where
4981         map.WORKER_ID           = p_worker_id            and
4982         src.PROJECT_ID          = map.PROJECT_ID         and
4983         wbs_hdr.PLAN_VERSION_ID = -1                     and
4984         src.PROJECT_ID          = wbs_hdr.PROJECT_ID     and
4985         ver.ELEMENT_VERSION_ID  = wbs_hdr.WBS_VERSION_ID
4986       )
4987     group by
4988       WORKER_ID,
4989       PROJECT_ID,
4990       PROJECT_ORG_ID,
4991       PROJECT_ORGANIZATION_ID,
4992       PROJECT_ELEMENT_ID,
4993       TIME_ID,
4994       PERIOD_TYPE_ID,
4995       CALENDAR_TYPE,
4996       WBS_ROLLUP_FLAG,
4997       PRG_ROLLUP_FLAG,
4998       DIFF_CURRENCY_CODE,
4999       DIFF_ROWNUM,
5000       nvl(CURRENCY_CODE, 'PJI$NULL');
5001 
5002     end if;
5003 
5004     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_SLICES(p_worker_id);');
5005 
5006     commit;
5007 
5008   end AGGREGATE_AC_SLICES;
5009 
5010 
5011   -- -----------------------------------------------------
5012   -- procedure MARK_EXTRACTED_PROJECTS
5013   --
5014   --   History
5015   --   19-MAR-2004  SVERMETT  Created
5016   --
5017   -- Internal PJP Summarization API.
5018   --
5019   -- -----------------------------------------------------
5020   procedure MARK_EXTRACTED_PROJECTS (p_worker_id in number) is
5021 
5022     l_process         varchar2(30);
5023     l_extraction_type varchar2(30);
5024 
5025     l_last_update_date  date;
5026     l_last_updated_by   number;
5027     l_last_update_login number;
5028 
5029     l_return_status   varchar2(255) := FND_API.G_RET_STS_SUCCESS;
5030     l_msg_data        varchar2(2000);
5031     l_err_msg         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS -> PJI_FM_PLAN_MAINT.POPULATE_FIN8';
5032 
5033   begin
5034 
5035     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
5036 
5037     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS(p_worker_id);')) then
5038       return;
5039     end if;
5040 
5041     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
5042 
5043     l_last_update_date  := sysdate;
5044     l_last_updated_by   := FND_GLOBAL.USER_ID;
5045     l_last_update_login := FND_GLOBAL.LOGIN_ID;
5046 
5047     update PA_PROJECTS_ALL
5048     set    PJI_SOURCE_FLAG   = 'Y',
5049            LAST_UPDATE_DATE  = l_last_update_date,
5050            LAST_UPDATED_BY   = l_last_updated_by,
5051            LAST_UPDATE_LOGIN = l_last_update_login
5052     where  nvl(PJI_SOURCE_FLAG, 'X') <> 'Y' and
5053            PROJECT_ID in (select distinct
5054                                  PROJECT_ID
5055                           from   PJI_FP_AGGR_PJP0
5056                           where  WORKER_ID = p_worker_id
5057                           union
5058                           select distinct
5059                                  PROJECT_ID
5060                           from   PJI_AC_AGGR_PJP0
5061                           where  WORKER_ID = p_worker_id);
5062 
5063     if (l_extraction_type = 'PARTIAL' or
5064         l_extraction_type = 'RBS') then
5065 
5066       update PJI_PJP_PROJ_BATCH_MAP
5067       set    PJI_PROJECT_STATUS = 'Y'
5068       where  WORKER_ID = p_worker_id and
5069              PJI_PROJECT_STATUS is null;
5070 
5071     elsif (l_extraction_type = 'FULL' or
5072            l_extraction_type = 'INCREMENTAL') then
5073 
5074 /*bug#5349102 added the check for FIN8 */
5075       update PJI_PJP_PROJ_BATCH_MAP
5076       set    PJI_PROJECT_STATUS = 'Y'
5077       where  WORKER_ID = p_worker_id and
5078              PJI_PROJECT_STATUS is null and
5079              PROJECT_ID in (select distinct
5080                                    PROJECT_ID
5081                             from   PJI_FP_AGGR_PJP0
5082                             where  WORKER_ID = p_worker_id
5083                             union
5084                             select distinct
5085                                    PROJECT_ID
5086                             from   PJI_AC_AGGR_PJP0
5087                             where  WORKER_ID = p_worker_id
5088                             union
5089                             select distinct
5090                                    PROJECT_ID
5091                             from pji_fm_aggr_fin8
5092                             ) and
5093              PROJECT_ID in (select PROJECT_ID
5094                             from   PA_PROJECTS_ALL
5095                             where  STRUCTURE_SHARING_CODE = 'SHARE_FULL');
5096 
5097     end if;
5098 
5099     if (l_extraction_type = 'INCREMENTAL') then
5100 
5101       update PJI_PJP_PROJ_BATCH_MAP map
5102       set    map.EXTRACTION_TYPE = 'M'
5103       where  map.WORKER_ID = p_worker_id and
5104              map.PROJECT_ID in (select fin7.PROJECT_ID
5105                                 from   PJI_PJP_RMAP_FPR fin7_r,
5106                                        PJI_FM_AGGR_FIN7 fin7
5107                                 where  fin7_r.WORKER_ID = p_worker_id and
5108                                        fin7_r.RECORD_TYPE = 'M' and
5109                                        fin7.ROWID = fin7_r.STG_ROWID);
5110 
5111       update PJI_PJP_PROJ_BATCH_MAP map
5112       set    map.EXTRACTION_TYPE = 'M'
5113       where  map.WORKER_ID = p_worker_id and
5114              map.PROJECT_ID not in (select cmt.PROJECT_ID
5115                                     from   PA_COMMITMENT_TXNS cmt);
5116 
5117     end if;
5118 
5119 
5120     --
5121     -- Dev notes: Sadiq 21-Oct-2005
5122     --
5123     -- Populate fin8 was moved from get_planres_actuals to mark_extracted_projects
5124     --   to avoid populating it multiple times in case of a failure in
5125     --   proj perf/progress integration apis that can cause the step to run
5126     --   again. Also, use of savepoint to populate fin8 on a project-by-project basis
5127     --   was considered but not chosen as this solution will not scale. Further this
5128     --   step (mark extr proj) has relatively less processing compared to other steps
5129     --   and is a good place to perform this transaction.
5130     --
5131     -- This change needs to be kept in mind when performing changes to sumz (adding
5132     --   new steps or changing sequences) programs in future.
5133     --
5134 
5135     PJI_FM_PLAN_MAINT.POPULATE_FIN8 (p_worker_id       => p_worker_id,
5136                                      p_extraction_type => l_extraction_type,
5137                                      x_return_status   => l_return_status,
5138                                      x_msg_data        => l_msg_data);
5139 
5140     IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5141       dbms_standard.raise_application_error(-20105, l_err_msg);
5142     END IF;
5143 
5144 
5145     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PROJECTS(p_worker_id);');
5146 
5147     commit;
5148 
5149   end MARK_EXTRACTED_PROJECTS;
5150 
5151 
5152   -- -----------------------------------------------------
5153   -- procedure AGGREGATE_FP_CUST_SLICES
5154   --
5155   --   History
5156   --   19-MAR-2004  SVERMETT  Created
5157   --
5158   -- Internal PJP Summarization API.
5159   --
5160   -- Called by RBS program
5161   --
5162   -- -----------------------------------------------------
5163 procedure AGGREGATE_FP_CUST_SLICES (p_worker_id in number) is
5164 
5165     l_process         varchar2(30);
5166     l_extraction_type varchar2(30);
5167     l_plan_type_id    number;   --  Bug#5099574
5168     l_refresh_code    number;
5169     l_workplan_type_id number;
5170 
5171   begin
5172 
5173     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
5174 
5175     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
5176     l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');  -- Bug#5099574
5177 
5178     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_CUST_SLICES(p_worker_id);')) then
5179       return;
5180     end if;
5181 
5182     l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
5183                       (l_process, 'PLAN_TYPE_ID');
5184 
5185     if (l_plan_type_id = -1) then
5186       l_plan_type_id := null;
5187     end if;
5188 
5189       if  (l_extraction_type ='PARTIAL') then  -- Partial Refresh Performance Improvement
5190 
5191       --  Bug#  5208322  :  the workplan plan_type_id is stored in  l_workplan_type_id
5192       begin
5193       SELECT fin_plan_type_id into l_workplan_type_id
5194       FROM pa_fin_plan_types_b
5195       WHERE use_for_workplan_flag = 'Y';
5196       exception
5197       when no_data_found then
5198       l_workplan_type_id := NULL;
5199       end;
5200 
5201 
5202       INSERT INTO pji_fm_extr_plnver3_t
5203       (worker_id,project_id,plan_version_id,time_phased_type_code)
5204       select
5205       map.worker_id,bv.project_id,bv.budget_version_id,
5206       nvl(fpo.all_time_phased_code,nvl(fpo.cost_time_phased_code,fpo.revenue_time_phased_code)) time_phased_code
5207       from
5208       PJI_PJP_PROJ_BATCH_MAP map,
5209       PA_PROJ_FP_OPTIONS     fpo,
5210       PA_BUDGET_VERSIONS     bv
5211       where
5212       map.WORKER_ID    = p_worker_id               and
5213       fpo.FIN_PLAN_TYPE_ID  = nvl(l_plan_type_id,fpo.FIN_PLAN_TYPE_ID) and
5214       fpo.PROJECT_ID      = map.PROJECT_ID            and
5215       bv.PROJECT_ID      = map.PROJECT_ID            and
5216       bv.BUDGET_VERSION_ID  = fpo.FIN_PLAN_VERSION_ID   and
5217       (
5218           'Y' IN    -- Bug#5099574  Pull Reversals for CB / CO if refresh_code < 62 . Else pull for all plans ids >0 if refresh_code>=62
5219         (
5220             Select decode(
5221               bitand(l_refresh_code,g_all_plans),g_all_plans,'Y',
5222                 decode(  bitand(l_refresh_code,g_cb_plans),g_cb_plans,
5223                 decode(decode(bv.baselined_date, NULL, 'N', 'Y')||bv.current_flag,'YY', 'Y', 'N'),'X')) from dual
5224            UNION  ALL
5225             Select decode(
5226               bitand(l_refresh_code,g_all_plans),g_all_plans,'Y',
5227               decode( bitand(l_refresh_code,g_co_plans),g_co_plans,bv.current_original_flag,'X')) from dual
5228         )
5229       OR    -- Bug#5099574  Pull Reversals for Fin plan Working Versions when l_refresh_code=16,30. ignore if  l_refresh_code>=62
5230         (
5231          bv.BUDGET_STATUS_CODE in ('W','S')      and
5232          fpo.FIN_PLAN_TYPE_ID <> l_workplan_type_id    and                -- Bug#  5208322
5233          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'
5234          )
5235       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
5236       EXISTS   ( select 1 from PA_PROJ_ELEM_VER_STRUCTURE  ppevs where
5237          bv.FIN_PLAN_TYPE_ID          = l_workplan_type_id        and    -- Bug#  5208322
5238          bv.PROJECT_STRUCTURE_VERSION_ID  = ppevs.ELEMENT_VERSION_ID  and
5239           (
5240           decode(BITAND(l_refresh_code,g_all_plans),g_all_plans,'N',
5241                         decode(BITAND(l_refresh_code,g_lp_plans),g_lp_plans,LATEST_EFF_PUBLISHED_FLAG,'N'))='Y'
5242           or
5243           decode(BITAND(l_refresh_code,g_all_plans),g_all_plans,'N',
5244                         decode(BITAND(l_refresh_code,g_wk_plans),g_wk_plans,STATUS_CODE,'N'))='STRUCTURE_WORKING'
5245                                     or
5246               decode(BITAND(l_refresh_code,g_all_plans ),g_all_plans ,'N',
5247                          decode(BITAND(l_refresh_code,g_cb_plans),g_cb_plans,NVL2(CURRENT_BASELINE_DATE,'Y','N'),'N')) ='Y'
5248 
5249           )
5250         )
5251       )
5252     UNION ALL --Pull Reversals for Actuals , CB,CO  when l_refresh_code=-1,-3,-4
5253       select
5254       map.worker_id,map.project_id,  plan_version_id,  'G'  time_phased_code
5255       from
5256       PJI_PJP_PROJ_BATCH_MAP map,
5257           (
5258       select decode (bitand (l_refresh_code,1),1,-1,-999) plan_version_id from dual  where l_plan_type_id is null
5259       union all
5260       select decode (bitand (l_refresh_code,g_cb_plans),g_cb_plans,-3,-999) plan_version_id  from dual
5261       union all
5262       select decode (bitand (l_refresh_code,g_co_plans),g_co_plans,-4,-999) plan_version_id  from dual
5263           )
5264       where map.worker_id=p_worker_id;
5265 
5266 
5267       end if;    -- Partial Refresh Performance Improvement
5268 
5269 
5270     insert into PJI_FP_AGGR_PJP1 pjp1_i
5271     (
5272       WORKER_ID,
5273       RECORD_TYPE,
5274       PRG_LEVEL,
5275       LINE_TYPE,
5276       PROJECT_ID,
5277       PROJECT_ORG_ID,
5278       PROJECT_ORGANIZATION_ID,
5279       PROJECT_ELEMENT_ID,
5280       TIME_ID,
5281       PERIOD_TYPE_ID,
5282       CALENDAR_TYPE,
5283       RBS_AGGR_LEVEL,
5284       WBS_ROLLUP_FLAG,
5285       PRG_ROLLUP_FLAG,
5286       CURR_RECORD_TYPE_ID,
5287       CURRENCY_CODE,
5288       RBS_ELEMENT_ID,
5289       RBS_VERSION_ID,
5290       PLAN_VERSION_ID,
5291       PLAN_TYPE_ID,
5292       PLAN_TYPE_CODE,
5293       RAW_COST,
5294       BRDN_COST,
5295       REVENUE,
5296       BILL_RAW_COST,
5297       BILL_BRDN_COST,
5298       BILL_LABOR_RAW_COST,
5299       BILL_LABOR_BRDN_COST,
5300       BILL_LABOR_HRS,
5301       EQUIPMENT_RAW_COST,
5302       EQUIPMENT_BRDN_COST,
5303       CAPITALIZABLE_RAW_COST,
5304       CAPITALIZABLE_BRDN_COST,
5305       LABOR_RAW_COST,
5306       LABOR_BRDN_COST,
5307       LABOR_HRS,
5308       LABOR_REVENUE,
5309       EQUIPMENT_HOURS,
5310       BILLABLE_EQUIPMENT_HOURS,
5311       SUP_INV_COMMITTED_COST,
5312       PO_COMMITTED_COST,
5313       PR_COMMITTED_COST,
5314       OTH_COMMITTED_COST,
5315       ACT_LABOR_HRS,
5316       ACT_EQUIP_HRS,
5317       ACT_LABOR_BRDN_COST,
5318       ACT_EQUIP_BRDN_COST,
5319       ACT_BRDN_COST,
5320       ACT_RAW_COST,
5321       ACT_REVENUE,
5322       ACT_LABOR_RAW_COST,
5323       ACT_EQUIP_RAW_COST,
5324       ETC_LABOR_HRS,
5325       ETC_EQUIP_HRS,
5326       ETC_LABOR_BRDN_COST,
5327       ETC_EQUIP_BRDN_COST,
5328       ETC_BRDN_COST,
5329       ETC_RAW_COST,
5330       ETC_LABOR_RAW_COST,
5331       ETC_EQUIP_RAW_COST,
5332       CUSTOM1,
5333       CUSTOM2,
5334       CUSTOM3,
5335       CUSTOM4,
5336       CUSTOM5,
5337       CUSTOM6,
5338       CUSTOM7,
5339       CUSTOM8,
5340       CUSTOM9,
5341       CUSTOM10,
5342       CUSTOM11,
5343       CUSTOM12,
5344       CUSTOM13,
5345       CUSTOM14,
5346       CUSTOM15
5347     )
5348     select
5349       WORKER_ID,
5350       null                                            RECORD_TYPE,
5351       0                                               PRG_LEVEL,
5352       null                                            LINE_TYPE,
5353       PROJECT_ID,
5354       PROJECT_ORG_ID,
5355       PROJECT_ORGANIZATION_ID,
5356       PROJECT_ELEMENT_ID,
5357       TIME_ID,
5358       PERIOD_TYPE_ID,
5359       CALENDAR_TYPE,
5360       RBS_AGGR_LEVEL,
5361       WBS_ROLLUP_FLAG,
5362       PRG_ROLLUP_FLAG,
5363       CURR_RECORD_TYPE_ID,
5364       CURRENCY_CODE,
5365       RBS_ELEMENT_ID,
5366       RBS_VERSION_ID,
5367       PLAN_VERSION_ID,
5368       PLAN_TYPE_ID,
5369       PLAN_TYPE_CODE,
5370       sum(RAW_COST)                                   RAW_COST,
5371       sum(BRDN_COST)                                  BRDN_COST,
5372       sum(REVENUE)                                    REVENUE,
5373       sum(BILL_RAW_COST)                              BILL_RAW_COST,
5374       sum(BILL_BRDN_COST)                             BILL_BRDN_COST,
5375       sum(BILL_LABOR_RAW_COST)                        BILL_LABOR_RAW_COST,
5376       sum(BILL_LABOR_BRDN_COST)                       BILL_LABOR_BRDN_COST,
5377       sum(BILL_LABOR_HRS)                             BILL_LABOR_HRS,
5378       sum(EQUIPMENT_RAW_COST)                         EQUIPMENT_RAW_COST,
5379       sum(EQUIPMENT_BRDN_COST)                        EQUIPMENT_BRDN_COST,
5380       sum(CAPITALIZABLE_RAW_COST)                     CAPITALIZABLE_RAW_COST,
5381       sum(CAPITALIZABLE_BRDN_COST)                    CAPITALIZABLE_BRDN_COST,
5382       sum(LABOR_RAW_COST)                             LABOR_RAW_COST,
5383       sum(LABOR_BRDN_COST)                            LABOR_BRDN_COST,
5384       sum(LABOR_HRS)                                  LABOR_HRS,
5385       sum(LABOR_REVENUE)                              LABOR_REVENUE,
5386       sum(EQUIPMENT_HOURS)                            EQUIPMENT_HOURS,
5387       sum(BILLABLE_EQUIPMENT_HOURS)                   BILLABLE_EQUIPMENT_HOURS,
5388       sum(SUP_INV_COMMITTED_COST)                     SUP_INV_COMMITTED_COST,
5389       sum(PO_COMMITTED_COST)                          PO_COMMITTED_COST,
5390       sum(PR_COMMITTED_COST)                          PR_COMMITTED_COST,
5391       sum(OTH_COMMITTED_COST)                         OTH_COMMITTED_COST,
5392       sum(ACT_LABOR_HRS)                              ACT_LABOR_HRS,
5393       sum(ACT_EQUIP_HRS)                              ACT_EQUIP_HRS,
5394       sum(ACT_LABOR_BRDN_COST)                        ACT_LABOR_BRDN_COST,
5395       sum(ACT_EQUIP_BRDN_COST)                        ACT_EQUIP_BRDN_COST,
5396       sum(ACT_BRDN_COST)                              ACT_BRDN_COST,
5397       sum(ACT_RAW_COST)                               ACT_RAW_COST,
5398       sum(ACT_REVENUE)                                ACT_REVENUE,
5399       sum(ACT_LABOR_RAW_COST)                         ACT_LABOR_RAW_COST,
5400       sum(ACT_EQUIP_RAW_COST)                         ACT_EQUIP_RAW_COST,
5401       sum(ETC_LABOR_HRS)                              ETC_LABOR_HRS,
5402       sum(ETC_EQUIP_HRS)                              ETC_EQUIP_HRS,
5403       sum(ETC_LABOR_BRDN_COST)                        ETC_LABOR_BRDN_COST,
5404       sum(ETC_EQUIP_BRDN_COST)                        ETC_EQUIP_BRDN_COST,
5405       sum(ETC_BRDN_COST)                              ETC_BRDN_COST,
5406       sum(ETC_RAW_COST)                               ETC_RAW_COST,
5407       sum(ETC_LABOR_RAW_COST)                         ETC_LABOR_RAW_COST,
5408       sum(ETC_EQUIP_RAW_COST)                         ETC_EQUIP_RAW_COST,
5409       sum(CUSTOM1)                                    CUSTOM1,
5410       sum(CUSTOM2)                                    CUSTOM2,
5411       sum(CUSTOM3)                                    CUSTOM3,
5412       sum(CUSTOM4)                                    CUSTOM4,
5413       sum(CUSTOM5)                                    CUSTOM5,
5414       sum(CUSTOM6)                                    CUSTOM6,
5415       sum(CUSTOM7)                                    CUSTOM7,
5416       sum(CUSTOM8)                                    CUSTOM8,
5417       sum(CUSTOM9)                                    CUSTOM9,
5418       sum(CUSTOM10)                                   CUSTOM10,
5419       sum(CUSTOM11)                                   CUSTOM11,
5420       sum(CUSTOM12)                                   CUSTOM12,
5421       sum(CUSTOM13)                                   CUSTOM13,
5422       sum(CUSTOM14)                                   CUSTOM14,
5423       sum(CUSTOM15)                                   CUSTOM15
5424     from
5425       (
5426       select
5427         WORKER_ID,
5428         to_char(null)                                 LINE_TYPE,
5429         PROJECT_ID,
5430         PROJECT_ORG_ID,
5431         PROJECT_ORGANIZATION_ID,
5432         PROJECT_ELEMENT_ID,
5433         TIME_ID,
5434         PERIOD_TYPE_ID,
5435         CALENDAR_TYPE,
5436         RBS_AGGR_LEVEL,
5437         WBS_ROLLUP_FLAG,
5438         PRG_ROLLUP_FLAG,
5439         CURR_RECORD_TYPE_ID,
5440         CURRENCY_CODE,
5441         RBS_ELEMENT_ID,
5442         RBS_VERSION_ID,
5443         PLAN_VERSION_ID,
5444         PLAN_TYPE_ID,
5445         'A'                                           PLAN_TYPE_CODE,
5446         RAW_COST,
5447         BRDN_COST,
5448         REVENUE,
5449         BILL_RAW_COST,
5450         BILL_BRDN_COST,
5451         BILL_LABOR_RAW_COST,
5452         BILL_LABOR_BRDN_COST,
5453         BILL_LABOR_HRS,
5454         EQUIPMENT_RAW_COST,
5455         EQUIPMENT_BRDN_COST,
5456         CAPITALIZABLE_RAW_COST,
5457         CAPITALIZABLE_BRDN_COST,
5458         LABOR_RAW_COST,
5459         LABOR_BRDN_COST,
5460         LABOR_HRS,
5461         LABOR_REVENUE,
5462         EQUIPMENT_HOURS,
5463         BILLABLE_EQUIPMENT_HOURS,
5464         SUP_INV_COMMITTED_COST,
5465         PO_COMMITTED_COST,
5466         PR_COMMITTED_COST,
5467         OTH_COMMITTED_COST,
5468         to_number(null)                               ACT_LABOR_HRS,
5469         to_number(null)                               ACT_EQUIP_HRS,
5470         to_number(null)                               ACT_LABOR_BRDN_COST,
5471         to_number(null)                               ACT_EQUIP_BRDN_COST,
5472         to_number(null)                               ACT_BRDN_COST,
5473         to_number(null)                               ACT_RAW_COST,
5474         to_number(null)                               ACT_REVENUE,
5475         to_number(null)                               ACT_LABOR_RAW_COST,
5476         to_number(null)                               ACT_EQUIP_RAW_COST,
5477         to_number(null)                               ETC_LABOR_HRS,
5478         to_number(null)                               ETC_EQUIP_HRS,
5479         to_number(null)                               ETC_LABOR_BRDN_COST,
5480         to_number(null)                               ETC_EQUIP_BRDN_COST,
5481         to_number(null)                               ETC_BRDN_COST,
5482         to_number(null)                               ETC_RAW_COST,
5483         to_number(null)                               ETC_LABOR_RAW_COST,
5484         to_number(null)                               ETC_EQUIP_RAW_COST,
5485         to_number(null)                               CUSTOM1,
5486         to_number(null)                               CUSTOM2,
5487         to_number(null)                               CUSTOM3,
5488         to_number(null)                               CUSTOM4,
5489         to_number(null)                               CUSTOM5,
5490         to_number(null)                               CUSTOM6,
5491         to_number(null)                               CUSTOM7,
5492         to_number(null)                               CUSTOM8,
5493         to_number(null)                               CUSTOM9,
5494         to_number(null)                               CUSTOM10,
5495         to_number(null)                               CUSTOM11,
5496         to_number(null)                               CUSTOM12,
5497         to_number(null)                               CUSTOM13,
5498         to_number(null)                               CUSTOM14,
5499         to_number(null)                               CUSTOM15
5500       from
5501         PJI_FP_AGGR_PJP0
5502       where
5503         WORKER_ID = p_worker_id
5504       union all
5505       select
5506         WORKER_ID,
5507         to_char(null)                                 LINE_TYPE,
5508         PROJECT_ID,
5509         PROJECT_ORG_ID,
5510         PROJECT_ORGANIZATION_ID,
5511         PROJECT_ELEMENT_ID,
5512         TIME_ID,
5513         PERIOD_TYPE_ID,
5514         CALENDAR_TYPE,
5515         RBS_AGGR_LEVEL,
5516         WBS_ROLLUP_FLAG,
5517         PRG_ROLLUP_FLAG,
5518         CURR_RECORD_TYPE_ID,
5519         CURRENCY_CODE,
5520         RBS_ELEMENT_ID,
5521         RBS_VERSION_ID,
5522         PLAN_VERSION_ID,
5523         PLAN_TYPE_ID,
5524         'A'                                           PLAN_TYPE_CODE,
5525         to_number(null)                               RAW_COST,
5526         to_number(null)                               BRDN_COST,
5527         to_number(null)                               REVENUE,
5528         to_number(null)                               BILL_RAW_COST,
5529         to_number(null)                               BILL_BRDN_COST,
5530         to_number(null)                               BILL_LABOR_RAW_COST,
5531         to_number(null)                               BILL_LABOR_BRDN_COST,
5532         to_number(null)                               BILL_LABOR_HRS,
5533         to_number(null)                               EQUIPMENT_RAW_COST,
5534         to_number(null)                               EQUIPMENT_BRDN_COST,
5535         to_number(null)                               CAPITALIZABLE_RAW_COST,
5536         to_number(null)                               CAPITALIZABLE_BRDN_COST,
5537         to_number(null)                               LABOR_RAW_COST,
5538         to_number(null)                               LABOR_BRDN_COST,
5539         to_number(null)                               LABOR_HRS,
5540         to_number(null)                               LABOR_REVENUE,
5541         to_number(null)                               EQUIPMENT_HOURS,
5542         to_number(null)                               BILLABLE_EQUIPMENT_HOURS,
5543         to_number(null)                               SUP_INV_COMMITTED_COST,
5544         to_number(null)                               PO_COMMITTED_COST,
5545         to_number(null)                               PR_COMMITTED_COST,
5546         to_number(null)                               OTH_COMMITTED_COST,
5547         to_number(null)                               ACT_LABOR_HRS,
5548         to_number(null)                               ACT_EQUIP_HRS,
5549         to_number(null)                               ACT_LABOR_BRDN_COST,
5550         to_number(null)                               ACT_EQUIP_BRDN_COST,
5551         to_number(null)                               ACT_BRDN_COST,
5552         to_number(null)                               ACT_RAW_COST,
5553         to_number(null)                               ACT_REVENUE,
5554         to_number(null)                               ACT_LABOR_RAW_COST,
5555         to_number(null)                               ACT_EQUIP_RAW_COST,
5556         to_number(null)                               ETC_LABOR_HRS,
5557         to_number(null)                               ETC_EQUIP_HRS,
5558         to_number(null)                               ETC_LABOR_BRDN_COST,
5559         to_number(null)                               ETC_EQUIP_BRDN_COST,
5560         to_number(null)                               ETC_BRDN_COST,
5561         to_number(null)                               ETC_RAW_COST,
5562         to_number(null)                               ETC_LABOR_RAW_COST,
5563         to_number(null)                               ETC_EQUIP_RAW_COST,
5564         CUSTOM1,
5565         CUSTOM2,
5566         CUSTOM3,
5567         CUSTOM4,
5568         CUSTOM5,
5569         CUSTOM6,
5570         CUSTOM7,
5571         CUSTOM8,
5572         CUSTOM9,
5573         CUSTOM10,
5574         CUSTOM11,
5575         CUSTOM12,
5576         CUSTOM13,
5577         CUSTOM14,
5578         CUSTOM15
5579       from
5580         PJI_FP_CUST_PJP0
5581       where
5582         WORKER_ID = p_worker_id
5583       union all                      -- commitments reversals
5584       select
5585         p_worker_id                                   WORKER_ID,
5586         to_char(null)                                 LINE_TYPE,
5587         fpr.PROJECT_ID,
5588         fpr.PROJECT_ORG_ID,
5589         fpr.PROJECT_ORGANIZATION_ID,
5590         fpr.PROJECT_ELEMENT_ID,
5591         fpr.TIME_ID,
5592         fpr.PERIOD_TYPE_ID,
5593         fpr.CALENDAR_TYPE,
5594         fpr.RBS_AGGR_LEVEL,
5595         fpr.WBS_ROLLUP_FLAG,
5596         fpr.PRG_ROLLUP_FLAG,
5597         fpr.CURR_RECORD_TYPE_ID,
5598         fpr.CURRENCY_CODE,
5599         fpr.RBS_ELEMENT_ID,
5600         fpr.RBS_VERSION_ID,
5601         fpr.PLAN_VERSION_ID,
5602         fpr.PLAN_TYPE_ID,
5603         fpr.PLAN_TYPE_CODE,
5604         to_number(null)                               RAW_COST,
5605         to_number(null)                               BRDN_COST,
5606         to_number(null)                               REVENUE,
5607         to_number(null)                               BILL_RAW_COST,
5608         to_number(null)                               BILL_BRDN_COST,
5609         to_number(null)                               BILL_LABOR_RAW_COST,
5610         to_number(null)                               BILL_LABOR_BRDN_COST,
5611         to_number(null)                               BILL_LABOR_HRS,
5612         to_number(null)                               EQUIPMENT_RAW_COST,
5613         to_number(null)                               EQUIPMENT_BRDN_COST,
5614         to_number(null)                               CAPITALIZABLE_RAW_COST,
5615         to_number(null)                               CAPITALIZABLE_BRDN_COST,
5616         to_number(null)                               LABOR_RAW_COST,
5617         to_number(null)                               LABOR_BRDN_COST,
5618         to_number(null)                               LABOR_HRS,
5619         to_number(null)                               LABOR_REVENUE,
5620         to_number(null)                               EQUIPMENT_HOURS,
5621         to_number(null)                               BILLABLE_EQUIPMENT_HOURS,
5622         - fpr.SUP_INV_COMMITTED_COST,
5623         - fpr.PO_COMMITTED_COST,
5624         - fpr.PR_COMMITTED_COST,
5625         - fpr.OTH_COMMITTED_COST,
5626         to_number(null)                               ACT_LABOR_HRS,
5627         to_number(null)                               ACT_EQUIP_HRS,
5628         to_number(null)                               ACT_LABOR_BRDN_COST,
5629         to_number(null)                               ACT_EQUIP_BRDN_COST,
5630         to_number(null)                               ACT_BRDN_COST,
5631         to_number(null)                               ACT_RAW_COST,
5632         to_number(null)                               ACT_REVENUE,
5633         to_number(null)                               ACT_LABOR_RAW_COST,
5634         to_number(null)                               ACT_EQUIP_RAW_COST,
5635         to_number(null)                               ETC_LABOR_HRS,
5636         to_number(null)                               ETC_EQUIP_HRS,
5637         to_number(null)                               ETC_LABOR_BRDN_COST,
5638         to_number(null)                               ETC_EQUIP_BRDN_COST,
5639         to_number(null)                               ETC_BRDN_COST,
5640         to_number(null)                               ETC_RAW_COST,
5641         to_number(null)                               ETC_LABOR_RAW_COST,
5642         to_number(null)                               ETC_EQUIP_RAW_COST,
5643         to_number(null)                               CUSTOM1,
5644         to_number(null)                               CUSTOM2,
5645         to_number(null)                               CUSTOM3,
5646         to_number(null)                               CUSTOM4,
5647         to_number(null)                               CUSTOM5,
5648         to_number(null)                               CUSTOM6,
5649         to_number(null)                               CUSTOM7,
5650         to_number(null)                               CUSTOM8,
5651         to_number(null)                               CUSTOM9,
5652         to_number(null)                               CUSTOM10,
5653         to_number(null)                               CUSTOM11,
5654         to_number(null)                               CUSTOM12,
5655         to_number(null)                               CUSTOM13,
5656         to_number(null)                               CUSTOM14,
5657         to_number(null)                               CUSTOM15
5658       from
5659         PJI_PJP_PROJ_BATCH_MAP map,
5660         PJI_FP_XBS_ACCUM_F fpr
5661       where
5662         l_extraction_type   = 'INCREMENTAL'  and
5663         map.WORKER_ID       = p_worker_id    and
5664         map.EXTRACTION_TYPE = 'M'            and
5665         fpr.PROJECT_ID      = map.PROJECT_ID and
5666         fpr.PERIOD_TYPE_ID  = 32             and
5667         fpr.RBS_AGGR_LEVEL  = 'L'            and
5668         fpr.WBS_ROLLUP_FLAG = 'N'            and
5669         fpr.PRG_ROLLUP_FLAG = 'N'            and
5670         abs(nvl(fpr.SUP_INV_COMMITTED_COST, 0)) +
5671           abs(nvl(fpr.PO_COMMITTED_COST, 0)) +
5672           abs(nvl(fpr.PR_COMMITTED_COST, 0)) +
5673           abs(nvl(fpr.OTH_COMMITTED_COST, 0)) > 0
5674       union all
5675       select /*+ ordered */
5676         p_worker_id                                   WORKER_ID,
5677         to_char(null)                                 LINE_TYPE,
5678         fpr.PROJECT_ID,
5679         fpr.PROJECT_ORG_ID,
5680         fpr.PROJECT_ORGANIZATION_ID,
5681         fpr.PROJECT_ELEMENT_ID,
5682         fpr.TIME_ID,
5683         fpr.PERIOD_TYPE_ID,
5684         fpr.CALENDAR_TYPE,
5685         fpr.RBS_AGGR_LEVEL,
5686         fpr.WBS_ROLLUP_FLAG,
5687         fpr.PRG_ROLLUP_FLAG,
5688         fpr.CURR_RECORD_TYPE_ID,
5689         fpr.CURRENCY_CODE,
5690         fpr.RBS_ELEMENT_ID,
5691         fpr.RBS_VERSION_ID,
5692         fpr.PLAN_VERSION_ID,
5693         fpr.PLAN_TYPE_ID,
5694         fpr.PLAN_TYPE_CODE,
5695         - fpr.RAW_COST                                RAW_COST,
5696         - fpr.BRDN_COST                               BRDN_COST,
5697         - fpr.REVENUE                                 REVENUE,
5698         - fpr.BILL_RAW_COST                           BILL_RAW_COST,
5699         - fpr.BILL_BRDN_COST                          BILL_BRDN_COST,
5700         - fpr.BILL_LABOR_RAW_COST                     BILL_LABOR_RAW_COST,
5701         - fpr.BILL_LABOR_BRDN_COST                    BILL_LABOR_BRDN_COST,
5702         - fpr.BILL_LABOR_HRS                          BILL_LABOR_HRS,
5703         - fpr.EQUIPMENT_RAW_COST                      EQUIPMENT_RAW_COST,
5704         - fpr.EQUIPMENT_BRDN_COST                     EQUIPMENT_BRDN_COST,
5705         - fpr.CAPITALIZABLE_RAW_COST                  CAPITALIZABLE_RAW_COST,
5706         - fpr.CAPITALIZABLE_BRDN_COST                 CAPITALIZABLE_BRDN_COST,
5707         - fpr.LABOR_RAW_COST                          LABOR_RAW_COST,
5708         - fpr.LABOR_BRDN_COST                         LABOR_BRDN_COST,
5709         - fpr.LABOR_HRS                               LABOR_HRS,
5710         - fpr.LABOR_REVENUE                           LABOR_REVENUE,
5711         - fpr.EQUIPMENT_HOURS                         EQUIPMENT_HOURS,
5712         - fpr.BILLABLE_EQUIPMENT_HOURS                BILLABLE_EQUIPMENT_HOURS,
5713         - fpr.SUP_INV_COMMITTED_COST                  SUP_INV_COMMITTED_COST,
5714         - fpr.PO_COMMITTED_COST                       PO_COMMITTED_COST,
5715         - fpr.PR_COMMITTED_COST                       PR_COMMITTED_COST,
5716         - fpr.OTH_COMMITTED_COST                      OTH_COMMITTED_COST,
5717         - fpr.ACT_LABOR_HRS                           ACT_LABOR_HRS,
5718         - fpr.ACT_EQUIP_HRS                           ACT_EQUIP_HRS,
5719         - fpr.ACT_LABOR_BRDN_COST                     ACT_LABOR_BRDN_COST,
5720         - fpr.ACT_EQUIP_BRDN_COST                     ACT_EQUIP_BRDN_COST,
5721         - fpr.ACT_BRDN_COST                           ACT_BRDN_COST,
5722         - fpr.ACT_RAW_COST                            ACT_RAW_COST,
5723         - fpr.ACT_REVENUE                             ACT_REVENUE,
5724         - fpr.ACT_LABOR_RAW_COST                      ACT_LABOR_RAW_COST,
5725         - fpr.ACT_EQUIP_RAW_COST                      ACT_EQUIP_RAW_COST,
5726         - fpr.ETC_LABOR_HRS                           ETC_LABOR_HRS,
5727         - fpr.ETC_EQUIP_HRS                           ETC_EQUIP_HRS,
5728         - fpr.ETC_LABOR_BRDN_COST                     ETC_LABOR_BRDN_COST,
5729         - fpr.ETC_EQUIP_BRDN_COST                     ETC_EQUIP_BRDN_COST,
5730         - fpr.ETC_BRDN_COST                           ETC_BRDN_COST,
5731         - fpr.ETC_RAW_COST                            ETC_RAW_COST,
5732         - fpr.ETC_LABOR_RAW_COST                      ETC_LABOR_RAW_COST,
5733         - fpr.ETC_EQUIP_RAW_COST                      ETC_EQUIP_RAW_COST,
5734         - fpr.CUSTOM1                                 CUSTOM1,
5735         - fpr.CUSTOM2                                 CUSTOM2,
5736         - fpr.CUSTOM3                                 CUSTOM3,
5737         - fpr.CUSTOM4                                 CUSTOM4,
5738         - fpr.CUSTOM5                                 CUSTOM5,
5739         - fpr.CUSTOM6                                 CUSTOM6,
5740         - fpr.CUSTOM7                                 CUSTOM7,
5741         - fpr.CUSTOM8                                 CUSTOM8,
5742         - fpr.CUSTOM9                                 CUSTOM9,
5743         - fpr.CUSTOM10                                CUSTOM10,
5744         - fpr.CUSTOM11                                CUSTOM11,
5745         - fpr.CUSTOM12                                CUSTOM12,
5746         - fpr.CUSTOM13                                CUSTOM13,
5747         - fpr.CUSTOM14                                CUSTOM14,
5748         - fpr.CUSTOM15                                CUSTOM15
5749       from
5750         PJI_FM_EXTR_PLNVER3_T map,
5751         PJI_FP_XBS_ACCUM_F fpr
5752       where
5753         l_extraction_type   = 'PARTIAL'           and
5754         map.WORKER_ID       = p_worker_id         and
5755         fpr.PROJECT_ID      = map.PROJECT_ID      and
5756         fpr.PLAN_VERSION_ID = map.PLAN_VERSION_ID and
5757         fpr.PERIOD_TYPE_ID  = decode(map.time_phased_type_code,
5758                                      'N', decode(fpr.PERIOD_TYPE_ID,
5759                                                  32, 32,
5760                                                      2048),
5761                                           32)     and
5762         fpr.RBS_AGGR_LEVEL  = 'L'                 and
5763         fpr.WBS_ROLLUP_FLAG = 'N'                 and
5764         fpr.PRG_ROLLUP_FLAG = 'N'
5765       )
5766       group by
5767       WORKER_ID,
5768       LINE_TYPE,
5769       PROJECT_ID,
5770       PROJECT_ORG_ID,
5771       PROJECT_ORGANIZATION_ID,
5772       PROJECT_ELEMENT_ID,
5773       TIME_ID,
5774       PERIOD_TYPE_ID,
5775       CALENDAR_TYPE,
5776       RBS_AGGR_LEVEL,
5777       WBS_ROLLUP_FLAG,
5778       PRG_ROLLUP_FLAG,
5779       CURR_RECORD_TYPE_ID,
5780       CURRENCY_CODE,
5781       RBS_ELEMENT_ID,
5782       RBS_VERSION_ID,
5783       PLAN_VERSION_ID,
5784       PLAN_TYPE_ID,
5785       PLAN_TYPE_CODE
5786     having not
5787       (nvl(sum(RAW_COST), 0)                 = 0 and
5788        nvl(sum(BRDN_COST), 0)                = 0 and
5789        nvl(sum(REVENUE), 0)                  = 0 and
5790        nvl(sum(BILL_RAW_COST), 0)            = 0 and
5791        nvl(sum(BILL_BRDN_COST), 0)           = 0 and
5792        nvl(sum(BILL_LABOR_RAW_COST), 0)      = 0 and
5793        nvl(sum(BILL_LABOR_BRDN_COST), 0)     = 0 and
5794        nvl(sum(BILL_LABOR_HRS), 0)           = 0 and
5795        nvl(sum(EQUIPMENT_RAW_COST), 0)       = 0 and
5796        nvl(sum(EQUIPMENT_BRDN_COST), 0)      = 0 and
5797        nvl(sum(CAPITALIZABLE_RAW_COST), 0)   = 0 and
5798        nvl(sum(CAPITALIZABLE_BRDN_COST), 0)  = 0 and
5799        nvl(sum(LABOR_RAW_COST), 0)           = 0 and
5800        nvl(sum(LABOR_BRDN_COST), 0)          = 0 and
5801        nvl(sum(LABOR_HRS), 0)                = 0 and
5802        nvl(sum(LABOR_REVENUE), 0)            = 0 and
5803        nvl(sum(EQUIPMENT_HOURS), 0)          = 0 and
5804        nvl(sum(BILLABLE_EQUIPMENT_HOURS), 0) = 0 and
5805        nvl(sum(SUP_INV_COMMITTED_COST), 0)   = 0 and
5806        nvl(sum(PO_COMMITTED_COST), 0)        = 0 and
5807        nvl(sum(PR_COMMITTED_COST), 0)        = 0 and
5808        nvl(sum(OTH_COMMITTED_COST), 0)       = 0 and
5809        nvl(sum(ACT_LABOR_HRS), 0)            = 0 and
5810        nvl(sum(ACT_EQUIP_HRS), 0)            = 0 and
5811        nvl(sum(ACT_LABOR_BRDN_COST), 0)      = 0 and
5812        nvl(sum(ACT_EQUIP_BRDN_COST), 0)      = 0 and
5813        nvl(sum(ACT_BRDN_COST), 0)            = 0 and
5814        nvl(sum(ACT_RAW_COST), 0)             = 0 and
5815        nvl(sum(ACT_REVENUE), 0)              = 0 and
5816        nvl(sum(ACT_LABOR_RAW_COST), 0)       = 0 and
5817        nvl(sum(ACT_EQUIP_RAW_COST), 0)       = 0 and
5818        nvl(sum(ETC_LABOR_HRS), 0)            = 0 and
5819        nvl(sum(ETC_EQUIP_HRS), 0)            = 0 and
5820        nvl(sum(ETC_LABOR_BRDN_COST), 0)      = 0 and
5821        nvl(sum(ETC_EQUIP_BRDN_COST), 0)      = 0 and
5822        nvl(sum(ETC_BRDN_COST), 0)            = 0 and
5823        nvl(sum(ETC_RAW_COST), 0)             = 0 and
5824        nvl(sum(ETC_LABOR_RAW_COST), 0)       = 0 and
5825        nvl(sum(ETC_EQUIP_RAW_COST), 0)       = 0 and
5826        nvl(sum(CUSTOM1), 0)                  = 0 and
5827        nvl(sum(CUSTOM2), 0)                  = 0 and
5828        nvl(sum(CUSTOM3), 0)                  = 0 and
5829        nvl(sum(CUSTOM4), 0)                  = 0 and
5830        nvl(sum(CUSTOM5), 0)                  = 0 and
5831        nvl(sum(CUSTOM6), 0)                  = 0 and
5832        nvl(sum(CUSTOM7), 0)                  = 0 and
5833        nvl(sum(CUSTOM8), 0)                  = 0 and
5834        nvl(sum(CUSTOM9), 0)                  = 0 and
5835        nvl(sum(CUSTOM10), 0)                 = 0 and
5836        nvl(sum(CUSTOM11), 0)                 = 0 and
5837        nvl(sum(CUSTOM12), 0)                 = 0 and
5838        nvl(sum(CUSTOM13), 0)                 = 0 and
5839        nvl(sum(CUSTOM14), 0)                 = 0 and
5840        nvl(sum(CUSTOM15), 0)                 = 0);
5841 
5842        if  (  l_extraction_type    =  'PARTIAL' ) then    -- Partial Refresh Performance Improvement
5843     delete from PJI_FM_EXTR_PLNVER3_T where worker_id=p_worker_id;
5844   end if;
5845 
5846     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_FP_CUST_SLICES(p_worker_id);');
5847 
5848     commit;
5849 
5850   end AGGREGATE_FP_CUST_SLICES;
5851 
5852 
5853   -- -----------------------------------------------------
5854   -- procedure AGGREGATE_AC_CUST_SLICES
5855   --
5856   --   History
5857   --   19-MAR-2004  SVERMETT  Created
5858   --
5859   -- Internal PJP Summarization API.
5860   --
5861   -- -----------------------------------------------------
5862   procedure AGGREGATE_AC_CUST_SLICES (p_worker_id in number) is
5863 
5864     l_process varchar2(30);
5865     l_extraction_type varchar2(30);
5866     l_refresh_code number;   --  Bug#5099574
5867     l_plan_type_id number;
5868   begin
5869 
5870     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
5871 
5872     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_CUST_SLICES(p_worker_id);')) then
5873       return;
5874     end if;
5875 
5876     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
5877 
5878      --  Bug#5099574
5879      l_refresh_code     :=  PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'REFRESH_CODE');
5880     l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER (l_process, 'PLAN_TYPE_ID');
5881 
5882     if (l_plan_type_id = -1) then
5883       l_plan_type_id := null;
5884     end if;
5885 /* spliited the SQL to remove unnecessasry hits based on extraction type */
5886 IF l_extraction_type='PARTIAL' THEN      -- Bug#5453009 Performance Fix  .
5887                       -- Sql was split into 2 for Partial  and Non Partial Flows
5888 
5889     insert into PJI_AC_AGGR_PJP1 pjp1_i
5890     (
5891       WORKER_ID,
5892       RECORD_TYPE,
5893       PRG_LEVEL,
5894       PROJECT_ID,
5895       PROJECT_ORG_ID,
5896       PROJECT_ORGANIZATION_ID,
5897       PROJECT_ELEMENT_ID,
5898       TIME_ID,
5899       PERIOD_TYPE_ID,
5900       CALENDAR_TYPE,
5901       WBS_ROLLUP_FLAG,
5902       PRG_ROLLUP_FLAG,
5903       CURR_RECORD_TYPE_ID,
5904       CURRENCY_CODE,
5905       REVENUE,
5906       INITIAL_FUNDING_AMOUNT,
5907       INITIAL_FUNDING_COUNT,
5908       ADDITIONAL_FUNDING_AMOUNT,
5909       ADDITIONAL_FUNDING_COUNT,
5910       CANCELLED_FUNDING_AMOUNT,
5911       CANCELLED_FUNDING_COUNT,
5912       FUNDING_ADJUSTMENT_AMOUNT,
5913       FUNDING_ADJUSTMENT_COUNT,
5914       REVENUE_WRITEOFF,
5915       AR_INVOICE_AMOUNT,
5916       AR_INVOICE_COUNT,
5917       AR_CASH_APPLIED_AMOUNT,
5918       AR_INVOICE_WRITE_OFF_AMOUNT,
5919       AR_INVOICE_WRITEOFF_COUNT,
5920       AR_CREDIT_MEMO_AMOUNT,
5921       AR_CREDIT_MEMO_COUNT,
5922       UNBILLED_RECEIVABLES,
5923       UNEARNED_REVENUE,
5924       AR_UNAPPR_INVOICE_AMOUNT,
5925       AR_UNAPPR_INVOICE_COUNT,
5926       AR_APPR_INVOICE_AMOUNT,
5927       AR_APPR_INVOICE_COUNT,
5928       AR_AMOUNT_DUE,
5929       AR_COUNT_DUE,
5930       AR_AMOUNT_OVERDUE,
5931       AR_COUNT_OVERDUE,
5932       CUSTOM1,
5933       CUSTOM2,
5934       CUSTOM3,
5935       CUSTOM4,
5936       CUSTOM5,
5937       CUSTOM6,
5938       CUSTOM7,
5939       CUSTOM8,
5940       CUSTOM9,
5941       CUSTOM10,
5942       CUSTOM11,
5943       CUSTOM12,
5944       CUSTOM13,
5945       CUSTOM14,
5946       CUSTOM15
5947     )
5948     select
5949       WORKER_ID,
5950       null                                         RECORD_TYPE,
5951       0                                            PRG_LEVEL,
5952       PROJECT_ID,
5953       PROJECT_ORG_ID,
5954       PROJECT_ORGANIZATION_ID,
5955       PROJECT_ELEMENT_ID,
5956       TIME_ID,
5957       PERIOD_TYPE_ID,
5958       CALENDAR_TYPE,
5959       WBS_ROLLUP_FLAG,
5960       PRG_ROLLUP_FLAG,
5961       CURR_RECORD_TYPE_ID,
5962       CURRENCY_CODE,
5963       sum(REVENUE)                                 REVENUE,
5964       sum(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
5965       sum(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
5966       sum(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
5967       sum(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
5968       sum(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
5969       sum(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
5970       sum(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
5971       sum(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
5972       sum(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
5973       sum(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
5974       sum(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
5975       sum(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
5976       sum(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
5977       sum(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
5978       sum(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
5979       sum(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
5980       sum(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
5981       sum(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
5982       sum(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
5983       sum(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
5984       sum(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
5985       sum(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
5986       sum(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
5987       sum(AR_COUNT_DUE)                            AR_COUNT_DUE,
5988       sum(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
5989       sum(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE,
5990       sum(CUSTOM1)                                 CUSTOM1,
5991       sum(CUSTOM2)                                 CUSTOM2,
5992       sum(CUSTOM3)                                 CUSTOM3,
5993       sum(CUSTOM4)                                 CUSTOM4,
5994       sum(CUSTOM5)                                 CUSTOM5,
5995       sum(CUSTOM6)                                 CUSTOM6,
5996       sum(CUSTOM7)                                 CUSTOM7,
5997       sum(CUSTOM8)                                 CUSTOM8,
5998       sum(CUSTOM9)                                 CUSTOM9,
5999       sum(CUSTOM10)                                CUSTOM10,
6000       sum(CUSTOM11)                                CUSTOM11,
6001       sum(CUSTOM12)                                CUSTOM12,
6002       sum(CUSTOM13)                                CUSTOM13,
6003       sum(CUSTOM14)                                CUSTOM14,
6004       sum(CUSTOM15)                                CUSTOM15
6005     from
6006       (
6007       select
6008         WORKER_ID,
6009         PROJECT_ID,
6010         PROJECT_ORG_ID,
6011         PROJECT_ORGANIZATION_ID,
6012         PROJECT_ELEMENT_ID,
6013         TIME_ID,
6014         PERIOD_TYPE_ID,
6015         CALENDAR_TYPE,
6016         WBS_ROLLUP_FLAG,
6017         PRG_ROLLUP_FLAG,
6018         CURR_RECORD_TYPE_ID,
6019         CURRENCY_CODE,
6020         REVENUE,
6021         INITIAL_FUNDING_AMOUNT,
6022         INITIAL_FUNDING_COUNT,
6023         ADDITIONAL_FUNDING_AMOUNT,
6024         ADDITIONAL_FUNDING_COUNT,
6025         CANCELLED_FUNDING_AMOUNT,
6026         CANCELLED_FUNDING_COUNT,
6027         FUNDING_ADJUSTMENT_AMOUNT,
6028         FUNDING_ADJUSTMENT_COUNT,
6029         REVENUE_WRITEOFF,
6030         AR_INVOICE_AMOUNT,
6031         AR_INVOICE_COUNT,
6032         AR_CASH_APPLIED_AMOUNT,
6033         AR_INVOICE_WRITE_OFF_AMOUNT,
6034         AR_INVOICE_WRITEOFF_COUNT,
6035         AR_CREDIT_MEMO_AMOUNT,
6036         AR_CREDIT_MEMO_COUNT,
6037         UNBILLED_RECEIVABLES,
6038         UNEARNED_REVENUE,
6039         AR_UNAPPR_INVOICE_AMOUNT,
6040         AR_UNAPPR_INVOICE_COUNT,
6041         AR_APPR_INVOICE_AMOUNT,
6042         AR_APPR_INVOICE_COUNT,
6043         AR_AMOUNT_DUE,
6044         AR_COUNT_DUE,
6045         AR_AMOUNT_OVERDUE,
6046         AR_COUNT_OVERDUE,
6047         to_number(null)                            CUSTOM1,
6048         to_number(null)                            CUSTOM2,
6049         to_number(null)                            CUSTOM3,
6050         to_number(null)                            CUSTOM4,
6051         to_number(null)                            CUSTOM5,
6052         to_number(null)                            CUSTOM6,
6053         to_number(null)                            CUSTOM7,
6054         to_number(null)                            CUSTOM8,
6055         to_number(null)                            CUSTOM9,
6056         to_number(null)                            CUSTOM10,
6057         to_number(null)                            CUSTOM11,
6058         to_number(null)                            CUSTOM12,
6059         to_number(null)                            CUSTOM13,
6060         to_number(null)                            CUSTOM14,
6061         to_number(null)                            CUSTOM15
6062       from
6063         PJI_AC_AGGR_PJP0
6064       where
6065         WORKER_ID = p_worker_id
6066       union all
6067       select
6068         WORKER_ID,
6069         PROJECT_ID,
6070         PROJECT_ORG_ID,
6071         PROJECT_ORGANIZATION_ID,
6072         PROJECT_ELEMENT_ID,
6073         TIME_ID,
6074         PERIOD_TYPE_ID,
6075         CALENDAR_TYPE,
6076         WBS_ROLLUP_FLAG,
6077         PRG_ROLLUP_FLAG,
6078         CURR_RECORD_TYPE_ID,
6079         CURRENCY_CODE,
6080         to_number(null)                            REVENUE,
6081         to_number(null)                            INITIAL_FUNDING_AMOUNT,
6082         to_number(null)                            INITIAL_FUNDING_COUNT,
6083         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
6084         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
6085         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
6086         to_number(null)                            CANCELLED_FUNDING_COUNT,
6087         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
6088         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
6089         to_number(null)                            REVENUE_WRITEOFF,
6090         to_number(null)                            AR_INVOICE_AMOUNT,
6091         to_number(null)                            AR_INVOICE_COUNT,
6092         to_number(null)                            AR_CASH_APPLIED_AMOUNT,
6093         to_number(null)                            AR_INVOICE_WRITE_OFF_AMOUNT,
6094         to_number(null)                            AR_INVOICE_WRITEOFF_COUNT,
6095         to_number(null)                            AR_CREDIT_MEMO_AMOUNT,
6096         to_number(null)                            AR_CREDIT_MEMO_COUNT,
6097         to_number(null)                            UNBILLED_RECEIVABLES,
6098         to_number(null)                            UNEARNED_REVENUE,
6099         to_number(null)                            AR_UNAPPR_INVOICE_AMOUNT,
6100         to_number(null)                            AR_UNAPPR_INVOICE_COUNT,
6101         to_number(null)                            AR_APPR_INVOICE_AMOUNT,
6102         to_number(null)                            AR_APPR_INVOICE_COUNT,
6103         to_number(null)                            AR_AMOUNT_DUE,
6104         to_number(null)                            AR_COUNT_DUE,
6105         to_number(null)                            AR_AMOUNT_OVERDUE,
6106         to_number(null)                            AR_COUNT_OVERDUE,
6107         CUSTOM1,
6108         CUSTOM2,
6109         CUSTOM3,
6110         CUSTOM4,
6111         CUSTOM5,
6112         CUSTOM6,
6113         CUSTOM7,
6114         CUSTOM8,
6115         CUSTOM9,
6116         CUSTOM10,
6117         CUSTOM11,
6118         CUSTOM12,
6119         CUSTOM13,
6120         CUSTOM14,
6121         CUSTOM15
6122       from
6123         PJI_AC_CUST_PJP0
6124       where
6125         WORKER_ID = p_worker_id
6126       union all                        -- partial refresh reversals
6127       select /*+  full(map) use_nl(acr) */
6128         p_worker_id                                WORKER_ID,
6129         acr.PROJECT_ID,
6130         acr.PROJECT_ORG_ID,
6131         acr.PROJECT_ORGANIZATION_ID,
6132         acr.PROJECT_ELEMENT_ID,
6133         acr.TIME_ID,
6134         acr.PERIOD_TYPE_ID,
6135         acr.CALENDAR_TYPE,
6136         acr.WBS_ROLLUP_FLAG,
6137         acr.PRG_ROLLUP_FLAG,
6138         acr.CURR_RECORD_TYPE_ID,
6139         acr.CURRENCY_CODE,
6140         - acr.REVENUE                              REVENUE,
6141         - acr.INITIAL_FUNDING_AMOUNT               INITIAL_FUNDING_AMOUNT,
6142         - acr.INITIAL_FUNDING_COUNT                INITIAL_FUNDING_COUNT,
6143         - acr.ADDITIONAL_FUNDING_AMOUNT            ADDITIONAL_FUNDING_AMOUNT,
6144         - acr.ADDITIONAL_FUNDING_COUNT             ADDITIONAL_FUNDING_COUNT,
6145         - acr.CANCELLED_FUNDING_AMOUNT             CANCELLED_FUNDING_AMOUNT,
6146         - acr.CANCELLED_FUNDING_COUNT              CANCELLED_FUNDING_COUNT,
6147         - acr.FUNDING_ADJUSTMENT_AMOUNT            FUNDING_ADJUSTMENT_AMOUNT,
6148         - acr.FUNDING_ADJUSTMENT_COUNT             FUNDING_ADJUSTMENT_COUNT,
6149         - acr.REVENUE_WRITEOFF                     REVENUE_WRITEOFF,
6150         - acr.AR_INVOICE_AMOUNT                    AR_INVOICE_AMOUNT,
6151         - acr.AR_INVOICE_COUNT                     AR_INVOICE_COUNT,
6152         - acr.AR_CASH_APPLIED_AMOUNT               AR_CASH_APPLIED_AMOUNT,
6153         - acr.AR_INVOICE_WRITE_OFF_AMOUNT          AR_INVOICE_WRITE_OFF_AMOUNT,
6154         - acr.AR_INVOICE_WRITEOFF_COUNT            AR_INVOICE_WRITEOFF_COUNT,
6155         - acr.AR_CREDIT_MEMO_AMOUNT                AR_CREDIT_MEMO_AMOUNT,
6156         - acr.AR_CREDIT_MEMO_COUNT                 AR_CREDIT_MEMO_COUNT,
6157         - acr.UNBILLED_RECEIVABLES                 UNBILLED_RECEIVABLES,
6158         - acr.UNEARNED_REVENUE                     UNEARNED_REVENUE,
6159         - acr.AR_UNAPPR_INVOICE_AMOUNT             AR_UNAPPR_INVOICE_AMOUNT,
6160         - acr.AR_UNAPPR_INVOICE_COUNT              AR_UNAPPR_INVOICE_COUNT,
6161         - acr.AR_APPR_INVOICE_AMOUNT               AR_APPR_INVOICE_AMOUNT,
6162         - acr.AR_APPR_INVOICE_COUNT                AR_APPR_INVOICE_COUNT,
6163         - acr.AR_AMOUNT_DUE                        AR_AMOUNT_DUE,
6164         - acr.AR_COUNT_DUE                         AR_COUNT_DUE,
6165         - acr.AR_AMOUNT_OVERDUE                    AR_AMOUNT_OVERDUE,
6166         - acr.AR_COUNT_OVERDUE                     AR_COUNT_OVERDUE,
6167         - acr.CUSTOM1                              CUSTOM1,
6168         - acr.CUSTOM2                              CUSTOM2,
6169         - acr.CUSTOM3                              CUSTOM3,
6170         - acr.CUSTOM4                              CUSTOM4,
6171         - acr.CUSTOM5                              CUSTOM5,
6172         - acr.CUSTOM6                              CUSTOM6,
6173         - acr.CUSTOM7                              CUSTOM7,
6174         - acr.CUSTOM8                              CUSTOM8,
6175         - acr.CUSTOM9                              CUSTOM9,
6176         - acr.CUSTOM10                             CUSTOM10,
6177         - acr.CUSTOM11                             CUSTOM11,
6178         - acr.CUSTOM12                             CUSTOM12,
6179         - acr.CUSTOM13                             CUSTOM13,
6180         - acr.CUSTOM14                             CUSTOM14,
6181         - acr.CUSTOM15                             CUSTOM15
6182       from
6183         PJI_PJP_PROJ_BATCH_MAP map,
6184         PJI_AC_XBS_ACCUM_F acr
6185       where
6186         l_extraction_type   = 'PARTIAL'      and
6187         map.WORKER_ID       = p_worker_id    and
6188         acr.PROJECT_ID      = map.PROJECT_ID and
6189         acr.PERIOD_TYPE_ID  = 32             and
6190         acr.WBS_ROLLUP_FLAG = 'N'            and
6191         acr.PRG_ROLLUP_FLAG = 'N'         and
6192   decode(bitand(l_refresh_code,1),1,'Y','N') ='Y'   and   --  Bug#5099574
6193   l_plan_type_id is null
6194       )
6195     group by
6196       WORKER_ID,
6197       PROJECT_ID,
6198       PROJECT_ORG_ID,
6199       PROJECT_ORGANIZATION_ID,
6200       PROJECT_ELEMENT_ID,
6201       TIME_ID,
6202       PERIOD_TYPE_ID,
6203       CALENDAR_TYPE,
6204       WBS_ROLLUP_FLAG,
6205       PRG_ROLLUP_FLAG,
6206       CURR_RECORD_TYPE_ID,
6207       CURRENCY_CODE
6208     having not
6209       (nvl(sum(REVENUE), 0)                     = 0 and
6210        nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
6211        nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
6212        nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
6213        nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
6214        nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
6215        nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
6216        nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
6217        nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
6218        nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
6219        nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
6220        nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
6221        nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
6222        nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
6223        nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
6224        nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
6225        nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
6226        nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
6227        nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
6228        nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
6229        nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
6230        nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
6231        nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
6232        nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
6233        nvl(sum(AR_COUNT_DUE), 0)                = 0 and
6234        nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
6235        nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
6236        nvl(sum(CUSTOM1), 0)                     = 0 and
6237        nvl(sum(CUSTOM2), 0)                     = 0 and
6238        nvl(sum(CUSTOM3), 0)                     = 0 and
6239        nvl(sum(CUSTOM4), 0)                     = 0 and
6240        nvl(sum(CUSTOM5), 0)                     = 0 and
6241        nvl(sum(CUSTOM6), 0)                     = 0 and
6242        nvl(sum(CUSTOM7), 0)                     = 0 and
6243        nvl(sum(CUSTOM8), 0)                     = 0 and
6244        nvl(sum(CUSTOM9), 0)                     = 0 and
6245        nvl(sum(CUSTOM10), 0)                    = 0 and
6246        nvl(sum(CUSTOM11), 0)                    = 0 and
6247        nvl(sum(CUSTOM12), 0)                    = 0 and
6248        nvl(sum(CUSTOM13), 0)                    = 0 and
6249        nvl(sum(CUSTOM14), 0)                    = 0 and
6250        nvl(sum(CUSTOM15), 0)                    = 0);
6251 
6252 else
6253  insert into PJI_AC_AGGR_PJP1 pjp1_i
6254     (
6255       WORKER_ID,
6256       RECORD_TYPE,
6257       PRG_LEVEL,
6258       PROJECT_ID,
6259       PROJECT_ORG_ID,
6260       PROJECT_ORGANIZATION_ID,
6261       PROJECT_ELEMENT_ID,
6262       TIME_ID,
6263       PERIOD_TYPE_ID,
6264       CALENDAR_TYPE,
6265       WBS_ROLLUP_FLAG,
6266       PRG_ROLLUP_FLAG,
6267       CURR_RECORD_TYPE_ID,
6268       CURRENCY_CODE,
6269       REVENUE,
6270       INITIAL_FUNDING_AMOUNT,
6271       INITIAL_FUNDING_COUNT,
6272       ADDITIONAL_FUNDING_AMOUNT,
6273       ADDITIONAL_FUNDING_COUNT,
6274       CANCELLED_FUNDING_AMOUNT,
6275       CANCELLED_FUNDING_COUNT,
6276       FUNDING_ADJUSTMENT_AMOUNT,
6277       FUNDING_ADJUSTMENT_COUNT,
6278       REVENUE_WRITEOFF,
6279       AR_INVOICE_AMOUNT,
6280       AR_INVOICE_COUNT,
6281       AR_CASH_APPLIED_AMOUNT,
6282       AR_INVOICE_WRITE_OFF_AMOUNT,
6283       AR_INVOICE_WRITEOFF_COUNT,
6284       AR_CREDIT_MEMO_AMOUNT,
6285       AR_CREDIT_MEMO_COUNT,
6286       UNBILLED_RECEIVABLES,
6287       UNEARNED_REVENUE,
6288       AR_UNAPPR_INVOICE_AMOUNT,
6289       AR_UNAPPR_INVOICE_COUNT,
6290       AR_APPR_INVOICE_AMOUNT,
6291       AR_APPR_INVOICE_COUNT,
6292       AR_AMOUNT_DUE,
6293       AR_COUNT_DUE,
6294       AR_AMOUNT_OVERDUE,
6295       AR_COUNT_OVERDUE,
6296       CUSTOM1,
6297       CUSTOM2,
6298       CUSTOM3,
6299       CUSTOM4,
6300       CUSTOM5,
6301       CUSTOM6,
6302       CUSTOM7,
6303       CUSTOM8,
6304       CUSTOM9,
6305       CUSTOM10,
6306       CUSTOM11,
6307       CUSTOM12,
6308       CUSTOM13,
6309       CUSTOM14,
6310       CUSTOM15
6311     )
6312     select
6313       WORKER_ID,
6314       null                                         RECORD_TYPE,
6315       0                                            PRG_LEVEL,
6316       PROJECT_ID,
6317       PROJECT_ORG_ID,
6318       PROJECT_ORGANIZATION_ID,
6319       PROJECT_ELEMENT_ID,
6320       TIME_ID,
6321       PERIOD_TYPE_ID,
6322       CALENDAR_TYPE,
6323       WBS_ROLLUP_FLAG,
6324       PRG_ROLLUP_FLAG,
6325       CURR_RECORD_TYPE_ID,
6326       CURRENCY_CODE,
6327       sum(REVENUE)                                 REVENUE,
6328       sum(INITIAL_FUNDING_AMOUNT)                  INITIAL_FUNDING_AMOUNT,
6329       sum(INITIAL_FUNDING_COUNT)                   INITIAL_FUNDING_COUNT,
6330       sum(ADDITIONAL_FUNDING_AMOUNT)               ADDITIONAL_FUNDING_AMOUNT,
6331       sum(ADDITIONAL_FUNDING_COUNT)                ADDITIONAL_FUNDING_COUNT,
6332       sum(CANCELLED_FUNDING_AMOUNT)                CANCELLED_FUNDING_AMOUNT,
6333       sum(CANCELLED_FUNDING_COUNT)                 CANCELLED_FUNDING_COUNT,
6334       sum(FUNDING_ADJUSTMENT_AMOUNT)               FUNDING_ADJUSTMENT_AMOUNT,
6335       sum(FUNDING_ADJUSTMENT_COUNT)                FUNDING_ADJUSTMENT_COUNT,
6336       sum(REVENUE_WRITEOFF)                        REVENUE_WRITEOFF,
6337       sum(AR_INVOICE_AMOUNT)                       AR_INVOICE_AMOUNT,
6338       sum(AR_INVOICE_COUNT)                        AR_INVOICE_COUNT,
6339       sum(AR_CASH_APPLIED_AMOUNT)                  AR_CASH_APPLIED_AMOUNT,
6340       sum(AR_INVOICE_WRITE_OFF_AMOUNT)             AR_INVOICE_WRITE_OFF_AMOUNT,
6341       sum(AR_INVOICE_WRITEOFF_COUNT)               AR_INVOICE_WRITEOFF_COUNT,
6342       sum(AR_CREDIT_MEMO_AMOUNT)                   AR_CREDIT_MEMO_AMOUNT,
6343       sum(AR_CREDIT_MEMO_COUNT)                    AR_CREDIT_MEMO_COUNT,
6344       sum(UNBILLED_RECEIVABLES)                    UNBILLED_RECEIVABLES,
6345       sum(UNEARNED_REVENUE)                        UNEARNED_REVENUE,
6346       sum(AR_UNAPPR_INVOICE_AMOUNT)                AR_UNAPPR_INVOICE_AMOUNT,
6347       sum(AR_UNAPPR_INVOICE_COUNT)                 AR_UNAPPR_INVOICE_COUNT,
6348       sum(AR_APPR_INVOICE_AMOUNT)                  AR_APPR_INVOICE_AMOUNT,
6349       sum(AR_APPR_INVOICE_COUNT)                   AR_APPR_INVOICE_COUNT,
6350       sum(AR_AMOUNT_DUE)                           AR_AMOUNT_DUE,
6351       sum(AR_COUNT_DUE)                            AR_COUNT_DUE,
6352       sum(AR_AMOUNT_OVERDUE)                       AR_AMOUNT_OVERDUE,
6353       sum(AR_COUNT_OVERDUE)                        AR_COUNT_OVERDUE,
6354       sum(CUSTOM1)                                 CUSTOM1,
6355       sum(CUSTOM2)                                 CUSTOM2,
6356       sum(CUSTOM3)                                 CUSTOM3,
6357       sum(CUSTOM4)                                 CUSTOM4,
6358       sum(CUSTOM5)                                 CUSTOM5,
6359       sum(CUSTOM6)                                 CUSTOM6,
6360       sum(CUSTOM7)                                 CUSTOM7,
6361       sum(CUSTOM8)                                 CUSTOM8,
6362       sum(CUSTOM9)                                 CUSTOM9,
6363       sum(CUSTOM10)                                CUSTOM10,
6364       sum(CUSTOM11)                                CUSTOM11,
6365       sum(CUSTOM12)                                CUSTOM12,
6366       sum(CUSTOM13)                                CUSTOM13,
6367       sum(CUSTOM14)                                CUSTOM14,
6368       sum(CUSTOM15)                                CUSTOM15
6369     from
6370       (
6371       select
6372         WORKER_ID,
6373         PROJECT_ID,
6374         PROJECT_ORG_ID,
6375         PROJECT_ORGANIZATION_ID,
6376         PROJECT_ELEMENT_ID,
6377         TIME_ID,
6378         PERIOD_TYPE_ID,
6379         CALENDAR_TYPE,
6380         WBS_ROLLUP_FLAG,
6381         PRG_ROLLUP_FLAG,
6382         CURR_RECORD_TYPE_ID,
6383         CURRENCY_CODE,
6384         REVENUE,
6385         INITIAL_FUNDING_AMOUNT,
6386         INITIAL_FUNDING_COUNT,
6387         ADDITIONAL_FUNDING_AMOUNT,
6388         ADDITIONAL_FUNDING_COUNT,
6389         CANCELLED_FUNDING_AMOUNT,
6390         CANCELLED_FUNDING_COUNT,
6391         FUNDING_ADJUSTMENT_AMOUNT,
6392         FUNDING_ADJUSTMENT_COUNT,
6393         REVENUE_WRITEOFF,
6394         AR_INVOICE_AMOUNT,
6395         AR_INVOICE_COUNT,
6396         AR_CASH_APPLIED_AMOUNT,
6397         AR_INVOICE_WRITE_OFF_AMOUNT,
6398         AR_INVOICE_WRITEOFF_COUNT,
6399         AR_CREDIT_MEMO_AMOUNT,
6400         AR_CREDIT_MEMO_COUNT,
6401         UNBILLED_RECEIVABLES,
6402         UNEARNED_REVENUE,
6403         AR_UNAPPR_INVOICE_AMOUNT,
6404         AR_UNAPPR_INVOICE_COUNT,
6405         AR_APPR_INVOICE_AMOUNT,
6406         AR_APPR_INVOICE_COUNT,
6407         AR_AMOUNT_DUE,
6408         AR_COUNT_DUE,
6409         AR_AMOUNT_OVERDUE,
6410         AR_COUNT_OVERDUE,
6411         to_number(null)                            CUSTOM1,
6412         to_number(null)                            CUSTOM2,
6413         to_number(null)                            CUSTOM3,
6414         to_number(null)                            CUSTOM4,
6415         to_number(null)                            CUSTOM5,
6416         to_number(null)                            CUSTOM6,
6417         to_number(null)                            CUSTOM7,
6418         to_number(null)                            CUSTOM8,
6419         to_number(null)                            CUSTOM9,
6420         to_number(null)                            CUSTOM10,
6421         to_number(null)                            CUSTOM11,
6422         to_number(null)                            CUSTOM12,
6423         to_number(null)                            CUSTOM13,
6424         to_number(null)                            CUSTOM14,
6425         to_number(null)                            CUSTOM15
6426       from
6427         PJI_AC_AGGR_PJP0
6428       where
6429         WORKER_ID = p_worker_id
6430       union all
6431       select
6432         WORKER_ID,
6433         PROJECT_ID,
6434         PROJECT_ORG_ID,
6435         PROJECT_ORGANIZATION_ID,
6436         PROJECT_ELEMENT_ID,
6437         TIME_ID,
6438         PERIOD_TYPE_ID,
6439         CALENDAR_TYPE,
6440         WBS_ROLLUP_FLAG,
6441         PRG_ROLLUP_FLAG,
6442         CURR_RECORD_TYPE_ID,
6443         CURRENCY_CODE,
6444         to_number(null)                            REVENUE,
6445         to_number(null)                            INITIAL_FUNDING_AMOUNT,
6446         to_number(null)                            INITIAL_FUNDING_COUNT,
6447         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
6448         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
6449         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
6450         to_number(null)                            CANCELLED_FUNDING_COUNT,
6451         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
6452         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
6453         to_number(null)                            REVENUE_WRITEOFF,
6454         to_number(null)                            AR_INVOICE_AMOUNT,
6455         to_number(null)                            AR_INVOICE_COUNT,
6456         to_number(null)                            AR_CASH_APPLIED_AMOUNT,
6457         to_number(null)                            AR_INVOICE_WRITE_OFF_AMOUNT,
6458         to_number(null)                            AR_INVOICE_WRITEOFF_COUNT,
6459         to_number(null)                            AR_CREDIT_MEMO_AMOUNT,
6460         to_number(null)                            AR_CREDIT_MEMO_COUNT,
6461         to_number(null)                            UNBILLED_RECEIVABLES,
6462         to_number(null)                            UNEARNED_REVENUE,
6463         to_number(null)                            AR_UNAPPR_INVOICE_AMOUNT,
6464         to_number(null)                            AR_UNAPPR_INVOICE_COUNT,
6465         to_number(null)                            AR_APPR_INVOICE_AMOUNT,
6466         to_number(null)                            AR_APPR_INVOICE_COUNT,
6467         to_number(null)                            AR_AMOUNT_DUE,
6468         to_number(null)                            AR_COUNT_DUE,
6469         to_number(null)                            AR_AMOUNT_OVERDUE,
6470         to_number(null)                            AR_COUNT_OVERDUE,
6471         CUSTOM1,
6472         CUSTOM2,
6473         CUSTOM3,
6474         CUSTOM4,
6475         CUSTOM5,
6476         CUSTOM6,
6477         CUSTOM7,
6478         CUSTOM8,
6479         CUSTOM9,
6480         CUSTOM10,
6481         CUSTOM11,
6482         CUSTOM12,
6483         CUSTOM13,
6484         CUSTOM14,
6485         CUSTOM15
6486       from
6487         PJI_AC_CUST_PJP0
6488       where
6489         WORKER_ID = p_worker_id
6490       union all    -- activity and snapshot reversals  -  PART 1  -  ENT dates
6491                    -- Select old ITD amounts for snapshots with
6492                    -- reverse sign from base level fact
6493       select /*+  full(map) use_nl(acr) */
6494             distinct                                   -- Bug 6689297
6495         p_worker_id                                WORKER_ID,
6496         acr.PROJECT_ID,
6497         acr.PROJECT_ORG_ID,
6498         acr.PROJECT_ORGANIZATION_ID,
6499         acr.PROJECT_ELEMENT_ID,
6500         decode(invert.INVERT_ID,
6501                'ACTIVITY', acr.TIME_ID,
6502                'SNAPSHOT', ent.ENT_PERIOD_ID)      TIME_ID,
6503         32                                         PERIOD_TYPE_ID,
6504         'E'                                        CALENDAR_TYPE,
6505         acr.WBS_ROLLUP_FLAG,
6506         acr.PRG_ROLLUP_FLAG,
6507         acr.CURR_RECORD_TYPE_ID,
6508         acr.CURRENCY_CODE,
6509         to_number(null)                            REVENUE,
6510         to_number(null)                            INITIAL_FUNDING_AMOUNT,
6511         to_number(null)                            INITIAL_FUNDING_COUNT,
6512         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
6513         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
6514         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
6515         to_number(null)                            CANCELLED_FUNDING_COUNT,
6516         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
6517         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
6518         to_number(null)                            REVENUE_WRITEOFF,
6519         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
6520         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
6521 /*        decode(invert.INVERT_ID,
6522                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
6523                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
6524         decode(invert.INVERT_ID,
6525                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
6526                                   acr.TIME_ID, to_number(null),
6527                                                - acr.AR_INVOICE_COUNT),
6528                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT, */
6529         decode(invert.INVERT_ID,
6530                'ACTIVITY', to_number(null),
6531                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
6532                                                    AR_CASH_APPLIED_AMOUNT,
6533         decode(invert.INVERT_ID,
6534                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
6535                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
6536         decode(invert.INVERT_ID,
6537                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
6538                                   acr.TIME_ID, to_number(null),
6539                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
6540                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
6541                                                    AR_INVOICE_WRITEOFF_COUNT,
6542         decode(invert.INVERT_ID,
6543                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
6544                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
6545         decode(invert.INVERT_ID,
6546                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
6547                                   acr.TIME_ID, to_number(null),
6548                                                - acr.AR_CREDIT_MEMO_COUNT),
6549                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
6550                                                    AR_CREDIT_MEMO_COUNT,
6551         to_number(null)                            UNBILLED_RECEIVABLES,
6552         to_number(null)                            UNEARNED_REVENUE,
6553         decode(invert.INVERT_ID,
6554                'ACTIVITY', to_number(null),
6555                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
6556                                                    AR_UNAPPR_INVOICE_AMOUNT,
6557         decode(invert.INVERT_ID,
6558                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
6559                                   acr.TIME_ID, to_number(null),
6560                                                - acr.AR_UNAPPR_INVOICE_COUNT),
6561                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
6562                                                    AR_UNAPPR_INVOICE_COUNT,
6563         decode(invert.INVERT_ID,
6564                'ACTIVITY', to_number(null),
6565                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
6566                                                    AR_APPR_INVOICE_AMOUNT,
6567         decode(invert.INVERT_ID,
6568                'ACTIVITY', decode(ent.ENT_PERIOD_ID,
6569                                   acr.TIME_ID, to_number(null),
6570                                                - acr.AR_APPR_INVOICE_COUNT),
6571                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
6572                                                    AR_APPR_INVOICE_COUNT,
6573         decode(invert.INVERT_ID,
6574                'ACTIVITY', to_number(null),
6575                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
6576         decode(invert.INVERT_ID,
6577                'ACTIVITY', to_number(null),
6578                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
6579         decode(invert.INVERT_ID,
6580                'ACTIVITY', to_number(null),
6581                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
6582         decode(invert.INVERT_ID,
6583                'ACTIVITY', to_number(null),
6584                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
6585         to_number(null)                            CUSTOM1,
6586         to_number(null)                            CUSTOM2,
6587         to_number(null)                            CUSTOM3,
6588         to_number(null)                            CUSTOM4,
6589         to_number(null)                            CUSTOM5,
6590         to_number(null)                            CUSTOM6,
6591         to_number(null)                            CUSTOM7,
6592         to_number(null)                            CUSTOM8,
6593         to_number(null)                            CUSTOM9,
6594         to_number(null)                            CUSTOM10,
6595         to_number(null)                            CUSTOM11,
6596         to_number(null)                            CUSTOM12,
6597         to_number(null)                            CUSTOM13,
6598         to_number(null)                            CUSTOM14,
6599         to_number(null)                            CUSTOM15
6600       from
6601         PJI_PJP_PROJ_BATCH_MAP map,
6602         PJI_AC_XBS_ACCUM_F     acr,
6603         PJI_AC_AGGR_PJP0       pjp0,    -- Bug 6689297
6604         PJI_TIME_RPT_STRUCT    cal,
6605         PJI_TIME_ENT_PERIOD_V  ent,
6606         (
6607           select 'ACTIVITY' INVERT_ID from DUAL union all
6608           select 'SNAPSHOT' INVERT_ID from DUAL
6609         ) invert
6610       where
6611         l_extraction_type                <> 'PARTIAL'                   and
6612         map.WORKER_ID                    =  p_worker_id                 and
6613         acr.PROJECT_ID                   =  map.PROJECT_ID              and
6614         pjp0.WORKER_ID                   =  p_worker_id                 and    -- Bug 6689297
6615         acr.PROJECT_ID                   =  pjp0.PROJECT_ID             and    -- Bug 6689297
6616         acr.WBS_ROLLUP_FLAG              =  'N'                         and
6617         acr.PRG_ROLLUP_FLAG              =  'N'                         and
6618         cal.REPORT_DATE                  =  trunc(ent.START_DATE, 'J')  and
6619         cal.CALENDAR_TYPE                =  acr.CALENDAR_TYPE           and
6620         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID          and
6621         cal.TIME_ID                      =  acr.TIME_ID                 and
6622         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID          and
6623         sysdate between ent.START_DATE and ent.END_DATE                 and
6624         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
6625           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
6626           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
6627           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
6628           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
6629           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
6630           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
6631           abs(nvl(acr.AR_COUNT_DUE,0)) +
6632           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
6633       union all    -- activity and snapshot reversals  -  PART 2  -  GL dates
6634                    -- Select old ITD amounts for snapshots with
6635                    -- reverse sign from base level fact
6636       select /*+  full(map) use_nl(acr) full(info) */
6637             distinct                                   -- Bug 6689297
6638         p_worker_id                                WORKER_ID,
6639         acr.PROJECT_ID,
6640         acr.PROJECT_ORG_ID,
6641         acr.PROJECT_ORGANIZATION_ID,
6642         acr.PROJECT_ELEMENT_ID,
6643         decode(invert.INVERT_ID,
6644                'ACTIVITY', acr.TIME_ID,
6645                'SNAPSHOT', gl_cal.CAL_PERIOD_ID)   TIME_ID,
6646         32                                         PERIOD_TYPE_ID,
6647         'G'                                        CALENDAR_TYPE,
6648         acr.WBS_ROLLUP_FLAG,
6649         acr.PRG_ROLLUP_FLAG,
6650         acr.CURR_RECORD_TYPE_ID,
6651         acr.CURRENCY_CODE,
6652         to_number(null)                            REVENUE,
6653         to_number(null)                            INITIAL_FUNDING_AMOUNT,
6654         to_number(null)                            INITIAL_FUNDING_COUNT,
6655         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
6656         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
6657         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
6658         to_number(null)                            CANCELLED_FUNDING_COUNT,
6659         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
6660         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
6661         to_number(null)                            REVENUE_WRITEOFF,
6662         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
6663         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
6664 /*        decode(invert.INVERT_ID,
6665                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
6666                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
6667         decode(invert.INVERT_ID,
6668                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
6669                                   acr.TIME_ID, to_number(null),
6670                                                - acr.AR_INVOICE_COUNT),
6671                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT,   */
6672         decode(invert.INVERT_ID,
6673                'ACTIVITY', to_number(null),
6674                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
6675                                                    AR_CASH_APPLIED_AMOUNT,
6676         decode(invert.INVERT_ID,
6677                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
6678                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
6679         decode(invert.INVERT_ID,
6680                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
6681                                   acr.TIME_ID, to_number(null),
6682                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
6683                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
6684                                                    AR_INVOICE_WRITEOFF_COUNT,
6685         decode(invert.INVERT_ID,
6686                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
6687                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
6688         decode(invert.INVERT_ID,
6689                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
6690                                   acr.TIME_ID, to_number(null),
6691                                                - acr.AR_CREDIT_MEMO_COUNT),
6692                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
6693                                                    AR_CREDIT_MEMO_COUNT,
6694         to_number(null)                            UNBILLED_RECEIVABLES,
6695         to_number(null)                            UNEARNED_REVENUE,
6696         decode(invert.INVERT_ID,
6697                'ACTIVITY', to_number(null),
6698                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
6699                                                    AR_UNAPPR_INVOICE_AMOUNT,
6700         decode(invert.INVERT_ID,
6701                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
6702                                   acr.TIME_ID, to_number(null),
6703                                                - acr.AR_UNAPPR_INVOICE_COUNT),
6704                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
6705                                                    AR_UNAPPR_INVOICE_COUNT,
6706         decode(invert.INVERT_ID,
6707                'ACTIVITY', to_number(null),
6708                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
6709                                                    AR_APPR_INVOICE_AMOUNT,
6710         decode(invert.INVERT_ID,
6711                'ACTIVITY', decode(gl_cal.CAL_PERIOD_ID,
6712                                   acr.TIME_ID, to_number(null),
6713                                                - acr.AR_APPR_INVOICE_COUNT),
6714                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
6715                                                    AR_APPR_INVOICE_COUNT,
6716         decode(invert.INVERT_ID,
6717                'ACTIVITY', to_number(null),
6718                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
6719         decode(invert.INVERT_ID,
6720                'ACTIVITY', to_number(null),
6721                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
6722         decode(invert.INVERT_ID,
6723                'ACTIVITY', to_number(null),
6724                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
6725         decode(invert.INVERT_ID,
6726                'ACTIVITY', to_number(null),
6727                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
6728         to_number(null)                            CUSTOM1,
6729         to_number(null)                            CUSTOM2,
6730         to_number(null)                            CUSTOM3,
6731         to_number(null)                            CUSTOM4,
6732         to_number(null)                            CUSTOM5,
6733         to_number(null)                            CUSTOM6,
6734         to_number(null)                            CUSTOM7,
6735         to_number(null)                            CUSTOM8,
6736         to_number(null)                            CUSTOM9,
6737         to_number(null)                            CUSTOM10,
6738         to_number(null)                            CUSTOM11,
6739         to_number(null)                            CUSTOM12,
6740         to_number(null)                            CUSTOM13,
6741         to_number(null)                            CUSTOM14,
6742         to_number(null)                            CUSTOM15
6743       from
6744         PJI_PJP_PROJ_BATCH_MAP  map,
6745         PJI_AC_XBS_ACCUM_F      acr,
6746         PJI_AC_AGGR_PJP0        pjp0,    -- Bug 6689297
6747         PJI_TIME_CAL_RPT_STRUCT cal,
6748         PJI_ORG_EXTR_INFO       info,
6749         PJI_TIME_CAL_PERIOD_V   gl_cal,
6750         (
6751           select 'ACTIVITY' INVERT_ID from DUAL union all
6752           select 'SNAPSHOT' INVERT_ID from DUAL
6753         ) invert
6754       where
6755         l_extraction_type                <> 'PARTIAL'                     and
6756         map.WORKER_ID                    =  p_worker_id                   and
6757         acr.PROJECT_ID                   =  map.PROJECT_ID                and
6758         pjp0.WORKER_ID                   =  p_worker_id                   and    -- Bug 6689297
6759         acr.PROJECT_ID                   =  pjp0.PROJECT_ID               and    -- Bug 6689297
6760         acr.WBS_ROLLUP_FLAG              =  'N'                           and
6761         acr.PRG_ROLLUP_FLAG              =  'N'                           and
6762         acr.PROJECT_ORG_ID               =  info.ORG_ID                   and  /*5377133 */
6763         acr.CALENDAR_TYPE                =  'G'                           and
6764         cal.REPORT_DATE                  =  trunc(gl_cal.START_DATE, 'J') and
6765         cal.CALENDAR_ID                  =  info.GL_CALENDAR_ID           and
6766         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID            and
6767         cal.TIME_ID                      =  acr.TIME_ID                   and
6768         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID            and
6769         gl_cal.CALENDAR_ID               =  info.GL_CALENDAR_ID           and
6770         sysdate between gl_cal.START_DATE and gl_cal.END_DATE             and
6771         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
6772           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
6773           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
6774           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
6775           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
6776           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
6777           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
6778           abs(nvl(acr.AR_COUNT_DUE,0)) +
6779           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
6780       union all    -- activity and snapshot reversals  -  PART 3  -  PA dates
6781                    -- Select old ITD amounts for snapshots with
6782                    -- reverse sign from base level fact
6783       select /*+  full(map) use_nl(acr) full(info) */
6784             distinct                                   -- Bug 6689297
6785         p_worker_id                                WORKER_ID,
6786         acr.PROJECT_ID,
6787         acr.PROJECT_ORG_ID,
6788         acr.PROJECT_ORGANIZATION_ID,
6789         acr.PROJECT_ELEMENT_ID,
6790         decode(invert.INVERT_ID,
6791                'ACTIVITY', acr.TIME_ID,
6792                'SNAPSHOT', pa_cal.CAL_PERIOD_ID)   TIME_ID,
6793         32                                         PERIOD_TYPE_ID,
6794         'P'                                        CALENDAR_TYPE,
6795         acr.WBS_ROLLUP_FLAG,
6796         acr.PRG_ROLLUP_FLAG,
6797         acr.CURR_RECORD_TYPE_ID,
6798         acr.CURRENCY_CODE,
6799         to_number(null)                            REVENUE,
6800         to_number(null)                            INITIAL_FUNDING_AMOUNT,
6801         to_number(null)                            INITIAL_FUNDING_COUNT,
6802         to_number(null)                            ADDITIONAL_FUNDING_AMOUNT,
6803         to_number(null)                            ADDITIONAL_FUNDING_COUNT,
6804         to_number(null)                            CANCELLED_FUNDING_AMOUNT,
6805         to_number(null)                            CANCELLED_FUNDING_COUNT,
6806         to_number(null)                            FUNDING_ADJUSTMENT_AMOUNT,
6807         to_number(null)                            FUNDING_ADJUSTMENT_COUNT,
6808         to_number(null)                            REVENUE_WRITEOFF,
6809         to_number(null)                            AR_INVOICE_AMOUNT,    -- Bug 6689297
6810         to_number(null)                            AR_INVOICE_COUNT,     -- Bug 6689297
6811 /*        decode(invert.INVERT_ID,
6812                'ACTIVITY', - acr.AR_INVOICE_AMOUNT,
6813                'SNAPSHOT', to_number(null))        AR_INVOICE_AMOUNT,
6814         decode(invert.INVERT_ID,
6815                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
6816                                   acr.TIME_ID, to_number(null),
6817                                                - acr.AR_INVOICE_COUNT),
6818                'SNAPSHOT', - acr.AR_INVOICE_COUNT) AR_INVOICE_COUNT,  */
6819         decode(invert.INVERT_ID,
6820                'ACTIVITY', to_number(null),
6821                'SNAPSHOT', - acr.AR_CASH_APPLIED_AMOUNT)
6822                                                    AR_CASH_APPLIED_AMOUNT,
6823         decode(invert.INVERT_ID,
6824                'ACTIVITY', - acr.AR_INVOICE_WRITE_OFF_AMOUNT,
6825                'SNAPSHOT', to_number(null))        AR_INVOICE_WRITE_OFF_AMOUNT,
6826         decode(invert.INVERT_ID,
6827                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
6828                                   acr.TIME_ID, to_number(null),
6829                                                -acr.AR_INVOICE_WRITEOFF_COUNT),
6830                'SNAPSHOT', - acr.AR_INVOICE_WRITEOFF_COUNT)
6831                                                    AR_INVOICE_WRITEOFF_COUNT,
6832         decode(invert.INVERT_ID,
6833                'ACTIVITY', - acr.AR_CREDIT_MEMO_AMOUNT,
6834                'SNAPSHOT', to_number(null))        AR_CREDIT_MEMO_AMOUNT,
6835         decode(invert.INVERT_ID,
6836                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
6837                                   acr.TIME_ID, to_number(null),
6838                                                - acr.AR_CREDIT_MEMO_COUNT),
6839                'SNAPSHOT', - acr.AR_CREDIT_MEMO_COUNT)
6840                                                    AR_CREDIT_MEMO_COUNT,
6841         to_number(null)                            UNBILLED_RECEIVABLES,
6842         to_number(null)                            UNEARNED_REVENUE,
6843         decode(invert.INVERT_ID,
6844                'ACTIVITY', to_number(null),
6845                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_AMOUNT)
6846                                                    AR_UNAPPR_INVOICE_AMOUNT,
6847         decode(invert.INVERT_ID,
6848                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
6849                                   acr.TIME_ID, to_number(null),
6850                                                - acr.AR_UNAPPR_INVOICE_COUNT),
6851                'SNAPSHOT', - acr.AR_UNAPPR_INVOICE_COUNT)
6852                                                    AR_UNAPPR_INVOICE_COUNT,
6853         decode(invert.INVERT_ID,
6854                'ACTIVITY', to_number(null),
6855                'SNAPSHOT', - acr.AR_APPR_INVOICE_AMOUNT)
6856                                                    AR_APPR_INVOICE_AMOUNT,
6857         decode(invert.INVERT_ID,
6858                'ACTIVITY', decode(pa_cal.CAL_PERIOD_ID,
6859                                   acr.TIME_ID, to_number(null),
6860                                                - acr.AR_APPR_INVOICE_COUNT),
6861                'SNAPSHOT', - acr.AR_APPR_INVOICE_COUNT)
6862                                                    AR_APPR_INVOICE_COUNT,
6863         decode(invert.INVERT_ID,
6864                'ACTIVITY', to_number(null),
6865                'SNAPSHOT', - acr.AR_AMOUNT_DUE)    AR_AMOUNT_DUE,
6866         decode(invert.INVERT_ID,
6867                'ACTIVITY', to_number(null),
6868                'SNAPSHOT', - acr.AR_COUNT_DUE)     AR_COUNT_DUE,
6869         decode(invert.INVERT_ID,
6870                'ACTIVITY', to_number(null),
6871                'SNAPSHOT', - acr.AR_AMOUNT_OVERDUE)AR_AMOUNT_OVERDUE,
6872         decode(invert.INVERT_ID,
6873                'ACTIVITY', to_number(null),
6874                'SNAPSHOT', - acr.AR_COUNT_OVERDUE) AR_COUNT_OVERDUE,
6875         to_number(null)                            CUSTOM1,
6876         to_number(null)                            CUSTOM2,
6877         to_number(null)                            CUSTOM3,
6878         to_number(null)                            CUSTOM4,
6879         to_number(null)                            CUSTOM5,
6880         to_number(null)                            CUSTOM6,
6881         to_number(null)                            CUSTOM7,
6882         to_number(null)                            CUSTOM8,
6883         to_number(null)                            CUSTOM9,
6884         to_number(null)                            CUSTOM10,
6885         to_number(null)                            CUSTOM11,
6886         to_number(null)                            CUSTOM12,
6887         to_number(null)                            CUSTOM13,
6888         to_number(null)                            CUSTOM14,
6889         to_number(null)                            CUSTOM15
6890       from
6891         PJI_PJP_PROJ_BATCH_MAP  map,
6892         PJI_AC_XBS_ACCUM_F      acr,
6893         PJI_AC_AGGR_PJP0        pjp0,    -- Bug 6689297
6894         PJI_TIME_CAL_RPT_STRUCT cal,
6895         PJI_ORG_EXTR_INFO       info,
6896         PJI_TIME_CAL_PERIOD_V   pa_cal,
6897         (
6898           select 'ACTIVITY' INVERT_ID from DUAL union all
6899           select 'SNAPSHOT' INVERT_ID from DUAL
6900         ) invert
6901       where
6902         l_extraction_type                <> 'PARTIAL'                     and
6903         map.WORKER_ID                    =  p_worker_id                   and
6904         acr.PROJECT_ID                   =  map.PROJECT_ID                and
6905         pjp0.WORKER_ID                   =  p_worker_id                   and    -- Bug 6689297
6906         acr.PROJECT_ID                   =  pjp0.PROJECT_ID               and    -- Bug 6689297
6907         acr.WBS_ROLLUP_FLAG              =  'N'                           and
6908         acr.PRG_ROLLUP_FLAG              =  'N'                           and
6909         acr.PROJECT_ORG_ID               =  info.ORG_ID                   and /*5377133 */
6910         acr.CALENDAR_TYPE                =  'P'                           and
6911         cal.REPORT_DATE                  =  trunc(pa_cal.START_DATE, 'J') and
6912         cal.CALENDAR_ID                  =  info.PA_CALENDAR_ID           and
6913         cal.PERIOD_TYPE_ID               =  acr.PERIOD_TYPE_ID            and
6914         cal.TIME_ID                      =  acr.TIME_ID                   and
6915         bitand(cal.RECORD_TYPE_ID, 1376) =  cal.RECORD_TYPE_ID            and
6916         pa_cal.CALENDAR_ID               =  info.PA_CALENDAR_ID           and
6917         sysdate between pa_cal.START_DATE and pa_cal.END_DATE             and
6918         abs(nvl(acr.AR_CASH_APPLIED_AMOUNT,0)) +
6919           abs(nvl(acr.AR_UNAPPR_INVOICE_AMOUNT,0)) +
6920           abs(nvl(acr.AR_APPR_INVOICE_AMOUNT,0)) +
6921           abs(nvl(acr.AR_AMOUNT_DUE,0)) +
6922           abs(nvl(acr.AR_AMOUNT_OVERDUE,0)) +
6923           abs(nvl(acr.AR_UNAPPR_INVOICE_COUNT,0)) +
6924           abs(nvl(acr.AR_APPR_INVOICE_COUNT,0)) +
6925           abs(nvl(acr.AR_COUNT_DUE,0)) +
6926           abs(nvl(acr.AR_COUNT_OVERDUE,0)) > 0
6927       )
6928     group by
6929       WORKER_ID,
6930       PROJECT_ID,
6931       PROJECT_ORG_ID,
6932       PROJECT_ORGANIZATION_ID,
6933       PROJECT_ELEMENT_ID,
6934       TIME_ID,
6935       PERIOD_TYPE_ID,
6936       CALENDAR_TYPE,
6937       WBS_ROLLUP_FLAG,
6938       PRG_ROLLUP_FLAG,
6939       CURR_RECORD_TYPE_ID,
6940       CURRENCY_CODE
6941     having not
6942       (nvl(sum(REVENUE), 0)                     = 0 and
6943        nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
6944        nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
6945        nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
6946        nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
6947        nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
6948        nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
6949        nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
6950        nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
6951        nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
6952        nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
6953        nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
6954        nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
6955        nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
6956        nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
6957        nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
6958        nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
6959        nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
6960        nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
6961        nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
6962        nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
6963        nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
6964        nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
6965        nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
6966        nvl(sum(AR_COUNT_DUE), 0)                = 0 and
6967        nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
6968        nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
6969        nvl(sum(CUSTOM1), 0)                     = 0 and
6970        nvl(sum(CUSTOM2), 0)                     = 0 and
6971        nvl(sum(CUSTOM3), 0)                     = 0 and
6972        nvl(sum(CUSTOM4), 0)                     = 0 and
6973        nvl(sum(CUSTOM5), 0)                     = 0 and
6974        nvl(sum(CUSTOM6), 0)                     = 0 and
6975        nvl(sum(CUSTOM7), 0)                     = 0 and
6976        nvl(sum(CUSTOM8), 0)                     = 0 and
6977        nvl(sum(CUSTOM9), 0)                     = 0 and
6978        nvl(sum(CUSTOM10), 0)                    = 0 and
6979        nvl(sum(CUSTOM11), 0)                    = 0 and
6980        nvl(sum(CUSTOM12), 0)                    = 0 and
6981        nvl(sum(CUSTOM13), 0)                    = 0 and
6982        nvl(sum(CUSTOM14), 0)                    = 0 and
6983        nvl(sum(CUSTOM15), 0)                    = 0);
6984 end if;
6985 
6986     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_AC_CUST_SLICES(p_worker_id);');
6987 
6988     commit;
6989 
6990   end AGGREGATE_AC_CUST_SLICES;
6991 
6992 
6993   -- -----------------------------------------------------
6994   -- procedure PULL_DANGLING_PLANS
6995   --
6996   --   History
6997   --   19-MAR-2004  SVERMETT  Created
6998   --
6999   -- Internal PJP Summarization API.
7000   --
7001   -- -----------------------------------------------------
7002   procedure PULL_DANGLING_PLANS (p_worker_id in number) is
7003 
7004     l_process         varchar2(30);
7005     l_extraction_type varchar2(30);
7006 
7007     l_return_status   varchar2(255);
7008     l_msg_count       number;
7009     l_msg_data        varchar2(2000);
7010 
7011   begin
7012 
7013     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7014 
7015     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_DANGLING_PLANS(p_worker_id);')) then
7016       return;
7017     end if;
7018 
7019     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7020 
7021     IF (l_extraction_type = 'INCREMENTAL') THEN
7022       Pji_Fm_Plan_Maint.CREATE_SECONDARY_PVT;
7023       -- PJI_FM_PLAN_MAINT_PVT.PULL_DANGLING_PLANS; -- Removing redundant api nesting.
7024     END IF;
7025 
7026     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_DANGLING_PLANS(p_worker_id);');
7027 
7028     commit;
7029 
7030   end PULL_DANGLING_PLANS;
7031 
7032 
7033   -- -----------------------------------------------------
7034   -- procedure PULL_PLANS_FOR_PR
7035   --
7036   --   History
7037   --   19-MAR-2004  SVERMETT  Created
7038   --
7039   -- Internal PJP Summarization API.
7040   --
7041   -- -----------------------------------------------------
7042   procedure PULL_PLANS_FOR_PR (p_worker_id in number) is
7043 
7044     l_process         varchar2(30);
7045     l_extraction_type varchar2(30);
7046 
7047     l_return_status   varchar2(255);
7048     l_msg_code        varchar2(255);
7049     l_msg_data        varchar2(2000);
7050 
7051     l_plan_type_id    number;
7052 
7053   begin
7054 
7055     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7056 
7057     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_PR(p_worker_id);')) then
7058       return;
7059     end if;
7060 
7061     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7062 
7063     if (l_extraction_type = 'PARTIAL') then
7064 
7065       l_plan_type_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
7066                         (l_process, 'PLAN_TYPE_ID');
7067 
7068       if (l_plan_type_id = -1) then
7069         l_plan_type_id := null;
7070       end if;
7071 
7072       PJI_FM_PLAN_MAINT.PULL_PLANS_FOR_PR(null,
7073                                           l_plan_type_id,
7074                                           'PLANTYPE',
7075                                           l_return_status,
7076                                           l_msg_code);
7077 
7078     end if;
7079 
7080     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_PR(p_worker_id);');
7081 
7082     commit;
7083 
7084   end PULL_PLANS_FOR_PR;
7085 
7086 
7087   -- -----------------------------------------------------
7088   -- procedure PULL_PLANS_FOR_RBS
7089   --
7090   --   History
7091   --   19-MAR-2004  SVERMETT  Created
7092   --
7093   -- Internal PJP Summarization API.
7094   --
7095   -- Called by RBS program
7096   --
7097   -- -----------------------------------------------------
7098   procedure PULL_PLANS_FOR_RBS (p_worker_id in number) is
7099 
7100     l_process         varchar2(30);
7101     l_extraction_type varchar2(30);
7102 
7103     l_return_status   varchar2(255);
7104     l_msg_code        varchar2(255);
7105     l_msg_data        varchar2(2000);
7106 
7107     l_rbs_version_id  number;
7108 
7109   begin
7110 
7111     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7112 
7113     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_RBS(p_worker_id);')) then
7114       return;
7115     end if;
7116 
7117     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7118 
7119     if (l_extraction_type = 'RBS') then
7120 
7121       l_rbs_version_id := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
7122                           (l_process, 'RBS_VERSION_ID');
7123 
7124       PJI_FM_PLAN_MAINT.PULL_PLANS_FOR_PR(l_rbs_version_id,
7125                                           null,
7126                                           'RBS',
7127                                           l_return_status,
7128                                           l_msg_code);
7129 
7130     end if;
7131 
7132     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PULL_PLANS_FOR_RBS(p_worker_id);');
7133 
7134     commit;
7135 
7136   end PULL_PLANS_FOR_RBS;
7137 
7138 
7139   -- -----------------------------------------------------
7140   -- procedure ROLLUP_FPR_RBS_TOP
7141   --
7142   --   History
7143   --   19-MAR-2004  SVERMETT  Created
7144   --
7145   -- Internal PJP Summarization API.
7146   --
7147   -- -----------------------------------------------------
7148   procedure ROLLUP_FPR_RBS_TOP (p_worker_id in number) is
7149 
7150     l_process varchar2(30);
7151     l_extraction_type varchar2(30);
7152 
7153   begin
7154 
7155     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7156 
7157     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_TOP(p_worker_id);')) then
7158       return;
7159     end if;
7160 
7161     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7162 
7163     insert into PJI_FP_AGGR_PJP1 pjp1_i
7164     (
7165       WORKER_ID,
7166       RECORD_TYPE,
7167       PRG_LEVEL,
7168       LINE_TYPE,
7169       PROJECT_ID,
7170       PROJECT_ORG_ID,
7171       PROJECT_ORGANIZATION_ID,
7172       PROJECT_ELEMENT_ID,
7173       TIME_ID,
7174       PERIOD_TYPE_ID,
7175       CALENDAR_TYPE,
7176       RBS_AGGR_LEVEL,
7177       WBS_ROLLUP_FLAG,
7178       PRG_ROLLUP_FLAG,
7179       CURR_RECORD_TYPE_ID,
7180       CURRENCY_CODE,
7181       RBS_ELEMENT_ID,
7182       RBS_VERSION_ID,
7183       PLAN_VERSION_ID,
7184       PLAN_TYPE_ID,
7185       PLAN_TYPE_CODE,
7186       RAW_COST,
7187       BRDN_COST,
7188       REVENUE,
7189       BILL_RAW_COST,
7190       BILL_BRDN_COST,
7191       BILL_LABOR_RAW_COST,
7192       BILL_LABOR_BRDN_COST,
7193       BILL_LABOR_HRS,
7194       EQUIPMENT_RAW_COST,
7195       EQUIPMENT_BRDN_COST,
7196       CAPITALIZABLE_RAW_COST,
7197       CAPITALIZABLE_BRDN_COST,
7198       LABOR_RAW_COST,
7199       LABOR_BRDN_COST,
7200       LABOR_HRS,
7201       LABOR_REVENUE,
7202       EQUIPMENT_HOURS,
7203       BILLABLE_EQUIPMENT_HOURS,
7204       SUP_INV_COMMITTED_COST,
7205       PO_COMMITTED_COST,
7206       PR_COMMITTED_COST,
7207       OTH_COMMITTED_COST,
7208       ACT_LABOR_HRS,
7209       ACT_EQUIP_HRS,
7210       ACT_LABOR_BRDN_COST,
7211       ACT_EQUIP_BRDN_COST,
7212       ACT_BRDN_COST,
7213       ACT_RAW_COST,
7214       ACT_REVENUE,
7215       ACT_LABOR_RAW_COST,
7216       ACT_EQUIP_RAW_COST,
7217       ETC_LABOR_HRS,
7218       ETC_EQUIP_HRS,
7219       ETC_LABOR_BRDN_COST,
7220       ETC_EQUIP_BRDN_COST,
7221       ETC_BRDN_COST,
7222       ETC_RAW_COST,
7223       ETC_LABOR_RAW_COST,
7224       ETC_EQUIP_RAW_COST,
7225       CUSTOM1,
7226       CUSTOM2,
7227       CUSTOM3,
7228       CUSTOM4,
7229       CUSTOM5,
7230       CUSTOM6,
7231       CUSTOM7,
7232       CUSTOM8,
7233       CUSTOM9,
7234       CUSTOM10,
7235       CUSTOM11,
7236       CUSTOM12,
7237       CUSTOM13,
7238       CUSTOM14,
7239       CUSTOM15
7240     )
7241     select
7242       p_worker_id                                     WORKER_ID,
7243       null                                            RECORD_TYPE,
7244       pjp1.PRG_LEVEL,
7245       pjp1.LINE_TYPE,
7246       pjp1.PROJECT_ID,
7247       pjp1.PROJECT_ORG_ID,
7248       pjp1.PROJECT_ORGANIZATION_ID,
7249       pjp1.PROJECT_ELEMENT_ID,
7250       pjp1.TIME_ID,
7251       pjp1.PERIOD_TYPE_ID,
7252       pjp1.CALENDAR_TYPE,
7253       pjp1.RBS_AGGR_LEVEL,
7254       pjp1.WBS_ROLLUP_FLAG,
7255       pjp1.PRG_ROLLUP_FLAG,
7256       pjp1.CURR_RECORD_TYPE_ID,
7257       pjp1.CURRENCY_CODE,
7258       pjp1.RBS_ELEMENT_ID,
7259       pjp1.RBS_VERSION_ID,
7260       pjp1.PLAN_VERSION_ID,
7261       pjp1.PLAN_TYPE_ID,
7262       pjp1.PLAN_TYPE_CODE,
7263       sum(pjp1.RAW_COST)                              RAW_COST,
7264       sum(pjp1.BRDN_COST)                             BRDN_COST,
7265       sum(pjp1.REVENUE)                               REVENUE,
7266       sum(pjp1.BILL_RAW_COST)                         BILL_RAW_COST,
7267       sum(pjp1.BILL_BRDN_COST)                        BILL_BRDN_COST,
7268       sum(pjp1.BILL_LABOR_RAW_COST)                   BILL_LABOR_RAW_COST,
7269       sum(pjp1.BILL_LABOR_BRDN_COST)                  BILL_LABOR_BRDN_COST,
7270       sum(pjp1.BILL_LABOR_HRS)                        BILL_LABOR_HRS,
7271       sum(pjp1.EQUIPMENT_RAW_COST)                    EQUIPMENT_RAW_COST,
7272       sum(pjp1.EQUIPMENT_BRDN_COST)                   EQUIPMENT_BRDN_COST,
7273       sum(pjp1.CAPITALIZABLE_RAW_COST)                CAPITALIZABLE_RAW_COST,
7274       sum(pjp1.CAPITALIZABLE_BRDN_COST)               CAPITALIZABLE_BRDN_COST,
7275       sum(pjp1.LABOR_RAW_COST)                        LABOR_RAW_COST,
7276       sum(pjp1.LABOR_BRDN_COST)                       LABOR_BRDN_COST,
7277       sum(pjp1.LABOR_HRS)                             LABOR_HRS,
7278       sum(pjp1.LABOR_REVENUE)                         LABOR_REVENUE,
7279       sum(pjp1.EQUIPMENT_HOURS)                       EQUIPMENT_HOURS,
7280       sum(pjp1.BILLABLE_EQUIPMENT_HOURS)              BILLABLE_EQUIPMENT_HOURS,
7281       sum(pjp1.SUP_INV_COMMITTED_COST)                SUP_INV_COMMITTED_COST,
7282       sum(pjp1.PO_COMMITTED_COST)                     PO_COMMITTED_COST,
7283       sum(pjp1.PR_COMMITTED_COST)                     PR_COMMITTED_COST,
7284       sum(pjp1.OTH_COMMITTED_COST)                    OTH_COMMITTED_COST,
7285       sum(pjp1.ACT_LABOR_HRS)                         ACT_LABOR_HRS,
7286       sum(pjp1.ACT_EQUIP_HRS)                         ACT_EQUIP_HRS,
7287       sum(pjp1.ACT_LABOR_BRDN_COST)                   ACT_LABOR_BRDN_COST,
7288       sum(pjp1.ACT_EQUIP_BRDN_COST)                   ACT_EQUIP_BRDN_COST,
7289       sum(pjp1.ACT_BRDN_COST)                         ACT_BRDN_COST,
7290       sum(pjp1.ACT_RAW_COST)                          ACT_RAW_COST,
7291       sum(pjp1.ACT_REVENUE)                           ACT_REVENUE,
7292       sum(pjp1.ACT_LABOR_RAW_COST)                    ACT_LABOR_RAW_COST,
7293       sum(pjp1.ACT_EQUIP_RAW_COST)                    ACT_EQUIP_RAW_COST,
7294       sum(pjp1.ETC_LABOR_HRS)                         ETC_LABOR_HRS,
7295       sum(pjp1.ETC_EQUIP_HRS)                         ETC_EQUIP_HRS,
7296       sum(pjp1.ETC_LABOR_BRDN_COST)                   ETC_LABOR_BRDN_COST,
7297       sum(pjp1.ETC_EQUIP_BRDN_COST)                   ETC_EQUIP_BRDN_COST,
7298       sum(pjp1.ETC_BRDN_COST)                         ETC_BRDN_COST,
7299       sum(pjp1.ETC_RAW_COST)                          ETC_RAW_COST,
7300       sum(pjp1.ETC_LABOR_RAW_COST)                    ETC_LABOR_RAW_COST,
7301       sum(pjp1.ETC_EQUIP_RAW_COST)                    ETC_EQUIP_RAW_COST,
7302       sum(pjp1.CUSTOM1)                               CUSTOM1,
7303       sum(pjp1.CUSTOM2)                               CUSTOM2,
7304       sum(pjp1.CUSTOM3)                               CUSTOM3,
7305       sum(pjp1.CUSTOM4)                               CUSTOM4,
7306       sum(pjp1.CUSTOM5)                               CUSTOM5,
7307       sum(pjp1.CUSTOM6)                               CUSTOM6,
7308       sum(pjp1.CUSTOM7)                               CUSTOM7,
7309       sum(pjp1.CUSTOM8)                               CUSTOM8,
7310       sum(pjp1.CUSTOM9)                               CUSTOM9,
7311       sum(pjp1.CUSTOM10)                              CUSTOM10,
7312       sum(pjp1.CUSTOM11)                              CUSTOM11,
7313       sum(pjp1.CUSTOM12)                              CUSTOM12,
7314       sum(pjp1.CUSTOM13)                              CUSTOM13,
7315       sum(pjp1.CUSTOM14)                              CUSTOM14,
7316       sum(pjp1.CUSTOM15)                              CUSTOM15
7317     from
7318       (
7319       select
7320         pjp1.PRG_LEVEL,
7321         pjp1.LINE_TYPE,
7322         pjp1.PROJECT_ID,
7323         pjp1.PROJECT_ORG_ID,
7324         pjp1.PROJECT_ORGANIZATION_ID,
7325         pjp1.PROJECT_ELEMENT_ID,
7326         pjp1.TIME_ID,
7327         pjp1.PERIOD_TYPE_ID,
7328         pjp1.CALENDAR_TYPE,
7329         'T'                                           RBS_AGGR_LEVEL,
7330         pjp1.WBS_ROLLUP_FLAG,
7331         pjp1.PRG_ROLLUP_FLAG,
7332         pjp1.CURR_RECORD_TYPE_ID,
7333         pjp1.CURRENCY_CODE,
7334         pjp1.RBS_ELEMENT_ID,
7335         -1                                            RBS_VERSION_ID,
7336         pjp1.PLAN_VERSION_ID,
7337         pjp1.PLAN_TYPE_ID,
7338         pjp1.PLAN_TYPE_CODE,
7339         max(pjp1.RAW_COST)                            RAW_COST,
7340         max(pjp1.BRDN_COST)                           BRDN_COST,
7341         max(pjp1.REVENUE)                             REVENUE,
7342         max(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
7343         max(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
7344         max(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
7345         max(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
7346         max(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
7347         max(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
7348         max(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
7349         max(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
7350         max(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
7351         max(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
7352         max(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
7353         max(pjp1.LABOR_HRS)                           LABOR_HRS,
7354         max(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
7355         max(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
7356         max(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
7357         max(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
7358         max(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
7359         max(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
7360         max(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
7361         max(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
7362         max(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
7363         max(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
7364         max(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
7365         max(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
7366         max(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
7367         max(pjp1.ACT_REVENUE)                         ACT_REVENUE,
7368         max(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
7369         max(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
7370         max(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
7371         max(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
7372         max(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
7373         max(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
7374         max(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
7375         max(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
7376         max(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
7377         max(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
7378         max(pjp1.CUSTOM1)                             CUSTOM1,
7379         max(pjp1.CUSTOM2)                             CUSTOM2,
7380         max(pjp1.CUSTOM3)                             CUSTOM3,
7381         max(pjp1.CUSTOM4)                             CUSTOM4,
7382         max(pjp1.CUSTOM5)                             CUSTOM5,
7383         max(pjp1.CUSTOM6)                             CUSTOM6,
7384         max(pjp1.CUSTOM7)                             CUSTOM7,
7385         max(pjp1.CUSTOM8)                             CUSTOM8,
7386         max(pjp1.CUSTOM9)                             CUSTOM9,
7387         max(pjp1.CUSTOM10)                            CUSTOM10,
7388         max(pjp1.CUSTOM11)                            CUSTOM11,
7389         max(pjp1.CUSTOM12)                            CUSTOM12,
7390         max(pjp1.CUSTOM13)                            CUSTOM13,
7391         max(pjp1.CUSTOM14)                            CUSTOM14,
7392         max(pjp1.CUSTOM15)                            CUSTOM15
7393       from
7394         (
7395         select
7396           pjp1.PRG_LEVEL,
7397           pjp1.LINE_TYPE,
7398           pjp1.PROJECT_ID,
7399           pjp1.PROJECT_ORG_ID,
7400           pjp1.PROJECT_ORGANIZATION_ID,
7401           pjp1.PROJECT_ELEMENT_ID,
7402           pjp1.TIME_ID,
7403           pjp1.PERIOD_TYPE_ID,
7404           pjp1.CALENDAR_TYPE,
7405           pjp1.WBS_ROLLUP_FLAG,
7406           pjp1.PRG_ROLLUP_FLAG,
7407           pjp1.CURR_RECORD_TYPE_ID,
7408           pjp1.CURRENCY_CODE,
7409           -1                                          RBS_ELEMENT_ID,
7410           pjp1.RBS_VERSION_ID,
7411           pjp1.PLAN_VERSION_ID,
7412           pjp1.PLAN_TYPE_ID,
7413           pjp1.PLAN_TYPE_CODE,
7414           sum(pjp1.RAW_COST)                          RAW_COST,
7415           sum(pjp1.BRDN_COST)                         BRDN_COST,
7416           sum(pjp1.REVENUE)                           REVENUE,
7417           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
7418           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
7419           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
7420           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
7421           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
7422           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
7423           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
7424           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
7425           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
7426           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
7427           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
7428           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
7429           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
7430           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
7431           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
7432           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
7433           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
7434           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
7435           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
7436           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
7437           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
7438           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
7439           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
7440           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
7441           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
7442           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
7443           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
7444           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
7445           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
7446           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
7447           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
7448           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
7449           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
7450           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
7451           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
7452           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
7453           sum(pjp1.CUSTOM1)                           CUSTOM1,
7454           sum(pjp1.CUSTOM2)                           CUSTOM2,
7455           sum(pjp1.CUSTOM3)                           CUSTOM3,
7456           sum(pjp1.CUSTOM4)                           CUSTOM4,
7457           sum(pjp1.CUSTOM5)                           CUSTOM5,
7458           sum(pjp1.CUSTOM6)                           CUSTOM6,
7459           sum(pjp1.CUSTOM7)                           CUSTOM7,
7460           sum(pjp1.CUSTOM8)                           CUSTOM8,
7461           sum(pjp1.CUSTOM9)                           CUSTOM9,
7462           sum(pjp1.CUSTOM10)                          CUSTOM10,
7463           sum(pjp1.CUSTOM11)                          CUSTOM11,
7464           sum(pjp1.CUSTOM12)                          CUSTOM12,
7465           sum(pjp1.CUSTOM13)                          CUSTOM13,
7466           sum(pjp1.CUSTOM14)                          CUSTOM14,
7467           sum(pjp1.CUSTOM15)                          CUSTOM15
7468         from
7469           PJI_FP_AGGR_PJP1 pjp1,
7470           (
7471           select
7472             distinct
7473             to_number(log.EVENT_OBJECT)          RBS_VERSION_ID,
7474             to_number(log.ATTRIBUTE1)            PROJECT_ID
7475           from
7476             PJI_PA_PROJ_EVENTS_LOG log
7477           where
7478             log.WORKER_ID = p_worker_id and
7479             log.EVENT_TYPE = 'RBS_ASSOC'
7480           ) log
7481         where
7482           pjp1.WORKER_ID      = p_worker_id            and
7483           pjp1.PROJECT_ID     = log.PROJECT_ID     (+) and
7484           pjp1.RBS_VERSION_ID = log.RBS_VERSION_ID (+) and
7485           log.PROJECT_ID      is null
7486         group by
7487           pjp1.PRG_LEVEL,
7488           pjp1.LINE_TYPE,
7489           pjp1.PROJECT_ID,
7490           pjp1.PROJECT_ORG_ID,
7491           pjp1.PROJECT_ORGANIZATION_ID,
7492           pjp1.PROJECT_ELEMENT_ID,
7493           pjp1.TIME_ID,
7494           pjp1.PERIOD_TYPE_ID,
7495           pjp1.CALENDAR_TYPE,
7496           pjp1.WBS_ROLLUP_FLAG,
7497           pjp1.PRG_ROLLUP_FLAG,
7498           pjp1.CURR_RECORD_TYPE_ID,
7499           pjp1.CURRENCY_CODE,
7500           pjp1.RBS_VERSION_ID,
7501           pjp1.PLAN_VERSION_ID,
7502           pjp1.PLAN_TYPE_ID,
7503           pjp1.PLAN_TYPE_CODE
7504       ) pjp1
7505       group by
7506         pjp1.PRG_LEVEL,
7507         pjp1.LINE_TYPE,
7508         pjp1.PROJECT_ID,
7509         pjp1.PROJECT_ORG_ID,
7510         pjp1.PROJECT_ORGANIZATION_ID,
7511         pjp1.PROJECT_ELEMENT_ID,
7512         pjp1.TIME_ID,
7513         pjp1.PERIOD_TYPE_ID,
7514         pjp1.CALENDAR_TYPE,
7515         pjp1.WBS_ROLLUP_FLAG,
7516         pjp1.PRG_ROLLUP_FLAG,
7517         pjp1.CURR_RECORD_TYPE_ID,
7518         pjp1.CURRENCY_CODE,
7519         pjp1.RBS_ELEMENT_ID,
7520         pjp1.PLAN_VERSION_ID,
7521         pjp1.PLAN_TYPE_ID,
7522         pjp1.PLAN_TYPE_CODE
7523       ) pjp1
7524     group by
7525       pjp1.PRG_LEVEL,
7526       pjp1.LINE_TYPE,
7527       pjp1.PROJECT_ID,
7528       pjp1.PROJECT_ORG_ID,
7529       pjp1.PROJECT_ORGANIZATION_ID,
7530       pjp1.PROJECT_ELEMENT_ID,
7531       pjp1.TIME_ID,
7532       pjp1.PERIOD_TYPE_ID,
7533       pjp1.CALENDAR_TYPE,
7534       pjp1.RBS_AGGR_LEVEL,
7535       pjp1.WBS_ROLLUP_FLAG,
7536       pjp1.PRG_ROLLUP_FLAG,
7537       pjp1.CURR_RECORD_TYPE_ID,
7538       pjp1.CURRENCY_CODE,
7539       pjp1.RBS_ELEMENT_ID,
7540       pjp1.RBS_VERSION_ID,
7541       pjp1.PLAN_VERSION_ID,
7542       pjp1.PLAN_TYPE_ID,
7543       pjp1.PLAN_TYPE_CODE;
7544 
7545     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_TOP(p_worker_id);');
7546 
7547     commit;
7548 
7549   end ROLLUP_FPR_RBS_TOP;
7550 
7551 
7552   -- -----------------------------------------------------
7553   -- procedure ROLLUP_FPR_WBS
7554   --
7555   --   History
7556   --   19-MAR-2004  SVERMETT  Created
7557   --
7558   -- This API will be called for both online and bulk processing.
7559   --
7560   -- -----------------------------------------------------
7561   procedure ROLLUP_FPR_WBS (p_worker_id in number default null) is
7562 
7563     l_process         varchar2(30);
7564     l_extraction_type varchar2(30);
7565     l_fpm_upgrade     varchar2(30);
7566     l_max_level       number;
7567     l_level           number;
7568     l_step_seq        number;
7569     l_level_seq       number;
7570     l_count           number;
7571     l_partial_mode    varchar2(30);
7572 
7573   begin
7574 
7575     if (p_worker_id is not null) then
7576 
7577       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
7578 
7579       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);')) then
7580         return;
7581       end if;
7582 
7583       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
7584 
7585       l_fpm_upgrade := nvl(PJI_UTILS.GET_PARAMETER('PJI_FPM_UPGRADE'), 'C');
7586 
7587       select decode(l_extraction_type,'PARTIAL','PARTIAL',NULL)
7588       into l_partial_mode
7589       from dual;
7590 
7591       -- allow recovery after each level is processed
7592 
7593       select
7594         STEP_SEQ
7595       into
7596         l_step_seq
7597       from
7598         PJI_SYSTEM_PRC_STATUS
7599       where
7600         PROCESS_NAME = l_process and
7601         STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);';
7602 
7603       select
7604         count(*)
7605       into
7606         l_count
7607       from
7608         PJI_SYSTEM_PRC_STATUS
7609       where
7610         PROCESS_NAME = l_process and
7611         STEP_NAME like 'ROLLUP_FPR_WBS%';
7612 
7613       if (l_count = 0) then
7614 
7615         select /*+ ordered index(den PJI_XBS_DENORM_N3) */
7616           nvl(max(den.SUP_LEVEL), 0)
7617         into
7618           l_level
7619         from
7620           PJI_PJP_PROJ_BATCH_MAP map,
7621           PJI_XBS_DENORM den
7622         where
7623           map.WORKER_ID      = p_worker_id    and
7624           den.STRUCT_TYPE    = 'PRG'          and
7625           den.SUB_LEVEL      = den.SUP_LEVEL  and
7626           den.SUP_PROJECT_ID = map.PROJECT_ID;
7627 
7628         PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
7629                                                'MAX_PROGRAM_LEVEL',
7630                                                l_level);
7631 
7632         for x in 1 .. l_level loop
7633 
7634           insert into PJI_SYSTEM_PRC_STATUS
7635           (
7636             PROCESS_NAME,
7637             STEP_SEQ,
7638             STEP_STATUS,
7639             STEP_NAME,
7640             START_DATE,
7641             END_DATE
7642           )
7643           select
7644             l_process                                             PROCESS_NAME,
7645             to_char(l_step_seq + x / 1000)                        STEP_SEQ,
7646             null                                                  STEP_STATUS,
7647             'ROLLUP_FPR_WBS - level ' || to_char(l_level - x + 1) STEP_NAME,
7648             null                                                  START_DATE,
7649             null                                                  END_DATE
7650           from
7651             DUAL;
7652 
7653         end loop;
7654 
7655       end if;
7656 
7657       l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
7658                      (l_process, 'MAX_PROGRAM_LEVEL');
7659 
7660       select
7661         nvl(to_number(min(STEP_SEQ)), 0)
7662       into
7663         l_level_seq
7664       from
7665         PJI_SYSTEM_PRC_STATUS
7666       where
7667         PROCESS_NAME = l_process and
7668         STEP_NAME like 'ROLLUP_FPR_WBS%' and
7669         STEP_STATUS is null;
7670 
7671       if (l_level_seq = 0) then
7672         l_level := 0;
7673       else
7674         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
7675       end if;
7676 
7677       while (l_level > 0) loop
7678 
7679         update PJI_SYSTEM_PRC_STATUS
7680         set    START_DATE = sysdate
7681         where  PROCESS_NAME = l_process and
7682                STEP_SEQ = l_level_seq;
7683 
7684         -- rollup project hiearchy
7685 
7686         insert into PJI_FP_AGGR_PJP1
7687         (
7688           WORKER_ID,
7689           RECORD_TYPE,
7690           PRG_LEVEL,
7691           LINE_TYPE,
7692           PROJECT_ID,
7693           PROJECT_ORG_ID,
7694           PROJECT_ORGANIZATION_ID,
7695           PROJECT_ELEMENT_ID,
7696           TIME_ID,
7697           PERIOD_TYPE_ID,
7698           CALENDAR_TYPE,
7699           RBS_AGGR_LEVEL,
7700           WBS_ROLLUP_FLAG,
7701           PRG_ROLLUP_FLAG,
7702           CURR_RECORD_TYPE_ID,
7703           CURRENCY_CODE,
7704           RBS_ELEMENT_ID,
7705           RBS_VERSION_ID,
7706           PLAN_VERSION_ID,
7707           PLAN_TYPE_ID,
7708           PLAN_TYPE_CODE,
7709           RAW_COST,
7710           BRDN_COST,
7711           REVENUE,
7712           BILL_RAW_COST,
7713           BILL_BRDN_COST,
7714           BILL_LABOR_RAW_COST,
7715           BILL_LABOR_BRDN_COST,
7716           BILL_LABOR_HRS,
7717           EQUIPMENT_RAW_COST,
7718           EQUIPMENT_BRDN_COST,
7719           CAPITALIZABLE_RAW_COST,
7720           CAPITALIZABLE_BRDN_COST,
7721           LABOR_RAW_COST,
7722           LABOR_BRDN_COST,
7723           LABOR_HRS,
7724           LABOR_REVENUE,
7725           EQUIPMENT_HOURS,
7726           BILLABLE_EQUIPMENT_HOURS,
7727           SUP_INV_COMMITTED_COST,
7728           PO_COMMITTED_COST,
7729           PR_COMMITTED_COST,
7730           OTH_COMMITTED_COST,
7731           ACT_LABOR_HRS,
7732           ACT_EQUIP_HRS,
7733           ACT_LABOR_BRDN_COST,
7734           ACT_EQUIP_BRDN_COST,
7735           ACT_BRDN_COST,
7736           ACT_RAW_COST,
7737           ACT_REVENUE,
7738           ACT_LABOR_RAW_COST,
7739           ACT_EQUIP_RAW_COST,
7740           ETC_LABOR_HRS,
7741           ETC_EQUIP_HRS,
7742           ETC_LABOR_BRDN_COST,
7743           ETC_EQUIP_BRDN_COST,
7744           ETC_BRDN_COST,
7745           ETC_RAW_COST,
7746           ETC_LABOR_RAW_COST,
7747           ETC_EQUIP_RAW_COST,
7748           CUSTOM1,
7749           CUSTOM2,
7750           CUSTOM3,
7751           CUSTOM4,
7752           CUSTOM5,
7753           CUSTOM6,
7754           CUSTOM7,
7755           CUSTOM8,
7756           CUSTOM9,
7757           CUSTOM10,
7758           CUSTOM11,
7759           CUSTOM12,
7760           CUSTOM13,
7761           CUSTOM14,
7762           CUSTOM15
7763         )
7764         select
7765           pjp1_i.WORKER_ID,
7766           pjp1_i.RECORD_TYPE,
7767           pjp1_i.PRG_LEVEL,
7768           pjp1_i.LINE_TYPE,
7769           pjp1_i.PROJECT_ID,
7770           pjp1_i.PROJECT_ORG_ID,
7771           pjp1_i.PROJECT_ORGANIZATION_ID,
7772           pjp1_i.PROJECT_ELEMENT_ID,
7773           pjp1_i.TIME_ID,
7774           pjp1_i.PERIOD_TYPE_ID,
7775           pjp1_i.CALENDAR_TYPE,
7776           pjp1_i.RBS_AGGR_LEVEL,
7777           pjp1_i.WBS_ROLLUP_FLAG,
7778           pjp1_i.PRG_ROLLUP_FLAG,
7779           pjp1_i.CURR_RECORD_TYPE_ID,
7780           pjp1_i.CURRENCY_CODE,
7781           pjp1_i.RBS_ELEMENT_ID,
7782           pjp1_i.RBS_VERSION_ID,
7783           pjp1_i.PLAN_VERSION_ID,
7784           pjp1_i.PLAN_TYPE_ID,
7785           pjp1_i.PLAN_TYPE_CODE,
7786           decode(pjp1_i.RELATIONSHIP_TYPE
7787                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7788                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7789                    || '_' || pjp1_i.SUB_STATUS_CODE
7790                    || '_' || pjp1_i.SUP_STATUS_CODE,
7791                  'LW_N_Y__', to_number(null),
7792                  decode(pjp1_i.RELATIONSHIP_TYPE
7793                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7794                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7795                           || '_' || pjp1_i.SUP_VER_ENABLED
7796                           || '_' || l_fpm_upgrade
7797                           || '_' || l_partial_mode,
7798                         'LW_N_Y_Y_C_', to_number(null),
7799                  pjp1_i.RAW_COST))                    RAW_COST,
7800           decode(pjp1_i.RELATIONSHIP_TYPE
7801                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7802                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7803                    || '_' || pjp1_i.SUB_STATUS_CODE
7804                    || '_' || pjp1_i.SUP_STATUS_CODE,
7805                  'LW_N_Y__', to_number(null),
7806                  decode(pjp1_i.RELATIONSHIP_TYPE
7807                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7808                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7809                           || '_' || pjp1_i.SUP_VER_ENABLED
7810                           || '_' || l_fpm_upgrade
7811                           || '_' || l_partial_mode,
7812                         'LW_N_Y_Y_C_', to_number(null),
7813                  pjp1_i.BRDN_COST))                   BRDN_COST,
7814           decode(pjp1_i.RELATIONSHIP_TYPE
7815                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7816                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7817                    || '_' || pjp1_i.SUB_STATUS_CODE
7818                    || '_' || pjp1_i.SUP_STATUS_CODE,
7819                  'LW_N_Y__', to_number(null),
7820                  decode(pjp1_i.RELATIONSHIP_TYPE
7821                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7822                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7823                           || '_' || pjp1_i.SUP_VER_ENABLED
7824                           || '_' || l_fpm_upgrade
7825                           || '_' || l_partial_mode,
7826                         'LW_N_Y_Y_C_', to_number(null),
7827                  pjp1_i.REVENUE))                     REVENUE,
7828           decode(pjp1_i.RELATIONSHIP_TYPE
7829                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7830                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7831                    || '_' || pjp1_i.SUB_STATUS_CODE
7832                    || '_' || pjp1_i.SUP_STATUS_CODE,
7833                  'LW_N_Y__', to_number(null),
7834                  decode(pjp1_i.RELATIONSHIP_TYPE
7835                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7836                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7837                           || '_' || pjp1_i.SUP_VER_ENABLED
7838                           || '_' || l_fpm_upgrade
7839                           || '_' || l_partial_mode,
7840                         'LW_N_Y_Y_C_', to_number(null),
7841                  pjp1_i.BILL_RAW_COST))               BILL_RAW_COST,
7842           decode(pjp1_i.RELATIONSHIP_TYPE
7843                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7844                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7845                    || '_' || pjp1_i.SUB_STATUS_CODE
7846                    || '_' || pjp1_i.SUP_STATUS_CODE,
7847                  'LW_N_Y__', to_number(null),
7848                  decode(pjp1_i.RELATIONSHIP_TYPE
7849                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7850                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7851                           || '_' || pjp1_i.SUP_VER_ENABLED
7852                           || '_' || l_fpm_upgrade
7853                           || '_' || l_partial_mode,
7854                         'LW_N_Y_Y_C_', to_number(null),
7855                  pjp1_i.BILL_BRDN_COST))              BILL_BRDN_COST,
7856           decode(pjp1_i.RELATIONSHIP_TYPE
7857                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7858                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7859                    || '_' || pjp1_i.SUB_STATUS_CODE
7860                    || '_' || pjp1_i.SUP_STATUS_CODE,
7861                  'LW_N_Y__', to_number(null),
7862                  decode(pjp1_i.RELATIONSHIP_TYPE
7863                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7864                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7865                           || '_' || pjp1_i.SUP_VER_ENABLED
7866                           || '_' || l_fpm_upgrade
7867                           || '_' || l_partial_mode,
7868                         'LW_N_Y_Y_C_', to_number(null),
7869                  pjp1_i.BILL_LABOR_RAW_COST))         BILL_LABOR_RAW_COST,
7870           decode(pjp1_i.RELATIONSHIP_TYPE
7871                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7872                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7873                    || '_' || pjp1_i.SUB_STATUS_CODE
7874                    || '_' || pjp1_i.SUP_STATUS_CODE,
7875                  'LW_N_Y__', to_number(null),
7876                  decode(pjp1_i.RELATIONSHIP_TYPE
7877                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7878                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7879                           || '_' || pjp1_i.SUP_VER_ENABLED
7880                           || '_' || l_fpm_upgrade
7881                           || '_' || l_partial_mode,
7882                         'LW_N_Y_Y_C_', to_number(null),
7883                  pjp1_i.BILL_LABOR_BRDN_COST))        BILL_LABOR_BRDN_COST,
7884           decode(pjp1_i.RELATIONSHIP_TYPE
7885                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7886                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7887                    || '_' || pjp1_i.SUB_STATUS_CODE
7888                    || '_' || pjp1_i.SUP_STATUS_CODE,
7889                  'LW_N_Y__', to_number(null),
7890                  decode(pjp1_i.RELATIONSHIP_TYPE
7891                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7892                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7893                           || '_' || pjp1_i.SUP_VER_ENABLED
7894                           || '_' || l_fpm_upgrade
7895                           || '_' || l_partial_mode,
7896                         'LW_N_Y_Y_C_', to_number(null),
7897                  pjp1_i.BILL_LABOR_HRS))              BILL_LABOR_HRS,
7898           decode(pjp1_i.RELATIONSHIP_TYPE
7899                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7900                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7901                    || '_' || pjp1_i.SUB_STATUS_CODE
7902                    || '_' || pjp1_i.SUP_STATUS_CODE,
7903                  'LW_N_Y__', to_number(null),
7904                  decode(pjp1_i.RELATIONSHIP_TYPE
7905                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7906                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7907                           || '_' || pjp1_i.SUP_VER_ENABLED
7908                           || '_' || l_fpm_upgrade
7909                           || '_' || l_partial_mode,
7910                         'LW_N_Y_Y_C_', to_number(null),
7911                  pjp1_i.EQUIPMENT_RAW_COST))          EQUIPMENT_RAW_COST,
7912           decode(pjp1_i.RELATIONSHIP_TYPE
7913                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7914                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7915                    || '_' || pjp1_i.SUB_STATUS_CODE
7916                    || '_' || pjp1_i.SUP_STATUS_CODE,
7917                  'LW_N_Y__', to_number(null),
7918                  decode(pjp1_i.RELATIONSHIP_TYPE
7919                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7920                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7921                           || '_' || pjp1_i.SUP_VER_ENABLED
7922                           || '_' || l_fpm_upgrade
7923                           || '_' || l_partial_mode,
7924                         'LW_N_Y_Y_C_', to_number(null),
7925                  pjp1_i.EQUIPMENT_BRDN_COST))         EQUIPMENT_BRDN_COST,
7926           decode(pjp1_i.RELATIONSHIP_TYPE
7927                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7928                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7929                    || '_' || pjp1_i.SUB_STATUS_CODE
7930                    || '_' || pjp1_i.SUP_STATUS_CODE,
7931                  'LW_N_Y__', to_number(null),
7932                  decode(pjp1_i.RELATIONSHIP_TYPE
7933                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7934                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7935                           || '_' || pjp1_i.SUP_VER_ENABLED
7936                           || '_' || l_fpm_upgrade
7937                           || '_' || l_partial_mode,
7938                         'LW_N_Y_Y_C_', to_number(null),
7939                  pjp1_i.CAPITALIZABLE_RAW_COST))      CAPITALIZABLE_RAW_COST,
7940           decode(pjp1_i.RELATIONSHIP_TYPE
7941                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7942                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7943                    || '_' || pjp1_i.SUB_STATUS_CODE
7944                    || '_' || pjp1_i.SUP_STATUS_CODE,
7945                  'LW_N_Y__', to_number(null),
7946                  decode(pjp1_i.RELATIONSHIP_TYPE
7947                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7948                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7949                           || '_' || pjp1_i.SUP_VER_ENABLED
7950                           || '_' || l_fpm_upgrade
7951                           || '_' || l_partial_mode,
7952                         'LW_N_Y_Y_C_', to_number(null),
7953                  pjp1_i.CAPITALIZABLE_BRDN_COST))     CAPITALIZABLE_BRDN_COST,
7954           decode(pjp1_i.RELATIONSHIP_TYPE
7955                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7956                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7957                    || '_' || pjp1_i.SUB_STATUS_CODE
7958                    || '_' || pjp1_i.SUP_STATUS_CODE,
7959                  'LW_N_Y__', to_number(null),
7960                  decode(pjp1_i.RELATIONSHIP_TYPE
7961                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7962                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7963                           || '_' || pjp1_i.SUP_VER_ENABLED
7964                           || '_' || l_fpm_upgrade
7965                           || '_' || l_partial_mode,
7966                         'LW_N_Y_Y_C_', to_number(null),
7967                  pjp1_i.LABOR_RAW_COST))              LABOR_RAW_COST,
7968           decode(pjp1_i.RELATIONSHIP_TYPE
7969                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7970                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7971                    || '_' || pjp1_i.SUB_STATUS_CODE
7972                    || '_' || pjp1_i.SUP_STATUS_CODE,
7973                  'LW_N_Y__', to_number(null),
7974                  decode(pjp1_i.RELATIONSHIP_TYPE
7975                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7976                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7977                           || '_' || pjp1_i.SUP_VER_ENABLED
7978                           || '_' || l_fpm_upgrade
7979                           || '_' || l_partial_mode,
7980                         'LW_N_Y_Y_C_', to_number(null),
7981                  pjp1_i.LABOR_BRDN_COST))             LABOR_BRDN_COST,
7982           decode(pjp1_i.RELATIONSHIP_TYPE
7983                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7984                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7985                    || '_' || pjp1_i.SUB_STATUS_CODE
7986                    || '_' || pjp1_i.SUP_STATUS_CODE,
7987                  'LW_N_Y__', to_number(null),
7988                  decode(pjp1_i.RELATIONSHIP_TYPE
7989                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
7990                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
7991                           || '_' || pjp1_i.SUP_VER_ENABLED
7992                           || '_' || l_fpm_upgrade
7993                           || '_' || l_partial_mode,
7994                         'LW_N_Y_Y_C_', to_number(null),
7995                  pjp1_i.LABOR_HRS))                   LABOR_HRS,
7996           decode(pjp1_i.RELATIONSHIP_TYPE
7997                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
7998                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
7999                    || '_' || pjp1_i.SUB_STATUS_CODE
8000                    || '_' || pjp1_i.SUP_STATUS_CODE,
8001                  'LW_N_Y__', to_number(null),
8002                  decode(pjp1_i.RELATIONSHIP_TYPE
8003                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8004                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8005                           || '_' || pjp1_i.SUP_VER_ENABLED
8006                           || '_' || l_fpm_upgrade
8007                           || '_' || l_partial_mode,
8008                         'LW_N_Y_Y_C_', to_number(null),
8009                  pjp1_i.LABOR_REVENUE))               LABOR_REVENUE,
8010           decode(pjp1_i.RELATIONSHIP_TYPE
8011                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8012                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8013                    || '_' || pjp1_i.SUB_STATUS_CODE
8014                    || '_' || pjp1_i.SUP_STATUS_CODE,
8015                  'LW_N_Y__', to_number(null),
8016                  decode(pjp1_i.RELATIONSHIP_TYPE
8017                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8018                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8019                           || '_' || pjp1_i.SUP_VER_ENABLED
8020                           || '_' || l_fpm_upgrade
8021                           || '_' || l_partial_mode,
8022                         'LW_N_Y_Y_C_', to_number(null),
8023                  pjp1_i.EQUIPMENT_HOURS))             EQUIPMENT_HOURS,
8024           decode(pjp1_i.RELATIONSHIP_TYPE
8025                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8026                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8027                    || '_' || pjp1_i.SUB_STATUS_CODE
8028                    || '_' || pjp1_i.SUP_STATUS_CODE,
8029                  'LW_N_Y__', to_number(null),
8030                  decode(pjp1_i.RELATIONSHIP_TYPE
8031                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8032                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8033                           || '_' || pjp1_i.SUP_VER_ENABLED
8034                           || '_' || l_fpm_upgrade
8035                           || '_' || l_partial_mode,
8036                         'LW_N_Y_Y_C_', to_number(null),
8037                  pjp1_i.BILLABLE_EQUIPMENT_HOURS))    BILLABLE_EQUIPMENT_HOURS,
8038           decode(pjp1_i.RELATIONSHIP_TYPE
8039                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8040                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8041                    || '_' || pjp1_i.SUB_STATUS_CODE
8042                    || '_' || pjp1_i.SUP_STATUS_CODE,
8043                  'LW_N_Y__', to_number(null),
8044                  decode(pjp1_i.RELATIONSHIP_TYPE
8045                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8046                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8047                           || '_' || pjp1_i.SUP_VER_ENABLED
8048                           || '_' || l_fpm_upgrade
8049                           || '_' || l_partial_mode,
8050                         'LW_N_Y_Y_C_', to_number(null),
8051                  pjp1_i.SUP_INV_COMMITTED_COST))      SUP_INV_COMMITTED_COST,
8052           decode(pjp1_i.RELATIONSHIP_TYPE
8053                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8054                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8055                    || '_' || pjp1_i.SUB_STATUS_CODE
8056                    || '_' || pjp1_i.SUP_STATUS_CODE,
8057                  'LW_N_Y__', to_number(null),
8058                  decode(pjp1_i.RELATIONSHIP_TYPE
8059                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8060                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8061                           || '_' || pjp1_i.SUP_VER_ENABLED
8062                           || '_' || l_fpm_upgrade
8063                           || '_' || l_partial_mode,
8064                         'LW_N_Y_Y_C_', to_number(null),
8065                  pjp1_i.PO_COMMITTED_COST))           PO_COMMITTED_COST,
8066           decode(pjp1_i.RELATIONSHIP_TYPE
8067                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8068                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8069                    || '_' || pjp1_i.SUB_STATUS_CODE
8070                    || '_' || pjp1_i.SUP_STATUS_CODE,
8071                  'LW_N_Y__', to_number(null),
8072                  decode(pjp1_i.RELATIONSHIP_TYPE
8073                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8074                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8075                           || '_' || pjp1_i.SUP_VER_ENABLED
8076                           || '_' || l_fpm_upgrade
8077                           || '_' || l_partial_mode,
8078                         'LW_N_Y_Y_C_', to_number(null),
8079                  pjp1_i.PR_COMMITTED_COST))           PR_COMMITTED_COST,
8080           decode(pjp1_i.RELATIONSHIP_TYPE
8081                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8082                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8083                    || '_' || pjp1_i.SUB_STATUS_CODE
8084                    || '_' || pjp1_i.SUP_STATUS_CODE,
8085                  'LW_N_Y__', to_number(null),
8086                  decode(pjp1_i.RELATIONSHIP_TYPE
8087                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
8088                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
8089                           || '_' || pjp1_i.SUP_VER_ENABLED
8090                           || '_' || l_fpm_upgrade
8091                           || '_' || l_partial_mode,
8092                         'LW_N_Y_Y_C_', to_number(null),
8093                  pjp1_i.OTH_COMMITTED_COST))          OTH_COMMITTED_COST,
8094           decode(pjp1_i.RELATIONSHIP_TYPE
8095                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8096                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8097                    || '_' || pjp1_i.SUP_STATUS_CODE
8098                    || '_' || l_partial_mode,
8099                  'LW_N_Y__', to_number(null),
8100                           pjp1_i.ACT_LABOR_HRS)       ACT_LABOR_HRS,
8101           decode(pjp1_i.RELATIONSHIP_TYPE
8102                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8103                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8104                    || '_' || pjp1_i.SUP_STATUS_CODE
8105                    || '_' || l_partial_mode,
8106                  'LW_N_Y__', to_number(null),
8107                           pjp1_i.ACT_EQUIP_HRS)       ACT_EQUIP_HRS,
8108           decode(pjp1_i.RELATIONSHIP_TYPE
8109                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8110                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8111                    || '_' || pjp1_i.SUP_STATUS_CODE
8112                    || '_' || l_partial_mode,
8113                  'LW_N_Y__', to_number(null),
8114                           pjp1_i.ACT_LABOR_BRDN_COST) ACT_LABOR_BRDN_COST,
8115           decode(pjp1_i.RELATIONSHIP_TYPE
8116                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8117                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8118                    || '_' || pjp1_i.SUP_STATUS_CODE
8119                    || '_' || l_partial_mode,
8120                  'LW_N_Y__', to_number(null),
8121                           pjp1_i.ACT_EQUIP_BRDN_COST) ACT_EQUIP_BRDN_COST,
8122           decode(pjp1_i.RELATIONSHIP_TYPE
8123                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8124                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8125                    || '_' || pjp1_i.SUP_STATUS_CODE
8126                    || '_' || l_partial_mode,
8127                  'LW_N_Y__', to_number(null),
8128                           pjp1_i.ACT_BRDN_COST)       ACT_BRDN_COST,
8129           decode(pjp1_i.RELATIONSHIP_TYPE
8130                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8131                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8132                    || '_' || pjp1_i.SUP_STATUS_CODE
8133                    || '_' || l_partial_mode,
8134                  'LW_N_Y__', to_number(null),
8135                           pjp1_i.ACT_RAW_COST)        ACT_RAW_COST,
8136           decode(pjp1_i.RELATIONSHIP_TYPE
8137                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8138                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8139                    || '_' || pjp1_i.SUP_STATUS_CODE
8140                    || '_' || l_partial_mode,
8141                  'LW_N_Y__', to_number(null),
8142                           pjp1_i.ACT_REVENUE)         ACT_REVENUE,
8143           decode(pjp1_i.RELATIONSHIP_TYPE
8144                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8145                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8146                    || '_' || pjp1_i.SUP_STATUS_CODE
8147                    || '_' || l_partial_mode,
8148                  'LW_N_Y__', to_number(null),
8149                           pjp1_i.ACT_LABOR_RAW_COST)  ACT_LABOR_RAW_COST,
8150           decode(pjp1_i.RELATIONSHIP_TYPE
8151                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8152                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8153                    || '_' || pjp1_i.SUP_STATUS_CODE
8154                    || '_' || l_partial_mode,
8155                  'LW_N_Y__', to_number(null),
8156                           pjp1_i.ACT_EQUIP_RAW_COST)  ACT_EQUIP_RAW_COST,
8157           decode(pjp1_i.RELATIONSHIP_TYPE
8158                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8159                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8160                    || '_' || pjp1_i.SUP_STATUS_CODE
8161                    || '_' || l_partial_mode,
8162                  'LW_N_Y__', to_number(null),
8163                           pjp1_i.ETC_LABOR_HRS)       ETC_LABOR_HRS,
8164           decode(pjp1_i.RELATIONSHIP_TYPE
8165                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8166                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8167                    || '_' || pjp1_i.SUP_STATUS_CODE
8168                    || '_' || l_partial_mode,
8169                  'LW_N_Y__', to_number(null),
8170                           pjp1_i.ETC_EQUIP_HRS)       ETC_EQUIP_HRS,
8171           decode(pjp1_i.RELATIONSHIP_TYPE
8172                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8173                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8174                    || '_' || pjp1_i.SUP_STATUS_CODE
8175                    || '_' || l_partial_mode,
8176                  'LW_N_Y__', to_number(null),
8177                           pjp1_i.ETC_LABOR_BRDN_COST) ETC_LABOR_BRDN_COST,
8178           decode(pjp1_i.RELATIONSHIP_TYPE
8179                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8180                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8181                    || '_' || pjp1_i.SUP_STATUS_CODE
8182                    || '_' || l_partial_mode,
8183                  'LW_N_Y__', to_number(null),
8184                           pjp1_i.ETC_EQUIP_BRDN_COST) ETC_EQUIP_BRDN_COST,
8185           decode(pjp1_i.RELATIONSHIP_TYPE
8186                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8187                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8188                    || '_' || pjp1_i.SUP_STATUS_CODE
8189                    || '_' || l_partial_mode,
8190                  'LW_N_Y__', to_number(null),
8191                           pjp1_i.ETC_BRDN_COST)       ETC_BRDN_COST,
8192           decode(pjp1_i.RELATIONSHIP_TYPE
8193                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8194                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8195                    || '_' || pjp1_i.SUP_STATUS_CODE
8196                    || '_' || l_partial_mode,
8197                  'LW_N_Y__', to_number(null),
8198                           pjp1_i.ETC_RAW_COST)        ETC_RAW_COST,
8199           decode(pjp1_i.RELATIONSHIP_TYPE
8200                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8201                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8202                    || '_' || pjp1_i.SUP_STATUS_CODE
8203                    || '_' || l_partial_mode,
8204                  'LW_N_Y__', to_number(null),
8205                           pjp1_i.ETC_LABOR_RAW_COST)  ETC_LABOR_RAW_COST,
8206           decode(pjp1_i.RELATIONSHIP_TYPE
8207                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
8208                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
8209                    || '_' || pjp1_i.SUP_STATUS_CODE
8210                    || '_' || l_partial_mode,
8211                  'LW_N_Y__', to_number(null),
8212                           pjp1_i.ETC_EQUIP_RAW_COST)  ETC_EQUIP_RAW_COST,
8213           pjp1_i.CUSTOM1,
8214           pjp1_i.CUSTOM2,
8215           pjp1_i.CUSTOM3,
8216           pjp1_i.CUSTOM4,
8217           pjp1_i.CUSTOM5,
8218           pjp1_i.CUSTOM6,
8219           pjp1_i.CUSTOM7,
8220           pjp1_i.CUSTOM8,
8221           pjp1_i.CUSTOM9,
8222           pjp1_i.CUSTOM10,
8223           pjp1_i.CUSTOM11,
8224           pjp1_i.CUSTOM12,
8225           pjp1_i.CUSTOM13,
8226           pjp1_i.CUSTOM14,
8227           pjp1_i.CUSTOM15
8228         from
8229           (
8230         select
8231           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8232                  pjp.INSERT_FLAG, 'Y')                INSERT_FLAG,
8233           pjp.RELATIONSHIP_TYPE,
8234           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8235                  null, sub_ver.STATUS_CODE)           SUB_STATUS_CODE,
8236           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8237                  null, sup_ver.STATUS_CODE)           SUP_STATUS_CODE,
8238           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8239                  null, sup_wpa.WP_ENABLE_VERSION_FLAG)SUP_VER_ENABLED,
8240           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8241                  null, decode(pjp.PLAN_VERSION_ID,
8242                               -1, prg.SUP_ID,
8243                               -3, prg.SUP_ID,
8244                               -4, prg.SUP_ID,
8245                                   null))              SUP_ID,
8246           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8247                  null, decode(pjp.PLAN_VERSION_ID,
8248                               -1, prg.SUP_EMT_ID,
8249                               -3, prg.SUP_EMT_ID,
8250                               -4, prg.SUP_EMT_ID,
8251                                   null))              SUP_EMT_ID,
8252           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8253                  null, decode(pjp.PLAN_VERSION_ID,
8254                               -1, prg.WP_FLAG,
8255                               -3, prg.WP_FLAG,
8256                               -4, prg.WP_FLAG,
8257                                   null))              SUP_WP_FLAG,
8258           p_worker_id                                 WORKER_ID,
8259           'W'                                         RECORD_TYPE,
8260           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8261                  l_level, prg.SUP_LEVEL)              PRG_LEVEL,
8262           pjp.LINE_TYPE,
8263           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8264                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID)  PROJECT_ID,
8265           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8266                  pjp.PROJECT_ORG_ID,
8267                  prg.SUP_PROJECT_ORG_ID)              PROJECT_ORG_ID,
8268           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8269                  pjp.PROJECT_ORGANIZATION_ID,
8270                  prg.SUP_PROJECT_ORGANIZATION_ID)     PROJECT_ORGANIZATION_ID,
8271           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8272                  pjp.PROJECT_ELEMENT_ID,
8273                  prg.SUB_ROLLUP_ID)                   PROJECT_ELEMENT_ID,
8274           pjp.TIME_ID,
8275           pjp.PERIOD_TYPE_ID,
8276           pjp.CALENDAR_TYPE,
8277           pjp.RBS_AGGR_LEVEL,
8278           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8279                  pjp.WBS_ROLLUP_FLAG, 'N')            WBS_ROLLUP_FLAG,
8280           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8281                  pjp.PRG_ROLLUP_FLAG, 'Y')            PRG_ROLLUP_FLAG,
8282           pjp.CURR_RECORD_TYPE_ID,
8283           pjp.CURRENCY_CODE,
8284           pjp.RBS_ELEMENT_ID,
8285           pjp.RBS_VERSION_ID,
8286           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8287                  pjp.PLAN_VERSION_ID,
8288                  decode(pjp.PLAN_VERSION_ID,
8289                         -1, pjp.PLAN_VERSION_ID,
8290                         -2, pjp.PLAN_VERSION_ID,
8291                         -3, pjp.PLAN_VERSION_ID,
8292                         -4, pjp.PLAN_VERSION_ID,
8293                             wbs_hdr.PLAN_VERSION_ID)) PLAN_VERSION_ID,
8294           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8295                  pjp.PLAN_TYPE_ID,
8296                  decode(pjp.PLAN_VERSION_ID,
8297                         -1, pjp.PLAN_TYPE_ID,
8298                         -2, pjp.PLAN_TYPE_ID,
8299                         -3, pjp.PLAN_TYPE_ID,
8300                         -4, pjp.PLAN_TYPE_ID,
8301                             wbs_hdr.PLAN_TYPE_ID))    PLAN_TYPE_ID,
8302           pjp.PLAN_TYPE_CODE,
8303           sum(pjp.RAW_COST)                           RAW_COST,
8304           sum(pjp.BRDN_COST)                          BRDN_COST,
8305           sum(pjp.REVENUE)                            REVENUE,
8306           sum(pjp.BILL_RAW_COST)                      BILL_RAW_COST,
8307           sum(pjp.BILL_BRDN_COST)                     BILL_BRDN_COST,
8308           sum(pjp.BILL_LABOR_RAW_COST)                BILL_LABOR_RAW_COST,
8309           sum(pjp.BILL_LABOR_BRDN_COST)               BILL_LABOR_BRDN_COST,
8310           sum(pjp.BILL_LABOR_HRS)                     BILL_LABOR_HRS,
8311           sum(pjp.EQUIPMENT_RAW_COST)                 EQUIPMENT_RAW_COST,
8312           sum(pjp.EQUIPMENT_BRDN_COST)                EQUIPMENT_BRDN_COST,
8313           sum(pjp.CAPITALIZABLE_RAW_COST)             CAPITALIZABLE_RAW_COST,
8314           sum(pjp.CAPITALIZABLE_BRDN_COST)            CAPITALIZABLE_BRDN_COST,
8315           sum(pjp.LABOR_RAW_COST)                     LABOR_RAW_COST,
8316           sum(pjp.LABOR_BRDN_COST)                    LABOR_BRDN_COST,
8317           sum(pjp.LABOR_HRS)                          LABOR_HRS,
8318           sum(pjp.LABOR_REVENUE)                      LABOR_REVENUE,
8319           sum(pjp.EQUIPMENT_HOURS)                    EQUIPMENT_HOURS,
8320           sum(pjp.BILLABLE_EQUIPMENT_HOURS)           BILLABLE_EQUIPMENT_HOURS,
8321           sum(pjp.SUP_INV_COMMITTED_COST)             SUP_INV_COMMITTED_COST,
8322           sum(pjp.PO_COMMITTED_COST)                  PO_COMMITTED_COST,
8323           sum(pjp.PR_COMMITTED_COST)                  PR_COMMITTED_COST,
8324           sum(pjp.OTH_COMMITTED_COST)                 OTH_COMMITTED_COST,
8325           sum(pjp.ACT_LABOR_HRS)                      ACT_LABOR_HRS,
8326           sum(pjp.ACT_EQUIP_HRS)                      ACT_EQUIP_HRS,
8327           sum(pjp.ACT_LABOR_BRDN_COST)                ACT_LABOR_BRDN_COST,
8328           sum(pjp.ACT_EQUIP_BRDN_COST)                ACT_EQUIP_BRDN_COST,
8329           sum(pjp.ACT_BRDN_COST)                      ACT_BRDN_COST,
8330           sum(pjp.ACT_RAW_COST)                       ACT_RAW_COST,
8331           sum(pjp.ACT_REVENUE)                        ACT_REVENUE,
8332           sum(pjp.ACT_LABOR_RAW_COST)                 ACT_LABOR_RAW_COST,
8333           sum(pjp.ACT_EQUIP_RAW_COST)                 ACT_EQUIP_RAW_COST,
8334           sum(pjp.ETC_LABOR_HRS)                      ETC_LABOR_HRS,
8335           sum(pjp.ETC_EQUIP_HRS)                      ETC_EQUIP_HRS,
8336           sum(pjp.ETC_LABOR_BRDN_COST)                ETC_LABOR_BRDN_COST,
8337           sum(pjp.ETC_EQUIP_BRDN_COST)                ETC_EQUIP_BRDN_COST,
8338           sum(pjp.ETC_BRDN_COST)                      ETC_BRDN_COST,
8339           sum(pjp.ETC_RAW_COST)                       ETC_RAW_COST,
8340           sum(pjp.ETC_LABOR_RAW_COST)                 ETC_LABOR_RAW_COST,
8341           sum(pjp.ETC_EQUIP_RAW_COST)                 ETC_EQUIP_RAW_COST,
8342           sum(pjp.CUSTOM1)                            CUSTOM1,
8343           sum(pjp.CUSTOM2)                            CUSTOM2,
8344           sum(pjp.CUSTOM3)                            CUSTOM3,
8345           sum(pjp.CUSTOM4)                            CUSTOM4,
8346           sum(pjp.CUSTOM5)                            CUSTOM5,
8347           sum(pjp.CUSTOM6)                            CUSTOM6,
8348           sum(pjp.CUSTOM7)                            CUSTOM7,
8349           sum(pjp.CUSTOM8)                            CUSTOM8,
8350           sum(pjp.CUSTOM9)                            CUSTOM9,
8351           sum(pjp.CUSTOM10)                           CUSTOM10,
8352           sum(pjp.CUSTOM11)                           CUSTOM11,
8353           sum(pjp.CUSTOM12)                           CUSTOM12,
8354           sum(pjp.CUSTOM13)                           CUSTOM13,
8355           sum(pjp.CUSTOM14)                           CUSTOM14,
8356           sum(pjp.CUSTOM15)                           CUSTOM15
8357         from
8358           (
8359           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
8360                  -- get incremental task level amounts from source and
8361                  -- program rollup amounts from interim
8362             to_char(null)                             LINE_TYPE,
8363             wbs_hdr.WBS_VERSION_ID,
8364             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
8365             decode(wbs_hdr.WP_FLAG
8366                      || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
8367                      || '_' || nvl(fin_plan.INVERT_ID, 'PRJ'),
8368                    'N_1_PRJ', 'N',
8369                    'N_-1_PRG', 'N',
8370                    decode(top_slice.INVERT_ID,
8371                           'PRJ', 'Y',
8372                           decode(wbs.SUB_LEVEL,
8373                                  1, 'Y', 'N')))       PUSHUP_FLAG,
8374             decode(pjp1.RBS_AGGR_LEVEL,
8375                    'L', 'N',
8376                         decode(wbs_hdr.WP_FLAG
8377                                  || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
8378                                  || '_' || fin_plan.INVERT_ID,
8379                                'N_1_PRG', decode(top_slice.INVERT_ID,
8380                                                  'PRJ', 'Y',
8381                                                  decode(wbs.SUB_LEVEL,
8382                                                         1, 'Y', 'N')),
8383                                'N_-1_PRG', 'N',
8384                                decode(wbs_hdr.WP_FLAG
8385                                         || '_' || fin_plan.INVERT_ID
8386                                         || '_' || fin_plan.CB
8387                                         || '_' || fin_plan.CO
8388                                         || '_'
8389                                         || to_char(fin_plan.PLAN_VERSION_ID),
8390                                       'N_PRJ_Y_Y_-4', 'N',
8391                                                       'Y'))
8392                   )                                   INSERT_FLAG,
8393             pjp1.PROJECT_ID,
8394             pjp1.PROJECT_ORG_ID,
8395             pjp1.PROJECT_ORGANIZATION_ID,
8396             decode(top_slice.INVERT_ID,
8397                    'PRJ', prg.SUP_EMT_ID,
8398                           decode(wbs.SUB_LEVEL,
8399                                  1, prg.SUP_EMT_ID,
8400                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
8401             pjp1.TIME_ID,
8402             pjp1.PERIOD_TYPE_ID,
8403             pjp1.CALENDAR_TYPE,
8404             pjp1.RBS_AGGR_LEVEL,
8405             'Y'                                       WBS_ROLLUP_FLAG,
8406             pjp1.PRG_ROLLUP_FLAG,
8407             pjp1.CURR_RECORD_TYPE_ID,
8408             pjp1.CURRENCY_CODE,
8409             pjp1.RBS_ELEMENT_ID,
8410             pjp1.RBS_VERSION_ID,
8411             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
8412                    'N_PRG', fin_plan.PLAN_VERSION_ID,
8413                             pjp1.PLAN_VERSION_ID)     PLAN_VERSION_ID,
8414             pjp1.PLAN_TYPE_ID,
8415             pjp1.PLAN_TYPE_CODE,
8416             pjp1.RAW_COST,
8417             pjp1.BRDN_COST,
8418             pjp1.REVENUE,
8419             pjp1.BILL_RAW_COST,
8420             pjp1.BILL_BRDN_COST,
8421             pjp1.BILL_LABOR_RAW_COST,
8422             pjp1.BILL_LABOR_BRDN_COST,
8423             pjp1.BILL_LABOR_HRS,
8424             pjp1.EQUIPMENT_RAW_COST,
8425             pjp1.EQUIPMENT_BRDN_COST,
8426             pjp1.CAPITALIZABLE_RAW_COST,
8427             pjp1.CAPITALIZABLE_BRDN_COST,
8428             pjp1.LABOR_RAW_COST,
8429             pjp1.LABOR_BRDN_COST,
8430             pjp1.LABOR_HRS,
8431             pjp1.LABOR_REVENUE,
8432             pjp1.EQUIPMENT_HOURS,
8433             pjp1.BILLABLE_EQUIPMENT_HOURS,
8434             pjp1.SUP_INV_COMMITTED_COST,
8435             pjp1.PO_COMMITTED_COST,
8436             pjp1.PR_COMMITTED_COST,
8437             pjp1.OTH_COMMITTED_COST,
8438             pjp1.ACT_LABOR_HRS,
8439             pjp1.ACT_EQUIP_HRS,
8440             pjp1.ACT_LABOR_BRDN_COST,
8441             pjp1.ACT_EQUIP_BRDN_COST,
8442             pjp1.ACT_BRDN_COST,
8443             pjp1.ACT_RAW_COST,
8444             pjp1.ACT_REVENUE,
8445             pjp1.ACT_LABOR_RAW_COST,
8446             pjp1.ACT_EQUIP_RAW_COST,
8447             pjp1.ETC_LABOR_HRS,
8448             pjp1.ETC_EQUIP_HRS,
8449             pjp1.ETC_LABOR_BRDN_COST,
8450             pjp1.ETC_EQUIP_BRDN_COST,
8451             pjp1.ETC_BRDN_COST,
8452             pjp1.ETC_RAW_COST,
8453             pjp1.ETC_LABOR_RAW_COST,
8454             pjp1.ETC_EQUIP_RAW_COST,
8455             pjp1.CUSTOM1,
8456             pjp1.CUSTOM2,
8457             pjp1.CUSTOM3,
8458             pjp1.CUSTOM4,
8459             pjp1.CUSTOM5,
8460             pjp1.CUSTOM6,
8461             pjp1.CUSTOM7,
8462             pjp1.CUSTOM8,
8463             pjp1.CUSTOM9,
8464             pjp1.CUSTOM10,
8465             pjp1.CUSTOM11,
8466             pjp1.CUSTOM12,
8467             pjp1.CUSTOM13,
8468             pjp1.CUSTOM14,
8469             pjp1.CUSTOM15
8470           from
8471             PJI_FP_AGGR_PJP1   pjp1,
8472             PJI_PJP_WBS_HEADER wbs_hdr,
8473             PA_XBS_DENORM      wbs,
8474             PJI_XBS_DENORM     prg,
8475             (
8476               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
8477               from DUAL union all
8478               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8479               from DUAL union all
8480               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
8481               from DUAL union all
8482               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8483               from DUAL union all
8484               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
8485               from DUAL union all
8486               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8487               from DUAL union all
8488               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
8489               from DUAL union all
8490               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8491               from DUAL
8492             ) fin_plan,
8493             (
8494               select 1     WBS_SUP_LEVEL,
8495                      1     WBS_SUB_LEVEL,
8496                      'PRJ' INVERT_ID
8497               from   DUAL
8498               union all
8499               select 1     WBS_SUP_LEVEL,
8500                      1     WBS_SUB_LEVEL,
8501                      'WBS' INVERT_ID
8502               from   DUAL
8503             ) top_slice
8504           where
8505             prg.STRUCT_TYPE         =  'PRG'                       and
8506             prg.SUP_LEVEL           =  l_level                     and
8507             prg.SUB_LEVEL           =  l_level                     and
8508             wbs.STRUCT_TYPE         =  'WBS'                       and
8509             ((wbs.SUP_LEVEL = 1 and
8510               wbs.SUB_LEVEL = 1) or
8511              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
8512             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
8513             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
8514             pjp1.WORKER_ID          =  p_worker_id                 and
8515             pjp1.PRG_LEVEL          in (0, l_level)                and
8516             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')                  and
8517             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
8518             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
8519             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
8520             pjp1.PLAN_VERSION_ID    =  wbs_hdr.PLAN_VERSION_ID     and
8521             pjp1.PLAN_TYPE_CODE     =  wbs_hdr.PLAN_TYPE_CODE      and
8522             decode(pjp1.PLAN_VERSION_ID,
8523                    -3, pjp1.PLAN_TYPE_ID,
8524                    -4, pjp1.PLAN_TYPE_ID,
8525                        -1)          =  decode(pjp1.PLAN_VERSION_ID,
8526                                               -3, wbs_hdr.PLAN_TYPE_ID,
8527                                               -4, wbs_hdr.PLAN_TYPE_ID,
8528                                                   -1)              and
8529             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
8530             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
8531             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
8532             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
8533             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
8534             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
8535           union all
8536           select /*+ ordered */
8537                  -- get incremental project level amounts from source
8538             to_char(null)                             LINE_TYPE,
8539             wbs_hdr.WBS_VERSION_ID,
8540             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
8541             'Y'                                       PUSHUP_FLAG,
8542             decode(pjp1.RBS_AGGR_LEVEL,
8543                    'L', 'N',
8544                         decode(fin_plan.PLAN_VERSION_ID,
8545                                null, 'N', 'Y'))       INSERT_FLAG,
8546             pjp1.PROJECT_ID,
8547             pjp1.PROJECT_ORG_ID,
8548             pjp1.PROJECT_ORGANIZATION_ID,
8549             pjp1.PROJECT_ELEMENT_ID,
8550             pjp1.TIME_ID,
8551             pjp1.PERIOD_TYPE_ID,
8552             pjp1.CALENDAR_TYPE,
8553             pjp1.RBS_AGGR_LEVEL,
8554             'Y'                                       WBS_ROLLUP_FLAG,
8555             pjp1.PRG_ROLLUP_FLAG,
8556             pjp1.CURR_RECORD_TYPE_ID,
8557             pjp1.CURRENCY_CODE,
8558             pjp1.RBS_ELEMENT_ID,
8559             pjp1.RBS_VERSION_ID,
8560             decode(wbs_hdr.WP_FLAG,
8561                    'N', decode(pjp1.PLAN_VERSION_ID,
8562                                -1, pjp1.PLAN_VERSION_ID,
8563                                -2, pjp1.PLAN_VERSION_ID,
8564                                -3, pjp1.PLAN_VERSION_ID, -- won't exist
8565                                -4, pjp1.PLAN_VERSION_ID, -- won't exist
8566                                    fin_plan.PLAN_VERSION_ID),
8567                         pjp1.PLAN_VERSION_ID)         PLAN_VERSION_ID,
8568             pjp1.PLAN_TYPE_ID,
8569             pjp1.PLAN_TYPE_CODE,
8570             pjp1.RAW_COST,
8571             pjp1.BRDN_COST,
8572             pjp1.REVENUE,
8573             pjp1.BILL_RAW_COST,
8574             pjp1.BILL_BRDN_COST,
8575             pjp1.BILL_LABOR_RAW_COST,
8576             pjp1.BILL_LABOR_BRDN_COST,
8577             pjp1.BILL_LABOR_HRS,
8578             pjp1.EQUIPMENT_RAW_COST,
8579             pjp1.EQUIPMENT_BRDN_COST,
8580             pjp1.CAPITALIZABLE_RAW_COST,
8581             pjp1.CAPITALIZABLE_BRDN_COST,
8582             pjp1.LABOR_RAW_COST,
8583             pjp1.LABOR_BRDN_COST,
8584             pjp1.LABOR_HRS,
8585             pjp1.LABOR_REVENUE,
8586             pjp1.EQUIPMENT_HOURS,
8587             pjp1.BILLABLE_EQUIPMENT_HOURS,
8588             pjp1.SUP_INV_COMMITTED_COST,
8589             pjp1.PO_COMMITTED_COST,
8590             pjp1.PR_COMMITTED_COST,
8591             pjp1.OTH_COMMITTED_COST,
8592             pjp1.ACT_LABOR_HRS,
8593             pjp1.ACT_EQUIP_HRS,
8594             pjp1.ACT_LABOR_BRDN_COST,
8595             pjp1.ACT_EQUIP_BRDN_COST,
8596             pjp1.ACT_BRDN_COST,
8597             pjp1.ACT_RAW_COST,
8598             pjp1.ACT_REVENUE,
8599             pjp1.ACT_LABOR_RAW_COST,
8600             pjp1.ACT_EQUIP_RAW_COST,
8601             pjp1.ETC_LABOR_HRS,
8602             pjp1.ETC_EQUIP_HRS,
8603             pjp1.ETC_LABOR_BRDN_COST,
8604             pjp1.ETC_EQUIP_BRDN_COST,
8605             pjp1.ETC_BRDN_COST,
8606             pjp1.ETC_RAW_COST,
8607             pjp1.ETC_LABOR_RAW_COST,
8608             pjp1.ETC_EQUIP_RAW_COST,
8609             pjp1.CUSTOM1,
8610             pjp1.CUSTOM2,
8611             pjp1.CUSTOM3,
8612             pjp1.CUSTOM4,
8613             pjp1.CUSTOM5,
8614             pjp1.CUSTOM6,
8615             pjp1.CUSTOM7,
8616             pjp1.CUSTOM8,
8617             pjp1.CUSTOM9,
8618             pjp1.CUSTOM10,
8619             pjp1.CUSTOM11,
8620             pjp1.CUSTOM12,
8621             pjp1.CUSTOM13,
8622             pjp1.CUSTOM14,
8623             pjp1.CUSTOM15
8624           from
8625             PJI_FP_AGGR_PJP1   pjp1,
8626             PJI_PJP_WBS_HEADER wbs_hdr,
8627             PJI_XBS_DENORM     prg,
8628             (
8629               select 'Y' CB_FLAG,
8630                      'N' CO_FLAG,
8631                      -3  PLAN_VERSION_ID
8632               from DUAL union all
8633               select 'N' CB_FLAG,
8634                      'Y' CO_FLAG,
8635                      -4  PLAN_VERSION_ID
8636               from DUAL union all
8637               select 'Y' CB_FLAG,
8638                      'Y' CO_FLAG,
8639                      -3  PLAN_VERSION_ID
8640               from DUAL union all
8641               select 'Y' CB_FLAG,
8642                      'Y' CO_FLAG,
8643                      -4  PLAN_VERSION_ID
8644               from DUAL
8645             ) fin_plan
8646           where
8647             prg.STRUCT_TYPE         = 'PRG'                    and
8648             prg.SUP_LEVEL           = l_level                  and
8649             prg.SUB_LEVEL           = l_level                  and
8650             pjp1.WORKER_ID          = p_worker_id              and
8651             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID       and
8652             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID           and
8653             pjp1.PRG_LEVEL          = 0                        and
8654             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')              and
8655             pjp1.WBS_ROLLUP_FLAG    = 'N'                      and
8656             pjp1.PRG_ROLLUP_FLAG    = 'N'                      and
8657             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID          and
8658             wbs_hdr.PLAN_VERSION_ID = pjp1.PLAN_VERSION_ID     and
8659             wbs_hdr.PLAN_TYPE_CODE  = pjp1.PLAN_TYPE_CODE      and
8660             decode(wbs_hdr.WP_FLAG,
8661                    'N', decode(pjp1.PLAN_VERSION_ID,
8662                                -1, 'Y',
8663                                -2, 'Y',
8664                                -3, 'Y', -- won't exist
8665                                -4, 'Y', -- won't exist
8666                                    decode(wbs_hdr.CB_FLAG || '_' ||
8667                                           wbs_hdr.CO_FLAG,
8668                                           'Y_Y', 'Y',
8669                                           'N_Y', 'Y',
8670                                           'Y_N', 'Y',
8671                                                  'N')),
8672                         'Y')        =  'Y'                     and
8673             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID               and
8674             wbs_hdr.CB_FLAG         = fin_plan.CB_FLAG     (+) and
8675             wbs_hdr.CO_FLAG         = fin_plan.CO_FLAG     (+)
8676           union all
8677           select /*+ ordered
8678                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
8679                  -- get delta task level amounts from Reporting Lines
8680             to_char(null)                             LINE_TYPE,
8681             wbs_hdr.WBS_VERSION_ID,
8682             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
8683             decode(log.EVENT_TYPE,
8684                    'WBS_CHANGE', 'Y',
8685                    'WBS_PUBLISH', 'N')                PUSHUP_FLAG,
8686             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
8687                    'N_PRG', decode(top_slice.INVERT_ID,
8688                                    'PRJ', 'Y',
8689                                    decode(wbs.SUB_LEVEL,
8690                                           1, 'Y', 'N')),
8691                    decode(wbs_hdr.WP_FLAG
8692                             || '_' || fin_plan.INVERT_ID
8693                             || '_' || fin_plan.CB
8694                             || '_' || fin_plan.CO
8695                             || '_' || to_char(fin_plan.PLAN_VERSION_ID),
8696                           'N_PRJ_Y_Y_-4', 'N',
8697                                           'Y'))       INSERT_FLAG,
8698             fpr.PROJECT_ID,
8699             fpr.PROJECT_ORG_ID,
8700             fpr.PROJECT_ORGANIZATION_ID,
8701             decode(top_slice.INVERT_ID,
8702                    'PRJ', prg.SUP_EMT_ID,
8703                           decode(wbs.SUB_LEVEL,
8704                                  1, prg.SUP_EMT_ID,
8705                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
8706             fpr.TIME_ID,
8707             fpr.PERIOD_TYPE_ID,
8708             fpr.CALENDAR_TYPE,
8709             fpr.RBS_AGGR_LEVEL,
8710             'Y'                                       WBS_ROLLUP_FLAG,
8711             fpr.PRG_ROLLUP_FLAG,
8712             fpr.CURR_RECORD_TYPE_ID,
8713             fpr.CURRENCY_CODE,
8714             fpr.RBS_ELEMENT_ID,
8715             fpr.RBS_VERSION_ID,
8716             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
8717                    'N_PRG', fin_plan.PLAN_VERSION_ID,
8718                             fpr.PLAN_VERSION_ID)      PLAN_VERSION_ID,
8719             fpr.PLAN_TYPE_ID,
8720             fpr.PLAN_TYPE_CODE,
8721             wbs.SIGN * fpr.RAW_COST                   RAW_COST,
8722             wbs.SIGN * fpr.BRDN_COST                  BRDN_COST,
8723             wbs.SIGN * fpr.REVENUE                    REVENUE,
8724             wbs.SIGN * fpr.BILL_RAW_COST              BILL_RAW_COST,
8725             wbs.SIGN * fpr.BILL_BRDN_COST             BILL_BRDN_COST,
8726             wbs.SIGN * fpr.BILL_LABOR_RAW_COST        BILL_LABOR_RAW_COST,
8727             wbs.SIGN * fpr.BILL_LABOR_BRDN_COST       BILL_LABOR_BRDN_COST,
8728             wbs.SIGN * fpr.BILL_LABOR_HRS             BILL_LABOR_HRS,
8729             wbs.SIGN * fpr.EQUIPMENT_RAW_COST         EQUIPMENT_RAW_COST,
8730             wbs.SIGN * fpr.EQUIPMENT_BRDN_COST        EQUIPMENT_BRDN_COST,
8731             wbs.SIGN * fpr.CAPITALIZABLE_RAW_COST     CAPITALIZABLE_RAW_COST,
8732             wbs.SIGN * fpr.CAPITALIZABLE_BRDN_COST    CAPITALIZABLE_BRDN_COST,
8733             wbs.SIGN * fpr.LABOR_RAW_COST             LABOR_RAW_COST,
8734             wbs.SIGN * fpr.LABOR_BRDN_COST            LABOR_BRDN_COST,
8735             wbs.SIGN * fpr.LABOR_HRS                  LABOR_HRS,
8736             wbs.SIGN * fpr.LABOR_REVENUE              LABOR_REVENUE,
8737             wbs.SIGN * fpr.EQUIPMENT_HOURS            EQUIPMENT_HOURS,
8738             wbs.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS   BILLABLE_EQUIPMENT_HOURS,
8739             wbs.SIGN * fpr.SUP_INV_COMMITTED_COST     SUP_INV_COMMITTED_COST,
8740             wbs.SIGN * fpr.PO_COMMITTED_COST          PO_COMMITTED_COST,
8741             wbs.SIGN * fpr.PR_COMMITTED_COST          PR_COMMITTED_COST,
8742             wbs.SIGN * fpr.OTH_COMMITTED_COST         OTH_COMMITTED_COST,
8743             wbs.SIGN * fpr.ACT_LABOR_HRS              ACT_LABOR_HRS,
8744             wbs.SIGN * fpr.ACT_EQUIP_HRS              ACT_EQUIP_HRS,
8745             wbs.SIGN * fpr.ACT_LABOR_BRDN_COST        ACT_LABOR_BRDN_COST,
8746             wbs.SIGN * fpr.ACT_EQUIP_BRDN_COST        ACT_EQUIP_BRDN_COST,
8747             wbs.SIGN * fpr.ACT_BRDN_COST              ACT_BRDN_COST,
8748             wbs.SIGN * fpr.ACT_RAW_COST               ACT_RAW_COST,
8749             wbs.SIGN * fpr.ACT_REVENUE                ACT_REVENUE,
8750             wbs.SIGN * fpr.ACT_LABOR_RAW_COST         ACT_LABOR_RAW_COST,
8751             wbs.SIGN * fpr.ACT_EQUIP_RAW_COST         ACT_EQUIP_RAW_COST,
8752             wbs.SIGN * fpr.ETC_LABOR_HRS              ETC_LABOR_HRS,
8753             wbs.SIGN * fpr.ETC_EQUIP_HRS              ETC_EQUIP_HRS,
8754             wbs.SIGN * fpr.ETC_LABOR_BRDN_COST        ETC_LABOR_BRDN_COST,
8755             wbs.SIGN * fpr.ETC_EQUIP_BRDN_COST        ETC_EQUIP_BRDN_COST,
8756             wbs.SIGN * fpr.ETC_BRDN_COST              ETC_BRDN_COST,
8757             wbs.SIGN * fpr.ETC_RAW_COST               ETC_RAW_COST,
8758             wbs.SIGN * fpr.ETC_LABOR_RAW_COST         ETC_LABOR_RAW_COST,
8759             wbs.SIGN * fpr.ETC_EQUIP_RAW_COST         ETC_EQUIP_RAW_COST,
8760             wbs.SIGN * fpr.CUSTOM1                    CUSTOM1,
8761             wbs.SIGN * fpr.CUSTOM2                    CUSTOM2,
8762             wbs.SIGN * fpr.CUSTOM3                    CUSTOM3,
8763             wbs.SIGN * fpr.CUSTOM4                    CUSTOM4,
8764             wbs.SIGN * fpr.CUSTOM5                    CUSTOM5,
8765             wbs.SIGN * fpr.CUSTOM6                    CUSTOM6,
8766             wbs.SIGN * fpr.CUSTOM7                    CUSTOM7,
8767             wbs.SIGN * fpr.CUSTOM8                    CUSTOM8,
8768             wbs.SIGN * fpr.CUSTOM9                    CUSTOM9,
8769             wbs.SIGN * fpr.CUSTOM10                   CUSTOM10,
8770             wbs.SIGN * fpr.CUSTOM11                   CUSTOM11,
8771             wbs.SIGN * fpr.CUSTOM12                   CUSTOM12,
8772             wbs.SIGN * fpr.CUSTOM13                   CUSTOM13,
8773             wbs.SIGN * fpr.CUSTOM14                   CUSTOM14,
8774             wbs.SIGN * fpr.CUSTOM15                   CUSTOM15
8775           from
8776             PJI_PA_PROJ_EVENTS_LOG log,
8777             PJI_PJP_WBS_HEADER     wbs_hdr,
8778             PJI_XBS_DENORM_DELTA   wbs,
8779             PJI_XBS_DENORM         prg,
8780             PJI_FP_XBS_ACCUM_F     fpr,
8781             (
8782               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
8783               from DUAL union all
8784               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8785               from DUAL union all
8786               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
8787               from DUAL union all
8788               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8789               from DUAL union all
8790               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
8791               from DUAL union all
8792               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8793               from DUAL union all
8794               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
8795               from DUAL union all
8796               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
8797               from DUAL
8798             ) fin_plan,
8799             (
8800               select 1     WBS_SUP_LEVEL,
8801                      1     WBS_SUB_LEVEL,
8802                      'PRJ' INVERT_ID
8803               from   DUAL
8804               union all
8805               select 1     WBS_SUP_LEVEL,
8806                      1     WBS_SUB_LEVEL,
8807                      'WBS' INVERT_ID
8808               from   DUAL
8809             ) top_slice
8810           where
8811             prg.STRUCT_TYPE         =  'PRG'                       and
8812             prg.SUP_LEVEL           =  l_level                     and
8813             prg.SUB_LEVEL           =  l_level                     and
8814             wbs.WORKER_ID           =  p_worker_id                 and
8815             wbs.STRUCT_TYPE         =  'WBS'                       and
8816             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
8817             log.WORKER_ID           =  p_worker_id                 and
8818             log.EVENT_ID            =  wbs.EVENT_ID                and
8819             log.EVENT_TYPE          in ('WBS_CHANGE',
8820                                         'WBS_PUBLISH')             and
8821             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
8822             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
8823             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
8824             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
8825             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
8826             fpr.RBS_AGGR_LEVEL      =  'T'                         and
8827             fpr.WBS_ROLLUP_FLAG     =  'N'                         and
8828             fpr.PRG_ROLLUP_FLAG     in ('Y', 'N')                  and
8829             fpr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
8830             fpr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
8831             fpr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
8832             fpr.PLAN_VERSION_ID     =  wbs_hdr.PLAN_VERSION_ID     and
8833             fpr.PLAN_TYPE_CODE      =  wbs_hdr.PLAN_TYPE_CODE      and
8834             decode(fpr.PLAN_VERSION_ID,
8835                    -3, fpr.PLAN_TYPE_ID,
8836                    -4, fpr.PLAN_TYPE_ID,
8837                        -1)          =  decode(fpr.PLAN_VERSION_ID,
8838                                               -3, wbs_hdr.PLAN_TYPE_ID,
8839                                               -4, wbs_hdr.PLAN_TYPE_ID,
8840                                                   -1)              and
8841             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
8842             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
8843             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
8844             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
8845             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
8846              (wbs.SUP_LEVEL = 1 and
8847               wbs.SUB_LEVEL = 1))
8848           ) pjp,
8849           (
8850           select /*+ ordered */
8851             prg.SUP_PROJECT_ID,
8852             map.PROJECT_ORG_ID               SUP_PROJECT_ORG_ID,
8853             map.PROJECT_ORGANIZATION_ID      SUP_PROJECT_ORGANIZATION_ID,
8854             prg.SUP_ID,
8855             prg.SUP_EMT_ID,
8856             prg.SUP_LEVEL,
8857             prg.SUB_ID,
8858             prg.SUB_EMT_ID,
8859             prg.SUB_ROLLUP_ID,
8860             invert.INVERT_VALUE              RELATIONSHIP_TYPE,
8861             decode(prg.RELATIONSHIP_TYPE,
8862                    'LW', 'Y',
8863                    'LF', 'N')                WP_FLAG,
8864             'Y'                              PUSHUP_FLAG
8865           from
8866             PJI_PJP_PROJ_BATCH_MAP map,
8867             PJI_XBS_DENORM prg,
8868             (
8869               select 'LF' INVERT_ID, 'LF' INVERT_VALUE from dual union all
8870               select 'LW' INVERT_ID, 'LW' INVERT_VALUE from dual union all
8871               select 'A'  INVERT_ID, 'LF' INVERT_VALUE from dual union all
8872               select 'A'  INVERT_ID, 'LW' INVERT_VALUE from dual
8873             ) invert,
8874             PJI_XBS_DENORM_DELTA prg_delta
8875           where
8876             prg.STRUCT_TYPE               = 'PRG'                           and
8877             prg.SUB_ROLLUP_ID             is not null                       and
8878             prg.SUB_LEVEL                 = l_level                         and
8879             map.WORKER_ID                 = p_worker_id                     and
8880             map.PROJECT_ID                = prg.SUP_PROJECT_ID              and
8881             decode(prg.SUB_LEVEL,
8882                    prg.SUP_LEVEL, 'A',
8883                    prg.RELATIONSHIP_TYPE) = invert.INVERT_ID                and
8884             p_worker_id                   = prg_delta.WORKER_ID         (+) and
8885             prg.STRUCT_TYPE               = prg_delta.STRUCT_TYPE       (+) and
8886             prg.SUP_PROJECT_ID            = prg_delta.SUP_PROJECT_ID    (+) and
8887             prg.SUP_LEVEL                 = prg_delta.SUP_LEVEL         (+) and
8888             prg.SUP_ID                    = prg_delta.SUP_ID            (+) and
8889             prg.SUB_LEVEL                 = prg_delta.SUB_LEVEL         (+) and
8890             prg.SUB_ID                    = prg_delta.SUB_ID            (+) and
8891             prg.RELATIONSHIP_TYPE         = prg_delta.RELATIONSHIP_TYPE (+) and
8892             -1                            = prg_delta.SIGN              (+) and
8893             prg_delta.SUP_PROJECT_ID      is null
8894           )                          prg,
8895           PJI_PJP_WBS_HEADER         wbs_hdr,
8896           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
8897           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
8898           PA_PROJ_WORKPLAN_ATTR      sup_wpa
8899         where
8900           pjp.PROJECT_ID         = sub_ver.PROJECT_ID                (+) and
8901           pjp.WBS_VERSION_ID     = sub_ver.ELEMENT_VERSION_ID        (+) and
8902           'STRUCTURE_PUBLISHED'  = sub_ver.STATUS_CODE               (+) and
8903           pjp.WBS_VERSION_ID     = prg.SUB_ID                        (+) and
8904           pjp.RELATIONSHIP_TYPE  = prg.RELATIONSHIP_TYPE             (+) and
8905           pjp.PUSHUP_FLAG        = prg.PUSHUP_FLAG                   (+) and
8906           prg.SUP_PROJECT_ID     = wbs_hdr.PROJECT_ID                (+) and
8907           prg.SUP_ID             = wbs_hdr.WBS_VERSION_ID            (+) and
8908           prg.WP_FLAG            = wbs_hdr.WP_FLAG                   (+) and
8909           'Y'                    = wbs_hdr.WP_FLAG                   (+) and
8910           wbs_hdr.PROJECT_ID     = sup_ver.PROJECT_ID                (+) and
8911           wbs_hdr.WBS_VERSION_ID = sup_ver.ELEMENT_VERSION_ID        (+) and
8912           'STRUCTURE_PUBLISHED'  = sup_ver.STATUS_CODE               (+) and
8913           'Y'                    = sup_ver.LATEST_EFF_PUBLISHED_FLAG (+) and
8914           prg.SUP_EMT_ID         = sup_wpa.PROJ_ELEMENT_ID           (+)
8915         group by
8916           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8917                  pjp.INSERT_FLAG, 'Y'),
8918           pjp.RELATIONSHIP_TYPE,
8919           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8920                  null, sub_ver.STATUS_CODE),
8921           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8922                  null, sup_ver.STATUS_CODE),
8923           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8924                  null, sup_wpa.WP_ENABLE_VERSION_FLAG),
8925           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8926                  null, decode(pjp.PLAN_VERSION_ID,
8927                               -1, prg.SUP_ID,
8928                               -3, prg.SUP_ID,
8929                               -4, prg.SUP_ID,
8930                                   null)),
8931           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8932                  null, decode(pjp.PLAN_VERSION_ID,
8933                               -1, prg.SUP_EMT_ID,
8934                               -3, prg.SUP_EMT_ID,
8935                               -4, prg.SUP_EMT_ID,
8936                                   null)),
8937           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8938                  null, decode(pjp.PLAN_VERSION_ID,
8939                               -1, prg.WP_FLAG,
8940                               -3, prg.WP_FLAG,
8941                               -4, prg.WP_FLAG,
8942                                   null)),
8943           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8944                  l_level, prg.SUP_LEVEL),
8945           pjp.LINE_TYPE,
8946           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8947                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID),
8948           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8949                  pjp.PROJECT_ORG_ID,
8950                  prg.SUP_PROJECT_ORG_ID),
8951           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8952                  pjp.PROJECT_ORGANIZATION_ID,
8953                  prg.SUP_PROJECT_ORGANIZATION_ID),
8954           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8955                  pjp.PROJECT_ELEMENT_ID,
8956                  prg.SUB_ROLLUP_ID),
8957           pjp.TIME_ID,
8958           pjp.PERIOD_TYPE_ID,
8959           pjp.CALENDAR_TYPE,
8960           pjp.RBS_AGGR_LEVEL,
8961           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8962                  pjp.WBS_ROLLUP_FLAG, 'N'),
8963           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8964                  pjp.PRG_ROLLUP_FLAG, 'Y'),
8965           pjp.CURR_RECORD_TYPE_ID,
8966           pjp.CURRENCY_CODE,
8967           pjp.RBS_ELEMENT_ID,
8968           pjp.RBS_VERSION_ID,
8969           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8970                  pjp.PLAN_VERSION_ID,
8971                  decode(pjp.PLAN_VERSION_ID,
8972                         -1, pjp.PLAN_VERSION_ID,
8973                         -2, pjp.PLAN_VERSION_ID,
8974                         -3, pjp.PLAN_VERSION_ID,
8975                         -4, pjp.PLAN_VERSION_ID,
8976                             wbs_hdr.PLAN_VERSION_ID)),
8977           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
8978                  pjp.PLAN_TYPE_ID,
8979                  decode(pjp.PLAN_VERSION_ID,
8980                         -1, pjp.PLAN_TYPE_ID,
8981                         -2, pjp.PLAN_TYPE_ID,
8982                         -3, pjp.PLAN_TYPE_ID,
8983                         -4, pjp.PLAN_TYPE_ID,
8984                             wbs_hdr.PLAN_TYPE_ID)),
8985           pjp.PLAN_TYPE_CODE
8986           )                          pjp1_i,
8987           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
8988           PA_PROJ_WORKPLAN_ATTR      sup_wpa
8989         where
8990           pjp1_i.INSERT_FLAG  = 'Y'                                and
8991           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
8992           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
8993           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
8994           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
8995           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
8996           (pjp1_i.SUP_ID is null or
8997            (pjp1_i.SUP_ID is not null and
8998             (sup_fin_ver.PROJECT_ID is not null or
8999              sup_wpa.PROJ_ELEMENT_ID is not null)));
9000 
9001         update PJI_SYSTEM_PRC_STATUS
9002         set    STEP_STATUS = 'C',
9003                END_DATE = sysdate
9004         where  PROCESS_NAME = l_process and
9005                STEP_SEQ = l_level_seq;
9006 
9007         commit;
9008 
9009         select
9010           nvl(to_number(min(STEP_SEQ)), 0)
9011         into
9012           l_level_seq
9013         from
9014           PJI_SYSTEM_PRC_STATUS
9015         where
9016           PROCESS_NAME = l_process and
9017           STEP_NAME like 'ROLLUP_FPR_WBS%' and
9018           STEP_STATUS is null;
9019 
9020         if (l_level_seq = 0) then
9021           l_level := 0;
9022         else
9023           l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
9024         end if;
9025 
9026       end loop;
9027 
9028       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS(p_worker_id);');
9029 
9030       commit;
9031 
9032     else -- online mode
9033 
9034       -- rollup just WBS for online processing
9035 
9036       select /*+ ordered use_nl(den) index(den PJI_XBS_DENORM_N3) */
9037         nvl(max(den.SUP_LEVEL), 0)
9038       into
9039         l_level
9040       from
9041         PJI_FM_EXTR_PLNVER3_T ver3,
9042         PJI_XBS_DENORM den
9043       where
9044         den.STRUCT_TYPE    = 'PRG'          and
9045         den.SUB_LEVEL      = den.SUP_LEVEL  and
9046         den.SUP_PROJECT_ID = ver3.PROJECT_ID;
9047 
9048       while (l_level > 0) loop
9049 
9050         -- rollup project hiearchy
9051 
9052         insert into PJI_FP_AGGR_PJP1_T
9053         (
9054           WORKER_ID,
9055           RECORD_TYPE,
9056           PRG_LEVEL,
9057           LINE_TYPE,
9058           PROJECT_ID,
9059           PROJECT_ORG_ID,
9060           PROJECT_ORGANIZATION_ID,
9061           PROJECT_ELEMENT_ID,
9062           TIME_ID,
9063           PERIOD_TYPE_ID,
9064           CALENDAR_TYPE,
9065           RBS_AGGR_LEVEL,
9066           WBS_ROLLUP_FLAG,
9067           PRG_ROLLUP_FLAG,
9068           CURR_RECORD_TYPE_ID,
9069           CURRENCY_CODE,
9070           RBS_ELEMENT_ID,
9071           RBS_VERSION_ID,
9072           PLAN_VERSION_ID,
9073           PLAN_TYPE_ID,
9074           PLAN_TYPE_CODE,
9075           RAW_COST,
9076           BRDN_COST,
9077           REVENUE,
9078           BILL_RAW_COST,
9079           BILL_BRDN_COST,
9080           BILL_LABOR_RAW_COST,
9081           BILL_LABOR_BRDN_COST,
9082           BILL_LABOR_HRS,
9083           EQUIPMENT_RAW_COST,
9084           EQUIPMENT_BRDN_COST,
9085           CAPITALIZABLE_RAW_COST,
9086           CAPITALIZABLE_BRDN_COST,
9087           LABOR_RAW_COST,
9088           LABOR_BRDN_COST,
9089           LABOR_HRS,
9090           LABOR_REVENUE,
9091           EQUIPMENT_HOURS,
9092           BILLABLE_EQUIPMENT_HOURS,
9093           SUP_INV_COMMITTED_COST,
9094           PO_COMMITTED_COST,
9095           PR_COMMITTED_COST,
9096           OTH_COMMITTED_COST,
9097           ACT_LABOR_HRS,
9098           ACT_EQUIP_HRS,
9099           ACT_LABOR_BRDN_COST,
9100           ACT_EQUIP_BRDN_COST,
9101           ACT_BRDN_COST,
9102           ACT_RAW_COST,
9103           ACT_REVENUE,
9104           ACT_LABOR_RAW_COST,
9105           ACT_EQUIP_RAW_COST,
9106           ETC_LABOR_HRS,
9107           ETC_EQUIP_HRS,
9108           ETC_LABOR_BRDN_COST,
9109           ETC_EQUIP_BRDN_COST,
9110           ETC_BRDN_COST,
9111           ETC_RAW_COST,
9112           ETC_LABOR_RAW_COST,
9113           ETC_EQUIP_RAW_COST,
9114           CUSTOM1,
9115           CUSTOM2,
9116           CUSTOM3,
9117           CUSTOM4,
9118           CUSTOM5,
9119           CUSTOM6,
9120           CUSTOM7,
9121           CUSTOM8,
9122           CUSTOM9,
9123           CUSTOM10,
9124           CUSTOM11,
9125           CUSTOM12,
9126           CUSTOM13,
9127           CUSTOM14,
9128           CUSTOM15
9129         )
9130         select
9131           pjp1_i.WORKER_ID,
9132           pjp1_i.RECORD_TYPE,
9133           pjp1_i.PRG_LEVEL,
9134           pjp1_i.LINE_TYPE,
9135           pjp1_i.PROJECT_ID,
9136           pjp1_i.PROJECT_ORG_ID,
9137           pjp1_i.PROJECT_ORGANIZATION_ID,
9138           pjp1_i.PROJECT_ELEMENT_ID,
9139           pjp1_i.TIME_ID,
9140           pjp1_i.PERIOD_TYPE_ID,
9141           pjp1_i.CALENDAR_TYPE,
9142           pjp1_i.RBS_AGGR_LEVEL,
9143           pjp1_i.WBS_ROLLUP_FLAG,
9144           pjp1_i.PRG_ROLLUP_FLAG,
9145           pjp1_i.CURR_RECORD_TYPE_ID,
9146           pjp1_i.CURRENCY_CODE,
9147           pjp1_i.RBS_ELEMENT_ID,
9148           pjp1_i.RBS_VERSION_ID,
9149           pjp1_i.PLAN_VERSION_ID,
9150           pjp1_i.PLAN_TYPE_ID,
9151           pjp1_i.PLAN_TYPE_CODE,
9152           decode(pjp1_i.RELATIONSHIP_TYPE
9153                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9154                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9155                    || '_' || pjp1_i.SUB_STATUS_CODE
9156                    || '_' || pjp1_i.SUP_STATUS_CODE,
9157                  'LW_N_Y__', to_number(null),
9158                  decode(pjp1_i.RELATIONSHIP_TYPE
9159                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9160                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9161                           || '_' || pjp1_i.SUP_VER_ENABLED,
9162                         'LW_N_Y_Y', to_number(null),
9163                  pjp1_i.RAW_COST))                    RAW_COST,
9164           decode(pjp1_i.RELATIONSHIP_TYPE
9165                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9166                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9167                    || '_' || pjp1_i.SUB_STATUS_CODE
9168                    || '_' || pjp1_i.SUP_STATUS_CODE,
9169                  'LW_N_Y__', to_number(null),
9170                  decode(pjp1_i.RELATIONSHIP_TYPE
9171                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9172                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9173                           || '_' || pjp1_i.SUP_VER_ENABLED,
9174                         'LW_N_Y_Y', to_number(null),
9175                  pjp1_i.BRDN_COST))                   BRDN_COST,
9176           decode(pjp1_i.RELATIONSHIP_TYPE
9177                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9178                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9179                    || '_' || pjp1_i.SUB_STATUS_CODE
9180                    || '_' || pjp1_i.SUP_STATUS_CODE,
9181                  'LW_N_Y__', to_number(null),
9182                  decode(pjp1_i.RELATIONSHIP_TYPE
9183                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9184                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9185                           || '_' || pjp1_i.SUP_VER_ENABLED,
9186                         'LW_N_Y_Y', to_number(null),
9187                  pjp1_i.REVENUE))                     REVENUE,
9188           decode(pjp1_i.RELATIONSHIP_TYPE
9189                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9190                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9191                    || '_' || pjp1_i.SUB_STATUS_CODE
9192                    || '_' || pjp1_i.SUP_STATUS_CODE,
9193                  'LW_N_Y__', to_number(null),
9194                  decode(pjp1_i.RELATIONSHIP_TYPE
9195                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9196                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9197                           || '_' || pjp1_i.SUP_VER_ENABLED,
9198                         'LW_N_Y_Y', to_number(null),
9199                  pjp1_i.BILL_RAW_COST))               BILL_RAW_COST,
9200           decode(pjp1_i.RELATIONSHIP_TYPE
9201                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9202                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9203                    || '_' || pjp1_i.SUB_STATUS_CODE
9204                    || '_' || pjp1_i.SUP_STATUS_CODE,
9205                  'LW_N_Y__', to_number(null),
9206                  decode(pjp1_i.RELATIONSHIP_TYPE
9207                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9208                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9209                           || '_' || pjp1_i.SUP_VER_ENABLED,
9210                         'LW_N_Y_Y', to_number(null),
9211                  pjp1_i.BILL_BRDN_COST))              BILL_BRDN_COST,
9212           decode(pjp1_i.RELATIONSHIP_TYPE
9213                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9214                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9215                    || '_' || pjp1_i.SUB_STATUS_CODE
9216                    || '_' || pjp1_i.SUP_STATUS_CODE,
9217                  'LW_N_Y__', to_number(null),
9218                  decode(pjp1_i.RELATIONSHIP_TYPE
9219                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9220                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9221                           || '_' || pjp1_i.SUP_VER_ENABLED,
9222                         'LW_N_Y_Y', to_number(null),
9223                  pjp1_i.BILL_LABOR_RAW_COST))         BILL_LABOR_RAW_COST,
9224           decode(pjp1_i.RELATIONSHIP_TYPE
9225                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9226                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9227                    || '_' || pjp1_i.SUB_STATUS_CODE
9228                    || '_' || pjp1_i.SUP_STATUS_CODE,
9229                  'LW_N_Y__', to_number(null),
9230                  decode(pjp1_i.RELATIONSHIP_TYPE
9231                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9232                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9233                           || '_' || pjp1_i.SUP_VER_ENABLED,
9234                         'LW_N_Y_Y', to_number(null),
9235                  pjp1_i.BILL_LABOR_BRDN_COST))        BILL_LABOR_BRDN_COST,
9236           decode(pjp1_i.RELATIONSHIP_TYPE
9237                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9238                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9239                    || '_' || pjp1_i.SUB_STATUS_CODE
9240                    || '_' || pjp1_i.SUP_STATUS_CODE,
9241                  'LW_N_Y__', to_number(null),
9242                  decode(pjp1_i.RELATIONSHIP_TYPE
9243                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9244                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9245                           || '_' || pjp1_i.SUP_VER_ENABLED,
9246                         'LW_N_Y_Y', to_number(null),
9247                  pjp1_i.BILL_LABOR_HRS))              BILL_LABOR_HRS,
9248           decode(pjp1_i.RELATIONSHIP_TYPE
9249                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9250                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9251                    || '_' || pjp1_i.SUB_STATUS_CODE
9252                    || '_' || pjp1_i.SUP_STATUS_CODE,
9253                  'LW_N_Y__', to_number(null),
9254                  decode(pjp1_i.RELATIONSHIP_TYPE
9255                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9256                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9257                           || '_' || pjp1_i.SUP_VER_ENABLED,
9258                         'LW_N_Y_Y', to_number(null),
9259                  pjp1_i.EQUIPMENT_RAW_COST))          EQUIPMENT_RAW_COST,
9260           decode(pjp1_i.RELATIONSHIP_TYPE
9261                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9262                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9263                    || '_' || pjp1_i.SUB_STATUS_CODE
9264                    || '_' || pjp1_i.SUP_STATUS_CODE,
9265                  'LW_N_Y__', to_number(null),
9266                  decode(pjp1_i.RELATIONSHIP_TYPE
9267                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9268                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9269                           || '_' || pjp1_i.SUP_VER_ENABLED,
9270                         'LW_N_Y_Y', to_number(null),
9271                  pjp1_i.EQUIPMENT_BRDN_COST))         EQUIPMENT_BRDN_COST,
9272           decode(pjp1_i.RELATIONSHIP_TYPE
9273                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9274                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9275                    || '_' || pjp1_i.SUB_STATUS_CODE
9276                    || '_' || pjp1_i.SUP_STATUS_CODE,
9277                  'LW_N_Y__', to_number(null),
9278                  decode(pjp1_i.RELATIONSHIP_TYPE
9279                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9280                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9281                           || '_' || pjp1_i.SUP_VER_ENABLED,
9282                         'LW_N_Y_Y', to_number(null),
9283                  pjp1_i.CAPITALIZABLE_RAW_COST))      CAPITALIZABLE_RAW_COST,
9284           decode(pjp1_i.RELATIONSHIP_TYPE
9285                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9286                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9287                    || '_' || pjp1_i.SUB_STATUS_CODE
9288                    || '_' || pjp1_i.SUP_STATUS_CODE,
9289                  'LW_N_Y__', to_number(null),
9290                  decode(pjp1_i.RELATIONSHIP_TYPE
9291                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9292                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9293                           || '_' || pjp1_i.SUP_VER_ENABLED,
9294                         'LW_N_Y_Y', to_number(null),
9295                  pjp1_i.CAPITALIZABLE_BRDN_COST))     CAPITALIZABLE_BRDN_COST,
9296           decode(pjp1_i.RELATIONSHIP_TYPE
9297                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9298                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9299                    || '_' || pjp1_i.SUB_STATUS_CODE
9300                    || '_' || pjp1_i.SUP_STATUS_CODE,
9301                  'LW_N_Y__', to_number(null),
9302                  decode(pjp1_i.RELATIONSHIP_TYPE
9303                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9304                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9305                           || '_' || pjp1_i.SUP_VER_ENABLED,
9306                         'LW_N_Y_Y', to_number(null),
9307                  pjp1_i.LABOR_RAW_COST))              LABOR_RAW_COST,
9308           decode(pjp1_i.RELATIONSHIP_TYPE
9309                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9310                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9311                    || '_' || pjp1_i.SUB_STATUS_CODE
9312                    || '_' || pjp1_i.SUP_STATUS_CODE,
9313                  'LW_N_Y__', to_number(null),
9314                  decode(pjp1_i.RELATIONSHIP_TYPE
9315                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9316                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9317                           || '_' || pjp1_i.SUP_VER_ENABLED,
9318                         'LW_N_Y_Y', to_number(null),
9319                  pjp1_i.LABOR_BRDN_COST))             LABOR_BRDN_COST,
9320           decode(pjp1_i.RELATIONSHIP_TYPE
9321                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9322                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9323                    || '_' || pjp1_i.SUB_STATUS_CODE
9324                    || '_' || pjp1_i.SUP_STATUS_CODE,
9325                  'LW_N_Y__', to_number(null),
9326                  decode(pjp1_i.RELATIONSHIP_TYPE
9327                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9328                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9329                           || '_' || pjp1_i.SUP_VER_ENABLED,
9330                         'LW_N_Y_Y', to_number(null),
9331                  pjp1_i.LABOR_HRS))                   LABOR_HRS,
9332           decode(pjp1_i.RELATIONSHIP_TYPE
9333                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9334                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9335                    || '_' || pjp1_i.SUB_STATUS_CODE
9336                    || '_' || pjp1_i.SUP_STATUS_CODE,
9337                  'LW_N_Y__', to_number(null),
9338                  decode(pjp1_i.RELATIONSHIP_TYPE
9339                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9340                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9341                           || '_' || pjp1_i.SUP_VER_ENABLED,
9342                         'LW_N_Y_Y', to_number(null),
9343                  pjp1_i.LABOR_REVENUE))               LABOR_REVENUE,
9344           decode(pjp1_i.RELATIONSHIP_TYPE
9345                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9346                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9347                    || '_' || pjp1_i.SUB_STATUS_CODE
9348                    || '_' || pjp1_i.SUP_STATUS_CODE,
9349                  'LW_N_Y__', to_number(null),
9350                  decode(pjp1_i.RELATIONSHIP_TYPE
9351                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9352                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9353                           || '_' || pjp1_i.SUP_VER_ENABLED,
9354                         'LW_N_Y_Y', to_number(null),
9355                  pjp1_i.EQUIPMENT_HOURS))             EQUIPMENT_HOURS,
9356           decode(pjp1_i.RELATIONSHIP_TYPE
9357                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9358                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9359                    || '_' || pjp1_i.SUB_STATUS_CODE
9360                    || '_' || pjp1_i.SUP_STATUS_CODE,
9361                  'LW_N_Y__', to_number(null),
9362                  decode(pjp1_i.RELATIONSHIP_TYPE
9363                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9364                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9365                           || '_' || pjp1_i.SUP_VER_ENABLED,
9366                         'LW_N_Y_Y', to_number(null),
9367                  pjp1_i.BILLABLE_EQUIPMENT_HOURS))    BILLABLE_EQUIPMENT_HOURS,
9368           decode(pjp1_i.RELATIONSHIP_TYPE
9369                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9370                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9371                    || '_' || pjp1_i.SUB_STATUS_CODE
9372                    || '_' || pjp1_i.SUP_STATUS_CODE,
9373                  'LW_N_Y__', to_number(null),
9374                  decode(pjp1_i.RELATIONSHIP_TYPE
9375                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9376                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9377                           || '_' || pjp1_i.SUP_VER_ENABLED,
9378                         'LW_N_Y_Y', to_number(null),
9379                  pjp1_i.SUP_INV_COMMITTED_COST))      SUP_INV_COMMITTED_COST,
9380           decode(pjp1_i.RELATIONSHIP_TYPE
9381                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9382                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9383                    || '_' || pjp1_i.SUB_STATUS_CODE
9384                    || '_' || pjp1_i.SUP_STATUS_CODE,
9385                  'LW_N_Y__', to_number(null),
9386                  decode(pjp1_i.RELATIONSHIP_TYPE
9387                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9388                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9389                           || '_' || pjp1_i.SUP_VER_ENABLED,
9390                         'LW_N_Y_Y', to_number(null),
9391                  pjp1_i.PO_COMMITTED_COST))           PO_COMMITTED_COST,
9392           decode(pjp1_i.RELATIONSHIP_TYPE
9393                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9394                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9395                    || '_' || pjp1_i.SUB_STATUS_CODE
9396                    || '_' || pjp1_i.SUP_STATUS_CODE,
9397                  'LW_N_Y__', to_number(null),
9398                  decode(pjp1_i.RELATIONSHIP_TYPE
9399                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9400                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9401                           || '_' || pjp1_i.SUP_VER_ENABLED,
9402                         'LW_N_Y_Y', to_number(null),
9403                  pjp1_i.PR_COMMITTED_COST))           PR_COMMITTED_COST,
9404           decode(pjp1_i.RELATIONSHIP_TYPE
9405                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9406                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9407                    || '_' || pjp1_i.SUB_STATUS_CODE
9408                    || '_' || pjp1_i.SUP_STATUS_CODE,
9409                  'LW_N_Y__', to_number(null),
9410                  decode(pjp1_i.RELATIONSHIP_TYPE
9411                           || '_' || pjp1_i.WBS_ROLLUP_FLAG
9412                           || '_' || pjp1_i.PRG_ROLLUP_FLAG
9413                           || '_' || pjp1_i.SUP_VER_ENABLED,
9414                         'LW_N_Y_Y', to_number(null),
9415                  pjp1_i.OTH_COMMITTED_COST))          OTH_COMMITTED_COST,
9416           decode(pjp1_i.RELATIONSHIP_TYPE
9417                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9418                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9419                    || '_' || pjp1_i.SUP_STATUS_CODE,
9420                  'LW_N_Y_', to_number(null),
9421                           pjp1_i.ACT_LABOR_HRS)       ACT_LABOR_HRS,
9422           decode(pjp1_i.RELATIONSHIP_TYPE
9423                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9424                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9425                    || '_' || pjp1_i.SUP_STATUS_CODE,
9426                  'LW_N_Y_', to_number(null),
9427                           pjp1_i.ACT_EQUIP_HRS)       ACT_EQUIP_HRS,
9428           decode(pjp1_i.RELATIONSHIP_TYPE
9429                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9430                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9431                    || '_' || pjp1_i.SUP_STATUS_CODE,
9432                  'LW_N_Y_', to_number(null),
9433                           pjp1_i.ACT_LABOR_BRDN_COST) ACT_LABOR_BRDN_COST,
9434           decode(pjp1_i.RELATIONSHIP_TYPE
9435                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9436                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9437                    || '_' || pjp1_i.SUP_STATUS_CODE,
9438                  'LW_N_Y_', to_number(null),
9439                           pjp1_i.ACT_EQUIP_BRDN_COST) ACT_EQUIP_BRDN_COST,
9440           decode(pjp1_i.RELATIONSHIP_TYPE
9441                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9442                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9443                    || '_' || pjp1_i.SUP_STATUS_CODE,
9444                  'LW_N_Y_', to_number(null),
9445                           pjp1_i.ACT_BRDN_COST)       ACT_BRDN_COST,
9446           decode(pjp1_i.RELATIONSHIP_TYPE
9447                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9448                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9449                    || '_' || pjp1_i.SUP_STATUS_CODE,
9450                  'LW_N_Y_', to_number(null),
9451                           pjp1_i.ACT_RAW_COST)        ACT_RAW_COST,
9452           decode(pjp1_i.RELATIONSHIP_TYPE
9453                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9454                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9455                    || '_' || pjp1_i.SUP_STATUS_CODE,
9456                  'LW_N_Y_', to_number(null),
9457                           pjp1_i.ACT_REVENUE)         ACT_REVENUE,
9458           decode(pjp1_i.RELATIONSHIP_TYPE
9459                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9460                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9461                    || '_' || pjp1_i.SUP_STATUS_CODE,
9462                  'LW_N_Y_', to_number(null),
9463                           pjp1_i.ACT_LABOR_RAW_COST)  ACT_LABOR_RAW_COST,
9464           decode(pjp1_i.RELATIONSHIP_TYPE
9465                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9466                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9467                    || '_' || pjp1_i.SUP_STATUS_CODE,
9468                  'LW_N_Y_', to_number(null),
9469                           pjp1_i.ACT_EQUIP_RAW_COST)  ACT_EQUIP_RAW_COST,
9470           decode(pjp1_i.RELATIONSHIP_TYPE
9471                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9472                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9473                    || '_' || pjp1_i.SUP_STATUS_CODE,
9474                  'LW_N_Y_', to_number(null),
9475                           pjp1_i.ETC_LABOR_HRS)       ETC_LABOR_HRS,
9476           decode(pjp1_i.RELATIONSHIP_TYPE
9477                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9478                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9479                    || '_' || pjp1_i.SUP_STATUS_CODE,
9480                  'LW_N_Y_', to_number(null),
9481                           pjp1_i.ETC_EQUIP_HRS)       ETC_EQUIP_HRS,
9482           decode(pjp1_i.RELATIONSHIP_TYPE
9483                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9484                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9485                    || '_' || pjp1_i.SUP_STATUS_CODE,
9486                  'LW_N_Y_', to_number(null),
9487                           pjp1_i.ETC_LABOR_BRDN_COST) ETC_LABOR_BRDN_COST,
9488           decode(pjp1_i.RELATIONSHIP_TYPE
9489                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9490                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9491                    || '_' || pjp1_i.SUP_STATUS_CODE,
9492                  'LW_N_Y_', to_number(null),
9493                           pjp1_i.ETC_EQUIP_BRDN_COST) ETC_EQUIP_BRDN_COST,
9494           decode(pjp1_i.RELATIONSHIP_TYPE
9495                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9496                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9497                    || '_' || pjp1_i.SUP_STATUS_CODE,
9498                  'LW_N_Y_', to_number(null),
9499                           pjp1_i.ETC_BRDN_COST)       ETC_BRDN_COST,
9500           decode(pjp1_i.RELATIONSHIP_TYPE
9501                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9502                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9503                    || '_' || pjp1_i.SUP_STATUS_CODE,
9504                  'LW_N_Y_', to_number(null),
9505                           pjp1_i.ETC_RAW_COST)        ETC_RAW_COST,
9506           decode(pjp1_i.RELATIONSHIP_TYPE
9507                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9508                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9509                    || '_' || pjp1_i.SUP_STATUS_CODE,
9510                  'LW_N_Y_', to_number(null),
9511                           pjp1_i.ETC_LABOR_RAW_COST)  ETC_LABOR_RAW_COST,
9512           decode(pjp1_i.RELATIONSHIP_TYPE
9513                    || '_' || pjp1_i.WBS_ROLLUP_FLAG
9514                    || '_' || pjp1_i.PRG_ROLLUP_FLAG
9515                    || '_' || pjp1_i.SUP_STATUS_CODE,
9516                  'LW_N_Y_', to_number(null),
9517                           pjp1_i.ETC_EQUIP_RAW_COST)  ETC_EQUIP_RAW_COST,
9518           pjp1_i.CUSTOM1,
9519           pjp1_i.CUSTOM2,
9520           pjp1_i.CUSTOM3,
9521           pjp1_i.CUSTOM4,
9522           pjp1_i.CUSTOM5,
9523           pjp1_i.CUSTOM6,
9524           pjp1_i.CUSTOM7,
9525           pjp1_i.CUSTOM8,
9526           pjp1_i.CUSTOM9,
9527           pjp1_i.CUSTOM10,
9528           pjp1_i.CUSTOM11,
9529           pjp1_i.CUSTOM12,
9530           pjp1_i.CUSTOM13,
9531           pjp1_i.CUSTOM14,
9532           pjp1_i.CUSTOM15
9533         from
9534           (
9535         select
9536           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9537                  pjp.INSERT_FLAG, 'Y')                INSERT_FLAG,
9538           pjp.RELATIONSHIP_TYPE,
9539           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9540                  null, sub_ver.STATUS_CODE)           SUB_STATUS_CODE,
9541           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9542                  null, sup_ver.STATUS_CODE)           SUP_STATUS_CODE,
9543           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9544                  null, sup_wpa.WP_ENABLE_VERSION_FLAG)SUP_VER_ENABLED,
9545           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9546                  null, decode(pjp.PLAN_VERSION_ID,
9547                               -1, prg.SUP_ID,
9548                               -3, prg.SUP_ID,
9549                               -4, prg.SUP_ID,
9550                                   null))              SUP_ID,
9551           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9552                  null, decode(pjp.PLAN_VERSION_ID,
9553                               -1, prg.SUP_EMT_ID,
9554                               -3, prg.SUP_EMT_ID,
9555                               -4, prg.SUP_EMT_ID,
9556                                   null))              SUP_EMT_ID,
9557           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9558                  null, decode(pjp.PLAN_VERSION_ID,
9559                               -1, prg.WP_FLAG,
9560                               -3, prg.WP_FLAG,
9561                               -4, prg.WP_FLAG,
9562                                   null))              SUP_WP_FLAG,
9563           1                                           WORKER_ID,
9564           -- p_worker_id                              WORKER_ID,
9565           'W'                                         RECORD_TYPE,
9566           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9567                  l_level, prg.SUP_LEVEL)              PRG_LEVEL,
9568           pjp.LINE_TYPE,
9569           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9570                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID)  PROJECT_ID,
9571           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9572                  pjp.PROJECT_ORG_ID,
9573                  prg.SUP_PROJECT_ORG_ID)              PROJECT_ORG_ID,
9574           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9575                  pjp.PROJECT_ORGANIZATION_ID,
9576                  prg.SUP_PROJECT_ORGANIZATION_ID)     PROJECT_ORGANIZATION_ID,
9577           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9578                  pjp.PROJECT_ELEMENT_ID,
9579                  prg.SUB_ROLLUP_ID)                   PROJECT_ELEMENT_ID,
9580           pjp.TIME_ID,
9581           pjp.PERIOD_TYPE_ID,
9582           pjp.CALENDAR_TYPE,
9583           pjp.RBS_AGGR_LEVEL,
9584           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9585                  pjp.WBS_ROLLUP_FLAG, 'N')            WBS_ROLLUP_FLAG,
9586           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9587                  pjp.PRG_ROLLUP_FLAG, 'Y')            PRG_ROLLUP_FLAG,
9588           pjp.CURR_RECORD_TYPE_ID,
9589           pjp.CURRENCY_CODE,
9590           pjp.RBS_ELEMENT_ID,
9591           pjp.RBS_VERSION_ID,
9592           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9593                  pjp.PLAN_VERSION_ID,
9594                  decode(pjp.PLAN_VERSION_ID,
9595                         -1, pjp.PLAN_VERSION_ID,
9596                         -2, pjp.PLAN_VERSION_ID,
9597                         -3, pjp.PLAN_VERSION_ID,
9598                         -4, pjp.PLAN_VERSION_ID,
9599                             wbs_hdr.PLAN_VERSION_ID)) PLAN_VERSION_ID,
9600           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
9601                  pjp.PLAN_TYPE_ID,
9602                  decode(pjp.PLAN_VERSION_ID,
9603                         -1, pjp.PLAN_TYPE_ID,
9604                         -2, pjp.PLAN_TYPE_ID,
9605                         -3, pjp.PLAN_TYPE_ID,
9606                         -4, pjp.PLAN_TYPE_ID,
9607                             wbs_hdr.PLAN_TYPE_ID))    PLAN_TYPE_ID,
9608           pjp.PLAN_TYPE_CODE,
9609           sum(pjp.RAW_COST)                           RAW_COST,
9610           sum(pjp.BRDN_COST)                          BRDN_COST,
9611           sum(pjp.REVENUE)                            REVENUE,
9612           sum(pjp.BILL_RAW_COST)                      BILL_RAW_COST,
9613           sum(pjp.BILL_BRDN_COST)                     BILL_BRDN_COST,
9614           sum(pjp.BILL_LABOR_RAW_COST)                BILL_LABOR_RAW_COST,
9615           sum(pjp.BILL_LABOR_BRDN_COST)               BILL_LABOR_BRDN_COST,
9616           sum(pjp.BILL_LABOR_HRS)                     BILL_LABOR_HRS,
9617           sum(pjp.EQUIPMENT_RAW_COST)                 EQUIPMENT_RAW_COST,
9618           sum(pjp.EQUIPMENT_BRDN_COST)                EQUIPMENT_BRDN_COST,
9619           sum(pjp.CAPITALIZABLE_RAW_COST)             CAPITALIZABLE_RAW_COST,
9620           sum(pjp.CAPITALIZABLE_BRDN_COST)            CAPITALIZABLE_BRDN_COST,
9621           sum(pjp.LABOR_RAW_COST)                     LABOR_RAW_COST,
9622           sum(pjp.LABOR_BRDN_COST)                    LABOR_BRDN_COST,
9623           sum(pjp.LABOR_HRS)                          LABOR_HRS,
9624           sum(pjp.LABOR_REVENUE)                      LABOR_REVENUE,
9625           sum(pjp.EQUIPMENT_HOURS)                    EQUIPMENT_HOURS,
9626           sum(pjp.BILLABLE_EQUIPMENT_HOURS)           BILLABLE_EQUIPMENT_HOURS,
9627           sum(pjp.SUP_INV_COMMITTED_COST)             SUP_INV_COMMITTED_COST,
9628           sum(pjp.PO_COMMITTED_COST)                  PO_COMMITTED_COST,
9629           sum(pjp.PR_COMMITTED_COST)                  PR_COMMITTED_COST,
9630           sum(pjp.OTH_COMMITTED_COST)                 OTH_COMMITTED_COST,
9631           sum(pjp.ACT_LABOR_HRS)                      ACT_LABOR_HRS,
9632           sum(pjp.ACT_EQUIP_HRS)                      ACT_EQUIP_HRS,
9633           sum(pjp.ACT_LABOR_BRDN_COST)                ACT_LABOR_BRDN_COST,
9634           sum(pjp.ACT_EQUIP_BRDN_COST)                ACT_EQUIP_BRDN_COST,
9635           sum(pjp.ACT_BRDN_COST)                      ACT_BRDN_COST,
9636           sum(pjp.ACT_RAW_COST)                       ACT_RAW_COST,
9637           sum(pjp.ACT_REVENUE)                        ACT_REVENUE,
9638           sum(pjp.ACT_LABOR_RAW_COST)                 ACT_LABOR_RAW_COST,
9639           sum(pjp.ACT_EQUIP_RAW_COST)                 ACT_EQUIP_RAW_COST,
9640           sum(pjp.ETC_LABOR_HRS)                      ETC_LABOR_HRS,
9641           sum(pjp.ETC_EQUIP_HRS)                      ETC_EQUIP_HRS,
9642           sum(pjp.ETC_LABOR_BRDN_COST)                ETC_LABOR_BRDN_COST,
9643           sum(pjp.ETC_EQUIP_BRDN_COST)                ETC_EQUIP_BRDN_COST,
9644           sum(pjp.ETC_BRDN_COST)                      ETC_BRDN_COST,
9645           sum(pjp.ETC_RAW_COST)                       ETC_RAW_COST,
9646           sum(pjp.ETC_LABOR_RAW_COST)                 ETC_LABOR_RAW_COST,
9647           sum(pjp.ETC_EQUIP_RAW_COST)                 ETC_EQUIP_RAW_COST,
9648           sum(pjp.CUSTOM1)                            CUSTOM1,
9649           sum(pjp.CUSTOM2)                            CUSTOM2,
9650           sum(pjp.CUSTOM3)                            CUSTOM3,
9651           sum(pjp.CUSTOM4)                            CUSTOM4,
9652           sum(pjp.CUSTOM5)                            CUSTOM5,
9653           sum(pjp.CUSTOM6)                            CUSTOM6,
9654           sum(pjp.CUSTOM7)                            CUSTOM7,
9655           sum(pjp.CUSTOM8)                            CUSTOM8,
9656           sum(pjp.CUSTOM9)                            CUSTOM9,
9657           sum(pjp.CUSTOM10)                           CUSTOM10,
9658           sum(pjp.CUSTOM11)                           CUSTOM11,
9659           sum(pjp.CUSTOM12)                           CUSTOM12,
9660           sum(pjp.CUSTOM13)                           CUSTOM13,
9661           sum(pjp.CUSTOM14)                           CUSTOM14,
9662           sum(pjp.CUSTOM15)                           CUSTOM15
9663         from
9664           (
9665           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
9666                  -- get incremental task level amounts from source and
9667                  -- program rollup amounts from interim
9668             to_char(null)                             LINE_TYPE,
9669             wbs_hdr.WBS_VERSION_ID,
9670             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
9671             decode(wbs_hdr.WP_FLAG
9672                      || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
9673                      || '_' || nvl(fin_plan.INVERT_ID, 'PRJ'),
9674                    'N_1_PRJ', 'N',
9675                    'N_-1_PRG', 'N',
9676                    decode(top_slice.INVERT_ID,
9677                           'PRJ', 'Y',
9678                           decode(wbs.SUB_LEVEL,
9679                                  1, 'Y', 'N')))       PUSHUP_FLAG,
9680             decode(pjp1.RBS_AGGR_LEVEL,
9681                    'L', 'N',
9682                         decode(wbs_hdr.WP_FLAG
9683                                  || '_' || to_char(sign(pjp1.PLAN_VERSION_ID))
9684                                  || '_' || fin_plan.INVERT_ID,
9685                                'N_1_PRG', decode(top_slice.INVERT_ID,
9686                                                  'PRJ', 'Y',
9687                                                  decode(wbs.SUB_LEVEL,
9688                                                         1, 'Y', 'N')),
9689                                'N_-1_PRG', 'N',
9690                                decode(wbs_hdr.WP_FLAG
9691                                         || '_' || fin_plan.INVERT_ID
9692                                         || '_' || fin_plan.CB
9693                                         || '_' || fin_plan.CO
9694                                         || '_'
9695                                         || to_char(fin_plan.PLAN_VERSION_ID),
9696                                       'N_PRJ_Y_Y_-4', 'N',
9697                                                       'Y'))
9698                   )                                   INSERT_FLAG,
9699             pjp1.PROJECT_ID,
9700             pjp1.PROJECT_ORG_ID,
9701             pjp1.PROJECT_ORGANIZATION_ID,
9702             decode(top_slice.INVERT_ID,
9703                    'PRJ', prg.SUP_EMT_ID,
9704                           decode(wbs.SUB_LEVEL,
9705                                  1, prg.SUP_EMT_ID,
9706                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
9707             pjp1.TIME_ID,
9708             pjp1.PERIOD_TYPE_ID,
9709             pjp1.CALENDAR_TYPE,
9710             pjp1.RBS_AGGR_LEVEL,
9711             'Y'                                       WBS_ROLLUP_FLAG,
9712             pjp1.PRG_ROLLUP_FLAG,
9713             pjp1.CURR_RECORD_TYPE_ID,
9714             pjp1.CURRENCY_CODE,
9715             pjp1.RBS_ELEMENT_ID,
9716             pjp1.RBS_VERSION_ID,
9717             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
9718                    'N_PRG', fin_plan.PLAN_VERSION_ID,
9719                             pjp1.PLAN_VERSION_ID)     PLAN_VERSION_ID,
9720             pjp1.PLAN_TYPE_ID,
9721             pjp1.PLAN_TYPE_CODE,
9722             pjp1.RAW_COST,
9723             pjp1.BRDN_COST,
9724             pjp1.REVENUE,
9725             pjp1.BILL_RAW_COST,
9726             pjp1.BILL_BRDN_COST,
9727             pjp1.BILL_LABOR_RAW_COST,
9728             pjp1.BILL_LABOR_BRDN_COST,
9729             pjp1.BILL_LABOR_HRS,
9730             pjp1.EQUIPMENT_RAW_COST,
9731             pjp1.EQUIPMENT_BRDN_COST,
9732             pjp1.CAPITALIZABLE_RAW_COST,
9733             pjp1.CAPITALIZABLE_BRDN_COST,
9734             pjp1.LABOR_RAW_COST,
9735             pjp1.LABOR_BRDN_COST,
9736             pjp1.LABOR_HRS,
9737             pjp1.LABOR_REVENUE,
9738             pjp1.EQUIPMENT_HOURS,
9739             pjp1.BILLABLE_EQUIPMENT_HOURS,
9740             pjp1.SUP_INV_COMMITTED_COST,
9741             pjp1.PO_COMMITTED_COST,
9742             pjp1.PR_COMMITTED_COST,
9743             pjp1.OTH_COMMITTED_COST,
9744             pjp1.ACT_LABOR_HRS,
9745             pjp1.ACT_EQUIP_HRS,
9746             pjp1.ACT_LABOR_BRDN_COST,
9747             pjp1.ACT_EQUIP_BRDN_COST,
9748             pjp1.ACT_BRDN_COST,
9749             pjp1.ACT_RAW_COST,
9750             pjp1.ACT_REVENUE,
9751             pjp1.ACT_LABOR_RAW_COST,
9752             pjp1.ACT_EQUIP_RAW_COST,
9753             pjp1.ETC_LABOR_HRS,
9754             pjp1.ETC_EQUIP_HRS,
9755             pjp1.ETC_LABOR_BRDN_COST,
9756             pjp1.ETC_EQUIP_BRDN_COST,
9757             pjp1.ETC_BRDN_COST,
9758             pjp1.ETC_RAW_COST,
9759             pjp1.ETC_LABOR_RAW_COST,
9760             pjp1.ETC_EQUIP_RAW_COST,
9761             pjp1.CUSTOM1,
9762             pjp1.CUSTOM2,
9763             pjp1.CUSTOM3,
9764             pjp1.CUSTOM4,
9765             pjp1.CUSTOM5,
9766             pjp1.CUSTOM6,
9767             pjp1.CUSTOM7,
9768             pjp1.CUSTOM8,
9769             pjp1.CUSTOM9,
9770             pjp1.CUSTOM10,
9771             pjp1.CUSTOM11,
9772             pjp1.CUSTOM12,
9773             pjp1.CUSTOM13,
9774             pjp1.CUSTOM14,
9775             pjp1.CUSTOM15
9776           from
9777             PJI_FP_AGGR_PJP1_T pjp1,
9778             PJI_PJP_WBS_HEADER wbs_hdr,
9779             PA_XBS_DENORM      wbs,
9780             PJI_XBS_DENORM     prg,
9781             (
9782               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
9783               from DUAL union all
9784               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
9785               from DUAL union all
9786               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
9787               from DUAL union all
9788               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
9789               from DUAL union all
9790               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
9791               from DUAL union all
9792               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
9793               from DUAL union all
9794               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
9795               from DUAL union all
9796               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
9797               from DUAL
9798             ) fin_plan,
9799             (
9800               select 1     WBS_SUP_LEVEL,
9801                      1     WBS_SUB_LEVEL,
9802                      'PRJ' INVERT_ID
9803               from   DUAL
9804               union all
9805               select 1     WBS_SUP_LEVEL,
9806                      1     WBS_SUB_LEVEL,
9807                      'WBS' INVERT_ID
9808               from   DUAL
9809             ) top_slice
9810           where
9811             prg.STRUCT_TYPE         =  'PRG'                       and
9812             prg.SUP_LEVEL           =  l_level                     and
9813             prg.SUB_LEVEL           =  l_level                     and
9814             wbs.STRUCT_TYPE         =  'WBS'                       and
9815             ((wbs.SUP_LEVEL = 1 and
9816               wbs.SUB_LEVEL = 1) or
9817              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
9818             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
9819             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
9820             -- pjp1.WORKER_ID       =  p_worker_id                 and
9821             pjp1.PRG_LEVEL          in (0, l_level)                and
9822             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')                  and
9823             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
9824             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
9825             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
9826             pjp1.PLAN_VERSION_ID    =  wbs_hdr.PLAN_VERSION_ID     and
9827             pjp1.PLAN_TYPE_CODE     =  wbs_hdr.PLAN_TYPE_CODE      and
9828             decode(pjp1.PLAN_VERSION_ID,
9829                    -3, pjp1.PLAN_TYPE_ID,
9830                    -4, pjp1.PLAN_TYPE_ID,
9831                        -1)          =  decode(pjp1.PLAN_VERSION_ID,
9832                                               -3, wbs_hdr.PLAN_TYPE_ID,
9833                                               -4, wbs_hdr.PLAN_TYPE_ID,
9834                                                   -1)              and
9835             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
9836             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
9837             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
9838             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
9839             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
9840             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
9841           union all
9842           select /*+ ordered */
9843                  -- get incremental project level amounts from source
9844             to_char(null)                             LINE_TYPE,
9845             wbs_hdr.WBS_VERSION_ID,
9846             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
9847             'Y'                                       PUSHUP_FLAG,
9848             decode(pjp1.RBS_AGGR_LEVEL,
9849                    'L', 'N',
9850                         decode(fin_plan.PLAN_VERSION_ID,
9851                                null, 'N', 'Y'))       INSERT_FLAG,
9852             pjp1.PROJECT_ID,
9853             pjp1.PROJECT_ORG_ID,
9854             pjp1.PROJECT_ORGANIZATION_ID,
9855             pjp1.PROJECT_ELEMENT_ID,
9856             pjp1.TIME_ID,
9857             pjp1.PERIOD_TYPE_ID,
9858             pjp1.CALENDAR_TYPE,
9859             pjp1.RBS_AGGR_LEVEL,
9860             'Y'                                       WBS_ROLLUP_FLAG,
9861             pjp1.PRG_ROLLUP_FLAG,
9862             pjp1.CURR_RECORD_TYPE_ID,
9863             pjp1.CURRENCY_CODE,
9864             pjp1.RBS_ELEMENT_ID,
9865             pjp1.RBS_VERSION_ID,
9866             decode(wbs_hdr.WP_FLAG,
9867                    'N', decode(pjp1.PLAN_VERSION_ID,
9868                                -1, pjp1.PLAN_VERSION_ID,
9869                                -2, pjp1.PLAN_VERSION_ID,
9870                                -3, pjp1.PLAN_VERSION_ID, -- won't exist
9871                                -4, pjp1.PLAN_VERSION_ID, -- won't exist
9872                                    fin_plan.PLAN_VERSION_ID),
9873                         pjp1.PLAN_VERSION_ID)         PLAN_VERSION_ID,
9874             pjp1.PLAN_TYPE_ID,
9875             pjp1.PLAN_TYPE_CODE,
9876             pjp1.RAW_COST,
9877             pjp1.BRDN_COST,
9878             pjp1.REVENUE,
9879             pjp1.BILL_RAW_COST,
9880             pjp1.BILL_BRDN_COST,
9881             pjp1.BILL_LABOR_RAW_COST,
9882             pjp1.BILL_LABOR_BRDN_COST,
9883             pjp1.BILL_LABOR_HRS,
9884             pjp1.EQUIPMENT_RAW_COST,
9885             pjp1.EQUIPMENT_BRDN_COST,
9886             pjp1.CAPITALIZABLE_RAW_COST,
9887             pjp1.CAPITALIZABLE_BRDN_COST,
9888             pjp1.LABOR_RAW_COST,
9889             pjp1.LABOR_BRDN_COST,
9890             pjp1.LABOR_HRS,
9891             pjp1.LABOR_REVENUE,
9892             pjp1.EQUIPMENT_HOURS,
9893             pjp1.BILLABLE_EQUIPMENT_HOURS,
9894             pjp1.SUP_INV_COMMITTED_COST,
9895             pjp1.PO_COMMITTED_COST,
9896             pjp1.PR_COMMITTED_COST,
9897             pjp1.OTH_COMMITTED_COST,
9898             pjp1.ACT_LABOR_HRS,
9899             pjp1.ACT_EQUIP_HRS,
9900             pjp1.ACT_LABOR_BRDN_COST,
9901             pjp1.ACT_EQUIP_BRDN_COST,
9902             pjp1.ACT_BRDN_COST,
9903             pjp1.ACT_RAW_COST,
9904             pjp1.ACT_REVENUE,
9905             pjp1.ACT_LABOR_RAW_COST,
9906             pjp1.ACT_EQUIP_RAW_COST,
9907             pjp1.ETC_LABOR_HRS,
9908             pjp1.ETC_EQUIP_HRS,
9909             pjp1.ETC_LABOR_BRDN_COST,
9910             pjp1.ETC_EQUIP_BRDN_COST,
9911             pjp1.ETC_BRDN_COST,
9912             pjp1.ETC_RAW_COST,
9913             pjp1.ETC_LABOR_RAW_COST,
9914             pjp1.ETC_EQUIP_RAW_COST,
9915             pjp1.CUSTOM1,
9916             pjp1.CUSTOM2,
9917             pjp1.CUSTOM3,
9918             pjp1.CUSTOM4,
9919             pjp1.CUSTOM5,
9920             pjp1.CUSTOM6,
9921             pjp1.CUSTOM7,
9922             pjp1.CUSTOM8,
9923             pjp1.CUSTOM9,
9924             pjp1.CUSTOM10,
9925             pjp1.CUSTOM11,
9926             pjp1.CUSTOM12,
9927             pjp1.CUSTOM13,
9928             pjp1.CUSTOM14,
9929             pjp1.CUSTOM15
9930           from
9931             PJI_FP_AGGR_PJP1_T pjp1,
9932             PJI_PJP_WBS_HEADER wbs_hdr,
9933             PJI_XBS_DENORM     prg,
9934             (
9935               select 'Y' CB_FLAG,
9936                      'N' CO_FLAG,
9937                      -3  PLAN_VERSION_ID
9938               from DUAL union all
9939               select 'N' CB_FLAG,
9940                      'Y' CO_FLAG,
9941                      -4  PLAN_VERSION_ID
9942               from DUAL union all
9943               select 'Y' CB_FLAG,
9944                      'Y' CO_FLAG,
9945                      -3  PLAN_VERSION_ID
9946               from DUAL union all
9947               select 'Y' CB_FLAG,
9948                      'Y' CO_FLAG,
9949                      -4  PLAN_VERSION_ID
9950               from DUAL
9951             ) fin_plan
9952           where
9953             prg.STRUCT_TYPE         = 'PRG'                    and
9954             prg.SUP_LEVEL           = l_level                  and
9955             prg.SUB_LEVEL           = l_level                  and
9956             -- pjp1.WORKER_ID       = p_worker_id              and
9957             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID       and
9958             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID           and
9959             pjp1.PRG_LEVEL          = 0                        and
9960             pjp1.RBS_AGGR_LEVEL     in ('T', 'L')              and
9961             pjp1.WBS_ROLLUP_FLAG    = 'N'                      and
9962             pjp1.PRG_ROLLUP_FLAG    = 'N'                      and
9963             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID          and
9964             wbs_hdr.PLAN_VERSION_ID = pjp1.PLAN_VERSION_ID     and
9965             wbs_hdr.PLAN_TYPE_CODE  = pjp1.PLAN_TYPE_CODE      and
9966             decode(wbs_hdr.WP_FLAG,
9967                    'N', decode(pjp1.PLAN_VERSION_ID,
9968                                -1, 'Y',
9969                                -2, 'Y',
9970                                -3, 'Y', -- won't exist
9971                                -4, 'Y', -- won't exist
9972                                    decode(wbs_hdr.CB_FLAG || '_' ||
9973                                           wbs_hdr.CO_FLAG,
9974                                           'Y_Y', 'Y',
9975                                           'N_Y', 'Y',
9976                                           'Y_N', 'Y',
9977                                                  'N')),
9978                         'Y')        =  'Y'                     and
9979             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID               and
9980             wbs_hdr.CB_FLAG         = fin_plan.CB_FLAG     (+) and
9981             wbs_hdr.CO_FLAG         = fin_plan.CO_FLAG     (+)
9982           union all
9983           select /*+ ordered
9984                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
9985                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
9986                  -- get delta task level amounts from Reporting Lines
9987             to_char(null)                             LINE_TYPE,
9988             wbs_hdr.WBS_VERSION_ID,
9989             decode(wbs_hdr.WP_FLAG, 'Y', 'LW', 'LF')  RELATIONSHIP_TYPE,
9990             decode(log.EVENT_TYPE,
9991                    'WBS_CHANGE', 'Y',
9992                    'WBS_PUBLISH', 'N')                PUSHUP_FLAG,
9993             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
9994                    'N_PRG', decode(top_slice.INVERT_ID,
9995                                    'PRJ', 'Y',
9996                                    decode(wbs.SUB_LEVEL,
9997                                           1, 'Y', 'N')),
9998                    decode(wbs_hdr.WP_FLAG
9999                             || '_' || fin_plan.INVERT_ID
10000                             || '_' || fin_plan.CB
10001                             || '_' || fin_plan.CO
10002                             || '_' || to_char(fin_plan.PLAN_VERSION_ID),
10003                           'N_PRJ_Y_Y_-4', 'N',
10004                                           'Y'))       INSERT_FLAG,
10005             fpr.PROJECT_ID,
10006             fpr.PROJECT_ORG_ID,
10007             fpr.PROJECT_ORGANIZATION_ID,
10008             decode(top_slice.INVERT_ID,
10009                    'PRJ', prg.SUP_EMT_ID,
10010                           decode(wbs.SUB_LEVEL,
10011                                  1, prg.SUP_EMT_ID,
10012                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
10013             fpr.TIME_ID,
10014             fpr.PERIOD_TYPE_ID,
10015             fpr.CALENDAR_TYPE,
10016             fpr.RBS_AGGR_LEVEL,
10017             'Y'                                       WBS_ROLLUP_FLAG,
10018             fpr.PRG_ROLLUP_FLAG,
10019             fpr.CURR_RECORD_TYPE_ID,
10020             fpr.CURRENCY_CODE,
10021             fpr.RBS_ELEMENT_ID,
10022             fpr.RBS_VERSION_ID,
10023             decode(wbs_hdr.WP_FLAG || '_' || fin_plan.INVERT_ID,
10024                    'N_PRG', fin_plan.PLAN_VERSION_ID,
10025                             fpr.PLAN_VERSION_ID)      PLAN_VERSION_ID,
10026             fpr.PLAN_TYPE_ID,
10027             fpr.PLAN_TYPE_CODE,
10028             wbs.SIGN * fpr.RAW_COST                   RAW_COST,
10029             wbs.SIGN * fpr.BRDN_COST                  BRDN_COST,
10030             wbs.SIGN * fpr.REVENUE                    REVENUE,
10031             wbs.SIGN * fpr.BILL_RAW_COST              BILL_RAW_COST,
10032             wbs.SIGN * fpr.BILL_BRDN_COST             BILL_BRDN_COST,
10033             wbs.SIGN * fpr.BILL_LABOR_RAW_COST        BILL_LABOR_RAW_COST,
10034             wbs.SIGN * fpr.BILL_LABOR_BRDN_COST       BILL_LABOR_BRDN_COST,
10035             wbs.SIGN * fpr.BILL_LABOR_HRS             BILL_LABOR_HRS,
10036             wbs.SIGN * fpr.EQUIPMENT_RAW_COST         EQUIPMENT_RAW_COST,
10037             wbs.SIGN * fpr.EQUIPMENT_BRDN_COST        EQUIPMENT_BRDN_COST,
10038             wbs.SIGN * fpr.CAPITALIZABLE_RAW_COST     CAPITALIZABLE_RAW_COST,
10039             wbs.SIGN * fpr.CAPITALIZABLE_BRDN_COST    CAPITALIZABLE_BRDN_COST,
10040             wbs.SIGN * fpr.LABOR_RAW_COST             LABOR_RAW_COST,
10041             wbs.SIGN * fpr.LABOR_BRDN_COST            LABOR_BRDN_COST,
10042             wbs.SIGN * fpr.LABOR_HRS                  LABOR_HRS,
10043             wbs.SIGN * fpr.LABOR_REVENUE              LABOR_REVENUE,
10044             wbs.SIGN * fpr.EQUIPMENT_HOURS            EQUIPMENT_HOURS,
10045             wbs.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS   BILLABLE_EQUIPMENT_HOURS,
10046             wbs.SIGN * fpr.SUP_INV_COMMITTED_COST     SUP_INV_COMMITTED_COST,
10047             wbs.SIGN * fpr.PO_COMMITTED_COST          PO_COMMITTED_COST,
10048             wbs.SIGN * fpr.PR_COMMITTED_COST          PR_COMMITTED_COST,
10049             wbs.SIGN * fpr.OTH_COMMITTED_COST         OTH_COMMITTED_COST,
10050             wbs.SIGN * fpr.ACT_LABOR_HRS              ACT_LABOR_HRS,
10051             wbs.SIGN * fpr.ACT_EQUIP_HRS              ACT_EQUIP_HRS,
10052             wbs.SIGN * fpr.ACT_LABOR_BRDN_COST        ACT_LABOR_BRDN_COST,
10053             wbs.SIGN * fpr.ACT_EQUIP_BRDN_COST        ACT_EQUIP_BRDN_COST,
10054             wbs.SIGN * fpr.ACT_BRDN_COST              ACT_BRDN_COST,
10055             wbs.SIGN * fpr.ACT_RAW_COST               ACT_RAW_COST,
10056             wbs.SIGN * fpr.ACT_REVENUE                ACT_REVENUE,
10057             wbs.SIGN * fpr.ACT_LABOR_RAW_COST         ACT_LABOR_RAW_COST,
10058             wbs.SIGN * fpr.ACT_EQUIP_RAW_COST         ACT_EQUIP_RAW_COST,
10059             wbs.SIGN * fpr.ETC_LABOR_HRS              ETC_LABOR_HRS,
10060             wbs.SIGN * fpr.ETC_EQUIP_HRS              ETC_EQUIP_HRS,
10061             wbs.SIGN * fpr.ETC_LABOR_BRDN_COST        ETC_LABOR_BRDN_COST,
10062             wbs.SIGN * fpr.ETC_EQUIP_BRDN_COST        ETC_EQUIP_BRDN_COST,
10063             wbs.SIGN * fpr.ETC_BRDN_COST              ETC_BRDN_COST,
10064             wbs.SIGN * fpr.ETC_RAW_COST               ETC_RAW_COST,
10065             wbs.SIGN * fpr.ETC_LABOR_RAW_COST         ETC_LABOR_RAW_COST,
10066             wbs.SIGN * fpr.ETC_EQUIP_RAW_COST         ETC_EQUIP_RAW_COST,
10067             wbs.SIGN * fpr.CUSTOM1                    CUSTOM1,
10068             wbs.SIGN * fpr.CUSTOM2                    CUSTOM2,
10069             wbs.SIGN * fpr.CUSTOM3                    CUSTOM3,
10070             wbs.SIGN * fpr.CUSTOM4                    CUSTOM4,
10071             wbs.SIGN * fpr.CUSTOM5                    CUSTOM5,
10072             wbs.SIGN * fpr.CUSTOM6                    CUSTOM6,
10073             wbs.SIGN * fpr.CUSTOM7                    CUSTOM7,
10074             wbs.SIGN * fpr.CUSTOM8                    CUSTOM8,
10075             wbs.SIGN * fpr.CUSTOM9                    CUSTOM9,
10076             wbs.SIGN * fpr.CUSTOM10                   CUSTOM10,
10077             wbs.SIGN * fpr.CUSTOM11                   CUSTOM11,
10078             wbs.SIGN * fpr.CUSTOM12                   CUSTOM12,
10079             wbs.SIGN * fpr.CUSTOM13                   CUSTOM13,
10080             wbs.SIGN * fpr.CUSTOM14                   CUSTOM14,
10081             wbs.SIGN * fpr.CUSTOM15                   CUSTOM15
10082           from
10083             PA_PJI_PROJ_EVENTS_LOG log,
10084             PJI_PJP_WBS_HEADER     wbs_hdr,
10085             PJI_XBS_DENORM_DELTA_T wbs,
10086             PJI_XBS_DENORM         prg,
10087             PJI_FP_XBS_ACCUM_F     fpr,
10088             (
10089               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
10090               from DUAL union all
10091               select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
10092               from DUAL union all
10093               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
10094               from DUAL union all
10095               select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
10096               from DUAL union all
10097               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRG' INVERT_ID
10098               from DUAL union all
10099               select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID, 'PRJ' INVERT_ID
10100               from DUAL union all
10101               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRG' INVERT_ID
10102               from DUAL union all
10103               select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID, 'PRJ' INVERT_ID
10104               from DUAL
10105             ) fin_plan,
10106             (
10107               select 1     WBS_SUP_LEVEL,
10108                      1     WBS_SUB_LEVEL,
10109                      'PRJ' INVERT_ID
10110               from   DUAL
10111               union all
10112               select 1     WBS_SUP_LEVEL,
10113                      1     WBS_SUB_LEVEL,
10114                      'WBS' INVERT_ID
10115               from   DUAL
10116             ) top_slice
10117           where
10118             prg.STRUCT_TYPE         =  'PRG'                       and
10119             prg.SUP_LEVEL           =  l_level                     and
10120             prg.SUB_LEVEL           =  l_level                     and
10121             -- wbs.WORKER_ID        =  p_worker_id                 and
10122             wbs.STRUCT_TYPE         =  'WBS'                       and
10123             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
10124             -- log.WORKER_ID        =  p_worker_id                 and
10125             log.EVENT_ID            =  g_event_id                  and
10126             log.EVENT_TYPE          in ('WBS_CHANGE',
10127                                         'WBS_PUBLISH')             and
10128             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
10129             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
10130             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
10131             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
10132             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
10133             fpr.RBS_AGGR_LEVEL      =  'T'                         and
10134             fpr.WBS_ROLLUP_FLAG     =  'N'                         and
10135             fpr.PRG_ROLLUP_FLAG     in ('Y', 'N')                  and
10136             fpr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
10137             fpr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
10138             fpr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
10139             fpr.PLAN_VERSION_ID     =  wbs_hdr.PLAN_VERSION_ID     and
10140             fpr.PLAN_TYPE_CODE      =  wbs_hdr.PLAN_TYPE_CODE      and
10141             decode(fpr.PLAN_VERSION_ID,
10142                    -3, fpr.PLAN_TYPE_ID,
10143                    -4, fpr.PLAN_TYPE_ID,
10144                        -1)          =  decode(fpr.PLAN_VERSION_ID,
10145                                               -3, wbs_hdr.PLAN_TYPE_ID,
10146                                               -4, wbs_hdr.PLAN_TYPE_ID,
10147                                                   -1)              and
10148             wbs_hdr.CB_FLAG         =  fin_plan.CB             (+) and
10149             wbs_hdr.CO_FLAG         =  fin_plan.CO             (+) and
10150             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
10151             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
10152             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
10153              (wbs.SUP_LEVEL = 1 and
10154               wbs.SUB_LEVEL = 1))
10155           union all
10156           select /*+ ordered
10157                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
10158                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
10159                  -- Baseline reversals and fact amounts  (-3 slice)
10160                  -- Current Original reversals and fact amounts  (-4 slice)
10161                  -- Part 1
10162             to_char(null)                             LINE_TYPE,
10163             wbs_hdr.WBS_VERSION_ID,
10164             'LF'                                      RELATIONSHIP_TYPE,
10165             'Y'                                       PUSHUP_FLAG,
10166             decode(fpr.RBS_AGGR_LEVEL,
10167                    'L', 'N', 'Y')                     INSERT_FLAG,
10168             fpr.PROJECT_ID,
10169             fpr.PROJECT_ORG_ID,
10170             fpr.PROJECT_ORGANIZATION_ID,
10171             prg.SUP_EMT_ID                            PROJECT_ELEMENT_ID,
10172             fpr.TIME_ID,
10173             fpr.PERIOD_TYPE_ID,
10174             fpr.CALENDAR_TYPE,
10175             fpr.RBS_AGGR_LEVEL,
10176             'Y'                                       WBS_ROLLUP_FLAG,
10177             fpr.PRG_ROLLUP_FLAG,
10178             fpr.CURR_RECORD_TYPE_ID,
10179             fpr.CURRENCY_CODE,
10180             fpr.RBS_ELEMENT_ID,
10181             fpr.RBS_VERSION_ID,
10182             decode(log.EVENT_TYPE,
10183                    'PLAN_BASELINE', -3,
10184                    'PLAN_ORIGINAL', -4)               PLAN_VERSION_ID,
10185             fpr.PLAN_TYPE_ID,
10186             fpr.PLAN_TYPE_CODE,
10187             decode(fpr.PLAN_VERSION_ID,
10188                    log.ATTRIBUTE3,   -1,
10189                    log.EVENT_OBJECT,  1,
10190                    -3,               -1,
10191                    -4,               -1)
10192               * fpr.RAW_COST                          RAW_COST,
10193             decode(fpr.PLAN_VERSION_ID,
10194                    log.ATTRIBUTE3,   -1,
10195                    log.EVENT_OBJECT,  1,
10196                    -3,               -1,
10197                    -4,               -1)
10198               * fpr.BRDN_COST                         BRDN_COST,
10199             decode(fpr.PLAN_VERSION_ID,
10200                    log.ATTRIBUTE3,   -1,
10201                    log.EVENT_OBJECT,  1,
10202                    -3,               -1,
10203                    -4,               -1)
10204               * fpr.REVENUE                           REVENUE,
10205             decode(fpr.PLAN_VERSION_ID,
10206                    log.ATTRIBUTE3,   -1,
10207                    log.EVENT_OBJECT,  1,
10208                    -3,               -1,
10209                    -4,               -1)
10210               * fpr.BILL_RAW_COST                     BILL_RAW_COST,
10211             decode(fpr.PLAN_VERSION_ID,
10212                    log.ATTRIBUTE3,   -1,
10213                    log.EVENT_OBJECT,  1,
10214                    -3,               -1,
10215                    -4,               -1)
10216               * fpr.BILL_BRDN_COST                    BILL_BRDN_COST,
10217             decode(fpr.PLAN_VERSION_ID,
10218                    log.ATTRIBUTE3,   -1,
10219                    log.EVENT_OBJECT,  1,
10220                    -3,               -1,
10221                    -4,               -1)
10222               * fpr.BILL_LABOR_RAW_COST               BILL_LABOR_RAW_COST,
10223             decode(fpr.PLAN_VERSION_ID,
10224                    log.ATTRIBUTE3,   -1,
10225                    log.EVENT_OBJECT,  1,
10226                    -3,               -1,
10227                    -4,               -1)
10228               * fpr.BILL_LABOR_BRDN_COST              BILL_LABOR_BRDN_COST,
10229             decode(fpr.PLAN_VERSION_ID,
10230                    log.ATTRIBUTE3,   -1,
10231                    log.EVENT_OBJECT,  1,
10232                    -3,               -1,
10233                    -4,               -1)
10234               * fpr.BILL_LABOR_HRS                    BILL_LABOR_HRS,
10235             decode(fpr.PLAN_VERSION_ID,
10236                    log.ATTRIBUTE3,   -1,
10237                    log.EVENT_OBJECT,  1,
10238                    -3,               -1,
10239                    -4,               -1)
10240               * fpr.EQUIPMENT_RAW_COST                EQUIPMENT_RAW_COST,
10241             decode(fpr.PLAN_VERSION_ID,
10242                    log.ATTRIBUTE3,   -1,
10243                    log.EVENT_OBJECT,  1,
10244                    -3,               -1,
10245                    -4,               -1)
10246               * fpr.EQUIPMENT_BRDN_COST               EQUIPMENT_BRDN_COST,
10247             decode(fpr.PLAN_VERSION_ID,
10248                    log.ATTRIBUTE3,   -1,
10249                    log.EVENT_OBJECT,  1,
10250                    -3,               -1,
10251                    -4,               -1)
10252               * fpr.CAPITALIZABLE_RAW_COST            CAPITALIZABLE_RAW_COST,
10253             decode(fpr.PLAN_VERSION_ID,
10254                    log.ATTRIBUTE3,   -1,
10255                    log.EVENT_OBJECT,  1,
10256                    -3,               -1,
10257                    -4,               -1)
10258               * fpr.CAPITALIZABLE_BRDN_COST           CAPITALIZABLE_BRDN_COST,
10259             decode(fpr.PLAN_VERSION_ID,
10260                    log.ATTRIBUTE3,   -1,
10261                    log.EVENT_OBJECT,  1,
10262                    -3,               -1,
10263                    -4,               -1)
10264               * fpr.LABOR_RAW_COST                    LABOR_RAW_COST,
10265             decode(fpr.PLAN_VERSION_ID,
10266                    log.ATTRIBUTE3,   -1,
10267                    log.EVENT_OBJECT,  1,
10268                    -3,               -1,
10269                    -4,               -1)
10270               * fpr.LABOR_BRDN_COST                   LABOR_BRDN_COST,
10271             decode(fpr.PLAN_VERSION_ID,
10272                    log.ATTRIBUTE3,   -1,
10273                    log.EVENT_OBJECT,  1,
10274                    -3,               -1,
10275                    -4,               -1)
10276               * fpr.LABOR_HRS                         LABOR_HRS,
10277             decode(fpr.PLAN_VERSION_ID,
10278                    log.ATTRIBUTE3,   -1,
10279                    log.EVENT_OBJECT,  1,
10280                    -3,               -1,
10281                    -4,               -1)
10282               * fpr.LABOR_REVENUE                     LABOR_REVENUE,
10283             decode(fpr.PLAN_VERSION_ID,
10284                    log.ATTRIBUTE3,   -1,
10285                    log.EVENT_OBJECT,  1,
10286                    -3,               -1,
10287                    -4,               -1)
10288               * fpr.EQUIPMENT_HOURS                   EQUIPMENT_HOURS,
10289             decode(fpr.PLAN_VERSION_ID,
10290                    log.ATTRIBUTE3,   -1,
10291                    log.EVENT_OBJECT,  1,
10292                    -3,               -1,
10293                    -4,               -1)
10294               * fpr.BILLABLE_EQUIPMENT_HOURS          BILLABLE_EQUIPMENT_HOURS,
10295             decode(fpr.PLAN_VERSION_ID,
10296                    log.ATTRIBUTE3,   -1,
10297                    log.EVENT_OBJECT,  1,
10298                    -3,               -1,
10299                    -4,               -1)
10300               * fpr.SUP_INV_COMMITTED_COST            SUP_INV_COMMITTED_COST,
10301             decode(fpr.PLAN_VERSION_ID,
10302                    log.ATTRIBUTE3,   -1,
10303                    log.EVENT_OBJECT,  1,
10304                    -3,               -1,
10305                    -4,               -1)
10306               * fpr.PO_COMMITTED_COST                 PO_COMMITTED_COST,
10307             decode(fpr.PLAN_VERSION_ID,
10308                    log.ATTRIBUTE3,   -1,
10309                    log.EVENT_OBJECT,  1,
10310                    -3,               -1,
10311                    -4,               -1)
10312               * fpr.PR_COMMITTED_COST                 PR_COMMITTED_COST,
10313             decode(fpr.PLAN_VERSION_ID,
10314                    log.ATTRIBUTE3,   -1,
10315                    log.EVENT_OBJECT,  1,
10316                    -3,               -1,
10317                    -4,               -1)
10318               * fpr.OTH_COMMITTED_COST                OTH_COMMITTED_COST,
10319             decode(fpr.PLAN_VERSION_ID,
10320                    log.ATTRIBUTE3,   -1,
10321                    log.EVENT_OBJECT,  1,
10322                    -3,               -1,
10323                    -4,               -1)
10324               * fpr.ACT_LABOR_HRS                     ACT_LABOR_HRS,
10325             decode(fpr.PLAN_VERSION_ID,
10326                    log.ATTRIBUTE3,   -1,
10327                    log.EVENT_OBJECT,  1,
10328                    -3,               -1,
10329                    -4,               -1)
10330               * fpr.ACT_EQUIP_HRS                     ACT_EQUIP_HRS,
10331             decode(fpr.PLAN_VERSION_ID,
10332                    log.ATTRIBUTE3,   -1,
10333                    log.EVENT_OBJECT,  1,
10334                    -3,               -1,
10335                    -4,               -1)
10336               * fpr.ACT_LABOR_BRDN_COST               ACT_LABOR_BRDN_COST,
10337             decode(fpr.PLAN_VERSION_ID,
10338                    log.ATTRIBUTE3,   -1,
10339                    log.EVENT_OBJECT,  1,
10340                    -3,               -1,
10341                    -4,               -1)
10342               * fpr.ACT_EQUIP_BRDN_COST               ACT_EQUIP_BRDN_COST,
10343             decode(fpr.PLAN_VERSION_ID,
10344                    log.ATTRIBUTE3,   -1,
10345                    log.EVENT_OBJECT,  1,
10346                    -3,               -1,
10347                    -4,               -1)
10348               * fpr.ACT_BRDN_COST                     ACT_BRDN_COST,
10349             decode(fpr.PLAN_VERSION_ID,
10350                    log.ATTRIBUTE3,   -1,
10351                    log.EVENT_OBJECT,  1,
10352                    -3,               -1,
10353                    -4,               -1)
10354               * fpr.ACT_RAW_COST                      ACT_RAW_COST,
10355             decode(fpr.PLAN_VERSION_ID,
10356                    log.ATTRIBUTE3,   -1,
10357                    log.EVENT_OBJECT,  1,
10358                    -3,               -1,
10359                    -4,               -1)
10360               * fpr.ACT_REVENUE                       ACT_REVENUE,
10361             decode(fpr.PLAN_VERSION_ID,
10362                    log.ATTRIBUTE3,   -1,
10363                    log.EVENT_OBJECT,  1,
10364                    -3,               -1,
10365                    -4,               -1)
10366               * fpr.ACT_LABOR_RAW_COST                ACT_LABOR_RAW_COST,
10367             decode(fpr.PLAN_VERSION_ID,
10368                    log.ATTRIBUTE3,   -1,
10369                    log.EVENT_OBJECT,  1,
10370                    -3,               -1,
10371                    -4,               -1)
10372               * fpr.ACT_EQUIP_RAW_COST                ACT_EQUIP_RAW_COST,
10373             decode(fpr.PLAN_VERSION_ID,
10374                    log.ATTRIBUTE3,   -1,
10375                    log.EVENT_OBJECT,  1,
10376                    -3,               -1,
10377                    -4,               -1)
10378               * fpr.ETC_LABOR_HRS                     ETC_LABOR_HRS,
10379             decode(fpr.PLAN_VERSION_ID,
10380                    log.ATTRIBUTE3,   -1,
10381                    log.EVENT_OBJECT,  1,
10382                    -3,               -1,
10383                    -4,               -1)
10384               * fpr.ETC_EQUIP_HRS                     ETC_EQUIP_HRS,
10385             decode(fpr.PLAN_VERSION_ID,
10386                    log.ATTRIBUTE3,   -1,
10387                    log.EVENT_OBJECT,  1,
10388                    -3,               -1,
10389                    -4,               -1)
10390               * fpr.ETC_LABOR_BRDN_COST               ETC_LABOR_BRDN_COST,
10391             decode(fpr.PLAN_VERSION_ID,
10392                    log.ATTRIBUTE3,   -1,
10393                    log.EVENT_OBJECT,  1,
10394                    -3,               -1,
10395                    -4,               -1)
10396               * fpr.ETC_EQUIP_BRDN_COST               ETC_EQUIP_BRDN_COST,
10397             decode(fpr.PLAN_VERSION_ID,
10398                    log.ATTRIBUTE3,   -1,
10399                    log.EVENT_OBJECT,  1,
10400                    -3,               -1,
10401                    -4,               -1)
10402               * fpr.ETC_BRDN_COST                     ETC_BRDN_COST,
10403             decode(fpr.PLAN_VERSION_ID,
10404                    log.ATTRIBUTE3,   -1,
10405                    log.EVENT_OBJECT,  1,
10406                    -3,               -1,
10407                    -4,               -1)
10408               * fpr.ETC_RAW_COST                      ETC_RAW_COST,
10409             decode(fpr.PLAN_VERSION_ID,
10410                    log.ATTRIBUTE3,   -1,
10411                    log.EVENT_OBJECT,  1,
10412                    -3,               -1,
10413                    -4,               -1)
10414               * fpr.ETC_LABOR_RAW_COST                ETC_LABOR_RAW_COST,
10415             decode(fpr.PLAN_VERSION_ID,
10416                    log.ATTRIBUTE3,   -1,
10417                    log.EVENT_OBJECT,  1,
10418                    -3,               -1,
10419                    -4,               -1)
10420               * fpr.ETC_EQUIP_RAW_COST                ETC_EQUIP_RAW_COST,
10421             decode(fpr.PLAN_VERSION_ID,
10422                    log.ATTRIBUTE3,   -1,
10423                    log.EVENT_OBJECT,  1,
10424                    -3,               -1,
10425                    -4,               -1)
10426               * fpr.CUSTOM1                           CUSTOM1,
10427             decode(fpr.PLAN_VERSION_ID,
10428                    log.ATTRIBUTE3,   -1,
10429                    log.EVENT_OBJECT,  1,
10430                    -3,               -1,
10431                    -4,               -1)
10432               * fpr.CUSTOM2                           CUSTOM2,
10433             decode(fpr.PLAN_VERSION_ID,
10434                    log.ATTRIBUTE3,   -1,
10435                    log.EVENT_OBJECT,  1,
10436                    -3,               -1,
10437                    -4,               -1)
10438               * fpr.CUSTOM3                           CUSTOM3,
10439             decode(fpr.PLAN_VERSION_ID,
10440                    log.ATTRIBUTE3,   -1,
10441                    log.EVENT_OBJECT,  1,
10442                    -3,               -1,
10443                    -4,               -1)
10444               * fpr.CUSTOM4                           CUSTOM4,
10445             decode(fpr.PLAN_VERSION_ID,
10446                    log.ATTRIBUTE3,   -1,
10447                    log.EVENT_OBJECT,  1,
10448                    -3,               -1,
10449                    -4,               -1)
10450               * fpr.CUSTOM5                           CUSTOM5,
10451             decode(fpr.PLAN_VERSION_ID,
10452                    log.ATTRIBUTE3,   -1,
10453                    log.EVENT_OBJECT,  1,
10454                    -3,               -1,
10455                    -4,               -1)
10456               * fpr.CUSTOM6                           CUSTOM6,
10457             decode(fpr.PLAN_VERSION_ID,
10458                    log.ATTRIBUTE3,   -1,
10459                    log.EVENT_OBJECT,  1,
10460                    -3,               -1,
10461                    -4,               -1)
10462               * fpr.CUSTOM7                           CUSTOM7,
10463             decode(fpr.PLAN_VERSION_ID,
10464                    log.ATTRIBUTE3,   -1,
10465                    log.EVENT_OBJECT,  1,
10466                    -3,               -1,
10467                    -4,               -1)
10468               * fpr.CUSTOM8                           CUSTOM8,
10469             decode(fpr.PLAN_VERSION_ID,
10470                    log.ATTRIBUTE3,   -1,
10471                    log.EVENT_OBJECT,  1,
10472                    -3,               -1,
10473                    -4,               -1)
10474               * fpr.CUSTOM9                           CUSTOM9,
10475             decode(fpr.PLAN_VERSION_ID,
10476                    log.ATTRIBUTE3,   -1,
10477                    log.EVENT_OBJECT,  1,
10478                    -3,               -1,
10479                    -4,               -1)
10480               * fpr.CUSTOM10                          CUSTOM10,
10481             decode(fpr.PLAN_VERSION_ID,
10482                    log.ATTRIBUTE3,   -1,
10483                    log.EVENT_OBJECT,  1,
10484                    -3,               -1,
10485                    -4,               -1)
10486               * fpr.CUSTOM11                          CUSTOM11,
10487             decode(fpr.PLAN_VERSION_ID,
10488                    log.ATTRIBUTE3,   -1,
10489                    log.EVENT_OBJECT,  1,
10490                    -3,               -1,
10491                    -4,               -1)
10492               * fpr.CUSTOM12                          CUSTOM12,
10493             decode(fpr.PLAN_VERSION_ID,
10494                    log.ATTRIBUTE3,   -1,
10495                    log.EVENT_OBJECT,  1,
10496                    -3,               -1,
10497                    -4,               -1)
10498               * fpr.CUSTOM13                          CUSTOM13,
10499             decode(fpr.PLAN_VERSION_ID,
10500                    log.ATTRIBUTE3,   -1,
10501                    log.EVENT_OBJECT,  1,
10502                    -3,               -1,
10503                    -4,               -1)
10504               * fpr.CUSTOM14                          CUSTOM14,
10505             decode(fpr.PLAN_VERSION_ID,
10506                    log.ATTRIBUTE3,   -1,
10507                    log.EVENT_OBJECT,  1,
10508                    -3,               -1,
10509                    -4,               -1)
10510               * fpr.CUSTOM15                          CUSTOM15
10511           from
10512             PA_PJI_PROJ_EVENTS_LOG log,
10513             PJI_PJP_WBS_HEADER     wbs_hdr,
10514             -- Changes done for bug 7354982.
10515             --PJI_XBS_DENORM         prg,
10516             PJI_FP_XBS_ACCUM_F     fpr,
10517             PJI_XBS_DENORM         prg
10518           where
10519             prg.STRUCT_TYPE         =  'PRG'                        and
10520             prg.SUP_LEVEL           =  l_level                      and
10521             prg.SUB_LEVEL           =  l_level                      and
10522             log.EVENT_ID            =  g_event_id                   and
10523             log.EVENT_TYPE          in ('PLAN_BASELINE',
10524                                         'PLAN_ORIGINAL')            and
10525             fpr.PROJECT_ID          =  log.ATTRIBUTE1               and
10526             fpr.PROJECT_ID          =  prg.SUP_PROJECT_ID           and
10527             fpr.PLAN_TYPE_ID        =  log.ATTRIBUTE2               and
10528             fpr.PLAN_VERSION_ID     in (decode(log.EVENT_TYPE,
10529                                                'PLAN_BASELINE', -3,
10530                                                'PLAN_ORIGINAL', -4),
10531                                         log.EVENT_OBJECT)           and
10532             (fpr.RBS_AGGR_LEVEL,
10533              fpr.WBS_ROLLUP_FLAG,
10534              fpr.PRG_ROLLUP_FLAG)   in (('T', 'Y', 'N'),
10535                                         ('T', 'N', 'N'),
10536                                         ('L', 'N', 'N'))            and
10537             fpr.PROJECT_ELEMENT_ID  =  prg.SUB_EMT_ID               and
10538             wbs_hdr.PROJECT_ID      =  fpr.PROJECT_ID               and
10539             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1               and
10540             wbs_hdr.PLAN_VERSION_ID in (log.ATTRIBUTE3,
10541                                         log.EVENT_OBJECT)           and
10542             wbs_hdr.PLAN_VERSION_ID =  decode(sign(fpr.PLAN_VERSION_ID),
10543                                               -1, log.ATTRIBUTE3,
10544                                                   log.EVENT_OBJECT) and
10545             wbs_hdr.PLAN_TYPE_ID    =  log.ATTRIBUTE2               and
10546             wbs_hdr.PLAN_TYPE_CODE  =  fpr.PLAN_TYPE_CODE           and
10547             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                   and
10548              prg.struct_version_id is NULL                               -- added for bug 5882260
10549           union all
10550           select /*+ ordered
10551                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
10552                      index(fpr PJI_FP_XBS_ACCUM_F_N1) */
10553                  -- Baseline reversals and fact amounts  (-3 slice)
10554                  -- Current Original reversals and fact amounts  (-4 slice)
10555                  -- Part 2
10556             to_char(null)                             LINE_TYPE,
10557             wbs_hdr.WBS_VERSION_ID,
10558             'LF'                                      RELATIONSHIP_TYPE,
10559             'Y'                                       PUSHUP_FLAG,
10560             decode(fpr.RBS_AGGR_LEVEL,
10561                    'L', 'N', 'Y')                     INSERT_FLAG,
10562             fpr.PROJECT_ID,
10563             fpr.PROJECT_ORG_ID,
10564             fpr.PROJECT_ORGANIZATION_ID,
10565             prg.SUP_EMT_ID                            PROJECT_ELEMENT_ID,
10566             fpr.TIME_ID,
10567             fpr.PERIOD_TYPE_ID,
10568             fpr.CALENDAR_TYPE,
10569             fpr.RBS_AGGR_LEVEL,
10570             'Y'                                       WBS_ROLLUP_FLAG,
10571             fpr.PRG_ROLLUP_FLAG,
10572             fpr.CURR_RECORD_TYPE_ID,
10573             fpr.CURRENCY_CODE,
10574             fpr.RBS_ELEMENT_ID,
10575             fpr.RBS_VERSION_ID,
10576             decode(log.EVENT_TYPE,
10577                    'PLAN_BASELINE', -3,
10578                    'PLAN_ORIGINAL', -4)               PLAN_VERSION_ID,
10579             fpr.PLAN_TYPE_ID,
10580             fpr.PLAN_TYPE_CODE,
10581             decode(fpr.PLAN_VERSION_ID,
10582                    log.ATTRIBUTE3,   -1,
10583                    log.EVENT_OBJECT,  1,
10584                    -3,               -1,
10585                    -4,               -1)
10586               * fpr.RAW_COST                          RAW_COST,
10587             decode(fpr.PLAN_VERSION_ID,
10588                    log.ATTRIBUTE3,   -1,
10589                    log.EVENT_OBJECT,  1,
10590                    -3,               -1,
10591                    -4,               -1)
10592               * fpr.BRDN_COST                         BRDN_COST,
10593             decode(fpr.PLAN_VERSION_ID,
10594                    log.ATTRIBUTE3,   -1,
10595                    log.EVENT_OBJECT,  1,
10596                    -3,               -1,
10597                    -4,               -1)
10598               * fpr.REVENUE                           REVENUE,
10599             decode(fpr.PLAN_VERSION_ID,
10600                    log.ATTRIBUTE3,   -1,
10601                    log.EVENT_OBJECT,  1,
10602                    -3,               -1,
10603                    -4,               -1)
10604               * fpr.BILL_RAW_COST                     BILL_RAW_COST,
10605             decode(fpr.PLAN_VERSION_ID,
10606                    log.ATTRIBUTE3,   -1,
10607                    log.EVENT_OBJECT,  1,
10608                    -3,               -1,
10609                    -4,               -1)
10610               * fpr.BILL_BRDN_COST                    BILL_BRDN_COST,
10611             decode(fpr.PLAN_VERSION_ID,
10612                    log.ATTRIBUTE3,   -1,
10613                    log.EVENT_OBJECT,  1,
10614                    -3,               -1,
10615                    -4,               -1)
10616               * fpr.BILL_LABOR_RAW_COST               BILL_LABOR_RAW_COST,
10617             decode(fpr.PLAN_VERSION_ID,
10618                    log.ATTRIBUTE3,   -1,
10619                    log.EVENT_OBJECT,  1,
10620                    -3,               -1,
10621                    -4,               -1)
10622               * fpr.BILL_LABOR_BRDN_COST              BILL_LABOR_BRDN_COST,
10623             decode(fpr.PLAN_VERSION_ID,
10624                    log.ATTRIBUTE3,   -1,
10625                    log.EVENT_OBJECT,  1,
10626                    -3,               -1,
10627                    -4,               -1)
10628               * fpr.BILL_LABOR_HRS                    BILL_LABOR_HRS,
10629             decode(fpr.PLAN_VERSION_ID,
10630                    log.ATTRIBUTE3,   -1,
10631                    log.EVENT_OBJECT,  1,
10632                    -3,               -1,
10633                    -4,               -1)
10634               * fpr.EQUIPMENT_RAW_COST                EQUIPMENT_RAW_COST,
10635             decode(fpr.PLAN_VERSION_ID,
10636                    log.ATTRIBUTE3,   -1,
10637                    log.EVENT_OBJECT,  1,
10638                    -3,               -1,
10639                    -4,               -1)
10640               * fpr.EQUIPMENT_BRDN_COST               EQUIPMENT_BRDN_COST,
10641             decode(fpr.PLAN_VERSION_ID,
10642                    log.ATTRIBUTE3,   -1,
10643                    log.EVENT_OBJECT,  1,
10644                    -3,               -1,
10645                    -4,               -1)
10646               * fpr.CAPITALIZABLE_RAW_COST            CAPITALIZABLE_RAW_COST,
10647             decode(fpr.PLAN_VERSION_ID,
10648                    log.ATTRIBUTE3,   -1,
10649                    log.EVENT_OBJECT,  1,
10650                    -3,               -1,
10651                    -4,               -1)
10652               * fpr.CAPITALIZABLE_BRDN_COST           CAPITALIZABLE_BRDN_COST,
10653             decode(fpr.PLAN_VERSION_ID,
10654                    log.ATTRIBUTE3,   -1,
10655                    log.EVENT_OBJECT,  1,
10656                    -3,               -1,
10657                    -4,               -1)
10658               * fpr.LABOR_RAW_COST                    LABOR_RAW_COST,
10659             decode(fpr.PLAN_VERSION_ID,
10660                    log.ATTRIBUTE3,   -1,
10661                    log.EVENT_OBJECT,  1,
10662                    -3,               -1,
10663                    -4,               -1)
10664               * fpr.LABOR_BRDN_COST                   LABOR_BRDN_COST,
10665             decode(fpr.PLAN_VERSION_ID,
10666                    log.ATTRIBUTE3,   -1,
10667                    log.EVENT_OBJECT,  1,
10668                    -3,               -1,
10669                    -4,               -1)
10670               * fpr.LABOR_HRS                         LABOR_HRS,
10671             decode(fpr.PLAN_VERSION_ID,
10672                    log.ATTRIBUTE3,   -1,
10673                    log.EVENT_OBJECT,  1,
10674                    -3,               -1,
10675                    -4,               -1)
10676               * fpr.LABOR_REVENUE                     LABOR_REVENUE,
10677             decode(fpr.PLAN_VERSION_ID,
10678                    log.ATTRIBUTE3,   -1,
10679                    log.EVENT_OBJECT,  1,
10680                    -3,               -1,
10681                    -4,               -1)
10682               * fpr.EQUIPMENT_HOURS                   EQUIPMENT_HOURS,
10683             decode(fpr.PLAN_VERSION_ID,
10684                    log.ATTRIBUTE3,   -1,
10685                    log.EVENT_OBJECT,  1,
10686                    -3,               -1,
10687                    -4,               -1)
10688               * fpr.BILLABLE_EQUIPMENT_HOURS          BILLABLE_EQUIPMENT_HOURS,
10689             decode(fpr.PLAN_VERSION_ID,
10690                    log.ATTRIBUTE3,   -1,
10691                    log.EVENT_OBJECT,  1,
10692                    -3,               -1,
10693                    -4,               -1)
10694               * fpr.SUP_INV_COMMITTED_COST            SUP_INV_COMMITTED_COST,
10695             decode(fpr.PLAN_VERSION_ID,
10696                    log.ATTRIBUTE3,   -1,
10697                    log.EVENT_OBJECT,  1,
10698                    -3,               -1,
10699                    -4,               -1)
10700               * fpr.PO_COMMITTED_COST                 PO_COMMITTED_COST,
10701             decode(fpr.PLAN_VERSION_ID,
10702                    log.ATTRIBUTE3,   -1,
10703                    log.EVENT_OBJECT,  1,
10704                    -3,               -1,
10705                    -4,               -1)
10706               * fpr.PR_COMMITTED_COST                 PR_COMMITTED_COST,
10707             decode(fpr.PLAN_VERSION_ID,
10708                    log.ATTRIBUTE3,   -1,
10709                    log.EVENT_OBJECT,  1,
10710                    -3,               -1,
10711                    -4,               -1)
10712               * fpr.OTH_COMMITTED_COST                OTH_COMMITTED_COST,
10713             decode(fpr.PLAN_VERSION_ID,
10714                    log.ATTRIBUTE3,   -1,
10715                    log.EVENT_OBJECT,  1,
10716                    -3,               -1,
10717                    -4,               -1)
10718               * fpr.ACT_LABOR_HRS                     ACT_LABOR_HRS,
10719             decode(fpr.PLAN_VERSION_ID,
10720                    log.ATTRIBUTE3,   -1,
10721                    log.EVENT_OBJECT,  1,
10722                    -3,               -1,
10723                    -4,               -1)
10724               * fpr.ACT_EQUIP_HRS                     ACT_EQUIP_HRS,
10725             decode(fpr.PLAN_VERSION_ID,
10726                    log.ATTRIBUTE3,   -1,
10727                    log.EVENT_OBJECT,  1,
10728                    -3,               -1,
10729                    -4,               -1)
10730               * fpr.ACT_LABOR_BRDN_COST               ACT_LABOR_BRDN_COST,
10731             decode(fpr.PLAN_VERSION_ID,
10732                    log.ATTRIBUTE3,   -1,
10733                    log.EVENT_OBJECT,  1,
10734                    -3,               -1,
10735                    -4,               -1)
10736               * fpr.ACT_EQUIP_BRDN_COST               ACT_EQUIP_BRDN_COST,
10737             decode(fpr.PLAN_VERSION_ID,
10738                    log.ATTRIBUTE3,   -1,
10739                    log.EVENT_OBJECT,  1,
10740                    -3,               -1,
10741                    -4,               -1)
10742               * fpr.ACT_BRDN_COST                     ACT_BRDN_COST,
10743             decode(fpr.PLAN_VERSION_ID,
10744                    log.ATTRIBUTE3,   -1,
10745                    log.EVENT_OBJECT,  1,
10746                    -3,               -1,
10747                    -4,               -1)
10748               * fpr.ACT_RAW_COST                      ACT_RAW_COST,
10749             decode(fpr.PLAN_VERSION_ID,
10750                    log.ATTRIBUTE3,   -1,
10751                    log.EVENT_OBJECT,  1,
10752                    -3,               -1,
10753                    -4,               -1)
10754               * fpr.ACT_REVENUE                       ACT_REVENUE,
10755             decode(fpr.PLAN_VERSION_ID,
10756                    log.ATTRIBUTE3,   -1,
10757                    log.EVENT_OBJECT,  1,
10758                    -3,               -1,
10759                    -4,               -1)
10760               * fpr.ACT_LABOR_RAW_COST                ACT_LABOR_RAW_COST,
10761             decode(fpr.PLAN_VERSION_ID,
10762                    log.ATTRIBUTE3,   -1,
10763                    log.EVENT_OBJECT,  1,
10764                    -3,               -1,
10765                    -4,               -1)
10766               * fpr.ACT_EQUIP_RAW_COST                ACT_EQUIP_RAW_COST,
10767             decode(fpr.PLAN_VERSION_ID,
10768                    log.ATTRIBUTE3,   -1,
10769                    log.EVENT_OBJECT,  1,
10770                    -3,               -1,
10771                    -4,               -1)
10772               * fpr.ETC_LABOR_HRS                     ETC_LABOR_HRS,
10773             decode(fpr.PLAN_VERSION_ID,
10774                    log.ATTRIBUTE3,   -1,
10775                    log.EVENT_OBJECT,  1,
10776                    -3,               -1,
10777                    -4,               -1)
10778               * fpr.ETC_EQUIP_HRS                     ETC_EQUIP_HRS,
10779             decode(fpr.PLAN_VERSION_ID,
10780                    log.ATTRIBUTE3,   -1,
10781                    log.EVENT_OBJECT,  1,
10782                    -3,               -1,
10783                    -4,               -1)
10784               * fpr.ETC_LABOR_BRDN_COST               ETC_LABOR_BRDN_COST,
10785             decode(fpr.PLAN_VERSION_ID,
10786                    log.ATTRIBUTE3,   -1,
10787                    log.EVENT_OBJECT,  1,
10788                    -3,               -1,
10789                    -4,               -1)
10790               * fpr.ETC_EQUIP_BRDN_COST               ETC_EQUIP_BRDN_COST,
10791             decode(fpr.PLAN_VERSION_ID,
10792                    log.ATTRIBUTE3,   -1,
10793                    log.EVENT_OBJECT,  1,
10794                    -3,               -1,
10795                    -4,               -1)
10796               * fpr.ETC_BRDN_COST                     ETC_BRDN_COST,
10797             decode(fpr.PLAN_VERSION_ID,
10798                    log.ATTRIBUTE3,   -1,
10799                    log.EVENT_OBJECT,  1,
10800                    -3,               -1,
10801                    -4,               -1)
10802               * fpr.ETC_RAW_COST                      ETC_RAW_COST,
10803             decode(fpr.PLAN_VERSION_ID,
10804                    log.ATTRIBUTE3,   -1,
10805                    log.EVENT_OBJECT,  1,
10806                    -3,               -1,
10807                    -4,               -1)
10808               * fpr.ETC_LABOR_RAW_COST                ETC_LABOR_RAW_COST,
10809             decode(fpr.PLAN_VERSION_ID,
10810                    log.ATTRIBUTE3,   -1,
10811                    log.EVENT_OBJECT,  1,
10812                    -3,               -1,
10813                    -4,               -1)
10814               * fpr.ETC_EQUIP_RAW_COST                ETC_EQUIP_RAW_COST,
10815             decode(fpr.PLAN_VERSION_ID,
10816                    log.ATTRIBUTE3,   -1,
10817                    log.EVENT_OBJECT,  1,
10818                    -3,               -1,
10819                    -4,               -1)
10820               * fpr.CUSTOM1                           CUSTOM1,
10821             decode(fpr.PLAN_VERSION_ID,
10822                    log.ATTRIBUTE3,   -1,
10823                    log.EVENT_OBJECT,  1,
10824                    -3,               -1,
10825                    -4,               -1)
10826               * fpr.CUSTOM2                           CUSTOM2,
10827             decode(fpr.PLAN_VERSION_ID,
10828                    log.ATTRIBUTE3,   -1,
10829                    log.EVENT_OBJECT,  1,
10830                    -3,               -1,
10831                    -4,               -1)
10832               * fpr.CUSTOM3                           CUSTOM3,
10833             decode(fpr.PLAN_VERSION_ID,
10834                    log.ATTRIBUTE3,   -1,
10835                    log.EVENT_OBJECT,  1,
10836                    -3,               -1,
10837                    -4,               -1)
10838               * fpr.CUSTOM4                           CUSTOM4,
10839             decode(fpr.PLAN_VERSION_ID,
10840                    log.ATTRIBUTE3,   -1,
10841                    log.EVENT_OBJECT,  1,
10842                    -3,               -1,
10843                    -4,               -1)
10844               * fpr.CUSTOM5                           CUSTOM5,
10845             decode(fpr.PLAN_VERSION_ID,
10846                    log.ATTRIBUTE3,   -1,
10847                    log.EVENT_OBJECT,  1,
10848                    -3,               -1,
10849                    -4,               -1)
10850               * fpr.CUSTOM6                           CUSTOM6,
10851             decode(fpr.PLAN_VERSION_ID,
10852                    log.ATTRIBUTE3,   -1,
10853                    log.EVENT_OBJECT,  1,
10854                    -3,               -1,
10855                    -4,               -1)
10856               * fpr.CUSTOM7                           CUSTOM7,
10857             decode(fpr.PLAN_VERSION_ID,
10858                    log.ATTRIBUTE3,   -1,
10859                    log.EVENT_OBJECT,  1,
10860                    -3,               -1,
10861                    -4,               -1)
10862               * fpr.CUSTOM8                           CUSTOM8,
10863             decode(fpr.PLAN_VERSION_ID,
10864                    log.ATTRIBUTE3,   -1,
10865                    log.EVENT_OBJECT,  1,
10866                    -3,               -1,
10867                    -4,               -1)
10868               * fpr.CUSTOM9                           CUSTOM9,
10869             decode(fpr.PLAN_VERSION_ID,
10870                    log.ATTRIBUTE3,   -1,
10871                    log.EVENT_OBJECT,  1,
10872                    -3,               -1,
10873                    -4,               -1)
10874               * fpr.CUSTOM10                          CUSTOM10,
10875             decode(fpr.PLAN_VERSION_ID,
10876                    log.ATTRIBUTE3,   -1,
10877                    log.EVENT_OBJECT,  1,
10878                    -3,               -1,
10879                    -4,               -1)
10880               * fpr.CUSTOM11                          CUSTOM11,
10881             decode(fpr.PLAN_VERSION_ID,
10882                    log.ATTRIBUTE3,   -1,
10883                    log.EVENT_OBJECT,  1,
10884                    -3,               -1,
10885                    -4,               -1)
10886               * fpr.CUSTOM12                          CUSTOM12,
10887             decode(fpr.PLAN_VERSION_ID,
10888                    log.ATTRIBUTE3,   -1,
10889                    log.EVENT_OBJECT,  1,
10890                    -3,               -1,
10891                    -4,               -1)
10892               * fpr.CUSTOM13                          CUSTOM13,
10893             decode(fpr.PLAN_VERSION_ID,
10894                    log.ATTRIBUTE3,   -1,
10895                    log.EVENT_OBJECT,  1,
10896                    -3,               -1,
10897                    -4,               -1)
10898               * fpr.CUSTOM14                          CUSTOM14,
10899             decode(fpr.PLAN_VERSION_ID,
10900                    log.ATTRIBUTE3,   -1,
10901                    log.EVENT_OBJECT,  1,
10902                    -3,               -1,
10903                    -4,               -1)
10904               * fpr.CUSTOM15                          CUSTOM15
10905           from
10906             PA_PJI_PROJ_EVENTS_LOG log,
10907             PJI_PJP_WBS_HEADER     wbs_hdr,
10908             -- Changes done for bug 7354982.
10909             --PJI_XBS_DENORM         prg,
10910             PJI_FP_XBS_ACCUM_F     fpr,
10911             PJI_XBS_DENORM         prg
10912           where
10913             prg.STRUCT_TYPE         =  'PRG'                        and
10914             prg.SUP_LEVEL           =  l_level                      and
10915             prg.SUB_LEVEL           =  l_level                      and
10916             log.EVENT_ID            =  g_event_id                   and
10917             log.EVENT_TYPE          in ('PLAN_BASELINE',
10918                                         'PLAN_ORIGINAL')            and
10919             fpr.PROJECT_ID          =  log.ATTRIBUTE1               and
10920             fpr.PROJECT_ID          =  prg.SUP_PROJECT_ID           and
10921             fpr.PLAN_TYPE_ID        =  log.ATTRIBUTE2               and
10922             fpr.PLAN_VERSION_ID     in (log.ATTRIBUTE3,
10923                                         log.EVENT_OBJECT)           and
10924             (fpr.RBS_AGGR_LEVEL,
10925              fpr.WBS_ROLLUP_FLAG,
10926              fpr.PRG_ROLLUP_FLAG)   in (('L', 'N', 'N'))            and
10927             fpr.PROJECT_ELEMENT_ID  <> prg.SUB_EMT_ID               and
10928             wbs_hdr.PROJECT_ID      =  fpr.PROJECT_ID               and
10929             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1               and
10930             wbs_hdr.PLAN_VERSION_ID in (log.ATTRIBUTE3,
10931                                         log.EVENT_OBJECT)           and
10932             wbs_hdr.PLAN_VERSION_ID =  decode(sign(fpr.PLAN_VERSION_ID),
10933                                               -1, log.ATTRIBUTE3,
10934                                                   log.EVENT_OBJECT) and
10935             wbs_hdr.PLAN_TYPE_ID    =  log.ATTRIBUTE2               and
10936             wbs_hdr.PLAN_TYPE_CODE  =  fpr.PLAN_TYPE_CODE           and
10937             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                   and
10938              prg.struct_version_id is NULL                               -- added for bug 5882260
10939           ) pjp,
10940           (
10941           select /*+ ordered
10942                      index(prg PJI_XBS_DENORM_N3)
10943                      index(prj PA_PROJECTS_U1) */
10944             prg.SUP_PROJECT_ID,
10945             prj.ORG_ID                       SUP_PROJECT_ORG_ID,
10946             prj.CARRYING_OUT_ORGANIZATION_ID SUP_PROJECT_ORGANIZATION_ID,
10947             prg.SUP_ID,
10948             prg.SUP_EMT_ID,
10949             prg.SUP_LEVEL,
10950             prg.SUB_ID,
10951             prg.SUB_EMT_ID,
10952             prg.SUB_ROLLUP_ID,
10953             invert.INVERT_VALUE              RELATIONSHIP_TYPE,
10954             decode(prg.RELATIONSHIP_TYPE,
10955                    'LW', 'Y',
10956                    'LF', 'N')                WP_FLAG,
10957             'Y'                              PUSHUP_FLAG
10958           from
10959             PJI_XBS_DENORM        prg,
10960             PA_PROJECTS_ALL       prj,
10961             (
10962               select 'LF' INVERT_ID, 'LF' INVERT_VALUE from dual union all
10963               select 'LW' INVERT_ID, 'LW' INVERT_VALUE from dual union all
10964               select 'A'  INVERT_ID, 'LF' INVERT_VALUE from dual union all
10965               select 'A'  INVERT_ID, 'LW' INVERT_VALUE from dual
10966             ) invert
10967           where
10968             l_level                       > 1                  and
10969             prg.STRUCT_TYPE               = 'PRG'              and
10970             prg.SUB_ROLLUP_ID             is not null          and
10971             prg.SUB_LEVEL                 = l_level            and
10972             -- map.WORKER_ID              = p_worker_id        and
10973             prj.PROJECT_ID                = prg.SUP_PROJECT_ID and
10974             decode(prg.SUB_LEVEL,
10975                    prg.SUP_LEVEL, 'A',
10976                    prg.RELATIONSHIP_TYPE) = invert.INVERT_ID
10977           )                          prg,
10978           PJI_PJP_WBS_HEADER         wbs_hdr,
10979           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
10980           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
10981           PA_PROJ_WORKPLAN_ATTR      sup_wpa
10982         where
10983           pjp.PROJECT_ID         = sub_ver.PROJECT_ID                (+) and
10984           pjp.WBS_VERSION_ID     = sub_ver.ELEMENT_VERSION_ID        (+) and
10985           'STRUCTURE_PUBLISHED'  = sub_ver.STATUS_CODE               (+) and
10986           pjp.WBS_VERSION_ID     = prg.SUB_ID                        (+) and
10987           pjp.RELATIONSHIP_TYPE  = prg.RELATIONSHIP_TYPE             (+) and
10988           pjp.PUSHUP_FLAG        = prg.PUSHUP_FLAG                   (+) and
10989           prg.SUP_PROJECT_ID     = wbs_hdr.PROJECT_ID                (+) and
10990           prg.SUP_ID             = wbs_hdr.WBS_VERSION_ID            (+) and
10991           prg.WP_FLAG            = wbs_hdr.WP_FLAG                   (+) and
10992           'Y'                    = wbs_hdr.WP_FLAG                   (+) and
10993           wbs_hdr.PROJECT_ID     = sup_ver.PROJECT_ID                (+) and
10994           wbs_hdr.WBS_VERSION_ID = sup_ver.ELEMENT_VERSION_ID        (+) and
10995           'STRUCTURE_PUBLISHED'  = sup_ver.STATUS_CODE               (+) and
10996           'Y'                    = sup_ver.LATEST_EFF_PUBLISHED_FLAG (+) and
10997           prg.SUP_EMT_ID         = sup_wpa.PROJ_ELEMENT_ID           (+)
10998         group by
10999           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11000                  pjp.INSERT_FLAG, 'Y'),
11001           pjp.RELATIONSHIP_TYPE,
11002           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11003                  null, sub_ver.STATUS_CODE),
11004           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11005                  null, sup_ver.STATUS_CODE),
11006           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11007                  null, sup_wpa.WP_ENABLE_VERSION_FLAG),
11008           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11009                  null, decode(pjp.PLAN_VERSION_ID,
11010                               -1, prg.SUP_ID,
11011                               -3, prg.SUP_ID,
11012                               -4, prg.SUP_ID,
11013                                   null)),
11014           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11015                  null, decode(pjp.PLAN_VERSION_ID,
11016                               -1, prg.SUP_EMT_ID,
11017                               -3, prg.SUP_EMT_ID,
11018                               -4, prg.SUP_EMT_ID,
11019                                   null)),
11020           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11021                  null, decode(pjp.PLAN_VERSION_ID,
11022                               -1, prg.WP_FLAG,
11023                               -3, prg.WP_FLAG,
11024                               -4, prg.WP_FLAG,
11025                                   null)),
11026           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11027                  l_level, prg.SUP_LEVEL),
11028           pjp.LINE_TYPE,
11029           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11030                  pjp.PROJECT_ID, prg.SUP_PROJECT_ID),
11031           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11032                  pjp.PROJECT_ORG_ID,
11033                  prg.SUP_PROJECT_ORG_ID),
11034           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11035                  pjp.PROJECT_ORGANIZATION_ID,
11036                  prg.SUP_PROJECT_ORGANIZATION_ID),
11037           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11038                  pjp.PROJECT_ELEMENT_ID,
11039                  prg.SUB_ROLLUP_ID),
11040           pjp.TIME_ID,
11041           pjp.PERIOD_TYPE_ID,
11042           pjp.CALENDAR_TYPE,
11043           pjp.RBS_AGGR_LEVEL,
11044           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11045                  pjp.WBS_ROLLUP_FLAG, 'N'),
11046           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11047                  pjp.PRG_ROLLUP_FLAG, 'Y'),
11048           pjp.CURR_RECORD_TYPE_ID,
11049           pjp.CURRENCY_CODE,
11050           pjp.RBS_ELEMENT_ID,
11051           pjp.RBS_VERSION_ID,
11052           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11053                  pjp.PLAN_VERSION_ID,
11054                  decode(pjp.PLAN_VERSION_ID,
11055                         -1, pjp.PLAN_VERSION_ID,
11056                         -2, pjp.PLAN_VERSION_ID,
11057                         -3, pjp.PLAN_VERSION_ID,
11058                         -4, pjp.PLAN_VERSION_ID,
11059                             wbs_hdr.PLAN_VERSION_ID)),
11060           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
11061                  pjp.PLAN_TYPE_ID,
11062                  decode(pjp.PLAN_VERSION_ID,
11063                         -1, pjp.PLAN_TYPE_ID,
11064                         -2, pjp.PLAN_TYPE_ID,
11065                         -3, pjp.PLAN_TYPE_ID,
11066                         -4, pjp.PLAN_TYPE_ID,
11067                             wbs_hdr.PLAN_TYPE_ID)),
11068           pjp.PLAN_TYPE_CODE
11069           )                          pjp1_i,
11070           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
11071           PA_PROJ_WORKPLAN_ATTR      sup_wpa
11072         where
11073           pjp1_i.INSERT_FLAG  = 'Y'                                and
11074           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
11075           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
11076           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
11077           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
11078           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
11079           (pjp1_i.SUP_ID is null or
11080            (pjp1_i.SUP_ID is not null and
11081             (sup_fin_ver.PROJECT_ID is not null or
11082              sup_wpa.PROJ_ELEMENT_ID is not null)));
11083 
11084         l_level := l_level - 1;
11085 
11086       end loop;
11087 
11088     end if;
11089 
11090   end ROLLUP_FPR_WBS;
11091 
11092 
11093   -- -----------------------------------------------------
11094   -- procedure ROLLUP_FPR_RBS_SMART_SLICES
11095   --
11096   --   History
11097   --   19-MAR-2004  SVERMETT  Created
11098   --
11099   -- This API will be called for both online and bulk processing.
11100   --
11101   -- -----------------------------------------------------
11102   procedure ROLLUP_FPR_RBS_SMART_SLICES (p_worker_id in number default null) is
11103 
11104     l_process varchar2(30);
11105     l_extraction_type varchar2(30);
11106 
11107   begin
11108 
11109     if (p_worker_id is not null) then
11110 
11111       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
11112 
11113       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_SMART_SLICES(p_worker_id);')) then
11114         return;
11115       end if;
11116 
11117       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
11118 
11119       insert into PJI_FP_AGGR_PJP1 pjp1_i
11120       (
11121         WORKER_ID,
11122         RECORD_TYPE,
11123         PRG_LEVEL,
11124         LINE_TYPE,
11125         PROJECT_ID,
11126         PROJECT_ORG_ID,
11127         PROJECT_ORGANIZATION_ID,
11128         PROJECT_ELEMENT_ID,
11129         TIME_ID,
11130         PERIOD_TYPE_ID,
11131         CALENDAR_TYPE,
11132         RBS_AGGR_LEVEL,
11133         WBS_ROLLUP_FLAG,
11134         PRG_ROLLUP_FLAG,
11135         CURR_RECORD_TYPE_ID,
11136         CURRENCY_CODE,
11137         RBS_ELEMENT_ID,
11138         RBS_VERSION_ID,
11139         PLAN_VERSION_ID,
11140         PLAN_TYPE_ID,
11141         PLAN_TYPE_CODE,
11142         RAW_COST,
11143         BRDN_COST,
11144         REVENUE,
11145         BILL_RAW_COST,
11146         BILL_BRDN_COST,
11147         BILL_LABOR_RAW_COST,
11148         BILL_LABOR_BRDN_COST,
11149         BILL_LABOR_HRS,
11150         EQUIPMENT_RAW_COST,
11151         EQUIPMENT_BRDN_COST,
11152         CAPITALIZABLE_RAW_COST,
11153         CAPITALIZABLE_BRDN_COST,
11154         LABOR_RAW_COST,
11155         LABOR_BRDN_COST,
11156         LABOR_HRS,
11157         LABOR_REVENUE,
11158         EQUIPMENT_HOURS,
11159         BILLABLE_EQUIPMENT_HOURS,
11160         SUP_INV_COMMITTED_COST,
11161         PO_COMMITTED_COST,
11162         PR_COMMITTED_COST,
11163         OTH_COMMITTED_COST,
11164         ACT_LABOR_HRS,
11165         ACT_EQUIP_HRS,
11166         ACT_LABOR_BRDN_COST,
11167         ACT_EQUIP_BRDN_COST,
11168         ACT_BRDN_COST,
11169         ACT_RAW_COST,
11170         ACT_REVENUE,
11171         ACT_LABOR_RAW_COST,
11172         ACT_EQUIP_RAW_COST,
11173         ETC_LABOR_HRS,
11174         ETC_EQUIP_HRS,
11175         ETC_LABOR_BRDN_COST,
11176         ETC_EQUIP_BRDN_COST,
11177         ETC_BRDN_COST,
11178         ETC_RAW_COST,
11179         ETC_LABOR_RAW_COST,
11180         ETC_EQUIP_RAW_COST,
11181         CUSTOM1,
11182         CUSTOM2,
11183         CUSTOM3,
11184         CUSTOM4,
11185         CUSTOM5,
11186         CUSTOM6,
11187         CUSTOM7,
11188         CUSTOM8,
11189         CUSTOM9,
11190         CUSTOM10,
11191         CUSTOM11,
11192         CUSTOM12,
11193         CUSTOM13,
11194         CUSTOM14,
11195         CUSTOM15
11196       )
11197       select
11198         p_worker_id                                   WORKER_ID,
11199         'R'                                           RECORD_TYPE,
11200         pjp1.PRG_LEVEL,
11201         pjp1.LINE_TYPE,
11202         pjp1.PROJECT_ID,
11203         pjp1.PROJECT_ORG_ID,
11204         pjp1.PROJECT_ORGANIZATION_ID,
11205         pjp1.PROJECT_ELEMENT_ID,
11206         pjp1.TIME_ID,
11207         pjp1.PERIOD_TYPE_ID,
11208         pjp1.CALENDAR_TYPE,
11209         pjp1.RBS_AGGR_LEVEL,
11210         pjp1.WBS_ROLLUP_FLAG,
11211         pjp1.PRG_ROLLUP_FLAG,
11212         pjp1.CURR_RECORD_TYPE_ID,
11213         pjp1.CURRENCY_CODE,
11214         pjp1.RBS_ELEMENT_ID,
11215         pjp1.RBS_VERSION_ID,
11216         pjp1.PLAN_VERSION_ID,
11217         pjp1.PLAN_TYPE_ID,
11218         pjp1.PLAN_TYPE_CODE,
11219         sum(pjp1.RAW_COST)                            RAW_COST,
11220         sum(pjp1.BRDN_COST)                           BRDN_COST,
11221         sum(pjp1.REVENUE)                             REVENUE,
11222         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
11223         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
11224         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
11225         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
11226         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
11227         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
11228         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
11229         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
11230         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
11231         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
11232         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
11233         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
11234         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
11235         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
11236         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
11237         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
11238         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
11239         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
11240         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
11241         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
11242         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
11243         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
11244         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
11245         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
11246         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
11247         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
11248         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
11249         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
11250         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
11251         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
11252         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
11253         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
11254         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
11255         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
11256         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
11257         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
11258         sum(pjp1.CUSTOM1)                             CUSTOM1,
11259         sum(pjp1.CUSTOM2)                             CUSTOM2,
11260         sum(pjp1.CUSTOM3)                             CUSTOM3,
11261         sum(pjp1.CUSTOM4)                             CUSTOM4,
11262         sum(pjp1.CUSTOM5)                             CUSTOM5,
11263         sum(pjp1.CUSTOM6)                             CUSTOM6,
11264         sum(pjp1.CUSTOM7)                             CUSTOM7,
11265         sum(pjp1.CUSTOM8)                             CUSTOM8,
11266         sum(pjp1.CUSTOM9)                             CUSTOM9,
11267         sum(pjp1.CUSTOM10)                            CUSTOM10,
11268         sum(pjp1.CUSTOM11)                            CUSTOM11,
11269         sum(pjp1.CUSTOM12)                            CUSTOM12,
11270         sum(pjp1.CUSTOM13)                            CUSTOM13,
11271         sum(pjp1.CUSTOM14)                            CUSTOM14,
11272         sum(pjp1.CUSTOM15)                            CUSTOM15
11273       from
11274         (
11275       select /*+ ordered index(wbs PA_XBS_DENORM_N2) */ -- smart slices
11276         decode(pjp1.RBS_AGGR_LEVEL ||
11277                decode(top_slice.INVERT_ID,
11278                       'PRJ', 'Y',
11279                              decode(wbs.SUP_EMT_ID,
11280                                     wbs.SUB_EMT_ID, 'N', 'Y')),
11281                'LN', 'X', null)                       RECORD_TYPE,
11282         pjp1.PRG_LEVEL,
11283         pjp1.LINE_TYPE,
11284         pjp1.PROJECT_ID,
11285         pjp1.PROJECT_ORG_ID,
11286         pjp1.PROJECT_ORGANIZATION_ID,
11287         decode(top_slice.INVERT_ID,
11288                'PRJ', wbs.STRUCT_EMT_ID,
11289                       nvl(wbs.SUP_EMT_ID,
11290                           pjp1.PROJECT_ELEMENT_ID))   PROJECT_ELEMENT_ID,
11291         pjp1.TIME_ID,
11292         pjp1.PERIOD_TYPE_ID,
11293         pjp1.CALENDAR_TYPE,
11294         pjp1.RBS_AGGR_LEVEL,
11295         decode(top_slice.INVERT_ID,
11296                'PRJ', 'Y',
11297                       decode(wbs.SUP_EMT_ID,
11298                              wbs.SUB_EMT_ID, 'N', 'Y')) WBS_ROLLUP_FLAG,
11299         pjp1.PRG_ROLLUP_FLAG,
11300         pjp1.CURR_RECORD_TYPE_ID,
11301         pjp1.CURRENCY_CODE,
11302         pjp1.RBS_ELEMENT_ID,
11303         pjp1.RBS_VERSION_ID,
11304         pjp1.PLAN_VERSION_ID,
11305         pjp1.PLAN_TYPE_ID,
11306         pjp1.PLAN_TYPE_CODE,
11307         sum(pjp1.RAW_COST)                            RAW_COST,
11308         sum(pjp1.BRDN_COST)                           BRDN_COST,
11309         sum(pjp1.REVENUE)                             REVENUE,
11310         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
11311         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
11312         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
11313         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
11314         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
11315         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
11316         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
11317         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
11318         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
11319         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
11320         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
11321         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
11322         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
11323         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
11324         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
11325         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
11326         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
11327         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
11328         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
11329         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
11330         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
11331         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
11332         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
11333         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
11334         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
11335         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
11336         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
11337         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
11338         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
11339         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
11340         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
11341         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
11342         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
11343         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
11344         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
11345         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
11346         sum(pjp1.CUSTOM1)                             CUSTOM1,
11347         sum(pjp1.CUSTOM2)                             CUSTOM2,
11348         sum(pjp1.CUSTOM3)                             CUSTOM3,
11349         sum(pjp1.CUSTOM4)                             CUSTOM4,
11350         sum(pjp1.CUSTOM5)                             CUSTOM5,
11351         sum(pjp1.CUSTOM6)                             CUSTOM6,
11352         sum(pjp1.CUSTOM7)                             CUSTOM7,
11353         sum(pjp1.CUSTOM8)                             CUSTOM8,
11354         sum(pjp1.CUSTOM9)                             CUSTOM9,
11355         sum(pjp1.CUSTOM10)                            CUSTOM10,
11356         sum(pjp1.CUSTOM11)                            CUSTOM11,
11357         sum(pjp1.CUSTOM12)                            CUSTOM12,
11358         sum(pjp1.CUSTOM13)                            CUSTOM13,
11359         sum(pjp1.CUSTOM14)                            CUSTOM14,
11360         sum(pjp1.CUSTOM15)                            CUSTOM15
11361       from
11362         (
11363         select /*+ ordered */
11364           wbs_hdr.WBS_VERSION_ID,
11365           pjp1.PRG_LEVEL,
11366           pjp1.LINE_TYPE,
11367           pjp1.PROJECT_ID,
11368           pjp1.PROJECT_ORG_ID,
11369           pjp1.PROJECT_ORGANIZATION_ID,
11370           pjp1.PROJECT_ELEMENT_ID,
11371           pjp1.TIME_ID,
11372           pjp1.PERIOD_TYPE_ID,
11373           pjp1.CALENDAR_TYPE,
11374           decode(rbs.SUP_LEVEL,
11375                  rbs.SUB_LEVEL, 'L', 'R')             RBS_AGGR_LEVEL,
11376           pjp1.WBS_ROLLUP_FLAG,
11377           pjp1.PRG_ROLLUP_FLAG,
11378           pjp1.CURR_RECORD_TYPE_ID,
11379           pjp1.CURRENCY_CODE,
11380           rbs.SUP_ID                                  RBS_ELEMENT_ID,
11381           pjp1.RBS_VERSION_ID,
11382           pjp1.PLAN_VERSION_ID,
11383           pjp1.PLAN_TYPE_ID,
11384           pjp1.PLAN_TYPE_CODE,
11385           sum(pjp1.RAW_COST)                          RAW_COST,
11386           sum(pjp1.BRDN_COST)                         BRDN_COST,
11387           sum(pjp1.REVENUE)                           REVENUE,
11388           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
11389           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
11390           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
11391           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
11392           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
11393           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
11394           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
11395           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
11396           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
11397           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
11398           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
11399           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
11400           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
11401           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
11402           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
11403           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
11404           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
11405           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
11406           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
11407           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
11408           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
11409           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
11410           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
11411           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
11412           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
11413           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
11414           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
11415           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
11416           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
11417           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
11418           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
11419           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
11420           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
11421           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
11422           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
11423           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
11424           sum(pjp1.CUSTOM1)                           CUSTOM1,
11425           sum(pjp1.CUSTOM2)                           CUSTOM2,
11426           sum(pjp1.CUSTOM3)                           CUSTOM3,
11427           sum(pjp1.CUSTOM4)                           CUSTOM4,
11428           sum(pjp1.CUSTOM5)                           CUSTOM5,
11429           sum(pjp1.CUSTOM6)                           CUSTOM6,
11430           sum(pjp1.CUSTOM7)                           CUSTOM7,
11431           sum(pjp1.CUSTOM8)                           CUSTOM8,
11432           sum(pjp1.CUSTOM9)                           CUSTOM9,
11433           sum(pjp1.CUSTOM10)                          CUSTOM10,
11434           sum(pjp1.CUSTOM11)                          CUSTOM11,
11435           sum(pjp1.CUSTOM12)                          CUSTOM12,
11436           sum(pjp1.CUSTOM13)                          CUSTOM13,
11437           sum(pjp1.CUSTOM14)                          CUSTOM14,
11438           sum(pjp1.CUSTOM15)                          CUSTOM15
11439         from
11440           PJI_FP_AGGR_PJP1        pjp1,
11441           PJI_ROLLUP_LEVEL_STATUS ss,
11442           PJI_PJP_RBS_HEADER      rbs_hdr,
11443           PJI_PJP_WBS_HEADER      wbs_hdr,
11444           PA_RBS_DENORM           rbs
11445         where
11446           l_extraction_type     <> 'RBS'                   and
11447           rbs.STRUCT_VERSION_ID =  ss.RBS_VERSION_ID       and
11448           pjp1.WORKER_ID        =  p_worker_id             and
11449           pjp1.RBS_AGGR_LEVEL   =  'L'                     and
11450           pjp1.WBS_ROLLUP_FLAG  =  'N'                     and
11451           pjp1.PRG_ROLLUP_FLAG  in ('Y', 'N')              and
11452           pjp1.PROJECT_ID       =  ss.PROJECT_ID           and
11453           pjp1.RBS_VERSION_ID   =  ss.RBS_VERSION_ID       and
11454           pjp1.RBS_ELEMENT_ID   =  rbs.SUB_ID              and
11455           pjp1.PLAN_VERSION_ID  =  ss.PLAN_VERSION_ID      and
11456           pjp1.PLAN_TYPE_CODE   =  ss.PLAN_TYPE_CODE       and
11457           pjp1.PROJECT_ID       =  rbs_hdr.PROJECT_ID      and
11458           pjp1.PLAN_VERSION_ID  =  rbs_hdr.PLAN_VERSION_ID and
11459           pjp1.PLAN_TYPE_CODE   =  rbs_hdr.PLAN_TYPE_CODE  and
11460           pjp1.RBS_VERSION_ID   =  rbs_hdr.RBS_VERSION_ID  and
11461           pjp1.PROJECT_ID       =  wbs_hdr.PROJECT_ID      and
11462           pjp1.PLAN_VERSION_ID  =  wbs_hdr.PLAN_VERSION_ID and
11463           pjp1.PLAN_TYPE_CODE   =  wbs_hdr.PLAN_TYPE_CODE  and
11464           decode(pjp1.PLAN_VERSION_ID,
11465                  -3, pjp1.PLAN_TYPE_ID,
11466                  -4, pjp1.PLAN_TYPE_ID,
11467                      -1)        =  decode(pjp1.PLAN_VERSION_ID,
11468                                           -3, wbs_hdr.PLAN_TYPE_ID,
11469                                           -4, wbs_hdr.PLAN_TYPE_ID,
11470                                               -1)
11471         group by
11472           wbs_hdr.WBS_VERSION_ID,
11473           pjp1.PRG_LEVEL,
11474           pjp1.LINE_TYPE,
11475           pjp1.PROJECT_ID,
11476           pjp1.PROJECT_ORG_ID,
11477           pjp1.PROJECT_ORGANIZATION_ID,
11478           pjp1.PROJECT_ELEMENT_ID,
11479           pjp1.TIME_ID,
11480           pjp1.PERIOD_TYPE_ID,
11481           pjp1.CALENDAR_TYPE,
11482           decode(rbs.SUP_LEVEL,
11483                  rbs.SUB_LEVEL, 'L', 'R'),
11484           pjp1.WBS_ROLLUP_FLAG,
11485           pjp1.PRG_ROLLUP_FLAG,
11486           pjp1.CURR_RECORD_TYPE_ID,
11487           pjp1.CURRENCY_CODE,
11488           rbs.SUP_ID,
11489           pjp1.RBS_VERSION_ID,
11490           pjp1.PLAN_VERSION_ID,
11491           pjp1.PLAN_TYPE_ID,
11492           pjp1.PLAN_TYPE_CODE
11493         )                  pjp1,
11494         PA_XBS_DENORM      wbs,
11495         (
11496           select 1     WBS_SUP_LEVEL,
11497                  'PRJ' INVERT_ID
11498           from   DUAL
11499           union all
11500           select 1     WBS_SUP_LEVEL,
11501                  'WBS' INVERT_ID
11502           from   DUAL
11503         ) top_slice
11504       where
11505         l_extraction_type       <> 'RBS'                       and
11506         'WBS'                   =  wbs.STRUCT_TYPE         (+) and
11507         pjp1.PROJECT_ID         =  wbs.SUP_PROJECT_ID      (+) and
11508         pjp1.WBS_VERSION_ID     =  wbs.STRUCT_VERSION_ID   (+) and
11509         pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID          (+) and
11510         wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+)
11511       group by
11512         decode(pjp1.RBS_AGGR_LEVEL ||
11513                decode(top_slice.INVERT_ID,
11514                       'PRJ', 'Y',
11515                              decode(wbs.SUP_EMT_ID,
11516                                     wbs.SUB_EMT_ID, 'N', 'Y')),
11517                'LN', 'X', null),
11518         pjp1.PRG_LEVEL,
11519         pjp1.LINE_TYPE,
11520         pjp1.PROJECT_ID,
11521         pjp1.PROJECT_ORG_ID,
11522         pjp1.PROJECT_ORGANIZATION_ID,
11523         decode(top_slice.INVERT_ID,
11524                'PRJ', wbs.STRUCT_EMT_ID,
11525                       nvl(wbs.SUP_EMT_ID,
11526                           pjp1.PROJECT_ELEMENT_ID)),
11527         pjp1.TIME_ID,
11528         pjp1.PERIOD_TYPE_ID,
11529         pjp1.CALENDAR_TYPE,
11530         pjp1.RBS_AGGR_LEVEL,
11531         decode(top_slice.INVERT_ID,
11532                'PRJ', 'Y',
11533                       decode(wbs.SUP_EMT_ID,
11534                              wbs.SUB_EMT_ID, 'N', 'Y')),
11535         pjp1.PRG_ROLLUP_FLAG,
11536         pjp1.CURR_RECORD_TYPE_ID,
11537         pjp1.CURRENCY_CODE,
11538         pjp1.RBS_ELEMENT_ID,
11539         pjp1.RBS_VERSION_ID,
11540         pjp1.PLAN_VERSION_ID,
11541         pjp1.PLAN_TYPE_ID,
11542         pjp1.PLAN_TYPE_CODE
11543         ) pjp1
11544       where
11545         nvl(pjp1.RECORD_TYPE, 'Y') = 'Y'
11546       group by
11547         pjp1.PRG_LEVEL,
11548         pjp1.LINE_TYPE,
11549         pjp1.PROJECT_ID,
11550         pjp1.PROJECT_ORG_ID,
11551         pjp1.PROJECT_ORGANIZATION_ID,
11552         pjp1.PROJECT_ELEMENT_ID,
11553         pjp1.TIME_ID,
11554         pjp1.PERIOD_TYPE_ID,
11555         pjp1.CALENDAR_TYPE,
11556         pjp1.RBS_AGGR_LEVEL,
11557         pjp1.WBS_ROLLUP_FLAG,
11558         pjp1.PRG_ROLLUP_FLAG,
11559         pjp1.CURR_RECORD_TYPE_ID,
11560         pjp1.CURRENCY_CODE,
11561         pjp1.RBS_ELEMENT_ID,
11562         pjp1.RBS_VERSION_ID,
11563         pjp1.PLAN_VERSION_ID,
11564         pjp1.PLAN_TYPE_ID,
11565         pjp1.PLAN_TYPE_CODE;
11566 
11567       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_SMART_SLICES(p_worker_id);');
11568 
11569       commit;
11570 
11571     else -- online mode
11572 
11573       insert into PJI_FP_AGGR_PJP1_T pjp1_i
11574       (
11575         WORKER_ID,
11576         RECORD_TYPE,
11577         PRG_LEVEL,
11578         LINE_TYPE,
11579         PROJECT_ID,
11580         PROJECT_ORG_ID,
11581         PROJECT_ORGANIZATION_ID,
11582         PROJECT_ELEMENT_ID,
11583         TIME_ID,
11584         PERIOD_TYPE_ID,
11585         CALENDAR_TYPE,
11586         RBS_AGGR_LEVEL,
11587         WBS_ROLLUP_FLAG,
11588         PRG_ROLLUP_FLAG,
11589         CURR_RECORD_TYPE_ID,
11590         CURRENCY_CODE,
11591         RBS_ELEMENT_ID,
11592         RBS_VERSION_ID,
11593         PLAN_VERSION_ID,
11594         PLAN_TYPE_ID,
11595         PLAN_TYPE_CODE,
11596         RAW_COST,
11597         BRDN_COST,
11598         REVENUE,
11599         BILL_RAW_COST,
11600         BILL_BRDN_COST,
11601         BILL_LABOR_RAW_COST,
11602         BILL_LABOR_BRDN_COST,
11603         BILL_LABOR_HRS,
11604         EQUIPMENT_RAW_COST,
11605         EQUIPMENT_BRDN_COST,
11606         CAPITALIZABLE_RAW_COST,
11607         CAPITALIZABLE_BRDN_COST,
11608         LABOR_RAW_COST,
11609         LABOR_BRDN_COST,
11610         LABOR_HRS,
11611         LABOR_REVENUE,
11612         EQUIPMENT_HOURS,
11613         BILLABLE_EQUIPMENT_HOURS,
11614         SUP_INV_COMMITTED_COST,
11615         PO_COMMITTED_COST,
11616         PR_COMMITTED_COST,
11617         OTH_COMMITTED_COST,
11618         ACT_LABOR_HRS,
11619         ACT_EQUIP_HRS,
11620         ACT_LABOR_BRDN_COST,
11621         ACT_EQUIP_BRDN_COST,
11622         ACT_BRDN_COST,
11623         ACT_RAW_COST,
11624         ACT_REVENUE,
11625         ACT_LABOR_RAW_COST,
11626         ACT_EQUIP_RAW_COST,
11627         ETC_LABOR_HRS,
11628         ETC_EQUIP_HRS,
11629         ETC_LABOR_BRDN_COST,
11630         ETC_EQUIP_BRDN_COST,
11631         ETC_BRDN_COST,
11632         ETC_RAW_COST,
11633         ETC_LABOR_RAW_COST,
11634         ETC_EQUIP_RAW_COST,
11635         CUSTOM1,
11636         CUSTOM2,
11637         CUSTOM3,
11638         CUSTOM4,
11639         CUSTOM5,
11640         CUSTOM6,
11641         CUSTOM7,
11642         CUSTOM8,
11643         CUSTOM9,
11644         CUSTOM10,
11645         CUSTOM11,
11646         CUSTOM12,
11647         CUSTOM13,
11648         CUSTOM14,
11649         CUSTOM15
11650       )
11651       select
11652         1                                             WORKER_ID,
11653         -- p_worker_id                                WORKER_ID,
11654         'R'                                           RECORD_TYPE,
11655         pjp1.PRG_LEVEL,
11656         pjp1.LINE_TYPE,
11657         pjp1.PROJECT_ID,
11658         pjp1.PROJECT_ORG_ID,
11659         pjp1.PROJECT_ORGANIZATION_ID,
11660         pjp1.PROJECT_ELEMENT_ID,
11661         pjp1.TIME_ID,
11662         pjp1.PERIOD_TYPE_ID,
11663         pjp1.CALENDAR_TYPE,
11664         pjp1.RBS_AGGR_LEVEL,
11665         pjp1.WBS_ROLLUP_FLAG,
11666         pjp1.PRG_ROLLUP_FLAG,
11667         pjp1.CURR_RECORD_TYPE_ID,
11668         pjp1.CURRENCY_CODE,
11669         pjp1.RBS_ELEMENT_ID,
11670         pjp1.RBS_VERSION_ID,
11671         pjp1.PLAN_VERSION_ID,
11672         pjp1.PLAN_TYPE_ID,
11673         pjp1.PLAN_TYPE_CODE,
11674         sum(pjp1.RAW_COST)                            RAW_COST,
11675         sum(pjp1.BRDN_COST)                           BRDN_COST,
11676         sum(pjp1.REVENUE)                             REVENUE,
11677         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
11678         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
11679         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
11680         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
11681         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
11682         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
11683         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
11684         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
11685         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
11686         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
11687         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
11688         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
11689         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
11690         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
11691         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
11692         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
11693         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
11694         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
11695         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
11696         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
11697         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
11698         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
11699         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
11700         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
11701         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
11702         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
11703         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
11704         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
11705         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
11706         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
11707         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
11708         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
11709         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
11710         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
11711         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
11712         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
11713         sum(pjp1.CUSTOM1)                             CUSTOM1,
11714         sum(pjp1.CUSTOM2)                             CUSTOM2,
11715         sum(pjp1.CUSTOM3)                             CUSTOM3,
11716         sum(pjp1.CUSTOM4)                             CUSTOM4,
11717         sum(pjp1.CUSTOM5)                             CUSTOM5,
11718         sum(pjp1.CUSTOM6)                             CUSTOM6,
11719         sum(pjp1.CUSTOM7)                             CUSTOM7,
11720         sum(pjp1.CUSTOM8)                             CUSTOM8,
11721         sum(pjp1.CUSTOM9)                             CUSTOM9,
11722         sum(pjp1.CUSTOM10)                            CUSTOM10,
11723         sum(pjp1.CUSTOM11)                            CUSTOM11,
11724         sum(pjp1.CUSTOM12)                            CUSTOM12,
11725         sum(pjp1.CUSTOM13)                            CUSTOM13,
11726         sum(pjp1.CUSTOM14)                            CUSTOM14,
11727         sum(pjp1.CUSTOM15)                            CUSTOM15
11728       from
11729         (
11730       select /*+ ordered index(wbs PA_XBS_DENORM_N2) */ -- smart slices
11731         decode(pjp1.RBS_AGGR_LEVEL ||
11732                decode(top_slice.INVERT_ID,
11733                       'PRJ', 'Y',
11734                              decode(wbs.SUP_EMT_ID,
11735                                     wbs.SUB_EMT_ID, 'N', 'Y')),
11736                'LN', 'X', null)                       RECORD_TYPE,
11737         pjp1.PRG_LEVEL,
11738         pjp1.LINE_TYPE,
11739         pjp1.PROJECT_ID,
11740         pjp1.PROJECT_ORG_ID,
11741         pjp1.PROJECT_ORGANIZATION_ID,
11742         decode(top_slice.INVERT_ID,
11743                'PRJ', wbs.STRUCT_EMT_ID,
11744                       nvl(wbs.SUP_EMT_ID,
11745                           pjp1.PROJECT_ELEMENT_ID))   PROJECT_ELEMENT_ID,
11746         pjp1.TIME_ID,
11747         pjp1.PERIOD_TYPE_ID,
11748         pjp1.CALENDAR_TYPE,
11749         pjp1.RBS_AGGR_LEVEL,
11750         decode(top_slice.INVERT_ID,
11751                'PRJ', 'Y',
11752                       decode(wbs.SUP_EMT_ID,
11753                              wbs.SUB_EMT_ID, 'N', 'Y')) WBS_ROLLUP_FLAG,
11754         pjp1.PRG_ROLLUP_FLAG,
11755         pjp1.CURR_RECORD_TYPE_ID,
11756         pjp1.CURRENCY_CODE,
11757         pjp1.RBS_ELEMENT_ID,
11758         pjp1.RBS_VERSION_ID,
11759         pjp1.PLAN_VERSION_ID,
11760         pjp1.PLAN_TYPE_ID,
11761         pjp1.PLAN_TYPE_CODE,
11762         sum(pjp1.RAW_COST)                            RAW_COST,
11763         sum(pjp1.BRDN_COST)                           BRDN_COST,
11764         sum(pjp1.REVENUE)                             REVENUE,
11765         sum(pjp1.BILL_RAW_COST)                       BILL_RAW_COST,
11766         sum(pjp1.BILL_BRDN_COST)                      BILL_BRDN_COST,
11767         sum(pjp1.BILL_LABOR_RAW_COST)                 BILL_LABOR_RAW_COST,
11768         sum(pjp1.BILL_LABOR_BRDN_COST)                BILL_LABOR_BRDN_COST,
11769         sum(pjp1.BILL_LABOR_HRS)                      BILL_LABOR_HRS,
11770         sum(pjp1.EQUIPMENT_RAW_COST)                  EQUIPMENT_RAW_COST,
11771         sum(pjp1.EQUIPMENT_BRDN_COST)                 EQUIPMENT_BRDN_COST,
11772         sum(pjp1.CAPITALIZABLE_RAW_COST)              CAPITALIZABLE_RAW_COST,
11773         sum(pjp1.CAPITALIZABLE_BRDN_COST)             CAPITALIZABLE_BRDN_COST,
11774         sum(pjp1.LABOR_RAW_COST)                      LABOR_RAW_COST,
11775         sum(pjp1.LABOR_BRDN_COST)                     LABOR_BRDN_COST,
11776         sum(pjp1.LABOR_HRS)                           LABOR_HRS,
11777         sum(pjp1.LABOR_REVENUE)                       LABOR_REVENUE,
11778         sum(pjp1.EQUIPMENT_HOURS)                     EQUIPMENT_HOURS,
11779         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)            BILLABLE_EQUIPMENT_HOURS,
11780         sum(pjp1.SUP_INV_COMMITTED_COST)              SUP_INV_COMMITTED_COST,
11781         sum(pjp1.PO_COMMITTED_COST)                   PO_COMMITTED_COST,
11782         sum(pjp1.PR_COMMITTED_COST)                   PR_COMMITTED_COST,
11783         sum(pjp1.OTH_COMMITTED_COST)                  OTH_COMMITTED_COST,
11784         sum(pjp1.ACT_LABOR_HRS)                       ACT_LABOR_HRS,
11785         sum(pjp1.ACT_EQUIP_HRS)                       ACT_EQUIP_HRS,
11786         sum(pjp1.ACT_LABOR_BRDN_COST)                 ACT_LABOR_BRDN_COST,
11787         sum(pjp1.ACT_EQUIP_BRDN_COST)                 ACT_EQUIP_BRDN_COST,
11788         sum(pjp1.ACT_BRDN_COST)                       ACT_BRDN_COST,
11789         sum(pjp1.ACT_RAW_COST)                        ACT_RAW_COST,
11790         sum(pjp1.ACT_REVENUE)                         ACT_REVENUE,
11791         sum(pjp1.ACT_LABOR_RAW_COST)                  ACT_LABOR_RAW_COST,
11792         sum(pjp1.ACT_EQUIP_RAW_COST)                  ACT_EQUIP_RAW_COST,
11793         sum(pjp1.ETC_LABOR_HRS)                       ETC_LABOR_HRS,
11794         sum(pjp1.ETC_EQUIP_HRS)                       ETC_EQUIP_HRS,
11795         sum(pjp1.ETC_LABOR_BRDN_COST)                 ETC_LABOR_BRDN_COST,
11796         sum(pjp1.ETC_EQUIP_BRDN_COST)                 ETC_EQUIP_BRDN_COST,
11797         sum(pjp1.ETC_BRDN_COST)                       ETC_BRDN_COST,
11798         sum(pjp1.ETC_RAW_COST)                        ETC_RAW_COST,
11799         sum(pjp1.ETC_LABOR_RAW_COST)                  ETC_LABOR_RAW_COST,
11800         sum(pjp1.ETC_EQUIP_RAW_COST)                  ETC_EQUIP_RAW_COST,
11801         sum(pjp1.CUSTOM1)                             CUSTOM1,
11802         sum(pjp1.CUSTOM2)                             CUSTOM2,
11803         sum(pjp1.CUSTOM3)                             CUSTOM3,
11804         sum(pjp1.CUSTOM4)                             CUSTOM4,
11805         sum(pjp1.CUSTOM5)                             CUSTOM5,
11806         sum(pjp1.CUSTOM6)                             CUSTOM6,
11807         sum(pjp1.CUSTOM7)                             CUSTOM7,
11808         sum(pjp1.CUSTOM8)                             CUSTOM8,
11809         sum(pjp1.CUSTOM9)                             CUSTOM9,
11810         sum(pjp1.CUSTOM10)                            CUSTOM10,
11811         sum(pjp1.CUSTOM11)                            CUSTOM11,
11812         sum(pjp1.CUSTOM12)                            CUSTOM12,
11813         sum(pjp1.CUSTOM13)                            CUSTOM13,
11814         sum(pjp1.CUSTOM14)                            CUSTOM14,
11815         sum(pjp1.CUSTOM15)                            CUSTOM15
11816       from
11817         (
11818         select /*+ ordered */
11819           wbs_hdr.WBS_VERSION_ID,
11820           pjp1.PRG_LEVEL,
11821           pjp1.LINE_TYPE,
11822           pjp1.PROJECT_ID,
11823           pjp1.PROJECT_ORG_ID,
11824           pjp1.PROJECT_ORGANIZATION_ID,
11825           pjp1.PROJECT_ELEMENT_ID,
11826           pjp1.TIME_ID,
11827           pjp1.PERIOD_TYPE_ID,
11828           pjp1.CALENDAR_TYPE,
11829           decode(rbs.SUP_LEVEL,
11830                  rbs.SUB_LEVEL, 'L', 'R')             RBS_AGGR_LEVEL,
11831           pjp1.WBS_ROLLUP_FLAG,
11832           pjp1.PRG_ROLLUP_FLAG,
11833           pjp1.CURR_RECORD_TYPE_ID,
11834           pjp1.CURRENCY_CODE,
11835           rbs.SUP_ID                                  RBS_ELEMENT_ID,
11836           pjp1.RBS_VERSION_ID,
11837           pjp1.PLAN_VERSION_ID,
11838           pjp1.PLAN_TYPE_ID,
11839           pjp1.PLAN_TYPE_CODE,
11840           sum(pjp1.RAW_COST)                          RAW_COST,
11841           sum(pjp1.BRDN_COST)                         BRDN_COST,
11842           sum(pjp1.REVENUE)                           REVENUE,
11843           sum(pjp1.BILL_RAW_COST)                     BILL_RAW_COST,
11844           sum(pjp1.BILL_BRDN_COST)                    BILL_BRDN_COST,
11845           sum(pjp1.BILL_LABOR_RAW_COST)               BILL_LABOR_RAW_COST,
11846           sum(pjp1.BILL_LABOR_BRDN_COST)              BILL_LABOR_BRDN_COST,
11847           sum(pjp1.BILL_LABOR_HRS)                    BILL_LABOR_HRS,
11848           sum(pjp1.EQUIPMENT_RAW_COST)                EQUIPMENT_RAW_COST,
11849           sum(pjp1.EQUIPMENT_BRDN_COST)               EQUIPMENT_BRDN_COST,
11850           sum(pjp1.CAPITALIZABLE_RAW_COST)            CAPITALIZABLE_RAW_COST,
11851           sum(pjp1.CAPITALIZABLE_BRDN_COST)           CAPITALIZABLE_BRDN_COST,
11852           sum(pjp1.LABOR_RAW_COST)                    LABOR_RAW_COST,
11853           sum(pjp1.LABOR_BRDN_COST)                   LABOR_BRDN_COST,
11854           sum(pjp1.LABOR_HRS)                         LABOR_HRS,
11855           sum(pjp1.LABOR_REVENUE)                     LABOR_REVENUE,
11856           sum(pjp1.EQUIPMENT_HOURS)                   EQUIPMENT_HOURS,
11857           sum(pjp1.BILLABLE_EQUIPMENT_HOURS)          BILLABLE_EQUIPMENT_HOURS,
11858           sum(pjp1.SUP_INV_COMMITTED_COST)            SUP_INV_COMMITTED_COST,
11859           sum(pjp1.PO_COMMITTED_COST)                 PO_COMMITTED_COST,
11860           sum(pjp1.PR_COMMITTED_COST)                 PR_COMMITTED_COST,
11861           sum(pjp1.OTH_COMMITTED_COST)                OTH_COMMITTED_COST,
11862           sum(pjp1.ACT_LABOR_HRS)                     ACT_LABOR_HRS,
11863           sum(pjp1.ACT_EQUIP_HRS)                     ACT_EQUIP_HRS,
11864           sum(pjp1.ACT_LABOR_BRDN_COST)               ACT_LABOR_BRDN_COST,
11865           sum(pjp1.ACT_EQUIP_BRDN_COST)               ACT_EQUIP_BRDN_COST,
11866           sum(pjp1.ACT_BRDN_COST)                     ACT_BRDN_COST,
11867           sum(pjp1.ACT_RAW_COST)                      ACT_RAW_COST,
11868           sum(pjp1.ACT_REVENUE)                       ACT_REVENUE,
11869           sum(pjp1.ACT_LABOR_RAW_COST)                ACT_LABOR_RAW_COST,
11870           sum(pjp1.ACT_EQUIP_RAW_COST)                ACT_EQUIP_RAW_COST,
11871           sum(pjp1.ETC_LABOR_HRS)                     ETC_LABOR_HRS,
11872           sum(pjp1.ETC_EQUIP_HRS)                     ETC_EQUIP_HRS,
11873           sum(pjp1.ETC_LABOR_BRDN_COST)               ETC_LABOR_BRDN_COST,
11874           sum(pjp1.ETC_EQUIP_BRDN_COST)               ETC_EQUIP_BRDN_COST,
11875           sum(pjp1.ETC_BRDN_COST)                     ETC_BRDN_COST,
11876           sum(pjp1.ETC_RAW_COST)                      ETC_RAW_COST,
11877           sum(pjp1.ETC_LABOR_RAW_COST)                ETC_LABOR_RAW_COST,
11878           sum(pjp1.ETC_EQUIP_RAW_COST)                ETC_EQUIP_RAW_COST,
11879           sum(pjp1.CUSTOM1)                           CUSTOM1,
11880           sum(pjp1.CUSTOM2)                           CUSTOM2,
11881           sum(pjp1.CUSTOM3)                           CUSTOM3,
11882           sum(pjp1.CUSTOM4)                           CUSTOM4,
11883           sum(pjp1.CUSTOM5)                           CUSTOM5,
11884           sum(pjp1.CUSTOM6)                           CUSTOM6,
11885           sum(pjp1.CUSTOM7)                           CUSTOM7,
11886           sum(pjp1.CUSTOM8)                           CUSTOM8,
11887           sum(pjp1.CUSTOM9)                           CUSTOM9,
11888           sum(pjp1.CUSTOM10)                          CUSTOM10,
11889           sum(pjp1.CUSTOM11)                          CUSTOM11,
11890           sum(pjp1.CUSTOM12)                          CUSTOM12,
11891           sum(pjp1.CUSTOM13)                          CUSTOM13,
11892           sum(pjp1.CUSTOM14)                          CUSTOM14,
11893           sum(pjp1.CUSTOM15)                          CUSTOM15
11894         from
11895           PJI_FP_AGGR_PJP1_T      pjp1,
11896           PJI_ROLLUP_LEVEL_STATUS ss,
11897           PJI_PJP_RBS_HEADER      rbs_hdr,
11898           PJI_PJP_WBS_HEADER      wbs_hdr,
11899           PA_RBS_DENORM           rbs
11900         where
11901           -- l_extraction_type  <> 'RBS'                   and
11902           rbs.STRUCT_VERSION_ID =  ss.RBS_VERSION_ID       and
11903           -- pjp1.WORKER_ID     =  p_worker_id             and
11904           pjp1.RBS_AGGR_LEVEL   =  'L'                     and
11905           pjp1.WBS_ROLLUP_FLAG  =  'N'                     and
11906           pjp1.PRG_ROLLUP_FLAG  in ('Y', 'N')              and
11907           pjp1.PROJECT_ID       =  ss.PROJECT_ID           and
11908           pjp1.RBS_VERSION_ID   =  ss.RBS_VERSION_ID       and
11909           pjp1.RBS_ELEMENT_ID   =  rbs.SUB_ID              and
11910           pjp1.PLAN_VERSION_ID  =  ss.PLAN_VERSION_ID      and
11911           pjp1.PLAN_TYPE_CODE   =  ss.PLAN_TYPE_CODE       and
11912           pjp1.PROJECT_ID       =  rbs_hdr.PROJECT_ID      and
11913           pjp1.PLAN_VERSION_ID  =  rbs_hdr.PLAN_VERSION_ID and
11914           pjp1.PLAN_TYPE_CODE   =  rbs_hdr.PLAN_TYPE_CODE  and
11915           pjp1.RBS_VERSION_ID   =  rbs_hdr.RBS_VERSION_ID  and
11916           pjp1.PROJECT_ID       =  wbs_hdr.PROJECT_ID      and
11917           pjp1.PLAN_VERSION_ID  =  wbs_hdr.PLAN_VERSION_ID and
11918           pjp1.PLAN_TYPE_CODE   =  wbs_hdr.PLAN_TYPE_CODE  and
11919           decode(pjp1.PLAN_VERSION_ID,
11920                  -3, pjp1.PLAN_TYPE_ID,
11921                  -4, pjp1.PLAN_TYPE_ID,
11922                      -1)        =  decode(pjp1.PLAN_VERSION_ID,
11923                                           -3, wbs_hdr.PLAN_TYPE_ID,
11924                                           -4, wbs_hdr.PLAN_TYPE_ID,
11925                                               -1)
11926         group by
11927           wbs_hdr.WBS_VERSION_ID,
11928           pjp1.PRG_LEVEL,
11929           pjp1.LINE_TYPE,
11930           pjp1.PROJECT_ID,
11931           pjp1.PROJECT_ORG_ID,
11932           pjp1.PROJECT_ORGANIZATION_ID,
11933           pjp1.PROJECT_ELEMENT_ID,
11934           pjp1.TIME_ID,
11935           pjp1.PERIOD_TYPE_ID,
11936           pjp1.CALENDAR_TYPE,
11937           decode(rbs.SUP_LEVEL,
11938                  rbs.SUB_LEVEL, 'L', 'R'),
11939           pjp1.WBS_ROLLUP_FLAG,
11940           pjp1.PRG_ROLLUP_FLAG,
11941           pjp1.CURR_RECORD_TYPE_ID,
11942           pjp1.CURRENCY_CODE,
11943           rbs.SUP_ID,
11944           pjp1.RBS_VERSION_ID,
11945           pjp1.PLAN_VERSION_ID,
11946           pjp1.PLAN_TYPE_ID,
11947           pjp1.PLAN_TYPE_CODE
11948         )                  pjp1,
11949         PA_XBS_DENORM      wbs,
11950         (
11951           select 1     WBS_SUP_LEVEL,
11952                  'PRJ' INVERT_ID
11953           from   DUAL
11954           union all
11955           select 1     WBS_SUP_LEVEL,
11956                  'WBS' INVERT_ID
11957           from   DUAL
11958         ) top_slice
11959       where
11960         -- l_extraction_type    <> 'RBS'                       and
11961         'WBS'                   =  wbs.STRUCT_TYPE         (+) and
11962         pjp1.PROJECT_ID         =  wbs.SUP_PROJECT_ID      (+) and
11963         pjp1.WBS_VERSION_ID     =  wbs.STRUCT_VERSION_ID   (+) and
11964         pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID          (+) and
11965         wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+)
11966       group by
11967         decode(pjp1.RBS_AGGR_LEVEL ||
11968                decode(top_slice.INVERT_ID,
11969                       'PRJ', 'Y',
11970                              decode(wbs.SUP_EMT_ID,
11971                                     wbs.SUB_EMT_ID, 'N', 'Y')),
11972                'LN', 'X', null),
11973         pjp1.PRG_LEVEL,
11974         pjp1.LINE_TYPE,
11975         pjp1.PROJECT_ID,
11976         pjp1.PROJECT_ORG_ID,
11977         pjp1.PROJECT_ORGANIZATION_ID,
11978         decode(top_slice.INVERT_ID,
11979                'PRJ', wbs.STRUCT_EMT_ID,
11980                       nvl(wbs.SUP_EMT_ID,
11981                           pjp1.PROJECT_ELEMENT_ID)),
11982         pjp1.TIME_ID,
11983         pjp1.PERIOD_TYPE_ID,
11984         pjp1.CALENDAR_TYPE,
11985         pjp1.RBS_AGGR_LEVEL,
11986         decode(top_slice.INVERT_ID,
11987                'PRJ', 'Y',
11988                       decode(wbs.SUP_EMT_ID,
11989                              wbs.SUB_EMT_ID, 'N', 'Y')),
11990         pjp1.PRG_ROLLUP_FLAG,
11991         pjp1.CURR_RECORD_TYPE_ID,
11992         pjp1.CURRENCY_CODE,
11993         pjp1.RBS_ELEMENT_ID,
11994         pjp1.RBS_VERSION_ID,
11995         pjp1.PLAN_VERSION_ID,
11996         pjp1.PLAN_TYPE_ID,
11997         pjp1.PLAN_TYPE_CODE
11998         ) pjp1
11999       where
12000         nvl(pjp1.RECORD_TYPE, 'Y') = 'Y'
12001       group by
12002         pjp1.PRG_LEVEL,
12003         pjp1.LINE_TYPE,
12004         pjp1.PROJECT_ID,
12005         pjp1.PROJECT_ORG_ID,
12006         pjp1.PROJECT_ORGANIZATION_ID,
12007         pjp1.PROJECT_ELEMENT_ID,
12008         pjp1.TIME_ID,
12009         pjp1.PERIOD_TYPE_ID,
12010         pjp1.CALENDAR_TYPE,
12011         pjp1.RBS_AGGR_LEVEL,
12012         pjp1.WBS_ROLLUP_FLAG,
12013         pjp1.PRG_ROLLUP_FLAG,
12014         pjp1.CURR_RECORD_TYPE_ID,
12015         pjp1.CURRENCY_CODE,
12016         pjp1.RBS_ELEMENT_ID,
12017         pjp1.RBS_VERSION_ID,
12018         pjp1.PLAN_VERSION_ID,
12019         pjp1.PLAN_TYPE_ID,
12020         pjp1.PLAN_TYPE_CODE;
12021 
12022     end if;
12023 
12024   end ROLLUP_FPR_RBS_SMART_SLICES;
12025 
12026 
12027   -- -----------------------------------------------------
12028   -- procedure ROLLUP_ACR_WBS
12029   --
12030   --   History
12031   --   19-MAR-2004  SVERMETT  Created
12032   --
12033   -- This API will be called for both online and bulk processing.
12034   --
12035   -- -----------------------------------------------------
12036   procedure ROLLUP_ACR_WBS (p_worker_id in number default null) is
12037 
12038     l_process         varchar2(30);
12039     l_extraction_type varchar2(30);
12040     l_level           number;
12041     l_max_level       number;
12042     l_step_seq        number;
12043     l_level_seq       number;
12044     l_count           number;
12045 
12046   begin
12047 
12048     if (p_worker_id is not null) then
12049 
12050       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
12051 
12052       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);')) then
12053         return;
12054       end if;
12055 
12056       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
12057 
12058       -- allow recovery after each level is processed
12059 
12060       select
12061         STEP_SEQ
12062       into
12063         l_step_seq
12064       from
12065         PJI_SYSTEM_PRC_STATUS
12066       where
12067         PROCESS_NAME = l_process and
12068         STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);';
12069 
12070       select
12071         count(*)
12072       into
12073         l_count
12074       from
12075         PJI_SYSTEM_PRC_STATUS
12076       where
12077         PROCESS_NAME = l_process and
12078         STEP_NAME like 'ROLLUP_ACR_WBS%';
12079 
12080       if (l_count = 0) then
12081 
12082         select /*+ ordered index(den PJI_XBS_DENORM_N3) */
12083           nvl(max(den.SUP_LEVEL), 0)
12084         into
12085           l_level
12086         from
12087           PJI_PJP_PROJ_BATCH_MAP map,
12088           PJI_XBS_DENORM den
12089         where
12090           map.WORKER_ID      = p_worker_id    and
12091           den.STRUCT_TYPE    = 'PRG'          and
12092           den.SUB_LEVEL      = den.SUP_LEVEL  and
12093           den.SUP_PROJECT_ID = map.PROJECT_ID;
12094 
12095         PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
12096                                                'MAX_PROGRAM_LEVEL',
12097                                                l_level);
12098 
12099         for x in 1 .. l_level loop
12100 
12101           insert into PJI_SYSTEM_PRC_STATUS
12102           (
12103             PROCESS_NAME,
12104             STEP_SEQ,
12105             STEP_STATUS,
12106             STEP_NAME,
12107             START_DATE,
12108             END_DATE
12109           )
12110           select
12111             l_process                                             PROCESS_NAME,
12112             to_char(l_step_seq + x / 1000)                        STEP_SEQ,
12113             null                                                  STEP_STATUS,
12114             'ROLLUP_ACR_WBS - level ' || to_char(l_level - x + 1) STEP_NAME,
12115             null                                                  START_DATE,
12116             null                                                  END_DATE
12117           from
12118             DUAL;
12119 
12120         end loop;
12121 
12122       end if;
12123 
12124       l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
12125                      (l_process, 'MAX_PROGRAM_LEVEL');
12126 
12127       select
12128         nvl(to_number(min(STEP_SEQ)), 0)
12129       into
12130         l_level_seq
12131       from
12132         PJI_SYSTEM_PRC_STATUS
12133       where
12134         PROCESS_NAME = l_process and
12135         STEP_NAME like 'ROLLUP_ACR_WBS%' and
12136         STEP_STATUS is null;
12137 
12138       if (l_level_seq = 0) then
12139         l_level := 0;
12140       else
12141         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
12142       end if;
12143 
12144       while (l_level > 0) loop
12145 
12146         update PJI_SYSTEM_PRC_STATUS
12147         set    START_DATE = sysdate
12148         where  PROCESS_NAME = l_process and
12149                STEP_SEQ = l_level_seq;
12150 
12151         -- rollup project hiearchy
12152 
12153         insert into PJI_AC_AGGR_PJP1
12154         (
12155           WORKER_ID,
12156           RECORD_TYPE,
12157           PRG_LEVEL,
12158           PROJECT_ID,
12159           PROJECT_ORG_ID,
12160           PROJECT_ORGANIZATION_ID,
12161           PROJECT_ELEMENT_ID,
12162           TIME_ID,
12163           PERIOD_TYPE_ID,
12164           CALENDAR_TYPE,
12165           WBS_ROLLUP_FLAG,
12166           PRG_ROLLUP_FLAG,
12167           CURR_RECORD_TYPE_ID,
12168           CURRENCY_CODE,
12169           REVENUE,
12170           INITIAL_FUNDING_AMOUNT,
12171           INITIAL_FUNDING_COUNT,
12172           ADDITIONAL_FUNDING_AMOUNT,
12173           ADDITIONAL_FUNDING_COUNT,
12174           CANCELLED_FUNDING_AMOUNT,
12175           CANCELLED_FUNDING_COUNT,
12176           FUNDING_ADJUSTMENT_AMOUNT,
12177           FUNDING_ADJUSTMENT_COUNT,
12178           REVENUE_WRITEOFF,
12179           AR_INVOICE_AMOUNT,
12180           AR_INVOICE_COUNT,
12181           AR_CASH_APPLIED_AMOUNT,
12182           AR_INVOICE_WRITE_OFF_AMOUNT,
12183           AR_INVOICE_WRITEOFF_COUNT,
12184           AR_CREDIT_MEMO_AMOUNT,
12185           AR_CREDIT_MEMO_COUNT,
12186           UNBILLED_RECEIVABLES,
12187           UNEARNED_REVENUE,
12188           AR_UNAPPR_INVOICE_AMOUNT,
12189           AR_UNAPPR_INVOICE_COUNT,
12190           AR_APPR_INVOICE_AMOUNT,
12191           AR_APPR_INVOICE_COUNT,
12192           AR_AMOUNT_DUE,
12193           AR_COUNT_DUE,
12194           AR_AMOUNT_OVERDUE,
12195           AR_COUNT_OVERDUE,
12196           CUSTOM1,
12197           CUSTOM2,
12198           CUSTOM3,
12199           CUSTOM4,
12200           CUSTOM5,
12201           CUSTOM6,
12202           CUSTOM7,
12203           CUSTOM8,
12204           CUSTOM9,
12205           CUSTOM10,
12206           CUSTOM11,
12207           CUSTOM12,
12208           CUSTOM13,
12209           CUSTOM14,
12210           CUSTOM15
12211         )
12212         select
12213           pjp1_i.WORKER_ID,
12214           pjp1_i.RECORD_TYPE,
12215           pjp1_i.PRG_LEVEL,
12216           pjp1_i.PROJECT_ID,
12217           pjp1_i.PROJECT_ORG_ID,
12218           pjp1_i.PROJECT_ORGANIZATION_ID,
12219           pjp1_i.PROJECT_ELEMENT_ID,
12220           pjp1_i.TIME_ID,
12221           pjp1_i.PERIOD_TYPE_ID,
12222           pjp1_i.CALENDAR_TYPE,
12223           pjp1_i.WBS_ROLLUP_FLAG,
12224           pjp1_i.PRG_ROLLUP_FLAG,
12225           pjp1_i.CURR_RECORD_TYPE_ID,
12226           pjp1_i.CURRENCY_CODE,
12227           pjp1_i.REVENUE,
12228           pjp1_i.INITIAL_FUNDING_AMOUNT,
12229           pjp1_i.INITIAL_FUNDING_COUNT,
12230           pjp1_i.ADDITIONAL_FUNDING_AMOUNT,
12231           pjp1_i.ADDITIONAL_FUNDING_COUNT,
12232           pjp1_i.CANCELLED_FUNDING_AMOUNT,
12233           pjp1_i.CANCELLED_FUNDING_COUNT,
12234           pjp1_i.FUNDING_ADJUSTMENT_AMOUNT,
12235           pjp1_i.FUNDING_ADJUSTMENT_COUNT,
12236           pjp1_i.REVENUE_WRITEOFF,
12237           pjp1_i.AR_INVOICE_AMOUNT,
12238           pjp1_i.AR_INVOICE_COUNT,
12239           pjp1_i.AR_CASH_APPLIED_AMOUNT,
12240           pjp1_i.AR_INVOICE_WRITE_OFF_AMOUNT,
12241           pjp1_i.AR_INVOICE_WRITEOFF_COUNT,
12242           pjp1_i.AR_CREDIT_MEMO_AMOUNT,
12243           pjp1_i.AR_CREDIT_MEMO_COUNT,
12244           pjp1_i.UNBILLED_RECEIVABLES,
12245           pjp1_i.UNEARNED_REVENUE,
12246           pjp1_i.AR_UNAPPR_INVOICE_AMOUNT,
12247           pjp1_i.AR_UNAPPR_INVOICE_COUNT,
12248           pjp1_i.AR_APPR_INVOICE_AMOUNT,
12249           pjp1_i.AR_APPR_INVOICE_COUNT,
12250           pjp1_i.AR_AMOUNT_DUE,
12251           pjp1_i.AR_COUNT_DUE,
12252           pjp1_i.AR_AMOUNT_OVERDUE,
12253           pjp1_i.AR_COUNT_OVERDUE,
12254           pjp1_i.CUSTOM1,
12255           pjp1_i.CUSTOM2,
12256           pjp1_i.CUSTOM3,
12257           pjp1_i.CUSTOM4,
12258           pjp1_i.CUSTOM5,
12259           pjp1_i.CUSTOM6,
12260           pjp1_i.CUSTOM7,
12261           pjp1_i.CUSTOM8,
12262           pjp1_i.CUSTOM9,
12263           pjp1_i.CUSTOM10,
12264           pjp1_i.CUSTOM11,
12265           pjp1_i.CUSTOM12,
12266           pjp1_i.CUSTOM13,
12267           pjp1_i.CUSTOM14,
12268           pjp1_i.CUSTOM15
12269         from
12270           (
12271         select
12272           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12273                  pjp.INSERT_FLAG, 'Y')             INSERT_FLAG,
12274           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12275                  null, prg.SUP_ID)                 SUP_ID,
12276           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12277                  null, prg.SUP_EMT_ID)             SUP_EMT_ID,
12278           p_worker_id                              WORKER_ID,
12279           'W'                                      RECORD_TYPE,
12280           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12281                  l_level, prg.SUP_LEVEL)           PRG_LEVEL,
12282           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12283                  pjp.PROJECT_ID,
12284                  prg.SUP_PROJECT_ID)               PROJECT_ID,
12285           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12286                  pjp.PROJECT_ORG_ID,
12287                  prg.SUP_PROJECT_ORG_ID)           PROJECT_ORG_ID,
12288           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12289                  pjp.PROJECT_ORGANIZATION_ID,
12290                  prg.SUP_PROJECT_ORGANIZATION_ID)  PROJECT_ORGANIZATION_ID,
12291           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12292                  pjp.PROJECT_ELEMENT_ID,
12293                  prg.SUB_ROLLUP_ID)                PROJECT_ELEMENT_ID,
12294           pjp.TIME_ID,
12295           pjp.PERIOD_TYPE_ID,
12296           pjp.CALENDAR_TYPE,
12297           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12298                  pjp.WBS_ROLLUP_FLAG, 'N')         WBS_ROLLUP_FLAG,
12299           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12300                  pjp.PRG_ROLLUP_FLAG, 'Y')         PRG_ROLLUP_FLAG,
12301           pjp.CURR_RECORD_TYPE_ID,
12302           pjp.CURRENCY_CODE,
12303           sum(pjp.REVENUE)                         REVENUE,
12304           sum(pjp.INITIAL_FUNDING_AMOUNT)          INITIAL_FUNDING_AMOUNT,
12305           sum(pjp.INITIAL_FUNDING_COUNT)           INITIAL_FUNDING_COUNT,
12306           sum(pjp.ADDITIONAL_FUNDING_AMOUNT)       ADDITIONAL_FUNDING_AMOUNT,
12307           sum(pjp.ADDITIONAL_FUNDING_COUNT)        ADDITIONAL_FUNDING_COUNT,
12308           sum(pjp.CANCELLED_FUNDING_AMOUNT)        CANCELLED_FUNDING_AMOUNT,
12309           sum(pjp.CANCELLED_FUNDING_COUNT)         CANCELLED_FUNDING_COUNT,
12310           sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)       FUNDING_ADJUSTMENT_AMOUNT,
12311           sum(pjp.FUNDING_ADJUSTMENT_COUNT)        FUNDING_ADJUSTMENT_COUNT,
12312           sum(pjp.REVENUE_WRITEOFF)                REVENUE_WRITEOFF,
12313           sum(pjp.AR_INVOICE_AMOUNT)               AR_INVOICE_AMOUNT,
12314           sum(pjp.AR_INVOICE_COUNT)                AR_INVOICE_COUNT,
12315           sum(pjp.AR_CASH_APPLIED_AMOUNT)          AR_CASH_APPLIED_AMOUNT,
12316           sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)     AR_INVOICE_WRITE_OFF_AMOUNT,
12317           sum(pjp.AR_INVOICE_WRITEOFF_COUNT)       AR_INVOICE_WRITEOFF_COUNT,
12318           sum(pjp.AR_CREDIT_MEMO_AMOUNT)           AR_CREDIT_MEMO_AMOUNT,
12319           sum(pjp.AR_CREDIT_MEMO_COUNT)            AR_CREDIT_MEMO_COUNT,
12320           sum(pjp.UNBILLED_RECEIVABLES)            UNBILLED_RECEIVABLES,
12321           sum(pjp.UNEARNED_REVENUE)                UNEARNED_REVENUE,
12322           sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)        AR_UNAPPR_INVOICE_AMOUNT,
12323           sum(pjp.AR_UNAPPR_INVOICE_COUNT)         AR_UNAPPR_INVOICE_COUNT,
12324           sum(pjp.AR_APPR_INVOICE_AMOUNT)          AR_APPR_INVOICE_AMOUNT,
12325           sum(pjp.AR_APPR_INVOICE_COUNT)           AR_APPR_INVOICE_COUNT,
12326           sum(pjp.AR_AMOUNT_DUE)                   AR_AMOUNT_DUE,
12327           sum(pjp.AR_COUNT_DUE)                    AR_COUNT_DUE,
12328           sum(pjp.AR_AMOUNT_OVERDUE)               AR_AMOUNT_OVERDUE,
12329           sum(pjp.AR_COUNT_OVERDUE)                AR_COUNT_OVERDUE,
12330           sum(pjp.CUSTOM1)                         CUSTOM1,
12331           sum(pjp.CUSTOM2)                         CUSTOM2,
12332           sum(pjp.CUSTOM3)                         CUSTOM3,
12333           sum(pjp.CUSTOM4)                         CUSTOM4,
12334           sum(pjp.CUSTOM5)                         CUSTOM5,
12335           sum(pjp.CUSTOM6)                         CUSTOM6,
12336           sum(pjp.CUSTOM7)                         CUSTOM7,
12337           sum(pjp.CUSTOM8)                         CUSTOM8,
12338           sum(pjp.CUSTOM9)                         CUSTOM9,
12339           sum(pjp.CUSTOM10)                        CUSTOM10,
12340           sum(pjp.CUSTOM11)                        CUSTOM11,
12341           sum(pjp.CUSTOM12)                        CUSTOM12,
12342           sum(pjp.CUSTOM13)                        CUSTOM13,
12343           sum(pjp.CUSTOM14)                        CUSTOM14,
12344           sum(pjp.CUSTOM15)                        CUSTOM15
12345         from
12346           (
12347           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
12348                  -- get incremental task level amounts from source and
12349                  -- program rollup amounts from interim
12350             wbs_hdr.WBS_VERSION_ID,
12351             'LF'                                      RELATIONSHIP_TYPE,
12352             decode(top_slice.INVERT_ID,
12353                    'PRJ', 'Y',
12354                           decode(wbs.SUB_LEVEL,
12355                                  1, 'Y', 'N'))        PUSHUP_FLAG,
12356             'Y'                                       INSERT_FLAG,
12357             pjp1.PROJECT_ID,
12358             pjp1.PROJECT_ORG_ID,
12359             pjp1.PROJECT_ORGANIZATION_ID,
12360             decode(top_slice.INVERT_ID,
12361                    'PRJ', prg.SUP_EMT_ID,
12362                           decode(wbs.SUB_LEVEL,
12363                                  1, prg.SUP_EMT_ID,
12364                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
12365             pjp1.TIME_ID,
12366             pjp1.PERIOD_TYPE_ID,
12367             pjp1.CALENDAR_TYPE,
12368             'Y'                                       WBS_ROLLUP_FLAG,
12369             pjp1.PRG_ROLLUP_FLAG,
12370             pjp1.CURR_RECORD_TYPE_ID,
12371             pjp1.CURRENCY_CODE,
12372             pjp1.REVENUE,
12373             pjp1.INITIAL_FUNDING_AMOUNT,
12374             pjp1.INITIAL_FUNDING_COUNT,
12375             pjp1.ADDITIONAL_FUNDING_AMOUNT,
12376             pjp1.ADDITIONAL_FUNDING_COUNT,
12377             pjp1.CANCELLED_FUNDING_AMOUNT,
12378             pjp1.CANCELLED_FUNDING_COUNT,
12379             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
12380             pjp1.FUNDING_ADJUSTMENT_COUNT,
12381             pjp1.REVENUE_WRITEOFF,
12382             pjp1.AR_INVOICE_AMOUNT,
12383             pjp1.AR_INVOICE_COUNT,
12384             pjp1.AR_CASH_APPLIED_AMOUNT,
12385             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
12386             pjp1.AR_INVOICE_WRITEOFF_COUNT,
12387             pjp1.AR_CREDIT_MEMO_AMOUNT,
12388             pjp1.AR_CREDIT_MEMO_COUNT,
12389             pjp1.UNBILLED_RECEIVABLES,
12390             pjp1.UNEARNED_REVENUE,
12391             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
12392             pjp1.AR_UNAPPR_INVOICE_COUNT,
12393             pjp1.AR_APPR_INVOICE_AMOUNT,
12394             pjp1.AR_APPR_INVOICE_COUNT,
12395             pjp1.AR_AMOUNT_DUE,
12396             pjp1.AR_COUNT_DUE,
12397             pjp1.AR_AMOUNT_OVERDUE,
12398             pjp1.AR_COUNT_OVERDUE,
12399             pjp1.CUSTOM1,
12400             pjp1.CUSTOM2,
12401             pjp1.CUSTOM3,
12402             pjp1.CUSTOM4,
12403             pjp1.CUSTOM5,
12404             pjp1.CUSTOM6,
12405             pjp1.CUSTOM7,
12406             pjp1.CUSTOM8,
12407             pjp1.CUSTOM9,
12408             pjp1.CUSTOM10,
12409             pjp1.CUSTOM11,
12410             pjp1.CUSTOM12,
12411             pjp1.CUSTOM13,
12412             pjp1.CUSTOM14,
12413             pjp1.CUSTOM15
12414           from
12415             PJI_AC_AGGR_PJP1   pjp1,
12416             PJI_PJP_WBS_HEADER wbs_hdr,
12417             PA_XBS_DENORM      wbs,
12418             PJI_XBS_DENORM     prg,
12419             (
12420               select 1     WBS_SUP_LEVEL,
12421                      1     WBS_SUB_LEVEL,
12422                      'PRJ' INVERT_ID
12423               from   DUAL
12424               union all
12425               select 1     WBS_SUP_LEVEL,
12426                      1     WBS_SUB_LEVEL,
12427                      'WBS' INVERT_ID
12428               from   DUAL
12429             ) top_slice
12430           where
12431             prg.STRUCT_TYPE         =  'PRG'                       and
12432             prg.SUP_LEVEL           =  l_level                     and
12433             prg.SUB_LEVEL           =  l_level                     and
12434             wbs.STRUCT_TYPE         =  'WBS'                       and
12435             ((wbs.SUP_LEVEL = 1 and
12436               wbs.SUB_LEVEL = 1) or
12437              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
12438             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
12439             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
12440             pjp1.WORKER_ID          =  p_worker_id                 and
12441             pjp1.PRG_LEVEL          in (0, l_level)                and
12442             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
12443             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
12444             wbs_hdr.PLAN_VERSION_ID =  -1                          and
12445             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
12446             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
12447             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
12448             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
12449             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
12450           union all
12451           select /*+ ordered */
12452                  -- get incremental project level amounts from source
12453             wbs_hdr.WBS_VERSION_ID,
12454             'LF'                                   RELATIONSHIP_TYPE,
12455             'Y'                                    PUSHUP_FLAG,
12456             'N'                                    INSERT_FLAG,
12457             pjp1.PROJECT_ID,
12458             pjp1.PROJECT_ORG_ID,
12459             pjp1.PROJECT_ORGANIZATION_ID,
12460             pjp1.PROJECT_ELEMENT_ID,
12461             pjp1.TIME_ID,
12462             pjp1.PERIOD_TYPE_ID,
12463             pjp1.CALENDAR_TYPE,
12464             'Y'                                    WBS_ROLLUP_FLAG,
12465             pjp1.PRG_ROLLUP_FLAG,
12466             pjp1.CURR_RECORD_TYPE_ID,
12467             pjp1.CURRENCY_CODE,
12468             pjp1.REVENUE,
12469             pjp1.INITIAL_FUNDING_AMOUNT,
12470             pjp1.INITIAL_FUNDING_COUNT,
12471             pjp1.ADDITIONAL_FUNDING_AMOUNT,
12472             pjp1.ADDITIONAL_FUNDING_COUNT,
12473             pjp1.CANCELLED_FUNDING_AMOUNT,
12474             pjp1.CANCELLED_FUNDING_COUNT,
12475             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
12476             pjp1.FUNDING_ADJUSTMENT_COUNT,
12477             pjp1.REVENUE_WRITEOFF,
12478             pjp1.AR_INVOICE_AMOUNT,
12479             pjp1.AR_INVOICE_COUNT,
12480             pjp1.AR_CASH_APPLIED_AMOUNT,
12481             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
12482             pjp1.AR_INVOICE_WRITEOFF_COUNT,
12483             pjp1.AR_CREDIT_MEMO_AMOUNT,
12484             pjp1.AR_CREDIT_MEMO_COUNT,
12485             pjp1.UNBILLED_RECEIVABLES,
12486             pjp1.UNEARNED_REVENUE,
12487             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
12488             pjp1.AR_UNAPPR_INVOICE_COUNT,
12489             pjp1.AR_APPR_INVOICE_AMOUNT,
12490             pjp1.AR_APPR_INVOICE_COUNT,
12491             pjp1.AR_AMOUNT_DUE,
12492             pjp1.AR_COUNT_DUE,
12493             pjp1.AR_AMOUNT_OVERDUE,
12494             pjp1.AR_COUNT_OVERDUE,
12495             pjp1.CUSTOM1,
12496             pjp1.CUSTOM2,
12497             pjp1.CUSTOM3,
12498             pjp1.CUSTOM4,
12499             pjp1.CUSTOM5,
12500             pjp1.CUSTOM6,
12501             pjp1.CUSTOM7,
12502             pjp1.CUSTOM8,
12503             pjp1.CUSTOM9,
12504             pjp1.CUSTOM10,
12505             pjp1.CUSTOM11,
12506             pjp1.CUSTOM12,
12507             pjp1.CUSTOM13,
12508             pjp1.CUSTOM14,
12509             pjp1.CUSTOM15
12510           from
12511             PJI_AC_AGGR_PJP1   pjp1,
12512             PJI_PJP_WBS_HEADER wbs_hdr,
12513             PJI_XBS_DENORM     prg
12514           where
12515             prg.STRUCT_TYPE         = 'PRG'                              and
12516             prg.SUP_LEVEL           = l_level                            and
12517             prg.SUB_LEVEL           = l_level                            and
12518             pjp1.WORKER_ID          = p_worker_id                        and
12519             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID                 and
12520             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID                     and
12521             pjp1.PRG_LEVEL          = 0                                  and
12522             pjp1.WBS_ROLLUP_FLAG    = 'N'                                and
12523             pjp1.PRG_ROLLUP_FLAG    = 'N'                                and
12524             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID                    and
12525             wbs_hdr.PLAN_VERSION_ID = -1                                 and
12526             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID
12527           union all
12528           select /*+ ordered
12529                      index(fpr PJI_AC_XBR_ACCUM_F_N1) */
12530                  -- get delta task level amounts from Reporting Lines
12531             wbs_hdr.WBS_VERSION_ID,
12532             'LF'                                   RELATIONSHIP_TYPE,
12533             decode(log.EVENT_TYPE,
12534                    'WBS_CHANGE', 'Y',
12535                    'WBS_PUBLISH', 'N')             PUSHUP_FLAG,
12536             'Y'                                    INSERT_FLAG,
12537             acr.PROJECT_ID,
12538             acr.PROJECT_ORG_ID,
12539             acr.PROJECT_ORGANIZATION_ID,
12540             decode(top_slice.INVERT_ID,
12541                    'PRJ', prg.SUP_EMT_ID,
12542                           decode(wbs.SUB_LEVEL,
12543                                  1, prg.SUP_EMT_ID,
12544                                     wbs.SUP_EMT_ID))
12545                                                    PROJECT_ELEMENT_ID,
12546             acr.TIME_ID,
12547             acr.PERIOD_TYPE_ID,
12548             acr.CALENDAR_TYPE,
12549             'Y'                                    WBS_ROLLUP_FLAG,
12550             acr.PRG_ROLLUP_FLAG,
12551             acr.CURR_RECORD_TYPE_ID,
12552             acr.CURRENCY_CODE,
12553             wbs.SIGN * acr.REVENUE                 REVENUE,
12554             wbs.SIGN * acr.INITIAL_FUNDING_AMOUNT  INITIAL_FUNDING_AMOUNT,
12555             wbs.SIGN * acr.INITIAL_FUNDING_COUNT   INITIAL_FUNDING_COUNT,
12556             wbs.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT
12557                                                    ADDITIONAL_FUNDING_AMOUNT,
12558             wbs.SIGN * acr.ADDITIONAL_FUNDING_COUNT
12559                                                    ADDITIONAL_FUNDING_COUNT,
12560             wbs.SIGN * acr.CANCELLED_FUNDING_AMOUNT
12561                                                    CANCELLED_FUNDING_AMOUNT,
12562             wbs.SIGN * acr.CANCELLED_FUNDING_COUNT CANCELLED_FUNDING_COUNT,
12563             wbs.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT
12564                                                    FUNDING_ADJUSTMENT_AMOUNT,
12565             wbs.SIGN * acr.FUNDING_ADJUSTMENT_COUNT
12566                                                    FUNDING_ADJUSTMENT_COUNT,
12567             wbs.SIGN * acr.REVENUE_WRITEOFF        REVENUE_WRITEOFF,
12568             wbs.SIGN * acr.AR_INVOICE_AMOUNT       AR_INVOICE_AMOUNT,
12569             wbs.SIGN * acr.AR_INVOICE_COUNT        AR_INVOICE_COUNT,
12570             wbs.SIGN * acr.AR_CASH_APPLIED_AMOUNT  AR_CASH_APPLIED_AMOUNT,
12571             wbs.SIGN * acr.AR_INVOICE_WRITE_OFF_AMOUNT
12572                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
12573             wbs.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT
12574                                                    AR_INVOICE_WRITEOFF_COUNT,
12575             wbs.SIGN * acr.AR_CREDIT_MEMO_AMOUNT   AR_CREDIT_MEMO_AMOUNT,
12576             wbs.SIGN * acr.AR_CREDIT_MEMO_COUNT    AR_CREDIT_MEMO_COUNT,
12577             wbs.SIGN * acr.UNBILLED_RECEIVABLES    UNBILLED_RECEIVABLES,
12578             wbs.SIGN * acr.UNEARNED_REVENUE        UNEARNED_REVENUE,
12579             wbs.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT
12580                                                    AR_UNAPPR_INVOICE_AMOUNT,
12581             wbs.SIGN * acr.AR_UNAPPR_INVOICE_COUNT AR_UNAPPR_INVOICE_COUNT,
12582             wbs.SIGN * acr.AR_APPR_INVOICE_AMOUNT  AR_APPR_INVOICE_AMOUNT,
12583             wbs.SIGN * acr.AR_APPR_INVOICE_COUNT   AR_APPR_INVOICE_COUNT,
12584             wbs.SIGN * acr.AR_AMOUNT_DUE           AR_AMOUNT_DUE,
12585             wbs.SIGN * acr.AR_COUNT_DUE            AR_COUNT_DUE,
12586             wbs.SIGN * acr.AR_AMOUNT_OVERDUE       AR_AMOUNT_OVERDUE,
12587             wbs.SIGN * acr.AR_COUNT_OVERDUE        AR_COUNT_OVERDUE,
12588             wbs.SIGN * acr.CUSTOM1                 CUSTOM1,
12589             wbs.SIGN * acr.CUSTOM2                 CUSTOM2,
12590             wbs.SIGN * acr.CUSTOM3                 CUSTOM3,
12591             wbs.SIGN * acr.CUSTOM4                 CUSTOM4,
12592             wbs.SIGN * acr.CUSTOM5                 CUSTOM5,
12593             wbs.SIGN * acr.CUSTOM6                 CUSTOM6,
12594             wbs.SIGN * acr.CUSTOM7                 CUSTOM7,
12595             wbs.SIGN * acr.CUSTOM8                 CUSTOM8,
12596             wbs.SIGN * acr.CUSTOM9                 CUSTOM9,
12597             wbs.SIGN * acr.CUSTOM10                CUSTOM10,
12598             wbs.SIGN * acr.CUSTOM11                CUSTOM11,
12599             wbs.SIGN * acr.CUSTOM12                CUSTOM12,
12600             wbs.SIGN * acr.CUSTOM13                CUSTOM13,
12601             wbs.SIGN * acr.CUSTOM14                CUSTOM14,
12602             wbs.SIGN * acr.CUSTOM15                CUSTOM15
12603           from
12604             PJI_PA_PROJ_EVENTS_LOG log,
12605             PJI_PJP_WBS_HEADER     wbs_hdr,
12606             PJI_XBS_DENORM_DELTA   wbs,
12607             PJI_XBS_DENORM         prg,
12608             PJI_AC_XBS_ACCUM_F     acr,
12609             (
12610               select 1     WBS_SUP_LEVEL,
12611                      1     WBS_SUB_LEVEL,
12612                      'PRJ' INVERT_ID
12613               from   DUAL
12614               union all
12615               select 1     WBS_SUP_LEVEL,
12616                      1     WBS_SUB_LEVEL,
12617                      'WBS' INVERT_ID
12618               from   DUAL
12619             ) top_slice
12620           where
12621             prg.STRUCT_TYPE         =  'PRG'                       and
12622             prg.SUP_LEVEL           =  l_level                     and
12623             prg.SUB_LEVEL           =  l_level                     and
12624             wbs.WORKER_ID           =  p_worker_id                 and
12625             wbs.STRUCT_TYPE         =  'WBS'                       and
12626             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
12627             log.WORKER_ID           =  p_worker_id                 and
12628             log.EVENT_ID            =  wbs.EVENT_ID                and
12629             log.EVENT_TYPE          in ('WBS_CHANGE',
12630                                         'WBS_PUBLISH')             and
12631             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
12632             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
12633             wbs_hdr.PLAN_VERSION_ID =  -1                          and
12634             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
12635             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
12636             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
12637             acr.WBS_ROLLUP_FLAG     =  'N'                         and
12638             acr.PRG_ROLLUP_FLAG     =  'N'                         and
12639             acr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
12640             acr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
12641             acr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
12642             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
12643             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
12644             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
12645              (wbs.SUP_LEVEL = 1 and
12646               wbs.SUB_LEVEL = 1))
12647           ) pjp,
12648           (
12649           select /*+ ordered */
12650             prg.SUP_PROJECT_ID,
12651             map.PROJECT_ORG_ID               SUP_PROJECT_ORG_ID,
12652             map.PROJECT_ORGANIZATION_ID      SUP_PROJECT_ORGANIZATION_ID,
12653             prg.SUP_ID,
12654             prg.SUP_EMT_ID,
12655             prg.SUP_LEVEL,
12656             prg.SUB_ID,
12657             prg.SUB_EMT_ID,
12658             prg.SUB_ROLLUP_ID,
12659             prg.RELATIONSHIP_TYPE            RELATIONSHIP_TYPE,
12660             'Y'                              PUSHUP_FLAG
12661           from
12662             PJI_PJP_PROJ_BATCH_MAP map,
12663             PJI_XBS_DENORM         prg,
12664             PJI_XBS_DENORM_DELTA   prg_delta
12665           where
12666             prg.STRUCT_TYPE          = 'PRG'                           and
12667             prg.RELATIONSHIP_TYPE    = 'LF'                            and
12668             prg.SUB_ROLLUP_ID        is not null                       and
12669             prg.SUB_LEVEL            = l_level                         and
12670             map.WORKER_ID            = p_worker_id                     and
12671             map.PROJECT_ID           = prg.SUP_PROJECT_ID              and
12672             p_worker_id              = prg_delta.WORKER_ID         (+) and
12673             prg.STRUCT_TYPE          = prg_delta.STRUCT_TYPE       (+) and
12674             prg.SUP_PROJECT_ID       = prg_delta.SUP_PROJECT_ID    (+) and
12675             prg.SUP_LEVEL            = prg_delta.SUP_LEVEL         (+) and
12676             prg.SUP_ID               = prg_delta.SUP_ID            (+) and
12677             prg.SUB_LEVEL            = prg_delta.SUB_LEVEL         (+) and
12678             prg.SUB_ID               = prg_delta.SUB_ID            (+) and
12679             prg.RELATIONSHIP_TYPE    = prg_delta.RELATIONSHIP_TYPE (+) and
12680             -1                       = prg_delta.SIGN              (+) and
12681             prg_delta.SUP_PROJECT_ID is null
12682           ) prg
12683         where
12684           pjp.WBS_VERSION_ID    = prg.SUB_ID            (+) and
12685           pjp.RELATIONSHIP_TYPE = prg.RELATIONSHIP_TYPE (+) and
12686           pjp.PUSHUP_FLAG       = prg.PUSHUP_FLAG       (+)
12687         group by
12688           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12689                  pjp.INSERT_FLAG, 'Y'),
12690           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12691                  null, prg.SUP_ID),
12692           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12693                  null, prg.SUP_EMT_ID),
12694           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12695                  l_level, prg.SUP_LEVEL),
12696           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12697                  pjp.PROJECT_ID,
12698                  prg.SUP_PROJECT_ID),
12699           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12700                  pjp.PROJECT_ORG_ID,
12701                  prg.SUP_PROJECT_ORG_ID),
12702           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12703                  pjp.PROJECT_ORGANIZATION_ID,
12704                  prg.SUP_PROJECT_ORGANIZATION_ID),
12705           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12706                  pjp.PROJECT_ELEMENT_ID,
12707                  prg.SUB_ROLLUP_ID),
12708           pjp.TIME_ID,
12709           pjp.PERIOD_TYPE_ID,
12710           pjp.CALENDAR_TYPE,
12711           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12712                  pjp.WBS_ROLLUP_FLAG, 'N'),
12713           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12714                  pjp.PRG_ROLLUP_FLAG, 'Y'),
12715           pjp.CURR_RECORD_TYPE_ID,
12716           pjp.CURRENCY_CODE
12717           )                          pjp1_i,
12718           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
12719           PA_PROJ_WORKPLAN_ATTR      sup_wpa
12720         where
12721           pjp1_i.INSERT_FLAG  = 'Y'                                and
12722           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
12723           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
12724           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
12725           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
12726           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
12727           (pjp1_i.SUP_ID is null or
12728            (pjp1_i.SUP_ID is not null and
12729             (sup_fin_ver.PROJECT_ID is not null or
12730              sup_wpa.PROJ_ELEMENT_ID is not null)));
12731 
12732         update PJI_SYSTEM_PRC_STATUS
12733         set    STEP_STATUS = 'C',
12734                END_DATE = sysdate
12735         where  PROCESS_NAME = l_process and
12736                STEP_SEQ = l_level_seq;
12737 
12738         commit;
12739 
12740         select
12741           nvl(to_number(min(STEP_SEQ)), 0)
12742         into
12743           l_level_seq
12744         from
12745           PJI_SYSTEM_PRC_STATUS
12746         where
12747           PROCESS_NAME = l_process and
12748           STEP_NAME like 'ROLLUP_ACR_WBS%' and
12749           STEP_STATUS is null;
12750 
12751         if (l_level_seq = 0) then
12752           l_level := 0;
12753         else
12754           l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
12755         end if;
12756 
12757       end loop;
12758 
12759       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_WBS(p_worker_id);');
12760 
12761       commit;
12762 
12763     else -- online mode
12764 
12765       -- rollup just WBS for online processing
12766 
12767       select /*+ ordered use_nl(den) index(den PJI_XBS_DENORM_N3) */
12768         nvl(max(den.SUP_LEVEL), 0)
12769       into
12770         l_level
12771       from
12772         PJI_FM_EXTR_PLNVER3_T ver3,
12773         PJI_XBS_DENORM den
12774       where
12775         den.STRUCT_TYPE    = 'PRG'          and
12776         den.SUB_LEVEL      = den.SUP_LEVEL  and
12777         den.SUP_PROJECT_ID = ver3.PROJECT_ID;
12778 
12779       while (l_level > 0) loop
12780 
12781         -- rollup project hiearchy
12782 
12783         insert into PJI_AC_AGGR_PJP1_T
12784         (
12785           WORKER_ID,
12786           RECORD_TYPE,
12787           PRG_LEVEL,
12788           PROJECT_ID,
12789           PROJECT_ORG_ID,
12790           PROJECT_ORGANIZATION_ID,
12791           PROJECT_ELEMENT_ID,
12792           TIME_ID,
12793           PERIOD_TYPE_ID,
12794           CALENDAR_TYPE,
12795           WBS_ROLLUP_FLAG,
12796           PRG_ROLLUP_FLAG,
12797           CURR_RECORD_TYPE_ID,
12798           CURRENCY_CODE,
12799           REVENUE,
12800           INITIAL_FUNDING_AMOUNT,
12801           INITIAL_FUNDING_COUNT,
12802           ADDITIONAL_FUNDING_AMOUNT,
12803           ADDITIONAL_FUNDING_COUNT,
12804           CANCELLED_FUNDING_AMOUNT,
12805           CANCELLED_FUNDING_COUNT,
12806           FUNDING_ADJUSTMENT_AMOUNT,
12807           FUNDING_ADJUSTMENT_COUNT,
12808           REVENUE_WRITEOFF,
12809           AR_INVOICE_AMOUNT,
12810           AR_INVOICE_COUNT,
12811           AR_CASH_APPLIED_AMOUNT,
12812           AR_INVOICE_WRITE_OFF_AMOUNT,
12813           AR_INVOICE_WRITEOFF_COUNT,
12814           AR_CREDIT_MEMO_AMOUNT,
12815           AR_CREDIT_MEMO_COUNT,
12816           UNBILLED_RECEIVABLES,
12817           UNEARNED_REVENUE,
12818           AR_UNAPPR_INVOICE_AMOUNT,
12819           AR_UNAPPR_INVOICE_COUNT,
12820           AR_APPR_INVOICE_AMOUNT,
12821           AR_APPR_INVOICE_COUNT,
12822           AR_AMOUNT_DUE,
12823           AR_COUNT_DUE,
12824           AR_AMOUNT_OVERDUE,
12825           AR_COUNT_OVERDUE,
12826           CUSTOM1,
12827           CUSTOM2,
12828           CUSTOM3,
12829           CUSTOM4,
12830           CUSTOM5,
12831           CUSTOM6,
12832           CUSTOM7,
12833           CUSTOM8,
12834           CUSTOM9,
12835           CUSTOM10,
12836           CUSTOM11,
12837           CUSTOM12,
12838           CUSTOM13,
12839           CUSTOM14,
12840           CUSTOM15
12841         )
12842         select
12843           pjp1_i.WORKER_ID,
12844           pjp1_i.RECORD_TYPE,
12845           pjp1_i.PRG_LEVEL,
12846           pjp1_i.PROJECT_ID,
12847           pjp1_i.PROJECT_ORG_ID,
12848           pjp1_i.PROJECT_ORGANIZATION_ID,
12849           pjp1_i.PROJECT_ELEMENT_ID,
12850           pjp1_i.TIME_ID,
12851           pjp1_i.PERIOD_TYPE_ID,
12852           pjp1_i.CALENDAR_TYPE,
12853           pjp1_i.WBS_ROLLUP_FLAG,
12854           pjp1_i.PRG_ROLLUP_FLAG,
12855           pjp1_i.CURR_RECORD_TYPE_ID,
12856           pjp1_i.CURRENCY_CODE,
12857           pjp1_i.REVENUE,
12858           pjp1_i.INITIAL_FUNDING_AMOUNT,
12859           pjp1_i.INITIAL_FUNDING_COUNT,
12860           pjp1_i.ADDITIONAL_FUNDING_AMOUNT,
12861           pjp1_i.ADDITIONAL_FUNDING_COUNT,
12862           pjp1_i.CANCELLED_FUNDING_AMOUNT,
12863           pjp1_i.CANCELLED_FUNDING_COUNT,
12864           pjp1_i.FUNDING_ADJUSTMENT_AMOUNT,
12865           pjp1_i.FUNDING_ADJUSTMENT_COUNT,
12866           pjp1_i.REVENUE_WRITEOFF,
12867           pjp1_i.AR_INVOICE_AMOUNT,
12868           pjp1_i.AR_INVOICE_COUNT,
12869           pjp1_i.AR_CASH_APPLIED_AMOUNT,
12870           pjp1_i.AR_INVOICE_WRITE_OFF_AMOUNT,
12871           pjp1_i.AR_INVOICE_WRITEOFF_COUNT,
12872           pjp1_i.AR_CREDIT_MEMO_AMOUNT,
12873           pjp1_i.AR_CREDIT_MEMO_COUNT,
12874           pjp1_i.UNBILLED_RECEIVABLES,
12875           pjp1_i.UNEARNED_REVENUE,
12876           pjp1_i.AR_UNAPPR_INVOICE_AMOUNT,
12877           pjp1_i.AR_UNAPPR_INVOICE_COUNT,
12878           pjp1_i.AR_APPR_INVOICE_AMOUNT,
12879           pjp1_i.AR_APPR_INVOICE_COUNT,
12880           pjp1_i.AR_AMOUNT_DUE,
12881           pjp1_i.AR_COUNT_DUE,
12882           pjp1_i.AR_AMOUNT_OVERDUE,
12883           pjp1_i.AR_COUNT_OVERDUE,
12884           pjp1_i.CUSTOM1,
12885           pjp1_i.CUSTOM2,
12886           pjp1_i.CUSTOM3,
12887           pjp1_i.CUSTOM4,
12888           pjp1_i.CUSTOM5,
12889           pjp1_i.CUSTOM6,
12890           pjp1_i.CUSTOM7,
12891           pjp1_i.CUSTOM8,
12892           pjp1_i.CUSTOM9,
12893           pjp1_i.CUSTOM10,
12894           pjp1_i.CUSTOM11,
12895           pjp1_i.CUSTOM12,
12896           pjp1_i.CUSTOM13,
12897           pjp1_i.CUSTOM14,
12898           pjp1_i.CUSTOM15
12899         from
12900           (
12901         select
12902           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12903                  pjp.INSERT_FLAG, 'Y')             INSERT_FLAG,
12904           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12905                  null, prg.SUP_ID)                 SUP_ID,
12906           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12907                  null, prg.SUP_EMT_ID)             SUP_EMT_ID,
12908           1                                        WORKER_ID,
12909           -- p_worker_id                           WORKER_ID,
12910           'W'                                      RECORD_TYPE,
12911           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12912                  l_level, prg.SUP_LEVEL)           PRG_LEVEL,
12913           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12914                  pjp.PROJECT_ID,
12915                  prg.SUP_PROJECT_ID)               PROJECT_ID,
12916           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12917                  pjp.PROJECT_ORG_ID,
12918                  prg.SUP_PROJECT_ORG_ID)           PROJECT_ORG_ID,
12919           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12920                  pjp.PROJECT_ORGANIZATION_ID,
12921                  prg.SUP_PROJECT_ORGANIZATION_ID)  PROJECT_ORGANIZATION_ID,
12922           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12923                  pjp.PROJECT_ELEMENT_ID,
12924                  prg.SUB_ROLLUP_ID)                PROJECT_ELEMENT_ID,
12925           pjp.TIME_ID,
12926           pjp.PERIOD_TYPE_ID,
12927           pjp.CALENDAR_TYPE,
12928           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12929                  pjp.WBS_ROLLUP_FLAG, 'N')         WBS_ROLLUP_FLAG,
12930           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
12931                  pjp.PRG_ROLLUP_FLAG, 'Y')         PRG_ROLLUP_FLAG,
12932           pjp.CURR_RECORD_TYPE_ID,
12933           pjp.CURRENCY_CODE,
12934           sum(pjp.REVENUE)                         REVENUE,
12935           sum(pjp.INITIAL_FUNDING_AMOUNT)          INITIAL_FUNDING_AMOUNT,
12936           sum(pjp.INITIAL_FUNDING_COUNT)           INITIAL_FUNDING_COUNT,
12937           sum(pjp.ADDITIONAL_FUNDING_AMOUNT)       ADDITIONAL_FUNDING_AMOUNT,
12938           sum(pjp.ADDITIONAL_FUNDING_COUNT)        ADDITIONAL_FUNDING_COUNT,
12939           sum(pjp.CANCELLED_FUNDING_AMOUNT)        CANCELLED_FUNDING_AMOUNT,
12940           sum(pjp.CANCELLED_FUNDING_COUNT)         CANCELLED_FUNDING_COUNT,
12941           sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)       FUNDING_ADJUSTMENT_AMOUNT,
12942           sum(pjp.FUNDING_ADJUSTMENT_COUNT)        FUNDING_ADJUSTMENT_COUNT,
12943           sum(pjp.REVENUE_WRITEOFF)                REVENUE_WRITEOFF,
12944           sum(pjp.AR_INVOICE_AMOUNT)               AR_INVOICE_AMOUNT,
12945           sum(pjp.AR_INVOICE_COUNT)                AR_INVOICE_COUNT,
12946           sum(pjp.AR_CASH_APPLIED_AMOUNT)          AR_CASH_APPLIED_AMOUNT,
12947           sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)     AR_INVOICE_WRITE_OFF_AMOUNT,
12948           sum(pjp.AR_INVOICE_WRITEOFF_COUNT)       AR_INVOICE_WRITEOFF_COUNT,
12949           sum(pjp.AR_CREDIT_MEMO_AMOUNT)           AR_CREDIT_MEMO_AMOUNT,
12950           sum(pjp.AR_CREDIT_MEMO_COUNT)            AR_CREDIT_MEMO_COUNT,
12951           sum(pjp.UNBILLED_RECEIVABLES)            UNBILLED_RECEIVABLES,
12952           sum(pjp.UNEARNED_REVENUE)                UNEARNED_REVENUE,
12953           sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)        AR_UNAPPR_INVOICE_AMOUNT,
12954           sum(pjp.AR_UNAPPR_INVOICE_COUNT)         AR_UNAPPR_INVOICE_COUNT,
12955           sum(pjp.AR_APPR_INVOICE_AMOUNT)          AR_APPR_INVOICE_AMOUNT,
12956           sum(pjp.AR_APPR_INVOICE_COUNT)           AR_APPR_INVOICE_COUNT,
12957           sum(pjp.AR_AMOUNT_DUE)                   AR_AMOUNT_DUE,
12958           sum(pjp.AR_COUNT_DUE)                    AR_COUNT_DUE,
12959           sum(pjp.AR_AMOUNT_OVERDUE)               AR_AMOUNT_OVERDUE,
12960           sum(pjp.AR_COUNT_OVERDUE)                AR_COUNT_OVERDUE,
12961           sum(pjp.CUSTOM1)                         CUSTOM1,
12962           sum(pjp.CUSTOM2)                         CUSTOM2,
12963           sum(pjp.CUSTOM3)                         CUSTOM3,
12964           sum(pjp.CUSTOM4)                         CUSTOM4,
12965           sum(pjp.CUSTOM5)                         CUSTOM5,
12966           sum(pjp.CUSTOM6)                         CUSTOM6,
12967           sum(pjp.CUSTOM7)                         CUSTOM7,
12968           sum(pjp.CUSTOM8)                         CUSTOM8,
12969           sum(pjp.CUSTOM9)                         CUSTOM9,
12970           sum(pjp.CUSTOM10)                        CUSTOM10,
12971           sum(pjp.CUSTOM11)                        CUSTOM11,
12972           sum(pjp.CUSTOM12)                        CUSTOM12,
12973           sum(pjp.CUSTOM13)                        CUSTOM13,
12974           sum(pjp.CUSTOM14)                        CUSTOM14,
12975           sum(pjp.CUSTOM15)                        CUSTOM15
12976         from
12977           (
12978           select /*+ ordered index(wbs PA_XBS_DENORM_N2) */
12979                  -- get incremental task level amounts from source and
12980                  -- program rollup amounts from interim
12981             wbs_hdr.WBS_VERSION_ID,
12982             'LF'                                      RELATIONSHIP_TYPE,
12983             decode(top_slice.INVERT_ID,
12984                    'PRJ', 'Y',
12985                           decode(wbs.SUB_LEVEL,
12986                                  1, 'Y', 'N'))        PUSHUP_FLAG,
12987             'Y'                                       INSERT_FLAG,
12988             pjp1.PROJECT_ID,
12989             pjp1.PROJECT_ORG_ID,
12990             pjp1.PROJECT_ORGANIZATION_ID,
12991             decode(top_slice.INVERT_ID,
12992                    'PRJ', prg.SUP_EMT_ID,
12993                           decode(wbs.SUB_LEVEL,
12994                                  1, prg.SUP_EMT_ID,
12995                                     wbs.SUP_EMT_ID))  PROJECT_ELEMENT_ID,
12996             pjp1.TIME_ID,
12997             pjp1.PERIOD_TYPE_ID,
12998             pjp1.CALENDAR_TYPE,
12999             'Y'                                       WBS_ROLLUP_FLAG,
13000             pjp1.PRG_ROLLUP_FLAG,
13001             pjp1.CURR_RECORD_TYPE_ID,
13002             pjp1.CURRENCY_CODE,
13003             pjp1.REVENUE,
13004             pjp1.INITIAL_FUNDING_AMOUNT,
13005             pjp1.INITIAL_FUNDING_COUNT,
13006             pjp1.ADDITIONAL_FUNDING_AMOUNT,
13007             pjp1.ADDITIONAL_FUNDING_COUNT,
13008             pjp1.CANCELLED_FUNDING_AMOUNT,
13009             pjp1.CANCELLED_FUNDING_COUNT,
13010             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
13011             pjp1.FUNDING_ADJUSTMENT_COUNT,
13012             pjp1.REVENUE_WRITEOFF,
13013             pjp1.AR_INVOICE_AMOUNT,
13014             pjp1.AR_INVOICE_COUNT,
13015             pjp1.AR_CASH_APPLIED_AMOUNT,
13016             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
13017             pjp1.AR_INVOICE_WRITEOFF_COUNT,
13018             pjp1.AR_CREDIT_MEMO_AMOUNT,
13019             pjp1.AR_CREDIT_MEMO_COUNT,
13020             pjp1.UNBILLED_RECEIVABLES,
13021             pjp1.UNEARNED_REVENUE,
13022             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
13023             pjp1.AR_UNAPPR_INVOICE_COUNT,
13024             pjp1.AR_APPR_INVOICE_AMOUNT,
13025             pjp1.AR_APPR_INVOICE_COUNT,
13026             pjp1.AR_AMOUNT_DUE,
13027             pjp1.AR_COUNT_DUE,
13028             pjp1.AR_AMOUNT_OVERDUE,
13029             pjp1.AR_COUNT_OVERDUE,
13030             pjp1.CUSTOM1,
13031             pjp1.CUSTOM2,
13032             pjp1.CUSTOM3,
13033             pjp1.CUSTOM4,
13034             pjp1.CUSTOM5,
13035             pjp1.CUSTOM6,
13036             pjp1.CUSTOM7,
13037             pjp1.CUSTOM8,
13038             pjp1.CUSTOM9,
13039             pjp1.CUSTOM10,
13040             pjp1.CUSTOM11,
13041             pjp1.CUSTOM12,
13042             pjp1.CUSTOM13,
13043             pjp1.CUSTOM14,
13044             pjp1.CUSTOM15
13045           from
13046             PJI_AC_AGGR_PJP1_T pjp1,
13047             PJI_PJP_WBS_HEADER wbs_hdr,
13048             PA_XBS_DENORM      wbs,
13049             PJI_XBS_DENORM     prg,
13050             (
13051               select 1     WBS_SUP_LEVEL,
13052                      1     WBS_SUB_LEVEL,
13053                      'PRJ' INVERT_ID
13054               from   DUAL
13055               union all
13056               select 1     WBS_SUP_LEVEL,
13057                      1     WBS_SUB_LEVEL,
13058                      'WBS' INVERT_ID
13059               from   DUAL
13060             ) top_slice
13061           where
13062             prg.STRUCT_TYPE         =  'PRG'                       and
13063             prg.SUP_LEVEL           =  l_level                     and
13064             prg.SUB_LEVEL           =  l_level                     and
13065             wbs.STRUCT_TYPE         =  'WBS'                       and
13066             ((wbs.SUP_LEVEL = 1 and
13067               wbs.SUB_LEVEL = 1) or
13068              (wbs.SUP_LEVEL <> wbs.SUB_LEVEL))                     and
13069             wbs.STRUCT_VERSION_ID   =  prg.SUP_ID                  and
13070             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
13071             -- pjp1.WORKER_ID       =  p_worker_id                 and
13072             pjp1.PRG_LEVEL          in (0, l_level)                and
13073             pjp1.WBS_ROLLUP_FLAG    =  'N'                         and
13074             pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                  and
13075             wbs_hdr.PLAN_VERSION_ID =  -1                          and
13076             pjp1.PROJECT_ID         =  wbs_hdr.PROJECT_ID          and
13077             wbs.STRUCT_VERSION_ID   =  wbs_hdr.WBS_VERSION_ID      and
13078             pjp1.PROJECT_ELEMENT_ID =  wbs.SUB_EMT_ID              and
13079             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
13080             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+)
13081           union all
13082           select /*+ ordered */
13083                  -- get incremental project level amounts from source
13084             wbs_hdr.WBS_VERSION_ID,
13085             'LF'                                   RELATIONSHIP_TYPE,
13086             'Y'                                    PUSHUP_FLAG,
13087             'N'                                    INSERT_FLAG,
13088             pjp1.PROJECT_ID,
13089             pjp1.PROJECT_ORG_ID,
13090             pjp1.PROJECT_ORGANIZATION_ID,
13091             pjp1.PROJECT_ELEMENT_ID,
13092             pjp1.TIME_ID,
13093             pjp1.PERIOD_TYPE_ID,
13094             pjp1.CALENDAR_TYPE,
13095             'Y'                                    WBS_ROLLUP_FLAG,
13096             pjp1.PRG_ROLLUP_FLAG,
13097             pjp1.CURR_RECORD_TYPE_ID,
13098             pjp1.CURRENCY_CODE,
13099             pjp1.REVENUE,
13100             pjp1.INITIAL_FUNDING_AMOUNT,
13101             pjp1.INITIAL_FUNDING_COUNT,
13102             pjp1.ADDITIONAL_FUNDING_AMOUNT,
13103             pjp1.ADDITIONAL_FUNDING_COUNT,
13104             pjp1.CANCELLED_FUNDING_AMOUNT,
13105             pjp1.CANCELLED_FUNDING_COUNT,
13106             pjp1.FUNDING_ADJUSTMENT_AMOUNT,
13107             pjp1.FUNDING_ADJUSTMENT_COUNT,
13108             pjp1.REVENUE_WRITEOFF,
13109             pjp1.AR_INVOICE_AMOUNT,
13110             pjp1.AR_INVOICE_COUNT,
13111             pjp1.AR_CASH_APPLIED_AMOUNT,
13112             pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
13113             pjp1.AR_INVOICE_WRITEOFF_COUNT,
13114             pjp1.AR_CREDIT_MEMO_AMOUNT,
13115             pjp1.AR_CREDIT_MEMO_COUNT,
13116             pjp1.UNBILLED_RECEIVABLES,
13117             pjp1.UNEARNED_REVENUE,
13118             pjp1.AR_UNAPPR_INVOICE_AMOUNT,
13119             pjp1.AR_UNAPPR_INVOICE_COUNT,
13120             pjp1.AR_APPR_INVOICE_AMOUNT,
13121             pjp1.AR_APPR_INVOICE_COUNT,
13122             pjp1.AR_AMOUNT_DUE,
13123             pjp1.AR_COUNT_DUE,
13124             pjp1.AR_AMOUNT_OVERDUE,
13125             pjp1.AR_COUNT_OVERDUE,
13126             pjp1.CUSTOM1,
13127             pjp1.CUSTOM2,
13128             pjp1.CUSTOM3,
13129             pjp1.CUSTOM4,
13130             pjp1.CUSTOM5,
13131             pjp1.CUSTOM6,
13132             pjp1.CUSTOM7,
13133             pjp1.CUSTOM8,
13134             pjp1.CUSTOM9,
13135             pjp1.CUSTOM10,
13136             pjp1.CUSTOM11,
13137             pjp1.CUSTOM12,
13138             pjp1.CUSTOM13,
13139             pjp1.CUSTOM14,
13140             pjp1.CUSTOM15
13141           from
13142             PJI_AC_AGGR_PJP1_T pjp1,
13143             PJI_PJP_WBS_HEADER wbs_hdr,
13144             PJI_XBS_DENORM     prg
13145           where
13146             prg.STRUCT_TYPE         = 'PRG'                              and
13147             prg.SUP_LEVEL           = l_level                            and
13148             prg.SUB_LEVEL           = l_level                            and
13149             -- pjp1.WORKER_ID       = p_worker_id                        and
13150             pjp1.PROJECT_ID         = prg.SUP_PROJECT_ID                 and
13151             pjp1.PROJECT_ELEMENT_ID = prg.SUP_EMT_ID                     and
13152             pjp1.PRG_LEVEL          = 0                                  and
13153             pjp1.WBS_ROLLUP_FLAG    = 'N'                                and
13154             pjp1.PRG_ROLLUP_FLAG    = 'N'                                and
13155             wbs_hdr.PROJECT_ID      = pjp1.PROJECT_ID                    and
13156             wbs_hdr.PLAN_VERSION_ID = -1                                 and
13157             wbs_hdr.WBS_VERSION_ID  = prg.SUP_ID
13158           union all
13159           select /*+ ordered
13160                      index(log PA_PJI_PROJ_EVENTS_LOG_N2)
13161                      index(fpr PJI_AC_XBR_ACCUM_F_N1) */
13162                  -- get delta task level amounts from Reporting Lines
13163             wbs_hdr.WBS_VERSION_ID,
13164             'LF'                                   RELATIONSHIP_TYPE,
13165             decode(log.EVENT_TYPE,
13166                    'WBS_CHANGE', 'Y',
13167                    'WBS_PUBLISH', 'N')             PUSHUP_FLAG,
13168             'Y'                                    INSERT_FLAG,
13169             acr.PROJECT_ID,
13170             acr.PROJECT_ORG_ID,
13171             acr.PROJECT_ORGANIZATION_ID,
13172             decode(top_slice.INVERT_ID,
13173                    'PRJ', prg.SUP_EMT_ID,
13174                           decode(wbs.SUB_LEVEL,
13175                                  1, prg.SUP_EMT_ID,
13176                                     wbs.SUP_EMT_ID))
13177                                                    PROJECT_ELEMENT_ID,
13178             acr.TIME_ID,
13179             acr.PERIOD_TYPE_ID,
13180             acr.CALENDAR_TYPE,
13181             'Y'                                    WBS_ROLLUP_FLAG,
13182             acr.PRG_ROLLUP_FLAG,
13183             acr.CURR_RECORD_TYPE_ID,
13184             acr.CURRENCY_CODE,
13185             wbs.SIGN * acr.REVENUE                 REVENUE,
13186             wbs.SIGN * acr.INITIAL_FUNDING_AMOUNT  INITIAL_FUNDING_AMOUNT,
13187             wbs.SIGN * acr.INITIAL_FUNDING_COUNT   INITIAL_FUNDING_COUNT,
13188             wbs.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT
13189                                                    ADDITIONAL_FUNDING_AMOUNT,
13190             wbs.SIGN * acr.ADDITIONAL_FUNDING_COUNT
13191                                                    ADDITIONAL_FUNDING_COUNT,
13192             wbs.SIGN * acr.CANCELLED_FUNDING_AMOUNT
13193                                                    CANCELLED_FUNDING_AMOUNT,
13194             wbs.SIGN * acr.CANCELLED_FUNDING_COUNT CANCELLED_FUNDING_COUNT,
13195             wbs.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT
13196                                                    FUNDING_ADJUSTMENT_AMOUNT,
13197             wbs.SIGN * acr.FUNDING_ADJUSTMENT_COUNT
13198                                                    FUNDING_ADJUSTMENT_COUNT,
13199             wbs.SIGN * acr.REVENUE_WRITEOFF        REVENUE_WRITEOFF,
13200             wbs.SIGN * acr.AR_INVOICE_AMOUNT       AR_INVOICE_AMOUNT,
13201             wbs.SIGN * acr.AR_INVOICE_COUNT        AR_INVOICE_COUNT,
13202             wbs.SIGN * acr.AR_CASH_APPLIED_AMOUNT  AR_CASH_APPLIED_AMOUNT,
13203             wbs.SIGN * acr.AR_INVOICE_WRITE_OFF_AMOUNT
13204                                                    AR_INVOICE_WRITE_OFF_AMOUNT,
13205             wbs.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT
13206                                                    AR_INVOICE_WRITEOFF_COUNT,
13207             wbs.SIGN * acr.AR_CREDIT_MEMO_AMOUNT   AR_CREDIT_MEMO_AMOUNT,
13208             wbs.SIGN * acr.AR_CREDIT_MEMO_COUNT    AR_CREDIT_MEMO_COUNT,
13209             wbs.SIGN * acr.UNBILLED_RECEIVABLES    UNBILLED_RECEIVABLES,
13210             wbs.SIGN * acr.UNEARNED_REVENUE        UNEARNED_REVENUE,
13211             wbs.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT
13212                                                    AR_UNAPPR_INVOICE_AMOUNT,
13213             wbs.SIGN * acr.AR_UNAPPR_INVOICE_COUNT AR_UNAPPR_INVOICE_COUNT,
13214             wbs.SIGN * acr.AR_APPR_INVOICE_AMOUNT  AR_APPR_INVOICE_AMOUNT,
13215             wbs.SIGN * acr.AR_APPR_INVOICE_COUNT   AR_APPR_INVOICE_COUNT,
13216             wbs.SIGN * acr.AR_AMOUNT_DUE           AR_AMOUNT_DUE,
13217             wbs.SIGN * acr.AR_COUNT_DUE            AR_COUNT_DUE,
13218             wbs.SIGN * acr.AR_AMOUNT_OVERDUE       AR_AMOUNT_OVERDUE,
13219             wbs.SIGN * acr.AR_COUNT_OVERDUE        AR_COUNT_OVERDUE,
13220             wbs.SIGN * acr.CUSTOM1                 CUSTOM1,
13221             wbs.SIGN * acr.CUSTOM2                 CUSTOM2,
13222             wbs.SIGN * acr.CUSTOM3                 CUSTOM3,
13223             wbs.SIGN * acr.CUSTOM4                 CUSTOM4,
13224             wbs.SIGN * acr.CUSTOM5                 CUSTOM5,
13225             wbs.SIGN * acr.CUSTOM6                 CUSTOM6,
13226             wbs.SIGN * acr.CUSTOM7                 CUSTOM7,
13227             wbs.SIGN * acr.CUSTOM8                 CUSTOM8,
13228             wbs.SIGN * acr.CUSTOM9                 CUSTOM9,
13229             wbs.SIGN * acr.CUSTOM10                CUSTOM10,
13230             wbs.SIGN * acr.CUSTOM11                CUSTOM11,
13231             wbs.SIGN * acr.CUSTOM12                CUSTOM12,
13232             wbs.SIGN * acr.CUSTOM13                CUSTOM13,
13233             wbs.SIGN * acr.CUSTOM14                CUSTOM14,
13234             wbs.SIGN * acr.CUSTOM15                CUSTOM15
13235           from
13236             PA_PJI_PROJ_EVENTS_LOG log,
13237             PJI_PJP_WBS_HEADER     wbs_hdr,
13238             PJI_XBS_DENORM_DELTA_T wbs,
13239             PJI_XBS_DENORM         prg,
13240             PJI_AC_XBS_ACCUM_F     acr,
13241             (
13242               select 1     WBS_SUP_LEVEL,
13243                      1     WBS_SUB_LEVEL,
13244                      'PRJ' INVERT_ID
13245               from   DUAL
13246               union all
13247               select 1     WBS_SUP_LEVEL,
13248                      1     WBS_SUB_LEVEL,
13249                      'WBS' INVERT_ID
13250               from   DUAL
13251             ) top_slice
13252           where
13253             prg.STRUCT_TYPE         =  'PRG'                       and
13254             prg.SUP_LEVEL           =  l_level                     and
13255             prg.SUB_LEVEL           =  l_level                     and
13256             wbs.WORKER_ID           =  p_worker_id                 and
13257             wbs.STRUCT_TYPE         =  'WBS'                       and
13258             wbs.SUP_PROJECT_ID      =  prg.SUP_PROJECT_ID          and
13259             -- log.WORKER_ID        =  p_worker_id                 and
13260             log.EVENT_ID            =  g_event_id                  and
13261             log.EVENT_TYPE          in ('WBS_CHANGE',
13262                                         'WBS_PUBLISH')             and
13263             wbs_hdr.PROJECT_ID      =  log.ATTRIBUTE1              and
13264             wbs_hdr.PLAN_VERSION_ID =  log.ATTRIBUTE3              and
13265             wbs_hdr.PLAN_VERSION_ID =  -1                          and
13266             wbs_hdr.WBS_VERSION_ID  =  wbs.STRUCT_VERSION_ID       and
13267             wbs_hdr.PROJECT_ID      =  prg.SUP_PROJECT_ID          and
13268             wbs_hdr.WBS_VERSION_ID  =  prg.SUP_ID                  and
13269             acr.WBS_ROLLUP_FLAG     =  'N'                         and
13270             acr.PRG_ROLLUP_FLAG     =  'N'                         and
13271             acr.PROJECT_ID          =  wbs.SUP_PROJECT_ID          and
13272             acr.PROJECT_ELEMENT_ID  =  wbs.SUB_EMT_ID              and
13273             acr.PROJECT_ID          =  wbs_hdr.PROJECT_ID          and
13274             wbs.SUP_LEVEL           =  top_slice.WBS_SUP_LEVEL (+) and
13275             wbs.SUB_LEVEL           <> top_slice.WBS_SUB_LEVEL (+) and
13276             (wbs.SUP_LEVEL <> wbs.SUB_LEVEL or
13277              (wbs.SUP_LEVEL = 1 and
13278               wbs.SUB_LEVEL = 1))
13279           ) pjp,
13280           (
13281           select
13282             prg.SUP_PROJECT_ID,
13283             map.ORG_ID                       SUP_PROJECT_ORG_ID,
13284             map.CARRYING_OUT_ORGANIZATION_ID SUP_PROJECT_ORGANIZATION_ID,
13285             prg.SUP_ID,
13286             prg.SUP_EMT_ID,
13287             prg.SUP_LEVEL,
13288             prg.SUB_ID,
13289             prg.SUB_EMT_ID,
13290             prg.SUB_ROLLUP_ID,
13291             prg.RELATIONSHIP_TYPE            RELATIONSHIP_TYPE,
13292             'Y'                              PUSHUP_FLAG
13293           from
13294             PJI_XBS_DENORM prg,
13295             PA_PROJECTS_ALL map
13296           where
13297             l_level               >  1                  and
13298             prg.STRUCT_TYPE       =  'PRG'              and
13299             prg.RELATIONSHIP_TYPE =  'LF'               and
13300             prg.SUB_ROLLUP_ID     is not null           and
13301             prg.SUB_LEVEL         =  l_level            and
13302             -- map.WORKER_ID      =  p_worker_id        and
13303             map.PROJECT_ID        =  prg.SUP_PROJECT_ID
13304           ) prg
13305         where
13306           pjp.WBS_VERSION_ID    = prg.SUB_ID            (+) and
13307           pjp.RELATIONSHIP_TYPE = prg.RELATIONSHIP_TYPE (+) and
13308           pjp.PUSHUP_FLAG       = prg.PUSHUP_FLAG       (+)
13309         group by
13310           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13311                  pjp.INSERT_FLAG, 'Y'),
13312           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13313                  null, prg.SUP_ID),
13314           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13315                  null, prg.SUP_EMT_ID),
13316           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13317                  l_level, prg.SUP_LEVEL),
13318           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13319                  pjp.PROJECT_ID,
13320                  prg.SUP_PROJECT_ID),
13321           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13322                  pjp.PROJECT_ORG_ID,
13323                  prg.SUP_PROJECT_ORG_ID),
13324           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13325                  pjp.PROJECT_ORGANIZATION_ID,
13326                  prg.SUP_PROJECT_ORGANIZATION_ID),
13327           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13328                  pjp.PROJECT_ELEMENT_ID,
13329                  prg.SUB_ROLLUP_ID),
13330           pjp.TIME_ID,
13331           pjp.PERIOD_TYPE_ID,
13332           pjp.CALENDAR_TYPE,
13333           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13334                  pjp.WBS_ROLLUP_FLAG, 'N'),
13335           decode(nvl(prg.SUB_EMT_ID, -1), nvl(prg.SUB_ROLLUP_ID, -1),
13336                  pjp.PRG_ROLLUP_FLAG, 'Y'),
13337           pjp.CURR_RECORD_TYPE_ID,
13338           pjp.CURRENCY_CODE
13339           )                          pjp1_i,
13340           PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
13341           PA_PROJ_WORKPLAN_ATTR      sup_wpa
13342         where
13343           pjp1_i.INSERT_FLAG  = 'Y'                                and
13344           pjp1_i.PROJECT_ID   = sup_fin_ver.PROJECT_ID         (+) and
13345           pjp1_i.SUP_ID       = sup_fin_ver.ELEMENT_VERSION_ID (+) and
13346           'STRUCTURE_WORKING' = sup_fin_ver.STATUS_CODE        (+) and
13347           pjp1_i.SUP_EMT_ID   = sup_wpa.PROJ_ELEMENT_ID        (+) and
13348           'N'                 = sup_wpa.WP_ENABLE_VERSION_FLAG (+) and
13349           (pjp1_i.SUP_ID is null or
13350            (pjp1_i.SUP_ID is not null and
13351             (sup_fin_ver.PROJECT_ID is not null or
13352              sup_wpa.PROJ_ELEMENT_ID is not null)));
13353 
13354         l_level := l_level - 1;
13355 
13356       end loop;
13357 
13358     end if;
13359 
13360   end ROLLUP_ACR_WBS;
13361 
13362 
13363   -- -----------------------------------------------------
13364   -- procedure ROLLUP_FPR_PRG
13365   --
13366   --   History
13367   --   19-MAR-2004  SVERMETT  Created
13368   --
13369   -- Internal PJP Summarization API.
13370   --
13371   -- -----------------------------------------------------
13372   procedure ROLLUP_FPR_PRG (p_worker_id in number) is
13373 
13374     l_process         varchar2(30);
13375     l_prg_exists      varchar2(25);
13376     l_extraction_type varchar2(30);
13377     l_level           number;
13378     l_max_level       number;
13379     l_step_seq        number;
13380     l_level_seq       number;
13381     l_count           number;
13382 
13383   begin
13384 
13385     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
13386 
13387     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);')) then
13388       return;
13389     end if;
13390 
13391     l_prg_exists := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
13392                     (l_process, 'PROGRAM_EXISTS');
13393 
13394     if (l_prg_exists = 'N') then
13395       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process,
13396         'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);');
13397       commit;
13398       return;
13399     end if;
13400 
13401     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
13402 
13403     -- allow recovery after each level is processed
13404 
13405     select
13406       STEP_SEQ
13407     into
13408       l_step_seq
13409     from
13410       PJI_SYSTEM_PRC_STATUS
13411     where
13412       PROCESS_NAME = l_process and
13413       STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);';
13414 
13415     select
13416       count(*)
13417     into
13418       l_count
13419     from
13420       PJI_SYSTEM_PRC_STATUS
13421     where
13422       PROCESS_NAME = l_process and
13423       STEP_NAME like 'ROLLUP_FPR_PRG%';
13424 
13425     if (l_count = 0) then
13426 
13427       select
13428         nvl(max(den.SUP_LEVEL), 0)
13429       into
13430         l_level
13431       from
13432         PJI_XBS_DENORM_DELTA den
13433       where
13434         den.WORKER_ID = p_worker_id and
13435         den.STRUCT_TYPE = 'PRG';
13436 
13437       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
13438                                              'MAX_PROGRAM_LEVEL',
13439                                              l_level);
13440 
13441       insert into PJI_SYSTEM_PRC_STATUS
13442       (
13443         PROCESS_NAME,
13444         STEP_SEQ,
13445         STEP_STATUS,
13446         STEP_NAME,
13447         START_DATE,
13448         END_DATE
13449       )
13450       select
13451         l_process                              PROCESS_NAME,
13452         to_char(l_step_seq + SUP_LEVEL / 1000) STEP_SEQ,
13453         null                                   STEP_STATUS,
13454         'ROLLUP_FPR_PRG - level ' ||
13455           to_char(l_level - SUP_LEVEL + 1)     STEP_NAME,
13456         null                                   START_DATE,
13457         null                                   END_DATE
13458       from
13459       (
13460         select
13461           SUP_LEVEL
13462         from
13463           PJI_XBS_DENORM_DELTA
13464         where
13465           worker_id = p_worker_id and
13466           STRUCT_TYPE = 'PRG'
13467         union all
13468         select
13469           SUP_LEVEL
13470         from
13471           PA_XBS_DENORM den,
13472           PJI_PJP_PROJ_BATCH_MAP map
13473         where
13474           map.WORKER_ID      = p_worker_id    and
13475           den.STRUCT_TYPE    = 'PRG'          and
13476           den.SUP_PROJECT_ID = map.PROJECT_ID
13477       )
13478       where
13479         exists
13480         (
13481         select
13482           1
13483         from
13484           PJI_XBS_DENORM_DELTA
13485         where
13486           WORKER_ID = p_worker_id and
13487           ROWNUM = 1
13488         )
13489       group by
13490         SUP_LEVEL
13491       order by
13492         SUP_LEVEL desc;
13493 
13494     end if;
13495 
13496     l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
13497                    (l_process, 'MAX_PROGRAM_LEVEL');
13498 
13499     select
13500       nvl(to_number(min(STEP_SEQ)), 0)
13501     into
13502       l_level_seq
13503     from
13504       PJI_SYSTEM_PRC_STATUS
13505     where
13506       PROCESS_NAME = l_process and
13507       STEP_NAME like 'ROLLUP_FPR_PRG%' and
13508       STEP_STATUS is null;
13509 
13510     if (l_level_seq = 0) then
13511       l_level := 0;
13512     else
13513       l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
13514     end if;
13515 
13516     while (l_level > 0) loop
13517 
13518       update PJI_SYSTEM_PRC_STATUS
13519       set    START_DATE = sysdate
13520       where  PROCESS_NAME = l_process and
13521              STEP_SEQ = l_level_seq;
13522 
13523       -- rollup project hiearchy
13524 
13525       insert into PJI_FP_AGGR_PJP1 pjp1_i
13526       (
13527         WORKER_ID,
13528         RECORD_TYPE,
13529         PRG_LEVEL,
13530         LINE_TYPE,
13531         PROJECT_ID,
13532         PROJECT_ORG_ID,
13533         PROJECT_ORGANIZATION_ID,
13534         PROJECT_ELEMENT_ID,
13535         TIME_ID,
13536         PERIOD_TYPE_ID,
13537         CALENDAR_TYPE,
13538         RBS_AGGR_LEVEL,
13539         WBS_ROLLUP_FLAG,
13540         PRG_ROLLUP_FLAG,
13541         CURR_RECORD_TYPE_ID,
13542         CURRENCY_CODE,
13543         RBS_ELEMENT_ID,
13544         RBS_VERSION_ID,
13545         PLAN_VERSION_ID,
13546         PLAN_TYPE_ID,
13547         PLAN_TYPE_CODE,
13548         RAW_COST,
13549         BRDN_COST,
13550         REVENUE,
13551         BILL_RAW_COST,
13552         BILL_BRDN_COST,
13553         BILL_LABOR_RAW_COST,
13554         BILL_LABOR_BRDN_COST,
13555         BILL_LABOR_HRS,
13556         EQUIPMENT_RAW_COST,
13557         EQUIPMENT_BRDN_COST,
13558         CAPITALIZABLE_RAW_COST,
13559         CAPITALIZABLE_BRDN_COST,
13560         LABOR_RAW_COST,
13561         LABOR_BRDN_COST,
13562         LABOR_HRS,
13563         LABOR_REVENUE,
13564         EQUIPMENT_HOURS,
13565         BILLABLE_EQUIPMENT_HOURS,
13566         SUP_INV_COMMITTED_COST,
13567         PO_COMMITTED_COST,
13568         PR_COMMITTED_COST,
13569         OTH_COMMITTED_COST,
13570         ACT_LABOR_HRS,
13571         ACT_EQUIP_HRS,
13572         ACT_LABOR_BRDN_COST,
13573         ACT_EQUIP_BRDN_COST,
13574         ACT_BRDN_COST,
13575         ACT_RAW_COST,
13576         ACT_REVENUE,
13577         ACT_LABOR_RAW_COST,
13578         ACT_EQUIP_RAW_COST,
13579         ETC_LABOR_HRS,
13580         ETC_EQUIP_HRS,
13581         ETC_LABOR_BRDN_COST,
13582         ETC_EQUIP_BRDN_COST,
13583         ETC_BRDN_COST,
13584         ETC_RAW_COST,
13585         ETC_LABOR_RAW_COST,
13586         ETC_EQUIP_RAW_COST,
13587         CUSTOM1,
13588         CUSTOM2,
13589         CUSTOM3,
13590         CUSTOM4,
13591         CUSTOM5,
13592         CUSTOM6,
13593         CUSTOM7,
13594         CUSTOM8,
13595         CUSTOM9,
13596         CUSTOM10,
13597         CUSTOM11,
13598         CUSTOM12,
13599         CUSTOM13,
13600         CUSTOM14,
13601         CUSTOM15
13602       )
13603       select /*+ no_merge(pjp) */
13604         p_worker_id                                   WORKER_ID,
13605         'P'                                           RECORD_TYPE,
13606         l_level                                       PRG_LEVEL,
13607         pjp.LINE_TYPE,
13608         pjp.SUP_PROJECT_ID                            PROJECT_ID,
13609         map.PROJECT_ORG_ID,
13610         map.PROJECT_ORGANIZATION_ID,
13611         decode(pjp.STRUCT_TYPE,
13612                'DO_NOT_ROLLUP', pjp.SUB_ROLLUP_ID,
13613                                 decode(top_slice.INVERT_ID,
13614                                        'PRJ', pjp.SUP_EMT_ID, wbs.SUP_EMT_ID)
13615               )                                       PROJECT_ELEMENT_ID,
13616         pjp.TIME_ID,
13617         pjp.PERIOD_TYPE_ID,
13618         pjp.CALENDAR_TYPE,
13619         pjp.RBS_AGGR_LEVEL,
13620         decode(pjp.STRUCT_TYPE,
13621                'DO_NOT_ROLLUP', 'N',
13622                                 decode(top_slice.INVERT_ID,
13623                                        'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
13624                                                           wbs.SUP_EMT_ID,
13625                                                           'N', 'Y'))
13626               )                                       WBS_ROLLUP_FLAG,
13627         'Y'                                           PRG_ROLLUP_FLAG,
13628         pjp.CURR_RECORD_TYPE_ID,
13629         pjp.CURRENCY_CODE,
13630         pjp.RBS_ELEMENT_ID,
13631         pjp.RBS_VERSION_ID,
13632         pjp.PLAN_VERSION_ID,
13633         pjp.PLAN_TYPE_ID,
13634         pjp.PLAN_TYPE_CODE,
13635         sum(pjp.RAW_COST)                             RAW_COST,
13636         sum(pjp.BRDN_COST)                            BRDN_COST,
13637         sum(pjp.REVENUE)                              REVENUE,
13638         sum(pjp.BILL_RAW_COST)                        BILL_RAW_COST,
13639         sum(pjp.BILL_BRDN_COST)                       BILL_BRDN_COST,
13640         sum(pjp.BILL_LABOR_RAW_COST)                  BILL_LABOR_RAW_COST,
13641         sum(pjp.BILL_LABOR_BRDN_COST)                 BILL_LABOR_BRDN_COST,
13642         sum(pjp.BILL_LABOR_HRS)                       BILL_LABOR_HRS,
13643         sum(pjp.EQUIPMENT_RAW_COST)                   EQUIPMENT_RAW_COST,
13644         sum(pjp.EQUIPMENT_BRDN_COST)                  EQUIPMENT_BRDN_COST,
13645         sum(pjp.CAPITALIZABLE_RAW_COST)               CAPITALIZABLE_RAW_COST,
13646         sum(pjp.CAPITALIZABLE_BRDN_COST)              CAPITALIZABLE_BRDN_COST,
13647         sum(pjp.LABOR_RAW_COST)                       LABOR_RAW_COST,
13648         sum(pjp.LABOR_BRDN_COST)                      LABOR_BRDN_COST,
13649         sum(pjp.LABOR_HRS)                            LABOR_HRS,
13650         sum(pjp.LABOR_REVENUE)                        LABOR_REVENUE,
13651         sum(pjp.EQUIPMENT_HOURS)                      EQUIPMENT_HOURS,
13652         sum(pjp.BILLABLE_EQUIPMENT_HOURS)             BILLABLE_EQUIPMENT_HOURS,
13653         sum(pjp.SUP_INV_COMMITTED_COST)               SUP_INV_COMMITTED_COST,
13654         sum(pjp.PO_COMMITTED_COST)                    PO_COMMITTED_COST,
13655         sum(pjp.PR_COMMITTED_COST)                    PR_COMMITTED_COST,
13656         sum(pjp.OTH_COMMITTED_COST)                   OTH_COMMITTED_COST,
13657         sum(pjp.ACT_LABOR_HRS)                        ACT_LABOR_HRS,
13658         sum(pjp.ACT_EQUIP_HRS)                        ACT_EQUIP_HRS,
13659         sum(pjp.ACT_LABOR_BRDN_COST)                  ACT_LABOR_BRDN_COST,
13660         sum(pjp.ACT_EQUIP_BRDN_COST)                  ACT_EQUIP_BRDN_COST,
13661         sum(pjp.ACT_BRDN_COST)                        ACT_BRDN_COST,
13662         sum(pjp.ACT_RAW_COST)                         ACT_RAW_COST,
13663         sum(pjp.ACT_REVENUE)                          ACT_REVENUE,
13664         sum(pjp.ACT_LABOR_RAW_COST)                   ACT_LABOR_RAW_COST,
13665         sum(pjp.ACT_EQUIP_RAW_COST)                   ACT_EQUIP_RAW_COST,
13666         sum(pjp.ETC_LABOR_HRS)                        ETC_LABOR_HRS,
13667         sum(pjp.ETC_EQUIP_HRS)                        ETC_EQUIP_HRS,
13668         sum(pjp.ETC_LABOR_BRDN_COST)                  ETC_LABOR_BRDN_COST,
13669         sum(pjp.ETC_EQUIP_BRDN_COST)                  ETC_EQUIP_BRDN_COST,
13670         sum(pjp.ETC_BRDN_COST)                        ETC_BRDN_COST,
13671         sum(pjp.ETC_RAW_COST)                         ETC_RAW_COST,
13672         sum(pjp.ETC_LABOR_RAW_COST)                   ETC_LABOR_RAW_COST,
13673         sum(pjp.ETC_EQUIP_RAW_COST)                   ETC_EQUIP_RAW_COST,
13674         sum(pjp.CUSTOM1)                              CUSTOM1,
13675         sum(pjp.CUSTOM2)                              CUSTOM2,
13676         sum(pjp.CUSTOM3)                              CUSTOM3,
13677         sum(pjp.CUSTOM4)                              CUSTOM4,
13678         sum(pjp.CUSTOM5)                              CUSTOM5,
13679         sum(pjp.CUSTOM6)                              CUSTOM6,
13680         sum(pjp.CUSTOM7)                              CUSTOM7,
13681         sum(pjp.CUSTOM8)                              CUSTOM8,
13682         sum(pjp.CUSTOM9)                              CUSTOM9,
13683         sum(pjp.CUSTOM10)                             CUSTOM10,
13684         sum(pjp.CUSTOM11)                             CUSTOM11,
13685         sum(pjp.CUSTOM12)                             CUSTOM12,
13686         sum(pjp.CUSTOM13)                             CUSTOM13,
13687         sum(pjp.CUSTOM14)                             CUSTOM14,
13688         sum(pjp.CUSTOM15)                             CUSTOM15
13689       from
13690         (
13691         select /*+ ordered index(fpr PJI_FP_XBS_ACCUM_F_N1) */
13692                -- get structure level amounts from Reporting Lines
13693           decode(fpr.RBS_AGGR_LEVEL,
13694                  'L', 'DO_NOT_ROLLUP',
13695                       'WBS')                          STRUCT_TYPE,
13696           to_char(null)                               LINE_TYPE,
13697           prg.SUP_PROJECT_ID,
13698           prg.SUP_ID,
13699           prg.SUP_EMT_ID,
13700           prg.SUB_EMT_ID,
13701           prg.SUB_ROLLUP_ID,
13702           'FPR'                                       LINE_SOURCE,
13703           decode(fpr.PLAN_VERSION_ID,
13704                  -1, prg.SUB_ID,
13705                  -3, prg.SUB_ID,
13706                  -4, prg.SUB_ID,
13707                      decode(fin_plan.PLAN_VERSION_ID,
13708                             null, null,
13709                                   prg.SUB_ID))        SUB_ID,
13710           decode(fpr.PLAN_VERSION_ID,
13711                  -1, 'N',
13712                  -3, 'N',
13713                  -4, 'N',
13714                      decode(fin_plan.PLAN_VERSION_ID,
13715                             null, null,
13716                                   'N'))               SUP_WP_FLAG,
13717           decode(fpr.PLAN_VERSION_ID,
13718                  -1, fpr.PLAN_VERSION_ID,
13719                  -3, fpr.PLAN_VERSION_ID,
13720                  -4, fpr.PLAN_VERSION_ID,
13721                      decode(fin_plan.PLAN_VERSION_ID,
13722                             null, null,
13723                                   fin_plan.PLAN_VERSION_ID)
13724                 )                                     SUB_PLAN_VERSION_ID,
13725           decode(fpr.PLAN_VERSION_ID,
13726                  -1, fpr.PLAN_TYPE_ID,
13727                  -3, fpr.PLAN_TYPE_ID,
13728                  -4, fpr.PLAN_TYPE_ID,
13729                      decode(fin_plan.PLAN_VERSION_ID,
13730                             null, null,
13731                                   fpr.PLAN_TYPE_ID))  SUB_PLAN_TYPE_ID,
13732           fpr.TIME_ID,
13733           fpr.PERIOD_TYPE_ID,
13734           fpr.CALENDAR_TYPE,
13735           fpr.RBS_AGGR_LEVEL,
13736           fpr.CURR_RECORD_TYPE_ID,
13737           fpr.CURRENCY_CODE,
13738           fpr.RBS_ELEMENT_ID,
13739           fpr.RBS_VERSION_ID,
13740           decode(wbs_hdr.WP_FLAG,
13741                  'N', decode(wbs_hdr.PLAN_VERSION_ID,
13742                              -1, fpr.PLAN_VERSION_ID,
13743                                  fin_plan.PLAN_VERSION_ID),
13744                       sup_wbs_hdr.PLAN_VERSION_ID)    PLAN_VERSION_ID,
13745           decode(wbs_hdr.WP_FLAG,
13746                  'N', fpr.PLAN_TYPE_ID,
13747                       sup_wbs_hdr.PLAN_TYPE_ID)       PLAN_TYPE_ID,
13748           fpr.PLAN_TYPE_CODE,
13749           decode(wbs_hdr.WP_FLAG
13750                    || '_' || sup_wbs_hdr.WP_FLAG
13751                    || '_' || sub_ver.STATUS_CODE
13752                    || '_' || sup_ver.STATUS_CODE,
13753                  'Y_Y__', to_number(null),
13754                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13755                  prg.SIGN * fpr.RAW_COST)             RAW_COST,
13756           decode(wbs_hdr.WP_FLAG
13757                    || '_' || sup_wbs_hdr.WP_FLAG
13758                    || '_' || sub_ver.STATUS_CODE
13759                    || '_' || sup_ver.STATUS_CODE,
13760                  'Y_Y__', to_number(null),
13761                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13762                  prg.SIGN * fpr.BRDN_COST)            BRDN_COST,
13763           decode(wbs_hdr.WP_FLAG
13764                    || '_' || sup_wbs_hdr.WP_FLAG
13765                    || '_' || sub_ver.STATUS_CODE
13766                    || '_' || sup_ver.STATUS_CODE,
13767                  'Y_Y__', to_number(null),
13768                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13769                  prg.SIGN * fpr.REVENUE)              REVENUE,
13770           decode(wbs_hdr.WP_FLAG
13771                    || '_' || sup_wbs_hdr.WP_FLAG
13772                    || '_' || sub_ver.STATUS_CODE
13773                    || '_' || sup_ver.STATUS_CODE,
13774                  'Y_Y__', to_number(null),
13775                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13776                  prg.SIGN * fpr.BILL_RAW_COST)        BILL_RAW_COST,
13777           decode(wbs_hdr.WP_FLAG
13778                    || '_' || sup_wbs_hdr.WP_FLAG
13779                    || '_' || sub_ver.STATUS_CODE
13780                    || '_' || sup_ver.STATUS_CODE,
13781                  'Y_Y__', to_number(null),
13782                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13783                  prg.SIGN * fpr.BILL_BRDN_COST)       BILL_BRDN_COST,
13784           decode(wbs_hdr.WP_FLAG
13785                    || '_' || sup_wbs_hdr.WP_FLAG
13786                    || '_' || sub_ver.STATUS_CODE
13787                    || '_' || sup_ver.STATUS_CODE,
13788                  'Y_Y__', to_number(null),
13789                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13790                  prg.SIGN * fpr.BILL_LABOR_RAW_COST)  BILL_LABOR_RAW_COST,
13791           decode(wbs_hdr.WP_FLAG
13792                    || '_' || sup_wbs_hdr.WP_FLAG
13793                    || '_' || sub_ver.STATUS_CODE
13794                    || '_' || sup_ver.STATUS_CODE,
13795                  'Y_Y__', to_number(null),
13796                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13797                  prg.SIGN * fpr.BILL_LABOR_BRDN_COST) BILL_LABOR_BRDN_COST,
13798           decode(wbs_hdr.WP_FLAG
13799                    || '_' || sup_wbs_hdr.WP_FLAG
13800                    || '_' || sub_ver.STATUS_CODE
13801                    || '_' || sup_ver.STATUS_CODE,
13802                  'Y_Y__', to_number(null),
13803                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13804                  prg.SIGN * fpr.BILL_LABOR_HRS)       BILL_LABOR_HRS,
13805           decode(wbs_hdr.WP_FLAG
13806                    || '_' || sup_wbs_hdr.WP_FLAG
13807                    || '_' || sub_ver.STATUS_CODE
13808                    || '_' || sup_ver.STATUS_CODE,
13809                  'Y_Y__', to_number(null),
13810                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13811                  prg.SIGN * fpr.EQUIPMENT_RAW_COST)   EQUIPMENT_RAW_COST,
13812           decode(wbs_hdr.WP_FLAG
13813                    || '_' || sup_wbs_hdr.WP_FLAG
13814                    || '_' || sub_ver.STATUS_CODE
13815                    || '_' || sup_ver.STATUS_CODE,
13816                  'Y_Y__', to_number(null),
13817                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13818                  prg.SIGN * fpr.EQUIPMENT_BRDN_COST)  EQUIPMENT_BRDN_COST,
13819           decode(wbs_hdr.WP_FLAG
13820                    || '_' || sup_wbs_hdr.WP_FLAG
13821                    || '_' || sub_ver.STATUS_CODE
13822                    || '_' || sup_ver.STATUS_CODE,
13823                  'Y_Y__', to_number(null),
13824                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13825                  prg.SIGN * fpr.CAPITALIZABLE_RAW_COST)
13826                                                       CAPITALIZABLE_RAW_COST,
13827           decode(wbs_hdr.WP_FLAG
13828                    || '_' || sup_wbs_hdr.WP_FLAG
13829                    || '_' || sub_ver.STATUS_CODE
13830                    || '_' || sup_ver.STATUS_CODE,
13831                  'Y_Y__', to_number(null),
13832                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13833                  prg.SIGN * fpr.CAPITALIZABLE_BRDN_COST)
13834                                                       CAPITALIZABLE_BRDN_COST,
13835           decode(wbs_hdr.WP_FLAG
13836                    || '_' || sup_wbs_hdr.WP_FLAG
13837                    || '_' || sub_ver.STATUS_CODE
13838                    || '_' || sup_ver.STATUS_CODE,
13839                  'Y_Y__', to_number(null),
13840                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13841                  prg.SIGN * fpr.LABOR_RAW_COST)       LABOR_RAW_COST,
13842           decode(wbs_hdr.WP_FLAG
13843                    || '_' || sup_wbs_hdr.WP_FLAG
13844                    || '_' || sub_ver.STATUS_CODE
13845                    || '_' || sup_ver.STATUS_CODE,
13846                  'Y_Y__', to_number(null),
13847                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13848                  prg.SIGN * fpr.LABOR_BRDN_COST)      LABOR_BRDN_COST,
13849           decode(wbs_hdr.WP_FLAG
13850                    || '_' || sup_wbs_hdr.WP_FLAG
13851                    || '_' || sub_ver.STATUS_CODE
13852                    || '_' || sup_ver.STATUS_CODE,
13853                  'Y_Y__', to_number(null),
13854                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13855                  prg.SIGN * fpr.LABOR_HRS)            LABOR_HRS,
13856           decode(wbs_hdr.WP_FLAG
13857                    || '_' || sup_wbs_hdr.WP_FLAG
13858                    || '_' || sub_ver.STATUS_CODE
13859                    || '_' || sup_ver.STATUS_CODE,
13860                  'Y_Y__', to_number(null),
13861                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13862                  prg.SIGN * fpr.LABOR_REVENUE)        LABOR_REVENUE,
13863           decode(wbs_hdr.WP_FLAG
13864                    || '_' || sup_wbs_hdr.WP_FLAG
13865                    || '_' || sub_ver.STATUS_CODE
13866                    || '_' || sup_ver.STATUS_CODE,
13867                  'Y_Y__', to_number(null),
13868                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13869                  prg.SIGN * fpr.EQUIPMENT_HOURS)      EQUIPMENT_HOURS,
13870           decode(wbs_hdr.WP_FLAG
13871                    || '_' || sup_wbs_hdr.WP_FLAG
13872                    || '_' || sub_ver.STATUS_CODE
13873                    || '_' || sup_ver.STATUS_CODE,
13874                  'Y_Y__', to_number(null),
13875                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13876                  prg.SIGN * fpr.BILLABLE_EQUIPMENT_HOURS)
13877                                                       BILLABLE_EQUIPMENT_HOURS,
13878           decode(wbs_hdr.WP_FLAG
13879                    || '_' || sup_wbs_hdr.WP_FLAG
13880                    || '_' || sub_ver.STATUS_CODE
13881                    || '_' || sup_ver.STATUS_CODE,
13882                  'Y_Y__', to_number(null),
13883                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13884                  prg.SIGN * fpr.SUP_INV_COMMITTED_COST)
13885                                                       SUP_INV_COMMITTED_COST,
13886           decode(wbs_hdr.WP_FLAG
13887                    || '_' || sup_wbs_hdr.WP_FLAG
13888                    || '_' || sub_ver.STATUS_CODE
13889                    || '_' || sup_ver.STATUS_CODE,
13890                  'Y_Y__', to_number(null),
13891                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13892                  prg.SIGN * fpr.PO_COMMITTED_COST)    PO_COMMITTED_COST,
13893           decode(wbs_hdr.WP_FLAG
13894                    || '_' || sup_wbs_hdr.WP_FLAG
13895                    || '_' || sub_ver.STATUS_CODE
13896                    || '_' || sup_ver.STATUS_CODE,
13897                  'Y_Y__', to_number(null),
13898                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13899                  prg.SIGN * fpr.PR_COMMITTED_COST)    PR_COMMITTED_COST,
13900           decode(wbs_hdr.WP_FLAG
13901                    || '_' || sup_wbs_hdr.WP_FLAG
13902                    || '_' || sub_ver.STATUS_CODE
13903                    || '_' || sup_ver.STATUS_CODE,
13904                  'Y_Y__', to_number(null),
13905                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
13906                  prg.SIGN * fpr.OTH_COMMITTED_COST)   OTH_COMMITTED_COST,
13907           decode(wbs_hdr.WP_FLAG
13908                    || '_' || sup_wbs_hdr.WP_FLAG
13909                    || '_' || sup_ver.STATUS_CODE,
13910                  'Y_Y_', to_number(null),
13911                  prg.SIGN * fpr.ACT_LABOR_HRS)        ACT_LABOR_HRS,
13912           decode(wbs_hdr.WP_FLAG
13913                    || '_' || sup_wbs_hdr.WP_FLAG
13914                    || '_' || sup_ver.STATUS_CODE,
13915                  'Y_Y_', to_number(null),
13916                  prg.SIGN * fpr.ACT_EQUIP_HRS)        ACT_EQUIP_HRS,
13917           decode(wbs_hdr.WP_FLAG
13918                    || '_' || sup_wbs_hdr.WP_FLAG
13919                    || '_' || sup_ver.STATUS_CODE,
13920                  'Y_Y_', to_number(null),
13921                  prg.SIGN * fpr.ACT_LABOR_BRDN_COST)  ACT_LABOR_BRDN_COST,
13922           decode(wbs_hdr.WP_FLAG
13923                    || '_' || sup_wbs_hdr.WP_FLAG
13924                    || '_' || sup_ver.STATUS_CODE,
13925                  'Y_Y_', to_number(null),
13926                  prg.SIGN * fpr.ACT_EQUIP_BRDN_COST)  ACT_EQUIP_BRDN_COST,
13927           decode(wbs_hdr.WP_FLAG
13928                    || '_' || sup_wbs_hdr.WP_FLAG
13929                    || '_' || sup_ver.STATUS_CODE,
13930                  'Y_Y_', to_number(null),
13931                  prg.SIGN * fpr.ACT_BRDN_COST)        ACT_BRDN_COST,
13932           decode(wbs_hdr.WP_FLAG
13933                    || '_' || sup_wbs_hdr.WP_FLAG
13934                    || '_' || sup_ver.STATUS_CODE,
13935                  'Y_Y_', to_number(null),
13936                  prg.SIGN * fpr.ACT_RAW_COST)         ACT_RAW_COST,
13937           decode(wbs_hdr.WP_FLAG
13938                    || '_' || sup_wbs_hdr.WP_FLAG
13939                    || '_' || sup_ver.STATUS_CODE,
13940                  'Y_Y_', to_number(null),
13941                  prg.SIGN * fpr.ACT_REVENUE)          ACT_REVENUE,
13942           decode(wbs_hdr.WP_FLAG
13943                    || '_' || sup_wbs_hdr.WP_FLAG
13944                    || '_' || sup_ver.STATUS_CODE,
13945                  'Y_Y_', to_number(null),
13946                  prg.SIGN * fpr.ACT_LABOR_RAW_COST)   ACT_LABOR_RAW_COST,
13947           decode(wbs_hdr.WP_FLAG
13948                    || '_' || sup_wbs_hdr.WP_FLAG
13949                    || '_' || sup_ver.STATUS_CODE,
13950                  'Y_Y_', to_number(null),
13951                  prg.SIGN * fpr.ACT_EQUIP_RAW_COST)   ACT_EQUIP_RAW_COST,
13952           decode(wbs_hdr.WP_FLAG
13953                    || '_' || sup_wbs_hdr.WP_FLAG
13954                    || '_' || sup_ver.STATUS_CODE,
13955                  'Y_Y_', to_number(null),
13956                  prg.SIGN * fpr.ETC_LABOR_HRS)        ETC_LABOR_HRS,
13957           decode(wbs_hdr.WP_FLAG
13958                    || '_' || sup_wbs_hdr.WP_FLAG
13959                    || '_' || sup_ver.STATUS_CODE,
13960                  'Y_Y_', to_number(null),
13961                  prg.SIGN * fpr.ETC_EQUIP_HRS)        ETC_EQUIP_HRS,
13962           decode(wbs_hdr.WP_FLAG
13963                    || '_' || sup_wbs_hdr.WP_FLAG
13964                    || '_' || sup_ver.STATUS_CODE,
13965                  'Y_Y_', to_number(null),
13966                  prg.SIGN * fpr.ETC_LABOR_BRDN_COST)  ETC_LABOR_BRDN_COST,
13967           decode(wbs_hdr.WP_FLAG
13968                    || '_' || sup_wbs_hdr.WP_FLAG
13969                    || '_' || sup_ver.STATUS_CODE,
13970                  'Y_Y_', to_number(null),
13971                  prg.SIGN * fpr.ETC_EQUIP_BRDN_COST)  ETC_EQUIP_BRDN_COST,
13972           decode(wbs_hdr.WP_FLAG
13973                    || '_' || sup_wbs_hdr.WP_FLAG
13974                    || '_' || sup_ver.STATUS_CODE,
13975                  'Y_Y_', to_number(null),
13976                  prg.SIGN * fpr.ETC_BRDN_COST)        ETC_BRDN_COST,
13977           decode(wbs_hdr.WP_FLAG
13978                    || '_' || sup_wbs_hdr.WP_FLAG
13979                    || '_' || sup_ver.STATUS_CODE,
13980                  'Y_Y_', to_number(null),
13981                  prg.SIGN * fpr.ETC_RAW_COST)         ETC_RAW_COST,
13982           decode(wbs_hdr.WP_FLAG
13983                    || '_' || sup_wbs_hdr.WP_FLAG
13984                    || '_' || sup_ver.STATUS_CODE,
13985                  'Y_Y_', to_number(null),
13986                  prg.SIGN * fpr.ETC_LABOR_RAW_COST)   ETC_LABOR_RAW_COST,
13987           decode(wbs_hdr.WP_FLAG
13988                    || '_' || sup_wbs_hdr.WP_FLAG
13989                    || '_' || sup_ver.STATUS_CODE,
13990                  'Y_Y_', to_number(null),
13991                  prg.SIGN * fpr.ETC_EQUIP_RAW_COST)   ETC_EQUIP_RAW_COST,
13992           prg.SIGN * fpr.CUSTOM1                      CUSTOM1,
13993           prg.SIGN * fpr.CUSTOM2                      CUSTOM2,
13994           prg.SIGN * fpr.CUSTOM3                      CUSTOM3,
13995           prg.SIGN * fpr.CUSTOM4                      CUSTOM4,
13996           prg.SIGN * fpr.CUSTOM5                      CUSTOM5,
13997           prg.SIGN * fpr.CUSTOM6                      CUSTOM6,
13998           prg.SIGN * fpr.CUSTOM7                      CUSTOM7,
13999           prg.SIGN * fpr.CUSTOM8                      CUSTOM8,
14000           prg.SIGN * fpr.CUSTOM9                      CUSTOM9,
14001           prg.SIGN * fpr.CUSTOM10                     CUSTOM10,
14002           prg.SIGN * fpr.CUSTOM11                     CUSTOM11,
14003           prg.SIGN * fpr.CUSTOM12                     CUSTOM12,
14004           prg.SIGN * fpr.CUSTOM13                     CUSTOM13,
14005           prg.SIGN * fpr.CUSTOM14                     CUSTOM14,
14006           prg.SIGN * fpr.CUSTOM15                     CUSTOM15
14007         from
14008           PJI_XBS_DENORM_DELTA       prg,
14009           PA_PROJ_ELEMENTS           prj_emt,
14010           PJI_PJP_WBS_HEADER         wbs_hdr,
14011           PJI_FP_XBS_ACCUM_F         fpr,
14012           PJI_PJP_WBS_HEADER         sup_wbs_hdr,
14013           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
14014           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
14015           (
14016             select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID
14017             from DUAL union all
14018             select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID
14019             from DUAL union all
14020             select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID
14021             from DUAL union all
14022             select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID
14023             from DUAL
14024           ) fin_plan
14025         where
14026           prg.WORKER_ID              =  p_worker_id                    and
14027           prg.STRUCT_TYPE            =  'PRG'                          and
14028           prg.SUP_LEVEL              =  l_level                        and
14029           nvl(prg.SUB_ROLLUP_ID,
14030               prg.SUP_EMT_ID)        <> prg.SUP_EMT_ID                 and
14031           fpr.PROJECT_ID             =  prj_emt.PROJECT_ID             and
14032           (((fpr.RBS_AGGR_LEVEL,
14033              fpr.WBS_ROLLUP_FLAG,
14034              fpr.PRG_ROLLUP_FLAG) in (('T', 'Y', 'Y'),
14035                                       ('T', 'Y', 'N'),
14036                                       ('T', 'N', 'Y'),
14037                                       ('T', 'N', 'N'),
14038                                       ('L', 'N', 'N')) and
14039              fpr.PROJECT_ELEMENT_ID = prg.SUB_EMT_ID) or
14040            ((fpr.RBS_AGGR_LEVEL,
14041              fpr.WBS_ROLLUP_FLAG,
14042              fpr.PRG_ROLLUP_FLAG) in (('L', 'N', 'Y'),
14043                                       ('L', 'N', 'N')) and
14044              fpr.PROJECT_ELEMENT_ID <> prg.SUB_EMT_ID))                and
14045           decode(fpr.PLAN_VERSION_ID,
14046                  -1, 'LF',
14047                  -2, 'LF',
14048                  -3, 'LF',
14049                  -4, 'LF',
14050                      decode(wbs_hdr.WP_FLAG,
14051                             'N', 'LF',
14052                               'LW')) =  prg.RELATIONSHIP_TYPE          and
14053           prj_emt.PROJ_ELEMENT_ID    =  prg.SUB_EMT_ID                 and
14054           wbs_hdr.PROJECT_ID         =  prj_emt.PROJECT_ID             and
14055           decode(wbs_hdr.WP_FLAG,
14056                  'Y', wbs_hdr.WBS_VERSION_ID,
14057                       -1)            = decode(wbs_hdr.WP_FLAG,
14058                                               'Y', prg.SUB_ID,
14059                                                    -1)                 and
14060           wbs_hdr.PLAN_VERSION_ID    =  fpr.PLAN_VERSION_ID            and
14061           wbs_hdr.PLAN_TYPE_CODE     =  fpr.PLAN_TYPE_CODE             and
14062           decode(fpr.PLAN_VERSION_ID,
14063                  -3, fpr.PLAN_TYPE_ID,
14064                  -4, fpr.PLAN_TYPE_ID,
14065                      -1)             =  decode(fpr.PLAN_VERSION_ID,
14066                                                -3, wbs_hdr.PLAN_TYPE_ID,
14067                                                -4, wbs_hdr.PLAN_TYPE_ID,
14068                                                    -1)                 and
14069           decode(wbs_hdr.WP_FLAG,
14070                  'N', decode(fpr.PLAN_VERSION_ID,
14071                              -1, 'Y',
14072                              -2, 'Y',
14073                              -3, 'Y',
14074                              -4, 'Y',
14075                                  decode(fpr.RBS_AGGR_LEVEL
14076                                           || '_' || wbs_hdr.CB_FLAG
14077                                           || '_' || wbs_hdr.CO_FLAG,
14078                                         'L_Y_Y', 'Y',
14079                                         'L_N_Y', 'Y',
14080                                         'L_Y_N', 'Y',
14081                                                  'N')),
14082                       'Y')           =  'Y'                            and
14083           prg.SUP_PROJECT_ID         =  sup_wbs_hdr.PROJECT_ID     (+) and
14084           prg.SUP_ID                 =  sup_wbs_hdr.WBS_VERSION_ID (+) and
14085           'Y'                        =  sup_wbs_hdr.WP_FLAG        (+) and
14086           wbs_hdr.PROJECT_ID         =  sub_ver.PROJECT_ID         (+) and
14087           wbs_hdr.WBS_VERSION_ID     =  sub_ver.ELEMENT_VERSION_ID (+) and
14088           'STRUCTURE_PUBLISHED'      =  sub_ver.STATUS_CODE        (+) and
14089           sup_wbs_hdr.PROJECT_ID     =  sup_ver.PROJECT_ID         (+) and
14090           sup_wbs_hdr.WBS_VERSION_ID =  sup_ver.ELEMENT_VERSION_ID (+) and
14091           'STRUCTURE_PUBLISHED'      =  sup_ver.STATUS_CODE        (+) and
14092           wbs_hdr.CB_FLAG            =  fin_plan.CB                (+) and
14093           wbs_hdr.CO_FLAG            =  fin_plan.CO                (+)
14094         union all
14095         select /*+ ordered */
14096                -- get structure level amounts from interim
14097           decode(pjp1.RBS_AGGR_LEVEL,
14098                  'L', 'DO_NOT_ROLLUP',
14099                       'WBS')                          STRUCT_TYPE,
14100           to_char(null)                               LINE_TYPE,
14101           prg.SUP_PROJECT_ID,
14102           prg.SUP_ID,
14103           prg.SUP_EMT_ID,
14104           prg.SUB_EMT_ID,
14105           prg.SUB_ROLLUP_ID,
14106           'PJP1'                                      LINE_SOURCE,
14107           decode(pjp1.PLAN_VERSION_ID,
14108                  -1, prg.SUB_ID,
14109                  -3, prg.SUB_ID,
14110                  -4, prg.SUB_ID,
14111                      decode(fin_plan.PLAN_VERSION_ID,
14112                             null, null,
14113                                   prg.SUB_ID))        SUB_ID,
14114           decode(pjp1.PLAN_VERSION_ID,
14115                  -1, 'N',
14116                  -3, 'N',
14117                  -4, 'N',
14118                      decode(fin_plan.PLAN_VERSION_ID,
14119                             null, null,
14120                                   'N'))               SUP_WP_FLAG,
14121           decode(pjp1.PLAN_VERSION_ID,
14122                  -1, pjp1.PLAN_VERSION_ID,
14123                  -3, pjp1.PLAN_VERSION_ID,
14124                  -4, pjp1.PLAN_VERSION_ID,
14125                      decode(fin_plan.PLAN_VERSION_ID,
14126                             null, null,
14127                                   fin_plan.PLAN_VERSION_ID)
14128                 )                                     SUB_PLAN_VERSION_ID,
14129           decode(pjp1.PLAN_VERSION_ID,
14130                  -1, pjp1.PLAN_TYPE_ID,
14131                  -3, pjp1.PLAN_TYPE_ID,
14132                  -4, pjp1.PLAN_TYPE_ID,
14133                      decode(fin_plan.PLAN_VERSION_ID,
14134                             null, null,
14135                                   pjp1.PLAN_TYPE_ID)) SUB_PLAN_TYPE_ID,
14136           pjp1.TIME_ID,
14137           pjp1.PERIOD_TYPE_ID,
14138           pjp1.CALENDAR_TYPE,
14139           pjp1.RBS_AGGR_LEVEL,
14140           pjp1.CURR_RECORD_TYPE_ID,
14141           pjp1.CURRENCY_CODE,
14142           pjp1.RBS_ELEMENT_ID,
14143           pjp1.RBS_VERSION_ID,
14144           decode(wbs_hdr.WP_FLAG,
14145                  'N', decode(wbs_hdr.PLAN_VERSION_ID,
14146                              -1, pjp1.PLAN_VERSION_ID,
14147                                  fin_plan.PLAN_VERSION_ID),
14148                       sup_wbs_hdr.PLAN_VERSION_ID)    PLAN_VERSION_ID,
14149           decode(wbs_hdr.WP_FLAG,
14150                  'N', pjp1.PLAN_TYPE_ID,
14151                       sup_wbs_hdr.PLAN_TYPE_ID)       PLAN_TYPE_ID,
14152           pjp1.PLAN_TYPE_CODE,
14153           decode(wbs_hdr.WP_FLAG
14154                    || '_' || sup_wbs_hdr.WP_FLAG
14155                    || '_' || sub_ver.STATUS_CODE
14156                    || '_' || sup_ver.STATUS_CODE,
14157                  'Y_Y__', to_number(null),
14158                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14159                  pjp1.RAW_COST)                       RAW_COST,
14160           decode(wbs_hdr.WP_FLAG
14161                    || '_' || sup_wbs_hdr.WP_FLAG
14162                    || '_' || sub_ver.STATUS_CODE
14163                    || '_' || sup_ver.STATUS_CODE,
14164                  'Y_Y__', to_number(null),
14165                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14166                  pjp1.BRDN_COST)                      BRDN_COST,
14167           decode(wbs_hdr.WP_FLAG
14168                    || '_' || sup_wbs_hdr.WP_FLAG
14169                    || '_' || sub_ver.STATUS_CODE
14170                    || '_' || sup_ver.STATUS_CODE,
14171                  'Y_Y__', to_number(null),
14172                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14173                  pjp1.REVENUE)                        REVENUE,
14174           decode(wbs_hdr.WP_FLAG
14175                    || '_' || sup_wbs_hdr.WP_FLAG
14176                    || '_' || sub_ver.STATUS_CODE
14177                    || '_' || sup_ver.STATUS_CODE,
14178                  'Y_Y__', to_number(null),
14179                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14180                  pjp1.BILL_RAW_COST)                  BILL_RAW_COST,
14181           decode(wbs_hdr.WP_FLAG
14182                    || '_' || sup_wbs_hdr.WP_FLAG
14183                    || '_' || sub_ver.STATUS_CODE
14184                    || '_' || sup_ver.STATUS_CODE,
14185                  'Y_Y__', to_number(null),
14186                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14187                  pjp1.BILL_BRDN_COST)                 BILL_BRDN_COST,
14188           decode(wbs_hdr.WP_FLAG
14189                    || '_' || sup_wbs_hdr.WP_FLAG
14190                    || '_' || sub_ver.STATUS_CODE
14191                    || '_' || sup_ver.STATUS_CODE,
14192                  'Y_Y__', to_number(null),
14193                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14194                  pjp1.BILL_LABOR_RAW_COST)            BILL_LABOR_RAW_COST,
14195           decode(wbs_hdr.WP_FLAG
14196                    || '_' || sup_wbs_hdr.WP_FLAG
14197                    || '_' || sub_ver.STATUS_CODE
14198                    || '_' || sup_ver.STATUS_CODE,
14199                  'Y_Y__', to_number(null),
14200                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14201                  pjp1.BILL_LABOR_BRDN_COST)           BILL_LABOR_BRDN_COST,
14202           decode(wbs_hdr.WP_FLAG
14203                    || '_' || sup_wbs_hdr.WP_FLAG
14204                    || '_' || sub_ver.STATUS_CODE
14205                    || '_' || sup_ver.STATUS_CODE,
14206                  'Y_Y__', to_number(null),
14207                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14208                  pjp1.BILL_LABOR_HRS)                 BILL_LABOR_HRS,
14209           decode(wbs_hdr.WP_FLAG
14210                    || '_' || sup_wbs_hdr.WP_FLAG
14211                    || '_' || sub_ver.STATUS_CODE
14212                    || '_' || sup_ver.STATUS_CODE,
14213                  'Y_Y__', to_number(null),
14214                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14215                  pjp1.EQUIPMENT_RAW_COST)             EQUIPMENT_RAW_COST,
14216           decode(wbs_hdr.WP_FLAG
14217                    || '_' || sup_wbs_hdr.WP_FLAG
14218                    || '_' || sub_ver.STATUS_CODE
14219                    || '_' || sup_ver.STATUS_CODE,
14220                  'Y_Y__', to_number(null),
14221                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14222                  pjp1.EQUIPMENT_BRDN_COST)            EQUIPMENT_BRDN_COST,
14223           decode(wbs_hdr.WP_FLAG
14224                    || '_' || sup_wbs_hdr.WP_FLAG
14225                    || '_' || sub_ver.STATUS_CODE
14226                    || '_' || sup_ver.STATUS_CODE,
14227                  'Y_Y__', to_number(null),
14228                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14229                  pjp1.CAPITALIZABLE_RAW_COST)         CAPITALIZABLE_RAW_COST,
14230           decode(wbs_hdr.WP_FLAG
14231                    || '_' || sup_wbs_hdr.WP_FLAG
14232                    || '_' || sub_ver.STATUS_CODE
14233                    || '_' || sup_ver.STATUS_CODE,
14234                  'Y_Y__', to_number(null),
14235                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14236                  pjp1.CAPITALIZABLE_BRDN_COST)        CAPITALIZABLE_BRDN_COST,
14237           decode(wbs_hdr.WP_FLAG
14238                    || '_' || sup_wbs_hdr.WP_FLAG
14239                    || '_' || sub_ver.STATUS_CODE
14240                    || '_' || sup_ver.STATUS_CODE,
14241                  'Y_Y__', to_number(null),
14242                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14243                  pjp1.LABOR_RAW_COST)                 LABOR_RAW_COST,
14244           decode(wbs_hdr.WP_FLAG
14245                    || '_' || sup_wbs_hdr.WP_FLAG
14246                    || '_' || sub_ver.STATUS_CODE
14247                    || '_' || sup_ver.STATUS_CODE,
14248                  'Y_Y__', to_number(null),
14249                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14250                  pjp1.LABOR_BRDN_COST)                LABOR_BRDN_COST,
14251           decode(wbs_hdr.WP_FLAG
14252                    || '_' || sup_wbs_hdr.WP_FLAG
14253                    || '_' || sub_ver.STATUS_CODE
14254                    || '_' || sup_ver.STATUS_CODE,
14255                  'Y_Y__', to_number(null),
14256                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14257                  pjp1.LABOR_HRS)                      LABOR_HRS,
14258           decode(wbs_hdr.WP_FLAG
14259                    || '_' || sup_wbs_hdr.WP_FLAG
14260                    || '_' || sub_ver.STATUS_CODE
14261                    || '_' || sup_ver.STATUS_CODE,
14262                  'Y_Y__', to_number(null),
14263                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14264                  pjp1.LABOR_REVENUE)                  LABOR_REVENUE,
14265           decode(wbs_hdr.WP_FLAG
14266                    || '_' || sup_wbs_hdr.WP_FLAG
14267                    || '_' || sub_ver.STATUS_CODE
14268                    || '_' || sup_ver.STATUS_CODE,
14269                  'Y_Y__', to_number(null),
14270                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14271                  pjp1.EQUIPMENT_HOURS)                EQUIPMENT_HOURS,
14272           decode(wbs_hdr.WP_FLAG
14273                    || '_' || sup_wbs_hdr.WP_FLAG
14274                    || '_' || sub_ver.STATUS_CODE
14275                    || '_' || sup_ver.STATUS_CODE,
14276                  'Y_Y__', to_number(null),
14277                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14278                  pjp1.BILLABLE_EQUIPMENT_HOURS)       BILLABLE_EQUIPMENT_HOURS,
14279           decode(wbs_hdr.WP_FLAG
14280                    || '_' || sup_wbs_hdr.WP_FLAG
14281                    || '_' || sub_ver.STATUS_CODE
14282                    || '_' || sup_ver.STATUS_CODE,
14283                  'Y_Y__', to_number(null),
14284                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14285                  pjp1.SUP_INV_COMMITTED_COST)         SUP_INV_COMMITTED_COST,
14286           decode(wbs_hdr.WP_FLAG
14287                    || '_' || sup_wbs_hdr.WP_FLAG
14288                    || '_' || sub_ver.STATUS_CODE
14289                    || '_' || sup_ver.STATUS_CODE,
14290                  'Y_Y__', to_number(null),
14291                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14292                  pjp1.PO_COMMITTED_COST)              PO_COMMITTED_COST,
14293           decode(wbs_hdr.WP_FLAG
14294                    || '_' || sup_wbs_hdr.WP_FLAG
14295                    || '_' || sub_ver.STATUS_CODE
14296                    || '_' || sup_ver.STATUS_CODE,
14297                  'Y_Y__', to_number(null),
14298                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14299                  pjp1.PR_COMMITTED_COST)              PR_COMMITTED_COST,
14300           decode(wbs_hdr.WP_FLAG
14301                    || '_' || sup_wbs_hdr.WP_FLAG
14302                    || '_' || sub_ver.STATUS_CODE
14303                    || '_' || sup_ver.STATUS_CODE,
14304                  'Y_Y__', to_number(null),
14305                  'Y_Y__STRUCTURE_PUBLISHED', to_number(null),
14306                  pjp1.OTH_COMMITTED_COST)             OTH_COMMITTED_COST,
14307           decode(wbs_hdr.WP_FLAG
14308                    || '_' || sup_wbs_hdr.WP_FLAG
14309                    || '_' || sup_ver.STATUS_CODE,
14310                  'Y_Y_', to_number(null),
14311                  pjp1.ACT_LABOR_HRS)                  ACT_LABOR_HRS,
14312           decode(wbs_hdr.WP_FLAG
14313                    || '_' || sup_wbs_hdr.WP_FLAG
14314                    || '_' || sup_ver.STATUS_CODE,
14315                  'Y_Y_', to_number(null),
14316                  pjp1.ACT_EQUIP_HRS)                  ACT_EQUIP_HRS,
14317           decode(wbs_hdr.WP_FLAG
14318                    || '_' || sup_wbs_hdr.WP_FLAG
14319                    || '_' || sup_ver.STATUS_CODE,
14320                  'Y_Y_', to_number(null),
14321                  pjp1.ACT_LABOR_BRDN_COST)            ACT_LABOR_BRDN_COST,
14322           decode(wbs_hdr.WP_FLAG
14323                    || '_' || sup_wbs_hdr.WP_FLAG
14324                    || '_' || sup_ver.STATUS_CODE,
14325                  'Y_Y_', to_number(null),
14326                  pjp1.ACT_EQUIP_BRDN_COST)            ACT_EQUIP_BRDN_COST,
14327           decode(wbs_hdr.WP_FLAG
14328                    || '_' || sup_wbs_hdr.WP_FLAG
14329                    || '_' || sup_ver.STATUS_CODE,
14330                  'Y_Y_', to_number(null),
14331                  pjp1.ACT_BRDN_COST)                  ACT_BRDN_COST,
14332           decode(wbs_hdr.WP_FLAG
14333                    || '_' || sup_wbs_hdr.WP_FLAG
14334                    || '_' || sup_ver.STATUS_CODE,
14335                  'Y_Y_', to_number(null),
14336                  pjp1.ACT_RAW_COST)                   ACT_RAW_COST,
14337           decode(wbs_hdr.WP_FLAG
14338                    || '_' || sup_wbs_hdr.WP_FLAG
14339                    || '_' || sup_ver.STATUS_CODE,
14340                  'Y_Y_', to_number(null),
14341                  pjp1.ACT_REVENUE)                    ACT_REVENUE,
14342           decode(wbs_hdr.WP_FLAG
14343                    || '_' || sup_wbs_hdr.WP_FLAG
14344                    || '_' || sup_ver.STATUS_CODE,
14345                  'Y_Y_', to_number(null),
14346                  pjp1.ACT_LABOR_RAW_COST)             ACT_LABOR_RAW_COST,
14347           decode(wbs_hdr.WP_FLAG
14348                    || '_' || sup_wbs_hdr.WP_FLAG
14349                    || '_' || sup_ver.STATUS_CODE,
14350                  'Y_Y_', to_number(null),
14351                  pjp1.ACT_EQUIP_RAW_COST)             ACT_EQUIP_RAW_COST,
14352           decode(wbs_hdr.WP_FLAG
14353                    || '_' || sup_wbs_hdr.WP_FLAG
14354                    || '_' || sup_ver.STATUS_CODE,
14355                  'Y_Y_', to_number(null),
14356                  pjp1.ETC_LABOR_HRS)                  ETC_LABOR_HRS,
14357           decode(wbs_hdr.WP_FLAG
14358                    || '_' || sup_wbs_hdr.WP_FLAG
14359                    || '_' || sup_ver.STATUS_CODE,
14360                  'Y_Y_', to_number(null),
14361                  pjp1.ETC_EQUIP_HRS)                  ETC_EQUIP_HRS,
14362           decode(wbs_hdr.WP_FLAG
14363                    || '_' || sup_wbs_hdr.WP_FLAG
14364                    || '_' || sup_ver.STATUS_CODE,
14365                  'Y_Y_', to_number(null),
14366                  pjp1.ETC_LABOR_BRDN_COST)            ETC_LABOR_BRDN_COST,
14367           decode(wbs_hdr.WP_FLAG
14368                    || '_' || sup_wbs_hdr.WP_FLAG
14369                    || '_' || sup_ver.STATUS_CODE,
14370                  'Y_Y_', to_number(null),
14371                  pjp1.ETC_EQUIP_BRDN_COST)            ETC_EQUIP_BRDN_COST,
14372           decode(wbs_hdr.WP_FLAG
14373                    || '_' || sup_wbs_hdr.WP_FLAG
14374                    || '_' || sup_ver.STATUS_CODE,
14375                  'Y_Y_', to_number(null),
14376                  pjp1.ETC_BRDN_COST)                  ETC_BRDN_COST,
14377           decode(wbs_hdr.WP_FLAG
14378                    || '_' || sup_wbs_hdr.WP_FLAG
14379                    || '_' || sup_ver.STATUS_CODE,
14380                  'Y_Y_', to_number(null),
14381                  pjp1.ETC_RAW_COST)                   ETC_RAW_COST,
14382           decode(wbs_hdr.WP_FLAG
14383                    || '_' || sup_wbs_hdr.WP_FLAG
14384                    || '_' || sup_ver.STATUS_CODE,
14385                  'Y_Y_', to_number(null),
14386                  pjp1.ETC_LABOR_RAW_COST)             ETC_LABOR_RAW_COST,
14387           decode(wbs_hdr.WP_FLAG
14388                    || '_' || sup_wbs_hdr.WP_FLAG
14389                    || '_' || sup_ver.STATUS_CODE,
14390                  'Y_Y_', to_number(null),
14391                  pjp1.ETC_EQUIP_RAW_COST)             ETC_EQUIP_RAW_COST,
14392           pjp1.CUSTOM1,
14393           pjp1.CUSTOM2,
14394           pjp1.CUSTOM3,
14395           pjp1.CUSTOM4,
14396           pjp1.CUSTOM5,
14397           pjp1.CUSTOM6,
14398           pjp1.CUSTOM7,
14399           pjp1.CUSTOM8,
14400           pjp1.CUSTOM9,
14401           pjp1.CUSTOM10,
14402           pjp1.CUSTOM11,
14403           pjp1.CUSTOM12,
14404           pjp1.CUSTOM13,
14405           pjp1.CUSTOM14,
14406           pjp1.CUSTOM15
14407         from
14408           PJI_FP_AGGR_PJP1           pjp1,
14409           PJI_PJP_WBS_HEADER         wbs_hdr,
14410           PA_PROJ_ELEMENTS           prj_emt,
14411           PA_XBS_DENORM              prg,
14412           PJI_XBS_DENORM_DELTA       prg_delta,
14413           PJI_PJP_WBS_HEADER         sup_wbs_hdr,
14414           PA_PROJ_ELEM_VER_STRUCTURE sub_ver,
14415           PA_PROJ_ELEM_VER_STRUCTURE sup_ver,
14416           (
14417             select 'Y' CB, 'N' CO, -3 PLAN_VERSION_ID
14418             from DUAL union all
14419             select 'N' CB, 'Y' CO, -4 PLAN_VERSION_ID
14420             from DUAL union all
14421             select 'Y' CB, 'Y' CO, -3 PLAN_VERSION_ID
14422             from DUAL union all
14423             select 'Y' CB, 'Y' CO, -4 PLAN_VERSION_ID
14424             from DUAL
14425           ) fin_plan
14426         where
14427           prg.STRUCT_TYPE            =  'PRG'                           and
14428           prg.SUP_LEVEL              =  l_level                         and
14429           nvl(prg.SUB_ROLLUP_ID,
14430               prg.SUP_EMT_ID)        <> prg.SUP_EMT_ID                  and
14431           p_worker_id                =  prg_delta.WORKER_ID         (+) and
14432           prg.STRUCT_TYPE            =  prg_delta.STRUCT_TYPE       (+) and
14433           prg.SUP_PROJECT_ID         =  prg_delta.SUP_PROJECT_ID    (+) and
14434           prg.SUP_LEVEL              =  prg_delta.SUP_LEVEL         (+) and
14435           prg.SUP_ID                 =  prg_delta.SUP_ID            (+) and
14436           prg.SUB_LEVEL              =  prg_delta.SUB_LEVEL         (+) and
14437           prg.SUB_ID                 =  prg_delta.SUB_ID            (+) and
14438           prg.RELATIONSHIP_TYPE      =  prg_delta.RELATIONSHIP_TYPE (+) and
14439           1                          =  prg_delta.SIGN              (+) and
14440           (prg_delta.SUP_PROJECT_ID is not null or
14441            (prg_delta.SUP_PROJECT_ID is null and
14442             pjp1.RECORD_TYPE = 'P'))                                    and
14443           pjp1.WORKER_ID             =  p_worker_id                     and
14444           pjp1.PRG_LEVEL             in (0, prg.SUB_LEVEL)              and
14445           pjp1.PROJECT_ID            =  prj_emt.PROJECT_ID              and
14446           (((pjp1.RBS_AGGR_LEVEL,
14447              pjp1.WBS_ROLLUP_FLAG,
14448              pjp1.PRG_ROLLUP_FLAG) in (('T', 'Y', 'Y'),
14449                                        ('T', 'Y', 'N'),
14450                                        ('T', 'N', 'Y'),
14451                                        ('T', 'N', 'N'),
14452                                        ('L', 'N', 'N')) and
14453              pjp1.PROJECT_ELEMENT_ID = prg.SUB_EMT_ID) or
14454            ((pjp1.RBS_AGGR_LEVEL,
14455              pjp1.WBS_ROLLUP_FLAG,
14456              pjp1.PRG_ROLLUP_FLAG) in (('L', 'N', 'Y'),
14457                                        ('L', 'N', 'N')) and
14458              pjp1.PROJECT_ELEMENT_ID <> prg.SUB_EMT_ID))                and
14459           decode(pjp1.PLAN_VERSION_ID,
14460                  -1, 'LF',
14461                  -2, 'LF',
14462                  -3, 'LF',
14463                  -4, 'LF',
14464                      decode(wbs_hdr.WP_FLAG,
14465                             'N', 'LF',
14466                               'LW')) =  prg.RELATIONSHIP_TYPE           and
14467           prg.STRUCT_VERSION_ID      is null                            and
14468           prj_emt.OBJECT_TYPE        =  'PA_STRUCTURES'                 and
14469           prj_emt.PROJ_ELEMENT_ID    =  prg.SUB_EMT_ID                  and
14470           wbs_hdr.PROJECT_ID         =  prj_emt.PROJECT_ID              and
14471           wbs_hdr.WBS_VERSION_ID     =  prg.SUB_ID                      and
14472           wbs_hdr.PROJECT_ID         =  pjp1.PROJECT_ID                 and
14473           wbs_hdr.PLAN_VERSION_ID    =  pjp1.PLAN_VERSION_ID            and
14474           wbs_hdr.PLAN_TYPE_CODE     =  pjp1.PLAN_TYPE_CODE             and
14475           decode(pjp1.PLAN_VERSION_ID,
14476                  -3, pjp1.PLAN_TYPE_ID,
14477                  -4, pjp1.PLAN_TYPE_ID,
14478                      -1)             =  decode(pjp1.PLAN_VERSION_ID,
14479                                                -3, wbs_hdr.PLAN_TYPE_ID,
14480                                                -4, wbs_hdr.PLAN_TYPE_ID,
14481                                                    -1)                  and
14482           decode(wbs_hdr.WP_FLAG,
14483                  'N', decode(pjp1.PLAN_VERSION_ID,
14484                              -1, 'Y',
14485                              -2, 'Y',
14486                              -3, 'Y',
14487                              -4, 'Y',
14488                                  decode(pjp1.RBS_AGGR_LEVEL
14489                                           || '_' || wbs_hdr.CB_FLAG
14490                                           || '_' || wbs_hdr.CO_FLAG,
14491                                         'L_Y_Y', 'Y',
14492                                         'L_N_Y', 'Y',
14493                                         'L_Y_N', 'Y',
14494                                                  'N')),
14495                       'Y')           =  'Y'                             and
14496           prg.SUP_PROJECT_ID         =  sup_wbs_hdr.PROJECT_ID      (+) and
14497           prg.SUP_ID                 =  sup_wbs_hdr.WBS_VERSION_ID  (+) and
14498           'Y'                        =  sup_wbs_hdr.WP_FLAG         (+) and
14499           wbs_hdr.PROJECT_ID         =  sub_ver.PROJECT_ID          (+) and
14500           wbs_hdr.WBS_VERSION_ID     =  sub_ver.ELEMENT_VERSION_ID  (+) and
14501           'STRUCTURE_PUBLISHED'      =  sub_ver.STATUS_CODE         (+) and
14502           sup_wbs_hdr.PROJECT_ID     =  sup_ver.PROJECT_ID          (+) and
14503           sup_wbs_hdr.WBS_VERSION_ID =  sup_ver.ELEMENT_VERSION_ID  (+) and
14504           'STRUCTURE_PUBLISHED'      =  sup_ver.STATUS_CODE         (+) and
14505           wbs_hdr.CB_FLAG            =  fin_plan.CB                 (+) and
14506           wbs_hdr.CO_FLAG            =  fin_plan.CO                 (+)
14507         )                          pjp,
14508         PJI_PJP_PROJ_BATCH_MAP     map,
14509         PA_PROJ_WORKPLAN_ATTR      sup_wpa,
14510         PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
14511         PA_XBS_DENORM              wbs,
14512         (
14513           select 1     WBS_SUP_LEVEL,
14514                  'PRJ' INVERT_ID
14515           from   DUAL
14516           union all
14517           select 1     WBS_SUP_LEVEL,
14518                  'WBS' INVERT_ID
14519           from   DUAL
14520         ) top_slice
14521       where
14522         map.WORKER_ID           = p_worker_id                         and
14523         map.PROJECT_ID          = pjp.SUP_PROJECT_ID                  and
14524         pjp.SUP_EMT_ID          = sup_wpa.PROJ_ELEMENT_ID             and
14525         pjp.SUP_PROJECT_ID      = sup_fin_ver.PROJECT_ID          (+) and
14526         pjp.SUP_ID              = sup_fin_ver.ELEMENT_VERSION_ID  (+) and
14527         'STRUCTURE_WORKING'     = sup_fin_ver.STATUS_CODE         (+) and
14528         (pjp.SUP_WP_FLAG is null or
14529          (pjp.SUP_WP_FLAG is not null and
14530           (sup_fin_ver.PROJECT_ID is not null or
14531            sup_wpa.WP_ENABLE_VERSION_FLAG = 'N')))                    and
14532         'WBS'                   = wbs.STRUCT_TYPE                 (+) and
14533         pjp.STRUCT_TYPE         = wbs.STRUCT_TYPE                 (+) and
14534         pjp.SUP_PROJECT_ID      = wbs.SUP_PROJECT_ID              (+) and
14535         pjp.SUP_ID              = wbs.STRUCT_VERSION_ID           (+) and
14536         pjp.SUB_ROLLUP_ID       = wbs.SUB_EMT_ID                  (+) and
14537         wbs.SUP_LEVEL           = top_slice.WBS_SUP_LEVEL         (+)
14538       group by
14539         pjp.LINE_TYPE,
14540         pjp.SUP_PROJECT_ID,
14541         map.PROJECT_ORG_ID,
14542         map.PROJECT_ORGANIZATION_ID,
14543         decode(pjp.STRUCT_TYPE,
14544                'DO_NOT_ROLLUP', pjp.SUB_ROLLUP_ID,
14545                                 decode(top_slice.INVERT_ID,
14546                                        'PRJ', pjp.SUP_EMT_ID, wbs.SUP_EMT_ID)
14547               ),
14548         pjp.TIME_ID,
14549         pjp.PERIOD_TYPE_ID,
14550         pjp.CALENDAR_TYPE,
14551         pjp.RBS_AGGR_LEVEL,
14552         decode(pjp.STRUCT_TYPE,
14553                'DO_NOT_ROLLUP', 'N',
14554                                 decode(top_slice.INVERT_ID,
14555                                        'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
14556                                                           wbs.SUP_EMT_ID,
14557                                                           'N', 'Y'))
14558               ),
14559         pjp.CURR_RECORD_TYPE_ID,
14560         pjp.CURRENCY_CODE,
14561         pjp.RBS_ELEMENT_ID,
14562         pjp.RBS_VERSION_ID,
14563         pjp.PLAN_VERSION_ID,
14564         pjp.PLAN_TYPE_ID,
14565         pjp.PLAN_TYPE_CODE;
14566 
14567       update PJI_SYSTEM_PRC_STATUS
14568       set    STEP_STATUS = 'C',
14569              END_DATE = sysdate
14570       where  PROCESS_NAME = l_process and
14571              STEP_SEQ = l_level_seq;
14572 
14573       commit;
14574 
14575       select
14576         nvl(to_number(min(STEP_SEQ)), 0)
14577       into
14578         l_level_seq
14579       from
14580         PJI_SYSTEM_PRC_STATUS
14581       where
14582         PROCESS_NAME = l_process and
14583         STEP_NAME like 'ROLLUP_FPR_PRG%' and
14584         STEP_STATUS is null;
14585 
14586       if (l_level_seq = 0) then
14587         l_level := 0;
14588       else
14589         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
14590       end if;
14591 
14592     end loop;
14593 
14594     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_PRG(p_worker_id);');
14595 
14596     commit;
14597 
14598   end ROLLUP_FPR_PRG;
14599 
14600 
14601   -- -----------------------------------------------------
14602   -- procedure ROLLUP_ACR_PRG
14603   --
14604   --   History
14605   --   19-MAR-2004  SVERMETT  Created
14606   --
14607   -- Internal PJP Summarization API.
14608   --
14609   -- -----------------------------------------------------
14610   procedure ROLLUP_ACR_PRG (p_worker_id in number) is
14611 
14612     l_process         varchar2(30);
14613     l_prg_exists      varchar2(25);
14614     l_extraction_type varchar2(30);
14615     l_level           number;
14616     l_max_level       number;
14617     l_step_seq        number;
14618     l_level_seq       number;
14619     l_count           number;
14620 
14621   begin
14622 
14623     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
14624 
14625     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);')) then
14626       return;
14627     end if;
14628 
14629     l_prg_exists := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
14630                     (l_process, 'PROGRAM_EXISTS');
14631 
14632     if (l_prg_exists = 'N') then
14633       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process,
14634         'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);');
14635       commit;
14636       return;
14637     end if;
14638 
14639     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
14640 
14641     -- allow recovery after each level is processed
14642 
14643     select
14644       STEP_SEQ
14645     into
14646       l_step_seq
14647     from
14648       PJI_SYSTEM_PRC_STATUS
14649     where
14650       PROCESS_NAME = l_process and
14651       STEP_NAME = 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);';
14652 
14653     select
14654       count(*)
14655     into
14656       l_count
14657     from
14658       PJI_SYSTEM_PRC_STATUS
14659     where
14660       PROCESS_NAME = l_process and
14661       STEP_NAME like 'ROLLUP_ACR_PRG%';
14662 
14663     if (l_count = 0) then
14664 
14665       select
14666          nvl(max(den.SUP_LEVEL), 0)
14667       into
14668         l_level
14669       from
14670         PJI_XBS_DENORM_DELTA den
14671       where
14672         den.WORKER_ID = p_worker_id and
14673         den.STRUCT_TYPE = 'PRG';
14674 
14675       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
14676                                              'MAX_PROGRAM_LEVEL',
14677                                              l_level);
14678 
14679       insert into PJI_SYSTEM_PRC_STATUS
14680       (
14681         PROCESS_NAME,
14682         STEP_SEQ,
14683         STEP_STATUS,
14684         STEP_NAME,
14685         START_DATE,
14686         END_DATE
14687       )
14688       select
14689         l_process                              PROCESS_NAME,
14690         to_char(l_step_seq + SUP_LEVEL / 1000) STEP_SEQ,
14691         null                                   STEP_STATUS,
14692         'ROLLUP_ACR_PRG - level ' ||
14693           to_char(l_level - SUP_LEVEL + 1)     STEP_NAME,
14694         null                                   START_DATE,
14695         null                                   END_DATE
14696       from
14697       (
14698         select
14699           SUP_LEVEL
14700         from
14701           PJI_XBS_DENORM_DELTA
14702         where
14703           worker_id = p_worker_id and
14704           STRUCT_TYPE = 'PRG'
14705         union all
14706         select
14707           SUP_LEVEL
14708         from
14709           PA_XBS_DENORM den,
14710           PJI_PJP_PROJ_BATCH_MAP map
14711         where
14712           map.WORKER_ID      = p_worker_id    and
14713           den.STRUCT_TYPE    = 'PRG'          and
14714           den.SUP_PROJECT_ID = map.PROJECT_ID
14715       )
14716       where
14717         exists
14718         (
14719         select
14720           1
14721         from
14722           PJI_XBS_DENORM_DELTA
14723         where
14724           WORKER_ID = p_worker_id and
14725           ROWNUM = 1
14726         )
14727       group by
14728         SUP_LEVEL
14729       order by
14730         SUP_LEVEL desc;
14731 
14732     end if;
14733 
14734     l_max_level := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER
14735                    (l_process, 'MAX_PROGRAM_LEVEL');
14736 
14737     select
14738       nvl(to_number(min(STEP_SEQ)), 0)
14739     into
14740       l_level_seq
14741     from
14742       PJI_SYSTEM_PRC_STATUS
14743     where
14744       PROCESS_NAME = l_process and
14745       STEP_NAME like 'ROLLUP_ACR_PRG%' and
14746       STEP_STATUS is null;
14747 
14748     if (l_level_seq = 0) then
14749       l_level := 0;
14750     else
14751       l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
14752     end if;
14753 
14754     while (l_level > 0) loop
14755 
14756       update PJI_SYSTEM_PRC_STATUS
14757       set    START_DATE = sysdate
14758       where  PROCESS_NAME = l_process and
14759              STEP_SEQ = l_level_seq;
14760 
14761       -- rollup project hiearchy
14762 
14763       insert into PJI_AC_AGGR_PJP1 pjp1_i
14764       (
14765         WORKER_ID,
14766         RECORD_TYPE,
14767         PRG_LEVEL,
14768         PROJECT_ID,
14769         PROJECT_ORG_ID,
14770         PROJECT_ORGANIZATION_ID,
14771         PROJECT_ELEMENT_ID,
14772         TIME_ID,
14773         PERIOD_TYPE_ID,
14774         CALENDAR_TYPE,
14775         WBS_ROLLUP_FLAG,
14776         PRG_ROLLUP_FLAG,
14777         CURR_RECORD_TYPE_ID,
14778         CURRENCY_CODE,
14779         REVENUE,
14780         INITIAL_FUNDING_AMOUNT,
14781         INITIAL_FUNDING_COUNT,
14782         ADDITIONAL_FUNDING_AMOUNT,
14783         ADDITIONAL_FUNDING_COUNT,
14784         CANCELLED_FUNDING_AMOUNT,
14785         CANCELLED_FUNDING_COUNT,
14786         FUNDING_ADJUSTMENT_AMOUNT,
14787         FUNDING_ADJUSTMENT_COUNT,
14788         REVENUE_WRITEOFF,
14789         AR_INVOICE_AMOUNT,
14790         AR_INVOICE_COUNT,
14791         AR_CASH_APPLIED_AMOUNT,
14792         AR_INVOICE_WRITE_OFF_AMOUNT,
14793         AR_INVOICE_WRITEOFF_COUNT,
14794         AR_CREDIT_MEMO_AMOUNT,
14795         AR_CREDIT_MEMO_COUNT,
14796         UNBILLED_RECEIVABLES,
14797         UNEARNED_REVENUE,
14798         AR_UNAPPR_INVOICE_AMOUNT,
14799         AR_UNAPPR_INVOICE_COUNT,
14800         AR_APPR_INVOICE_AMOUNT,
14801         AR_APPR_INVOICE_COUNT,
14802         AR_AMOUNT_DUE,
14803         AR_COUNT_DUE,
14804         AR_AMOUNT_OVERDUE,
14805         AR_COUNT_OVERDUE,
14806         CUSTOM1,
14807         CUSTOM2,
14808         CUSTOM3,
14809         CUSTOM4,
14810         CUSTOM5,
14811         CUSTOM6,
14812         CUSTOM7,
14813         CUSTOM8,
14814         CUSTOM9,
14815         CUSTOM10,
14816         CUSTOM11,
14817         CUSTOM12,
14818         CUSTOM13,
14819         CUSTOM14,
14820         CUSTOM15
14821       )
14822       select /*+ no_merge(pjp) */
14823         p_worker_id                                WORKER_ID,
14824         'P'                                        RECORD_TYPE,
14825         l_level                                    PRG_LEVEL,
14826         pjp.SUP_PROJECT_ID                         PROJECT_ID,
14827         map.PROJECT_ORG_ID,
14828         map.PROJECT_ORGANIZATION_ID,
14829         decode(top_slice.INVERT_ID,
14830                'PRJ', pjp.SUP_EMT_ID,
14831                wbs.SUP_EMT_ID)                     PROJECT_ELEMENT_ID,
14832         pjp.TIME_ID,
14833         pjp.PERIOD_TYPE_ID,
14834         pjp.CALENDAR_TYPE,
14835         decode(top_slice.INVERT_ID,
14836                'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
14837                                   wbs.SUP_EMT_ID,
14838                                   'N', 'Y'))       WBS_ROLLUP_FLAG,
14839         'Y'                                        PRG_ROLLUP_FLAG,
14840         pjp.CURR_RECORD_TYPE_ID,
14841         pjp.CURRENCY_CODE,
14842         sum(pjp.REVENUE)                           REVENUE,
14843         sum(pjp.INITIAL_FUNDING_AMOUNT)            INITIAL_FUNDING_AMOUNT,
14844         sum(pjp.INITIAL_FUNDING_COUNT)             INITIAL_FUNDING_COUNT,
14845         sum(pjp.ADDITIONAL_FUNDING_AMOUNT)         ADDITIONAL_FUNDING_AMOUNT,
14846         sum(pjp.ADDITIONAL_FUNDING_COUNT)          ADDITIONAL_FUNDING_COUNT,
14847         sum(pjp.CANCELLED_FUNDING_AMOUNT)          CANCELLED_FUNDING_AMOUNT,
14848         sum(pjp.CANCELLED_FUNDING_COUNT)           CANCELLED_FUNDING_COUNT,
14849         sum(pjp.FUNDING_ADJUSTMENT_AMOUNT)         FUNDING_ADJUSTMENT_AMOUNT,
14850         sum(pjp.FUNDING_ADJUSTMENT_COUNT)          FUNDING_ADJUSTMENT_COUNT,
14851         sum(pjp.REVENUE_WRITEOFF)                  REVENUE_WRITEOFF,
14852         sum(pjp.AR_INVOICE_AMOUNT)                 AR_INVOICE_AMOUNT,
14853         sum(pjp.AR_INVOICE_COUNT)                  AR_INVOICE_COUNT,
14854         sum(pjp.AR_CASH_APPLIED_AMOUNT)            AR_CASH_APPLIED_AMOUNT,
14855         sum(pjp.AR_INVOICE_WRITE_OFF_AMOUNT)       AR_INVOICE_WRITE_OFF_AMOUNT,
14856         sum(pjp.AR_INVOICE_WRITEOFF_COUNT)         AR_INVOICE_WRITEOFF_COUNT,
14857         sum(pjp.AR_CREDIT_MEMO_AMOUNT)             AR_CREDIT_MEMO_AMOUNT,
14858         sum(pjp.AR_CREDIT_MEMO_COUNT)              AR_CREDIT_MEMO_COUNT,
14859         sum(pjp.UNBILLED_RECEIVABLES)              UNBILLED_RECEIVABLES,
14860         sum(pjp.UNEARNED_REVENUE)                  UNEARNED_REVENUE,
14861         sum(pjp.AR_UNAPPR_INVOICE_AMOUNT)          AR_UNAPPR_INVOICE_AMOUNT,
14862         sum(pjp.AR_UNAPPR_INVOICE_COUNT)           AR_UNAPPR_INVOICE_COUNT,
14863         sum(pjp.AR_APPR_INVOICE_AMOUNT)            AR_APPR_INVOICE_AMOUNT,
14864         sum(pjp.AR_APPR_INVOICE_COUNT)             AR_APPR_INVOICE_COUNT,
14865         sum(pjp.AR_AMOUNT_DUE)                     AR_AMOUNT_DUE,
14866         sum(pjp.AR_COUNT_DUE)                      AR_COUNT_DUE,
14867         sum(pjp.AR_AMOUNT_OVERDUE)                 AR_AMOUNT_OVERDUE,
14868         sum(pjp.AR_COUNT_OVERDUE)                  AR_COUNT_OVERDUE,
14869         sum(pjp.CUSTOM1)                           CUSTOM1,
14870         sum(pjp.CUSTOM2)                           CUSTOM2,
14871         sum(pjp.CUSTOM3)                           CUSTOM3,
14872         sum(pjp.CUSTOM4)                           CUSTOM4,
14873         sum(pjp.CUSTOM5)                           CUSTOM5,
14874         sum(pjp.CUSTOM6)                           CUSTOM6,
14875         sum(pjp.CUSTOM7)                           CUSTOM7,
14876         sum(pjp.CUSTOM8)                           CUSTOM8,
14877         sum(pjp.CUSTOM9)                           CUSTOM9,
14878         sum(pjp.CUSTOM10)                          CUSTOM10,
14879         sum(pjp.CUSTOM11)                          CUSTOM11,
14880         sum(pjp.CUSTOM12)                          CUSTOM12,
14881         sum(pjp.CUSTOM13)                          CUSTOM13,
14882         sum(pjp.CUSTOM14)                          CUSTOM14,
14883         sum(pjp.CUSTOM15)                          CUSTOM15
14884       from
14885         (
14886         select /*+ ordered index(acr PJI_AC_XBS_ACCUM_F_N1) */
14887                -- get structure level amounts from Reporting Lines
14888           prg.SUP_PROJECT_ID,
14889           prg.SUP_ID,
14890           prg.SUP_EMT_ID,
14891           prg.SUB_EMT_ID,
14892           prg.SUB_ROLLUP_ID,
14893           'ACR'                                    LINE_SOURCE,
14894           prg.SUB_ID,
14895           acr.TIME_ID,
14896           acr.PERIOD_TYPE_ID,
14897           acr.CALENDAR_TYPE,
14898           acr.CURR_RECORD_TYPE_ID,
14899           acr.CURRENCY_CODE,
14900           prg.SIGN * acr.REVENUE                   REVENUE,
14901           prg.SIGN * acr.INITIAL_FUNDING_AMOUNT    INITIAL_FUNDING_AMOUNT,
14902           prg.SIGN * acr.INITIAL_FUNDING_COUNT     INITIAL_FUNDING_COUNT,
14903           prg.SIGN * acr.ADDITIONAL_FUNDING_AMOUNT ADDITIONAL_FUNDING_AMOUNT,
14904           prg.SIGN * acr.ADDITIONAL_FUNDING_COUNT  ADDITIONAL_FUNDING_COUNT,
14905           prg.SIGN * acr.CANCELLED_FUNDING_AMOUNT  CANCELLED_FUNDING_AMOUNT,
14906           prg.SIGN * acr.CANCELLED_FUNDING_COUNT   CANCELLED_FUNDING_COUNT,
14907           prg.SIGN * acr.FUNDING_ADJUSTMENT_AMOUNT FUNDING_ADJUSTMENT_AMOUNT,
14908           prg.SIGN * acr.FUNDING_ADJUSTMENT_COUNT  FUNDING_ADJUSTMENT_COUNT,
14909           prg.SIGN * acr.REVENUE_WRITEOFF          REVENUE_WRITEOFF,
14910           prg.SIGN * acr.AR_INVOICE_AMOUNT         AR_INVOICE_AMOUNT,
14911           prg.SIGN * acr.AR_INVOICE_COUNT          AR_INVOICE_COUNT,
14912           prg.SIGN * acr.AR_CASH_APPLIED_AMOUNT    AR_CASH_APPLIED_AMOUNT,
14913           prg.SIGN *
14914             acr.AR_INVOICE_WRITE_OFF_AMOUNT        AR_INVOICE_WRITE_OFF_AMOUNT,
14915           prg.SIGN * acr.AR_INVOICE_WRITEOFF_COUNT AR_INVOICE_WRITEOFF_COUNT,
14916           prg.SIGN * acr.AR_CREDIT_MEMO_AMOUNT     AR_CREDIT_MEMO_AMOUNT,
14917           prg.SIGN * acr.AR_CREDIT_MEMO_COUNT      AR_CREDIT_MEMO_COUNT,
14918           prg.SIGN * acr.UNBILLED_RECEIVABLES      UNBILLED_RECEIVABLES,
14919           prg.SIGN * acr.UNEARNED_REVENUE          UNEARNED_REVENUE,
14920           prg.SIGN * acr.AR_UNAPPR_INVOICE_AMOUNT  AR_UNAPPR_INVOICE_AMOUNT,
14921           prg.SIGN * acr.AR_UNAPPR_INVOICE_COUNT   AR_UNAPPR_INVOICE_COUNT,
14922           prg.SIGN * acr.AR_APPR_INVOICE_AMOUNT    AR_APPR_INVOICE_AMOUNT,
14923           prg.SIGN * acr.AR_APPR_INVOICE_COUNT     AR_APPR_INVOICE_COUNT,
14924           prg.SIGN * acr.AR_AMOUNT_DUE             AR_AMOUNT_DUE,
14925           prg.SIGN * acr.AR_COUNT_DUE              AR_COUNT_DUE,
14926           prg.SIGN * acr.AR_AMOUNT_OVERDUE         AR_AMOUNT_OVERDUE,
14927           prg.SIGN * acr.AR_COUNT_OVERDUE          AR_COUNT_OVERDUE,
14928           prg.SIGN * acr.CUSTOM1                   CUSTOM1,
14929           prg.SIGN * acr.CUSTOM2                   CUSTOM2,
14930           prg.SIGN * acr.CUSTOM3                   CUSTOM3,
14931           prg.SIGN * acr.CUSTOM4                   CUSTOM4,
14932           prg.SIGN * acr.CUSTOM5                   CUSTOM5,
14933           prg.SIGN * acr.CUSTOM6                   CUSTOM6,
14934           prg.SIGN * acr.CUSTOM7                   CUSTOM7,
14935           prg.SIGN * acr.CUSTOM8                   CUSTOM8,
14936           prg.SIGN * acr.CUSTOM9                   CUSTOM9,
14937           prg.SIGN * acr.CUSTOM10                  CUSTOM10,
14938           prg.SIGN * acr.CUSTOM11                  CUSTOM11,
14939           prg.SIGN * acr.CUSTOM12                  CUSTOM12,
14940           prg.SIGN * acr.CUSTOM13                  CUSTOM13,
14941           prg.SIGN * acr.CUSTOM14                  CUSTOM14,
14942           prg.SIGN * acr.CUSTOM15                  CUSTOM15
14943         from
14944           PJI_XBS_DENORM_DELTA prg,
14945           PA_PROJ_ELEMENTS     prj_emt,
14946           PJI_PJP_WBS_HEADER   wbs_hdr,
14947           PJI_AC_XBS_ACCUM_F   acr
14948         where
14949           prg.WORKER_ID           =  p_worker_id        and
14950           prg.STRUCT_TYPE         =  'PRG'              and
14951           prg.RELATIONSHIP_TYPE   =  'LF'               and
14952           prg.SUP_LEVEL           =  l_level            and
14953           nvl(prg.SUB_ROLLUP_ID,
14954               prg.SUP_EMT_ID)     <> prg.SUP_EMT_ID     and
14955           acr.WBS_ROLLUP_FLAG     in ('Y', 'N')         and
14956           acr.PRG_ROLLUP_FLAG     in ('Y', 'N')         and
14957           acr.PROJECT_ID          =  prj_emt.PROJECT_ID and
14958           acr.PROJECT_ELEMENT_ID  =  prg.SUB_EMT_ID     and
14959           prj_emt.PROJ_ELEMENT_ID =  prg.SUB_EMT_ID     and
14960           wbs_hdr.PROJECT_ID      =  prj_emt.PROJECT_ID and
14961           wbs_hdr.PLAN_VERSION_ID =  -1
14962         union all
14963         select /*+ ordered */
14964                -- get program rollup amounts
14965           prg.SUP_PROJECT_ID,
14966           prg.SUP_ID,
14967           prg.SUP_EMT_ID,
14968           prg.SUB_EMT_ID,
14969           prg.SUB_ROLLUP_ID,
14970           'PJP1'                                   LINE_SOURCE,
14971           prg.SUB_ID,
14972           pjp1.TIME_ID,
14973           pjp1.PERIOD_TYPE_ID,
14974           pjp1.CALENDAR_TYPE,
14975           pjp1.CURR_RECORD_TYPE_ID,
14976           pjp1.CURRENCY_CODE,
14977           pjp1.REVENUE,
14978           pjp1.INITIAL_FUNDING_AMOUNT,
14979           pjp1.INITIAL_FUNDING_COUNT,
14980           pjp1.ADDITIONAL_FUNDING_AMOUNT,
14981           pjp1.ADDITIONAL_FUNDING_COUNT,
14982           pjp1.CANCELLED_FUNDING_AMOUNT,
14983           pjp1.CANCELLED_FUNDING_COUNT,
14984           pjp1.FUNDING_ADJUSTMENT_AMOUNT,
14985           pjp1.FUNDING_ADJUSTMENT_COUNT,
14986           pjp1.REVENUE_WRITEOFF,
14987           pjp1.AR_INVOICE_AMOUNT,
14988           pjp1.AR_INVOICE_COUNT,
14989           pjp1.AR_CASH_APPLIED_AMOUNT,
14990           pjp1.AR_INVOICE_WRITE_OFF_AMOUNT,
14991           pjp1.AR_INVOICE_WRITEOFF_COUNT,
14992           pjp1.AR_CREDIT_MEMO_AMOUNT,
14993           pjp1.AR_CREDIT_MEMO_COUNT,
14994           pjp1.UNBILLED_RECEIVABLES,
14995           pjp1.UNEARNED_REVENUE,
14996           pjp1.AR_UNAPPR_INVOICE_AMOUNT,
14997           pjp1.AR_UNAPPR_INVOICE_COUNT,
14998           pjp1.AR_APPR_INVOICE_AMOUNT,
14999           pjp1.AR_APPR_INVOICE_COUNT,
15000           pjp1.AR_AMOUNT_DUE,
15001           pjp1.AR_COUNT_DUE,
15002           pjp1.AR_AMOUNT_OVERDUE,
15003           pjp1.AR_COUNT_OVERDUE,
15004           pjp1.CUSTOM1,
15005           pjp1.CUSTOM2,
15006           pjp1.CUSTOM3,
15007           pjp1.CUSTOM4,
15008           pjp1.CUSTOM5,
15009           pjp1.CUSTOM6,
15010           pjp1.CUSTOM7,
15011           pjp1.CUSTOM8,
15012           pjp1.CUSTOM9,
15013           pjp1.CUSTOM10,
15014           pjp1.CUSTOM11,
15015           pjp1.CUSTOM12,
15016           pjp1.CUSTOM13,
15017           pjp1.CUSTOM14,
15018           pjp1.CUSTOM15
15019         from
15020           PJI_AC_AGGR_PJP1     pjp1,
15021           PJI_PJP_WBS_HEADER   wbs_hdr,
15022           PA_PROJ_ELEMENTS     prj_emt,
15023           PA_XBS_DENORM        prg,
15024           PJI_XBS_DENORM_DELTA prg_delta
15025         where
15026           prg.STRUCT_TYPE         =  'PRG'                           and
15027           prg.SUP_LEVEL           =  l_level                         and
15028           nvl(prg.SUB_ROLLUP_ID,
15029               prg.SUP_EMT_ID)     <> prg.SUP_EMT_ID                  and
15030           prg.RELATIONSHIP_TYPE   =  'LF'                            and
15031           p_worker_id             =  prg_delta.WORKER_ID         (+) and
15032           prg.STRUCT_TYPE         =  prg_delta.STRUCT_TYPE       (+) and
15033           prg.SUP_PROJECT_ID      =  prg_delta.SUP_PROJECT_ID    (+) and
15034           prg.SUP_LEVEL           =  prg_delta.SUP_LEVEL         (+) and
15035           prg.SUP_ID              =  prg_delta.SUP_ID            (+) and
15036           prg.SUB_LEVEL           =  prg_delta.SUB_LEVEL         (+) and
15037           prg.SUB_ID              =  prg_delta.SUB_ID            (+) and
15038           prg.RELATIONSHIP_TYPE   =  prg_delta.RELATIONSHIP_TYPE (+) and
15039           1                       =  prg_delta.SIGN              (+) and
15040           (prg_delta.SUP_PROJECT_ID is not null or
15041            (prg_delta.SUP_PROJECT_ID is null and
15042             pjp1.RECORD_TYPE = 'P'))                                 and
15043           pjp1.WORKER_ID          =  p_worker_id                     and
15044           pjp1.PRG_LEVEL          in (0, prg.SUB_LEVEL)              and
15045           pjp1.WBS_ROLLUP_FLAG    in ('Y', 'N')                      and
15046           pjp1.PRG_ROLLUP_FLAG    in ('Y', 'N')                      and
15047           pjp1.PROJECT_ID         =  prj_emt.PROJECT_ID              and
15048           pjp1.PROJECT_ELEMENT_ID =  prg.SUB_EMT_ID                  and
15049           prg.STRUCT_VERSION_ID   is null                            and
15050           prj_emt.OBJECT_TYPE     =  'PA_STRUCTURES'                 and
15051           prj_emt.PROJ_ELEMENT_ID =  prg.SUB_EMT_ID                  and
15052           wbs_hdr.PROJECT_ID      =  prj_emt.PROJECT_ID              and
15053           wbs_hdr.WBS_VERSION_ID  =  prg.SUB_ID                      and
15054           wbs_hdr.PROJECT_ID      =  pjp1.PROJECT_ID                 and
15055           wbs_hdr.PLAN_VERSION_ID =  -1
15056         )                          pjp,
15057         PJI_PJP_PROJ_BATCH_MAP     map,
15058         PA_PROJ_WORKPLAN_ATTR      sup_wpa,
15059         PA_PROJ_ELEM_VER_STRUCTURE sup_fin_ver,
15060         PA_XBS_DENORM              wbs,
15061         (
15062           select 1     WBS_SUP_LEVEL,
15063                  'PRJ' INVERT_ID
15064           from   DUAL
15065           union all
15066           select 1     WBS_SUP_LEVEL,
15067                  'WBS' INVERT_ID
15068           from   DUAL
15069         ) top_slice
15070       where
15071         map.WORKER_ID         =  p_worker_id                        and
15072         map.PROJECT_ID        = pjp.SUP_PROJECT_ID                  and
15073         pjp.SUP_EMT_ID        = sup_wpa.PROJ_ELEMENT_ID             and
15074         pjp.SUP_PROJECT_ID    = sup_fin_ver.PROJECT_ID          (+) and
15075         pjp.SUP_ID            = sup_fin_ver.ELEMENT_VERSION_ID  (+) and
15076         'STRUCTURE_WORKING'   = sup_fin_ver.STATUS_CODE         (+) and
15077         (sup_fin_ver.PROJECT_ID is not null or
15078          sup_wpa.WP_ENABLE_VERSION_FLAG = 'N')                      and
15079         wbs.STRUCT_TYPE       =  'WBS'                              and
15080         wbs.SUP_PROJECT_ID    =  map.PROJECT_ID                     and
15081         wbs.SUP_PROJECT_ID    =  pjp.SUP_PROJECT_ID                 and
15082         wbs.STRUCT_VERSION_ID =  pjp.SUP_ID                         and
15083         wbs.SUB_EMT_ID        =  pjp.SUB_ROLLUP_ID                  and
15084         wbs.SUP_LEVEL         =  top_slice.WBS_SUP_LEVEL        (+)
15085       group by
15086         pjp.SUP_PROJECT_ID,
15087         map.PROJECT_ORG_ID,
15088         map.PROJECT_ORGANIZATION_ID,
15089         decode(top_slice.INVERT_ID,
15090                'PRJ', pjp.SUP_EMT_ID,
15091                wbs.SUP_EMT_ID),
15092         pjp.TIME_ID,
15093         pjp.PERIOD_TYPE_ID,
15094         pjp.CALENDAR_TYPE,
15095         decode(top_slice.INVERT_ID,
15096                'PRJ', 'Y', decode(pjp.SUB_ROLLUP_ID,
15097                                   wbs.SUP_EMT_ID,
15098                                   'N', 'Y')),
15099         pjp.CURR_RECORD_TYPE_ID,
15100         pjp.CURRENCY_CODE;
15101 
15102       update PJI_SYSTEM_PRC_STATUS
15103       set    STEP_STATUS = 'C',
15104              END_DATE = sysdate
15105       where  PROCESS_NAME = l_process and
15106              STEP_SEQ = l_level_seq;
15107 
15108       commit;
15109 
15110       select
15111         nvl(to_number(min(STEP_SEQ)), 0)
15112       into
15113         l_level_seq
15114       from
15115         PJI_SYSTEM_PRC_STATUS
15116       where
15117         PROCESS_NAME = l_process and
15118         STEP_NAME like 'ROLLUP_ACR_PRG%' and
15119         STEP_STATUS is null;
15120 
15121       if (l_level_seq = 0) then
15122         l_level := 0;
15123       else
15124         l_level := l_max_level - ((l_level_seq - l_step_seq) * 1000) + 1;
15125       end if;
15126 
15127     end loop;
15128 
15129     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_PRG(p_worker_id);');
15130 
15131     commit;
15132 
15133   end ROLLUP_ACR_PRG;
15134 
15135 
15136   -- -----------------------------------------------------
15137   -- procedure ROLLUP_FPR_CAL_NONTP
15138   --
15139   --   History
15140   --   19-MAR-2004  SVERMETT  Created
15141   --
15142   -- Internal PJP Summarization API.
15143   --
15144   -- Called by RBS program
15145   --
15146   -- -----------------------------------------------------
15147   procedure ROLLUP_FPR_CAL_NONTP (p_worker_id in number) is
15148 
15149     l_process         varchar2(30);
15150     l_extraction_type varchar2(30);
15151 
15152     l_return_status   varchar2(255);
15153     l_msg_count       number;
15154     l_msg_data        varchar2(2000);
15155 
15156   begin
15157 
15158     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15159 
15160     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_NONTP(p_worker_id);')) then
15161       return;
15162     end if;
15163 
15164     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15165 
15166     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_NONTP_ROLLUP;
15167 
15168     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_NONTP(p_worker_id);');
15169 
15170     commit;
15171 
15172   end ROLLUP_FPR_CAL_NONTP;
15173 
15174 
15175   -- -----------------------------------------------------
15176   -- procedure ROLLUP_FPR_CAL_PA
15177   --
15178   --   History
15179   --   19-MAR-2004  SVERMETT  Created
15180   --
15181   -- Internal PJP Summarization API.
15182   --
15183   -- Called by RBS program
15184   --
15185   -- -----------------------------------------------------
15186   procedure ROLLUP_FPR_CAL_PA (p_worker_id in number) is
15187 
15188     l_process         varchar2(30);
15189     l_extraction_type varchar2(30);
15190 
15191     l_return_status   varchar2(255);
15192     l_msg_count       number;
15193     l_msg_data        varchar2(2000);
15194 
15195   begin
15196 
15197     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15198 
15199     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_PA(p_worker_id);')) then
15200       return;
15201     end if;
15202 
15203     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15204 
15205     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_PA_ROLLUP;
15206 
15207     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_PA(p_worker_id);');
15208 
15209     commit;
15210 
15211   end ROLLUP_FPR_CAL_PA;
15212 
15213 
15214   -- -----------------------------------------------------
15215   -- procedure ROLLUP_FPR_CAL_GL
15216   --
15217   --   History
15218   --   19-MAR-2004  SVERMETT  Created
15219   --
15220   -- Internal PJP Summarization API.
15221   --
15222   -- Called by RBS program
15223   --
15224   -- -----------------------------------------------------
15225   procedure ROLLUP_FPR_CAL_GL (p_worker_id in number) is
15226 
15227     l_process         varchar2(30);
15228     l_extraction_type varchar2(30);
15229 
15230     l_return_status   varchar2(255);
15231     l_msg_count       number;
15232     l_msg_data        varchar2(2000);
15233 
15234   begin
15235 
15236     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15237 
15238     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_GL(p_worker_id);')) then
15239       return;
15240     end if;
15241 
15242     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15243 
15244     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_GL_ROLLUP;
15245 
15246     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_GL(p_worker_id);');
15247 
15248     commit;
15249 
15250   end ROLLUP_FPR_CAL_GL;
15251 
15252 
15253   -- -----------------------------------------------------
15254   -- procedure ROLLUP_FPR_CAL_EN
15255   --
15256   --   History
15257   --   19-MAR-2004  SVERMETT  Created
15258   --
15259   -- Internal PJP Summarization API.
15260   --
15261   -- Called by RBS program
15262   --
15263   -- -----------------------------------------------------
15264   procedure ROLLUP_FPR_CAL_EN (p_worker_id in number) is
15265 
15266     l_process         varchar2(30);
15267     l_extraction_type varchar2(30);
15268 
15269     l_return_status   varchar2(255);
15270     l_msg_count       number;
15271     l_msg_data        varchar2(2000);
15272 
15273   begin
15274 
15275     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15276 
15277     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_EN(p_worker_id);')) then
15278       return;
15279     end if;
15280 
15281     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15282 
15283     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ENT_ROLLUP;
15284 
15285     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_EN(p_worker_id);');
15286 
15287     commit;
15288 
15289   end ROLLUP_FPR_CAL_EN;
15290 
15291 
15292   -- -----------------------------------------------------
15293   -- procedure ROLLUP_FPR_CAL_ALL
15294   --
15295   --   History
15296   --   19-MAR-2004  SVERMETT  Created
15297   --
15298   -- Internal PJP Summarization API.
15299   --
15300   -- Called by RBS program
15301   --
15302   -- -----------------------------------------------------
15303   procedure ROLLUP_FPR_CAL_ALL (p_worker_id in number) is
15304 
15305     l_process         varchar2(30);
15306     l_extraction_type varchar2(30);
15307 
15308     l_return_status   varchar2(255);
15309     l_msg_count       number;
15310     l_msg_data        varchar2(2000);
15311 
15312   begin
15313 
15314     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15315 
15316     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_ALL(p_worker_id);')) then
15317       return;
15318     end if;
15319 
15320     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15321 
15322     -- Changes done for bug 6381284
15323     --PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('G');
15324     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('C');
15325 
15326     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_CAL_ALL(p_worker_id);');
15327 
15328     commit;
15329 
15330   end ROLLUP_FPR_CAL_ALL;
15331 
15332 
15333   -- -----------------------------------------------------
15334   -- procedure ROLLUP_ACR_CAL_PA
15335   --
15336   --   History
15337   --   19-MAR-2004  SVERMETT  Created
15338   --
15339   -- Internal PJP Summarization API.
15340   --
15341   -- -----------------------------------------------------
15342   procedure ROLLUP_ACR_CAL_PA (p_worker_id in number) is
15343 
15344     l_process         varchar2(30);
15345     l_extraction_type varchar2(30);
15346 
15347     l_return_status   varchar2(255);
15348     l_msg_count       number;
15349     l_msg_data        varchar2(2000);
15350 
15351   begin
15352 
15353     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15354 
15355     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_PA(p_worker_id);')) then
15356       return;
15357     end if;
15358 
15359     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15360 
15361     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_PA_ROLLUP;
15362 
15363     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_PA(p_worker_id);');
15364 
15365     commit;
15366 
15367   end ROLLUP_ACR_CAL_PA;
15368 
15369 
15370   -- -----------------------------------------------------
15371   -- procedure ROLLUP_ACR_CAL_GL
15372   --
15373   --   History
15374   --   19-MAR-2004  SVERMETT  Created
15375   --
15376   -- Internal PJP Summarization API.
15377   --
15378   -- -----------------------------------------------------
15379   procedure ROLLUP_ACR_CAL_GL (p_worker_id in number) is
15380 
15381     l_process         varchar2(30);
15382     l_extraction_type varchar2(30);
15383 
15384     l_return_status   varchar2(255);
15385     l_msg_count       number;
15386     l_msg_data        varchar2(2000);
15387 
15388   begin
15389 
15390     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15391 
15392     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_GL(p_worker_id);')) then
15393       return;
15394     end if;
15395 
15396     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15397 
15398    PJI_FM_PLAN_CAL_RLPS.CREATE_AC_GL_ROLLUP;
15399 
15400     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_GL(p_worker_id);');
15401 
15402     commit;
15403 
15404   end ROLLUP_ACR_CAL_GL;
15405 
15406 
15407   -- -----------------------------------------------------
15408   -- procedure ROLLUP_ACR_CAL_EN
15409   --
15410   --   History
15411   --   19-MAR-2004  SVERMETT  Created
15412   --
15413   -- Internal PJP Summarization API.
15414   --
15415   -- -----------------------------------------------------
15416   procedure ROLLUP_ACR_CAL_EN (p_worker_id in number) is
15417 
15418     l_process         varchar2(30);
15419     l_extraction_type varchar2(30);
15420 
15421     l_return_status   varchar2(255);
15422     l_msg_count       number;
15423     l_msg_data        varchar2(2000);
15424 
15425   begin
15426 
15427     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15428 
15429     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_EN(p_worker_id);')) then
15430       return;
15431     end if;
15432 
15433     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15434 
15435     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_ENT_ROLLUP;
15436 
15437     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_EN(p_worker_id);');
15438 
15439     commit;
15440 
15441   end ROLLUP_ACR_CAL_EN;
15442 
15443 
15444   -- -----------------------------------------------------
15445   -- procedure ROLLUP_ACR_CAL_ALL
15446   --
15447   --   History
15448   --   19-MAR-2004  SVERMETT  Created
15449   --
15450   -- Internal PJP Summarization API.
15451   --
15452   -- -----------------------------------------------------
15453   procedure ROLLUP_ACR_CAL_ALL (p_worker_id in number) is
15454 
15455     l_process         varchar2(30);
15456     l_extraction_type varchar2(30);
15457 
15458     l_return_status   varchar2(255);
15459     l_msg_count       number;
15460     l_msg_data        varchar2(2000);
15461 
15462   begin
15463 
15464     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15465 
15466     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_ALL(p_worker_id);')) then
15467       return;
15468     end if;
15469 
15470     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15471 
15472     PJI_FM_PLAN_CAL_RLPS.CREATE_AC_ALL_T_PRI_ROLLUP('G');
15473 
15474     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_ACR_CAL_ALL(p_worker_id);');
15475 
15476     commit;
15477 
15478   end ROLLUP_ACR_CAL_ALL;
15479 
15480 
15481 
15482   -- -----------------------------------------------------
15483   -- procedure AGGREGATE_PLAN_DATA
15484   --
15485   --   History
15486   --   21-OCT-2004  SVERMETT  Created
15487   --
15488   -- Internal PJP Summarization API.
15489   --
15490   -- Called by RBS program
15491   --
15492   -- -----------------------------------------------------
15493   procedure AGGREGATE_PLAN_DATA (p_worker_id in number) is
15494 
15495     l_process         varchar2(30);
15496     l_extraction_type varchar2(30);
15497 
15498   begin
15499 
15500     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15501 
15502     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_PLAN_DATA(p_worker_id);')) then
15503       return;
15504     end if;
15505 
15506     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15507 
15508     IF (l_extraction_type IN ('PARTIAL', 'RBS', 'INCREMENTAL', 'FULL')) THEN
15509 
15510       insert into PJI_FP_AGGR_PJP1 pjp1_i
15511       (
15512         WORKER_ID,
15513         RECORD_TYPE,
15514         PRG_LEVEL,
15515         LINE_TYPE,
15516         PROJECT_ID,
15517         PROJECT_ORG_ID,
15518         PROJECT_ORGANIZATION_ID,
15519         PROJECT_ELEMENT_ID,
15520         TIME_ID,
15521         PERIOD_TYPE_ID,
15522         CALENDAR_TYPE,
15523         RBS_AGGR_LEVEL,
15524         WBS_ROLLUP_FLAG,
15525         PRG_ROLLUP_FLAG,
15526         CURR_RECORD_TYPE_ID,
15527         CURRENCY_CODE,
15528         RBS_ELEMENT_ID,
15529         RBS_VERSION_ID,
15530         PLAN_VERSION_ID,
15531         PLAN_TYPE_ID,
15532         PLAN_TYPE_CODE,
15533         RAW_COST,
15534         BRDN_COST,
15535         REVENUE,
15536         BILL_RAW_COST,
15537         BILL_BRDN_COST,
15538         BILL_LABOR_RAW_COST,
15539         BILL_LABOR_BRDN_COST,
15540         BILL_LABOR_HRS,
15541         EQUIPMENT_RAW_COST,
15542         EQUIPMENT_BRDN_COST,
15543         CAPITALIZABLE_RAW_COST,
15544         CAPITALIZABLE_BRDN_COST,
15545         LABOR_RAW_COST,
15546         LABOR_BRDN_COST,
15547         LABOR_HRS,
15548         LABOR_REVENUE,
15549         EQUIPMENT_HOURS,
15550         BILLABLE_EQUIPMENT_HOURS,
15551         SUP_INV_COMMITTED_COST,
15552         PO_COMMITTED_COST,
15553         PR_COMMITTED_COST,
15554         OTH_COMMITTED_COST,
15555         ACT_LABOR_HRS,
15556         ACT_EQUIP_HRS,
15557         ACT_LABOR_BRDN_COST,
15558         ACT_EQUIP_BRDN_COST,
15559         ACT_BRDN_COST,
15560         ACT_RAW_COST,
15561         ACT_REVENUE,
15562         ACT_LABOR_RAW_COST,
15563         ACT_EQUIP_RAW_COST,
15564         ETC_LABOR_HRS,
15565         ETC_EQUIP_HRS,
15566         ETC_LABOR_BRDN_COST,
15567         ETC_EQUIP_BRDN_COST,
15568         ETC_BRDN_COST,
15569         ETC_RAW_COST,
15570         ETC_LABOR_RAW_COST,
15571         ETC_EQUIP_RAW_COST,
15572         CUSTOM1,
15573         CUSTOM2,
15574         CUSTOM3,
15575         CUSTOM4,
15576         CUSTOM5,
15577         CUSTOM6,
15578         CUSTOM7,
15579         CUSTOM8,
15580         CUSTOM9,
15581         CUSTOM10,
15582         CUSTOM11,
15583         CUSTOM12,
15584         CUSTOM13,
15585         CUSTOM14,
15586         CUSTOM15
15587       )
15588       select
15589         pjp1.WORKER_ID,
15590         'A'                                 RECORD_TYPE,
15591         pjp1.PRG_LEVEL,
15592         'AGGR_PLAN'                         LINE_TYPE,
15593         pjp1.PROJECT_ID,
15594         pjp1.PROJECT_ORG_ID,
15595         pjp1.PROJECT_ORGANIZATION_ID,
15596         pjp1.PROJECT_ELEMENT_ID,
15597         pjp1.TIME_ID,
15598         pjp1.PERIOD_TYPE_ID,
15599         pjp1.CALENDAR_TYPE,
15600         pjp1.RBS_AGGR_LEVEL,
15601         pjp1.WBS_ROLLUP_FLAG,
15602         pjp1.PRG_ROLLUP_FLAG,
15603         pjp1.CURR_RECORD_TYPE_ID,
15604         pjp1.CURRENCY_CODE,
15605         pjp1.RBS_ELEMENT_ID,
15606         pjp1.RBS_VERSION_ID,
15607         pjp1.PLAN_VERSION_ID,
15608         pjp1.PLAN_TYPE_ID,
15609         pjp1.PLAN_TYPE_CODE,
15610         sum(pjp1.RAW_COST)                  RAW_COST,
15611         sum(pjp1.BRDN_COST)                 BRDN_COST,
15612         sum(pjp1.REVENUE)                   REVENUE,
15613         sum(pjp1.BILL_RAW_COST)             BILL_RAW_COST,
15614         sum(pjp1.BILL_BRDN_COST)            BILL_BRDN_COST,
15615         sum(pjp1.BILL_LABOR_RAW_COST)       BILL_LABOR_RAW_COST,
15616         sum(pjp1.BILL_LABOR_BRDN_COST)      BILL_LABOR_BRDN_COST,
15617         sum(pjp1.BILL_LABOR_HRS)            BILL_LABOR_HRS,
15618         sum(pjp1.EQUIPMENT_RAW_COST)        EQUIPMENT_RAW_COST,
15619         sum(pjp1.EQUIPMENT_BRDN_COST)       EQUIPMENT_BRDN_COST,
15620         sum(pjp1.CAPITALIZABLE_RAW_COST)    CAPITALIZABLE_RAW_COST,
15621         sum(pjp1.CAPITALIZABLE_BRDN_COST)   CAPITALIZABLE_BRDN_COST,
15622         sum(pjp1.LABOR_RAW_COST)            LABOR_RAW_COST,
15623         sum(pjp1.LABOR_BRDN_COST)           LABOR_BRDN_COST,
15624         sum(pjp1.LABOR_HRS)                 LABOR_HRS,
15625         sum(pjp1.LABOR_REVENUE)             LABOR_REVENUE,
15626         sum(pjp1.EQUIPMENT_HOURS)           EQUIPMENT_HOURS,
15627         sum(pjp1.BILLABLE_EQUIPMENT_HOURS)  BILLABLE_EQUIPMENT_HOURS,
15628         sum(pjp1.SUP_INV_COMMITTED_COST)    SUP_INV_COMMITTED_COST,
15629         sum(pjp1.PO_COMMITTED_COST)         PO_COMMITTED_COST,
15630         sum(pjp1.PR_COMMITTED_COST)         PR_COMMITTED_COST,
15631         sum(pjp1.OTH_COMMITTED_COST)        OTH_COMMITTED_COST,
15632         sum(pjp1.ACT_LABOR_HRS)             ACT_LABOR_HRS,
15633         sum(pjp1.ACT_EQUIP_HRS)             ACT_EQUIP_HRS,
15634         sum(pjp1.ACT_LABOR_BRDN_COST)       ACT_LABOR_BRDN_COST,
15635         sum(pjp1.ACT_EQUIP_BRDN_COST)       ACT_EQUIP_BRDN_COST,
15636         sum(pjp1.ACT_BRDN_COST)             ACT_BRDN_COST,
15637         sum(pjp1.ACT_RAW_COST)              ACT_RAW_COST,
15638         sum(pjp1.ACT_REVENUE)               ACT_REVENUE,
15639         sum(pjp1.ACT_LABOR_RAW_COST)        ACT_LABOR_RAW_COST,
15640         sum(pjp1.ACT_EQUIP_RAW_COST)        ACT_EQUIP_RAW_COST,
15641         sum(pjp1.ETC_LABOR_HRS)             ETC_LABOR_HRS,
15642         sum(pjp1.ETC_EQUIP_HRS)             ETC_EQUIP_HRS,
15643         sum(pjp1.ETC_LABOR_BRDN_COST)       ETC_LABOR_BRDN_COST,
15644         sum(pjp1.ETC_EQUIP_BRDN_COST)       ETC_EQUIP_BRDN_COST,
15645         sum(pjp1.ETC_BRDN_COST)             ETC_BRDN_COST,
15646         sum(pjp1.ETC_RAW_COST)              ETC_RAW_COST,
15647         sum(pjp1.ETC_LABOR_RAW_COST)        ETC_LABOR_RAW_COST,
15648         sum(pjp1.ETC_EQUIP_RAW_COST)        ETC_EQUIP_RAW_COST,
15649         sum(pjp1.CUSTOM1)                   CUSTOM1,
15650         sum(pjp1.CUSTOM2)                   CUSTOM2,
15651         sum(pjp1.CUSTOM3)                   CUSTOM3,
15652         sum(pjp1.CUSTOM4)                   CUSTOM4,
15653         sum(pjp1.CUSTOM5)                   CUSTOM5,
15654         sum(pjp1.CUSTOM6)                   CUSTOM6,
15655         sum(pjp1.CUSTOM7)                   CUSTOM7,
15656         sum(pjp1.CUSTOM8)                   CUSTOM8,
15657         sum(pjp1.CUSTOM9)                   CUSTOM9,
15658         sum(pjp1.CUSTOM10)                  CUSTOM10,
15659         sum(pjp1.CUSTOM11)                  CUSTOM11,
15660         sum(pjp1.CUSTOM12)                  CUSTOM12,
15661         sum(pjp1.CUSTOM13)                  CUSTOM13,
15662         sum(pjp1.CUSTOM14)                  CUSTOM14,
15663         sum(pjp1.CUSTOM15)                  CUSTOM15
15664       from
15665         PJI_FP_AGGR_PJP1 pjp1
15666       where
15667         pjp1.WORKER_ID = p_worker_id
15668       group by
15669         pjp1.WORKER_ID,
15670         pjp1.PRG_LEVEL,
15671         pjp1.PROJECT_ID,
15672         pjp1.PROJECT_ORG_ID,
15673         pjp1.PROJECT_ORGANIZATION_ID,
15674         pjp1.PROJECT_ELEMENT_ID,
15675         pjp1.TIME_ID,
15676         pjp1.PERIOD_TYPE_ID,
15677         pjp1.CALENDAR_TYPE,
15678         pjp1.RBS_AGGR_LEVEL,
15679         pjp1.WBS_ROLLUP_FLAG,
15680         pjp1.PRG_ROLLUP_FLAG,
15681         pjp1.CURR_RECORD_TYPE_ID,
15682         pjp1.CURRENCY_CODE,
15683         pjp1.RBS_ELEMENT_ID,
15684         pjp1.RBS_VERSION_ID,
15685         pjp1.PLAN_VERSION_ID,
15686         pjp1.PLAN_TYPE_ID,
15687         pjp1.PLAN_TYPE_CODE
15688       having not
15689         (nvl(sum(pjp1.RAW_COST), 0)                 = 0 and
15690          nvl(sum(pjp1.BRDN_COST), 0)                = 0 and
15691          nvl(sum(pjp1.REVENUE), 0)                  = 0 and
15692          nvl(sum(pjp1.BILL_RAW_COST), 0)            = 0 and
15693          nvl(sum(pjp1.BILL_BRDN_COST), 0)           = 0 and
15694          nvl(sum(pjp1.BILL_LABOR_RAW_COST), 0)      = 0 and
15695          nvl(sum(pjp1.BILL_LABOR_BRDN_COST), 0)     = 0 and
15696          nvl(sum(pjp1.BILL_LABOR_HRS), 0)           = 0 and
15697          nvl(sum(pjp1.EQUIPMENT_RAW_COST), 0)       = 0 and
15698          nvl(sum(pjp1.EQUIPMENT_BRDN_COST), 0)      = 0 and
15699          nvl(sum(pjp1.CAPITALIZABLE_RAW_COST), 0)   = 0 and
15700          nvl(sum(pjp1.CAPITALIZABLE_BRDN_COST), 0)  = 0 and
15701          nvl(sum(pjp1.LABOR_RAW_COST), 0)           = 0 and
15702          nvl(sum(pjp1.LABOR_BRDN_COST), 0)          = 0 and
15703          nvl(sum(pjp1.LABOR_HRS), 0)                = 0 and
15704          nvl(sum(pjp1.LABOR_REVENUE), 0)            = 0 and
15705          nvl(sum(pjp1.EQUIPMENT_HOURS), 0)          = 0 and
15706          nvl(sum(pjp1.BILLABLE_EQUIPMENT_HOURS), 0) = 0 and
15707          nvl(sum(pjp1.SUP_INV_COMMITTED_COST), 0)   = 0 and
15708          nvl(sum(pjp1.PO_COMMITTED_COST), 0)        = 0 and
15709          nvl(sum(pjp1.PR_COMMITTED_COST), 0)        = 0 and
15710          nvl(sum(pjp1.OTH_COMMITTED_COST), 0)       = 0 and
15711          nvl(sum(pjp1.ACT_LABOR_HRS), 0)            = 0 and
15712          nvl(sum(pjp1.ACT_EQUIP_HRS), 0)            = 0 and
15713          nvl(sum(pjp1.ACT_LABOR_BRDN_COST), 0)      = 0 and
15714          nvl(sum(pjp1.ACT_EQUIP_BRDN_COST), 0)      = 0 and
15715          nvl(sum(pjp1.ACT_BRDN_COST), 0)            = 0 and
15716          nvl(sum(pjp1.ACT_RAW_COST), 0)             = 0 and
15717          nvl(sum(pjp1.ACT_REVENUE), 0)              = 0 and
15718          nvl(sum(pjp1.ACT_LABOR_RAW_COST), 0)       = 0 and
15719          nvl(sum(pjp1.ACT_EQUIP_RAW_COST), 0)       = 0 and
15720          nvl(sum(pjp1.ETC_LABOR_HRS), 0)            = 0 and
15721          nvl(sum(pjp1.ETC_EQUIP_HRS), 0)            = 0 and
15722          nvl(sum(pjp1.ETC_LABOR_BRDN_COST), 0)      = 0 and
15723          nvl(sum(pjp1.ETC_EQUIP_BRDN_COST), 0)      = 0 and
15724          nvl(sum(pjp1.ETC_BRDN_COST), 0)            = 0 and
15725          nvl(sum(pjp1.ETC_RAW_COST), 0)             = 0 and
15726          nvl(sum(pjp1.ETC_LABOR_RAW_COST), 0)       = 0 and
15727          nvl(sum(pjp1.ETC_EQUIP_RAW_COST), 0)       = 0 and
15728          nvl(sum(pjp1.CUSTOM1), 0)                  = 0 and
15729          nvl(sum(pjp1.CUSTOM2), 0)                  = 0 and
15730          nvl(sum(pjp1.CUSTOM3), 0)                  = 0 and
15731          nvl(sum(pjp1.CUSTOM4), 0)                  = 0 and
15732          nvl(sum(pjp1.CUSTOM5), 0)                  = 0 and
15733          nvl(sum(pjp1.CUSTOM6), 0)                  = 0 and
15734          nvl(sum(pjp1.CUSTOM7), 0)                  = 0 and
15735          nvl(sum(pjp1.CUSTOM8), 0)                  = 0 and
15736          nvl(sum(pjp1.CUSTOM9), 0)                  = 0 and
15737          nvl(sum(pjp1.CUSTOM10), 0)                 = 0 and
15738          nvl(sum(pjp1.CUSTOM11), 0)                 = 0 and
15739          nvl(sum(pjp1.CUSTOM12), 0)                 = 0 and
15740          nvl(sum(pjp1.CUSTOM13), 0)                 = 0 and
15741          nvl(sum(pjp1.CUSTOM14), 0)                 = 0 and
15742          nvl(sum(pjp1.CUSTOM15), 0)                 = 0);
15743 
15744       insert into PJI_AC_AGGR_PJP1 pjp1_i
15745       (
15746         WORKER_ID,
15747         RECORD_TYPE,
15748         PRG_LEVEL,
15749         PROJECT_ID,
15750         PROJECT_ORG_ID,
15751         PROJECT_ORGANIZATION_ID,
15752         PROJECT_ELEMENT_ID,
15753         TIME_ID,
15754         PERIOD_TYPE_ID,
15755         CALENDAR_TYPE,
15756         WBS_ROLLUP_FLAG,
15757         PRG_ROLLUP_FLAG,
15758         CURR_RECORD_TYPE_ID,
15759         CURRENCY_CODE,
15760         REVENUE,
15761         INITIAL_FUNDING_AMOUNT,
15762         INITIAL_FUNDING_COUNT,
15763         ADDITIONAL_FUNDING_AMOUNT,
15764         ADDITIONAL_FUNDING_COUNT,
15765         CANCELLED_FUNDING_AMOUNT,
15766         CANCELLED_FUNDING_COUNT,
15767         FUNDING_ADJUSTMENT_AMOUNT,
15768         FUNDING_ADJUSTMENT_COUNT,
15769         REVENUE_WRITEOFF,
15770         AR_INVOICE_AMOUNT,
15771         AR_INVOICE_COUNT,
15772         AR_CASH_APPLIED_AMOUNT,
15773         AR_INVOICE_WRITE_OFF_AMOUNT,
15774         AR_INVOICE_WRITEOFF_COUNT,
15775         AR_CREDIT_MEMO_AMOUNT,
15776         AR_CREDIT_MEMO_COUNT,
15777         UNBILLED_RECEIVABLES,
15778         UNEARNED_REVENUE,
15779         AR_UNAPPR_INVOICE_AMOUNT,
15780         AR_UNAPPR_INVOICE_COUNT,
15781         AR_APPR_INVOICE_AMOUNT,
15782         AR_APPR_INVOICE_COUNT,
15783         AR_AMOUNT_DUE,
15784         AR_COUNT_DUE,
15785         AR_AMOUNT_OVERDUE,
15786         AR_COUNT_OVERDUE,
15787         CUSTOM1,
15788         CUSTOM2,
15789         CUSTOM3,
15790         CUSTOM4,
15791         CUSTOM5,
15792         CUSTOM6,
15793         CUSTOM7,
15794         CUSTOM8,
15795         CUSTOM9,
15796         CUSTOM10,
15797         CUSTOM11,
15798         CUSTOM12,
15799         CUSTOM13,
15800         CUSTOM14,
15801         CUSTOM15
15802       )
15803       select
15804         pjp1.WORKER_ID,
15805         'A'                                        RECORD_TYPE,
15806         pjp1.PRG_LEVEL,
15807         pjp1.PROJECT_ID,
15808         pjp1.PROJECT_ORG_ID,
15809         pjp1.PROJECT_ORGANIZATION_ID,
15810         pjp1.PROJECT_ELEMENT_ID,
15811         pjp1.TIME_ID,
15812         pjp1.PERIOD_TYPE_ID,
15813         pjp1.CALENDAR_TYPE,
15814         pjp1.WBS_ROLLUP_FLAG,
15815         pjp1.PRG_ROLLUP_FLAG,
15816         pjp1.CURR_RECORD_TYPE_ID,
15817         pjp1.CURRENCY_CODE,
15818         sum(pjp1.REVENUE)                          REVENUE,
15819         sum(pjp1.INITIAL_FUNDING_AMOUNT)           INITIAL_FUNDING_AMOUNT,
15820         sum(pjp1.INITIAL_FUNDING_COUNT)            INITIAL_FUNDING_COUNT,
15821         sum(pjp1.ADDITIONAL_FUNDING_AMOUNT)        ADDITIONAL_FUNDING_AMOUNT,
15822         sum(pjp1.ADDITIONAL_FUNDING_COUNT)         ADDITIONAL_FUNDING_COUNT,
15823         sum(pjp1.CANCELLED_FUNDING_AMOUNT)         CANCELLED_FUNDING_AMOUNT,
15824         sum(pjp1.CANCELLED_FUNDING_COUNT)          CANCELLED_FUNDING_COUNT,
15825         sum(pjp1.FUNDING_ADJUSTMENT_AMOUNT)        FUNDING_ADJUSTMENT_AMOUNT,
15826         sum(pjp1.FUNDING_ADJUSTMENT_COUNT)         FUNDING_ADJUSTMENT_COUNT,
15827         sum(pjp1.REVENUE_WRITEOFF)                 REVENUE_WRITEOFF,
15828         sum(pjp1.AR_INVOICE_AMOUNT)                AR_INVOICE_AMOUNT,
15829         sum(pjp1.AR_INVOICE_COUNT)                 AR_INVOICE_COUNT,
15830         sum(pjp1.AR_CASH_APPLIED_AMOUNT)           AR_CASH_APPLIED_AMOUNT,
15831         sum(pjp1.AR_INVOICE_WRITE_OFF_AMOUNT)      AR_INVOICE_WRITE_OFF_AMOUNT,
15832         sum(pjp1.AR_INVOICE_WRITEOFF_COUNT)        AR_INVOICE_WRITEOFF_COUNT,
15833         sum(pjp1.AR_CREDIT_MEMO_AMOUNT)            AR_CREDIT_MEMO_AMOUNT,
15834         sum(pjp1.AR_CREDIT_MEMO_COUNT)             AR_CREDIT_MEMO_COUNT,
15835         sum(pjp1.UNBILLED_RECEIVABLES)             UNBILLED_RECEIVABLES,
15836         sum(pjp1.UNEARNED_REVENUE)                 UNEARNED_REVENUE,
15837         sum(pjp1.AR_UNAPPR_INVOICE_AMOUNT)         AR_UNAPPR_INVOICE_AMOUNT,
15838         sum(pjp1.AR_UNAPPR_INVOICE_COUNT)          AR_UNAPPR_INVOICE_COUNT,
15839         sum(pjp1.AR_APPR_INVOICE_AMOUNT)           AR_APPR_INVOICE_AMOUNT,
15840         sum(pjp1.AR_APPR_INVOICE_COUNT)            AR_APPR_INVOICE_COUNT,
15841         sum(pjp1.AR_AMOUNT_DUE)                    AR_AMOUNT_DUE,
15842         sum(pjp1.AR_COUNT_DUE)                     AR_COUNT_DUE,
15843         sum(pjp1.AR_AMOUNT_OVERDUE)                AR_AMOUNT_OVERDUE,
15844         sum(pjp1.AR_COUNT_OVERDUE)                 AR_COUNT_OVERDUE,
15845         sum(pjp1.CUSTOM1)                          CUSTOM1,
15846         sum(pjp1.CUSTOM2)                          CUSTOM2,
15847         sum(pjp1.CUSTOM3)                          CUSTOM3,
15848         sum(pjp1.CUSTOM4)                          CUSTOM4,
15849         sum(pjp1.CUSTOM5)                          CUSTOM5,
15850         sum(pjp1.CUSTOM6)                          CUSTOM6,
15851         sum(pjp1.CUSTOM7)                          CUSTOM7,
15852         sum(pjp1.CUSTOM8)                          CUSTOM8,
15853         sum(pjp1.CUSTOM9)                          CUSTOM9,
15854         sum(pjp1.CUSTOM10)                         CUSTOM10,
15855         sum(pjp1.CUSTOM11)                         CUSTOM11,
15856         sum(pjp1.CUSTOM12)                         CUSTOM12,
15857         sum(pjp1.CUSTOM13)                         CUSTOM13,
15858         sum(pjp1.CUSTOM14)                         CUSTOM14,
15859         sum(pjp1.CUSTOM15)                         CUSTOM15
15860       from
15861         PJI_AC_AGGR_PJP1 pjp1
15862       where
15863         pjp1.WORKER_ID = p_worker_id
15864       group by
15865         pjp1.WORKER_ID,
15866         pjp1.PRG_LEVEL,
15867         pjp1.PROJECT_ID,
15868         pjp1.PROJECT_ORG_ID,
15869         pjp1.PROJECT_ORGANIZATION_ID,
15870         pjp1.PROJECT_ELEMENT_ID,
15871         pjp1.TIME_ID,
15872         pjp1.PERIOD_TYPE_ID,
15873         pjp1.CALENDAR_TYPE,
15874         pjp1.WBS_ROLLUP_FLAG,
15875         pjp1.PRG_ROLLUP_FLAG,
15876         pjp1.CURR_RECORD_TYPE_ID,
15877         pjp1.CURRENCY_CODE
15878       having not
15879         (nvl(sum(REVENUE), 0)                     = 0 and
15880          nvl(sum(INITIAL_FUNDING_AMOUNT), 0)      = 0 and
15881          nvl(sum(INITIAL_FUNDING_COUNT), 0)       = 0 and
15882          nvl(sum(ADDITIONAL_FUNDING_AMOUNT), 0)   = 0 and
15883          nvl(sum(ADDITIONAL_FUNDING_COUNT), 0)    = 0 and
15884          nvl(sum(CANCELLED_FUNDING_AMOUNT), 0)    = 0 and
15885          nvl(sum(CANCELLED_FUNDING_COUNT), 0)     = 0 and
15886          nvl(sum(FUNDING_ADJUSTMENT_AMOUNT), 0)   = 0 and
15887          nvl(sum(FUNDING_ADJUSTMENT_COUNT), 0)    = 0 and
15888          nvl(sum(REVENUE_WRITEOFF), 0)            = 0 and
15889          nvl(sum(AR_INVOICE_AMOUNT), 0)           = 0 and
15890          nvl(sum(AR_INVOICE_COUNT), 0)            = 0 and
15891          nvl(sum(AR_CASH_APPLIED_AMOUNT), 0)      = 0 and
15892          nvl(sum(AR_INVOICE_WRITE_OFF_AMOUNT), 0) = 0 and
15893          nvl(sum(AR_INVOICE_WRITEOFF_COUNT), 0)   = 0 and
15894          nvl(sum(AR_CREDIT_MEMO_AMOUNT), 0)       = 0 and
15895          nvl(sum(AR_CREDIT_MEMO_COUNT), 0)        = 0 and
15896          nvl(sum(UNBILLED_RECEIVABLES), 0)        = 0 and
15897          nvl(sum(UNEARNED_REVENUE), 0)            = 0 and
15898          nvl(sum(AR_UNAPPR_INVOICE_AMOUNT), 0)    = 0 and
15899          nvl(sum(AR_UNAPPR_INVOICE_COUNT), 0)     = 0 and
15900          nvl(sum(AR_APPR_INVOICE_AMOUNT), 0)      = 0 and
15901          nvl(sum(AR_APPR_INVOICE_COUNT), 0)       = 0 and
15902          nvl(sum(AR_AMOUNT_DUE), 0)               = 0 and
15903          nvl(sum(AR_COUNT_DUE), 0)                = 0 and
15904          nvl(sum(AR_AMOUNT_OVERDUE), 0)           = 0 and
15905          nvl(sum(AR_COUNT_OVERDUE), 0)            = 0 and
15906          nvl(sum(CUSTOM1), 0)                     = 0 and
15907          nvl(sum(CUSTOM2), 0)                     = 0 and
15908          nvl(sum(CUSTOM3), 0)                     = 0 and
15909          nvl(sum(CUSTOM4), 0)                     = 0 and
15910          nvl(sum(CUSTOM5), 0)                     = 0 and
15911          nvl(sum(CUSTOM6), 0)                     = 0 and
15912          nvl(sum(CUSTOM7), 0)                     = 0 and
15913          nvl(sum(CUSTOM8), 0)                     = 0 and
15914          nvl(sum(CUSTOM9), 0)                     = 0 and
15915          nvl(sum(CUSTOM10), 0)                    = 0 and
15916          nvl(sum(CUSTOM11), 0)                    = 0 and
15917          nvl(sum(CUSTOM12), 0)                    = 0 and
15918          nvl(sum(CUSTOM13), 0)                    = 0 and
15919          nvl(sum(CUSTOM14), 0)                    = 0 and
15920          nvl(sum(CUSTOM15), 0)                    = 0);
15921 
15922     end if;
15923 
15924     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.AGGREGATE_PLAN_DATA(p_worker_id);');
15925 
15926     commit;
15927 
15928   end AGGREGATE_PLAN_DATA;
15929 
15930 
15931   -- -----------------------------------------------------
15932   -- procedure PURGE_PLAN_DATA
15933   --
15934   --   History
15935   --   21-OCT-2004  SVERMETT  Created
15936   --
15937   -- Internal PJP Summarization API.
15938   --
15939   -- Called by RBS program
15940   --
15941   -- -----------------------------------------------------
15942   procedure PURGE_PLAN_DATA (p_worker_id in number) is
15943 
15944     l_process         varchar2(30);
15945     l_extraction_type varchar2(30);
15946 
15947   begin
15948 
15949     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
15950 
15951     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_PLAN_DATA(p_worker_id);')) then
15952       return;
15953     end if;
15954 
15955     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
15956 
15957     IF (l_extraction_type IN ('PARTIAL', 'RBS', 'INCREMENTAL', 'FULL')) THEN
15958 
15959       delete
15960       from   PJI_FP_AGGR_PJP1 pjp1
15961       where  pjp1.WORKER_ID = p_worker_id and
15962              nvl(pjp1.LINE_TYPE, 'X') <> 'AGGR_PLAN';
15963 
15964       delete
15965       from   PJI_AC_AGGR_PJP1 pjp1
15966       where  pjp1.WORKER_ID = p_worker_id and
15967              nvl(pjp1.RECORD_TYPE, 'X') <> 'A';
15968 
15969     end if;
15970 
15971     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PURGE_PLAN_DATA(p_worker_id);');
15972 
15973     commit;
15974 
15975   end PURGE_PLAN_DATA;
15976 
15977 
15978   -- -----------------------------------------------------
15979   -- procedure GET_FPR_ROWIDS
15980   --
15981   --   History
15982   --   19-MAR-2004  SVERMETT  Created
15983   --
15984   -- Internal PJP Summarization API.
15985   --
15986   -- Called by RBS program
15987   --
15988   -- -----------------------------------------------------
15989   procedure GET_FPR_ROWIDS (p_worker_id in number) is
15990 
15991     l_process         varchar2(30);
15992     l_extraction_type varchar2(30);
15993 
15994     l_return_status   varchar2(255);
15995     l_msg_count       number;
15996     l_msg_data        varchar2(2000);
15997 
15998   begin
15999 
16000     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16001 
16002     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_FPR_ROWIDS(p_worker_id);')) then
16003       return;
16004     end if;
16005 
16006     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16007 
16008     PJI_FM_PLAN_MAINT_PVT.GET_FP_ROW_IDS;
16009 
16010     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_FPR_ROWIDS(p_worker_id);');
16011 
16012     commit;
16013 
16014   end GET_FPR_ROWIDS;
16015 
16016 
16017   -- -----------------------------------------------------
16018   -- procedure UPDATE_FPR_ROWS
16019   --
16020   --   History
16021   --   19-MAR-2004  SVERMETT  Created
16022   --
16023   -- Internal PJP Summarization API.
16024   --
16025   -- Called by RBS program
16026   --
16027   -- -----------------------------------------------------
16028   procedure UPDATE_FPR_ROWS (p_worker_id in number) is
16029 
16030     l_process         varchar2(30);
16031     l_extraction_type varchar2(30);
16032 
16033     l_return_status   varchar2(255);
16034     l_msg_count       number;
16035     l_msg_data        varchar2(2000);
16036 
16037   begin
16038 
16039     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16040 
16041     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_FPR_ROWS(p_worker_id);')) then
16042       return;
16043     end if;
16044 
16045     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16046 
16047     PJI_FM_PLAN_MAINT_PVT.UPDATE_FP_ROWS;
16048 
16049     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_FPR_ROWS(p_worker_id);');
16050 
16051     commit;
16052 
16053   end UPDATE_FPR_ROWS;
16054 
16055 
16056   -- -----------------------------------------------------
16057   -- procedure INSERT_FPR_ROWS
16058   --
16059   --   History
16060   --   19-MAR-2004  SVERMETT  Created
16061   --
16062   -- Internal PJP Summarization API.
16063   --
16064   -- Called by RBS program
16065   --
16066   -- -----------------------------------------------------
16067   procedure INSERT_FPR_ROWS (p_worker_id in number) is
16068 
16069     l_process         varchar2(30);
16070     l_extraction_type varchar2(30);
16071 
16072     l_return_status   varchar2(255);
16073     l_msg_count       number;
16074     l_msg_data        varchar2(2000);
16075 
16076   begin
16077 
16078     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16079 
16080     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_FPR_ROWS(p_worker_id);')) then
16081       return;
16082     end if;
16083 
16084     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16085 
16086     PJI_FM_PLAN_MAINT_PVT.INSERT_FP_ROWS;
16087 
16088     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_FPR_ROWS(p_worker_id);');
16089 
16090     commit;
16091 
16092   end INSERT_FPR_ROWS;
16093 
16094 
16095   -- -----------------------------------------------------
16096   -- procedure CLEANUP_FPR_ROWID_TABLE
16097   --
16098   --   History
16099   --   19-MAR-2004  SVERMETT  Created
16100   --
16101   -- Internal PJP Summarization API.
16102   --
16103   -- Called by RBS program
16104   --
16105   -- -----------------------------------------------------
16106   procedure CLEANUP_FPR_ROWID_TABLE (p_worker_id in number) is
16107 
16108     l_process         varchar2(30);
16109     l_extraction_type varchar2(30);
16110 
16111     l_return_status   varchar2(255);
16112     l_msg_count       number;
16113     l_msg_data        varchar2(2000);
16114 
16115   begin
16116 
16117     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16118 
16119     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_FPR_ROWID_TABLE(p_worker_id);')) then
16120       return;
16121     end if;
16122 
16123     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16124 
16125     -- PJI_FM_PLAN_MAINT_PVT.CLEANUP_FP_RMAP_FPR;
16126 
16127     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_FPR_ROWID_TABLE(p_worker_id);');
16128 
16129     commit;
16130 
16131   end CLEANUP_FPR_ROWID_TABLE;
16132 
16133 
16134   -- -----------------------------------------------------
16135   -- procedure GET_ACR_ROWIDS
16136   --
16137   --   History
16138   --   19-MAR-2004  SVERMETT  Created
16139   --
16140   -- Internal PJP Summarization API.
16141   --
16142   -- -----------------------------------------------------
16143   procedure GET_ACR_ROWIDS (p_worker_id in number) is
16144 
16145     l_process         varchar2(30);
16146     l_extraction_type varchar2(30);
16147 
16148     l_return_status   varchar2(255);
16149     l_msg_count       number;
16150     l_msg_data        varchar2(2000);
16151 
16152   begin
16153 
16154     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16155 
16156     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_ACR_ROWIDS(p_worker_id);')) then
16157       return;
16158     end if;
16159 
16160     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16161 
16162     if (l_extraction_type = 'INCREMENTAL' or
16163         l_extraction_type = 'PARTIAL' or
16164         l_extraction_type = 'RBS') then
16165 
16166       PJI_FM_PLAN_MAINT_PVT.GET_AC_ROW_IDS;
16167 
16168     end if;
16169 
16170     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_ACR_ROWIDS(p_worker_id);');
16171 
16172     commit;
16173 
16174   end GET_ACR_ROWIDS;
16175 
16176 
16177   -- -----------------------------------------------------
16178   -- procedure UPDATE_ACR_ROWS
16179   --
16180   --   History
16181   --   19-MAR-2004  SVERMETT  Created
16182   --
16183   -- Internal PJP Summarization API.
16184   --
16185   -- -----------------------------------------------------
16186   procedure UPDATE_ACR_ROWS (p_worker_id in number) is
16187 
16188     l_process         varchar2(30);
16189     l_extraction_type varchar2(30);
16190 
16191     l_return_status   varchar2(255);
16192     l_msg_count       number;
16193     l_msg_data        varchar2(2000);
16194 
16195   begin
16196 
16197     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16198 
16199     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_ACR_ROWS(p_worker_id);')) then
16200       return;
16201     end if;
16202 
16203     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16204 
16205     if (l_extraction_type = 'INCREMENTAL' or
16206         l_extraction_type = 'PARTIAL' or
16207         l_extraction_type = 'RBS') then
16208 
16209       PJI_FM_PLAN_MAINT_PVT.UPDATE_AC_ROWS;
16210 
16211     end if;
16212 
16213     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_ACR_ROWS(p_worker_id);');
16214 
16215     commit;
16216 
16217   end UPDATE_ACR_ROWS;
16218 
16219 
16220   -- -----------------------------------------------------
16221   -- procedure INSERT_ACR_ROWS
16222   --
16223   --   History
16224   --   19-MAR-2004  SVERMETT  Created
16225   --
16226   -- Internal PJP Summarization API.
16227   --
16228   -- -----------------------------------------------------
16229   procedure INSERT_ACR_ROWS (p_worker_id in number) is
16230 
16231     l_process         varchar2(30);
16232     l_extraction_type varchar2(30);
16233 
16234     l_return_status   varchar2(255);
16235     l_msg_count       number;
16236     l_msg_data        varchar2(2000);
16237 
16238   begin
16239 
16240     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16241 
16242     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_ACR_ROWS(p_worker_id);')) then
16243       return;
16244     end if;
16245 
16246     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16247 
16248     if (l_extraction_type = 'FULL') then
16249 
16250       PJI_FM_PLAN_MAINT_PVT.INSERT_INTO_AC_FACT;
16251 
16252     elsif (l_extraction_type = 'INCREMENTAL' or
16253            l_extraction_type = 'PARTIAL' or
16254            l_extraction_type = 'RBS') then
16255 
16256       PJI_FM_PLAN_MAINT_PVT.INSERT_AC_ROWS;
16257 
16258     end if;
16259 
16260     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_ACR_ROWS(p_worker_id);');
16261 
16262     commit;
16263 
16264   end INSERT_ACR_ROWS;
16265 
16266 
16267   -- -----------------------------------------------------
16268   -- procedure CLEANUP_ACR_ROWID_TABLE
16269   --
16270   --   History
16271   --   19-MAR-2004  SVERMETT  Created
16272   --
16273   -- Internal PJP Summarization API.
16274   --
16275   -- -----------------------------------------------------
16276   procedure CLEANUP_ACR_ROWID_TABLE (p_worker_id in number) is
16277 
16278     l_process         varchar2(30);
16279     l_extraction_type varchar2(30);
16280 
16281     l_return_status   varchar2(255);
16282     l_msg_count       number;
16283     l_msg_data        varchar2(2000);
16284 
16285   begin
16286 
16287     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16288 
16289     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_ACR_ROWID_TABLE(p_worker_id);')) then
16290       return;
16291     end if;
16292 
16293     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16294 
16295     -- if (l_extraction_type = 'INCREMENTAL' or
16296     --     l_extraction_type = 'PARTIAL' or
16297     --     l_extraction_type = 'RBS') then
16298     --
16299     --   PJI_FM_PLAN_MAINT_PVT.CLEANUP_AC_RMAP_FPR;
16300     --
16301     -- end if;
16302 
16303     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP_ACR_ROWID_TABLE(p_worker_id);');
16304 
16305     commit;
16306 
16307   end CLEANUP_ACR_ROWID_TABLE;
16308 
16309 
16310   -- -----------------------------------------------------
16311   -- procedure UPDATE_XBS_DENORM
16312   --
16313   --   History
16314   --   19-MAR-2004  SVERMETT  Created
16315   --
16316   -- This API will be called for both online and bulk processing.
16317   --
16318   -- -----------------------------------------------------
16319   procedure UPDATE_XBS_DENORM (p_worker_id in number default null) is
16320 
16321     l_process           varchar2(30);
16322     l_extraction_type   varchar2(30);
16323 
16324     l_last_update_date  date;
16325     l_last_updated_by   number;
16326     l_creation_date     date;
16327     l_created_by        number;
16328     l_last_update_login number;
16329 
16330     l_count             number;
16331     l_wbs_version_id_tbl SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
16332 
16333   begin
16334 
16335     l_last_update_date  := sysdate;
16336     l_last_updated_by   := FND_GLOBAL.USER_ID;
16337     l_creation_date     := sysdate;
16338     l_created_by        := FND_GLOBAL.USER_ID;
16339     l_last_update_login := FND_GLOBAL.LOGIN_ID;
16340 
16341     if (p_worker_id is not null) then
16342 
16343       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16344 
16345       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM(p_worker_id);')) then
16346         return;
16347       end if;
16348 
16349       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16350 
16351       l_count := 0;
16352 
16353       if (l_extraction_type = 'INCREMENTAL') then
16354 
16355 
16356         BEGIN
16357             select distinct struct_version_id bulk collect
16358             into  l_wbs_version_id_tbl
16359             from (
16360                  select  ver.element_version_id struct_version_id
16361                  from    PA_PROJ_ELEMENT_VERSIONS ver
16362                  where   ver.OBJECT_TYPE = 'PA_STRUCTURES' and
16363                          ver.PRG_GROUP in
16364              (select
16365                 decode(invert.INVERT_ID,
16366                        1, log.EVENT_OBJECT,
16367                        2, log.ATTRIBUTE1) PRG_GROUP
16368               from
16369                 PJI_PA_PROJ_EVENTS_LOG log,
16370                 (
16371                   select 1 INVERT_ID from DUAL union all
16372                   select 2 INVERT_ID from DUAL
16373                 ) invert
16374               where
16375                 log.WORKER_ID    =  p_worker_id  and
16376                 log.EVENT_TYPE   =  'PRG_CHANGE' and
16377                 log.EVENT_OBJECT <> -1)
16378              union all
16379                  select ver.wbs_version_id
16380                  from   PJI_PA_PROJ_EVENTS_LOG log,Pji_pjp_wbs_header ver
16381                  where  ver.project_id=to_number(log.ATTRIBUTE1) and
16382                         log.WORKER_ID    = p_worker_id  and
16383                         log.EVENT_TYPE   = 'PRG_CHANGE' and
16384                         log.EVENT_OBJECT = -1
16385              union all
16386                  select   to_number(decode(invert.INVERT_ID,
16387                                            1, log.EVENT_OBJECT,
16388                                            2, log.ATTRIBUTE2)) struct_version_id
16389                  from    PJI_PA_PROJ_EVENTS_LOG log,
16390                          (
16391                           select 1 INVERT_ID from DUAL union all
16392                           select 2 INVERT_ID from DUAL
16393                          ) invert
16394                  where
16395                          log.WORKER_ID  = p_worker_id and
16396                          log.EVENT_TYPE in ('WBS_CHANGE',  'WBS_PUBLISH'));
16397               EXCEPTION
16398                   WHEN NO_DATA_FOUND then null;
16399               END;
16400 
16401 
16402 
16403         delete from PJI_XBS_DENORM
16404         where SUP_PROJECT_ID in
16405               (select
16406                  ver.PROJECT_ID
16407                from
16408                  PA_PROJ_ELEMENT_VERSIONS ver
16409                where
16410                  ver.OBJECT_TYPE = 'PA_STRUCTURES' and
16411                  ver.PRG_GROUP in
16412                  (select
16413                     decode(invert.INVERT_ID,
16414                            1, log.EVENT_OBJECT,
16415                            2, log.ATTRIBUTE1) PRG_GROUP
16416                   from
16417                     PJI_PA_PROJ_EVENTS_LOG log,
16418                     (
16419                       select 1 INVERT_ID from DUAL union all
16420                       select 2 INVERT_ID from DUAL
16421                     ) invert
16422                   where
16423                     log.WORKER_ID    =  p_worker_id  and
16424                     log.EVENT_TYPE   =  'PRG_CHANGE' and
16425                     log.EVENT_OBJECT <> -1));
16426 
16427         l_count := l_count + sql%rowcount;
16428 
16429         delete from PJI_XBS_DENORM
16430         where SUP_PROJECT_ID in (select log.ATTRIBUTE1
16431                                  from   PJI_PA_PROJ_EVENTS_LOG log
16432                                  where  log.WORKER_ID    = p_worker_id  and
16433                                         log.EVENT_TYPE   = 'PRG_CHANGE' and
16434                                         log.EVENT_OBJECT = -1);
16435 
16436         l_count := l_count + sql%rowcount;
16437 
16438         delete from PJI_XBS_DENORM
16439         where STRUCT_TYPE in ('WBS', 'XBS') and
16440               STRUCT_VERSION_ID in (select
16441                                       decode(invert.INVERT_ID,
16442                                              1, log.EVENT_OBJECT,
16443                                              2, log.ATTRIBUTE2)
16444                                     from
16445                                       PJI_PA_PROJ_EVENTS_LOG log,
16446                                       (
16447                                         select 1 INVERT_ID from DUAL union all
16448                                         select 2 INVERT_ID from DUAL
16449                                       ) invert
16450                                     where
16451                                       log.WORKER_ID  = p_worker_id and
16452                                       log.EVENT_TYPE in ('WBS_CHANGE',
16453                                                          'WBS_PUBLISH'));
16454 
16455         l_count := l_count + sql%rowcount;
16456 
16457         insert into PJI_XBS_DENORM
16458         (
16459           STRUCT_TYPE,
16460           PRG_GROUP,
16461           STRUCT_VERSION_ID,
16462           SUP_PROJECT_ID,
16463           SUP_ID,
16464           SUP_EMT_ID,
16465           SUBRO_ID,
16466           SUB_ID,
16467           SUB_EMT_ID,
16468           SUP_LEVEL,
16469           SUB_LEVEL,
16470           SUB_ROLLUP_ID,
16471           SUB_LEAF_FLAG,
16472           RELATIONSHIP_TYPE,
16473           LAST_UPDATE_DATE,
16474           LAST_UPDATED_BY,
16475           CREATION_DATE,
16476           CREATED_BY,
16477           LAST_UPDATE_LOGIN
16478         )
16479         select
16480           den.STRUCT_TYPE,
16481           den.PRG_GROUP,
16482           den.STRUCT_VERSION_ID,
16483           den.SUP_PROJECT_ID,
16484           den.SUP_ID,
16485           den.SUP_EMT_ID,
16486           den.SUBRO_ID,
16487           den.SUB_ID,
16488           den.SUB_EMT_ID,
16489           den.SUP_LEVEL,
16490           den.SUB_LEVEL,
16491           den.SUB_ROLLUP_ID,
16492           den.SUB_LEAF_FLAG,
16493           den.RELATIONSHIP_TYPE,
16494           l_last_update_date,
16495           l_last_updated_by,
16496           l_creation_date,
16497           l_created_by,
16498           l_last_update_login
16499         from
16500           PA_XBS_DENORM den
16501         where
16502           den.SUP_PROJECT_ID in
16503           (select
16504              ver.PROJECT_ID
16505            from
16506              PA_PROJ_ELEMENT_VERSIONS ver
16507            where
16508              ver.OBJECT_TYPE = 'PA_STRUCTURES' and
16509              ver.PRG_GROUP in
16510              (select
16511                 decode(invert.INVERT_ID,
16512                        1, log.EVENT_OBJECT,
16513                        2, log.ATTRIBUTE1) PRG_GROUP
16514               from
16515                 PJI_PA_PROJ_EVENTS_LOG log,
16516                 (
16517                   select 1 INVERT_ID from DUAL union all
16518                   select 2 INVERT_ID from DUAL
16519                 ) invert
16520               where
16521                 log.WORKER_ID    =  p_worker_id  and
16522                 log.EVENT_TYPE   =  'PRG_CHANGE' and
16523                 log.EVENT_OBJECT <> -1)
16524            union
16525            select to_number(log.ATTRIBUTE1) PROJECT_ID
16526            from   PJI_PA_PROJ_EVENTS_LOG log
16527            where  log.WORKER_ID    = p_worker_id  and
16528                   log.EVENT_TYPE   = 'PRG_CHANGE' and
16529                   log.EVENT_OBJECT = -1)
16530         union all
16531         select
16532           den.STRUCT_TYPE,
16533           den.PRG_GROUP,
16534           den.STRUCT_VERSION_ID,
16535           den.SUP_PROJECT_ID,
16536           den.SUP_ID,
16537           den.SUP_EMT_ID,
16538           den.SUBRO_ID,
16539           den.SUB_ID,
16540           den.SUB_EMT_ID,
16541           den.SUP_LEVEL,
16542           den.SUB_LEVEL,
16543           den.SUB_ROLLUP_ID,
16544           den.SUB_LEAF_FLAG,
16545           den.RELATIONSHIP_TYPE,
16546           l_last_update_date,
16547           l_last_updated_by,
16548           l_creation_date,
16549           l_created_by,
16550           l_last_update_login
16551         from
16552           PA_XBS_DENORM den,
16553           (
16554           select
16555             distinct
16556             EVENT_OBJECT,
16557             ATTRIBUTE2
16558           from
16559             PJI_PA_PROJ_EVENTS_LOG
16560           where
16561             WORKER_ID = p_worker_id and
16562             EVENT_TYPE in ('WBS_CHANGE', 'WBS_PUBLISH')
16563           ) log
16564         where
16565           den.STRUCT_TYPE in ('WBS', 'XBS') and
16566           (log.EVENT_OBJECT = den.STRUCT_VERSION_ID or
16567            log.ATTRIBUTE2 = den.STRUCT_VERSION_ID);
16568 
16569         l_count := l_count + sql%rowcount;
16570 
16571       elsif (l_extraction_type = 'PARTIAL') then
16572 
16573            BEGIN
16574             select distinct ver.wbs_version_id bulk collect
16575             into  l_wbs_version_id_tbl
16576             from  PJI_PJP_PROJ_BATCH_MAP map,Pji_pjp_wbs_header ver
16577             where map.PROJECT_ID=ver.project_id
16578             and   map.WORKER_ID = p_worker_id;
16579          EXCEPTION
16580             WHEN NO_DATA_FOUND then null;
16581          END;
16582 
16583         delete
16584         from   PJI_XBS_DENORM
16585         where  SUP_PROJECT_ID in (select map.PROJECT_ID
16586                                   from   PJI_PJP_PROJ_BATCH_MAP map
16587                                   where  WORKER_ID = p_worker_id);
16588 
16589         l_count := l_count + sql%rowcount;
16590 
16591         insert into PJI_XBS_DENORM
16592         (
16593           STRUCT_TYPE,
16594           PRG_GROUP,
16595           STRUCT_VERSION_ID,
16596           SUP_PROJECT_ID,
16597           SUP_ID,
16598           SUP_EMT_ID,
16599           SUBRO_ID,
16600           SUB_ID,
16601           SUB_EMT_ID,
16602           SUP_LEVEL,
16603           SUB_LEVEL,
16604           SUB_ROLLUP_ID,
16605           SUB_LEAF_FLAG,
16606           RELATIONSHIP_TYPE,
16607           LAST_UPDATE_DATE,
16608           LAST_UPDATED_BY,
16609           CREATION_DATE,
16610           CREATED_BY,
16611           LAST_UPDATE_LOGIN
16612         )
16613         select
16614           den.STRUCT_TYPE,
16615           den.PRG_GROUP,
16616           den.STRUCT_VERSION_ID,
16617           den.SUP_PROJECT_ID,
16618           den.SUP_ID,
16619           den.SUP_EMT_ID,
16620           den.SUBRO_ID,
16621           den.SUB_ID,
16622           den.SUB_EMT_ID,
16623           den.SUP_LEVEL,
16624           den.SUB_LEVEL,
16625           den.SUB_ROLLUP_ID,
16626           den.SUB_LEAF_FLAG,
16627           den.RELATIONSHIP_TYPE,
16628           l_last_update_date,
16629           l_last_updated_by,
16630           l_creation_date,
16631           l_created_by,
16632           l_last_update_login
16633         from
16634           PJI_PJP_PROJ_BATCH_MAP map,
16635           PA_XBS_DENORM den
16636         where
16637           map.WORKER_ID = p_worker_id and
16638           den.SUP_PROJECT_ID = map.PROJECT_ID;
16639 
16640         l_count := l_count + sql%rowcount;
16641 
16642       end if;
16643 
16644       if (l_count > 0) then
16645 
16646         --  delete        from   PJI_REP_XBS_DENORM;
16647         pji_rep_util.Log_Struct_Change_Event(l_wbs_version_id_tbl);
16648         -- where  PROJECT_ID in (select map.PROJECT_ID
16649         --                       from   PJI_PJP_PROJ_BATCH_MAP map
16650         --                       where  map.WORKER_ID = p_worker_id);
16651 
16652       end if;
16653 
16654       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_XBS_DENORM(p_worker_id);');
16655 
16656       commit;
16657 
16658     else -- online mode
16659 
16660        IF g_old_struct_version IS NOT NULL THEN
16661           l_wbs_version_id_tbl.EXTEND;
16662           l_wbs_version_id_tbl(1) :=g_old_struct_version ;
16663           IF g_new_struct_version IS NOT NULL  and  g_old_struct_version<>g_new_struct_version THEN
16664              l_wbs_version_id_tbl.EXTEND;
16665              l_wbs_version_id_tbl(2) :=g_new_struct_version ;
16666           END IF;
16667        else
16668             IF g_new_struct_version IS NOT NULL THEN
16669               l_wbs_version_id_tbl.EXTEND;
16670               l_wbs_version_id_tbl(1) :=g_new_struct_version ;
16671             END IF;
16672        END IF;
16673 
16674       -- online mode, refresh denorm table for a single WBS version ID
16675 
16676       l_count := 0;
16677 
16678       delete /*+ index(den PJI_XBS_DENORM_N2) */
16679       from  PJI_XBS_DENORM den
16680       where den.STRUCT_TYPE       in ('WBS', 'XBS') and
16681             den.SUP_PROJECT_ID    =  g_project_id and
16682             den.STRUCT_VERSION_ID in (g_old_struct_version,
16683                                       g_new_struct_version);
16684 
16685       l_count := l_count + sql%rowcount;
16686 
16687       delete /*+ index(den PJI_XBS_DENORM_N3) */
16688       from  PJI_XBS_DENORM den
16689       where den.STRUCT_TYPE    =  'PRG' and
16690             den.SUP_PROJECT_ID in (select prg.SUP_PROJECT_ID
16691                                    from   PJI_FP_AGGR_XBS_T prg
16692                                    where  prg.STRUCT_TYPE = 'PRG');
16693 
16694       l_count := l_count + sql%rowcount;
16695 
16696       insert into PJI_XBS_DENORM
16697       (
16698         STRUCT_TYPE,
16699         PRG_GROUP,
16700         STRUCT_VERSION_ID,
16701         SUP_PROJECT_ID,
16702         SUP_ID,
16703         SUP_EMT_ID,
16704         SUBRO_ID,
16705         SUB_ID,
16706         SUB_EMT_ID,
16707         SUP_LEVEL,
16708         SUB_LEVEL,
16709         SUB_ROLLUP_ID,
16710         SUB_LEAF_FLAG,
16711         RELATIONSHIP_TYPE,
16712         LAST_UPDATE_DATE,
16713         LAST_UPDATED_BY,
16714         CREATION_DATE,
16715         CREATED_BY,
16716         LAST_UPDATE_LOGIN
16717       )
16718       select /*+ index(den PA_XBS_DENORM_N2) */
16719         den.STRUCT_TYPE,
16720         den.PRG_GROUP,
16721         den.STRUCT_VERSION_ID,
16722         den.SUP_PROJECT_ID,
16723         den.SUP_ID,
16724         den.SUP_EMT_ID,
16725         den.SUBRO_ID,
16726         den.SUB_ID,
16727         den.SUB_EMT_ID,
16728         den.SUP_LEVEL,
16729         den.SUB_LEVEL,
16730         den.SUB_ROLLUP_ID,
16731         den.SUB_LEAF_FLAG,
16732         den.RELATIONSHIP_TYPE,
16733         l_last_update_date,
16734         l_last_updated_by,
16735         l_creation_date,
16736         l_created_by,
16737         l_last_update_login
16738       from
16739         PA_XBS_DENORM den
16740       where
16741         den.STRUCT_TYPE       in ('WBS', 'XBS') and
16742         den.SUP_PROJECT_ID    =  g_project_id and
16743         den.STRUCT_VERSION_ID in (g_old_struct_version,
16744                                   g_new_struct_version)
16745       union all
16746       select /*+ index(den PA_XBS_DENORM_N3) */
16747         den.STRUCT_TYPE,
16748         den.PRG_GROUP,
16749         den.STRUCT_VERSION_ID,
16750         den.SUP_PROJECT_ID,
16751         den.SUP_ID,
16752         den.SUP_EMT_ID,
16753         den.SUBRO_ID,
16754         den.SUB_ID,
16755         den.SUB_EMT_ID,
16756         den.SUP_LEVEL,
16757         den.SUB_LEVEL,
16758         den.SUB_ROLLUP_ID,
16759         den.SUB_LEAF_FLAG,
16760         den.RELATIONSHIP_TYPE,
16761         l_last_update_date,
16762         l_last_updated_by,
16763         l_creation_date,
16764         l_created_by,
16765         l_last_update_login
16766       from
16767         PA_XBS_DENORM den
16768       where
16769         den.STRUCT_TYPE    =  'PRG' and
16770         den.SUP_PROJECT_ID in (select prg.SUP_PROJECT_ID
16771                                from   PJI_FP_AGGR_XBS_T prg
16772                                where  prg.STRUCT_TYPE = 'PRG');
16773 
16774       if (l_count > 0) then
16775 
16776        --delete        from   PJI_REP_XBS_DENORM;
16777          pji_rep_util.Log_Struct_Change_Event(l_wbs_version_id_tbl);
16778         -- where  PROJECT_ID = g_project_id and
16779         --        OWNER_WBS_VERSION_ID in (g_old_struct_version,
16780         --                                 g_new_struct_version);
16781 
16782       end if;
16783 
16784       delete from PJI_XBS_DENORM_DELTA_T;
16785 
16786     end if;
16787 
16788   end UPDATE_XBS_DENORM;
16789 
16790 
16791   -- -----------------------------------------------------
16792   -- procedure UPDATE_RBS_DENORM
16793   --
16794   --   History
16795   --   19-MAR-2004  SVERMETT  Created
16796   --
16797   -- Internal PJP Summarization API.
16798   --
16799   -- Called by RBS program
16800   --
16801   -- This API will be called for both online and bulk processing.
16802   --
16803   -- -----------------------------------------------------
16804   procedure UPDATE_RBS_DENORM (p_worker_id in number default null) is
16805 
16806     l_process           varchar2(30);
16807     l_extraction_type   varchar2(30);
16808 
16809     l_last_update_date  date;
16810     l_last_updated_by   number;
16811     l_creation_date     date;
16812     l_created_by        number;
16813     l_last_update_login number;
16814 
16815     l_fpm_upgrade       varchar2(30);
16816 
16817   begin
16818 
16819     l_last_update_date  := sysdate;
16820     l_last_updated_by   := FND_GLOBAL.USER_ID;
16821     l_creation_date     := sysdate;
16822     l_created_by        := FND_GLOBAL.USER_ID;
16823     l_last_update_login := FND_GLOBAL.LOGIN_ID;
16824 
16825     l_fpm_upgrade := PJI_UTILS.GET_PARAMETER('PJI_FPM_UPGRADE');
16826 
16827     if (p_worker_id is not null) then
16828 
16829       l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
16830 
16831       if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_RBS_DENORM(p_worker_id);')) then
16832         return;
16833       end if;
16834 
16835       l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
16836 
16837       if (nvl(l_fpm_upgrade, 'P') <> 'C' and
16838           l_extraction_type = 'FULL') then
16839 
16840         insert into PJI_RBS_DENORM den_i
16841         (
16842           STRUCT_VERSION_ID,
16843           SUP_ID,
16844           SUBRO_ID,
16845           SUB_ID,
16846           SUP_LEVEL,
16847           SUB_LEVEL,
16848           SUB_LEAF_FLAG,
16849           LAST_UPDATE_DATE,
16850           LAST_UPDATED_BY,
16851           CREATION_DATE,
16852           CREATED_BY,
16853           LAST_UPDATE_LOGIN
16854         )
16855         select
16856           pa.STRUCT_VERSION_ID,
16857           pa.SUP_ID,
16858           pa.SUBRO_ID,
16859           pa.SUB_ID,
16860           pa.SUP_LEVEL,
16861           pa.SUB_LEVEL,
16862           pa.SUB_LEAF_FLAG,
16863           l_last_update_date,
16864           l_last_updated_by,
16865           l_creation_date,
16866           l_created_by,
16867           l_last_update_login
16868         from
16869           PA_RBS_DENORM pa,
16870           PJI_RBS_DENORM pji
16871         where
16872           nvl(pa.STRUCT_VERSION_ID, -1)
16873                                    = nvl(pji.STRUCT_VERSION_ID (+), -1)     and
16874           nvl(pa.SUP_ID, -1)       = nvl(pji.SUP_ID (+), -1)                and
16875           nvl(pa.SUBRO_ID, -1)     = nvl(pji.SUBRO_ID (+), -1)              and
16876           nvl(pa.SUB_ID, -1)       = nvl(pji.SUB_ID (+), -1)                and
16877           nvl(pa.SUP_LEVEL, -1)    = nvl(pji.SUP_LEVEL (+), -1)             and
16878           nvl(pa.SUB_LEVEL, -1)    = nvl(pji.SUB_LEVEL (+), -1)             and
16879           nvl(pa.SUB_LEAF_FLAG, 'PJI$NULL')
16880                                    = nvl(pji.SUB_LEAF_FLAG (+), 'PJI$NULL') and
16881           pji.STRUCT_VERSION_ID    is null;
16882 
16883       elsif (l_extraction_type = 'INCREMENTAL' or
16884              (nvl(l_fpm_upgrade, 'P') = 'C' and
16885               l_extraction_type = 'FULL')) then
16886 
16887         delete from PJI_RBS_DENORM
16888         where STRUCT_VERSION_ID in (select log.EVENT_OBJECT
16889                                     from   PJI_PA_PROJ_EVENTS_LOG log
16890                                     where  log.WORKER_ID = p_worker_id and
16891                                            log.EVENT_TYPE = 'PJI_RBS_CHANGE');
16892 
16893         insert into PJI_RBS_DENORM
16894         (
16895           STRUCT_VERSION_ID,
16896           SUP_ID,
16897           SUBRO_ID,
16898           SUB_ID,
16899           SUP_LEVEL,
16900           SUB_LEVEL,
16901           SUB_LEAF_FLAG,
16902           LAST_UPDATE_DATE,
16903           LAST_UPDATED_BY,
16904           CREATION_DATE,
16905           CREATED_BY,
16906           LAST_UPDATE_LOGIN
16907         )
16908         select
16909           den.STRUCT_VERSION_ID,
16910           den.SUP_ID,
16911           den.SUBRO_ID,
16912           den.SUB_ID,
16913           den.SUP_LEVEL,
16914           den.SUB_LEVEL,
16915           den.SUB_LEAF_FLAG,
16916           l_last_update_date,
16917           l_last_updated_by,
16918           l_creation_date,
16919           l_created_by,
16920           l_last_update_login
16921         from
16922           PA_RBS_DENORM den,
16923           (
16924           select
16925             distinct
16926             log.EVENT_OBJECT
16927           from
16928             PJI_PA_PROJ_EVENTS_LOG log
16929           where
16930             log.WORKER_ID = p_worker_id and
16931             log.EVENT_TYPE in ('PJI_RBS_CHANGE')
16932           ) log
16933         where
16934           den.STRUCT_VERSION_ID = log.EVENT_OBJECT;
16935 
16936       elsif (l_extraction_type = 'RBS') then
16937 
16938         delete from PJI_RBS_DENORM
16939         where STRUCT_VERSION_ID in (select
16940                                       decode(log.EVENT_TYPE,
16941                                              'RBS_PUSH',
16942                                                decode(invert.INVERT_ID,
16943                                                       1, log.EVENT_OBJECT,
16944                                                       2, log.ATTRIBUTE2),
16945                                              'RBS_DELETE', log.EVENT_OBJECT)
16946                                     from
16947                                       PJI_PA_PROJ_EVENTS_LOG log,
16948                                       (
16949                                         select 1 INVERT_ID from DUAL union all
16950                                         select 2 INVERT_ID from DUAL
16951                                       ) invert
16952                                     where
16953                                       log.WORKER_ID = p_worker_id and
16954                                       log.EVENT_TYPE in ('RBS_PUSH',
16955                                                          'RBS_DELETE'));
16956 
16957         insert into PJI_RBS_DENORM
16958         (
16959           STRUCT_VERSION_ID,
16960           SUP_ID,
16961           SUBRO_ID,
16962           SUB_ID,
16963           SUP_LEVEL,
16964           SUB_LEVEL,
16965           SUB_LEAF_FLAG,
16966           LAST_UPDATE_DATE,
16967           LAST_UPDATED_BY,
16968           CREATION_DATE,
16969           CREATED_BY,
16970           LAST_UPDATE_LOGIN
16971         )
16972         select
16973           den.STRUCT_VERSION_ID,
16974           den.SUP_ID,
16975           den.SUBRO_ID,
16976           den.SUB_ID,
16977           den.SUP_LEVEL,
16978           den.SUB_LEVEL,
16979           den.SUB_LEAF_FLAG,
16980           l_last_update_date,
16981           l_last_updated_by,
16982           l_creation_date,
16983           l_created_by,
16984           l_last_update_login
16985         from
16986           PA_RBS_DENORM den,
16987           (
16988           select
16989             distinct
16990             EVENT_OBJECT,
16991             ATTRIBUTE2
16992           from
16993             PJI_PA_PROJ_EVENTS_LOG
16994           where
16995             WORKER_ID = p_worker_id and
16996             EVENT_TYPE = 'RBS_PUSH'
16997           ) log
16998         where
16999           den.STRUCT_VERSION_ID = log.EVENT_OBJECT;
17000 
17001       end if;
17002 
17003       PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_RBS_DENORM(p_worker_id);');
17004 
17005       commit;
17006 
17007     else -- online mode
17008 
17009       delete from PJI_RBS_DENORM
17010       where STRUCT_VERSION_ID = g_rbs_version;
17011 
17012       insert into PJI_RBS_DENORM
17013       (
17014         STRUCT_VERSION_ID,
17015         SUP_ID,
17016         SUBRO_ID,
17017         SUB_ID,
17018         SUP_LEVEL,
17019         SUB_LEVEL,
17020         SUB_LEAF_FLAG,
17021         LAST_UPDATE_DATE,
17022         LAST_UPDATED_BY,
17023         CREATION_DATE,
17024         CREATED_BY,
17025         LAST_UPDATE_LOGIN
17026       )
17027       select
17028         den.STRUCT_VERSION_ID,
17029         den.SUP_ID,
17030         den.SUBRO_ID,
17031         den.SUB_ID,
17032         den.SUP_LEVEL,
17033         den.SUB_LEVEL,
17034         den.SUB_LEAF_FLAG,
17035         l_last_update_date,
17036         l_last_updated_by,
17037         l_creation_date,
17038         l_created_by,
17039         l_last_update_login
17040       from
17041         PA_RBS_DENORM den
17042       where
17043         den.STRUCT_VERSION_ID = g_rbs_version;
17044 
17045       -- delete from PJI_RBS_DENORM_DELTA_T;
17046 
17047     end if;
17048 
17049   end UPDATE_RBS_DENORM;
17050 
17051 
17052   -- -----------------------------------------------------
17053   -- procedure PROCESS_PENDING_EVENTS
17054   --
17055   --   History
17056   --   19-MAR-2004  SVERMETT  Created
17057   --
17058   -- Internal PJP Summarization API.
17059   --
17060   -- -----------------------------------------------------
17061   procedure PROCESS_PENDING_EVENTS (p_worker_id in number) is
17062 
17063     l_process         varchar2(30);
17064     l_extraction_type varchar2(30);
17065 
17066     l_return_status varchar2(255);
17067     l_msg_count     number;
17068     l_msg_data      varchar2(2000);
17069 
17070   begin
17071 
17072     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17073 
17074     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_EVENTS(p_worker_id);')) then
17075       return;
17076     end if;
17077 
17078     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17079 
17080     begin
17081     PJI_FM_XBS_ACCUM_MAINT.PROCESS_PENDING_EVENTS(l_return_status,
17082                                                   l_msg_data);
17083     exception when others then
17084       PJI_UTILS.WRITE2LOG('PROCESS_PENDING_EVENTS:' || SQLERRM);
17085     end;
17086 
17087     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_EVENTS(p_worker_id);');
17088 
17089     commit;
17090 
17091   end PROCESS_PENDING_EVENTS;
17092 
17093 
17094   -- -----------------------------------------------------
17095   -- procedure PROCESS_PENDING_PLAN_UPDATES
17096   --
17097   --   History
17098   --   19-MAR-2004  SVERMETT  Created
17099   --
17100   -- Internal PJP Summarization API.
17101   --
17102   -- -----------------------------------------------------
17103   procedure PROCESS_PENDING_PLAN_UPDATES (p_worker_id in number) is
17104 
17105     l_process         varchar2(30);
17106     l_extraction_type varchar2(30);
17107 
17108     l_return_status varchar2(255);
17109     l_msg_count     number;
17110     l_msg_data      varchar2(2000);
17111 
17112   begin
17113 
17114     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17115 
17116     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_PLAN_UPDATES(p_worker_id);')) then
17117       return;
17118     end if;
17119 
17120     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17121 
17122     PJI_FM_PLAN_MAINT_PVT.PROCESS_PENDING_PLAN_UPDATES(l_extraction_type,
17123                                                        l_return_status,
17124                                                        l_msg_data);
17125 
17126     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.PROCESS_PENDING_PLAN_UPDATES(p_worker_id);');
17127 
17128     commit;
17129 
17130   end PROCESS_PENDING_PLAN_UPDATES;
17131 
17132 
17133   -- -----------------------------------------------------
17134   -- procedure GET_PLANRES_ACTUALS
17135   --
17136   --   History
17137   --   26-JAN-2004  SASHAIK  Created
17138   --
17139   -- Internal PJP Summarization API.
17140   --
17141   -- -----------------------------------------------------
17142   procedure GET_PLANRES_ACTUALS (p_worker_id in number) is
17143 
17144     cursor project_list (p_worker_id in number) is
17145     select
17146       ROWNUM,
17147       PROJECT_ID
17148     from
17149       PJI_PJP_PROJ_BATCH_MAP
17150     where
17151       WORKER_ID = p_worker_id             and
17152       PJI_PROJECT_STATUS = 'Y'            and
17153       rownum <= G_PROGRESS_COMMIT_SIZE;
17154 
17155     l_process         varchar2(30);
17156     l_extraction_type varchar2(30);
17157     l_extraction_type_wp varchar2(30);
17158 
17159     l_project_id_tbl  system.pa_num_tbl_type;
17160     l_prj_index       number;
17161     l_return_status   varchar2(255);
17162     l_msg_count       number;
17163     l_msg_data        varchar2(2000);
17164     l_ret_msg_data        varchar2(2000);
17165     l_ret_status      varchar2(255);
17166     l_success         varchar2(1) := 'Y';
17167     l_err_msg1         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS -> PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS';
17168     l_err_msg2         VARCHAR2(100):= 'Error in PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS -> PJI_FM_PLAN_MAINT.GET_ACTUALS_SUMM';
17169 
17170   begin
17171 
17172     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17173     l_ret_status := FND_API.G_RET_STS_SUCCESS;
17174 
17175     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS(p_worker_id);')) then
17176       return;
17177     end if;
17178 
17179     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17180 
17181     -- Incr-Incr, Full-Initial, rbs-full, pr-full.
17182     SELECT DECODE(l_extraction_type, 'INCREMENTAL', 'INCREMENTAL', 'FULL', 'INITIAL', 'FULL')
17183     INTO   l_extraction_type_wp
17184     FROM   DUAL;
17185 
17186   LOOP
17187 
17188     l_project_id_tbl := system.pa_num_tbl_type();
17189     l_project_id_tbl.delete;
17190     l_prj_index := 1;
17191 
17192     for c in project_list(p_worker_id) loop
17193       l_project_id_tbl.extend(1);
17194       l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
17195       l_prj_index := l_prj_index + 1;
17196     end loop;
17197 
17198     EXIT WHEN l_project_id_tbl.COUNT = 0;
17199 
17200     if (l_prj_index > 1) then
17201 
17202       Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N';
17203 
17204       savepoint S_PROGRESS_ROLLUP;
17205 
17206       PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS(p_project_id_list => l_project_id_tbl,
17207                                              p_extraction_type => l_extraction_type_wp,
17208                                              p_plan_res_level  => 'Y',
17209                                              x_return_status   => l_return_status,
17210                                              x_msg_count       => l_msg_count,
17211                                              x_msg_data        => l_msg_data);
17212 
17213 
17214       if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
17215       FND_MESSAGE.SET_NAME('PA', l_msg_data);
17216       l_ret_msg_data := FND_MESSAGE.GET;
17217         rollback to S_PROGRESS_ROLLUP;
17218         l_success := 'Y';
17219       end if;
17220 
17221       -- l_success := 'N'; -- NOTE!!! This condition is present only to simulate failure
17222                         --   condition. It is to be commented at all times in checked
17223                         --   in code.
17224 
17225       forall j in 1..l_project_id_tbl.COUNT
17226         update PJI_PJP_PROJ_BATCH_MAP
17227         set pji_project_status =
17228                      decode(l_return_status
17229                           , FND_API.G_RET_STS_SUCCESS
17230                           , 'S' -- Success
17231                           , 'S' -- keeping this for future requirement Pending processing as actuals did not get returned for this project.
17232                           ),
17233         act_err_msg=  decode(l_return_status
17234                           , FND_API.G_RET_STS_SUCCESS
17235                           , act_err_msg
17236                           , l_ret_msg_data
17237                           )
17238         where WORKER_ID  = p_worker_id and
17239               project_id = l_project_id_tbl(j);
17240 
17241       COMMIT;
17242 
17243     end if;
17244 
17245   END LOOP;
17246 
17247   if l_success <> 'Y' then
17248 
17249       update pji_pjp_proj_batch_map -- Process the pending projects in the next sumz run.
17250         set pji_project_status = 'Y'
17251       where
17252         WORKER_ID  = p_worker_id and
17253         pji_project_status = 'P';
17254 
17255       commit;
17256       dbms_standard.raise_application_error(-20110, l_err_msg1);
17257 
17258   end if;
17259 
17260   -- Reset flags. 'N' means actuals don't exist for this project.
17261   -- Reset flags for only those projects for which actuals exist.
17262   update pji_pjp_proj_batch_map
17263      set pji_project_status = 'Y'
17264   where
17265      WORKER_ID  = p_worker_id and
17266      pji_project_status <> 'N';
17267 
17268 
17269   PJI_FM_PLAN_MAINT.GET_ACTUALS_SUMM (
17270       p_extr_type       => l_extraction_type
17271     , x_return_status   => l_return_status
17272     , x_msg_code        => l_msg_data ) ;
17273 
17274   IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
17275     dbms_standard.raise_application_error(-20120, l_err_msg2);
17276   END IF;
17277 
17278     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_PLANRES_ACTUALS(p_worker_id);');
17279 
17280     commit;
17281 
17282   end GET_PLANRES_ACTUALS;
17283 
17284 
17285   -- -----------------------------------------------------
17286   -- procedure GET_TASK_ROLLUP_ACTUALS
17287   --
17288   --   History
17289   --   26-JAN-2004  SASHAIK  Created
17290   --
17291   -- Internal PJP Summarization API.
17292   --
17293   -- -----------------------------------------------------
17294   procedure GET_TASK_ROLLUP_ACTUALS (p_worker_id in number) is
17295 
17296     cursor project_list (p_worker_id in number) is
17297     SELECT nvl(ver.PRG_LEVEL,1) PRG_LEVEL,
17298            ver.PROJECT_ID
17299     FROM
17300            pji_pjp_proj_batch_map   map,
17301            pa_proj_element_versions ver,
17302            pa_proj_structure_types typ,
17303            pa_proj_elem_ver_structure str
17304     WHERE
17305            typ.STRUCTURE_TYPE_ID         = 1
17306        AND typ.PROJ_ELEMENT_ID           = str.PROJ_ELEMENT_ID
17307        AND str.LATEST_EFF_PUBLISHED_FLAG = 'Y'
17308        AND str.ELEMENT_VERSION_ID        = ver.ELEMENT_VERSION_ID
17309        AND str.PROJ_ELEMENT_ID           = ver.PROJ_ELEMENT_ID
17310        AND str.PROJECT_ID                = ver.PROJECT_ID
17311        AND ver.OBJECT_TYPE               = 'PA_STRUCTURES'
17312        AND ver.PROJECT_ID                = map.PROJECT_ID
17313        AND map.WORKER_ID                 = p_worker_id
17314        AND map.PJI_PROJECT_STATUS        = 'Y'
17315        ORDER BY ver.PRG_LEVEL DESC NULLS FIRST;
17316 
17317     l_process         varchar2(30);
17318     l_extraction_type varchar2(30);
17319 
17320     l_project_id_tbl  system.pa_num_tbl_type;
17321     l_prg_level_tbl   system.pa_num_tbl_type;
17322     l_prj_index       number;
17323     l_return_status   varchar2(255);
17324     l_msg_count       number;
17325     l_msg_data        varchar2(2000);
17326 
17327   begin
17328 
17329 
17330     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17331 
17332     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS(p_worker_id);')) then
17333       return;
17334     end if;
17335 
17336     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17337 
17338     if (l_extraction_type = 'FULL' or
17339         l_extraction_type = 'INCREMENTAL') then
17340 
17341       update PJI_PJP_PROJ_BATCH_MAP
17342       set    PJI_PROJECT_STATUS = 'Y'
17343       where  WORKER_ID = p_worker_id and
17344              PJI_PROJECT_STATUS is null and
17345              PROJECT_ID in (select distinct
17346                                    PROJECT_ID
17347                             from   PJI_FP_AGGR_PJP1
17348                             where  WORKER_ID = p_worker_id
17349                             and    PLAN_VERSION_ID = -1);
17350 
17351     end if;
17352 
17353     l_project_id_tbl := system.pa_num_tbl_type();
17354     l_project_id_tbl.delete;
17355     l_prg_level_tbl  := system.pa_num_tbl_type();
17356     l_prg_level_tbl.delete;
17357     l_prj_index := 1;
17358 
17359     for c in project_list(p_worker_id) loop
17360       l_project_id_tbl.extend(1);
17361       l_project_id_tbl(l_prj_index) := c.PROJECT_ID;
17362       l_prg_level_tbl.extend(1);
17363       l_prg_level_tbl(l_prj_index) := c.PRG_LEVEL;
17364       l_prj_index := l_prj_index + 1;
17365     end loop;
17366 
17367 
17368 
17369     if (l_prj_index > 1) then
17370 
17371       PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS(p_project_id_list => l_project_id_tbl,
17372                                              p_extraction_type => l_extraction_type,
17373                                              p_plan_res_level  => 'N',
17374                                              p_proj_pgm_level  => l_prg_level_tbl,
17375                                              x_return_status   => l_return_status,
17376                                              x_msg_count       => l_msg_count,
17377                                              x_msg_data        => l_msg_data);
17378 
17379 
17380       if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
17381         dbms_standard.raise_application_error(-20130, 'Error in PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS -> PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS');
17382       end if;
17383 
17384     end if;
17385 
17386     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.GET_TASK_ROLLUP_ACTUALS(p_worker_id);');
17387 
17388     commit;
17389 
17390   end GET_TASK_ROLLUP_ACTUALS;
17391 
17392 
17393   -- -----------------------------------------------------
17394   -- procedure UNLOCK_ALL_HEADERS
17395   --
17396   --   History
17397   --   19-MAR-2004  SVERMETT  Created
17398   --
17399   -- Internal PJP Summarization API.
17400   --
17401   -- -----------------------------------------------------
17402   procedure UNLOCK_ALL_HEADERS (p_worker_id in number) is
17403 
17404     l_process         varchar2(30);
17405     l_extraction_type varchar2(30);
17406 
17407     l_return_status   varchar2(255);
17408     l_msg_count       number;
17409     l_msg_data        varchar2(2000);
17410     l_msg_code        varchar2(255);
17411 
17412   begin
17413 
17414     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17415 
17416     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UNLOCK_ALL_HEADERS(p_worker_id);')) then
17417       return;
17418     end if;
17419 
17420     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17421 
17422     update PJI_PJP_WBS_HEADER
17423     set    LOCK_FLAG = null
17424     where  LOCK_FLAG is not null
17425       and  project_id IN
17426            ( SELECT project_id
17427              FROM   pji_pjp_proj_batch_map
17428              WHERE  worker_id = p_worker_id );
17429 
17430     -- SELECT DECODE(l_extraction_type, 'PARTIAL', 'PLANTYPE', l_extraction_type)
17431     -- INTO   l_extraction_type
17432     -- FROM   DUAL ;
17433 
17434     Pji_Fm_Plan_Maint_Pvt.OBTAIN_RELEASE_LOCKS (
17435       p_context        => l_extraction_type
17436     , p_lock_mode      => NULL
17437     , x_return_status  => l_return_status
17438     , x_msg_code       => l_msg_code
17439     );
17440 
17441     PJI_FM_PLAN_MAINT_PVT.DELETE_PLAN_LINES ( x_return_status => l_return_status );
17442 
17443    -- Pji_Fm_Plan_Maint_Pvt.MARK_EXTRACTED_PLANS('SEC');
17444  --   Back to CREATE_SECONDARY_PVT due to issue 5155692
17445 
17446     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UNLOCK_ALL_HEADERS(p_worker_id);');
17447 
17448     commit;
17449 
17450   end UNLOCK_ALL_HEADERS;
17451 
17452 
17453   -- -----------------------------------------------------
17454   -- procedure EXTRACT_FIN_PLAN_VERS_BULK
17455   --
17456   --   History
17457   --   19-MAR-2004  SVERMETT  Created
17458   --
17459   -- Used solely for FP.M Upgrade
17460   --
17461   -- -----------------------------------------------------
17462   procedure EXTRACT_FIN_PLAN_VERS_BULK (p_worker_id in number) is
17463 
17464     l_process         varchar2(30);
17465     l_extraction_type varchar2(30);
17466 
17467     l_return_status varchar2(255);
17468     l_msg_count     number;
17469     l_msg_data      varchar2(2000);
17470 
17471   begin
17472 
17473     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17474 
17475     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_FIN_PLAN_VERS_BULK(p_worker_id);')) then
17476       return;
17477     end if;
17478 
17479     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17480 
17481     PJI_FM_PLAN_MAINT_PVT.EXTRACT_FIN_PLAN_VERS_BULK(p_slice_type => 'PRI');
17482 
17483     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_FIN_PLAN_VERS_BULK(p_worker_id);');
17484 
17485     commit;
17486 
17487   end EXTRACT_FIN_PLAN_VERS_BULK;
17488 
17489 
17490   -- -----------------------------------------------------
17491   -- procedure POPULATE_WBS_HDR
17492   --
17493   --   History
17494   --   19-MAR-2004  SVERMETT  Created
17495   --
17496   -- Used solely for FP.M Upgrade
17497   --
17498   -- -----------------------------------------------------
17499   procedure POPULATE_WBS_HDR (p_worker_id in number) is
17500 
17501     l_process         varchar2(30);
17502     l_extraction_type varchar2(30);
17503 
17504     l_return_status varchar2(255);
17505     l_msg_count     number;
17506     l_msg_data      varchar2(2000);
17507 
17508   begin
17509 
17510     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17511 
17512     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_WBS_HDR(p_worker_id);')) then
17513       return;
17514     end if;
17515 
17516     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17517 
17518     PJI_FM_PLAN_MAINT_PVT.POPULATE_WBS_HDR;
17519 
17520     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_WBS_HDR(p_worker_id);');
17521 
17522     commit;
17523 
17524   end POPULATE_WBS_HDR;
17525 
17526 
17527   -- -----------------------------------------------------
17528   -- procedure UPDATE_WBS_HDR
17529   --
17530   --   History
17531   --   19-MAR-2004  SASHAIK Created
17532   --
17533   -- Used solely for FP.M Upgrade
17534   --
17535   -- -----------------------------------------------------
17536   procedure UPDATE_WBS_HDR (p_worker_id in number) is
17537 
17538     l_process         varchar2(30);
17539     l_extraction_type varchar2(30);
17540 
17541     l_return_status varchar2(255);
17542     l_msg_count     number;
17543     l_msg_data      varchar2(2000);
17544 
17545   begin
17546 
17547     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17548 
17549     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_WBS_HDR(p_worker_id);')) then
17550       return;
17551     end if;
17552 
17553     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17554 
17555     -- PJI_FM_PLAN_MAINT_PVT.UPDATE_WBS_HDR;
17556     PJI_FM_PLAN_MAINT_PVT.UPDATE_WBS_HDR(p_worker_id);
17557 
17558     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.UPDATE_WBS_HDR(p_worker_id);');
17559 
17560     commit;
17561 
17562   end UPDATE_WBS_HDR;
17563 
17564 
17565   -- -----------------------------------------------------
17566   -- procedure POPULATE_RBS_HDR
17567   --
17568   --   History
17569   --   19-MAR-2004  SVERMETT  Created
17570   --
17571   -- Used solely for FP.M Upgrade
17572   --
17573   -- -----------------------------------------------------
17574   procedure POPULATE_RBS_HDR (p_worker_id in number) is
17575 
17576     l_process         varchar2(30);
17577     l_extraction_type varchar2(30);
17578 
17579     l_return_status varchar2(255);
17580     l_msg_count     number;
17581     l_msg_data      varchar2(2000);
17582 
17583   begin
17584 
17585     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17586 
17587     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_HDR(p_worker_id);')) then
17588       return;
17589     end if;
17590 
17591     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17592 
17593     PJI_FM_PLAN_MAINT_PVT.POPULATE_RBS_HDR;
17594 
17595     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.POPULATE_RBS_HDR(p_worker_id);');
17596 
17597     commit;
17598 
17599   end POPULATE_RBS_HDR;
17600 
17601 
17602   -- -----------------------------------------------------
17603   -- procedure EXTRACT_PLAN_AMOUNTS_PRIRBS
17604   --
17605   --   History
17606   --   19-MAR-2004  SVERMETT  Created
17607   --
17608   -- Used solely for FP.M Upgrade
17609   --
17610   -- -----------------------------------------------------
17611   procedure EXTRACT_PLAN_AMOUNTS_PRIRBS (p_worker_id in number) is
17612 
17613     l_process         varchar2(30);
17614     l_extraction_type varchar2(30);
17615 
17616     l_return_status varchar2(255);
17617     l_msg_count     number;
17618     l_msg_data      varchar2(2000);
17619 
17620   begin
17621 
17622     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17623 
17624     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_AMOUNTS_PRIRBS(p_worker_id);')) then
17625       return;
17626     end if;
17627 
17628     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17629 
17630     PJI_FM_PLAN_MAINT_PVT.EXTRACT_PLAN_AMOUNTS_PRIRBS;
17631 
17632     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_AMOUNTS_PRIRBS(p_worker_id);');
17633 
17634     commit;
17635 
17636   end EXTRACT_PLAN_AMOUNTS_PRIRBS;
17637 
17638 
17639   -- -----------------------------------------------------
17640   -- procedure ROLLUP_FPR_RBS_T_SLICE
17641   --
17642   --   History
17643   --   19-MAR-2004  SVERMETT  Created
17644   --
17645   -- Used solely for FP.M Upgrade
17646   --
17647   -- -----------------------------------------------------
17648   procedure ROLLUP_FPR_RBS_T_SLICE (p_worker_id in number) is
17649 
17650     l_process         varchar2(30);
17651     l_extraction_type varchar2(30);
17652 
17653     l_return_status varchar2(255);
17654     l_msg_count     number;
17655     l_msg_data      varchar2(2000);
17656 
17657   begin
17658 
17659     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17660 
17661     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_T_SLICE(p_worker_id);')) then
17662       return;
17663     end if;
17664 
17665     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17666 
17667     PJI_FM_PLAN_MAINT_PVT.ROLLUP_FPR_RBS_T_SLICE;
17668 
17669     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_RBS_T_SLICE(p_worker_id);');
17670 
17671     commit;
17672 
17673   end ROLLUP_FPR_RBS_T_SLICE;
17674 
17675 
17676   -- -----------------------------------------------------
17677   -- procedure CREATE_FP_PA_PRI_ROLLUP
17678   --
17679   --   History
17680   --   19-MAR-2004  SVERMETT  Created
17681   --
17682   -- Used solely for FP.M Upgrade
17683   --
17684   -- -----------------------------------------------------
17685   procedure CREATE_FP_PA_PRI_ROLLUP (p_worker_id in number) is
17686 
17687     l_process         varchar2(30);
17688     l_extraction_type varchar2(30);
17689 
17690     l_return_status varchar2(255);
17691     l_msg_count     number;
17692     l_msg_data      varchar2(2000);
17693 
17694   begin
17695 
17696     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17697 
17698     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_PA_PRI_ROLLUP(p_worker_id);')) then
17699       return;
17700     end if;
17701 
17702     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17703 
17704     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_PA_PRI_ROLLUP;
17705 
17706     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_PA_PRI_ROLLUP(p_worker_id);');
17707 
17708     commit;
17709 
17710   end CREATE_FP_PA_PRI_ROLLUP;
17711 
17712 
17713   -- -----------------------------------------------------
17714   -- procedure CREATE_FP_GL_PRI_ROLLUP
17715   --
17716   --   History
17717   --   19-MAR-2004  SVERMETT  Created
17718   --
17719   -- Used solely for FP.M Upgrade
17720   --
17721   -- -----------------------------------------------------
17722   procedure CREATE_FP_GL_PRI_ROLLUP (p_worker_id in number) is
17723 
17724     l_process         varchar2(30);
17725     l_extraction_type varchar2(30);
17726 
17727     l_return_status varchar2(255);
17728     l_msg_count     number;
17729     l_msg_data      varchar2(2000);
17730 
17731   begin
17732 
17733     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17734 
17735     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_GL_PRI_ROLLUP(p_worker_id);')) then
17736       return;
17737     end if;
17738 
17739     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17740 
17741     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_GL_PRI_ROLLUP;
17742 
17743     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_GL_PRI_ROLLUP(p_worker_id);');
17744 
17745     commit;
17746 
17747   end CREATE_FP_GL_PRI_ROLLUP;
17748 
17749 
17750   -- -----------------------------------------------------
17751   -- procedure CREATE_FP_ALL_PRI_ROLLUP
17752   --
17753   --   History
17754   --   19-MAR-2004  SVERMETT  Created
17755   --
17756   -- Used solely for FP.M Upgrade
17757   --
17758   -- -----------------------------------------------------
17759   procedure CREATE_FP_ALL_PRI_ROLLUP (p_worker_id in number) is
17760 
17761     l_process         varchar2(30);
17762     l_extraction_type varchar2(30);
17763 
17764     l_return_status varchar2(255);
17765     l_msg_count     number;
17766     l_msg_data      varchar2(2000);
17767 
17768   begin
17769 
17770     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17771 
17772     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_ALL_PRI_ROLLUP(p_worker_id);')) then
17773       return;
17774     end if;
17775 
17776     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17777 
17778     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('G');
17779 
17780     PJI_FM_PLAN_CAL_RLPS.CREATE_FP_ALL_T_PRI_ROLLUP('P');
17781 
17782     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CREATE_FP_ALL_PRI_ROLLUP(p_worker_id);');
17783 
17784     commit;
17785 
17786   end CREATE_FP_ALL_PRI_ROLLUP;
17787 
17788 
17789   -- -----------------------------------------------------
17790   -- procedure INSERT_INTO_FP_FACT
17791   --
17792   --   History
17793   --   19-MAR-2004  SVERMETT  Created
17794   --
17795   -- Used solely for FP.M Upgrade
17796   --
17797   -- -----------------------------------------------------
17798   procedure INSERT_INTO_FP_FACT (p_worker_id in number) is
17799 
17800     l_process         varchar2(30);
17801     l_extraction_type varchar2(30);
17802 
17803     l_return_status varchar2(255);
17804     l_msg_count     number;
17805     l_msg_data      varchar2(2000);
17806 
17807   begin
17808 
17809     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17810 
17811     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_INTO_FP_FACT(p_worker_id);')) then
17812       return;
17813     end if;
17814 
17815     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17816 
17817     PJI_FM_PLAN_MAINT_PVT.INSERT_INTO_FP_FACT;
17818 
17819     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.INSERT_INTO_FP_FACT(p_worker_id);');
17820 
17821     commit;
17822 
17823   end INSERT_INTO_FP_FACT;
17824 
17825 
17826   -- -----------------------------------------------------
17827   -- procedure MARK_EXTRACTED_PLANS
17828   --
17829   --   History
17830   --   19-MAR-2004  SVERMETT  Created
17831   --
17832   -- Used solely for FP.M Upgrade
17833   --
17834   -- -----------------------------------------------------
17835   procedure MARK_EXTRACTED_PLANS (p_worker_id in number) is
17836 
17837     l_process         varchar2(30);
17838     l_extraction_type varchar2(30);
17839 
17840     l_return_status varchar2(255);
17841     l_msg_count     number;
17842     l_msg_data      varchar2(2000);
17843 
17844   begin
17845 
17846     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17847 
17848     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PLANS(p_worker_id);')) then
17849       return;
17850     end if;
17851 
17852     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17853 
17854     PJI_FM_PLAN_MAINT_PVT.MARK_EXTRACTED_PLANS('PRI');
17855 
17856     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MARK_EXTRACTED_PLANS(p_worker_id);');
17857 
17858     commit;
17859 
17860   end MARK_EXTRACTED_PLANS;
17861 
17862 
17863   procedure REMAP_RBS_TXN_ACCUM_HDRS (p_worker_id in number) is
17864 
17865     l_process         varchar2(30);
17866     l_extraction_type varchar2(30);
17867 
17868     l_return_status varchar2(255);
17869     l_msg_count     number;
17870     l_msg_data      varchar2(2000);
17871 
17872   begin
17873 
17874     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17875 
17876     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.REMAP_RBS_TXN_ACCUM_HDRS(p_worker_id);')) then
17877       return;
17878     end if;
17879 
17880     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17881     -- Extraction type is not needed for this step.
17882     -- Retaining it to maintain coding style as well as for potential future use.
17883 
17884     PJI_FM_XBS_ACCUM_UTILS.REMAP_RBS_TXN_ACCUM_HDRS (
17885           x_return_status => l_return_status
17886          ,x_msg_data      => l_msg_data
17887          ,x_msg_count     => l_msg_count );
17888 
17889     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.REMAP_RBS_TXN_ACCUM_HDRS(p_worker_id);');
17890 
17891     commit;
17892 
17893   end REMAP_RBS_TXN_ACCUM_HDRS ;
17894 
17895 
17896   procedure RETRIEVE_OVERRIDDEN_WP_ETC (p_worker_id in number) is
17897 
17898     l_process         varchar2(30);
17899     l_extraction_type varchar2(30);
17900 
17901     l_return_status varchar2(255);
17902     l_msg_count     number;
17903     l_msg_data      varchar2(2000);
17904 
17905   begin
17906 
17907     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17908 
17909     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.RETRIEVE_OVERRIDDEN_WP_ETC(p_worker_id);')) then
17910       return;
17911     end if;
17912 
17913     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17914     -- Extraction type is not needed for this step.
17915     -- Retaining it to maintain coding style as well as for potential future use.
17916 
17917     PJI_FM_PLAN_MAINT_PVT.RETRIEVE_OVERRIDDEN_WP_ETC;
17918 
17919     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.RETRIEVE_OVERRIDDEN_WP_ETC(p_worker_id);');
17920 
17921     commit;
17922 
17923   end RETRIEVE_OVERRIDDEN_WP_ETC ;
17924 
17925 
17926   procedure EXTRACT_PLAN_ETC_PRIRBS (p_worker_id in number) is
17927 
17928     l_process         varchar2(30);
17929     l_extraction_type varchar2(30);
17930 
17931     l_return_status varchar2(255);
17932     l_msg_count     number;
17933     l_msg_data      varchar2(2000);
17934 
17935   begin
17936 
17937     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17938 
17939     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_ETC_PRIRBS(p_worker_id);')) then
17940       return;
17941     end if;
17942 
17943     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
17944     -- Extraction type is not needed for this step.
17945     -- Retaining it to maintain coding style as well as for potential future use.
17946 
17947     PJI_FM_PLAN_MAINT_PVT.EXTRACT_PLAN_ETC_PRIRBS(p_slice_type => 'SEC');
17948 
17949     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.EXTRACT_PLAN_ETC_PRIRBS(p_worker_id);');
17950 
17951     commit;
17952 
17953   end EXTRACT_PLAN_ETC_PRIRBS ;
17954 
17955 
17956   -- -----------------------------------------------------
17957   -- procedure CLEANUP
17958   --
17959   --   History
17960   --   19-MAR-2004  SVERMETT  Created
17961   --
17962   -- Internal PJP Summarization API.
17963   --
17964   -- -----------------------------------------------------
17965   procedure CLEANUP (p_worker_id in number default null) is
17966 
17967     l_process varchar2(30);
17968     l_schema  varchar2(30);
17969 
17970   begin
17971 
17972     if (p_worker_id is not null) then
17973 
17974     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
17975 
17976 /* 5755229 Because No step entry in the delete process FPM Upgrade
17977     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP(p_worker_id);')) then -- Bug#5171542
17978     return;
17979     end if;
17980 5755229  */
17981 
17982     l_schema := PJI_UTILS.GET_PJI_SCHEMA_NAME;
17983 
17984     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
17985                                      'PJI_PJP_RMAP_FPR',
17986                                      'PARTITION',
17987                                      'P' || p_worker_id);
17988 
17989     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
17990                                      'PJI_PJP_RMAP_ACR',
17991                                      'PARTITION',
17992                                      'P' || p_worker_id);
17993 
17994     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
17995                                      'PJI_FP_AGGR_PJP0',
17996                                      'PARTITION',
17997                                      'P' || p_worker_id);
17998 
17999     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18000                                      'PJI_AC_AGGR_PJP0',
18001                                      'PARTITION',
18002                                      'P' || p_worker_id);
18003 
18004     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18005                                      'PJI_FP_CUST_PJP0',
18006                                      'PARTITION',
18007                                      'P' || p_worker_id);
18008 
18009     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18010                                      'PJI_AC_CUST_PJP0',
18011                                      'PARTITION',
18012                                      'P' || p_worker_id);
18013 
18014     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18015                                      'PJI_FM_EXTR_PLNVER4',
18016                                      'PARTITION',
18017                                      'P' || p_worker_id);
18018 
18019     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18020                                      'PJI_FP_AGGR_PJP1',
18021                                      'PARTITION',
18022                                      'P' || p_worker_id);
18023 
18024     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18025                                      'PJI_AC_AGGR_PJP1',
18026                                      'PARTITION',
18027                                      'P' || p_worker_id);
18028 
18029     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18030                                      'PJI_FP_AGGR_XBS',
18031                                      'PARTITION',
18032                                      'P' || p_worker_id);
18033 
18034     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18035                                      'PJI_FP_AGGR_RBS',
18036                                      'PARTITION',
18037                                      'P' || p_worker_id);
18038 
18039     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18040                                      'PJI_XBS_DENORM_DELTA',
18041                                      'PARTITION',
18042                                      'P' || p_worker_id);
18043 
18044     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18045                                      'PJI_RBS_DENORM_DELTA',
18046                                      'PARTITION',
18047                                      'P' || p_worker_id);
18048 
18049     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18050                                      'PJI_FP_RMAP_FPR',
18051                                      'PARTITION',
18052                                      'P' || p_worker_id);
18053 
18054     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18055                                      'PJI_AC_RMAP_ACR',
18056                                      'PARTITION',
18057                                      'P' || p_worker_id);
18058 
18059     PJI_PROCESS_UTIL.TRUNC_INT_TABLE(l_schema,
18060                                      'PJI_PA_PROJ_EVENTS_LOG',
18061                                      'PARTITION',
18062                                      'P' || p_worker_id);
18063 
18064     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.CLEANUP(p_worker_id);'); -- Bug#5171542
18065     commit;
18066 
18067     else -- online mode
18068 
18069       delete from PJI_XBS_DENORM_DELTA_T;
18070 
18071       delete from PJI_FP_AGGR_PJP1_T;
18072 
18073       delete from PJI_AC_AGGR_PJP1_T;
18074 
18075     end if;
18076 
18077   end CLEANUP;
18078 -- bug 6520936
18079 Procedure MERGE_INTO_FP_FACTS (p_worker_id in number) is
18080 
18081     l_process         varchar2(30);
18082     l_extraction_type varchar2(30);
18083 
18084     l_return_status   varchar2(255);
18085     l_msg_count       number;
18086     l_msg_data        varchar2(2000);
18087 
18088   begin
18089 
18090     l_process := PJI_PJP_SUM_MAIN.g_process || to_char(p_worker_id);
18091 
18092     if (not PJI_PROCESS_UTIL.NEED_TO_RUN_STEP(l_process, 'PJI_PJP_SUM_ROLLUP.MERGE_INTO_FP_FACT(p_worker_id);')) then
18093       return;
18094     end if;
18095 
18096     l_extraction_type := PJI_PROCESS_UTIL.GET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE');
18097 
18098     PJI_FM_PLAN_MAINT_PVT.MERGE_INTO_FP_FACTS;
18099 
18100     PJI_PROCESS_UTIL.REGISTER_STEP_COMPLETION(l_process, 'PJI_PJP_SUM_ROLLUP.MERGE_INTO_FP_FACT(p_worker_id);');
18101 
18102     commit;
18103 
18104   end MERGE_INTO_FP_FACTS;
18105 -- bug 6520936
18106 
18107 
18108 end PJI_PJP_SUM_ROLLUP;