DBA Data[Home] [Help]

PACKAGE BODY: APPS.PJI_FM_XBS_ACCUM_UTILS

Source


1 PACKAGE BODY PJI_FM_XBS_ACCUM_UTILS AS
2 /* $Header: PJIPUT1B.pls 120.53.12020000.12 2013/04/26 19:15:06 sachandr ship $ */
3 
4 g_package_name VARCHAR2(100) := 'PJI_FM_XBS_ACCUM_UTILS';
5 g_debug_mode varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N') ;
6 
7 PROCEDURE PRINT_TIME(p_tag IN VARCHAR2);
8 
9 
10 -----------------------------------------------------------------
11 -- This API supports 3 kinds of data retrieval
12 --   1. Entered level data at task level by resource list member
13 --   2. Entered level data at project level by resource list member
14 --   3. Rollup data by task (no resource list member context)
15 -----------------------------------------------------------------
16   /*Changed for workplan progress.  p_end_date              IN   DATE ,
17      p_calendar_type IN VARCHAR2
18      and added p_extraction_type IN VARCHAR2 := NULL,
19      p_calling_context       IN   VARCHAR2 := NULL,
20      */
21 
22 /* added procedure for bug#3993830 */
23 PROCEDURE debug_accum
24 IS
25 BEGIN
26 INSERT INTO pji_fm_xbs_accum_tmp1_debug
27  (
28   PROJECT_ID                             ,
29   STRUCT_VERSION_ID                      ,
30   PROJECT_ELEMENT_ID                     ,
31   CALENDAR_TYPE                          ,
32   PERIOD_NAME                            ,
33   PLAN_VERSION_ID                        ,
34   RES_LIST_MEMBER_ID                     ,
35   QUANTITY                               ,
36   TXN_CURRENCY_CODE                      ,
37   TXN_RAW_COST                           ,
38   TXN_BRDN_COST                          ,
39   TXN_REVENUE                            ,
40   TXN_LABOR_RAW_COST                     ,
41   TXN_LABOR_BRDN_COST                    ,
42   TXN_EQUIP_RAW_COST                     ,
43   TXN_EQUIP_BRDN_COST                    ,
44   TXN_BASE_RAW_COST                      ,
45   TXN_BASE_BRDN_COST                     ,
46   TXN_BASE_LABOR_RAW_COST                ,
47   TXN_BASE_LABOR_BRDN_COST               ,
48   TXN_BASE_EQUIP_RAW_COST                ,
49   TXN_BASE_EQUIP_BRDN_COST               ,
50   PRJ_RAW_COST                           ,
51   PRJ_BRDN_COST                          ,
52   PRJ_REVENUE                            ,
53   PRJ_LABOR_RAW_COST                     ,
54   PRJ_LABOR_BRDN_COST                    ,
55   PRJ_EQUIP_RAW_COST                     ,
56   PRJ_EQUIP_BRDN_COST                    ,
57   PRJ_BASE_RAW_COST                      ,
58   PRJ_BASE_BRDN_COST                     ,
59   PRJ_BASE_LABOR_RAW_COST                ,
60   PRJ_BASE_LABOR_BRDN_COST               ,
61   PRJ_BASE_EQUIP_RAW_COST                ,
62   PRJ_BASE_EQUIP_BRDN_COST               ,
63   POU_RAW_COST                           ,
64   POU_BRDN_COST                          ,
65   POU_REVENUE                            ,
66   POU_LABOR_RAW_COST                     ,
67   POU_LABOR_BRDN_COST                    ,
68   POU_EQUIP_RAW_COST                     ,
69   POU_EQUIP_BRDN_COST                    ,
70   POU_BASE_RAW_COST                      ,
71   POU_BASE_BRDN_COST                     ,
72   POU_BASE_LABOR_RAW_COST                ,
73   POU_BASE_LABOR_BRDN_COST               ,
74   POU_BASE_EQUIP_RAW_COST                ,
75   POU_BASE_EQUIP_BRDN_COST               ,
76   LABOR_HOURS                            ,
77   EQUIPMENT_HOURS                        ,
78   BASE_LABOR_HOURS                       ,
79   BASE_EQUIP_HOURS                       ,
80   SOURCE_ID                              ,
81   ACT_LABOR_HRS                          ,
82   ACT_EQUIP_HRS                          ,
83   ACT_TXN_LABOR_BRDN_COST                ,
84   ACT_TXN_EQUIP_BRDN_COST                ,
85   ACT_TXN_BRDN_COST                      ,
86   ACT_PRJ_LABOR_BRDN_COST                ,
87   ACT_PRJ_EQUIP_BRDN_COST                ,
88   ACT_PRJ_BRDN_COST                      ,
89   ACT_PFC_LABOR_BRDN_COST                ,
90   ACT_PFC_EQUIP_BRDN_COST                ,
91   ACT_PFC_BRDN_COST                      ,
92   ETC_LABOR_HRS                          ,
93   ETC_EQUIP_HRS                          ,
94   ETC_TXNLABOR_BRDN_COST                 ,
95   ETC_TXN_EQUIP_BRDN_COST                ,
96   ETC_TXN_BRDN_COST                      ,
97   ETC_PRJ_LABOR_BRDN_COST                ,
98   ETC_PRJ_EQUIP_BRDN_COST                ,
99   ETC_PRJ_BRDN_COST                      ,
100   ETC_POU_LABOR_BRDN_COST                ,
101   ETC_POU_EQUIP_BRDN_COST                ,
102   ETC_POU_BRDN_COST                      ,
103   ACT_TXN_RAW_COST                       ,
104   ACT_PRJ_RAW_COST                       ,
105   ACT_POU_RAW_COST                       ,
106   ETC_TXN_RAW_COST                       ,
107   ETC_PRJ_RAW_COST                       ,
108   ETC_POU_RAW_COST                       ,
109   ACT_TXN_LABOR_RAW_COST                 ,
110   ACT_TXN_EQUIP_RAW_COST                 ,
111   ACT_PRJ_LABOR_RAW_COST                 ,
112   ACT_PRJ_EQUIP_RAW_COST                 ,
113   ACT_POU_LABOR_RAW_COST                 ,
114   ACT_POU_EQUIP_RAW_COST                 ,
115   ETC_TXN_LABOR_RAW_COST                 ,
116   ETC_TXN_EQUIP_RAW_COST                 ,
117   ETC_PRJ_LABOR_RAW_COST                 ,
118   ETC_PRJ_EQUIP_RAW_COST                 ,
119   ETC_POU_LABOR_RAW_COST                 ,
120   ETC_POU_EQUIP_RAW_COST                 ,
121   ACT_POU_LABOR_BRDN_COST                ,
122   ACT_POU_EQUIP_BRDN_COST                ,
123   ACT_POU_BRDN_COST                      ,
124   ETC_TXN_LABOR_BRDN_COST                ,
125   TXN_LPB_RAW_COST                       ,
126   TXN_LPB_BRDN_COST                      ,
127   TXN_LPB_LABOR_RAW_COST                 ,
128   TXN_LPB_LABOR_BRDN_COST                ,
129   TXN_LPB_EQUIP_RAW_COST                 ,
130   TXN_LPB_EQUIP_BRDN_COST                ,
131   PRJ_LPB_RAW_COST                       ,
132   PRJ_LPB_BRDN_COST                      ,
133   PRJ_LPB_LABOR_RAW_COST                 ,
134   PRJ_LPB_LABOR_BRDN_COST                ,
135   PRJ_LPB_EQUIP_RAW_COST                 ,
136   PRJ_LPB_EQUIP_BRDN_COST                ,
137   POU_LPB_RAW_COST                       ,
138   POU_LPB_BRDN_COST                      ,
139   POU_LPB_LABOR_RAW_COST                 ,
140   POU_LPB_LABOR_BRDN_COST                ,
141   POU_LPB_EQUIP_RAW_COST                 ,
142   POU_LPB_EQUIP_BRDN_COST                ,
143   LPB_LABOR_HOURS                        ,
144   LPB_EQUIP_HOURS                        ,
145   PERIOD_FLAG                            ,
146   CREATION_DATE
147  )
148 SELECT
149   PROJECT_ID                             ,
150   STRUCT_VERSION_ID                      ,
151   PROJECT_ELEMENT_ID                     ,
152   CALENDAR_TYPE                          ,
153   PERIOD_NAME                            ,
154   PLAN_VERSION_ID                        ,
155   RES_LIST_MEMBER_ID                     ,
156   QUANTITY                               ,
157   TXN_CURRENCY_CODE                      ,
158   TXN_RAW_COST                           ,
159   TXN_BRDN_COST                          ,
160   TXN_REVENUE                            ,
161   TXN_LABOR_RAW_COST                     ,
162   TXN_LABOR_BRDN_COST                    ,
163   TXN_EQUIP_RAW_COST                     ,
164   TXN_EQUIP_BRDN_COST                    ,
165   TXN_BASE_RAW_COST                      ,
166   TXN_BASE_BRDN_COST                     ,
167   TXN_BASE_LABOR_RAW_COST                ,
168   TXN_BASE_LABOR_BRDN_COST               ,
169   TXN_BASE_EQUIP_RAW_COST                ,
170   TXN_BASE_EQUIP_BRDN_COST               ,
171   PRJ_RAW_COST                           ,
172   PRJ_BRDN_COST                          ,
173   PRJ_REVENUE                            ,
174   PRJ_LABOR_RAW_COST                     ,
175   PRJ_LABOR_BRDN_COST                    ,
176   PRJ_EQUIP_RAW_COST                     ,
177   PRJ_EQUIP_BRDN_COST                    ,
178   PRJ_BASE_RAW_COST                      ,
179   PRJ_BASE_BRDN_COST                     ,
180   PRJ_BASE_LABOR_RAW_COST                ,
181   PRJ_BASE_LABOR_BRDN_COST               ,
182   PRJ_BASE_EQUIP_RAW_COST                ,
183   PRJ_BASE_EQUIP_BRDN_COST               ,
184   POU_RAW_COST                           ,
185   POU_BRDN_COST                          ,
186   POU_REVENUE                            ,
187   POU_LABOR_RAW_COST                     ,
188   POU_LABOR_BRDN_COST                    ,
189   POU_EQUIP_RAW_COST                     ,
190   POU_EQUIP_BRDN_COST                    ,
191   POU_BASE_RAW_COST                      ,
192   POU_BASE_BRDN_COST                     ,
193   POU_BASE_LABOR_RAW_COST                ,
194   POU_BASE_LABOR_BRDN_COST               ,
195   POU_BASE_EQUIP_RAW_COST                ,
196   POU_BASE_EQUIP_BRDN_COST               ,
197   LABOR_HOURS                            ,
198   EQUIPMENT_HOURS                        ,
199   BASE_LABOR_HOURS                       ,
200   BASE_EQUIP_HOURS                       ,
201   SOURCE_ID                              ,
202   ACT_LABOR_HRS                          ,
203   ACT_EQUIP_HRS                          ,
204   ACT_TXN_LABOR_BRDN_COST                ,
205   ACT_TXN_EQUIP_BRDN_COST                ,
206   ACT_TXN_BRDN_COST                      ,
207   ACT_PRJ_LABOR_BRDN_COST                ,
208   ACT_PRJ_EQUIP_BRDN_COST                ,
209   ACT_PRJ_BRDN_COST                      ,
210   ACT_PFC_LABOR_BRDN_COST                ,
211   ACT_PFC_EQUIP_BRDN_COST                ,
212   ACT_PFC_BRDN_COST                      ,
213   ETC_LABOR_HRS                          ,
214   ETC_EQUIP_HRS                          ,
215   ETC_TXNLABOR_BRDN_COST                 ,
216   ETC_TXN_EQUIP_BRDN_COST                ,
217   ETC_TXN_BRDN_COST                      ,
218   ETC_PRJ_LABOR_BRDN_COST                ,
219   ETC_PRJ_EQUIP_BRDN_COST                ,
220   ETC_PRJ_BRDN_COST                      ,
221   ETC_POU_LABOR_BRDN_COST                ,
222   ETC_POU_EQUIP_BRDN_COST                ,
223   ETC_POU_BRDN_COST                      ,
224   ACT_TXN_RAW_COST                       ,
225   ACT_PRJ_RAW_COST                       ,
226   ACT_POU_RAW_COST                       ,
227   ETC_TXN_RAW_COST                       ,
228   ETC_PRJ_RAW_COST                       ,
229   ETC_POU_RAW_COST                       ,
230   ACT_TXN_LABOR_RAW_COST                 ,
231   ACT_TXN_EQUIP_RAW_COST                 ,
232   ACT_PRJ_LABOR_RAW_COST                 ,
233   ACT_PRJ_EQUIP_RAW_COST                 ,
234   ACT_POU_LABOR_RAW_COST                 ,
235   ACT_POU_EQUIP_RAW_COST                 ,
236   ETC_TXN_LABOR_RAW_COST                 ,
237   ETC_TXN_EQUIP_RAW_COST                 ,
238   ETC_PRJ_LABOR_RAW_COST                 ,
239   ETC_PRJ_EQUIP_RAW_COST                 ,
240   ETC_POU_LABOR_RAW_COST                 ,
241   ETC_POU_EQUIP_RAW_COST                 ,
242   ACT_POU_LABOR_BRDN_COST                ,
243   ACT_POU_EQUIP_BRDN_COST                ,
244   ACT_POU_BRDN_COST                      ,
245   ETC_TXN_LABOR_BRDN_COST                ,
246   TXN_LPB_RAW_COST                       ,
247   TXN_LPB_BRDN_COST                      ,
248   TXN_LPB_LABOR_RAW_COST                 ,
249   TXN_LPB_LABOR_BRDN_COST                ,
250   TXN_LPB_EQUIP_RAW_COST                 ,
251   TXN_LPB_EQUIP_BRDN_COST                ,
252   PRJ_LPB_RAW_COST                       ,
253   PRJ_LPB_BRDN_COST                      ,
254   PRJ_LPB_LABOR_RAW_COST                 ,
255   PRJ_LPB_LABOR_BRDN_COST                ,
256   PRJ_LPB_EQUIP_RAW_COST                 ,
257   PRJ_LPB_EQUIP_BRDN_COST                ,
258   POU_LPB_RAW_COST                       ,
259   POU_LPB_BRDN_COST                      ,
260   POU_LPB_LABOR_RAW_COST                 ,
261   POU_LPB_LABOR_BRDN_COST                ,
262   POU_LPB_EQUIP_RAW_COST                 ,
263   POU_LPB_EQUIP_BRDN_COST                ,
264   LPB_LABOR_HOURS                        ,
265   LPB_EQUIP_HOURS                        ,
266   PERIOD_FLAG                            ,
267   SYSDATE
268  FROM
269   pji_fm_xbs_accum_tmp1 ;
270 
271 END;
272 ----------------------------------------------------------------------------
273 -- Created DEGUPTA
274 -- To delete fin8 table data from pa_progress_pub.get_summarized_actuals API
275 -- Removing the delete from this package API get_summarized_actuals
276 -- Bug No. 5349102
277 ----------------------------------------------------------------------------
278 PROCEDURE DELETE_FIN8(
279     p_project_id    IN   NUMBER,
280     p_calendar_type IN   VARCHAR2 DEFAULT NULL,
281     p_end_date      IN   DATE DEFAULT NULL,
282     p_err_flag      IN NUMBER DEFAULT 0,
283     p_err_msg       IN VARCHAR2 DEFAULT NULL
284 ) IS
285 
286 l_period_type_id NUMBER;
287 l_calendar_type VARCHAR2(1);
288 l_org_id NUMBER;
289 l_end_period_id NUMBER;
290 BEGIN
291 
292    pa_debug.log_message('DELETE_FIN8: p_project_id'||p_project_id||'p_err_flag'||p_err_flag||'p_err_msg '||p_err_msg , 3);
293 IF p_err_flag =1 THEN
294    update pji_pjp_proj_batch_map set act_err_msg=p_err_msg
295    where project_id=p_project_id;
296 
297 else
298       print_time ( ' Deleting pji_fm_aggr_fin8 0001 p_calendar_type ' || p_calendar_type ) ;
299            IF (p_calendar_type = 'N') THEN
300       print_time ( ' Deleting pji_fm_aggr_fin8 0001.1 ' ) ;
301              l_calendar_type := 'A';
302              l_period_type_id := 2048;
303            ELSIF (p_calendar_type = 'P') THEN
304       print_time ( ' Deleting pji_fm_aggr_fin8 0001.2 ' ) ;
305              l_calendar_type := 'P';
306              l_period_type_id := 32;
307            ELSE
308       print_time ( ' Deleting pji_fm_aggr_fin8 0001.3 ' ) ;
309              l_calendar_type := 'G';
310              l_period_type_id := 32;
311            END IF;
312       print_time ( ' get_summarized_data 0002 ' ) ;
313 
314       SELECT ORG_ID
315           INTO   l_org_id
316           FROM   pa_projects_all
317           WHERE  project_id = p_project_id;
318 
319       IF l_calendar_type ='A' then
320              l_end_period_id :=-1;
321       ELSE
322       BEGIN
323         SELECT cal.CAL_PERIOD_ID
324         INTO l_end_period_id
325         FROM pji_time_cal_period_v cal,
326              pji_org_extr_info    info
327         WHERE TRUNC(p_end_date) BETWEEN
328               TRUNC(cal.START_DATE) AND TRUNC(cal.END_DATE) AND
329               info.ORG_ID  = l_org_id AND
330               DECODE(l_calendar_type, 'P', info.PA_CALENDAR_ID,
331               info.GL_CALENDAR_ID) = cal.CALENDAR_ID;
332          EXCEPTION WHEN NO_DATA_FOUND THEN
333           Pa_Debug.log_message('Project Id:' || p_project_id
334                             || ' Org Id:' || l_org_id
335                             || ' End Date:' || p_end_date);
336                    print_time ('Project Id:' || p_project_id
337                             || ' Org Id:' || l_org_id
338                             || ' End Date:' || p_end_date);
339       END;
340       END IF;
341 
342       IF l_calendar_type  = 'A' THEN
343          delete from pji_fm_aggr_fin8 fin where
344          fin.PROJECT_ID           = p_project_id;
345       ELSE
346          delete from pji_fm_aggr_fin8 fin where
347          fin.PROJECT_ID           = p_project_id
348          AND  fin.RECVR_PERIOD_ID  <= l_end_period_id;
349       END IF;
350    END IF;
351 
352 END;
353 
354 
355 
356 PROCEDURE get_summarized_data (
357     p_project_ids           IN   SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type(),
358     p_resource_list_ids     IN   SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type(),
359     p_struct_ver_ids        IN   SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type(),
360     p_start_date            IN   DATE := NULL,
361     p_end_date              IN   SYSTEM.pa_date_tbl_type := system.pa_date_tbl_type(),
362     p_start_period_name     IN   VARCHAR2 := NULL,
363     p_end_period_name       IN   VARCHAR2 := NULL,
364     p_calendar_type         IN   SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE(),
365     p_extraction_type       IN   VARCHAR2 := NULL,
366     p_calling_context       IN   VARCHAR2 := NULL,
367     p_record_type           IN   VARCHAR2,
368     p_currency_type         IN   NUMBER,
369     x_return_status         OUT NOCOPY  VARCHAR2,
370     x_msg_code              OUT NOCOPY  VARCHAR2) IS
371 
372     /* Commented for workplan progress
373     l_end_period_id        NUMBER;
374     l_period_type_id       NUMBER;
375     l_org_id               NUMBER;
376      End of workplan progress */
377     l_end_period_id        SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type(); /* Added for workplan progress */
378     l_currency_mask        NUMBER;
379     l_period_type_id       SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();/*Added for workplan progress */
380     l_periodic_flag        VARCHAR2(1);
381     l_planres_level_flag   VARCHAR2(1);
382     l_task_level_flag      VARCHAR2(1);
383     l_task_rollup_flag     VARCHAR2(1);
384     l_proj_level_flag     VARCHAR2(1);
385     l_summarized_flag      VARCHAR2(1);
386     l_msg_count            NUMBER;
387     l_calendar_type        SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
388     l_org_id               SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();/*Added for workplan progress */
389     l_map_resource_list    EXCEPTION;
390     l_get_summarized_data varchar2(1) :='Y';
391     l_summ_hasrun varchar2(1) :='N';
392 
393 
394 BEGIN
395 
396     PJI_PJP_FP_CURR_WRAP.INIT_ERR_STACK
397     ( p_package_name   => g_package_name
398     , x_return_status  => x_return_status );
399 
400 
401     -- Cleanup tmp1 table for 3750147.
402     DELETE FROM pji_fm_xbs_accum_tmp1;
403 
404     DELETE FROM pa_res_list_map_tmp1;      /* Uncommented for bug 9859199 */
405     DELETE FROM pa_res_list_map_tmp2;      -- Bug#4726170
406 
407 
408     /* Commented for workplan progress
409     print_time ( ' get_summarized_data 0001 p_calendar_type ' || p_calendar_type ) ;
410 
411     --------------------------------------------------
412     --Identifying the period type id and calendar type
413     --------------------------------------------------
414     --TODO: Need to add calendar type joins throughout
415     IF (p_calendar_type = 'N') THEN                             print_time ( ' get_summarized_data 0001.1 ' ) ;
416       l_calendar_type  := 'A';
417       l_period_type_id := 2048;
418     ELSIF (p_calendar_type = 'P') THEN                          print_time ( ' get_summarized_data 0001.2 ' ) ;
419       l_calendar_type := 'P';
420       l_period_type_id := 32;
421     ELSE                                                        print_time ( ' get_summarized_data 0001.3 ' ) ;
422       l_calendar_type := 'G';
423       l_period_type_id := 32;
424     END IF;                                                     print_time ( ' get_summarized_data 0002 ' ) ;
425 
426     End of workplan progress */
427 
428     ----------------------
429     --Decoding record type
430     ----------------------
431     l_periodic_flag := SUBSTR( p_record_type, 1, 1);
432     l_planres_level_flag  := SUBSTR( p_record_type, 2, 1);
433     l_task_level_flag := SUBSTR( p_record_type, 3, 1);
434     l_task_rollup_flag := NVL(SUBSTR( p_record_type, 4, 1), 'Y');
435 
436     -- If l_proj_level_flag is Y, then return task id as 0, else return project element id.
437     IF (l_task_rollup_flag = 'N' AND l_task_level_flag = 'N') THEN -- BandF
438       l_proj_level_flag := 'Y';
439     ELSE  -- Used by progress: NY, YN. YY never used.
440       l_proj_level_flag := 'N';
441     END IF;
442 
443     /* Commented and moved down for workplan progress
444      IF l_planres_level_flag = 'Y' THEN
445       print_time ( ' get_summarized_data 0003 ' ) ; */
446 
447       /* Changed the logic. Existing loop is split into 2 for loops.
448         Because to find the values of l_calendar_type, l_end_period_id, l_org_id
449  which are used in the rollup */
450 
451       FOR i IN 1..p_project_ids.COUNT LOOP
452           print_time ( ' get_summarized_data 0004 ' ) ;
453 
454 /* Added here for workplan progress */
455 
456     l_calendar_type.extend;
457     l_end_period_id.extend;
458     l_period_type_id.extend;
459     l_org_id.extend;
460 
461            print_time ( ' get_summarized_data 0001 p_calendar_type ' || p_calendar_type(i) ) ;
462            IF (p_calendar_type(i) = 'N') THEN
463       print_time ( ' get_summarized_data 0001.1 ' ) ;
464              l_calendar_type(i) := 'A';
465              l_period_type_id(i) := 2048;
466            ELSIF (p_calendar_type(i) = 'P') THEN
467       print_time ( ' get_summarized_data 0001.2 ' ) ;
468              l_calendar_type(i) := 'P';
469              l_period_type_id(i) := 32;
470            ELSE
471       print_time ( ' get_summarized_data 0001.3 ' ) ;
472              l_calendar_type(i) := 'G';
473              l_period_type_id(i) := 32;
474            END IF;
475     print_time ( ' get_summarized_data 0002 ' ) ;
476  /* End for workplan progress */
477 
478 
479           --Get org for the project
480           SELECT ORG_ID
481           INTO   l_org_id(i)
482           FROM   pa_projects_all
483           WHERE  project_id = p_project_ids(i);
484           print_time ( ' get_summarized_data 0004.1 ' || l_org_id(i) || ' l_calendar_type ' || l_calendar_type(i) ) ;
485 
486           -------------------------------
487           --Identifying the end period id
488           -------------------------------
489    /* Commented for workplan progress
490           SELECT cal.CAL_PERIOD_ID
491           INTO   l_end_period_id
492           FROM   pji_time_cal_period_v cal,
493   pji_org_extr_info    info
494           WHERE  TRUNC(p_end_date) BETWEEN TRUNC(cal.START_DATE) AND TRUNC(cal.END_DATE) AND
495                  info.ORG_ID                = l_org_id              AND
496                   DECODE(l_calendar_type, 'P',
497                     info.PA_CALENDAR_ID,
498                     info.GL_CALENDAR_ID)      = cal.CALENDAR_ID;  */
499 
500           IF l_calendar_type(i) ='A' then
501              l_end_period_id(i) :=-1;
502    ELSE
503                 BEGIN
504       SELECT cal.CAL_PERIOD_ID
505                              INTO l_end_period_id(i)
506                              FROM pji_time_cal_period_v cal,
507                                   pji_org_extr_info    info
508                              WHERE TRUNC(p_end_date(i)) BETWEEN
509                                    TRUNC(cal.START_DATE) AND TRUNC(cal.END_DATE) AND
510                                    info.ORG_ID  = l_org_id(i) AND
511                                    DECODE(l_calendar_type(i), 'P', info.PA_CALENDAR_ID,
512                                                                    info.GL_CALENDAR_ID) = cal.CALENDAR_ID;
513          EXCEPTION
514                     WHEN NO_DATA_FOUND THEN
515   Pa_Debug.log_message('Project Id:' || p_project_ids(i)
516                || ' Org Id:' || l_org_id(i)
517  || ' End Date:' || p_end_date(i));
518   print_time ('Project Id:' || p_project_ids(i)
519                || ' Org Id:' || l_org_id(i)
520  || ' End Date:' || p_end_date(i));
521                 END;
522    END IF;
523 
524           print_time ( ' get_summarized_data 0004.2 ' ) ;
525 
526        END LOOP;
527 
528           ---------------------------------------------
529           --ENTERED LEVEL DATA RETREIVAL
530           --If planning resource level data is required
531           --map to resource list and get data from
532           --transaction accum
533           ---------------------------------------------
534 
535     FOR i IN 1..p_project_ids.COUNT LOOP
536         /*bug#4415960 added the summarization  check  in Publish mode */
537     /*  commenting this as this is already handled,keeping the code for future requirement
538         l_summ_hasrun:='N';
539         l_get_summarized_data:='Y';
540         IF  p_calling_context='P' THEN
541            begin
542               select 'Y'
543               into   l_summ_hasrun
544               from   dual
545               where exists (select 1 from pji_fp_xbs_accum_f
546                             where project_id=p_project_ids(i)
547                             and plan_version_id=-1
548                             and rownum=1);
549            exception when no_data_found then
550               l_summ_hasrun:='N';
551            end;
552 
553            if l_summ_hasrun ='N' and p_calling_context='P' then
554               l_get_summarized_data :='N';
555            end if;
556         END IF;
557         */
558         IF l_planres_level_flag = 'Y'   THEN
559 
560              --DELETE FROM pa_res_list_map_tmp1;
561              DELETE FROM pa_res_list_map_tmp2;  -- Bug#4726170
562 
563            print_time ( ' get_summarized_data 0004 ' ) ;
564 
565            INSERT INTO pa_res_list_map_tmp1 (
566                     PERSON_ID,
567                     JOB_ID,
568                     ORGANIZATION_ID,
569                     VENDOR_ID,
570                     EXPENDITURE_TYPE,
571                     EVENT_TYPE,
572                     NON_LABOR_RESOURCE,
573                     EXPENDITURE_CATEGORY,
574                     REVENUE_CATEGORY,
575                     EVENT_TYPE_CLASSIFICATION,
576                     SYSTEM_LINKAGE_FUNCTION,
577                     PROJECT_ROLE_ID,
578                     RESOURCE_CLASS_ID,
579                     RESOURCE_CLASS_CODE,
580                     BOM_LABOR_RESOURCE_ID,
581                     BOM_EQUIP_RESOURCE_ID,
582                     INVENTORY_ITEM_ID,
583                     ITEM_CATEGORY_ID,
584                     PERSON_TYPE_CODE,
585                     BOM_RESOURCE_ID,
586                     NAMED_ROLE,
587                     TXN_SOURCE_ID,
588                     FC_RES_TYPE_CODE )  --bug#3804500
589         SELECT      DISTINCT                    /* Added for bug 3729366*/
590                     decode(head.PERSON_ID, -1, null, head.PERSON_ID),
591                     decode(head.JOB_ID, -1, null, head.JOB_ID),
592                     decode(head.EXPENDITURE_ORGANIZATION_ID, -1, null, head.EXPENDITURE_ORGANIZATION_ID),
593                     decode(head.VENDOR_ID,-1, null, head.VENDOR_ID),
594                     decode(head.EXPENDITURE_TYPE, 'PJI$NULL', null,head.EXPENDITURE_TYPE),
595                     decode(head.EVENT_TYPE, 'PJI$NULL', null, head.EVENT_TYPE),
596                     nlr.NON_LABOR_RESOURCE,
597                     decode(head.EXPENDITURE_CATEGORY, 'PJI$NULL', null, head.EXPENDITURE_CATEGORY),
598                     decode(head.REVENUE_CATEGORY,'PJI$NULL', null,head.REVENUE_CATEGORY),
599                     decode(head.EVENT_TYPE_CLASSIFICATION,'PJI$NULL', null, head.EVENT_TYPE_CLASSIFICATION),
600                     decode(head.SYSTEM_LINKAGE_FUNCTION,'PJI$NULL', null,head.SYSTEM_LINKAGE_FUNCTION),
601                     decode(head.PROJECT_ROLE_ID,-1,null, head.PROJECT_ROLE_ID), /*For bug 4590810 */
602                     head.RESOURCE_CLASS_ID,
603                     cls.RESOURCE_CLASS_CODE,
604                     decode(head.BOM_LABOR_RESOURCE_ID, -1, null, head.BOM_LABOR_RESOURCE_ID),
605                     decode(head.BOM_EQUIPMENT_RESOURCE_ID, -1, null, head.BOM_EQUIPMENT_RESOURCE_ID),
606                     decode(head.INVENTORY_ITEM_ID, -1, null, head.INVENTORY_ITEM_ID),
607                     decode(head.ITEM_CATEGORY_ID, -1, null, head.ITEM_CATEGORY_ID),
608                     decode(head.PERSON_TYPE,'PJI$NULL', null,head.PERSON_TYPE),
609                     decode(head.BOM_LABOR_RESOURCE_ID, -1, decode(head.BOM_EQUIPMENT_RESOURCE_ID, -1, null, head.BOM_EQUIPMENT_RESOURCE_ID), head.BOM_LABOR_RESOURCE_ID),
610                     decode(accum.NAMED_ROLE,'PJI$NULL',null,accum.NAMED_ROLE), /*For Bug        5564306 and bug 4034467  */
611                     head.TXN_ACCUM_HEADER_ID,
612                     decode(head.EXPENDITURE_TYPE,'PJI$NULL',
613                     decode(head.EVENT_TYPE,'PJI$NULL',
614                     decode(head.EXPENDITURE_CATEGORY,'PJI$NULL',
615                     decode(head.REVENUE_CATEGORY,'PJI$NULL',null,'REVENUE_CATEGORY'),'EXPENDITURE_CATEGORY'),'EVENT_TYPE'),'EXPENDITURE_TYPE')
616         FROM
617                    (
618                    SELECT /*+ NO_MERGE */ DISTINCT txn_accum_header_id, project_id,named_role   -- Bug#5377911
619                    FROM (
620                       SELECT
621                         txn_accum_header_id,
622                         project_id,
623                         named_role                /*For bug 4590810 */
624                       FROM
625                         pji_fp_txn_accum
626                       WHERE project_id = p_project_ids(i)
627                         AND recvr_period_type='GL'                                --Bug#5356978
628                       UNION ALL
629                       SELECT
630                         txn_accum_header_id,
631                         project_id,
632                         named_role                        /*For bug 4590810 */
633                       FROM
634                         pji_fm_aggr_fin7
635                       WHERE project_id = p_project_ids(i)
636                         AND recvr_period_type='GL'                                --Bug#5356978
637                         )
638                     ) accum,
639                     pji_fp_txn_accum_header head,
640                     pa_non_labor_resources nlr,
641                     pa_resource_classes_b cls
642                   WHERE
643                     head.TXN_ACCUM_HEADER_ID  = accum.TXN_ACCUM_HEADER_ID      AND
644                     accum.PROJECT_ID          = p_project_ids(i)               AND
645                     nlr.NON_LABOR_RESOURCE_ID (+) = head.NON_LABOR_RESOURCE_ID AND
646                     cls.RESOURCE_CLASS_ID     = head.RESOURCE_CLASS_ID     ;
647 
648                   print_time ( ' get_summarized_data 0004.3 ' ) ;
649 
650 
651 
652                 /* Added for bug 3729366  - Start */
653 
654                 INSERT INTO pa_res_list_map_tmp2
655                         (TXN_SOURCE_ID,VENDOR_ID,PERSON_ID)
656                 SELECT  /* + index(hr, per_assignments_f_n12)     index(prd, pji_time_cal_period_u1) */
657                 distinct T.TXN_SOURCE_ID,HR.VENDOR_ID,HR.PERSON_ID
658                 FROM    pa_res_list_map_tmp1 t,
659                                 per_all_assignments_f hr,                                                --Bug#5356978
660                                 pji_time_cal_period_v prd,
661                 ( SELECT  txn_accum_header_id,max(recvr_period_id) recvr_period_id        -- Bug#5262851
662                         FROM
663                            (
664                                 SELECT
665                                 txn_accum_header_id,recvr_period_id
666                                 FROM       pji_fp_txn_accum
667                                 WHERE      recvr_period_type = 'GL'
668                                 and  project_id = p_project_ids(i)
669                                 UNION ALL
670                                 SELECT      /*+ index(pji_fm_aggr_fin7 pji_fm_aggr_fin7_n2) */
671                                 txn_accum_header_id,recvr_period_id
672                                 FROM       pji_fm_aggr_fin7
673                                 WHERE      recvr_period_type = 'GL'
674                                 and  project_id = p_project_ids(i)
675                           )
676                  GROUP BY txn_accum_header_id                                                                                -- Bug#5262851
677                           )
678                         det
679                 WHERE
680                         det.TXN_ACCUM_HEADER_ID          = t.TXN_SOURCE_ID AND
681                         t.PERSON_TYPE_CODE               = 'CWK' AND
682                         prd.CAL_PERIOD_ID                = det.RECVR_PERIOD_ID AND
683                         (prd.START_DATE BETWEEN hr.EFFECTIVE_START_DATE AND hr.EFFECTIVE_END_DATE) AND
684                         hr.PERSON_ID                     = t.PERSON_ID  AND
685                         hr.PRIMARY_FLAG                  = 'Y'  AND
686                         hr.ASSIGNMENT_TYPE               = 'C' AND
687                         hr.VENDOR_ID is not null;
688 
689 
690 
691         print_time ( ' get_summarized_data 0004.4 ' ) ;
692 
693                 UPDATE pa_res_list_map_tmp1 tmp
694                 SET VENDOR_ID =
695                 (
696                 SELECT t1.VENDOR_ID
697                 FROM    pa_res_list_map_tmp2 t1
698                 WHERE   t1.TXN_SOURCE_ID=tmp.TXN_SOURCE_ID
699                         AND t1.PERSON_ID=tmp.PERSON_ID
700                         AND tmp.PERSON_ID IS NOT NULL
701                 AND EXISTS
702                         (
703                         SELECT  NULL
704                         FROM    pa_res_list_map_tmp2 t1
705                         WHERE   t1.TXN_SOURCE_ID=tmp.TXN_SOURCE_ID
706                                 AND t1.PERSON_ID=tmp.PERSON_ID
707                         )
708                 )
709                 WHERE VENDOR_ID IS NULL;
710 
711                 /* Added for bug 3729366 -  End */
712                   print_time ( ' get_summarized_data 0004.41 ' ) ;
713 
714 pa_resource_mapping.g_called_process :='ACTUALS';
715 
716           pa_resource_mapping.map_resource_list (
717               p_resource_list_id => p_resource_list_ids (i),
718               p_project_id       =>  p_project_ids(i),
719               x_return_status    => x_return_status,
720               x_msg_count        => l_msg_count,
721               x_msg_data         => x_msg_code );
722 
723          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN /* Bug No. 4461060 */
724               RAISE l_map_resource_list;
725           END IF;
726 
727 
728 pa_resource_mapping.g_called_process :='PLAN';
729 
730           print_time ( ' get_summarized_data 0004.42 ' ) ;
731 
732  IF nvl(p_calling_context,'F')  in ('P','W')  THEN
733        IF  p_extraction_type <>'INCREMENTAL' THEN
734 
735          INSERT INTO pji_fm_xbs_accum_tmp1
736        (
737         SOURCE_ID,              RES_LIST_MEMBER_ID,       PROJECT_ID,            STRUCT_VERSION_ID,
738         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,            PERIOD_NAME,           PLAN_VERSION_ID,
739         TXN_CURRENCY_CODE,      TXN_RAW_COST,             TXN_BRDN_COST,         TXN_REVENUE,
740         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,      TXN_EQUIP_RAW_COST,    TXN_EQUIP_BRDN_COST,
741         QUANTITY,               PRJ_RAW_COST,             PRJ_BRDN_COST,         PRJ_REVENUE,
742         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,      PRJ_EQUIP_RAW_COST,    PRJ_EQUIP_BRDN_COST,
743         POU_RAW_COST,           POU_BRDN_COST,            POU_REVENUE,           POU_LABOR_RAW_COST,
744         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,       POU_EQUIP_BRDN_COST,   LABOR_HOURS,
745         EQUIPMENT_HOURS,        PERIOD_FLAG,              BASE_LABOR_HOURS,      POU_LPB_RAW_COST,
746         POU_LPB_BRDN_COST,      ACT_TXN_RAW_COST,         ACT_TXN_BRDN_COST,     ACT_TXN_LABOR_RAW_COST,
747         ACT_TXN_LABOR_BRDN_COST,ACT_TXN_EQUIP_RAW_COST,   ACT_TXN_EQUIP_BRDN_COST,ACT_PRJ_RAW_COST,
748         ACT_PRJ_BRDN_COST,      ACT_PRJ_LABOR_RAW_COST,   ACT_PRJ_LABOR_BRDN_COST,ACT_PRJ_EQUIP_RAW_COST,
749         ACT_PRJ_EQUIP_BRDN_COST,ACT_POU_RAW_COST,         ACT_POU_BRDN_COST,      ACT_POU_LABOR_RAW_COST,
750         ACT_POU_LABOR_BRDN_COST,ACT_POU_EQUIP_RAW_COST,   ACT_POU_EQUIP_BRDN_COST,ACT_LABOR_HRS,
751         ACT_EQUIP_HRS,          MIN_START_DATE,           MAX_END_DATE,
752         --OLAP
753         CBS_ELEMENT_ID
754         --End OLAP
755 )
756 SELECT /*+ NO_MERGE */                  --Bug#5356978
757         SOURCE_ID,              RES_LIST_MEMBER_ID,     PROJECT_ID,             STRUCT_VERSION_ID,
758         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,          PERIOD_NAME,            PLAN_VERSION_ID,
759         TXN_CURRENCY_CODE,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_REVENUE,
760         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,
761         QUANTITY,               PRJ_RAW_COST,           PRJ_BRDN_COST,          PRJ_REVENUE,
762         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,     PRJ_EQUIP_BRDN_COST,
763         POU_RAW_COST,           POU_BRDN_COST,          POU_REVENUE,            POU_LABOR_RAW_COST,
764         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
765         EQUIPMENT_HOURS,        PERIOD_FLAG,            BASE_LABOR_HOURS,       POU_LPB_RAW_COST,
766         POU_LPB_BRDN_COST,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_LABOR_RAW_COST,
767         TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,    PRJ_RAW_COST,
768         PRJ_BRDN_COST,          PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,
769         PRJ_EQUIP_BRDN_COST,    POU_RAW_COST,           POU_BRDN_COST,          POU_LABOR_RAW_COST,
770         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
771         EQUIPMENT_HOURS,        MIN_START_DATE,         MAX_END_DATE,
772         --OLAP
773         CBS_ELEMENT_ID
774         --END OLAP
775 FROM
776 (
777 
778 /* Below select statment is added for workplan progress (periodic data) from PJI_FP_TXN_ACCUM
779 To identify those records check for period_flag ='Y'. This is for FULL and PARTIAL
780 Retrieve Task / Project Level Data for PA/ GL Period
781 */
782 SELECT
783         /*tmp4.TXN_SOURCE_ID, Commented for workplan progress */
784         min(null)                       SOURCE_ID,
785         tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
786         accum.PROJECT_ID                PROJECT_ID,
787         p_struct_ver_ids(i)             STRUCT_VERSION_ID,
788         DECODE(l_proj_level_flag,'Y',0,accum.TASK_ID)    PROJECT_ELEMENT_ID,
789         l_calendar_type(i)              CALENDAR_TYPE,
790         time.NAME                       PERIOD_NAME,
791         -1                              PLAN_VERSION_ID,
792         accum.TXN_CURRENCY_CODE         TXN_CURRENCY_CODE,
793         sum(accum.TXN_RAW_COST)         TXN_RAW_COST,
794         sum(accum.TXN_BRDN_COST)        TXN_BRDN_COST,
795         sum(accum.TXN_REVENUE)          TXN_REVENUE,
796         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.TXN_RAW_COST,0))     TXN_LABOR_RAW_COST,
797         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.TXN_BRDN_COST,0))    TXN_LABOR_BRDN_COST,
798         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.TXN_RAW_COST,0))  TXN_EQUIP_RAW_COST,
799         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.TXN_BRDN_COST,0)) TXN_EQUIP_BRDN_COST,
800         sum(accum.QUANTITY)             QUANTITY,
801         sum(accum.PRJ_RAW_COST)         PRJ_RAW_COST,
802         sum(accum.PRJ_BRDN_COST)        PRJ_BRDN_COST,
803         sum(accum.PRJ_REVENUE)          PRJ_REVENUE,
804         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.PRJ_RAW_COST,0))     PRJ_LABOR_RAW_COST,
805         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.PRJ_BRDN_COST,0))    PRJ_LABOR_BRDN_COST,
806         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.PRJ_RAW_COST,0))  PRJ_EQUIP_RAW_COST,
807         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.PRJ_BRDN_COST,0)) PRJ_EQUIP_BRDN_COST,
808         sum(accum.POU_RAW_COST)         POU_RAW_COST,
809         sum(accum.POU_BRDN_COST)        POU_BRDN_COST,
810         sum(accum.POU_REVENUE)          POU_REVENUE,
811         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.POU_RAW_COST,0))     POU_LABOR_RAW_COST,
812         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.POU_BRDN_COST,0))    POU_LABOR_BRDN_COST,
813         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.POU_RAW_COST,0))  POU_EQUIP_RAW_COST,
814         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.POU_BRDN_COST,0)) POU_EQUIP_BRDN_COST,
815         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.QUANTITY,0))         LABOR_HOURS,
816         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.QUANTITY,0))      EQUIPMENT_HOURS,
817         MIN('Y')                        PERIOD_FLAG,
818         null                            BASE_LABOR_HOURS,
819         null                            POU_LPB_RAW_COST,
820         null                            POU_LPB_BRDN_COST,
821         MIN(time.START_DATE)            MIN_START_DATE,
822         MAX(time.END_DATE)              MAX_END_DATE,
823         --OLAP
824         accum.cbs_element_id            CBS_ELEMENT_ID
825         -- End OLAP
826 FROM
827         pa_res_list_map_tmp4 tmp4,
828         pji_fm_aggr_fin8 accum,
829         pji_time_cal_period_v time,
830         pji_org_extr_info info
831 WHERE
832         tmp4.TXN_SOURCE_ID      = accum.TXN_ACCUM_HEADER_ID                     AND
833         accum.PROJECT_ID        = p_project_ids(i)                              AND
834         accum.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')              AND -- Bug 8294762
835         accum.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                            AND
836         /*Added 'G' in below decode for workplan progress */
837         accum.RECVR_PERIOD_TYPE = decode(l_calendar_type(i) , 'P', 'PA', 'G','GL') AND
838         time.CALENDAR_ID        = decode(l_calendar_type(i) , 'P', info.PA_CALENDAR_ID,
839         'G',info.GL_CALENDAR_ID) AND
840         info.ORG_ID             = l_org_id(i)                                   AND
841         time.CAL_PERIOD_ID     <= l_end_period_id(i)                            AND
842         p_calling_context       in ('P', 'W') /* added for workplan progress*/  AND
843         p_extraction_type in ('FULL','PARTIAL')
844 GROUP BY
845         /*tmp4.TXN_SOURCE_ID, Commented for workplan progress */
846         tmp4.RESOURCE_LIST_MEMBER_ID,
847         accum.PROJECT_ID,
848         p_struct_ver_ids(i),
849         DECODE(l_proj_level_flag, 'Y', 0, accum.TASK_ID) ,
850         l_calendar_type(i),
851         time.NAME,
852         -1,
853         accum.TXN_CURRENCY_CODE,
854         --OLAP
855         accum.cbs_element_id
856         --End OLAP
857 
858 -- Added the following Two union all caluses to populate
859 -- data for nontime phase: Bug : 4224314
860 UNION ALL
861 /* Below select statment is added for workplan progress (periodic data) from PJI_FP_TXN_ACCUM
862 To identify those records check for period_flag ='Y'. This is for FULL and PARTIAL
863 Retrieve Task / Project Level Data for Non Time Phased Period
864 */
865 SELECT
866         min(null)                       SOURCE_ID,
867         tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
868         accum.PROJECT_ID                PROJECT_ID,
869         p_struct_ver_ids(i)             STRUCT_VERSION_ID,
870         DECODE(l_proj_level_flag,'Y',0,accum.TASK_ID)       PROJECT_ELEMENT_ID,
871         l_calendar_type(i)              CALENDAR_TYPE,
872         NULL                            PERIOD_NAME,
873         -1                              PLAN_VERSION_ID,
874         accum.TXN_CURRENCY_CODE         TXN_CURRENCY_CODE,
875         sum(accum.TXN_RAW_COST)         TXN_RAW_COST,
876         sum(accum.TXN_BRDN_COST)        TXN_BRDN_COST,
877         sum(accum.TXN_REVENUE)          TXN_REVENUE,
878         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.TXN_RAW_COST,0))             TXN_LABOR_RAW_COST,
879         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.TXN_BRDN_COST,0))            TXN_LABOR_BRDN_COST,
880         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.TXN_RAW_COST,0))          TXN_EQUIP_RAW_COST,
881         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.TXN_BRDN_COST,0))         TXN_EQUIP_BRDN_COST,
882         sum(accum.QUANTITY)             QUANTITY,
883         sum(accum.PRJ_RAW_COST)         PRJ_RAW_COST,
884         sum(accum.PRJ_BRDN_COST)        PRJ_BRDN_COST,
885         sum(accum.PRJ_REVENUE)          PRJ_REVENUE,
886         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.PRJ_RAW_COST,0))             PRJ_LABOR_RAW_COST,
887         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.PRJ_BRDN_COST,0))            PRJ_LABOR_BRDN_COST,
888         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.PRJ_RAW_COST,0))          PRJ_EQUIP_RAW_COST,
889         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.PRJ_BRDN_COST,0))       PRJ_EQUIP_BRDN_COST,
890         sum(accum.POU_RAW_COST)         POU_RAW_COST,
891         sum(accum.POU_BRDN_COST)        POU_BRDN_COST,
892         sum(accum.POU_REVENUE)          POU_REVENUE,
893         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.POU_RAW_COST,0))             POU_LABOR_RAW_COST,
894         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.POU_BRDN_COST,0))            POU_LABOR_BRDN_COST,
895         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.POU_RAW_COST,0))          POU_EQUIP_RAW_COST,
896         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.POU_BRDN_COST,0))         POU_EQUIP_BRDN_COST,
897         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',accum.QUANTITY,0))                 LABOR_HOURS,
898         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',accum.QUANTITY,0))              EQUIPMENT_HOURS,
899         MIN('Y')        PERIOD_FLAG,
900         null            BASE_LABOR_HOURS,
901         null            POU_LPB_RAW_COST,
902         null            POU_LPB_BRDN_COST,
903         MIN(time.START_DATE)            MIN_START_DATE,
904         MAX(time.END_DATE)              MAX_END_DATE,
905         --OLAP
906         accum.CBS_ELEMENT_ID CBS_ELEMENT_ID
907         -- End OLAP
908 FROM
909         pa_res_list_map_tmp4 tmp4,
910         pji_fm_aggr_fin8 accum  ,
911         pji_time_cal_period_v time --, pji_org_extr_info info
912 WHERE
913         tmp4.TXN_SOURCE_ID      = accum.TXN_ACCUM_HEADER_ID                     AND
914         accum.PROJECT_ID        = p_project_ids(i)                              AND
915         accum.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')              AND -- Bug 8294762
916         accum.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                            AND
917         accum.RECVR_PERIOD_TYPE = 'GL'                                          AND
918         l_calendar_type(i)      = 'A'                                           AND
919         p_calling_context    in ('P', 'W')                                      AND
920         p_extraction_type    in ('FULL','PARTIAL')
921 GROUP BY
922         tmp4.RESOURCE_LIST_MEMBER_ID,
923         accum.PROJECT_ID,
924         p_struct_ver_ids(i),
925         DECODE(l_proj_level_flag, 'Y', 0, accum.TASK_ID) ,
926         l_calendar_type(i),
927         -1 ,
928         accum.TXN_CURRENCY_CODE,
929         --OLAP
930         accum.cbs_element_id
931         --End OLAP
932 );
933 
934 else  /* p_extraction_type ='INCREMENTAL*/
935 
936     INSERT INTO pji_fm_xbs_accum_tmp1
937     (
938         SOURCE_ID,              RES_LIST_MEMBER_ID,       PROJECT_ID,            STRUCT_VERSION_ID,
939         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,            PERIOD_NAME,           PLAN_VERSION_ID,
940         TXN_CURRENCY_CODE,      TXN_RAW_COST,             TXN_BRDN_COST,         TXN_REVENUE,
941         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,      TXN_EQUIP_RAW_COST,    TXN_EQUIP_BRDN_COST,
942         QUANTITY,               PRJ_RAW_COST,             PRJ_BRDN_COST,         PRJ_REVENUE,
943         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,      PRJ_EQUIP_RAW_COST,    PRJ_EQUIP_BRDN_COST,
944         POU_RAW_COST,           POU_BRDN_COST,            POU_REVENUE,           POU_LABOR_RAW_COST,
945         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,       POU_EQUIP_BRDN_COST,   LABOR_HOURS,
946         EQUIPMENT_HOURS,        PERIOD_FLAG,              BASE_LABOR_HOURS,      POU_LPB_RAW_COST,
947         POU_LPB_BRDN_COST,      ACT_TXN_RAW_COST,         ACT_TXN_BRDN_COST,     ACT_TXN_LABOR_RAW_COST,
948         ACT_TXN_LABOR_BRDN_COST,ACT_TXN_EQUIP_RAW_COST,   ACT_TXN_EQUIP_BRDN_COST,ACT_PRJ_RAW_COST,
949         ACT_PRJ_BRDN_COST,      ACT_PRJ_LABOR_RAW_COST,   ACT_PRJ_LABOR_BRDN_COST,ACT_PRJ_EQUIP_RAW_COST,
950         ACT_PRJ_EQUIP_BRDN_COST,ACT_POU_RAW_COST,         ACT_POU_BRDN_COST,      ACT_POU_LABOR_RAW_COST,
951         ACT_POU_LABOR_BRDN_COST,ACT_POU_EQUIP_RAW_COST,   ACT_POU_EQUIP_BRDN_COST,ACT_LABOR_HRS,
952         ACT_EQUIP_HRS,          MIN_START_DATE,           MAX_END_DATE,
953         --OLAP
954         CBS_ELEMENT_ID
955         --End OLAP
956 )
957 SELECT  /*+ NO_MERGE */                 --Bug#5356978
958         SOURCE_ID,              RES_LIST_MEMBER_ID,     PROJECT_ID,             STRUCT_VERSION_ID,
959         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,          PERIOD_NAME,            PLAN_VERSION_ID,
960         TXN_CURRENCY_CODE,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_REVENUE,
961         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,
962         QUANTITY,               PRJ_RAW_COST,           PRJ_BRDN_COST,          PRJ_REVENUE,
963         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,     PRJ_EQUIP_BRDN_COST,
964         POU_RAW_COST,           POU_BRDN_COST,          POU_REVENUE,            POU_LABOR_RAW_COST,
965         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
966         EQUIPMENT_HOURS,        PERIOD_FLAG,            BASE_LABOR_HOURS,       POU_LPB_RAW_COST,
967         POU_LPB_BRDN_COST,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_LABOR_RAW_COST,
968         TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,    PRJ_RAW_COST,
969         PRJ_BRDN_COST,          PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,
970         PRJ_EQUIP_BRDN_COST,    POU_RAW_COST,           POU_BRDN_COST,          POU_LABOR_RAW_COST,
971         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
972         EQUIPMENT_HOURS,        MIN_START_DATE,         MAX_END_DATE,
973         --OLAP
974         CBS_ELEMENT_ID
975         --End OLAP
976 FROM
977 (
978 /* Below select statment is added for workplan progress (periodic data) from PJI_FM_AGGR_FIN7
979 To identify those records check for period_flag ='Y'. This is for INCREMENTAL
980 Retrieve Task / Project Level Data for PA/ GL Period
981 */
982 SELECT  /*+ ordered index (fin PJI_FM_AGGR_FIN8_U1) */  /* Added for bug 11843459 */
983         /* tmp4.TXN_SOURCE_ID, Commented for workplan progress */
984         min(null)                       SOURCE_ID,
985         tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
986         fin.PROJECT_ID                  PROJECT_ID,
987         p_struct_ver_ids(i)             STRUCT_VERSION_ID,
988         DECODE(l_proj_level_flag,'Y',0,fin.TASK_ID)      PROJECT_ELEMENT_ID,
989         l_calendar_type(i)              CALENDAR_TYPE,
990         time.NAME                       PERIOD_NAME,
991         -1                              PLAN_VERSION_ID,
992         fin.TXN_CURRENCY_CODE           TXN_CURRENCY_CODE,
993         sum(fin.TXN_RAW_COST)           TXN_RAW_COST,
994         sum(fin.TXN_BRDN_COST)          TXN_BRDN_COST,
995         sum(fin.TXN_REVENUE)            TXN_REVENUE,
996         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.TXN_RAW_COST,0))       TXN_LABOR_RAW_COST,
997         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.TXN_BRDN_COST,0))      TXN_LABOR_BRDN_COST,
998         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.TXN_RAW_COST,0))    TXN_EQUIP_RAW_COST,
999         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.TXN_BRDN_COST,0))   TXN_EQUIP_BRDN_COST,
1000         sum(fin.QUANTITY)               QUANTITY,
1001         sum(fin.PRJ_RAW_COST)           PRJ_RAW_COST,
1002         sum(fin.PRJ_BRDN_COST)          PRJ_BRDN_COST,
1003         sum(fin.PRJ_REVENUE)            PRJ_REVENUE,
1004         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.PRJ_RAW_COST,0))      PRJ_LABOR_RAW_COST,
1005         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.PRJ_BRDN_COST,0))     PRJ_LABOR_BRDN_COST,
1006         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.PRJ_RAW_COST,0))   PRJ_EQUIP_RAW_COST,
1007         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.PRJ_BRDN_COST,0))  PRJ_EQUIP_BRDN_COST,
1008         sum(fin.POU_RAW_COST)           POU_RAW_COST,
1009         sum(fin.POU_BRDN_COST)          POU_BRDN_COST,
1010         sum(fin.POU_REVENUE)            POU_REVENUE,
1011         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.POU_RAW_COST,0))      POU_LABOR_RAW_COST,
1012         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.POU_BRDN_COST,0))     POU_LABOR_BRDN_COST,
1013         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.POU_RAW_COST,0))   POU_EQUIP_RAW_COST,
1014         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.POU_BRDN_COST,0))  POU_EQUIP_BRDN_COST,
1015         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.QUANTITY,0))           LABOR_HOURS,
1016         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.QUANTITY,0))        EQUIPMENT_HOURS,
1017         MIN('Y')                PERIOD_FLAG,
1018         null                    BASE_LABOR_HOURS,
1019         null                    POU_LPB_RAW_COST,
1020         null                    POU_LPB_BRDN_COST,
1021         MIN(time.START_DATE)    MIN_START_DATE,
1022         MAX(time.END_DATE)      MAX_END_DATE,
1023         --OLAP
1024         fin.CBS_ELEMENT_ID   CBS_ELEMENT_ID
1025         -- End OLAP
1026 FROM
1027         pa_res_list_map_tmp4 tmp4,
1028         pji_fm_aggr_fin8 fin,
1029         pji_time_cal_period_v time,
1030         pji_org_extr_info info
1031 WHERE
1032         tmp4.TXN_SOURCE_ID      = fin.TXN_ACCUM_HEADER_ID                       AND
1033         fin.PROJECT_ID        = p_project_ids(i)                                AND
1034         fin.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')                AND -- Bug 8294762
1035         fin.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                              AND
1036         /*Added 'G' in below decode for workplan progress */
1037         fin.RECVR_PERIOD_TYPE = decode(l_calendar_type(i) , 'P', 'PA', 'G','GL') AND
1038         time.CALENDAR_ID        = decode(l_calendar_type(i) , 'P', info.PA_CALENDAR_ID,
1039         'G',info.GL_CALENDAR_ID) AND
1040         info.ORG_ID             = l_org_id(i)                                   AND
1041         time.CAL_PERIOD_ID     <= l_end_period_id(i)                            AND
1042         p_calling_context     in ('P', 'W') /* added for workplan progress*/    AND
1043         p_extraction_type       = 'INCREMENTAL'
1044 GROUP BY
1045         /*tmp4.TXN_SOURCE_ID, Commented for workplan progress */
1046         tmp4.RESOURCE_LIST_MEMBER_ID,
1047         fin.PROJECT_ID,
1048         p_struct_ver_ids(i),
1049         DECODE(l_proj_level_flag, 'Y', 0, fin.TASK_ID),
1050         l_calendar_type(i),
1051         time.NAME,
1052         -1,
1053         fin.TXN_CURRENCY_CODE,
1054         --OLAP
1055         fin.CBS_ELEMENT_ID
1056         -- End OLAP
1057 
1058 -- Added the following Two union all caluses to populate
1059 -- data for nontime phase: Bug : 4224314
1060 UNION ALL
1061 /* Below select statment is added for workplan progress (periodic data) from PJI_FP_TXN_ACCUM
1062 To identify those records check for period_flag ='Y'. This is for FULL and PARTIAL
1063 Retrieve Task / Project Level Data for Non Time Phased Period
1064 */
1065 SELECT  /*+ ordered index (fin PJI_FM_AGGR_FIN8_U1) */  /* Added for bug 11843459 */
1066         min(null)                       SOURCE_ID,
1067         tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
1068         fin.PROJECT_ID                  PROJECT_ID,
1069         p_struct_ver_ids(i)             STRUCT_VERSION_ID,
1070         DECODE(l_proj_level_flag,'Y',0,fin.TASK_ID)       PROJECT_ELEMENT_ID,
1071         l_calendar_type(i)              CALENDAR_TYPE,
1072         NULL                            PERIOD_NAME,
1073         -1                              PLAN_VERSION_ID,
1074         fin.TXN_CURRENCY_CODE           TXN_CURRENCY_CODE,
1075         sum(fin.TXN_RAW_COST)           TXN_RAW_COST,
1076         sum(fin.TXN_BRDN_COST)          TXN_BRDN_COST,
1077         sum(fin.TXN_REVENUE)            TXN_REVENUE,
1078         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.TXN_RAW_COST,0))               TXN_LABOR_RAW_COST,
1079         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.TXN_BRDN_COST,0))              TXN_LABOR_BRDN_COST,
1080         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.TXN_RAW_COST,0))            TXN_EQUIP_RAW_COST,
1081         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.TXN_BRDN_COST,0))           TXN_EQUIP_BRDN_COST,
1082         sum(fin.QUANTITY)               QUANTITY,
1083         sum(fin.PRJ_RAW_COST)           PRJ_RAW_COST,
1084         sum(fin.PRJ_BRDN_COST)          PRJ_BRDN_COST,
1085         sum(fin.PRJ_REVENUE)            PRJ_REVENUE,
1086         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.PRJ_RAW_COST,0))               PRJ_LABOR_RAW_COST,
1087         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.PRJ_BRDN_COST,0))              PRJ_LABOR_BRDN_COST,
1088         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.PRJ_RAW_COST,0))            PRJ_EQUIP_RAW_COST,
1089         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.PRJ_BRDN_COST,0))           PRJ_EQUIP_BRDN_COST,
1090         sum(fin.POU_RAW_COST)           POU_RAW_COST,
1091         sum(fin.POU_BRDN_COST)          POU_BRDN_COST,
1092         sum(fin.POU_REVENUE)            POU_REVENUE,
1093         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.POU_RAW_COST,0))               POU_LABOR_RAW_COST,
1094         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.POU_BRDN_COST,0))              POU_LABOR_BRDN_COST,
1095         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.POU_RAW_COST,0))            POU_EQUIP_RAW_COST,
1096         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.POU_BRDN_COST,0))           POU_EQUIP_BRDN_COST,
1097         sum(decode(tmp4.RESOURCE_CLASS_CODE,'PEOPLE',fin.QUANTITY,0))                   LABOR_HOURS,
1098         sum(decode(tmp4.RESOURCE_CLASS_CODE,'EQUIPMENT',fin.QUANTITY,0))                EQUIPMENT_HOURS,
1099         MIN('Y')        PERIOD_FLAG,
1100         null            BASE_LABOR_HOURS,
1101         null            POU_LPB_RAW_COST,
1102         null            POU_LPB_BRDN_COST,
1103         MIN(time.START_DATE)            MIN_START_DATE,
1104         MAX(time.END_DATE)              MAX_END_DATE,
1105         --OLAP
1106         fin.CBS_ELEMENT_ID
1107         -- End OLAP
1108 FROM
1109         pa_res_list_map_tmp4 tmp4,
1110         pji_fm_aggr_fin8 fin  ,
1111         pji_time_cal_period_v time  --, pji_org_extr_info info
1112 WHERE
1113         tmp4.TXN_SOURCE_ID      = fin.TXN_ACCUM_HEADER_ID                 AND
1114         fin.PROJECT_ID        = p_project_ids(i)                          AND
1115         fin.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')          AND -- Bug 8294762
1116         fin.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                        AND
1117         fin.RECVR_PERIOD_TYPE = 'GL' and
1118         l_calendar_type(i)    = 'A'   AND
1119         p_calling_context      in ('P', 'W')    AND
1120         p_extraction_type in ('INCREMENTAL')
1121 GROUP BY
1122         tmp4.RESOURCE_LIST_MEMBER_ID,
1123         fin.PROJECT_ID,
1124         p_struct_ver_ids(i),
1125         DECODE(l_proj_level_flag, 'Y', 0, fin.TASK_ID),
1126         l_calendar_type(i),
1127         -1 ,
1128         fin.TXN_CURRENCY_CODE,
1129         --OLAP
1130         fin.CBS_ELEMENT_ID
1131         --End OLAP
1132        );
1133      END IF;/* IF  p_extraction_type <>'INCREMENTAL' THEN*/
1134 ELSE  /* nvl(p_calling_context,'F') NOT IN ('P','W') */
1135 
1136     INSERT INTO pji_fm_xbs_accum_tmp1
1137     (
1138         SOURCE_ID,              RES_LIST_MEMBER_ID,       PROJECT_ID,            STRUCT_VERSION_ID,
1139         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,            PERIOD_NAME,           PLAN_VERSION_ID,
1140         TXN_CURRENCY_CODE,      TXN_RAW_COST,             TXN_BRDN_COST,         TXN_REVENUE,
1141         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,      TXN_EQUIP_RAW_COST,    TXN_EQUIP_BRDN_COST,
1142         QUANTITY,               PRJ_RAW_COST,             PRJ_BRDN_COST,         PRJ_REVENUE,
1143         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,      PRJ_EQUIP_RAW_COST,    PRJ_EQUIP_BRDN_COST,
1144         POU_RAW_COST,           POU_BRDN_COST,            POU_REVENUE,           POU_LABOR_RAW_COST,
1145         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,       POU_EQUIP_BRDN_COST,   LABOR_HOURS,
1146         EQUIPMENT_HOURS,        PERIOD_FLAG,              BASE_LABOR_HOURS,      POU_LPB_RAW_COST,
1147         POU_LPB_BRDN_COST,      ACT_TXN_RAW_COST,         ACT_TXN_BRDN_COST,     ACT_TXN_LABOR_RAW_COST,
1148         ACT_TXN_LABOR_BRDN_COST,ACT_TXN_EQUIP_RAW_COST,   ACT_TXN_EQUIP_BRDN_COST,ACT_PRJ_RAW_COST,
1149         ACT_PRJ_BRDN_COST,      ACT_PRJ_LABOR_RAW_COST,   ACT_PRJ_LABOR_BRDN_COST,ACT_PRJ_EQUIP_RAW_COST,
1150         ACT_PRJ_EQUIP_BRDN_COST,ACT_POU_RAW_COST,         ACT_POU_BRDN_COST,      ACT_POU_LABOR_RAW_COST,
1151         ACT_POU_LABOR_BRDN_COST,ACT_POU_EQUIP_RAW_COST,   ACT_POU_EQUIP_BRDN_COST,ACT_LABOR_HRS,
1152         ACT_EQUIP_HRS,          MIN_START_DATE,           MAX_END_DATE,
1153         -- OLAP
1154         CBS_ELEMENT_ID
1155         -- End OLAP
1156     )
1157     SELECT
1158         SOURCE_ID,              RES_LIST_MEMBER_ID,     PROJECT_ID,             STRUCT_VERSION_ID,
1159         PROJECT_ELEMENT_ID,     CALENDAR_TYPE,          PERIOD_NAME,            PLAN_VERSION_ID,
1160         TXN_CURRENCY_CODE,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_REVENUE,
1161         TXN_LABOR_RAW_COST,     TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,
1162         QUANTITY,               PRJ_RAW_COST,           PRJ_BRDN_COST,          PRJ_REVENUE,
1163         PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,     PRJ_EQUIP_BRDN_COST,
1164         POU_RAW_COST,           POU_BRDN_COST,          POU_REVENUE,            POU_LABOR_RAW_COST,
1165         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
1166         EQUIPMENT_HOURS,        PERIOD_FLAG,            BASE_LABOR_HOURS,       POU_LPB_RAW_COST,
1167         POU_LPB_BRDN_COST,      TXN_RAW_COST,           TXN_BRDN_COST,          TXN_LABOR_RAW_COST,
1168         TXN_LABOR_BRDN_COST,    TXN_EQUIP_RAW_COST,     TXN_EQUIP_BRDN_COST,    PRJ_RAW_COST,
1169         PRJ_BRDN_COST,          PRJ_LABOR_RAW_COST,     PRJ_LABOR_BRDN_COST,    PRJ_EQUIP_RAW_COST,
1170         PRJ_EQUIP_BRDN_COST,    POU_RAW_COST,           POU_BRDN_COST,          POU_LABOR_RAW_COST,
1171         POU_LABOR_BRDN_COST,    POU_EQUIP_RAW_COST,     POU_EQUIP_BRDN_COST,    LABOR_HOURS,
1172         EQUIPMENT_HOURS,        MIN_START_DATE,         MAX_END_DATE,
1173         --OLAP
1174         CBS_ELEMENT_ID
1175         -- End OLAP
1176     FROM
1177     (
1178     SELECT
1179         MIN(SOURCE_ID)                  SOURCE_ID,
1180         RES_LIST_MEMBER_ID              RES_LIST_MEMBER_ID,
1181         PROJECT_ID                      PROJECT_ID,
1182         STRUCT_VERSION_ID               STRUCT_VERSION_ID,
1183         DECODE(l_proj_level_flag,'Y',0,PROJECT_ELEMENT_ID) PROJECT_ELEMENT_ID ,
1184         CALENDAR_TYPE                   CALENDAR_TYPE,
1185         PERIOD_NAME                     PERIOD_NAME,
1186         PLAN_VERSION_ID                 PLAN_VERSION_ID,
1187         TXN_CURRENCY_CODE               TXN_CURRENCY_CODE,
1188         SUM(TXN_RAW_COST)               TXN_RAW_COST,
1189         SUM(TXN_BRDN_COST)              TXN_BRDN_COST,
1190         SUM(TXN_REVENUE)                TXN_REVENUE,
1191         SUM(TXN_LABOR_RAW_COST)         TXN_LABOR_RAW_COST,
1192         SUM(TXN_LABOR_BRDN_COST)        TXN_LABOR_BRDN_COST,
1193         SUM(TXN_EQUIP_RAW_COST)         TXN_EQUIP_RAW_COST,
1194         SUM(TXN_EQUIP_BRDN_COST)        TXN_EQUIP_BRDN_COST,
1195         SUM(QUANTITY)                   QUANTITY,
1196         SUM(PRJ_RAW_COST)               PRJ_RAW_COST,
1197         SUM(PRJ_BRDN_COST)              PRJ_BRDN_COST,
1198         SUM(PRJ_REVENUE)                PRJ_REVENUE,
1199         SUM(PRJ_LABOR_RAW_COST)         PRJ_LABOR_RAW_COST,
1200         SUM(PRJ_LABOR_BRDN_COST)        PRJ_LABOR_BRDN_COST,
1201         SUM(PRJ_EQUIP_RAW_COST)         PRJ_EQUIP_RAW_COST,
1202         SUM(PRJ_EQUIP_BRDN_COST)        PRJ_EQUIP_BRDN_COST,
1203         SUM(POU_RAW_COST)               POU_RAW_COST,
1204         SUM(POU_BRDN_COST)              POU_BRDN_COST,
1205         SUM(POU_REVENUE)                POU_REVENUE,
1206         SUM(POU_LABOR_RAW_COST)         POU_LABOR_RAW_COST,
1207         SUM(POU_LABOR_BRDN_COST)        POU_LABOR_BRDN_COST,
1208         SUM(POU_EQUIP_RAW_COST)         POU_EQUIP_RAW_COST,
1209         SUM(POU_EQUIP_BRDN_COST)        POU_EQUIP_BRDN_COST,
1210         SUM(LABOR_HOURS)                LABOR_HOURS,
1211         SUM(EQUIP_HOURS)                EQUIPMENT_HOURS,
1212         MIN(PERIOD_FLAG)                PERIOD_FLAG,
1213         SUM(INCR_QUANTITY)              BASE_LABOR_HOURS,
1214         SUM(INCR_POU_RAW_COST)          POU_LPB_RAW_COST,
1215         SUM(INCR_POU_BRDN_COST)         POU_LPB_BRDN_COST,
1216         MIN(START_DATE)                 MIN_START_DATE,
1217         MAX(END_DATE)                   MAX_END_DATE,
1218         --OLAP
1219         CBS_ELEMENT_ID
1220         --End OLAP
1221 FROM
1222         (
1223         SELECT --DISTINCT     /* Added distinct clause for Bug 9691708 */  -- Bug 15843264
1224         --Retreives actuals data by resource list as ITD amounts for TIME PHASED Calendar
1225                 --from pji_fp_txn_Accum
1226                 /*tmp4.TXN_SOURCE_ID, Commented for workplan progress */
1227                 (null) SOURCE_ID,
1228                 tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
1229                 accum.PROJECT_ID                PROJECT_ID,
1230                 p_struct_ver_ids(i)             STRUCT_VERSION_ID,
1231                 accum.TASK_ID                   PROJECT_ELEMENT_ID,
1232                 l_calendar_type(i)              CALENDAR_TYPE,
1233                 decode(l_periodic_flag,'Y',time.NAME,null) PERIOD_NAME, /* Added for workplan progress */
1234                 -1                              PLAN_VERSION_ID,
1235                 accum.TXN_CURRENCY_CODE         TXN_CURRENCY_CODE,
1236                 accum.TXN_RAW_COST              TXN_RAW_COST,
1237                 accum.TXN_BRDN_COST             TXN_BRDN_COST,
1238                 accum.TXN_REVENUE               TXN_REVENUE,
1239                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.TXN_RAW_COST, 0)       TXN_LABOR_RAW_COST,
1240                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.TXN_BRDN_COST, 0)      TXN_LABOR_BRDN_COST,
1241                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.TXN_RAW_COST, 0)    TXN_EQUIP_RAW_COST,
1242                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.TXN_BRDN_COST, 0)   TXN_EQUIP_BRDN_COST,
1243                 accum.QUANTITY                  QUANTITY,
1244                 accum.PRJ_RAW_COST              PRJ_RAW_COST,
1245                 accum.PRJ_BRDN_COST             PRJ_BRDN_COST,
1246                 accum.PRJ_REVENUE               PRJ_REVENUE,
1247                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.PRJ_RAW_COST, 0)       PRJ_LABOR_RAW_COST,
1248                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.PRJ_BRDN_COST, 0)      PRJ_LABOR_BRDN_COST,
1249                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.PRJ_RAW_COST, 0)    PRJ_EQUIP_RAW_COST,
1250                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.PRJ_BRDN_COST, 0)   PRJ_EQUIP_BRDN_COST,
1251                 accum.POU_RAW_COST              POU_RAW_COST,
1252                 accum.POU_BRDN_COST             POU_BRDN_COST,
1253                 accum.POU_REVENUE               POU_REVENUE,
1254                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.POU_RAW_COST, 0)       POU_LABOR_RAW_COST,
1255                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.POU_BRDN_COST, 0)      POU_LABOR_BRDN_COST,
1256                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.POU_RAW_COST, 0)    POU_EQUIP_RAW_COST,
1257                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.POU_BRDN_COST, 0)   POU_EQUIP_BRDN_COST,
1258                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.QUANTITY, 0)           LABOR_HOURS,
1259                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.QUANTITY, 0)        EQUIP_HOURS,
1260                 null            PERIOD_FLAG,
1261                 null            INCR_QUANTITY,
1262                 null            INCR_POU_RAW_COST,
1263                 null            INCR_POU_BRDN_COST,
1264                 time.START_DATE,
1265                 time.END_DATE,
1266                 --OLAP
1267                 accum.CBS_ELEMENT_ID
1268                 --End OLAP
1269         FROM
1270                 pa_res_list_map_tmp4 tmp4,
1271                 pji_fp_txn_accum accum,
1272                 pji_time_cal_period_v time,
1273                 pji_org_extr_info info
1274         WHERE
1275                 tmp4.TXN_SOURCE_ID      = accum.TXN_ACCUM_HEADER_ID                 AND
1276                 accum.PROJECT_ID        = p_project_ids(i)                          AND
1277                 accum.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')          AND -- Bug  8294762
1278                 accum.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                        AND
1279                 /*Added 'G' in below decode for workplan progress */
1280                 accum.RECVR_PERIOD_TYPE = decode(l_calendar_type(i), 'P', 'PA', 'G','GL') AND
1281                 time.CALENDAR_ID        = decode(l_calendar_type(i) , 'P', info.PA_CALENDAR_ID,
1282                 'G',info.GL_CALENDAR_ID)                                            AND
1283                 info.ORG_ID             = l_org_id(i)                               AND
1284                 time.CAL_PERIOD_ID     <= l_end_period_id(i)                        AND
1285                 nvl(p_calling_context,'F')       not in ('P', 'W')
1286         )
1287 GROUP BY
1288         RES_LIST_MEMBER_ID,
1289         PROJECT_ID,
1290         STRUCT_VERSION_ID,
1291         DECODE(l_proj_level_flag, 'Y', 0, PROJECT_ELEMENT_ID) ,
1292         CALENDAR_TYPE,
1293         PERIOD_NAME,
1294         PLAN_VERSION_ID,
1295         TXN_CURRENCY_CODE,
1296         --OLAP
1297         CBS_ELEMENT_ID
1298         --End OLAP
1299 
1300 UNION ALL
1301 
1302 SELECT
1303         MIN(SOURCE_ID)                  SOURCE_ID,
1304         RES_LIST_MEMBER_ID              RES_LIST_MEMBER_ID,
1305         PROJECT_ID                      PROJECT_ID,
1306         STRUCT_VERSION_ID               STRUCT_VERSION_ID,
1307         DECODE(l_proj_level_flag,'Y',0,PROJECT_ELEMENT_ID) PROJECT_ELEMENT_ID,
1308         CALENDAR_TYPE                   CALENDAR_TYPE,
1309         PERIOD_NAME                     PERIOD_NAME,
1310         PLAN_VERSION_ID                 PLAN_VERSION_ID,
1311         TXN_CURRENCY_CODE               TXN_CURRENCY_CODE,
1312         SUM(TXN_RAW_COST)               TXN_RAW_COST,
1313         SUM(TXN_BRDN_COST)              TXN_BRDN_COST,
1314         SUM(TXN_REVENUE)                TXN_REVENUE,
1315         SUM(TXN_LABOR_RAW_COST)         TXN_LABOR_RAW_COST,
1316         SUM(TXN_LABOR_BRDN_COST)        TXN_LABOR_BRDN_COST,
1317         SUM(TXN_EQUIP_RAW_COST)         TXN_EQUIP_RAW_COST,
1318         SUM(TXN_EQUIP_BRDN_COST)        TXN_EQUIP_BRDN_COST,
1319         SUM(QUANTITY)                   QUANTITY,
1320         SUM(PRJ_RAW_COST)               PRJ_RAW_COST,
1321         SUM(PRJ_BRDN_COST)              PRJ_BRDN_COST,
1322         SUM(PRJ_REVENUE)                PRJ_REVENUE,
1323         SUM(PRJ_LABOR_RAW_COST)         PRJ_LABOR_RAW_COST,
1324         SUM(PRJ_LABOR_BRDN_COST)        PRJ_LABOR_BRDN_COST,
1325         SUM(PRJ_EQUIP_RAW_COST)         PRJ_EQUIP_RAW_COST,
1326         SUM(PRJ_EQUIP_BRDN_COST)        PRJ_EQUIP_BRDN_COST,
1327         SUM(POU_RAW_COST)               POU_RAW_COST,
1328         SUM(POU_BRDN_COST)              POU_BRDN_COST,
1329         SUM(POU_REVENUE)                POU_REVENUE,
1330         SUM(POU_LABOR_RAW_COST)         POU_LABOR_RAW_COST,
1331         SUM(POU_LABOR_BRDN_COST)        POU_LABOR_BRDN_COST,
1332         SUM(POU_EQUIP_RAW_COST)         POU_EQUIP_RAW_COST,
1333         SUM(POU_EQUIP_BRDN_COST)        POU_EQUIP_BRDN_COST,
1334         SUM(LABOR_HOURS)                LABOR_HOURS,
1335         SUM(EQUIP_HOURS)                EQUIPMENT_HOURS,
1336         MIN(PERIOD_FLAG)                PERIOD_FLAG,
1337         SUM(INCR_QUANTITY)              BASE_LABOR_HOURS,
1338         SUM(INCR_POU_RAW_COST)          POU_LPB_RAW_COST,
1339         SUM(INCR_POU_BRDN_COST)         POU_LPB_BRDN_COST,
1340         MIN(START_DATE)                 MIN_START_DATE,
1341         MAX(END_DATE)                   MAX_END_DATE,
1342         CBS_ELEMENT_ID
1343 FROM
1344         (
1345         SELECT --Retreives actuals data by resource list as ITD amounts for NON-TIME PHASED Calendar
1346                 --from pji_fp_txn_Accum
1347                 /*tmp4.TXN_SOURCE_ID, Commented for workplan progress */
1348                 (null)                          SOURCE_ID,
1349                 tmp4.RESOURCE_LIST_MEMBER_ID    RES_LIST_MEMBER_ID,
1350                 accum.PROJECT_ID                PROJECT_ID,
1351                 p_struct_ver_ids(i)             STRUCT_VERSION_ID,
1352                 accum.TASK_ID                   PROJECT_ELEMENT_ID,
1353                 l_calendar_type(i)              CALENDAR_TYPE,
1354                 NULL                            PERIOD_NAME, /* Added for workplan progress */
1355                 -1                              PLAN_VERSION_ID,
1356                 accum.TXN_CURRENCY_CODE         TXN_CURRENCY_CODE,
1357                 accum.TXN_RAW_COST              TXN_RAW_COST,
1358                 accum.TXN_BRDN_COST             TXN_BRDN_COST,
1359                 accum.TXN_REVENUE               TXN_REVENUE,
1360                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.TXN_RAW_COST, 0)       TXN_LABOR_RAW_COST,
1361                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.TXN_BRDN_COST, 0)      TXN_LABOR_BRDN_COST,
1362                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.TXN_RAW_COST, 0)    TXN_EQUIP_RAW_COST,
1363                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.TXN_BRDN_COST, 0)   TXN_EQUIP_BRDN_COST,
1364                 accum.QUANTITY                  QUANTITY,
1365                 accum.PRJ_RAW_COST              PRJ_RAW_COST,
1366                 accum.PRJ_BRDN_COST             PRJ_BRDN_COST,
1367                 accum.PRJ_REVENUE               PRJ_REVENUE,
1368                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.PRJ_RAW_COST, 0)       PRJ_LABOR_RAW_COST,
1369                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.PRJ_BRDN_COST, 0)      PRJ_LABOR_BRDN_COST,
1370                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.PRJ_RAW_COST, 0)    PRJ_EQUIP_RAW_COST,
1371                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.PRJ_BRDN_COST, 0)   PRJ_EQUIP_BRDN_COST,
1372                 accum.POU_RAW_COST              POU_RAW_COST,
1373                 accum.POU_BRDN_COST             POU_BRDN_COST,
1374                 accum.POU_REVENUE               POU_REVENUE,
1375                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.POU_RAW_COST, 0)       POU_LABOR_RAW_COST,
1376                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.POU_BRDN_COST, 0)      POU_LABOR_BRDN_COST,
1377                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.POU_RAW_COST, 0)    POU_EQUIP_RAW_COST,
1378                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.POU_BRDN_COST, 0)   POU_EQUIP_BRDN_COST,
1379                 decode(tmp4.RESOURCE_CLASS_CODE, 'PEOPLE', accum.QUANTITY, 0)           LABOR_HOURS,
1380                 decode(tmp4.RESOURCE_CLASS_CODE, 'EQUIPMENT', accum.QUANTITY, 0)        EQUIP_HOURS,
1381                 null            PERIOD_FLAG,
1382                 null            INCR_QUANTITY,
1383                 null            INCR_POU_RAW_COST,
1384                 null            INCR_POU_BRDN_COST,
1385                 time.START_DATE,
1386                 time.END_DATE,
1387                 --OLAP
1388                 accum.CBS_ELEMENT_ID
1389                 -- End OLAP
1390         FROM
1391                 pa_res_list_map_tmp4 tmp4,
1392                 pji_fp_txn_accum accum,
1393                 pji_time_cal_period_v time
1394         WHERE
1395                 tmp4.TXN_SOURCE_ID      = accum.TXN_ACCUM_HEADER_ID                 AND
1396                 accum.PROJECT_ID        = p_project_ids(i)                          AND
1397                 accum.NAMED_ROLE        = NVL(tmp4.NAMED_ROLE, 'PJI$NULL')          AND -- Bug  8294762
1398                 l_calendar_type(i)      = 'A'                                       AND
1399                 accum.RECVR_PERIOD_ID   = time.CAL_PERIOD_ID                        AND
1400                 accum.RECVR_PERIOD_TYPE = 'GL'                                      AND
1401                 nvl(p_calling_context,'F')      not in ('P', 'W')
1402         )
1403 GROUP BY
1404         RES_LIST_MEMBER_ID,
1405         PROJECT_ID,
1406         STRUCT_VERSION_ID,
1407         DECODE(l_proj_level_flag, 'Y', 0, PROJECT_ELEMENT_ID) ,
1408         CALENDAR_TYPE,
1409         PERIOD_NAME,
1410         PLAN_VERSION_ID,
1411         TXN_CURRENCY_CODE,
1412         CBS_ELEMENT_ID
1413   );
1414  END IF;/*p_calling_context*/
1415 
1416                 print_time ( ' get_summarized_data 0004.4 ' ) ;
1417 
1418         delete from pa_res_list_map_tmp4;
1419 
1420                 /* Added for populating periodic actuals till as_of_data parameter */
1421                 /* Bug         5349102 :shifted the code to delete_fin8
1422                         IF p_calling_context       in ('P', 'W')   THEN
1423 
1424                                 IF l_calendar_type(i)       = 'A' THEN
1425 
1426                                         delete from pji_fm_aggr_fin8 fin where
1427                                         fin.PROJECT_ID           = p_project_ids(i);
1428                                 ELSE
1429 
1430                                         delete from pji_fm_aggr_fin8 fin where
1431                                         fin.PROJECT_ID           = p_project_ids(i)
1432                                         AND  fin.RECVR_PERIOD_ID  <= l_end_period_id(i);
1433                                 END IF;
1434 
1435                         END IF;      */
1436                 /* Added for populating periodic actuals till as_of_data parameter */
1437 
1438    END IF;/* End of l_plan_ver_flag='Y' and  l_get_summarized_Data='Y' */
1439 END LOOP;
1440 
1441     delete
1442     from  PJI_FM_XBS_ACCUM_TMP1
1443     where nvl(TXN_RAW_COST, 0)             = 0 and
1444           nvl(TXN_BRDN_COST, 0)            = 0 and
1445           nvl(TXN_LABOR_RAW_COST, 0)       = 0 and
1446           nvl(TXN_LABOR_BRDN_COST, 0)      = 0 and
1447           nvl(TXN_EQUIP_RAW_COST, 0)       = 0 and
1448           nvl(TXN_EQUIP_BRDN_COST, 0)      = 0 and
1449           nvl(TXN_BASE_RAW_COST, 0)        = 0 and
1450           nvl(TXN_BASE_BRDN_COST, 0)       = 0 and
1451           nvl(TXN_BASE_LABOR_RAW_COST, 0)  = 0 and
1452           nvl(TXN_BASE_LABOR_BRDN_COST, 0) = 0 and
1453           nvl(TXN_BASE_EQUIP_RAW_COST, 0)  = 0 and
1454           nvl(TXN_BASE_EQUIP_BRDN_COST, 0) = 0 and
1455           nvl(PRJ_RAW_COST, 0)             = 0 and
1456           nvl(PRJ_BRDN_COST, 0)            = 0 and
1457           nvl(PRJ_LABOR_RAW_COST, 0)       = 0 and
1458           nvl(PRJ_LABOR_BRDN_COST, 0)      = 0 and
1459           nvl(PRJ_EQUIP_RAW_COST, 0)       = 0 and
1460           nvl(PRJ_EQUIP_BRDN_COST, 0)      = 0 and
1461           nvl(PRJ_BASE_RAW_COST, 0)        = 0 and
1462           nvl(PRJ_BASE_BRDN_COST, 0)       = 0 and
1463           nvl(PRJ_BASE_LABOR_RAW_COST, 0)  = 0 and
1464           nvl(PRJ_BASE_LABOR_BRDN_COST, 0) = 0 and
1465           nvl(PRJ_BASE_EQUIP_RAW_COST, 0)  = 0 and
1466           nvl(PRJ_BASE_EQUIP_BRDN_COST, 0) = 0 and
1467           nvl(POU_RAW_COST, 0)             = 0 and
1468           nvl(POU_BRDN_COST, 0)            = 0 and
1469           nvl(POU_LABOR_RAW_COST, 0)       = 0 and
1470           nvl(POU_LABOR_BRDN_COST, 0)      = 0 and
1471           nvl(POU_EQUIP_RAW_COST, 0)       = 0 and
1472           nvl(POU_EQUIP_BRDN_COST, 0)      = 0 and
1473           nvl(POU_BASE_RAW_COST, 0)        = 0 and
1474           nvl(POU_BASE_BRDN_COST, 0)       = 0 and
1475           nvl(POU_BASE_LABOR_RAW_COST, 0)  = 0 and
1476           nvl(POU_BASE_LABOR_BRDN_COST, 0) = 0 and
1477           nvl(POU_BASE_EQUIP_RAW_COST, 0)  = 0 and
1478           nvl(POU_BASE_EQUIP_BRDN_COST, 0) = 0 and
1479           nvl(LABOR_HOURS, 0)              = 0 and
1480           nvl(EQUIPMENT_HOURS, 0)          = 0 and
1481           nvl(BASE_LABOR_HOURS, 0)         = 0 and
1482           nvl(BASE_EQUIP_HOURS, 0)         = 0 and
1483           nvl(SOURCE_ID, 0)                = 0 and
1484           nvl(ACT_LABOR_HRS, 0)            = 0 and
1485           nvl(ACT_EQUIP_HRS, 0)            = 0 and
1486           nvl(ACT_TXN_LABOR_BRDN_COST, 0)  = 0 and
1487           nvl(ACT_TXN_EQUIP_BRDN_COST, 0)  = 0 and
1488           nvl(ACT_TXN_BRDN_COST, 0)        = 0 and
1489           nvl(ACT_PRJ_LABOR_BRDN_COST, 0)  = 0 and
1490           nvl(ACT_PRJ_EQUIP_BRDN_COST, 0)  = 0 and
1491           nvl(ACT_PRJ_BRDN_COST, 0)        = 0 and
1492           nvl(ACT_PFC_LABOR_BRDN_COST, 0)  = 0 and
1493           nvl(ACT_PFC_EQUIP_BRDN_COST, 0)  = 0 and
1494           nvl(ACT_PFC_BRDN_COST, 0)        = 0 and
1495           nvl(ETC_LABOR_HRS, 0)            = 0 and
1496           nvl(ETC_EQUIP_HRS, 0)            = 0 and
1497           nvl(ETC_TXNLABOR_BRDN_COST, 0)   = 0 and
1498           nvl(ETC_TXN_EQUIP_BRDN_COST, 0)  = 0 and
1499           nvl(ETC_TXN_BRDN_COST, 0)        = 0 and
1500           nvl(ETC_PRJ_LABOR_BRDN_COST, 0)  = 0 and
1501           nvl(ETC_PRJ_EQUIP_BRDN_COST, 0)  = 0 and
1502           nvl(ETC_PRJ_BRDN_COST, 0)        = 0 and
1503           nvl(ETC_POU_LABOR_BRDN_COST, 0)  = 0 and
1504           nvl(ETC_POU_EQUIP_BRDN_COST, 0)  = 0 and
1505           nvl(ETC_POU_BRDN_COST, 0)        = 0 and
1506           nvl(ACT_TXN_RAW_COST, 0)         = 0 and
1507           nvl(ACT_PRJ_RAW_COST, 0)         = 0 and
1508           nvl(ACT_POU_RAW_COST, 0)         = 0 and
1509           nvl(ETC_TXN_RAW_COST, 0)         = 0 and
1510           nvl(ETC_PRJ_RAW_COST, 0)         = 0 and
1511           nvl(ETC_POU_RAW_COST, 0)         = 0 and
1512           nvl(ACT_TXN_LABOR_RAW_COST, 0)   = 0 and
1513           nvl(ACT_TXN_EQUIP_RAW_COST, 0)   = 0 and
1514           nvl(ACT_PRJ_LABOR_RAW_COST, 0)   = 0 and
1515           nvl(ACT_PRJ_EQUIP_RAW_COST, 0)   = 0 and
1516           nvl(ACT_POU_LABOR_RAW_COST, 0)   = 0 and
1517           nvl(ACT_POU_EQUIP_RAW_COST, 0)   = 0 and
1518           nvl(ETC_TXN_LABOR_RAW_COST, 0)   = 0 and
1519           nvl(ETC_TXN_EQUIP_RAW_COST, 0)   = 0 and
1520           nvl(ETC_PRJ_LABOR_RAW_COST, 0)   = 0 and
1521           nvl(ETC_PRJ_EQUIP_RAW_COST, 0)   = 0 and
1522           nvl(ETC_POU_LABOR_RAW_COST, 0)   = 0 and
1523           nvl(ETC_POU_EQUIP_RAW_COST, 0)   = 0 and
1524           nvl(ACT_POU_LABOR_BRDN_COST, 0)  = 0 and
1525           nvl(ACT_POU_EQUIP_BRDN_COST, 0)  = 0 and
1526           nvl(ACT_POU_BRDN_COST, 0)        = 0 and
1527           nvl(ETC_TXN_LABOR_BRDN_COST, 0)  = 0 and
1528           nvl(TXN_LPB_RAW_COST, 0)         = 0 and
1529           nvl(TXN_LPB_BRDN_COST, 0)        = 0 and
1530           nvl(TXN_LPB_LABOR_RAW_COST, 0)   = 0 and
1531           nvl(TXN_LPB_LABOR_BRDN_COST, 0)  = 0 and
1532           nvl(TXN_LPB_EQUIP_RAW_COST, 0)   = 0 and
1533           nvl(TXN_LPB_EQUIP_BRDN_COST, 0)  = 0 and
1534           nvl(PRJ_LPB_RAW_COST, 0)         = 0 and
1535           nvl(PRJ_LPB_BRDN_COST, 0)        = 0 and
1536           nvl(PRJ_LPB_LABOR_RAW_COST, 0)   = 0 and
1537           nvl(PRJ_LPB_LABOR_BRDN_COST, 0)  = 0 and
1538           nvl(PRJ_LPB_EQUIP_RAW_COST, 0)   = 0 and
1539           nvl(PRJ_LPB_EQUIP_BRDN_COST, 0)  = 0 and
1540           nvl(POU_LPB_RAW_COST, 0)         = 0 and
1541           nvl(POU_LPB_BRDN_COST, 0)        = 0 and
1542           nvl(POU_LPB_LABOR_RAW_COST, 0)   = 0 and
1543           nvl(POU_LPB_LABOR_BRDN_COST, 0)  = 0 and
1544           nvl(POU_LPB_EQUIP_RAW_COST, 0)   = 0 and
1545           nvl(POU_LPB_EQUIP_BRDN_COST, 0)  = 0 and
1546           nvl(LPB_LABOR_HOURS, 0)          = 0 and
1547           nvl(LPB_EQUIP_HOURS, 0)          = 0 and
1548           RES_LIST_MEMBER_ID               > 0 and
1549           p_calling_context                = 'W';
1550 
1551 IF NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N') = 'Y' THEN
1552    debug_accum ; /* bug#3993830 */
1553 END IF;
1554 
1555    print_time ( ' get_summarized_data 0010 ' ) ;
1556 
1557 EXCEPTION
1558   WHEN l_map_resource_list THEN   /* Bug No. 4461060 */
1559     print_time('Error in pkg ' || g_package_name || 'Procedure GET_SUMMARIZED_DATA' || ' is: ' || 'Error is in pa_resource_mapping.map_resource_list' );
1560     x_return_status :='E' ;
1561 
1562   WHEN OTHERS THEN
1563     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
1564     ( p_package_name   => g_package_name
1565     , p_procedure_name => 'GET_SUMMARIZED_DATA'
1566     , x_return_status =>  x_return_status ) ;
1567 
1568     RAISE;
1569 END;
1570 
1571 
1572 
1573 /*********************************************************
1574    This procedure populates  data in PJI_FM_XBS_ACCUM_TMP1
1575    for workplans.
1576    API supports both work plans and progress actuals
1577    The parameters that the API accepts can have one of the
1578    following combinations
1579    - p_struct_ver_id, p_base_struct_ver_id
1580    - p_plan_version_id
1581 **********************************************************/
1582 
1583 PROCEDURE populate_updatewbs_data (
1584     p_project_id            IN   NUMBER,
1585     p_struct_ver_id         IN   NUMBER   := NULL,
1586     p_base_struct_ver_id    IN   NUMBER   := NULL,
1587     p_plan_version_id       IN   NUMBER   := NULL,
1588     p_as_of_date            IN   DATE     := NULL,
1589     p_delete_flag           IN   VARCHAR2 := 'Y',
1590     p_project_element_id    IN   NUMBER   := NULL,
1591     p_level           IN   NUMBER := 1,
1592     p_structure_flag   IN   VARCHAR2 := 'N',
1593     x_return_status OUT NOCOPY   VARCHAR2,
1594     x_msg_code      OUT NOCOPY   VARCHAR2 ) IS
1595 
1596   l_plan_ver_id      NUMBER;
1597   l_base_plan_ver_id NUMBER := 0;
1598   l_wking_struct_ver_id  NUMBER;
1599   l_prd_start_date   DATE;
1600   l_calendar_id      NUMBER;
1601   l_org_id           NUMBER;
1602   l_calendar_type    VARCHAR2(1);
1603  -- changes made for populate_workplan_data fix for bug : 4158221
1604   l_cal_type         VARCHAR2(1) :=  'A' ;
1605   l_prd_type_id      NUMBER      := 2048 ;
1606   l_end_period_id    NUMBER := -1 ; -- Added Defalut value of -1 if calander_type = 'A'
1607 
1608   l_lpb_plan_ver_id Number; /*Added for workplan progress */
1609   l_lpb_struct_ver_id Number; /* Added for workplan progress*/
1610   l_return_status       VARCHAR2(1);
1611   p_workplan_flag VARCHAR2(1) :='Y';
1612   p_program_rollup_flag VARCHAR2(1) :='N';
1613 
1614 
1615 -- SRI_BUG START
1616 
1617    	-- OLAP START CHANGE
1618 
1619 l_pjt_rollup_enabled_flag varchar2(1) ;
1620 
1621 	-- OLAP END CHANGE
1622 
1623 -- OLAP START
1624 
1625 l_new_count  number ;
1626 l_new_elem_id   number ;
1627 l_start_object_id number ;
1628 l_cbs_enabled_flag varchar2(1);
1629 
1630  cursor  c1 is
1631 	SELECT   object_id ,  LEVEL +1,
1632     SYS_CONNECT_BY_PATH(object_id, '/') connect_path,
1633 	  connect_by_isleaf leaf_node
1634 	  FROM  pa_ppr_obj_tmp_view  r
1635 	  -- OLAP_BUG
1636 	--  START WITH  r.parent_object_id  = p_element_version_id	  CONNECT BY
1637 	  START WITH  r.parent_object_id  = l_start_object_id 	  CONNECT BY
1638 	  PRIOR  r.object_id =  r.parent_object_id ;
1639 
1640 	l_task_arr  PA_PLSQL_DATATYPES.NumTabTyp;
1641 	l_task_level_arr  PA_PLSQL_DATATYPES.NumTabTyp;
1642 	l_connect_path_arr PA_PLSQL_DATATYPES.Char240TabTyp;
1643 	l_leaf_node_arr PA_PLSQL_DATATYPES.NumTabTyp;
1644 
1645 -- OLAP END
1646 
1647 -- SRI_BUG END
1648 
1649 BEGIN
1650 
1651     PJI_PJP_FP_CURR_WRAP.INIT_ERR_STACK
1652     ( p_package_name   => g_package_name
1653     , x_return_status  => x_return_status );
1654 
1655     print_time (' p_project_id ' || p_project_id || ' p_struct_ver_id ' || p_struct_ver_id );
1656     print_time (' p_base_struct_ver_id ' || p_base_struct_ver_id || ' p_plan_version_id ' || p_plan_version_id );
1657     print_time ( ' p_as_of_date ' || p_as_of_date );
1658     print_time (' p_delete_flag ' || p_delete_flag || ' p_workplan_flag ' || p_workplan_flag );
1659 
1660     -- fnd_stats.set_table_stats('PJI','PJI_PLAN_EXTR_TMP',10,10,10);
1661     pji_pjp_fp_curr_wrap.set_table_stats('PJI','PJI_PLAN_EXTR_TMP',10,10,10);
1662 
1663         l_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1664     /* Added for workplan progress */
1665     -- Get the Latest Published Version for the Project
1666 
1667 -- SRI_BUG START
1668 
1669 	-- OLAP START
1670 
1671 	select nvl(p.pjt_rollup_enabled_flag , 'N' ), p.cbs_enable_flag   -- SCOPE_00   Added getting cbs_enabled_flag say l_cbs_enabled_flag
1672     into l_pjt_rollup_enabled_flag, l_cbs_enabled_flag
1673 	from pa_projects_all p
1674 	where p.project_id = p_project_id;
1675 
1676 	-- OLAP END
1677 
1678 -- SRI_BUG END
1679 
1680                 BEGIN
1681                         SELECT element_version_id
1682                                 INTO l_lpb_struct_ver_id
1683                         FROM    pa_proj_elem_ver_structure ppevs,
1684                                 pa_proj_structure_types ppst
1685                         WHERE   ppevs.project_id = p_project_id
1686                                 AND latest_eff_published_flag = 'Y'
1687                                 AND ppst.proj_element_id = ppevs.proj_element_id
1688                                 AND ppst.structure_type_id = 1;
1689                 EXCEPTION
1690                         WHEN NO_DATA_FOUND THEN
1691                         l_lpb_struct_ver_id := null;
1692                 END;
1693 
1694 
1695         IF l_lpb_struct_ver_id <>  -1 then -- To find out the latest published plan version Id
1696 
1697                 BEGIN
1698                         SELECT budget_version_id
1699                                 INTO l_lpb_plan_ver_id
1700                                 FROM PA_BUDGET_VERSIONS
1701                         WHERE project_structure_Version_id = l_lpb_struct_ver_id
1702                                 AND wp_version_flag ='Y'
1703                                 AND project_id      = p_project_id;
1704 
1705                 EXCEPTION
1706                         WHEN NO_DATA_FOUND THEN
1707                                 l_lpb_plan_ver_id := null;
1708                 END;
1709         ELSE
1710                         l_lpb_struct_ver_id :=null;
1711                         l_lpb_plan_ver_id := null;
1712         END IF;
1713 
1714 
1715  /* End of workplan progress change */
1716 
1717 
1718 
1719         IF (p_plan_version_id IS NOT NULL) THEN
1720 
1721                 l_plan_ver_id := p_plan_version_id;
1722 
1723                 BEGIN
1724 
1725                 print_time ( ' populate_updatewbs_data 0003.2 ' ) ;
1726 -- SRI_BUG START
1727 				-- OLAP START
1728 
1729 				if  l_pjt_rollup_enabled_flag = 'N'  then
1730 
1731                         SELECT WBS_VERSION_ID
1732                                 INTO   l_wking_struct_ver_id
1733                         FROM   pji_pjp_wbs_header
1734                         WHERE  plan_version_id  = p_plan_version_id;
1735 				else
1736 
1737 				select project_structure_version_id
1738 				into l_wking_struct_ver_id
1739 				from pa_budget_versions
1740 				where budget_version_id = p_plan_version_id ;
1741 
1742 				end if;
1743 
1744 	-- OLAP END
1745 -- SRI_BUG END
1746 
1747                 EXCEPTION
1748                         WHEN NO_DATA_FOUND THEN
1749                         print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA. Structure info does not exist for this plan version in WBS header table ' || NVL(p_plan_version_id, -99));
1750                 END;
1751 
1752         ELSE
1753 
1754                 print_time ( ' populate_updatewbs_data 0003.3 ' ) ;
1755 
1756                 l_wking_struct_ver_id := p_struct_ver_id ;
1757 
1758                 --Get the plan version for work plan
1759 
1760                 BEGIN
1761                         print_time ( ' populate_updatewbs_data 0003.4 ' ) ;
1762 
1763 -- SRI_BUG START
1764 	-- OLAP START
1765 
1766 						if  l_pjt_rollup_enabled_flag = 'N'  then
1767 
1768 
1769                         SELECT head.PLAN_VERSION_ID
1770                         INTO l_plan_ver_id
1771                         FROM pji_pjp_wbs_header head,
1772                              pa_budget_versions bv
1773                         WHERE 1=1
1774                                 AND head.plan_version_id = bv.budget_version_id
1775                                 AND NVL(bv.wp_version_flag, 'N') = head.wp_flag
1776                                 AND NVL(bv.wp_version_flag, 'N') = p_workplan_flag
1777                                 AND head.WBS_VERSION_ID = p_struct_ver_id
1778                                 AND head.PROJECT_ID     = p_project_id
1779                                 AND DECODE(p_workplan_flag
1780                                 , 'N'
1781                                 , DECODE(bv.budget_status_code||bv.current_working_flag
1782                                 , 'WY'
1783                                 ,'X'
1784                                 , 'Y')
1785                                 , 'X') = 'X'
1786                                 AND head.PLAN_VERSION_ID > 0;
1787 						else
1788 
1789 
1790 						select budget_version_id
1791 						into  l_plan_ver_id
1792 						from pa_budget_versions bv
1793 						where  bv.project_id = p_project_id
1794 						AND bv.fin_plan_type_id = 10
1795 						AND DECODE(p_workplan_flag
1796                                 , 'N'
1797                                 , DECODE(bv.budget_status_code||bv.current_working_flag
1798                                 , 'WY'
1799                                 ,'X'
1800                                 , 'Y')
1801                                 , 'X') = 'X'
1802 						and  bv.project_structure_version_id  = p_struct_ver_id;
1803 
1804 
1805 						end if;
1806 	-- OLAP END
1807 
1808 -- SRI_BUG END
1809 
1810                 EXCEPTION
1811                         WHEN no_data_found THEN
1812                         print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA. Plan info does not exists for this project id ' || p_project_id || ' and this structure version id ' || p_struct_ver_id  || ' in WBS header table.');
1813 
1814                 END;
1815 
1816                         print_time ( ' populate_updatewbs_data 0003.5 ' ) ;
1817 
1818 
1819                 --Get the baselined plan version
1820 
1821                 BEGIN
1822 
1823                         print_time ( ' populate_updatewbs_data 0003.6 ' ) ;
1824 
1825 -- SRI_BUG
1826 	-- OLAP START
1827 
1828 						if  l_pjt_rollup_enabled_flag = 'N'  then
1829 
1830 
1831                         SELECT  head.PLAN_VERSION_ID
1832                         INTO    l_base_plan_ver_id
1833                         FROM    pji_pjp_wbs_header head,
1834                                  pa_budget_versions bv
1835                         WHERE   1=1
1836                                 AND head.plan_version_id = bv.budget_version_id
1837                                 AND NVL(bv.wp_version_flag, 'N') = head.wp_flag
1838                                 AND NVL(bv.wp_version_flag, 'N') = p_workplan_flag
1839                                 AND head.WBS_VERSION_ID = p_base_struct_ver_id
1840                                 AND head.PROJECT_ID     = p_project_id
1841                                 AND DECODE(p_workplan_flag
1842                                 , 'N'
1843                                 , DECODE(bv.budget_status_code||bv.current_flag
1844                                 , 'BY','X'
1845                                 , 'Y')
1846                                 , 'X')
1847                                 = 'X'
1848                                 AND head.PLAN_VERSION_ID > 0;
1849 
1850 						else
1851 
1852 
1853 						select budget_version_id
1854 						into  l_plan_ver_id
1855 						from pa_budget_versions bv
1856 						where  bv.project_id = p_project_id
1857 						AND bv.fin_plan_type_id = 10
1858 						AND DECODE(p_workplan_flag
1859                                 , 'N'
1860                                 , DECODE(bv.budget_status_code||bv.current_flag
1861                                 , 'BY','X'
1862                                 , 'Y')
1863                                 , 'X')
1864                                 = 'X'
1865 						and  bv.project_structure_version_id  = p_base_struct_ver_id;
1866 
1867 
1868 						end if;
1869 	-- OLAP END
1870 	-- SRI_BUG
1871 
1872                 EXCEPTION
1873                         WHEN no_data_found THEN
1874                         print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA no current baselined plan version');
1875                 END;
1876 
1877         END IF;
1878 
1879 
1880     print_time ( ' populate_updatewbs_data 0003.7 p_project_id' || p_project_id ) ;
1881     print_time ( ' l_base_plan_ver_id ' || l_base_plan_ver_id || ' plan_ver_id ' || l_plan_ver_id ) ;
1882 
1883 -- Changes made for populate_work_plan_data chagnes : Fix for bug : 4158221
1884         If p_as_of_date IS NOT NULL then -- Fix for bug : 4196808
1885                 BEGIN
1886                         SELECT calendar_type, DECODE(calendar_type, 'A', 2048, 32) PERIOD_TYPE_ID
1887                         INTO l_cal_type,  l_prd_type_id
1888                         FROM
1889                         (
1890                                 SELECT
1891                                 DECODE(NVL(NVL(cost_time_phased_code, revenue_time_phased_code), all_time_phased_code), 'G', 'G', 'P', 'P', 'A') calendar_type
1892                                 FROM  pa_proj_fp_options
1893                                 WHERE  fin_plan_option_level_code = 'PLAN_VERSION'
1894                                 AND  fin_plan_version_id        =  l_plan_ver_id
1895                         ) ;
1896                 EXCEPTION
1897                         when no_data_found then
1898                         print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA : No calendar_type');
1899                         when others then
1900                         print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA : No Calander_Type');
1901                 END ;
1902 
1903                 BEGIN
1904                         SELECT ORG_ID
1905                         INTO   l_org_id
1906                         FROM   pa_projects_all
1907                         WHERE  project_id = p_project_id ;
1908 
1909                         IF L_CAL_TYPE IN ('P', 'G') THEN -- retrieve CAL_PERIOD_ID only if calander_type is 'P' or 'G'
1910                                 SELECT cal.CAL_PERIOD_ID
1911                                         INTO l_end_period_id
1912                                 FROM pji_time_cal_period_v cal, pji_org_extr_info    info
1913                                 WHERE TRUNC(p_as_of_date)
1914                                         BETWEEN TRUNC(cal.START_DATE) AND TRUNC(cal.END_DATE)
1915                                         AND info.ORG_ID  = l_org_id
1916                                         AND DECODE(l_cal_type, 'P', info.PA_CALENDAR_ID, info.GL_CALENDAR_ID) = cal.CALENDAR_ID;
1917                         END IF ;
1918                 EXCEPTION
1919                         when no_data_found then
1920                                 print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA : No Calander Period Id');
1921                         when others then
1922                                 print_time( 'PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA : No Calander Period Id');
1923                 END ;
1924         END IF ; -- end if for If p_as_of_date IS NOT NULL then
1925 
1926 
1927 
1928         DELETE FROM PJI_PLAN_EXTR_TMP;
1929         print_time ( ' # rows deleted from tmp = ' || SQL%ROWCOUNT ) ;
1930 
1931 
1932 --Ensures that data is cleaned up for the Project / Program and the linked sub projects
1933         IF (p_delete_flag = 'Y') THEN
1934 
1935                 print_time ( ' populate_updatewbs_data 0002 ' ) ;
1936                 DELETE FROM pji_fm_xbs_accum_tmp1;
1937                 print_time ( ' # rows deleted from tmp1 = ' || SQL%ROWCOUNT ) ;
1938 
1939         END IF;
1940 
1941 print_time ( ' populate_updatewbs_data 0003 ' ) ;
1942 
1943  -- The Temp table is populated with the PROJECT_ID and the PROJECT_ELEMENT_ID
1944 
1945 IF  p_structure_flag ='N'  THEN
1946 
1947                 insert into PJI_PLAN_EXTR_TMP(project_id,plan_ver_id)
1948                 select sup_project_id,sub_emt_id
1949                 from   pji_xbs_Denorm
1950                 where  sup_project_id=p_project_id
1951                 and    struct_version_id = p_struct_ver_id
1952                 and    sup_emt_id=p_project_element_id
1953                 and    sup_level <> sub_level
1954                 and    abs(sup_level - sub_level) <=p_level ;
1955 ELSE
1956                 insert into PJI_PLAN_EXTR_TMP(project_id,plan_ver_id)
1957                 select sub.sup_project_id,sub.sub_emt_id
1958                 from   pji_xbs_Denorm sup,pji_xbs_Denorm sub
1959                 where  sup.sup_project_id=p_project_id
1960                 and    sup.sup_project_id =sub.sup_project_id
1961                 and    sup.sup_id = p_struct_ver_id
1962                 and    sup.sub_id = sub.sup_id
1963                 and    sub.struct_type<> 'XBS'
1964                 and    sup.struct_type<> 'WBS'
1965                 and    abs(sub.sup_level - sub.sub_level) <=p_level -1;
1966 END IF;
1967 
1968 
1969 -- SRI_BUG  START
1970 
1971 -- OLAP START
1972 
1973 -- SCOPE_00 change the below If state to cbs_enabled_flag
1974 
1975 --if  l_pjt_rollup_enabled_flag = 'Y'  then
1976 if l_cbs_enabled_flag = 'Y' then
1977 
1978 select proj_element_id
1979 into l_new_elem_id
1980 FROM
1981 PA_PROJ_ELEMENT_VERSIONS
1982 where element_version_id = l_wking_struct_ver_id; -- modified for 16594243
1983 
1984 				DELETE FROM pa_ppr_obj_tmp_view; --16679474
1985           insert into pa_ppr_obj_tmp_view ( object_id , parent_object_id )
1986       select  /*+ ordered */
1987 	    distinct a.proj_element_id , nvl(c.proj_element_id,l_new_elem_id )  -- BUG_00
1988        from PA_PROJ_ELEMENT_VERSIONS a   ,  pa_object_relationships b  ,  PA_PROJ_ELEMENT_VERSIONS  c
1989         where a.project_id = p_project_id
1990 		 and a.object_type = 'PA_TASKS'
1991 		and a.parent_structure_version_id = p_base_struct_ver_id -- BUG_00
1992 		and a.element_version_id = b.object_id_to1  (+)
1993          and b.object_type_From (+)  = 'PA_TASKS'
1994 		 and b.relationship_type (+) = 'S'
1995      and b.object_id_from1 = c.element_version_id (+) ;
1996 
1997 
1998 	 insert into pa_ppr_obj_tmp_view ( object_id , parent_object_id )  values ( l_new_elem_id , -1 );
1999 
2000 	  l_task_arr.delete;
2001 	l_task_level_arr.delete;
2002 	l_connect_path_arr.delete;
2003 	l_leaf_node_arr.delete;
2004 
2005 	if (  p_structure_flag ='N'  ) then
2006 	l_start_object_id := p_project_element_id;
2007 	else
2008 	l_start_object_id := -1 ;
2009 	end if;
2010 
2011 	  OPEN c1;
2012 
2013         FETCH c1
2014             BULK COLLECT INTO l_task_arr, l_task_level_arr,l_connect_path_arr , l_leaf_node_arr ;
2015 
2016         CLOSE c1;
2017 
2018 		 FORALL k IN 1..l_task_arr.COUNT
2019             UPDATE pa_ppr_obj_tmp_view
2020             SET    connect_path = l_connect_path_arr(k),
2021                    leaf_node  = l_leaf_node_arr(k),
2022 				   wbs_rbs_level  = l_task_level_arr(k)
2023             WHERE  object_id      = l_task_arr(k);
2024 
2025 
2026 end if ;
2027 
2028 
2029 -- OLAP END
2030 
2031 -- SRI_BUG  END
2032 
2033     --
2034     -- Get task level data from reporting lines
2035     -- Data is rolled up by WBS hierarchy
2036     -- Data inserted is the Totals
2037     --
2038 	-- SRI_BUG START
2039 	-- OLAP START
2040 	if  l_pjt_rollup_enabled_flag = 'N'  then
2041 	-- OLAP END
2042 	-- SRI_BUG END
2043 
2044 
2045           INSERT INTO pji_fm_xbs_accum_tmp1 (
2046                 PROJECT_ID,  STRUCT_VERSION_ID,       PROJECT_ELEMENT_ID,      CALENDAR_TYPE,
2047                 PERIOD_NAME,      PLAN_VERSION_ID,        QUANTITY,         TXN_RAW_COST,
2048                 TXN_BRDN_COST,        TXN_REVENUE,         TXN_LABOR_RAW_COST,      TXN_LABOR_BRDN_COST,
2049                 TXN_EQUIP_RAW_COST,      TXN_EQUIP_BRDN_COST,     TXN_BASE_RAW_COST,       TXN_BASE_BRDN_COST,
2050                 TXN_BASE_LABOR_RAW_COST, TXN_BASE_LABOR_BRDN_COST,TXN_BASE_EQUIP_RAW_COST, TXN_BASE_EQUIP_BRDN_COST,
2051                 TXN_LPB_RAW_COST,        TXN_LPB_BRDN_COST,       TXN_LPB_LABOR_RAW_COST,  TXN_LPB_LABOR_BRDN_COST,
2052                 TXN_LPB_EQUIP_RAW_COST,  TXN_LPB_EQUIP_BRDN_COST, PRJ_RAW_COST,          PRJ_BRDN_COST,
2053                 PRJ_REVENUE,        PRJ_LABOR_RAW_COST,      PRJ_LABOR_BRDN_COST,     PRJ_EQUIP_RAW_COST,
2054                 PRJ_EQUIP_BRDN_COST,  PRJ_BASE_RAW_COST,       PRJ_BASE_BRDN_COST,      PRJ_BASE_LABOR_RAW_COST,
2055                 PRJ_BASE_LABOR_BRDN_COST,PRJ_BASE_EQUIP_RAW_COST, PRJ_BASE_EQUIP_BRDN_COST,PRJ_LPB_RAW_COST,
2056                 PRJ_LPB_BRDN_COST,       PRJ_LPB_LABOR_RAW_COST,  PRJ_LPB_LABOR_BRDN_COST, PRJ_LPB_EQUIP_RAW_COST,
2057                 PRJ_LPB_EQUIP_BRDN_COST, POU_RAW_COST,          POU_BRDN_COST,           POU_REVENUE,
2058                 POU_LABOR_RAW_COST,      POU_LABOR_BRDN_COST,     POU_EQUIP_RAW_COST,      POU_EQUIP_BRDN_COST,
2059                 POU_BASE_RAW_COST,       POU_BASE_BRDN_COST,      POU_BASE_LABOR_RAW_COST, POU_BASE_LABOR_BRDN_COST,
2060                 POU_BASE_EQUIP_RAW_COST, POU_BASE_EQUIP_BRDN_COST,POU_LPB_RAW_COST,        POU_LPB_BRDN_COST,
2061                 POU_LPB_LABOR_RAW_COST,  POU_LPB_LABOR_BRDN_COST, POU_LPB_EQUIP_RAW_COST,  POU_LPB_EQUIP_BRDN_COST,
2062                 LABOR_HOURS,          EQUIPMENT_HOURS,         BASE_LABOR_HOURS,        BASE_EQUIP_HOURS,
2063                 LPB_LABOR_HOURS,         LPB_EQUIP_HOURS,   ACT_LABOR_HRS,     ACT_EQUIP_HRS,
2064                 ACT_TXN_LABOR_BRDN_COST, ACT_TXN_EQUIP_BRDN_COST, ACT_TXN_RAW_COST,     ACT_TXN_BRDN_COST,
2065                 ACT_PRJ_LABOR_BRDN_COST, ACT_PRJ_EQUIP_BRDN_COST, ACT_PRJ_RAW_COST,     ACT_PRJ_BRDN_COST,
2066                 ACT_POU_LABOR_BRDN_COST, ACT_POU_EQUIP_BRDN_COST, ACT_POU_RAW_COST,     ACT_POU_BRDN_COST,
2067                 ETC_LABOR_HRS,           ETC_EQUIP_HRS,    ETC_TXN_LABOR_BRDN_COST, ETC_TXN_EQUIP_BRDN_COST,
2068                 ETC_TXN_RAW_COST,   ETC_TXN_BRDN_COST,    ETC_PRJ_LABOR_BRDN_COST, ETC_PRJ_EQUIP_BRDN_COST,
2069                 ETC_PRJ_RAW_COST,        ETC_PRJ_BRDN_COST,    ETC_POU_LABOR_BRDN_COST, ETC_POU_EQUIP_BRDN_COST,
2070                 ETC_POU_RAW_COST,        ETC_POU_BRDN_COST,     ACT_TXN_LABOR_RAW_COST , ACT_PRJ_LABOR_RAW_COST,
2071                 ACT_POU_LABOR_RAW_COST,  ACT_TXN_EQUIP_RAW_COST,  ACT_PRJ_EQUIP_RAW_COST,  ACT_POU_EQUIP_RAW_COST,
2072                 ETC_TXN_LABOR_RAW_COST,  ETC_PRJ_LABOR_RAW_COST,  ETC_POU_LABOR_RAW_COST,  ETC_TXN_EQUIP_RAW_COST,
2073                 ETC_PRJ_EQUIP_RAW_COST,  ETC_POU_EQUIP_RAW_COST,  P_RAW_COST,P_BRDN_COST,  P_REVENUE,
2074                 P_LBR_RAW_COST,  P_LBR_BRDN_COST,   P_EQP_RAW_COST,    P_EQP_BRDN_COST,
2075                 P_BASE_RAW_COST,  P_BASE_BRDN_COST,   P_BASE_LBR_RAW_COST,    P_BASE_LBR_BRDN_COST,
2076                 P_BASE_EQP_RAW_COST,  P_BASE_EQP_BRDN_COST,   P_LPB_RAW_COST,    P_LPB_BRDN_COST,
2077                 P_LPB_LBR_RAW_COST,  P_LPB_LBR_BRDN_COST,   P_LPB_EQP_RAW_COST,    P_LPB_EQP_BRDN_COST,
2078                 P_LBR_HOURS,  P_EQP_HOURS,   P_BASE_LBR_HOURS,    P_BASE_EQP_HOURS,
2079                 P_LPB_LBR_HOURS,  P_LPB_EQP_HOURS,   P_ACT_LBR_HOURS,    P_ACT_EQP_HOURS,
2080                 P_ACT_LBR_BRDN_COST,  P_ACT_EQP_BRDN_COST,   P_ACT_RAW_COST,     P_ACT_BRDN_COST,
2081                 P_ACT_LBR_RAW_COST,  P_ACT_EQP_RAW_COST,   P_ETC_EQP_HOURS,         P_ETC_LBR_HOURS,
2082                 P_ETC_RAW_COST,  P_ETC_BRDN_COST,   P_ETC_LBR_BRDN_COST,     P_ETC_EQP_BRDN_COST,
2083                 P_ETC_LBR_RAW_COST,P_ETC_EQP_RAW_COST
2084                 )
2085         SELECT       /*+ LEADING(head) use_hash(fact) */              -- Modified hints for bug 13897252
2086                       fact.PROJECT_ID,
2087                       l_wking_struct_ver_id  STRUCT_VERSION_ID,
2088                       fact.PROJECT_ELEMENT_ID  PROJECT_ELEMENT_ID,
2089                       'A',
2090                       null  PERIOD_NAME,
2091                       l_plan_ver_id  PLAN_VERSION_ID,
2092                       0  QUANTITY,
2093                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_RAW_COST,
2094                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BRDN_COST,
2095                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*TXN_MASK else 0 end)   TXN_REVENUE,
2096                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)  TXN_LABOR_RAW_COST,
2097                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LABOR_BRDN_COST,
2098                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)   TXN_EQUIP_RAW_COST,
2099                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)   TXN_EQUIP_BRDN_COST,
2100 
2101                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)    TXN_BASE_RAW_COST,
2102                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BASE_BRDN_COST,
2103                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_BASE_LABOR_RAW_COST,
2104                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)    TXN_BASE_LABOR_BRDN_COST,
2105                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_RAW_COST,
2106                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_BRDN_COST,
2107 
2108                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_LPB_RAW_COST,
2109                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_LPB_BRDN_COST,
2110                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_RAW_COST,
2111                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_BRDN_COST,
2112                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end) TXN_LPB_EQUIP_RAW_COST,
2113                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_LPB_EQUIP_BRDN_COST,
2114 
2115                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_RAW_COST,
2116                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)  PRJ_BRDN_COST,
2117                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*PRJ_MASK else 0 end)  PRJ_REVENUE,
2118                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LABOR_RAW_COST,
2119                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_LABOR_BRDN_COST,
2120                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_RAW_COST,
2121                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_BRDN_COST,
2122 
2123                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_RAW_COST,
2124                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_BRDN_COST,
2125                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_RAW_COST,
2126                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_BRDN_COST,
2127                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_RAW_COST,
2128                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_BRDN_COST,
2129 
2130                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_RAW_COST,
2131                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_LPB_BRDN_COST,
2132                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_LABOR_RAW_COST,
2133                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)  PRJ_LPB_LABOR_BRDN_COST,
2134                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_RAW_COST,
2135                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_BRDN_COST,
2136 
2137                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)  POU_RAW_COST,
2138                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)  POU_BRDN_COST,
2139                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*POU_MASK else 0 end)  POU_REVENUE,
2140                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LABOR_RAW_COST,
2141                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LABOR_BRDN_COST,
2142                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end)   POU_EQUIP_RAW_COST,
2143                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end)   POU_EQUIP_BRDN_COST,
2144 
2145                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_BASE_RAW_COST,
2146                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_BASE_BRDN_COST,
2147                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)   POU_BASE_LABOR_RAW_COST,
2148                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_BASE_LABOR_BRDN_COST,
2149                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_BASE_EQUIP_RAW_COST,
2150                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_BASE_EQUIP_BRDN_COST,
2151 
2152                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_LPB_RAW_COST,
2153                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_LPB_BRDN_COST,
2154                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LPB_LABOR_RAW_COST,
2155                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LPB_LABOR_BRDN_COST,
2156                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_LPB_EQUIP_RAW_COST,
2157                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_LPB_EQUIP_BRDN_COST,
2158 
2159                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.LABOR_HRS else 0 end)   LABOR_HOURS,
2160                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.EQUIPMENT_HOURS else 0 end)   EQUIPMENT_HOURS,
2161                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.LABOR_HRS else 0 end)   BASE_LABOR_HOURS,
2162                       sum(case when fact.plan_version_id  = l_base_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)  BASE_EQUIP_HOURS,
2163                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.LABOR_HRS else 0 end)   LPB_LABOR_HOURS,
2164                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)   LPB_EQUIP_HOURS,
2165 
2166                       sum( case when  fact.time_id <= l_end_period_id
2167                            then
2168                            decode(fact.plan_version_id, l_plan_ver_id, fact.ACT_LABOR_HRS, 0)
2169                            else
2170                            NULL
2171                            end
2172                          ) ACT_LABOR_HRS,
2173                       sum( case when  fact.time_id <= l_end_period_id
2174                            then
2175                            decode(fact.plan_version_id, l_plan_ver_id, fact.ACT_EQUIP_HRS, 0)
2176                            else
2177                            NULL
2178                            end
2179                          ) ACT_EQUIP_HRS,
2180                       sum( case when  fact.time_id <= l_end_period_id
2181                            then
2182                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_labor_brdn_cost, 0 )
2183                            else
2184                            NULL
2185                            end
2186                          ) ACT_TXN_LABOR_BRDN_COST,
2187                       sum( case when  fact.time_id <= l_end_period_id
2188                            then
2189                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_equip_brdn_cost, 0 )
2190                            else
2191                            NULL
2192                            end
2193                          ) ACT_TXN_EQUIP_BRDN_COST,
2194                       sum( case when  fact.time_id <= l_end_period_id
2195                            then
2196                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_raw_cost, 0 )
2197                            else
2198                            NULL
2199                            end
2200                          ) ACT_TXN_RAW_COST,
2201                       sum( case when  fact.time_id <= l_end_period_id
2202                            then
2203                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_brdn_cost, 0 )
2204                            else
2205                            NULL
2206                            end
2207                          ) ACT_TXN_BRDN_COST,
2208                       sum( case when  fact.time_id <= l_end_period_id
2209                            then
2210                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_labor_brdn_cost, 0)
2211                            else
2212                            NULL
2213                            end
2214                          ) ACT_PRJ_LABOR_BRDN_COST,
2215                       sum( case when  fact.time_id <= l_end_period_id
2216                            then
2217                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_equip_brdn_cost, 0)
2218                            else
2219                            NULL
2220                            end
2221                          ) ACT_PRJ_EQUIP_BRDN_COST,
2222                       sum( case when  fact.time_id <= l_end_period_id
2223                            then
2224                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_raw_cost, 0 )
2225                            else
2226                            NULL
2227                            end
2228                          ) ACT_PRJ_RAW_COST,
2229                       sum( case when  fact.time_id <= l_end_period_id
2230                            then
2231                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_brdn_cost, 0 )
2232                            else
2233                            NULL
2234                            end
2235                          ) ACT_PRJ_BRDN_COST,
2236                       sum( case when  fact.time_id <= l_end_period_id
2237                            then
2238                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_labor_brdn_cost, 0 )
2239                            else
2240                            NULL
2241                            end
2242                          ) ACT_POU_LABOR_BRDN_COST,
2243                       sum( case when  fact.time_id <= l_end_period_id
2244                            then
2245                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_equip_brdn_cost, 0 )
2246                            else
2247                            NULL
2248                            end
2249                          ) ACT_POU_EQUIP_BRDN_COST,
2250                       sum( case when  fact.time_id <= l_end_period_id
2251                            then
2252                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_raw_cost, 0 )
2253                            else
2254                            NULL
2255                            end
2256                          ) ACT_POU_RAW_COST,
2257                       sum( case when  fact.time_id <= l_end_period_id
2258                            then
2259                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_brdn_cost, 0 )
2260                            else
2261                            NULL
2262                            end
2263                          ) ACT_POU_BRDN_COST,
2264 
2265                       sum(case when fact.plan_version_id      = l_plan_ver_id then fact.ETC_LABOR_HRS else 0 end)  ETC_LABOR_HRS,
2266                       sum(case when fact.plan_version_id      = l_plan_ver_id then fact.ETC_EQUIP_HRS else 0 end)  ETC_EQUIP_HRS,
2267                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_BRDN_COST,
2268                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_BRDN_COST,
2269                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*TXN_MASK else 0 end)   ETC_TXN_RAW_COST,
2270                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*TXN_MASK else 0 end)   ETC_TXN_BRDN_COST,
2271                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_BRDN_COST,
2272                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_BRDN_COST,
2273                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*PRJ_MASK else 0 end)   ETC_PRJ_RAW_COST,
2274                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*PRJ_MASK else 0 end)   ETC_PRJ_BRDN_COST,
2275                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*POU_MASK else 0 end)  ETC_POU_LABOR_BRDN_COST,
2276                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_BRDN_COST,
2277                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*POU_MASK else 0 end)   ETC_POU_RAW_COST,
2278                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*POU_MASK else 0 end)   ETC_POU_BRDN_COST,
2279                       sum( case when  fact.time_id <= l_end_period_id
2280                            then
2281                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK*fact.act_labor_raw_cost,0)
2282                            else
2283                            NULL
2284                            end
2285                          ) ACT_TXN_LABOR_RAW_COST,
2286                       sum( case when  fact.time_id <= l_end_period_id
2287                            then
2288                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK* fact.act_labor_raw_cost,0)
2289                            else
2290                            NULL
2291                            end
2292                          ) ACT_PRJ_LABOR_RAW_COST,
2293                       sum( case when  fact.time_id <= l_end_period_id
2294                            then
2295                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK* fact.act_labor_raw_cost,0)
2296                            else
2297                            NULL
2298                            end
2299                          ) ACT_POU_LABOR_RAW_COST,
2300                       sum( case when  fact.time_id <= l_end_period_id
2301                            then
2302                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK*fact.act_equip_raw_cost,0)
2303                            else
2304                            NULL
2305                            end
2306                          ) ACT_TXN_EQUIP_RAW_COST,
2307                       sum( case when  fact.time_id <= l_end_period_id
2308                            then
2309                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK* fact.act_equip_raw_cost,0)
2310                            else
2311                            NULL
2312                            end
2313                          ) ACT_PRJ_EQUIP_RAW_COST,
2314                       sum( case when  fact.time_id <= l_end_period_id
2315                            then
2316                            decode(fact.plan_version_id, l_plan_ver_id, POU_MASK* fact.act_equip_raw_cost,0)
2317                            else
2318                            NULL
2319                            end
2320                          ) ACT_POU_EQUIP_RAW_COST,
2321 
2322                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_RAW_COST,
2323                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_RAW_COST,
2324                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*POU_MASK else 0 end)  ETC_POU_LABOR_RAW_COST,
2325                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_RAW_COST,
2326                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_RAW_COST,
2327                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_RAW_COST,
2328                         /* Retrival of Project Level Data Starts*/
2329                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_RAW_COST,
2330                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BRDN_COST,
2331                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.revenue*PRJ_MASK*ROLLUP_MASK else 0 end)  P_REVENUE,
2332                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LBR_RAW_COST,
2333                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_LBR_BRDN_COST,
2334                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_EQP_RAW_COST,
2335                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_EQP_BRDN_COST,
2336                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_RAW_COST,
2337                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_BRDN_COST,
2338                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_RAW_COST,
2339                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_BRDN_COST,
2340                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_RAW_COST,
2341                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_BRDN_COST,
2342                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_RAW_COST,
2343                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_BRDN_COST,
2344                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_RAW_COST,
2345                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_BRDN_COST,
2346                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_RAW_COST,
2347                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_BRDN_COST,
2348                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LBR_HOURS,
2349                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_EQP_HOURS,
2350                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_BASE_LBR_HOURS,
2351                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_BASE_EQP_HOURS,
2352                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LPB_LBR_HOURS,
2353                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_LPB_EQP_HOURS,
2354 
2355 
2356                       sum( case when  fact.time_id <= l_end_period_id
2357                            then
2358                            decode(fact.plan_version_id, l_plan_ver_id, ROLLUP_MASK*fact.ACT_LABOR_HRS, 0)
2359                            else
2360                            NULL
2361                            end
2362                          ) P_ACT_LBR_HOURS,
2363                       sum( case when  fact.time_id <= l_end_period_id
2364                            then
2365                            decode(fact.plan_version_id, l_plan_ver_id, ROLLUP_MASK*fact.ACT_EQUIP_HRS, 0)
2366                            else
2367                            NULL
2368                            end
2369                          ) P_ACT_EQP_HOURS,
2370                       sum( case when  fact.time_id <= l_end_period_id
2371                            then
2372                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_labor_brdn_cost, 0)
2373                            else
2374                            NULL
2375                            end
2376                          ) P_ACT_LBR_BRDN_COST,
2377                       sum( case when  fact.time_id <= l_end_period_id
2378                            then
2379                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_equip_brdn_cost, 0)
2380                            else
2381                            NULL
2382                            end
2383                          ) P_ACT_EQP_BRDN_COST,
2384                       sum( case when  fact.time_id <= l_end_period_id
2385                            then
2386                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_raw_cost, 0 )
2387                            else
2388                            NULL
2389                            end
2390                          ) P_ACT_RAW_COST,
2391                       sum( case when  fact.time_id <= l_end_period_id
2392                            then
2393                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_brdn_cost, 0 )
2394                            else
2395                            NULL
2396                            end
2397                          ) P_ACT_BRDN_COST,
2398                       sum( case when  fact.time_id <= l_end_period_id
2399                            then
2400                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_labor_raw_cost,0)
2401                            else
2402                            NULL
2403                            end
2404                          ) P_ACT_LBR_RAW_COST,
2405                       sum( case when  fact.time_id <= l_end_period_id
2406                            then
2407                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_equip_raw_cost,0)
2408                            else
2409                            NULL
2410                            end
2411                          ) P_ACT_EQP_RAW_COST,
2412 
2413                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.ETC_EQUIP_HRS*ROLLUP_MASK else 0 end) P_ETC_EQP_HOURS,
2414                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.ETC_LABOR_HRS*ROLLUP_MASK else 0 end) P_ETC_LBR_HOURS,
2415                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_RAW_COST,
2416                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_BRDN_COST,
2417                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_BRDN_COST,
2418                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_equip_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_BRDN_COST,
2419                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_RAW_COST,
2420                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_equip_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_RAW_COST
2421                       /* Retrival of Project Level Data Ends*/
2422         FROM
2423         (
2424                         SELECT
2425                                  PROJECT_ID                ,
2426                                  PROJECT_ORG_ID            ,
2427                                  PROJECT_ORGANIZATION_ID   ,
2428                                  PROJECT_ELEMENT_ID        ,
2429                                  TIME_ID                   ,
2430                                  PERIOD_TYPE_ID            ,
2431                                  CALENDAR_TYPE             ,
2432                                  RBS_AGGR_LEVEL            ,
2433                                  WBS_ROLLUP_FLAG           ,
2434                                  PRG_ROLLUP_FLAG           ,
2435                                  decode ( cc_src.curr_type, 'TXN', 16, 'PRJ', 8, 'POU', 4) CURR_RECORD_TYPE_ID       ,
2436                                  CURRENCY_CODE             ,
2437                                  RBS_ELEMENT_ID            ,
2438                                  RBS_VERSION_ID            ,
2439                                  PLAN_VERSION_ID           ,
2440                                  -- PLAN_TYPE_ID              ,
2441                                  RAW_COST                  ,
2442                                  BRDN_COST                 ,
2443                                  REVENUE                   ,
2444                                  BILL_RAW_COST             ,
2445                                  BILL_BRDN_COST            ,
2446                                  BILL_LABOR_RAW_COST       ,
2447                                  BILL_LABOR_BRDN_COST      ,
2448                                  decode ( cc_src.curr_type, 'PRJ', BILL_LABOR_HRS, 0) BILL_LABOR_HRS      ,
2449                                  EQUIPMENT_RAW_COST        ,
2450                                  EQUIPMENT_BRDN_COST       ,
2451                                  CAPITALIZABLE_RAW_COST    ,
2452                                  CAPITALIZABLE_BRDN_COST   ,
2453                                  LABOR_RAW_COST            ,
2454                                  LABOR_BRDN_COST           ,
2455                                  decode ( cc_src.curr_type, 'PRJ', LABOR_HRS, 0) LABOR_HRS      ,
2456                                  LABOR_REVENUE             ,
2457                                  decode ( cc_src.curr_type, 'PRJ', EQUIPMENT_HOURS, 0) EQUIPMENT_HOURS      ,
2458                                  decode ( cc_src.curr_type, 'PRJ', BILLABLE_EQUIPMENT_HOURS, 0) BILLABLE_EQUIPMENT_HOURS      ,
2459                                  SUP_INV_COMMITTED_COST    ,
2460                                  PO_COMMITTED_COST         ,
2461                                  PR_COMMITTED_COST         ,
2462                                  OTH_COMMITTED_COST        ,
2463                                  CUSTOM1                   ,
2464                                  CUSTOM2                   ,
2465                                  CUSTOM3                   ,
2466                                  CUSTOM4                   ,
2467                                  CUSTOM5                   ,
2468                                  CUSTOM6                   ,
2469                                  CUSTOM7                   ,
2470                                  CUSTOM8                   ,
2471                                  CUSTOM9                   ,
2472                                  CUSTOM10                  ,
2473                                  CUSTOM11                  ,
2474                                  CUSTOM12                  ,
2475                                  CUSTOM13                  ,
2476                                  CUSTOM14                  ,
2477                                  CUSTOM15                  ,
2478                                  decode ( cc_src.curr_type, 'PRJ', ACT_LABOR_HRS, 0) ACT_LABOR_HRS      ,
2479                                  decode ( cc_src.curr_type, 'PRJ', ACT_EQUIP_HRS, 0) ACT_EQUIP_HRS      ,
2480                                  ACT_LABOR_BRDN_COST       ,
2481                                  ACT_EQUIP_BRDN_COST       ,
2482                                  ACT_BRDN_COST             ,
2483                                  decode ( cc_src.curr_type, 'PRJ', ETC_LABOR_HRS, 0) ETC_LABOR_HRS      ,
2484                                  decode ( cc_src.curr_type, 'PRJ', ETC_EQUIP_HRS, 0) ETC_EQUIP_HRS      ,
2485                                  ETC_LABOR_BRDN_COST       ,
2486                                  ETC_EQUIP_BRDN_COST       ,
2487                                  ETC_BRDN_COST             ,
2488                                  ACT_RAW_COST              ,
2489                                  ACT_REVENUE               ,
2490                                  ETC_RAW_COST              ,
2491                                  ACT_LABOR_RAW_COST        ,
2492                                  ACT_EQUIP_RAW_COST        ,
2493                                  ETC_LABOR_RAW_COST        ,
2494                                  ETC_EQUIP_RAW_COST        ,
2495                                 decode(fact.prg_rollup_flag,'N',1,0)  ROLLUP_MASK,
2496                                 decode ( cc_src.curr_type, 'TXN',1,0)  TXN_MASK,
2497                                 decode ( cc_src.curr_type, 'PRJ',1,0)  PRJ_MASK,
2498                                 decode ( cc_src.curr_type, 'POU',1,0)  POU_MASK
2499                         from
2500                                 pji_fp_xbs_accum_f fact,
2501                                 /*  (
2502                                             SELECT 'TXN' curr_type FROM DUAL
2503                                             UNION ALL
2504                                             SELECT 'PRJ' curr_type FROM DUAL
2505                                             UNION ALL
2506                                             SELECT 'POU' curr_type FROM DUAL
2507                                   ) cc_src commented for bug 14040849 */
2508                                 ( SELECT  DECODE( ROWNUM, 1, 'TXN',2, 'PRJ', 3,'POU') CURR_TYPE
2509                                   FROM DUAL     CONNECT BY ROWNUM < 4   ) cc_src
2510                         where 1=1
2511                          and ( decode ( cc_src.curr_type, 'TXN', DECODE(BITAND(fact.curr_record_type_id, 16), 16, 'a'), 'b') = 'a'
2512                             or decode ( cc_src.curr_type, 'PRJ', DECODE(BITAND(fact.curr_record_type_id,  8),  8, 'a'), 'b') = 'a'
2513                             or decode ( cc_src.curr_type, 'POU', DECODE(BITAND(fact.curr_record_type_id,  4),  4, 'a'), 'b') = 'a' )
2514                        ) fact,
2515                          pji_plan_extr_tmp head
2516                         WHERE    1=1
2517                                 and fact.PROJECT_ID   = head.PROJECT_ID
2518                                 and fact.PLAN_VERSION_ID in (l_plan_ver_id,l_lpb_plan_ver_id,l_base_plan_ver_id)
2519                                 and fact.PROJECT_ELEMENT_ID = head.plan_ver_id -- plan_version_id contains the project_element_id
2520                                 and fact.CALENDAR_TYPE = l_cal_type
2521                                 and fact.PERIOD_TYPE_ID = l_prd_type_id
2522                                 and BITAND(fact.CURR_RECORD_TYPE_ID,28) <= 28
2523                                 and BITAND(fact.CURR_RECORD_TYPE_ID,28) >= 4
2524                                 and fact.RBS_AGGR_LEVEL = 'T'
2525                                 and fact.prg_rollup_flag ='N'
2526                                 and fact.rbs_version_id = -1 /* Bug 6930211 */
2527                       GROUP BY
2528                               fact.PROJECT_ID,
2529                               fact.PROJECT_ELEMENT_ID,
2530                               fact.CALENDAR_TYPE;
2531 
2532 
2533 -- OLAP START
2534 
2535 else
2536 
2537 
2538 null;
2539 
2540  INSERT INTO pji_fm_xbs_accum_tmp1 (
2541                 PROJECT_ID,  STRUCT_VERSION_ID,       PROJECT_ELEMENT_ID,      CALENDAR_TYPE,
2542                 PERIOD_NAME,      PLAN_VERSION_ID,        QUANTITY,         TXN_RAW_COST,
2543                 TXN_BRDN_COST,        TXN_REVENUE,         TXN_LABOR_RAW_COST,      TXN_LABOR_BRDN_COST,
2544                 TXN_EQUIP_RAW_COST,      TXN_EQUIP_BRDN_COST,     TXN_BASE_RAW_COST,       TXN_BASE_BRDN_COST,
2545                 TXN_BASE_LABOR_RAW_COST, TXN_BASE_LABOR_BRDN_COST,TXN_BASE_EQUIP_RAW_COST, TXN_BASE_EQUIP_BRDN_COST,
2546                 TXN_LPB_RAW_COST,        TXN_LPB_BRDN_COST,       TXN_LPB_LABOR_RAW_COST,  TXN_LPB_LABOR_BRDN_COST,
2547                 TXN_LPB_EQUIP_RAW_COST,  TXN_LPB_EQUIP_BRDN_COST, PRJ_RAW_COST,          PRJ_BRDN_COST,
2548                 PRJ_REVENUE,        PRJ_LABOR_RAW_COST,      PRJ_LABOR_BRDN_COST,     PRJ_EQUIP_RAW_COST,
2549                 PRJ_EQUIP_BRDN_COST,  PRJ_BASE_RAW_COST,       PRJ_BASE_BRDN_COST,      PRJ_BASE_LABOR_RAW_COST,
2550                 PRJ_BASE_LABOR_BRDN_COST,PRJ_BASE_EQUIP_RAW_COST, PRJ_BASE_EQUIP_BRDN_COST,PRJ_LPB_RAW_COST,
2551                 PRJ_LPB_BRDN_COST,       PRJ_LPB_LABOR_RAW_COST,  PRJ_LPB_LABOR_BRDN_COST, PRJ_LPB_EQUIP_RAW_COST,
2552                 PRJ_LPB_EQUIP_BRDN_COST, POU_RAW_COST,          POU_BRDN_COST,           POU_REVENUE,
2553                 POU_LABOR_RAW_COST,      POU_LABOR_BRDN_COST,     POU_EQUIP_RAW_COST,      POU_EQUIP_BRDN_COST,
2554                 POU_BASE_RAW_COST,       POU_BASE_BRDN_COST,      POU_BASE_LABOR_RAW_COST, POU_BASE_LABOR_BRDN_COST,
2555                 POU_BASE_EQUIP_RAW_COST, POU_BASE_EQUIP_BRDN_COST,POU_LPB_RAW_COST,        POU_LPB_BRDN_COST,
2556                 POU_LPB_LABOR_RAW_COST,  POU_LPB_LABOR_BRDN_COST, POU_LPB_EQUIP_RAW_COST,  POU_LPB_EQUIP_BRDN_COST,
2557                 LABOR_HOURS,          EQUIPMENT_HOURS,         BASE_LABOR_HOURS,        BASE_EQUIP_HOURS,
2558                 LPB_LABOR_HOURS,         LPB_EQUIP_HOURS,   ACT_LABOR_HRS,     ACT_EQUIP_HRS,
2559                 ACT_TXN_LABOR_BRDN_COST, ACT_TXN_EQUIP_BRDN_COST, ACT_TXN_RAW_COST,     ACT_TXN_BRDN_COST,
2560                 ACT_PRJ_LABOR_BRDN_COST, ACT_PRJ_EQUIP_BRDN_COST, ACT_PRJ_RAW_COST,     ACT_PRJ_BRDN_COST,
2561                 ACT_POU_LABOR_BRDN_COST, ACT_POU_EQUIP_BRDN_COST, ACT_POU_RAW_COST,     ACT_POU_BRDN_COST,
2562                 ETC_LABOR_HRS,           ETC_EQUIP_HRS,    ETC_TXN_LABOR_BRDN_COST, ETC_TXN_EQUIP_BRDN_COST,
2563                 ETC_TXN_RAW_COST,   ETC_TXN_BRDN_COST,    ETC_PRJ_LABOR_BRDN_COST, ETC_PRJ_EQUIP_BRDN_COST,
2564                 ETC_PRJ_RAW_COST,        ETC_PRJ_BRDN_COST,    ETC_POU_LABOR_BRDN_COST, ETC_POU_EQUIP_BRDN_COST,
2565                 ETC_POU_RAW_COST,        ETC_POU_BRDN_COST,     ACT_TXN_LABOR_RAW_COST , ACT_PRJ_LABOR_RAW_COST,
2566                 ACT_POU_LABOR_RAW_COST,  ACT_TXN_EQUIP_RAW_COST,  ACT_PRJ_EQUIP_RAW_COST,  ACT_POU_EQUIP_RAW_COST,
2567                 ETC_TXN_LABOR_RAW_COST,  ETC_PRJ_LABOR_RAW_COST,  ETC_POU_LABOR_RAW_COST,  ETC_TXN_EQUIP_RAW_COST,
2568                 ETC_PRJ_EQUIP_RAW_COST,  ETC_POU_EQUIP_RAW_COST,  P_RAW_COST,P_BRDN_COST,  P_REVENUE,
2569                 P_LBR_RAW_COST,  P_LBR_BRDN_COST,   P_EQP_RAW_COST,    P_EQP_BRDN_COST,
2570                 P_BASE_RAW_COST,  P_BASE_BRDN_COST,   P_BASE_LBR_RAW_COST,    P_BASE_LBR_BRDN_COST,
2571                 P_BASE_EQP_RAW_COST,  P_BASE_EQP_BRDN_COST,   P_LPB_RAW_COST,    P_LPB_BRDN_COST,
2572                 P_LPB_LBR_RAW_COST,  P_LPB_LBR_BRDN_COST,   P_LPB_EQP_RAW_COST,    P_LPB_EQP_BRDN_COST,
2573                 P_LBR_HOURS,  P_EQP_HOURS,   P_BASE_LBR_HOURS,    P_BASE_EQP_HOURS,
2574                 P_LPB_LBR_HOURS,  P_LPB_EQP_HOURS,   P_ACT_LBR_HOURS,    P_ACT_EQP_HOURS,
2575                 P_ACT_LBR_BRDN_COST,  P_ACT_EQP_BRDN_COST,   P_ACT_RAW_COST,     P_ACT_BRDN_COST,
2576                 P_ACT_LBR_RAW_COST,  P_ACT_EQP_RAW_COST,   P_ETC_EQP_HOURS,         P_ETC_LBR_HOURS,
2577                 P_ETC_RAW_COST,  P_ETC_BRDN_COST,   P_ETC_LBR_BRDN_COST,     P_ETC_EQP_BRDN_COST,
2578                 P_ETC_LBR_RAW_COST,P_ETC_EQP_RAW_COST
2579                 )
2580         SELECT       /*+ LEADING(head) use_hash(fact) */              -- Modified hints for bug 13897252
2581                       fact.PROJECT_ID,
2582                       l_wking_struct_ver_id  STRUCT_VERSION_ID,
2583                       fact.PROJECT_ELEMENT_ID  PROJECT_ELEMENT_ID,
2584                       'A',
2585                       null  PERIOD_NAME,
2586                       l_plan_ver_id  PLAN_VERSION_ID,
2587                       0  QUANTITY,
2588                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_RAW_COST,
2589                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BRDN_COST,
2590                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*TXN_MASK else 0 end)   TXN_REVENUE,
2591                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)  TXN_LABOR_RAW_COST,
2592                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LABOR_BRDN_COST,
2593                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)   TXN_EQUIP_RAW_COST,
2594                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)   TXN_EQUIP_BRDN_COST,
2595                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)    TXN_BASE_RAW_COST,
2596                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BASE_BRDN_COST,
2597                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_BASE_LABOR_RAW_COST,
2598                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)    TXN_BASE_LABOR_BRDN_COST,
2599                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_RAW_COST,
2600                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_BRDN_COST,
2601                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_LPB_RAW_COST,
2602                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_LPB_BRDN_COST,
2603                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_RAW_COST,
2604                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_BRDN_COST,
2605                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end) TXN_LPB_EQUIP_RAW_COST,
2606                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_LPB_EQUIP_BRDN_COST,
2607                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_RAW_COST,
2608                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)  PRJ_BRDN_COST,
2609                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*PRJ_MASK else 0 end)  PRJ_REVENUE,
2610                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LABOR_RAW_COST,
2611                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_LABOR_BRDN_COST,
2612                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_RAW_COST,
2613                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_BRDN_COST,
2614                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_RAW_COST,
2615                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_BRDN_COST,
2616                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_RAW_COST,
2617                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_BRDN_COST,
2618                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_RAW_COST,
2619                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_BRDN_COST,
2620                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_RAW_COST,
2621                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_LPB_BRDN_COST,
2622                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_LABOR_RAW_COST,
2623                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)  PRJ_LPB_LABOR_BRDN_COST,
2624                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_RAW_COST,
2625                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_BRDN_COST,
2626                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)  POU_RAW_COST,
2627                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)  POU_BRDN_COST,
2628                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.revenue*POU_MASK else 0 end)  POU_REVENUE,
2629                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LABOR_RAW_COST,
2630                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LABOR_BRDN_COST,
2631                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end)   POU_EQUIP_RAW_COST,
2632                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end)   POU_EQUIP_BRDN_COST,
2633                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_BASE_RAW_COST,
2634                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_BASE_BRDN_COST,
2635                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)   POU_BASE_LABOR_RAW_COST,
2636                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_BASE_LABOR_BRDN_COST,
2637                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_BASE_EQUIP_RAW_COST,
2638                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_BASE_EQUIP_BRDN_COST,
2639                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_LPB_RAW_COST,
2640                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_LPB_BRDN_COST,
2641                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LPB_LABOR_RAW_COST,
2642                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LPB_LABOR_BRDN_COST,
2643                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_LPB_EQUIP_RAW_COST,
2644                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_LPB_EQUIP_BRDN_COST,
2645                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.LABOR_HRS else 0 end)   LABOR_HOURS,
2646                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.EQUIPMENT_HOURS else 0 end)   EQUIPMENT_HOURS,
2647                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.LABOR_HRS else 0 end)   BASE_LABOR_HOURS,
2648                       sum(case when fact.plan_version_id  = l_base_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)  BASE_EQUIP_HOURS,
2649                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id then fact.LABOR_HRS else 0 end)   LPB_LABOR_HOURS,
2650                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)   LPB_EQUIP_HOURS,
2651                       sum( decode(fact.plan_version_id, l_plan_ver_id, fact.ACT_LABOR_HRS, 0)) ACT_LABOR_HRS,
2652                       sum( decode(fact.plan_version_id, l_plan_ver_id, fact.ACT_EQUIP_HRS, 0)) ACT_EQUIP_HRS,
2653                       sum(
2654                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_labor_brdn_cost, 0 )
2655                          ) ACT_TXN_LABOR_BRDN_COST,
2656                       sum(
2657                            decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_equip_brdn_cost, 0 )
2658                          ) ACT_TXN_EQUIP_BRDN_COST,
2659                       sum(  decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_raw_cost, 0 )
2660                          ) ACT_TXN_RAW_COST,
2661                       sum(  decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK* fact.act_brdn_cost, 0 )
2662                              ) ACT_TXN_BRDN_COST,
2663                       sum( decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_labor_brdn_cost, 0)
2664                            ) ACT_PRJ_LABOR_BRDN_COST,
2665                       sum( decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_equip_brdn_cost, 0)
2666                              ) ACT_PRJ_EQUIP_BRDN_COST,
2667                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_raw_cost, 0 )
2668                             ) ACT_PRJ_RAW_COST,
2669                       sum( decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*  fact.act_brdn_cost, 0 )
2670                             ) ACT_PRJ_BRDN_COST,
2671                       sum( decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_labor_brdn_cost, 0 )
2672                            ) ACT_POU_LABOR_BRDN_COST,
2673                       sum( decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_equip_brdn_cost, 0 )
2674                             ) ACT_POU_EQUIP_BRDN_COST,
2675                       sum(  decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_raw_cost, 0 )
2676                            ) ACT_POU_RAW_COST,
2677                       sum(  decode(fact.plan_version_id, l_plan_ver_id, POU_MASK*  fact.act_brdn_cost, 0 )
2678                            ) ACT_POU_BRDN_COST,
2679                       sum(case when fact.plan_version_id      = l_plan_ver_id then fact.ETC_LABOR_HRS else 0 end)  ETC_LABOR_HRS,
2680                       sum(case when fact.plan_version_id      = l_plan_ver_id then fact.ETC_EQUIP_HRS else 0 end)  ETC_EQUIP_HRS,
2681                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_BRDN_COST,
2682                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_BRDN_COST,
2683                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*TXN_MASK else 0 end)   ETC_TXN_RAW_COST,
2684                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*TXN_MASK else 0 end)   ETC_TXN_BRDN_COST,
2685                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_BRDN_COST,
2686                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_BRDN_COST,
2687                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*PRJ_MASK else 0 end)   ETC_PRJ_RAW_COST,
2688                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*PRJ_MASK else 0 end)   ETC_PRJ_BRDN_COST,
2689                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_brdn_cost*POU_MASK else 0 end)  ETC_POU_LABOR_BRDN_COST,
2690                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_brdn_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_BRDN_COST,
2691                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_raw_cost*POU_MASK else 0 end)   ETC_POU_RAW_COST,
2692                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_brdn_cost*POU_MASK else 0 end)   ETC_POU_BRDN_COST,
2693                       sum(  decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK*fact.act_labor_raw_cost,0)   ) ACT_TXN_LABOR_RAW_COST,
2694                       sum(
2695                            decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK* fact.act_labor_raw_cost,0)
2696                            ) ACT_PRJ_LABOR_RAW_COST,
2697                       sum( decode(fact.plan_version_id, l_plan_ver_id, POU_MASK* fact.act_labor_raw_cost,0)
2698                            ) ACT_POU_LABOR_RAW_COST,
2699                       sum(  decode(fact.plan_version_id, l_plan_ver_id, TXN_MASK*fact.act_equip_raw_cost,0)
2700                             ) ACT_TXN_EQUIP_RAW_COST,
2701                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK* fact.act_equip_raw_cost,0)
2702                            ) ACT_PRJ_EQUIP_RAW_COST,
2703                       sum(  decode(fact.plan_version_id, l_plan_ver_id, POU_MASK* fact.act_equip_raw_cost,0)
2704                            ) ACT_POU_EQUIP_RAW_COST,
2705                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_RAW_COST,
2706                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_RAW_COST,
2707                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_labor_raw_cost*POU_MASK else 0 end)  ETC_POU_LABOR_RAW_COST,
2708                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_RAW_COST,
2709                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_RAW_COST,
2710                       sum(case when fact.plan_version_id  = l_plan_ver_id then fact.ETC_equip_raw_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_RAW_COST,
2711                         /* Retrival of Project Level Data Starts*/
2712                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_RAW_COST,
2713                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BRDN_COST,
2714                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.revenue*PRJ_MASK*ROLLUP_MASK else 0 end)  P_REVENUE,
2715                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LBR_RAW_COST,
2716                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_LBR_BRDN_COST,
2717                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_EQP_RAW_COST,
2718                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_EQP_BRDN_COST,
2719                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_RAW_COST,
2720                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_BRDN_COST,
2721                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_RAW_COST,
2722                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_BRDN_COST,
2723                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_RAW_COST,
2724                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_BRDN_COST,
2725                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_RAW_COST,
2726                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_BRDN_COST,
2727                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_RAW_COST,
2728                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_BRDN_COST,
2729                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_RAW_COST,
2730                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_BRDN_COST,
2731                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LBR_HOURS,
2732                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_EQP_HOURS,
2733                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_BASE_LBR_HOURS,
2734                       sum(case when fact.plan_version_id  = l_base_plan_ver_id then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_BASE_EQP_HOURS,
2735                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LPB_LBR_HOURS,
2736                       sum(case when fact.plan_version_id  = l_lpb_plan_ver_id  then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_LPB_EQP_HOURS,
2737                       sum(  decode(fact.plan_version_id, l_plan_ver_id, ROLLUP_MASK*fact.ACT_LABOR_HRS, 0)
2738                            ) P_ACT_LBR_HOURS,
2739                       sum(  decode(fact.plan_version_id, l_plan_ver_id, ROLLUP_MASK*fact.ACT_EQUIP_HRS, 0)
2740                             ) P_ACT_EQP_HOURS,
2741                       sum( decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_labor_brdn_cost, 0)
2742                            ) P_ACT_LBR_BRDN_COST,
2743                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_equip_brdn_cost, 0)
2744                           ) P_ACT_EQP_BRDN_COST,
2745                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_raw_cost, 0 )
2746                            ) P_ACT_RAW_COST,
2747                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK*  fact.act_brdn_cost, 0 )
2748                             ) P_ACT_BRDN_COST,
2749                       sum( decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_labor_raw_cost,0)
2750                            ) P_ACT_LBR_RAW_COST,
2751                       sum(  decode(fact.plan_version_id, l_plan_ver_id, PRJ_MASK*ROLLUP_MASK* fact.act_equip_raw_cost,0)
2752                             ) P_ACT_EQP_RAW_COST,
2753                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.ETC_EQUIP_HRS*ROLLUP_MASK else 0 end) P_ETC_EQP_HOURS,
2754                       sum(case when fact.plan_version_id  = l_plan_ver_id      then fact.ETC_LABOR_HRS*ROLLUP_MASK else 0 end) P_ETC_LBR_HOURS,
2755                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_RAW_COST,
2756                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_BRDN_COST,
2757                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_BRDN_COST,
2758                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_equip_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_BRDN_COST,
2759                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_RAW_COST,
2760                       sum(case when fact.plan_version_id  = l_plan_ver_id  then fact.ETC_equip_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_RAW_COST
2761                       /* Retrival of Project Level Data Ends*/
2762         FROM
2763         (
2764                         SELECT
2765                                  p1.PROJECT_ID                ,
2766                                  p1.org_id PROJECT_ORG_ID            ,
2767                                  p1.carrying_out_organization_id PROJECT_ORGANIZATION_ID   ,
2768                                  PROJECT_ELEMENT_ID        ,
2769                       --           null  TIME_ID                   ,
2770                     --             PERIOD_TYPE_ID            ,
2771                    --              CALENDAR_TYPE             ,
2772                     --             RBS_AGGR_LEVEL            ,
2773                                  WBS_ROLLUP_FLAG           ,
2774                                  PRG_ROLLUP_FLAG           ,
2775                                  decode (fact.currency_code, p1.project_currency_code ,8 ,p1.projfunc_currency_code,4, 16) CURR_RECORD_TYPE_ID       ,
2776                                  CURRENCY_CODE             ,
2777                                  -1 RBS_ELEMENT_ID            ,
2778                                  -1 RBS_VERSION_ID            ,
2779                                  PLAN_VERSION_ID           ,
2780                                  -- PLAN_TYPE_ID              ,
2781                                  RAW_COST                  ,
2782                                  BRDN_COST                 ,
2783                                  REVENUE                   ,
2784                                  BILL_RAW_COST             ,
2785                                  BILL_BRDN_COST            ,
2786                                  BILL_LABOR_RAW_COST       ,
2787                                  BILL_LABOR_BRDN_COST      ,
2788                                  decode (p1.project_currency_code , fact.currency_code, BILL_LABOR_HRS, 0) BILL_LABOR_HRS      ,
2789                                  EQUIPMENT_RAW_COST        ,
2790                                  EQUIPMENT_BRDN_COST       ,
2791                                  CAPITALIZABLE_RAW_COST    ,
2792                                  CAPITALIZABLE_BRDN_COST   ,
2793                                  LABOR_RAW_COST            ,
2794                                  LABOR_BRDN_COST           ,
2795                                  decode ( p1.project_currency_code , fact.currency_code, LABOR_HRS, 0) LABOR_HRS      ,
2796                                  LABOR_REVENUE             ,
2797                                  decode ( p1.project_currency_code , fact.currency_code, EQUIPMENT_HOURS, 0) EQUIPMENT_HOURS      ,
2798                                  decode ( p1.project_currency_code , fact.currency_code, BILLABLE_EQUIPMENT_HOURS, 0) BILLABLE_EQUIPMENT_HOURS      ,
2799                                  SUP_INV_COMMITTED_COST    ,
2800                                  PO_COMMITTED_COST         ,
2801                                  PR_COMMITTED_COST         ,
2802                                  OTH_COMMITTED_COST        ,
2803                                  CUSTOM1                   ,
2804                                  CUSTOM2                   ,
2805                                  CUSTOM3                   ,
2806                                  CUSTOM4                   ,
2807                                  CUSTOM5                   ,
2808                                  CUSTOM6                   ,
2809                                  CUSTOM7                   ,
2810                                  CUSTOM8                   ,
2811                                  CUSTOM9                   ,
2812                                  CUSTOM10                  ,
2813                                  CUSTOM11                  ,
2814                                  CUSTOM12                  ,
2815                                  CUSTOM13                  ,
2816                                  CUSTOM14                  ,
2817                                  CUSTOM15                  ,
2818                                  decode ( p1.project_currency_code , fact.currency_code, ACT_LABOR_HRS, 0) ACT_LABOR_HRS      ,
2819                                  decode ( p1.project_currency_code , fact.currency_code, ACT_EQUIP_HRS, 0) ACT_EQUIP_HRS      ,
2820                                  ACT_LABOR_BRDN_COST       ,
2821                                  ACT_EQUIP_BRDN_COST       ,
2822                                  ACT_BRDN_COST             ,
2823                                  decode ( p1.project_currency_code , fact.currency_code, ETC_LABOR_HRS, 0) ETC_LABOR_HRS      ,
2824                                  decode ( p1.project_currency_code , fact.currency_code, ETC_EQUIP_HRS, 0) ETC_EQUIP_HRS      ,
2825                                  ETC_LABOR_BRDN_COST       ,
2826                                  ETC_EQUIP_BRDN_COST       ,
2827                                  ETC_BRDN_COST             ,
2828                                  ACT_RAW_COST              ,
2829                                  ACT_REVENUE               ,
2830                                  ETC_RAW_COST              ,
2831                                  ACT_LABOR_RAW_COST        ,
2832                                  ACT_EQUIP_RAW_COST        ,
2833                                  ETC_LABOR_RAW_COST        ,
2834                                  ETC_EQUIP_RAW_COST        ,
2835                                 decode(fact.prg_rollup_flag,'N',1,0)  ROLLUP_MASK,
2836                                 0  TXN_MASK,
2837                                 decode (p1.project_currency_code , fact.currency_code,1,0)  PRJ_MASK,
2838                                 decode (p1.projfunc_currency_code , fact.currency_code,1,0)  POU_MASK
2839                         from
2840                                 pa_projects_all p1 ,
2841 								pa_ppr_obj_tmp_view  obj1,
2842 								pa_pjt_wbs_fact fact
2843 						where 1 = 1
2844 						       AND p1.project_id = p_project_id
2845 							   AND fact.project_id  = p_project_id
2846                                  and fact.PLAN_VERSION_ID in (l_plan_ver_id,l_lpb_plan_ver_id,l_base_plan_ver_id)
2847                                 and fact.PROJECT_ELEMENT_ID = obj1.object_id
2848                                 and fact.prg_rollup_flag ='N'
2849                        ) fact
2850                       GROUP BY
2851                               fact.PROJECT_ID,
2852                               fact.PROJECT_ELEMENT_ID;
2853 
2854 end if ;
2855 
2856 -- OLAP  END
2857 
2858 
2859 
2860 
2861         IF NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N') = 'Y' THEN
2862               debug_accum ; /* bug#3993830 */
2863         END IF;
2864         DELETE FROM PJI_PLAN_EXTR_TMP;    --- Bug 5653800
2865         x_return_status := l_return_status;
2866 
2867         EXCEPTION
2868                   WHEN OTHERS THEN
2869 
2870                     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
2871                     ( p_package_name   => g_package_name
2872                     , p_procedure_name => 'POPULATE_UPDATEWBS_DATA'
2873                     , x_return_status =>  x_return_status ) ;
2874 
2875                     RAISE;
2876         END;
2877 
2878 
2879 
2880 /*********************************************************
2881    This procedure populates  data in PJI_FM_XBS_ACCUM_TMP1
2882    for workplans.
2883    API supports both work plans and progress actuals
2884    The parameters that the API accepts can have one of the
2885    following combinations
2886    - p_struct_ver_id, p_base_struct_ver_id
2887    - p_plan_version_id
2888 **********************************************************/
2889 
2890 PROCEDURE populate_workplan_data (
2891     p_populate_in_tbl       IN   populate_in_tbl_type  := populate_in_default_tbl,
2892     p_project_id            IN   NUMBER   := NULL,
2893     p_struct_ver_id         IN   NUMBER   := NULL,
2894     p_base_struct_ver_id    IN   NUMBER   := NULL,
2895     p_plan_version_id       IN   NUMBER   := NULL,
2896     p_progress_actuals_flag IN   VARCHAR2 := 'N',
2897     p_as_of_date            IN   DATE     := NULL,
2898     p_delete_flag           IN   VARCHAR2 := 'Y',
2899     p_workplan_flag         IN   VARCHAR2 := 'Y',
2900     p_project_element_id    IN   NUMBER   := NULL,
2901     p_calling_context       IN   VARCHAR2 := NULL,
2902     p_program_rollup_flag   IN   VARCHAR2 := 'N',
2903     x_return_status         OUT NOCOPY   VARCHAR2,
2904     x_msg_code              OUT NOCOPY   VARCHAR2 ) IS
2905 
2906     l_project_id_tbl             system.pa_num_tbl_type := system.pa_num_tbl_type ();
2907     l_wk_struct_ver_id_tbl             system.pa_num_tbl_type := system.pa_num_tbl_type();
2908     l_lpb_struct_ver_id_tbl             system.pa_num_tbl_type := system.pa_num_tbl_type();
2909     l_base_struct_ver_id_tbl         system.pa_num_tbl_type := system.pa_num_tbl_type();
2910     l_cal_type_tbl                                SYSTEM.pa_varchar2_15_tbl_type := SYSTEM.pa_varchar2_15_tbl_type();
2911     l_period_id_tbl                              system.pa_num_tbl_type := system.pa_num_tbl_type();
2912     l_end_period_id_tbl          system.pa_num_tbl_type := system.pa_num_tbl_type();
2913 
2914     l_org_id           NUMBER;
2915     l_return_status       VARCHAR2(1);
2916 
2917 	-- SCOPE_00  new variable
2918 	l_scoped_out_flag    varchar2(1) := 'Y' ;
2919 
2920 
2921 
2922 BEGIN
2923 
2924     PJI_PJP_FP_CURR_WRAP.INIT_ERR_STACK
2925     ( p_package_name   => g_package_name
2926     , x_return_status  => x_return_status );
2927 
2928     pa_debug.log_message('populate_workplan_data:p_project_id_tbl'||p_populate_in_tbl.COUNT, 3);
2929    pa_debug.log_message('populate_workplan_data: p_delete_flag '|| p_delete_flag, 3);
2930     pji_pjp_fp_curr_wrap.set_table_stats('PJI','PJI_PLAN_EXTR_TMP',10,10,10);
2931 
2932     l_return_status := Fnd_Api.G_RET_STS_SUCCESS;
2933     delete from pji_plan_extr_tmp;
2934    PRINT_TIME (  ' populate_workplan_data 0003.1 ' ) ;
2935 
2936    IF p_project_id is not null then
2937 
2938      INSERT INTO pji_plan_extr_tmp
2939             ( PROJECT_ID , PLAN_VER_ID , STRUCT_VER_ID , BASE_STRUCT_VER_ID , AS_OF_DATE , PROJ_ELEM_ID )
2940             VALUES ( p_project_id,p_plan_version_id,p_struct_ver_id  , p_base_struct_ver_id,p_as_of_date,p_project_element_id );
2941 
2942             print_time (' p_project_id ' || p_project_id || ' p_struct_ver_id ' || p_struct_ver_id );
2943             print_time (' p_base_struct_ver_id ' || p_base_struct_ver_id || ' p_plan_version_id ' || p_plan_version_id );
2944             print_time (' p_progress_actuals_flag ' || p_progress_actuals_flag || ' p_as_of_date ' || p_as_of_date );
2945             print_time (' p_delete_flag ' || p_delete_flag || ' p_workplan_flag ' || p_workplan_flag );
2946 
2947   ELSE
2948       IF p_populate_in_tbl.COUNT >0 THEN
2949          FOR i IN p_populate_in_tbl.FIRST .. p_populate_in_tbl.LAST
2950          LOOP
2951             INSERT INTO pji_plan_extr_tmp
2952                     ( PROJECT_ID , PLAN_VER_ID , STRUCT_VER_ID , BASE_STRUCT_VER_ID , AS_OF_DATE , PROJ_ELEM_ID )
2953             VALUES ( p_populate_in_tbl(i).PROJECT_ID,p_populate_in_tbl(i).plan_version_id, p_populate_in_tbl(i).struct_ver_id,p_populate_in_tbl(i).base_struct_ver_id,
2954                     p_populate_in_tbl(i).as_of_date,p_populate_in_tbl(i).project_element_id );
2955 
2956                PRINT_TIME ( ' p_project_id ' || p_populate_in_tbl(i).PROJECT_ID || ' p_struct_ver_id ' || p_populate_in_tbl(i).struct_ver_id );
2957                PRINT_TIME ( ' p_base_struct_ver_id ' || p_populate_in_tbl(i).base_struct_ver_id || ' p_plan_version_id ' || p_populate_in_tbl(i).plan_version_id );
2958                PRINT_TIME ( ' p_project_element_id ' || p_populate_in_tbl(i).project_element_id || ' p_as_of_date ' || p_populate_in_tbl(i).as_of_date );
2959                PRINT_TIME ( ' p_delete_flag '|| p_delete_flag || ' p_calling_context ' || p_calling_context || ' p_workplan_flag ' || p_workplan_flag ||' p_program_rollup_flag ' || p_program_rollup_flag );
2960 
2961         END LOOP;
2962       ELSE
2963         PRINT_TIME ( ' InValid parameters Passed to populate_workplan_data' );
2964       END IF;
2965   end if;
2966 
2967   IF g_debug_mode='Y' THEN
2968     PRINT_TIME (  ' populate_workplan_data 0003.2 ' ) ;
2969   end if;
2970 
2971 
2972   -- SCOPE_00
2973    if  l_scoped_out_flag = 'N'  then
2974 
2975   -- OLAP START CHANGE
2976 
2977 
2978   -- since project_id is changed to negative value , the downstream code will not process new ppr enabled projects .
2979 
2980   update pji_plan_extr_tmp  t1
2981   set t1.project_id = ( select -1*p.project_id from pa_projects_all  p  where p.project_id = t1.project_id
2982   and nvl(p.pjt_rollup_enabled_flag,'N') = 'Y' )
2983   where exists
2984   ( select 'x' from  pa_projects_all  p2  where p2.project_id = t1.project_id and  nvl(p2.pjt_rollup_enabled_flag,'N') = 'Y' );
2985 
2986 IF (p_delete_flag = 'Y') THEN -- satya
2987 
2988     PRINT_TIME (  ' populate_workplan_data 0003.10 ' ) ;
2989 
2990 
2991                 DELETE FROM PJI_FM_XBS_ACCUM_TMP1 TMP1
2992                 WHERE EXISTS ( SELECT 'x'
2993                                FROM PJI_PLAN_EXTR_TMP HEAD
2994                                WHERE -1*HEAD.PROJECT_ID=TMP1.PROJECT_ID);
2995 
2996    END IF;
2997 
2998 
2999   IF p_workplan_flag ='Y' THEN
3000 
3001 
3002   UPDATE pji_plan_extr_tmp TMP
3003                 SET (WK_PLAN_VER_ID)=
3004                 (
3005                         SELECT bv.budget_version_id
3006                         FROM    pa_budget_versions bv
3007                         WHERE TMP.STRUCT_VER_ID=bv.project_structure_Version_id
3008                         AND  -1*tmp.project_id =  bv.project_id
3009                 )
3010  where tmp.project_id < 0 ;
3011 
3012   UPDATE pji_plan_extr_tmp TMP
3013                 SET (LPB_STRUCT_VER_ID,LPB_PLAN_VER_ID)=
3014                 (
3015                         SELECT element_version_id,bv.budget_version_id
3016                         FROM    pa_proj_elem_ver_structure ppevs,
3017                                         pa_proj_structure_types ppst,
3018                                         pa_budget_versions bv
3019                         WHERE   1=1
3020                                 and latest_eff_published_flag = 'Y'
3021                                 and ppst.proj_element_id = ppevs.proj_element_id
3022                                 and ppst.structure_type_id = 1
3023                                 and element_version_id=bv.project_structure_Version_id
3024                                 and bv.wp_version_flag ='Y'
3025                                 and bv.project_id=ppevs.project_id
3026                                 and -1*tmp.project_id=ppevs.project_id  -- add  -1 * project_id
3027                 )
3028     where tmp.project_id < 0 ;
3029 
3030 
3031                       UPDATE pji_plan_extr_tmp TMP
3032             SET BASE_PLAN_VER_ID= (
3033                         SELECT  bv.budget_version_id
3034                         FROM    pa_budget_versions bv
3035                         WHERE   1=1
3036                                 AND NVL(bv.wp_version_flag , 'N') = p_workplan_flag
3037                                 AND bv.project_structure_Version_id = TMP.BASE_STRUCT_VER_ID
3038                                 AND bv.PROJECT_ID     = -1*tmp.PROJECT_ID
3039                                 AND DECODE(p_workplan_flag
3040                                 , 'N'
3041                                 , DECODE(bv.budget_status_code||bv.current_flag
3042                                 , 'BY','X'
3043                                 , 'Y')
3044                                 , 'X')
3045                                 = 'X' )
3046                         where tmp.project_id < 0 ;
3047 
3048 
3049 else
3050 
3051 
3052 UPDATE pji_plan_extr_tmp TMP
3053        SET (LPB_STRUCT_VER_ID,LPB_PLAN_VER_ID,BASE_STRUCT_VER_ID,BASE_PLAN_VER_ID,
3054                                 WK_STRUCT_VER_ID,WK_PLAN_VER_ID)=
3055                 (SELECT p_struct_ver_id,p_plan_version_id,p_struct_ver_id,p_plan_version_id,p_struct_ver_id,p_plan_version_id from dual )
3056             where tmp.project_id < 0 ;
3057 
3058 
3059 
3060 end if;
3061 
3062 
3063 
3064 INSERT INTO pji_fm_xbs_accum_tmp1 (
3065         PROJECT_ID,  STRUCT_VERSION_ID, PROJECT_ELEMENT_ID,      CALENDAR_TYPE,
3066         PERIOD_NAME,      PLAN_VERSION_ID,        QUANTITY, TXN_RAW_COST,
3067         TXN_BRDN_COST,        TXN_REVENUE, TXN_LABOR_RAW_COST,      TXN_LABOR_BRDN_COST,
3068         TXN_EQUIP_RAW_COST,      TXN_EQUIP_BRDN_COST, TXN_BASE_RAW_COST,       TXN_BASE_BRDN_COST,
3069         TXN_BASE_LABOR_RAW_COST, TXN_BASE_LABOR_BRDN_COST,TXN_BASE_EQUIP_RAW_COST, TXN_BASE_EQUIP_BRDN_COST,
3070         TXN_LPB_RAW_COST,        TXN_LPB_BRDN_COST, TXN_LPB_LABOR_RAW_COST,  TXN_LPB_LABOR_BRDN_COST,
3071         TXN_LPB_EQUIP_RAW_COST,  TXN_LPB_EQUIP_BRDN_COST, PRJ_RAW_COST,          PRJ_BRDN_COST,
3072         PRJ_REVENUE,        PRJ_LABOR_RAW_COST, PRJ_LABOR_BRDN_COST,     PRJ_EQUIP_RAW_COST,
3073         PRJ_EQUIP_BRDN_COST,  PRJ_BASE_RAW_COST, PRJ_BASE_BRDN_COST,      PRJ_BASE_LABOR_RAW_COST,
3074         PRJ_BASE_LABOR_BRDN_COST,PRJ_BASE_EQUIP_RAW_COST, PRJ_BASE_EQUIP_BRDN_COST,PRJ_LPB_RAW_COST,
3075         PRJ_LPB_BRDN_COST,       PRJ_LPB_LABOR_RAW_COST, PRJ_LPB_LABOR_BRDN_COST, PRJ_LPB_EQUIP_RAW_COST,
3076         PRJ_LPB_EQUIP_BRDN_COST, POU_RAW_COST, POU_BRDN_COST,           POU_REVENUE,
3077         POU_LABOR_RAW_COST,      POU_LABOR_BRDN_COST, POU_EQUIP_RAW_COST,      POU_EQUIP_BRDN_COST,
3078         POU_BASE_RAW_COST,       POU_BASE_BRDN_COST, POU_BASE_LABOR_RAW_COST, POU_BASE_LABOR_BRDN_COST,
3079         POU_BASE_EQUIP_RAW_COST, POU_BASE_EQUIP_BRDN_COST,POU_LPB_RAW_COST,        POU_LPB_BRDN_COST,
3080         POU_LPB_LABOR_RAW_COST,  POU_LPB_LABOR_BRDN_COST, POU_LPB_EQUIP_RAW_COST,  POU_LPB_EQUIP_BRDN_COST,
3081         LABOR_HOURS,          EQUIPMENT_HOURS, BASE_LABOR_HOURS,        BASE_EQUIP_HOURS,
3082         LPB_LABOR_HOURS,         LPB_EQUIP_HOURS, ACT_LABOR_HRS,     ACT_EQUIP_HRS,
3083         ACT_TXN_LABOR_BRDN_COST, ACT_TXN_EQUIP_BRDN_COST, ACT_TXN_RAW_COST,     ACT_TXN_BRDN_COST,
3084         ACT_PRJ_LABOR_BRDN_COST, ACT_PRJ_EQUIP_BRDN_COST, ACT_PRJ_RAW_COST,     ACT_PRJ_BRDN_COST,
3085         ACT_POU_LABOR_BRDN_COST, ACT_POU_EQUIP_BRDN_COST, ACT_POU_RAW_COST,     ACT_POU_BRDN_COST,
3086         ETC_LABOR_HRS,           ETC_EQUIP_HRS, ETC_TXN_LABOR_BRDN_COST, ETC_TXN_EQUIP_BRDN_COST,
3087         ETC_TXN_RAW_COST,   ETC_TXN_BRDN_COST, ETC_PRJ_LABOR_BRDN_COST, ETC_PRJ_EQUIP_BRDN_COST,
3088         ETC_PRJ_RAW_COST,        ETC_PRJ_BRDN_COST, ETC_POU_LABOR_BRDN_COST, ETC_POU_EQUIP_BRDN_COST,
3089         ETC_POU_RAW_COST,        ETC_POU_BRDN_COST, ACT_TXN_LABOR_RAW_COST , ACT_PRJ_LABOR_RAW_COST,
3090         ACT_POU_LABOR_RAW_COST,  ACT_TXN_EQUIP_RAW_COST, ACT_PRJ_EQUIP_RAW_COST,  ACT_POU_EQUIP_RAW_COST,
3091         ETC_TXN_LABOR_RAW_COST,  ETC_PRJ_LABOR_RAW_COST, ETC_POU_LABOR_RAW_COST,  ETC_TXN_EQUIP_RAW_COST,
3092         ETC_PRJ_EQUIP_RAW_COST,  ETC_POU_EQUIP_RAW_COST, P_RAW_COST,P_BRDN_COST,  P_REVENUE,
3093         P_LBR_RAW_COST,  P_LBR_BRDN_COST,   P_EQP_RAW_COST, P_EQP_BRDN_COST,
3094         P_BASE_RAW_COST,  P_BASE_BRDN_COST, P_BASE_LBR_RAW_COST,    P_BASE_LBR_BRDN_COST,
3095         P_BASE_EQP_RAW_COST,  P_BASE_EQP_BRDN_COST, P_LPB_RAW_COST,    P_LPB_BRDN_COST,
3096         P_LPB_LBR_RAW_COST,  P_LPB_LBR_BRDN_COST, P_LPB_EQP_RAW_COST,    P_LPB_EQP_BRDN_COST,
3097         P_LBR_HOURS,  P_EQP_HOURS,   P_BASE_LBR_HOURS, P_BASE_EQP_HOURS,
3098         P_LPB_LBR_HOURS,  P_LPB_EQP_HOURS,   P_ACT_LBR_HOURS, P_ACT_EQP_HOURS,
3099         P_ACT_LBR_BRDN_COST,  P_ACT_EQP_BRDN_COST, P_ACT_RAW_COST,     P_ACT_BRDN_COST,
3100         P_ACT_LBR_RAW_COST,  P_ACT_EQP_RAW_COST, P_ETC_EQP_HOURS,         P_ETC_LBR_HOURS,
3101         P_ETC_RAW_COST,  P_ETC_BRDN_COST,   P_ETC_LBR_BRDN_COST, P_ETC_EQP_BRDN_COST,
3102         P_ETC_LBR_RAW_COST,P_ETC_EQP_RAW_COST
3103 )
3104 select
3105 fact.project_id ,
3106 struct_ver_id STRUCT_VERSION_ID,
3107 fact.project_element_id,
3108  'A',
3109 null  PERIOD_NAME,
3110 WK_PLAN_VER_ID  PLAN_VERSION_ID,
3111 0  QUANTITY,
3112 -- regular columns are for progream rollup.
3113 /****
3114  sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.raw_cost*TXN_MASK else 0 end)   TXN_RAW_COST,
3115                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BRDN_COST,
3116                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.revenue*TXN_MASK else 0 end)   TXN_REVENUE,
3117                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_raw_cost*TXN_MASK else 0 end)  TXN_LABOR_RAW_COST,
3118                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LABOR_BRDN_COST,
3119                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_raw_cost*TXN_MASK else 0 end)   TXN_EQUIP_RAW_COST,
3120                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_brdn_cost*TXN_MASK else 0 end)   TXN_EQUIP_BRDN_COST,
3121                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)    TXN_BASE_RAW_COST,
3122                       sum(case when fact.plan_version_id   = base_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BASE_BRDN_COST,
3123                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_BASE_LABOR_RAW_COST,
3124                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)    TXN_BASE_LABOR_BRDN_COST,
3125                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_RAW_COST,
3126                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_BRDN_COST,
3127                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_LPB_RAW_COST,
3128                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_LPB_BRDN_COST,
3129                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_RAW_COST,
3130                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_BRDN_COST,
3131                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end) TXN_LPB_EQUIP_RAW_COST,
3132                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_LPB_EQUIP_BRDN_COST,
3133 ****/
3134  sum(0)   TXN_RAW_COST,
3135  sum(0)   TXN_BRDN_COST,
3136  sum(0)   TXN_REVENUE,
3137  sum(0) TXN_LABOR_RAW_COST,
3138  sum(0) TXN_LABOR_BRDN_COST,
3139  sum(0) TXN_EQUIP_RAW_COST,
3140  sum(0) TXN_EQUIP_BRDN_COST,
3141  sum(0) TXN_BASE_RAW_COST,
3142  sum(0) TXN_BASE_BRDN_COST,
3143  sum(0) TXN_BASE_LABOR_RAW_COST,
3144  sum(0) TXN_BASE_LABOR_BRDN_COST,
3145  sum(0) TXN_BASE_EQUIP_RAW_COST,
3146  sum(0) TXN_BASE_EQUIP_BRDN_COST,
3147  sum(0) TXN_LPB_RAW_COST,
3148  sum(0) TXN_LPB_BRDN_COST,
3149  sum(0) TXN_LPB_LABOR_RAW_COST,
3150  sum(0) TXN_LPB_LABOR_BRDN_COST,
3151  sum(0) TXN_LPB_EQUIP_RAW_COST,
3152  sum(0) TXN_LPB_EQUIP_BRDN_COST,
3153 sum(decode(p.project_currency_code,
3154                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.raw_cost,0)
3155                       , 0 ))   PRJ_RAW_COST,
3156 sum(decode(p.project_currency_code,
3157                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.brdn_cost,0)
3158                       , 0 ))   PRJ_BRDN_COST,
3159 sum(decode(p.project_currency_code,
3160                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.revenue,0)
3161                       , 0 ))  PRJ_REVENUE,
3162 sum(decode(p.project_currency_code,
3163                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.labor_raw_cost,0)
3164                       , 0 ))  PRJ_LABOR_RAW_COST,
3165 sum(decode(p.project_currency_code,
3166                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.labor_brdn_cost,0)
3167                       , 0 ))  PRJ_LABOR_BRDN_COST,
3168 sum(decode(p.project_currency_code,
3169                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.equipment_raw_cost,0)
3170                       , 0 ))  PRJ_EQUIP_RAW_COST,
3171 sum(decode(p.project_currency_code,
3172                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.equipment_brdn_cost,0)
3173                       , 0 ))  PRJ_EQUIP_BRDN_COST,
3174 
3175 sum(decode(p.project_currency_code,
3176                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.raw_cost,0)
3177                       , 0 ))   PRJ_BASE_RAW_COST,
3178 sum(decode(p.project_currency_code,
3179                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.brdn_cost,0)
3180                       , 0 ))   PRJ_BASE_BRDN_COST,
3181 --sum(decode(p.project_currency_code,
3182 --                      fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.revenue,0)
3183 --                      , 0 ))  PRJ_BASE_REVENUE,
3184 sum(decode(p.project_currency_code,
3185                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.labor_raw_cost,0)
3186                       , 0 ))  PRJ_BASE_LABOR_RAW_COST,
3187 sum(decode(p.project_currency_code,
3188                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.labor_brdn_cost,0)
3189                       , 0 ))  PRJ_BASE_LABOR_BRDN_COST,
3190 sum(decode(p.project_currency_code,
3191                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.equipment_raw_cost,0)
3192                       , 0 ))  PRJ_BASE_EQUIP_RAW_COST,
3193 sum(decode(p.project_currency_code,
3194                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.equipment_brdn_cost,0)
3195                       , 0 ))  PRJ_BASE_EQUIP_BRDN_COST,
3196 
3197 sum(decode(p.project_currency_code,
3198                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.raw_cost,0)
3199                       , 0 ))   PRJ_LPB_RAW_COST,
3200 sum(decode(p.project_currency_code,
3201                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.brdn_cost,0)
3202                       , 0 ))   PRJ_LPB_BRDN_COST,
3203 --sum(decode(p.project_currency_code,
3204 --                      fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.revenue,0)
3205 --                      , 0 ))  PRJ_LPB_REVENUE,
3206 sum(decode(p.project_currency_code,
3207                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.labor_raw_cost,0)
3208                       , 0 ))  PRJ_LPB_LABOR_RAW_COST,
3209 sum(decode(p.project_currency_code,
3210                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.labor_brdn_cost,0)
3211                       , 0 ))  PRJ_LPB_LABOR_BRDN_COST,
3212 sum(decode(p.project_currency_code,
3213                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.equipment_raw_cost,0)
3214                       , 0 ))  PRJ_LPB_EQUIP_RAW_COST,
3215 sum(decode(p.project_currency_code,
3216                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.equipment_brdn_cost,0)
3217                       , 0 ))  PRJ_LPB_EQUIP_BRDN_COST,
3218 
3219 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3220                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.raw_cost,0)
3221                       , 0 ))   POU_RAW_COST,
3222 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3223                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.brdn_cost,0)
3224                       , 0 ))   POU_BRDN_COST,
3225 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3226                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.revenue,0)
3227                       , 0 ))  POU_REVENUE,
3228 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3229                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.labor_raw_cost,0)
3230                       , 0 ))  POU_LABOR_RAW_COST,
3231 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3232                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.labor_brdn_cost,0)
3233                       , 0 ))  POU_LABOR_BRDN_COST,
3234 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3235                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.equipment_raw_cost,0)
3236                       , 0 ))  POU_EQUIP_RAW_COST,
3237 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3238                       fact.currency_code, decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID,fact.equipment_brdn_cost,0)
3239                       , 0 ))  POU_EQUIP_BRDN_COST,
3240 
3241 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3242                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.raw_cost,0)
3243                       , 0 ))   POU_BASE_RAW_COST,
3244 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3245                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.brdn_cost,0)
3246                       , 0 ))   POU_BASE_BRDN_COST,
3247 --sum(decode(p.PROJFUNC_CURRENCY_CODE,
3248 --                      fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.revenue,0)
3249 --                      , 0 ))  POU_BASE_REVENUE,
3250 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3251                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.labor_raw_cost,0)
3252                       , 0 ))  POU_BASE_LABOR_RAW_COST,
3253 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3254                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.labor_brdn_cost,0)
3255                       , 0 ))  POU_BASE_LABOR_BRDN_COST,
3256 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3257                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.equipment_raw_cost,0)
3258                       , 0 ))  POU_BASE_EQUIP_RAW_COST,
3259 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3260                       fact.currency_code, decode(fact.plan_version_id , tmp.base_plan_ver_id,fact.equipment_brdn_cost,0)
3261                       , 0 ))  POU_BASE_EQUIP_BRDN_COST,
3262 
3263 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3264                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.raw_cost,0)
3265                       , 0 ))   POU_LPB_RAW_COST,
3266 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3267                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.brdn_cost,0)
3268                       , 0 ))   POU_LPB_BRDN_COST,
3269 --sum(decode(p.PROJFUNC_CURRENCY_CODE,
3270 --                      fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.revenue,0)
3271 --                      , 0 ))  POU_LPB_REVENUE,
3272 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3273                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.labor_raw_cost,0)
3274                       , 0 ))  POU_LPB_LABOR_RAW_COST,
3275 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3276                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.labor_brdn_cost,0)
3277                       , 0 ))  POU_LPB_LABOR_BRDN_COST,
3278 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3279                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.equipment_raw_cost,0)
3280                       , 0 ))  POU_LPB_EQUIP_RAW_COST,
3281 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3282                       fact.currency_code, decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.equipment_brdn_cost,0)
3283                       , 0 ))  POU_LPB_EQUIP_BRDN_COST,
3284 
3285 sum(decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID, fact.LABOR_HRS, 0 ))   LABOR_HOURS,
3286 sum(decode(fact.plan_version_id , tmp.WK_PLAN_VER_ID, fact.EQUIPMENT_HOURS, 0 ))   EQUIPMENT_HOURS,
3287 sum(decode(fact.plan_version_id , tmp.base_plan_ver_id, fact.LABOR_HRS, 0 ))   BASE_LABOR_HOURS,
3288 sum(decode(fact.plan_version_id , tmp.base_plan_ver_id, fact.EQUIPMENT_HOURS, 0 ))  BASE_EQUIP_HOURS,
3289 sum(decode(fact.plan_version_id , tmp.lpb_plan_ver_id,fact.LABOR_HRS, 0 ))   LPB_LABOR_HOURS,
3290 sum(decode(fact.plan_version_id , tmp.lpb_plan_ver_id, fact.EQUIPMENT_HOURS,0))   LPB_EQUIP_HOURS,
3291 
3292  sum( decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_LABOR_HRS, 0)) ACT_LABOR_HRS,
3293 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_EQUIP_HRS, 0)) ACT_EQUIP_HRS,
3294 /*sum( decode( fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_labor_brdn_cost, 0 )) ACT_TXN_LABOR_BRDN_COST,
3295 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_equip_brdn_cost, 0 )) ACT_TXN_EQUIP_BRDN_COST,
3296 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_raw_cost, 0 )) ACT_TXN_RAW_COST,
3297 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_brdn_cost, 0 )) ACT_TXN_BRDN_COST,*/
3298 0 ACT_TXN_LABOR_BRDN_COST,
3299 0 ACT_TXN_EQUIP_BRDN_COST,
3300 0 ACT_TXN_RAW_COST,
3301 0 ACT_TXN_BRDN_COST,
3302 sum( decode(p.project_currency_code,
3303                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_labor_brdn_cost, 0))) ACT_PRJ_LABOR_BRDN_COST,
3304 sum( decode(p.project_currency_code,
3305                       fact.currency_code, decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_brdn_cost, 0)) )ACT_PRJ_EQUIP_BRDN_COST,
3306 sum( decode(p.project_currency_code,
3307                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_raw_cost, 0 )) )ACT_PRJ_RAW_COST,
3308 sum( decode(p.project_currency_code,
3309                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_brdn_cost, 0 )) )ACT_PRJ_BRDN_COST,
3310 sum( decode(p.PROJFUNC_CURRENCY_CODE,
3311                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_labor_brdn_cost, 0 )) )ACT_POU_LABOR_BRDN_COST,
3312 sum( decode(p.PROJFUNC_CURRENCY_CODE,
3313                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_brdn_cost, 0 )) )ACT_POU_EQUIP_BRDN_COST,
3314 sum( decode(p.PROJFUNC_CURRENCY_CODE,
3315                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_raw_cost, 0 )) )ACT_POU_RAW_COST,
3316 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3317                       fact.currency_code,  decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_brdn_cost, 0 ))) ACT_POU_BRDN_COST,
3318 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_LABOR_HRS, 0 ))  ETC_LABOR_HRS,
3319 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_EQUIP_HRS, 0 ))  ETC_EQUIP_HRS,
3320 /*sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_BRDN_COST,
3321 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_BRDN_COST,
3322 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_raw_cost*TXN_MASK else 0 end)   ETC_TXN_RAW_COST,
3323 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_brdn_cost*TXN_MASK else 0 end)   ETC_TXN_BRDN_COST,*/
3324 0  ETC_TXN_LABOR_BRDN_COST,
3325 0  ETC_TXN_EQUIP_BRDN_COST,
3326 0   ETC_TXN_RAW_COST,
3327 0   ETC_TXN_BRDN_COST,
3328 sum(decode(p.project_currency_code,
3329                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_brdn_cost, 0 )))  ETC_PRJ_LABOR_BRDN_COST,
3330 sum(decode(p.project_currency_code,
3331                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_brdn_cost,0 )))  ETC_PRJ_EQUIP_BRDN_COST,
3332 sum(decode(p.project_currency_code,
3333                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_raw_cost, 0 )))   ETC_PRJ_RAW_COST,
3334 sum(decode(p.project_currency_code,
3335                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_brdn_cost, 0 )))   ETC_PRJ_BRDN_COST,
3336 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3337                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_brdn_cost,0 )))  ETC_POU_LABOR_BRDN_COST,
3338 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3339                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_brdn_cost,0 )))  ETC_POU_EQUIP_BRDN_COST,
3340 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3341                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_raw_cost, 0 )))   ETC_POU_RAW_COST,
3342 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3343                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_brdn_cost, 0 )))   ETC_POU_BRDN_COST,
3344 /*sum( case when  fact.time_id <= END_PERIOD_ID
3345                            then
3346                            decode(fact.plan_version_id , WK_PLAN_VER_ID,
3347 TXN_MASK*fact.act_labor_raw_cost,0)
3348                            else
3349                            NULL
3350                            end
3351                          ) ACT_TXN_LABOR_RAW_COST,*/
3352 0 ACT_TXN_LABOR_RAW_COST,
3353 sum( decode(p.project_currency_code,
3354                       fact.currency_code,
3355                            decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_labor_raw_cost,0))) ACT_PRJ_LABOR_RAW_COST,
3356 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3357                       fact.currency_code, decode( fact.plan_version_id, WK_PLAN_VER_ID,
3358 fact.act_labor_raw_cost,0))) ACT_POU_LABOR_RAW_COST,
3359 /*                      sum( case when  fact.time_id <= END_PERIOD_ID
3360                            then
3361                            decode(fact.plan_version_id, WK_PLAN_VER_ID,
3362 TXN_MASK*fact.act_equip_raw_cost,0)
3363                            else
3364                            NULL
3365                            end
3366                          ) ACT_TXN_EQUIP_RAW_COST,*/
3367 0 ACT_TXN_EQUIP_RAW_COST,
3368 sum(decode(p.project_currency_code,
3369                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_raw_cost,0))) ACT_PRJ_EQUIP_RAW_COST,
3370 sum( decode(p.PROJFUNC_CURRENCY_CODE,
3371                       fact.currency_code,
3372                            decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_raw_cost,0))) ACT_POU_EQUIP_RAW_COST,
3373 /*sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then
3374 fact.ETC_labor_raw_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_RAW_COST,*/
3375 0 ETC_TXN_LABOR_RAW_COST,
3376 
3377 sum(decode(p.project_currency_code,
3378                       fact.currency_code,decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_raw_cost, 0 )))  ETC_PRJ_LABOR_RAW_COST,
3379 
3380 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3381                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_raw_cost, 0 )))  ETC_POU_LABOR_RAW_COST,
3382 
3383 /*sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then
3384 fact.ETC_equip_raw_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_RAW_COST,*/
3385 
3386 0 ETC_TXN_EQUIP_RAW_COST,
3387 sum(decode(p.project_currency_code,
3388                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_raw_cost, 0 )))  ETC_PRJ_EQUIP_RAW_COST,
3389 
3390 sum(decode(p.PROJFUNC_CURRENCY_CODE,
3391                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_raw_cost, 0 )))  ETC_POU_EQUIP_RAW_COST,
3392                         /* Retrival of Project Level Data Starts*/
3393 sum(decode(p.project_currency_code,
3394                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.raw_cost,0 )))  P_RAW_COST,
3395 sum(decode(p.project_currency_code,
3396                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.brdn_cost, 0 ))) P_BRDN_COST,
3397 sum(decode(p.project_currency_code,
3398                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.revenue, 0 )))  P_REVENUE,
3399 sum(decode(p.project_currency_code,
3400                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.labor_raw_cost, 0 )))  P_LBR_RAW_COST,
3401 sum(decode(p.project_currency_code,
3402                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.labor_brdn_cost,0 ))) P_LBR_BRDN_COST,
3403 sum(decode(p.project_currency_code,
3404                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.equipment_raw_cost, 0 ))) P_EQP_RAW_COST,
3405 sum(decode(p.project_currency_code,
3406                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.equipment_brdn_cost, 0 )))  P_EQP_BRDN_COST,
3407 sum(decode(p.project_currency_code,
3408                       fact.currency_code,decode(fact.plan_version_id , base_plan_ver_id, fact.raw_cost,0 )))  P_BASE_RAW_COST,
3409 sum(decode(p.project_currency_code,
3410                       fact.currency_code, decode(fact.plan_version_id , base_plan_ver_id, fact.brdn_cost,0 )))  P_BASE_BRDN_COST,
3411 sum(decode(p.project_currency_code,
3412                       fact.currency_code, decode(fact.plan_version_id , base_plan_ver_id, fact.labor_raw_cost,0 )))  P_BASE_LBR_RAW_COST,
3413 sum(decode(p.project_currency_code,
3414                       fact.currency_code, decode(fact.plan_version_id , base_plan_ver_id, fact.labor_brdn_cost, 0 ))) P_BASE_LBR_BRDN_COST,
3415 sum(decode(p.project_currency_code,
3416                       fact.currency_code,decode(fact.plan_version_id , base_plan_ver_id, fact.equipment_raw_cost,0 ))) P_BASE_EQP_RAW_COST,
3417 sum(decode(p.project_currency_code,
3418                       fact.currency_code, decode(fact.plan_version_id , base_plan_ver_id, fact.equipment_brdn_cost,0 ))) P_BASE_EQP_BRDN_COST,
3419 sum(decode(p.project_currency_code,
3420                       fact.currency_code,decode(fact.plan_version_id , lpb_plan_ver_id, fact.raw_cost,0 )))  P_LPB_RAW_COST,
3421 sum(decode(p.project_currency_code,
3422                       fact.currency_code, decode(fact.plan_version_id , lpb_plan_ver_id, fact.brdn_cost, 0 )))  P_LPB_BRDN_COST,
3423 sum(decode(p.project_currency_code,
3424                       fact.currency_code, decode(fact.plan_version_id , lpb_plan_ver_id, labor_raw_cost, 0 )))  P_LPB_LBR_RAW_COST,
3425 sum(decode(p.project_currency_code,
3426                       fact.currency_code, decode(fact.plan_version_id , lpb_plan_ver_id, fact.labor_brdn_cost,0 )))  P_LPB_LBR_BRDN_COST,
3427 sum(decode(p.project_currency_code,
3428                       fact.currency_code, decode(fact.plan_version_id , lpb_plan_ver_id, fact.equipment_raw_cost,0 ))) P_LPB_EQP_RAW_COST,
3429 sum(decode(p.project_currency_code,
3430                       fact.currency_code,decode(fact.plan_version_id , lpb_plan_ver_id, fact.equipment_brdn_cost, 0 ))) P_LPB_EQP_BRDN_COST,
3431 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.LABOR_HRS,0 )) P_LBR_HOURS,
3432 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.EQUIPMENT_HOURS, 0 )) P_EQP_HOURS,
3433 sum(decode(fact.plan_version_id , base_plan_ver_id, fact.LABOR_HRS, 0 )) P_BASE_LBR_HOURS,
3434 sum(decode(fact.plan_version_id , base_plan_ver_id, fact.EQUIPMENT_HOURS,0 )) P_BASE_EQP_HOURS,
3435 sum(decode(fact.plan_version_id , lpb_plan_ver_id, fact.LABOR_HRS, 0 )) P_LPB_LBR_HOURS,
3436 sum(decode(fact.plan_version_id , lpb_plan_ver_id, fact.EQUIPMENT_HOURS,0 )) P_LPB_EQP_HOURS,
3437 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_LABOR_HRS, 0)) P_ACT_LBR_HOURS,
3438 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_EQUIP_HRS, 0)) P_ACT_EQP_HOURS,
3439 sum(decode(p.project_currency_code,
3440                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_labor_brdn_cost, 0))) P_ACT_LBR_BRDN_COST,
3441 sum(decode(p.project_currency_code,
3442                       fact.currency_code, decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_brdn_cost, 0))) P_ACT_EQP_BRDN_COST,
3443 sum(decode(p.project_currency_code,
3444                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_raw_cost , 0 ))) P_ACT_RAW_COST,
3445 sum(decode(p.project_currency_code,
3446                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_brdn_cost, 0 ))) P_ACT_BRDN_COST,
3447 sum(decode(p.project_currency_code,
3448                       fact.currency_code, decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.act_labor_raw_cost,0))) P_ACT_LBR_RAW_COST,
3449 sum(decode(p.project_currency_code,
3450                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.act_equip_raw_cost ,0))) P_ACT_EQP_RAW_COST,
3451 sum( decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_EQUIP_HRS, 0 )) P_ETC_EQP_HOURS,
3452 sum(decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_LABOR_HRS, 0 )) P_ETC_LBR_HOURS,
3453 sum(decode(p.project_currency_code,
3454                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_raw_cost, 0 ))) P_ETC_RAW_COST,
3455 sum(decode(p.project_currency_code,
3456                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_brdn_cost, 0 ))) P_ETC_BRDN_COST,
3457 sum(decode(p.project_currency_code,
3458                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_brdn_cost,0 ))) P_ETC_LBR_BRDN_COST,
3459 sum(decode(p.project_currency_code,
3460                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_brdn_cost, 0 ))) P_ETC_EQP_BRDN_COST,
3461 sum(decode(p.project_currency_code,
3462                       fact.currency_code, decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_labor_raw_cost, 0 ))) P_ETC_LBR_RAW_COST,
3463 sum(decode(p.project_currency_code,
3464                       fact.currency_code,decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ETC_equip_raw_cost, 0 ))) P_ETC_EQP_RAW_COST
3465 from pji_plan_extr_tmp  tmp, pa_pjt_wbs_fact fact, pa_projects_all p
3466 where -1*tmp.project_id = fact.project_id
3467 and tmp.WK_PLAN_VER_ID = fact.plan_version_id
3468 and p.project_id = fact.project_id
3469 and fact.wbs_rollup_flag  = 'Y'
3470 GROUP BY
3471    fact.PROJECT_ID,
3472                       fact.PROJECT_ELEMENT_ID,
3473                       tmp.WK_PLAN_VER_ID,
3474                       tmp.STRUCT_VER_ID;
3475 
3476  IF g_debug_mode='Y' THEN
3477       debug_accum ; /* bug#3993830 */
3478 
3479      END IF;
3480 delete from pji_plan_extr_tmp  where project_id < 0 ;
3481 
3482   -- OLAP END CHANGE
3483 
3484    end if ;
3485   -- SCOPE_00
3486 
3487 
3488         /* Added for workplan progress */
3489     -- Get the Latest Published Version for the Project
3490 
3491 IF p_workplan_flag ='Y' THEN                    --bug#5554311
3492 
3493                 UPDATE pji_plan_extr_tmp TMP
3494                 SET (LPB_STRUCT_VER_ID,LPB_PLAN_VER_ID)=
3495                 (
3496                         SELECT element_version_id,bv.budget_version_id
3497                         FROM    pa_proj_elem_ver_structure ppevs,
3498                                         pa_proj_structure_types ppst,
3499                                         pa_budget_versions bv
3500                         WHERE   1=1
3501                                 and latest_eff_published_flag = 'Y'
3502                                 and ppst.proj_element_id = ppevs.proj_element_id
3503                                 and ppst.structure_type_id = 1
3504                                 and element_version_id=bv.project_structure_Version_id
3505                                 and bv.wp_version_flag ='Y'
3506                                 and bv.project_id=ppevs.project_id
3507                                 and tmp.project_id=ppevs.project_id
3508                 );
3509 
3510 
3511 
3512 
3513     PRINT_TIME (  ' populate_workplan_data 0003.3 ' ) ;
3514 
3515             UPDATE pji_plan_extr_tmp TMP
3516             SET      WK_STRUCT_VER_ID=
3517                 (
3518                         SELECT WBS_VERSION_ID
3519                         FROM   pji_pjp_wbs_header wbs
3520                         WHERE        wbs.project_id=tmp.project_id    AND
3521                         plan_version_id  = tmp.plan_ver_id
3522                 );
3523 
3524     PRINT_TIME (  ' populate_workplan_data 0003.4 ' ) ;
3525 
3526             UPDATE     pji_plan_extr_tmp TMP
3527             SET     WK_PLAN_VER_ID= (
3528                         SELECT     head.PLAN_VERSION_ID
3529                         FROM     pji_pjp_wbs_header head,
3530                                  pa_budget_versions bv
3531                         WHERE 1=1
3532                                 AND head.plan_version_id = bv.budget_version_id
3533                                 AND NVL(bv.wp_version_flag, 'N') = head.wp_flag
3534                                 AND NVL(bv.wp_version_flag, 'N') = p_workplan_flag
3535                                 AND head.WBS_VERSION_ID = tmp.struct_ver_id
3536                                 AND head.PROJECT_ID     = tmp.project_id
3537                                 AND DECODE(p_workplan_flag
3538                                 , 'N'
3539                                 , DECODE(bv.budget_status_code||bv.current_working_flag
3540                                 , 'WY'
3541                                 ,'X'
3542                                 , 'Y')
3543                                 , 'X') = 'X'
3544                                 AND head.PLAN_VERSION_ID > 0);
3545 
3546     PRINT_TIME (  ' populate_workplan_data 0003.4.1 ' ) ;
3547 
3548                      UPDATE pji_plan_extr_tmp TMP
3549                      SET      WK_STRUCT_VER_ID = STRUCT_VER_ID
3550                      where WK_STRUCT_VER_ID is null;
3551 
3552     PRINT_TIME (  ' populate_workplan_data 0003.5 ' ) ;
3553 
3554                       UPDATE pji_plan_extr_tmp TMP
3555             SET BASE_PLAN_VER_ID= (
3556                         SELECT  head.PLAN_VERSION_ID
3557                         FROM    pji_pjp_wbs_header head,
3558                                 pa_budget_versions bv
3559                         WHERE   1=1
3560                                 AND head.plan_version_id = bv.budget_version_id
3561                                 AND NVL(bv.wp_version_flag, 'N') = head.wp_flag
3562                                 AND NVL(bv.wp_version_flag , 'N') = p_workplan_flag
3563                                 AND head.WBS_VERSION_ID = TMP.BASE_STRUCT_VER_ID
3564                                 AND head.PROJECT_ID     = tmp.PROJECT_ID
3565                                 AND DECODE(p_workplan_flag
3566                                 , 'N'
3567                                 , DECODE(bv.budget_status_code||bv.current_flag
3568                                 , 'BY','X'
3569                                 , 'Y')
3570                                 , 'X')
3571                                 = 'X'
3572                                 AND head.PLAN_VERSION_ID > 0);
3573 
3574 ELSE            ---   when  p_workplan_flag ='N'                bug#5554311
3575 
3576     PRINT_TIME (  ' populate_workplan_data 0003.5.1 ' ) ;
3577 
3578                 UPDATE pji_plan_extr_tmp TMP
3579                 SET                (LPB_STRUCT_VER_ID,LPB_PLAN_VER_ID,BASE_STRUCT_VER_ID,BASE_PLAN_VER_ID,
3580                                 WK_STRUCT_VER_ID,WK_PLAN_VER_ID)=
3581                 (SELECT p_struct_ver_id,p_plan_version_id,p_struct_ver_id,p_plan_version_id,p_struct_ver_id,p_plan_version_id from dual );
3582 
3583 END IF;
3584 
3585     PRINT_TIME (  ' populate_workplan_data 0003.6 ' ) ;
3586 
3587 
3588 
3589                 UPDATE pji_plan_extr_tmp TMP
3590             SET (CAL_TYPE,ORG_ID)=
3591             (
3592              SELECT  DECODE(NVL(NVL(fp.cost_time_phased_code, fp.revenue_time_phased_code ), fp.all_time_phased_code), 'G', 'G', 'P', 'P', 'A') calendar_type,
3593                      pa.ORG_ID
3594              FROM
3595                      pa_proj_fp_options fp,
3596                      pa_projects_all pa
3597              WHERE   1=1
3598                      and pa.project_id=fp.project_id
3599                      and pa.project_id=tmp.project_id
3600                      and fp.fin_plan_option_level_code = 'PLAN_VERSION'
3601                      and fp.fin_plan_version_id =tmp.WK_PLAN_VER_ID
3602                 )
3603                 WHERE  tmp.AS_OF_DATE is not null;
3604 
3605     PRINT_TIME (  ' populate_workplan_data 0003.7.1 ' ) ;
3606 
3607             UPDATE pji_plan_extr_tmp TMP
3608             SET (END_PERIOD_ID,PERIOD_ID)=
3609             (
3610             SELECT cal.CAL_PERIOD_ID  ,DECODE(tmp.cal_type, 'A', 2048, 32) PERIOD_TYPE_ID
3611                         FROM   pji_time_cal_period_v cal,
3612                    pji_org_extr_info    info
3613                         WHERE TRUNC(tmp.AS_OF_DATE)
3614                               BETWEEN TRUNC(cal.START_DATE) AND TRUNC(cal.END_DATE)
3615                               AND info.ORG_ID  = tmp.ORG_ID
3616                               AND DECODE(tmp.cal_type, 'P', info.PA_CALENDAR_ID , info.GL_CALENDAR_ID) = cal.CALENDAR_ID
3617                     )
3618                     WHERE  tmp.AS_OF_DATE is not null;
3619 
3620     PRINT_TIME (  ' populate_workplan_data 0003.8 ' ) ;
3621 
3622  -- The Temp table is populated with the Program and the Linked Projects and their corresponding plan versions
3623 
3624 
3625        SELECT
3626        project_id,WK_STRUCT_VER_ID,LPB_STRUCT_VER_ID,BASE_STRUCT_VER_ID,
3627        CAL_TYPE,PERIOD_ID,END_PERIOD_ID
3628        BULK COLLECT INTO
3629                l_project_id_tbl,l_wk_struct_ver_id_tbl,l_lpb_struct_ver_id_tbl,l_base_struct_ver_id_tbl,
3630                l_cal_type_tbl,l_period_id_tbl,    l_end_period_id_tbl
3631        FROM PJI_PLAN_EXTR_TMP;
3632 
3633     PRINT_TIME (  ' populate_workplan_data 0003.9 ' ) ;
3634 
3635 IF p_program_rollup_flag='Y' and p_calling_context='SUMMARIZE'  and  p_workplan_flag ='Y'  THEN
3636                 /* Populates Data for the given Project and all the projects above and a level below */
3637     PRINT_TIME (  ' populate_workplan_data 0003.9.1 ' ) ;
3638 
3639     FOR i IN 1 .. l_project_id_tbl.count
3640     LOOP
3641         INSERT into PJI_PLAN_EXTR_TMP
3642         (project_id,wk_plan_ver_id,lpb_plan_ver_id,base_plan_ver_id,struct_ver_id,cal_type,period_id,end_period_id)     --Bug#5660324
3643            SELECT
3644                         head.PROJECT_ID,
3645                         MAX(DECODE(SUBSTR(den.RECORD_TYPE,1,1), 'W', head.plan_version_id, NULL)) wk_plan_ver_id,
3646                         MAX(DECODE(SUBSTR( den.RECORD_TYPE,1,1), 'P', head.plan_version_id, NULL)) lpb_plan_ver_id ,
3647                         MAX(DECODE(SUBSTR(den.RECORD_TYPE,1,1), 'B', head.plan_version_id, NULL)) base_plan_ver_id,
3648                         MAX(DECODE(SUBSTR( den.RECORD_TYPE,1,1), 'W', den.wbs_version_id, NULL)) struct_ver_id,
3649                         MAX(l_cal_type_tbl(i)),
3650                         MAX(l_period_id_tbl(i)),
3651                         MAX(l_end_period_id_tbl(i))
3652                 FROM (
3653                         SELECT
3654                                 DECODE(SUBSTR(record_type,2,1),'R',sub_id,'S',sup_id) wbs_version_id,record_type,
3655                                 DECODE(NVL(sub_rollup_id,sup_emt_id),sup_emt_id,0,1) relationship
3656                         FROM
3657                                 (
3658                    SELECT
3659                              sub_id,sup_id,sub_rollup_id,sup_emt_id,'WR'      record_type
3660                    FROM
3661                              pji_xbs_Denorm wrk
3662                    WHERE
3663                              wrk.STRUCT_TYPE              = 'PRG' AND
3664                              wrk.SUP_ID                    =  l_wk_struct_ver_id_tbl(i) AND
3665                              ( wrk.RELATIONSHIP_TYPE <>'LF' OR  wrk.RELATIONSHIP_TYPE IS NULL) AND
3666                              wrk.struct_version_id is null
3667                    UNION ALL
3668                    SELECT
3669                                 sub_id,sup_id,sub_rollup_id,sup_emt_id,'PR'      record_type
3670                    FROM
3671                                 pji_xbs_Denorm pub
3672                    WHERE
3673                              pub.STRUCT_TYPE              = 'PRG' AND
3674                              pub.SUP_ID                   =  l_lpb_struct_ver_id_tbl(i)   AND
3675                              ( pub.RELATIONSHIP_TYPE <>'LF' OR  pub.RELATIONSHIP_TYPE IS NULL) AND
3676                              pub.struct_version_id is null
3677                    UNION ALL
3678                    SELECT
3679                                 sub_id,sup_id,sub_rollup_id,sup_emt_id,'BR'     record_type
3680                    FROM
3681                              pji_xbs_Denorm base
3682                    WHERE
3683                              base.STRUCT_TYPE             = 'PRG' AND
3684                              base.SUP_ID                   =  l_base_struct_ver_id_tbl(i) AND
3685                              ( base.RELATIONSHIP_TYPE <>'LF' OR  base.RELATIONSHIP_TYPE IS NULL) AND
3686                              base.struct_version_id is null
3687                    UNION ALL
3688                    SELECT  sub_id,sup_id,sub_rollup_id,sup_emt_id,'WS'   record_type
3689                    FROM
3690                            pji_xbs_Denorm wrk
3691                    WHERE
3692                            wrk.STRUCT_TYPE              = 'PRG' AND
3693                            wrk.SUB_ID                   =  l_wk_struct_ver_id_tbl(i) AND
3694                            ( wrk.RELATIONSHIP_TYPE <>'LF' OR  wrk.RELATIONSHIP_TYPE IS NULL) AND
3695                            wrk.struct_version_id is null
3696                    UNION ALL
3697                    SELECT  sub_id,sup_id,sub_rollup_id,sup_emt_id,'PS'   record_type
3698                    FROM
3699                            pji_xbs_Denorm pub
3700                    WHERE
3701                            pub.STRUCT_TYPE              = 'PRG' AND
3702                            pub.SUB_ID                   =  l_lpb_struct_ver_id_tbl(i)   AND
3703                            ( pub.RELATIONSHIP_TYPE <>'LF' OR  pub.RELATIONSHIP_TYPE IS NULL) AND
3704                            pub.struct_version_id is null
3705                    UNION ALL
3706                    SELECT  sub_id,sup_id,sub_rollup_id,sup_emt_id,'BS'  record_type
3707                    FROM
3708                            pji_xbs_Denorm base
3709                    WHERE
3710                            base.STRUCT_TYPE             = 'PRG' AND
3711                            base.SUB_ID                  =  l_base_struct_ver_id_tbl(i) AND
3712                            ( base.RELATIONSHIP_TYPE <>'LF' OR  base.RELATIONSHIP_TYPE IS NULL) AND
3713                            base.struct_version_id is null
3714                                 )
3715                         )
3716                         den,
3717                         pa_proj_element_versions ver,
3718                         pji_pjp_wbs_header head
3719                 WHERE
3720                         den.WBS_VERSION_ID = ver.element_version_id AND
3721                         den.record_type is not null                                AND
3722                         DECODE(SUBSTR(den.RECORD_TYPE,2,1),'S',1,'R',den.RELATIONSHIP) =1 AND
3723                         ver.project_id      = head.project_id        AND
3724                         den.WBS_VERSION_ID = head.wbs_version_id    AND
3725                         head.WP_FLAG       = 'Y'
3726                 GROUP BY head.project_id;
3727 END LOOP;
3728 
3729 
3730 
3731 ELSIF p_program_rollup_flag='Y' and p_calling_context='ROLLUP'  and  p_workplan_flag ='Y'   THEN
3732 /* Populates Data for the Project and all the projects below the given project */
3733 
3734     PRINT_TIME (  ' populate_workplan_data 0003.9.2 ' ) ;
3735 
3736     FOR i IN 1 .. l_project_id_tbl.count
3737     LOOP
3738 
3739         INSERT into PJI_PLAN_EXTR_TMP
3740         (project_id,wk_plan_ver_id,lpb_plan_ver_id,base_plan_ver_id,struct_ver_id,cal_type,period_id,end_period_id) --Bug#5660324
3741          SELECT
3742                   head.PROJECT_ID,
3743                   MAX(DECODE(den.RECORD_TYPE, 'W', head.plan_version_id, NULL)) wk_plan_ver_id,
3744                   MAX(DECODE(den.RECORD_TYPE, 'P', head.plan_version_id, NULL)) lpb_plan_ver_id ,
3745                   MAX(DECODE(den.RECORD_TYPE, 'B', head.plan_version_id, NULL)) base_plan_ver_id,
3746                   MAX(DECODE(den.RECORD_TYPE, 'W', den.wbs_version_id, NULL)) struct_ver_id,
3747                   MAX(l_cal_type_tbl(i)),
3748                   MAX(l_period_id_tbl(i)),
3749                   MAX(l_end_period_id_tbl(i))
3750         FROM
3751                 (
3752                    SELECT
3753                              wrk.SUB_ID wbs_version_id,'W'      record_type
3754                    FROM
3755                              pji_xbs_Denorm wrk
3756                    WHERE
3757                              wrk.STRUCT_TYPE              = 'PRG' AND
3758                              wrk.SUP_ID                   =  l_wk_struct_ver_id_tbl(i) AND
3759                              ( wrk.RELATIONSHIP_TYPE <>'LF' OR  wrk.RELATIONSHIP_TYPE IS NULL) AND
3760                              wrk.struct_version_id is null
3761                    UNION ALL
3762                    SELECT
3763                      pub.SUB_ID wbs_version_id,'P'      record_type
3764                    FROM
3765                                 pji_xbs_Denorm pub
3766                    WHERE
3767                              pub.STRUCT_TYPE              = 'PRG' AND
3768                              pub.SUP_ID                   =  l_lpb_struct_ver_id_tbl(i)   AND
3769                              ( pub.RELATIONSHIP_TYPE <>'LF' OR  pub.RELATIONSHIP_TYPE IS NULL) AND
3770                              pub.struct_version_id is null
3771                    UNION ALL
3772                    SELECT
3773                      base.SUB_ID wbs_version_id,'B'     record_type
3774                    FROM
3775                              pji_xbs_Denorm base
3776                    WHERE
3777                              base.STRUCT_TYPE              = 'PRG' AND
3778                              base.SUP_ID                  =  l_base_struct_ver_id_tbl(i) AND
3779                              ( base.RELATIONSHIP_TYPE <>'LF' OR  base.RELATIONSHIP_TYPE IS NULL) AND
3780                              base.struct_version_id is null
3781                   )
3782                   den,
3783                   pa_proj_element_versions ver,
3784                   pji_pjp_wbs_header head
3785         WHERE
3786                   den.wbs_version_id = ver.element_version_id AND
3787                   ver.project_id     = head.project_id        AND
3788                   den.wbs_version_id = head.wbs_version_id    AND
3789                   head.WP_FLAG       = 'Y'
3790         GROUP BY        head.project_id;
3791 
3792 END LOOP;
3793 
3794 END IF;
3795 
3796 /* Start of changes for bug 5751250 */
3797 
3798 IF p_calling_context = 'MSP' THEN
3799 
3800   UPDATE pji_plan_extr_tmp
3801   SET WK_PLAN_VER_ID = -1, BASE_PLAN_VER_ID = -1, LPB_PLAN_VER_ID = -1;
3802 
3803 END IF;
3804 
3805 /* End of changes for bug 5751250 */
3806 
3807   --Ensures that data is cleaned up for the Project / Program and the linked sub projects
3808    IF (p_delete_flag = 'Y') THEN
3809 
3810     PRINT_TIME (  ' populate_workplan_data 0003.10 ' ) ;
3811 
3812     -- Bug 10049710
3813                 /*
3814                 DELETE FROM pji_fm_xbs_accum_tmp1
3815                 WHERE rowid IN
3816                 (
3817                         SELECT tmp.rowid
3818                         FROM pji_plan_extr_tmp head, pji_fm_xbs_accum_tmp1 tmp
3819                         WHERE head.project_id=tmp.project_id
3820                 );
3821                 */
3822                 DELETE FROM PJI_FM_XBS_ACCUM_TMP1 TMP1
3823                 WHERE EXISTS ( SELECT 'x'
3824                                FROM PJI_PLAN_EXTR_TMP HEAD
3825                                WHERE HEAD.PROJECT_ID=TMP1.PROJECT_ID);
3826 
3827    END IF;
3828 
3829     PRINT_TIME (  ' populate_workplan_data 0003.10.1 ' ) ;
3830 
3831                 DELETE FROM  PJI_PLAN_EXTR_TMP tmp1
3832                         WHERE EXISTS
3833                         ( SELECT * FROM PJI_PLAN_EXTR_TMP tmp2
3834                                  WHERE tmp1.PROJECT_ID=tmp2.PROJECT_ID
3835                                 AND tmp1.ROWID > tmp2.ROWID );
3836 
3837    IF g_debug_mode='Y' THEN
3838     PRINT_TIME (  ' populate_workplan_data 0003.11 ' ) ;
3839    END IF;
3840 
3841 
3842 
3843     --
3844     -- Get task level data from reporting lines
3845     -- Data is rolled up by WBS hierarchy
3846     -- Data inserted is the Totals
3847     --
3848 
3849 INSERT INTO pji_fm_xbs_accum_tmp1 (
3850         PROJECT_ID,  STRUCT_VERSION_ID,       PROJECT_ELEMENT_ID,      CALENDAR_TYPE,
3851         PERIOD_NAME,      PLAN_VERSION_ID,        QUANTITY,         TXN_RAW_COST,
3852         TXN_BRDN_COST,        TXN_REVENUE,         TXN_LABOR_RAW_COST,      TXN_LABOR_BRDN_COST,
3853         TXN_EQUIP_RAW_COST,      TXN_EQUIP_BRDN_COST,     TXN_BASE_RAW_COST,       TXN_BASE_BRDN_COST,
3854         TXN_BASE_LABOR_RAW_COST, TXN_BASE_LABOR_BRDN_COST,TXN_BASE_EQUIP_RAW_COST, TXN_BASE_EQUIP_BRDN_COST,
3855         TXN_LPB_RAW_COST,        TXN_LPB_BRDN_COST,       TXN_LPB_LABOR_RAW_COST,  TXN_LPB_LABOR_BRDN_COST,
3856         TXN_LPB_EQUIP_RAW_COST,  TXN_LPB_EQUIP_BRDN_COST, PRJ_RAW_COST,          PRJ_BRDN_COST,
3857         PRJ_REVENUE,        PRJ_LABOR_RAW_COST,      PRJ_LABOR_BRDN_COST,     PRJ_EQUIP_RAW_COST,
3858         PRJ_EQUIP_BRDN_COST,  PRJ_BASE_RAW_COST,       PRJ_BASE_BRDN_COST,      PRJ_BASE_LABOR_RAW_COST,
3859         PRJ_BASE_LABOR_BRDN_COST,PRJ_BASE_EQUIP_RAW_COST, PRJ_BASE_EQUIP_BRDN_COST,PRJ_LPB_RAW_COST,
3860         PRJ_LPB_BRDN_COST,       PRJ_LPB_LABOR_RAW_COST,  PRJ_LPB_LABOR_BRDN_COST, PRJ_LPB_EQUIP_RAW_COST,
3861         PRJ_LPB_EQUIP_BRDN_COST, POU_RAW_COST,          POU_BRDN_COST,           POU_REVENUE,
3862         POU_LABOR_RAW_COST,      POU_LABOR_BRDN_COST,     POU_EQUIP_RAW_COST,      POU_EQUIP_BRDN_COST,
3863         POU_BASE_RAW_COST,       POU_BASE_BRDN_COST,      POU_BASE_LABOR_RAW_COST, POU_BASE_LABOR_BRDN_COST,
3864         POU_BASE_EQUIP_RAW_COST, POU_BASE_EQUIP_BRDN_COST,POU_LPB_RAW_COST,        POU_LPB_BRDN_COST,
3865         POU_LPB_LABOR_RAW_COST,  POU_LPB_LABOR_BRDN_COST, POU_LPB_EQUIP_RAW_COST,  POU_LPB_EQUIP_BRDN_COST,
3866         LABOR_HOURS,          EQUIPMENT_HOURS,         BASE_LABOR_HOURS,        BASE_EQUIP_HOURS,
3867         LPB_LABOR_HOURS,         LPB_EQUIP_HOURS,   ACT_LABOR_HRS,     ACT_EQUIP_HRS,
3868         ACT_TXN_LABOR_BRDN_COST, ACT_TXN_EQUIP_BRDN_COST, ACT_TXN_RAW_COST,     ACT_TXN_BRDN_COST,
3869         ACT_PRJ_LABOR_BRDN_COST, ACT_PRJ_EQUIP_BRDN_COST, ACT_PRJ_RAW_COST,     ACT_PRJ_BRDN_COST,
3870         ACT_POU_LABOR_BRDN_COST, ACT_POU_EQUIP_BRDN_COST, ACT_POU_RAW_COST,     ACT_POU_BRDN_COST,
3871         ETC_LABOR_HRS,           ETC_EQUIP_HRS,    ETC_TXN_LABOR_BRDN_COST, ETC_TXN_EQUIP_BRDN_COST,
3872         ETC_TXN_RAW_COST,   ETC_TXN_BRDN_COST,    ETC_PRJ_LABOR_BRDN_COST, ETC_PRJ_EQUIP_BRDN_COST,
3873         ETC_PRJ_RAW_COST,        ETC_PRJ_BRDN_COST,    ETC_POU_LABOR_BRDN_COST, ETC_POU_EQUIP_BRDN_COST,
3874         ETC_POU_RAW_COST,        ETC_POU_BRDN_COST,     ACT_TXN_LABOR_RAW_COST , ACT_PRJ_LABOR_RAW_COST,
3875         ACT_POU_LABOR_RAW_COST,  ACT_TXN_EQUIP_RAW_COST,  ACT_PRJ_EQUIP_RAW_COST,  ACT_POU_EQUIP_RAW_COST,
3876         ETC_TXN_LABOR_RAW_COST,  ETC_PRJ_LABOR_RAW_COST,  ETC_POU_LABOR_RAW_COST,  ETC_TXN_EQUIP_RAW_COST,
3877         ETC_PRJ_EQUIP_RAW_COST,  ETC_POU_EQUIP_RAW_COST,  P_RAW_COST,P_BRDN_COST,  P_REVENUE,
3878         P_LBR_RAW_COST,  P_LBR_BRDN_COST,   P_EQP_RAW_COST,    P_EQP_BRDN_COST,
3879         P_BASE_RAW_COST,  P_BASE_BRDN_COST,   P_BASE_LBR_RAW_COST,    P_BASE_LBR_BRDN_COST,
3880         P_BASE_EQP_RAW_COST,  P_BASE_EQP_BRDN_COST,   P_LPB_RAW_COST,    P_LPB_BRDN_COST,
3881         P_LPB_LBR_RAW_COST,  P_LPB_LBR_BRDN_COST,   P_LPB_EQP_RAW_COST,    P_LPB_EQP_BRDN_COST,
3882         P_LBR_HOURS,  P_EQP_HOURS,   P_BASE_LBR_HOURS,    P_BASE_EQP_HOURS,
3883         P_LPB_LBR_HOURS,  P_LPB_EQP_HOURS,   P_ACT_LBR_HOURS,    P_ACT_EQP_HOURS,
3884         P_ACT_LBR_BRDN_COST,  P_ACT_EQP_BRDN_COST,   P_ACT_RAW_COST,     P_ACT_BRDN_COST,
3885         P_ACT_LBR_RAW_COST,  P_ACT_EQP_RAW_COST,   P_ETC_EQP_HOURS,         P_ETC_LBR_HOURS,
3886         P_ETC_RAW_COST,  P_ETC_BRDN_COST,   P_ETC_LBR_BRDN_COST,     P_ETC_EQP_BRDN_COST,
3887         P_ETC_LBR_RAW_COST,P_ETC_EQP_RAW_COST
3888 )
3889      -- SELECT          /*+ LEADING(head) USE_NL(fact.fact) */
3890      -- SELECT          /*+ LEADING(head)  cardinality(head,1) USE_NL(fact.fact) no_expand*/ -- for Bug14040849 to improve performance
3891      -- SELECT          /*+ LEADING(head)  cardinality(head,1) USE_NL(fact.fact) no_expand opt_param('_gby_hash_aggregation_enabled','false') */ -- for Bug14040849 to improve performance
3892         SELECT          /*+ LEADING(head) use_hash(fact) */   -- Modified hints for bug 13897252
3893 
3894                       fact.PROJECT_ID,
3895                       struct_ver_id  STRUCT_VERSION_ID,
3896                       fact.PROJECT_ELEMENT_ID   PROJECT_ELEMENT_ID,
3897                       'A',
3898                       null  PERIOD_NAME,
3899                       WK_PLAN_VER_ID  PLAN_VERSION_ID,
3900                       0  QUANTITY,
3901                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.raw_cost*TXN_MASK else 0 end)   TXN_RAW_COST,
3902                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BRDN_COST,
3903                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.revenue*TXN_MASK else 0 end)   TXN_REVENUE,
3904                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_raw_cost*TXN_MASK else 0 end)  TXN_LABOR_RAW_COST,
3905                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LABOR_BRDN_COST,
3906                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_raw_cost*TXN_MASK else 0 end)   TXN_EQUIP_RAW_COST,
3907                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_brdn_cost*TXN_MASK else 0 end)   TXN_EQUIP_BRDN_COST,
3908                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)    TXN_BASE_RAW_COST,
3909                       sum(case when fact.plan_version_id   = base_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_BASE_BRDN_COST,
3910                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_BASE_LABOR_RAW_COST,
3911                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)    TXN_BASE_LABOR_BRDN_COST,
3912                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_RAW_COST,
3913                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_BASE_EQUIP_BRDN_COST,
3914                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.raw_cost*TXN_MASK else 0 end)   TXN_LPB_RAW_COST,
3915                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.brdn_cost*TXN_MASK else 0 end)   TXN_LPB_BRDN_COST,
3916                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_raw_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_RAW_COST,
3917                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_brdn_cost*TXN_MASK else 0 end)   TXN_LPB_LABOR_BRDN_COST,
3918                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_raw_cost*TXN_MASK else 0 end) TXN_LPB_EQUIP_RAW_COST,
3919                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_brdn_cost*TXN_MASK else 0 end)  TXN_LPB_EQUIP_BRDN_COST,
3920                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_RAW_COST,
3921                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.brdn_cost*PRJ_MASK else 0 end)  PRJ_BRDN_COST,
3922                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.revenue*PRJ_MASK else 0 end)  PRJ_REVENUE,
3923                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LABOR_RAW_COST,
3924                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_LABOR_BRDN_COST,
3925                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_raw_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_RAW_COST,
3926                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_brdn_cost*PRJ_MASK else 0 end)   PRJ_EQUIP_BRDN_COST,
3927                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_RAW_COST,
3928                       sum(case when fact.plan_version_id   = base_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_BRDN_COST,
3929                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_RAW_COST,
3930                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)   PRJ_BASE_LABOR_BRDN_COST,
3931                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_RAW_COST,
3932                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_BASE_EQUIP_BRDN_COST,
3933 
3934                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_RAW_COST,
3935                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.brdn_cost*PRJ_MASK else 0 end)   PRJ_LPB_BRDN_COST,
3936                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_raw_cost*PRJ_MASK else 0 end)   PRJ_LPB_LABOR_RAW_COST,
3937                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK else 0 end)  PRJ_LPB_LABOR_BRDN_COST,
3938                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_RAW_COST,
3939                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK else 0 end) PRJ_LBP_EQUIP_BRDN_COST,
3940 
3941                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.raw_cost*POU_MASK else 0 end)  POU_RAW_COST,
3942                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.brdn_cost*POU_MASK else 0 end)  POU_BRDN_COST,
3943                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.revenue*POU_MASK else 0 end)  POU_REVENUE,
3944                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LABOR_RAW_COST,
3945                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LABOR_BRDN_COST,
3946                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_raw_cost*POU_MASK else 0 end)   POU_EQUIP_RAW_COST,
3947                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.equipment_brdn_cost*POU_MASK else 0 end)   POU_EQUIP_BRDN_COST,
3948 
3949                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_BASE_RAW_COST,
3950                       sum(case when fact.plan_version_id   = base_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_BASE_BRDN_COST,
3951                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)   POU_BASE_LABOR_RAW_COST,
3952                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_BASE_LABOR_BRDN_COST,
3953                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_BASE_EQUIP_RAW_COST,
3954                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_BASE_EQUIP_BRDN_COST,
3955 
3956                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.raw_cost*POU_MASK else 0 end)   POU_LPB_RAW_COST,
3957                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.brdn_cost*POU_MASK else 0 end)   POU_LPB_BRDN_COST,
3958                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_raw_cost*POU_MASK else 0 end)  POU_LPB_LABOR_RAW_COST,
3959                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.labor_brdn_cost*POU_MASK else 0 end)   POU_LPB_LABOR_BRDN_COST,
3960                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_raw_cost*POU_MASK else 0 end) POU_LPB_EQUIP_RAW_COST,
3961                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.equipment_brdn_cost*POU_MASK else 0 end) POU_LPB_EQUIP_BRDN_COST,
3962 
3963                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.LABOR_HRS else 0 end)   LABOR_HOURS,
3964                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.EQUIPMENT_HOURS else 0 end)   EQUIPMENT_HOURS,
3965                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.LABOR_HRS else 0 end)   BASE_LABOR_HOURS,
3966                       sum(case when fact.plan_version_id  = base_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)  BASE_EQUIP_HOURS,
3967                       sum(case when fact.plan_version_id  = lpb_plan_ver_id then fact.LABOR_HRS else 0 end)   LPB_LABOR_HOURS,
3968                       sum(case when fact.plan_version_id   = lpb_plan_ver_id  then fact.EQUIPMENT_HOURS else 0 end)   LPB_EQUIP_HOURS,
3969 
3970                       sum( case when  fact.time_id <= END_PERIOD_ID
3971                            then
3972                            decode( fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_LABOR_HRS, 0)
3973                            else
3974                            NULL
3975                            end
3976                          ) ACT_LABOR_HRS,
3977                       sum( case when  fact.time_id <= END_PERIOD_ID
3978                            then
3979                            decode(fact.plan_version_id, WK_PLAN_VER_ID, fact.ACT_EQUIP_HRS, 0)
3980                            else
3981                            NULL
3982                            end
3983                          ) ACT_EQUIP_HRS,
3984                       sum( case when  fact.time_id <= END_PERIOD_ID
3985                            then
3986                            decode( fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_labor_brdn_cost, 0 )
3987                            else
3988                            NULL
3989                            end
3990                          ) ACT_TXN_LABOR_BRDN_COST,
3991                       sum( case when  fact.time_id <= END_PERIOD_ID
3992                            then
3993                            decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_equip_brdn_cost, 0 )
3994                            else
3995                            NULL
3996                            end
3997                          ) ACT_TXN_EQUIP_BRDN_COST,
3998                       sum( case when  fact.time_id <= END_PERIOD_ID
3999                            then
4000                            decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_raw_cost, 0 )
4001                            else
4002                            NULL
4003                            end
4004                          ) ACT_TXN_RAW_COST,
4005                       sum( case when  fact.time_id <= END_PERIOD_ID
4006                            then
4007                            decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK* fact.act_brdn_cost, 0 )
4008                            else
4009                            NULL
4010                            end
4011                          ) ACT_TXN_BRDN_COST,
4012                       sum( case when  fact.time_id <= END_PERIOD_ID
4013                            then
4014                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*  fact.act_labor_brdn_cost, 0)
4015                            else
4016                            NULL
4017                            end
4018                          ) ACT_PRJ_LABOR_BRDN_COST,
4019                       sum( case when  fact.time_id <= END_PERIOD_ID
4020                            then
4021                            decode( fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*  fact.act_equip_brdn_cost, 0)
4022                            else
4023                            NULL
4024                            end
4025                          ) ACT_PRJ_EQUIP_BRDN_COST,
4026                       sum( case when  fact.time_id <= END_PERIOD_ID
4027                            then
4028                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*  fact.act_raw_cost, 0 )
4029                            else
4030                            NULL
4031                            end
4032                          ) ACT_PRJ_RAW_COST,
4033                       sum( case when  fact.time_id <= END_PERIOD_ID
4034                            then
4035                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*  fact.act_brdn_cost, 0 )
4036                            else
4037                            NULL
4038                            end
4039                          ) ACT_PRJ_BRDN_COST,
4040                       sum( case when  fact.time_id <= END_PERIOD_ID
4041                            then
4042                            decode(fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK*  fact.act_labor_brdn_cost, 0 )
4043                            else
4044                            NULL
4045                            end
4046                          ) ACT_POU_LABOR_BRDN_COST,
4047                       sum( case when  fact.time_id <= END_PERIOD_ID
4048                            then
4049                            decode(fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK*  fact.act_equip_brdn_cost, 0 )
4050                            else
4051                            NULL
4052                            end
4053                          ) ACT_POU_EQUIP_BRDN_COST,
4054                       sum( case when  fact.time_id <= END_PERIOD_ID
4055                            then
4056                            decode(fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK*  fact.act_raw_cost, 0 )
4057                            else
4058                            NULL
4059                            end
4060                          ) ACT_POU_RAW_COST,
4061                       sum( case when  fact.time_id <= END_PERIOD_ID
4062                            then
4063                            decode(fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK*  fact.act_brdn_cost, 0 )
4064                            else
4065                            NULL
4066                            end
4067                          ) ACT_POU_BRDN_COST,
4068 
4069                       sum(case when fact.plan_version_id      = WK_PLAN_VER_ID then fact.ETC_LABOR_HRS else 0 end)  ETC_LABOR_HRS,
4070                       sum(case when fact.plan_version_id      = WK_PLAN_VER_ID then fact.ETC_EQUIP_HRS else 0 end)  ETC_EQUIP_HRS,
4071                       sum(case when fact.plan_version_id   = WK_PLAN_VER_ID then fact.ETC_labor_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_BRDN_COST,
4072                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_brdn_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_BRDN_COST,
4073                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_raw_cost*TXN_MASK else 0 end)   ETC_TXN_RAW_COST,
4074                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_brdn_cost*TXN_MASK else 0 end)   ETC_TXN_BRDN_COST,
4075                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_labor_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_BRDN_COST,
4076                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_brdn_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_BRDN_COST,
4077                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_raw_cost*PRJ_MASK else 0 end)   ETC_PRJ_RAW_COST,
4078                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_brdn_cost*PRJ_MASK else 0 end)   ETC_PRJ_BRDN_COST,
4079                       sum(case when fact.plan_version_id   = WK_PLAN_VER_ID then fact.ETC_labor_brdn_cost*POU_MASK else 0 end)  ETC_POU_LABOR_BRDN_COST,
4080                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_brdn_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_BRDN_COST,
4081                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_raw_cost*POU_MASK else 0 end)   ETC_POU_RAW_COST,
4082                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_brdn_cost*POU_MASK else 0 end)   ETC_POU_BRDN_COST,
4083                       sum( case when  fact.time_id <= END_PERIOD_ID
4084                            then
4085                            decode(fact.plan_version_id , WK_PLAN_VER_ID, TXN_MASK*fact.act_labor_raw_cost,0)
4086                            else
4087                            NULL
4088                            end
4089                          ) ACT_TXN_LABOR_RAW_COST,
4090                       sum( case when  fact.time_id <= END_PERIOD_ID
4091                            then
4092                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK* fact.act_labor_raw_cost,0)
4093                            else
4094                            NULL
4095                            end
4096                          ) ACT_PRJ_LABOR_RAW_COST,
4097                       sum( case when  fact.time_id <= END_PERIOD_ID
4098                            then
4099                            decode( fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK* fact.act_labor_raw_cost,0)
4100                            else
4101                            NULL
4102                            end
4103                          ) ACT_POU_LABOR_RAW_COST,
4104                       sum( case when  fact.time_id <= END_PERIOD_ID
4105                            then
4106                            decode(fact.plan_version_id, WK_PLAN_VER_ID, TXN_MASK*fact.act_equip_raw_cost,0)
4107                            else
4108                            NULL
4109                            end
4110                          ) ACT_TXN_EQUIP_RAW_COST,
4111                       sum( case when  fact.time_id <= END_PERIOD_ID
4112                            then
4113                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK* fact.act_equip_raw_cost,0)
4114                            else
4115                            NULL
4116                            end
4117                          ) ACT_PRJ_EQUIP_RAW_COST,
4118                       sum( case when  fact.time_id <= END_PERIOD_ID
4119                            then
4120                            decode( fact.plan_version_id, WK_PLAN_VER_ID, POU_MASK* fact.act_equip_raw_cost,0)
4121                            else
4122                            NULL
4123                            end
4124                          ) ACT_POU_EQUIP_RAW_COST,
4125 
4126                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_labor_raw_cost*TXN_MASK else 0 end)  ETC_TXN_LABOR_RAW_COST,
4127                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_labor_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_LABOR_RAW_COST,
4128                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_labor_raw_cost*POU_MASK else 0 end)  ETC_POU_LABOR_RAW_COST,
4129                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_raw_cost*TXN_MASK else 0 end)  ETC_TXN_EQUIP_RAW_COST,
4130                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_raw_cost*PRJ_MASK else 0 end)  ETC_PRJ_EQUIP_RAW_COST,
4131                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID then fact.ETC_equip_raw_cost*POU_MASK else 0 end)  ETC_POU_EQUIP_RAW_COST,
4132                         /* Retrival of Project Level Data Starts*/
4133                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_RAW_COST,
4134                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BRDN_COST,
4135                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.revenue*PRJ_MASK*ROLLUP_MASK else 0 end)  P_REVENUE,
4136                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LBR_RAW_COST,
4137                       sum(case when fact.plan_version_id   = WK_PLAN_VER_ID   then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_LBR_BRDN_COST,
4138                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_EQP_RAW_COST,
4139                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_EQP_BRDN_COST,
4140                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_RAW_COST,
4141                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_BRDN_COST,
4142                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_RAW_COST,
4143                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_BASE_LBR_BRDN_COST,
4144                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_RAW_COST,
4145                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_BASE_EQP_BRDN_COST,
4146                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_RAW_COST,
4147                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_BRDN_COST,
4148                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_RAW_COST,
4149                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_LBR_BRDN_COST,
4150                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.equipment_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_RAW_COST,
4151                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.equipment_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end)  P_LPB_EQP_BRDN_COST,
4152                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LBR_HOURS,
4153                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID   then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_EQP_HOURS,
4154                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_BASE_LBR_HOURS,
4155                       sum(case when fact.plan_version_id  = base_plan_ver_id then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_BASE_EQP_HOURS,
4156                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.LABOR_HRS*ROLLUP_MASK else 0 end) P_LPB_LBR_HOURS,
4157                       sum(case when fact.plan_version_id  = lpb_plan_ver_id  then fact.EQUIPMENT_HOURS*ROLLUP_MASK else 0 end) P_LPB_EQP_HOURS,
4158 
4159 
4160                       sum( case when  fact.time_id <= END_PERIOD_ID
4161                            then
4162                            decode(fact.plan_version_id, WK_PLAN_VER_ID, ROLLUP_MASK*fact.ACT_LABOR_HRS, 0)
4163                            else
4164                            NULL
4165                            end
4166                          ) P_ACT_LBR_HOURS,
4167                       sum( case when  fact.time_id <= END_PERIOD_ID
4168                            then
4169                            decode(fact.plan_version_id, WK_PLAN_VER_ID, ROLLUP_MASK*fact.ACT_EQUIP_HRS, 0)
4170                            else
4171                            NULL
4172                            end
4173                          ) P_ACT_EQP_HOURS,
4174                       sum( case when  fact.time_id <= END_PERIOD_ID
4175                            then
4176                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK* fact.act_labor_brdn_cost, 0)
4177                            else
4178                            NULL
4179                            end
4180                          ) P_ACT_LBR_BRDN_COST,
4181                       sum( case when  fact.time_id <= END_PERIOD_ID
4182                            then
4183                            decode( fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK*  fact.act_equip_brdn_cost, 0)
4184                            else
4185                            NULL
4186                            end
4187                          ) P_ACT_EQP_BRDN_COST,
4188                       sum( case when  fact.time_id <= END_PERIOD_ID
4189                            then
4190                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK*  fact.act_raw_cost , 0 )
4191                            else
4192                            NULL
4193                            end
4194                          ) P_ACT_RAW_COST,
4195                       sum( case when  fact.time_id <= END_PERIOD_ID
4196                            then
4197                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK*  fact.act_brdn_cost, 0 )
4198                            else
4199                            NULL
4200                            end
4201                          ) P_ACT_BRDN_COST,
4202                        sum( case when  fact.time_id <= END_PERIOD_ID
4203                            then
4204                            decode( fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK* fact.act_labor_raw_cost,0)
4205                            else
4206                            NULL
4207                            end
4208                          ) P_ACT_LBR_RAW_COST,
4209                        sum( case when  fact.time_id <= END_PERIOD_ID
4210                            then
4211                            decode(fact.plan_version_id, WK_PLAN_VER_ID, PRJ_MASK*ROLLUP_MASK* fact.act_equip_raw_cost ,0)
4212                            else
4213                            NULL
4214                            end
4215                          ) P_ACT_EQP_RAW_COST,
4216 
4217                       sum(case when fact.plan_version_id   = WK_PLAN_VER_ID  then fact.ETC_EQUIP_HRS*ROLLUP_MASK else 0 end) P_ETC_EQP_HOURS,
4218                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_LABOR_HRS*ROLLUP_MASK else 0 end) P_ETC_LBR_HOURS,
4219                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_RAW_COST,
4220                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_BRDN_COST,
4221                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_labor_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_BRDN_COST,
4222                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_equip_brdn_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_BRDN_COST,
4223                       sum(case when fact.plan_version_id   = WK_PLAN_VER_ID  then fact.ETC_labor_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_LBR_RAW_COST,
4224                       sum(case when fact.plan_version_id  = WK_PLAN_VER_ID  then fact.ETC_equip_raw_cost*PRJ_MASK*ROLLUP_MASK else 0 end) P_ETC_EQP_RAW_COST
4225                       /* Retrival of Project Level Data Ends*/
4226         FROM
4227         (
4228                         SELECT
4229                                  PROJECT_ID                ,
4230                                  PROJECT_ORG_ID            ,
4231                                  PROJECT_ORGANIZATION_ID   ,
4232                                  PROJECT_ELEMENT_ID        ,
4233                                  TIME_ID                   ,
4234                                  PERIOD_TYPE_ID            ,
4235                                  CALENDAR_TYPE             ,
4236                                  RBS_AGGR_LEVEL            ,
4237                                  WBS_ROLLUP_FLAG           ,
4238                                  PRG_ROLLUP_FLAG           ,
4239                                  decode ( cc_src.curr_type, 'TXN', 16, 'PRJ', 8, 'POU', 4) CURR_RECORD_TYPE_ID       ,
4240                                  CURRENCY_CODE             ,
4241                                  RBS_ELEMENT_ID            ,
4242                                  RBS_VERSION_ID            ,
4243                                  PLAN_VERSION_ID           ,
4244                                  -- PLAN_TYPE_ID              ,
4245                                  RAW_COST                  ,
4246                                  BRDN_COST                 ,
4247                                  REVENUE                   ,
4248                                  BILL_RAW_COST             ,
4249                                  BILL_BRDN_COST            ,
4250                                  BILL_LABOR_RAW_COST       ,
4251                                  BILL_LABOR_BRDN_COST      ,
4252                                  decode ( cc_src.curr_type, 'PRJ', BILL_LABOR_HRS, 0) BILL_LABOR_HRS      ,
4253                                  EQUIPMENT_RAW_COST        ,
4254                                  EQUIPMENT_BRDN_COST       ,
4255                                  CAPITALIZABLE_RAW_COST    ,
4256                                  CAPITALIZABLE_BRDN_COST   ,
4257                                  LABOR_RAW_COST            ,
4258                                  LABOR_BRDN_COST           ,
4259                                  decode ( cc_src.curr_type, 'PRJ', LABOR_HRS, 0) LABOR_HRS      ,
4260                                  LABOR_REVENUE             ,
4261                                  decode ( cc_src.curr_type, 'PRJ', EQUIPMENT_HOURS, 0) EQUIPMENT_HOURS      ,
4262                                  decode ( cc_src.curr_type, 'PRJ', BILLABLE_EQUIPMENT_HOURS, 0) BILLABLE_EQUIPMENT_HOURS      ,
4263                                  SUP_INV_COMMITTED_COST    ,
4264                                  PO_COMMITTED_COST         ,
4265                                  PR_COMMITTED_COST         ,
4266                                  OTH_COMMITTED_COST        ,
4267                                  CUSTOM1                   ,
4268                                  CUSTOM2                   ,
4269                                  CUSTOM3                   ,
4270                                  CUSTOM4                   ,
4271                                  CUSTOM5                   ,
4272                                  CUSTOM6                   ,
4273                                  CUSTOM7                   ,
4274                                  CUSTOM8                   ,
4275                                  CUSTOM9                   ,
4276                                  CUSTOM10                  ,
4277                                  CUSTOM11                  ,
4278                                  CUSTOM12                  ,
4279                                  CUSTOM13                  ,
4280                                  CUSTOM14                  ,
4281                                  CUSTOM15                  ,
4282                                  decode ( cc_src.curr_type, 'PRJ', ACT_LABOR_HRS, 0) ACT_LABOR_HRS      ,
4283                                  decode ( cc_src.curr_type, 'PRJ', ACT_EQUIP_HRS, 0) ACT_EQUIP_HRS      ,
4284                                  ACT_LABOR_BRDN_COST       ,
4285                                  ACT_EQUIP_BRDN_COST       ,
4286                                  ACT_BRDN_COST             ,
4287                                  decode ( cc_src.curr_type, 'PRJ', ETC_LABOR_HRS, 0) ETC_LABOR_HRS      ,
4288                                  decode ( cc_src.curr_type, 'PRJ', ETC_EQUIP_HRS, 0) ETC_EQUIP_HRS      ,
4289                                  ETC_LABOR_BRDN_COST       ,
4290                                  ETC_EQUIP_BRDN_COST       ,
4291                                  ETC_BRDN_COST             ,
4292                                  ACT_RAW_COST              ,
4293                                  ACT_REVENUE               ,
4294                                  ETC_RAW_COST              ,
4295                                  ACT_LABOR_RAW_COST        ,
4296                                  ACT_EQUIP_RAW_COST        ,
4297                                  ETC_LABOR_RAW_COST        ,
4298                                  ETC_EQUIP_RAW_COST        ,
4299                                  decode(fact.prg_rollup_flag,'N',1,0)  ROLLUP_MASK,
4300                                  decode ( cc_src.curr_type, 'TXN',1,0)  TXN_MASK,
4301                                  decode ( cc_src.curr_type, 'PRJ',1,0)  PRJ_MASK,
4302                                  decode ( cc_src.curr_type, 'POU',1,0)  POU_MASK
4303                         FROM
4304                                 pji_fp_xbs_accum_f fact,
4305                                 /*  (
4306                                             SELECT 'TXN' curr_type FROM DUAL
4307                                             UNION ALL
4308                                             SELECT 'PRJ' curr_type FROM DUAL
4309                                             UNION ALL
4310                                             SELECT 'POU' curr_type FROM DUAL
4311                                   ) cc_src commented for bug 14040849 */
4312                                 ( SELECT  DECODE( ROWNUM, 1, 'TXN',2, 'PRJ', 3,'POU') CURR_TYPE
4313                                   FROM DUAL     CONNECT BY ROWNUM < 4   ) cc_src -- added for bug 14040849
4314                        WHERE 1=1
4315                          and ( decode ( cc_src.curr_type, 'TXN', DECODE(BITAND(fact.curr_record_type_id, 16), 16, 'a'), 'b') = 'a'
4316                             or decode ( cc_src.curr_type, 'PRJ', DECODE(BITAND(fact.curr_record_type_id ,  8),  8, 'a'), 'b') = 'a'
4317                             or decode ( cc_src.curr_type, 'POU', DECODE(BITAND(fact.curr_record_type_id,  4),  4, 'a'), 'b') = 'a' )
4318                ) fact,
4319                  pji_plan_extr_tmp head
4320                 WHERE    1=1
4321                         and fact.PROJECT_ID   = head.PROJECT_ID
4322                         and fact.PLAN_VERSION_ID in (head.WK_PLAN_VER_ID , head.BASE_PLAN_VER_ID,
4323                                                         head.LPB_PLAN_VER_ID )
4324                         and fact.PROJECT_ELEMENT_ID = nvl(head.PROJ_ELEM_ID, fact.PROJECT_ELEMENT_ID )
4325                         and fact.CALENDAR_TYPE = CAL_TYPE
4326                         and fact.PERIOD_TYPE_ID = PERIOD_ID
4327                         and BITAND(fact.CURR_RECORD_TYPE_ID,28) <= 28
4328                         and BITAND(fact.CURR_RECORD_TYPE_ID,28) >= 4
4329                         and fact.RBS_AGGR_LEVEL = 'T'
4330                         and fact.prg_rollup_flag in (p_program_rollup_flag,'N')
4331                         and fact.rbs_version_id = -1 /* Bug 6930211 */
4332               GROUP BY
4333                       fact.PROJECT_ID,
4334                       fact.PROJECT_ELEMENT_ID,
4335                       fact.CALENDAR_TYPE,
4336                       head.WK_PLAN_VER_ID,
4337                       head.STRUCT_VER_ID;
4338 
4339     PRINT_TIME (  ' populate_workplan_data 0003.12 '||SQL%ROWCOUNT ) ;
4340 
4341      IF g_debug_mode='Y' THEN
4342       --  debug_accum ; /* bug#3993830 */
4343       null;
4344      END IF;
4345 
4346 
4347 
4348 
4349     DELETE FROM PJI_PLAN_EXTR_TMP;
4350 
4351         x_return_status := l_return_status;
4352 
4353     PRINT_TIME (  ' populate_workplan_data 0003.13 ' ) ;
4354 
4355         EXCEPTION
4356                   WHEN OTHERS THEN
4357 
4358                     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
4359                     ( p_package_name   => g_package_name
4360                     , p_procedure_name => 'POPULATE_WORKPLAN_DATA'
4361                     , x_return_status =>  x_return_status ) ;
4362 
4363                     RAISE;
4364         END;
4365 
4366 
4367 PROCEDURE FPM_UPGRADE_INITIALIZE IS
4368 
4369   c_upgr_proc_name  VARCHAR2(30) := 'PJI_FPM_UPGRADE';
4370   l_worker_id       NUMBER;
4371   l_process         VARCHAR2(30);
4372   l_extr_start_date DATE;
4373   l_pa_period_flag  VARCHAR2(10);
4374   l_gl_period_flag  VARCHAR2(10);
4375   l_return_status   VARCHAR2(100);
4376 
4377 BEGIN
4378 
4379     PJI_PJP_FP_CURR_WRAP.INIT_ERR_STACK
4380     ( p_package_name   => g_package_name
4381     , x_return_status  => l_return_status );
4382 
4383     l_worker_id       := 1;
4384     l_process         := PJI_PJP_SUM_MAIN.g_process || l_worker_id;
4385     l_extr_start_date := PJI_UTILS.GET_EXTRACTION_START_DATE;             PRINT_TIME ( ' FPM_UPGRADE_INITIALIZE  001 ' ) ;
4386 
4387     Pji_utils.set_parameter(c_upgr_proc_name, 'P');             -- table pji_system_parameters
4388     PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process, 'EXTRACTION_TYPE', 'FULL');  -- table pji_system_parameters
4389     PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process, 'PROCESS_RUNNING', 'Y');     -- table pji_system_parameters
4390     PJI_PJP_EXTRACTION_UTILS.SET_WORKER_ID(l_worker_id);     -- Private global pkg var: PJI_PJP_EXTRACTION_UTILS.g_worker_id.
4391 
4392                                                               PRINT_TIME ( ' FPM_UPGRADE_INITIALIZE  002 ' ) ;
4393 
4394 
4395     insert into PJI_SYSTEM_CONFIG_HIST
4396     (
4397       REQUEST_ID,
4398       USER_NAME,
4399       PROCESS_NAME,
4400       RUN_TYPE,
4401       PARAMETERS,
4402       CONFIG_PROJ_PERF_FLAG,
4403       CONFIG_COST_FLAG,
4404       CONFIG_PROFIT_FLAG,
4405       CONFIG_UTIL_FLAG,
4406       START_DATE,
4407       END_DATE,
4408       COMPLETION_TEXT
4409     )
4410     select
4411       FND_GLOBAL.CONC_REQUEST_ID                         REQUEST_ID,
4412       substr(FND_GLOBAL.USER_NAME, 1, 10)                USER_NAME,
4413       l_process                                          PROCESS_NAME,
4414       'FPM_UPGRADE'                                      RUN_TYPE,
4415       null                                               PARAMETERS,
4416       null                                               CONFIG_PROJ_PERF_FLAG,
4417       null                                               CONFIG_COST_FLAG,
4418       null                                               CONFIG_PROFIT_FLAG,
4419       null                                               CONFIG_UTIL_FLAG,
4420       sysdate                                            START_DATE,
4421       null                                               END_DATE,
4422       null                                               COMPLETION_TEXT
4423     from
4424       dual;
4425 
4426     insert into PJI_PJP_PROJ_BATCH_MAP
4427     (
4428       WORKER_ID,
4429       PROJECT_ID,
4430       PJI_PROJECT_STATUS,
4431       EXTRACTION_TYPE,
4432       EXTRACTION_STATUS,
4433       PROJECT_TYPE,
4434       PROJECT_ORG_ID,
4435       PROJECT_ORGANIZATION_ID,
4436       PROJECT_TYPE_CLASS,
4437       PRJ_CURRENCY_CODE,
4438       PROJECT_ACTIVE_FLAG
4439     )
4440     select
4441       l_worker_id,
4442       prj.PROJECT_ID,
4443       null,
4444       null,
4445       'F',
4446       prj.PROJECT_TYPE,
4447       prj.ORG_ID,
4448       prj.CARRYING_OUT_ORGANIZATION_ID,
4449       decode(pt.PROJECT_TYPE_CLASS_CODE,
4450              'CAPITAL',  'C',
4451              'CONTRACT', 'B',
4452              'INDIRECT', 'I'),
4453       prj.PROJECT_CURRENCY_CODE,
4454       null
4455     from
4456       PA_PROJECTS_ALL prj,
4457       PA_PROJECT_TYPES_ALL pt
4458     where
4459       -- We cannot depend on extraction start date as it will not be
4460       -- set at the time of upgrade.
4461       nvl(prj.CLOSED_DATE, nvl(l_extr_start_date, to_date(1, 'J')))
4462         >= nvl(l_extr_start_date, to_date(1, 'J')) and
4463       prj.ORG_ID                               = pt.ORG_ID and
4464       prj.PROJECT_TYPE                         = pt.PROJECT_TYPE and
4465       prj.PROJECT_ID in (select ver.PROJECT_ID
4466                          from   PA_BUDGET_VERSIONS ver
4467                          where  ver.BUDGET_TYPE_CODE is null);
4468 
4469     PRINT_TIME ( ' FPM_UPGRADE_INITIALIZE  004 ' ) ;
4470 
4471     SELECT PJI_UTILS.GET_SETUP_PARAMETER('PA_PERIOD_FLAG') , PJI_UTILS.GET_SETUP_PARAMETER('GL_PERIOD_FLAG')
4472     INTO   l_pa_period_flag, l_gl_period_flag
4473     FROM   DUAL;
4474 
4475     if (l_pa_period_flag = 'N') then
4476       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
4477                                              'PA_CALENDAR_FLAG',
4478                                              'N');
4479     else
4480       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
4481                                              'PA_CALENDAR_FLAG',
4482                                               'Y');
4483     end if;
4484 
4485     if (l_gl_period_flag = 'N') then
4486       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
4487                                              'GL_CALENDAR_FLAG',
4488                                              'N');
4489     else
4490       PJI_PROCESS_UTIL.SET_PROCESS_PARAMETER(l_process,
4491                                              'GL_CALENDAR_FLAG',
4492                                              'Y');
4493     end if;                                                                PRINT_TIME ( ' FPM_UPGRADE_INITIALIZE  004 ' ) ;
4494 
4495     --
4496     -- 4682341
4497     -- Parameter 'EXTRACT_ETC_FULLLOAD' has been added to check whether
4498     --   etc (due to act or overridden) is not extracted twice after upgrade
4499     --   and initial load.
4500     -- Assumption: After fpm upgrade, an initial load is run for *All* projects
4501     --   before new actuals are entered in the system.
4502     -- Use: If the value of this param is 'Y', then etc from get plan res actuals will
4503     --   be extracted during FULL sumz.
4504 
4505     DELETE FROM pji_system_parameters
4506     WHERE  name = 'EXTRACT_ETC_FULLLOAD';
4507 
4508     INSERT INTO pji_system_parameters ( name, value )
4509     VALUES (  'EXTRACT_ETC_FULLLOAD' , 'N' );
4510 
4511     commit;
4512 
4513 EXCEPTION
4514   WHEN OTHERS THEN
4515 
4516     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
4517     ( p_package_name   => g_package_name
4518     , p_procedure_name => 'FPM_UPGRADE_INITIALIZE'
4519     , x_return_status =>  l_return_status ) ;
4520 
4521     RAISE;
4522 END;
4523 
4524 
4525 PROCEDURE FPM_UPGRADE_END IS
4526 
4527   l_worker_id       NUMBER;
4528   l_process         VARCHAR2(30);
4529   l_extr_start_date DATE;
4530   l_return_status   VARCHAR2(100);
4531   l_sqlerrm         VARCHAR2(240);
4532 
4533 BEGIN
4534 
4535     PJI_PJP_FP_CURR_WRAP.INIT_ERR_STACK
4536     ( p_package_name   => g_package_name
4537     , x_return_status  => l_return_status );
4538 
4539   l_worker_id       := 1;
4540   l_process         := PJI_PJP_SUM_MAIN.g_process || l_worker_id;
4541   l_extr_start_date := PJI_UTILS.GET_EXTRACTION_START_DATE;
4542 
4543   PJI_PJP_SUM_ROLLUP.CLEANUP(l_worker_id);
4544 
4545   Pji_utils.set_parameter('PJI_FPM_UPGRADE', 'C');
4546 
4547   PJI_PROCESS_UTIL.WRAPUP_PROCESS(l_process);
4548 
4549     update PJI_SYSTEM_CONFIG_HIST
4550     set    END_DATE = sysdate,
4551            COMPLETION_TEXT = 'Normal completion'
4552     where  PROCESS_NAME = l_process and
4553            RUN_TYPE = 'FPM_UPGRADE' and
4554            END_DATE is null;
4555 
4556   PJI_UTILS.SET_PARAMETER('PJP_FPM_UPGRADE_DATE',
4557                           to_char(sysdate, PJI_PJP_SUM_MAIN.g_date_mask));
4558 
4559   DELETE FROM PJI_PJP_PROJ_BATCH_MAP WHERE WORKER_ID = l_worker_id;
4560 
4561   commit;
4562 
4563 EXCEPTION
4564   WHEN OTHERS THEN
4565 
4566     rollback;
4567 
4568     PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
4569     ( p_package_name   => g_package_name
4570     , p_procedure_name => 'FPM_UPGRADE_END'
4571     , x_return_status =>  l_return_status ) ;
4572 
4573     l_sqlerrm := substr(sqlerrm, 1, 240);
4574 
4575     update PJI_SYSTEM_CONFIG_HIST
4576     set    END_DATE = sysdate,
4577            COMPLETION_TEXT = l_sqlerrm
4578     where  RUN_TYPE = 'FPM_UPGRADE' and
4579            END_DATE is null;
4580 
4581     commit;
4582 
4583     RAISE;
4584 END;
4585 
4586 
4587 PROCEDURE REMAP_RBS_TXN_ACCUM_HDRS (
4588      x_return_status                    OUT NOCOPY      VARCHAR2
4589     ,x_msg_data                         OUT NOCOPY      VARCHAR2
4590     ,x_msg_count                        OUT NOCOPY      NUMBER ) IS
4591 
4592   CURSOR c_current_rbs_versions IS
4593   SELECT prv.RBS_VERSION_ID
4594   FROM pa_rbs_versions_b prv
4595   WHERE 1=1
4596     AND prv.CURRENT_REPORTING_FLAG = 'Y'
4597     AND prv.STATUS_CODE            = 'FROZEN';
4598     --AND prv.RBS_VERSION_ID not in ( 10000, 10142, 10224, 10821);
4599 
4600   CURSOR c_plan_versions (l_rbs_version_id NUMBER) IS -- This can be combined with the previous cursor.
4601   SELECT bv.budget_version_id, bv.project_id
4602   FROM pa_budget_versions bv
4603      , pa_proj_fp_options fpo
4604   WHERE 1=1
4605     AND bv.budget_version_id = fpo.fin_plan_version_id
4606     AND bv.fin_plan_type_id = fpo.fin_plan_type_id
4607     AND fpo.project_id = bv.project_id
4608     AND bv.version_type is not NULL
4609     AND bv.fin_plan_type_id is not NULL
4610     AND fpo.fin_plan_option_level_code = 'PLAN_VERSION'
4611     AND bv.version_type IN ( 'ALL' , 'COST' , 'REVENUE')
4612     AND fpo.RBS_VERSION_ID = l_rbs_version_id;
4613 
4614    l_res_list_member_id_tbl       SYSTEM.pa_num_tbl_type         := SYSTEM.pa_num_tbl_type();
4615    l_txn_source_id_tbl            SYSTEM.pa_num_tbl_type         := SYSTEM.pa_num_tbl_type();
4616    l_rbs_element_id_tbl           SYSTEM.pa_num_tbl_type         := SYSTEM.pa_num_tbl_type();
4617    l_txn_accum_header_id_tbl  SYSTEM.pa_num_tbl_type             := SYSTEM.pa_num_tbl_type();
4618 
4619 BEGIN
4620 
4621   x_msg_count := 0;
4622   x_return_status := FND_API.G_RET_STS_SUCCESS;
4623   pa_debug.reset_curr_function;
4624 
4625   /* Added for bug 13030627 */
4626   if PJI_UTILS.GET_PARAMETER('PJP_SIN_PRG') = 'Y' then
4627 
4628      PJI_PJP_PRG_PERF_ALL.REMAP_RBS_TXN_ACCUM_HDRS(
4629      x_return_status  => x_return_status
4630     ,x_msg_data   => x_msg_data
4631     ,x_msg_count  => x_msg_count);
4632 
4633   else
4634   /* Added for bug 13030627 */
4635 
4636 /*  UPDATE pa_resource_assignments
4637   SET    txn_accum_header_id = NULL;      */
4638 
4639   FOR l_curr_rbs_vers IN c_current_rbs_versions LOOP
4640 
4641 
4642     FOR l_plan_versions in c_plan_versions(l_curr_rbs_vers.RBS_VERSION_ID) LOOP
4643 
4644      UPDATE pa_resource_assignments
4645       SET    txn_accum_header_id = NULL
4646       where budget_version_id = l_plan_versions.budget_version_id
4647       and project_id =l_plan_versions.project_id
4648       and txn_accum_header_id is not null;
4649 
4650      BEGIN
4651       pa_rlmi_rbs_map_pub.Map_Rlmi_Rbs (
4652            p_budget_version_id  => l_plan_versions.budget_version_id
4653           ,p_project_id                   => l_plan_versions.project_id
4654           ,p_rbs_version_id => l_curr_rbs_vers.RBS_VERSION_ID
4655           ,p_calling_process => 'RBS_REFRESH'
4656           ,p_calling_context => 'SELF_SERVICE'
4657           ,p_process_code => 'RBS_MAP'
4658           ,p_calling_mode => 'BUDGET_VERSION'
4659           ,x_txn_source_id_tab => l_txn_source_id_tbl
4660           ,x_res_list_member_id_tab       => l_res_list_member_id_tbl
4661           ,x_rbs_element_id_tab           => l_rbs_element_id_tbl
4662           ,x_txn_accum_header_id_tab      => l_txn_accum_header_id_tbl
4663           ,x_return_status => x_return_status
4664           ,x_msg_count => x_msg_count
4665           ,x_msg_data => x_msg_data);
4666 
4667 
4668       FORALL i IN l_txn_source_id_tbl.FIRST..l_txn_source_id_tbl.LAST
4669         UPDATE pa_resource_assignments
4670         SET TXN_ACCUM_HEADER_ID = l_txn_accum_header_id_tbl(i),
4671             RBS_ELEMENT_ID      = l_rbs_element_id_tbl(i)
4672         WHERE
4673             RESOURCE_ASSIGNMENT_ID = l_txn_source_id_tbl(i);
4674 
4675    EXCEPTION
4676      WHEN OTHERS THEN
4677         null;
4678    END;
4679 
4680    COMMIT;
4681 
4682     END LOOP;
4683   END LOOP;
4684 
4685   end if;
4686 
4687 EXCEPTION
4688 
4689   WHEN OTHERS THEN
4690     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4691     x_msg_count     := 1;
4692     x_msg_data      := SQLERRM;
4693     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4694                              p_procedure_name => 'REMAP_RBS_TXN_ACCUM_HDRS');
4695     RAISE;
4696 END;
4697 
4698 
4699 
4700 ----------
4701 -- Print time API to measure time taken by each api. Also useful for debugging.
4702 ----------
4703 PROCEDURE PRINT_TIME(p_tag IN VARCHAR2) IS
4704 BEGIN
4705   PJI_PJP_FP_CURR_WRAP.print_time(p_tag);
4706 EXCEPTION
4707   WHEN OTHERS THEN
4708     FND_MSG_PUB.add_exc_msg( p_pkg_name       => g_package_name ,
4709                              p_procedure_name => 'PRINT_TIME');
4710     RAISE;
4711 END;
4712 
4713 PROCEDURE get_msp_actuals_data(
4714        p_project_id IN NUMBER,
4715        p_calendar_type IN VARCHAR2,
4716        p_resource_list_id IN NUMBER DEFAULT NULL,
4717        p_task_res_flag IN VARCHAR2,
4718        p_end_date IN DATE,
4719        x_return_status OUT NOCOPY VARCHAR2,
4720        x_msg_code OUT NOCOPY VARCHAR2) IS
4721 
4722     l_struct_element_id NUMBER;
4723     l_project_id_tab    SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type();
4724     l_resource_list_id_tab     SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type();
4725     l_struct_ver_id_tab SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type();
4726     l_calendar_type_tab SYSTEM.pa_varchar2_1_tbl_type :=
4727 SYSTEM.pa_varchar2_1_tbl_type();
4728     l_end_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
4729 
4730    l_populate_in_tbl     populate_in_tbl_type ;
4731    l_populate_in_rec    populate_in_rec_type;
4732 
4733 BEGIN
4734 
4735       SELECT wbs_version_id
4736       INTO l_struct_element_id
4737       FROM pji_pjp_wbs_header
4738       WHERE project_id = p_project_id AND plan_version_id=-1;
4739 
4740       l_populate_in_rec.project_id :=   p_project_id;
4741       l_populate_in_rec.struct_ver_id           :=        l_struct_element_id;
4742       l_populate_in_rec.base_struct_ver_id      :=  NULL;
4743       l_populate_in_rec.plan_version_id      := NULL;
4744       l_populate_in_rec.as_of_date               := p_end_date;
4745       l_populate_in_rec.project_element_id      :=         NULL;
4746       l_populate_in_tbl(1) :=   l_populate_in_rec;
4747 
4748 
4749       l_project_id_tab.extend;
4750       l_resource_list_id_tab.extend;
4751       l_struct_ver_id_tab.extend;
4752       l_calendar_type_tab.extend;
4753       l_end_date_tab.extend;
4754 
4755 
4756       l_project_id_tab(1) := p_project_id;
4757       l_resource_list_id_tab(1) := p_resource_list_id;
4758       l_struct_ver_id_tab(1) := l_struct_element_id;
4759       l_calendar_type_tab(1) := p_calendar_type;
4760       l_end_date_tab(1) := p_end_date;
4761 
4762       IF(p_task_res_flag ='R') THEN
4763           get_summarized_data(
4764               p_project_ids => l_project_id_tab,
4765               p_resource_list_ids => l_resource_list_id_tab,
4766               p_struct_ver_ids => l_struct_ver_id_tab,
4767               p_end_date => l_end_date_tab,
4768               p_calendar_type => l_calendar_type_tab,
4769               p_extraction_type => 'FULL',
4770               p_record_type => 'NYYY',
4771               p_currency_type => 4,
4772               x_return_status => x_return_status,
4773               x_msg_code => x_msg_code);
4774        ELSE IF(p_task_res_flag='T') THEN
4775             populate_workplan_data (
4776                     p_populate_in_tbl  =>        l_populate_in_tbl,
4777                     p_calling_context =>        'MSP',  -- added for bug 5751250
4778                         x_return_status     => x_return_status,
4779                         x_msg_code          => x_msg_code
4780                            );
4781           end if;
4782        END IF;
4783 EXCEPTION
4784          WHEN OTHERS THEN
4785               PJI_PJP_FP_CURR_WRAP.EXCP_HANDLER
4786               (p_package_name   => g_package_name
4787               , p_procedure_name => 'GET_MSP_ACTUALS_DATA'
4788               , x_return_status =>  x_return_status ) ;
4789 END;
4790 
4791 
4792 
4793 END PJI_FM_XBS_ACCUM_UTILS;