DBA Data[Home] [Help]

PACKAGE BODY: APPS.PJI_FM_PLAN_MAINT_T_PVT

Source


1 PACKAGE BODY PJI_FM_PLAN_MAINT_T_PVT AS
2 /* $Header: PJIPP03B.pls 120.15.12000000.4 2007/08/17 14:33:31 kmaddi ship $ */
3 
4 
5   g_package_name VARCHAR2(100) := 'PJI_FM_PLAN_MAINT_T_PVT';
6 
7   g_prorating_format            VARCHAR2(30) := 'S';
8                                 -- S Start date, E End date, D (daily) Period.
9                                 -- Based on plan version.
10 
11   g_currency_conversion_rule   VARCHAR2(30) := 'S';
12                                 -- S Start date, E End date.
13                                 -- Based on plan version.
14 
15   g_global_curr_1_enabled       VARCHAR2(30) := 'T';
16   g_global_curr_2_enabled       VARCHAR2(30) := 'T';
17 
18   g_global1_currency_code       VARCHAR2(30) := NULL; -- g_global1_currency_code;
19   g_global2_currency_code       VARCHAR2(30) := NULL; -- 'CAD';
20 
21   g_global1_currency_mau        NUMBER := NULL; -- 0.01;
22   g_global2_currency_mau        NUMBER := NULL; -- 0.01;
23 
24   g_labor_mau                   NUMBER := 0.01;
25 
26   g_ent_start_period_id         NUMBER        := NULL;
27   g_ent_start_period_name       VARCHAR2(100) := NULL;
28   g_ent_start_date              date := NULL;
29   g_ent_END_date                date := NULL;
30   g_global_start_date           date := NULL;
31 
32   g_global_start_J              NUMBER := NULL;
33   g_ent_start_J                 NUMBER := NULL;
34   g_ent_END_J                   NUMBER := NULL;
35 
36   g_worker_id                   NUMBER := 1; -- NULL;
37   g_default_prg_level           NUMBER := 0;
38 
39   g_people_resclass_code        VARCHAR2(6) := 'PEOPLE';
40   g_equip_resclass_code         VARCHAR2(9) := 'EQUIPMENT';
41 
42   g_start_str                   VARCHAR2(1) := 'S';
43   g_end_str                     VARCHAR2(1) := 'E';
44   g_pa_cal_str                  VARCHAR2(1) := 'P';
45   g_gl_cal_str                  VARCHAR2(1) := 'G';
46   -- 'N'ntimeph_str               VARCHAR2(1) := 'N';
47   g_ent_cal_str                 VARCHAR2(1) := 'E';
48 
49   g_yes                         VARCHAR2(1) := 'Y';
50   g_no                          VARCHAR2(1) := 'N';  -- Same as g_nontimeph_str.
51   g_all                         VARCHAR2(1) := 'A';
52   g_lowest_level                VARCHAR2(1) := 'L';
53   g_top_level                   VARCHAR2(1) := 'T';
54   g_rolled_up                   VARCHAR2(1) := 'R';
55 
56   g_all_timeph_code             VARCHAR2(3) := 'ALL';
57   g_cost_timeph_code            VARCHAR2(4) := 'COST';
58   g_rev_timeph_code             VARCHAR2(7) := 'REVENUE';
59 
60   g_ntp_period_name             VARCHAR2(10) := 'XXX';
61 
62 ------------------------------------------------------------------
63 ------------------------------------------------------------------
64 --              Helper  Apis Specification                      --
65 ------------------------------------------------------------------
66 ------------------------------------------------------------------
67 
68 PROCEDURE UPDATE_TPFG1_CURR_RCDS;
69 
70 PROCEDURE CLEANUP_FP_RMAP_FPR;
71 
72 PROCEDURE CLEANUP_AC_RMAP_FPR;
73 
74 PROCEDURE PRINT_TIME (p_tag IN VARCHAR2);
75 
76 PROCEDURE PRINT_NUM_WBSRLPRCDS_INPJP1;
77 
78 PROCEDURE INSERT_NTP_CAL_RECORD ( x_max_plnver_id OUT NOCOPY  NUMBER );
79 
80 PROCEDURE DELETE_NTP_CAL_RECORD ( p_max_plnver_id IN NUMBER );
81 
82 ------------------------------------------------------------------
83 ------------------------------------------------------------------
84 --              Helper  Apis Implementation                     --
85 ------------------------------------------------------------------
86 ------------------------------------------------------------------
87 
88 PROCEDURE COPY_PRIMARY
89 (
90   p_source_fp_version_ids    IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
91 , p_dest_fp_version_ids      IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
92 , p_source_fp_version_status IN   SYSTEM.pa_VARCHAR2_30_tbl_type := pji_empty_VARCHAR2_30_tbl
93 , p_dest_fp_version_status   IN   SYSTEM.pa_VARCHAR2_30_tbl_type := pji_empty_VARCHAR2_30_tbl
94 , p_commit                   IN   VARCHAR2 := 'F'
95 ) IS
96 
97     l_dest_plan_type_ids   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl;
98     l_dest_project_ids     SYSTEM.pa_num_tbl_type := pji_empty_num_tbl;
99     l_src_count            NUMBER;
100     l_dest_count           NUMBER;
101     l_src_project_ids      SYSTEM.pa_num_tbl_type := pji_empty_num_tbl;
102 
103 BEGIN
104 
105   l_src_count  := p_source_fp_version_ids.COUNT;
106   l_dest_count := p_dest_fp_version_ids.COUNT;
107 
108   print_time ( ' l_src_count ' || l_src_count  || ' l_dest_count ' || l_dest_count );
109 
110   IF (l_src_count <> l_dest_count) THEN
111     print_time(' l_src_count <> l_dest_count, returning. ');
112     RETURN;
113   ELSIF (l_src_count = 0 OR l_dest_count = 0) THEN
114     print_time('Either or both of l_src_count or l_src_count are null, returning. ');
115     RETURN;
116   END IF;
117 
118   l_dest_project_ids.EXTEND(l_src_count);
119   l_dest_plan_type_ids.EXTEND(l_src_count);
120   l_src_project_ids.EXTEND(l_src_count);
121 
122     FOR i IN 1..l_src_count LOOP
123 
124       SELECT   fin_plan_type_id, project_id
125           INTO   l_dest_plan_type_ids(i)
126               ,l_dest_project_ids(i)
127           FROM   pa_budget_versions
128           WHERE  budget_version_id = p_dest_fp_version_ids(i);
129 
130       SELECT   project_id
131         INTO   l_src_project_ids(i)
132           FROM   pa_budget_versions
133           WHERE  budget_version_id = p_source_fp_version_ids(i);
134 
135       print_time ( ' i = ' || i ) ;
136       print_time ( 'Spvi= ' || p_source_fp_version_ids(i));
137       print_time ( 'Dpvi= ' || p_dest_fp_version_ids(i));
138       print_time ( 'Dpti= ' || l_dest_plan_type_ids(i));
139       print_time ( 'Dpti= ' || l_src_project_ids(i));
140 
141     END LOOP;
142 
143 
144     PJI_FM_PLAN_MAINT.DELETE_ALL_PVT (
145       p_fp_version_ids    => p_dest_fp_version_ids
146     , p_commit            => 'F');
147     print_time('Deleted the fact data and related metadata for destination plan versions.');
148 
149     CLEANUP_INTERIM_TABLES;
150     print_time(' Interim tables cleaned up. 0.01 .. ');
151 
152     EXTRACT_FIN_PLAN_VERSIONS(
153       p_fp_version_ids    => p_dest_fp_version_ids
154     , p_slice_type        => 'PRI'
155     );
156     print_time('Populated ver3 table.');
157 
158 
159     FORALL I IN 1..p_source_fp_version_ids.COUNT
160     INSERT INTO pji_fp_aggr_pjp1_t
161     (
162        WORKER_ID
163      , PROJECT_ID
164      , PROJECT_ORG_ID
165      , PROJECT_ORGANIZATION_ID
166      , PROJECT_ELEMENT_ID
167      , TIME_ID
168      , PERIOD_TYPE_ID
169      , CALENDAR_TYPE
170      , RBS_AGGR_LEVEL
171      , WBS_ROLLUP_FLAG
172      , PRG_ROLLUP_FLAG
173      , CURR_RECORD_TYPE_ID
174      , CURRENCY_CODE
175      , RBS_ELEMENT_ID
176      , RBS_VERSION_ID
177      , PLAN_VERSION_ID
178      , PLAN_TYPE_ID
179      , RAW_COST
180      , BRDN_COST
181      , REVENUE
182      , BILL_RAW_COST
183      , BILL_BRDN_COST
184      , BILL_LABOR_RAW_COST
185      , BILL_LABOR_BRDN_COST
186      , BILL_LABOR_HRS
187      , EQUIPMENT_RAW_COST
188      , EQUIPMENT_BRDN_COST
189      , CAPITALIZABLE_RAW_COST
190      , CAPITALIZABLE_BRDN_COST
191      , LABOR_RAW_COST
192      , LABOR_BRDN_COST
193      , LABOR_HRS
194      , LABOR_REVENUE
195      , EQUIPMENT_HOURS
196      , BILLABLE_EQUIPMENT_HOURS
197      , SUP_INV_COMMITTED_COST
198      , PO_COMMITTED_COST
199      , PR_COMMITTED_COST
200      , OTH_COMMITTED_COST
201      , ACT_LABOR_HRS
202      , ACT_EQUIP_HRS
203            , ACT_LABOR_BRDN_COST
204            , ACT_EQUIP_BRDN_COST
205            , ACT_BRDN_COST
206            , ACT_RAW_COST
207            , ACT_REVENUE
208          , ACT_LABOR_RAW_COST
209          , ACT_EQUIP_RAW_COST
210            , ETC_LABOR_HRS
211            , ETC_EQUIP_HRS
212            , ETC_LABOR_BRDN_COST
213            , ETC_EQUIP_BRDN_COST
214            , ETC_BRDN_COST
215          , ETC_RAW_COST
216          , ETC_LABOR_RAW_COST
217          , ETC_EQUIP_RAW_COST
218          , CUSTOM1
219          , CUSTOM2
220          , CUSTOM3
221          , CUSTOM4
222          , CUSTOM5
223          , CUSTOM6
224          , CUSTOM7
225          , CUSTOM8
226          , CUSTOM9
227          , CUSTOM10
228          , CUSTOM11
229          , CUSTOM12
230          , CUSTOM13
231          , CUSTOM14
232          , CUSTOM15
233          , PLAN_TYPE_CODE           /* 4471527 */
234     )
235     (  SELECT
236            g_worker_id
237          , l_dest_project_ids(i)
238          , rl.PROJECT_ORG_ID
239          , rl.PROJECT_ORGANIZATION_ID
240          , rl.PROJECT_ELEMENT_ID
241          , rl.TIME_ID
242          , rl.PERIOD_TYPE_ID
243          , rl.CALENDAR_TYPE
244          , rl.RBS_AGGR_LEVEL
245          , rl.WBS_ROLLUP_FLAG
246          , rl.PRG_ROLLUP_FLAG
247          , BITAND(rl.CURR_RECORD_TYPE_ID, 28)
248          , rl.CURRENCY_CODE
249          , rl.RBS_ELEMENT_ID
250          , rl.RBS_VERSION_ID
251          , p_dest_fp_version_ids(i)
252          , l_dest_plan_type_ids(i)
253          , rl.RAW_COST
254          , rl.BRDN_COST
255          , rl.REVENUE
256          , rl.BILL_RAW_COST
257          , rl.BILL_BRDN_COST
258          , rl.BILL_LABOR_RAW_COST
259          , rl.BILL_LABOR_BRDN_COST
260          , rl.BILL_LABOR_HRS
261          , rl.EQUIPMENT_RAW_COST
262          , rl.EQUIPMENT_BRDN_COST
263          , rl.CAPITALIZABLE_RAW_COST
264          , rl.CAPITALIZABLE_BRDN_COST
265          , rl.LABOR_RAW_COST
266          , rl.LABOR_BRDN_COST
267          , rl.LABOR_HRS
268          , rl.LABOR_REVENUE
269          , rl.EQUIPMENT_HOURS
270          , rl.BILLABLE_EQUIPMENT_HOURS
271          , rl.SUP_INV_COMMITTED_COST
272          , rl.PO_COMMITTED_COST
273          , rl.PR_COMMITTED_COST
274          , rl.OTH_COMMITTED_COST
275          , rl.ACT_LABOR_HRS
276            , rl.ACT_EQUIP_HRS
277            , rl.ACT_LABOR_BRDN_COST
278            , rl.ACT_EQUIP_BRDN_COST
279            , rl.ACT_BRDN_COST
280            , rl.ACT_RAW_COST
281            , rl.ACT_REVENUE
282          , rl.ACT_LABOR_RAW_COST
283          , rl.ACT_EQUIP_RAW_COST
284            , rl.ETC_LABOR_HRS
285            , rl.ETC_EQUIP_HRS
286            , rl.ETC_LABOR_BRDN_COST
287            , rl.ETC_EQUIP_BRDN_COST
288            , rl.ETC_BRDN_COST
289          , rl.ETC_RAW_COST
290          , rl.ETC_LABOR_RAW_COST
291          , rl.ETC_EQUIP_RAW_COST
292          , rl.CUSTOM1
293          , rl.CUSTOM2
294          , rl.CUSTOM3
295          , rl.CUSTOM4
296          , rl.CUSTOM5
297          , rl.CUSTOM6
298          , rl.CUSTOM7
299          , rl.CUSTOM8
300          , rl.CUSTOM9
301          , rl.CUSTOM10
302          , rl.CUSTOM11
303          , rl.CUSTOM12
304          , rl.CUSTOM13
305          , rl.CUSTOM14
306          , rl.CUSTOM15
307          , rl.PLAN_TYPE_CODE       /* 4471527 */
308       FROM
309            pji_fp_xbs_accum_f rl
310          , pji_fm_extr_plnver3_t ver3
311       WHERE 1=1
312             AND rl.project_id            = l_src_project_ids(i)
313             AND rl.plan_version_id       = p_source_fp_version_ids(i)
314                 AND rl.plan_type_code = ver3.plan_type_code    /* 4471527 */
315           AND ( (rl.rbs_aggr_level     = 'T')
316            OR (rl.rbs_aggr_level       = 'L' AND wbs_rollup_flag = 'N' ))
317           AND BITAND(rl.CURR_RECORD_TYPE_ID, 28) > 0
318           AND rl.calendar_type in (ver3.time_phased_type_code, 'A')
319             AND ver3.plan_version_id     = p_dest_fp_version_ids(i)
320         );
321 
322     print_time('# records in pjp1_t are ' || SQL%ROWCOUNT);
323 
324     POPULATE_WBS_HDR;          print_time(' 2.1 .. ');
325 
326     UPDATE_WBS_HDR;            print_time(' 2.11 .. ');
327 
328     POPULATE_RBS_HDR;          print_time(' 2.2 .. ');
329 
330     MERGE_INTO_FP_FACT;        print_time(' 2.01 .. ');
331 
332     CLEANUP_INTERIM_TABLES;    print_time(' 2.3 .. ');
333 
334 
335     IF (p_commit = 'T') THEN
336       COMMIT;
337     END IF;
338 
339 EXCEPTION
340   WHEN OTHERS THEN
341     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
342                              p_procedure_name => 'COPY_PRIMARY');
343     RAISE;
344 END;
345 
346 
347 
348 PROCEDURE COPY_PLANS
349 (
350   p_source_fp_version_ids    IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
351 , p_dest_fp_version_ids      IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
352 , p_source_fp_version_status IN   SYSTEM.pa_VARCHAR2_30_tbl_type := pji_empty_VARCHAR2_30_tbl
353 , p_dest_fp_version_status   IN   SYSTEM.pa_VARCHAR2_30_tbl_type := pji_empty_VARCHAR2_30_tbl
354 , p_commit                   IN   VARCHAR2 := 'F'
355 ) IS
356 
357     l_dest_plan_type_ids   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl;
358     l_dest_project_ids     SYSTEM.pa_num_tbl_type := pji_empty_num_tbl;
359     l_src_count            NUMBER;
360     l_dest_count           NUMBER;
361 
362 BEGIN
363 
364   l_src_count  := p_source_fp_version_ids.COUNT;
365   l_dest_count := p_dest_fp_version_ids.COUNT;
366 
367   print_time ( ' l_src_count ' || l_src_count  || ' l_dest_count ' || l_dest_count );
368 
369   IF (l_src_count <> l_dest_count) THEN
370     print_time(' l_src_count <> l_dest_count, returning. ');
371     RETURN;
372   ELSIF (l_src_count = 0 OR l_dest_count = 0) THEN
373     print_time('Either or both of l_src_count or l_src_count are null, returning. ');
374     RETURN;
375   END IF;
376 
377   l_dest_project_ids.EXTEND(l_src_count);
378   l_dest_plan_type_ids.EXTEND(l_dest_count);
379 
380 
381   FOR i IN 1..p_source_fp_version_ids.COUNT LOOP
382     SELECT fin_plan_type_id, project_id
383     INTO   l_dest_plan_type_ids(i)
384          , l_dest_project_ids(i)
385     FROM   pa_budget_versions
386     WHERE  budget_version_id = p_dest_fp_version_ids(i);
387 
388     print_time ( ' i = ' || i ) ;
389     print_time ( 'Spvi= ' || p_source_fp_version_ids(i));
390     print_time ( 'Dpvi= ' || p_dest_fp_version_ids(i));
391     print_time ( 'Dpti= ' || l_dest_plan_type_ids(i));
392 
393   END LOOP;
394 
395   FORALL i IN 1..p_dest_fp_version_ids.COUNT
396     DELETE FROM PJI_FP_XBS_ACCUM_F
397     WHERE plan_version_id  = p_dest_fp_version_ids(i)
398       AND project_id       = l_dest_project_ids(i);
399 
400   FORALL i IN 1..p_dest_fp_version_ids.COUNT
401     DELETE FROM pji_rollup_level_status
402     WHERE plan_version_id = p_dest_fp_version_ids(i);
403 
404   CLEANUP_INTERIM_TABLES;    print_time(' 2.3 .. ');
405 
406   FORALL I IN 1..p_source_fp_version_ids.COUNT
407     INSERT INTO pji_fp_aggr_pjp1_t
408     (
409        worker_id
410      , PROJECT_ID
411      , PROJECT_ORG_ID
412      , PROJECT_ORGANIZATION_ID
413      , PROJECT_ELEMENT_ID
414      , TIME_ID
415      , PERIOD_TYPE_ID
416      , CALENDAR_TYPE
417      , RBS_AGGR_LEVEL
418      , WBS_ROLLUP_FLAG
419      , PRG_ROLLUP_FLAG
420      , CURR_RECORD_TYPE_ID
421      , CURRENCY_CODE
422      , RBS_ELEMENT_ID
423      , RBS_VERSION_ID
424      , PLAN_VERSION_ID
425      , PLAN_TYPE_ID
426      , RAW_COST
427      , BRDN_COST
428      , REVENUE
429      , BILL_RAW_COST
430      , BILL_BRDN_COST
431      , BILL_LABOR_RAW_COST
432      , BILL_LABOR_BRDN_COST
433      , BILL_LABOR_HRS
434      , EQUIPMENT_RAW_COST
435      , EQUIPMENT_BRDN_COST
436      , CAPITALIZABLE_RAW_COST
437      , CAPITALIZABLE_BRDN_COST
438      , LABOR_RAW_COST
439      , LABOR_BRDN_COST
440      , LABOR_HRS
441      , LABOR_REVENUE
442      , EQUIPMENT_HOURS
443      , BILLABLE_EQUIPMENT_HOURS
444      , SUP_INV_COMMITTED_COST
445      , PO_COMMITTED_COST
446      , PR_COMMITTED_COST
447      , OTH_COMMITTED_COST
448        , ACT_LABOR_HRS
449            , ACT_EQUIP_HRS
450            , ACT_LABOR_BRDN_COST
451            , ACT_EQUIP_BRDN_COST
452            , ACT_BRDN_COST
453            , ACT_RAW_COST
454            , ACT_REVENUE
455          , ACT_LABOR_RAW_COST
456          , ACT_EQUIP_RAW_COST
457            , ETC_LABOR_HRS
458            , ETC_EQUIP_HRS
459            , ETC_LABOR_BRDN_COST
460            , ETC_EQUIP_BRDN_COST
461            , ETC_BRDN_COST
462          , ETC_RAW_COST
463          , ETC_LABOR_RAW_COST
464          , ETC_EQUIP_RAW_COST
465      , CUSTOM1
466      , CUSTOM2
467      , CUSTOM3
468      , CUSTOM4
469      , CUSTOM5
470      , CUSTOM6
471      , CUSTOM7
472      , CUSTOM8
473      , CUSTOM9
474      , CUSTOM10
475      , CUSTOM11
476      , CUSTOM12
477      , CUSTOM13
478      , CUSTOM14
479      , CUSTOM15
480      , PLAN_TYPE_CODE        /* 4471527 */
481     )
482     (
483      SELECT
484        g_worker_id
485          , rl.PROJECT_ID
486      , rl.PROJECT_ORG_ID
487      , rl.PROJECT_ORGANIZATION_ID
488      , rl.PROJECT_ELEMENT_ID
489      , rl.TIME_ID
490      , rl.PERIOD_TYPE_ID
491      , rl.CALENDAR_TYPE
492      , rl.RBS_AGGR_LEVEL
493      , rl.WBS_ROLLUP_FLAG
494      , rl.PRG_ROLLUP_FLAG
495      , rl.CURR_RECORD_TYPE_ID
496      , rl.CURRENCY_CODE
497      , rl.RBS_ELEMENT_ID
498      , rl.RBS_VERSION_ID
499      , p_dest_fp_version_ids(i)
500      , l_dest_plan_type_ids(i)
501      , rl.RAW_COST
502      , rl.BRDN_COST
503      , rl.REVENUE
504      , rl.BILL_RAW_COST
505      , rl.BILL_BRDN_COST
506      , rl.BILL_LABOR_RAW_COST
507      , rl.BILL_LABOR_BRDN_COST
508      , rl.BILL_LABOR_HRS
509      , rl.EQUIPMENT_RAW_COST
510      , rl.EQUIPMENT_BRDN_COST
511      , rl.CAPITALIZABLE_RAW_COST
512      , rl.CAPITALIZABLE_BRDN_COST
513      , rl.LABOR_RAW_COST
514      , rl.LABOR_BRDN_COST
515      , rl.LABOR_HRS
516      , rl.LABOR_REVENUE
517      , rl.EQUIPMENT_HOURS
518      , rl.BILLABLE_EQUIPMENT_HOURS
519      , rl.SUP_INV_COMMITTED_COST
520      , rl.PO_COMMITTED_COST
521      , rl.PR_COMMITTED_COST
522      , rl.OTH_COMMITTED_COST
523        , rl.ACT_LABOR_HRS
524            , rl.ACT_EQUIP_HRS
525            , rl.ACT_LABOR_BRDN_COST
526            , rl.ACT_EQUIP_BRDN_COST
527            , rl.ACT_BRDN_COST
528            , rl.ACT_RAW_COST
529            , rl.ACT_REVENUE
530          , rl.ACT_LABOR_RAW_COST
531          , rl.ACT_EQUIP_RAW_COST
532            , rl.ETC_LABOR_HRS
533            , rl.ETC_EQUIP_HRS
534            , rl.ETC_LABOR_BRDN_COST
535            , rl.ETC_EQUIP_BRDN_COST
536            , rl.ETC_BRDN_COST
537          , rl.ETC_RAW_COST
538          , rl.ETC_LABOR_RAW_COST
539          , rl.ETC_EQUIP_RAW_COST
540      , rl.CUSTOM1
541      , rl.CUSTOM2
542      , rl.CUSTOM3
543      , rl.CUSTOM4
544      , rl.CUSTOM5
545      , rl.CUSTOM6
546      , rl.CUSTOM7
547      , rl.CUSTOM8
548      , rl.CUSTOM9
549      , rl.CUSTOM10
550      , rl.CUSTOM11
551      , rl.CUSTOM12
552      , rl.CUSTOM13
553      , rl.CUSTOM14
554      , rl.CUSTOM15
555      , rl.PLAN_TYPE_CODE        /* 4471527 */
556     FROM
557          pji_fp_xbs_accum_f rl
558     WHERE 1=1
559          AND ( (rl.rbs_aggr_level = g_top_level) OR (rl.rbs_aggr_level = g_lowest_level AND wbs_rollup_flag = 'N' ))
560        AND rl.plan_version_id = p_source_fp_version_ids(i));
561 
562     EXTRACT_FIN_PLAN_VERSIONS(
563       p_fp_version_ids    => p_dest_fp_version_ids
564     , p_slice_type        => 'PRI'
565     );                        print_time(' 2.01 .. ');
566 
567     POPULATE_WBS_HDR;          print_time(' 2.1 .. ');
568 
569     UPDATE_WBS_HDR;            print_time(' 2.11 .. ');
570 
571     POPULATE_RBS_HDR;          print_time(' 2.2 .. ');
572 
573     MERGE_INTO_FP_FACT;
574 
575     CLEANUP_INTERIM_TABLES;    print_time(' 2.3 .. ');
576 
577 
578     IF (p_commit = 'T') THEN
579       COMMIT;
580     END IF;
581 
582 EXCEPTION
583   WHEN OTHERS THEN
584     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
585                              p_procedure_name => 'COPY_PLANS');
586     RAISE;
587 END;
588 
589 
590 PROCEDURE COPY_PRIMARY_SINGLE
591 (
592   p_source_plan_ver_id  IN NUMBER := NULL
593 , p_target_plan_ver_id  IN NUMBER := NULL
594 , p_commit              IN VARCHAR2 := 'F') IS
595 
596     l_dest_fp_version_ids  SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
597 
598     l_dest_plan_type_id     NUMBER := NULL;
599     l_dest_project_id       NUMBER := NULL;
600 
601 BEGIN
602 
603     print_time ( ' COPY_PRIMARY_SINGLE api 001 ' || p_source_plan_ver_id || ' ' || p_target_plan_ver_id );
604 
605     SELECT fin_plan_type_id, project_id
606     INTO   l_dest_plan_type_id, l_dest_project_id
607     FROM   pa_budget_versions
608     WHERE  budget_version_id = p_target_plan_ver_id;
609 
610     DELETE FROM PJI_FP_XBS_ACCUM_F
611     WHERE plan_version_id  = p_target_plan_ver_id
612       AND project_id       = l_dest_project_id;
613 
614     DELETE FROM pji_rollup_level_status
615     WHERE plan_version_id = p_target_plan_ver_id;
616 
617     CLEANUP_INTERIM_TABLES;
618     print_time(' 1.9 .. ');
619 
620     INSERT INTO pji_fp_aggr_pjp1_t
621     (
622        worker_id
623      , PROJECT_ID
624      , PROJECT_ORG_ID
625      , PROJECT_ORGANIZATION_ID
626      -- , PARTITION_ID
627      , PROJECT_ELEMENT_ID
628      , TIME_ID
629      , PERIOD_TYPE_ID
630      , CALENDAR_TYPE
631      , RBS_AGGR_LEVEL
632      , WBS_ROLLUP_FLAG
633      , PRG_ROLLUP_FLAG
634      , CURR_RECORD_TYPE_ID
635      , CURRENCY_CODE
636      , RBS_ELEMENT_ID
637      , RBS_VERSION_ID
638      , PLAN_VERSION_ID
639      , PLAN_TYPE_ID
640      , RAW_COST
641      , BRDN_COST
642      , REVENUE
643      , BILL_RAW_COST
644      , BILL_BRDN_COST
645      , BILL_LABOR_RAW_COST
646      , BILL_LABOR_BRDN_COST
647      , BILL_LABOR_HRS
648      , EQUIPMENT_RAW_COST
649      , EQUIPMENT_BRDN_COST
650      , CAPITALIZABLE_RAW_COST
651      , CAPITALIZABLE_BRDN_COST
652      , LABOR_RAW_COST
653      , LABOR_BRDN_COST
654      , LABOR_HRS
655      , LABOR_REVENUE
656      , EQUIPMENT_HOURS
657      , BILLABLE_EQUIPMENT_HOURS
658      , SUP_INV_COMMITTED_COST
659      , PO_COMMITTED_COST
660      , PR_COMMITTED_COST
661      , OTH_COMMITTED_COST
662        , ACT_LABOR_HRS
663            , ACT_EQUIP_HRS
664            , ACT_LABOR_BRDN_COST
665            , ACT_EQUIP_BRDN_COST
666            , ACT_BRDN_COST
667            , ACT_RAW_COST
668            , ACT_REVENUE
669          , ACT_LABOR_RAW_COST
670          , ACT_EQUIP_RAW_COST
671            , ETC_LABOR_HRS
672            , ETC_EQUIP_HRS
673            , ETC_LABOR_BRDN_COST
674            , ETC_EQUIP_BRDN_COST
675            , ETC_BRDN_COST
676          , ETC_RAW_COST
677          , ETC_LABOR_RAW_COST
678          , ETC_EQUIP_RAW_COST
679      , CUSTOM1
680      , CUSTOM2
681      , CUSTOM3
682      , CUSTOM4
683      , CUSTOM5
684      , CUSTOM6
685      , CUSTOM7
686      , CUSTOM8
687      , CUSTOM9
688      , CUSTOM10
689      , CUSTOM11
690      , CUSTOM12
691      , CUSTOM13
692      , CUSTOM14
693      , CUSTOM15
694      , PLAN_TYPE_CODE      /* 4471527 */
695     )
696     (
697      SELECT
698        g_worker_id
699          , rl.PROJECT_ID
700      , rl.PROJECT_ORG_ID
701      , rl.PROJECT_ORGANIZATION_ID
702      -- , rl.PARTITION_ID
703      , rl.PROJECT_ELEMENT_ID
704      , rl.TIME_ID
705      , rl.PERIOD_TYPE_ID
706      , rl.CALENDAR_TYPE
707      , rl.RBS_AGGR_LEVEL
708      , rl.WBS_ROLLUP_FLAG
709      , rl.PRG_ROLLUP_FLAG
710      , rl.CURR_RECORD_TYPE_ID
711      , rl.CURRENCY_CODE
712      , rl.RBS_ELEMENT_ID
713      , rl.RBS_VERSION_ID
714      , p_target_plan_ver_id
715      , l_dest_plan_type_id plan_type_id
716      , rl.RAW_COST
717      , rl.BRDN_COST
718      , rl.REVENUE
719      , rl.BILL_RAW_COST
720      , rl.BILL_BRDN_COST
721      , rl.BILL_LABOR_RAW_COST
722      , rl.BILL_LABOR_BRDN_COST
723      , rl.BILL_LABOR_HRS
724      , rl.EQUIPMENT_RAW_COST
725      , rl.EQUIPMENT_BRDN_COST
726      , rl.CAPITALIZABLE_RAW_COST
727      , rl.CAPITALIZABLE_BRDN_COST
728      , rl.LABOR_RAW_COST
729      , rl.LABOR_BRDN_COST
730      , rl.LABOR_HRS
731      , rl.LABOR_REVENUE
732      , rl.EQUIPMENT_HOURS
733      , rl.BILLABLE_EQUIPMENT_HOURS
734      , rl.SUP_INV_COMMITTED_COST
735      , rl.PO_COMMITTED_COST
736      , rl.PR_COMMITTED_COST
737      , rl.OTH_COMMITTED_COST
738        , rl.ACT_LABOR_HRS
739            , rl.ACT_EQUIP_HRS
740            , rl.ACT_LABOR_BRDN_COST
741            , rl.ACT_EQUIP_BRDN_COST
742            , rl.ACT_BRDN_COST
743            , rl.ACT_RAW_COST
744            , rl.ACT_REVENUE
745          , rl.ACT_LABOR_RAW_COST
746          , rl.ACT_EQUIP_RAW_COST
747            , rl.ETC_LABOR_HRS
748            , rl.ETC_EQUIP_HRS
749            , rl.ETC_LABOR_BRDN_COST
750            , rl.ETC_EQUIP_BRDN_COST
751            , rl.ETC_BRDN_COST
752          , rl.ETC_RAW_COST
753          , rl.ETC_LABOR_RAW_COST
754          , rl.ETC_EQUIP_RAW_COST
755      , rl.CUSTOM1
756      , rl.CUSTOM2
757      , rl.CUSTOM3
758      , rl.CUSTOM4
759      , rl.CUSTOM5
760      , rl.CUSTOM6
761      , rl.CUSTOM7
762      , rl.CUSTOM8
763      , rl.CUSTOM9
764      , rl.CUSTOM10
765      , rl.CUSTOM11
766      , rl.CUSTOM12
767      , rl.CUSTOM13
768      , rl.CUSTOM14
769      , rl.CUSTOM15
770      , rl.PLAN_TYPE_CODE     /* 4471527 */
771     FROM pji_fp_xbs_accum_f rl
772     WHERE 1=1
773      AND rl.plan_version_id = p_source_plan_ver_id
774      AND ( (rl.rbs_aggr_level = g_top_level) OR (rl.rbs_aggr_level = g_lowest_level AND wbs_rollup_flag = 'N' ))
775      ) ;
776 
777     print_time ( ' COPY_PRIMARY_SINGLE api 002 ' );
778 
779 
780     l_dest_fp_version_ids := SYSTEM.pa_num_tbl_type(p_target_plan_ver_id);
781 
782     EXTRACT_FIN_PLAN_VERSIONS(
783       p_fp_version_ids    => l_dest_fp_version_ids
784     , p_slice_type        => 'PRI'
785     );                                      print_time ( ' COPY_PRIMARY_SINGLE api 003 ' );
786 
787     POPULATE_WBS_HDR;          print_time(' 2.1 .. ');
788 
789     UPDATE_WBS_HDR;            print_time(' 2.11 .. ');
790 
791     POPULATE_RBS_HDR;          print_time(' 2.2 .. ');
792 
793     MERGE_INTO_FP_FACT;
794 
795     CLEANUP_INTERIM_TABLES;    print_time(' 2.3 .. ');
796 
797     print_time ( ' COPY_PRIMARY_SINGLE api 004 ' || sql%rowcount);
798 
799 
800     IF (p_commit = 'T') THEN
801       COMMIT;
802     END IF;
803 
804     print_time ( ' COPY_PRIMARY_SINGLE api 005 ');
805 
806 EXCEPTION
807   WHEN OTHERS THEN
808     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
809                              p_procedure_name => 'COPY_PRIMARY_SINGLE');
810     RAISE;
811 END;
812 
813 
814 --
815 -- Get the budget versions that need to be extracted INTO a temp table.
816 -- This is to set scope for extraction as well as track time/curr dangling records
817 --  in the case of secondary slice creation.
818 --
819 PROCEDURE EXTRACT_FIN_PLAN_VERS_BULK(
820   p_slice_type        IN   VARCHAR2 := NULL  -- 'PRI' or 'SEC' or 'SECRBS'
821 ) IS
822 BEGIN
823 
824   print_time('EXTRACT_FIN_PLAN_VERS_BULK : Begin ' );
825 
826   IF ( p_slice_type NOT IN ('PRI', 'SEC', 'SECRBS') ) THEN
827     print_time('EXTRACT_FIN_PLAN_VERSIONS : Invalid slice type. Exitting. ' );
828     RETURN;
829   END IF;
830 
831 
832   IF ( p_slice_type = 'PRI') THEN
833 
834     INSERT INTO PJI_FM_EXTR_PLNVER3_T
835     (
836       PROJECT_ID               ,
837       PLAN_VERSION_ID          ,
838       WBS_STRUCT_VERSION_ID    ,
839       RBS_STRUCT_VERSION_ID    ,
840       PLAN_TYPE_CODE           ,          /* 4471527 */
841       PLAN_TYPE_ID             ,
842       TIME_PHASED_TYPE_CODE    ,
843       TIME_DANGLING_FLAG       ,
844       RATE_DANGLING_FLAG       ,
845       PROJECT_TYPE_CLASS       ,
846       WP_FLAG                  ,
847         CURRENT_FLAG             ,
848         ORIGINAL_FLAG            ,
849         CURRENT_ORIGINAL_FLAG    ,
850         BASELINED_FLAG           ,
851       SECONDARY_RBS_FLAG
852     )
853       SELECT
854             bv.project_id                      project_id
855           , bv.budget_version_id               plan_version_id
856           , DECODE ( NVL(bv.wp_version_flag, 'N')
857                            , 'Y', bv.project_structure_version_id
858                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id) -- -9999 --
859                                    )                           wbs_struct_version_id
860           , fpo.rbs_version_id                 rbs_struct_version_id
861 --          , to_char(fpo.fin_plan_type_id)      plan_type_code
862           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
863           , fpo.fin_plan_type_id               plan_type_id
864           , DECODE(bv.version_type
865                       , g_all_timeph_code,     fpo.all_time_phased_code
866                       , g_cost_timeph_code,    fpo.cost_time_phased_code
867                       , g_rev_timeph_code, fpo.revenue_time_phased_code
868                      )                       time_phased_type_code
869           , NULL                             time_dangling_flag   -- to be used for dangling check.
870           , NULL                             rate_dangling_flag   -- to be used for dangling check.
871           , NULL                             PROJECT_TYPE_CLASS
872                   , NVL(bv.wp_version_flag, 'N') is_wp_flag
873                   , bv.current_flag                  current_flag
874                   , bv.original_flag                 original_flag
875                   , bv.current_original_flag         current_original_flag
876                   , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
877                 , 'N'                                SECONDARY_RBS_FLAG
878       FROM
879            pa_budget_versions bv -- @pjdev115  bv
880          , pa_proj_fp_options  fpo -- @pjdev115  fpo
881          , pa_projects_all  ppa -- @pjdev115    ppa
882       WHERE 1=1
883           AND ppa.project_id = bv.project_id
884           AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
885           AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
886           AND fpo.project_id = bv.project_id
887           AND bv.fin_plan_type_id = fpo.fin_plan_type_id
888           AND bv.budget_version_id = fpo.fin_plan_version_id
889           AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
890           AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
891           -- AND bv.pji_summarized_flag = 'N'
892           ;
893 
894   ELSIF ( p_slice_type = 'SEC') THEN
895 
896     INSERT INTO PJI_FM_EXTR_PLNVER3_T
897     (
898       PROJECT_ID               ,
899       PLAN_VERSION_ID          ,
900       WBS_STRUCT_VERSION_ID    ,
901       RBS_STRUCT_VERSION_ID    ,
902       PLAN_TYPE_CODE           ,
903       PLAN_TYPE_ID             ,
904       TIME_PHASED_TYPE_CODE    ,
905       TIME_DANGLING_FLAG       ,
906       RATE_DANGLING_FLAG       ,
907       PROJECT_TYPE_CLASS       ,
908       WP_FLAG                  ,
909         CURRENT_FLAG             ,
910         ORIGINAL_FLAG            ,
911         CURRENT_ORIGINAL_FLAG    ,
912         BASELINED_FLAG           ,
913       SECONDARY_RBS_FLAG
914     )
915       SELECT
916             bv.project_id                      project_id
917           , bv.budget_version_id               plan_version_id
918           , DECODE ( NVL(bv.wp_version_flag, 'N')
919                            , 'Y', bv.project_structure_version_id
920                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id) -- -9999 --
921                                    )                           wbs_struct_version_id
922           , fpo.rbs_version_id                 rbs_struct_version_id
923 --          , to_char(fpo.fin_plan_type_id)      plan_type_code
924           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
925           , fpo.fin_plan_type_id               plan_type_id
926           , DECODE(bv.version_type
927                       , g_all_timeph_code,     fpo.all_time_phased_code
928                       , g_cost_timeph_code,    fpo.cost_time_phased_code
929                       , g_rev_timeph_code, fpo.revenue_time_phased_code
930                      )                       time_phased_type_code
931           , NULL                             time_dangling_flag   -- to be used for dangling check.
932           , NULL                             rate_dangling_flag   -- to be used for dangling check.
933           , NULL                             PROJECT_TYPE_CLASS
934                   , NVL(bv.wp_version_flag, 'N') is_wp_flag
935                   , bv.current_flag                  current_flag
936                   , bv.original_flag                 original_flag
937                   , bv.current_original_flag         current_original_flag
938                   , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
939               , 'N'                                  SECONDARY_RBS_FLAG
940       FROM
941            pa_budget_versions bv -- @pjdev115  bv
942          , pa_proj_fp_options  fpo -- @pjdev115  fpo  -- is there a work plan options table?
943          , pa_projects_all  ppa -- @pjdev115    ppa
944       WHERE 1=1
945           AND ppa.project_id = bv.project_id
946           AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
947           AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
948           AND fpo.project_id = bv.project_id
949           AND bv.fin_plan_type_id = fpo.fin_plan_type_id
950           AND bv.budget_version_id = fpo.fin_plan_version_id
951           AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
952           AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
953           -- AND bv.pji_summarized_flag = 'P' -- For plan baselining, don't check for summarized flag.
954           -- Temporarily taking this condition out for global currency conversion.
955           AND bv.budget_status_code = 'B'
956           AND NVL(bv.wp_version_flag, 'N') = 'N';
957 
958 
959   ELSIF ( p_slice_type = 'SECRBS') THEN
960 
961     INSERT INTO PJI_FM_EXTR_PLNVER3_T
962     (
963       PROJECT_ID               ,
964       PLAN_VERSION_ID          ,
965       WBS_STRUCT_VERSION_ID    ,
966       RBS_STRUCT_VERSION_ID    ,
967       PLAN_TYPE_CODE           ,
968       PLAN_TYPE_ID             ,
969       TIME_PHASED_TYPE_CODE    ,
970       TIME_DANGLING_FLAG       ,
971       RATE_DANGLING_FLAG       ,
972       PROJECT_TYPE_CLASS       ,
973       WP_FLAG                  ,
974         CURRENT_FLAG             ,
975         ORIGINAL_FLAG            ,
976         CURRENT_ORIGINAL_FLAG    ,
977         BASELINED_FLAG           ,
978       SECONDARY_RBS_FLAG
979     )
980       SELECT
981             bv.project_id                      project_id
982           , bv.budget_version_id               plan_version_id
983           , DECODE ( NVL(bv.wp_version_flag, 'N')
984                            , 'Y', bv.project_structure_version_id
985                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id) -- -9999 --
986                                    )                           wbs_struct_version_id
987                   , rpa.rbs_version_id                 rbs_struct_version_id
988           -- , fpo.rbs_version_id                 rbs_struct_version_id
989 --          , to_char(fpo.fin_plan_type_id)      plan_type_code
990           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
991           , fpo.fin_plan_type_id               plan_type_id
992           , DECODE(bv.version_type
993                       , g_all_timeph_code,     fpo.all_time_phased_code
994                       , g_cost_timeph_code,    fpo.cost_time_phased_code
995                       , g_rev_timeph_code, fpo.revenue_time_phased_code
996                      )                       time_phased_type_code
997           , NULL                             time_dangling_flag   -- to be used for dangling check.
998           , NULL                             rate_dangling_flag   -- to be used for dangling check.
999           , NULL                             PROJECT_TYPE_CLASS
1000                   , NVL(bv.wp_version_flag, 'N') is_wp_flag
1001                   , bv.current_flag                  current_flag
1002                   , bv.original_flag                 original_flag
1003                   , bv.current_original_flag         current_original_flag
1004                   , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
1005                   , 'Y'                                          SECONDARY_RBS_FLAG
1006       FROM
1007            pa_budget_versions bv -- @pjdev115  bv
1008          , pa_proj_fp_options  fpo -- @pjdev115  fpo  -- is there a work plan options table?
1009          , pa_projects_all  ppa -- @pjdev115    ppa
1010                  , PA_RBS_PRJ_ASSIGNMENTS rpa
1011       WHERE 1=1
1012           AND ppa.project_id = bv.project_id
1013           AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
1014           AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
1015           AND fpo.project_id = bv.project_id
1016           AND bv.fin_plan_type_id = fpo.fin_plan_type_id
1017           AND bv.budget_version_id = fpo.fin_plan_version_id
1018           AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
1019           AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
1020           -- AND bv.pji_summarized_flag = 'P' -- Pri slice created or dangling records exist.
1021           -- Temporarily taking this condition out for global currency conversion.
1022           AND bv.budget_status_code = 'B'
1023             AND rpa.project_id = bv.project_id
1024             -- AND DECODE ( rpa.wp_usage_flag, 'Y', 'Y', 'X') = NVL(bv.wp_version_flag, 'N')
1025             -- AND DECODE ( rpa.fp_usage_flag, 'Y', 'N', 'X') = NVL(bv.wp_version_flag, 'N')
1026             AND rpa.assignment_status = 'ACTIVE'
1027             AND rpa.rbs_version_id <> NVL(fpo.rbs_version_id, -1)
1028           AND NVL(bv.wp_version_flag, 'N')  = 'N'
1029             AND rpa.reporting_usage_flag = 'Y';
1030 
1031   END IF;
1032 
1033 
1034   print_time('EXTRACT_FIN_PLAN_VERS_BULK : End .. rows processed ' || SQL%ROWCOUNT );
1035 
1036 EXCEPTION
1037   WHEN OTHERS THEN
1038     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
1039                              p_procedure_name => 'EXTRACT_FIN_PLAN_VERS_BULK');
1040     print_time('EXTRACT_FIN_PLAN_VERS_BULK : Exception: ' || sqlerrm );
1041     RAISE;
1042 END;
1043 
1044 
1045 --
1046 -- Get the budget versions that need to be extracted INTO a temp table.
1047 -- This is to set scope for extraction as well as track time/curr dangling records
1048 --  in the case of secondary slice creation.
1049 --
1050 PROCEDURE EXTRACT_FIN_PLAN_VERSIONS(
1051   p_fp_version_ids    IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
1052 , p_slice_type        IN   VARCHAR2 := NULL -- 'PRI' or 'SEC' or 'SECRBS'
1053 ) IS
1054   l_count NUMBER;
1055 BEGIN
1056 
1057   print_time('EXTRACT_FIN_PLAN_VERSIONS : Begin ' );
1058 
1059   IF (p_slice_type NOT IN ( 'PRI', 'SEC', 'SECRBS' )) THEN
1060     print_time('EXTRACT_FIN_PLAN_VERSIONS : Invalid slice type. Exitting. ' );
1061     RETURN;
1062   END IF;
1063 
1064   print_time('EXTRACT_FIN_PLAN_VERSIONS : l_count is ... ' || p_fp_version_ids.COUNT );
1065 
1066   IF (p_slice_type = 'PRI') THEN
1067 
1068     FOR I IN 1..p_fp_version_ids.COUNT LOOP
1069 
1070           INSERT INTO PJI_FM_EXTR_PLNVER3_T ver3
1071           (
1072             PROJECT_ID               ,
1073             PLAN_VERSION_ID          ,
1074             WBS_STRUCT_VERSION_ID    ,
1075             RBS_STRUCT_VERSION_ID    ,
1076             PLAN_TYPE_CODE           ,
1077             PLAN_TYPE_ID             ,
1078             TIME_PHASED_TYPE_CODE    ,
1079             TIME_DANGLING_FLAG       ,
1080             RATE_DANGLING_FLAG       ,
1081             PROJECT_TYPE_CLASS       ,
1082             WP_FLAG                  ,
1083             CURRENT_FLAG             ,
1084             ORIGINAL_FLAG            ,
1085             CURRENT_ORIGINAL_FLAG    ,
1086             BASELINED_FLAG           ,
1087               SECONDARY_RBS_FLAG
1088           )
1089             SELECT
1090                   bv.project_id                      project_id
1091                 , bv.budget_version_id               plan_version_id
1092                 , DECODE ( NVL(bv.wp_version_flag, 'N')
1093                            , 'Y', bv.project_structure_version_id
1094                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id)
1095                                    )                           wbs_struct_version_id
1096                 , fpo.rbs_version_id                 rbs_struct_version_id
1097 --                , to_char(fpo.fin_plan_type_id)      plan_type_code
1098           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
1099                 , fpo.fin_plan_type_id               plan_type_id
1100                 , DECODE(bv.version_type
1101                             , g_all_timeph_code,     fpo.all_time_phased_code
1102                             , g_cost_timeph_code,    fpo.cost_time_phased_code
1103                             , g_rev_timeph_code, fpo.revenue_time_phased_code
1104                            )                       time_phased_type_code
1105                 , NULL                             time_dangling_flag   -- to be used for dangling check.
1106                 , NULL                             rate_dangling_flag   -- to be used for dangling check.
1107                 , NULL                             PROJECT_TYPE_CLASS
1108                 , NVL(bv.wp_version_flag, 'N') is_wp_flag
1109                 , bv.current_flag                  current_flag
1110                 , bv.original_flag                 original_flag
1111                 , bv.current_original_flag         current_original_flag
1112                 , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
1113                     , 'N'                                    SECONDARY_RBS_FLAG
1114             FROM
1115                  pa_budget_versions bv -- @pjdev115  bv
1116                , pa_proj_fp_options  fpo -- @pjdev115  fpo
1117                , pa_projects_all  ppa -- @pjdev115    ppa
1118             WHERE 1=1
1119                 AND ppa.project_id = bv.project_id
1120                 AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
1121                 AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
1122                                                     -- Ask VR: How about WP version.. are they picked up with this condition??
1123                 AND fpo.project_id = bv.project_id
1124                 AND bv.fin_plan_type_id = fpo.fin_plan_type_id
1125                 AND bv.budget_version_id = fpo.fin_plan_version_id
1126                 AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
1127                 AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
1128                 -- AND bv.pji_summarized_flag = 'N'
1129                 AND bv.budget_version_id = p_fp_version_ids(i) ;
1130 
1131     END LOOP;
1132 
1133   ELSIF (p_slice_type = 'SEC') THEN
1134 
1135     FOR I IN 1..p_fp_version_ids.COUNT LOOP
1136 
1137           INSERT INTO PJI_FM_EXTR_PLNVER3_T ver3
1138           (
1139             PROJECT_ID               ,
1140             PLAN_VERSION_ID          ,
1141             WBS_STRUCT_VERSION_ID    ,
1142             RBS_STRUCT_VERSION_ID    ,
1143             PLAN_TYPE_CODE           ,
1144             PLAN_TYPE_ID             ,
1145             TIME_PHASED_TYPE_CODE    ,
1146             TIME_DANGLING_FLAG       ,
1147             RATE_DANGLING_FLAG       ,
1148             PROJECT_TYPE_CLASS       ,
1149             WP_FLAG                  ,
1150             CURRENT_FLAG             ,
1151             ORIGINAL_FLAG            ,
1152             CURRENT_ORIGINAL_FLAG    ,
1153             BASELINED_FLAG           ,
1154               SECONDARY_RBS_FLAG
1155           )
1156             SELECT
1157                   bv.project_id                      project_id
1158                 , bv.budget_version_id               plan_version_id
1159                 , DECODE ( NVL(bv.wp_version_flag, 'N')
1160                            , 'Y', bv.project_structure_version_id
1161                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id)
1162                                    )                           wbs_struct_version_id
1163                 , fpo.rbs_version_id                 rbs_struct_version_id
1164 --                , to_char(fpo.fin_plan_type_id)      plan_type_code
1165           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
1166                 , fpo.fin_plan_type_id               plan_type_id
1167                 , DECODE(bv.version_type
1168                             , g_all_timeph_code,     fpo.all_time_phased_code
1169                             , g_cost_timeph_code,    fpo.cost_time_phased_code
1170                             , g_rev_timeph_code, fpo.revenue_time_phased_code
1171                            )                       time_phased_type_code
1172                 , NULL                             time_dangling_flag   -- to be used for dangling check.
1173                 , NULL                             rate_dangling_flag   -- to be used for dangling check.
1174                 , NULL                             PROJECT_TYPE_CLASS
1175                 , NVL(bv.wp_version_flag, 'N') is_wp_flag
1176                 , bv.current_flag                  current_flag
1177                 , bv.original_flag                 original_flag
1178                 , bv.current_original_flag         current_original_flag
1179                 , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
1180                     , 'N'                                    SECONDARY_RBS_FLAG
1181             FROM
1182                  pa_budget_versions bv -- @pjdev115  bv
1183                , pa_proj_fp_options  fpo -- @pjdev115  fpo
1184                , pa_projects_all  ppa -- @pjdev115    ppa
1185             WHERE 1=1
1186                 AND ppa.project_id = bv.project_id
1187                 AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
1188                 AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
1189                                                     -- Ask VR: How about WP version.. are they picked up with this condition??
1190                 AND fpo.project_id = bv.project_id
1191                 AND bv.fin_plan_type_id = fpo.fin_plan_type_id
1192                 AND bv.budget_version_id = fpo.fin_plan_version_id
1193                 AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
1194                 AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
1195                 -- AND bv.pji_summarized_flag = 'P' -- Pri slice created or dangling records exist.
1196                 -- Temporarily taking this condition out for global currency conversion.
1197                 AND bv.budget_status_code = 'B'
1198                 AND NVL(bv.wp_version_flag, 'N') = 'N'
1199                 AND bv.budget_version_id = p_fp_version_ids(i) ;
1200 
1201     END LOOP;
1202 
1203 
1204   ELSIF (p_slice_type = 'SECRBS') THEN
1205 
1206     FOR I IN 1..p_fp_version_ids.COUNT LOOP
1207 
1208           INSERT INTO PJI_FM_EXTR_PLNVER3_T ver3
1209           (
1210             PROJECT_ID               ,
1211             PLAN_VERSION_ID          ,
1212             WBS_STRUCT_VERSION_ID    ,
1213             RBS_STRUCT_VERSION_ID    ,
1214             PLAN_TYPE_CODE           ,
1215             PLAN_TYPE_ID             ,
1216             TIME_PHASED_TYPE_CODE    ,
1217             TIME_DANGLING_FLAG       ,
1218             RATE_DANGLING_FLAG       ,
1219             PROJECT_TYPE_CLASS       ,
1220             WP_FLAG                  ,
1221             CURRENT_FLAG             ,
1222             ORIGINAL_FLAG            ,
1223             CURRENT_ORIGINAL_FLAG    ,
1224             BASELINED_FLAG           ,
1225             SECONDARY_RBS_FLAG
1226           )
1227       SELECT
1228             bv.project_id                      project_id
1229           , bv.budget_version_id               plan_version_id
1230           , DECODE ( NVL(bv.wp_version_flag, 'N')
1231                            , 'Y', bv.project_structure_version_id
1232                            , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id)
1233                                    )                           wbs_struct_version_id
1234                   , rpa.rbs_version_id                 rbs_struct_version_id
1235 --          , to_char(fpo.fin_plan_type_id)      plan_type_code
1236           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
1237           , fpo.fin_plan_type_id               plan_type_id
1238           , DECODE(bv.version_type
1239                       , g_all_timeph_code,     fpo.all_time_phased_code
1240                       , g_cost_timeph_code,    fpo.cost_time_phased_code
1241                       , g_rev_timeph_code, fpo.revenue_time_phased_code
1242                      )                       time_phased_type_code
1243           , NULL                             time_dangling_flag   -- to be used for dangling check.
1244           , NULL                             rate_dangling_flag   -- to be used for dangling check.
1245           , NULL                             PROJECT_TYPE_CLASS
1246                   , NVL(bv.wp_version_flag, 'N') is_wp_flag
1247                   , bv.current_flag                  current_flag
1248                   , bv.original_flag                 original_flag
1249                   , bv.current_original_flag         current_original_flag
1250                   , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
1251                   , 'Y'                                          SECONDARY_RBS_FLAG
1252       FROM
1253            pa_budget_versions bv -- @pjdev115  bv
1254                , pa_proj_fp_options  fpo -- @pjdev115  fpo
1255          , pa_projects_all  ppa -- @pjdev115    ppa
1256                  , PA_RBS_PRJ_ASSIGNMENTS rpa
1257       WHERE 1=1
1258           AND ppa.project_id = bv.project_id
1259           AND bv.version_type is not NULL -- COST, REVENUE, etc. Should not be null.
1260           AND bv.fin_plan_type_id is not NULL -- Old budgets model data is not picked up with this condition.
1261                                               -- Ask VR: How about WP version.. are they picked up with this condition??
1262           AND fpo.project_id = bv.project_id
1263           AND bv.fin_plan_type_id = fpo.fin_plan_type_id
1264           AND bv.budget_version_id = fpo.fin_plan_version_id
1265           AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'  -- Other values are: plan type and project.
1266           AND bv.version_type IN ( g_all_timeph_code , g_cost_timeph_code , g_rev_timeph_code) -- Eg of other version type is ORG_FORECAST.
1267           -- AND bv.pji_summarized_flag = 'P' -- Pri slice created or dangling records exist.
1268           -- Temporarily taking this condition out for global currency conversion.
1269           AND bv.budget_status_code = 'B'
1270             AND rpa.project_id = bv.project_id
1271             AND rpa.assignment_status = 'ACTIVE'
1272             AND rpa.rbs_version_id <> NVL(fpo.rbs_version_id, -1)
1273             AND rpa.reporting_usage_flag = 'Y'
1274           AND NVL(bv.wp_version_flag, 'N')  = 'N'
1275                 AND bv.budget_version_id = p_fp_version_ids(i)
1276                   AND bv.project_id = rpa.project_id;
1277 
1278     END LOOP;
1279 
1280   END IF;
1281 
1282   print_time('EXTRACT_FIN_PLAN_VERSIONS : l_count is ... ' || SQL%ROWCOUNT );
1283 
1284   print_time('EXTRACT_FIN_PLAN_VERSIONS : End' );
1285 
1286 EXCEPTION
1287   WHEN OTHERS THEN
1288     print_time('EXTRACT_FIN_PLAN_VERSIONS : Exception: ' || sqlerrm );
1289     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
1290                              p_procedure_name => 'EXTRACT_FIN_PLAN_VERSIONS');
1291     RAISE;
1292 END;
1293 
1294 
1295 --
1296 -- Insert -3, -4 versions into ver3.
1297 --
1298 PROCEDURE EXTRACT_CB_CO_PLAN_VERSIONS IS
1299 BEGIN
1300 
1301   INSERT INTO pji_fm_extr_plnver3_t
1302   (
1303         project_id
1304         , plan_version_id
1305         , wbs_struct_version_id
1306         , rbs_struct_version_id
1307         , plan_type_id
1308         , plan_type_code
1309         , time_phased_type_code
1310         , time_dangling_flag
1311         , rate_dangling_flag
1312         , project_type_class
1313         , wp_flag
1314         , current_flag
1315         , original_flag
1316         , current_original_flag
1317         , baselined_flag
1318         , secondary_rbs_flag
1319         , lp_flag
1320   )
1321   SELECT DISTINCT
1322          project_id
1323        , -3 -- plan_version_id
1324            , wbs_struct_version_id
1325            , rbs_struct_version_id
1326            , plan_type_id
1327            , plan_type_code          /* 4471527 */
1328            , time_phased_type_code
1329            , NULL -- time dangling flag
1330            , NULL -- rate dangling flag
1331            , NULL -- project type class
1332            , wp_flag -- wp flag
1333            , current_flag -- curr flag
1334            , 'N' -- original_flag -- orig flag
1335            , 'N' -- current_original_flag -- corr orig flag
1336            , baselined_flag -- baselined flag
1337            , secondary_rbs_flag -- sec rbs flag
1338            , lp_flag -- lp flag
1339   FROM pji_fm_extr_plnver3_t
1340   WHERE wp_flag = 'N'
1341     AND baselined_flag = 'Y'
1342         AND current_flag = 'Y'
1343         AND plan_version_id > 0
1344         AND rate_dangling_flag IS NULL
1345         AND time_dangling_flag IS NULL
1346   UNION ALL
1347   SELECT DISTINCT
1348          project_id
1349        , -4 -- plan_version_id
1350            , wbs_struct_version_id
1351            , rbs_struct_version_id
1352            , plan_type_id
1353            , plan_type_code       /* 4471527 */
1354            , time_phased_type_code
1355            , NULL -- time dangling flag
1356            , NULL -- rate dangling flag
1357            , NULL -- project type class
1358            , wp_flag -- wp flag
1359            , current_flag -- curr flag
1360            , original_flag -- orig flag
1361            , current_original_flag -- corr orig flag
1362            , 'N' -- baselined_flag -- baselined flag
1363            , secondary_rbs_flag -- sec rbs flag
1364            , lp_flag -- lp flag
1365   FROM pji_fm_extr_plnver3_t
1366   WHERE wp_flag = 'N'
1367     AND baselined_flag = 'Y'
1368         AND current_original_flag = 'Y'
1369         AND plan_version_id > 0
1370         AND rate_dangling_flag IS NULL
1371         AND time_dangling_flag IS NULL;
1372 
1373    print_time ( ' # -3, -4 records inserted into ver3 is ' || SQL%ROWCOUNT );
1374 
1375 END;
1376 
1377 
1378 --
1379 -- Extract the period level plan amounts for PA/GL/non time phased entries from budget lines
1380 --  for the primary RBS for this plan version into pji_fp_aggr_pjp1_t.
1381 -- EXTRACT_PLAN_AMOUNTS_PRIRBS
1382 PROCEDURE EXTRACT_PLAN_AMOUNTS_PRIRBS IS
1383   l_count NUMBER;
1384   l_max_plnver_id NUMBER := NULL;
1385 BEGIN
1386 
1387   print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : Begin' );
1388   print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : Begin worker id is ... ' || 1);
1389 
1390   INSERT_NTP_CAL_RECORD ( x_max_plnver_id => l_max_plnver_id );
1391 
1392   IF (l_max_plnver_id IS NULL) THEN
1393     RETURN;
1394   END IF;
1395 
1396     INSERT INTO PJI_FP_AGGR_PJP1_T
1397     (
1398          WORKER_ID
1399        , PROJECT_ID
1400        , PROJECT_ORG_ID
1401        , PROJECT_ORGANIZATION_ID
1402        , PROJECT_ELEMENT_ID
1403        , TIME_ID
1404        , PERIOD_TYPE_ID
1405        , CALENDAR_TYPE
1406        , RBS_AGGR_LEVEL
1407        , WBS_ROLLUP_FLAG
1408        , PRG_ROLLUP_FLAG
1409        , CURR_RECORD_TYPE_ID
1410        , CURRENCY_CODE
1411        , RBS_ELEMENT_ID
1412        , RBS_VERSION_ID
1413        , PLAN_VERSION_ID
1414        , PLAN_TYPE_ID
1415        , RAW_COST
1416        , BRDN_COST
1417        , REVENUE
1418        , BILL_RAW_COST
1419        , BILL_BRDN_COST
1420        , BILL_LABOR_RAW_COST
1421        , BILL_LABOR_BRDN_COST
1422        , BILL_LABOR_HRS
1423        , EQUIPMENT_RAW_COST
1424        , EQUIPMENT_BRDN_COST
1425        , CAPITALIZABLE_RAW_COST
1426        , CAPITALIZABLE_BRDN_COST
1427        , LABOR_RAW_COST
1428        , LABOR_BRDN_COST
1429        , LABOR_HRS
1430        , LABOR_REVENUE
1431        , EQUIPMENT_HOURS
1432        , BILLABLE_EQUIPMENT_HOURS
1433        , SUP_INV_COMMITTED_COST
1434        , PO_COMMITTED_COST
1435        , PR_COMMITTED_COST
1436        , OTH_COMMITTED_COST
1437        , ACT_LABOR_HRS
1438            , ACT_EQUIP_HRS
1439            , ACT_LABOR_BRDN_COST
1440            , ACT_EQUIP_BRDN_COST
1441            , ACT_BRDN_COST
1442            , ACT_RAW_COST
1443            , ACT_REVENUE
1444          , ACT_LABOR_RAW_COST
1445          , ACT_EQUIP_RAW_COST
1446            , ETC_LABOR_HRS
1447            , ETC_EQUIP_HRS
1448            , ETC_LABOR_BRDN_COST
1449            , ETC_EQUIP_BRDN_COST
1450            , ETC_BRDN_COST
1451          , ETC_RAW_COST
1452          , ETC_LABOR_RAW_COST
1453          , ETC_EQUIP_RAW_COST
1454        , CUSTOM1
1455        , CUSTOM2
1456        , CUSTOM3
1457        , CUSTOM4
1458        , CUSTOM5
1459        , CUSTOM6
1460        , CUSTOM7
1461        , CUSTOM8
1462        , CUSTOM9
1463        , CUSTOM10
1464        , CUSTOM11
1465        , CUSTOM12
1466        , CUSTOM13
1467        , CUSTOM14
1468        , CUSTOM15
1469        , LINE_TYPE
1470        , RATE_DANGLING_FLAG
1471        , TIME_DANGLING_FLAG
1472        -- , START_DATE
1473        -- , END_DATE
1474        , PRG_LEVEL
1475        , PLAN_TYPE_CODE    /* 4471527 */
1476         )
1477        SELECT
1478          g_worker_id  WORKER_ID
1479        , plr.PROJECT_ID
1480        , plr.PROJECT_ORG_ID
1481        , plr.project_ORGANIZATION_ID
1482        , plr.WBS_ELEMENT_ID
1483        , DECODE(vers.time_phased_type_code
1484               , 'N', -1
1485               , pji_time.cal_period_id)  time_id
1486        , DECODE(vers.time_phased_type_code
1487                , g_pa_cal_str, 32
1488                , g_gl_cal_str, 32
1489                , 'N', 2048
1490                , -1) period_type_id -- period type id...
1491        , DECODE(vers.time_phased_type_code
1492                , g_pa_cal_str, g_pa_cal_str
1493                , g_gl_cal_str, g_gl_cal_str
1494                , 'N', g_all
1495                , 'X')     --   CALENDAR_TYPE
1496        , g_lowest_level RBS_AGGR_LEVEL
1497        , 'N' WBS_ROLLUP_FLAG
1498        , 'N' PRG_ROLLUP_FLAG
1499        , plr.CURR_RECORD_TYPE  -- curr code missing.
1500        , plr.currency_code
1501        , plr.RBS_ELEMENT_ID
1502        , plr.RBS_STRUCT_VERSION_ID
1503        , plr.BUDGET_VERSION_ID
1504        , plr.plan_type_id
1505        , SUM(plr.RAW_COST)
1506        , SUM(plr.BRDN_COST)
1507        , SUM(plr.REVENUE)
1508        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )  BILL_RAW_COST
1509        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )   BILL_BRDN_COST
1510        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code, plr.raw_cost, 0 ) )  BILL_LABOR_RAW_COST
1511        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code , plr.BRDN_COST, 0 ) )   BILL_LABOR_BRDN_COST
1512 --       , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code, plr.quantity, 0 ) )  BILL_LABOR_HRS -- bug 6039785
1513        , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code,
1514                                                                   DECODE ( plr.billable_flag,'Y',plr.quantity,0) , 0 ) )  BILL_LABOR_HRS -- bug 6039785
1515        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.raw_cost, 0 ) )  EQUIPMENT_RAW_COST
1516        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.BRDN_COST, 0 ) )   EQUIPMENT_BRDN_COST
1517        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )      CAPITALIZABLE_RAW_COST
1518        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )      CAPITALIZABLE_BRDN_COST
1519        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.raw_cost, 0 ) )  LABOR_RAW_COST
1520        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.BRDN_COST, 0 ) )   LABOR_BRDN_COST
1521        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
1522                                             DECODE ( vers.wp_flag, 'N',
1523                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
1524                                                                    plr.quantity),
1525                                                     0 ) )   labor_hrs */ -- bug 6039785
1526        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, DECODE(plr.billable_flag,'Y',
1527                                                                            DECODE ( vers.wp_flag, 'N',
1528                                                                                     DECODE ( plr.billable_flag, 'Y', plr.quantity, 0 ),
1529                                                                    plr.quantity),
1530 						    0 ),
1531                                                     0 ) )   labor_hrs  -- bug 6039785
1532        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.revenue, 0 ) )  LABOR_REVENUE
1533        /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
1534                                             DECODE ( vers.wp_flag, 'N',
1535                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
1536                                                                    plr.quantity),
1537 
1538                                             0 ) )  EQUIPMENT_HOURS */ -- bug 6039785
1539        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code, DECODE(plr.billable_flag,'Y',
1540                                                                           DECODE ( vers.wp_flag, 'N',
1541                                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
1542                                                                    plr.quantity),
1543 						    0 ),
1544                                                     0 ) )  EQUIPMENT_HOURS -- bug 6039785
1545        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT', plr.quantity, 0 ) )  BILLABLE_EQUIPMENT_HOURS */ -- bug 6039785
1546        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT',
1547                                                                  DECODE ( plr.billable_flag,'Y',plr.quantity,0), 0 ) )  BILLABLE_EQUIPMENT_HOURS -- bug 6039785
1548        , NULL  SUP_INV_COMMITTED_COST
1549        , NULL  PO_COMMITTED_COST
1550        , NULL  PR_COMMITTED_COST
1551        , NULL  OTH_COMMITTED_COST
1552        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
1553                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
1554                                                                                 0 ) ) ) ACT_LABOR_HRS */ -- bug 6039785
1555        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
1556                                                                                 DECODE (plr.billable_flag ,'Y',
1557                                                                                         DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
1558 										0 ),
1559                                                                                 0 ) ) ) ACT_LABOR_HRS -- bug 6039785
1560        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
1561                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
1562                                                                                 0 ) ) ) ACT_EQUIP_HOURS */ -- bug 6039785
1563        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
1564                                                                                 DECODE (plr.billable_flag ,'Y',
1565                                                                                         DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
1566 										0 ),
1567                                                                                 0 ) ) ) ACT_EQUIP_HOURS -- bug 6039785
1568        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_BRDN_COST, 0 ) ) ) ACT_LABOR_BRDN_COST
1569        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_BRDN_COST, 0 ) ) ) ACT_EQUIPMENT_BRDN_COST
1570        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_brdn_cost ) ) ACT_BRDN_COST
1571        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_raw_cost ) ) ACT_RAW_COST
1572        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_revenue ) ) ACT_REVENUE
1573        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_RAW_COST, 0 ) ) ) ACT_LABOR_RAW_COST
1574        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_RAW_COST, 0 ) ) ) ACT_EQUIPMENT_RAW_COST
1575        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
1576                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
1577                                                                                 0 ) ) ) ETC_LABOR_HRS */ -- bug 6039785
1578        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
1579                                                                                 DECODE (plr.billable_flag ,'Y',
1580                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
1581                                                                                 0 ),
1582                                                                                 0 ) ) ) ETC_LABOR_HRS -- bug 6039785
1583        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
1584                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
1585                                                                                 0 ) ) ) ETC_EQUIP_HOURS */ -- bug 6039785
1586        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
1587                                                                                 DECODE (plr.billable_flag ,'Y',
1588                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
1589                                                                                 0 ),
1590                                                                                 0 ) ) ) ETC_EQUIP_HOURS -- bug 6039785
1591        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_BRDN_COST, 0 ) ) ) ETC_LABOR_BRDN_COST
1592        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_BRDN_COST, 0 ) ) ) ETC_EQUIP_BRDN_COST
1593        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_brdn_cost ) ) ETC_BRDN_COST
1594        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_raw_cost ) ) ETC_RAW_COST
1595        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_raw_COST, 0 ) ) ) ETC_LABOR_raw_COST
1596        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_raw_COST, 0 ) ) ) ETC_EQUIP_raw_COST
1597        , NULL CUSTOM1
1598        , NULL CUSTOM2
1599        , NULL CUSTOM3
1600        , NULL CUSTOM4
1601        , NULL CUSTOM5
1602        , NULL CUSTOM6
1603        , NULL CUSTOM7
1604        , NULL CUSTOM8
1605        , NULL CUSTOM9
1606        , NULL CUSTOM10
1607        , NULL CUSTOM11
1608        , NULL CUSTOM12
1609        , NULL CUSTOM13
1610        , NULL CUSTOM14
1611        , NULL CUSTOM15
1612        , DECODE(vers.time_phased_type_code, g_pa_cal_str, 'OF', g_gl_cal_str, 'OF', 'N', 'NTP', 'X') -- LINE_TYPE
1613        , NULL time_dangling_flag
1614        , NULL rate_dangling_flag
1615        -- , plr.start_date
1616            -- , plr.end_date
1617        , g_default_prg_level prg_level
1618        , plr.plan_type_code /* 4471527 */
1619        FROM
1620        (          ----- First inline view plr .............
1621             select
1622               collapse_bl.PROJECT_ID      -- , 1 partition_id
1623             , collapse_bl.WBS_ELEMENT_ID  -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
1624             , SUM(collapse_bl.CURR_RECORD_TYPE_ID) CURR_RECORD_TYPE
1625             , collapse_bl.RBS_ELEMENT_ID
1626             , collapse_bl.RBS_STRUCT_VERSION_ID
1627                     , collapse_bl.plan_type_id
1628             , collapse_bl.BUDGET_VERSION_ID
1629             , collapse_bl.PROJECT_ORGANIZATION_ID
1630             , collapse_bl.PROJECT_ORG_ID
1631             , collapse_bl.RESOURCE_ASSIGNMENT_ID
1632             , collapse_bl.BILLABLE_FLAG
1633             , collapse_bl.RESOURCE_CLASS  -- , CALENDAR_TYPE -- , CALENDAR_ID
1634             , collapse_bl.TIME_PHASED_TYPE_CODE
1635             , collapse_bl.CURRENCY_CODE
1636             , max(collapse_bl.raw_cost) raw_cost
1637             , max(collapse_bl.BRDN_COST) BRDN_COST
1638             , max(collapse_bl.revenue) revenue
1639             , max(collapse_bl.actual_raw_cost) actual_raw_cost
1640             , max(collapse_bl.actual_BRDN_COST) actual_BRDN_COST
1641             , max(collapse_bl.actual_revenue) actual_revenue
1642             , max(collapse_bl.etc_raw_cost) etc_raw_cost
1643             , max(collapse_bl.etc_BRDN_COST) etc_BRDN_COST
1644             , max(collapse_bl.etc_revenue) etc_revenue
1645             , max(collapse_bl.quantity) quantity
1646             , max(collapse_bl.actual_quantity) actual_quantity
1647             , max(collapse_bl.etc_quantity) etc_quantity
1648             , collapse_bl.start_date start_date
1649             , collapse_bl.end_date   end_date
1650             , collapse_bl.period_name period_name  -- , TRACK_AS_LABOR_FLAG track_as_labor_flag
1651             , collapse_bl.row_id
1652             , collapse_bl.plan_type_code   plan_type_code       /* 4471527 */
1653             from
1654               (                  ----- Second inline view 'collapse_bl' begin .............
1655                select
1656                   spread_bl.row_id row_id
1657                 , spread_bl.PROJECT_ID
1658                 , spread_bl.BUDGET_VERSION_ID
1659                 , spread_bl.RESOURCE_ASSIGNMENT_ID
1660                 , spread_bl.WBS_ELEMENT_ID
1661                 , spread_bl.RBS_ELEMENT_ID
1662                 , spread_bl.WBS_STRUCT_VERSION_ID
1663                 , spread_bl.RBS_STRUCT_VERSION_ID
1664                         , spread_bl.plan_type_id
1665                 , spread_bl.BILLABLE_FLAG
1666                 , spread_bl.RESOURCE_CLASS  -- , spread_bl.CALENDAR_TYPE  -- , pji_time.CALENDAR_ID
1667                 , spread_bl.PROJECT_ORGANIZATION_ID
1668                 , spread_bl.PROJECT_ORG_ID
1669                 , spread_bl.TIME_PHASED_TYPE_CODE
1670                 , DECODE( invert.INVERT_ID
1671                         , 4, spread_bl.func_CURRENCY_CODE
1672                         , 8, spread_bl.PRJ_CURRENCY_CODE
1673                         , 16, spread_bl.TXN_CURRENCY_CODE ) CURRENCY_CODE
1674                 , invert.INVERT_ID CURR_RECORD_TYPE_ID
1675                 , DECODE ( invert.INVERT_ID
1676                          , 4, spread_bl.func_raw_cost
1677                          , 8, spread_bl.PRJ_raw_cost
1678                          , 16, spread_bl.TXN_raw_cost) raw_cost
1679                 , DECODE ( invert.INVERT_ID
1680                          , 4, spread_bl.func_BRDN_COST
1681                          , 8, spread_bl.PRJ_BRDN_COST
1682                          , 16, spread_bl.TXN_BRDN_COST ) BRDN_COST
1683                 , DECODE ( invert.INVERT_ID
1684                          , 4, spread_bl.func_revenue
1685                          , 8, spread_bl.PRJ_revenue
1686                          , 16, spread_bl.TXN_revenue ) revenue
1687                                 , DECODE ( invert.INVERT_ID
1688                                          , 4, spread_bl.func_actual_raw_cost
1689                                                  , 8, spread_bl.prj_actual_raw_cost
1690                                                  , 16, spread_bl.txn_actual_raw_cost ) actual_raw_cost
1691                                 , DECODE ( invert.INVERT_ID
1692                                          , 4, spread_bl.func_actual_brdn_cost
1693                                                  , 8, spread_bl.prj_actual_brdn_cost
1694                                                  , 16, spread_bl.txn_actual_brdn_cost ) actual_brdn_cost
1695                                 , DECODE ( invert.INVERT_ID
1696                                          , 4, spread_bl.func_actual_revenue
1697                                                  , 8, spread_bl.prj_actual_revenue
1698                                                  , 16, spread_bl.txn_actual_revenue ) actual_revenue
1699                                 , DECODE ( invert.INVERT_ID
1700                                          , 4, spread_bl.func_etc_raw_cost
1701                                                  , 8, spread_bl.prj_etc_raw_cost
1702                                                  , 16, spread_bl.txn_etc_raw_cost ) etc_raw_cost
1703                                 , DECODE ( invert.INVERT_ID
1704                                          , 4, spread_bl.func_etc_brdn_cost
1705                                                  , 8, spread_bl.prj_etc_brdn_cost
1706                                                  , 16, spread_bl.txn_etc_brdn_cost ) etc_brdn_cost
1707                                 , DECODE ( invert.INVERT_ID
1708                                          , 4, spread_bl.func_etc_revenue
1709                                                  , 8, spread_bl.prj_etc_revenue
1710                                                  , 16, spread_bl.txn_etc_revenue ) etc_revenue
1711                 , spread_bl.quantity quantity
1712                 , spread_bl.actual_quantity actual_quantity
1713                 , spread_bl.etc_quantity etc_quantity
1714                 , spread_bl.start_date start_date
1715                 , spread_bl.end_date   end_date
1716                 , spread_bl.period_name period_name
1717                 -- , spread_bl.TRACK_AS_LABOR_FLAG track_as_labor_flag
1718                 , spread_bl.plan_type_code     /* 4471527 */
1719                 from
1720                   (     ----- Third inline view 'spread_bl'  .............
1721                         -- Added HINT For bug 3828698
1722                     SELECT  /*+ LEADING(VER) USE_NL(VER,PPA,PEVS,RA,BL)*/
1723                           ra.project_id
1724                         , bl.rowid row_id
1725                         , ra.budget_version_id
1726                         , bl.resource_asSIGNment_id
1727                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
1728                         , NVL(ra.rbs_element_id, -1)              rbs_element_id
1729                         , ver.wbs_struct_version_id      wbs_struct_version_id
1730                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id
1731                         , ver.plan_type_id               plan_type_id
1732                         , ra.rate_based_flag             billable_flag
1733                         , ra.resource_class_code         resource_class
1734                         , bl.txn_currency_code           txn_currency_code
1735                         , bl.txn_raw_cost                txn_raw_cost
1736                         , bl.txn_burdened_COST           txn_brdn_COST
1737                         , bl.txn_revenue                 txn_revenue
1738                         , DECODE(ver.wp_flag, 'N', bl.txn_init_raw_cost, NULL)                txn_actual_raw_cost  -- new
1739                         , DECODE(ver.wp_flag, 'N', bl.txn_init_burdened_cost, NULL)             txn_actual_brdn_cost  -- new
1740                         , DECODE(ver.wp_flag, 'N', bl.txn_init_revenue, NULL)                   txn_actual_revenue  -- new
1741                         , DECODE(ver.wp_flag, 'N', (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0)), NULL) txn_etc_raw_cost     -- new
1742                         , DECODE(ver.wp_flag, 'N', (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0)), NULL) txn_etc_brdn_cost     -- new
1743                         , DECODE(ver.wp_flag, 'N', (bl.txn_revenue - NVL(bl.txn_init_revenue, 0)), NULL) txn_etc_revenue     -- new
1744                         , bl.project_currency_code          prj_currency_code
1745                         , bl.project_raw_cost               prj_raw_cost
1746                         , bl.project_burdened_COST          prj_BRDN_COST
1747                         , bl.project_revenue                prj_revenue
1748                         , DECODE(ver.wp_flag, 'N', bl.project_init_raw_cost, NULL)          prj_actual_raw_cost  -- new
1749                         , DECODE(ver.wp_flag, 'N', bl.project_init_burdened_cost, NULL)     prj_actual_brdn_cost  -- new
1750                         , DECODE(ver.wp_flag, 'N', bl.project_init_revenue, NULL)           prj_actual_revenue  -- new
1751                         , DECODE(ver.wp_flag, 'N', (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0)), NULL) prj_etc_raw_cost     -- new
1752                         , DECODE(ver.wp_flag, 'N', (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0)), NULL) prj_etc_brdn_cost     -- new
1753                         , DECODE(ver.wp_flag, 'N', (bl.project_revenue - NVL(bl.project_init_revenue, 0)), NULL) prj_etc_revenue     -- new
1754                         , bl.projfunc_currency_code         func_currency_code
1755                   , bl.raw_cost                       func_raw_cost
1756                         , bl.burdened_COST                  func_BRDN_COST
1757                         , bl.revenue                        func_revenue
1758                         , DECODE(ver.wp_flag, 'N', bl.init_raw_cost , NULL)                 func_actual_raw_cost  -- new
1759                         , DECODE(ver.wp_flag, 'N', bl.init_burdened_cost , NULL)            func_actual_brdn_cost  -- new
1760                         , DECODE(ver.wp_flag, 'N', bl.init_revenue , NULL)                  func_actual_revenue  -- new
1761                         , DECODE(ver.wp_flag, 'N', (bl.raw_cost - NVL(bl.init_raw_cost, 0)), NULL) func_etc_raw_cost     -- new
1762                         , DECODE(ver.wp_flag, 'N', (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)), NULL) func_etc_brdn_cost     -- new
1763                         , DECODE(ver.wp_flag, 'N', (bl.revenue - NVL(bl.init_revenue, 0)), NULL) func_etc_revenue     -- new
1764                         , g_global1_currency_code        glb1_currency_code
1765                   , NULL                           glb1_raw_cost
1766                         , NULL                           glb1_BRDN_COST
1767                         , NULL                           glb1_revenue
1768                         , g_global2_currency_code        glb2_currency_code
1769                   , NULL                           glb2_raw_cost
1770                         , NULL                           glb1_BRDN_COST
1771                         , NULL                           glb1_revenue
1772                   , bl.quantity                    quantity
1773                         , DECODE(ver.wp_flag, 'N', bl.init_quantity, NULL)                  actual_quantity  -- new
1774                         , DECODE(ver.wp_flag, 'N', (bl.quantity - NVL(bl.init_quantity, 0)), NULL) etc_quantity  -- new
1775                         , DECODE(ver.time_phased_type_code, 'N', bl.start_date, NULL) start_date
1776                         , DECODE(ver.time_phased_type_code, 'N', bl.end_date, NULL) end_date
1777                         , nvl(bl.period_name,g_ntp_period_name) period_name /* Added nvl for 4174366*/
1778                         , ver.time_phased_type_code time_phased_type_code
1779                         , ppa.org_id project_org_id
1780                         , ppa.carrying_out_organization_id project_organization_id
1781                         , ver.plan_type_code      plan_type_code  /* 4471527 */
1782                  FROM
1783                        PA_BUDGET_LINES               bl
1784                      , pa_resource_asSIGNments       ra
1785                      , PJI_FM_EXTR_PLNVER3_T           ver
1786                          , pa_projects_all               ppa
1787                            , PA_PROJ_ELEM_VER_STRUCTURE    pevs
1788                  WHERE
1789                          ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
1790                      AND ra.project_id = ver.PROJECT_ID
1791                      AND ra.budget_version_id = ver.plan_version_id
1792                      AND ver.project_id = ppa.project_id
1793                      AND txn_currency_code IS NOT NULL
1794                      AND bl.project_currency_code IS NOT NULL
1795                      AND bl.projfunc_currency_code IS NOT NULL
1796                            AND pevs.element_version_id = ver.wbs_struct_version_id
1797                            AND ver.project_id = pevs.project_id  -- fix for bug 4149422 in EXTRACT_PLAN_AMOUNTS_PRIRBS
1798                            AND ver.secondary_rbs_flag = 'N'
1799                                   ) spread_bl
1800                                    ---- end of third inline view 'spread_bl'...........
1801                   ,
1802                     (
1803                       select 4   INVERT_ID from dual union all
1804                       select 8   INVERT_ID from dual union all
1805                       select 16  INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('TXN_CURR_FLAG') = 'Y'
1806                     ) invert
1807                                 )  collapse_bl
1808                                 ----  End of second inline view 'collapse_bl' ..........
1809                         GROUP BY
1810               collapse_bl.PROJECT_ID
1811             , collapse_bl.WBS_ELEMENT_ID
1812             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
1813             , collapse_bl.RBS_ELEMENT_ID
1814             , collapse_bl.RBS_STRUCT_VERSION_ID
1815                         , collapse_bl.plan_type_id
1816             , collapse_bl.BUDGET_VERSION_ID
1817             , collapse_bl.PROJECT_ORGANIZATION_ID
1818             , collapse_bl.PROJECT_ORG_ID
1819             , collapse_bl.RESOURCE_ASSIGNMENT_ID
1820             , collapse_bl.BILLABLE_FLAG
1821             , collapse_bl.RESOURCE_CLASS
1822             , collapse_bl.TIME_PHASED_TYPE_CODE
1823             , collapse_bl.CURRENCY_CODE
1824             , collapse_bl.start_date
1825             , collapse_bl.end_date
1826             , collapse_bl.period_name
1827             , collapse_bl.row_id
1828             , collapse_bl.plan_type_code        /* 4471527 */
1829        ) plr
1830                                 ----  End of first inline view plr ..........
1831        , PJI_ORG_EXTR_INFO            orginfo
1832        , PJI_FM_EXTR_PLNVER3_T      vers
1833        , pji_time_cal_period_v        pji_time
1834          WHERE  1=1
1835            -- AND    orginfo.projfunc_currency_mau is not NULL
1836            AND    plr.project_org_id         = orginfo.org_id
1837            AND    plr.project_id             = vers.project_id
1838            AND    plr.budget_version_id      = vers.plan_version_id
1839            AND    plr.plan_type_code         = vers.plan_type_code    /*4471527 */
1840            AND    DECODE(vers.time_phased_type_code
1841                    , g_pa_cal_str, orginfo.pa_calendar_id
1842                    , g_gl_cal_str, orginfo.gl_calendar_id
1843                    , -l_max_plnver_id ) = pji_time.calendar_id
1844            AND    plr.period_name = pji_time.name
1845            AND vers.time_phased_type_code IN (g_pa_cal_str, g_gl_cal_str, 'N')
1846        GROUP BY
1847          plr.PROJECT_ID
1848        , plr.PROJECT_ORG_ID
1849        , plr.project_ORGANIZATION_ID
1850        , plr.WBS_ELEMENT_ID
1851        , DECODE(vers.time_phased_type_code
1852               , 'N', -1
1853               , pji_time.cal_period_id)
1854     --bug# 3886087 (put the below two decodes in sync with the ones in select stmt)
1855        , DECODE(vers.time_phased_type_code
1856                , g_pa_cal_str, 32
1857                , g_gl_cal_str, 32
1858                , 'N', 2048
1859                , -1) -- period type id...
1860        , DECODE(vers.time_phased_type_code
1861                , g_pa_cal_str, g_pa_cal_str
1862                , g_gl_cal_str, g_gl_cal_str
1863                , 'N', g_all
1864                , 'X')     --   CALENDAR_TYPE
1865        , plr.CURR_RECORD_TYPE  -- curr code missing.
1866            , plr.currency_code
1867        , plr.RBS_ELEMENT_ID
1868        , plr.RBS_STRUCT_VERSION_ID
1869        , plr.BUDGET_VERSION_ID
1870          , plr.plan_type_id
1871        , DECODE(vers.time_phased_type_code, g_pa_cal_str, 'OF', g_gl_cal_str, 'OF', 'N', 'NTP', 'X')
1872        , plr.plan_type_code;         /* 4471527 */
1873 
1874   print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : l_count ' || SQL%ROWCOUNT);
1875 
1876   DELETE_NTP_CAL_RECORD ( p_max_plnver_id => l_max_plnver_id );
1877 
1878   print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : End' );
1879 
1880 EXCEPTION
1881   WHEN OTHERS THEN
1882     print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : Exception ' || SQLERRM );
1883     print_time('EXTRACT_PLAN_AMOUNTS_PRIRBS : Begin worker id is ... ' || 1);
1884     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
1885                              p_procedure_name => 'EXTRACT_PLAN_AMOUNTS_PRIRBS');
1886     RAISE;
1887 END;
1888 
1889 
1890 --
1891 -- Extract the period level plan amounts for PA/GL/non time phased entries from budget lines
1892 --  for the secondary RBS for this plan version into pji_fp_aggr_pjp1_t.
1893 -- EXTRACT_PLAN_AMOUNTS_SECRBS
1894 PROCEDURE EXTRACT_PLAN_AMOUNTS_SECRBS IS
1895 BEGIN
1896 
1897   NULL;
1898 
1899 EXCEPTION
1900   WHEN OTHERS THEN
1901     print_time('EXTRACT_PLAN_AMOUNTS_SECRBS : Exception ' || SQLERRM );
1902     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
1903                              p_procedure_name => 'EXTRACT_PLAN_AMOUNTS_SECRBS');
1904     RAISE;
1905 END;
1906 
1907 --EXTRACT_PLAN_AMTS_SECRBS_GLC12
1908 
1909 PROCEDURE EXTRACT_PLAN_AMTS_SECRBS_GLC12 IS
1910 BEGIN
1911 
1912     print_time ( ' EXTRACT_PLAN_AMTS_SECRBS_GLC12 begin. Inserted rows # is: ' || SQL%ROWCOUNT );
1913 
1914     PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
1915       x_currency_conversion_rule => g_currency_conversion_rule
1916     , x_prorating_format         => g_prorating_format
1917     , x_global1_currency_code    => g_global1_currency_code
1918     , x_global2_currency_code    => g_global2_currency_code
1919     , x_global1_currency_mau     => g_global1_currency_mau
1920     , x_global2_currency_mau     => g_global2_currency_mau ) ;
1921 
1922 
1923   print_time(' Got global currency settings. ');
1924   print_time(' g_currency_conversion_rule ' || g_currency_conversion_rule || ' g_prorating_format ' ||  g_prorating_format );
1925   print_time(' g_global1_currency_code ' || g_global1_currency_code || ' g_global2_currency_code ' || g_global2_currency_code );
1926   print_time(' g_global1_currency_mau ' || g_global1_currency_mau || ' g_global2_currency_mau ' || g_global2_currency_mau ) ;
1927 
1928     INSERT INTO PJI_FP_AGGR_PJP1_T
1929     (
1930          WORKER_ID
1931        , PROJECT_ID
1932        , PROJECT_ORG_ID
1933        , PROJECT_ORGANIZATION_ID
1934        , PROJECT_ELEMENT_ID
1935        , TIME_ID
1936        , PERIOD_TYPE_ID
1937        , CALENDAR_TYPE
1938        , RBS_AGGR_LEVEL
1939        , WBS_ROLLUP_FLAG
1940        , PRG_ROLLUP_FLAG
1941        , CURR_RECORD_TYPE_ID
1942        , CURRENCY_CODE
1943        , RBS_ELEMENT_ID
1944        , RBS_VERSION_ID
1945        , PLAN_VERSION_ID
1946        , PLAN_TYPE_ID
1947        , RAW_COST
1948        , BRDN_COST
1949        , REVENUE
1950        , BILL_RAW_COST
1951        , BILL_BRDN_COST
1952        , BILL_LABOR_RAW_COST
1953        , BILL_LABOR_BRDN_COST
1954        , BILL_LABOR_HRS
1955        , EQUIPMENT_RAW_COST
1956        , EQUIPMENT_BRDN_COST
1957        , CAPITALIZABLE_RAW_COST
1958        , CAPITALIZABLE_BRDN_COST
1959        , LABOR_RAW_COST
1960        , LABOR_BRDN_COST
1961        , LABOR_HRS
1962        , LABOR_REVENUE
1963        , EQUIPMENT_HOURS
1964        , BILLABLE_EQUIPMENT_HOURS
1965        , SUP_INV_COMMITTED_COST
1966        , PO_COMMITTED_COST
1967        , PR_COMMITTED_COST
1968        , OTH_COMMITTED_COST
1969        , ACT_LABOR_HRS
1970            , ACT_EQUIP_HRS
1971            , ACT_LABOR_BRDN_COST
1972            , ACT_EQUIP_BRDN_COST
1973            , ACT_BRDN_COST
1974            , ACT_RAW_COST
1975            , ACT_REVENUE
1976          , ACT_LABOR_RAW_COST
1977          , ACT_EQUIP_RAW_COST
1978            , ETC_LABOR_HRS
1979            , ETC_EQUIP_HRS
1980            , ETC_LABOR_BRDN_COST
1981            , ETC_EQUIP_BRDN_COST
1982            , ETC_BRDN_COST
1983          , ETC_RAW_COST
1984          , ETC_LABOR_RAW_COST
1985          , ETC_EQUIP_RAW_COST
1986        , CUSTOM1
1987        , CUSTOM2
1988        , CUSTOM3
1989        , CUSTOM4
1990        , CUSTOM5
1991        , CUSTOM6
1992        , CUSTOM7
1993        , CUSTOM8
1994        , CUSTOM9
1995        , CUSTOM10
1996        , CUSTOM11
1997        , CUSTOM12
1998        , CUSTOM13
1999        , CUSTOM14
2000        , CUSTOM15
2001        , LINE_TYPE
2002        , TIME_DANGLING_FLAG
2003        , RATE_DANGLING_FLAG
2004        , START_DATE
2005        , END_DATE
2006        , PRG_LEVEL
2007        , PLAN_TYPE_CODE
2008         )
2009        SELECT
2010          g_worker_id WORKER_ID
2011        , plr.PROJECT_ID
2012        , plr.PROJECT_ORG_ID
2013        , plr.project_ORGANIZATION_ID
2014        , plr.WBS_ELEMENT_ID
2015        , plr.time_id
2016        , plr.period_type_id -- period type id...
2017        , plr.CALENDAR_TYPE
2018        , g_lowest_level RBS_AGGR_LEVEL
2019        , 'N' WBS_ROLLUP_FLAG
2020        , 'N' PRG_ROLLUP_FLAG
2021        , plr.CURR_RECORD_TYPE
2022        , plr.currency_code
2023        , plr.RBS_ELEMENT_ID
2024        , plr.RBS_STRUCT_VERSION_ID
2025        , plr.plan_version_id
2026        , plr.plan_type_id
2027        , SUM(plr.RAW_COST)
2028        , SUM(plr.BRDN_COST)
2029        , SUM(plr.REVENUE)
2030        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )  BILL_RAW_COST
2031        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )   BILL_BRDN_COST
2032        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code, plr.raw_cost, 0 ) )  BILL_LABOR_RAW_COST
2033        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code , plr.BRDN_COST, 0 ) )   BILL_LABOR_BRDN_COST
2034        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code, plr.quantity, 0 ) )  BILL_LABOR_HRS */ -- bug 6039785
2035        , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code,
2036                                                                   DECODE(plr.billable_flag,'Y',plr.quantity,0) , 0 ) )  BILL_LABOR_HRS -- bug 6039785
2037        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.raw_cost, 0 ) )  EQUIPMENT_RAW_COST
2038        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.BRDN_COST, 0 ) )   EQUIPMENT_BRDN_COST
2039        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )      CAPITALIZABLE_RAW_COST
2040        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )      CAPITALIZABLE_BRDN_COST
2041        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.raw_cost, 0 ) )  LABOR_RAW_COST
2042        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.BRDN_COST, 0 ) )   LABOR_BRDN_COST
2043        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
2044                                             DECODE ( vers.wp_flag, 'N',
2045                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
2046                                                                    plr.quantity),
2047                                                     0 ) )   labor_hrs */ -- bug 6039785
2048        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, DECODE(plr.billable_flag,'Y',
2049                                             DECODE ( vers.wp_flag, 'N',
2050                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
2051                                                                    plr.quantity),
2052 						    0 ),
2053                                                     0 ) )   labor_hrs -- bug 6039785
2054        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.revenue, 0 ) )  LABOR_REVENUE
2055       /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
2056                                             DECODE ( vers.wp_flag, 'N',
2057                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
2058                                                                    plr.quantity),
2059 
2060                                             0 ) )  EQUIPMENT_HOURS */ -- bug 6039785
2061       , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code, DECODE(plr.billable_flag,'Y',
2062                                             DECODE ( vers.wp_flag, 'N',
2063                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
2064                                                                    plr.quantity),
2065 						    0 ),
2066                                                     0 ) )  EQUIPMENT_HOURS -- bug 6039785
2067        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_equip_resclass_code, plr.quantity, 0 ) )  BILLABLE_EQUIPMENT_HOURS */ -- bug 6039785
2068        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_equip_resclass_code,
2069                                                                  DECODE(plr.billable_flag,'Y',plr.quantity,0) , 0 ) )  BILLABLE_EQUIPMENT_HOURS -- bug 6039785
2070        , TO_NUMBER(NULL)  SUP_INV_COMMITTED_COST
2071        , TO_NUMBER(NULL)  PO_COMMITTED_COST
2072        , TO_NUMBER(NULL)  PR_COMMITTED_COST
2073        , TO_NUMBER(NULL)  OTH_COMMITTED_COST
2074        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
2075                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
2076                                                                                 0 ) ) ) ACT_LABOR_HRS */ -- bug 6039785
2077        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
2078                                                                                 DECODE (plr.billable_flag ,'Y',
2079                                                                                         DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
2080 										0 ),
2081                                                                                 0 ) ) ) ACT_LABOR_HRS -- bug 6039785
2082        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
2083                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
2084                                                                                 0 ) ) ) ACT_EQUIP_HOURS */ -- bug 6039785
2085        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
2086                                                                                 DECODE (plr.billable_flag ,'Y',
2087                                                                                         DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
2088 										0 ),
2089                                                                                 0 ) ) ) ACT_EQUIP_HOURS -- bug 6039785
2090        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_BRDN_COST, 0 ) ) ) ACT_LABOR_BRDN_COST
2091        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_BRDN_COST, 0 ) ) ) ACT_EQUIPMENT_BRDN_COST
2092        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_brdn_cost ) ) ACT_BRDN_COST
2093        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_raw_cost ) ) ACT_RAW_COST
2094        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_revenue ) ) ACT_REVENUE
2095        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_RAW_COST, 0 ) ) ) ACT_LABOR_RAW_COST
2096        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_RAW_COST, 0 ) ) ) ACT_EQUIPMENT_RAW_COST
2097        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
2098                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
2099                                                                                 0 ) ) ) ETC_LABOR_HRS */ -- bug 6039785
2100        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
2101                                                                                 DECODE (plr.billable_flag ,'Y',
2102                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
2103                                                                                 0 ),
2104                                                                                 0 ) ) ) ETC_LABOR_HRS -- bug 6039785
2105        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
2106                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
2107                                                                                 0 ) ) ) ETC_EQUIP_HOURS */ -- bug 6039785
2108        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
2109                                                                                 DECODE (plr.billable_flag ,'Y',
2110                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
2111                                                                                 0 ),
2112                                                                                 0 ) ) ) ETC_EQUIP_HOURS -- bug 6039785
2113        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_BRDN_COST, 0 ) ) ) ETC_LABOR_BRDN_COST
2114        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_BRDN_COST, 0 ) ) ) ETC_EQUIP_BRDN_COST
2115        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_brdn_cost ) ) ETC_BRDN_COST
2116        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_raw_cost ) ) ETC_RAW_COST
2117        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_raw_COST, 0 ) ) ) ETC_LABOR_raw_COST
2118        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_raw_COST, 0 ) ) ) ETC_EQUIP_raw_COST
2119        , TO_NUMBER(NULL) CUSTOM1
2120        , TO_NUMBER(NULL) CUSTOM2
2121        , TO_NUMBER(NULL) CUSTOM3
2122        , TO_NUMBER(NULL) CUSTOM4
2123        , TO_NUMBER(NULL) CUSTOM5
2124        , TO_NUMBER(NULL) CUSTOM6
2125        , TO_NUMBER(NULL) CUSTOM7
2126        , TO_NUMBER(NULL) CUSTOM8
2127        , TO_NUMBER(NULL) CUSTOM9
2128        , TO_NUMBER(NULL) CUSTOM10
2129        , TO_NUMBER(NULL) CUSTOM11
2130        , TO_NUMBER(NULL) CUSTOM12
2131        , TO_NUMBER(NULL) CUSTOM13
2132        , TO_NUMBER(NULL) CUSTOM14
2133        , TO_NUMBER(NULL) CUSTOM15
2134        , plr.LINE_TYPE
2135        , NULL time_dangling_flag
2136        , decode(sign(plr.rate),-1,'Y',NULL) ||decode(sign(plr.rate2),-1,'Y',NULL) rate_dangling_flag
2137        , plr.start_date
2138          , plr.end_date
2139        , g_default_prg_level prg_level
2140        , plr.plan_type_code    plan_type_code    /* 4471527 */
2141        FROM
2142        (          ----- First inline view plr .............
2143             select
2144               collapse_bl.PROJECT_ID      -- , 1 partition_id
2145             , collapse_bl.WBS_ELEMENT_ID  -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
2146             , SUM(collapse_bl.CURR_RECORD_TYPE_ID) CURR_RECORD_TYPE
2147             , collapse_bl.RBS_ELEMENT_ID
2148             , collapse_bl.RBS_STRUCT_VERSION_ID
2149                     , collapse_bl.plan_type_id
2150             , collapse_bl.plan_version_id
2151                         , collapse_bl.time_id
2152             , collapse_bl.PROJECT_ORGANIZATION_ID
2153             , collapse_bl.PROJECT_ORG_ID
2154             , collapse_bl.RESOURCE_ASSIGNMENT_ID
2155             , collapse_bl.BILLABLE_FLAG
2156             , collapse_bl.RESOURCE_CLASS  -- , CALENDAR_TYPE -- , CALENDAR_ID
2157             , collapse_bl.TIME_PHASED_TYPE_CODE
2158             , collapse_bl.CURRENCY_CODE
2159             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.raw_cost))) raw_cost
2160             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.BRDN_COST))) BRDN_COST
2161             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.revenue))) revenue
2162             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_raw_cost))) actual_raw_cost
2163             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_BRDN_COST))) actual_BRDN_COST
2164             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_revenue))) actual_revenue
2165             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_raw_cost))) etc_raw_cost
2166             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_BRDN_COST))) etc_BRDN_COST
2167             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_revenue))) etc_revenue
2168             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.quantity))) quantity
2169             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_quantity))) actual_quantity
2170             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_quantity))) etc_quantity
2171             , collapse_bl.start_date start_date
2172             , collapse_bl.end_date   end_date
2173             -- , collapse_bl.period_name period_name  -- , TRACK_AS_LABOR_FLAG track_as_labor_flag
2174                         , collapse_bl.line_type
2175                         , collapse_bl.calendar_type
2176                         , collapse_bl.period_type_id
2177             , collapse_bl.row_id
2178             ,collapse_bl.rate rate
2179             ,collapse_bl.rate2 rate2
2180             , collapse_bl.plan_type_code  plan_type_code /* 4471527 */
2181             from
2182               (                  ----- Second inline view 'collapse_bl' begin .............
2183                select
2184                   spread_bl.row_id row_id
2185                 , spread_bl.PROJECT_ID
2186                 , spread_bl.BUDGET_VERSION_ID plan_version_id
2187                                 , spread_bl.time_id
2188                 , spread_bl.RESOURCE_ASSIGNMENT_ID
2189                 , spread_bl.WBS_ELEMENT_ID
2190                 , spread_bl.RBS_ELEMENT_ID
2191                 , spread_bl.WBS_STRUCT_VERSION_ID
2192                 , spread_bl.RBS_STRUCT_VERSION_ID
2193                         , spread_bl.plan_type_id
2194                 , spread_bl.BILLABLE_FLAG
2195                 , spread_bl.RESOURCE_CLASS
2196                 , spread_bl.PROJECT_ORGANIZATION_ID
2197                 , spread_bl.PROJECT_ORG_ID
2198                 , spread_bl.TIME_PHASED_TYPE_CODE
2199                 , DECODE( invert.INVERT_ID
2200                         , 1, spread_bl.glb1_CURRENCY_CODE
2201                         , 2, spread_bl.glb2_CURRENCY_CODE
2202                         , 4, spread_bl.func_CURRENCY_CODE
2203                         , 8, spread_bl.PRJ_CURRENCY_CODE
2204                         , 16, spread_bl.TXN_CURRENCY_CODE ) CURRENCY_CODE
2205                 , invert.INVERT_ID CURR_RECORD_TYPE_ID
2206                 , DECODE ( invert.INVERT_ID
2207                          , 1, spread_bl.glb1_raw_cost
2208                          , 2, spread_bl.glb2_raw_cost
2209                          , 4, spread_bl.func_raw_cost
2210                          , 8, spread_bl.PRJ_raw_cost
2211                          , 16, spread_bl.TXN_raw_cost) raw_cost
2212                 , DECODE ( invert.INVERT_ID
2213                          , 1, spread_bl.glb1_brdn_cost
2214                          , 2, spread_bl.glb2_brdn_cost
2215                          , 4, spread_bl.func_BRDN_COST
2216                          , 8, spread_bl.PRJ_BRDN_COST
2217                          , 16, spread_bl.TXN_BRDN_COST ) BRDN_COST
2218                 , DECODE ( invert.INVERT_ID
2219                          , 1, spread_bl.glb1_revenue
2220                          , 2, spread_bl.glb2_revenue
2221                          , 4, spread_bl.func_revenue
2222                          , 8, spread_bl.PRJ_revenue
2223                          , 16, spread_bl.TXN_revenue ) revenue
2224                                 , DECODE ( invert.INVERT_ID
2225                          , 1, spread_bl.glb1_actual_raw_cost
2226                          , 2, spread_bl.glb2_actual_raw_cost
2227                                          , 4, spread_bl.func_actual_raw_cost
2228                                                  , 8, spread_bl.prj_actual_raw_cost
2229                                                  , 16, spread_bl.txn_actual_raw_cost ) actual_raw_cost
2230                                 , DECODE ( invert.INVERT_ID
2231                                          , 1, spread_bl.glb1_actual_brdn_cost
2232                                                  , 2, spread_bl.glb2_actual_brdn_cost
2233                                          , 4, spread_bl.func_actual_brdn_cost
2234                                                  , 8, spread_bl.prj_actual_brdn_cost
2235                                                  , 16, spread_bl.txn_actual_brdn_cost ) actual_brdn_cost
2236                                 , DECODE ( invert.INVERT_ID
2237                                          , 1, spread_bl.glb1_actual_revenue
2238                                                  , 2, spread_bl.glb2_actual_revenue
2239                                          , 4, spread_bl.func_actual_revenue
2240                                                  , 8, spread_bl.prj_actual_revenue
2241                                                  , 16, spread_bl.txn_actual_revenue ) actual_revenue
2242                                 , DECODE ( invert.INVERT_ID
2243                                          , 1, spread_bl.glb1_etc_raw_cost
2244                                                  , 2, spread_bl.glb2_etc_raw_cost
2245                                          , 4, spread_bl.func_etc_raw_cost
2246                                                  , 8, spread_bl.prj_etc_raw_cost
2247                                                  , 16, spread_bl.txn_etc_raw_cost ) etc_raw_cost
2248                                 , DECODE ( invert.INVERT_ID
2249                                          , 1, spread_bl.glb1_etc_brdn_cost
2250                                                  , 2, spread_bl.glb2_etc_brdn_cost
2251                                          , 4, spread_bl.func_etc_brdn_cost
2252                                                  , 8, spread_bl.prj_etc_brdn_cost
2253                                                  , 16, spread_bl.txn_etc_brdn_cost ) etc_brdn_cost
2254                                 , DECODE ( invert.INVERT_ID
2255                                          , 1, spread_bl.glb1_etc_revenue
2256                                                  , 2, spread_bl.glb2_etc_revenue
2257                                          , 4, spread_bl.func_etc_revenue
2258                                                  , 8, spread_bl.prj_etc_revenue
2259                                                  , 16, spread_bl.txn_etc_revenue ) etc_revenue
2260                 , spread_bl.quantity quantity
2261                 , spread_bl.actual_quantity actual_quantity
2262                 , spread_bl.etc_quantity etc_quantity
2263                 , spread_bl.start_date start_date
2264                 , spread_bl.end_date   end_date
2265                 , spread_bl.line_type line_type
2266                                 , spread_bl.period_type_id
2267                                 , spread_bl.calendar_type
2268                 ,decode(invert.invert_id,1,spread_bl.rate,1) rate
2269                 ,decode(invert.invert_id,2,spread_bl.rate2,1) rate2
2270                 ,spread_bl.plan_type_code plan_type_code /* 4471527 */
2271                 from
2272                   (     ----- Third inline view 'spread_bl'  .............
2273                     SELECT
2274                           ra.project_id
2275                         , bl.rowid row_id
2276                         , ra.budget_version_id
2277                                         , prd.cal_period_id time_id
2278                         , bl.resource_asSIGNment_id
2279                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
2280                         , NVL(map.element_id, -1)              rbs_element_id  -- !! changed.
2281                         , ver.wbs_struct_version_id      wbs_struct_version_id
2282                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id  -- !! changed.
2283                         , ver.plan_type_id               plan_type_id
2284                         , ra.rate_based_flag             billable_flag
2285                         , ra.resource_class_code         resource_class
2286                         , DECODE(ver.time_phased_type_code
2287                          , g_pa_cal_str, 32
2288                          , g_gl_cal_str, 32
2289                          , 'N', 2048
2290                          , -1) period_type_id
2291                            , DECODE(ver.time_phased_type_code
2292                             , g_pa_cal_str, g_pa_cal_str
2293                             , g_gl_cal_str, g_gl_cal_str
2294                             , 'N', g_all
2295                             , 'X')  CALENDAR_TYPE
2296                         , bl.txn_currency_code           txn_currency_code
2297                         , bl.txn_raw_cost                txn_raw_cost
2298                         , bl.txn_burdened_COST           txn_brdn_COST
2299                         , bl.txn_revenue                 txn_revenue
2300                         , DECODE(ver.wp_flag, 'N', bl.txn_init_raw_cost, TO_NUMBER(NULL))                txn_actual_raw_cost  -- new
2301                         , DECODE(ver.wp_flag, 'N', bl.txn_init_burdened_cost, TO_NUMBER(NULL))             txn_actual_brdn_cost  -- new
2302                         , DECODE(ver.wp_flag, 'N', bl.txn_init_revenue, TO_NUMBER(NULL))                   txn_actual_revenue  -- new
2303                         , DECODE(ver.wp_flag, 'N', (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0)), TO_NUMBER(NULL)) txn_etc_raw_cost     -- new
2304                         , DECODE(ver.wp_flag, 'N', (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0)), TO_NUMBER(NULL)) txn_etc_brdn_cost     -- new
2305                         , DECODE(ver.wp_flag, 'N', (bl.txn_revenue - NVL(bl.txn_init_revenue, 0)), TO_NUMBER(NULL)) txn_etc_revenue     -- new
2306                         , bl.project_currency_code          prj_currency_code
2307                         , bl.project_raw_cost               prj_raw_cost
2308                         , bl.project_burdened_COST          prj_BRDN_COST
2309                         , bl.project_revenue                prj_revenue
2310                         , DECODE(ver.wp_flag, 'N', bl.project_init_raw_cost, TO_NUMBER(NULL))          prj_actual_raw_cost  -- new
2311                         , DECODE(ver.wp_flag, 'N', bl.project_init_burdened_cost, TO_NUMBER(NULL))     prj_actual_brdn_cost  -- new
2312                         , DECODE(ver.wp_flag, 'N', bl.project_init_revenue, TO_NUMBER(NULL))           prj_actual_revenue  -- new
2313                         , DECODE(ver.wp_flag, 'N', (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0)), TO_NUMBER(NULL)) prj_etc_raw_cost     -- new
2314                         , DECODE(ver.wp_flag, 'N', (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0)), TO_NUMBER(NULL)) prj_etc_brdn_cost     -- new
2315                         , DECODE(ver.wp_flag, 'N', (bl.project_revenue - NVL(bl.project_init_revenue, 0)), TO_NUMBER(NULL)) prj_etc_revenue     -- new
2316                         , bl.projfunc_currency_code         func_currency_code
2317                   , bl.raw_cost                       func_raw_cost
2318                         , bl.burdened_COST                  func_BRDN_COST
2319                         , bl.revenue                        func_revenue
2320                         , DECODE(ver.wp_flag, 'N', bl.init_raw_cost , TO_NUMBER(NULL))                 func_actual_raw_cost  -- new
2321                         , DECODE(ver.wp_flag, 'N', bl.init_burdened_cost , TO_NUMBER(NULL))            func_actual_brdn_cost  -- new
2322                         , DECODE(ver.wp_flag, 'N', bl.init_revenue , TO_NUMBER(NULL))                  func_actual_revenue  -- new
2323                         , DECODE(ver.wp_flag, 'N', (bl.raw_cost - NVL(bl.init_raw_cost, 0)), TO_NUMBER(NULL)) func_etc_raw_cost     -- new
2324                         , DECODE(ver.wp_flag, 'N', (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)), TO_NUMBER(NULL)) func_etc_brdn_cost     -- new
2325                         , DECODE(ver.wp_flag, 'N', (bl.revenue - NVL(bl.init_revenue, 0)), TO_NUMBER(NULL)) func_etc_revenue     -- new
2326                         , g_global1_currency_code  glb1_currency_code -- g_global1_currency_code        glb1_currency_code
2327                   , DECODE (g_global1_currency_code
2328                                           , bl.txn_currency_code
2329                                                   , bl.txn_raw_cost
2330                                                   , bl.project_currency_code
2331                                                   , bl.project_raw_cost
2332                                                   , bl.projfunc_currency_code
2333                                                   , bl.raw_cost
2334                                                   , ROUND((rates.rate * raw_cost )/rates.mau)*rates.mau
2335                                         ) glb1_raw_cost
2336                   , DECODE (g_global1_currency_code
2337                                           , bl.txn_currency_code
2338                                                   , bl.txn_burdened_cost
2339                                                   , bl.project_currency_code
2340                                                   , bl.project_burdened_cost
2341                                                   , bl.projfunc_currency_code
2342                                                   , bl.burdened_cost
2343                                                   , ROUND((rates.rate * burdened_cost )/rates.mau)*rates.mau
2344                                         ) glb1_BRDN_COST
2345                   , DECODE (g_global1_currency_code
2346                                           , bl.txn_currency_code
2347                                                   , bl.txn_revenue
2348                                                   , bl.project_currency_code
2349                                                   , bl.project_revenue
2350                                                   , bl.projfunc_currency_code
2351                                                   , bl.revenue
2352                                                   , ROUND((rates.rate * revenue )/rates.mau)*rates.mau
2353                                         )  glb1_revenue
2354                               , DECODE(ver.wp_flag
2355                                      , 'N'
2356                                                  , DECODE (g_global1_currency_code
2357                                                  , bl.txn_currency_code
2358                                                          , bl.txn_init_raw_cost
2359                                                          , bl.project_currency_code
2360                                                          , bl.project_init_raw_cost
2361                                                          , bl.projfunc_currency_code
2362                                                          , bl.init_raw_cost
2363                                                          , ROUND((rates.rate * bl.init_raw_cost )/rates.mau)*rates.mau
2364                                                       )
2365                                                  , TO_NUMBER(NULL))                 glb1_actual_raw_cost
2366                               , DECODE(ver.wp_flag
2367                                          , 'N'
2368                                                  , DECODE (g_global1_currency_code
2369                                                  , bl.txn_currency_code
2370                                                          , bl.txn_init_burdened_cost
2371                                                          , bl.project_currency_code
2372                                                          , bl.project_init_burdened_cost
2373                                                          , bl.projfunc_currency_code
2374                                                          , bl.init_burdened_cost
2375                                                          , ROUND((rates.rate * bl.init_burdened_cost )/rates.mau)*rates.mau
2376                                                       )
2377                                                  , TO_NUMBER(NULL))            glb1_actual_brdn_cost
2378                               , DECODE(ver.wp_flag
2379                                          , 'N'
2380                                                  , DECODE (g_global1_currency_code
2381                                                  , bl.txn_currency_code
2382                                                          , bl.txn_init_revenue
2383                                                          , bl.project_currency_code
2384                                                          , bl.project_init_revenue
2385                                                          , bl.projfunc_currency_code
2386                                                          , bl.init_revenue
2387                                                          , ROUND((rates.rate * bl.init_revenue )/rates.mau)*rates.mau
2388                                                       )
2389                                                  , TO_NUMBER(NULL))                  glb1_actual_revenue
2390                                   , DECODE(ver.wp_flag
2391                                          , 'N'
2392                                                  , DECODE (g_global1_currency_code
2393                                                  , bl.txn_currency_code
2394                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
2395                                                          , bl.project_currency_code
2396                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
2397                                                          , bl.projfunc_currency_code
2398                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
2399                                                          , ROUND((rates.rate * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau)*rates.mau
2400                                                       )
2401                                                  , TO_NUMBER(NULL))                glb1_etc_raw_cost
2402                                   , DECODE(ver.wp_flag
2403                                          , 'N'
2404                                                  , DECODE (g_global1_currency_code
2405                                                  , bl.txn_currency_code
2406                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
2407                                                          , bl.project_currency_code
2408                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
2409                                                          , bl.projfunc_currency_code
2410                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
2411                                                          , ROUND((rates.rate * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau)*rates.mau
2412                                                       )
2413                                                  , TO_NUMBER(NULL))    glb1_etc_brdn_cost
2414                                   , DECODE(ver.wp_flag
2415                                          , 'N'
2416                                                  , DECODE (g_global1_currency_code
2417                                                  , bl.txn_currency_code
2418                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
2419                                                          , bl.project_currency_code
2420                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
2421                                                          , bl.projfunc_currency_code
2422                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
2423                                                          , ROUND((rates.rate * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau)*rates.mau
2424                                                       )
2425                                                  , TO_NUMBER(NULL))    glb1_etc_revenue
2426                         , g_global2_currency_code  glb2_currency_code -- g_global2_currency_code        glb2_currency_code
2427                   , DECODE (g_global2_currency_code
2428                                           , bl.txn_currency_code
2429                                                   , bl.txn_raw_cost
2430                                                   , bl.project_currency_code
2431                                                   , bl.project_raw_cost
2432                                                   , bl.projfunc_currency_code
2433                                                   , bl.raw_cost
2434                                                   , ROUND((rates.rate2 * raw_cost )/rates.mau2)*rates.mau2
2435                                         ) glb2_raw_cost
2436                   , DECODE (g_global2_currency_code
2437                                           , bl.txn_currency_code
2438                                                   , bl.txn_burdened_cost
2439                                                   , bl.project_currency_code
2440                                                   , bl.project_burdened_cost
2441                                                   , bl.projfunc_currency_code
2442                                                   , bl.burdened_cost
2443                                                   , ROUND((rates.rate2 * burdened_cost )/rates.mau2)*rates.mau2
2444                                         ) glb2_BRDN_COST
2445                   , DECODE (g_global2_currency_code
2446                                           , bl.txn_currency_code
2447                                                   , bl.txn_revenue
2448                                                   , bl.project_currency_code
2449                                                   , bl.project_revenue
2450                                                   , bl.projfunc_currency_code
2451                                                   , bl.revenue
2452                                                   , ROUND((rates.rate2 * revenue )/rates.mau2)*rates.mau2
2453                                         )  glb2_revenue
2454                               , DECODE(ver.wp_flag
2455                                      , 'N'
2456                                                  , DECODE (g_global2_currency_code
2457                                                  , bl.txn_currency_code
2458                                                          , bl.txn_init_raw_cost
2459                                                          , bl.project_currency_code
2460                                                          , bl.project_init_raw_cost
2461                                                          , bl.projfunc_currency_code
2462                                                          , bl.init_raw_cost
2463                                                          , ROUND((rates.rate2 * bl.init_raw_cost )/rates.mau2)*rates.mau2
2464                                                       )
2465                                                  , TO_NUMBER(NULL))                 glb2_actual_raw_cost
2466                               , DECODE(ver.wp_flag
2467                                          , 'N'
2468                                                  , DECODE (g_global2_currency_code
2469                                                  , bl.txn_currency_code
2470                                                          , bl.txn_init_burdened_cost
2471                                                          , bl.project_currency_code
2472                                                          , bl.project_init_burdened_cost
2473                                                          , bl.projfunc_currency_code
2474                                                          , bl.init_burdened_cost
2475                                                          , ROUND((rates.rate2 * bl.init_burdened_cost )/rates.mau2)*rates.mau2
2476                                                       )
2477                                                  , TO_NUMBER(NULL))            glb2_actual_brdn_cost
2478                               , DECODE(ver.wp_flag
2479                                          , 'N'
2480                                                  , DECODE (g_global2_currency_code
2481                                                  , bl.txn_currency_code
2482                                                          , bl.txn_init_revenue
2483                                                          , bl.project_currency_code
2484                                                          , bl.project_init_revenue
2485                                                          , bl.projfunc_currency_code
2486                                                          , bl.init_revenue
2487                                                          , ROUND((rates.rate2 * bl.init_revenue )/rates.mau2)*rates.mau2
2488                                                       )
2489                                                  , TO_NUMBER(NULL))                  glb2_actual_revenue
2490                                   , DECODE(ver.wp_flag
2491                                          , 'N'
2492                                                  , DECODE (g_global2_currency_code
2493                                                  , bl.txn_currency_code
2494                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
2495                                                          , bl.project_currency_code
2496                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
2497                                                          , bl.projfunc_currency_code
2498                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
2499                                                          , ROUND((rates.rate2 * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau2)*rates.mau2
2500                                                       )
2501                                                  , TO_NUMBER(NULL))                glb2_etc_raw_cost
2502                                   , DECODE(ver.wp_flag
2503                                          , 'N'
2504                                                  , DECODE (g_global2_currency_code
2505                                                  , bl.txn_currency_code
2506                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
2507                                                          , bl.project_currency_code
2508                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
2509                                                          , bl.projfunc_currency_code
2510                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
2511                                                          , ROUND((rates.rate2 * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau2)*rates.mau2
2512                                                       )
2513                                                  , TO_NUMBER(NULL))    glb2_etc_brdn_cost
2514                                   , DECODE(ver.wp_flag
2515                                          , 'N'
2516                                                  , DECODE (g_global2_currency_code
2517                                                  , bl.txn_currency_code
2518                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
2519                                                          , bl.project_currency_code
2520                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
2521                                                          , bl.projfunc_currency_code
2522                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
2523                                                          , ROUND((rates.rate2 * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau2)*rates.mau2
2524                                                       )
2525                                                  , TO_NUMBER(NULL))    glb2_etc_revenue
2526                                      , bl.quantity                    quantity
2527                                            , DECODE(ver.wp_flag, 'N', bl.init_quantity, TO_NUMBER(NULL))                  actual_quantity  -- new
2528                                            , DECODE(ver.wp_flag, 'N', (bl.quantity - NVL(bl.init_quantity, 0)), TO_NUMBER(NULL)) etc_quantity  -- new
2529                                            , TO_DATE(NULL) START_DATE
2530                                            , TO_DATE(NULL) END_date
2531                                            , ver.time_phased_type_code time_phased_type_code
2532                                            , ppa.org_id project_org_id
2533                                            , ppa.carrying_out_organization_id project_organization_id
2534                                                , DECODE(ver.time_phased_type_code, g_pa_cal_str, 'OF', g_gl_cal_str, 'OF', 'N', 'NTP', 'X') line_type
2535                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate
2536                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate2
2537                         , ver.plan_type_code  plan_type_code /* 4471527 */
2538                                  FROM
2539                                  PA_BUDGET_LINES               bl
2540                                , pa_resource_asSIGNments       ra
2541                                , PJI_FM_EXTR_PLNVER3_T           ver
2542                                    , pa_projects_all               ppa
2543                                      , PA_PROJ_ELEM_VER_STRUCTURE    pevs
2544                                          , PJI_FM_AGGR_DLY_RATES_T           rates
2545                                          , pji_time_cal_period_v           prd
2546                                          , PJI_ORG_EXTR_INFO             oei
2547                                          , pji_fp_txn_accum_header       hdr
2548                                          , pa_rbs_txn_accum_map          map
2549                                          , pji_pjp_rbs_header            rhdr
2550                  WHERE 1=1
2551                                      AND ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
2552                              AND ra.project_id = ver.PROJECT_ID
2553                              AND ra.budget_version_id = ver.plan_version_id
2554                              AND ver.project_id = ppa.project_id
2555                              AND txn_currency_code IS NOT NULL
2556                              AND bl.project_currency_code IS NOT NULL
2557                              AND bl.projfunc_currency_code IS NOT NULL
2558                                  AND pevs.element_version_id = ver.wbs_struct_version_id
2559                                  AND ver.secondary_rbs_flag = 'Y'
2560                                          AND ver.wp_flag = 'N'
2561                                          AND oei.org_id = ppa.org_id
2562                                          AND ver.time_phased_type_code IN (g_pa_cal_str, g_gl_cal_str)
2563                                          AND DECODE ( ver.time_phased_type_code
2564                                                     , g_pa_cal_str, oei.pa_calendar_id
2565                                                                 , g_gl_cal_str, oei.gl_calendar_id) = prd.calendar_id
2566                                          AND bl.period_name = prd.name
2567                                          AND rates.time_id = prd.cal_period_id
2568                                           AND ra.txn_accum_header_id = hdr.txn_accum_header_id
2569                                           AND ra.txn_accum_header_id = map.txn_accum_header_id
2570                                           AND map.struct_version_id = rhdr.rbs_version_id
2571                                           AND ra.budget_version_id = rhdr.plan_version_id
2572                                           AND ppa.project_id = ra.project_id
2573                                 AND ver.rbs_struct_version_id = rhdr.rbs_version_id
2574                                 AND ver.project_id = pevs.project_id -- Fix for bug: 4149422  in EXTRACT_PLAN_AMTS_SECRBS_GLC12
2575              UNION ALL
2576              SELECT
2577                           ra.project_id
2578                         , bl.rowid row_id
2579                         , ra.budget_version_id
2580                                         , -1 time_id
2581                         , bl.resource_asSIGNment_id
2582                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
2583                         , NVL(map.element_id, -1)              rbs_element_id  -- !! changed.
2584                         , ver.wbs_struct_version_id      wbs_struct_version_id
2585                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id  -- !! changed.
2586                         , ver.plan_type_id               plan_type_id
2587                         , ra.rate_based_flag             billable_flag
2588                         , ra.resource_class_code         resource_class
2589                         , DECODE(ver.time_phased_type_code
2590                          , g_pa_cal_str, 32
2591                          , g_gl_cal_str, 32
2592                          , 'N', 2048
2593                          , -1) period_type_id
2594                      , DECODE(ver.time_phased_type_code
2595                          , g_pa_cal_str, g_pa_cal_str
2596                          , g_gl_cal_str, g_gl_cal_str
2597                          , 'N', g_all
2598                          , 'X')  CALENDAR_TYPE
2599                         , bl.txn_currency_code           txn_currency_code
2600                         , bl.txn_raw_cost                txn_raw_cost
2601                         , bl.txn_burdened_COST           txn_brdn_COST
2602                         , bl.txn_revenue                 txn_revenue
2603                         , DECODE(ver.wp_flag, 'N', bl.txn_init_raw_cost, TO_NUMBER(NULL))                txn_actual_raw_cost  -- new
2604                         , DECODE(ver.wp_flag, 'N', bl.txn_init_burdened_cost, TO_NUMBER(NULL))             txn_actual_brdn_cost  -- new
2605                         , DECODE(ver.wp_flag, 'N', bl.txn_init_revenue, TO_NUMBER(NULL))                   txn_actual_revenue  -- new
2606                         , DECODE(ver.wp_flag, 'N', (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0)), TO_NUMBER(NULL)) txn_etc_raw_cost     -- new
2607                         , DECODE(ver.wp_flag, 'N', (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0)), TO_NUMBER(NULL)) txn_etc_brdn_cost     -- new
2608                         , DECODE(ver.wp_flag, 'N', (bl.txn_revenue - NVL(bl.txn_init_revenue, 0)), TO_NUMBER(NULL)) txn_etc_revenue     -- new
2609                         , bl.project_currency_code          prj_currency_code
2610                         , bl.project_raw_cost               prj_raw_cost
2611                         , bl.project_burdened_COST          prj_BRDN_COST
2612                         , bl.project_revenue                prj_revenue
2613                         , DECODE(ver.wp_flag, 'N', bl.project_init_raw_cost, TO_NUMBER(NULL))          prj_actual_raw_cost  -- new
2614                         , DECODE(ver.wp_flag, 'N', bl.project_init_burdened_cost, TO_NUMBER(NULL))     prj_actual_brdn_cost  -- new
2615                         , DECODE(ver.wp_flag, 'N', bl.project_init_revenue, TO_NUMBER(NULL))           prj_actual_revenue  -- new
2616                         , DECODE(ver.wp_flag, 'N', (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0)), TO_NUMBER(NULL)) prj_etc_raw_cost     -- new
2617                         , DECODE(ver.wp_flag, 'N', (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0)), TO_NUMBER(NULL)) prj_etc_brdn_cost     -- new
2618                         , DECODE(ver.wp_flag, 'N', (bl.project_revenue - NVL(bl.project_init_revenue, 0)), TO_NUMBER(NULL)) prj_etc_revenue     -- new
2619                         , bl.projfunc_currency_code         func_currency_code
2620                   , bl.raw_cost                       func_raw_cost
2621                         , bl.burdened_COST                  func_BRDN_COST
2622                         , bl.revenue                        func_revenue
2623                         , DECODE(ver.wp_flag, 'N', bl.init_raw_cost , TO_NUMBER(NULL))                 func_actual_raw_cost  -- new
2624                         , DECODE(ver.wp_flag, 'N', bl.init_burdened_cost , TO_NUMBER(NULL))            func_actual_brdn_cost  -- new
2625                         , DECODE(ver.wp_flag, 'N', bl.init_revenue , TO_NUMBER(NULL))                  func_actual_revenue  -- new
2626                         , DECODE(ver.wp_flag, 'N', (bl.raw_cost - NVL(bl.init_raw_cost, 0)), TO_NUMBER(NULL)) func_etc_raw_cost     -- new
2627                         , DECODE(ver.wp_flag, 'N', (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)), TO_NUMBER(NULL)) func_etc_brdn_cost     -- new
2628                         , DECODE(ver.wp_flag, 'N', (bl.revenue - NVL(bl.init_revenue, 0)), TO_NUMBER(NULL)) func_etc_revenue     -- new
2629                         , g_global1_currency_code   glb1_currency_code -- g_global1_currency_code         glb1_currency_code
2630                   , DECODE (g_global1_currency_code
2631                                           , bl.txn_currency_code
2632                                                   , bl.txn_raw_cost
2633                                                   , bl.project_currency_code
2634                                                   , bl.project_raw_cost
2635                                                   , bl.projfunc_currency_code
2636                                                   , bl.raw_cost
2637                                                   , ROUND((rates.rate * raw_cost )/rates.mau)*rates.mau
2638                                         ) glb1_raw_cost
2639                   , DECODE (g_global1_currency_code
2640                                           , bl.txn_currency_code
2641                                                   , bl.txn_burdened_cost
2642                                                   , bl.project_currency_code
2643                                                   , bl.project_burdened_cost
2644                                                   , bl.projfunc_currency_code
2645                                                   , bl.burdened_cost
2646                                                   , ROUND((rates.rate * burdened_cost )/rates.mau)*rates.mau
2647                                         ) glb1_BRDN_COST
2648                   , DECODE (g_global1_currency_code
2649                                           , bl.txn_currency_code
2650                                                   , bl.txn_revenue
2651                                                   , bl.project_currency_code
2652                                                   , bl.project_revenue
2653                                                   , bl.projfunc_currency_code
2654                                                   , bl.revenue
2655                                                   , ROUND((rates.rate * revenue )/rates.mau)*rates.mau
2656                                         )  glb1_revenue
2657                               , DECODE(ver.wp_flag
2658                                      , 'N'
2659                                                  , DECODE (g_global1_currency_code
2660                                                  , bl.txn_currency_code
2661                                                          , bl.txn_init_raw_cost
2662                                                          , bl.project_currency_code
2663                                                          , bl.project_init_raw_cost
2664                                                          , bl.projfunc_currency_code
2665                                                          , bl.init_raw_cost
2666                                                          , ROUND((rates.rate * bl.init_raw_cost )/rates.mau)*rates.mau
2667                                                       )
2668                                                  , TO_NUMBER(NULL))                 glb1_actual_raw_cost
2669                               , DECODE(ver.wp_flag
2670                                          , 'N'
2671                                                  , DECODE (g_global1_currency_code
2672                                                  , bl.txn_currency_code
2673                                                          , bl.txn_init_burdened_cost
2674                                                          , bl.project_currency_code
2675                                                          , bl.project_init_burdened_cost
2676                                                          , bl.projfunc_currency_code
2677                                                          , bl.init_burdened_cost
2678                                                          , ROUND((rates.rate * bl.init_burdened_cost )/rates.mau)*rates.mau
2679                                                       )
2680                                                  , TO_NUMBER(NULL))            glb1_actual_brdn_cost
2681                               , DECODE(ver.wp_flag
2682                                          , 'N'
2683                                                  , DECODE (g_global1_currency_code
2684                                                  , bl.txn_currency_code
2685                                                          , bl.txn_init_revenue
2686                                                          , bl.project_currency_code
2687                                                          , bl.project_init_revenue
2688                                                          , bl.projfunc_currency_code
2689                                                          , bl.init_revenue
2690                                                          , ROUND((rates.rate * bl.init_revenue )/rates.mau)*rates.mau
2691                                                       )
2692                                                  , TO_NUMBER(NULL))                  glb1_actual_revenue
2693                                   , DECODE(ver.wp_flag
2694                                          , 'N'
2695                                                  , DECODE (g_global1_currency_code
2696                                                  , bl.txn_currency_code
2697                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
2698                                                          , bl.project_currency_code
2699                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
2700                                                          , bl.projfunc_currency_code
2701                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
2702                                                          , ROUND((rates.rate * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau)*rates.mau
2703                                                       )
2704                                                  , TO_NUMBER(NULL))                glb1_etc_raw_cost
2705                                   , DECODE(ver.wp_flag
2706                                          , 'N'
2707                                                  , DECODE (g_global1_currency_code
2708                                                  , bl.txn_currency_code
2709                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
2710                                                          , bl.project_currency_code
2711                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
2712                                                          , bl.projfunc_currency_code
2713                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
2714                                                          , ROUND((rates.rate * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau)*rates.mau
2715                                                       )
2716                                                  , TO_NUMBER(NULL))    glb1_etc_brdn_cost
2717                                   , DECODE(ver.wp_flag
2718                                          , 'N'
2719                                                  , DECODE (g_global1_currency_code
2720                                                  , bl.txn_currency_code
2721                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
2722                                                          , bl.project_currency_code
2723                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
2724                                                          , bl.projfunc_currency_code
2725                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
2726                                                          , ROUND((rates.rate * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau)*rates.mau
2727                                                       )
2728                                                  , TO_NUMBER(NULL))    glb1_etc_revenue
2729                         , g_global2_currency_code   glb2_currency_code -- g_global2_currency_code         glb2_currency_code
2730                   , DECODE (g_global2_currency_code
2731                                           , bl.txn_currency_code
2732                                                   , bl.txn_raw_cost
2733                                                   , bl.project_currency_code
2734                                                   , bl.project_raw_cost
2735                                                   , bl.projfunc_currency_code
2736                                                   , bl.raw_cost
2737                                                   , ROUND((rates.rate2 * raw_cost )/rates.mau2)*rates.mau2
2738                                         ) glb2_raw_cost
2739                   , DECODE (g_global2_currency_code
2740                                           , bl.txn_currency_code
2741                                                   , bl.txn_burdened_cost
2742                                                   , bl.project_currency_code
2743                                                   , bl.project_burdened_cost
2744                                                   , bl.projfunc_currency_code
2745                                                   , bl.burdened_cost
2746                                                   , ROUND((rates.rate2 * burdened_cost )/rates.mau2)*rates.mau2
2747                                         ) glb2_BRDN_COST
2748                   , DECODE (g_global2_currency_code
2749                                           , bl.txn_currency_code
2750                                                   , bl.txn_revenue
2751                                                   , bl.project_currency_code
2752                                                   , bl.project_revenue
2753                                                   , bl.projfunc_currency_code
2754                                                   , bl.revenue
2755                                                   , ROUND((rates.rate2 * revenue )/rates.mau2)*rates.mau2
2756                                         )  glb2_revenue
2757                               , DECODE(ver.wp_flag
2758                                      , 'N'
2759                                                  , DECODE (g_global2_currency_code
2760                                                  , bl.txn_currency_code
2761                                                          , bl.txn_init_raw_cost
2762                                                          , bl.project_currency_code
2763                                                          , bl.project_init_raw_cost
2764                                                          , bl.projfunc_currency_code
2765                                                          , bl.init_raw_cost
2766                                                          , ROUND((rates.rate2 * bl.init_raw_cost )/rates.mau2)*rates.mau2
2767                                                       )
2768                                                  , TO_NUMBER(NULL))                 glb2_actual_raw_cost
2769                               , DECODE(ver.wp_flag
2770                                          , 'N'
2771                                                  , DECODE (g_global2_currency_code
2772                                                  , bl.txn_currency_code
2773                                                          , bl.txn_init_burdened_cost
2774                                                          , bl.project_currency_code
2775                                                          , bl.project_init_burdened_cost
2776                                                          , bl.projfunc_currency_code
2777                                                          , bl.init_burdened_cost
2778                                                          , ROUND((rates.rate2 * bl.init_burdened_cost )/rates.mau2)*rates.mau2
2779                                                       )
2780                                                  , TO_NUMBER(NULL))            glb2_actual_brdn_cost
2781                               , DECODE(ver.wp_flag
2782                                          , 'N'
2783                                                  , DECODE (g_global2_currency_code
2784                                                  , bl.txn_currency_code
2785                                                          , bl.txn_init_revenue
2786                                                          , bl.project_currency_code
2787                                                          , bl.project_init_revenue
2788                                                          , bl.projfunc_currency_code
2789                                                          , bl.init_revenue
2790                                                          , ROUND((rates.rate2 * bl.init_revenue )/rates.mau2)*rates.mau2
2791                                                       )
2792                                                  , TO_NUMBER(NULL))                  glb2_actual_revenue
2793                                   , DECODE(ver.wp_flag
2794                                          , 'N'
2795                                                  , DECODE (g_global2_currency_code
2796                                                  , bl.txn_currency_code
2797                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
2798                                                          , bl.project_currency_code
2799                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
2800                                                          , bl.projfunc_currency_code
2801                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
2802                                                          , ROUND((rates.rate2 * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau2)*rates.mau2
2803                                                       )
2804                                                  , TO_NUMBER(NULL))                glb2_etc_raw_cost
2805                                   , DECODE(ver.wp_flag
2806                                          , 'N'
2807                                                  , DECODE (g_global2_currency_code
2808                                                  , bl.txn_currency_code
2809                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
2810                                                          , bl.project_currency_code
2811                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
2812                                                          , bl.projfunc_currency_code
2813                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
2814                                                          , ROUND((rates.rate2 * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau2)*rates.mau2
2815                                                       )
2816                                                  , TO_NUMBER(NULL))    glb2_etc_brdn_cost
2817                                   , DECODE(ver.wp_flag
2818                                          , 'N'
2819                                                  , DECODE (g_global2_currency_code
2820                                                  , bl.txn_currency_code
2821                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
2822                                                          , bl.project_currency_code
2823                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
2824                                                          , bl.projfunc_currency_code
2825                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
2826                                                          , ROUND((rates.rate2 * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau2)*rates.mau2
2827                                                       )
2828                                                  , TO_NUMBER(NULL))    glb2_etc_revenue
2829                           , bl.quantity                    quantity
2830                                 , DECODE(ver.wp_flag, 'N', bl.init_quantity, TO_NUMBER(NULL))                  actual_quantity  -- new
2831                                 , DECODE(ver.wp_flag, 'N', (bl.quantity - NVL(bl.init_quantity, 0)), TO_NUMBER(NULL)) etc_quantity  -- new
2832                                 , ra.planning_start_date  start_date
2833                                 , ra.planning_END_date    end_date
2834                                 , ver.time_phased_type_code time_phased_type_code
2835                                 , ppa.org_id project_org_id
2836                                 , ppa.carrying_out_organization_id project_organization_id
2837                                   , 'NTP' line_type
2838                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate
2839                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate2
2840                         , ver.plan_type_code plan_type_code  /* 4471527 */
2841                         FROM
2842                        PA_BUDGET_LINES               bl
2843                      , pa_resource_asSIGNments       ra
2844                      , PJI_FM_EXTR_PLNVER3_T           ver
2845                          , pa_projects_all               ppa
2846                            , PA_PROJ_ELEM_VER_STRUCTURE    pevs
2847                            , PJI_FM_AGGR_DLY_RATES_T         rates
2848                            -- , pji_time_cal_period           prd
2849                            -- , PJI_ORG_EXTR_INFO             oei
2850                            , pji_fp_txn_accum_header       hdr
2851                            , pa_rbs_txn_accum_map          map
2852                            , pji_pjp_rbs_header            rhdr
2853                  WHERE 1=1
2854                            AND ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
2855                      AND ra.project_id = ver.PROJECT_ID
2856                      AND ra.budget_version_id = ver.plan_version_id
2857                      AND ver.project_id = ppa.project_id
2858                      AND txn_currency_code IS NOT NULL
2859                      AND bl.project_currency_code IS NOT NULL
2860                      AND bl.projfunc_currency_code IS NOT NULL
2861                      AND ver.project_id = pevs.project_id -- Fix for bug : 4149422 in EXTRACT_PLAN_AMTS_SECRBS_GLC12
2862                                  AND pevs.element_version_id = ver.wbs_struct_version_id
2863                                  AND ver.secondary_rbs_flag = 'Y'
2864                                          AND ver.wp_flag = 'N'
2865                                          -- AND oei.org_id = ppa.org_id
2866                                          AND ver.time_phased_type_code = 'N' -- IN (g_pa_cal_str, g_gl_cal_str)
2867                                          AND rates.time_id = DECODE ( g_currency_conversion_rule
2868                                , g_start_str
2869                                          , TO_NUMBER(to_CHAR(ra.planning_start_date, 'J'))
2870                                          , g_end_str
2871                                          , TO_NUMBER(to_CHAR(ra.planning_end_date, 'J')) )
2872                                           AND ra.txn_accum_header_id = hdr.txn_accum_header_id
2873                                           AND ra.txn_accum_header_id = map.txn_accum_header_id
2874                                           AND map.struct_version_id = rhdr.rbs_version_id
2875                                           AND ra.budget_version_id = rhdr.plan_version_id
2876                                           AND ppa.project_id = ra.project_id
2877                                 AND ver.rbs_struct_version_id = rhdr.rbs_version_id
2878                                   ) spread_bl
2879                                    ---- end of third inline view 'spread_bl'...........
2880                   ,
2881                     (
2882                       select 1   INVERT_ID from dual union all
2883                       select 2   INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('GLOBAL_CURR2_FLAG') = 'Y' union all
2884                       select 4   INVERT_ID from dual union all
2885                       select 8   INVERT_ID from dual union all
2886                       select 16  INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('TXN_CURR_FLAG') = 'Y'
2887                     ) invert
2888                                 )  collapse_bl
2889                                 ----  End of second inline view 'collapse_bl' ..........
2890                         GROUP BY
2891               collapse_bl.PROJECT_ID
2892                         , collapse_bl.time_id
2893             , collapse_bl.WBS_ELEMENT_ID
2894             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
2895             , collapse_bl.RBS_ELEMENT_ID
2896             , collapse_bl.RBS_STRUCT_VERSION_ID
2897                         , collapse_bl.plan_type_id
2898             , collapse_bl.plan_version_id
2899             , collapse_bl.PROJECT_ORGANIZATION_ID
2900             , collapse_bl.PROJECT_ORG_ID
2901             , collapse_bl.RESOURCE_ASSIGNMENT_ID
2902             , collapse_bl.BILLABLE_FLAG
2903             , collapse_bl.RESOURCE_CLASS
2904             , collapse_bl.TIME_PHASED_TYPE_CODE
2905             , collapse_bl.CURRENCY_CODE
2906             , collapse_bl.start_date
2907             , collapse_bl.end_date
2908             , collapse_bl.row_id
2909                         , collapse_bl.line_type
2910                         , collapse_bl.calendar_type
2911                         , collapse_bl.period_type_id
2912             ,collapse_bl.rate
2913              ,collapse_bl.rate2
2914             , collapse_bl.plan_type_code   /* 4471527 */
2915        ) plr
2916                                 ----  End of first inline view plr ..........
2917            , pji_fm_extr_plnver3_t vers
2918           WHERE 1=1
2919             AND vers.plan_version_id = plr.plan_version_id
2920                  AND vers.plan_type_code = plr.plan_type_code   /*4471527 */
2921           -- AND plr.CURR_RECORD_TYPE IS NOT NULL
2922           AND vers.rbs_struct_version_id = plr.rbs_struct_version_id
2923           AND plr.currency_code IS NOT NULL
2924        GROUP BY
2925          plr.PROJECT_ID
2926        , plr.PROJECT_ORG_ID
2927        , plr.project_ORGANIZATION_ID
2928        , plr.WBS_ELEMENT_ID
2929        , plr.time_id
2930        , plr.period_type_id
2931        , plr.CALENDAR_TYPE
2932        , plr.CURR_RECORD_TYPE  -- curr code missing.
2933            , plr.currency_code
2934        , plr.RBS_ELEMENT_ID
2935        , plr.RBS_STRUCT_VERSION_ID
2936        , plr.plan_version_id
2937          , plr.plan_type_id
2938        , plr.start_date
2939          , plr.end_date
2940          , plr.line_type
2941          ,decode(sign(plr.rate),-1,'Y',NULL) ||decode(sign(plr.rate2),-1,'Y',NULL)
2942          , plr.plan_type_code ;    /* 4471527 */
2943 
2944 
2945   print_time ( ' EXTRACT_PLAN_AMTS_SECRBS_GLC12 end. Inserted rows # is: ' || SQL%ROWCOUNT );
2946 
2947 EXCEPTION
2948   WHEN OTHERS THEN
2949     print_time('EXTRACT_PLAN_AMOUNTS_SECRBS : Exception ' || SQLERRM );
2950     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
2951                              p_procedure_name => 'EXTRACT_PLAN_AMTS_SECRBS_GLC12');
2952     RAISE;
2953 END;
2954 
2955 --EXTRACT_PLAN_AMTS_PRIRBS_GLC12
2956 
2957 PROCEDURE EXTRACT_PLAN_AMTS_PRIRBS_GLC12 IS
2958 BEGIN
2959 
2960     print_time ( ' EXTRACT_PLAN_AMTS_PRIRBS_GLC12 begin. Inserted rows # is: ' || SQL%ROWCOUNT );
2961 
2962     PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
2963       x_currency_conversion_rule => g_currency_conversion_rule
2964     , x_prorating_format         => g_prorating_format
2965     , x_global1_currency_code    => g_global1_currency_code
2966     , x_global2_currency_code    => g_global2_currency_code
2967     , x_global1_currency_mau     => g_global1_currency_mau
2968     , x_global2_currency_mau     => g_global2_currency_mau ) ;
2969 
2970 
2971   print_time(' Got global currency settings. ');
2972   print_time(' g_currency_conversion_rule ' || g_currency_conversion_rule || ' g_prorating_format ' ||  g_prorating_format );
2973   print_time(' g_global1_currency_code ' || g_global1_currency_code || ' g_global2_currency_code ' || g_global2_currency_code );
2974   print_time(' g_global1_currency_mau ' || g_global1_currency_mau || ' g_global2_currency_mau ' || g_global2_currency_mau ) ;
2975 
2976     INSERT INTO PJI_FP_AGGR_PJP1_T
2977     (
2978          WORKER_ID
2979        , PROJECT_ID
2980        , PROJECT_ORG_ID
2981        , PROJECT_ORGANIZATION_ID
2982        , PROJECT_ELEMENT_ID
2983        , TIME_ID
2984        , PERIOD_TYPE_ID
2985        , CALENDAR_TYPE
2986        , RBS_AGGR_LEVEL
2987        , WBS_ROLLUP_FLAG
2988        , PRG_ROLLUP_FLAG
2989        , CURR_RECORD_TYPE_ID
2990        , CURRENCY_CODE
2991        , RBS_ELEMENT_ID
2992        , RBS_VERSION_ID
2993        , PLAN_VERSION_ID
2994        , PLAN_TYPE_ID
2995        , RAW_COST
2996        , BRDN_COST
2997        , REVENUE
2998        , BILL_RAW_COST
2999        , BILL_BRDN_COST
3000        , BILL_LABOR_RAW_COST
3001        , BILL_LABOR_BRDN_COST
3002        , BILL_LABOR_HRS
3003        , EQUIPMENT_RAW_COST
3004        , EQUIPMENT_BRDN_COST
3005        , CAPITALIZABLE_RAW_COST
3006        , CAPITALIZABLE_BRDN_COST
3007        , LABOR_RAW_COST
3008        , LABOR_BRDN_COST
3009        , LABOR_HRS
3010        , LABOR_REVENUE
3011        , EQUIPMENT_HOURS
3012        , BILLABLE_EQUIPMENT_HOURS
3013        , SUP_INV_COMMITTED_COST
3014        , PO_COMMITTED_COST
3015        , PR_COMMITTED_COST
3016        , OTH_COMMITTED_COST
3017        , ACT_LABOR_HRS
3018            , ACT_EQUIP_HRS
3019            , ACT_LABOR_BRDN_COST
3020            , ACT_EQUIP_BRDN_COST
3021            , ACT_BRDN_COST
3022            , ACT_RAW_COST
3023            , ACT_REVENUE
3024          , ACT_LABOR_RAW_COST
3025          , ACT_EQUIP_RAW_COST
3026            , ETC_LABOR_HRS
3027            , ETC_EQUIP_HRS
3028            , ETC_LABOR_BRDN_COST
3029            , ETC_EQUIP_BRDN_COST
3030            , ETC_BRDN_COST
3031          , ETC_RAW_COST
3032          , ETC_LABOR_RAW_COST
3033          , ETC_EQUIP_RAW_COST
3034        , CUSTOM1
3035        , CUSTOM2
3036        , CUSTOM3
3037        , CUSTOM4
3038        , CUSTOM5
3039        , CUSTOM6
3040        , CUSTOM7
3041        , CUSTOM8
3042        , CUSTOM9
3043        , CUSTOM10
3044        , CUSTOM11
3045        , CUSTOM12
3046        , CUSTOM13
3047        , CUSTOM14
3048        , CUSTOM15
3049        , LINE_TYPE
3050        , RATE_DANGLING_FLAG
3051        , TIME_DANGLING_FLAG
3052        , START_DATE
3053        , END_DATE
3054        , PRG_LEVEL
3055        , PLAN_TYPE_CODE
3056         )
3057        SELECT
3058          g_worker_id WORKER_ID
3059        , plr.PROJECT_ID
3060        , plr.PROJECT_ORG_ID
3061        , plr.project_ORGANIZATION_ID
3062        , plr.WBS_ELEMENT_ID
3063        , plr.time_id
3064        , plr.period_type_id -- period type id...
3065        , plr.CALENDAR_TYPE
3066        , g_lowest_level RBS_AGGR_LEVEL
3067        , 'N' WBS_ROLLUP_FLAG
3068        , 'N' PRG_ROLLUP_FLAG
3069        , plr.CURR_RECORD_TYPE
3070        , plr.currency_code
3071        , plr.RBS_ELEMENT_ID
3072        , plr.RBS_STRUCT_VERSION_ID
3073        , plr.plan_version_id
3074        , plr.plan_type_id
3075        , SUM(plr.RAW_COST)
3076        , SUM(plr.BRDN_COST)
3077        , SUM(plr.REVENUE)
3078        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )  BILL_RAW_COST
3079        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )   BILL_BRDN_COST
3080        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code, plr.raw_cost, 0 ) )  BILL_LABOR_RAW_COST
3081        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code , plr.BRDN_COST, 0 ) )   BILL_LABOR_BRDN_COST
3082        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code, plr.quantity, 0 ) )  BILL_LABOR_HRS */ -- bug 6039785
3083        , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code,
3084                                                                   DECODE(plr.billable_flag,'Y',plr.quantity,0), 0 ) )  BILL_LABOR_HRS -- bug 6039785
3085        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.raw_cost, 0 ) )  EQUIPMENT_RAW_COST
3086        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.BRDN_COST, 0 ) )   EQUIPMENT_BRDN_COST
3087        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )      CAPITALIZABLE_RAW_COST
3088        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) )      CAPITALIZABLE_BRDN_COST
3089        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.raw_cost, 0 ) )  LABOR_RAW_COST
3090        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.BRDN_COST, 0 ) )   LABOR_BRDN_COST
3091        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
3092                                             DECODE ( vers.wp_flag, 'N',
3093                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
3094                                                                    plr.quantity),
3095                                                     0 ) )   labor_hrs */ -- bug 6039785
3096        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, DECODE(plr.billable_flag ,'Y',
3097                                                                     DECODE ( vers.wp_flag, 'N',
3098                                                                              DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
3099                                                                    plr.quantity),
3100 						                   0 ),
3101                                                     0 ) )   labor_hrs -- bug 6039785
3102        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.revenue, 0 ) )  LABOR_REVENUE
3103        /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
3104                                             DECODE ( vers.wp_flag, 'N',
3105                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
3106                                                                    plr.quantity),
3107 
3108                                             0 ) )  EQUIPMENT_HOURS */ -- bug 6039785
3109        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code, DECODE(plr.billable_flag ,'Y',
3110                                                                    DECODE ( vers.wp_flag, 'N',
3111                                                                             DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
3112                                                                    plr.quantity),
3113 						                   0 ),
3114                                             0 ) )  EQUIPMENT_HOURS -- bug 6039785
3115        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_equip_resclass_code, plr.quantity, 0 ) )  BILLABLE_EQUIPMENT_HOURS */ -- bug 6039785
3116        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_equip_resclass_code,
3117                                                                  DECODE(plr.billable_flag,'Y',plr.quantity,0), 0 ) )  BILLABLE_EQUIPMENT_HOURS -- bug 6039785
3118        , TO_NUMBER(NULL)  SUP_INV_COMMITTED_COST
3119        , TO_NUMBER(NULL)  PO_COMMITTED_COST
3120        , TO_NUMBER(NULL)  PR_COMMITTED_COST
3121        , TO_NUMBER(NULL)  OTH_COMMITTED_COST
3122        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
3123                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
3124                                                                                 0 ) ) ) ACT_LABOR_HRS */ -- bug 6039785
3125        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
3126                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
3127                                                                                 0 ) ) ) ACT_LABOR_HRS -- bug 6039785
3128        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
3129                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
3130                                                                                 0 ) ) ) ACT_EQUIP_HOURS */ -- bug 6039785
3131        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
3132                                                                                 DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
3133                                                                                 0 ) ) ) ACT_EQUIP_HOURS -- bug 6039785
3134        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_BRDN_COST, 0 ) ) ) ACT_LABOR_BRDN_COST
3135        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_BRDN_COST, 0 ) ) ) ACT_EQUIPMENT_BRDN_COST
3136        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_brdn_cost ) ) ACT_BRDN_COST
3137        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_raw_cost ) ) ACT_RAW_COST
3138        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.actual_revenue ) ) ACT_REVENUE
3139        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_RAW_COST, 0 ) ) ) ACT_LABOR_RAW_COST
3140        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_RAW_COST, 0 ) ) ) ACT_EQUIPMENT_RAW_COST
3141        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
3142                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
3143                                                                                 0 ) ) ) ETC_LABOR_HRS */ -- bug 6039785
3144        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code,
3145                                                                                 DECODE (plr.billable_flag ,'Y',
3146                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
3147                                                                                 0 ),
3148                                                                                 0 ) ) ) ETC_LABOR_HRS -- bug 6039785
3149        /* , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
3150                                                                                 DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
3151                                                                                 0 ) ) ) ETC_EQUIP_HOURS */ -- bug 6039785
3152        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code,
3153                                                                                 DECODE (plr.billable_flag ,'Y',
3154                                                                                         DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
3155                                                                                 0 ),
3156                                                                                 0 ) ) ) ETC_EQUIP_HOURS -- bug 6039785
3157        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_BRDN_COST, 0 ) ) ) ETC_LABOR_BRDN_COST
3158        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_BRDN_COST, 0 ) ) ) ETC_EQUIP_BRDN_COST
3159        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_brdn_cost ) ) ETC_BRDN_COST
3160        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, plr.etc_raw_cost ) ) ETC_RAW_COST
3161        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_raw_COST, 0 ) ) ) ETC_LABOR_raw_COST
3162        , SUM ( DECODE ( vers.wp_flag, 'Y', NULL, DECODE ( plr.resource_class, g_equip_resclass_code , plr.etc_raw_COST, 0 ) ) ) ETC_EQUIP_raw_COST
3163        , TO_NUMBER(NULL) CUSTOM1
3164        , TO_NUMBER(NULL) CUSTOM2
3165        , TO_NUMBER(NULL) CUSTOM3
3166        , TO_NUMBER(NULL) CUSTOM4
3167        , TO_NUMBER(NULL) CUSTOM5
3168        , TO_NUMBER(NULL) CUSTOM6
3169        , TO_NUMBER(NULL) CUSTOM7
3170        , TO_NUMBER(NULL) CUSTOM8
3171        , TO_NUMBER(NULL) CUSTOM9
3172        , TO_NUMBER(NULL) CUSTOM10
3173        , TO_NUMBER(NULL) CUSTOM11
3174        , TO_NUMBER(NULL) CUSTOM12
3175        , TO_NUMBER(NULL) CUSTOM13
3176        , TO_NUMBER(NULL) CUSTOM14
3177        , TO_NUMBER(NULL) CUSTOM15
3178        , plr.LINE_TYPE
3179        , NULL time_dangling_flag
3180         , decode(sign(plr.rate),-1,'Y',NULL) ||decode(sign(plr.rate2),-1,'Y',NULL) rate_dangling_flag
3181        , plr.start_date
3182          , plr.end_date
3183        , g_default_prg_level prg_level
3184        , plr.plan_type_code  plan_type_code  /* 4471527 */
3185        FROM
3186        (          ----- First inline view plr .............
3187             select
3188               collapse_bl.PROJECT_ID      -- , 1 partition_id
3189             , collapse_bl.WBS_ELEMENT_ID  -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
3190             , SUM(collapse_bl.CURR_RECORD_TYPE_ID) CURR_RECORD_TYPE
3191             , collapse_bl.RBS_ELEMENT_ID
3192             , collapse_bl.RBS_STRUCT_VERSION_ID
3193                     , collapse_bl.plan_type_id
3194             , collapse_bl.plan_version_id
3195                         , collapse_bl.time_id
3196             , collapse_bl.PROJECT_ORGANIZATION_ID
3197             , collapse_bl.PROJECT_ORG_ID
3198             , collapse_bl.RESOURCE_ASSIGNMENT_ID
3199             , collapse_bl.BILLABLE_FLAG
3200             , collapse_bl.RESOURCE_CLASS  -- , CALENDAR_TYPE -- , CALENDAR_ID
3201             , collapse_bl.TIME_PHASED_TYPE_CODE
3202             , collapse_bl.CURRENCY_CODE
3203             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.raw_cost))) raw_cost
3204             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.BRDN_COST))) BRDN_COST
3205             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.revenue))) revenue
3206             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_raw_cost))) actual_raw_cost
3207             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_BRDN_COST))) actual_BRDN_COST
3208             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_revenue))) actual_revenue
3209             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_raw_cost))) etc_raw_cost
3210             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_BRDN_COST))) etc_BRDN_COST
3211             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_revenue))) etc_revenue
3212             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.quantity))) quantity
3213             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.actual_quantity))) actual_quantity
3214             , decode(sign(collapse_bl.rate),-1,0,decode(sign(collapse_bl.rate2),-1,0,max(collapse_bl.etc_quantity))) etc_quantity
3215             , collapse_bl.start_date start_date
3216             , collapse_bl.end_date   end_date
3217             -- , collapse_bl.period_name period_name  -- , TRACK_AS_LABOR_FLAG track_as_labor_flag
3218                         , collapse_bl.line_type
3219                         , collapse_bl.calendar_type
3220                         , collapse_bl.period_type_id
3221             , collapse_bl.row_id
3222             ,collapse_bl.rate rate
3223             ,collapse_bl.rate2 rate2
3224             ,collapse_bl.plan_type_code plan_type_code  /* 4471527 */
3225             from
3226               (                  ----- Second inline view 'collapse_bl' begin .............
3227                select
3228                   spread_bl.row_id row_id
3229                 , spread_bl.PROJECT_ID
3230                 , spread_bl.BUDGET_VERSION_ID plan_version_id
3231                                 , spread_bl.time_id
3232                 , spread_bl.RESOURCE_ASSIGNMENT_ID
3233                 , spread_bl.WBS_ELEMENT_ID
3234                 , spread_bl.RBS_ELEMENT_ID
3235                 , spread_bl.WBS_STRUCT_VERSION_ID
3236                 , spread_bl.RBS_STRUCT_VERSION_ID
3237                         , spread_bl.plan_type_id
3238                 , spread_bl.BILLABLE_FLAG
3239                 , spread_bl.RESOURCE_CLASS
3240                 , spread_bl.PROJECT_ORGANIZATION_ID
3241                 , spread_bl.PROJECT_ORG_ID
3242                 , spread_bl.TIME_PHASED_TYPE_CODE
3243                 , DECODE( invert.INVERT_ID
3244                         , 1, spread_bl.glb1_CURRENCY_CODE
3245                         , 2, spread_bl.glb2_CURRENCY_CODE
3246                         , 4, spread_bl.func_CURRENCY_CODE
3247                         , 8, spread_bl.PRJ_CURRENCY_CODE
3248                         , 16, spread_bl.TXN_CURRENCY_CODE ) CURRENCY_CODE
3249                 , invert.INVERT_ID CURR_RECORD_TYPE_ID
3250                 , DECODE ( invert.INVERT_ID
3251                          , 1, spread_bl.glb1_raw_cost
3252                          , 2, spread_bl.glb2_raw_cost
3253                          , 4, spread_bl.func_raw_cost
3254                          , 8, spread_bl.PRJ_raw_cost
3255                          , 16, spread_bl.TXN_raw_cost) raw_cost
3256                 , DECODE ( invert.INVERT_ID
3257                          , 1, spread_bl.glb1_brdn_cost
3258                          , 2, spread_bl.glb2_brdn_cost
3259                          , 4, spread_bl.func_BRDN_COST
3260                          , 8, spread_bl.PRJ_BRDN_COST
3261                          , 16, spread_bl.TXN_BRDN_COST ) BRDN_COST
3262                 , DECODE ( invert.INVERT_ID
3263                          , 1, spread_bl.glb1_revenue
3264                          , 2, spread_bl.glb2_revenue
3265                          , 4, spread_bl.func_revenue
3266                          , 8, spread_bl.PRJ_revenue
3267                          , 16, spread_bl.TXN_revenue ) revenue
3268                                 , DECODE ( invert.INVERT_ID
3269                          , 1, spread_bl.glb1_actual_raw_cost
3270                          , 2, spread_bl.glb2_actual_raw_cost
3271                                          , 4, spread_bl.func_actual_raw_cost
3272                                                  , 8, spread_bl.prj_actual_raw_cost
3273                                                  , 16, spread_bl.txn_actual_raw_cost ) actual_raw_cost
3274                                 , DECODE ( invert.INVERT_ID
3275                                          , 1, spread_bl.glb1_actual_brdn_cost
3276                                                  , 2, spread_bl.glb2_actual_brdn_cost
3277                                          , 4, spread_bl.func_actual_brdn_cost
3278                                                  , 8, spread_bl.prj_actual_brdn_cost
3279                                                  , 16, spread_bl.txn_actual_brdn_cost ) actual_brdn_cost
3280                                 , DECODE ( invert.INVERT_ID
3281                                          , 1, spread_bl.glb1_actual_revenue
3282                                                  , 2, spread_bl.glb2_actual_revenue
3283                                          , 4, spread_bl.func_actual_revenue
3284                                                  , 8, spread_bl.prj_actual_revenue
3285                                                  , 16, spread_bl.txn_actual_revenue ) actual_revenue
3286                                 , DECODE ( invert.INVERT_ID
3287                                          , 1, spread_bl.glb1_etc_raw_cost
3288                                                  , 2, spread_bl.glb2_etc_raw_cost
3289                                          , 4, spread_bl.func_etc_raw_cost
3290                                                  , 8, spread_bl.prj_etc_raw_cost
3291                                                  , 16, spread_bl.txn_etc_raw_cost ) etc_raw_cost
3292                                 , DECODE ( invert.INVERT_ID
3293                                          , 1, spread_bl.glb1_etc_brdn_cost
3294                                                  , 2, spread_bl.glb2_etc_brdn_cost
3295                                          , 4, spread_bl.func_etc_brdn_cost
3296                                                  , 8, spread_bl.prj_etc_brdn_cost
3297                                                  , 16, spread_bl.txn_etc_brdn_cost ) etc_brdn_cost
3298                                 , DECODE ( invert.INVERT_ID
3299                                          , 1, spread_bl.glb1_etc_revenue
3300                                                  , 2, spread_bl.glb2_etc_revenue
3301                                          , 4, spread_bl.func_etc_revenue
3302                                                  , 8, spread_bl.prj_etc_revenue
3303                                                  , 16, spread_bl.txn_etc_revenue ) etc_revenue
3304                 , spread_bl.quantity quantity
3305                 , spread_bl.actual_quantity actual_quantity
3306                 , spread_bl.etc_quantity etc_quantity
3307                 , spread_bl.start_date start_date
3308                 , spread_bl.end_date   end_date
3309                 , spread_bl.line_type line_type
3310                                 , spread_bl.period_type_id
3311                                 , spread_bl.calendar_type
3312                 ,decode(invert.invert_id,1,spread_bl.rate,1) rate
3313                 ,decode(invert.invert_id,2,spread_bl.rate2,1) rate2
3314                 , spread_bl.plan_type_code plan_type_code /* 4471527 */
3315                 from
3316                   (     ----- Third inline view 'spread_bl'  .............
3317                     SELECT
3318                           ra.project_id
3319                         , bl.rowid row_id
3320                         , ra.budget_version_id
3321                                         , prd.cal_period_id time_id
3322                         , bl.resource_asSIGNment_id
3323                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
3324                         , NVL(ra.rbs_element_id, -1)              rbs_element_id
3325                         , ver.wbs_struct_version_id      wbs_struct_version_id
3326                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id
3327                         , ver.plan_type_id               plan_type_id
3328                         , ra.rate_based_flag             billable_flag
3329                         , ra.resource_class_code         resource_class
3330                         , DECODE(ver.time_phased_type_code
3331                , g_pa_cal_str, 32
3332                , g_gl_cal_str, 32
3333                , 'N', 2048
3334                , -1) period_type_id
3335                            , DECODE(ver.time_phased_type_code
3336                , g_pa_cal_str, g_pa_cal_str
3337                , g_gl_cal_str, g_gl_cal_str
3338                , 'N', g_all
3339                , 'X')  CALENDAR_TYPE
3340                         , bl.txn_currency_code           txn_currency_code
3341                         , bl.txn_raw_cost                txn_raw_cost
3342                         , bl.txn_burdened_COST           txn_brdn_COST
3343                         , bl.txn_revenue                 txn_revenue
3344                         , DECODE(ver.wp_flag, 'N', bl.txn_init_raw_cost, TO_NUMBER(NULL))                txn_actual_raw_cost  -- new
3345                         , DECODE(ver.wp_flag, 'N', bl.txn_init_burdened_cost, TO_NUMBER(NULL))             txn_actual_brdn_cost  -- new
3346                         , DECODE(ver.wp_flag, 'N', bl.txn_init_revenue, TO_NUMBER(NULL))                   txn_actual_revenue  -- new
3347                         , DECODE(ver.wp_flag, 'N', (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0)), TO_NUMBER(NULL)) txn_etc_raw_cost     -- new
3348                         , DECODE(ver.wp_flag, 'N', (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0)), TO_NUMBER(NULL)) txn_etc_brdn_cost     -- new
3349                         , DECODE(ver.wp_flag, 'N', (bl.txn_revenue - NVL(bl.txn_init_revenue, 0)), TO_NUMBER(NULL)) txn_etc_revenue     -- new
3350                         , bl.project_currency_code          prj_currency_code
3351                         , bl.project_raw_cost               prj_raw_cost
3352                         , bl.project_burdened_COST          prj_BRDN_COST
3353                         , bl.project_revenue                prj_revenue
3354                         , DECODE(ver.wp_flag, 'N', bl.project_init_raw_cost, TO_NUMBER(NULL))          prj_actual_raw_cost  -- new
3355                         , DECODE(ver.wp_flag, 'N', bl.project_init_burdened_cost, TO_NUMBER(NULL))     prj_actual_brdn_cost  -- new
3356                         , DECODE(ver.wp_flag, 'N', bl.project_init_revenue, TO_NUMBER(NULL))           prj_actual_revenue  -- new
3357                         , DECODE(ver.wp_flag, 'N', (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0)), TO_NUMBER(NULL)) prj_etc_raw_cost     -- new
3358                         , DECODE(ver.wp_flag, 'N', (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0)), TO_NUMBER(NULL)) prj_etc_brdn_cost     -- new
3359                         , DECODE(ver.wp_flag, 'N', (bl.project_revenue - NVL(bl.project_init_revenue, 0)), TO_NUMBER(NULL)) prj_etc_revenue     -- new
3360                         , bl.projfunc_currency_code         func_currency_code
3361                   , bl.raw_cost                       func_raw_cost
3362                         , bl.burdened_COST                  func_BRDN_COST
3363                         , bl.revenue                        func_revenue
3364                         , DECODE(ver.wp_flag, 'N', bl.init_raw_cost , TO_NUMBER(NULL))                 func_actual_raw_cost  -- new
3365                         , DECODE(ver.wp_flag, 'N', bl.init_burdened_cost , TO_NUMBER(NULL))            func_actual_brdn_cost  -- new
3366                         , DECODE(ver.wp_flag, 'N', bl.init_revenue , TO_NUMBER(NULL))                  func_actual_revenue  -- new
3367                         , DECODE(ver.wp_flag, 'N', (bl.raw_cost - NVL(bl.init_raw_cost, 0)), TO_NUMBER(NULL)) func_etc_raw_cost     -- new
3368                         , DECODE(ver.wp_flag, 'N', (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)), TO_NUMBER(NULL)) func_etc_brdn_cost     -- new
3369                         , DECODE(ver.wp_flag, 'N', (bl.revenue - NVL(bl.init_revenue, 0)), TO_NUMBER(NULL)) func_etc_revenue     -- new
3370                         , g_global1_currency_code  glb1_currency_code -- g_global1_currency_code        glb1_currency_code
3371                   , DECODE (g_global1_currency_code
3372                                           , bl.txn_currency_code
3373                                                   , bl.txn_raw_cost
3374                                                   , bl.project_currency_code
3375                                                   , bl.project_raw_cost
3376                                                   , bl.projfunc_currency_code
3377                                                   , bl.raw_cost
3378                                                   , ROUND((rates.rate * raw_cost )/rates.mau)*rates.mau
3379                                         ) glb1_raw_cost
3380                   , DECODE (g_global1_currency_code
3381                                           , bl.txn_currency_code
3382                                                   , bl.txn_burdened_cost
3383                                                   , bl.project_currency_code
3384                                                   , bl.project_burdened_cost
3385                                                   , bl.projfunc_currency_code
3386                                                   , bl.burdened_cost
3387                                                   , ROUND((rates.rate * burdened_cost )/rates.mau)*rates.mau
3388                                         ) glb1_BRDN_COST
3389                   , DECODE (g_global1_currency_code
3390                                           , bl.txn_currency_code
3391                                                   , bl.txn_revenue
3392                                                   , bl.project_currency_code
3393                                                   , bl.project_revenue
3394                                                   , bl.projfunc_currency_code
3395                                                   , bl.revenue
3396                                                   , ROUND((rates.rate * revenue )/rates.mau)*rates.mau
3397                                         )  glb1_revenue
3398                               , DECODE(ver.wp_flag
3399                                      , 'N'
3400                                                  , DECODE (g_global1_currency_code
3401                                                  , bl.txn_currency_code
3402                                                          , bl.txn_init_raw_cost
3403                                                          , bl.project_currency_code
3404                                                          , bl.project_init_raw_cost
3405                                                          , bl.projfunc_currency_code
3406                                                          , bl.init_raw_cost
3407                                                          , ROUND((rates.rate * bl.init_raw_cost )/rates.mau)*rates.mau
3408                                                       )
3409                                                  , NULL)                 glb1_actual_raw_cost
3410                               , DECODE(ver.wp_flag
3411                                          , 'N'
3412                                                  , DECODE (g_global1_currency_code
3413                                                  , bl.txn_currency_code
3414                                                          , bl.txn_init_burdened_cost
3415                                                          , bl.project_currency_code
3416                                                          , bl.project_init_burdened_cost
3417                                                          , bl.projfunc_currency_code
3418                                                          , bl.init_burdened_cost
3419                                                          , ROUND((rates.rate * bl.init_burdened_cost )/rates.mau)*rates.mau
3420                                                       )
3421                                                  , NULL)            glb1_actual_brdn_cost
3422                               , DECODE(ver.wp_flag
3423                                          , 'N'
3424                                                  , DECODE (g_global1_currency_code
3425                                                  , bl.txn_currency_code
3426                                                          , bl.txn_init_revenue
3427                                                          , bl.project_currency_code
3428                                                          , bl.project_init_revenue
3429                                                          , bl.projfunc_currency_code
3430                                                          , bl.init_revenue
3431                                                          , ROUND((rates.rate * bl.init_revenue )/rates.mau)*rates.mau
3432                                                       )
3433                                                  , NULL)                  glb1_actual_revenue
3434                                   , DECODE(ver.wp_flag
3435                                          , 'N'
3436                                                  , DECODE (g_global1_currency_code
3437                                                  , bl.txn_currency_code
3438                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
3439                                                          , bl.project_currency_code
3440                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
3441                                                          , bl.projfunc_currency_code
3442                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
3443                                                          , ROUND((rates.rate * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau)*rates.mau
3444                                                       )
3445                                                  , NULL)                glb1_etc_raw_cost
3446                                   , DECODE(ver.wp_flag
3447                                          , 'N'
3448                                                  , DECODE (g_global1_currency_code
3449                                                  , bl.txn_currency_code
3450                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
3451                                                          , bl.project_currency_code
3452                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
3453                                                          , bl.projfunc_currency_code
3454                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
3455                                                          , ROUND((rates.rate * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau)*rates.mau
3456                                                       )
3457                                                  , NULL)    glb1_etc_brdn_cost
3458                                   , DECODE(ver.wp_flag
3459                                          , 'N'
3460                                                  , DECODE (g_global1_currency_code
3461                                                  , bl.txn_currency_code
3462                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
3463                                                          , bl.project_currency_code
3464                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
3465                                                          , bl.projfunc_currency_code
3466                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
3467                                                          , ROUND((rates.rate * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau)*rates.mau
3468                                                       )
3469                                                  , NULL)    glb1_etc_revenue
3470                         , g_global2_currency_code  glb2_currency_code -- g_global2_currency_code        glb2_currency_code
3471                   , DECODE (g_global2_currency_code
3472                                           , bl.txn_currency_code
3473                                                   , bl.txn_raw_cost
3474                                                   , bl.project_currency_code
3475                                                   , bl.project_raw_cost
3476                                                   , bl.projfunc_currency_code
3477                                                   , bl.raw_cost
3478                                                   , ROUND((rates.rate2 * raw_cost )/rates.mau2)*rates.mau2
3479                                         ) glb2_raw_cost
3480                   , DECODE (g_global2_currency_code
3481                                           , bl.txn_currency_code
3482                                                   , bl.txn_burdened_cost
3483                                                   , bl.project_currency_code
3484                                                   , bl.project_burdened_cost
3485                                                   , bl.projfunc_currency_code
3486                                                   , bl.burdened_cost
3487                                                   , ROUND((rates.rate2 * burdened_cost )/rates.mau2)*rates.mau2
3488                                         ) glb2_BRDN_COST
3489                   , DECODE (g_global2_currency_code
3490                                           , bl.txn_currency_code
3491                                                   , bl.txn_revenue
3492                                                   , bl.project_currency_code
3493                                                   , bl.project_revenue
3494                                                   , bl.projfunc_currency_code
3495                                                   , bl.revenue
3496                                                   , ROUND((rates.rate2 * revenue )/rates.mau2)*rates.mau2
3497                                         )  glb2_revenue
3498                               , DECODE(ver.wp_flag
3499                                      , 'N'
3500                                                  , DECODE (g_global2_currency_code
3501                                                  , bl.txn_currency_code
3502                                                          , bl.txn_init_raw_cost
3503                                                          , bl.project_currency_code
3504                                                          , bl.project_init_raw_cost
3505                                                          , bl.projfunc_currency_code
3506                                                          , bl.init_raw_cost
3507                                                          , ROUND((rates.rate2 * bl.init_raw_cost )/rates.mau2)*rates.mau2
3508                                                       )
3509                                                  , TO_NUMBER(NULL))                 glb2_actual_raw_cost
3510                               , DECODE(ver.wp_flag
3511                                          , 'N'
3512                                                  , DECODE (g_global2_currency_code
3513                                                  , bl.txn_currency_code
3514                                                          , bl.txn_init_burdened_cost
3515                                                          , bl.project_currency_code
3516                                                          , bl.project_init_burdened_cost
3517                                                          , bl.projfunc_currency_code
3518                                                          , bl.init_burdened_cost
3519                                                          , ROUND((rates.rate2 * bl.init_burdened_cost )/rates.mau2)*rates.mau2
3520                                                       )
3521                                                  , TO_NUMBER(NULL))            glb2_actual_brdn_cost
3522                               , DECODE(ver.wp_flag
3523                                          , 'N'
3524                                                  , DECODE (g_global2_currency_code
3525                                                  , bl.txn_currency_code
3526                                                          , bl.txn_init_revenue
3527                                                          , bl.project_currency_code
3528                                                          , bl.project_init_revenue
3529                                                          , bl.projfunc_currency_code
3530                                                          , bl.init_revenue
3531                                                          , ROUND((rates.rate2 * bl.init_revenue )/rates.mau2)*rates.mau2
3532                                                       )
3533                                                  , TO_NUMBER(NULL))                  glb2_actual_revenue
3534                                   , DECODE(ver.wp_flag
3535                                          , 'N'
3536                                                  , DECODE (g_global2_currency_code
3537                                                  , bl.txn_currency_code
3538                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
3539                                                          , bl.project_currency_code
3540                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
3541                                                          , bl.projfunc_currency_code
3542                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
3543                                                          , ROUND((rates.rate2 * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau2)*rates.mau2
3544                                                       )
3545                                                  , TO_NUMBER(NULL))                glb2_etc_raw_cost
3546                                   , DECODE(ver.wp_flag
3547                                          , 'N'
3548                                                  , DECODE (g_global2_currency_code
3549                                                  , bl.txn_currency_code
3550                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
3551                                                          , bl.project_currency_code
3552                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
3553                                                          , bl.projfunc_currency_code
3554                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
3555                                                          , ROUND((rates.rate2 * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau2)*rates.mau2
3556                                                       )
3557                                                  , TO_NUMBER(NULL))    glb2_etc_brdn_cost
3558                                   , DECODE(ver.wp_flag
3559                                          , 'N'
3560                                                  , DECODE (g_global2_currency_code
3561                                                  , bl.txn_currency_code
3562                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
3563                                                          , bl.project_currency_code
3564                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
3565                                                          , bl.projfunc_currency_code
3566                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
3567                                                          , ROUND((rates.rate2 * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau2)*rates.mau2
3568                                                       )
3569                                                  , TO_NUMBER(NULL))    glb2_etc_revenue
3570                   , bl.quantity                    quantity
3571                         , DECODE(ver.wp_flag, 'N', bl.init_quantity, TO_NUMBER(NULL))                  actual_quantity  -- new
3572                         , DECODE(ver.wp_flag, 'N', (bl.quantity - NVL(bl.init_quantity, 0)), TO_NUMBER(NULL)) etc_quantity  -- new
3573                         , TO_DATE(NULL) start_date -- bl.start_date
3574                         , TO_DATE(NULL) end_date -- bl.END_date
3575                         , ver.time_phased_type_code time_phased_type_code
3576                         , ppa.org_id project_org_id
3577                         , ppa.carrying_out_organization_id project_organization_id
3578                                         , DECODE(ver.time_phased_type_code, g_pa_cal_str, 'OF', g_gl_cal_str, 'OF', 'N', 'NTP', 'X') line_type
3579                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate
3580                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate2
3581                         , ver.plan_type_code plan_type_code  /* 4471527 */
3582                                  FROM
3583                        PA_BUDGET_LINES               bl
3584                      , pa_resource_asSIGNments       ra
3585                      , PJI_FM_EXTR_PLNVER3_T           ver
3586                              , pa_projects_all               ppa
3587                                  , PA_PROJ_ELEM_VER_STRUCTURE    pevs
3588                                          , PJI_FM_AGGR_DLY_RATES_T           rates
3589                                          , pji_time_cal_period_v           prd
3590                                          , PJI_ORG_EXTR_INFO             oei
3591                  WHERE 1=1
3592                                      AND ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
3593                      AND ra.project_id = ver.PROJECT_ID
3594                      AND ra.budget_version_id = ver.plan_version_id
3595                      AND ver.project_id = ppa.project_id
3596                      AND txn_currency_code IS NOT NULL
3597                      AND bl.project_currency_code IS NOT NULL
3598                      AND bl.projfunc_currency_code IS NOT NULL
3599                                  AND pevs.element_version_id = ver.wbs_struct_version_id
3600                                  AND ver.secondary_rbs_flag = 'N'
3601                                          AND ver.wp_flag = 'N'
3602                                          AND oei.org_id = ppa.org_id
3603                                          AND ver.time_phased_type_code IN (g_pa_cal_str, g_gl_cal_str)
3604                                          AND DECODE ( ver.time_phased_type_code
3605                                                     , g_pa_cal_str, oei.pa_calendar_id
3606                                                                 , g_gl_cal_str, oei.gl_calendar_id) = prd.calendar_id
3607                                          AND bl.period_name = prd.name
3608                                          AND rates.time_id = prd.cal_period_id
3609 -- AND DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) = 7474
3610  --                                          AND ra.rbs_element_id = 10266
3611  --                                        AND ver.plan_version_id = 2909
3612                      AND ver.project_id = pevs.project_id -- Fix for bug : 4149422 in EXTRACT_PLAN_AMTS_PRIRBS_GLC12
3613                 UNION ALL
3614                     SELECT
3615                           ra.project_id
3616                         , bl.rowid row_id
3617                         , ra.budget_version_id
3618                                         , -1 time_id
3619                         , bl.resource_asSIGNment_id
3620                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
3621                         , NVL(ra.rbs_element_id, -1)              rbs_element_id
3622                         , ver.wbs_struct_version_id      wbs_struct_version_id
3623                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id
3624                         , ver.plan_type_id               plan_type_id
3625                         , ra.rate_based_flag             billable_flag
3626                         , ra.resource_class_code         resource_class
3627                         , 2048 period_type_id
3628                            , g_all CALENDAR_TYPE
3629                         , bl.txn_currency_code           txn_currency_code
3630                         , bl.txn_raw_cost                txn_raw_cost
3631                         , bl.txn_burdened_COST           txn_brdn_COST
3632                         , bl.txn_revenue                 txn_revenue
3633                         , DECODE(ver.wp_flag, 'N' , bl.txn_init_raw_cost, TO_NUMBER(NULL))                txn_actual_raw_cost  -- new
3634                         , DECODE(ver.wp_flag, 'N' , bl.txn_init_burdened_cost, TO_NUMBER(NULL))             txn_actual_brdn_cost  -- new
3635                         , DECODE(ver.wp_flag, 'N' , bl.txn_init_revenue, TO_NUMBER(NULL))                   txn_actual_revenue  -- new
3636                         , DECODE(ver.wp_flag, 'N' , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0)), TO_NUMBER(NULL)) txn_etc_raw_cost     -- new
3637                         , DECODE(ver.wp_flag, 'N' , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0)), TO_NUMBER(NULL)) txn_etc_brdn_cost     -- new
3638                         , DECODE(ver.wp_flag, 'N' , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0)), TO_NUMBER(NULL)) txn_etc_revenue     -- new
3639                         , bl.project_currency_code          prj_currency_code
3640                         , bl.project_raw_cost               prj_raw_cost
3641                         , bl.project_burdened_COST          prj_BRDN_COST
3642                         , bl.project_revenue                prj_revenue
3643                         , DECODE(ver.wp_flag, 'N' , bl.project_init_raw_cost, TO_NUMBER(NULL))          prj_actual_raw_cost  -- new
3644                         , DECODE(ver.wp_flag, 'N' , bl.project_init_burdened_cost, TO_NUMBER(NULL))     prj_actual_brdn_cost  -- new
3645                         , DECODE(ver.wp_flag, 'N' , bl.project_init_revenue, TO_NUMBER(NULL))           prj_actual_revenue  -- new
3646                         , DECODE(ver.wp_flag, 'N' , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0)), TO_NUMBER(NULL)) prj_etc_raw_cost     -- new
3647                         , DECODE(ver.wp_flag, 'N' , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0)), TO_NUMBER(NULL)) prj_etc_brdn_cost     -- new
3648                         , DECODE(ver.wp_flag, 'N' , (bl.project_revenue - NVL(bl.project_init_revenue, 0)), TO_NUMBER(NULL)) prj_etc_revenue     -- new
3649                         , bl.projfunc_currency_code         func_currency_code
3650                   , bl.raw_cost                       func_raw_cost
3651                         , bl.burdened_COST                  func_BRDN_COST
3652                         , bl.revenue                        func_revenue
3653                         , DECODE(ver.wp_flag, 'N' , bl.init_raw_cost , TO_NUMBER(NULL))                 func_actual_raw_cost  -- new
3654                         , DECODE(ver.wp_flag, 'N' , bl.init_burdened_cost , TO_NUMBER(NULL))            func_actual_brdn_cost  -- new
3655                         , DECODE(ver.wp_flag, 'N' , bl.init_revenue , TO_NUMBER(NULL))                  func_actual_revenue  -- new
3656                         , DECODE(ver.wp_flag, 'N' , (bl.raw_cost - NVL(bl.init_raw_cost, 0)), TO_NUMBER(NULL)) func_etc_raw_cost     -- new
3657                         , DECODE(ver.wp_flag, 'N' , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)), TO_NUMBER(NULL)) func_etc_brdn_cost     -- new
3658                         , DECODE(ver.wp_flag, 'N' , (bl.revenue - NVL(bl.init_revenue, 0)), TO_NUMBER(NULL)) func_etc_revenue     -- new
3659                         , g_global1_currency_code   glb1_currency_code -- g_global1_currency_code         glb1_currency_code
3660                   , DECODE (g_global1_currency_code
3661                                           , bl.txn_currency_code
3662                                                   , bl.txn_raw_cost
3663                                                   , bl.project_currency_code
3664                                                   , bl.project_raw_cost
3665                                                   , bl.projfunc_currency_code
3666                                                   , bl.raw_cost
3667                                                   , ROUND((rates.rate * raw_cost )/rates.mau)*rates.mau
3668                                         ) glb1_raw_cost
3669                   , DECODE (g_global1_currency_code
3670                                           , bl.txn_currency_code
3671                                                   , bl.txn_burdened_cost
3672                                                   , bl.project_currency_code
3673                                                   , bl.project_burdened_cost
3674                                                   , bl.projfunc_currency_code
3675                                                   , bl.burdened_cost
3676                                                   , ROUND((rates.rate * burdened_cost )/rates.mau)*rates.mau
3677                                         ) glb1_BRDN_COST
3678                   , DECODE (g_global1_currency_code
3679                                           , bl.txn_currency_code
3680                                                   , bl.txn_revenue
3681                                                   , bl.project_currency_code
3682                                                   , bl.project_revenue
3683                                                   , bl.projfunc_currency_code
3684                                                   , bl.revenue
3685                                                   , ROUND((rates.rate * revenue )/rates.mau)*rates.mau
3686                                         )  glb1_revenue
3687                               , DECODE(ver.wp_flag
3688                                      , 'N'
3689                                                  , DECODE (g_global1_currency_code
3690                                                  , bl.txn_currency_code
3691                                                          , bl.txn_init_raw_cost
3692                                                          , bl.project_currency_code
3693                                                          , bl.project_init_raw_cost
3694                                                          , bl.projfunc_currency_code
3695                                                          , bl.init_raw_cost
3696                                                          , ROUND((rates.rate * bl.init_raw_cost )/rates.mau)*rates.mau
3697                                                       )
3698                                                  , NULL)                 glb1_actual_raw_cost
3699                               , DECODE(ver.wp_flag
3700                                          , 'N'
3701                                                  , DECODE (g_global1_currency_code
3702                                                  , bl.txn_currency_code
3703                                                          , bl.txn_init_burdened_cost
3704                                                          , bl.project_currency_code
3705                                                          , bl.project_init_burdened_cost
3706                                                          , bl.projfunc_currency_code
3707                                                          , bl.init_burdened_cost
3708                                                          , ROUND((rates.rate * bl.init_burdened_cost )/rates.mau)*rates.mau
3709                                                       )
3710                                                  , NULL)            glb1_actual_brdn_cost
3711                               , DECODE(ver.wp_flag
3712                                          , 'N'
3713                                                  , DECODE (g_global1_currency_code
3714                                                  , bl.txn_currency_code
3715                                                          , bl.txn_init_revenue
3716                                                          , bl.project_currency_code
3717                                                          , bl.project_init_revenue
3718                                                          , bl.projfunc_currency_code
3719                                                          , bl.init_revenue
3720                                                          , ROUND((rates.rate * bl.init_revenue )/rates.mau)*rates.mau
3721                                                       )
3722                                                  , NULL)                  glb1_actual_revenue
3723                                   , DECODE(ver.wp_flag
3724                                          , 'N'
3725                                                  , DECODE (g_global1_currency_code
3726                                                  , bl.txn_currency_code
3727                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
3728                                                          , bl.project_currency_code
3729                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
3730                                                          , bl.projfunc_currency_code
3731                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
3732                                                          , ROUND((rates.rate * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau)*rates.mau
3733                                                       )
3734                                                  , NULL)                glb1_etc_raw_cost
3735                                   , DECODE(ver.wp_flag
3736                                          , 'N'
3737                                                  , DECODE (g_global1_currency_code
3738                                                  , bl.txn_currency_code
3739                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
3740                                                          , bl.project_currency_code
3741                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
3742                                                          , bl.projfunc_currency_code
3743                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
3744                                                          , ROUND((rates.rate * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau)*rates.mau
3745                                                       )
3746                                                  , NULL)    glb1_etc_brdn_cost
3747                                   , DECODE(ver.wp_flag
3748                                          , 'N'
3749                                                  , DECODE (g_global1_currency_code
3750                                                  , bl.txn_currency_code
3751                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
3752                                                          , bl.project_currency_code
3753                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
3754                                                          , bl.projfunc_currency_code
3755                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
3756                                                          , ROUND((rates.rate * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau)*rates.mau
3757                                                       )
3758                                                  , NULL)    glb1_etc_revenue
3759                         , g_global2_currency_code   glb2_currency_code -- g_global2_currency_code         glb2_currency_code
3760                   , DECODE (g_global2_currency_code
3761                                           , bl.txn_currency_code
3762                                                   , bl.txn_raw_cost
3763                                                   , bl.project_currency_code
3764                                                   , bl.project_raw_cost
3765                                                   , bl.projfunc_currency_code
3766                                                   , bl.raw_cost
3767                                                   , ROUND((rates.rate2 * raw_cost )/rates.mau2)*rates.mau2
3768                                         ) glb2_raw_cost
3769                   , DECODE (g_global2_currency_code
3770                                           , bl.txn_currency_code
3771                                                   , bl.txn_burdened_cost
3772                                                   , bl.project_currency_code
3773                                                   , bl.project_burdened_cost
3774                                                   , bl.projfunc_currency_code
3775                                                   , bl.burdened_cost
3776                                                   , ROUND((rates.rate2 * burdened_cost )/rates.mau2)*rates.mau2
3777                                         ) glb2_BRDN_COST
3778                   , DECODE (g_global2_currency_code
3779                                           , bl.txn_currency_code
3780                                                   , bl.txn_revenue
3781                                                   , bl.project_currency_code
3782                                                   , bl.project_revenue
3783                                                   , bl.projfunc_currency_code
3784                                                   , bl.revenue
3785                                                   , ROUND((rates.rate2 * revenue )/rates.mau2)*rates.mau2
3786                                         )  glb2_revenue
3787                               , DECODE(ver.wp_flag
3788                                      , 'N'
3789                                                  , DECODE (g_global2_currency_code
3790                                                  , bl.txn_currency_code
3791                                                          , bl.txn_init_raw_cost
3792                                                          , bl.project_currency_code
3793                                                          , bl.project_init_raw_cost
3794                                                          , bl.projfunc_currency_code
3795                                                          , bl.init_raw_cost
3796                                                          , ROUND((rates.rate2 * bl.init_raw_cost )/rates.mau2)*rates.mau2
3797                                                       )
3798                                                  , TO_NUMBER(NULL))                 glb2_actual_raw_cost
3799                               , DECODE(ver.wp_flag
3800                                          , 'N'
3801                                                  , DECODE (g_global2_currency_code
3802                                                  , bl.txn_currency_code
3803                                                          , bl.txn_init_burdened_cost
3804                                                          , bl.project_currency_code
3805                                                          , bl.project_init_burdened_cost
3806                                                          , bl.projfunc_currency_code
3807                                                          , bl.init_burdened_cost
3808                                                          , ROUND((rates.rate2 * bl.init_burdened_cost )/rates.mau2)*rates.mau2
3809                                                       )
3810                                                  , TO_NUMBER(NULL))            glb2_actual_brdn_cost
3811                               , DECODE(ver.wp_flag
3812                                          , 'N'
3813                                                  , DECODE (g_global2_currency_code
3814                                                  , bl.txn_currency_code
3815                                                          , bl.txn_init_revenue
3816                                                          , bl.project_currency_code
3817                                                          , bl.project_init_revenue
3818                                                          , bl.projfunc_currency_code
3819                                                          , bl.init_revenue
3820                                                          , ROUND((rates.rate2 * bl.init_revenue )/rates.mau2)*rates.mau2
3821                                                       )
3822                                                  , TO_NUMBER(NULL))                  glb2_actual_revenue
3823                                   , DECODE(ver.wp_flag
3824                                          , 'N'
3825                                                  , DECODE (g_global2_currency_code
3826                                                  , bl.txn_currency_code
3827                                                          , (bl.txn_raw_cost - NVL(bl.txn_init_raw_cost, 0))
3828                                                          , bl.project_currency_code
3829                                                          , (bl.project_raw_cost - NVL(bl.project_init_raw_cost, 0))
3830                                                          , bl.projfunc_currency_code
3831                                                          , (bl.raw_cost - NVL(bl.init_raw_cost, 0))
3832                                                          , ROUND((rates.rate2 * (bl.raw_cost - NVL(bl.init_raw_cost, 0)) )/rates.mau2)*rates.mau2
3833                                                       )
3834                                                  , TO_NUMBER(NULL))                glb2_etc_raw_cost
3835                                   , DECODE(ver.wp_flag
3836                                          , 'N'
3837                                                  , DECODE (g_global2_currency_code
3838                                                  , bl.txn_currency_code
3839                                                          , (bl.txn_burdened_cost - NVL(bl.txn_init_burdened_cost, 0))
3840                                                          , bl.project_currency_code
3841                                                          , (bl.project_burdened_cost - NVL(bl.project_init_burdened_cost, 0))
3842                                                          , bl.projfunc_currency_code
3843                                                          , (bl.burdened_cost - NVL(bl.init_burdened_cost, 0))
3844                                                          , ROUND((rates.rate2 * (bl.burdened_cost - NVL(bl.init_burdened_cost, 0)) )/rates.mau2)*rates.mau2
3845                                                       )
3846                                                  , TO_NUMBER(NULL))    glb2_etc_brdn_cost
3847                                   , DECODE(ver.wp_flag
3848                                          , 'N'
3849                                                  , DECODE (g_global2_currency_code
3850                                                  , bl.txn_currency_code
3851                                                          , (bl.txn_revenue - NVL(bl.txn_init_revenue, 0))
3852                                                          , bl.project_currency_code
3853                                                          , (bl.project_revenue - NVL(bl.project_init_revenue, 0))
3854                                                          , bl.projfunc_currency_code
3855                                                          , (bl.revenue - NVL(bl.init_revenue, 0))
3856                                                          , ROUND((rates.rate2 * (bl.revenue - NVL(bl.init_revenue, 0)) )/rates.mau2)*rates.mau2
3857                                                       )
3858                                                  , TO_NUMBER(NULL))    glb2_etc_revenue
3859                   , bl.quantity                    quantity
3860                         , DECODE(ver.wp_flag, 'N' , bl.init_quantity, TO_NUMBER(NULL))                  actual_quantity  -- new
3861                         , DECODE(ver.wp_flag, 'N' , (bl.quantity - NVL(bl.init_quantity, 0)), TO_NUMBER(NULL)) etc_quantity  -- new
3862                         , ra.planning_start_date
3863                         , ra.planning_END_date
3864                         , ver.time_phased_type_code time_phased_type_code
3865                         , ppa.org_id project_org_id
3866                         , ppa.carrying_out_organization_id project_organization_id
3867                                         , 'NTP' line_type
3868                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate
3869                         ,decode(ver.rate_dangling_flag,'Y',-1,1) rate2
3870                         , ver.plan_type_code  plan_type_code   /* 4471527 */
3871                                  FROM
3872                        PA_BUDGET_LINES               bl
3873                      , pa_resource_asSIGNments       ra
3874                      , PJI_FM_EXTR_PLNVER3_T           ver
3875                              , pa_projects_all               ppa
3876                                  , PA_PROJ_ELEM_VER_STRUCTURE    pevs
3877                                          , PJI_FM_AGGR_DLY_RATES_T           rates
3878                  WHERE 1=1
3879                                      AND ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
3880                      AND ra.project_id = ver.PROJECT_ID
3881                      AND ra.budget_version_id = ver.plan_version_id
3882                      AND ver.project_id = ppa.project_id
3883                      AND txn_currency_code IS NOT NULL
3884                      AND bl.project_currency_code IS NOT NULL
3885                      AND bl.projfunc_currency_code IS NOT NULL
3886                      AND ver.project_id = pevs.project_id -- Fix for bug : 4149422 in EXTRACT_PLAN_AMTS_PRIRBS_GLC12
3887                                  AND pevs.element_version_id = ver.wbs_struct_version_id
3888                                  AND ver.secondary_rbs_flag = 'N'
3889                                          AND ver.wp_flag = 'N'
3890                                          AND ver.time_phased_type_code = 'N'
3891                                          AND rates.time_id = DECODE ( g_currency_conversion_rule
3892                                , 'S'
3893                                          , TO_NUMBER(to_CHAR(ra.planning_start_date, 'J'))
3894                                          , 'E'
3895                                          , TO_NUMBER(to_CHAR(ra.planning_end_date, 'J')) )
3896                                   ) spread_bl
3897                                    ---- end of third inline view 'spread_bl'...........
3898                   ,
3899                     (
3900                       select 1   INVERT_ID from dual union all
3901                       select 2   INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('GLOBAL_CURR2_FLAG') = 'Y' union all
3902                       select 4   INVERT_ID from dual union all
3903                       select 8   INVERT_ID from dual union all
3904                       select 16  INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('TXN_CURR_FLAG') = 'Y'
3905                     ) invert
3906                                 )  collapse_bl  -- WHERE wbs_element_id = 7474 -- and rbs_element_id = 10266 -- and budget_version_id = 2909
3907                                 ----  End of second inline view 'collapse_bl' ..........
3908                         GROUP BY
3909               collapse_bl.PROJECT_ID
3910                         , collapse_bl.time_id
3911             , collapse_bl.WBS_ELEMENT_ID
3912             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
3913             , collapse_bl.RBS_ELEMENT_ID
3914             , collapse_bl.RBS_STRUCT_VERSION_ID
3915                         , collapse_bl.plan_type_id
3916             , collapse_bl.plan_version_id
3917             , collapse_bl.PROJECT_ORGANIZATION_ID
3918             , collapse_bl.PROJECT_ORG_ID
3919             , collapse_bl.RESOURCE_ASSIGNMENT_ID
3920             , collapse_bl.BILLABLE_FLAG
3921             , collapse_bl.RESOURCE_CLASS
3922             , collapse_bl.TIME_PHASED_TYPE_CODE
3923             , collapse_bl.CURRENCY_CODE
3924             , collapse_bl.start_date
3925             , collapse_bl.end_date
3926             , collapse_bl.row_id
3927                         , collapse_bl.line_type
3928                         , collapse_bl.calendar_type
3929                         , collapse_bl.period_type_id
3930             ,collapse_bl.rate
3931             ,collapse_bl.rate2
3932             ,collapse_bl.plan_type_code   /* 4471527 */
3933        ) plr
3934                                 ----  End of first inline view plr ..........
3935            , pji_fm_extr_plnver3_t vers
3936           WHERE 1=1
3937             AND vers.plan_version_id = plr.plan_version_id
3938                  AND vers.plan_type_code = plr.plan_type_code  /*4471527 */
3939                 AND NVL(vers.rbs_struct_version_id, -1) = plr.rbs_struct_version_id
3940           -- AND plr.CURR_RECORD_TYPE IS NOT NULL
3941           AND plr.currency_code IS NOT NULL
3942        GROUP BY
3943          plr.PROJECT_ID
3944        , plr.PROJECT_ORG_ID
3945        , plr.project_ORGANIZATION_ID
3946        , plr.WBS_ELEMENT_ID
3947        , plr.time_id
3948        , plr.period_type_id
3949        , plr.CALENDAR_TYPE
3950        , plr.CURR_RECORD_TYPE  -- curr code missing.
3951            , plr.currency_code
3952        , plr.RBS_ELEMENT_ID
3953        , plr.RBS_STRUCT_VERSION_ID
3954        , plr.plan_version_id
3955          , plr.plan_type_id
3956        , plr.start_date
3957          , plr.end_date
3958         , plr.line_type
3959         ,decode(sign(plr.rate),-1,'Y',NULL) ||decode(sign(plr.rate2),-1,'Y',NULL)
3960         , plr.plan_type_code;   /* 4471527 */
3961 
3962   print_time ( ' EXTRACT_PLAN_AMTS_PRIRBS_GLC12 end. Inserted rows # is: ' || SQL%ROWCOUNT );
3963 
3964 EXCEPTION
3965   WHEN OTHERS THEN
3966     print_time('EXTRACT_PLAN_AMTS_PRIRBS_GLC12 : Exception ' || SQLERRM );
3967     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
3968                              p_procedure_name => 'EXTRACT_PLAN_AMTS_PRIRBS_GLC12');
3969     RAISE;
3970 END;
3971 
3972 
3973 PROCEDURE REVERSE_PLAN_AMTS IS
3974 BEGIN
3975 
3976   print_time ( '.....Begin REVERSE_PLAN_AMTS. ' );
3977 
3978   INSERT INTO pji_fp_aggr_pjp1_t  fact
3979   (
3980        WORKER_ID
3981      , PRG_LEVEL
3982      , PROJECT_ID
3983      , PROJECT_ORG_ID
3984      , PROJECT_ORGANIZATION_ID
3985      , PROJECT_ELEMENT_ID
3986      , TIME_ID
3987      , PERIOD_TYPE_ID
3988      , CALENDAR_TYPE
3989      , RBS_AGGR_LEVEL
3990      , WBS_ROLLUP_FLAG
3991      , PRG_ROLLUP_FLAG
3992      , CURR_RECORD_TYPE_ID
3993      , CURRENCY_CODE
3994      , RBS_ELEMENT_ID
3995      , RBS_VERSION_ID
3996      , PLAN_VERSION_ID
3997      , PLAN_TYPE_ID
3998      , RAW_COST
3999      , BRDN_COST
4000      , REVENUE
4001      , BILL_RAW_COST
4002      , BILL_BRDN_COST
4003      , BILL_LABOR_RAW_COST
4004      , BILL_LABOR_BRDN_COST
4005      , BILL_LABOR_HRS
4006      , EQUIPMENT_RAW_COST
4007      , EQUIPMENT_BRDN_COST
4008      , CAPITALIZABLE_RAW_COST
4009      , CAPITALIZABLE_BRDN_COST
4010      , LABOR_RAW_COST
4011      , LABOR_BRDN_COST
4012      , LABOR_HRS
4013      , LABOR_REVENUE
4014      , EQUIPMENT_HOURS
4015      , BILLABLE_EQUIPMENT_HOURS
4016      , SUP_INV_COMMITTED_COST
4017      , PO_COMMITTED_COST
4018      , PR_COMMITTED_COST
4019      , OTH_COMMITTED_COST
4020        , ACT_LABOR_HRS
4021            , ACT_EQUIP_HRS
4022            , ACT_LABOR_BRDN_COST
4023            , ACT_EQUIP_BRDN_COST
4024            , ACT_BRDN_COST
4025            , ACT_RAW_COST
4026            , ACT_REVENUE
4027          , ACT_LABOR_RAW_COST
4028          , ACT_EQUIP_RAW_COST
4029            , ETC_LABOR_HRS
4030            , ETC_EQUIP_HRS
4031            , ETC_LABOR_BRDN_COST
4032            , ETC_EQUIP_BRDN_COST
4033            , ETC_BRDN_COST
4034          , ETC_RAW_COST
4035          , ETC_LABOR_RAW_COST
4036          , ETC_EQUIP_RAW_COST
4037      , CUSTOM1
4038      , CUSTOM2
4039      , CUSTOM3
4040      , CUSTOM4
4041      , CUSTOM5
4042      , CUSTOM6
4043      , CUSTOM7
4044      , CUSTOM8
4045      , CUSTOM9
4046      , CUSTOM10
4047      , CUSTOM11
4048      , CUSTOM12
4049      , CUSTOM13
4050      , CUSTOM14
4051      , CUSTOM15
4052          , LINE_TYPE
4053      , PLAN_TYPE_CODE
4054   )
4055    SELECT  -- Reversal from fact for primary slice.
4056        g_worker_id
4057      , g_default_prg_level
4058      , fact.PROJECT_ID
4059      , fact.PROJECT_ORG_ID
4060      , fact.PROJECT_ORGANIZATION_ID
4061      , fact.PROJECT_ELEMENT_ID
4062      , fact.TIME_ID
4063      , fact.PERIOD_TYPE_ID
4064      , fact.CALENDAR_TYPE
4065      , fact.RBS_AGGR_LEVEL
4066      , fact.WBS_ROLLUP_FLAG
4067      , fact.PRG_ROLLUP_FLAG
4068      , fact.CURR_RECORD_TYPE_ID  CURR_RECORD_TYPE_ID
4069      , fact.CURRENCY_CODE
4070      , fact.RBS_ELEMENT_ID
4071      , fact.RBS_VERSION_ID
4072      , fact.PLAN_VERSION_ID
4073      , fact.PLAN_TYPE_ID
4074     , -fact.RAW_COST
4075     , -fact.BRDN_COST
4076     , -fact.REVENUE
4077     , -fact.BILL_RAW_COST
4078     , -fact.BILL_BRDN_COST
4079     , -fact.BILL_LABOR_RAW_COST
4080     , -fact.BILL_LABOR_BRDN_COST
4081     , -fact.BILL_LABOR_HRS
4082     , -fact.EQUIPMENT_RAW_COST
4083     , -fact.EQUIPMENT_BRDN_COST
4084     , -fact.CAPITALIZABLE_RAW_COST
4085     , -fact.CAPITALIZABLE_BRDN_COST
4086     , -fact.LABOR_RAW_COST
4087     , -fact.LABOR_BRDN_COST
4088     , -fact.LABOR_HRS
4089     , -fact.LABOR_REVENUE
4090     , -fact.EQUIPMENT_HOURS
4091     , -fact.BILLABLE_EQUIPMENT_HOURS
4092     , -fact.SUP_INV_COMMITTED_COST
4093     , -fact.PO_COMMITTED_COST
4094     , -fact.PR_COMMITTED_COST
4095     , -fact.OTH_COMMITTED_COST
4096      , - fact.ACT_LABOR_HRS
4097          , -fact.ACT_EQUIP_HRS
4098          , -fact.ACT_LABOR_BRDN_COST
4099          , -fact.ACT_EQUIP_BRDN_COST
4100          , -fact.ACT_BRDN_COST
4101          , -fact.ACT_RAW_COST
4102          , -fact.ACT_REVENUE
4103        , -fact.ACT_LABOR_RAW_COST
4104        , -fact.ACT_EQUIP_RAW_COST
4105          , -fact.ETC_LABOR_HRS
4106          , -fact.ETC_EQUIP_HRS
4107          , -fact.ETC_LABOR_BRDN_COST
4108          , -fact.ETC_EQUIP_BRDN_COST
4109          , -fact.ETC_BRDN_COST
4110        , -fact.ETC_RAW_COST
4111        , -fact.ETC_LABOR_RAW_COST
4112        , -fact.ETC_EQUIP_RAW_COST
4113     , -fact.CUSTOM1
4114     , -fact.CUSTOM2
4115     , -fact.CUSTOM3
4116     , -fact.CUSTOM4
4117     , -fact.CUSTOM5
4118     , -fact.CUSTOM6
4119     , -fact.CUSTOM7
4120     , -fact.CUSTOM8
4121     , -fact.CUSTOM9
4122     , -fact.CUSTOM10
4123     , -fact.CUSTOM11
4124     , -fact.CUSTOM12
4125     , -fact.CUSTOM13
4126     , -fact.CUSTOM14
4127     , -fact.CUSTOM15
4128     , g_ntp_period_name
4129     , fact.plan_type_code   /* 4471527 */
4130     FROM
4131       pji_fp_xbs_accum_f fact
4132     , pji_fm_extr_plnver3_t ver
4133     WHERE 1=1
4134       AND fact.plan_version_id = ver.plan_version_id
4135       AND fact.plan_type_code = ver.plan_type_code  /* 4471527 */
4136       AND fact.project_id = ver.project_id
4137       AND fact.rbs_aggr_level = g_lowest_level
4138       AND fact.wbs_rollup_flag = 'N'
4139       AND ver.secondary_rbs_flag = 'N'
4140       AND (
4141                ((ver.time_phased_type_code IN ('P', 'G')) AND (fact.period_type_id = 32))
4142             OR ((ver.time_phased_type_code = 'N') AND (fact.period_type_id = 2048))
4143           );
4144 
4145     print_time ( '.....End REVERSE_PLAN_AMTS. # rows = ' || SQL%ROWCOUNT );
4146 
4147 EXCEPTION
4148   WHEN OTHERS THEN
4149     print_time('REVERSE_PLAN_AMTS : Exception ' || SQLERRM );
4150     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4151                              p_procedure_name => 'REVERSE_PLAN_AMTS');
4152     RAISE;
4153 END;
4154 
4155 
4156 PROCEDURE DELETE_PRI_NONTIMEPH_ENTDAMTS IS
4157 BEGIN
4158 
4159   DELETE FROM pji_fp_aggr_pjp1_t
4160   WHERE 1=1
4161     AND period_type_id = 32
4162     AND time_id = -1
4163     AND worker_id = g_worker_id;
4164 
4165 EXCEPTION
4166   WHEN OTHERS THEN
4167     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4168                              p_procedure_name => 'RETRIEVE_RL_SECSLC_TIMEPH');
4169     RAISE;
4170 END;
4171 
4172 
4173 --
4174 -- Inserts into FP reporting lines fact the data in the interim pjp1 table.
4175 --
4176 PROCEDURE INSERT_INTO_FP_FACT ( p_slice_type IN VARCHAR2 := NULL) IS
4177     l_last_update_date     date   := SYSDATE;
4178     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
4179     l_creation_date        date   := SYSDATE;
4180     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
4181     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
4182 BEGIN
4183 
4184   IF ( (p_slice_type = 'PRI') OR (p_slice_type IS NULL) ) THEN
4185 
4186     MERGE_INTO_FP_FACT;
4187 
4188   ELSIF (p_slice_type = 'SEC') THEN
4189 
4190     DELETE FROM pji_fp_aggr_pjp1_t
4191     WHERE line_type = 'OF'
4192       AND worker_id = g_worker_id;  -- Data in entered calendar should not be rolled up.
4193 
4194     MERGE_INTO_FP_FACT;
4195 
4196   END IF;
4197 
4198 EXCEPTION
4199   WHEN OTHERS THEN
4200     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4201                              p_procedure_name => 'INSERT_INTO_FP_FACT');
4202     RAISE;
4203 END;
4204 
4205 
4206 PROCEDURE GET_PRI_SLICE_DATA(
4207   p_fp_version_ids    IN   SYSTEM.pa_num_tbl_type := pji_empty_num_tbl
4208 , p_commit            IN   VARCHAR2 := 'F') IS
4209 BEGIN
4210 
4211   FORALL I IN p_fp_version_ids.FIRST..p_fp_version_ids.LAST
4212     INSERT INTO PJI_FP_AGGR_PJP1_T
4213     (
4214        WORKER_ID
4215      , PROJECT_ID
4216      , PROJECT_ORG_ID
4217      , PROJECT_ORGANIZATION_ID
4218      -- , PARTITION_ID
4219      , PROJECT_ELEMENT_ID
4220      , TIME_ID
4221      , PERIOD_TYPE_ID
4222      , CALENDAR_TYPE
4223      , RBS_AGGR_LEVEL
4224      , WBS_ROLLUP_FLAG
4225      , PRG_ROLLUP_FLAG
4226      , CURR_RECORD_TYPE_ID
4227      , CURRENCY_CODE
4228      , RBS_ELEMENT_ID
4229      , RBS_VERSION_ID
4230      , PLAN_VERSION_ID
4231      , PLAN_TYPE_ID
4232      , RAW_COST
4233      , BRDN_COST
4234      , REVENUE
4235      , BILL_RAW_COST
4236      , BILL_BRDN_COST
4237      , BILL_LABOR_RAW_COST
4238      , BILL_LABOR_BRDN_COST
4239      , BILL_LABOR_HRS
4240      , EQUIPMENT_RAW_COST
4241      , EQUIPMENT_BRDN_COST
4242      , CAPITALIZABLE_RAW_COST
4243      , CAPITALIZABLE_BRDN_COST
4244      , LABOR_RAW_COST
4245      , LABOR_BRDN_COST
4246      , LABOR_HRS
4247      , LABOR_REVENUE
4248      , EQUIPMENT_HOURS
4249      , BILLABLE_EQUIPMENT_HOURS
4250      , SUP_INV_COMMITTED_COST
4251      , PO_COMMITTED_COST
4252      , PR_COMMITTED_COST
4253      , OTH_COMMITTED_COST
4254        , ACT_LABOR_HRS
4255            , ACT_EQUIP_HRS
4256            , ACT_LABOR_BRDN_COST
4257            , ACT_EQUIP_BRDN_COST
4258            , ACT_BRDN_COST
4259            , ACT_RAW_COST
4260            , ACT_REVENUE
4261          , ACT_LABOR_RAW_COST
4262          , ACT_EQUIP_RAW_COST
4263            , ETC_LABOR_HRS
4264            , ETC_EQUIP_HRS
4265            , ETC_LABOR_BRDN_COST
4266            , ETC_EQUIP_BRDN_COST
4267            , ETC_BRDN_COST
4268          , ETC_RAW_COST
4269          , ETC_LABOR_RAW_COST
4270          , ETC_EQUIP_RAW_COST
4271      , CUSTOM1
4272      , CUSTOM2
4273      , CUSTOM3
4274      , CUSTOM4
4275      , CUSTOM5
4276      , CUSTOM6
4277      , CUSTOM7
4278      , CUSTOM8
4279      , CUSTOM9
4280      , CUSTOM10
4281      , CUSTOM11
4282      , CUSTOM12
4283      , CUSTOM13
4284      , CUSTOM14
4285      , CUSTOM15
4286      , PRG_LEVEL
4287      , PLAN_TYPE_CODE         /* 4471527 */
4288     )
4289     (
4290      SELECT
4291        g_worker_id
4292      , rl.PROJECT_ID
4293      , rl.PROJECT_ORG_ID
4294      , rl.PROJECT_ORGANIZATION_ID
4295      -- , rl.PARTITION_ID
4296      , rl.PROJECT_ELEMENT_ID
4297      , rl.TIME_ID
4298      , rl.PERIOD_TYPE_ID
4299      , rl.CALENDAR_TYPE
4300      , rl.RBS_AGGR_LEVEL
4301      , rl.WBS_ROLLUP_FLAG
4302      , rl.PRG_ROLLUP_FLAG
4303      , rl.CURR_RECORD_TYPE_ID
4304      , rl.CURRENCY_CODE
4305      , rl.RBS_ELEMENT_ID
4306      , rl.RBS_VERSION_ID
4307      , rl.PLAN_VERSION_ID
4308      , rl.PLAN_TYPE_ID
4309      , rl.RAW_COST
4310      , rl.BRDN_COST
4311      , rl.REVENUE
4312      , rl.BILL_RAW_COST
4313      , rl.BILL_BRDN_COST
4314      , rl.BILL_LABOR_RAW_COST
4315      , rl.BILL_LABOR_BRDN_COST
4316      , rl.BILL_LABOR_HRS
4317      , rl.EQUIPMENT_RAW_COST
4318      , rl.EQUIPMENT_BRDN_COST
4319      , rl.CAPITALIZABLE_RAW_COST
4320      , rl.CAPITALIZABLE_BRDN_COST
4321      , rl.LABOR_RAW_COST
4322      , rl.LABOR_BRDN_COST
4323      , rl.LABOR_HRS
4324      , rl.LABOR_REVENUE
4325      , rl.EQUIPMENT_HOURS
4326      , rl.BILLABLE_EQUIPMENT_HOURS
4327      , rl.SUP_INV_COMMITTED_COST
4328      , rl.PO_COMMITTED_COST
4329      , rl.PR_COMMITTED_COST
4330      , rl.OTH_COMMITTED_COST
4331        , rl.ACT_LABOR_HRS
4332            , rl.ACT_EQUIP_HRS
4333            , rl.ACT_LABOR_BRDN_COST
4334            , rl.ACT_EQUIP_BRDN_COST
4335            , rl.ACT_BRDN_COST
4336            , rl.ACT_RAW_COST
4337            , rl.ACT_REVENUE
4338          , rl.ACT_LABOR_RAW_COST
4339          , rl.ACT_EQUIP_RAW_COST
4340            , rl.ETC_LABOR_HRS
4341            , rl.ETC_EQUIP_HRS
4342            , rl.ETC_LABOR_BRDN_COST
4343            , rl.ETC_EQUIP_BRDN_COST
4344            , rl.ETC_BRDN_COST
4345          , rl.ETC_RAW_COST
4346          , rl.ETC_LABOR_RAW_COST
4347          , rl.ETC_EQUIP_RAW_COST
4348      , rl.CUSTOM1
4349      , rl.CUSTOM2
4350      , rl.CUSTOM3
4351      , rl.CUSTOM4
4352      , rl.CUSTOM5
4353      , rl.CUSTOM6
4354      , rl.CUSTOM7
4355      , rl.CUSTOM8
4356      , rl.CUSTOM9
4357      , rl.CUSTOM10
4358      , rl.CUSTOM11
4359      , rl.CUSTOM12
4360      , rl.CUSTOM13
4361      , rl.CUSTOM14
4362      , rl.CUSTOM15
4363      , g_default_prg_level
4364      , rl.PLAN_TYPE_CODE        /* 4471527 */
4365     FROM
4366          pji_fp_xbs_accum_f rl
4367        , pa_budget_versions bv -- @pjdev115 bv
4368          , pa_proj_fp_options fpo -- @pjdev115 fpo
4369     WHERE
4370          rl.project_id = bv.project_id
4371      AND bv.version_type IS NOT NULL
4372      AND bv.fin_plan_type_id IS NOT NULL
4373      AND fpo.project_id = bv.project_id
4374      AND bv.fin_plan_type_id = fpo.fin_plan_type_id
4375      AND bv.budget_version_id = fpo.fin_plan_version_id
4376      AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'
4377      AND rl.calendar_type =
4378                 DECODE( bv.version_type
4379                       , g_all_timeph_code,     fpo.all_time_phased_code
4380                       , g_cost_timeph_code,    fpo.cost_time_phased_code
4381                       , g_rev_timeph_code, fpo.revenue_time_phased_code
4382                      )
4383      AND rl.plan_version_id = p_fp_version_ids(i));
4384 
4385 
4386 EXCEPTION
4387   WHEN OTHERS THEN
4388     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4389                              p_procedure_name => 'GET_PRI_SLICE_DATA');
4390     RAISE;
4391 END;
4392 
4393 
4394 PROCEDURE INSERT_ACTUALS_FROM_PREVPLAN IS
4395 BEGIN
4396 
4397   NULL;
4398 
4399 EXCEPTION
4400   WHEN OTHERS THEN
4401     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4402                              p_procedure_name => 'GET_PRI_SLICE_DATA');
4403     RAISE;
4404 END;
4405 
4406 
4407 PROCEDURE UPDATE_ACTUALS_TO_NULL IS
4408 BEGIN
4409 
4410   UPDATE PJI_FM_EXTR_PLAN_LINES        bl
4411   SET
4412                           bl.act_txn_raw_cost      = NULL
4413                         , bl.act_txn_burdened_cost = NULL
4414                         , bl.act_txn_revenue       = NULL
4415                         , bl.act_prj_raw_cost      = NULL
4416                         , bl.act_prj_burdened_cost = NULL
4417                         , bl.act_prj_revenue       = NULL
4418                         , bl.act_pfc_raw_cost      = NULL
4419                         , bl.act_pfc_burdened_cost = NULL
4420                         , bl.act_pfc_revenue       = NULL
4421                         , bl.act_quantity          = NULL
4422   WHERE 1=1
4423    AND bl.rowid IN ( SELECT extr_lines_rowid FROM pji_fp_rmap_fpr_update_t);
4424 
4425 EXCEPTION
4426   WHEN OTHERS THEN
4427     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4428                              p_procedure_name => 'UPDATE_ACTUALS_TO_NULL');
4429     RAISE;
4430 END;
4431 
4432 -- RETRIEVE_DELTA_SLICE
4433 PROCEDURE RETRIEVE_DELTA_SLICE IS
4434   l_count NUMBER := NULL;
4435 
4436   l_count_temp  NUMBER := NULL;
4437   l_max_plnver_id  NUMBER := NULL;
4438 
4439   CURSOR c_struct_ver_ids IS
4440   SELECT wbs_struct_version_id
4441   FROM   PJI_FM_EXTR_PLNVER3_T;
4442 
4443 BEGIN
4444 
4445     print_time('........RETRIEVE_DELTA_SLICE : Begin.' );
4446 
4447     INSERT_NTP_CAL_RECORD ( x_max_plnver_id => l_max_plnver_id );
4448 
4449     IF (l_max_plnver_id IS NULL) THEN
4450       RETURN;
4451     END IF;
4452 
4453     INSERT INTO PJI_FP_AGGR_PJP1_T
4454     (
4455          WORKER_ID
4456        , PROJECT_ID
4457        , PROJECT_ORG_ID
4458        , PROJECT_ORGANIZATION_ID
4459        , PROJECT_ELEMENT_ID
4460        , TIME_ID
4461        , PERIOD_TYPE_ID
4462        , CALENDAR_TYPE
4463        , RBS_AGGR_LEVEL
4464        , WBS_ROLLUP_FLAG
4465        , PRG_ROLLUP_FLAG
4466        , CURR_RECORD_TYPE_ID
4467        , CURRENCY_CODE
4468        , RBS_ELEMENT_ID
4469        , RBS_VERSION_ID
4470        , PLAN_VERSION_ID
4471        , PLAN_TYPE_ID
4472        , RAW_COST
4473        , BRDN_COST
4474        , REVENUE
4475        , BILL_RAW_COST
4476        , BILL_BRDN_COST
4477        , BILL_LABOR_RAW_COST
4478        , BILL_LABOR_BRDN_COST
4479        , BILL_LABOR_HRS
4480        , EQUIPMENT_RAW_COST
4481        , EQUIPMENT_BRDN_COST
4482        , CAPITALIZABLE_RAW_COST
4483        , CAPITALIZABLE_BRDN_COST
4484        , LABOR_RAW_COST
4485        , LABOR_BRDN_COST
4486        , LABOR_HRS
4487        , LABOR_REVENUE
4488        , EQUIPMENT_HOURS
4489        , BILLABLE_EQUIPMENT_HOURS
4490        , SUP_INV_COMMITTED_COST
4491        , PO_COMMITTED_COST
4492        , PR_COMMITTED_COST
4493        , OTH_COMMITTED_COST
4494        , ACT_LABOR_HRS
4495            , ACT_EQUIP_HRS
4496            , ACT_LABOR_BRDN_COST
4497            , ACT_EQUIP_BRDN_COST
4498            , ACT_BRDN_COST
4499            , ACT_RAW_COST
4500            , ACT_REVENUE
4501          , ACT_LABOR_RAW_COST
4502          , ACT_EQUIP_RAW_COST
4503            , ETC_LABOR_HRS
4504            , ETC_EQUIP_HRS
4505            , ETC_LABOR_BRDN_COST
4506            , ETC_EQUIP_BRDN_COST
4507            , ETC_BRDN_COST
4508          , ETC_RAW_COST
4509          , ETC_LABOR_RAW_COST
4510          , ETC_EQUIP_RAW_COST
4511        , CUSTOM1
4512        , CUSTOM2
4513        , CUSTOM3
4514        , CUSTOM4
4515        , CUSTOM5
4516        , CUSTOM6
4517        , CUSTOM7
4518        , CUSTOM8
4519        , CUSTOM9
4520        , CUSTOM10
4521        , CUSTOM11
4522        , CUSTOM12
4523        , CUSTOM13
4524        , CUSTOM14
4525        , CUSTOM15
4526        , LINE_TYPE
4527        , RATE_DANGLING_FLAG
4528        , TIME_DANGLING_FLAG
4529        -- , START_DATE
4530        -- , END_DATE
4531        , PRG_LEVEL
4532        , PLAN_TYPE_CODE      /* 4471527 */
4533         )
4534        SELECT
4535          g_worker_id
4536        , plr.PROJECT_ID
4537        , plr.PROJECT_ORG_ID
4538        , plr.project_ORGANIZATION_ID
4539        , plr.WBS_ELEMENT_ID
4540        , DECODE(plr.time_phased_type_code                -- change from vers to plr for bug 4604617
4541               , 'N', -1
4542               , pji_time.cal_period_id)  time_id
4543        , DECODE(plr.time_phased_type_code
4544               , g_pa_cal_str, 32
4545               , g_gl_cal_str, 32
4546               , 'N', 2048)  period_type_id -- period type id...
4547        , DECODE(plr.time_phased_type_code
4548                , g_pa_cal_str, g_pa_cal_str
4549                , g_gl_cal_str, g_gl_cal_str
4550                , 'N', g_all
4551                            , 'X')     --   CALENDAR_TYPE
4552        , g_lowest_level RBS_AGGR_LEVEL
4553        , 'N' WBS_ROLLUP_FLAG
4554        , 'N' PRG_ROLLUP_FLAG
4555        , plr.CURR_RECORD_TYPE  -- curr code missing.
4556            , plr.currency_code
4557        , plr.RBS_ELEMENT_ID
4558        , plr.RBS_STRUCT_VERSION_ID
4559        , plr.BUDGET_VERSION_ID
4560            , plr.plan_type_id
4561        , SUM(plr.RAW_COST)
4562        , SUM(plr.BRDN_COST)
4563        , SUM(plr.REVENUE)
4564        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) ) -- BILL_RAW_COST
4565        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) ) --  BILL_BRDN_COST
4566        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code, plr.raw_cost, 0 ) ) -- BILL_LABOR_RAW_COST
4567        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || g_people_resclass_code , plr.BRDN_COST, 0 ) ) --  BILL_LABOR_BRDN_COST
4568        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code, plr.quantity, 0 ) ) -- BILL_LABOR_HRS */ -- bug 6039785
4569        , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || g_people_resclass_code,
4570                                                                   DECODE(plr.billable_flag,'Y',plr.quantity,0) , 0 ) ) -- BILL_LABOR_HRS -- bug 6039785
4571        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.raw_cost, 0 ) ) -- EQUIPMENT_RAW_COST
4572        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.BRDN_COST, 0 ) ) --  EQUIPMENT_BRDN_COST
4573        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, 0 ) )    --   CAPITALIZABLE_RAW_COST
4574        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, 0 ) ) --     CAPITALIZABLE_BRDN_COST
4575        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.raw_cost, 0 ) ) -- LABOR_RAW_COST
4576        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.BRDN_COST, 0 ) ) -- LABOR_BRDN_COST
4577        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
4578                                             DECODE ( vers.wp_flag, 'N',
4579                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
4580                                                                    plr.quantity),
4581                                                     0 ) )  --  labor_hrs */ -- bug 6039785
4582        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, DECODE(plr.billable_flag,'Y',
4583                                             DECODE ( vers.wp_flag, 'N',
4584                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
4585                                                                    plr.quantity),
4586 						    0 ),
4587                                                     0 ) )  --  labor_hrs -- bug 6039785
4588        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.revenue, 0 ) ) -- LABOR_REVENUE
4589        /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4590                                             DECODE ( vers.wp_flag, 'N',
4591                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
4592                                                                    plr.quantity),
4593                                             0 ) )  EQUIPMENT_HOURS */ -- bug 6039785
4594        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4595                                             DECODE ( vers.wp_flag, 'N',
4596                                                                    DECODE ( plr.billable_flag, 'Y',plr.quantity,0),
4597                                                                    plr.quantity),
4598                                             0 ) )  EQUIPMENT_HOURS -- bug 6039785
4599        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT', plr.quantity, 0 ) ) */ -- BILLABLE_EQUIPMENT_HOURS -- bug 6039785
4600        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT',
4601                                                                  DECODE(plr.billable_flag,'Y',plr.quantity,0), 0 ) ) -- BILLABLE_EQUIPMENT_HOURS -- bug 6039785
4602        , NULL -- SUP_INV_COMMITTED_COST
4603        , NULL -- PO_COMMITTED_COST
4604        , NULL -- PR_COMMITTED_COST
4605        , NULL -- OTH_COMMITTED_COST
4606        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
4607                                             DECODE ( vers.wp_flag, 'N',
4608                                                                    DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
4609                                                                    plr.actual_quantity),
4610                                                     0 ) )  ACT_LABOR_HRS */ -- bug 6039785
4611        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
4612                                             DECODE (plr.billable_flag ,'Y',
4613                                                     DECODE ( vers.wp_flag, 'N',
4614                                                                    DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
4615                                                                    plr.actual_quantity),
4616   				             0 ),
4617                                                     0 ) )  ACT_LABOR_HRS -- bug 6039785
4618        /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4619                                            DECODE ( vers.wp_flag, 'N',
4620                                                                    DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
4621                                                                    plr.actual_quantity),
4622                                                     0 ) ) ACT_EQUIP_HOURS */ -- bug 6039785
4623        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4624                                            DECODE ( vers.wp_flag, 'N',
4625                                                                    DECODE ( plr.billable_flag, 'Y',plr.actual_quantity,0),
4626                                                                    plr.actual_quantity),
4627                                                     0 ) ) ACT_EQUIP_HOURS -- bug 6039785
4628        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_BRDN_COST, 0 ) ) ACT_LABOR_BRDN_COST
4629        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_BRDN_COST, 0 ) ) ACT_EQUIPMENT_BRDN_COST
4630        , SUM ( plr.actual_brdn_cost ) ACT_BRDN_COST
4631        , SUM ( plr.actual_raw_cost ) ACT_RAW_COST
4632        , SUM ( plr.actual_revenue ) ACT_REVENUE
4633        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.actual_RAW_COST, 0 ) ) ACT_LABOR_RAW_COST
4634        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code , plr.actual_RAW_COST, 0 ) ) ACT_EQUIPMENT_RAW_COST
4635        /* , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
4636                                             DECODE ( vers.wp_flag, 'N',
4637                                                                    DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
4638                                                                    plr.ETC_quantity),
4639                                              g_equip_resclass_code, decode(plr.etc_quantity, null, null,0), NULL ) ) ETC_LABOR_HRS */ -- bug 6039785
4640        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code,
4641                                             DECODE (plr.billable_flag ,'Y',
4642                                                     DECODE ( vers.wp_flag, 'N',
4643                                                                    DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
4644                                                                    plr.ETC_quantity),
4645 					    0),
4646                                              g_equip_resclass_code, decode(plr.etc_quantity, null, null,0), NULL ) ) ETC_LABOR_HRS -- bug 6039785
4647        /* , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4648                                             DECODE ( vers.wp_flag, 'N',
4649                                                                    DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
4650                                                                    plr.ETC_quantity),
4651                                             g_people_resclass_code, decode(plr.etc_quantity, null, null, 0), NULL ) ) ETC_EQUIP_HOURS */ -- bug 6039785
4652        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code,
4653                                             DECODE (plr.billable_flag ,'Y', -- Bug 6348091
4654                                                 DECODE ( vers.wp_flag, 'N',
4655                                                 --DECODE (plr.billable_flag ,'Y', --Bug 6348091
4656                                                                    DECODE ( plr.billable_flag, 'Y',plr.ETC_quantity,0),
4657                                                                    plr.ETC_quantity),
4658 					    0),
4659                                             g_people_resclass_code, decode(plr.etc_quantity, null, null, 0), NULL ) ) ETC_EQUIP_HOURS -- bug 6039785
4660        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_BRDN_COST, g_equip_resclass_code, decode(plr.etc_BRDN_COST, null, null, 0), NULL ) ) ETC_LABOR_BRDN_COST
4661        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code, plr.etc_BRDN_COST, g_people_resclass_code, decode(plr.etc_BRDN_COST, null, null, 0), NULL ) ) ETC_EQUIP_BRDN_COST
4662        , SUM ( plr.etc_brdn_cost ) ETC_BRDN_COST
4663        , SUM ( plr.etc_raw_cost ) ETC_RAW_COST
4664        , SUM ( DECODE ( plr.resource_class, g_people_resclass_code, plr.etc_raw_COST, g_equip_resclass_code, decode(plr.etc_RAW_COST, null, null, 0), NULL ) ) ETC_LABOR_raw_COST
4665        , SUM ( DECODE ( plr.resource_class, g_equip_resclass_code, plr.etc_raw_COST, g_people_resclass_code, decode(plr.etc_RAW_COST, null, null, 0), NULL ) ) ETC_EQUIP_raw_COST
4666        , NULL CUSTOM1
4667        , NULL CUSTOM2
4668        , NULL CUSTOM3
4669        , NULL CUSTOM4
4670        , NULL CUSTOM5
4671        , NULL CUSTOM6
4672        , NULL CUSTOM7
4673        , NULL CUSTOM8
4674        , NULL CUSTOM9
4675        , NULL CUSTOM10
4676        , NULL CUSTOM11
4677        , NULL CUSTOM12
4678        , NULL CUSTOM13
4679        , NULL CUSTOM14
4680            , NULL CUSTOM15
4681        , 'OF' -- LINE_TYPE
4682        , NULL                            -- rate_dangling_flag
4683        , NULL --     time_dangling_flag
4684        , g_default_prg_level
4685        , plr.plan_type_code  plan_type_code  /* 4471527 */
4686        FROM
4687        (          ----- First inline view plr .............
4688             select
4689               collapse_bl.PROJECT_ID
4690             -- , 1 partition_id
4691             , collapse_bl.WBS_ELEMENT_ID
4692             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
4693             , SUM(collapse_bl.CURR_RECORD_TYPE_ID) CURR_RECORD_TYPE
4694             , collapse_bl.RBS_ELEMENT_ID
4695             , collapse_bl.RBS_STRUCT_VERSION_ID
4696                         , collapse_bl.plan_type_id
4697             , collapse_bl.BUDGET_VERSION_ID
4698             , collapse_bl.PROJECT_ORGANIZATION_ID
4699             , collapse_bl.PROJECT_ORG_ID
4700             , collapse_bl.BILLABLE_FLAG
4701             , collapse_bl.RESOURCE_CLASS
4702             , collapse_bl.TIME_PHASED_TYPE_CODE
4703             , collapse_bl.CURRENCY_CODE
4704             , max(collapse_bl.raw_cost) raw_cost
4705             , max(collapse_bl.BRDN_COST) BRDN_COST
4706             , max(collapse_bl.revenue) revenue
4707             , max(collapse_bl.act_raw_cost) actual_raw_cost
4708             , max(collapse_bl.act_BRDN_COST) actual_BRDN_COST
4709             , max(collapse_bl.act_revenue) actual_revenue
4710             , max(collapse_bl.etc_BRDN_COST) etc_raw_COST
4711             , max(collapse_bl.etc_BRDN_COST) etc_BRDN_COST
4712             , max(collapse_bl.quantity) quantity
4713             , max(collapse_bl.act_quantity) actual_quantity
4714             , max(collapse_bl.etc_quantity) etc_quantity
4715             , collapse_bl.start_date start_date
4716             , collapse_bl.end_date   end_date
4717             , collapse_bl.period_name period_name
4718             -- , TRACK_AS_LABOR_FLAG track_as_labor_flag
4719             , collapse_bl.row_id
4720             , collapse_bl.plan_type_code  plan_type_code   /* 4471527 */
4721             from
4722               (                  ----- Second inline view 'collapse_bl' begin .............
4723                 select
4724                   spread_bl.row_id row_id
4725                 , spread_bl.PROJECT_ID
4726                 , spread_bl.BUDGET_VERSION_ID
4727                 -- , spread_bl.RESOURCE_ASSIGNMENT_ID
4728                 , spread_bl.WBS_ELEMENT_ID
4729                 , spread_bl.RBS_ELEMENT_ID
4730                 , spread_bl.WBS_STRUCT_VERSION_ID
4731                 , spread_bl.RBS_STRUCT_VERSION_ID
4732                                 , spread_bl.plan_type_id
4733                 , spread_bl.BILLABLE_FLAG
4734                 , spread_bl.RESOURCE_CLASS
4735                 -- , spread_bl.CALENDAR_TYPE
4736                 -- , pji_time.CALENDAR_ID
4737                 , spread_bl.PROJECT_ORGANIZATION_ID
4738                 , spread_bl.PROJECT_ORG_ID
4739                 , spread_bl.TIME_PHASED_TYPE_CODE
4740                 , DECODE( invert.INVERT_ID
4741                         , 4, spread_bl.func_CURRENCY_CODE
4742                         , 8, spread_bl.PRJ_CURRENCY_CODE
4743                         , 16, spread_bl.TXN_CURRENCY_CODE ) CURRENCY_CODE
4744                 , invert.INVERT_ID CURR_RECORD_TYPE_ID
4745                 , DECODE ( invert.INVERT_ID
4746                          , 4, spread_bl.func_raw_cost
4747                          , 8, spread_bl.PRJ_raw_cost
4748                          , 16, spread_bl.TXN_raw_cost) raw_cost
4749                 , DECODE ( invert.INVERT_ID
4750                          , 4, spread_bl.func_BRDN_COST
4751                          , 8, spread_bl.PRJ_BRDN_COST
4752                          , 16, spread_bl.TXN_BRDN_COST ) BRDN_COST
4753                 , DECODE ( invert.INVERT_ID
4754                          , 4, spread_bl.func_revenue
4755                          , 8, spread_bl.PRJ_revenue
4756                          , 16, spread_bl.TXN_revenue ) revenue
4757                 , DECODE ( invert.INVERT_ID
4758                          , 4, spread_bl.act_func_raw_cost
4759                          , 8, spread_bl.act_PRJ_raw_cost
4760                          , 16, spread_bl.act_TXN_raw_cost) act_raw_cost
4761                 , DECODE ( invert.INVERT_ID
4762                          , 4, spread_bl.act_func_BRDN_COST
4763                          , 8, spread_bl.act_PRJ_BRDN_COST
4764                          , 16, spread_bl.act_TXN_BRDN_COST ) act_BRDN_COST
4765                 , DECODE ( invert.INVERT_ID
4766                          , 4, spread_bl.act_func_revenue
4767                          , 8, spread_bl.act_PRJ_revenue
4768                          , 16, spread_bl.act_TXN_revenue ) act_revenue
4769                 , DECODE ( invert.INVERT_ID
4770                          , 4, spread_bl.etc_func_brdn_cost
4771                          , 8, spread_bl.etc_PRJ_brdn_cost
4772                          , 16, spread_bl.etc_TXN_brdn_cost ) etc_brdn_cost
4773                 , DECODE ( invert.INVERT_ID
4774                          , 4, spread_bl.etc_pfc_raw_cost
4775                          , 8, spread_bl.etc_PRJ_raw_cost
4776                          , 16, spread_bl.etc_TXN_raw_cost) etc_raw_cost
4777                 , spread_bl.quantity quantity
4778                                 , spread_bl.act_quantity act_quantity
4779                                 , spread_bl.etc_quantity etc_quantity
4780                 , spread_bl.start_date start_date
4781                 , spread_bl.end_date   end_date
4782                 , spread_bl.period_name period_name
4783                 -- , spread_bl.TRACK_AS_LABOR_FLAG track_as_labor_flag
4784                 , spread_bl.plan_type_code  plan_type_code   /* 4471527 */
4785                 from
4786                   (     ----- Third inline view 'spread_bl'  .............
4787                         -- Added hint for bug 3828698
4788                     SELECT
4789                           bl.project_id
4790                         , bl.rowid row_id
4791                         , bl.plan_version_id budget_version_id
4792                         -- , bl.resource_asSIGNment_id
4793                         , DECODE(bl.project_element_id, 0, pevs.proj_element_id, bl.project_element_id) wbs_element_id
4794                         , NVL(bl.rbs_element_id, -1)   rbs_element_id
4795                         , bl.struct_ver_id             wbs_struct_version_id
4796                   , DECODE( bl.rbs_element_id
4797                           , NULL
4798                           , -1
4799                           , NVL(ver.rbs_struct_version_id, -1)
4800                           )                       rbs_struct_version_id
4801                   , bl.plan_type_id               plan_type_id -- ver.plan_type_id
4802                   , bl.rate_based_flag            billable_flag -- ra.rate_based_flag             billable_flag
4803                   , bl.resource_class_code        resource_class -- ra.resource_class_code         resource_class
4804                         , bl.txn_currency_code          txn_currency_code
4805                         , bl.txn_raw_cost               txn_raw_cost
4806                         , bl.txn_burdened_COST          txn_BRDN_COST
4807                         , bl.txn_revenue                txn_revenue
4808                         , bl.act_txn_raw_cost           act_txn_raw_cost
4809                         , bl.act_txn_burdened_cost      act_txn_brdn_cost
4810                         , bl.act_txn_revenue            act_txn_revenue
4811                         , bl.etc_txn_burdened_cost      etc_txn_brdn_cost
4812                         , bl.prj_currency_code          prj_currency_code
4813                         , bl.prj_raw_cost               prj_raw_cost
4814                         , bl.prj_burdened_COST          prj_BRDN_COST
4815                         , bl.prj_revenue                prj_revenue
4816                         , bl.act_prj_raw_cost           act_prj_raw_cost
4817                         , bl.act_prj_burdened_cost      act_prj_brdn_cost
4818                         , bl.act_prj_revenue            act_prj_revenue
4819                         , bl.etc_prj_burdened_cost      etc_prj_brdn_cost
4820                         , bl.pfc_currency_code         func_currency_code
4821                   , bl.pfc_raw_cost                       func_raw_cost
4822                         , bl.pfc_burdened_COST                  func_BRDN_COST
4823                         , bl.pfc_revenue                     func_revenue
4824                         , bl.act_pfc_raw_cost           act_func_raw_cost
4825                         , bl.act_pfc_burdened_cost      act_func_brdn_cost
4826                         , bl.act_pfc_revenue            act_func_revenue
4827                         , bl.etc_pfc_burdened_cost      etc_func_brdn_cost
4828                         , bl.ETC_TXN_RAW_COST           ETC_TXN_RAW_COST
4829                         , bl.ETC_PRJ_RAW_COST           ETC_PRJ_RAW_COST
4830                         , bl.ETC_PFC_RAW_COST           ETC_PFC_RAW_COST
4831                         , 'DEF'                   glb1_currency_code
4832                   , NULL                           glb1_raw_cost
4833                         , NULL                           glb1_BRDN_COST
4834                         , NULL                           glb1_revenue
4835                         , 'ACB'        glb2_currency_code
4836                   , NULL                           glb2_raw_cost
4837                         , NULL                           glb1_BRDN_COST
4838                         , NULL                           glb1_revenue
4839                         , bl.quantity                       quantity
4840                         , bl.act_quantity                  act_quantity
4841                         , bl.etc_quantity                  etc_quantity
4842                         , DECODE(ver.time_phased_type_code, 'N', bl.start_date, NULL) start_date
4843                         , DECODE(ver.time_phased_type_code, 'N', bl.end_date, NULL) end_date
4844                         , NVL(bl.period_name, g_ntp_period_name)       period_name
4845                         , NVL(bl.calendar_type, ver.time_phased_type_code) time_phased_type_code
4846                         , bl.project_org_id                       project_org_id
4847                         , ppa.carrying_out_organization_id  project_organization_id
4848                         , ver.plan_type_code   plan_type_code  /* 4471527 */
4849                     FROM
4850                        PJI_FM_EXTR_PLAN_LINES        bl
4851                      , PJI_FM_EXTR_PLNVER3_T         ver
4852                                  , pa_projects_all               ppa
4853                                  , PA_PROJ_ELEM_VER_STRUCTURE    pevs
4854                                  , pji_fp_rmap_fpr_update_t      rwid
4855                     WHERE 1=1
4856                                          AND bl.project_id = ver.project_id
4857                                          AND bl.plan_version_id = ver.plan_version_id
4858                                          AND bl.plan_type_id = ver.plan_type_id
4859                                          AND ppa.project_id = ver.project_id
4860                      AND bl.project_id = ppa.project_id -- Added for bug 3828698
4861                      AND ppa.project_id = pevs.project_id -- Added for bug 3838698
4862                                          AND bl.TXN_CURRENCY_CODE IS NOT NULL
4863                                          AND bl.prj_currency_code IS NOT NULL
4864                                          AND bl.pfc_currency_code IS NOT NULL
4865                                      AND pevs.element_version_id = ver.wbs_struct_version_id
4866                                          AND pevs.project_id = ver.project_id  -- Fix for bug : 4149422 in RETRIEVE_DELTA_SLICE
4867                                AND bl.ROWID = rwid.extr_lines_rowid
4868                                   ) spread_bl
4869                                    ---- end of third inline view 'spread_bl'...........
4870                   ,
4871                     (
4872                       select 4   INVERT_ID from dual union all
4873                       select 8   INVERT_ID from dual union all
4874                       select 16  INVERT_ID from dual where PJI_UTILS.GET_SETUP_PARAMETER('TXN_CURR_FLAG') = 'Y'
4875                     ) invert
4876                                 )  collapse_bl
4877                                 ----  End of second inline view 'collapse_bl' ..........
4878                         GROUP BY
4879               collapse_bl.PROJECT_ID
4880             , collapse_bl.WBS_ELEMENT_ID
4881             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
4882             , collapse_bl.RBS_ELEMENT_ID
4883             , collapse_bl.RBS_STRUCT_VERSION_ID
4884                         , collapse_bl.plan_type_id
4885             , collapse_bl.BUDGET_VERSION_ID
4886             , collapse_bl.PROJECT_ORGANIZATION_ID
4887             , collapse_bl.PROJECT_ORG_ID
4888             , collapse_bl.BILLABLE_FLAG
4889             , collapse_bl.RESOURCE_CLASS
4890             , collapse_bl.TIME_PHASED_TYPE_CODE
4891             , collapse_bl.CURRENCY_CODE
4892             , collapse_bl.start_date
4893             , collapse_bl.end_date
4894             , collapse_bl.period_name
4895             , collapse_bl.row_id
4896             , collapse_bl.plan_type_code    /* 4471527 */
4897        ) plr
4898                                 ----  End of first inline view plr ..........
4899        , PJI_ORG_EXTR_INFO            orginfo
4900        , PJI_FM_EXTR_PLNVER3_T     vers
4901        , pji_time_cal_period_v       pji_time
4902          WHERE  1=1
4903            AND    plr.project_org_id       = orginfo.org_id
4904            AND    plr.project_id             = vers.project_id
4905            AND    plr.budget_version_id      = vers.plan_version_id
4906            AND    plr.plan_type_code         = vers.plan_type_code    /*4471527 */
4907            AND    DECODE(plr.time_phased_type_code                       -- change from vers to plr for bug 4604617
4908                    , g_pa_cal_str, orginfo.pa_calendar_id
4909                    , g_gl_cal_str, orginfo.gl_calendar_id
4910                    , -l_max_plnver_id  ) = pji_time.calendar_id
4911            AND    plr.period_name = pji_time.name
4912            AND plr.time_phased_type_code IN (g_pa_cal_str, g_gl_cal_str, 'N')
4913        GROUP BY
4914          plr.PROJECT_ID
4915        , plr.WBS_ELEMENT_ID
4916        , DECODE(plr.time_phased_type_code
4917               , 'N', -1
4918               , pji_time.cal_period_id)
4919        , DECODE(plr.time_phased_type_code
4920               , g_pa_cal_str, 32
4921               , g_gl_cal_str, 32
4922               , 'N', 2048)   -- period type id...
4923        , DECODE(plr.time_phased_type_code
4924                , g_pa_cal_str, g_pa_cal_str
4925                , g_gl_cal_str, g_gl_cal_str
4926                , 'N', g_all
4927                            , 'X')     --   CALENDAR_TYPE
4928        , plr.CURR_RECORD_TYPE  -- curr code missing.
4929            , plr.currency_code
4930        , plr.RBS_ELEMENT_ID
4931        , plr.RBS_STRUCT_VERSION_ID
4932            , plr.plan_type_id
4933        , plr.BUDGET_VERSION_ID
4934        , plr.project_ORGANIZATION_ID
4935        , plr.project_ORG_ID
4936        , plr.plan_type_code ;   /* 4471527 */
4937 
4938   print_time('count is ... ' || SQL%ROWCOUNT );
4939 
4940   DELETE_NTP_CAL_RECORD ( p_max_plnver_id => l_max_plnver_id );
4941 
4942   print_time('........RETRIEVE_DELTA_SLICE : End.' );
4943 
4944 EXCEPTION
4945   WHEN OTHERS THEN
4946     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4947                              p_procedure_name => 'RETRIEVE_DELTA_SLICE');
4948     print_time('........RETRIEVE_DELTA_SLICE : Exception ' || sqlerrm );
4949     RAISE;
4950 END;
4951 
4952 
4953 PROCEDURE POPULATE_PLN_VER_TABLE IS
4954   l_count NUMBER := 0;
4955 BEGIN
4956 
4957   print_time('........POPULATE_PLN_VER_TABLE : Begin.' );
4958 
4959     INSERT INTO PJI_FM_EXTR_PLNVER3_T
4960     (
4961       PROJECT_ID               ,
4962       PLAN_VERSION_ID          ,
4963       WBS_STRUCT_VERSION_ID    ,
4964       RBS_STRUCT_VERSION_ID    ,
4965       PLAN_TYPE_CODE           ,
4966       PLAN_TYPE_ID             ,
4967       TIME_PHASED_TYPE_CODE    ,
4968       TIME_DANGLING_FLAG       ,
4969       RATE_DANGLING_FLAG       ,
4970       PROJECT_TYPE_CLASS       ,
4971       WP_FLAG                  ,
4972         CURRENT_FLAG             ,
4973         ORIGINAL_FLAG            ,
4974         CURRENT_ORIGINAL_FLAG    ,
4975         BASELINED_FLAG           ,
4976       SECONDARY_RBS_FLAG
4977     )
4978   SELECT DISTINCT
4979           epl.project_id
4980           , epl.plan_version_id
4981           , DECODE ( NVL(bv.wp_version_flag, 'N')
4982                    , 'Y', bv.project_structure_version_id
4983                      , PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(bv.project_id) -- -9999 --
4984                      )                           wbs_struct_version_id
4985           -- , epl.struct_ver_id
4986           , fpo.rbs_version_id -- epl.rbs_version_id
4987          -- , to_char(epl.plan_type_id) -- pln type code
4988           , DECODE (bv.version_type, 'COST' ,'C' , 'REVENUE', 'R', 'A') plan_type_code       /* 4471527 */
4989           , epl.plan_type_id
4990         , DECODE(bv.version_type
4991                   , g_all_timeph_code,     fpo.all_time_phased_code
4992                   , g_cost_timeph_code,    fpo.cost_time_phased_code
4993                   , g_rev_timeph_code, fpo.revenue_time_phased_code
4994                  )                       time_phased_type_code
4995           , null -- time dangling..
4996           , null -- time dangling..
4997           , null -- project type class is not used currently..
4998         , DECODE(bv.wp_version_flag, 'Y', 'Y', 'N') is_wp_flag
4999           , bv.current_flag                  current_flag
5000           , bv.original_flag                 original_flag
5001           , bv.current_original_flag         current_original_flag
5002           , DECODE(bv.baselined_date, NULL, 'N', 'Y') baselined_flag
5003         , 'N'
5004   FROM PJI_FM_EXTR_PLAN_LINES epl
5005      , pa_budget_versions bv
5006      , pa_proj_fp_options fpo
5007   WHERE
5008         epl.plan_version_id = bv.budget_version_id
5009     AND fpo.project_id = bv.project_id
5010     AND bv.fin_plan_type_id = fpo.fin_plan_type_id
5011     AND bv.budget_version_id = fpo.fin_plan_version_id
5012     AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'
5013     AND epl.rowid IN ( SELECT extr_lines_rowid FROM pji_fp_rmap_fpr_update_t);
5014 
5015 
5016   print_time('count is ... ' || SQL%ROWCOUNT );
5017 
5018   print_time('........POPULATE_PLN_VER_TABLE : End.' );
5019 
5020 EXCEPTION
5021   WHEN OTHERS THEN
5022     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5023                              p_procedure_name => 'POPULATE_PLN_VER_TABLE');
5024     print_time('........POPULATE_PLN_VER_TABLE : Exception: ' || sqlerrm );
5025     RAISE;
5026 END;
5027 
5028 
5029 PROCEDURE GET_GLOBAL_EXCHANGE_RATES IS
5030 
5031   l_gl1_cur_code  VARCHAR2(15) := g_global1_currency_code;
5032   l_gl2_cur_code  VARCHAR2(15) := g_global2_currency_code;
5033   l_gl1_mau       NUMBER := g_global1_currency_mau;
5034   l_gl2_mau       NUMBER := g_global2_currency_mau;
5035 
5036 BEGIN
5037 
5038   print_time('........GET_GLOBAL_EXCHANGE_RATES: Begin. ' );
5039 
5040     PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
5041       x_currency_conversion_rule => g_currency_conversion_rule
5042     , x_prorating_format         => g_prorating_format
5043     , x_global1_currency_code    => g_global1_currency_code
5044     , x_global2_currency_code    => g_global2_currency_code
5045     , x_global1_currency_mau     => g_global1_currency_mau
5046     , x_global2_currency_mau     => g_global2_currency_mau ) ;
5047 
5048   l_gl1_cur_code  := g_global1_currency_code;
5049   l_gl2_cur_code  := g_global2_currency_code;
5050   l_gl1_mau       := g_global1_currency_mau;
5051   l_gl2_mau       := g_global2_currency_mau;
5052 
5053   print_time(' Got global currency settings. ');
5054   print_time(' g_currency_conversion_rule ' || g_currency_conversion_rule || ' g_prorating_format ' ||  g_prorating_format );
5055   print_time(' g_global1_currency_code ' || g_global1_currency_code || ' g_global2_currency_code ' || g_global2_currency_code );
5056   print_time(' g_global1_currency_mau ' || g_global1_currency_mau || ' g_global2_currency_mau ' || g_global2_currency_mau ) ;
5057 
5058 
5059    DELETE FROM PJI_FM_AGGR_DLY_RATES_T
5060    WHERE worker_id = g_worker_id;
5061      -- Removed pa_resource_assignments join and Added joins with pji_org_extr_info
5062      -- for bug 4149422
5063       -- SQL for getting rates for time phased budgets.
5064       PJI_UTILS.g_max_roll_days := 1500;  /*5155692 */
5065 
5066   INSERT INTO PJI_FM_AGGR_DLY_RATES_T (
5067                 WORKER_ID       ,
5068                 PF_CURRENCY_CODE ,
5069                 TIME_ID ,
5070                 RATE    ,
5071                 MAU     ,
5072                 RATE2   ,
5073                 MAU2)
5074    SELECT worker_id,
5075        projfunc_currency_code,
5076        time_id,
5077        PJI_UTILS.GET_GLOBAL_RATE_PRIMARY (temp.projfunc_currency_code
5078                       , DECODE ( g_currency_conversion_rule
5079                       , 'S'
5080                       , temp.start_date
5081                       , 'E'
5082                       , temp.end_date ))
5083        rate1,
5084        l_gl1_mau mau1,
5085        DECODE ( PJI_UTILS.GET_SETUP_PARAMETER('GLOBAL_CURR2_FLAG'),
5086                 'Y',
5087                 PJI_UTILS.GET_GLOBAL_RATE_SECONDARY (temp.projfunc_currency_code,
5088                 DECODE ( g_currency_conversion_rule
5089                        , 'S'
5090                        , temp.start_date
5091                        , 'E'
5092                        , temp.end_date ) ),
5093                NULL
5094               )
5095         rate2,
5096         l_gl2_mau mau2
5097    FROM (
5098           SELECT DISTINCT
5099                  g_worker_id worker_id
5100                , ppa.projfunc_currency_code
5101                , cal_period_id time_id
5102                , DECODE( g_currency_conversion_rule
5103                        , 'S'
5104                        , prd.start_date
5105                        , TO_DATE(NULL)
5106                        ) start_date
5107                , DECODE( g_currency_conversion_rule
5108                        , 'E'
5109                        , prd.end_date
5110                        , TO_DATE(NULL)
5111                        ) end_date
5112                , l_gl1_mau mau1
5113                , l_gl2_mau mau2
5114           FROM pa_budget_lines  bl
5115            , pa_budget_versions bv                           -- added for bug 5842896
5116            , pji_time_cal_period_v  prd
5117            , PJI_FM_EXTR_PLNVER3_T  ver
5118            , pa_projects_all ppa
5119            ,PJI_ORG_EXTR_INFO inf
5120          WHERE  bl.budget_version_id = ver.plan_version_id
5121             AND bl.budget_version_id = bv.budget_version_id  -- added for bug 5842896
5122             AND bv.project_id = ppa.project_id               -- added for bug 5842896
5123             AND ver.time_phased_type_code IN ('P', 'G')
5124             AND bl.period_name = prd.name
5125             AND ver.wp_flag = 'N'
5126             AND ver.baselined_flag = 'Y'
5127             AND ver.project_id = ppa.project_id
5128             --  Fix for bug : 4149422
5129             AND ppa.org_id = inf.org_id
5130             AND DECODE (ver.time_phased_type_code
5131                       , 'P'
5132                       , inf.pa_calendar_id
5133                       , 'G'
5134                       , inf.gl_calendar_id) = prd.calendar_id
5135       UNION ALL
5136           SELECT DISTINCT
5137                    g_worker_id worker_id
5138                  , ppa.projfunc_currency_code
5139                  , DECODE ( g_currency_conversion_rule
5140                           , 'S'
5141                           , TO_NUMBER(to_CHAR(ra.planning_start_date, 'J'))
5142                           , 'E'
5143                           , TO_NUMBER(to_CHAR(ra.planning_end_date, 'J')) ) time_id
5144                  , DECODE( g_currency_conversion_rule
5145                          , 'S'
5146                          , ra.planning_start_date
5147                          , TO_DATE(NULL)
5148                          ) start_date
5149                  , DECODE( g_currency_conversion_rule
5150                          , 'E'
5151                          , ra.planning_end_date
5152                          , TO_DATE(NULL)
5153                          ) end_date
5154                  , l_gl1_mau mau1
5155                  , l_gl2_mau mau2
5156           FROM pa_resource_assignments ra
5157              , PJI_FM_EXTR_PLNVER3_T  ver
5158              , pa_projects_all ppa
5159           WHERE ra.budget_version_id = ver.plan_version_id
5160             AND ver.wp_flag = 'N'
5161             AND ver.baselined_flag = 'Y'
5162             AND ver.time_phased_type_code = 'N'
5163             AND ver.project_id = ppa.project_id
5164          ) temp;
5165 
5166 PJI_UTILS.g_max_roll_days := NULL;  /*5155692 */
5167 
5168 /*  See if any line with negative rate was derived. If so then update the
5169     corresponding line in ver3 as rate dangling*/
5170 
5171         UPDATE PJI_FM_EXTR_PLNVER3_T ver
5172            SET rate_dangling_flag = 'Y'
5173           WHERE (project_id,plan_version_id)  IN
5174                         (    SELECT project_id,budget_version_id
5175                                FROM PA_BUDGET_LINES bl,
5176                                     pji_time_cal_period_v  prd,
5177                                     PJI_FM_AGGR_DLY_RATES_T rates
5178                               WHERE rates.time_id=prd.cal_period_id
5179                                 AND bl.period_name = prd.name
5180                                 AND (sign(rates.rate)=-1 OR sign(rates.rate2) = -1)
5181                                 AND ver.time_phased_type_code IN ('P', 'G')
5182                           UNION ALL
5183                              SELECT project_id,budget_version_id
5184                                FROM pa_resource_assignments ra,
5185                                     PJI_FM_AGGR_DLY_RATES_T rates
5186                               WHERE rates.time_id= DECODE ( g_currency_conversion_rule
5187                                                                 , 'S'
5188                                                                         , TO_NUMBER(to_CHAR(ra.planning_start_date, 'J'))
5189                                                                  , 'E'
5190                                                                          , TO_NUMBER(to_CHAR(ra.planning_end_date, 'J')) )
5191                                 AND (sign(rates.rate)=-1 OR sign(rates.rate2) = -1)
5192                                 AND ver.time_phased_type_code = 'N'
5193                         )
5194             AND ver.wp_flag = 'N'
5195             AND ver.baselined_flag = 'Y';
5196 
5197 
5198   print_time('........GET_GLOBAL_EXCHANGE_RATES: End. ' );
5199 
5200 EXCEPTION
5201   WHEN OTHERS THEN
5202     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5203                              p_procedure_name => 'GET_GLOBAL_EXCHANGE_RATES');
5204     print_time('........GET_GLOBAL_EXCHANGE_RATES: Exception: ' || sqlerrm );
5205     RAISE;
5206 END;
5207 
5208 
5209 PROCEDURE DELETE_GLOBAL_EXCHANGE_RATES IS
5210 BEGIN
5211 
5212   print_time('........DELETE_GLOBAL_EXCHANGE_RATES: Begin. ' );
5213 
5214   DELETE FROM PJI_FM_AGGR_DLY_RATES_T
5215   WHERE  worker_id = g_worker_id;
5216 
5217   print_time('........DELETE_GLOBAL_EXCHANGE_RATES: End. # rows is.. ' || SQL%ROWCOUNT );
5218 
5219 EXCEPTION
5220   WHEN OTHERS THEN
5221     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5222                              p_procedure_name => 'DELETE_GLOBAL_EXCHANGE_RATES');
5223     print_time('........DELETE_GLOBAL_EXCHANGE_RATES: Exception: ' || sqlerrm );
5224     RAISE;
5225 END;
5226 
5227 
5228 /*
5229 PROCEDURE UPDATE_CURR_RCD_TYPES_GL1_GL2
5230 IS BEGIN
5231 
5232    -- Algorithm is as follows:
5233    -- ------------------------
5234    -- 1. Get all relevant rows from rpting lines into tmp1 table (GET_PRI_SLICE_DATA already did this).
5235    -- 2. Create/Update records as needed based on exchange rates as follows.
5236    --     SQL 1: Update existing rcds for TXN if GL1/GL2 are equal to TXN.
5237    --     SQL 2: Update existing rcds for PRJ if GL1/GL2 are equal to PRJ and PRJ<>TXN.
5238    --     SQL 3: Update existing rcds for FUNC if GL1/GL2 are equal to FUNC and FUNC<> TXN/PRJ and PRJ<>TXN and 1, 2 don't hold true.
5239    --     SQL 4: Create new rcds using existing records for TXN if GL1/GL2 are not in (TXN, PRJ, FUNC).
5240    --     SQL 5: Update existing rcds for GL1 if GL2 is equal to GL1, etc.
5241    --     SQL 6: Create new rcds using existing records for TXN if GL2 is not in (TXN, PRJ, FUNC, GL1).
5242    --3. Merge the new records into rpting lines.
5243 
5244    PJI_FM_PLAN_MAINT_T_PVT.GET_GLOBAL_EXCHANGE_RATES;
5245 
5246    PJI_FM_PLAN_MAINT_T_PVT.CONV_TO_GLOBAL_CURRENCIES;
5247 
5248    -- This wont work!!!
5249    -- PJI_FM_PLAN_MAINT.MERGE_INTO_REPORTING_LNS_FACT;
5250    -- This wont work!!!
5251 
5252 EXCEPTION
5253   WHEN OTHERS THEN
5254     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5255                              p_procedure_name => 'UPDATE_CURR_RCD_TYPES_GL1_GL2');
5256     RAISE;
5257 END;
5258 */
5259 
5260 
5261 --
5262 -- Stubbed api.
5263 --
5264 /*
5265 PROCEDURE CONV_TO_GLOBAL_CURRENCIES IS
5266   l_return_status VARCHAR2(1);
5267   l_ver3_is_empty VARCHAR2(1);
5268 BEGIN
5269 
5270   print_time('........CONV_TO_GLOBAL_CURRENCIES: Begin. ' );
5271 
5272   --
5273   -- IF ver3 is empty, return.
5274   --
5275   l_ver3_is_empty := PJI_FM_PLAN_MAINT.CHECK_VER3_NOT_EMPTY ( p_online => 'T');
5276   IF (l_ver3_is_empty = 'T') THEN
5277     print_time ( ' ver3 is empty, nothing to process. Returning. ');
5278     RETURN;
5279   END IF;
5280 
5281   --
5282   -- Get currency conversion rules, global currency codes and gl maus.
5283   --
5284   PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
5285     x_currency_conversion_rule => g_currency_conversion_rule
5286   , x_prorating_format         => g_prorating_format
5287   , x_global1_currency_code    => g_global1_currency_code
5288   , x_global2_currency_code    => g_global2_currency_code
5289   , x_global1_currency_mau     => g_global1_currency_mau
5290   , x_global2_currency_mau     => g_global2_currency_mau ) ;
5291 
5292   --
5293   -- Todo: Remove hardcoded currency codes after making code work if one of the global currencies is null.
5294   --
5295   SELECT DECODE(g_global1_currency_code, NULL, 'USD', g_global1_currency_code)
5296   INTO g_global1_currency_code
5297   FROM DUAL;
5298 
5299   SELECT DECODE(g_global2_currency_code, NULL, 'USD', g_global2_currency_code)
5300   INTO g_global2_currency_code
5301   FROM DUAL;
5302 
5303   print_time(' Got global currency settings. ');
5304   print_time(' g_currency_conversion_rule ' || g_currency_conversion_rule || ' g_prorating_format ' ||  g_prorating_format );
5305   print_time(' g_global1_currency_code ' || g_global1_currency_code || ' g_global1_currency_code ' || g_global1_currency_code );
5306   print_time(' g_global1_currency_mau ' || g_global1_currency_mau || ' g_global1_currency_mau ' || g_global1_currency_mau ) ;
5307 
5308 
5309   --
5310   -- IF GL1 and GL2 currencies are not setup correctly, then return.
5311   --
5312   IF (g_global1_currency_code IS NULL AND g_global2_currency_code IS NULL) THEN
5313     print_time('Both global 1 currency and global 2 currency are not defined. Returning from conversion to Global currencies.');
5314     -- MARK_DANGLING_PLAN_VERSIONS;  -- !!! Todo. Mark dangling versions.
5315     RETURN;
5316   END IF;
5317 
5318   --
5319   -- Delete Smart Slice.
5320   --
5321   PJI_FM_XBS_ACCUM_MAINT.DELETE_SMART_SLICE (
5322       p_online_flag          => 'Y'
5323     , x_return_status        => l_return_status ) ;
5324   print_time(' Deleted smart slice rollups. # rows deleted is.. ' || SQL%ROWCOUNT);
5325 
5326 
5327   --
5328   -- Gets exchange rates for entries in fact for all those rows in fact and pjp1 based on
5329   --  if the currency code is same as functional currency code. Rates are based on start/end
5330   --  dates based on plan amt conversion. For non time phased amounts, it is based on
5331   --  start end dates for that period.
5332   --
5333   GET_GLOBAL_EXCHANGE_RATES;
5334   print_time(' Got exchange rates for global currencies. ');
5335 
5336 
5337   --
5338 -- Inserts rows present in fact and pjp1 into pjp1 with inserted row worker id as
5339 --  g_worker_id.
5340 -- Logic is as follows:
5341 --
5342 --  SQL1: Reverse primary slice from fact for only those rows whose crti can be updated.
5343 --  SQL2: Insert pri slice LNN from fact where CRTI can simply be updated.
5344 --  SQL3: Insert GL1/2 currency record into pjp1 from fact whose crti cannot be updated
5345 --          (meaning, whose func curr <> gl1, gl2).
5346 --
5347 --  SQL4: Insert primary slice from pjp0 for only those rows whose crti cannot be updated.
5348 --  SQL5: Insert pri slice LNN from pjp0 whose CRTI can simply be updated with updated crti.
5349 --  SQL6: Insert GL1/2 currency record into pjp1 from pjp0 whose crti cannot be updated
5350 --          (meaning, whose func curr <> gl1, gl2).
5351 --
5352   CREATE_GL1_GL2_CURR_RCDS;
5353   print_time(' Converted functional currency amounts to global 1, 2 currency amounts. ');
5354 
5355 
5356   --
5357   -- Proration to other calendars.
5358   --
5359   PRORATE_TO_ALL_CALENDARS;
5360   print_time(' Prorated to all other calendars. ');
5361 
5362 
5363   --
5364   -- RBS rollup.
5365   --
5366   PJI_FM_PLAN_MAINT_T_PVT.ROLLUP_FPR_RBS_T_SLICE;
5367   print_time(' Created RBS rollup slice. ');
5368 
5369 
5370   --
5371   -- WBS rollup.
5372   --
5373   PJI_FM_PLAN_MAINT_T_PVT.CREATE_WBSRLP;
5374   print_time(' Created WBS rollup slice. ');
5375 
5376 
5377   --
5378   -- Calendar rollup.
5379   --
5380   PJI_FM_PLAN_CAL_RLPS_T.CREATE_FP_PA_PRI_ROLLUP;
5381   print_time(' PA calendar rollup. ');
5382 
5383   PJI_FM_PLAN_CAL_RLPS_T.CREATE_FP_GL_PRI_ROLLUP;
5384   print_time(' GL calendar rollup. ');
5385 
5386   PJI_FM_PLAN_CAL_RLPS_T.CREATE_FP_ALLT_PRI_AGGREGATE;
5387   print_time(' All time slice rollup. ');
5388 
5389   PJI_FM_PLAN_CAL_RLPS_T.CREATE_FP_ENT_ROLLUP;
5390   print_time(' Enterprise calendar rollup. ');
5391 
5392   --
5393   -- Mark pji summarized flag in pa budget versions table.
5394   -- If rates are missing or GL1/GL2 definitions are missing, then mark those plans as 'P'
5395   --
5396   MARK_DANGLING_PLAN_VERSIONS;
5397 
5398   print_time('........CONV_TO_GLOBAL_CURRENCIES: End. ' );
5399 
5400 EXCEPTION
5401   WHEN OTHERS THEN
5402     print_time('........CONV_TO_GLOBAL_CURRENCIES: Exception ' || sqlerrm );
5403     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5404                              p_procedure_name => 'CONV_TO_GLOBAL_CURRENCIES');
5405     RAISE;
5406 END;
5407 */
5408 
5409 
5410 PROCEDURE DELETE_DNGLRATE_PLNVER_DATA IS
5411 BEGIN
5412 
5413   DELETE FROM pji_fp_aggr_pjp1_t
5414   WHERE plan_version_id IN
5415     (
5416           SELECT DISTINCT plan_version_id
5417           FROM   pji_fp_aggr_pjp1_t
5418           WHERE  worker_id = g_worker_id
5419         AND  rate_dangling_flag IS NOT NULL )
5420     AND worker_id = g_worker_id;
5421 
5422 EXCEPTION
5423   WHEN OTHERS THEN
5424     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
5425                              p_procedure_name => 'DELETE_DNGLRATE_PLNVER_DATA');
5426     RAISE;
5427 END;
5428 
5429 
5430 /*
5431 --
5432 -- Inserts rows present in fact and pjp1 into pjp1 with inserted row worker id as
5433 --  g_worker_id.
5434 -- Logic is as follows:
5435 --
5436 --  SQL1: Reverse primary slice from fact for only those rows whose crti can be updated.
5437 --  SQL2: Insert pri slice LNN from fact where CRTI can simply be updated.
5438 --  SQL3: Insert GL1/2 currency record into pjp1 from fact whose crti cannot be updated
5439 --          (meaning, whose func curr <> gl1, gl2).
5440 --
5441 --  SQL4: Insert primary slice from pjp0 for only those rows whose crti cannot be updated.
5442 --  SQL5: Insert pri slice LNN from pjp0 whose CRTI can simply be updated with updated crti.
5443 --  SQL6: Insert GL1/2 currency record into pjp1 from pjp0 whose crti cannot be updated
5444 --          (meaning, whose func curr <> gl1, gl2).
5445 --
5446 PROCEDURE CREATE_GL1_GL2_CURR_RCDS IS
5447 BEGIN
5448 
5449   print_time('........CREATE_GL1_GL2_CURR_RCDS: Begin. ' );
5450 
5451 
5452 
5453     INSERT INTO PJI_FP_AGGR_PJP1_T
5454     (
5455          WORKER_ID
5456        , PROJECT_ID
5457        , PROJECT_ORG_ID
5458        , PROJECT_ORGANIZATION_ID
5459        , PROJECT_ELEMENT_ID
5460        , TIME_ID
5461        , PERIOD_TYPE_ID
5462        , CALENDAR_TYPE
5463        , RBS_AGGR_LEVEL
5464        , WBS_ROLLUP_FLAG
5465        , PRG_ROLLUP_FLAG
5466        , CURR_RECORD_TYPE_ID
5467        , CURRENCY_CODE
5468        , RBS_ELEMENT_ID
5469        , RBS_VERSION_ID
5470        , PLAN_VERSION_ID
5471        , PLAN_TYPE_ID
5472        , RAW_COST
5473        , BRDN_COST
5474        , REVENUE
5475        , BILL_RAW_COST
5476        , BILL_BRDN_COST
5477        , BILL_LABOR_RAW_COST
5478        , BILL_LABOR_BRDN_COST
5479        , BILL_LABOR_HRS
5480        , EQUIPMENT_RAW_COST
5481        , EQUIPMENT_BRDN_COST
5482        , CAPITALIZABLE_RAW_COST
5483        , CAPITALIZABLE_BRDN_COST
5484        , LABOR_RAW_COST
5485        , LABOR_BRDN_COST
5486        , LABOR_HRS
5487        , LABOR_REVENUE
5488        , EQUIPMENT_HOURS
5489        , BILLABLE_EQUIPMENT_HOURS
5490        , SUP_INV_COMMITTED_COST
5491        , PO_COMMITTED_COST
5492        , PR_COMMITTED_COST
5493        , OTH_COMMITTED_COST
5494        , ACT_LABOR_HRS
5495            , ACT_EQUIP_HRS
5496            , ACT_LABOR_BRDN_COST
5497            , ACT_EQUIP_BRDN_COST
5498            , ACT_BRDN_COST
5499            , ACT_RAW_COST
5500            , ACT_REVENUE
5501          , ACT_LABOR_RAW_COST
5502          , ACT_EQUIP_RAW_COST
5503            , ETC_LABOR_HRS
5504            , ETC_EQUIP_HRS
5505            , ETC_LABOR_BRDN_COST
5506            , ETC_EQUIP_BRDN_COST
5507            , ETC_BRDN_COST
5508          , ETC_RAW_COST
5509          , ETC_LABOR_RAW_COST
5510          , ETC_EQUIP_RAW_COST
5511        , CUSTOM1
5512        , CUSTOM2
5513        , CUSTOM3
5514        , CUSTOM4
5515        , CUSTOM5
5516        , CUSTOM6
5517        , CUSTOM7
5518        , CUSTOM8
5519        , CUSTOM9
5520        , CUSTOM10
5521        , CUSTOM11
5522        , CUSTOM12
5523        , CUSTOM13
5524        , CUSTOM14
5525        , CUSTOM15
5526        , LINE_TYPE
5527        , RATE_DANGLING_FLAG
5528        , TIME_DANGLING_FLAG
5529        -- , START_DATE
5530        -- , END_DATE
5531        , PRG_LEVEL
5532        , PLAN_TYPE_CODE    -- 4471527
5533            )
5534           SELECT
5535          g_worker_id WORKER_ID
5536        , PROJECT_ID
5537        , PROJECT_ORG_ID
5538        , PROJECT_ORGANIZATION_ID
5539        , PROJECT_ELEMENT_ID
5540        , TIME_ID
5541        , PERIOD_TYPE_ID
5542        , CALENDAR_TYPE
5543        , RBS_AGGR_LEVEL
5544        , WBS_ROLLUP_FLAG
5545        , PRG_ROLLUP_FLAG
5546        , SUM(CURR_RECORD_TYPE_ID)
5547        , CURRENCY_CODE
5548        , RBS_ELEMENT_ID
5549        , RBS_VERSION_ID
5550        , PLAN_VERSION_ID
5551        , PLAN_TYPE_ID
5552        , max(RAW_COST)
5553        , max(BRDN_COST)
5554        , max(REVENUE)
5555        , max(BILL_RAW_COST)
5556        , max(BILL_BRDN_COST)
5557        , max(BILL_LABOR_RAW_COST)
5558        , max(BILL_LABOR_BRDN_COST)
5559        , max(BILL_LABOR_HRS)
5560        , max(EQUIPMENT_RAW_COST)
5561        , max(EQUIPMENT_BRDN_COST)
5562        , max(CAPITALIZABLE_RAW_COST)
5563        , max(CAPITALIZABLE_BRDN_COST)
5564        , max(LABOR_RAW_COST)
5565        , max(LABOR_BRDN_COST)
5566        , max(LABOR_HRS)
5567        , max(LABOR_REVENUE)
5568        , max(EQUIPMENT_HOURS)
5569        , max(BILLABLE_EQUIPMENT_HOURS)
5570        , max(SUP_INV_COMMITTED_COST)
5571        , max(PO_COMMITTED_COST)
5572        , max(PR_COMMITTED_COST)
5573        , max(OTH_COMMITTED_COST)
5574        , max(ACT_LABOR_HRS)
5575            , max(ACT_EQUIP_HRS)
5576            , max(ACT_LABOR_BRDN_COST)
5577            , max(ACT_EQUIP_BRDN_COST)
5578            , max(ACT_BRDN_COST)
5579            , max(ACT_RAW_COST)
5580            , max(ACT_REVENUE)
5581          , max(ACT_LABOR_RAW_COST)
5582          , max(ACT_EQUIP_RAW_COST)
5583            , max(ETC_LABOR_HRS)
5584            , max(ETC_EQUIP_HRS)
5585            , max(ETC_LABOR_BRDN_COST)
5586            , max(ETC_EQUIP_BRDN_COST)
5587            , max(ETC_BRDN_COST)
5588          , max(ETC_RAW_COST)
5589          , max(ETC_LABOR_RAW_COST)
5590          , max(ETC_EQUIP_RAW_COST)
5591        , max(CUSTOM1)
5592        , max(CUSTOM2)
5593        , max(CUSTOM3)
5594        , max(CUSTOM4)
5595        , max(CUSTOM5)
5596        , max(CUSTOM6)
5597        , max(CUSTOM7)
5598        , max(CUSTOM8)
5599        , max(CUSTOM9)
5600        , max(CUSTOM10)
5601        , max(CUSTOM11)
5602        , max(CUSTOM12)
5603        , max(CUSTOM13)
5604        , max(CUSTOM14)
5605        , max(CUSTOM15)
5606        , 'CF' LINE_TYPE
5607        , RATE_DANGLING_FLAG
5608        , TIME_DANGLING_FLAG
5609        -- , START_DATE
5610        -- , END_DATE
5611        , g_default_prg_level PRG_LEVEL
5612        , PLAN_TYPE_CODE      -- 4471527
5613            FROM
5614            (
5615            SELECT    -- SQL1: Reversal of LNN Slice data in fact
5616          fact.PROJECT_ID
5617        , fact.PROJECT_ORG_ID
5618        , fact.PROJECT_ORGANIZATION_ID
5619        , fact.PROJECT_ELEMENT_ID
5620        , fact.TIME_ID
5621        , fact.PERIOD_TYPE_ID
5622        , fact.CALENDAR_TYPE
5623        , fact.RBS_AGGR_LEVEL
5624        , fact.WBS_ROLLUP_FLAG
5625        , fact.PRG_ROLLUP_FLAG
5626        , fact.CURR_RECORD_TYPE_ID
5627        , fact.CURRENCY_CODE
5628        , fact.RBS_ELEMENT_ID
5629        , fact.RBS_VERSION_ID
5630        , fact.PLAN_VERSION_ID
5631        , fact.PLAN_TYPE_ID
5632        , - RAW_COST RAW_COST
5633        , - BRDN_COST BRDN_COST
5634        , - REVENUE REVENUE
5635        , - BILL_RAW_COST BILL_RAW_COST
5636        , - BILL_BRDN_COST BILL_BRDN_COST
5637        , - BILL_LABOR_RAW_COST BILL_LABOR_RAW_COST
5638        , - BILL_LABOR_BRDN_COST BILL_LABOR_BRDN_COST
5639        , - BILL_LABOR_HRS BILL_LABOR_HRS
5640        , - EQUIPMENT_RAW_COST EQUIPMENT_RAW_COST
5641        , - EQUIPMENT_BRDN_COST EQUIPMENT_BRDN_COST
5642        , - CAPITALIZABLE_RAW_COST CAPITALIZABLE_RAW_COST
5643        , - CAPITALIZABLE_BRDN_COST CAPITALIZABLE_BRDN_COST
5644        , - LABOR_RAW_COST LABOR_RAW_COST
5645        , - LABOR_BRDN_COST LABOR_BRDN_COST
5646        , - LABOR_HRS LABOR_HRS
5647        , - LABOR_REVENUE LABOR_REVENUE
5648        , - EQUIPMENT_HOURS EQUIPMENT_HOURS
5649        , - BILLABLE_EQUIPMENT_HOURS BILLABLE_EQUIPMENT_HOURS
5650        , - SUP_INV_COMMITTED_COST SUP_INV_COMMITTED_COST
5651        , - PO_COMMITTED_COST PO_COMMITTED_COST
5652        , - PR_COMMITTED_COST PR_COMMITTED_COST
5653        , - OTH_COMMITTED_COST OTH_COMMITTED_COST
5654        , - ACT_LABOR_HRS ACT_LABOR_HRS
5655            , - ACT_EQUIP_HRS ACT_EQUIP_HRS
5656            , - ACT_LABOR_BRDN_COST ACT_LABOR_BRDN_COST
5657            , - ACT_EQUIP_BRDN_COST ACT_EQUIP_BRDN_COST
5658            , - ACT_BRDN_COST ACT_BRDN_COST
5659            , - ACT_RAW_COST ACT_RAW_COST
5660            , - ACT_REVENUE ACT_REVENUE
5661          , - ACT_LABOR_RAW_COST ACT_LABOR_RAW_COST
5662          , - ACT_EQUIP_RAW_COST ACT_EQUIP_RAW_COST
5663            , - ETC_LABOR_HRS ETC_LABOR_HRS
5664            , - ETC_EQUIP_HRS ETC_EQUIP_HRS
5665            , - ETC_LABOR_BRDN_COST ETC_LABOR_BRDN_COST
5666            , - ETC_EQUIP_BRDN_COST ETC_EQUIP_BRDN_COST
5667            , - ETC_BRDN_COST ETC_BRDN_COST
5668          , - ETC_RAW_COST ETC_RAW_COST
5669          , - ETC_LABOR_RAW_COST ETC_LABOR_RAW_COST
5670          , - ETC_EQUIP_RAW_COST ETC_EQUIP_RAW_COST
5671        , - CUSTOM1 CUSTOM1
5672        , - CUSTOM2 CUSTOM2
5673        , - CUSTOM3 CUSTOM3
5674        , - CUSTOM4 CUSTOM4
5675        , - CUSTOM5 CUSTOM5
5676        , - CUSTOM6 CUSTOM6
5677        , - CUSTOM7 CUSTOM7
5678        , - CUSTOM8 CUSTOM8
5679        , - CUSTOM9 CUSTOM9
5680        , - CUSTOM10 CUSTOM10
5681        , - CUSTOM11 CUSTOM11
5682        , - CUSTOM12 CUSTOM12
5683        , - CUSTOM13 CUSTOM13
5684        , - CUSTOM14 CUSTOM14
5685        , - CUSTOM15 CUSTOM15
5686        -- , 'OF' LINE_TYPE
5687        , null RATE_DANGLING_FLAG
5688        , null TIME_DANGLING_FLAG
5689        -- , 0 prg_level
5690           , fact.plan_type_code plan_type_code  -- 4471527
5691            FROM pji_fp_xbs_accum_f fact
5692               , pji_fm_extr_plnver3_t ver3
5693            WHERE 1=1
5694                  AND rbs_aggr_level = g_lowest_level
5695                  AND wbs_rollup_flag = 'N'
5696                  AND prg_rollup_flag = 'N'
5697                  AND fact.project_id = ver3.project_id
5698                  AND fact.plan_version_id = ver3.plan_version_id
5699                            AND fact.plan_type_code = ver3.plan_type_code   --4471527
5700              AND fact.currency_code IN (g_global1_currency_code, g_global2_currency_code)
5701     UNION ALL
5702     SELECT   --  SQL4: Insert GL1/2 currency record into pjp1 from pjp0 where func curr <> gl1, gl2.
5703        fact.PROJECT_ID
5704      , PROJECT_ORG_ID
5705      , PROJECT_ORGANIZATION_ID
5706      , PROJECT_ELEMENT_ID
5707      , fact.TIME_ID
5708      , PERIOD_TYPE_ID
5709      , CALENDAR_TYPE
5710      , RBS_AGGR_LEVEL
5711      , WBS_ROLLUP_FLAG
5712      , PRG_ROLLUP_FLAG
5713      , DECODE ( curr.curr_code
5714               , g_global1_currency_code, 2 + DECODE ( g_global1_currency_code, g_global2_currency_code, 1, 0)
5715               , g_global2_currency_code, 1 ) CURR_RECORD_TYPE_ID
5716      , curr.curr_code CURRENCY_CODE
5717      , RBS_ELEMENT_ID
5718      , RBS_VERSION_ID
5719      , fact.PLAN_VERSION_ID
5720      , fact.PLAN_TYPE_ID
5721      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *RAW_COST/curr.mau )*curr.mau  RAW_COST -- curr.mau  -- rates.mau   rates.mau2
5722      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BRDN_COST/curr.mau )*curr.mau   BRDN_COST
5723      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *REVENUE/curr.mau )*curr.mau   REVENUE
5724      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *BILL_RAW_COST/curr.mau )*curr.mau   BILL_RAW_COST
5725      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *BILL_BRDN_COST/curr.mau )*curr.mau   BILL_BRDN_COST
5726      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BILL_LABOR_RAW_COST/curr.mau )*curr.mau    BILL_LABOR_RAW_COST
5727      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BILL_LABOR_BRDN_COST/curr.mau )*curr.mau   BILL_LABOR_BRDN_COST
5728      , BILL_LABOR_HRS
5729      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * EQUIPMENT_RAW_COST/curr.mau )*curr.mau    EQUIPMENT_RAW_COST
5730      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * EQUIPMENT_BRDN_COST/curr.mau )*curr.mau   EQUIPMENT_BRDN_COST
5731      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * CAPITALIZABLE_RAW_COST/curr.mau )*curr.mau   CAPITALIZABLE_RAW_COST
5732      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * CAPITALIZABLE_BRDN_COST/curr.mau )*curr.mau   CAPITALIZABLE_BRDN_COST
5733      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_RAW_COST/curr.mau )*curr.mau   LABOR_RAW_COST
5734      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_BRDN_COST/curr.mau )*curr.mau   LABOR_BRDN_COST
5735      , LABOR_HRS
5736      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_REVENUE/curr.mau )*curr.mau   LABOR_REVENUE
5737      , EQUIPMENT_HOURS
5738      , BILLABLE_EQUIPMENT_HOURS
5739      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * SUP_INV_COMMITTED_COST/curr.mau )*curr.mau   SUP_INV_COMMITTED_COST
5740      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * PO_COMMITTED_COST/curr.mau )*curr.mau    PO_COMMITTED_COST
5741      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * PR_COMMITTED_COST/curr.mau )*curr.mau    PR_COMMITTED_COST
5742      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * OTH_COMMITTED_COST/curr.mau )*curr.mau   OTH_COMMITTED_COST
5743      , ACT_LABOR_HRS
5744      , ACT_EQUIP_HRS
5745      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_LABOR_BRDN_COST/curr.mau )*curr.mau    ACT_LABOR_BRDN_COST
5746      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_EQUIP_BRDN_COST/curr.mau )*curr.mau    ACT_EQUIP_BRDN_COST
5747      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_BRDN_COST/curr.mau )*curr.mau    ACT_BRDN_COST
5748      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_RAW_COST/curr.mau )*curr.mau    ACT_RAW_COST
5749      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_REVENUE/curr.mau )*curr.mau   ACT_REVENUE
5750      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_LABOR_RAW_COST/curr.mau )*curr.mau    ACT_LABOR_RAW_COST
5751      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_EQUIP_RAW_COST/curr.mau )*curr.mau    ACT_EQUIP_RAW_COST
5752      , ETC_LABOR_HRS
5753      , ETC_EQUIP_HRS
5754      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_LABOR_BRDN_COST/curr.mau )*curr.mau   ETC_LABOR_BRDN_COST
5755      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_EQUIP_BRDN_COST/curr.mau )*curr.mau   ETC_EQUIP_BRDN_COST
5756      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_BRDN_COST/curr.mau )*curr.mau    ETC_BRDN_COST
5757      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_RAW_COST/curr.mau )*curr.mau    ETC_RAW_COST
5758      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_LABOR_RAW_COST/curr.mau )*curr.mau   ETC_LABOR_RAW_COST
5759      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_EQUIP_RAW_COST/curr.mau )*curr.mau   ETC_EQUIP_RAW_COST
5760      , CUSTOM1
5761      , CUSTOM2
5762      , CUSTOM3
5763      , CUSTOM4
5764      , CUSTOM5
5765      , CUSTOM6
5766      , CUSTOM7
5767      , CUSTOM8
5768      , CUSTOM9
5769      , CUSTOM10
5770      , CUSTOM11
5771      , CUSTOM12
5772      , CUSTOM13
5773      , CUSTOM14
5774      , CUSTOM15
5775          -- , 'OG' LINE_TYPE
5776      , DECODE ( DECODE (curr.curr_code
5777                              , g_global1_currency_code, rates.rate
5778                              , g_global2_currency_code, rates.rate2 )
5779                           , NULL, curr.curr_code
5780                           , NULL) rate_dangling_flag
5781        , null TIME_DANGLING_FLAG
5782        -- , 0 prg_level
5783       , fact.plan_type_code  plan_type_code      -- 4471527
5784   FROM pji_fp_aggr_pjp1_t fact
5785      , pa_projects_all ppa
5786          , ( SELECT g_global1_currency_code curr_code, 0.01 mau FROM DUAL
5787              UNION
5788                  SELECT g_global2_currency_code curr_code, 0.01 mau FROM DUAL
5789            ) curr
5790    , PJI_FM_AGGR_DLY_RATES_T    rates
5791    , ( SELECT cal_period_id period_id, start_date, end_date FROM pji_time_cal_period_v
5792        UNION ALL
5793        SELECT ent_period_id, start_date, end_date FROM pji_time_ent_period_v
5794          ) dates
5795    , pji_fm_extr_plnver3_t  ver
5796   WHERE 1=1
5797    AND fact.project_id = ver.project_id -- new
5798    AND fact.plan_version_id = ver.plan_version_id
5799    AND fact.plan_type_code = ver.plan_type_code   -- 4471527
5800    AND ver.wp_flag = 'N'
5801    AND ver.baselined_flag = 'Y'
5802    AND fact.project_id = ppa.project_id
5803    AND fact.time_id = dates.period_id
5804    AND fact.worker_id = -1
5805    AND ( ppa.projfunc_currency_code <> g_global1_currency_code
5806           OR ppa.projfunc_currency_code <> g_global2_currency_code )
5807    AND BITAND ( fact.curr_record_type_id, 4) = 4   -- 00100: Converting from Proj Func Currency.
5808    AND fact.currency_code = ppa.projfunc_currency_code
5809    AND rates.time_id = fact.time_id
5810    AND rates.pf_currency_code = ppa.projfunc_currency_code
5811    AND fact.calendar_type IN (g_gl_cal_str, g_pa_cal_str)
5812   UNION ALL
5813     SELECT   --  SQL3: Insert GL1/2 currency record into pjp1 from fact where func curr <> gl1, gl2.
5814        fact.PROJECT_ID
5815      , PROJECT_ORG_ID
5816      , PROJECT_ORGANIZATION_ID
5817      -- , PARTITION_ID
5818      , PROJECT_ELEMENT_ID
5819      , fact.TIME_ID
5820      , PERIOD_TYPE_ID
5821      , CALENDAR_TYPE
5822      , RBS_AGGR_LEVEL
5823      , WBS_ROLLUP_FLAG
5824      , PRG_ROLLUP_FLAG
5825      , DECODE ( curr.curr_code
5826               , g_global1_currency_code, 2 + DECODE ( g_global1_currency_code, g_global2_currency_code, 1, 0)
5827               , g_global2_currency_code, 1 ) CURR_RECORD_TYPE_ID
5828      , curr.curr_code CURRENCY_CODE
5829      , RBS_ELEMENT_ID
5830      , RBS_VERSION_ID
5831      , fact.PLAN_VERSION_ID
5832      , fact.PLAN_TYPE_ID
5833      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *RAW_COST/curr.mau )*curr.mau  RAW_COST -- curr.mau  -- rates.mau   rates.mau2
5834      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BRDN_COST/curr.mau )*curr.mau   BRDN_COST
5835      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *REVENUE/curr.mau )*curr.mau   REVENUE
5836      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *BILL_RAW_COST/curr.mau )*curr.mau   BILL_RAW_COST
5837      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 )  *BILL_BRDN_COST/curr.mau )*curr.mau   BILL_BRDN_COST
5838      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BILL_LABOR_RAW_COST/curr.mau )*curr.mau    BILL_LABOR_RAW_COST
5839      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) *BILL_LABOR_BRDN_COST/curr.mau )*curr.mau   BILL_LABOR_BRDN_COST
5840      , BILL_LABOR_HRS
5841      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * EQUIPMENT_RAW_COST/curr.mau )*curr.mau    EQUIPMENT_RAW_COST
5842      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * EQUIPMENT_BRDN_COST/curr.mau )*curr.mau   EQUIPMENT_BRDN_COST
5843      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * CAPITALIZABLE_RAW_COST/curr.mau )*curr.mau   CAPITALIZABLE_RAW_COST
5844      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * CAPITALIZABLE_BRDN_COST/curr.mau )*curr.mau   CAPITALIZABLE_BRDN_COST
5845      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_RAW_COST/curr.mau )*curr.mau   LABOR_RAW_COST
5846      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_BRDN_COST/curr.mau )*curr.mau   LABOR_BRDN_COST
5847      , LABOR_HRS
5848      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * LABOR_REVENUE/curr.mau )*curr.mau   LABOR_REVENUE
5849      , EQUIPMENT_HOURS
5850      , BILLABLE_EQUIPMENT_HOURS
5851      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * SUP_INV_COMMITTED_COST/curr.mau )*curr.mau   SUP_INV_COMMITTED_COST
5852      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * PO_COMMITTED_COST/curr.mau )*curr.mau    PO_COMMITTED_COST
5853      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * PR_COMMITTED_COST/curr.mau )*curr.mau    PR_COMMITTED_COST
5854      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * OTH_COMMITTED_COST/curr.mau )*curr.mau   OTH_COMMITTED_COST
5855      , ACT_LABOR_HRS
5856      , ACT_EQUIP_HRS
5857      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_LABOR_BRDN_COST/curr.mau )*curr.mau    ACT_LABOR_BRDN_COST
5858      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_EQUIP_BRDN_COST/curr.mau )*curr.mau    ACT_EQUIP_BRDN_COST
5859      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_BRDN_COST/curr.mau )*curr.mau    ACT_BRDN_COST
5860      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_RAW_COST/curr.mau )*curr.mau    ACT_RAW_COST
5861      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_REVENUE/curr.mau )*curr.mau   ACT_REVENUE
5862      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_LABOR_RAW_COST/curr.mau )*curr.mau    ACT_LABOR_RAW_COST
5863      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ACT_EQUIP_RAW_COST/curr.mau )*curr.mau    ACT_EQUIP_RAW_COST
5864      , ETC_LABOR_HRS
5865      , ETC_EQUIP_HRS
5866      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_LABOR_BRDN_COST/curr.mau )*curr.mau   ETC_LABOR_BRDN_COST
5867      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_EQUIP_BRDN_COST/curr.mau )*curr.mau   ETC_EQUIP_BRDN_COST
5868      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_BRDN_COST/curr.mau )*curr.mau    ETC_BRDN_COST
5869      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_RAW_COST/curr.mau )*curr.mau    ETC_RAW_COST
5870      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_LABOR_RAW_COST/curr.mau )*curr.mau   ETC_LABOR_RAW_COST
5871      , ROUND(decode (curr.curr_code, g_global1_currency_code, rates.rate, g_global2_currency_code, rates.rate2 ) * ETC_EQUIP_RAW_COST/curr.mau )*curr.mau   ETC_EQUIP_RAW_COST
5872      , CUSTOM1
5873      , CUSTOM2
5874      , CUSTOM3
5875      , CUSTOM4
5876      , CUSTOM5
5877      , CUSTOM6
5878      , CUSTOM7
5879      , CUSTOM8
5880      , CUSTOM9
5881      , CUSTOM10
5882      , CUSTOM11
5883      , CUSTOM12
5884      , CUSTOM13
5885      , CUSTOM14
5886      , CUSTOM15
5887          -- , 'OG' LINE_TYPE
5888      , DECODE ( DECODE (curr.curr_code
5889                              , g_global1_currency_code, rates.rate
5890                              , g_global2_currency_code, rates.rate2 )
5891                           , NULL, curr.curr_code
5892                           , NULL) rate_dangling_flag
5893        , null TIME_DANGLING_FLAG
5894        -- , 0 prg_level
5895        , fact.plan_type_code plan_type_code    -- 4471527
5896   FROM pji_fp_xbs_accum_f fact
5897      , pa_projects_all ppa
5898          , ( SELECT g_global1_currency_code curr_code, 0.01 mau FROM DUAL
5899              UNION
5900                  SELECT g_global2_currency_code curr_code, 0.01 mau FROM DUAL
5901            ) curr
5902    , PJI_FM_AGGR_DLY_RATES_T    rates
5903    , ( SELECT cal_period_id period_id, start_date, end_date FROM pji_time_cal_period_v
5904        UNION ALL
5905        SELECT ent_period_id, start_date, end_date FROM pji_time_ent_period_v
5906          ) dates
5907    , pji_fm_extr_plnver3_t  ver
5908   WHERE 1=1
5909    AND fact.project_id = ver.project_id -- new
5910    AND fact.plan_version_id = ver.plan_version_id
5911    ANd fact.plan_type_code = ver.plan_type_code   -- 4471527
5912    AND ver.wp_flag = 'N'
5913    AND ver.baselined_flag = 'Y'
5914    AND fact.project_id = ppa.project_id
5915    AND fact.time_id = dates.period_id
5916    AND ( ppa.projfunc_currency_code <> g_global1_currency_code
5917           OR ppa.projfunc_currency_code <> g_global2_currency_code )
5918       AND BITAND ( fact.curr_record_type_id, 4) = 4   -- 00100: Converting from Proj Func Currency.
5919       AND fact.currency_code = ppa.projfunc_currency_code
5920           AND rates.time_id = fact.time_id
5921           AND rates.pf_currency_code = ppa.projfunc_currency_code
5922       AND fact.calendar_type IN (g_gl_cal_str, g_pa_cal_str)
5923           AND fact.rbs_aggr_level = g_lowest_level
5924           AND fact.wbs_rollup_flag = 'N'
5925           AND fact.prg_rollup_flag = 'N'
5926  UNION ALL
5927            SELECT    --  SQL 5: Insert pri slice LNN from pjp0 where CRTI can simply be updated.
5928          fact.PROJECT_ID
5929        , PROJECT_ORG_ID
5930        , PROJECT_ORGANIZATION_ID
5931        , PROJECT_ELEMENT_ID
5932        , TIME_ID
5933        , PERIOD_TYPE_ID
5934        , CALENDAR_TYPE
5935        , RBS_AGGR_LEVEL
5936        , WBS_ROLLUP_FLAG
5937        , PRG_ROLLUP_FLAG
5938        , CURR_RECORD_TYPE_ID
5939                           + DECODE (currency_code, g_global1_currency_code
5940                                                     , DECODE(BITAND(fact.curr_record_type_id, 2), 0, 2, 0)
5941                                                                 , 0) -- 000.000.010 = 2
5942                           + DECODE (currency_code, g_global2_currency_code
5943                                                     , DECODE(BITAND(fact.curr_record_type_id, 1), 0, 1, 0)
5944                                                                 , 0) -- 000.000.010 = 2
5945        , CURRENCY_CODE
5946        , RBS_ELEMENT_ID
5947        , RBS_VERSION_ID
5948        , fact.PLAN_VERSION_ID
5949        , fact.PLAN_TYPE_ID
5950        , RAW_COST
5951        , BRDN_COST
5952        , REVENUE
5953        , BILL_RAW_COST
5954        , BILL_BRDN_COST
5955        , BILL_LABOR_RAW_COST
5956        , BILL_LABOR_BRDN_COST
5957        , BILL_LABOR_HRS
5958        , EQUIPMENT_RAW_COST
5959        , EQUIPMENT_BRDN_COST
5960        , CAPITALIZABLE_RAW_COST
5961        , CAPITALIZABLE_BRDN_COST
5962        , LABOR_RAW_COST
5963        , LABOR_BRDN_COST
5964        , LABOR_HRS
5965        , LABOR_REVENUE
5966        , EQUIPMENT_HOURS
5967        , BILLABLE_EQUIPMENT_HOURS
5968        , SUP_INV_COMMITTED_COST
5969        , PO_COMMITTED_COST
5970        , PR_COMMITTED_COST
5971        , OTH_COMMITTED_COST
5972        , ACT_LABOR_HRS
5973            , ACT_EQUIP_HRS
5974            , ACT_LABOR_BRDN_COST
5975            , ACT_EQUIP_BRDN_COST
5976            , ACT_BRDN_COST
5977            , ACT_RAW_COST
5978            , ACT_REVENUE
5979          , ACT_LABOR_RAW_COST
5980          , ACT_EQUIP_RAW_COST
5981            , ETC_LABOR_HRS
5982            , ETC_EQUIP_HRS
5983            , ETC_LABOR_BRDN_COST
5984            , ETC_EQUIP_BRDN_COST
5985            , ETC_BRDN_COST
5986          , ETC_RAW_COST
5987          , ETC_LABOR_RAW_COST
5988          , ETC_EQUIP_RAW_COST
5989        , CUSTOM1
5990        , CUSTOM2
5991        , CUSTOM3
5992        , CUSTOM4
5993        , CUSTOM5
5994        , CUSTOM6
5995        , CUSTOM7
5996        , CUSTOM8
5997        , CUSTOM9
5998        , CUSTOM10
5999        , CUSTOM11
6000        , CUSTOM12
6001        , CUSTOM13
6002        , CUSTOM14
6003        , CUSTOM15
6004        -- , LINE_TYPE
6005        , fact.RATE_DANGLING_FLAG
6006        , fact.TIME_DANGLING_FLAG
6007        -- , 0
6008        , fact.plan_type_code plan_type_code   --  4471527
6009            FROM pji_fp_aggr_pjp1_t fact
6010               , pji_fm_extr_plnver3_t ver
6011            WHERE 1=1
6012                  AND fact.worker_id = -1
6013              AND fact.project_id = ver.project_id
6014                  AND fact.plan_version_id = ver.plan_version_id
6015                            ANd fact.plan_type_code = ver.plan_type_code   -- 4471527
6016                  AND rbs_aggr_level = g_lowest_level
6017                  AND wbs_rollup_flag = 'N'
6018                  AND prg_rollup_flag = 'N'
6019                  AND ver.wp_flag = 'N'
6020                  AND ver.baselined_flag = 'Y'
6021                  AND BITAND(curr_record_type_id, 7) IN (4, 5, 6)
6022                  AND currency_code in ( g_global1_currency_code, g_global2_currency_code )
6023            UNION ALL
6024            SELECT    --  SQL 5: Insert pri slice LNN from fact where CRTI can simply be updated.
6025          fact.PROJECT_ID
6026        , PROJECT_ORG_ID
6027        , PROJECT_ORGANIZATION_ID
6028        , PROJECT_ELEMENT_ID
6029        , TIME_ID
6030        , PERIOD_TYPE_ID
6031        , CALENDAR_TYPE
6032        , RBS_AGGR_LEVEL
6033        , WBS_ROLLUP_FLAG
6034        , PRG_ROLLUP_FLAG
6035        , CURR_RECORD_TYPE_ID
6036                           + DECODE (currency_code, g_global1_currency_code
6037                                                     , DECODE(BITAND(fact.curr_record_type_id, 2), 0, 2, 0)
6038                                                                 , 0) -- 000.000.010 = 2
6039                           + DECODE (currency_code, g_global2_currency_code
6040                                                     , DECODE(BITAND(fact.curr_record_type_id, 1), 0, 1, 0)
6041                                                                 , 0) -- 000.000.010 = 2
6042        , CURRENCY_CODE
6043        , RBS_ELEMENT_ID
6044        , RBS_VERSION_ID
6045        , fact.PLAN_VERSION_ID
6046        , fact.PLAN_TYPE_ID
6047        , RAW_COST
6048        , BRDN_COST
6049        , REVENUE
6050        , BILL_RAW_COST
6051        , BILL_BRDN_COST
6052        , BILL_LABOR_RAW_COST
6053        , BILL_LABOR_BRDN_COST
6054        , BILL_LABOR_HRS
6055        , EQUIPMENT_RAW_COST
6056        , EQUIPMENT_BRDN_COST
6057        , CAPITALIZABLE_RAW_COST
6058        , CAPITALIZABLE_BRDN_COST
6059        , LABOR_RAW_COST
6060        , LABOR_BRDN_COST
6061        , LABOR_HRS
6062        , LABOR_REVENUE
6063        , EQUIPMENT_HOURS
6064        , BILLABLE_EQUIPMENT_HOURS
6065        , SUP_INV_COMMITTED_COST
6066        , PO_COMMITTED_COST
6067        , PR_COMMITTED_COST
6068        , OTH_COMMITTED_COST
6069        , ACT_LABOR_HRS
6070            , ACT_EQUIP_HRS
6071            , ACT_LABOR_BRDN_COST
6072            , ACT_EQUIP_BRDN_COST
6073            , ACT_BRDN_COST
6074            , ACT_RAW_COST
6075            , ACT_REVENUE
6076          , ACT_LABOR_RAW_COST
6077          , ACT_EQUIP_RAW_COST
6078            , ETC_LABOR_HRS
6079            , ETC_EQUIP_HRS
6080            , ETC_LABOR_BRDN_COST
6081            , ETC_EQUIP_BRDN_COST
6082            , ETC_BRDN_COST
6083          , ETC_RAW_COST
6084          , ETC_LABOR_RAW_COST
6085          , ETC_EQUIP_RAW_COST
6086        , CUSTOM1
6087        , CUSTOM2
6088        , CUSTOM3
6089        , CUSTOM4
6090        , CUSTOM5
6091        , CUSTOM6
6092        , CUSTOM7
6093        , CUSTOM8
6094        , CUSTOM9
6095        , CUSTOM10
6096        , CUSTOM11
6097        , CUSTOM12
6098        , CUSTOM13
6099        , CUSTOM14
6100        , CUSTOM15
6101        -- , 'CF'
6102        , NULL
6103        , NULL
6104        -- , START_DATE
6105        -- , END_DATE
6106        -- , 0
6107           , fact.plan_type_code  plan_type_code  --  4471527
6108            FROM pji_fp_xbs_accum_f fact
6109               , pji_fm_extr_plnver3_t ver
6110            WHERE 1=1
6111              AND fact.project_id = ver.project_id
6112                  AND fact.plan_version_id = ver.plan_version_id
6113                           AND  fact.plan_type_code = ver.plan_type_code   -- 4471527
6114                  AND rbs_aggr_level = g_lowest_level
6115                  AND wbs_rollup_flag = 'N'
6116                  AND prg_rollup_flag = 'N'
6117                  AND ver.wp_flag = 'N'
6118                  AND ver.baselined_flag = 'Y'
6119                  AND BITAND(curr_record_type_id, 7) IN (4, 5, 6)
6120                  AND currency_code in ( g_global1_currency_code, g_global2_currency_code )
6121                  ) fact
6122                  GROUP BY
6123          PROJECT_ID
6124        , PROJECT_ORG_ID
6125        , PROJECT_ORGANIZATION_ID
6126        , PROJECT_ELEMENT_ID
6127        , TIME_ID
6128        , PERIOD_TYPE_ID
6129        , CALENDAR_TYPE
6130        , RBS_AGGR_LEVEL
6131        , WBS_ROLLUP_FLAG
6132        , PRG_ROLLUP_FLAG
6133        , CURRENCY_CODE
6134        , RBS_ELEMENT_ID
6135        , RBS_VERSION_ID
6136        , PLAN_VERSION_ID
6137        , PLAN_TYPE_ID
6138            , RATE_DANGLING_FLAG
6139            , TIME_DANGLING_FLAG
6140            , PLAN_TYPE_CODE ;    --- 4471527
6141 
6142 
6143   print_time('........CREATE_GL1_GL2_CURR_RCDS: End. ' );
6144 
6145 EXCEPTION
6146   WHEN OTHERS THEN
6147     print_time('........CREATE_GL1_GL2_CURR_RCDS: Exception. ' || sqlerrm );
6148     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6149                              p_procedure_name => 'CREATE_GL1_GL2_CURR_RCDS');
6150     RAISE;
6151 END;
6152 */
6153 
6154 
6155 PROCEDURE UPDATE_TPFG1_CURR_RCDS
6156 IS BEGIN
6157 
6158   print_time('........UPDATE_TPFG1_CURR_RCDS: Begin. ' );
6159 
6160   UPDATE pji_fp_xbs_accum_f
6161   SET CURR_RECORD_TYPE_ID = CURR_RECORD_TYPE_ID +
6162                        DECODE (currency_code, g_global1_currency_code, 2, 0) -- 000.000.010 = 2
6163                            + DECODE (currency_code, g_global2_currency_code, 1, 0) -- 000.000.001 = 1
6164   WHERE BITAND(curr_record_type_id, 28) >= 4   --  000.011.110 = 16 + 8 + 4  = 28
6165     AND (currency_code  IN (g_global1_currency_code, g_global2_currency_code))
6166     AND plan_version_id IN
6167          (SELECT DISTINCT plan_version_id
6168           FROM   PJI_FM_EXTR_PLNVER3_T
6169           WHERE  1=1
6170             AND  baselined_flag = 'Y'
6171             AND  wp_flag = 'N');
6172 
6173   UPDATE pji_fp_aggr_pjp1_t
6174   SET CURR_RECORD_TYPE_ID = CURR_RECORD_TYPE_ID +
6175                        DECODE (currency_code, g_global1_currency_code, 2, 0) -- 000.000.010 = 2
6176                            + DECODE (currency_code, g_global2_currency_code, 1, 0) -- 000.000.001 = 1
6177   WHERE BITAND(curr_record_type_id, 28) >= 4   --  000.011.110 = 16 + 8 + 4  = 28
6178     AND (currency_code  IN (g_global1_currency_code, g_global2_currency_code))
6179     AND worker_id = g_worker_id
6180     AND plan_version_id IN
6181          (SELECT DISTINCT plan_version_id
6182           FROM   PJI_FM_EXTR_PLNVER3_T
6183           WHERE  1=1
6184             AND  baselined_flag = 'Y'
6185             AND  wp_flag = 'N');
6186 
6187   print_time('........UPDATE_TPFG1_CURR_RCDS: End. ' );
6188 
6189 EXCEPTION
6190   WHEN OTHERS THEN
6191     print_time('........UPDATE_TPFG1_CURR_RCDS: Exception: ' || sqlerrm );
6192     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6193                              p_procedure_name => 'UPDATE_TPFG1_CURR_RCDS');
6194     RAISE;
6195 END;
6196 
6197 
6198 PROCEDURE DO_CURRENCY_DANGLING_CHECK
6199 IS BEGIN
6200 
6201   UPDATE PJI_FM_EXTR_PLNVER3_T
6202   SET rate_dangling_flag = 'Y'
6203   WHERE plan_version_id IN (
6204      SELECT
6205           fact.PLAN_VERSION_ID
6206      FROM pji_fp_aggr_pjp1_t fact
6207       , PJI_FM_AGGR_DLY_RATES_T rates
6208       , ( SELECT cal_period_id period_id, start_date, end_date FROM pji_time_cal_period_v
6209              UNION ALL
6210              SELECT cal_qtr_id, start_date, end_date FROM pji_time_cal_qtr_v
6211              UNION ALL
6212              SELECT cal_year_id, start_date, end_date FROM pji_time_cal_year_v
6213              UNION ALL
6214              SELECT ent_period_id, start_date, end_date FROM pji_time_ent_period_v
6215              UNION ALL
6216              SELECT ent_qtr_id, start_date, end_date FROM pji_time_ent_qtr
6217              UNION ALL
6218              SELECT ent_year_id, start_date, end_date FROM pji_time_ent_year
6219              UNION ALL
6220              SELECT week_id, start_date, end_date FROM pji_time_week
6221          ) dates
6222      WHERE 1=1
6223        AND fact.worker_id = g_worker_id
6224        AND dates.period_id = fact.time_id
6225            AND rates.time_id = DECODE ( g_start_str
6226                                       , g_start_str, TO_CHAR(dates.start_date, 'J')
6227                                   , g_end_str, TO_CHAR(dates.end_date, 'J') )
6228            AND ( rates.rate IS NULL or rates.rate2 IS NULL )
6229           );
6230 
6231 
6232 EXCEPTION
6233   WHEN OTHERS THEN
6234     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6235                              p_procedure_name => 'DO_CURRENCY_DANGLING_CHECK');
6236     RAISE;
6237 END;
6238 
6239 
6240 PROCEDURE GET_PRORATE_FORMAT
6241 IS BEGIN
6242 
6243   NULL;
6244 
6245 EXCEPTION
6246   WHEN OTHERS THEN
6247     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6248                              p_procedure_name => 'GET_PRORATE_FORMAT');
6249     RAISE;
6250 END;
6251 
6252 
6253 PROCEDURE GET_SPREAD_DATE_RANGE_AMOUNTS
6254 IS BEGIN
6255 
6256   NULL;
6257 
6258 EXCEPTION
6259   WHEN OTHERS THEN
6260     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6261                              p_procedure_name => 'GET_SPREAD_DATE_RANGE_AMOUNTS');
6262     RAISE;
6263 END;
6264 
6265 
6266 PROCEDURE SPREAD_NON_TIME_PHASE_AMOUNTS
6267 IS BEGIN
6268 
6269   NULL;
6270 
6271 EXCEPTION
6272   WHEN OTHERS THEN
6273     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6274                              p_procedure_name => 'SPREAD_NON_TIME_PHASE_AMOUNTS');
6275     RAISE;
6276 END;
6277 
6278 
6279 PROCEDURE PRORATE_NON_TIME_PHASED_AMTS(
6280   p_calENDar_type    IN   VARCHAR2 := NULL -- Values can be GL, PA, ENT, ENTW.
6281 ) IS BEGIN
6282 
6283   -- What slices will be prorated to PA.
6284   -- Primary slice entries in GL calendar.
6285   -- How to identify? Programming construct OP.
6286 
6287   NULL;
6288 
6289 EXCEPTION
6290   WHEN OTHERS THEN
6291     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6292                              p_procedure_name => 'PRORATE_NON_TIME_PHASED_AMTS');
6293     RAISE;
6294 END;
6295 
6296 
6297 PROCEDURE PRORATE_TO_OTHER_CALENDAR(
6298   p_calENDar_type    IN   VARCHAR2 := NULL -- Values can be GL, PA, ENT, ENTW.
6299 ) IS
6300 BEGIN
6301 
6302   --
6303   -- Logic to identify the records that are 'original'/'converted' format
6304   --   etc is similar to that for PJI. This is to make it easy for dev working
6305   --   on one module (PJI/PRP) to understand the other with minimum effort.
6306   --
6307   -- Logic is as follows:
6308   -------------------------------------------------------------------------
6309   -- 1. All 'entered' amounts (from pri slice) will have a line type *tag* 'OF'
6310   --     if calendar type is PA/GL. If no calendar type is mentioned,
6311   --     then, it will be 'F1'. Tag == line type column in tmp table.
6312   -- 2. Non time phased amounts if prorated to ENT cal will be tagged 'OF'.
6313   --     This has not been decided yet.
6314   -- 3. Amounts from PA/GL cal entries that have been converted to global will
6315   --     have a tag 'OG'.
6316   -- 4. Non PA calendar entries of OF/OG when converted to PA calendar will have
6317   --     a tag 'CF/CG' respectively.
6318   -- 5. Non GL calendar entries of OF/OG when converted to GL calendar will have
6319   --     a tag 'CF/CG' respectively.
6320   -- 6. Non ENT calendar entries of OF/OG when converted to ENT calendar will have
6321   --     a tag 'CF/CG' respectively.
6322   -- 7. Non ENTW calendar entries of OF/OG when converted to ENTW calendar will have
6323   --     a tag 'CF/CG' respectively.
6324   --
6325 
6326   IF (p_calENDar_type = 'PA') THEN
6327     PRORATE('PA');
6328   ELSIF (p_calENDar_type = 'GL') THEN
6329     PRORATE('GL');
6330   ELSIF (p_calENDar_type = 'ENT') THEN
6331     PRORATE_TO_ENT;
6332   END IF;
6333 
6334 EXCEPTION
6335   WHEN OTHERS THEN
6336     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6337                              p_procedure_name => 'PRORATE_TO_OTHER_CALENDAR');
6338     RAISE;
6339 END;
6340 
6341 
6342 --
6343 -- Prorate entries in RL fact and pjp1 table in
6344 --  1. GL and Non time phased into PA.
6345 --  2. PA into GL.
6346 --  3. PA and GL into Ent.
6347 --
6348 PROCEDURE PRORATE_TO_ALL_CALENDARS IS
6349 BEGIN
6350 
6351    print_time('PRORATE_TO_ALL_CALENDARS: Begin.. ');
6352 
6353    PRORATE_TO_OTHER_CALENDAR('PA');  -- Prorate entries in Non time phased and GL cal entries into PA cal.
6354    PRORATE_TO_OTHER_CALENDAR('GL');  -- Prorate entries in PA cal into GL cal.
6355    PRORATE_TO_OTHER_CALENDAR('ENT'); -- Prorate entries in PA and GL cals into ENT cal.
6356 
6357    print_time('PRORATE_TO_ALL_CALENDARS: End.. ');
6358 
6359 EXCEPTION
6360   WHEN NO_DATA_FOUND THEN
6361 
6362         /* This issue will come only when PJI_PJP_FP_CURR_WRAP.get_ent_dates_info gives a no_data_found error.
6363            updating the plan versions as time dangling so that the plan will be marked as dangling. Not updating
6364            the existing records so that data for the primary calendar is not impacted because of issue in proration to
6365            other calendars */
6366 
6367          UPDATE PJI_FM_EXTR_PLNVER3_T
6368             SET time_dangling_flag='Y'
6369             WHERE wp_flag='N'
6370             AND baselined_flag = 'Y' ;
6371                          -- Not raising any exception as we want the processing to happen properly.
6372                                  -- The where condition is added to make sure that workplan versions are not marked as dangling.
6373   WHEN OTHERS THEN
6374     print_time('PRORATE_TO_ALL_CALENDARS: Exception.. ' || sqlerrm);
6375     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6376                              p_procedure_name => 'PRORATE_TO_ALL_CALENDARS');
6377     RAISE;
6378 END;
6379 
6380 
6381 PROCEDURE PRORATE_TO_ENT IS
6382     l_calendar_type  VARCHAR2(15) := g_ent_cal_str;
6383 BEGIN
6384 
6385    PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
6386      x_currency_conversion_rule => g_currency_conversion_rule
6387    , x_prorating_format         => g_prorating_format
6388    , x_global1_currency_code    => g_global1_currency_code
6389    , x_global2_currency_code    => g_global2_currency_code
6390    , x_global1_currency_mau     => g_global1_currency_mau
6391    , x_global2_currency_mau     => g_global2_currency_mau ) ;
6392 
6393 
6394    PJI_PJP_FP_CURR_WRAP.get_ent_dates_info (
6395      x_global_start_date      => g_global_start_date
6396    , x_ent_start_period_id    => g_ent_start_period_id
6397    , x_ent_start_period_name  => g_ent_start_period_name
6398    , x_ent_start_date         => g_ent_start_date
6399    , x_ent_END_date           => g_ent_END_date
6400    , x_global_start_J         => g_global_start_J
6401    , x_ent_start_J            => g_ent_start_J
6402    , x_ent_END_J              => g_ent_END_J
6403   ) ;
6404 
6405   -- Refer to prorating logic in 'PRORATE_TO_OTHER_CALENDAR' proc.
6406   -- PRORATE('ENT');
6407 
6408   IF (g_prorating_format = 'D') THEN
6409 
6410     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_PG_PJP1_D;
6411     -- PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_PG_FPRL_D;
6412     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_N_PJP1_D;
6413 
6414   ELSIF (g_prorating_format IN ( g_end_str, g_start_str ) ) THEN
6415 
6416     /*Added parameter g_prorating_format for bug 4005006*/
6417     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_PG_PJP1_SE(g_prorating_format);
6418     -- PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_PG_FPRL_SE;
6419     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_ENT_N_PJP1_SE(g_prorating_format);
6420 
6421   ELSE
6422     NULL;
6423   END IF;
6424 
6425 EXCEPTION
6426   WHEN OTHERS THEN
6427     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6428                              p_procedure_name => 'PRORATE_TO_ENT');
6429     RAISE;
6430 END;
6431 
6432 
6433 /*
6434 PROCEDURE PRORATE_TO_ENT_NONTIMEPH IS
6435     l_last_update_date     date   := SYSDATE;
6436     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
6437     l_creation_date        date   := SYSDATE;
6438     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
6439     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
6440 
6441     l_calendar_type  VARCHAR2(15) := 'ENT';
6442 BEGIN
6443 
6444   NULL;
6445 
6446 EXCEPTION
6447   WHEN OTHERS THEN
6448     RAISE;
6449 END;
6450 */
6451 
6452 
6453 PROCEDURE PRORATE(
6454   p_calENDar_type    IN   VARCHAR2 := NULL -- Values can be GL, PA, ENT, ENTW.
6455 ) IS
6456     l_calendar_type        VARCHAR2(15);
6457 
6458 BEGIN
6459 
6460   IF (p_calENDar_type NOT IN ('PA', 'GL')) THEN RETURN; END IF;
6461 
6462   IF (p_calENDar_type = 'PA') THEN l_calENDar_type := g_pa_cal_str;
6463   ELSIF (p_calENDar_type = 'GL') THEN l_calENDar_type := g_gl_cal_str;
6464   ELSE RETURN;
6465   END IF;
6466 
6467 
6468    PJI_PJP_FP_CURR_WRAP.get_global_currency_info (
6469      x_currency_conversion_rule => g_currency_conversion_rule
6470    , x_prorating_format         => g_prorating_format
6471    , x_global1_currency_code    => g_global1_currency_code
6472    , x_global2_currency_code    => g_global2_currency_code
6473    , x_global1_currency_mau     => g_global1_currency_mau
6474    , x_global2_currency_mau     => g_global2_currency_mau ) ;
6475 
6476 
6477    PJI_PJP_FP_CURR_WRAP.get_ent_dates_info (
6478      x_global_start_date      => g_global_start_date
6479    , x_ent_start_period_id    => g_ent_start_period_id
6480    , x_ent_start_period_name  => g_ent_start_period_name
6481    , x_ent_start_date         => g_ent_start_date
6482    , x_ent_END_date           => g_ent_END_date
6483    , x_global_start_J         => g_global_start_J
6484    , x_ent_start_J            => g_ent_start_J
6485    , x_ent_END_J              => g_ent_END_J
6486   ) ;
6487 
6488   print_time ( ' Prorating format is .. ' || g_prorating_format ) ;
6489 
6490   IF (g_prorating_format = 'D') THEN
6491 
6492     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_PAGL_PGE_PJP1_D( p_calendar_type => l_calendar_type );
6493     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_PAGL_N_PJP1_D( p_calendar_type => l_calendar_type );
6494 
6495   ELSIF (g_prorating_format IN ( g_end_str, g_start_str ) ) THEN
6496 
6497     -- Changed for bug 4005006
6498     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_PAGL_PGE_PJP1_SE( p_calendar_type => l_calendar_type ,
6499                                                         p_prorating_format => g_prorating_format);
6500 
6501     -- Commenting out the following call for 4252205.
6502     -- PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_PAGL_PGE_FPRL_SE( p_calendar_type => l_calendar_type );
6503 
6504     -- Added for bug 4005006
6505     PJI_FM_PLAN_CAL_RLPS_T.PRORATE_TO_PAGL_N_PJP1_SE( p_calendar_type => l_calendar_type ,
6506                                                       p_prorating_format => g_prorating_format);
6507 
6508   ELSE
6509     NULL;
6510   END IF;
6511 
6512 EXCEPTION
6513   WHEN OTHERS THEN
6514     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6515                              p_procedure_name => 'PRORATE');
6516     RAISE;
6517 END;
6518 
6519 
6520 PROCEDURE MERGE_INTO_FP_FACT IS
6521 BEGIN
6522 
6523   print_time ( ' MERGE_INTO_FP_FACT 1 ' ) ;
6524   CLEANUP_FP_RMAP_FPR;
6525   print_time ( ' MERGE_INTO_FP_FACT 2 ' ) ;
6526   GET_FP_ROW_IDS;
6527   print_time ( ' MERGE_INTO_FP_FACT 3 ' ) ;
6528   UPDATE_FP_ROWS;
6529   print_time ( ' MERGE_INTO_FP_FACT 4 ' ) ;
6530   INSERT_FP_ROWS;
6531   print_time ( ' MERGE_INTO_FP_FACT 5 ' ) ;
6532 
6533 EXCEPTION
6534   WHEN OTHERS THEN
6535     print_time ( ' MERGE_INTO_FP_FACT 6 ' ) ;
6536     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6537                              p_procedure_name => 'MERGE_INTO_FP_FACT');
6538     RAISE;
6539 END;
6540 
6541 
6542 PROCEDURE CLEANUP_FP_RMAP_FPR IS
6543 BEGIN
6544 
6545   print_time ( 'CLEANUP_FP_RMAP_FPR begin..');
6546 
6547   DELETE FROM PJI_FP_RMAP_FPR_T
6548   WHERE worker_id = g_worker_id;
6549 
6550   print_time ( 'CLEANUP_FP_RMAP_FPR end.' || g_worker_id );
6551 
6552 EXCEPTION
6553   WHEN OTHERS THEN
6554     print_time ( 'ccc' || sqlerrm );
6555     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6556                              p_procedure_name => 'CLEANUP_FP_RMAP_FPR');
6557     RAISE;
6558 END;
6559 
6560 
6561 PROCEDURE GET_FP_ROW_IDS IS
6562 BEGIN
6563 
6564   INSERT INTO PJI_FP_RMAP_FPR_T
6565   (
6566      worker_id
6567    , pjp1_rowid
6568    , fpr_rowid
6569   )
6570   SELECT /*+ full(tmp) index(rl, PJI_FP_XBS_ACCUM_F_N1) use_nl(rl) */
6571     g_worker_id WORKER_ID
6572   , tmp.ROWID pjp1_rowid
6573   , rl.ROWID fpr_ROWID
6574   FROM
6575     pji_fp_aggr_pjp1_t          tmp
6576   , pji_fp_xbs_accum_f          rl
6577   WHERE 1 = 1
6578    AND tmp.WORKER_ID = g_worker_id
6579    AND tmp.PROJECT_ID = rl.PROJECT_ID (+)
6580    AND tmp.PLAN_VERSION_ID = rl.PLAN_VERSION_ID (+)
6581    AND tmp.PLAN_TYPE_ID = rl.PLAN_TYPE_ID (+)
6582    AND tmp.PROJECT_ORG_ID = rl.PROJECT_ORG_ID (+)
6583    AND tmp.PROJECT_ORGANIZATION_ID = rl.PROJECT_ORGANIZATION_ID (+)
6584    AND tmp.PROJECT_ELEMENT_ID = rl.PROJECT_ELEMENT_ID (+)
6585    AND tmp.TIME_ID = rl.TIME_ID (+)
6586    AND tmp.PERIOD_TYPE_ID = rl.PERIOD_TYPE_ID (+)
6587    AND tmp.CALENDAR_TYPE = rl.CALENDAR_TYPE (+)
6588    AND tmp.RBS_AGGR_LEVEL = rl.RBS_AGGR_LEVEL (+)
6589    AND tmp.WBS_ROLLUP_FLAG = rl.WBS_ROLLUP_FLAG (+)
6590    AND tmp.PRG_ROLLUP_FLAG = rl.PRG_ROLLUP_FLAG (+)
6591    AND tmp.CURR_RECORD_TYPE_ID = rl.CURR_RECORD_TYPE_ID (+)
6592    AND tmp.CURRENCY_CODE = rl.CURRENCY_CODE (+)
6593    AND tmp.RBS_ELEMENT_ID = rl.RBS_ELEMENT_ID (+)
6594    AND tmp.RBS_VERSION_ID = rl.RBS_VERSION_ID (+)
6595    AND tmp.PLAN_TYPE_CODE = rl.PLAN_TYPE_CODE (+)      /* 4471527 */
6596    AND tmp.RATE_DANGLING_FLAG IS NULL
6597    AND tmp.TIME_DANGLING_FLAG IS NULL;
6598 
6599   print_time ( ' MERGE_INTO_FP_FACT 1.1 ' || SQL%ROWCOUNT ) ;
6600 
6601 EXCEPTION
6602   WHEN OTHERS THEN
6603     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6604                              p_procedure_name => 'GET_FP_ROW_IDS');
6605     RAISE;
6606 END;
6607 
6608 
6609 PROCEDURE GET_ACTUALS (
6610    p_new_pub_version_id  IN NUMBER
6611  , p_prev_pub_version_id IN  NUMBER := NULL  ) IS
6612 
6613 BEGIN
6614 
6615   NULL;
6616 
6617 EXCEPTION
6618   WHEN OTHERS THEN
6619     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
6620                              p_procedure_name => 'GET_ACTUALS');
6621     RAISE;
6622 END;
6623 
6624 
6625 PROCEDURE REVERSE_ETC (
6626    p_new_pub_version_id  IN NUMBER
6627  , p_prev_pub_version_id IN  NUMBER := NULL  ) IS
6628 
6629   l_project_id             NUMBER;
6630   l_struct_sharing_code    pa_projects_all.structure_sharing_code%TYPE;
6631   l_prev_pub_version_id    NUMBER;
6632   l_curr_wking_version_id  NUMBER;
6633   l_actual_plan_version_id NUMBER;
6634   l_copied_from_version_id NUMBER;
6635   l_new_plan_type_id       NUMBER;
6636   /*
6637   l_last_update_date     DATE   := SYSDATE;
6638   l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
6639   l_creation_date        DATE   := SYSDATE;
6640   l_created_by           NUMBER := FND_GLOBAL.USER_ID;
6641   l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
6642   */
6643   l_max_plnver_id        NUMBER := NULL;
6644 
6645 BEGIN
6646 
6647   print_time ( ' REVERSE_ETC BEGIN' ) ;
6648   print_time ( ' REVERSE_ETC p_new_pub_version_id = ' ||p_new_pub_version_id  || ' p_prev_pub_version_id ' || p_prev_pub_version_id ) ;
6649 
6650   INSERT_NTP_CAL_RECORD ( x_max_plnver_id => l_max_plnver_id );
6651 
6652   IF (l_max_plnver_id IS NULL) THEN
6653     RETURN;
6654   END IF;
6655 
6656   SELECT project_id, fin_plan_type_id
6657   INTO   l_project_id, l_new_plan_type_id
6658   FROM   pa_budget_versions
6659   WHERE  budget_version_id = p_new_pub_version_id ;
6660 
6661   SELECT structure_sharing_code
6662   INTO l_struct_sharing_code
6663   FROM pa_projects_all
6664   WHERE project_id = l_project_id;
6665 
6666   l_prev_pub_version_id := p_prev_pub_version_id;
6667 
6668  -- Fix for bug : 4213245
6669 /*
6670   delete from pji_fm_extr_plan_lines
6671   where
6672     PLAN_VERSION_ID = p_new_pub_version_id and
6673     ETC_QUANTITY    is null                and
6674     ETC_TXN_BURDENED_COST is null          and
6675     ETC_PRJ_BURDENED_COST is null          and
6676     ETC_PFC_BURDENED_COST is null          and
6677     ETC_TXN_RAW_COST is null               and
6678     ETC_PRJ_RAW_COST is null               and
6679     ETC_PFC_RAW_COST is null               and
6680     RBS_VERSION_ID   is null;
6681 */
6682 
6683   print_time ( ' REVERSE_ETC l_prev_pub_version_id ' || l_prev_pub_version_id || ' l_actual_plan_version_id ' || l_actual_plan_version_id || ' l_project_id ' || l_project_id ) ;
6684 
6685 
6686  INSERT INTO PJI_FP_AGGR_PJP1_T
6687     (
6688          WORKER_ID
6689        , PRG_LEVEL
6690        , PROJECT_ID
6691        , PROJECT_ORG_ID
6692        , PROJECT_ORGANIZATION_ID
6693        , PROJECT_ELEMENT_ID
6694        , TIME_ID
6695        , PERIOD_TYPE_ID
6696        , CALENDAR_TYPE
6697        , RBS_AGGR_LEVEL
6698        , WBS_ROLLUP_FLAG
6699        , PRG_ROLLUP_FLAG
6700        , CURR_RECORD_TYPE_ID
6701        , CURRENCY_CODE
6702        , RBS_ELEMENT_ID
6703        , RBS_VERSION_ID
6704        , PLAN_VERSION_ID
6705        , PLAN_TYPE_ID
6706        , RAW_COST
6707        , BRDN_COST
6708        , REVENUE
6709        , BILL_RAW_COST
6710        , BILL_BRDN_COST
6711        , BILL_LABOR_RAW_COST
6712        , BILL_LABOR_BRDN_COST
6713        , BILL_LABOR_HRS
6714        , EQUIPMENT_RAW_COST
6715        , EQUIPMENT_BRDN_COST
6716        , CAPITALIZABLE_RAW_COST
6717        , CAPITALIZABLE_BRDN_COST
6718        , LABOR_RAW_COST
6719        , LABOR_BRDN_COST
6720        , LABOR_HRS
6721        , LABOR_REVENUE
6722        , EQUIPMENT_HOURS
6723        , BILLABLE_EQUIPMENT_HOURS
6724        , SUP_INV_COMMITTED_COST
6725        , PO_COMMITTED_COST
6726        , PR_COMMITTED_COST
6727        , OTH_COMMITTED_COST
6728        , ACT_LABOR_HRS
6729            , ACT_EQUIP_HRS
6730            , ACT_LABOR_BRDN_COST
6731            , ACT_EQUIP_BRDN_COST
6732            , ACT_BRDN_COST
6733            , ACT_RAW_COST
6734            , ACT_REVENUE
6735          , ACT_LABOR_RAW_COST
6736          , ACT_EQUIP_RAW_COST
6737            , ETC_LABOR_HRS
6738            , ETC_EQUIP_HRS
6739            , ETC_LABOR_BRDN_COST
6740            , ETC_EQUIP_BRDN_COST
6741            , ETC_BRDN_COST
6742          , ETC_RAW_COST
6743          , ETC_LABOR_RAW_COST
6744          , ETC_EQUIP_RAW_COST
6745        , CUSTOM1
6746        , CUSTOM2
6747        , CUSTOM3
6748        , CUSTOM4
6749        , CUSTOM5
6750        , CUSTOM6
6751        , CUSTOM7
6752        , CUSTOM8
6753        , CUSTOM9
6754        , CUSTOM10
6755        , CUSTOM11
6756        , CUSTOM12
6757        , CUSTOM13
6758        , CUSTOM14
6759        , CUSTOM15
6760        , PLAN_TYPE_CODE     /* 4471527 */
6761         )
6762      SELECT
6763              g_worker_id WORKER_ID
6764            , g_default_prg_level PRG_LEVEL
6765        , plr.PROJECT_ID
6766        , plr.PROJECT_ORG_ID
6767        , plr.project_ORGANIZATION_ID
6768        , plr.WBS_ELEMENT_ID project_element_id
6769        , DECODE(vers.time_phased_type_code
6770               , 'N', -1
6771               , pji_time.cal_period_id)  time_id
6772        , DECODE(vers.time_phased_type_code
6773               , 'P', 32
6774               , 'G', 32
6775               , 'N', 2048)  period_type_id -- period type id...
6776        , DECODE(vers.time_phased_type_code
6777                , 'P', 'P'
6778                , 'G', 'G'
6779                , 'N', 'A'
6780                            , 'X')     CALENDAR_TYPE
6781        , 'L' RBS_AGGR_LEVEL
6782        , 'N' WBS_ROLLUP_FLAG
6783        , 'N' PRG_ROLLUP_FLAG
6784        , plr.CURR_RECORD_TYPE  CURR_RECORD_TYPE_ID
6785            , plr.currency_code
6786        , plr.RBS_ELEMENT_ID
6787        , plr.RBS_STRUCT_VERSION_ID rbs_version_id
6788        , plr.BUDGET_VERSION_ID PLAN_VERSION_ID
6789            , plr.plan_type_id
6790        , SUM(plr.RAW_COST) RAW_COST
6791        , SUM(plr.BRDN_COST) BRDN_COST
6792        , SUM(plr.REVENUE) REVENUE
6793        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, TO_NUMBER(NULL) ) ) BILL_RAW_COST
6794        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, TO_NUMBER(NULL) ) ) BILL_BRDN_COST
6795        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || 'PEOPLE', plr.raw_cost, TO_NUMBER(NULL) ) )  BILL_LABOR_RAW_COST
6796        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'Y' || 'PEOPLE' , plr.BRDN_COST, TO_NUMBER(NULL) ) )  BILL_LABOR_BRDN_COST
6797        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || 'PEOPLE', plr.quantity, TO_NUMBER(NULL) ) )  BILL_LABOR_HRS */ -- bug 6039785
6798        , SUM ( DECODE ( plr.billable_flag || plr.resource_class , 'Y' || 'PEOPLE',
6799                                                                          decode(plr.billable_flag,'Y', plr.quantity, TO_NUMBER(NULL)),
6800 					    TO_NUMBER(NULL) ) )  BILL_LABOR_HRS -- bug 6039785
6801        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT' , plr.raw_cost, TO_NUMBER(NULL) ) ) EQUIPMENT_RAW_COST
6802        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT' , plr.BRDN_COST, TO_NUMBER(NULL) ) ) EQUIPMENT_BRDN_COST
6803        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.raw_cost, TO_NUMBER(NULL) ) )   CAPITALIZABLE_RAW_COST
6804        , SUM ( DECODE ( plr.billable_flag, 'Y', plr.BRDN_COST, TO_NUMBER(NULL) ) )  CAPITALIZABLE_BRDN_COST
6805        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.raw_cost, TO_NUMBER(NULL) ) ) LABOR_RAW_COST
6806        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.BRDN_COST, TO_NUMBER(NULL) ) ) LABOR_BRDN_COST
6807        /* , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6808                                             DECODE ( vers.wp_flag, 'N',
6809                                                                    DECODE ( plr.billable_flag,  'Y',plr.quantity,0),
6810                                                                    plr.quantity),
6811                                                     TO_NUMBER(NULL) ) )  labor_hrs */ -- bug 6039785
6812        , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6813                                             DECODE(plr.billable_flag,'Y',
6814                                                    DECODE ( vers.wp_flag, 'N',
6815                                                                    DECODE ( plr.billable_flag,  'Y',plr.quantity,0),
6816                                                                    plr.quantity)
6817 					    , TO_NUMBER(NULL) ),
6818                                                     TO_NUMBER(NULL) ) )  labor_hrs -- bug 6039785
6819        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.revenue, TO_NUMBER(NULL) ) ) LABOR_REVENUE
6820        /* , SUM ( -- s
6821                DECODE ( plr.resource_class -- d1
6822                   , 'EQUIPMENT'
6823                                   , DECODE ( vers.wp_flag -- d2
6824                            , 'N'
6825                            , DECODE ( plr.billable_flag -- d3
6826                                                             , 'Y'
6827                                                                         , plr.quantity
6828                                                                         , TO_NUMBER(NULL)
6829                                                                         )  -- d3
6830                            , plr.quantity
6831                                                    )  -- d2
6832                   , TO_NUMBER(NULL)
6833                                   ) -- d1
6834                                 )  EQUIPMENT_HRS -- s */ -- bug 6039785
6835        , SUM ( -- s
6836                DECODE ( plr.resource_class -- d1
6837                   , 'EQUIPMENT' , DECODE(plr.billable_flag,'Y'
6838                                   , DECODE ( vers.wp_flag -- d2
6839                            , 'N'
6840                            , DECODE ( plr.billable_flag -- d3
6841                                                             , 'Y'
6842                                                                         , plr.quantity
6843                                                                         , TO_NUMBER(NULL)
6844                                                                         )  -- d3
6845                            , plr.quantity
6846                                                    )  -- d2
6847 	             , TO_NUMBER(NULL) ),
6848                              TO_NUMBER(NULL)
6849                                   ) -- d1
6850                                 )  EQUIPMENT_HRS -- s -- bug 6039785
6851        /* , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT', plr.quantity, 0 ) )  BILLABLE_EQUIPMENT_HOURS */ -- bug 6039785
6852        , SUM ( DECODE ( plr.billable_flag || plr.resource_class, 'YEQUIPMENT',
6853                                                                  DECODE(plr.billable_flag,'Y',plr.quantity,0 ) , 0 ) )  BILLABLE_EQUIPMENT_HOURS -- bug 6039785
6854        , TO_NUMBER(NULL) SUP_INV_COMMITTED_COST
6855        , TO_NUMBER(NULL) PO_COMMITTED_COST
6856        , TO_NUMBER(NULL) PR_COMMITTED_COST
6857        , TO_NUMBER(NULL) OTH_COMMITTED_COST
6858        /* , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6859                                             DECODE ( vers.wp_flag, 'N',
6860                                                                    DECODE ( plr.billable_flag,  'Y',plr.actual_quantity,0),
6861                                                                    plr.actual_quantity),
6862                                                     TO_NUMBER(NULL) ) )  ACT_LABOR_HRS */ -- bug 6039785
6863        , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6864                                             DECODE (plr.billable_flag ,'Y',
6865                                                     DECODE ( vers.wp_flag, 'N',
6866                                                                    DECODE ( plr.billable_flag,  'Y',plr.actual_quantity,0),
6867                                                                    plr.actual_quantity),
6868 					    TO_NUMBER(NULL) ),
6869                                                     TO_NUMBER(NULL) ) )  ACT_LABOR_HRS -- bug 6039785
6870        /* , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT',
6871                                            DECODE ( vers.wp_flag, 'N',
6872                                                                    DECODE ( plr.billable_flag,  'Y',plr.actual_quantity,0),
6873                                                                    plr.actual_quantity),
6874                                                     TO_NUMBER(NULL) ) ) ACT_EQUIP_HRS */ -- bug 6039785
6875        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT',
6876                                             DECODE (plr.billable_flag ,'Y',
6877                                                     DECODE ( vers.wp_flag, 'N',
6878                                                                    DECODE ( plr.billable_flag,  'Y',plr.actual_quantity,0),
6879                                                                    plr.actual_quantity),
6880 					    TO_NUMBER(NULL) ),
6881                                                     TO_NUMBER(NULL) ) ) ACT_EQUIP_HRS -- bug 6039785
6882        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.actual_BRDN_COST, TO_NUMBER(NULL) ) ) ACT_LABOR_BRDN_COST
6883        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT' , plr.actual_BRDN_COST, TO_NUMBER(NULL) ) ) ACT_EQUIP_BRDN_COST
6884        , SUM ( plr.actual_brdn_cost ) ACT_BRDN_COST
6885        , SUM ( plr.actual_raw_cost ) ACT_RAW_COST
6886        , SUM ( plr.actual_revenue ) ACT_REVENUE
6887        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.actual_RAW_COST, TO_NUMBER(NULL) ) ) ACT_LABOR_RAW_COST
6888        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT' , plr.actual_RAW_COST, TO_NUMBER(NULL) ) ) ACT_EQUIP_RAW_COST
6889        /* , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6890                                             DECODE ( vers.wp_flag, 'N',
6891                                                                    DECODE ( plr.billable_flag,  'Y',plr.ETC_quantity,TO_NUMBER(NULL)),
6892                                                                    plr.ETC_quantity),
6893                                              'EQUIPMENT', TO_NUMBER(NULL) ) ) ETC_LABOR_HRS */ -- bug 6039785
6894        , SUM ( DECODE ( plr.resource_class, 'PEOPLE',
6895                                             DECODE (plr.billable_flag ,'Y',
6896                                                     DECODE ( vers.wp_flag, 'N',
6897                                                                    DECODE ( plr.billable_flag,  'Y',plr.ETC_quantity,TO_NUMBER(NULL)),
6898                                                                    plr.ETC_quantity), TO_NUMBER(NULL) ),
6899                                              'EQUIPMENT', TO_NUMBER(NULL) ) ) ETC_LABOR_HRS -- bug 6039785
6900        /* , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT',
6901                                             DECODE ( vers.wp_flag, 'N',
6902                                                                    DECODE ( plr.billable_flag,  'Y',plr.ETC_quantity,TO_NUMBER(NULL)),
6903                                                                    plr.ETC_quantity),
6904                                             'PEOPLE', TO_NUMBER(NULL) ) ) ETC_EQUIP_HRS */ -- bug 6039785
6905        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT',
6906                                             DECODE (plr.billable_flag ,'Y',
6907                                                     DECODE ( vers.wp_flag, 'N',
6908                                                                    DECODE ( plr.billable_flag,  'Y',plr.ETC_quantity,TO_NUMBER(NULL)),
6909                                                                    plr.ETC_quantity), TO_NUMBER(NULL) ),
6910                                             'PEOPLE', TO_NUMBER(NULL) ) ) ETC_EQUIP_HRS -- bug 6039785
6911        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.etc_BRDN_COST, TO_NUMBER(NULL) ) ) ETC_LABOR_BRDN_COST
6912        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT', plr.etc_BRDN_COST, TO_NUMBER(NULL) ) ) ETC_EQUIP_BRDN_COST
6913        , SUM ( plr.etc_brdn_cost ) ETC_BRDN_COST
6914        , SUM ( plr.etc_raw_cost ) ETC_RAW_COST
6915        , SUM ( DECODE ( plr.resource_class, 'PEOPLE', plr.etc_raw_COST, TO_NUMBER(NULL) ) ) ETC_LABOR_raw_COST
6916        , SUM ( DECODE ( plr.resource_class, 'EQUIPMENT', plr.etc_raw_COST, TO_NUMBER(NULL) ) ) ETC_EQUIP_raw_COST
6917        , TO_NUMBER(NULL) CUSTOM1
6918        , TO_NUMBER(NULL) CUSTOM2
6919        , TO_NUMBER(NULL) CUSTOM3
6920        , TO_NUMBER(NULL) CUSTOM4
6921        , TO_NUMBER(NULL) CUSTOM5
6922        , TO_NUMBER(NULL) CUSTOM6
6923        , TO_NUMBER(NULL) CUSTOM7
6924        , TO_NUMBER(NULL) CUSTOM8
6925        , TO_NUMBER(NULL) CUSTOM9
6926        , TO_NUMBER(NULL) CUSTOM10
6927        , TO_NUMBER(NULL) CUSTOM11
6928        , TO_NUMBER(NULL) CUSTOM12
6929        , TO_NUMBER(NULL) CUSTOM13
6930        , TO_NUMBER(NULL) CUSTOM14
6931            , TO_NUMBER(NULL) CUSTOM15
6932        , plr.plan_type_code  plan_type_code  /* 4471527 */
6933        FROM
6934        (          ----- First inline view plr .............
6935             SELECT
6936               collapse_bl.PROJECT_ID
6937             , collapse_bl.WBS_ELEMENT_ID
6938             , SUM(collapse_bl.CURR_RECORD_TYPE_ID) CURR_RECORD_TYPE
6939             , collapse_bl.RBS_ELEMENT_ID
6940             , collapse_bl.RBS_STRUCT_VERSION_ID
6941                 , collapse_bl.plan_type_id
6942             , collapse_bl.BUDGET_VERSION_ID
6943             , collapse_bl.PROJECT_ORGANIZATION_ID
6944             , collapse_bl.PROJECT_ORG_ID
6945             , collapse_bl.BILLABLE_FLAG
6946             , collapse_bl.RESOURCE_CLASS
6947             , collapse_bl.CURRENCY_CODE
6948             , MAX(collapse_bl.raw_cost) raw_cost
6949             , MAX(collapse_bl.BRDN_COST) BRDN_COST
6950             , MAX(collapse_bl.revenue) revenue
6951             , MAX(collapse_bl.act_raw_cost) actual_raw_cost
6952             , MAX(collapse_bl.act_BRDN_COST) actual_BRDN_COST
6953             , MAX(collapse_bl.act_revenue) actual_revenue
6954             , MAX(collapse_bl.etc_RAW_COST) etc_raw_COST
6955             , MAX(collapse_bl.etc_BRDN_COST) etc_BRDN_COST
6956             , MAX(collapse_bl.quantity) quantity
6957             , MAX(collapse_bl.act_quantity) actual_quantity
6958             , MAX(collapse_bl.etc_quantity) etc_quantity
6959             , collapse_bl.period_name period_name
6960             , collapse_bl.row_id
6961             , collapse_bl.plan_type_code plan_type_code   /* 4471527 */
6962             FROM
6963               (                  ----- Second inline view 'collapse_bl' begin .............
6964                 SELECT
6965                   spread_bl.row_id row_id
6966                 , spread_bl.PROJECT_ID
6967                 , spread_bl.BUDGET_VERSION_ID
6968                 , spread_bl.WBS_ELEMENT_ID
6969                 , spread_bl.RBS_ELEMENT_ID
6970                 , spread_bl.WBS_STRUCT_VERSION_ID
6971                 , spread_bl.RBS_STRUCT_VERSION_ID
6972                                 , spread_bl.plan_type_id
6973                 , spread_bl.BILLABLE_FLAG
6974                 , spread_bl.RESOURCE_CLASS
6975                 , spread_bl.PROJECT_ORGANIZATION_ID
6976                 , spread_bl.PROJECT_ORG_ID
6977                 , DECODE( invert.INVERT_ID
6978                         , 4, spread_bl.pfc_CURRENCY_CODE
6979                         , 8, spread_bl.PRJ_CURRENCY_CODE
6980                         , 16, spread_bl.TXN_CURRENCY_CODE ) CURRENCY_CODE
6981                 , invert.INVERT_ID CURR_RECORD_TYPE_ID
6982                 , DECODE ( invert.INVERT_ID
6983                          , 4, spread_bl.pfc_raw_cost
6984                          , 8, spread_bl.PRJ_raw_cost
6985                          , 16, spread_bl.TXN_raw_cost) raw_cost
6986                 , DECODE ( invert.INVERT_ID
6987                          , 4, spread_bl.pfc_BRDN_COST
6988                          , 8, spread_bl.PRJ_BRDN_COST
6989                          , 16, spread_bl.TXN_BRDN_COST ) BRDN_COST
6990                 , DECODE ( invert.INVERT_ID
6991                          , 4, spread_bl.pfc_revenue
6992                          , 8, spread_bl.PRJ_revenue
6993                          , 16, spread_bl.TXN_revenue ) revenue
6994                 , DECODE ( invert.INVERT_ID
6995                          , 4, spread_bl.act_pfc_raw_cost
6996                          , 8, spread_bl.act_PRJ_raw_cost
6997                          , 16, spread_bl.act_TXN_raw_cost) act_raw_cost
6998                 , DECODE ( invert.INVERT_ID
6999                          , 4, spread_bl.act_pfc_BRDN_COST
7000                          , 8, spread_bl.act_PRJ_BRDN_COST
7001                          , 16, spread_bl.act_TXN_BRDN_COST ) act_BRDN_COST
7002                 , DECODE ( invert.INVERT_ID
7003                          , 4, spread_bl.act_pfc_revenue
7004                          , 8, spread_bl.act_PRJ_revenue
7005                          , 16, spread_bl.act_TXN_revenue ) act_revenue
7006                 , DECODE ( invert.INVERT_ID
7007                          , 4, spread_bl.etc_pfc_brdn_cost
7008                          , 8, spread_bl.etc_PRJ_brdn_cost
7009                          , 16, spread_bl.etc_TXN_brdn_cost ) etc_brdn_cost
7010                 , DECODE ( invert.INVERT_ID
7011                          , 4, spread_bl.etc_pfc_raw_cost
7012                          , 8, spread_bl.etc_PRJ_raw_cost
7013                          , 16, spread_bl.etc_TXN_raw_cost) etc_raw_cost
7014                 , spread_bl.quantity quantity
7015                                 , spread_bl.act_quantity act_quantity
7016                                 , spread_bl.etc_quantity etc_quantity
7017                 , spread_bl.period_name period_name
7018                 , spread_bl.plan_type_code plan_type_code   /* 4471527 */
7019                 FROM
7020                   (
7021                     SELECT
7022                           bl.project_id
7023                         , bl.ROWID row_id
7024                         , bl.plan_version_id budget_version_id
7025                         , DECODE(bl.project_element_id, 0, pevs.proj_element_id, bl.project_element_id)  wbs_element_id
7026                         , NVL( bl.rbs_element_id, -1)   rbs_element_id
7027                         , bl.struct_ver_id             wbs_struct_version_id
7028                     , DECODE( bl.rbs_element_id
7029                             , NULL
7030                             , -1
7031                             , NVL(ver.rbs_struct_version_id, -1)
7032                             )                       rbs_struct_version_id
7033                         , bl.plan_type_id              plan_type_id -- ver.plan_type_id
7034                   , bl.rate_based_flag           billable_flag -- ra.rate_based_flag             billable_flag
7035                   , bl.resource_class_code       resource_class -- ra.resource_class_code          resource_class
7036                         , bl.txn_currency_code         txn_currency_code
7037                         , bl.txn_raw_cost                            txn_raw_cost
7038                         , bl.txn_burdened_cost                            txn_BRDN_COST
7039                         , bl.txn_revenue                            txn_revenue
7040                         , TO_NUMBER(NULL)                             act_txn_raw_cost
7041                         , TO_NUMBER(NULL)                             act_txn_brdn_cost
7042                         , TO_NUMBER(NULL)                             act_txn_revenue
7043                         , NVL(bl.txn_raw_cost, 0)+NVL(bl.etc_txn_raw_cost, 0)      etc_txn_raw_cost
7044                         , NVL(bl.txn_burdened_cost, 0)+NVL(bl.etc_txn_burdened_cost, 0)      etc_txn_brdn_cost
7045                         , bl.prj_currency_code          prj_currency_code
7046                         , bl.prj_raw_cost                             prj_raw_cost
7047                         , bl.prj_burdened_cost                             prj_BRDN_COST
7048                         , bl.prj_revenue                             prj_revenue
7049                         , TO_NUMBER(NULL)                             act_prj_raw_cost
7050                         , TO_NUMBER(NULL)                             act_prj_brdn_cost
7051                         , TO_NUMBER(NULL)                             act_prj_revenue
7052                         , NVL(bl.prj_raw_cost, 0)+NVL(bl.etc_prj_raw_cost, 0)      etc_prj_raw_cost
7053                         , NVL(bl.prj_burdened_cost, 0)+NVL(bl.etc_prj_burdened_cost, 0)      etc_prj_brdn_cost
7054                         , bl.pfc_currency_code          pfc_currency_code
7055                   , bl.pfc_raw_cost                             pfc_raw_cost
7056                         , bl.pfc_burdened_cost                             pfc_BRDN_COST
7057                         , bl.pfc_revenue                             pfc_revenue
7058                         , TO_NUMBER(NULL)                             act_pfc_raw_cost
7059                         , TO_NUMBER(NULL)                             act_pfc_brdn_cost
7060                         , TO_NUMBER(NULL)                             act_pfc_revenue
7061                         , NVL(bl.pfc_raw_cost, 0)+NVL(bl.etc_pfc_raw_cost, 0)      etc_pfc_raw_cost
7062                         , NVL(bl.pfc_burdened_cost, 0)+NVL(bl.etc_pfc_burdened_cost, 0)      etc_pfc_brdn_cost
7063                         , bl.quantity                              quantity
7064                         , TO_NUMBER(NULL)                                 act_quantity
7065                         , NVL(bl.quantity, 0)+NVL(bl.etc_quantity, 0)                etc_quantity
7066                         , NVL(bl.period_name, 'XXX')       period_name
7067                         , bl.project_org_id                       project_org_id
7068                         , ppa.carrying_out_organization_id  project_organization_id
7069                         , ver.plan_type_code  plan_type_code /* 4471527 */
7070                     FROM
7071                        PJI_FM_EXTR_PLAN_LINES        bl
7072                      , PJI_FM_EXTR_PLNVER3_T         ver
7073                            , PA_PROJECTS_ALL               ppa
7074                            , PA_PROJ_ELEM_VER_STRUCTURE    pevs
7075                            , pji_fp_rmap_fpr_update_t      rwid
7076                     WHERE 1=1
7077                                          AND bl.project_id = ver.project_id
7078                                          AND bl.plan_version_id = ver.plan_version_id
7079                                          AND bl.plan_type_id = ver.plan_type_id
7080                                          AND ppa.project_id = ver.project_id
7081                                AND bl.project_id = ppa.project_id -- Added for bug 3828698
7082                                AND ppa.project_id = pevs.project_id -- Added for bug 3838698
7083                                          AND bl.TXN_CURRENCY_CODE IS NOT NULL
7084                                          AND bl.prj_currency_code IS NOT NULL
7085                                          AND bl.pfc_currency_code IS NOT NULL
7086                                      AND pevs.element_version_id = ver.wbs_struct_version_id
7087                                          AND pevs.project_id = ver.project_id -- Fix for bug : 4149422 in REVERSE_ETC
7088                                AND bl.ROWID = rwid.extr_lines_rowid
7089                                         UNION ALL
7090                     SELECT  /*+ LEADING(VER) USE_NL(VER,PPA,PEVS,RA,BL)*/
7091                           ra.project_id
7092                         , bl.ROWID row_id
7093                         , ra.budget_version_id
7094                         , DECODE(ra.task_id, 0, pevs.proj_element_id, ra.task_id) wbs_element_id
7095                         , NVL(ra.rbs_element_id, -1)              rbs_element_id
7096                         , ver.wbs_struct_version_id      wbs_struct_version_id
7097                         , NVL(ver.rbs_struct_version_id, -1)    rbs_struct_version_id
7098                         , ver.plan_type_id               plan_type_id
7099                         , ra.rate_based_flag             billable_flag
7100                         , ra.resource_class_code         resource_class
7101                         , bl.txn_currency_code           txn_currency_code
7102                         , TO_NUMBER(NULL)                txn_raw_cost
7103                         , TO_NUMBER(NULL)           txn_brdn_COST
7104                         , TO_NUMBER(NULL)                 txn_revenue
7105                         , bl.txn_init_raw_cost                txn_actual_raw_cost  -- new
7106                         , bl.txn_init_burdened_cost             txn_actual_brdn_cost  -- new
7107                         , bl.txn_init_revenue                   txn_actual_revenue  -- new
7108                         , TO_NUMBER(NULL)                txn_etc_raw_cost     -- new
7109                         , TO_NUMBER(NULL)                txn_etc_brdn_cost     -- new
7110                         , bl.project_currency_code          prj_currency_code
7111                         , TO_NUMBER(NULL)               prj_raw_cost
7112                         , TO_NUMBER(NULL)          prj_BRDN_COST
7113                         , TO_NUMBER(NULL)                prj_revenue
7114                         , bl.project_init_raw_cost           prj_actual_raw_cost  -- new
7115                         , bl.project_init_burdened_cost     prj_actual_brdn_cost  -- new
7116                         , bl.project_init_revenue           prj_actual_revenue  -- new
7117                         , TO_NUMBER(NULL)                prj_etc_raw_cost     -- new
7118                         , TO_NUMBER(NULL)                prj_etc_brdn_cost     -- new
7119                         , bl.projfunc_currency_code         func_currency_code
7120                   , TO_NUMBER(NULL)                        func_raw_cost
7121                         , TO_NUMBER(NULL)                        func_BRDN_COST
7122                         , TO_NUMBER(NULL)                      func_revenue
7123                         , bl.init_raw_cost                  func_actual_raw_cost  -- new
7124                         , bl.init_burdened_cost             func_actual_brdn_cost  -- new
7125                         , bl.init_revenue                   func_actual_revenue  -- new
7126                         , TO_NUMBER(NULL)                 func_etc_raw_cost     -- new
7127                         , TO_NUMBER(NULL)                 func_etc_brdn_cost     -- new
7128                   , TO_NUMBER(NULL)                   quantity
7129                         , bl.init_quantity               actual_quantity  -- new
7130                         , TO_NUMBER(NULL)                etc_quantity  -- new
7131                         , NVL(bl.period_name, 'XXX') period_name
7132                         , ppa.org_id project_org_id
7133                         , ppa.carrying_out_organization_id project_organization_id
7134                         , ver.plan_type_code plan_type_code  /* 4471527 */
7135                  FROM
7136                        PA_BUDGET_LINES               bl
7137                      , PA_RESOURCE_ASSIGNMENTS       ra
7138                      , PJI_FM_EXTR_PLNVER3_T           ver
7139                          , PA_PROJECTS_ALL               ppa
7140                            , PA_PROJ_ELEM_VER_STRUCTURE    pevs
7141                  WHERE
7142                          ra.resource_asSIGNment_id = bl.resource_asSIGNment_id
7143                      AND ra.project_id = ver.PROJECT_ID
7144                      AND ra.budget_version_id = ver.plan_version_id
7145                      AND ver.project_id = ppa.project_id
7146                      AND txn_currency_code IS NOT NULL
7147                      AND bl.project_currency_code IS NOT NULL
7148                      AND bl.projfunc_currency_code IS NOT NULL
7149                      AND pevs.project_id = ver.project_id -- Fix for bug : 4149422 in REVERSE_ETC
7150                            AND pevs.element_version_id = ver.wbs_struct_version_id
7151                            AND ver.secondary_rbs_flag = 'N'
7152                                   ) spread_bl
7153                                    ---- end of third inline view 'spread_bl'...........
7154                   ,
7155                     (
7156                       SELECT 4   INVERT_ID FROM dual UNION ALL
7157                       SELECT 8   INVERT_ID FROM dual UNION ALL
7158                       SELECT 16  INVERT_ID FROM dual where PJI_UTILS.GET_SETUP_PARAMETER('TXN_CURR_FLAG') = 'Y'
7159                     ) invert
7160                                 )  collapse_bl
7161                                 ----  End of second inline view 'collapse_bl' ..........
7162                         GROUP BY
7163               collapse_bl.PROJECT_ID
7164             , collapse_bl.WBS_ELEMENT_ID
7165             -- ,  time_id, period_type_id, calendar type.., slice type, rollpu flag...
7166             , collapse_bl.RBS_ELEMENT_ID
7167             , collapse_bl.RBS_STRUCT_VERSION_ID
7168                         , collapse_bl.plan_type_id
7169             , collapse_bl.BUDGET_VERSION_ID
7170             , collapse_bl.PROJECT_ORGANIZATION_ID
7171             , collapse_bl.PROJECT_ORG_ID
7172             , collapse_bl.BILLABLE_FLAG
7173             , collapse_bl.RESOURCE_CLASS
7174             , collapse_bl.CURRENCY_CODE
7175             , collapse_bl.period_name
7176             , collapse_bl.row_id
7177             , collapse_bl.plan_type_code
7178        ) plr
7179                                 ----  End of first inline view plr ..........
7180        , PJI_ORG_EXTR_INFO            orginfo
7181        , PJI_FM_EXTR_PLNVER3_T     vers
7182        , pji_time_cal_period_v       pji_time
7183          WHERE  1=1
7184            AND    plr.project_org_id       = orginfo.org_id
7185            AND    plr.project_id             = vers.project_id
7186            AND    plr.budget_version_id      = vers.plan_version_id
7187            AND    plr.plan_type_code = vers.plan_type_code   /* 4471527 */
7188            AND    DECODE(vers.time_phased_type_code
7189                    , 'P', orginfo.pa_calendar_id
7190                    , 'G', orginfo.gl_calendar_id
7191                    , - l_max_plnver_id )
7192                                      = pji_time.calendar_id
7193            AND    plr.period_name = pji_time.name
7194            AND vers.time_phased_type_code IN ('P', 'G', 'N')
7195        GROUP BY
7196          plr.PROJECT_ID
7197        , plr.WBS_ELEMENT_ID
7198        , DECODE(vers.time_phased_type_code
7199               , 'N', -1
7200               , pji_time.cal_period_id)
7201        , DECODE(vers.time_phased_type_code
7202               , 'P', 32
7203               , 'G', 32
7204               , 'N', 2048)   -- period type id...
7205        , DECODE(vers.time_phased_type_code
7206                , 'P', 'P'
7207                , 'G', 'G'
7208                , 'N', 'A'
7209                            , 'X')     --   CALENDAR_TYPE
7210        , plr.CURR_RECORD_TYPE  -- curr code missing.
7211            , plr.currency_code
7212        , plr.RBS_ELEMENT_ID
7213        , plr.RBS_STRUCT_VERSION_ID
7214            , plr.plan_type_id
7215        , plr.BUDGET_VERSION_ID
7216        , plr.project_ORGANIZATION_ID
7217        , plr.project_ORG_ID
7218        , plr.plan_type_code ;       /* 4471527 */
7219 
7220 
7221   print_time ( ' REVERSE_ETC END, # Processed rows is ' || SQL%ROWCOUNT ) ;
7222 
7223   DELETE_NTP_CAL_RECORD ( p_max_plnver_id => l_max_plnver_id );
7224 
7225 EXCEPTION
7226   WHEN OTHERS THEN
7227     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7228                              p_procedure_name => 'REVERSE_ETC');
7229     RAISE;
7230 END;
7231 
7232 
7233 PROCEDURE UPDATE_FP_ROWS IS
7234 
7235   l_last_update_date  DATE   := SYSDATE;
7236   l_last_updated_by   NUMBER := FND_GLOBAL.USER_ID;
7237   l_last_update_login NUMBER := FND_GLOBAL.LOGIN_ID;
7238 
7239 BEGIN
7240 
7241     UPDATE /*+ ordered use_nl(rl) rowid(rl) */
7242       pji_fp_xbs_accum_f rl
7243     SET (
7244       rl.RAW_COST
7245     , rl.BRDN_COST
7246     , rl.REVENUE
7247     , rl.BILL_RAW_COST
7248     , rl.BILL_BRDN_COST
7249     , rl.BILL_LABOR_RAW_COST
7250     , rl.BILL_LABOR_BRDN_COST
7251     , rl.BILL_LABOR_HRS
7252     , rl.EQUIPMENT_RAW_COST
7253     , rl.EQUIPMENT_BRDN_COST
7254     , rl.CAPITALIZABLE_RAW_COST
7255     , rl.CAPITALIZABLE_BRDN_COST
7256     , rl.LABOR_RAW_COST
7257     , rl.LABOR_BRDN_COST
7258     , rl.LABOR_HRS
7259     , rl.LABOR_REVENUE
7260     , rl.EQUIPMENT_HOURS
7261     , rl.BILLABLE_EQUIPMENT_HOURS
7262     , rl.SUP_INV_COMMITTED_COST
7263     , rl.PO_COMMITTED_COST
7264     , rl.PR_COMMITTED_COST
7265     , rl.OTH_COMMITTED_COST
7266     , rl.ACT_LABOR_HRS
7267    , rl.ACT_EQUIP_HRS
7268    , rl.ACT_LABOR_BRDN_COST
7269    , rl.ACT_EQUIP_BRDN_COST
7270    , rl.ACT_BRDN_COST
7271    , rl.ACT_RAW_COST
7272    , rl.ACT_REVENUE
7273    , rl.ACT_LABOR_RAW_COST
7274     , rl.ACT_EQUIP_RAW_COST
7275    , rl.ETC_LABOR_HRS
7276    , rl.ETC_EQUIP_HRS
7277    , rl.ETC_LABOR_BRDN_COST
7278    , rl.ETC_EQUIP_BRDN_COST
7279    , rl.ETC_BRDN_COST
7280     , rl.ETC_RAW_COST
7281     , rl.ETC_LABOR_RAW_COST
7282     , rl.ETC_EQUIP_RAW_COST
7283     , rl.CUSTOM1
7284     , rl.CUSTOM2
7285     , rl.CUSTOM3
7286     , rl.CUSTOM4
7287     , rl.CUSTOM5
7288     , rl.CUSTOM6
7289     , rl.CUSTOM7
7290     , rl.CUSTOM8
7291     , rl.CUSTOM9
7292     , rl.CUSTOM10
7293     , rl.CUSTOM11
7294     , rl.CUSTOM12
7295     , rl.CUSTOM13
7296     , rl.CUSTOM14
7297     , rl.CUSTOM15
7298     , rl.last_update_date
7299     , rl.last_updated_by
7300     , rl.last_update_login
7301         ) =
7302     (
7303       SELECT  /*+  ORDERED ROWID(TMP) index(rwid,PJI_FP_RMAP_FPR_T_N1) */
7304          NVL(rl.RAW_COST, 0) + NVL(tmp.RAW_COST, 0)
7305        , NVL(rl.BRDN_COST, 0) + NVL(tmp.BRDN_COST, 0)
7306        , NVL(rl.REVENUE, 0) + NVL(tmp.REVENUE, 0)
7307        , NVL(rl.BILL_RAW_COST, 0) + NVL(tmp.BILL_RAW_COST, 0)
7308        , NVL(rl.BILL_BRDN_COST, 0) + NVL(tmp.BILL_BRDN_COST, 0)
7309        , NVL(rl.BILL_LABOR_RAW_COST, 0) + NVL(tmp.BILL_LABOR_RAW_COST, 0)
7310        , NVL(rl.BILL_LABOR_BRDN_COST, 0) + NVL(tmp.BILL_LABOR_BRDN_COST, 0)
7311        , NVL(rl.BILL_LABOR_HRS, 0) + NVL(tmp.BILL_LABOR_HRS, 0)
7312        , NVL(rl.EQUIPMENT_RAW_COST, 0) + NVL(tmp.EQUIPMENT_RAW_COST, 0)
7313        , NVL(rl.EQUIPMENT_BRDN_COST, 0) + NVL(tmp.EQUIPMENT_BRDN_COST, 0)
7314        , NVL(rl.CAPITALIZABLE_RAW_COST, 0) + NVL(tmp.CAPITALIZABLE_RAW_COST  , 0)
7315        , NVL(rl.CAPITALIZABLE_BRDN_COST, 0) + NVL(tmp.CAPITALIZABLE_BRDN_COST    , 0)
7316        , NVL(rl.LABOR_RAW_COST, 0) + NVL(tmp.LABOR_RAW_COST, 0)
7317        , NVL(rl.LABOR_BRDN_COST, 0) + NVL(tmp.LABOR_BRDN_COST, 0)
7318        , NVL(rl.LABOR_HRS, 0) + NVL(tmp.LABOR_HRS, 0)
7319        , NVL(rl.LABOR_REVENUE, 0) + NVL(tmp.LABOR_REVENUE, 0)
7320        , NVL(rl.EQUIPMENT_HOURS, 0) + NVL(tmp.EQUIPMENT_HOURS, 0)
7321        , NVL(rl.BILLABLE_EQUIPMENT_HOURS, 0) + NVL(tmp.BILLABLE_EQUIPMENT_HOURS, 0)
7322        , NVL(rl.SUP_INV_COMMITTED_COST, 0) + NVL(tmp.SUP_INV_COMMITTED_COST, 0)
7323        , NVL(rl.PO_COMMITTED_COST, 0) + NVL(tmp.PO_COMMITTED_COST, 0)
7324        , NVL(rl.PR_COMMITTED_COST, 0) + NVL(tmp.PR_COMMITTED_COST, 0)
7325        , NVL(rl.OTH_COMMITTED_COST, 0) + NVL(tmp.OTH_COMMITTED_COST, 0)
7326        , NVL(rl.ACT_LABOR_HRS, 0) + NVL(tmp.ACT_LABOR_HRS, 0)
7327            , NVL(rl.ACT_EQUIP_HRS, 0) + NVL(tmp.ACT_EQUIP_HRS, 0)
7328            , NVL(rl.ACT_LABOR_BRDN_COST, 0) + NVL(tmp.ACT_LABOR_BRDN_COST, 0)
7329            , NVL(rl.ACT_EQUIP_BRDN_COST, 0) + NVL(tmp.ACT_EQUIP_BRDN_COST, 0)
7330            , NVL(rl.ACT_BRDN_COST, 0) + NVL(tmp.ACT_BRDN_COST, 0)
7331            , NVL(rl.ACT_RAW_COST, 0) + NVL(tmp.ACT_RAW_COST, 0)
7332            , NVL(rl.ACT_REVENUE, 0) + NVL(tmp.ACT_REVENUE, 0)
7333          , NVL(rl.ACT_LABOR_RAW_COST, 0) + NVL(tmp.ACT_LABOR_RAW_COST, 0)
7334          , NVL(rl.ACT_EQUIP_RAW_COST, 0) + NVL(tmp.ACT_EQUIP_RAW_COST, 0)
7335            , DECODE ( ver3.wp_flag
7336                       , 'Y'
7337                       , DECODE(TO_CHAR(tmp.ETC_LABOR_HRS)
7338                                  , NULL
7339                              , NVL(rl.etc_labor_hrs, 0) + NVL(tmp.labor_hrs, 0)
7340                                          , NVL(rl.ETC_LABOR_HRS, 0) + tmp.ETC_LABOR_HRS
7341                                   )
7342                             , NVL(rl.ETC_LABOR_HRS, 0) + NVL(tmp.ETC_LABOR_HRS, 0)
7343                       ) ETC_LABOR_HRS
7344          , DECODE ( ver3.wp_flag
7345                       , 'Y'
7346                       , DECODE(TO_CHAR(tmp.ETC_EQUIP_HRS)
7347                                      , NULL
7348                              , NVL(rl.ETC_EQUIP_HRS, 0) + NVL(tmp.EQUIPMENT_hours, 0)
7349                                              , NVL(rl.ETC_EQUIP_HRS, 0) + tmp.ETC_EQUIP_HRS
7350                                             )
7351                               , NVL(rl.ETC_EQUIP_HRS, 0) + NVL(tmp.ETC_EQUIP_HRS, 0)
7352                             ) ETC_EQUIP_HRS
7353                  , DECODE ( ver3.wp_flag
7354                       , 'Y'
7355                       , DECODE(TO_CHAR(tmp.ETC_LABOR_BRDN_COST)
7356                              , NULL
7357                              , NVL(rl.ETC_LABOR_BRDN_COST, 0) + NVL(tmp.labor_BRDN_COST, 0)
7358                              , NVL(rl.ETC_LABOR_BRDN_COST, 0) + tmp.ETC_LABOR_BRDN_COST
7359                                                  )
7360                                 , NVL(rl.ETC_LABOR_BRDN_COST, 0) + NVL(tmp.ETC_LABOR_BRDN_COST, 0)
7361                                   ) ETC_LABOR_BRDN_COST
7362                  , DECODE ( ver3.wp_flag
7363                       , 'Y'
7364                       , DECODE(TO_CHAR(tmp.ETC_EQUIP_BRDN_COST)
7365                                      , NULL
7366                       , NVL(rl.ETC_equip_BRDN_COST, 0) + NVL(tmp.EQUIPment_BRDN_COST, 0)
7367                               , NVL(rl.ETC_equip_BRDN_COST, 0) + tmp.ETC_equip_BRDN_COST
7368                                       )
7369                             , NVL(rl.ETC_EQUIP_BRDN_COST, 0) + NVL(tmp.ETC_EQUIP_BRDN_COST, 0)
7370                                   ) ETC_EQUIP_BRDN_COST
7371                  , DECODE ( ver3.wp_flag
7372                       , 'Y'
7373                       , DECODE(TO_CHAR(tmp.ETC_BRDN_COST)
7374                                      , NULL
7375                              , NVL(rl.ETC_BRDN_COST, 0) + NVL(tmp.BRDN_COST, 0)
7376                              , NVL(rl.ETC_BRDN_COST, 0) + tmp.ETC_BRDN_COST
7377 
7378                                                )
7379                                           , NVL(rl.ETC_BRDN_COST, 0) + NVL(tmp.ETC_BRDN_COST, 0)
7380                                   ) ETC_BRDN_COST
7381                  , DECODE ( ver3.wp_flag
7382                      , 'Y'
7383                      , DECODE(TO_CHAR(tmp.ETC_raw_COST)
7384                              , NULL
7385                      , NVL(rl.ETC_raw_COST, 0) + NVL(tmp.raw_COST, 0)
7386                      , NVL(rl.ETC_raw_COST, 0) + tmp.ETC_raw_COST
7387                                      )
7388                            , NVL(rl.ETC_raw_COST, 0) + NVL(tmp.ETC_raw_COST, 0)
7389                                   ) ETC_RAW_COST
7390                  , DECODE ( ver3.wp_flag
7391                       , 'Y'
7392                       , DECODE(TO_CHAR(tmp.ETC_labor_raw_COST)
7393                                      , NULL
7394                              , NVL(rl.ETC_labor_raw_COST, 0) + NVL(tmp.labor_raw_COST, 0)
7395                                              , NVL(rl.ETC_labor_raw_COST, 0) + tmp.ETC_labor_raw_COST
7396                                       )
7397                                  , NVL(rl.ETC_labor_raw_COST, 0) + NVL(tmp.ETC_labor_raw_COST, 0)
7398                                   ) ETC_LABOR_RAW_COST
7399                  , DECODE ( ver3.wp_flag
7400                       , 'Y'
7401                       , DECODE(TO_CHAR(tmp.ETC_equip_raw_COST)
7402                                      , NULL
7403                              , NVL(rl.ETC_equip_raw_COST, 0) + NVL(tmp.equipment_raw_COST, 0)
7404                              , NVL(rl.ETC_equip_raw_COST, 0) + tmp.ETC_equip_raw_COST
7405                                       )
7406                                    , NVL(rl.ETC_equip_raw_COST, 0) + NVL(tmp.ETC_equip_raw_COST, 0)
7407                             ) ETC_EQUIP_RAW_COST
7408        , NVL(rl.CUSTOM1, 0) + NVL(tmp.CUSTOM1, 0)
7409        , NVL(rl.CUSTOM2, 0) + NVL(tmp.CUSTOM2, 0)
7410        , NVL(rl.CUSTOM3, 0) + NVL(tmp.CUSTOM3, 0)
7411        , NVL(rl.CUSTOM4, 0) + NVL(tmp.CUSTOM4, 0)
7412        , NVL(rl.CUSTOM5, 0) + NVL(tmp.CUSTOM5, 0)
7413        , NVL(rl.CUSTOM6, 0) + NVL(tmp.CUSTOM6, 0)
7414        , NVL(rl.CUSTOM7, 0) + NVL(tmp.CUSTOM7, 0)
7415        , NVL(rl.CUSTOM8, 0) + NVL(tmp.CUSTOM8, 0)
7416        , NVL(rl.CUSTOM9, 0) + NVL(tmp.CUSTOM9, 0)
7417        , NVL(rl.CUSTOM10, 0) + NVL(tmp.CUSTOM10, 0)
7418        , NVL(rl.CUSTOM11, 0) + NVL(tmp.CUSTOM11, 0)
7419        , NVL(rl.CUSTOM12, 0) + NVL(tmp.CUSTOM12, 0)
7420        , NVL(rl.CUSTOM13, 0) + NVL(tmp.CUSTOM13, 0)
7421        , NVL(rl.CUSTOM14, 0) + NVL(tmp.CUSTOM14, 0)
7422        , NVL(rl.CUSTOM15, 0) + NVL(tmp.CUSTOM15, 0)
7423        , SYSDATE
7424        , l_last_updated_by
7425        , l_last_update_login
7426      FROM
7427        PJI_FP_RMAP_FPR_T           rwid
7428      , pji_fp_aggr_pjp1_t          tmp
7429      , pji_pjp_wbs_header          ver3
7430      WHERE  1 = 1
7431           AND tmp.rowid = rwid.pjp1_rowid
7432           AND rl.rowid = rwid.fpr_rowid
7433           AND rwid.fpr_rowid IS NOT NULL
7434           AND ver3.plan_version_id = tmp.plan_version_id
7435               AND ver3.plan_type_code = tmp.plan_type_code   /* 4471527 */
7436         AND rwid.worker_id = g_worker_id
7437         AND tmp.worker_id = g_worker_id
7438         -- AND ver3.worker_id = g_worker_id
7439         AND tmp.project_id = ver3.project_id
7440         AND tmp.plan_type_id = NVL(ver3.plan_type_id, -1) -- each plan type can have a different -3, -4 slice.
7441         )
7442      WHERE rl.rowid IN
7443              (
7444                    SELECT rwid.fpr_rowid
7445                    FROM PJI_FP_RMAP_FPR_T rwid
7446                    WHERE rwid.fpr_rowid IS NOT NULL
7447                  AND rwid.worker_id = g_worker_id
7448                    );
7449 
7450   print_time ( ' MERGE_INTO_FP_FACT 2.1 ' || sql%rowcount ) ;
7451 
7452 
7453 EXCEPTION
7454   WHEN OTHERS THEN
7455     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7456                              p_procedure_name => 'UPDATE_FP_ROWS');
7457     RAISE;
7458 END;
7459 
7460 
7461 PROCEDURE INSERT_FP_ROWS IS
7462 
7463     l_last_update_date     date   := SYSDATE;
7464     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
7465     l_creation_date        date   := SYSDATE;
7466     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
7467     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
7468 
7469 BEGIN
7470 
7471   INSERT INTO pji_fp_xbs_accum_f  fact
7472   (
7473        PROJECT_ID
7474      , PROJECT_ORG_ID
7475      , PROJECT_ORGANIZATION_ID
7476      , PROJECT_ELEMENT_ID
7477      , TIME_ID
7478      , PERIOD_TYPE_ID
7479      , CALENDAR_TYPE
7480      , RBS_AGGR_LEVEL
7481      , WBS_ROLLUP_FLAG
7482      , PRG_ROLLUP_FLAG
7483      , CURR_RECORD_TYPE_ID
7484      , CURRENCY_CODE
7485      , RBS_ELEMENT_ID
7486      , RBS_VERSION_ID
7487      , PLAN_VERSION_ID
7488      , PLAN_TYPE_ID
7489      , LAST_UPDATE_DATE
7490      , LAST_UPDATED_BY
7491      , CREATION_DATE
7492      , CREATED_BY
7493      , LAST_UPDATE_LOGIN
7494      , RAW_COST
7495      , BRDN_COST
7496      , REVENUE
7497      , BILL_RAW_COST
7498      , BILL_BRDN_COST
7499      , BILL_LABOR_RAW_COST
7500      , BILL_LABOR_BRDN_COST
7501      , BILL_LABOR_HRS
7502      , EQUIPMENT_RAW_COST
7503      , EQUIPMENT_BRDN_COST
7504      , CAPITALIZABLE_RAW_COST
7505      , CAPITALIZABLE_BRDN_COST
7506      , LABOR_RAW_COST
7507      , LABOR_BRDN_COST
7508      , LABOR_HRS
7509      , LABOR_REVENUE
7510      , EQUIPMENT_HOURS
7511      , BILLABLE_EQUIPMENT_HOURS
7512      , SUP_INV_COMMITTED_COST
7513      , PO_COMMITTED_COST
7514      , PR_COMMITTED_COST
7515      , OTH_COMMITTED_COST
7516        , ACT_LABOR_HRS
7517            , ACT_EQUIP_HRS
7518            , ACT_LABOR_BRDN_COST
7519            , ACT_EQUIP_BRDN_COST
7520            , ACT_BRDN_COST
7521            , ACT_RAW_COST
7522            , ACT_REVENUE
7523          , ACT_LABOR_RAW_COST
7524          , ACT_EQUIP_RAW_COST
7525            , ETC_LABOR_HRS
7526            , ETC_EQUIP_HRS
7527            , ETC_LABOR_BRDN_COST
7528            , ETC_EQUIP_BRDN_COST
7529            , ETC_BRDN_COST
7530          , ETC_RAW_COST
7531          , ETC_LABOR_RAW_COST
7532          , ETC_EQUIP_RAW_COST
7533      , CUSTOM1
7534      , CUSTOM2
7535      , CUSTOM3
7536      , CUSTOM4
7537      , CUSTOM5
7538      , CUSTOM6
7539      , CUSTOM7
7540      , CUSTOM8
7541      , CUSTOM9
7542      , CUSTOM10
7543      , CUSTOM11
7544      , CUSTOM12
7545      , CUSTOM13
7546      , CUSTOM14
7547      , CUSTOM15
7548      , PLAN_TYPE_CODE     /* 4471527 */
7549   )
7550   SELECT /*+ ordered full(rwid) rowid(tmp) */
7551        tmp.PROJECT_ID
7552      , tmp.PROJECT_ORG_ID
7553      , tmp.PROJECT_ORGANIZATION_ID
7554      -- , PARTITION_ID
7555      , tmp.PROJECT_ELEMENT_ID
7556      , tmp.TIME_ID
7557      , tmp.PERIOD_TYPE_ID
7558      , tmp.CALENDAR_TYPE
7559      , tmp.RBS_AGGR_LEVEL
7560      , tmp.WBS_ROLLUP_FLAG
7561      , tmp.PRG_ROLLUP_FLAG
7562      , tmp.CURR_RECORD_TYPE_ID
7563      , tmp.CURRENCY_CODE
7564      , tmp.RBS_ELEMENT_ID
7565      , tmp.RBS_VERSION_ID
7566      , ver3.PLAN_VERSION_ID
7567      , tmp.PLAN_TYPE_ID
7568      , l_last_update_date
7569      , l_last_updated_by
7570      , l_creation_date
7571      , l_created_by
7572      , l_last_update_login
7573      , RAW_COST
7574      , BRDN_COST
7575      , REVENUE
7576      , BILL_RAW_COST
7577      , BILL_BRDN_COST
7578      , BILL_LABOR_RAW_COST
7579      , BILL_LABOR_BRDN_COST
7580      , BILL_LABOR_HRS
7581      , EQUIPMENT_RAW_COST
7582      , EQUIPMENT_BRDN_COST
7583      , CAPITALIZABLE_RAW_COST
7584      , CAPITALIZABLE_BRDN_COST
7585      , LABOR_RAW_COST
7586      , LABOR_BRDN_COST
7587      , LABOR_HRS
7588      , LABOR_REVENUE
7589      , EQUIPMENT_HOURS
7590      , BILLABLE_EQUIPMENT_HOURS
7591      , SUP_INV_COMMITTED_COST
7592      , PO_COMMITTED_COST
7593      , PR_COMMITTED_COST
7594      , OTH_COMMITTED_COST
7595        , ACT_LABOR_HRS
7596            , ACT_EQUIP_HRS
7597            , ACT_LABOR_BRDN_COST
7598            , ACT_EQUIP_BRDN_COST
7599            , ACT_BRDN_COST
7600            , ACT_RAW_COST
7601            , ACT_REVENUE
7602          , ACT_LABOR_RAW_COST
7603          , ACT_EQUIP_RAW_COST
7604            , DECODE ( ver3.wp_flag
7605                       , 'Y'
7606                       , DECODE(TO_CHAR(tmp.ETC_LABOR_HRS)  -- For Workplan
7607                                  , NULL
7608                              , NVL(tmp.labor_hrs, 0)
7609                              , NVL(tmp.ETC_LABOR_HRS, 0)
7610                               )
7611                                       , NVL(tmp.ETC_LABOR_HRS, 0)
7612                        ) ETC_LABOR_HRS
7613                  , DECODE ( ver3.wp_flag
7614                           , 'Y'
7615                           , DECODE(TO_CHAR(tmp.ETC_EQUIP_HRS)
7616                                          , NULL
7617                                  , NVL(tmp.EQUIPMENT_hours, 0)
7618                                                      , NVL(tmp.ETC_EQUIP_HRS, 0)
7619                                             )
7620                                , NVL(tmp.ETC_EQUIP_HRS, 0)
7621                             ) ETC_EQUIP_HRS
7622                  , DECODE ( ver3.wp_flag
7623                       , 'Y'
7624                       , DECODE(TO_CHAR(tmp.ETC_LABOR_BRDN_COST)
7625                                      , NULL
7626                              , NVL(tmp.labor_BRDN_COST, 0)
7627                                              , NVL(tmp.ETC_LABOR_BRDN_COST, 0)
7628                                          )
7629                                  , NVL(tmp.ETC_LABOR_BRDN_COST, 0)
7630                            ) ETC_LABOR_BRDN_COST
7631                  , DECODE ( ver3.wp_flag
7632                       , 'Y'
7633                       , DECODE(TO_CHAR(tmp.ETC_EQUIP_BRDN_COST)
7634                                      , NULL
7635                              , NVL(tmp.EQUIPment_BRDN_COST, 0)
7636                                  , NVL(tmp.ETC_equip_BRDN_COST, 0)
7637                                       )
7638                                   , NVL(tmp.ETC_EQUIP_BRDN_COST, 0)
7639                                   ) ETC_equip_BRDN_COST
7640                  , DECODE ( ver3.wp_flag
7641                       , 'Y'
7642                       , DECODE(TO_CHAR(tmp.ETC_BRDN_COST)
7643                                      , NULL
7644                              , NVL(tmp.BRDN_COST, 0)
7645                                              , NVL(tmp.ETC_BRDN_COST, 0)
7646                                       )
7647                                 , NVL(tmp.ETC_BRDN_COST, 0)
7648                                   ) ETC_BRDN_COST
7649                  , DECODE ( ver3.wp_flag
7650                      , 'Y'
7651                      , DECODE(TO_CHAR(tmp.ETC_raw_COST)
7652                                     , NULL
7653                             , NVL(tmp.raw_COST, 0)
7654                                             , NVL(tmp.ETC_raw_COST, 0)
7655                                      )
7656                                , NVL(tmp.ETC_raw_COST, 0)
7657                                   ) ETC_raw_COST
7658                  , DECODE ( ver3.wp_flag
7659                       , 'Y'
7660                       , DECODE(TO_CHAR(tmp.ETC_labor_raw_COST)
7661                                      , NULL
7662                              , NVL(tmp.labor_raw_COST, 0)
7663                                              , NVL(tmp.ETC_labor_raw_COST, 0)
7664                                       )
7665                                 , NVL(tmp.ETC_labor_raw_COST, 0)
7666                                   ) ETC_labor_raw_COST
7667                  , DECODE ( ver3.wp_flag
7668                       , 'Y'
7669                       , DECODE(TO_CHAR(tmp.ETC_equip_raw_COST)
7670                                      , NULL
7671                              , NVL(tmp.equipment_raw_COST, 0)
7672                              ,  NVL(tmp.ETC_equip_raw_COST, 0)
7673                                       )
7674                                 , NVL(tmp.ETC_equip_raw_COST, 0)
7675                             ) ETC_equip_raw_COST
7676      , CUSTOM1
7677      , CUSTOM2
7678      , CUSTOM3
7679      , CUSTOM4
7680      , CUSTOM5
7681      , CUSTOM6
7682      , CUSTOM7
7683      , CUSTOM8
7684      , CUSTOM9
7685      , CUSTOM10
7686      , CUSTOM11
7687      , CUSTOM12
7688      , CUSTOM13
7689      , CUSTOM14
7690      , CUSTOM15
7691      , tmp.plan_type_code     /* 4471527 */
7692   FROM PJI_FP_RMAP_FPR_T  rwid
7693      , pji_fp_aggr_pjp1_t tmp
7694      , pji_pjp_wbs_header ver3  -- replaced ver3 with wbs header for project-to-program association event.
7695   WHERE 1 = 1
7696    AND tmp.worker_id = g_worker_id
7697    AND rwid.worker_id = g_worker_id
7698    AND tmp.rowid = rwid.pjp1_rowid
7699    AND rwid.fpr_rowid IS NULL
7700    AND ver3.plan_version_id = tmp.plan_version_id
7701    AND ver3.plan_type_code = tmp.plan_type_code    /* 4471527 */
7702    AND tmp.project_id = ver3.project_id -- use index.
7703    AND tmp.plan_type_id = NVL(ver3.plan_type_id, -1) -- each plan type can have a different -3, -4 slice.
7704   ORDER BY
7705     tmp.PROJECT_ID
7706   , ver3.PLAN_VERSION_ID
7707   , tmp.PROJECT_ELEMENT_ID
7708   , tmp.TIME_ID
7709   , tmp.RBS_VERSION_ID;
7710 
7711   print_time ( ' MERGE_INTO_FP_FACT 3.1 worker id..' || g_worker_id || 'row count '  || SQL%ROWCOUNT) ;
7712 
7713 
7714 EXCEPTION
7715   WHEN OTHERS THEN
7716     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7717                              p_procedure_name => 'INSERT_FP_ROWS');
7718     RAISE;
7719 END;
7720 
7721 
7722 PROCEDURE INSERT_INTO_AC_FACT IS
7723     l_last_update_date     date   := SYSDATE;
7724     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
7725     l_creation_date        date   := SYSDATE;
7726     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
7727     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
7728 BEGIN
7729 
7730   INSERT INTO PJI_AC_XBS_ACCUM_F
7731   (
7732      PROJECT_ID
7733    , PROJECT_ORG_ID
7734    , PROJECT_ORGANIZATION_ID
7735    , PROJECT_ELEMENT_ID
7736    , TIME_ID
7737    , PERIOD_TYPE_ID
7738    , CALENDAR_TYPE
7739    , WBS_ROLLUP_FLAG
7740    , PRG_ROLLUP_FLAG
7741    , CURR_RECORD_TYPE_ID
7742    , CURRENCY_CODE
7743    , REVENUE
7744    , INITIAL_FUNDING_AMOUNT
7745    , INITIAL_FUNDING_COUNT
7746    , ADDITIONAL_FUNDING_AMOUNT
7747    , ADDITIONAL_FUNDING_COUNT
7748    , CANCELLED_FUNDING_AMOUNT
7749    , CANCELLED_FUNDING_COUNT
7750    , FUNDING_ADJUSTMENT_AMOUNT
7751    , FUNDING_ADJUSTMENT_COUNT
7752    , REVENUE_WRITEOFF
7753    , AR_INVOICE_AMOUNT
7754    , AR_INVOICE_COUNT
7755    , AR_CASH_APPLIED_AMOUNT
7756    , AR_INVOICE_WRITE_OFF_AMOUNT
7757    , AR_INVOICE_WRITEOFF_COUNT
7758    , AR_CREDIT_MEMO_AMOUNT
7759    , AR_CREDIT_MEMO_COUNT
7760    , UNBILLED_RECEIVABLES
7761    , UNEARNED_REVENUE
7762    , AR_UNAPPR_INVOICE_AMOUNT
7763    , AR_UNAPPR_INVOICE_COUNT
7764    , AR_APPR_INVOICE_AMOUNT
7765    , AR_APPR_INVOICE_COUNT
7766    , AR_AMOUNT_DUE
7767    , AR_COUNT_DUE
7768    , AR_AMOUNT_OVERDUE
7769    , AR_COUNT_OVERDUE
7770    , DORMANT_BACKLOG_INACTIV
7771    , DORMANT_BACKLOG_START
7772    , LOST_BACKLOG
7773    , ACTIVE_BACKLOG
7774    , REVENUE_AT_RISK
7775    , LAST_UPDATE_DATE
7776    , LAST_UPDATED_BY
7777    , CREATION_DATE
7778    , CREATED_BY
7779    , LAST_UPDATE_LOGIN
7780    , CUSTOM1
7781    , CUSTOM2
7782    , CUSTOM3
7783    , CUSTOM4
7784    , CUSTOM5
7785    , CUSTOM6
7786    , CUSTOM7
7787    , CUSTOM8
7788    , CUSTOM9
7789    , CUSTOM10
7790    , CUSTOM11
7791    , CUSTOM12
7792    , CUSTOM13
7793    , CUSTOM14
7794    , CUSTOM15
7795   )
7796   SELECT
7797      PROJECT_ID
7798    , PROJECT_ORG_ID
7799    , PROJECT_ORGANIZATION_ID
7800    , PROJECT_ELEMENT_ID
7801    , TIME_ID
7802    , PERIOD_TYPE_ID
7803    , CALENDAR_TYPE
7804    , WBS_ROLLUP_FLAG
7805    , PRG_ROLLUP_FLAG
7806    , CURR_RECORD_TYPE_ID
7807    , CURRENCY_CODE
7808    , REVENUE
7809    , INITIAL_FUNDING_AMOUNT
7810    , INITIAL_FUNDING_COUNT
7811    , ADDITIONAL_FUNDING_AMOUNT
7812    , ADDITIONAL_FUNDING_COUNT
7813    , CANCELLED_FUNDING_AMOUNT
7814    , CANCELLED_FUNDING_COUNT
7815    , FUNDING_ADJUSTMENT_AMOUNT
7816    , FUNDING_ADJUSTMENT_COUNT
7817    , REVENUE_WRITEOFF
7818    , AR_INVOICE_AMOUNT
7819    , AR_INVOICE_COUNT
7820    , AR_CASH_APPLIED_AMOUNT
7821    , AR_INVOICE_WRITE_OFF_AMOUNT
7822    , AR_INVOICE_WRITEOFF_COUNT
7823    , AR_CREDIT_MEMO_AMOUNT
7824    , AR_CREDIT_MEMO_COUNT
7825    , UNBILLED_RECEIVABLES
7826    , UNEARNED_REVENUE
7827    , AR_UNAPPR_INVOICE_AMOUNT
7828    , AR_UNAPPR_INVOICE_COUNT
7829    , AR_APPR_INVOICE_AMOUNT
7830    , AR_APPR_INVOICE_COUNT
7831    , AR_AMOUNT_DUE
7832    , AR_COUNT_DUE
7833    , AR_AMOUNT_OVERDUE
7834    , AR_COUNT_OVERDUE
7835    , DORMANT_BACKLOG_INACTIV
7836    , DORMANT_BACKLOG_START
7837    , LOST_BACKLOG
7838    , ACTIVE_BACKLOG
7839    , REVENUE_AT_RISK
7840    , l_last_update_date
7841    , l_last_updated_by
7842    , l_creation_date
7843    , l_created_by
7844    , l_last_update_login
7845    , CUSTOM1
7846    , CUSTOM2
7847    , CUSTOM3
7848    , CUSTOM4
7849    , CUSTOM5
7850    , CUSTOM6
7851    , CUSTOM7
7852    , CUSTOM8
7853    , CUSTOM9
7854    , CUSTOM10
7855    , CUSTOM11
7856    , CUSTOM12
7857    , CUSTOM13
7858    , CUSTOM14
7859    , CUSTOM15
7860   FROM PJI_AC_AGGR_PJP1_T
7861   WHERE worker_id = g_worker_id
7862   ORDER BY
7863      PROJECT_ID
7864    , PROJECT_ELEMENT_ID
7865    , TIME_ID
7866    , CURRENCY_CODE;
7867 
7868 EXCEPTION
7869   WHEN OTHERS THEN
7870     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7871                              p_procedure_name => 'INSERT_INTO_AC_FACT');
7872     RAISE;
7873 END;
7874 
7875 
7876 PROCEDURE MERGE_INTO_AC_FACT IS
7877 BEGIN
7878 
7879   CLEANUP_AC_RMAP_FPR;
7880 
7881   GET_AC_ROW_IDS;
7882 
7883   UPDATE_AC_ROWS;
7884 
7885   INSERT_AC_ROWS;
7886 
7887 EXCEPTION
7888   WHEN OTHERS THEN
7889     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7890                              p_procedure_name => 'MERGE_INTO_AC_FACT');
7891     RAISE;
7892 END;
7893 
7894 
7895 PROCEDURE CLEANUP_AC_RMAP_FPR IS
7896 BEGIN
7897 
7898   DELETE FROM PJI_ac_RMAP_acR_T
7899   WHERE worker_id = g_worker_id;
7900 
7901 EXCEPTION
7902   WHEN OTHERS THEN
7903     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7904                              p_procedure_name => 'CLEANUP_AC_RMAP_FPR');
7905     RAISE;
7906 END;
7907 
7908 
7909 PROCEDURE GET_AC_ROW_IDS IS
7910 BEGIN
7911 
7912   INSERT INTO PJI_ac_RMAP_acR_T
7913   (
7914      worker_id
7915    , pjp1_rowid
7916    , fpr_rowid
7917   )
7918   SELECT
7919     g_worker_id WORKER_ID
7920   , tmp.ROWID   PJP1_ROWID
7921   , rl.ROWID    FPR_ROWID
7922   FROM
7923     PJI_AC_AGGR_PJP1_T            tmp
7924   , PJI_AC_XBS_ACCUM_F          rl
7925   WHERE 1 = 1
7926    AND tmp.worker_id = g_worker_id
7927    AND tmp.PROJECT_ID = rl.PROJECT_ID (+)
7928    AND tmp.PROJECT_ORG_ID = rl.PROJECT_ORG_ID (+)
7929    AND tmp.PROJECT_ORGANIZATION_ID = rl.PROJECT_ORGANIZATION_ID (+)
7930    AND tmp.PROJECT_ELEMENT_ID = rl.PROJECT_ELEMENT_ID (+)
7931    AND tmp.TIME_ID = rl.TIME_ID (+)
7932    AND tmp.PERIOD_TYPE_ID = rl.PERIOD_TYPE_ID (+)
7933    AND tmp.CALENDAR_TYPE = rl.CALENDAR_TYPE (+)
7934    AND tmp.WBS_ROLLUP_FLAG = rl.WBS_ROLLUP_FLAG (+)
7935    AND tmp.PRG_ROLLUP_FLAG = rl.PRG_ROLLUP_FLAG (+)
7936    AND tmp.CURR_RECORD_TYPE_ID = rl.CURR_RECORD_TYPE_ID (+)
7937    AND tmp.CURRENCY_CODE = rl.CURRENCY_CODE (+) ;
7938 
7939 EXCEPTION
7940   WHEN OTHERS THEN
7941     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
7942                              p_procedure_name => 'GET_AC_ROW_IDS');
7943     RAISE;
7944 END;
7945 
7946 
7947 PROCEDURE UPDATE_AC_ROWS IS
7948 
7949   l_last_update_date  DATE   := SYSDATE;
7950   l_last_updated_by   NUMBER := FND_GLOBAL.USER_ID;
7951   l_last_update_login NUMBER := FND_GLOBAL.LOGIN_ID;
7952 
7953 BEGIN
7954 
7955     UPDATE /*+ ordered use_nl(rl) rowid(rl) */
7956       PJI_AC_XBS_ACCUM_F rl
7957     SET (
7958       rl.REVENUE
7959     , rl.INITIAL_FUNDING_AMOUNT
7960     , rl.INITIAL_FUNDING_COUNT
7961     , rl.ADDITIONAL_FUNDING_AMOUNT
7962     , rl.ADDITIONAL_FUNDING_COUNT
7963     , rl.CANCELLED_FUNDING_AMOUNT
7964     , rl.CANCELLED_FUNDING_COUNT
7965     , rl.FUNDING_ADJUSTMENT_AMOUNT
7966     , rl.FUNDING_ADJUSTMENT_COUNT
7967     , rl.REVENUE_WRITEOFF
7968     , rl.AR_INVOICE_AMOUNT
7969     , rl.AR_INVOICE_COUNT
7970     , rl.AR_CASH_APPLIED_AMOUNT
7971     , rl.AR_INVOICE_WRITE_OFF_AMOUNT
7972     , rl.AR_INVOICE_WRITEOFF_COUNT
7973     , rl.AR_CREDIT_MEMO_AMOUNT
7974     , rl.AR_CREDIT_MEMO_COUNT
7975     , rl.UNBILLED_RECEIVABLES
7976     , rl.UNEARNED_REVENUE
7977     , rl.AR_UNAPPR_INVOICE_AMOUNT
7978     , rl.AR_UNAPPR_INVOICE_COUNT
7979     , rl.AR_APPR_INVOICE_AMOUNT
7980     , rl.AR_APPR_INVOICE_COUNT
7981     , rl.AR_AMOUNT_DUE
7982     , rl.AR_COUNT_DUE
7983     , rl.AR_AMOUNT_OVERDUE
7984     , rl.AR_COUNT_OVERDUE
7985     , rl.DORMANT_BACKLOG_INACTIV
7986     , rl.DORMANT_BACKLOG_START
7987     , rl.LOST_BACKLOG
7988     , rl.ACTIVE_BACKLOG
7989     , rl.REVENUE_AT_RISK
7990     , rl.CUSTOM1
7991     , rl.CUSTOM2
7992     , rl.CUSTOM3
7993     , rl.CUSTOM4
7994     , rl.CUSTOM5
7995     , rl.CUSTOM6
7996     , rl.CUSTOM7
7997     , rl.CUSTOM8
7998     , rl.CUSTOM9
7999     , rl.CUSTOM10
8000     , rl.CUSTOM11
8001     , rl.CUSTOM12
8002     , rl.CUSTOM13
8003     , rl.CUSTOM14
8004     , rl.CUSTOM15
8005     , rl.LAST_UPDATE_DATE
8006     , rl.LAST_UPDATED_BY
8007     , rl.LAST_UPDATE_LOGIN
8008         ) =
8009     (
8010       SELECT  /*+  ORDERED ROWID(TMP) index(rwid,PJI_AC_RMAP_ACR_T_N1) */
8011          NVL(rl.REVENUE, 0) + NVL(tmp.REVENUE, 0)
8012        , NVL(rl.INITIAL_FUNDING_AMOUNT, 0) + NVL(tmp.INITIAL_FUNDING_AMOUNT, 0)
8013        , NVL(rl.INITIAL_FUNDING_COUNT, 0) + NVL(tmp.INITIAL_FUNDING_COUNT, 0)
8014        , NVL(rl.ADDITIONAL_FUNDING_AMOUNT, 0) + NVL(tmp.ADDITIONAL_FUNDING_AMOUNT, 0)
8015        , NVL(rl.ADDITIONAL_FUNDING_COUNT, 0) + NVL(tmp.ADDITIONAL_FUNDING_COUNT, 0)
8016        , NVL(rl.CANCELLED_FUNDING_AMOUNT, 0) + NVL(tmp.CANCELLED_FUNDING_AMOUNT, 0)
8017        , NVL(rl.CANCELLED_FUNDING_COUNT, 0) + NVL(tmp.CANCELLED_FUNDING_COUNT, 0)
8018        , NVL(rl.FUNDING_ADJUSTMENT_AMOUNT, 0) + NVL(tmp.FUNDING_ADJUSTMENT_AMOUNT, 0)
8019        , NVL(rl.FUNDING_ADJUSTMENT_COUNT, 0) + NVL(tmp.FUNDING_ADJUSTMENT_COUNT, 0)
8020        , NVL(rl.REVENUE_WRITEOFF, 0) + NVL(tmp.REVENUE_WRITEOFF, 0)
8021        , NVL(rl.AR_INVOICE_AMOUNT, 0) + NVL(tmp.AR_INVOICE_AMOUNT, 0)
8022        , NVL(rl.AR_INVOICE_COUNT, 0) + NVL(tmp.AR_INVOICE_COUNT, 0)
8023        , NVL(rl.AR_CASH_APPLIED_AMOUNT, 0) + NVL(tmp.AR_CASH_APPLIED_AMOUNT, 0)
8024        , NVL(rl.AR_INVOICE_WRITE_OFF_AMOUNT, 0) + NVL(tmp.AR_INVOICE_WRITE_OFF_AMOUNT, 0)
8025        , NVL(rl.AR_INVOICE_WRITEOFF_COUNT, 0) + NVL(tmp.AR_INVOICE_WRITEOFF_COUNT, 0)
8026        , NVL(rl.AR_CREDIT_MEMO_AMOUNT, 0) + NVL(tmp.AR_CREDIT_MEMO_AMOUNT, 0)
8027        , NVL(rl.AR_CREDIT_MEMO_COUNT, 0) + NVL(tmp.AR_CREDIT_MEMO_COUNT, 0)
8028        , NVL(rl.UNBILLED_RECEIVABLES, 0) + NVL(tmp.UNBILLED_RECEIVABLES, 0)
8029        , NVL(rl.UNEARNED_REVENUE, 0) + NVL(tmp.UNEARNED_REVENUE, 0)
8030        , NVL(rl.AR_UNAPPR_INVOICE_AMOUNT, 0) + NVL(tmp.AR_UNAPPR_INVOICE_AMOUNT, 0)
8031        , NVL(rl.AR_UNAPPR_INVOICE_COUNT, 0) + NVL(tmp.AR_UNAPPR_INVOICE_COUNT, 0)
8032        , NVL(rl.AR_APPR_INVOICE_AMOUNT, 0) + NVL(tmp.AR_APPR_INVOICE_AMOUNT, 0)
8033        , NVL(rl.AR_APPR_INVOICE_COUNT, 0) + NVL(tmp.AR_APPR_INVOICE_COUNT, 0)
8034        , NVL(rl.AR_AMOUNT_DUE, 0) + NVL(tmp.AR_AMOUNT_DUE, 0)
8035        , NVL(rl.AR_COUNT_DUE, 0) + NVL(tmp.AR_COUNT_DUE, 0)
8036        , NVL(rl.AR_AMOUNT_OVERDUE, 0) + NVL(tmp.AR_AMOUNT_OVERDUE, 0)
8037        , NVL(rl.AR_COUNT_OVERDUE, 0) + NVL(tmp.AR_COUNT_OVERDUE, 0)
8038        , NVL(rl.DORMANT_BACKLOG_INACTIV, 0) + NVL(tmp.DORMANT_BACKLOG_INACTIV, 0)
8039        , NVL(rl.DORMANT_BACKLOG_START, 0) + NVL(tmp.DORMANT_BACKLOG_START, 0)
8040        , NVL(rl.LOST_BACKLOG, 0) + NVL(tmp.LOST_BACKLOG, 0)
8041        , NVL(rl.ACTIVE_BACKLOG, 0) + NVL(tmp.ACTIVE_BACKLOG, 0)
8042        , NVL(rl.REVENUE_AT_RISK, 0) + NVL(tmp.REVENUE_AT_RISK, 0)
8043        , NVL(rl.CUSTOM1, 0) + NVL(tmp.CUSTOM1, 0)
8044        , NVL(rl.CUSTOM2, 0) + NVL(tmp.CUSTOM2, 0)
8045        , NVL(rl.CUSTOM3, 0) + NVL(tmp.CUSTOM3, 0)
8046        , NVL(rl.CUSTOM4, 0) + NVL(tmp.CUSTOM4, 0)
8047        , NVL(rl.CUSTOM5, 0) + NVL(tmp.CUSTOM5, 0)
8048        , NVL(rl.CUSTOM6, 0) + NVL(tmp.CUSTOM6, 0)
8049        , NVL(rl.CUSTOM7, 0) + NVL(tmp.CUSTOM7, 0)
8050        , NVL(rl.CUSTOM8, 0) + NVL(tmp.CUSTOM8, 0)
8051        , NVL(rl.CUSTOM9, 0) + NVL(tmp.CUSTOM9, 0)
8052        , NVL(rl.CUSTOM10, 0) + NVL(tmp.CUSTOM10, 0)
8053        , NVL(rl.CUSTOM11, 0) + NVL(tmp.CUSTOM11, 0)
8054        , NVL(rl.CUSTOM12, 0) + NVL(tmp.CUSTOM12, 0)
8055        , NVL(rl.CUSTOM13, 0) + NVL(tmp.CUSTOM13, 0)
8056        , NVL(rl.CUSTOM14, 0) + NVL(tmp.CUSTOM14, 0)
8057        , NVL(rl.CUSTOM15, 0) + NVL(tmp.CUSTOM15, 0)
8058        , l_last_update_date
8059        , l_last_updated_by
8060        , l_last_update_login
8061      FROM
8062        PJI_AC_RMAP_ACR_T rwid
8063      , PJI_AC_AGGR_PJP1_T tmp
8064      WHERE  1 = 1
8065         AND tmp.worker_id = g_worker_id
8066         AND rwid.worker_id = g_worker_id
8067           AND tmp.rowid = rwid.pjp1_rowid
8068           AND rl.rowid = rwid.fpr_rowid
8069           AND rwid.fpr_rowid IS NOT NULL
8070         )
8071      WHERE rl.rowid IN
8072              ( SELECT fpr_rowid
8073                    FROM PJI_ac_RMAP_acR_T rwid
8074                      WHERE 1=1
8075                    AND rwid.fpr_rowid IS NOT NULL
8076                    AND rwid.worker_id = g_worker_id);
8077 
8078 EXCEPTION
8079   WHEN OTHERS THEN
8080     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8081                              p_procedure_name => 'UPDATE_AC_ROWS');
8082     RAISE;
8083 END;
8084 
8085 
8086 PROCEDURE INSERT_AC_ROWS IS
8087     l_last_update_date     date   := SYSDATE;
8088     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
8089     l_creation_date        date   := SYSDATE;
8090     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
8091     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
8092 BEGIN
8093 
8094   INSERT INTO PJI_AC_XBS_ACCUM_F
8095   (
8096      PROJECT_ID
8097    , PROJECT_ORG_ID
8098    , PROJECT_ORGANIZATION_ID
8099    , PROJECT_ELEMENT_ID
8100    , TIME_ID
8101    , PERIOD_TYPE_ID
8102    , CALENDAR_TYPE
8103    , WBS_ROLLUP_FLAG
8104    , PRG_ROLLUP_FLAG
8105    , CURR_RECORD_TYPE_ID
8106    , CURRENCY_CODE
8107    , REVENUE
8108    , INITIAL_FUNDING_AMOUNT
8109    , INITIAL_FUNDING_COUNT
8110    , ADDITIONAL_FUNDING_AMOUNT
8111    , ADDITIONAL_FUNDING_COUNT
8112    , CANCELLED_FUNDING_AMOUNT
8113    , CANCELLED_FUNDING_COUNT
8114    , FUNDING_ADJUSTMENT_AMOUNT
8115    , FUNDING_ADJUSTMENT_COUNT
8116    , REVENUE_WRITEOFF
8117    , AR_INVOICE_AMOUNT
8118    , AR_INVOICE_COUNT
8119    , AR_CASH_APPLIED_AMOUNT
8120    , AR_INVOICE_WRITE_OFF_AMOUNT
8121    , AR_INVOICE_WRITEOFF_COUNT
8122    , AR_CREDIT_MEMO_AMOUNT
8123    , AR_CREDIT_MEMO_COUNT
8124    , UNBILLED_RECEIVABLES
8125    , UNEARNED_REVENUE
8126    , AR_UNAPPR_INVOICE_AMOUNT
8127    , AR_UNAPPR_INVOICE_COUNT
8128    , AR_APPR_INVOICE_AMOUNT
8129    , AR_APPR_INVOICE_COUNT
8130    , AR_AMOUNT_DUE
8131    , AR_COUNT_DUE
8132    , AR_AMOUNT_OVERDUE
8133    , AR_COUNT_OVERDUE
8134    , DORMANT_BACKLOG_INACTIV
8135    , DORMANT_BACKLOG_START
8136    , LOST_BACKLOG
8137    , ACTIVE_BACKLOG
8138    , REVENUE_AT_RISK
8139    , LAST_UPDATE_DATE
8140    , LAST_UPDATED_BY
8141    , CREATION_DATE
8142    , CREATED_BY
8143    , LAST_UPDATE_LOGIN
8144    , CUSTOM1
8145    , CUSTOM2
8146    , CUSTOM3
8147    , CUSTOM4
8148    , CUSTOM5
8149    , CUSTOM6
8150    , CUSTOM7
8151    , CUSTOM8
8152    , CUSTOM9
8153    , CUSTOM10
8154    , CUSTOM11
8155    , CUSTOM12
8156    , CUSTOM13
8157    , CUSTOM14
8158    , CUSTOM15
8159   )
8160   SELECT
8161      PROJECT_ID
8162    , PROJECT_ORG_ID
8163    , PROJECT_ORGANIZATION_ID
8164    , PROJECT_ELEMENT_ID
8165    , TIME_ID
8166    , PERIOD_TYPE_ID
8167    , CALENDAR_TYPE
8168    , WBS_ROLLUP_FLAG
8169    , PRG_ROLLUP_FLAG
8170    , CURR_RECORD_TYPE_ID
8171    , CURRENCY_CODE
8172    , REVENUE
8173    , INITIAL_FUNDING_AMOUNT
8174    , INITIAL_FUNDING_COUNT
8175    , ADDITIONAL_FUNDING_AMOUNT
8176    , ADDITIONAL_FUNDING_COUNT
8177    , CANCELLED_FUNDING_AMOUNT
8178    , CANCELLED_FUNDING_COUNT
8179    , FUNDING_ADJUSTMENT_AMOUNT
8180    , FUNDING_ADJUSTMENT_COUNT
8181    , REVENUE_WRITEOFF
8182    , AR_INVOICE_AMOUNT
8183    , AR_INVOICE_COUNT
8184    , AR_CASH_APPLIED_AMOUNT
8185    , AR_INVOICE_WRITE_OFF_AMOUNT
8186    , AR_INVOICE_WRITEOFF_COUNT
8187    , AR_CREDIT_MEMO_AMOUNT
8188    , AR_CREDIT_MEMO_COUNT
8189    , UNBILLED_RECEIVABLES
8190    , UNEARNED_REVENUE
8191    , AR_UNAPPR_INVOICE_AMOUNT
8192    , AR_UNAPPR_INVOICE_COUNT
8193    , AR_APPR_INVOICE_AMOUNT
8194    , AR_APPR_INVOICE_COUNT
8195    , AR_AMOUNT_DUE
8196    , AR_COUNT_DUE
8197    , AR_AMOUNT_OVERDUE
8198    , AR_COUNT_OVERDUE
8199    , DORMANT_BACKLOG_INACTIV
8200    , DORMANT_BACKLOG_START
8201    , LOST_BACKLOG
8202    , ACTIVE_BACKLOG
8203    , REVENUE_AT_RISK
8204    , l_last_update_date
8205    , l_last_updated_by
8206    , l_creation_date
8207    , l_created_by
8208    , l_last_update_login
8209    , CUSTOM1
8210    , CUSTOM2
8211    , CUSTOM3
8212    , CUSTOM4
8213    , CUSTOM5
8214    , CUSTOM6
8215    , CUSTOM7
8216    , CUSTOM8
8217    , CUSTOM9
8218    , CUSTOM10
8219    , CUSTOM11
8220    , CUSTOM12
8221    , CUSTOM13
8222    , CUSTOM14
8223    , CUSTOM15
8224   FROM PJI_AC_AGGR_PJP1_T tmp
8225      , PJI_ac_RMAP_acR_T rwid
8226   WHERE 1 = 1
8227    AND tmp.worker_id = g_worker_id
8228    AND rwid.worker_id = g_worker_id
8229    AND tmp.rowid = rwid.pjp1_rowid
8230    AND rwid.fpr_rowid IS NULL
8231   ORDER BY
8232      PROJECT_ID
8233    , PROJECT_ELEMENT_ID
8234    , TIME_ID
8235    , CURRENCY_CODE;
8236 
8237 EXCEPTION
8238   WHEN OTHERS THEN
8239     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8240                              p_procedure_name => 'INSERT_AC_ROWS');
8241     RAISE;
8242 END;
8243 
8244 PROCEDURE MARK_DANGLING_PLAN_VERSIONS IS
8245 BEGIN
8246 
8247   -- Added INDEX for bug 3828698
8248   UPDATE /*+ INDEX(bv,PA_BUDGET_VERSIONS_U1)*/ pa_budget_versions bv
8249   SET    pji_summarized_flag = 'P',
8250          record_version_number = nvl(record_version_number,0)+1
8251   WHERE  budget_version_id IN (
8252               SELECT plan_version_id
8253                 FROM
8254               (
8255                   SELECT plan_version_id
8256                    , (   COUNT(DISTINCT time_dangling_flag)
8257                        + COUNT(DISTINCT rate_dangling_flag)
8258                      ) dangling
8259               FROM   pji_fp_aggr_pjp1_t
8260               WHERE worker_id = g_worker_id
8261           GROUP BY plan_version_id
8262                 ) b
8263                 WHERE dangling > 2
8264            );
8265 
8266   UPDATE   /*+ INDEX(bv,PA_BUDGET_VERSIONS_U1)*/ pa_budget_versions bv
8267   SET    pji_summarized_flag = 'Y',
8268          record_version_number = nvl(record_version_number,0)+1
8269   WHERE  budget_version_id IN (
8270               SELECT plan_version_id
8271                 FROM
8272               (
8273                   SELECT plan_version_id
8274                    , (   COUNT(DISTINCT time_dangling_flag)
8275                        + COUNT(DISTINCT rate_dangling_flag)
8276                      ) dangling
8277               FROM   pji_fp_aggr_pjp1_t
8278               WHERE worker_id = g_worker_id
8279           GROUP BY plan_version_id
8280                 ) b
8281                 WHERE dangling = 2
8282            );
8283 
8284 EXCEPTION
8285   WHEN OTHERS THEN
8286     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8287                              p_procedure_name => 'MARK_DANGLING_PLAN_VERSIONS');
8288     RAISE;
8289 END;
8290 
8291 
8292 --
8293 -- 0. Plans cannot have time / rate dangling records for primary slice.
8294 -- 1. Work plans have primary slice only.
8295 -- 2. Financial plans can have secondary slices only if the plan is baselined.
8296 -- 3. Only baselined financial plans can have time/rate dangling records.
8297 -- 4. Four states of pji_summarized_flag are N, Y, P, NULL.
8298 --      N - Not summarized..
8299 --      P - Have rate/time dangling records..
8300 --      Y - Project performance summaries fully created.
8301 --      NULL - PJI summaries fully created.
8302 --
8303 -- This api processes plans with pji_summarized_flag = N, i.e., secondary slice
8304 --  for dangling baselined financial plans.
8305 --
8306 PROCEDURE PULL_DANGLING_PLANS IS
8307 
8308   l_fp_wp_version_ids   SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
8309   l_fp_version_ids      SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
8310 
8311 /*
8312   CURSOR c_dangling_vers_cur IS
8313   SELECT budget_version_id
8314   FROM   pa_budget_versions bv
8315   WHERE  pji_summarized_flag = 'P';
8316 */
8317 
8318 BEGIN
8319 
8320   CLEANUP_INTERIM_TABLES;
8321 
8322 --  FOR c_dangling IN c_dangling_vers_cur LOOP
8323 
8324 --    print_time ( ' plan version id is ... ' || c_dangling.budget_version_id ) ;
8325 --    l_fp_wp_version_ids := SYSTEM.pa_num_tbl_type (c_dangling.budget_version_id);
8326 
8327     PJI_FM_PLAN_MAINT.CREATE_SECONDARY_T_PVT(
8328       p_fp_version_ids    => l_fp_wp_version_ids
8329     , p_process_all       => 'T'
8330     , p_commit            => 'F');
8331 
8332 --  END LOOP;
8333 
8334 EXCEPTION
8335   WHEN OTHERS THEN
8336     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8337                              p_procedure_name => 'PULL_DANGLING_PLANS');
8338     RAISE;
8339 END;
8340 
8341 
8342 PROCEDURE RETRIEVE_ENTERED_SLICE (
8343   p_pln_ver_id IN NUMBER := NULL ) IS
8344 BEGIN
8345 
8346     INSERT INTO pji_fp_aggr_pjp1_t
8347     (
8348        WORKER_ID
8349      , PROJECT_ID
8350      , PROJECT_ORG_ID
8351      , PROJECT_ORGANIZATION_ID
8352      -- , PARTITION_ID
8353      , PROJECT_ELEMENT_ID
8354      , TIME_ID
8355      , PERIOD_TYPE_ID
8356      , CALENDAR_TYPE
8357      , RBS_AGGR_LEVEL
8358      , WBS_ROLLUP_FLAG
8359      , PRG_ROLLUP_FLAG
8360      , CURR_RECORD_TYPE_ID
8361      , CURRENCY_CODE
8362      , RBS_ELEMENT_ID
8363      , RBS_VERSION_ID
8364      , PLAN_VERSION_ID
8365      , PLAN_TYPE_ID
8366      , RAW_COST
8367      , BRDN_COST
8368      , REVENUE
8369      , BILL_RAW_COST
8370      , BILL_BRDN_COST
8371      , BILL_LABOR_RAW_COST
8372      , BILL_LABOR_BRDN_COST
8373      , BILL_LABOR_HRS
8374      , EQUIPMENT_RAW_COST
8375      , EQUIPMENT_BRDN_COST
8376      , CAPITALIZABLE_RAW_COST
8377      , CAPITALIZABLE_BRDN_COST
8378      , LABOR_RAW_COST
8379      , LABOR_BRDN_COST
8380      , LABOR_HRS
8381      , LABOR_REVENUE
8382      , EQUIPMENT_HOURS
8383      , BILLABLE_EQUIPMENT_HOURS
8384      , SUP_INV_COMMITTED_COST
8385      , PO_COMMITTED_COST
8386      , PR_COMMITTED_COST
8387      , OTH_COMMITTED_COST
8388        , ACT_LABOR_HRS
8389            , ACT_EQUIP_HRS
8390            , ACT_LABOR_BRDN_COST
8391            , ACT_EQUIP_BRDN_COST
8392            , ACT_BRDN_COST
8393            , ACT_RAW_COST
8394            , ACT_REVENUE
8395          , ACT_LABOR_RAW_COST
8396          , ACT_EQUIP_RAW_COST
8397            , ETC_LABOR_HRS
8398            , ETC_EQUIP_HRS
8399            , ETC_LABOR_BRDN_COST
8400            , ETC_EQUIP_BRDN_COST
8401            , ETC_BRDN_COST
8402          , ETC_RAW_COST
8403          , ETC_LABOR_RAW_COST
8404          , ETC_EQUIP_RAW_COST
8405      , CUSTOM1
8406      , CUSTOM2
8407      , CUSTOM3
8408      , CUSTOM4
8409      , CUSTOM5
8410      , CUSTOM6
8411      , CUSTOM7
8412      , CUSTOM8
8413      , CUSTOM9
8414      , CUSTOM10
8415      , CUSTOM11
8416      , CUSTOM12
8417      , CUSTOM13
8418      , CUSTOM14
8419      , CUSTOM15
8420      , PRG_LEVEL
8421      , PLAN_TYPE_CODE
8422     )
8423     (
8424      SELECT
8425        g_worker_id
8426      , PROJECT_ID
8427      , PROJECT_ORG_ID
8428      , PROJECT_ORGANIZATION_ID
8429      -- , PARTITION_ID
8430      , PROJECT_ELEMENT_ID
8431      , TIME_ID
8432      , PERIOD_TYPE_ID
8433      , CALENDAR_TYPE
8434      , RBS_AGGR_LEVEL
8435      , WBS_ROLLUP_FLAG
8436      , PRG_ROLLUP_FLAG
8437      , CURR_RECORD_TYPE_ID
8438      , CURRENCY_CODE
8439      , RBS_ELEMENT_ID
8440      , RBS_VERSION_ID
8441      , PLAN_VERSION_ID
8442      , PLAN_TYPE_ID
8443      , RAW_COST
8444      , BRDN_COST
8445      , REVENUE
8446      , BILL_RAW_COST
8447      , BILL_BRDN_COST
8448      , BILL_LABOR_RAW_COST
8449      , BILL_LABOR_BRDN_COST
8450      , BILL_LABOR_HRS
8451      , EQUIPMENT_RAW_COST
8452      , EQUIPMENT_BRDN_COST
8453      , CAPITALIZABLE_RAW_COST
8454      , CAPITALIZABLE_BRDN_COST
8455      , LABOR_RAW_COST
8456      , LABOR_BRDN_COST
8457      , LABOR_HRS
8458      , LABOR_REVENUE
8459      , EQUIPMENT_HOURS
8460      , BILLABLE_EQUIPMENT_HOURS
8461      , SUP_INV_COMMITTED_COST
8462      , PO_COMMITTED_COST
8463      , PR_COMMITTED_COST
8464      , OTH_COMMITTED_COST
8465        , ACT_LABOR_HRS
8466            , ACT_EQUIP_HRS
8467            , ACT_LABOR_BRDN_COST
8468            , ACT_EQUIP_BRDN_COST
8469            , ACT_BRDN_COST
8470            , ACT_RAW_COST
8471            , ACT_REVENUE
8472          , ACT_LABOR_RAW_COST
8473          , ACT_EQUIP_RAW_COST
8474            , ETC_LABOR_HRS
8475            , ETC_EQUIP_HRS
8476            , ETC_LABOR_BRDN_COST
8477            , ETC_EQUIP_BRDN_COST
8478            , ETC_BRDN_COST
8479          , ETC_RAW_COST
8480          , ETC_LABOR_RAW_COST
8481          , ETC_EQUIP_RAW_COST
8482      , CUSTOM1
8483      , CUSTOM2
8484      , CUSTOM3
8485      , CUSTOM4
8486      , CUSTOM5
8487      , CUSTOM6
8488      , CUSTOM7
8489      , CUSTOM8
8490      , CUSTOM9
8491      , CUSTOM10
8492      , CUSTOM11
8493      , CUSTOM12
8494      , CUSTOM13
8495      , CUSTOM14
8496      , CUSTOM15
8497      , g_default_prg_level
8498      , plan_type_code
8499      FROM pji_fp_xbs_accum_f
8500      WHERE plan_version_id = p_pln_ver_id
8501     );
8502 
8503 EXCEPTION
8504   WHEN OTHERS THEN
8505     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8506                              p_procedure_name => 'RETRIEVE_ENTERED_SLICE');
8507     RAISE;
8508 END;
8509 
8510 
8511 
8512 
8513 PROCEDURE ROLLUP_FPR_RBS IS
8514     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
8515     -- l_worker_id            NUMBER := 1;
8516 
8517 BEGIN
8518 
8519      INSERT INTO  pji_fp_aggr_pjp1_t
8520      (
8521        WORKER_ID
8522      , PROJECT_ID
8523      , PROJECT_ORG_ID
8524      , PROJECT_ORGANIZATION_ID
8525      , PROJECT_ELEMENT_ID
8526      , TIME_ID
8527      , PERIOD_TYPE_ID
8528      , CALENDAR_TYPE
8529      , RBS_AGGR_LEVEL
8530      , WBS_ROLLUP_FLAG
8531      , PRG_ROLLUP_FLAG
8532      , CURR_RECORD_TYPE_ID
8533      , CURRENCY_CODE
8534      , RBS_ELEMENT_ID
8535      , RBS_VERSION_ID
8536      , PLAN_VERSION_ID
8537      , PLAN_TYPE_ID
8538      , RAW_COST
8539      , BRDN_COST
8540      , REVENUE
8541      , BILL_RAW_COST
8542      , BILL_BRDN_COST
8543      , BILL_LABOR_RAW_COST
8544      , BILL_LABOR_BRDN_COST
8545      , BILL_LABOR_HRS
8546      , EQUIPMENT_RAW_COST
8547      , EQUIPMENT_BRDN_COST
8548      , CAPITALIZABLE_RAW_COST
8549      , CAPITALIZABLE_BRDN_COST
8550      , LABOR_RAW_COST
8551      , LABOR_BRDN_COST
8552      , LABOR_HRS
8553      , LABOR_REVENUE
8554      , EQUIPMENT_HOURS
8555      , BILLABLE_EQUIPMENT_HOURS
8556      , SUP_INV_COMMITTED_COST
8557      , PO_COMMITTED_COST
8558      , PR_COMMITTED_COST
8559      , OTH_COMMITTED_COST
8560        , ACT_LABOR_HRS
8561            , ACT_EQUIP_HRS
8562            , ACT_LABOR_BRDN_COST
8563            , ACT_EQUIP_BRDN_COST
8564            , ACT_BRDN_COST
8565            , ACT_RAW_COST
8566            , ACT_REVENUE
8567          , ACT_LABOR_RAW_COST
8568          , ACT_EQUIP_RAW_COST
8569            , ETC_LABOR_HRS
8570            , ETC_EQUIP_HRS
8571            , ETC_LABOR_BRDN_COST
8572            , ETC_EQUIP_BRDN_COST
8573            , ETC_BRDN_COST
8574          , ETC_RAW_COST
8575          , ETC_LABOR_RAW_COST
8576          , ETC_EQUIP_RAW_COST
8577      , CUSTOM1
8578      , CUSTOM2
8579      , CUSTOM3
8580      , CUSTOM4
8581      , CUSTOM5
8582      , CUSTOM6
8583      , CUSTOM7
8584      , CUSTOM8
8585      , CUSTOM9
8586      , CUSTOM10
8587      , CUSTOM11
8588      , CUSTOM12
8589      , CUSTOM13
8590      , CUSTOM14
8591      , CUSTOM15
8592      , LINE_TYPE
8593      , PRG_LEVEL
8594      , PLAN_TYPE_CODE
8595     )
8596      SELECT
8597         g_worker_id WORKER_ID
8598       , fact1.PROJECT_ID
8599         , fact1.PROJECT_ORG_ID
8600         , fact1.PROJECT_ORGANIZATION_ID
8601       , fact1.project_element_id
8602         , fact1.TIME_ID
8603       , fact1.PERIOD_TYPE_ID
8604       , fact1.CALENDAR_TYPE
8605         , g_rolled_up
8606         , fact1.WBS_ROLLUP_FLAG
8607         , fact1.PRG_ROLLUP_FLAG
8608       , fact1.CURR_RECORD_TYPE_ID
8609       , fact1.CURRENCY_CODE
8610       , rbs.sup_id
8611       , fact1.RBS_VERSION_ID
8612       , fact1.PLAN_VERSION_ID
8613         , fact1.PLAN_TYPE_ID
8614       , SUM(fact1.RAW_COST)
8615       , SUM(fact1.BRDN_COST)
8616       , SUM(fact1.REVENUE)
8617       , SUM(fact1.BILL_RAW_COST)
8618       , SUM(fact1.BILL_BRDN_COST )
8619       , SUM(fact1.BILL_LABOR_RAW_COST)
8620       , SUM(fact1.BILL_LABOR_BRDN_COST )
8621       , SUM(fact1.BILL_LABOR_HRS )
8622       , SUM(fact1.EQUIPMENT_RAW_COST )
8623       , SUM(fact1.EQUIPMENT_BRDN_COST )
8624       , SUM(fact1.CAPITALIZABLE_RAW_COST )
8625       , SUM(fact1.CAPITALIZABLE_BRDN_COST )
8626       , SUM(fact1.LABOR_RAW_COST )
8627       , SUM(fact1.LABOR_BRDN_COST )
8628       , SUM(fact1.LABOR_HRS)
8629       , SUM(fact1.LABOR_REVENUE)
8630       , SUM(fact1.EQUIPMENT_HOURS)
8631       , SUM(fact1.BILLABLE_EQUIPMENT_HOURS)
8632       , SUM(fact1.SUP_INV_COMMITTED_COST)
8633       , SUM(fact1.PO_COMMITTED_COST   )
8634       , SUM(fact1.PR_COMMITTED_COST  )
8635       , SUM(fact1.OTH_COMMITTED_COST)
8636        , SUM(fact1.ACT_LABOR_HRS)
8637          , SUM(fact1.ACT_EQUIP_HRS)
8638          , SUM(fact1.ACT_LABOR_BRDN_COST)
8639          , SUM(fact1.ACT_EQUIP_BRDN_COST)
8640          , SUM(fact1.ACT_BRDN_COST)
8641          , SUM(fact1.ACT_RAW_COST)
8642          , SUM(fact1.ACT_REVENUE)
8643        , SUM(fact1.ACT_LABOR_RAW_COST)
8644        , SUM(fact1.ACT_EQUIP_RAW_COST)
8645          , SUM(fact1.ETC_LABOR_HRS)
8646          , SUM(fact1.ETC_EQUIP_HRS)
8647          , SUM(fact1.ETC_LABOR_BRDN_COST)
8648          , SUM(fact1.ETC_EQUIP_BRDN_COST)
8649          , SUM(fact1.ETC_BRDN_COST )
8650        , SUM(fact1.ETC_RAW_COST )
8651        , SUM(fact1.ETC_LABOR_RAW_COST)
8652        , SUM(fact1.ETC_EQUIP_RAW_COST)
8653       , SUM(fact1.CUSTOM1 )
8654       , SUM(fact1.CUSTOM2 )
8655       , SUM(fact1.CUSTOM3 )
8656       , SUM(fact1.CUSTOM4 )
8657       , SUM(fact1.CUSTOM5 )
8658       , SUM(fact1.CUSTOM6 )
8659       , SUM(fact1.CUSTOM7 )
8660       , SUM(fact1.CUSTOM8 )
8661       , SUM(fact1.CUSTOM9 )
8662       , SUM(fact1.CUSTOM10 )
8663       , SUM(fact1.CUSTOM11 )
8664       , SUM(fact1.CUSTOM12 )
8665       , SUM(fact1.CUSTOM13 )
8666       , SUM(fact1.CUSTOM14 )
8667       , SUM(fact1.CUSTOM15 )
8668       , fact1.line_type
8669       , g_default_prg_level
8670       , fact1.plan_type_code            /* 4471527 */
8671     FROM pji_fp_aggr_pjp1_t       fact1
8672        , Pji_RBS_DENORM         rbs
8673          , pji_rollup_level_status smart
8674          , pji_pjp_rbs_header      rhdr
8675     WHERE 1 = 1
8676      AND fact1.project_id  = rhdr.project_id
8677      AND fact1.plan_version_id  = rhdr.plan_version_id
8678      AND fact1.plan_type_code = rhdr.plan_type_code     /*4471527 */
8679      AND rbs.struct_version_id = rhdr.rbs_version_id
8680      AND fact1.rbs_ELEMENT_ID = rbs.sub_id
8681      AND rbs.sup_level <> rbs.sub_level
8682      AND rbs.sup_level <> 1
8683      AND fact1.RBS_AGGR_LEVEL = g_lowest_level
8684      AND smart.rbs_version_id = rbs.struct_version_id
8685      AND smart.plan_version_id = fact1.plan_version_id
8686      AND smart.plan_type_code = fact1.plan_type_code    /*4471527 */
8687      AND fact1.worker_id = g_worker_id
8688     GROUP BY
8689         fact1.PROJECT_ID
8690         , fact1.PROJECT_ORG_ID
8691         , fact1.PROJECT_ORGANIZATION_ID
8692       , fact1.project_element_id
8693         , fact1.TIME_ID
8694       , fact1.PERIOD_TYPE_ID
8695       , fact1.CALENDAR_TYPE
8696         , fact1.WBS_ROLLUP_FLAG
8697         , fact1.PRG_ROLLUP_FLAG
8698       , fact1.CURR_RECORD_TYPE_ID
8699       , fact1.CURRENCY_CODE
8700       , rbs.sup_id
8701       , fact1.RBS_VERSION_ID
8702       , fact1.PLAN_VERSION_ID
8703         , fact1.PLAN_TYPE_ID
8704       , fact1.line_type
8705       , fact1.plan_type_code ;
8706 
8707 
8708 EXCEPTION
8709   WHEN OTHERS THEN
8710     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8711                              p_procedure_name => 'ROLLUP_FPR_RBS');
8712     RAISE;
8713 END;
8714 
8715 
8716 PROCEDURE ROLLUP_FPR_RBS_T_SLICE IS
8717     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
8718 
8719 BEGIN
8720 
8721   print_time(' worker id is ... ' || 1);
8722 
8723      INSERT INTO  pji_fp_aggr_pjp1_t
8724      (
8725        WORKER_ID
8726      , PROJECT_ID
8727      , PROJECT_ORG_ID
8728      , PROJECT_ORGANIZATION_ID
8729      , PROJECT_ELEMENT_ID
8730      , TIME_ID
8731      , PERIOD_TYPE_ID
8732      , CALENDAR_TYPE
8733      , RBS_AGGR_LEVEL
8734      , WBS_ROLLUP_FLAG
8735      , PRG_ROLLUP_FLAG
8736      , CURR_RECORD_TYPE_ID
8737      , CURRENCY_CODE
8738      , RBS_ELEMENT_ID
8739      , RBS_VERSION_ID
8740      , PLAN_VERSION_ID
8741      , PLAN_TYPE_ID
8742      , RAW_COST
8743      , BRDN_COST
8744      , REVENUE
8745      , BILL_RAW_COST
8746      , BILL_BRDN_COST
8747      , BILL_LABOR_RAW_COST
8748      , BILL_LABOR_BRDN_COST
8749      , BILL_LABOR_HRS
8750      , EQUIPMENT_RAW_COST
8751      , EQUIPMENT_BRDN_COST
8752      , CAPITALIZABLE_RAW_COST
8753      , CAPITALIZABLE_BRDN_COST
8754      , LABOR_RAW_COST
8755      , LABOR_BRDN_COST
8756      , LABOR_HRS
8757      , LABOR_REVENUE
8758      , EQUIPMENT_HOURS
8759      , BILLABLE_EQUIPMENT_HOURS
8760      , SUP_INV_COMMITTED_COST
8761      , PO_COMMITTED_COST
8762      , PR_COMMITTED_COST
8763      , OTH_COMMITTED_COST
8764        , ACT_LABOR_HRS
8765            , ACT_EQUIP_HRS
8766            , ACT_LABOR_BRDN_COST
8767            , ACT_EQUIP_BRDN_COST
8768            , ACT_BRDN_COST
8769            , ACT_RAW_COST
8770            , ACT_REVENUE
8771          , ACT_LABOR_RAW_COST
8772          , ACT_EQUIP_RAW_COST
8773            , ETC_LABOR_HRS
8774            , ETC_EQUIP_HRS
8775            , ETC_LABOR_BRDN_COST
8776            , ETC_EQUIP_BRDN_COST
8777            , ETC_BRDN_COST
8778          , ETC_RAW_COST
8779          , ETC_LABOR_RAW_COST
8780          , ETC_EQUIP_RAW_COST
8781      , CUSTOM1
8782      , CUSTOM2
8783      , CUSTOM3
8784      , CUSTOM4
8785      , CUSTOM5
8786      , CUSTOM6
8787      , CUSTOM7
8788      , CUSTOM8
8789      , CUSTOM9
8790      , CUSTOM10
8791      , CUSTOM11
8792      , CUSTOM12
8793      , CUSTOM13
8794      , CUSTOM14
8795      , CUSTOM15
8796      , LINE_TYPE
8797      , PRG_LEVEL
8798      , PLAN_TYPE_CODE     /* 4471527 */
8799     )
8800      SELECT
8801         g_worker_id WORKER_ID
8802       , fact1.PROJECT_ID
8803         , fact1.PROJECT_ORG_ID
8804         , fact1.PROJECT_ORGANIZATION_ID
8805       , fact1.project_element_id
8806         , fact1.TIME_ID
8807       , fact1.PERIOD_TYPE_ID
8808       , fact1.CALENDAR_TYPE
8809         , g_top_level
8810         , fact1.WBS_ROLLUP_FLAG
8811         , fact1.PRG_ROLLUP_FLAG
8812       , fact1.CURR_RECORD_TYPE_ID
8813       , fact1.CURRENCY_CODE
8814       , -1
8815       , -1
8816       , fact1.PLAN_VERSION_ID
8817         , fact1.PLAN_TYPE_ID
8818       , SUM(fact1.RAW_COST)
8819       , SUM(fact1.BRDN_COST)
8820       , SUM(fact1.REVENUE)
8821       , SUM(fact1.BILL_RAW_COST)
8822       , SUM(fact1.BILL_BRDN_COST )
8823       , SUM(fact1.BILL_LABOR_RAW_COST)
8824       , SUM(fact1.BILL_LABOR_BRDN_COST )
8825       , SUM(fact1.BILL_LABOR_HRS )
8826       , SUM(fact1.EQUIPMENT_RAW_COST )
8827       , SUM(fact1.EQUIPMENT_BRDN_COST )
8828       , SUM(fact1.CAPITALIZABLE_RAW_COST )
8829       , SUM(fact1.CAPITALIZABLE_BRDN_COST )
8830       , SUM(fact1.LABOR_RAW_COST )
8831       , SUM(fact1.LABOR_BRDN_COST )
8832       , SUM(fact1.LABOR_HRS)
8833       , SUM(fact1.LABOR_REVENUE)
8834       , SUM(fact1.EQUIPMENT_HOURS)
8835       , SUM(fact1.BILLABLE_EQUIPMENT_HOURS)
8836       , SUM(fact1.SUP_INV_COMMITTED_COST)
8837       , SUM(fact1.PO_COMMITTED_COST   )
8838       , SUM(fact1.PR_COMMITTED_COST  )
8839       , SUM(fact1.OTH_COMMITTED_COST)
8840        , SUM(fact1.ACT_LABOR_HRS)
8841          , SUM(fact1.ACT_EQUIP_HRS)
8842          , SUM(fact1.ACT_LABOR_BRDN_COST)
8843          , SUM(fact1.ACT_EQUIP_BRDN_COST)
8844          , SUM(fact1.ACT_BRDN_COST)
8845          , SUM(fact1.ACT_RAW_COST)
8846          , SUM(fact1.ACT_REVENUE)
8847        , SUM(fact1.ACT_LABOR_RAW_COST)
8848        , SUM(fact1.ACT_EQUIP_RAW_COST)
8849          , SUM(fact1.ETC_LABOR_HRS)
8850          , SUM(fact1.ETC_EQUIP_HRS)
8851          , SUM(fact1.ETC_LABOR_BRDN_COST)
8852          , SUM(fact1.ETC_EQUIP_BRDN_COST)
8853          , SUM(fact1.ETC_BRDN_COST )
8854        , SUM(fact1.ETC_RAW_COST )
8855        , SUM(fact1.ETC_LABOR_RAW_COST)
8856        , SUM(fact1.ETC_EQUIP_RAW_COST)
8857       , SUM(fact1.CUSTOM1 )
8858       , SUM(fact1.CUSTOM2 )
8859       , SUM(fact1.CUSTOM3 )
8860       , SUM(fact1.CUSTOM4 )
8861       , SUM(fact1.CUSTOM5 )
8862       , SUM(fact1.CUSTOM6 )
8863       , SUM(fact1.CUSTOM7 )
8864       , SUM(fact1.CUSTOM8 )
8865       , SUM(fact1.CUSTOM9 )
8866       , SUM(fact1.CUSTOM10 )
8867       , SUM(fact1.CUSTOM11 )
8868       , SUM(fact1.CUSTOM12 )
8869       , SUM(fact1.CUSTOM13 )
8870       , SUM(fact1.CUSTOM14 )
8871       , SUM(fact1.CUSTOM15 )
8872       , fact1.line_type
8873       , g_default_prg_level
8874       , fact1.PLAN_TYPE_CODE     /* 4471527 */
8875     FROM pji_fp_aggr_pjp1_t       fact1
8876        , pji_fm_extr_plnver3_t    ver3
8877     WHERE
8878           fact1.RBS_AGGR_LEVEL = g_lowest_level
8879       AND fact1.worker_id = g_worker_id
8880       AND fact1.plan_version_id = ver3.plan_version_id
8881       AND fact1.plan_type_code = ver3.plan_type_code   /*4471527 */
8882       AND ( fact1.rbs_version_id = ver3.rbs_struct_version_id
8883          OR fact1.rbs_version_id = -1)
8884       AND ver3.secondary_rbs_flag = 'N'
8885     GROUP BY
8886         fact1.PROJECT_ID
8887         , fact1.PROJECT_ORG_ID
8888         , fact1.PROJECT_ORGANIZATION_ID
8889       , fact1.project_element_id
8890         , fact1.TIME_ID
8891       , fact1.PERIOD_TYPE_ID
8892       , fact1.CALENDAR_TYPE
8893         , fact1.WBS_ROLLUP_FLAG
8894         , fact1.PRG_ROLLUP_FLAG
8895       , fact1.CURR_RECORD_TYPE_ID
8896       , fact1.CURRENCY_CODE
8897       -- , fact1.RBS_VERSION_ID
8898       , fact1.PLAN_VERSION_ID
8899       , fact1.PLAN_TYPE_ID
8900       , fact1.line_type
8901       , fact1.plan_type_code ;    /* 4471527 */
8902 
8903 
8904 EXCEPTION
8905   WHEN OTHERS THEN
8906     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8907                              p_procedure_name => 'ROLLUP_FPR_RBS_T_SLICE');
8908     RAISE;
8909 END;
8910 
8911 
8912 PROCEDURE COMPUTE_XBS_UPDATED_ROLLUPS IS
8913 BEGIN
8914   NULL;
8915 EXCEPTION
8916   WHEN OTHERS THEN
8917     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
8918                              p_procedure_name => 'COMPUTE_XBS_UPDATED_ROLLUPS');
8919     RAISE;
8920 END;
8921 
8922 
8923 PROCEDURE POPULATE_RBS_HDR IS
8924 
8925     l_last_update_date     date   := SYSDATE;
8926     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
8927     l_creation_date        date   := SYSDATE;
8928     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
8929     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
8930 
8931 BEGIN
8932 
8933   print_time ( ' Before update rbs header ' );
8934 
8935   INSERT INTO pji_pjp_rbs_header
8936   (
8937       project_id
8938     , plan_version_id
8939     , rbs_version_id
8940     , reporting_usage_flag
8941     , prog_rep_usage_flag
8942     , plan_usage_flag
8943     , LAST_UPDATE_DATE
8944     , LAST_UPDATED_BY
8945     , CREATION_DATE
8946     , CREATED_BY
8947     , LAST_UPDATE_LOGIN
8948     , PLAN_TYPE_CODE   /*4471527 */
8949   )
8950   SELECT rpa.project_id
8951       , bv.plan_version_id
8952       , rpa.rbs_version_id
8953       , rpa.reporting_usage_flag
8954       , rpa.prog_rep_usage_flag
8955       , DECODE(bv.wp_flag, 'Y', rpa.wp_usage_flag, rpa.fp_usage_flag)
8956       , l_last_update_date
8957       , l_last_updated_by
8958       , l_creation_date
8959       , l_created_by
8960       , l_last_update_login
8961       , bv.plan_type_code    /*4471527 */
8962   FROM pa_rbs_prj_assignments rpa
8963       , PJI_FM_EXTR_PLNVER3_T bv
8964       , pji_pjp_rbs_header head
8965   WHERE bv.project_id = rpa.project_id
8966     AND bv.RBS_STRUCT_VERSION_ID  = rpa.RBS_VERSION_ID
8967     AND bv.PROJECT_ID = head.PROJECT_ID (+)
8968     AND bv.PLAN_VERSION_ID = head.PLAN_VERSION_ID (+)
8969    AND bv.plan_type_code = head.plan_type_code (+)  /* 4471527 */
8970     AND bv.RBS_STRUCT_VERSION_ID = head.RBS_VERSION_ID (+)
8971     AND head.PROJECT_ID IS NULL
8972     AND bv.plan_version_id > 0;
8973 
8974   print_time ( ' After populate rbs header for WPs/FPs. # rows inserted = ' || SQL%ROWCOUNT );
8975 
8976   INSERT INTO pji_pjp_rbs_header
8977   (
8978       project_id
8979     , plan_version_id
8980     , rbs_version_id
8981     , reporting_usage_flag
8982     , prog_rep_usage_flag
8983     , plan_usage_flag
8984     , LAST_UPDATE_DATE
8985     , LAST_UPDATED_BY
8986     , CREATION_DATE
8987     , CREATED_BY
8988     , LAST_UPDATE_LOGIN
8989     ,PLAN_TYPE_CODE    /* 4471527 */
8990   )
8991   SELECT distinct bv.project_id
8992        , bv.plan_version_id
8993        , bv.rbs_struct_version_id
8994        , 'Y' -- rpa.reporting_usage_flag
8995        , 'Y' -- rpa.prog_rep_usage_flag
8996        , 'N' -- DECODE(bv.wp_flag, 'Y', rpa.wp_usage_flag, rpa.fp_usage_flag)
8997        , l_last_update_date
8998        , l_last_updated_by
8999        , l_creation_date
9000        , l_created_by
9001        , l_last_update_login
9002        , bv.plan_type_code    /* 4471527 */
9003   FROM  PJI_FM_EXTR_PLNVER3_T bv
9004       , pji_pjp_rbs_header head
9005   WHERE bv.PROJECT_ID = head.PROJECT_ID (+)
9006     AND bv.PLAN_VERSION_ID = head.PLAN_VERSION_ID (+)
9007     AND bv.plan_type_code = head.plan_type_code (+)     /* 4471527 */
9008     AND bv.RBS_STRUCT_VERSION_ID = head.RBS_VERSION_ID (+)
9009     AND head.PROJECT_ID IS NULL
9010     AND bv.plan_version_id in (-3, -4)
9011     AND bv.RBS_STRUCT_VERSION_ID is not null;  /*4882640*/
9012 
9013   print_time ( ' After populate rbs header for -3/-4s. # rows inserted = ' || SQL%ROWCOUNT );
9014 
9015 EXCEPTION
9016   WHEN OTHERS THEN
9017     print_time ( ' update rbs header exception ' || sqlerrm );
9018     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9019                              p_procedure_name => 'POPULATE_RBS_HDR');
9020     RAISE;
9021 END;
9022 
9023 
9024 PROCEDURE POPULATE_WBS_HDR IS
9025 
9026     l_last_update_date     date   := SYSDATE;
9027     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
9028     l_creation_date        date   := SYSDATE;
9029     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
9030     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
9031 
9032 BEGIN
9033 
9034   print_time ( ' Before populate wbs header ' );
9035 
9036   INSERT INTO PJI_PJP_WBS_HEADER
9037   (
9038     PROJECT_ID
9039   , PLAN_VERSION_ID
9040   , WBS_VERSION_ID
9041   , WP_FLAG
9042   , CB_FLAG
9043   , CO_FLAG
9044   , LOCK_FLAG
9045   , PLAN_TYPE_ID
9046   , MIN_TXN_DATE
9047   , MAX_TXN_DATE
9048   , PLAN_TYPE_CODE       /* 4471527 */
9049   , LAST_UPDATE_DATE
9050   , LAST_UPDATED_BY
9051   , CREATION_DATE
9052   , CREATED_BY
9053   , LAST_UPDATE_LOGIN
9054   )
9055   SELECT DISTINCT
9056          ver.project_id
9057        , ver.plan_version_id
9058        , ver.wbs_struct_version_id
9059        , ver.wp_flag
9060        , DECODE( (ver.current_flag || ver.baselined_flag) , 'YY', 'Y', 'N')
9061          , ver.current_original_flag
9062        , null
9063        , ver.plan_type_id
9064        , to_date('3000/01/01', 'YYYY/MM/DD') MIN_TXN_DATE
9065        , to_date('0001/01/01', 'YYYY/MM/DD') MAX_TXN_DATE
9066        , ver.plan_type_code      /* 4471527 */
9067        , l_last_update_date
9068        , l_last_updated_by
9069        , l_creation_date
9070        , l_created_by
9071        , l_last_update_login
9072   FROM PJI_FM_EXTR_PLNVER3_T ver
9073      , PJI_PJP_WBS_HEADER  whdr
9074   WHERE ver.plan_version_id = whdr.plan_version_id (+)
9075     AND ver.project_id = whdr.project_id (+)
9076     -- AND ver.wbs_struct_version_id = whdr.wbs_version_id (+)
9077     AND ver.plan_type_id = whdr.plan_type_id (+)
9078     AND ver.plan_type_code = whdr.plan_type_code (+)     /* 4471527 */
9079     AND whdr.plan_version_id IS NULL
9080   ORDER BY
9081         ver.project_id
9082       , ver.plan_version_id;
9083 
9084   print_time ( ' After populate wbs header. # rows inserted = ' || SQL%ROWCOUNT );
9085 
9086 EXCEPTION
9087   WHEN OTHERS THEN
9088     print_time ( ' populate wbs header exception ' || sqlerrm );
9089     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9090                              p_procedure_name => 'POPULATE_WBS_HDR');
9091     RAISE;
9092 END;
9093 
9094 
9095 PROCEDURE UPDATE_WBS_HDR  IS
9096 
9097     l_last_update_date     date   := SYSDATE;
9098     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
9099     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
9100 
9101 BEGIN
9102 
9103   print_time ( ' Before update wbs header ' );
9104 
9105   UPDATE /*+ index(whdr,PJI_PJP_WBS_HEADER_N1) */
9106          PJI_PJP_WBS_HEADER whdr
9107   SET ( MIN_TXN_DATE
9108       , MAX_TXN_DATE
9109       , LAST_UPDATE_DATE
9110       , LAST_UPDATED_BY
9111       , LAST_UPDATE_LOGIN
9112       ) = (
9113   SELECT MIN(LEAST(cal.start_date,  NVL(whdr.min_txn_date, cal.start_date))) start_date
9114        , MAX(GREATEST(cal.end_date, NVL(whdr.max_txn_date, cal.end_date))) end_date
9115        , l_last_update_date
9116        , l_last_updated_by
9117        , l_last_update_login
9118     FROM PJI_FP_AGGR_PJP1_T    pjp1
9119        , pji_time_cal_period_v   cal
9120    WHERE
9121          pjp1.worker_id = g_worker_id
9122      AND pjp1.plan_version_id = whdr.plan_version_id
9123      AND pjp1.project_id = whdr.project_id
9124      AND pjp1.plan_type_id = whdr.plan_type_id
9125      AND pjp1.time_id = cal.cal_period_id
9126      AND pjp1.calendar_type IN ('P', 'G') -- Non time ph and ent cals don't need to be considered.
9127                                       )
9128  WHERE (project_id, plan_version_id) IN
9129          (
9130           SELECT DISTINCT project_id, plan_version_id
9131           FROM   pji_fp_aggr_pjp1_t
9132          );
9133 
9134   print_time ( ' After update wbs header. # rows updated = ' || SQL%ROWCOUNT );
9135 
9136 EXCEPTION
9137   WHEN OTHERS THEN
9138     print_time ( ' update wbs header exception ' || sqlerrm );
9139     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9140                              p_procedure_name => 'POPULATE_WBS_HDR');
9141     RAISE;
9142 END;
9143 
9144 
9145 
9146 PROCEDURE MARK_TIME_DANGLING_VERSIONS IS
9147 BEGIN
9148 
9149    UPDATE PJI_FM_EXTR_PLNVER3_T
9150    SET TIME_DANGLING_FLAG = 'Y'
9151    WHERE plan_version_id IN
9152     (SELECT fact.plan_version_id
9153      FROM pji_fp_aggr_pjp1_t fact
9154         , pji_time_cal_period_v  time
9155           , pji_org_extr_info    orginfo
9156      WHERE fact.period_type_id = 32
9157        AND fact.worker_id = g_worker_id
9158        AND fact.calendar_type = 'P'
9159        AND fact.time_id = time.cal_period_id
9160          AND orginfo.org_id = fact.project_org_id
9161          AND TO_NUMBER(TO_CHAR(time.end_date, 'J')) > gl_calendar_max_date);
9162 
9163    UPDATE PJI_FM_EXTR_PLNVER3_T
9164    SET TIME_DANGLING_FLAG = 'Y'
9165    WHERE plan_version_id IN
9166     (SELECT fact.plan_version_id
9167      FROM pji_fp_aggr_pjp1_t fact
9168         , pji_time_cal_period_v  time
9169           , pji_org_extr_info    orginfo
9170      WHERE fact.period_type_id = 32
9171        AND fact.worker_id = g_worker_id
9172        AND fact.calendar_type = 'G'
9173        AND fact.time_id = time.cal_period_id
9174          AND orginfo.org_id = fact.project_org_id
9175          AND TO_NUMBER(TO_CHAR(time.end_date, 'J')) > pa_calendar_max_date);
9176 
9177 EXCEPTION
9178   WHEN OTHERS THEN
9179     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9180                              p_procedure_name => 'MARK_TIME_DANGLING_VERSIONS');
9181     RAISE;
9182 END;
9183 
9184 
9185 PROCEDURE MARK_EXTRACTED_PLANS(p_slice_type IN VARCHAR2) IS
9186 l_dangling_flag     VARCHAR2(1);
9187 l_plan_version_id   NUMBER;
9188 
9189 CURSOR PLANS_TO_MARK
9190     IS SELECT DISTINCT project_id,plan_version_id
9191          FROM pji_fm_extr_plnver3_t;
9192 
9193 l_plans_to_mark  PLANS_TO_MARK%ROWTYPE;
9194 
9195 BEGIN
9196 
9197   --
9198   -- On PA_BUDGET_VERSIONS, the PJI_SUMMARIZED_FLAG can have four values:
9199   --   'N' the plan version has not been summarized
9200   --   'P' the plan version has been partially summarized due to dangling currency or calendar records
9201   --   'Y' the plan version has been fully summarized in Project Performance and
9202   --   NULL the plan version has been fully summarized in both PJI and Project Performance.
9203   --
9204   -- Note that, in PJI data extraction, data that existed before PJI was installed
9205   -- has PJI_SUMMARIZED_FLAG = null and new transactions are inserted with value 'N'.
9206   -- A similar situation does not occur in PA_BUDGET_VERSIONS.  During the upgrade process
9207   -- will pull necessary data from PA_BUDGET_VERSIONS and set PJI_SUMMARIZATION_FLAG to 'P', 'N'
9208   -- or 'Y' accordingly.  New versions will be inserted with value 'N'.)
9209   --
9210 
9211   IF (p_slice_type = 'PRI') THEN
9212     /* Added index for bug 3818232 */
9213     UPDATE  /*+ INDEX( pa_budget_versions PA_BUDGET_VERSIONS_U1)*/
9214        pa_budget_versions
9215     SET    pji_summarized_flag =
9216                        DECODE(wp_version_flag
9217                             , 'Y', 'Y'
9218                             , DECODE(budget_status_code
9219                                    , 'B', 'P'
9220                                    , 'Y')
9221                              ),
9222             record_version_number=nvl(record_version_number,0)+1
9223     WHERE  budget_version_id IN
9224                ( SELECT DISTINCT plan_version_id
9225                  FROM   pji_fm_extr_plnver3_t );
9226 
9227   ELSE -- Secondary slice.
9228   FOR l_plans_to_mark IN PLANS_TO_MARK LOOP
9229            DECLARE
9230            BEGIN
9231            SELECT 'Y'
9232              INTO l_dangling_flag
9233               FROM DUAL
9234              WHERE EXISTS(
9235                            SELECT 1
9236                              FROM pji_fp_aggr_pjp1_t
9237                             WHERE (  time_dangling_flag IS NOT NULL
9238                                   OR rate_dangling_flag IS NOT NULL )
9239                               AND worker_id=g_worker_id
9240                               AND project_id=l_plans_to_mark.project_id
9241                               AND plan_version_id=l_plans_to_mark.plan_version_id
9242                             UNION ALL
9243                            SELECT 1
9244                              FROM PJI_FM_EXTR_PLNVER3_T
9245                             WHERE time_dangling_flag IS NOT NULL
9246                               AND project_id=l_plans_to_mark.project_id
9247                               AND plan_version_id=l_plans_to_mark.plan_version_id
9248                           );
9249             EXCEPTION
9250               WHEN NO_DATA_FOUND THEN
9251                     l_dangling_flag :='N';
9252             END;
9253 
9254 
9255 
9256             UPDATE pa_budget_versions
9257                SET pji_summarized_flag = decode(l_dangling_flag,'Y','P','Y'),
9258                    record_version_number=nvl(record_version_number,0)+1
9259              WHERE  budget_version_id IN
9260                       (
9261                              SELECT plan_version_id
9262                              FROM  PJI_FM_EXTR_PLNVER3_T
9263                       );
9264 
9265 END LOOP;
9266    -- Added INDEX for bug 3828698
9267 
9268 /*    UPDATE  pa_budget_versions
9269     SET    pji_summarized_flag = 'Y',
9270            record_version_number=nvl(record_version_number,0)+1
9271      WHERE  budget_version_id IN
9272               (
9273                      SELECT DISTINCT plan_version_id
9274                      FROM   pji_fp_aggr_pjp1_t
9275                      WHERE  worker_id = g_worker_id
9276               )
9277        AND  budget_version_id NOT IN
9278                 (
9279                           SELECT DISTINCT plan_version_id
9280                           FROM   pji_fp_aggr_pjp1_t
9281                           WHERE worker_id = g_worker_id
9282                             AND (time_dangling_flag IS NOT NULL
9283                               OR rate_dangling_flag IS NOT NULL )
9284                         )
9285        AND  budget_version_id NOT IN
9286                  (        SELECT distinct plan_version_id
9287                             FROM PJI_FM_EXTR_PLNVER3_T
9288                            WHERE time_dangling_flag IS NOT NULL
9289                  );
9290 
9291     UPDATE  pa_budget_versions
9292     SET    pji_summarized_flag = 'P',
9293             record_version_number=nvl(record_version_number,0)+1
9294     WHERE  budget_version_id IN
9295                 (
9296                           SELECT DISTINCT plan_version_id
9297                           FROM   pji_fp_aggr_pjp1_t
9298                           WHERE worker_id = g_worker_id
9299                             AND (time_dangling_flag IS NOT NULL
9300                               OR rate_dangling_flag IS NOT NULL )
9301                         )
9302       OR   budget_version_id in
9303                  (        SELECT distinct plan_version_id
9304                             FROM PJI_FM_EXTR_PLNVER3_T
9305                            WHERE time_dangling_flag IS NOT NULL
9306                  ); */
9307 
9308   END IF;
9309 
9310 EXCEPTION
9311   WHEN OTHERS THEN
9312     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9313                              p_procedure_name => 'MARK_EXTRACTED_PLANS');
9314     RAISE;
9315 END;
9316 
9317 
9318 
9319 ------------------------------------------------------------------------------
9320 ---- WBS rollup api..
9321 ------------------------------------------------------------------------------
9322 
9323 PROCEDURE CREATE_WBSRLP IS
9324 BEGIN
9325 
9326   print_time('... Begin CREATE_WBSRLP ' );
9327 
9328   PRINT_NUM_WBSRLPRCDS_INPJP1;
9329 
9330   print_time('... Before call to rollup_fpr_wbs...' );
9331 
9332   PJI_PJP_SUM_ROLLUP.ROLLUP_FPR_WBS;
9333 
9334   print_time('... after call to rollup_fpr_wbs. ' );
9335 
9336   PRINT_NUM_WBSRLPRCDS_INPJP1;
9337 
9338   print_time('... End CREATE_WBSRLP ' );
9339 
9340 EXCEPTION
9341   WHEN OTHERS THEN
9342     print_time('... Exception CREATE_WBSRLP ' );
9343     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9344                              p_procedure_name => 'CREATE_WBSRLP');
9345     RAISE;
9346 END;
9347 
9348 
9349 
9350 PROCEDURE PRINT_NUM_WBSRLPRCDS_INPJP1 IS
9351   l_count NUMBER;
9352   l_wbs_rollup_flag  VARCHAR2(1);
9353   l_prg_rollup_flag  VARCHAR2(1);
9354   l_return_status    VARCHAR2(1);
9355 
9356 BEGIN
9357 
9358   l_wbs_rollup_flag  := 'N';
9359   l_prg_rollup_flag  := 'N';
9360 
9361 /*
9362   select count(1)
9363   INTO   l_count
9364   FROM   pji_fp_aggr_pjp1_t
9365   WHERE  wbs_rollup_flag = l_wbs_rollup_flag
9366     AND  prg_rollup_flag = l_prg_rollup_flag;
9367 
9368   print_time ( ' l_worker_id = '|| g_worker_id || ' wbs rollup flag = ' || l_wbs_rollup_flag || ' prg rollup flag = ' || l_prg_rollup_flag || ' l_count ' || l_count);
9369 
9370 
9371   l_wbs_rollup_flag  := 'N';
9372   l_prg_rollup_flag  := 'Y';
9373 
9374   select count(1)
9375   INTO   l_count
9376   FROM   pji_fp_aggr_pjp1_t
9377   WHERE  wbs_rollup_flag = l_wbs_rollup_flag
9378     AND  prg_rollup_flag = l_prg_rollup_flag;
9379 
9380   print_time ( ' l_worker_id = '|| g_worker_id || ' wbs rollup flag = ' || l_wbs_rollup_flag || ' prg rollup flag = ' || l_prg_rollup_flag || ' l_count ' || l_count);
9381 
9382 
9383   l_wbs_rollup_flag  := 'Y';
9384   l_prg_rollup_flag  := 'N';
9385 
9386   select count(1)
9387   INTO   l_count
9388   FROM   pji_fp_aggr_pjp1_t
9389   WHERE  wbs_rollup_flag = l_wbs_rollup_flag
9390     AND  prg_rollup_flag = l_prg_rollup_flag;
9391 
9392   print_time ( ' l_worker_id = '|| g_worker_id || ' wbs rollup flag = ' || l_wbs_rollup_flag || ' prg rollup flag = ' || l_prg_rollup_flag || ' l_count ' || l_count);
9393 
9394 
9395   l_wbs_rollup_flag  := 'Y';
9396   l_prg_rollup_flag  := 'Y';
9397 
9398   select count(1)
9399   INTO   l_count
9400   FROM   pji_fp_aggr_pjp1_t
9401   WHERE  wbs_rollup_flag = l_wbs_rollup_flag
9402     AND  prg_rollup_flag = l_prg_rollup_flag;
9403 
9404   print_time ( ' l_worker_id = '|| g_worker_id || ' wbs rollup flag = ' || l_wbs_rollup_flag || ' prg rollup flag = ' || l_prg_rollup_flag || ' l_count ' || l_count);
9405 */
9406 
9407 EXCEPTION
9408   WHEN OTHERS THEN
9409     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
9410     ( p_package_name   => g_package_name
9411     , p_procedure_name => 'PRINT_NUM_WBSRLPRCDS_INPJP1'
9412     , x_return_status  => l_return_status ) ;
9413 
9414     RAISE;
9415 END;
9416 
9417 
9418 PROCEDURE CLEANUP_INTERIM_TABLES IS
9419   l_count NUMBER;
9420 BEGIN
9421 
9422   print_time('.......CLEANUP_INTERIM_TABLES: Begin. ');
9423 
9424   DELETE FROM PJI_FM_EXTR_PLNVER3_T ; -- No worker id join needed for online case.
9425 
9426   print_time('.......ver3 rows deleted: #= ' || sql%rowcount);
9427 
9428   DELETE FROM pji_fp_aggr_pjp1_t ; -- No worker id join needed for online case.
9429 
9430   print_time('.......pjp1 rows deleted: #= ' || sql%rowcount);
9431 
9432   print_time('.......CLEANUP_INTERIM_TABLES: End. ');
9433 
9434 EXCEPTION
9435   WHEN OTHERS THEN
9436     print_time('.......CLEANUP_INTERIM_TABLES: Exception. ' || sqlerrm);
9437     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9438                              p_procedure_name => 'CLEANUP_INTERIM_TABLES');
9439     RAISE;
9440 END CLEANUP_INTERIM_TABLES;
9441 
9442 
9443 PROCEDURE SET_WORKER_ID(p_worker_id IN NUMBER := NULL) IS
9444   l_return_status VARCHAR2(1);
9445 BEGIN
9446   IF (p_worker_id IS NOT NULL) THEN
9447     g_worker_id := p_worker_id;
9448   ELSE
9449     g_worker_id := 1; -- PJI_PJP_FP_CURR_WRAP.GET_WORKER_ID;
9450   END IF;
9451 EXCEPTION
9452   WHEN OTHERS THEN
9453     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
9454     ( p_package_name   => g_package_name
9455     , p_procedure_name => 'SET_WORKER_ID'
9456     , x_return_status  => l_return_status ) ;
9457 
9458     RAISE;
9459 END;
9460 
9461 
9462 
9463 --
9464 -- Temp fix until time table will have a record for non time phasing.
9465 --
9466 PROCEDURE INSERT_NTP_CAL_RECORD ( x_max_plnver_id OUT NOCOPY  NUMBER ) IS
9467     l_last_update_date     date   := SYSDATE;
9468     l_last_updated_by      NUMBER := FND_GLOBAL.USER_ID;
9469     l_creation_date        date   := SYSDATE;
9470     l_created_by           NUMBER := FND_GLOBAL.USER_ID;
9471     l_last_update_login    NUMBER := FND_GLOBAL.LOGIN_ID;
9472 
9473     l_start_end_date       DATE   := TRUNC(SYSDATE);
9474 
9475 BEGIN
9476 
9477   BEGIN
9478 
9479     SELECT MAX(plan_version_id)
9480     INTO   x_max_plnver_id
9481     FROM   pji_fm_extr_plnver3_t;
9482 
9483   EXCEPTION
9484     WHEN NO_DATA_FOUND THEN
9485       RETURN;
9486   END;
9487 
9488   IF (x_max_plnver_id IS NULL) THEN
9489     RETURN;
9490   END IF;
9491 
9492   print_time (' Inside INSERT_NTP_CAL_RECORD, max project_id is: ' || x_max_plnver_id);
9493 
9494    INSERT INTO pji_time_cal_period
9495   (
9496                 CAL_PERIOD_ID,
9497                 CAL_QTR_ID,
9498                 CALENDAR_ID,
9499                 SEQUENCE,
9500                 NAME ,
9501                 START_DATE,
9502                 END_DATE,
9503                 CREATION_DATE,
9504                 LAST_UPDATE_DATE,
9505                 LAST_UPDATED_BY,
9506                 CREATED_BY,
9507                 LAST_UPDATE_LOGIN
9508 )
9509   SELECT  -x_max_plnver_id   cal_period_id
9510         , -x_max_plnver_id   cal_qtr_id
9511         , -x_max_plnver_id   calendar_id
9512         , -x_max_plnver_id   SEQUENCE
9513         , g_ntp_period_name   name
9514         , l_start_end_date    start_date
9515         , l_start_end_date    end_date
9516         , l_creation_date     creation_date
9517         , l_last_update_date  last_update_date
9518         , l_last_updated_by   last_updated_by
9519         , l_created_by        created_by
9520         , l_last_update_login last_update_login
9521     FROM  DUAL;
9522 
9523     print_time (' INSERT_NTP_CAL_RECORD, # rows inserted is: ' || SQL%ROWCOUNT );
9524 
9525 EXCEPTION
9526   WHEN OTHERS THEN
9527     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9528                              p_procedure_name => 'INSERT_NTP_CAL_RECORD');
9529     RAISE;
9530 END;
9531 
9532 
9533 PROCEDURE DELETE_NTP_CAL_RECORD ( p_max_plnver_id IN NUMBER ) IS
9534 BEGIN
9535 
9536     print_time (' DELETE_NTP_CAL_RECORD, max project_id is: ' || p_max_plnver_id);
9537 
9538     DELETE FROM pji_time_cal_period
9539     WHERE cal_period_id =  -p_max_plnver_id;
9540 
9541     print_time (' DELETE_NTP_CAL_RECORD, # rows deleted is: ' || SQL%ROWCOUNT );
9542 
9543 EXCEPTION
9544   WHEN OTHERS THEN
9545     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9546                              p_procedure_name => 'DELETE_NTP_CAL_RECORD');
9547     RAISE;
9548 END;
9549 
9550 
9551 --
9552 --   MAP_ORG_CAL_INFO
9553 -- 1. Populates/updates the org extr info table with any calendar and org information
9554 --      that has changed from the last time this table was updated.
9555 -- 2. Populates pa/gl/ent calendar period tables with newly opened periods.
9556 --
9557 PROCEDURE MAP_ORG_CAL_INFO (
9558   p_fpm_upgrade IN VARCHAR2 := 'Y'
9559 ) IS
9560 
9561   l_return_status VARCHAR2(1) := NULL;
9562   l_msg_count     NUMBER := NULL;
9563   l_msg_data      VARCHAR2(300) := NULL;
9564 
9565   CURSOR c_cal_attributes_cur IS
9566   SELECT DISTINCT
9567          DECODE(split_cal.cal_type
9568               , 1
9569               , sob.period_set_name -- gl cal period set name.
9570               , 2
9571               , imp.period_set_name -- pa
9572               ) period_set_name
9573        , DECODE(split_cal.cal_type
9574               , 1
9575               , sob.accounted_period_type -- gl
9576               , 2
9577               , imp.pa_period_type -- pa
9578               ) period_type
9579   FROM pa_implementations_all imp
9580      , gl_sets_of_books sob
9581      , pa_projects_all proj
9582      , pji_fm_extr_plnver3_t ver
9583      , ( SELECT 1 cal_type FROM DUAL -- 1 GL, 2 PA.
9584          UNION ALL
9585          SELECT 2 FROM DUAL
9586        ) split_cal
9587   WHERE 1=1
9588   AND proj.org_id=imp.org_id
9589   AND ver.project_id = proj.project_id
9590   AND imp.set_of_books_id = sob.set_of_books_id;
9591 
9592 BEGIN
9593 
9594   print_time('MAP_ORG_CAL_INFO : begin calendar table updates.. ');
9595 
9596   IF (p_fpm_upgrade = 'Y') THEN
9597 
9598     NULL;
9599 
9600   ELSIF (p_fpm_upgrade = 'N') THEN
9601 
9602     FOR i IN c_cal_attributes_cur LOOP
9603 
9604       print_time( ' i.period_set_name = ' || i.period_set_name );
9605       print_time( ' i.period_type = ' || i.period_type);
9606 
9607       PJI_TIME_C.LOAD(
9608         p_period_set_name => i.period_set_name
9609       , p_period_type     => i.period_type
9610       , x_return_status   => l_return_status
9611       , x_msg_count       => l_msg_count
9612       , x_msg_data        => l_msg_data );
9613 
9614       print_time( ' l_return_status = ' || l_return_status );
9615 
9616    END LOOP;
9617 
9618   END IF;
9619 
9620   print_time(' Finished calendar table updates.. ');
9621 
9622   IF (p_fpm_upgrade = 'Y') THEN
9623     PJI_PJP_EXTRACTION_UTILS.POPULATE_ORG_EXTR_INFO;
9624   ELSIF (p_fpm_upgrade = 'N') THEN
9625     PJI_PJP_EXTRACTION_UTILS.UPDATE_ORG_EXTR_INFO;
9626   END IF;
9627 
9628   print_time(' Finished updating org extr info table. ');
9629   print_time(' MAP_ORG_CAL_INFO : end.. ');
9630 
9631 EXCEPTION
9632   WHEN OTHERS THEN
9633     print_time('MAP_ORG_CAL_INFO : exception.. ');
9634     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9635                              p_procedure_name => 'MAP_ORG_CAL_INFO');
9636     RAISE;
9637 END;
9638 
9639 
9640 ----------
9641 -- Print time API to measure time taken by each api. Also useful for debugging.
9642 ----------
9643 PROCEDURE PRINT_TIME(p_tag IN VARCHAR2) IS
9644 BEGIN
9645   PJI_PJP_FP_CURR_WRAP.print_time(p_tag);
9646 EXCEPTION
9647   WHEN OTHERS THEN
9648     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
9649                              p_procedure_name => 'PRINT_TIME');
9650     RAISE;
9651 END;
9652 
9653 
9654 BEGIN  --  this portion is executed WHENever the package is initialized
9655 
9656   g_worker_id  := 1; -- PJI_PJP_FP_CURR_WRAP.GET_WORKER_ID;
9657 
9658 
9659 END PJI_FM_PLAN_MAINT_T_PVT;