[Home] [Help]
PACKAGE BODY: APPS.PJI_PMV_PROFITABILITY
Source
1 PACKAGE BODY PJI_PMV_PROFITABILITY AS
2 /* $Header: PJIRF04B.pls 120.6 2005/11/24 07:22:41 appldev noship $ */
3
4 G_Report_Cost_Type VARCHAR2(2);
5
6 PROCEDURE GET_SQL_PJI_REP_PP1(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
7 , x_PMV_Sql OUT NOCOPY VARCHAR2
8 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
9 IS
10 l_Err_Message VARCHAR2(3200);
11 l_PMV_Sql VARCHAR2(3200);
12 BEGIN
13
14 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
15 , P_SELECT_LIST =>
16 ' FACT.CT_REVENUE "PJI_REP_MSR_14"
17 , FACT.CT_MARGIN_PERCENT "PJI_REP_MSR_15"
18 , FACT.REVENUE "PJI_REP_MSR_16"
19 , FACT.MARGIN_PERCENT "PJI_REP_MSR_17"
20 , FACT.CT_BURDENED_COST "PJI_REP_MSR_19"
21 , FACT.BURDENED_COST "PJI_REP_MSR_8"
22 , FACT.REVENUE "PJI_REP_MSR_1"
23 , FACT.MARGIN "PJI_REP_MSR_2"
24 , FACT.REVENUE "PJI_REP_MSR_7"
25 , FACT.REV_CHANGE_PERCENT "PJI_REP_MSR_11"
26 , FACT.MARGIN "PJI_REP_MSR_9"
27 , FACT.MAR_CHANGE_PERCENT "PJI_REP_MSR_12"
28 , FACT.MARGIN_PERCENT "PJI_REP_MSR_10"
29 , FACT.MAR_PERCENT_CHANGE "PJI_REP_MSR_13"
30 , FACT.CT_MARGIN "PJI_REP_MSR_4"
31 , FACT.MARGIN "PJI_REP_MSR_3"
32 , FACT.PJI_REP_TOTAL_1 "PJI_REP_TOTAL_1"
33 , FACT.PJI_REP_TOTAL_11 "PJI_REP_TOTAL_2"
34 , FACT.PJI_REP_TOTAL_14 "PJI_REP_TOTAL_3"
35 , FACT.PJI_REP_TOTAL_15 "PJI_REP_TOTAL_4"
36 , FACT.PJI_REP_TOTAL_16 "PJI_REP_TOTAL_5"
37 , FACT.PJI_REP_TOTAL_5 "PJI_REP_TOTAL_6"
38 , FACT.PJI_REP_TOTAL_12 "PJI_REP_TOTAL_7"
39 , FACT.PJI_REP_TOTAL_1 "PJI_REP_TOTAL_8"
40 , FACT.PJI_REP_TOTAL_11 "PJI_REP_TOTAL_9"
41 , FACT.PJI_REP_TOTAL_6 "PJI_REP_TOTAL_10"
42 , FACT.PJI_REP_TOTAL_9 "PJI_REP_TOTAL_11"
43 , FACT.PJI_REP_TOTAL_9 "PJI_REP_TOTAL_12"
44 , FACT.PJI_REP_TOTAL_10 "PJI_REP_TOTAL_13"
45 , FACT.PJI_REP_TOTAL_1 "PJI_REP_TOTAL_14"
46 , FACT.PJI_REP_TOTAL_2 "PJI_REP_TOTAL_15"
47 , FACT.PJI_REP_TOTAL_9 "PJI_REP_TOTAL_16" '
48 , P_SQL_STATEMENT => x_PMV_Sql
49 , P_PMV_OUTPUT => x_PMV_Output
50 , p_Region_Code => 'PJI_REP_PP1'
51 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PPSUM'
52 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
53 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
54 ', <<CURRENCY+FII_CURRENCIES>>'||
55 ', <<AS_OF_DATE>>'||
56 ', <<TIME_COMPARISON_TYPE>>'||
57 ', <<PERIOD_TYPE>>'||
58 ', <<VIEW_BY>>'||
59 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
60 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
61 ', NULL'||
62 ', NULL'||
63 ', <<PROJECT REVENUE CATEGORY+PJI_REVENUE_CATEGORIES>>'||
64 ', <<PROJECT REVENUE CATEGORY+PJI_EXP_EVT_TYPES>>'||
65 ', NULL'
66 );
67 END GET_SQL_PJI_REP_PP1;
68
69 PROCEDURE GET_SQL_PJI_REP_PP2(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
70 , x_PMV_Sql OUT NOCOPY VARCHAR2
71 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
72 IS
73 l_Err_Message VARCHAR2(3200);
74 l_PMV_Sql VARCHAR2(3200);
75 BEGIN
76
77 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
78 , P_SELECT_LIST =>
79 ' FACT.CT_FORECAST_REVENUE "PJI_REP_MSR_14"
80 , FACT.FCST_CT_MARGIN_PERCENT "PJI_REP_MSR_15"
81 , FACT.FORECAST_REVENUE "PJI_REP_MSR_16"
82 , FACT.FCST_MARGIN_PERCENT "PJI_REP_MSR_17"
83 , FACT.FORECAST_BURDENED_COST "PJI_REP_MSR_8"
84 , FACT.CT_FORECAST_BURDENED_COST "PJI_REP_MSR_19"
85 , FACT.FORECAST_REVENUE "PJI_REP_MSR_1"
86 , FACT.FCST_MARGIN_PERCENT "PJI_REP_MSR_2"
87 , FACT.FORECAST_REVENUE "PJI_REP_MSR_7"
88 , FACT.FCST_REV_CHANGE_PERCENT "PJI_REP_MSR_11"
89 , FACT.FCST_MARGIN "PJI_REP_MSR_9"
90 , FACT.FCST_MAR_CHANGE_PERCENT "PJI_REP_MSR_12"
91 , FACT.FCST_MARGIN_PERCENT "PJI_REP_MSR_10"
92 , FACT.FCST_MAR_PERCENT_CHANGE "PJI_REP_MSR_13"
93 , FACT.FCST_CT_MARGIN "PJI_REP_MSR_3"
94 , FACT.FCST_MARGIN "PJI_REP_MSR_4"
95 , FACT.PJI_REP_TOTAL_7 "PJI_REP_TOTAL_1"
96 , FACT.PJI_REP_TOTAL_20 "PJI_REP_TOTAL_2"
97 , FACT.PJI_REP_TOTAL_3 "PJI_REP_TOTAL_3"
98 , FACT.PJI_REP_TOTAL_19 "PJI_REP_TOTAL_4"
99 , FACT.PJI_REP_TOTAL_4 "PJI_REP_TOTAL_5"
100 , FACT.PJI_REP_TOTAL_8 "PJI_REP_TOTAL_6"
101 , FACT.PJI_REP_TOTAL_3 "PJI_REP_TOTAL_7"
102 , FACT.PJI_REP_TOTAL_19 "PJI_REP_TOTAL_8"
103 , FACT.PJI_REP_TOTAL_3 "PJI_REP_TOTAL_9"
104 , FACT.PJI_REP_TOTAL_22 "PJI_REP_TOTAL_10"
105 , FACT.PJI_REP_TOTAL_17 "PJI_REP_TOTAL_11"
106 , FACT.PJI_REP_TOTAL_23 "PJI_REP_TOTAL_12"
107 , FACT.PJI_REP_TOTAL_19 "PJI_REP_TOTAL_13"
108 , FACT.PJI_REP_TOTAL_24 "PJI_REP_TOTAL_14"
109 , FACT.PJI_REP_TOTAL_18 "PJI_REP_TOTAL_15"
110 , FACT.PJI_REP_TOTAL_17 "PJI_REP_TOTAL_16" '
111 , P_SQL_STATEMENT => x_PMV_Sql
112 , P_PMV_OUTPUT => x_PMV_Output
113 , p_Region_Code => 'PJI_REP_PP2'
114 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PPSUM'
115 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
116 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
117 ', <<CURRENCY+FII_CURRENCIES>>'||
118 ', <<AS_OF_DATE>>'||
119 ', <<TIME_COMPARISON_TYPE>>'||
120 ', <<PERIOD_TYPE>>'||
121 ', <<VIEW_BY>>'||
122 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
123 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
124 ', NULL'||
125 ', NULL'||
126 ', <<PROJECT REVENUE CATEGORY+PJI_REVENUE_CATEGORIES>>'||
127 ', <<PROJECT REVENUE CATEGORY+PJI_EXP_EVT_TYPES>>'||
128 ', NULL'
129 );
130 END GET_SQL_PJI_REP_PP2;
131
132 PROCEDURE GET_SQL_PJI_REP_PP3(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
133 , x_PMV_Sql OUT NOCOPY VARCHAR2
134 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
135 IS
136 l_Err_Message VARCHAR2(3200);
137 l_PMV_Sql VARCHAR2(3200);
138 BEGIN
139
140 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
141 , P_SELECT_LIST =>
142 ' FACT.AMOUNT_TYPE_LABEL "VIEWBY"
143 , FACT.P_ACTUAL "PJI_REP_MSR_7"
144 , FACT.P_ACTUAL1 "PJI_REP_MSR_18"
145 , FACT.P_ACTUAL2 "PJI_REP_MSR_19"
146 , FACT.PY_ACTUAL "PJI_REP_MSR_8"
147 , FACT.PY_ACTUAL1 "PJI_REP_MSR_20"
148 , FACT.PY_ACTUAL2 "PJI_REP_MSR_21"
149 , FACT.P_CHANGE1 "PJI_REP_MSR_9"
150 , FACT.P_CHANGE11 "PJI_REP_MSR_14"
151 , FACT.P_CHANGE12 "PJI_REP_MSR_15"
152 , FACT.P_FORECAST "PJI_REP_MSR_10"
153 , FACT.P_FORECAST1 "PJI_REP_MSR_22"
154 , FACT.P_FORECAST2 "PJI_REP_MSR_23"
155 , FACT.PY_FORECAST "PJI_REP_MSR_11"
156 , FACT.PY_FORECAST1 "PJI_REP_MSR_24"
157 , FACT.PY_FORECAST2 "PJI_REP_MSR_25"
158 , FACT.P_CHANGE2 "PJI_REP_MSR_12"
159 , FACT.P_CHANGE21 "PJI_REP_MSR_16"
160 , FACT.P_CHANGE22 "PJI_REP_MSR_17"
161 , FACT.AMOUNT_TYPE_CODE "PJI_REP_MSR_13"
162 , FACT.P_CHANGE1 "PJI_REP_MSR_1"
163 , FACT.P_CHANGE2 "PJI_REP_MSR_2"
164 , FACT.PJI_REP_URL1 "PJI_REP_URL1"
165 , FACT.PJI_REP_URL2 "PJI_REP_URL2" '
166 , P_SQL_STATEMENT => x_PMV_Sql
167 , P_PMV_OUTPUT => x_PMV_Output
168 , p_Region_Code => 'PJI_REP_PP3'
169 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PP3'
170 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
171 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
172 ', <<CURRENCY+FII_CURRENCIES>>'||
173 ', <<AS_OF_DATE>>'||
174 ', <<PERIOD_TYPE>>'||
175 ', <<VIEW_BY>>'||
176 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
177 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
178 ', NULL'||
179 ', NULL'||
180 ', <<PROJECT REVENUE CATEGORY+PJI_REVENUE_CATEGORIES>>'||
181 ', <<PROJECT REVENUE CATEGORY+PJI_EXP_EVT_TYPES>>'||
182 ', NULL'
183 );
184 END GET_SQL_PJI_REP_PP3;
185
186
187 PROCEDURE GET_SQL_PJI_REP_PP4(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
188 , x_PMV_Sql OUT NOCOPY VARCHAR2
189 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
190 IS
191 l_Err_Message VARCHAR2(3200);
192 l_PMV_Sql VARCHAR2(3200);
193 BEGIN
194
195 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
196 , P_SELECT_LIST =>
197 ' FACT.CT_BURDENED_COST "PJI_REP_MSR_14"
198 , FACT.CT_FORECAST_BURDENED_COST "PJI_REP_MSR_15"
199 , FACT.CST_CHANGE_PERCENT "PJI_REP_MSR_1"
200 , FACT.FCST_CST_CHANGE_PERCENT "PJI_REP_MSR_2"
201 , FACT.BURDENED_COST "PJI_REP_MSR_3"
202 , FACT.FORECAST_BURDENED_COST "PJI_REP_MSR_4"
203 , FACT.BURDENED_COST "PJI_REP_MSR_8"
204 , FACT.CST_CHANGE_PERCENT "PJI_REP_MSR_9"
205 , FACT.FORECAST_BURDENED_COST "PJI_REP_MSR_12"
206 , FACT.FCST_CST_CHANGE_PERCENT "PJI_REP_MSR_10"
207 , FACT.PJI_REP_TOTAL_6 "PJI_REP_TOTAL_1"
208 , FACT.PJI_REP_TOTAL_8 "PJI_REP_TOTAL_2"
209 , FACT.PJI_REP_TOTAL_13 "PJI_REP_TOTAL_3"
210 , FACT.PJI_REP_TOTAL_21 "PJI_REP_TOTAL_4"
211 , FACT.PJI_REP_TOTAL_2 "PJI_REP_TOTAL_5"
212 , FACT.PJI_REP_TOTAL_4 "PJI_REP_TOTAL_6"
213 , FACT.PJI_REP_TOTAL_2 "PJI_REP_TOTAL_7"
214 , FACT.PJI_REP_TOTAL_13 "PJI_REP_TOTAL_8"
215 , FACT.PJI_REP_TOTAL_4 "PJI_REP_TOTAL_9"
216 , FACT.PJI_REP_TOTAL_21 "PJI_REP_TOTAL_10" '
217 , P_SQL_STATEMENT => x_PMV_Sql
218 , P_PMV_OUTPUT => x_PMV_Output
219 , p_Region_Code => 'PJI_REP_PP4'
220 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PPSUM'
221 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
222 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
223 ', <<CURRENCY+FII_CURRENCIES>>'||
224 ', <<AS_OF_DATE>>'||
225 ', <<TIME_COMPARISON_TYPE>>'||
226 ', <<PERIOD_TYPE>>'||
227 ', <<VIEW_BY>>'||
228 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
229 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
230 ', <<PROJECT EXPENDITURE TYPE+PJI_EXP_CATEGORIES>>'||
231 ', <<PROJECT EXPENDITURE TYPE+PJI_EXP_TYPES>>'||
232 ', NULL'||
233 ', NULL'||
234 ', <<PROJECT WORK TYPE+PJI_WORK_TYPES>> '
235
236 );
237 END GET_SQL_PJI_REP_PP4;
238
239
240
241 PROCEDURE GET_SQL_PJI_REP_PP9(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
242 , x_PMV_Sql OUT NOCOPY VARCHAR2
243 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
244 IS
245 l_Err_Message VARCHAR2(3200);
246 l_PMV_Sql VARCHAR2(3200);
247 BEGIN
248
249 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
250 , P_SELECT_LIST =>
251 ' FACT.PROJECT_ID "PJI_REP_MSR_18"
252 , FACT.PROJECT_NAME "VIEWBY"
253 , FACT.PROJECT_NUMBER "PJI_REP_MSR_2"
254 , FACT.URL_PARAMETERS01 "PJI_REP_MSR_20"
255 , FACT.URL_PARAMETERS01 "PJI_REP_MSR_30"
256 , FACT.PRIMARY_CUSTOMER_NAME "PJI_REP_MSR_3"
257 , FACT.PROJECT_TYPE "PJI_REP_MSR_4"
258 , FACT.ORGANIZATION_NAME "PJI_REP_MSR_5"
259 , FACT.PERSON_MANAGER_NAME "PJI_REP_MSR_6"
260 , FACT.REVENUE "PJI_REP_MSR_7"
261 , FACT.BURDENED_COST "PJI_REP_MSR_8"
262 , FACT.MARGIN "PJI_REP_MSR_9"
263 , FACT.FORECAST_REVENUE "PJI_REP_MSR_11"
264 , FACT.FORECAST_BURDENED_COST "PJI_REP_MSR_12"
265 , FACT.FORECAST_MARGIN "PJI_REP_MSR_13"
266 , FACT.BUDGET_MARGIN "PJI_REP_MSR_10"
267 , FACT.FORECAST_MARGIN_VARIANCE "PJI_REP_MSR_14"
268 , FACT.CURR_BGT_REVENUE "PJI_REP_MSR_15"
269 , FACT.CURR_BGT_BURDENED_COST "PJI_REP_MSR_16"
270 , FACT.PJI_REP_TOTAL_1 "PJI_REP_TOTAL_1"
271 , FACT.PJI_REP_TOTAL_2 "PJI_REP_TOTAL_2"
272 , FACT.PJI_REP_TOTAL_7 "PJI_REP_TOTAL_3"
273 , FACT.PJI_REP_TOTAL_5 "PJI_REP_TOTAL_4"
274 , FACT.PJI_REP_TOTAL_6 "PJI_REP_TOTAL_5"
275 , FACT.PJI_REP_TOTAL_10 "PJI_REP_TOTAL_6"
276 , FACT.PJI_REP_TOTAL_9 "PJI_REP_TOTAL_7"
277 , FACT.PJI_REP_TOTAL_11 "PJI_REP_TOTAL_8"
278 , FACT.PJI_REP_TOTAL_3 "PJI_REP_TOTAL_9"
279 , FACT.PJI_REP_TOTAL_4 "PJI_REP_TOTAL_10" '
280 , P_SQL_STATEMENT => x_PMV_Sql
281 , P_PMV_OUTPUT => x_PMV_Output
282 , p_Region_Code => 'PJI_REP_PP9'
283 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PPDTL'
284 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
285 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
286 ', <<CURRENCY+FII_CURRENCIES>>'||
287 ', <<AS_OF_DATE>>'||
288 ', <<PERIOD_TYPE>>'||
289 ', <<VIEW_BY>>'||
290 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
291 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
292 ', <<PROJECT+PJI_PROJECTS>> '||
293 ', NULL'||
294 ', NULL'||
295 ', <<PROJECT REVENUE CATEGORY+PJI_REVENUE_CATEGORIES>>'||
296 ', <<PROJECT REVENUE CATEGORY+PJI_EXP_EVT_TYPES>>'||
297 ', NULL'
298 );
299 END GET_SQL_PJI_REP_PP9;
300
301
302 PROCEDURE GET_SQL_PJI_REP_PP10(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
303 , x_PMV_Sql OUT NOCOPY VARCHAR2
304 , x_PMV_Output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
305 IS
306 l_Err_Message VARCHAR2(3200);
307 l_PMV_Sql VARCHAR2(3200);
308 BEGIN
309 PJI_PMV_ENGINE.Generate_SQL(P_PAGE_PARAMETER_TBL => p_page_parameter_tbl
310 , P_SELECT_LIST =>
311 ' FACT.PROJECT_ID "PJI_REP_MSR18"
312 , FACT.PROJECT_NAME "VIEWBY"
313 , FACT.PROJECT_NUMBER "PJI_REP_MSR_2"
314 , FACT.URL_PARAMETERS01 "PJI_REP_MSR_20"
315 , FACT.URL_PARAMETERS01 "PJI_REP_MSR_30"
316 , FACT.PRIMARY_CUSTOMER_NAME "PJI_REP_MSR_3"
317 , FACT.PROJECT_TYPE "PJI_REP_MSR_4"
318 , FACT.ORGANIZATION_NAME "PJI_REP_MSR_5"
319 , FACT.PERSON_MANAGER_NAME "PJI_REP_MSR_6"
320 , FACT.BURDENED_COST "PJI_REP_MSR_8"
321 , FACT.CURR_BGT_BURDENED_COST "PJI_REP_MSR_16"
322 , FACT.COST_VARIANCE "PJI_REP_MSR_17"
323 , FACT.FORECAST_BURDENED_COST "PJI_REP_MSR_12"
324 , FACT.FORECAST_COST_VARIANCE "PJI_REP_MSR_13"
325 , FACT.PJI_REP_TOTAL_2 "PJI_REP_TOTAL_1"
326 , FACT.PJI_REP_TOTAL_4 "PJI_REP_TOTAL_2"
327 , FACT.PJI_REP_TOTAL_8 "PJI_REP_TOTAL_3"
328 , FACT.PJI_REP_TOTAL_6 "PJI_REP_TOTAL_4"
329 , FACT.PJI_REP_TOTAL_12 "PJI_REP_TOTAL_5" '
330 , P_SQL_STATEMENT => x_PMV_Sql
331 , P_PMV_OUTPUT => x_PMV_Output
332 , p_Region_Code =>'PJI_REP_PP10'
333 , p_PLSQL_Driver => 'PJI_PMV_PROFITABILITY.PLSQLDriver_PJI_REP_PPDTL'
334 , p_PLSQL_Driver_Params => ' <<ORGANIZATION+FII_OPERATING_UNITS>>'||
335 ', <<ORGANIZATION+PJI_ORGANIZATIONS>>'||
336 ', <<CURRENCY+FII_CURRENCIES>>'||
337 ', <<AS_OF_DATE>>'||
338 ', <<PERIOD_TYPE>>'||
339 ', <<VIEW_BY>>'||
340 ', <<PROJECT CLASSIFICATION+CLASS_CATEGORY>>'||
341 ', <<PROJECT CLASSIFICATION+CLASS_CODE>> '||
342 ', <<PROJECT+PJI_PROJECTS>> '||
343 ', <<PROJECT EXPENDITURE TYPE+PJI_EXP_CATEGORIES>>'||
344 ', <<PROJECT EXPENDITURE TYPE+PJI_EXP_TYPES>>'||
345 ', NULL'||
346 ', NULL'||
347 ', <<PROJECT WORK TYPE+PJI_WORK_TYPES>> '
348 );
349 END GET_SQL_PJI_REP_PP10;
350
351 /* -------------------------------------------------------------+
352 ** -- PLSQL DRIVERS
353 */ -------------------------------------------------------------+
354
355
356 /* Name: PLSQLDriver_PJI_REP_PP3
357 ** Type: Function
358 **
359 ** Description: This function receives PM Viewer runtime query parameters
360 ** and RETURNS a PL/SQL table for the PM Viewer report.
361 **
362 ** This function is designed for the Project Profitability
363 ** Detail Reports:
364 ** 1) Project Profitability Overview (PP3)
365 **
366 ** NOTE:
367 ** The PP3 report does NOT have any View-By dimensions. Therefore,
368 ** the collection logic does not address view-by logic requirements.
369 **
370 ** Issues:
371 **
372 **
373 ** Called subprograms:
374 ** Various PJI_PMV_ENGINE.Convert APIs
375 **
376 ** Called objects:
377 ** PJI_REP_PP3_TBL (table of db object PJI_REP_PP3)
378 **
379 ** History:
380 ** 21-MAY-2002 jwhite Created.
381 **
382 ** 15-JUL-2002 jwhite As directed by Vijay, for the
383 ** PJI_PMV_ENGINE.Convert_Time API call
384 ** I removed the following parameter reference:
385 **
386 ** P_REPORT_TYPE => 'DBI'
387 **
388 */
389
390 FUNCTION PLSQLDriver_PJI_REP_PP3(
391 p_Operating_Unit IN VARCHAR2 DEFAULT NULL
392 , p_Organization IN VARCHAR2
393 , p_Currency_Type IN VARCHAR2
394 , p_As_of_Date IN NUMBER
395 , p_Period_Type IN VARCHAR2
396 , p_View_BY IN VARCHAR2
397 , p_Classifications IN VARCHAR2 DEFAULT NULL
398 , p_Class_Codes IN VARCHAR2 DEFAULT NULL
399
400 , p_Expenditure_Category IN VARCHAR2 DEFAULT NULL
401 , p_Expenditure_Type IN VARCHAR2 DEFAULT NULL
402 , p_Revenue_Category IN VARCHAR2 DEFAULT NULL
403 , p_Revenue_Type IN VARCHAR2 DEFAULT NULL
404 , p_Work_Type IN VARCHAR2 DEFAULT NULL
405
406 ) RETURN PJI_REP_PP3_TBL
407 IS
408
409 PRAGMA AUTONOMOUS_TRANSACTION;
410
411 /*
412 ** Local Variable Declaration
413 */
414 l_label_rev VARCHAR2(80) := NULL;
415 l_label_cost VARCHAR2(80) := NULL;
416 l_label_margin VARCHAR2(80) := NULL;
417 l_label_mgnpct VARCHAR2(80) := NULL; -- Margin Percentage
418
419 l_Parse_Class_Codes VARCHAR2(1) := NULL;
420
421 l_Top_Organization_Name VARCHAR2(240);
422
423
424 i NUMBER := 0;
425 ln NUMBER := 0;
426 l_rev_P_ACTUAL NUMBER := 0;
427 l_mgn_P_ACTUAL NUMBER := 0;
428 l_rev_P_FORECAST NUMBER := 0;
429 l_mgn_P_FORECAST NUMBER := 0;
430 l_rev_PY_ACTUAL NUMBER := 0;
431 l_mgn_PY_ACTUAL NUMBER := 0;
432 l_rev_PY_FORECAST NUMBER := 0;
433 l_mgn_PY_FORECAST NUMBER := 0;
434
435 l_Convert_Classification VARCHAR2(1);
436 l_Convert_Event_Revenue_Type VARCHAR2(1);
437 l_Convert_Work_Type VARCHAR2(1);
438 l_curr_record_type_id NUMBER:= 1;
439
440 /*
441 ** PL/SQL Declaration
442 */
443 l_phase_tab PJI_REP_PP3_TBL := PJI_REP_PP3_TBL();
444
445
446
447 BEGIN
448
449 BEGIN
450 SELECT report_cost_type
451 INTO G_Report_Cost_Type
452 FROM pji_system_settings;
453 EXCEPTION
454 WHEN NO_DATA_FOUND THEN
455 G_Report_Cost_Type:='RC';
456 END;
457
458 /*
459 ** Populate Report Labels
460 */
461 SELECT meaning
462 INTO l_label_rev
463 FROM pji_lookups
464 WHERE lookup_type = 'PJI_PROFITABILITY_MEASURES'
465 AND lookup_code = 'REVENUE';
466
467 SELECT meaning
468 INTO l_label_cost
469 FROM pji_lookups
470 WHERE lookup_type = 'PJI_PROFITABILITY_MEASURES'
471 AND lookup_code = 'COST';
472
473 SELECT meaning
474 INTO l_label_margin
475 FROM pji_lookups
476 WHERE lookup_type = 'PJI_PROFITABILITY_MEASURES'
477 AND lookup_code = 'MARGIN';
478
479 SELECT meaning
480 INTO l_label_mgnpct
481 FROM pji_lookups
482 WHERE lookup_type = 'PJI_PROFITABILITY_MEASURES'
483 AND lookup_code = 'MARGIN_PERCENT';
484
485
486
487 /*
488 ** Place a call to all the parse API's which parse the
489 ** parameters passed by PMV and populate all the
490 ** temporary tables.
491 */
492
493 PJI_PMV_ENGINE.Convert_Operating_Unit(P_OPERATING_UNIT_IDS => p_Operating_Unit
494 , P_VIEW_BY => p_View_BY
495 );
496
497
498 PJI_PMV_ENGINE.Convert_Organization(P_TOP_ORGANIZATION_ID => p_Organization
499 , P_VIEW_BY => p_View_BY
500 , p_Top_Organization_Name => l_Top_Organization_Name
501 );
502 PJI_PMV_ENGINE.Convert_Time(P_AS_OF_DATE => p_As_of_Date
503 , P_PERIOD_TYPE => p_Period_Type
504 , P_VIEW_BY => p_View_By
505 , P_PARSE_PRIOR => 'Y'
506 , P_COMPARATOR => NULL
507 , P_PARSE_ITD => NULL
508 , P_FULL_PERIOD_FLAG => 'Y'
509 );
510
511 l_Convert_Classification := PJI_PMV_ENGINE.Convert_Classification(p_Classifications,
512
513 p_Class_Codes, p_View_BY);
514 l_Convert_Event_Revenue_Type := PJI_PMV_ENGINE.Convert_Event_Revenue_Type(p_Revenue_Category,
515 p_Revenue_Type, p_View_BY );
516 l_Convert_Work_Type := PJI_PMV_ENGINE.Convert_Work_Type(p_Work_Type, p_View_BY);
517 l_curr_record_type_id:=PJI_PMV_ENGINE.Convert_Currency_Record_Type(p_Currency_Type);
518
519 /*
520 **
521 ** -- PHASE I: Insert Separate Current and Prior Year Rows for Revenue, Cost and Margin
522 */
523
524
525 /*
526 ** Code the SQL statement for all of the following conditions
527 ** 1. Current Year
528 ** 2. Prior Year
529 **
530 ** Note: This report does NOT require the generation of rows with zero's for the
531 ** query parameter dimensions.
532 **
533 ** Bulk-Collect the output into a pl/sql table to be returned to
534 ** pmv.
535 */
536
537
538 /*
539 ** ORG Processing ---------------------------------------------------+
540 */
541
542
543 /* ----------------------------- Case 1 truth table ------------------------------------ */
544
545 IF (l_Convert_Classification = 'N')
546 and (l_Convert_Event_Revenue_Type = 'N')
547 and (l_Convert_Work_Type = 'N')
548 THEN
549
550
551 SELECT PJI_REP_PP3(PHASE_CODE
552 ,AMOUNT_TYPE_CODE
553 ,AMOUNT_TYPE_LABEL
554 , SUM( P_ACTUAL )
555 , NULL
556 , NULL
557 , SUM( PY_ACTUAL )
558 , NULL
559 , NULL
560 , SUM( P_CHANGE1 )
561 , SUM( P_CHANGE11 )
562 , SUM( P_CHANGE12 )
563 , SUM( P_FORECAST )
564 , NULL
565 , NULL
566 , SUM( PY_FORECAST )
567 , NULL
568 , NULL
569 , SUM( P_CHANGE2 )
570 , SUM( P_CHANGE21 )
571 , SUM( P_CHANGE22 )
572 , NULL
573 , NULL )
574 BULK COLLECT INTO l_phase_tab
575 FROM
576 ( SELECT /*+ ORDERED */
577 1 AS PHASE_CODE
578 , 1 AS AMOUNT_TYPE_CODE
579 , l_label_rev AS AMOUNT_TYPE_LABEL
580 , DECODE(TIME.amount_type,1, revenue,0) AS P_ACTUAL
581 , 0 AS PY_ACTUAL
582 , null AS P_CHANGE1
583 , null AS P_CHANGE11
584 , null AS P_CHANGE12
585 , DECODE(TIME.amount_type,2, forecast_revenue,0) AS P_FORECAST
586 , 0 AS PY_FORECAST
587 , null AS P_CHANGE2
588 , null AS P_CHANGE21
589 , null AS P_CHANGE22
590 FROM
591 PJI_PMV_TIME_DIM_TMP TIME
592 , PJI_PMV_ORGZ_DIM_TMP HORG
593 , pji_fp_orgo_f_mv fct
594 , PJI_PMV_ORG_DIM_TMP HOU
595 WHERE
596 fct.org_id = hou.id
597 AND FCT.ORGANIZATION_ID = HORG.ID
598 AND FCT.TIME_ID = TIME.ID
599 AND TIME.ID IS NOT NULL
600 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
601 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
602 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
603 UNION ALL
604 SELECT /*+ ORDERED */
605 1 AS PHASE_CODE
606 , 1 AS AMOUNT_TYPE_CODE
607 , l_label_rev AS AMOUNT_TYPE_LABEL
608 , 0 AS P_ACTUAL
609 , DECODE(TIME.amount_type,1,revenue,0) AS PY_ACTUAL
610 , null AS P_CHANGE1
611 , null AS P_CHANGE11
612 , null AS P_CHANGE12
613 , 0 AS P_FORECAST
614 , DECODE(TIME.amount_type,2,forecast_revenue,0) AS PY_FORECAST
615 , null AS P_CHANGE2
616 , null AS P_CHANGE21
617 , null AS P_CHANGE22
618 FROM
619 PJI_PMV_TIME_DIM_TMP TIME
620 , PJI_PMV_ORGZ_DIM_TMP HORG
621 , pji_fp_orgo_f_mv fct
622 , PJI_PMV_ORG_DIM_TMP HOU
623
624 WHERE
625 fct.org_id = hou.id
626 AND FCT.ORGANIZATION_ID = HORG.ID
627 AND FCT.TIME_ID = TIME.PRIOR_ID
628 AND TIME.PRIOR_ID IS NOT NULL
629 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
630 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
631 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
632 UNION ALL
633 SELECT /*+ ORDERED */
634 1 AS PHASE_CODE
635 , 2 AS AMOUNT_TYPE_CODE
636 , l_label_cost AS AMOUNT_TYPE_LABEL
637 , DECODE(TIME.amount_type,1,
638 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
639 'RC', raw_cost, 0),0) AS P_ACTUAL
640 , 0 AS PY_ACTUAL
641 , null AS P_CHANGE1
642 , null AS P_CHANGE11
643 , null AS P_CHANGE12
644 , DECODE(TIME.amount_type,2,
645 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
646 'RC', forecast_raw_cost, 0),0) AS P_FORECAST
647 , 0 AS PY_FORECAST
648 , null AS P_CHANGE2
649 , null AS P_CHANGE21
650 , null AS P_CHANGE22
651 FROM
652 PJI_PMV_TIME_DIM_TMP TIME
653 , PJI_PMV_ORGZ_DIM_TMP HORG
654 , pji_fp_orgo_f_mv fct
655 , PJI_PMV_ORG_DIM_TMP HOU
656
657 WHERE
658 fct.org_id = hou.id
659 AND FCT.ORGANIZATION_ID = HORG.ID
660 AND FCT.TIME_ID = TIME.ID
661 AND TIME.ID IS NOT NULL
662 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
663 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
664 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
665 UNION ALL
666 SELECT /*+ ORDERED */
667 1 AS PHASE_CODE
668 , 2 AS AMOUNT_TYPE_CODE
669 , l_label_cost AS AMOUNT_TYPE_LABEL
670 , 0 AS P_ACTUAL
671 , DECODE(TIME.amount_type,1,
672 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
673 'RC', raw_cost, 0),0) AS PY_ACTUAL
674 , null AS P_CHANGE1
675 , null AS P_CHANGE11
676 , null AS P_CHANGE12
677 , 0 AS P_FORECAST
678 , DECODE(TIME.amount_type,2,
679 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
680 'RC', forecast_raw_cost, 0),0) AS PY_FORECAST
681 , null AS P_CHANGE2
682 , null AS P_CHANGE21
683 , null AS P_CHANGE22
684 FROM
685 PJI_PMV_TIME_DIM_TMP TIME
686 , PJI_PMV_ORGZ_DIM_TMP HORG
687 , pji_fp_orgo_f_mv fct
688 , PJI_PMV_ORG_DIM_TMP HOU
689
690 WHERE
691 fct.org_id = hou.id
692 AND FCT.ORGANIZATION_ID = HORG.ID
693 AND FCT.TIME_ID = TIME.PRIOR_ID
694 AND TIME.PRIOR_ID IS NOT NULL
695 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
696 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
697 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
698 UNION ALL
699 SELECT /*+ ORDERED */
700 1 AS PHASE_CODE
701 , 3 AS AMOUNT_TYPE_CODE
702 , l_label_margin AS AMOUNT_TYPE_LABEL
703 ,DECODE(TIME.amount_type,1,
704 ( NVL(revenue,0) - NVL(DECODE(G_Report_Cost_Type, 'BC', burdened_cost, 'RC', raw_cost, 0),0) ), 0)
705 AS P_ACTUAL
706
707 , 0 AS PY_ACTUAL
708 , null AS P_CHANGE1
709 , null AS P_CHANGE11
710 , null AS P_CHANGE12
711 , DECODE(TIME.amount_type,2, (nvl(forecast_revenue,0) -
712 NVL( DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
713 'RC', forecast_raw_cost, 0),0)), 0) AS P_FORECAST
714 , 0 AS PY_FORECAST
715 , null AS P_CHANGE2
716 , null AS P_CHANGE21
717 , null AS P_CHANGE22
718 FROM
719 PJI_PMV_TIME_DIM_TMP TIME
720 , PJI_PMV_ORGZ_DIM_TMP HORG
721 , pji_fp_orgo_f_mv fct
722 , PJI_PMV_ORG_DIM_TMP HOU
723 WHERE
724 fct.org_id = hou.id
725 AND FCT.ORGANIZATION_ID = HORG.ID
726 AND FCT.TIME_ID = TIME.ID
727 AND TIME.ID IS NOT NULL
728 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
729 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
730 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
731 UNION ALL
732 SELECT /*+ ORDERED */
733 1 AS PHASE_CODE
734 , 3 AS AMOUNT_TYPE_CODE
735 , l_label_margin AS AMOUNT_TYPE_LABEL
736 , 0 AS P_ACTUAL
737 , DECODE(TIME.amount_type,1, (nvl(revenue,0) -
738 NVL(DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
739 'RC', raw_cost, 0),0)), 0) AS PY_ACTUAL
740 , null AS P_CHANGE1
741 , null AS P_CHANGE11
742 , null AS P_CHANGE12
743 , 0 AS P_FORECAST
744 , DECODE(TIME.amount_type,2, (nvl(forecast_revenue,0) -
745 NVL(DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
746 'RC', forecast_raw_cost, 0),0)), 0) AS PY_FORECAST
747 , null AS P_CHANGE2
748 , null AS P_CHANGE21
749 , null AS P_CHANGE22
750 FROM
751 PJI_PMV_TIME_DIM_TMP TIME
752 , PJI_PMV_ORGZ_DIM_TMP HORG
753 , pji_fp_orgo_f_mv fct
754 , PJI_PMV_ORG_DIM_TMP HOU
755 WHERE
756 fct.org_id = hou.id
757 AND FCT.ORGANIZATION_ID = HORG.ID
758 AND FCT.TIME_ID = TIME.PRIOR_ID
759 AND TIME.PRIOR_ID IS NOT NULL
760 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
761 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
762 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
763 UNION ALL
764 SELECT
765 1 AS PHASE_CODE
766 , 1 AS AMOUNT_TYPE_CODE
767 , l_label_rev AS AMOUNT_TYPE_LABEL
768 , 0 AS P_ACTUAL
769 , 0 AS PY_ACTUAL
770 , null AS P_CHANGE1
771 , null AS P_CHANGE11
772 , null AS P_CHANGE12
773 , 0 AS P_FORECAST
774 , 0 AS PY_FORECAST
775 , null AS P_CHANGE2
776 , null AS P_CHANGE21
777 , null AS P_CHANGE22
778 FROM dual
779 UNION ALL
780 SELECT
781 1 AS PHASE_CODE
782 , 2 AS AMOUNT_TYPE_CODE
783 , l_label_cost AS AMOUNT_TYPE_LABEL
784 , 0 AS P_ACTUAL
785 , 0 AS PY_ACTUAL
786 , null AS P_CHANGE1
787 , null AS P_CHANGE11
788 , null AS P_CHANGE12
789 , 0 AS P_FORECAST
790 , 0 AS PY_FORECAST
791 , null AS P_CHANGE2
792 , null AS P_CHANGE21
793 , null AS P_CHANGE22
794 FROM dual
795 UNION ALL
796 SELECT
797 1 AS PHASE_CODE
798 , 3 AS AMOUNT_TYPE_CODE
799 , l_label_margin AS AMOUNT_TYPE_LABEL
800 , 0 AS P_ACTUAL
801 , 0 AS PY_ACTUAL
802 , null AS P_CHANGE1
803 , null AS P_CHANGE11
804 , null AS P_CHANGE12
805 , 0 AS P_FORECAST
806 , 0 AS PY_FORECAST
807 , null AS P_CHANGE2
808 , null AS P_CHANGE21
809 , null AS P_CHANGE22
810 FROM dual
811 )
812 WHERE 1 = 1
813 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
814
815 /*
816 ** -- PROJECT CLASSIFICATION Processing ---------------------------------------------------+
817 */
818
819
820 /* ----------------------------------- Case 2 truth table ------------------------------------- */
821
822 ELSIF (l_Convert_Event_Revenue_Type = 'N')
823 and (l_Convert_Work_Type = 'N')
824
825 THEN
826
827 SELECT PJI_REP_PP3(PHASE_CODE
828 ,AMOUNT_TYPE_CODE
829 ,AMOUNT_TYPE_LABEL
830 , SUM( P_ACTUAL )
831 , NULL
832 , NULL
833 , SUM( PY_ACTUAL )
834 , NULL
835 , NULL
836 , SUM( P_CHANGE1 )
837 , SUM( P_CHANGE11 )
838 , SUM( P_CHANGE12 )
839 , SUM( P_FORECAST )
840 , NULL
841 , NULL
842 , SUM( PY_FORECAST )
843 , NULL
844 , NULL
845 , SUM( P_CHANGE2 )
846 , SUM( P_CHANGE21 )
847 , SUM( P_CHANGE22 )
848 , NULL
849 , NULL)
850 BULK COLLECT INTO l_phase_tab
851 FROM
852 ( SELECT /*+ ORDERED */
853 1 AS PHASE_CODE
854 , 1 AS AMOUNT_TYPE_CODE
855 , l_label_rev AS AMOUNT_TYPE_LABEL
856 , DECODE(TIME.amount_type,1, revenue, 0) AS P_ACTUAL
857 , 0 AS PY_ACTUAL
858 , null AS P_CHANGE1
859 , null AS P_CHANGE11
860 , null AS P_CHANGE12
861 , DECODE(TIME.amount_type,2, forecast_revenue,0) AS P_FORECAST
862 , 0 AS PY_FORECAST
863 , null AS P_CHANGE2
864 , null AS P_CHANGE21
865 , null AS P_CHANGE22
866 FROM
867 PJI_PMV_TIME_DIM_TMP TIME
868 , PJI_PMV_ORGZ_DIM_TMP HORG
869 , PJI_PMV_CLS_DIM_TMP CLS
870 , pji_fp_clso_f_mv fct
871 , PJI_PMV_ORG_DIM_TMP HOU
872
873 WHERE
874 FCT.PROJECT_ORG_ID = HOU.ID
875 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
876 AND FCT.TIME_ID = TIME.ID
877 AND TIME.ID IS NOT NULL
878 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
879 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
880 AND FCT.PROJECT_CLASS_ID = CLS.ID
881 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
882 UNION ALL
883 SELECT /*+ ORDERED */
884 1 AS PHASE_CODE
885 , 1 AS AMOUNT_TYPE_CODE
886 , l_label_rev AS AMOUNT_TYPE_LABEL
887 , 0 AS P_ACTUAL
888 , DECODE(TIME.amount_type,1, revenue, 0) AS PY_ACTUAL
889 , null AS P_CHANGE1
890 , null AS P_CHANGE11
891 , null AS P_CHANGE12
892 , 0 AS P_FORECAST
893 , DECODE(TIME.amount_type,2, forecast_revenue, 0) AS PY_FORECAST
894 , null AS P_CHANGE2
895 , null AS P_CHANGE21
896 , null AS P_CHANGE22
897 FROM
898 PJI_PMV_TIME_DIM_TMP TIME
899 , PJI_PMV_ORGZ_DIM_TMP HORG
900 , PJI_PMV_CLS_DIM_TMP CLS
901 , pji_fp_clso_f_mv fct
902 , PJI_PMV_ORG_DIM_TMP HOU
903 WHERE
904 FCT.PROJECT_ORG_ID = HOU.ID
905 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
906 AND FCT.TIME_ID = TIME.PRIOR_ID
907 AND TIME.PRIOR_ID IS NOT NULL
908 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
909 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
910 AND FCT.PROJECT_CLASS_ID = CLS.ID
911 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
912 UNION ALL
913 SELECT /*+ ORDERED */
914 1 AS PHASE_CODE
915 , 2 AS AMOUNT_TYPE_CODE
916 , l_label_cost AS AMOUNT_TYPE_LABEL
917 , DECODE(TIME.amount_type,1,
918 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
919 'RC', raw_cost, 0), 0) AS P_ACTUAL
920 , 0 AS PY_ACTUAL
921 , null AS P_CHANGE1
922 , null AS P_CHANGE11
923 , null AS P_CHANGE12
924 , DECODE(TIME.amount_type,2,
925 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
926 'RC', forecast_raw_cost, 0), 0) AS P_FORECAST
927 , 0 AS PY_FORECAST
928 , null AS P_CHANGE2
929 , null AS P_CHANGE21
930 , null AS P_CHANGE22
931 FROM
932 PJI_PMV_TIME_DIM_TMP TIME
933 , PJI_PMV_ORGZ_DIM_TMP HORG
934 , PJI_PMV_CLS_DIM_TMP CLS
935 , pji_fp_clso_f_mv fct
936 , PJI_PMV_ORG_DIM_TMP HOU
937
938 WHERE
939 FCT.PROJECT_ORG_ID = HOU.ID
940 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
941 AND FCT.TIME_ID = TIME.ID
942 AND TIME.ID IS NOT NULL
943 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
944 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
945 AND FCT.PROJECT_CLASS_ID = CLS.ID
946 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
947 UNION ALL
948 SELECT /*+ ORDERED */
949 1 AS PHASE_CODE
950 , 2 AS AMOUNT_TYPE_CODE
951 , l_label_cost AS AMOUNT_TYPE_LABEL
952 , 0 AS P_ACTUAL
953 , DECODE(TIME.amount_type,1,
954 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
955 'RC', raw_cost, 0), 0) AS PY_ACTUAL
956 , null AS P_CHANGE1
957 , null AS P_CHANGE11
958 , null AS P_CHANGE12
959 , 0 AS P_FORECAST
960 , DECODE(TIME.amount_type,2,
961 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
962 'RC', forecast_raw_cost, 0), 0) AS PY_FORECAST
963 , null AS P_CHANGE2
964 , null AS P_CHANGE21
965 , null AS P_CHANGE22
966 FROM
967 PJI_PMV_TIME_DIM_TMP TIME
968 , PJI_PMV_ORGZ_DIM_TMP HORG
969 , PJI_PMV_CLS_DIM_TMP CLS
970 , pji_fp_clso_f_mv fct
971 , PJI_PMV_ORG_DIM_TMP HOU
972 WHERE
973 FCT.PROJECT_ORG_ID = HOU.ID
974 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
975 AND FCT.TIME_ID = TIME.PRIOR_ID
976 AND TIME.PRIOR_ID IS NOT NULL
977 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
978 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
979 AND FCT.PROJECT_CLASS_ID = CLS.ID
980 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
981 UNION ALL
982 SELECT /*+ ORDERED */
983 1 AS PHASE_CODE
984 , 3 AS AMOUNT_TYPE_CODE
985 , l_label_margin AS AMOUNT_TYPE_LABEL
986 , DECODE(TIME.amount_type,1, (revenue -
987 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
988 'RC', raw_cost, 0)), 0) AS P_ACTUAL
989 , 0 AS PY_ACTUAL
990 , null AS P_CHANGE1
991 , null AS P_CHANGE11
992 , null AS P_CHANGE12
993 , DECODE(TIME.amount_type,2, (forecast_revenue -
994 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
995 'RC', forecast_raw_cost, 0)), 0) AS P_FORECAST
996 , 0 AS PY_FORECAST
997 , null AS P_CHANGE2
998 , null AS P_CHANGE21
999 , null AS P_CHANGE22
1000 FROM
1001 PJI_PMV_TIME_DIM_TMP TIME
1002 , PJI_PMV_ORGZ_DIM_TMP HORG
1003 , PJI_PMV_CLS_DIM_TMP CLS
1004 , pji_fp_clso_f_mv fct
1005 , PJI_PMV_ORG_DIM_TMP HOU
1006 WHERE
1007 FCT.PROJECT_ORG_ID = HOU.ID
1008 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1009 AND FCT.TIME_ID = TIME.ID
1010 AND TIME.ID IS NOT NULL
1011 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1012 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1013 AND FCT.PROJECT_CLASS_ID = CLS.ID
1014 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1015 UNION ALL
1016 SELECT /*+ ORDERED */
1017 1 AS PHASE_CODE
1018 , 3 AS AMOUNT_TYPE_CODE
1019 , l_label_margin AS AMOUNT_TYPE_LABEL
1020 , 0 AS P_ACTUAL
1021 , DECODE(TIME.amount_type,1, (revenue -
1022 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1023 'RC', raw_cost, 0)), 0) AS PY_ACTUAL
1024 , null AS P_CHANGE1
1025 , null AS P_CHANGE11
1026 , null AS P_CHANGE12
1027 , 0 AS P_FORECAST
1028 , DECODE(TIME.amount_type,2, (forecast_revenue -
1029 DECODE(G_Report_Cost_Type, 'BC', forecast_burdened_cost,
1030 'RC', forecast_raw_cost, 0)), 0) AS PY_FORECAST
1031 , null AS P_CHANGE2
1032 , null AS P_CHANGE21
1033 , null AS P_CHANGE22
1034 FROM PJI_PMV_TIME_DIM_TMP TIME
1035 , PJI_PMV_ORGZ_DIM_TMP HORG
1036 , PJI_PMV_CLS_DIM_TMP CLS
1037 , pji_fp_clso_f_mv fct
1038 , PJI_PMV_ORG_DIM_TMP HOU
1039 WHERE
1040 FCT.PROJECT_ORG_ID = HOU.ID
1041 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1042 AND FCT.TIME_ID = TIME.PRIOR_ID
1043 AND TIME.PRIOR_ID IS NOT NULL
1044 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1045 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1046 AND FCT.PROJECT_CLASS_ID = CLS.ID
1047 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1048 UNION ALL
1049 SELECT
1050 1 AS PHASE_CODE
1051 , 1 AS AMOUNT_TYPE_CODE
1052 , l_label_rev AS AMOUNT_TYPE_LABEL
1053 , 0 AS P_ACTUAL
1054 , 0 AS PY_ACTUAL
1055 , null AS P_CHANGE1
1056 , null AS P_CHANGE11
1057 , null AS P_CHANGE12
1058 , 0 AS P_FORECAST
1059 , 0 AS PY_FORECAST
1060 , null AS P_CHANGE2
1061 , null AS P_CHANGE21
1062 , null AS P_CHANGE22
1063 FROM dual
1064 UNION ALL
1065 SELECT
1066 1 AS PHASE_CODE
1067 ,2 AS AMOUNT_TYPE_CODE
1068 ,l_label_cost AS AMOUNT_TYPE_LABEL
1069 , 0 AS P_ACTUAL
1070 , 0 AS PY_ACTUAL
1071 , null AS P_CHANGE1
1072 , null AS P_CHANGE11
1073 , null AS P_CHANGE12
1074 , 0 AS P_FORECAST
1075 , 0 AS PY_FORECAST
1076 , null AS P_CHANGE2
1077 , null AS P_CHANGE21
1078 , null AS P_CHANGE22
1079 FROM dual
1080 UNION ALL
1081 SELECT
1082 1 AS PHASE_CODE
1083 ,3 AS AMOUNT_TYPE_CODE
1084 ,l_label_margin AS AMOUNT_TYPE_LABEL
1085 , 0 AS P_ACTUAL
1086 , 0 AS PY_ACTUAL
1087 , null AS P_CHANGE1
1088 , null AS P_CHANGE11
1089 , null AS P_CHANGE12
1090 , 0 AS P_FORECAST
1091 , 0 AS PY_FORECAST
1092 , null AS P_CHANGE2
1093 , null AS P_CHANGE21
1094 , null AS P_CHANGE22
1095 FROM dual
1096 )
1097 WHERE 1 = 1
1098 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
1099
1100
1101 /*
1102 ** Expenditure or Revenue Type Processing ---------------------------------------------------+
1103 */
1104
1105 /* ----------------------------------- Case 3 truth table ------------------------------------- */
1106
1107 ELSIF (l_Convert_Classification = 'N')
1108 and (l_Convert_Work_Type = 'N')
1109 THEN
1110
1111 SELECT PJI_REP_PP3(PHASE_CODE
1112 ,AMOUNT_TYPE_CODE
1113 ,AMOUNT_TYPE_LABEL
1114 , SUM( P_ACTUAL )
1115 , NULL
1116 , NULL
1117 , SUM( PY_ACTUAL )
1118 , NULL
1119 , NULL
1120 , SUM( P_CHANGE1 )
1121 , SUM( P_CHANGE11 )
1122 , SUM( P_CHANGE12 )
1123 , SUM( P_FORECAST )
1124 , NULL
1125 , NULL
1126 , SUM( PY_FORECAST )
1127 , NULL
1128 , NULL
1129 , SUM( P_CHANGE2 )
1130 , SUM( P_CHANGE21 )
1131 , SUM( P_CHANGE22 )
1132 , NULL
1133 , NULL)
1134 BULK COLLECT INTO l_phase_tab
1135 FROM
1136 ( SELECT /*+ ORDERED */
1137 1 AS PHASE_CODE
1138 , 1 AS AMOUNT_TYPE_CODE
1139 , l_label_rev AS AMOUNT_TYPE_LABEL
1140 , DECODE(TIME.amount_type,1, revenue, 0) AS P_ACTUAL
1141 , 0 AS PY_ACTUAL
1142 , null AS P_CHANGE1
1143 , null AS P_CHANGE11
1144 , null AS P_CHANGE12
1145 , null AS P_FORECAST
1146 , 0 AS PY_FORECAST
1147 , null AS P_CHANGE2
1148 , null AS P_CHANGE21
1149 , null AS P_CHANGE22
1150 FROM
1151 PJI_PMV_TIME_DIM_TMP TIME
1152 , PJI_PMV_ORGZ_DIM_TMP HORG
1153 , PJI_PMV_ET_RT_DIM_TMP ET
1154 , PJI_FP_ORGO_ET_F_MV fct
1155 , PJI_PMV_ORG_DIM_TMP HOU
1156
1157 WHERE
1158 FCT.ORG_ID = HOU.ID
1159 AND FCT.ORGANIZATION_ID = HORG.ID
1160 AND FCT.TIME_ID = TIME.ID
1161 AND TIME.ID IS NOT NULL
1162 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1163 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1164 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1165 AND ET.record_type = 'RT'
1166 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1167 UNION ALL
1168 SELECT /*+ ORDERED */
1169 1 AS PHASE_CODE
1170 , 1 AS AMOUNT_TYPE_CODE
1171 , l_label_rev AS AMOUNT_TYPE_LABEL
1172 , 0 AS P_ACTUAL
1173 , DECODE(TIME.amount_type,1, revenue, 0) AS PY_ACTUAL
1174 , null AS P_CHANGE1
1175 , null AS P_CHANGE11
1176 , null AS P_CHANGE12
1177 , 0 AS P_FORECAST
1178 , null AS PY_FORECAST
1179 , null AS P_CHANGE2
1180 , null AS P_CHANGE21
1181 , null AS P_CHANGE22
1182 FROM
1183 PJI_PMV_TIME_DIM_TMP TIME
1184 , PJI_PMV_ORGZ_DIM_TMP HORG
1185 , PJI_PMV_ET_RT_DIM_TMP ET
1186 , PJI_FP_ORGO_ET_F_MV fct
1187 , PJI_PMV_ORG_DIM_TMP HOU
1188 WHERE
1189 FCT.ORG_ID = HOU.ID
1190 AND FCT.ORGANIZATION_ID = HORG.ID
1191 AND FCT.TIME_ID = TIME.PRIOR_ID
1192 AND TIME.PRIOR_ID IS NOT NULL
1193 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1194 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1195 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1196 AND ET.record_type = 'RT'
1197 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1198 UNION ALL
1199 SELECT /*+ ORDERED */
1200 1 AS PHASE_CODE
1201 , 2 AS AMOUNT_TYPE_CODE
1202 , l_label_cost AS AMOUNT_TYPE_LABEL
1203 , DECODE(TIME.amount_type,1,
1204 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1205 'RC', raw_cost, 0), 0) AS P_ACTUAL
1206 , 0 AS PY_ACTUAL
1207 , null AS P_CHANGE1
1208 , null AS P_CHANGE11
1209 , null AS P_CHANGE12
1210 , null AS P_FORECAST
1211 , 0 AS PY_FORECAST
1212 , null AS P_CHANGE2
1213 , null AS P_CHANGE21
1214 , null AS P_CHANGE22
1215 FROM
1216 PJI_PMV_TIME_DIM_TMP TIME
1217 , PJI_PMV_ORGZ_DIM_TMP HORG
1218 , PJI_PMV_ET_RT_DIM_TMP ET
1219 , PJI_FP_ORGO_ET_F_MV fct
1220 , PJI_PMV_ORG_DIM_TMP HOU
1221
1222 WHERE
1223 FCT.ORG_ID = HOU.ID
1224 AND FCT.ORGANIZATION_ID = HORG.ID
1225 AND FCT.TIME_ID = TIME.ID
1226 AND TIME.ID IS NOT NULL
1227 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1228 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1229 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1230 AND ET.record_type = 'RT'
1231 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1232 UNION ALL
1233 SELECT /*+ ORDERED */
1234 1 AS PHASE_CODE
1235 , 2 AS AMOUNT_TYPE_CODE
1236 , l_label_cost AS AMOUNT_TYPE_LABEL
1237 , 0 AS P_ACTUAL
1238 , DECODE(TIME.amount_type,1,
1239 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1240 'RC', raw_cost, 0), 0) AS PY_ACTUAL
1241 , null AS P_CHANGE1
1242 , null AS P_CHANGE11
1243 , null AS P_CHANGE12
1244 , 0 AS P_FORECAST
1245 , null AS PY_FORECAST
1246 , null AS P_CHANGE2
1247 , null AS P_CHANGE21
1248 , null AS P_CHANGE22
1249 FROM
1250 PJI_PMV_TIME_DIM_TMP TIME
1251 , PJI_PMV_ORGZ_DIM_TMP HORG
1252 , PJI_PMV_ET_RT_DIM_TMP ET
1253 , PJI_FP_ORGO_ET_F_MV fct
1254 , PJI_PMV_ORG_DIM_TMP HOU
1255 WHERE
1256 FCT.ORG_ID = HOU.ID
1257 AND FCT.ORGANIZATION_ID = HORG.ID
1258 AND FCT.TIME_ID = TIME.PRIOR_ID
1259 AND TIME.PRIOR_ID IS NOT NULL
1260 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1261 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1262 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1263 AND ET.record_type = 'RT'
1264 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1265 UNION ALL
1266 SELECT /*+ ORDERED */
1267 1 AS PHASE_CODE
1268 , 3 AS AMOUNT_TYPE_CODE
1269 , l_label_margin AS AMOUNT_TYPE_LABEL
1270 , DECODE(TIME.amount_type,1, (revenue -
1271 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1272 'RC', raw_cost, 0)), 0) AS P_ACTUAL
1273 , 0 AS PY_ACTUAL
1274 , null AS P_CHANGE1
1275 , null AS P_CHANGE11
1276 , null AS P_CHANGE12
1277 , null AS P_FORECAST
1278 , 0 AS PY_FORECAST
1279 , null AS P_CHANGE2
1280 , null AS P_CHANGE21
1281 , null AS P_CHANGE22
1282 FROM
1283 PJI_PMV_TIME_DIM_TMP TIME
1284 , PJI_PMV_ORGZ_DIM_TMP HORG
1285 , PJI_PMV_ET_RT_DIM_TMP ET
1286 , PJI_FP_ORGO_ET_F_MV fct
1287 , PJI_PMV_ORG_DIM_TMP HOU
1288 WHERE
1289 FCT.ORG_ID = HOU.ID
1290 AND FCT.ORGANIZATION_ID = HORG.ID
1291 AND FCT.TIME_ID = TIME.ID
1292 AND TIME.ID IS NOT NULL
1293 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1294 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1295 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1296 AND ET.record_type = 'RT'
1297 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1298 UNION ALL
1299 SELECT /*+ ORDERED */
1300 1 AS PHASE_CODE
1301 , 3 AS AMOUNT_TYPE_CODE
1302 , l_label_margin AS AMOUNT_TYPE_LABEL
1303 , 0 AS P_ACTUAL
1304 , DECODE(TIME.amount_type,1, (revenue -
1305 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1306 'RC', raw_cost, 0)), 0) AS PY_ACTUAL
1307 , null AS P_CHANGE1
1308 , null AS P_CHANGE11
1309 , null AS P_CHANGE12
1310 , 0 AS P_FORECAST
1311 , null AS PY_FORECAST
1312 , null AS P_CHANGE2
1313 , null AS P_CHANGE21
1314 , null AS P_CHANGE22
1315 FROM PJI_PMV_TIME_DIM_TMP TIME
1316 , PJI_PMV_ORGZ_DIM_TMP HORG
1317 , PJI_PMV_ET_RT_DIM_TMP ET
1318 , PJI_FP_ORGO_ET_F_MV fct
1319 , PJI_PMV_ORG_DIM_TMP HOU
1320 WHERE
1321 FCT.ORG_ID = HOU.ID
1322 AND FCT.ORGANIZATION_ID = HORG.ID
1323 AND FCT.TIME_ID = TIME.PRIOR_ID
1324 AND TIME.PRIOR_ID IS NOT NULL
1325 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1326 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1327 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1328 AND ET.record_type = 'RT'
1329 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1330 UNION ALL
1331 SELECT
1332 1 AS PHASE_CODE
1333 , 1 AS AMOUNT_TYPE_CODE
1334 , l_label_rev AS AMOUNT_TYPE_LABEL
1335 , 0 AS P_ACTUAL
1336 , 0 AS PY_ACTUAL
1337 , null AS P_CHANGE1
1338 , null AS P_CHANGE11
1339 , null AS P_CHANGE12
1340 , 0 AS P_FORECAST
1341 , 0 AS PY_FORECAST
1342 , null AS P_CHANGE2
1343 , null AS P_CHANGE21
1344 , null AS P_CHANGE22
1345 FROM dual
1346 UNION ALL
1347 SELECT
1348 1 AS PHASE_CODE
1349 ,2 AS AMOUNT_TYPE_CODE
1350 ,l_label_cost AS AMOUNT_TYPE_LABEL
1351 , 0 AS P_ACTUAL
1352 , 0 AS PY_ACTUAL
1353 , null AS P_CHANGE1
1354 , null AS P_CHANGE11
1355 , null AS P_CHANGE12
1356 , 0 AS P_FORECAST
1357 , 0 AS PY_FORECAST
1358 , null AS P_CHANGE2
1359 , null AS P_CHANGE21
1360 , null AS P_CHANGE22
1361 FROM dual
1362 UNION ALL
1363 SELECT
1364 1 AS PHASE_CODE
1365 ,3 AS AMOUNT_TYPE_CODE
1366 ,l_label_margin AS AMOUNT_TYPE_LABEL
1367 , 0 AS P_ACTUAL
1368 , 0 AS PY_ACTUAL
1369 , null AS P_CHANGE1
1370 , null AS P_CHANGE11
1371 , null AS P_CHANGE12
1372 , 0 AS P_FORECAST
1373 , 0 AS PY_FORECAST
1374 , null AS P_CHANGE2
1375 , null AS P_CHANGE21
1376 , null AS P_CHANGE22
1377 FROM dual
1378 )
1379 WHERE 1 = 1
1380 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
1381
1382 /*
1383 ** Work Type Processing ---------------------------------------------------+
1384 */
1385
1386 /* ----------------------------------- Case 4 truth table ------------------------------------- */
1387
1388 ELSIF (l_Convert_Classification = 'N')
1389 and (l_Convert_Event_Revenue_Type = 'N')
1390 THEN
1391
1392 SELECT PJI_REP_PP3(PHASE_CODE
1393 ,AMOUNT_TYPE_CODE
1394 ,AMOUNT_TYPE_LABEL
1395 , SUM( P_ACTUAL )
1396 , NULL
1397 , NULL
1398 , SUM( PY_ACTUAL )
1399 , NULL
1400 , NULL
1401 , SUM( P_CHANGE1 )
1402 , SUM( P_CHANGE11 )
1403 , SUM( P_CHANGE12 )
1404 , SUM( P_FORECAST )
1405 , NULL
1406 , NULL
1407 , SUM( PY_FORECAST )
1408 , NULL
1409 , NULL
1410 , SUM( P_CHANGE2 )
1411 , SUM( P_CHANGE21 )
1412 , SUM( P_CHANGE22 )
1413 , NULL
1414 , NULL)
1415 BULK COLLECT INTO l_phase_tab
1416 FROM
1417 ( SELECT /*+ ORDERED */
1418 1 AS PHASE_CODE
1419 , 1 AS AMOUNT_TYPE_CODE
1420 , l_label_rev AS AMOUNT_TYPE_LABEL
1421 , null AS P_ACTUAL
1422 , 0 AS PY_ACTUAL
1423 , null AS P_CHANGE1
1424 , null AS P_CHANGE11
1425 , null AS P_CHANGE12
1426 , null AS P_FORECAST
1427 , 0 AS PY_FORECAST
1428 , null AS P_CHANGE2
1429 , null AS P_CHANGE21
1430 , null AS P_CHANGE22
1431 FROM
1432 PJI_PMV_TIME_DIM_TMP TIME
1433 , PJI_PMV_ORGZ_DIM_TMP HORG
1434 , PJI_PMV_WT_DIM_TMP WT
1435 , PJI_FP_ORGO_ET_WT_F_MV fct
1436 , PJI_PMV_ORG_DIM_TMP HOU
1437
1438 WHERE
1439 FCT.ORG_ID = HOU.ID
1440 AND FCT.ORGANIZATION_ID = HORG.ID
1441 AND FCT.TIME_ID = TIME.ID
1442 AND TIME.ID IS NOT NULL
1443 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1444 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1445 AND FCT.WORK_TYPE_ID = WT.ID
1446 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1447 UNION ALL
1448 SELECT /*+ ORDERED */
1449 1 AS PHASE_CODE
1450 , 1 AS AMOUNT_TYPE_CODE
1451 , l_label_rev AS AMOUNT_TYPE_LABEL
1452 , 0 AS P_ACTUAL
1453 , null AS PY_ACTUAL
1454 , null AS P_CHANGE1
1455 , null AS P_CHANGE11
1456 , null AS P_CHANGE12
1457 , 0 AS P_FORECAST
1458 , null AS PY_FORECAST
1459 , null AS P_CHANGE2
1460 , null AS P_CHANGE21
1461 , null AS P_CHANGE22
1462 FROM
1463 PJI_PMV_TIME_DIM_TMP TIME
1464 , PJI_PMV_ORGZ_DIM_TMP HORG
1465 , PJI_PMV_WT_DIM_TMP WT
1466 , PJI_FP_ORGO_ET_WT_F_MV fct
1467 , PJI_PMV_ORG_DIM_TMP HOU
1468 WHERE
1469 FCT.ORG_ID = HOU.ID
1470 AND FCT.ORGANIZATION_ID = HORG.ID
1471 AND FCT.TIME_ID = TIME.PRIOR_ID
1472 AND TIME.PRIOR_ID IS NOT NULL
1473 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1474 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1475 AND FCT.WORK_TYPE_ID = WT.ID
1476 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1477 UNION ALL
1478 SELECT /*+ ORDERED */
1479 1 AS PHASE_CODE
1480 , 2 AS AMOUNT_TYPE_CODE
1481 , l_label_cost AS AMOUNT_TYPE_LABEL
1482 , DECODE(TIME.amount_type,1,
1483 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1484 'RC', raw_cost, 0), 0) AS P_ACTUAL
1485 , 0 AS PY_ACTUAL
1486 , null AS P_CHANGE1
1487 , null AS P_CHANGE11
1488 , null AS P_CHANGE12
1489 , null AS P_FORECAST
1490 , 0 AS PY_FORECAST
1491 , null AS P_CHANGE2
1492 , null AS P_CHANGE21
1493 , null AS P_CHANGE22
1494 FROM
1495 PJI_PMV_TIME_DIM_TMP TIME
1496 , PJI_PMV_ORGZ_DIM_TMP HORG
1497 , PJI_PMV_WT_DIM_TMP WT
1498 , PJI_FP_ORGO_ET_WT_F_MV fct
1499 , PJI_PMV_ORG_DIM_TMP HOU
1500
1501 WHERE
1502 FCT.ORG_ID = HOU.ID
1503 AND FCT.ORGANIZATION_ID = HORG.ID
1504 AND FCT.TIME_ID = TIME.ID
1505 AND TIME.ID IS NOT NULL
1506 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1507 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1508 AND FCT.WORK_TYPE_ID = WT.ID
1509 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1510 UNION ALL
1511 SELECT /*+ ORDERED */
1512 1 AS PHASE_CODE
1513 , 2 AS AMOUNT_TYPE_CODE
1514 , l_label_cost AS AMOUNT_TYPE_LABEL
1515 , 0 AS P_ACTUAL
1516 , DECODE(TIME.amount_type,1,
1517 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1518 'RC', raw_cost, 0), 0) AS PY_ACTUAL
1519 , null AS P_CHANGE1
1520 , null AS P_CHANGE11
1521 , null AS P_CHANGE12
1522 , 0 AS P_FORECAST
1523 , null AS PY_FORECAST
1524 , null AS P_CHANGE2
1525 , null AS P_CHANGE21
1526 , null AS P_CHANGE22
1527 FROM
1528 PJI_PMV_TIME_DIM_TMP TIME
1529 , PJI_PMV_ORGZ_DIM_TMP HORG
1530 , PJI_PMV_WT_DIM_TMP WT
1531 , PJI_FP_ORGO_ET_WT_F_MV fct
1532 , PJI_PMV_ORG_DIM_TMP HOU
1533 WHERE
1534 FCT.ORG_ID = HOU.ID
1535 AND FCT.ORGANIZATION_ID = HORG.ID
1536 AND FCT.TIME_ID = TIME.PRIOR_ID
1537 AND TIME.PRIOR_ID IS NOT NULL
1538 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1539 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1540 AND FCT.WORK_TYPE_ID = WT.ID
1541 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1542 UNION ALL
1543 SELECT /*+ ORDERED */
1544 1 AS PHASE_CODE
1545 , 3 AS AMOUNT_TYPE_CODE
1546 , l_label_margin AS AMOUNT_TYPE_LABEL
1547 , null AS P_ACTUAL
1548 , 0 AS PY_ACTUAL
1549 , null AS P_CHANGE1
1550 , null AS P_CHANGE11
1551 , null AS P_CHANGE12
1552 , null AS P_FORECAST
1553 , 0 AS PY_FORECAST
1554 , null AS P_CHANGE2
1555 , null AS P_CHANGE21
1556 , null AS P_CHANGE22
1557 FROM
1558 PJI_PMV_TIME_DIM_TMP TIME
1559 , PJI_PMV_ORGZ_DIM_TMP HORG
1560 , PJI_PMV_WT_DIM_TMP WT
1561 , PJI_FP_ORGO_ET_WT_F_MV fct
1562 , PJI_PMV_ORG_DIM_TMP HOU
1563 WHERE
1564 FCT.ORG_ID = HOU.ID
1565 AND FCT.ORGANIZATION_ID = HORG.ID
1566 AND FCT.TIME_ID = TIME.ID
1567 AND TIME.ID IS NOT NULL
1568 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1569 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1570 AND FCT.WORK_TYPE_ID = WT.ID
1571 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1572 UNION ALL
1573 SELECT /*+ ORDERED */
1574 1 AS PHASE_CODE
1575 , 3 AS AMOUNT_TYPE_CODE
1576 , l_label_margin AS AMOUNT_TYPE_LABEL
1577 , 0 AS P_ACTUAL
1578 , null AS PY_ACTUAL
1579 , null AS P_CHANGE1
1580 , null AS P_CHANGE11
1581 , null AS P_CHANGE12
1582 , 0 AS P_FORECAST
1583 , null AS PY_FORECAST
1584 , null AS P_CHANGE2
1585 , null AS P_CHANGE21
1586 , null AS P_CHANGE22
1587 FROM PJI_PMV_TIME_DIM_TMP TIME
1588 , PJI_PMV_ORGZ_DIM_TMP HORG
1589 , PJI_PMV_WT_DIM_TMP WT
1590 , PJI_FP_ORGO_ET_WT_F_MV fct
1591 , PJI_PMV_ORG_DIM_TMP HOU
1592 WHERE
1593 FCT.ORG_ID = HOU.ID
1594 AND FCT.ORGANIZATION_ID = HORG.ID
1595 AND FCT.TIME_ID = TIME.PRIOR_ID
1596 AND TIME.PRIOR_ID IS NOT NULL
1597 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1598 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1599 AND FCT.WORK_TYPE_ID = WT.ID
1600 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1601 UNION ALL
1602 SELECT
1603 1 AS PHASE_CODE
1604 , 1 AS AMOUNT_TYPE_CODE
1605 , l_label_rev AS AMOUNT_TYPE_LABEL
1606 , 0 AS P_ACTUAL
1607 , 0 AS PY_ACTUAL
1608 , null AS P_CHANGE1
1609 , null AS P_CHANGE11
1610 , null AS P_CHANGE12
1611 , 0 AS P_FORECAST
1612 , 0 AS PY_FORECAST
1613 , null AS P_CHANGE2
1614 , null AS P_CHANGE21
1615 , null AS P_CHANGE22
1616 FROM dual
1617 UNION ALL
1618 SELECT
1619 1 AS PHASE_CODE
1620 ,2 AS AMOUNT_TYPE_CODE
1621 ,l_label_cost AS AMOUNT_TYPE_LABEL
1622 , 0 AS P_ACTUAL
1623 , 0 AS PY_ACTUAL
1624 , null AS P_CHANGE1
1625 , null AS P_CHANGE11
1626 , null AS P_CHANGE12
1627 , 0 AS P_FORECAST
1628 , 0 AS PY_FORECAST
1629 , null AS P_CHANGE2
1630 , null AS P_CHANGE21
1631 , null AS P_CHANGE22
1632 FROM dual
1633 UNION ALL
1634 SELECT
1635 1 AS PHASE_CODE
1636 ,3 AS AMOUNT_TYPE_CODE
1637 ,l_label_margin AS AMOUNT_TYPE_LABEL
1638 , 0 AS P_ACTUAL
1639 , 0 AS PY_ACTUAL
1640 , null AS P_CHANGE1
1641 , null AS P_CHANGE11
1642 , null AS P_CHANGE12
1643 , 0 AS P_FORECAST
1644 , 0 AS PY_FORECAST
1645 , null AS P_CHANGE2
1646 , null AS P_CHANGE21
1647 , null AS P_CHANGE22
1648 FROM dual
1649 )
1650 WHERE 1 = 1
1651 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
1652
1653 /*
1654 ** Project classification and Expenditure or Revenue Type Processing
1655
1656 ---------------------------------+
1657 */
1658
1659 /* ----------------------------------- Case 5 truth table ------------------------------------- */
1660
1661 ELSIF (l_Convert_Work_Type = 'N')
1662 THEN
1663
1664 SELECT PJI_REP_PP3(PHASE_CODE
1665 ,AMOUNT_TYPE_CODE
1666 ,AMOUNT_TYPE_LABEL
1667 , SUM( P_ACTUAL )
1668 , NULL
1669 , NULL
1670 , SUM( PY_ACTUAL )
1671 , NULL
1672 , NULL
1673 , SUM( P_CHANGE1 )
1674 , SUM( P_CHANGE11 )
1675 , SUM( P_CHANGE12 )
1676 , SUM( P_FORECAST )
1677 , NULL
1678 , NULL
1679 , SUM( PY_FORECAST )
1680 , NULL
1681 , NULL
1682 , SUM( P_CHANGE2 )
1683 , SUM( P_CHANGE21 )
1684 , SUM( P_CHANGE22 )
1685 , NULL
1686 , NULL)
1687 BULK COLLECT INTO l_phase_tab
1688 FROM
1689 ( SELECT /*+ ORDERED */
1690 1 AS PHASE_CODE
1691 , 1 AS AMOUNT_TYPE_CODE
1692 , l_label_rev AS AMOUNT_TYPE_LABEL
1693 , DECODE(TIME.amount_type,1, revenue, 0) AS P_ACTUAL
1694 , 0 AS PY_ACTUAL
1695 , null AS P_CHANGE1
1696 , null AS P_CHANGE11
1697 , null AS P_CHANGE12
1698 , null AS P_FORECAST
1699 , 0 AS PY_FORECAST
1700 , null AS P_CHANGE2
1701 , null AS P_CHANGE21
1702 , null AS P_CHANGE22
1703 FROM
1704 PJI_PMV_TIME_DIM_TMP TIME
1705 , PJI_PMV_ORGZ_DIM_TMP HORG
1706 , PJI_PMV_CLS_DIM_TMP CLS
1707 , PJI_PMV_ET_RT_DIM_TMP ET
1708 , PJI_FP_CLSO_ET_F_MV fct
1709 , PJI_PMV_ORG_DIM_TMP HOU
1710
1711 WHERE
1712 FCT.PROJECT_ORG_ID = HOU.ID
1713 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1714 AND FCT.TIME_ID = TIME.ID
1715 AND TIME.ID IS NOT NULL
1716 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1717 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1718 AND FCT.PROJECT_CLASS_ID = CLS.ID
1719 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1720 AND ET.record_type = 'RT'
1721
1722 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1723 UNION ALL
1724 SELECT /*+ ORDERED */
1725 1 AS PHASE_CODE
1726 , 1 AS AMOUNT_TYPE_CODE
1727 , l_label_rev AS AMOUNT_TYPE_LABEL
1728 , 0 AS P_ACTUAL
1729 , DECODE(TIME.amount_type,1, revenue, 0) AS PY_ACTUAL
1730 , null AS P_CHANGE1
1731 , null AS P_CHANGE11
1732 , null AS P_CHANGE12
1733 , 0 AS P_FORECAST
1734 , null AS PY_FORECAST
1735 , null AS P_CHANGE2
1736 , null AS P_CHANGE21
1737 , null AS P_CHANGE22
1738 FROM
1739 PJI_PMV_TIME_DIM_TMP TIME
1740 , PJI_PMV_ORGZ_DIM_TMP HORG
1741 , PJI_PMV_CLS_DIM_TMP CLS
1742 , PJI_PMV_ET_RT_DIM_TMP ET
1743 , PJI_FP_CLSO_ET_F_MV fct
1744 , PJI_PMV_ORG_DIM_TMP HOU
1745 WHERE
1746 FCT.PROJECT_ORG_ID = HOU.ID
1747 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1748 AND FCT.TIME_ID = TIME.PRIOR_ID
1749 AND TIME.PRIOR_ID IS NOT NULL
1750 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1751 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1752 AND FCT.PROJECT_CLASS_ID = CLS.ID
1753 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1754 AND ET.record_type = 'RT'
1755 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1756 UNION ALL
1757 SELECT /*+ ORDERED */
1758 1 AS PHASE_CODE
1759 , 2 AS AMOUNT_TYPE_CODE
1760 , l_label_cost AS AMOUNT_TYPE_LABEL
1761 , DECODE(TIME.amount_type,1,
1762 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1763 'RC', raw_cost, 0), 0) AS P_ACTUAL
1764 , 0 AS PY_ACTUAL
1765 , null AS P_CHANGE1
1766 , null AS P_CHANGE11
1767 , null AS P_CHANGE12
1768 , null AS P_FORECAST
1769 , 0 AS PY_FORECAST
1770 , null AS P_CHANGE2
1771 , null AS P_CHANGE21
1772 , null AS P_CHANGE22
1773 FROM
1774 PJI_PMV_TIME_DIM_TMP TIME
1775 , PJI_PMV_ORGZ_DIM_TMP HORG
1776 , PJI_PMV_CLS_DIM_TMP CLS
1777 , PJI_PMV_ET_RT_DIM_TMP ET
1778 , PJI_FP_CLSO_ET_F_MV fct
1779 , PJI_PMV_ORG_DIM_TMP HOU
1780
1781 WHERE
1782 FCT.PROJECT_ORG_ID = HOU.ID
1783 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1784 AND FCT.TIME_ID = TIME.ID
1785 AND TIME.ID IS NOT NULL
1786 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1787 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1788 AND FCT.PROJECT_CLASS_ID = CLS.ID
1789 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1790 AND ET.record_type = 'RT'
1791 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1792 UNION ALL
1793 SELECT /*+ ORDERED */
1794 1 AS PHASE_CODE
1795 , 2 AS AMOUNT_TYPE_CODE
1796 , l_label_cost AS AMOUNT_TYPE_LABEL
1797 , 0 AS P_ACTUAL
1798 , DECODE(TIME.amount_type,1,
1799 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1800 'RC', raw_cost, 0), 0) AS PY_ACTUAL
1801 , null AS P_CHANGE1
1802 , null AS P_CHANGE11
1803 , null AS P_CHANGE12
1804 , 0 AS P_FORECAST
1805 , null AS PY_FORECAST
1806 , null AS P_CHANGE2
1807 , null AS P_CHANGE21
1808 , null AS P_CHANGE22
1809 FROM
1810 PJI_PMV_TIME_DIM_TMP TIME
1811 , PJI_PMV_ORGZ_DIM_TMP HORG
1812 , PJI_PMV_CLS_DIM_TMP CLS
1813 , PJI_PMV_ET_RT_DIM_TMP ET
1814 , PJI_FP_CLSO_ET_F_MV fct
1815 , PJI_PMV_ORG_DIM_TMP HOU
1816 WHERE
1817 FCT.PROJECT_ORG_ID = HOU.ID
1818 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1819 AND FCT.TIME_ID = TIME.PRIOR_ID
1820 AND TIME.PRIOR_ID IS NOT NULL
1821 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1822 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1823 AND FCT.PROJECT_CLASS_ID = CLS.ID
1824 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1825 AND ET.record_type = 'RT'
1826 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1827 UNION ALL
1828 SELECT /*+ ORDERED */
1829 1 AS PHASE_CODE
1830 , 3 AS AMOUNT_TYPE_CODE
1831 , l_label_margin AS AMOUNT_TYPE_LABEL
1832 , DECODE(TIME.amount_type,1, (revenue -
1833 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1834 'RC', raw_cost, 0)), 0) AS P_ACTUAL
1835 , 0 AS PY_ACTUAL
1836 , null AS P_CHANGE1
1837 , null AS P_CHANGE11
1838 , null AS P_CHANGE12
1839 , null AS P_FORECAST
1840 , 0 AS PY_FORECAST
1841 , null AS P_CHANGE2
1842 , null AS P_CHANGE21
1843 , null AS P_CHANGE22
1844 FROM
1845 PJI_PMV_TIME_DIM_TMP TIME
1846 , PJI_PMV_ORGZ_DIM_TMP HORG
1847 , PJI_PMV_CLS_DIM_TMP CLS
1848 , PJI_PMV_ET_RT_DIM_TMP ET
1849 , PJI_FP_CLSO_ET_F_MV fct
1850 , PJI_PMV_ORG_DIM_TMP HOU
1851 WHERE
1852 FCT.PROJECT_ORG_ID = HOU.ID
1853 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1854 AND FCT.TIME_ID = TIME.ID
1855 AND TIME.ID IS NOT NULL
1856 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1857 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1858 AND FCT.PROJECT_CLASS_ID = CLS.ID
1859 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1860 AND ET.record_type = 'RT'
1861 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1862 UNION ALL
1863 SELECT /*+ ORDERED */
1864 1 AS PHASE_CODE
1865 , 3 AS AMOUNT_TYPE_CODE
1866 , l_label_margin AS AMOUNT_TYPE_LABEL
1867 , 0 AS P_ACTUAL
1868 , DECODE(TIME.amount_type,1, (revenue -
1869 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
1870 'RC', raw_cost, 0)), 0) AS PY_ACTUAL
1871 , null AS P_CHANGE1
1872 , null AS P_CHANGE11
1873 , null AS P_CHANGE12
1874 , 0 AS P_FORECAST
1875 , null AS PY_FORECAST
1876 , null AS P_CHANGE2
1877 , null AS P_CHANGE21
1878 , null AS P_CHANGE22
1879 FROM PJI_PMV_TIME_DIM_TMP TIME
1880 , PJI_PMV_ORGZ_DIM_TMP HORG
1881 , PJI_PMV_CLS_DIM_TMP CLS
1882 , PJI_PMV_ET_RT_DIM_TMP ET
1883 , PJI_FP_CLSO_ET_F_MV fct
1884 , PJI_PMV_ORG_DIM_TMP HOU
1885 WHERE
1886 FCT.PROJECT_ORG_ID = HOU.ID
1887 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
1888 AND FCT.TIME_ID = TIME.PRIOR_ID
1889 AND TIME.PRIOR_ID IS NOT NULL
1890 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
1891 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
1892 AND FCT.PROJECT_CLASS_ID = CLS.ID
1893 AND FCT.EXP_EVT_TYPE_ID = ET.ID
1894 AND ET.record_type = 'RT'
1895 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
1896 UNION ALL
1897 SELECT
1898 1 AS PHASE_CODE
1899 , 1 AS AMOUNT_TYPE_CODE
1900 , l_label_rev AS AMOUNT_TYPE_LABEL
1901 , 0 AS P_ACTUAL
1902 , 0 AS PY_ACTUAL
1903 , null AS P_CHANGE1
1904 , null AS P_CHANGE11
1905 , null AS P_CHANGE12
1906 , 0 AS P_FORECAST
1907 , 0 AS PY_FORECAST
1908 , null AS P_CHANGE2
1909 , null AS P_CHANGE21
1910 , null AS P_CHANGE22
1911 FROM dual
1912 UNION ALL
1913 SELECT
1914 1 AS PHASE_CODE
1915 ,2 AS AMOUNT_TYPE_CODE
1916 ,l_label_cost AS AMOUNT_TYPE_LABEL
1917 , 0 AS P_ACTUAL
1918 , 0 AS PY_ACTUAL
1919 , null AS P_CHANGE1
1920 , null AS P_CHANGE11
1921 , null AS P_CHANGE12
1922 , 0 AS P_FORECAST
1923 , 0 AS PY_FORECAST
1924 , null AS P_CHANGE2
1925 , null AS P_CHANGE21
1926 , null AS P_CHANGE22
1927 FROM dual
1928 UNION ALL
1929 SELECT
1930 1 AS PHASE_CODE
1931 ,3 AS AMOUNT_TYPE_CODE
1932 ,l_label_margin AS AMOUNT_TYPE_LABEL
1933 , 0 AS P_ACTUAL
1934 , 0 AS PY_ACTUAL
1935 , null AS P_CHANGE1
1936 , null AS P_CHANGE11
1937 , null AS P_CHANGE12
1938 , 0 AS P_FORECAST
1939 , 0 AS PY_FORECAST
1940 , null AS P_CHANGE2
1941 , null AS P_CHANGE21
1942 , null AS P_CHANGE22
1943 FROM dual
1944 )
1945 WHERE 1 = 1
1946 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
1947
1948 /*
1949 ** Expenditure or Revenue Type and Work Type Processing -----------------------------------------+
1950 */
1951
1952 /* ----------------------------------- Case 6 truth table ------------------------------------- */
1953
1954 ELSIF (l_Convert_Classification = 'N')
1955 THEN
1956
1957 SELECT PJI_REP_PP3(PHASE_CODE
1958 ,AMOUNT_TYPE_CODE
1959 ,AMOUNT_TYPE_LABEL
1960 , SUM( P_ACTUAL )
1961 , NULL
1962 , NULL
1963 , SUM( PY_ACTUAL )
1964 , NULL
1965 , NULL
1966 , SUM( P_CHANGE1 )
1967 , SUM( P_CHANGE11 )
1968 , SUM( P_CHANGE12 )
1969 , SUM( P_FORECAST )
1970 , NULL
1971 , NULL
1972 , SUM( PY_FORECAST )
1973 , NULL
1974 , NULL
1975 , SUM( P_CHANGE2 )
1976 , SUM( P_CHANGE21 )
1977 , SUM( P_CHANGE22 )
1978 , NULL
1979 , NULL)
1980 BULK COLLECT INTO l_phase_tab
1981 FROM
1982 ( SELECT /*+ ORDERED */
1983 1 AS PHASE_CODE
1984 , 1 AS AMOUNT_TYPE_CODE
1985 , l_label_rev AS AMOUNT_TYPE_LABEL
1986 , null AS P_ACTUAL
1987 , 0 AS PY_ACTUAL
1988 , null AS P_CHANGE1
1989 , null AS P_CHANGE11
1990 , null AS P_CHANGE12
1991 , null AS P_FORECAST
1992 , 0 AS PY_FORECAST
1993 , null AS P_CHANGE2
1994 , null AS P_CHANGE21
1995 , null AS P_CHANGE22
1996 FROM
1997 PJI_PMV_TIME_DIM_TMP TIME
1998 , PJI_PMV_ORGZ_DIM_TMP HORG
1999 , PJI_PMV_ET_RT_DIM_TMP ET
2000 , PJI_PMV_WT_DIM_TMP WT
2001 , PJI_FP_ORGO_ET_WT_F_MV fct
2002 , PJI_PMV_ORG_DIM_TMP HOU
2003
2004 WHERE
2005 FCT.ORG_ID = HOU.ID
2006 AND FCT.ORGANIZATION_ID = HORG.ID
2007 AND FCT.TIME_ID = TIME.ID
2008 AND TIME.ID IS NOT NULL
2009 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2010 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2011 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2012 AND ET.record_type = 'RT'
2013 AND FCT.WORK_TYPE_ID = WT.ID
2014 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2015 UNION ALL
2016 SELECT /*+ ORDERED */
2017 1 AS PHASE_CODE
2018 , 1 AS AMOUNT_TYPE_CODE
2019 , l_label_rev AS AMOUNT_TYPE_LABEL
2020 , 0 AS P_ACTUAL
2021 , null AS PY_ACTUAL
2022 , null AS P_CHANGE1
2023 , null AS P_CHANGE11
2024 , null AS P_CHANGE12
2025 , 0 AS P_FORECAST
2026 , null AS PY_FORECAST
2027 , null AS P_CHANGE2
2028 , null AS P_CHANGE21
2029 , null AS P_CHANGE22
2030 FROM
2031 PJI_PMV_TIME_DIM_TMP TIME
2032 , PJI_PMV_ORGZ_DIM_TMP HORG
2033 , PJI_PMV_ET_RT_DIM_TMP ET
2034 , PJI_PMV_WT_DIM_TMP WT
2035 , PJI_FP_ORGO_ET_WT_F_MV fct
2036 , PJI_PMV_ORG_DIM_TMP HOU
2037 WHERE
2038 FCT.ORG_ID = HOU.ID
2039 AND FCT.ORGANIZATION_ID = HORG.ID
2040 AND FCT.TIME_ID = TIME.PRIOR_ID
2041 AND TIME.PRIOR_ID IS NOT NULL
2042 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2043 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2044 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2045 AND ET.record_type = 'RT'
2046 AND FCT.WORK_TYPE_ID = WT.ID
2047
2048 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2049 UNION ALL
2050 SELECT /*+ ORDERED */
2051 1 AS PHASE_CODE
2052 , 2 AS AMOUNT_TYPE_CODE
2053 , l_label_cost AS AMOUNT_TYPE_LABEL
2054 , DECODE(TIME.amount_type,1,
2055 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2056 'RC', raw_cost, 0), 0) AS P_ACTUAL
2057 , 0 AS PY_ACTUAL
2058 , null AS P_CHANGE1
2059 , null AS P_CHANGE11
2060 , null AS P_CHANGE12
2061 , null AS P_FORECAST
2062 , 0 AS PY_FORECAST
2063 , null AS P_CHANGE2
2064 , null AS P_CHANGE21
2065 , null AS P_CHANGE22
2066 FROM
2067 PJI_PMV_TIME_DIM_TMP TIME
2068 , PJI_PMV_ORGZ_DIM_TMP HORG
2069 , PJI_PMV_ET_RT_DIM_TMP ET
2070 , PJI_PMV_WT_DIM_TMP WT
2071 , PJI_FP_ORGO_ET_WT_F_MV fct
2072 , PJI_PMV_ORG_DIM_TMP HOU
2073
2074 WHERE
2075 FCT.ORG_ID = HOU.ID
2076 AND FCT.ORGANIZATION_ID = HORG.ID
2077 AND FCT.TIME_ID = TIME.ID
2078 AND TIME.ID IS NOT NULL
2079 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2080 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2081 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2082 AND ET.record_type = 'RT'
2083 AND FCT.WORK_TYPE_ID = WT.ID
2084 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2085 UNION ALL
2086 SELECT /*+ ORDERED */
2087 1 AS PHASE_CODE
2088 , 2 AS AMOUNT_TYPE_CODE
2089 , l_label_cost AS AMOUNT_TYPE_LABEL
2090 , 0 AS P_ACTUAL
2091 , DECODE(TIME.amount_type,1,
2092 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2093 'RC', raw_cost, 0), 0) AS PY_ACTUAL
2094 , null AS P_CHANGE1
2095 , null AS P_CHANGE11
2096 , null AS P_CHANGE12
2097 , 0 AS P_FORECAST
2098 , null AS PY_FORECAST
2099 , null AS P_CHANGE2
2100 , null AS P_CHANGE21
2101 , null AS P_CHANGE22
2102 FROM
2103 PJI_PMV_TIME_DIM_TMP TIME
2104 , PJI_PMV_ORGZ_DIM_TMP HORG
2105 , PJI_PMV_ET_RT_DIM_TMP ET
2106 , PJI_PMV_WT_DIM_TMP WT
2107 , PJI_FP_ORGO_ET_WT_F_MV fct
2108 , PJI_PMV_ORG_DIM_TMP HOU
2109 WHERE
2110 FCT.ORG_ID = HOU.ID
2111 AND FCT.ORGANIZATION_ID = HORG.ID
2112 AND FCT.TIME_ID = TIME.PRIOR_ID
2113 AND TIME.PRIOR_ID IS NOT NULL
2114 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2115 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2116 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2117 AND ET.record_type = 'RT'
2118 AND FCT.WORK_TYPE_ID = WT.ID
2119 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2120 UNION ALL
2121 SELECT /*+ ORDERED */
2122 1 AS PHASE_CODE
2123 , 3 AS AMOUNT_TYPE_CODE
2124 , l_label_margin AS AMOUNT_TYPE_LABEL
2125 , null AS P_ACTUAL
2126 , 0 AS PY_ACTUAL
2127 , null AS P_CHANGE1
2128 , null AS P_CHANGE11
2129 , null AS P_CHANGE12
2130 , null AS P_FORECAST
2131 , 0 AS PY_FORECAST
2132 , null AS P_CHANGE2
2133 , null AS P_CHANGE21
2134 , null AS P_CHANGE22
2135 FROM
2136 PJI_PMV_TIME_DIM_TMP TIME
2137 , PJI_PMV_ORGZ_DIM_TMP HORG
2138 , PJI_PMV_ET_RT_DIM_TMP ET
2139 , PJI_PMV_WT_DIM_TMP WT
2140 , PJI_FP_ORGO_ET_WT_F_MV fct
2141 , PJI_PMV_ORG_DIM_TMP HOU
2142 WHERE
2143 FCT.ORG_ID = HOU.ID
2144 AND FCT.ORGANIZATION_ID = HORG.ID
2145 AND FCT.TIME_ID = TIME.ID
2146 AND TIME.ID IS NOT NULL
2147 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2148 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2149 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2150 AND ET.record_type = 'RT'
2151 AND FCT.WORK_TYPE_ID = WT.ID
2152 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2153 UNION ALL
2154 SELECT /*+ ORDERED */
2155 1 AS PHASE_CODE
2156 , 3 AS AMOUNT_TYPE_CODE
2157 , l_label_margin AS AMOUNT_TYPE_LABEL
2158 , 0 AS P_ACTUAL
2159 , null AS PY_ACTUAL
2160 , null AS P_CHANGE1
2161 , null AS P_CHANGE11
2162 , null AS P_CHANGE12
2163 , 0 AS P_FORECAST
2164 , null AS PY_FORECAST
2165 , null AS P_CHANGE2
2166 , null AS P_CHANGE21
2167 , null AS P_CHANGE22
2168 FROM PJI_PMV_TIME_DIM_TMP TIME
2169 , PJI_PMV_ORGZ_DIM_TMP HORG
2170 , PJI_PMV_ET_RT_DIM_TMP ET
2171 , PJI_PMV_WT_DIM_TMP WT
2172 , PJI_FP_ORGO_ET_WT_F_MV fct
2173 , PJI_PMV_ORG_DIM_TMP HOU
2174 WHERE
2175 FCT.ORG_ID = HOU.ID
2176 AND FCT.ORGANIZATION_ID = HORG.ID
2177 AND FCT.TIME_ID = TIME.PRIOR_ID
2178 AND TIME.PRIOR_ID IS NOT NULL
2179 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2180 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2181 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2182 AND ET.record_type = 'RT'
2183 AND FCT.WORK_TYPE_ID = WT.ID
2184 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2185 UNION ALL
2186 SELECT
2187 1 AS PHASE_CODE
2188 , 1 AS AMOUNT_TYPE_CODE
2189 , l_label_rev AS AMOUNT_TYPE_LABEL
2190 , 0 AS P_ACTUAL
2191 , 0 AS PY_ACTUAL
2192 , null AS P_CHANGE1
2193 , null AS P_CHANGE11
2194 , null AS P_CHANGE12
2195 , 0 AS P_FORECAST
2196 , 0 AS PY_FORECAST
2197 , null AS P_CHANGE2
2198 , null AS P_CHANGE21
2199 , null AS P_CHANGE22
2200 FROM dual
2201 UNION ALL
2202 SELECT
2203 1 AS PHASE_CODE
2204 ,2 AS AMOUNT_TYPE_CODE
2205 ,l_label_cost AS AMOUNT_TYPE_LABEL
2206 , 0 AS P_ACTUAL
2207 , 0 AS PY_ACTUAL
2208 , null AS P_CHANGE1
2209 , null AS P_CHANGE11
2210 , null AS P_CHANGE12
2211 , 0 AS P_FORECAST
2212 , 0 AS PY_FORECAST
2213 , null AS P_CHANGE2
2214 , null AS P_CHANGE21
2215 , null AS P_CHANGE22
2216 FROM dual
2217 UNION ALL
2218 SELECT
2219 1 AS PHASE_CODE
2220 ,3 AS AMOUNT_TYPE_CODE
2221 ,l_label_margin AS AMOUNT_TYPE_LABEL
2222 , 0 AS P_ACTUAL
2223 , 0 AS PY_ACTUAL
2224 , null AS P_CHANGE1
2225 , null AS P_CHANGE11
2226 , null AS P_CHANGE12
2227 , 0 AS P_FORECAST
2228 , 0 AS PY_FORECAST
2229 , null AS P_CHANGE2
2230 , null AS P_CHANGE21
2231 , null AS P_CHANGE22
2232 FROM dual
2233 )
2234 WHERE 1 = 1
2235 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
2236
2237 /*
2238 ** Project classification and Work Type Processing -----------------------------------------------+
2239 */
2240
2241 /* ----------------------------------- Case 7 truth table ------------------------------------- */
2242
2243 ELSIF (l_Convert_Event_Revenue_Type = 'N')
2244 THEN
2245
2246 SELECT PJI_REP_PP3(PHASE_CODE
2247 ,AMOUNT_TYPE_CODE
2248 ,AMOUNT_TYPE_LABEL
2249 , SUM( P_ACTUAL )
2250 , NULL
2251 , NULL
2252 , SUM( PY_ACTUAL )
2253 , NULL
2254 , NULL
2255 , SUM( P_CHANGE1 )
2256 , SUM( P_CHANGE11 )
2257 , SUM( P_CHANGE12 )
2258 , SUM( P_FORECAST )
2259 , NULL
2260 , NULL
2261 , SUM( PY_FORECAST )
2262 , NULL
2263 , NULL
2264 , SUM( P_CHANGE2 )
2265 , SUM( P_CHANGE21 )
2266 , SUM( P_CHANGE22 )
2267 , NULL
2268 , NULL)
2269 BULK COLLECT INTO l_phase_tab
2270 FROM
2271 ( SELECT /*+ ORDERED */
2272 1 AS PHASE_CODE
2273 , 1 AS AMOUNT_TYPE_CODE
2274 , l_label_rev AS AMOUNT_TYPE_LABEL
2275 , null AS P_ACTUAL
2276 , 0 AS PY_ACTUAL
2277 , null AS P_CHANGE1
2278 , null AS P_CHANGE11
2279 , null AS P_CHANGE12
2280 , null AS P_FORECAST
2281 , 0 AS PY_FORECAST
2282 , null AS P_CHANGE2
2283 , null AS P_CHANGE21
2284 , null AS P_CHANGE22
2285 FROM
2286 PJI_PMV_TIME_DIM_TMP TIME
2287 , PJI_PMV_ORGZ_DIM_TMP HORG
2288 , PJI_PMV_CLS_DIM_TMP CLS
2289 , PJI_PMV_WT_DIM_TMP WT
2290 , PJI_FP_CLSO_ET_WT_F_MV fct
2291 , PJI_PMV_ORG_DIM_TMP HOU
2292
2293 WHERE
2294 FCT.PROJECT_ORG_ID = HOU.ID
2295 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2296 AND FCT.TIME_ID = TIME.ID
2297 AND TIME.ID IS NOT NULL
2298 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2299 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2300 AND FCT.PROJECT_CLASS_ID = CLS.ID
2301 AND FCT.WORK_TYPE_ID = WT.ID
2302 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2303 UNION ALL
2304 SELECT /*+ ORDERED */
2305 1 AS PHASE_CODE
2306 , 1 AS AMOUNT_TYPE_CODE
2307 , l_label_rev AS AMOUNT_TYPE_LABEL
2308 , 0 AS P_ACTUAL
2309 , null AS PY_ACTUAL
2310 , null AS P_CHANGE1
2311 , null AS P_CHANGE11
2312 , null AS P_CHANGE12
2313 , 0 AS P_FORECAST
2314 , null AS PY_FORECAST
2315 , null AS P_CHANGE2
2316 , null AS P_CHANGE21
2317 , null AS P_CHANGE22
2318 FROM
2319 PJI_PMV_TIME_DIM_TMP TIME
2320 , PJI_PMV_ORGZ_DIM_TMP HORG
2321 , PJI_PMV_CLS_DIM_TMP CLS
2322 , PJI_PMV_WT_DIM_TMP WT
2323 , PJI_FP_CLSO_ET_WT_F_MV fct
2324 , PJI_PMV_ORG_DIM_TMP HOU
2325 WHERE
2326 FCT.PROJECT_ORG_ID = HOU.ID
2327 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2328 AND FCT.TIME_ID = TIME.PRIOR_ID
2329 AND TIME.PRIOR_ID IS NOT NULL
2330 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2331 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2332 AND FCT.PROJECT_CLASS_ID = CLS.ID
2333 AND FCT.WORK_TYPE_ID = WT.ID
2334 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2335 UNION ALL
2336 SELECT /*+ ORDERED */
2337 1 AS PHASE_CODE
2338 , 2 AS AMOUNT_TYPE_CODE
2339 , l_label_cost AS AMOUNT_TYPE_LABEL
2340 , DECODE(TIME.amount_type,1,
2341 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2342 'RC', raw_cost, 0), 0) AS P_ACTUAL
2343 , 0 AS PY_ACTUAL
2344 , null AS P_CHANGE1
2345 , null AS P_CHANGE11
2346 , null AS P_CHANGE12
2347 , null AS P_FORECAST
2348 , 0 AS PY_FORECAST
2349 , null AS P_CHANGE2
2350 , null AS P_CHANGE21
2351 , null AS P_CHANGE22
2352 FROM
2353 PJI_PMV_TIME_DIM_TMP TIME
2354 , PJI_PMV_ORGZ_DIM_TMP HORG
2355 , PJI_PMV_CLS_DIM_TMP CLS
2356 , PJI_PMV_WT_DIM_TMP WT
2357 , PJI_FP_CLSO_ET_WT_F_MV fct
2358 , PJI_PMV_ORG_DIM_TMP HOU
2359
2360 WHERE
2361 FCT.PROJECT_ORG_ID = HOU.ID
2362 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2363 AND FCT.TIME_ID = TIME.ID
2364 AND TIME.ID IS NOT NULL
2365 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2366 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2367 AND FCT.PROJECT_CLASS_ID = CLS.ID
2368 AND FCT.WORK_TYPE_ID = WT.ID
2369 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2370 UNION ALL
2371 SELECT /*+ ORDERED */
2372 1 AS PHASE_CODE
2373 , 2 AS AMOUNT_TYPE_CODE
2374 , l_label_cost AS AMOUNT_TYPE_LABEL
2375 , 0 AS P_ACTUAL
2376 , DECODE(TIME.amount_type,1,
2377 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2378 'RC', raw_cost, 0), 0) AS PY_ACTUAL
2379 , null AS P_CHANGE1
2380 , null AS P_CHANGE11
2381 , null AS P_CHANGE12
2382 , 0 AS P_FORECAST
2383 , null AS PY_FORECAST
2384 , null AS P_CHANGE2
2385 , null AS P_CHANGE21
2386 , null AS P_CHANGE22
2387 FROM
2388 PJI_PMV_TIME_DIM_TMP TIME
2389 , PJI_PMV_ORGZ_DIM_TMP HORG
2390 , PJI_PMV_CLS_DIM_TMP CLS
2391 , PJI_PMV_WT_DIM_TMP WT
2392 , PJI_FP_CLSO_ET_WT_F_MV fct
2393 , PJI_PMV_ORG_DIM_TMP HOU
2394 WHERE
2395 FCT.PROJECT_ORG_ID = HOU.ID
2396 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2397 AND FCT.TIME_ID = TIME.PRIOR_ID
2398 AND TIME.PRIOR_ID IS NOT NULL
2399 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2400 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2401 AND FCT.PROJECT_CLASS_ID = CLS.ID
2402 AND FCT.WORK_TYPE_ID = WT.ID
2403 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2404 UNION ALL
2405 SELECT /*+ ORDERED */
2406 1 AS PHASE_CODE
2407 , 3 AS AMOUNT_TYPE_CODE
2408 , l_label_margin AS AMOUNT_TYPE_LABEL
2409 , null AS P_ACTUAL
2410 , 0 AS PY_ACTUAL
2411 , null AS P_CHANGE1
2412 , null AS P_CHANGE11
2413 , null AS P_CHANGE12
2414 , null AS P_FORECAST
2415 , 0 AS PY_FORECAST
2416 , null AS P_CHANGE2
2417 , null AS P_CHANGE21
2418 , null AS P_CHANGE22
2419 FROM
2420 PJI_PMV_TIME_DIM_TMP TIME
2421 , PJI_PMV_ORGZ_DIM_TMP HORG
2422 , PJI_PMV_CLS_DIM_TMP CLS
2423 , PJI_PMV_WT_DIM_TMP WT
2424 , PJI_FP_CLSO_ET_WT_F_MV fct
2425 , PJI_PMV_ORG_DIM_TMP HOU
2426 WHERE
2427 FCT.PROJECT_ORG_ID = HOU.ID
2428 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2429 AND FCT.TIME_ID = TIME.ID
2430 AND TIME.ID IS NOT NULL
2431 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2432 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2433 AND FCT.PROJECT_CLASS_ID = CLS.ID
2434 AND FCT.WORK_TYPE_ID = WT.ID
2435 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2436 UNION ALL
2437 SELECT /*+ ORDERED */
2438 1 AS PHASE_CODE
2439 , 3 AS AMOUNT_TYPE_CODE
2440 , l_label_margin AS AMOUNT_TYPE_LABEL
2441 , 0 AS P_ACTUAL
2442 , null AS PY_ACTUAL
2443 , null AS P_CHANGE1
2444 , null AS P_CHANGE11
2445 , null AS P_CHANGE12
2446 , 0 AS P_FORECAST
2447 , null AS PY_FORECAST
2448 , null AS P_CHANGE2
2449 , null AS P_CHANGE21
2450 , null AS P_CHANGE22
2451 FROM PJI_PMV_TIME_DIM_TMP TIME
2452 , PJI_PMV_ORGZ_DIM_TMP HORG
2453 , PJI_PMV_CLS_DIM_TMP CLS
2454 , PJI_PMV_WT_DIM_TMP WT
2455 , PJI_FP_CLSO_ET_WT_F_MV fct
2456 , PJI_PMV_ORG_DIM_TMP HOU
2457 WHERE
2458 FCT.PROJECT_ORG_ID = HOU.ID
2459 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2460 AND FCT.TIME_ID = TIME.PRIOR_ID
2461 AND TIME.PRIOR_ID IS NOT NULL
2462 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2463 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2464 AND FCT.PROJECT_CLASS_ID = CLS.ID
2465 AND FCT.WORK_TYPE_ID = WT.ID
2466 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2467 UNION ALL
2468 SELECT
2469 1 AS PHASE_CODE
2470 , 1 AS AMOUNT_TYPE_CODE
2471 , l_label_rev AS AMOUNT_TYPE_LABEL
2472 , 0 AS P_ACTUAL
2473 , 0 AS PY_ACTUAL
2474 , null AS P_CHANGE1
2475 , null AS P_CHANGE11
2476 , null AS P_CHANGE12
2477 , 0 AS P_FORECAST
2478 , 0 AS PY_FORECAST
2479 , null AS P_CHANGE2
2480 , null AS P_CHANGE21
2481 , null AS P_CHANGE22
2482 FROM dual
2483 UNION ALL
2484 SELECT
2485 1 AS PHASE_CODE
2486 ,2 AS AMOUNT_TYPE_CODE
2487 ,l_label_cost AS AMOUNT_TYPE_LABEL
2488 , 0 AS P_ACTUAL
2489 , 0 AS PY_ACTUAL
2490 , null AS P_CHANGE1
2491 , null AS P_CHANGE11
2492 , null AS P_CHANGE12
2493 , 0 AS P_FORECAST
2494 , 0 AS PY_FORECAST
2495 , null AS P_CHANGE2
2496 , null AS P_CHANGE21
2497 , null AS P_CHANGE22
2498 FROM dual
2499 UNION ALL
2500 SELECT
2501 1 AS PHASE_CODE
2502 ,3 AS AMOUNT_TYPE_CODE
2503 ,l_label_margin AS AMOUNT_TYPE_LABEL
2504 , 0 AS P_ACTUAL
2505 , 0 AS PY_ACTUAL
2506 , null AS P_CHANGE1
2507 , null AS P_CHANGE11
2508 , null AS P_CHANGE12
2509 , 0 AS P_FORECAST
2510 , 0 AS PY_FORECAST
2511 , null AS P_CHANGE2
2512 , null AS P_CHANGE21
2513 , null AS P_CHANGE22
2514 FROM dual
2515 )
2516 WHERE 1 = 1
2517 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
2518
2519 /*
2520 ** Project classification and Expenditure or Revenue Type and Work Type Processing ----------------+
2521 */
2522
2523 /* ----------------------------------- Case 8 truth table ------------------------------------- */
2524
2525 ELSE
2526
2527 SELECT PJI_REP_PP3(PHASE_CODE
2528 ,AMOUNT_TYPE_CODE
2529 ,AMOUNT_TYPE_LABEL
2530 , SUM( P_ACTUAL )
2531 , NULL
2532 , NULL
2533 , SUM( PY_ACTUAL )
2534 , NULL
2535 , NULL
2536 , SUM( P_CHANGE1 )
2537 , SUM( P_CHANGE11 )
2538 , SUM( P_CHANGE12 )
2539 , SUM( P_FORECAST )
2540 , NULL
2541 , NULL
2542 , SUM( PY_FORECAST )
2543 , NULL
2544 , NULL
2545 , SUM( P_CHANGE2 )
2546 , SUM( P_CHANGE21 )
2547 , SUM( P_CHANGE22 )
2548 , NULL
2549 , NULL)
2550 BULK COLLECT INTO l_phase_tab
2551 FROM
2552 ( SELECT /*+ ORDERED */
2553 1 AS PHASE_CODE
2554 , 1 AS AMOUNT_TYPE_CODE
2555 , l_label_rev AS AMOUNT_TYPE_LABEL
2556 , null AS P_ACTUAL
2557 , 0 AS PY_ACTUAL
2558 , null AS P_CHANGE1
2559 , null AS P_CHANGE11
2560 , null AS P_CHANGE12
2561 , null AS P_FORECAST
2562 , 0 AS PY_FORECAST
2563 , null AS P_CHANGE2
2564 , null AS P_CHANGE21
2565 , null AS P_CHANGE22
2566 FROM
2567 PJI_PMV_TIME_DIM_TMP TIME
2568 , PJI_PMV_ORGZ_DIM_TMP HORG
2569 , PJI_PMV_CLS_DIM_TMP CLS
2570 , PJI_PMV_ET_RT_DIM_TMP ET
2571 , PJI_PMV_WT_DIM_TMP WT
2572 , PJI_FP_CLSO_ET_WT_F_MV fct
2573 , PJI_PMV_ORG_DIM_TMP HOU
2574
2575 WHERE
2576 FCT.PROJECT_ORG_ID = HOU.ID
2577 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2578 AND FCT.TIME_ID = TIME.ID
2579 AND TIME.ID IS NOT NULL
2580 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2581 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2582 AND FCT.PROJECT_CLASS_ID = CLS.ID
2583 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2584 AND ET.record_type = 'RT'
2585 AND FCT.WORK_TYPE_ID = WT.ID
2586 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2587 UNION ALL
2588 SELECT /*+ ORDERED */
2589 1 AS PHASE_CODE
2590 , 1 AS AMOUNT_TYPE_CODE
2591 , l_label_rev AS AMOUNT_TYPE_LABEL
2592 , 0 AS P_ACTUAL
2593 , null AS PY_ACTUAL
2594 , null AS P_CHANGE1
2595 , null AS P_CHANGE11
2596 , null AS P_CHANGE12
2597 , 0 AS P_FORECAST
2598 , null AS PY_FORECAST
2599 , null AS P_CHANGE2
2600 , null AS P_CHANGE21
2601 , null AS P_CHANGE22
2602 FROM
2603 PJI_PMV_TIME_DIM_TMP TIME
2604 , PJI_PMV_ORGZ_DIM_TMP HORG
2605 , PJI_PMV_CLS_DIM_TMP CLS
2606 , PJI_PMV_ET_RT_DIM_TMP ET
2607 , PJI_PMV_WT_DIM_TMP WT
2608 , PJI_FP_CLSO_ET_WT_F_MV fct
2609 , PJI_PMV_ORG_DIM_TMP HOU
2610 WHERE
2611 FCT.PROJECT_ORG_ID = HOU.ID
2612 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2613 AND FCT.TIME_ID = TIME.PRIOR_ID
2614 AND TIME.PRIOR_ID IS NOT NULL
2615 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2616 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2617 AND FCT.PROJECT_CLASS_ID = CLS.ID
2618 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2619 AND ET.record_type = 'RT'
2620 AND FCT.WORK_TYPE_ID = WT.ID
2621 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2622 UNION ALL
2623 SELECT /*+ ORDERED */
2624 1 AS PHASE_CODE
2625 , 2 AS AMOUNT_TYPE_CODE
2626 , l_label_cost AS AMOUNT_TYPE_LABEL
2627 , DECODE(TIME.amount_type,1,
2628 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2629 'RC', raw_cost, 0), 0) AS P_ACTUAL
2630 , 0 AS PY_ACTUAL
2631 , null AS P_CHANGE1
2632 , null AS P_CHANGE11
2633 , null AS P_CHANGE12
2634 , null AS P_FORECAST
2635 , 0 AS PY_FORECAST
2636 , null AS P_CHANGE2
2637 , null AS P_CHANGE21
2638 , null AS P_CHANGE22
2639 FROM
2640 PJI_PMV_TIME_DIM_TMP TIME
2641 , PJI_PMV_ORGZ_DIM_TMP HORG
2642 , PJI_PMV_CLS_DIM_TMP CLS
2643 , PJI_PMV_ET_RT_DIM_TMP ET
2644 , PJI_PMV_WT_DIM_TMP WT
2645 , PJI_FP_CLSO_ET_WT_F_MV fct
2646 , PJI_PMV_ORG_DIM_TMP HOU
2647
2648 WHERE
2649 FCT.PROJECT_ORG_ID = HOU.ID
2650 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2651 AND FCT.TIME_ID = TIME.ID
2652 AND TIME.ID IS NOT NULL
2653 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2654 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2655 AND FCT.PROJECT_CLASS_ID = CLS.ID
2656 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2657 AND ET.record_type = 'RT'
2658 AND FCT.WORK_TYPE_ID = WT.ID
2659 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2660 UNION ALL
2661 SELECT /*+ ORDERED */
2662 1 AS PHASE_CODE
2663 , 2 AS AMOUNT_TYPE_CODE
2664 , l_label_cost AS AMOUNT_TYPE_LABEL
2665 , 0 AS P_ACTUAL
2666 , DECODE(TIME.amount_type,1,
2667 DECODE(G_Report_Cost_Type, 'BC', burdened_cost,
2668 'RC', raw_cost, 0), 0) AS PY_ACTUAL
2669 , null AS P_CHANGE1
2670 , null AS P_CHANGE11
2671 , null AS P_CHANGE12
2672 , 0 AS P_FORECAST
2673 , null AS PY_FORECAST
2674 , null AS P_CHANGE2
2675 , null AS P_CHANGE21
2676 , null AS P_CHANGE22
2677 FROM
2678 PJI_PMV_TIME_DIM_TMP TIME
2679 , PJI_PMV_ORGZ_DIM_TMP HORG
2680 , PJI_PMV_CLS_DIM_TMP CLS
2681 , PJI_PMV_ET_RT_DIM_TMP ET
2682 , PJI_PMV_WT_DIM_TMP WT
2683 , PJI_FP_CLSO_ET_WT_F_MV fct
2684 , PJI_PMV_ORG_DIM_TMP HOU
2685 WHERE
2686 FCT.PROJECT_ORG_ID = HOU.ID
2687 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2688 AND FCT.TIME_ID = TIME.PRIOR_ID
2689 AND TIME.PRIOR_ID IS NOT NULL
2690 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2691 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2692 AND FCT.PROJECT_CLASS_ID = CLS.ID
2693 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2694 AND ET.record_type = 'RT'
2695 AND FCT.WORK_TYPE_ID = WT.ID
2696 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2697 UNION ALL
2698 SELECT /*+ ORDERED */
2699 1 AS PHASE_CODE
2700 , 3 AS AMOUNT_TYPE_CODE
2701 , l_label_margin AS AMOUNT_TYPE_LABEL
2702 , null AS P_ACTUAL
2703 , 0 AS PY_ACTUAL
2704 , null AS P_CHANGE1
2705 , null AS P_CHANGE11
2706 , null AS P_CHANGE12
2707 , null AS P_FORECAST
2708 , 0 AS PY_FORECAST
2709 , null AS P_CHANGE2
2710 , null AS P_CHANGE21
2711 , null AS P_CHANGE22
2712 FROM
2713 PJI_PMV_TIME_DIM_TMP TIME
2714 , PJI_PMV_ORGZ_DIM_TMP HORG
2715 , PJI_PMV_CLS_DIM_TMP CLS
2716 , PJI_PMV_ET_RT_DIM_TMP ET
2717 , PJI_PMV_WT_DIM_TMP WT
2718 , PJI_FP_CLSO_ET_WT_F_MV fct
2719 , PJI_PMV_ORG_DIM_TMP HOU
2720 WHERE
2721 FCT.PROJECT_ORG_ID = HOU.ID
2722 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2723 AND FCT.TIME_ID = TIME.ID
2724 AND TIME.ID IS NOT NULL
2725 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2726 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2727 AND FCT.PROJECT_CLASS_ID = CLS.ID
2728 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2729 AND ET.record_type = 'RT'
2730 AND FCT.WORK_TYPE_ID = WT.ID
2731 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2732 UNION ALL
2733 SELECT /*+ ORDERED */
2734 1 AS PHASE_CODE
2735 , 3 AS AMOUNT_TYPE_CODE
2736 , l_label_margin AS AMOUNT_TYPE_LABEL
2737 , 0 AS P_ACTUAL
2738 , null AS PY_ACTUAL
2739 , null AS P_CHANGE1
2740 , null AS P_CHANGE11
2741 , null AS P_CHANGE12
2742 , 0 AS P_FORECAST
2743 , null AS PY_FORECAST
2744 , null AS P_CHANGE2
2745 , null AS P_CHANGE21
2746 , null AS P_CHANGE22
2747 FROM PJI_PMV_TIME_DIM_TMP TIME
2748 , PJI_PMV_ORGZ_DIM_TMP HORG
2749 , PJI_PMV_CLS_DIM_TMP CLS
2750 , PJI_PMV_ET_RT_DIM_TMP ET
2751 , PJI_PMV_WT_DIM_TMP WT
2752 , PJI_FP_CLSO_ET_WT_F_MV fct
2753 , PJI_PMV_ORG_DIM_TMP HOU
2754 WHERE
2755 FCT.PROJECT_ORG_ID = HOU.ID
2756 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
2757 AND FCT.TIME_ID = TIME.PRIOR_ID
2758 AND TIME.PRIOR_ID IS NOT NULL
2759 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
2760 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
2761 AND FCT.PROJECT_CLASS_ID = CLS.ID
2762 AND FCT.EXP_EVT_TYPE_ID = ET.ID
2763 AND ET.record_type = 'RT'
2764 AND FCT.WORK_TYPE_ID = WT.ID
2765 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
2766 UNION ALL
2767 SELECT
2768 1 AS PHASE_CODE
2769 , 1 AS AMOUNT_TYPE_CODE
2770 , l_label_rev AS AMOUNT_TYPE_LABEL
2771 , 0 AS P_ACTUAL
2772 , 0 AS PY_ACTUAL
2773 , null AS P_CHANGE1
2774 , null AS P_CHANGE11
2775 , null AS P_CHANGE12
2776 , 0 AS P_FORECAST
2777 , 0 AS PY_FORECAST
2778 , null AS P_CHANGE2
2779 , null AS P_CHANGE21
2780 , null AS P_CHANGE22
2781 FROM dual
2782 UNION ALL
2783 SELECT
2784 1 AS PHASE_CODE
2785 ,2 AS AMOUNT_TYPE_CODE
2786 ,l_label_cost AS AMOUNT_TYPE_LABEL
2787 , 0 AS P_ACTUAL
2788 , 0 AS PY_ACTUAL
2789 , null AS P_CHANGE1
2790 , null AS P_CHANGE11
2791 , null AS P_CHANGE12
2792 , 0 AS P_FORECAST
2793 , 0 AS PY_FORECAST
2794 , null AS P_CHANGE2
2795 , null AS P_CHANGE21
2796 , null AS P_CHANGE22
2797 FROM dual
2798 UNION ALL
2799 SELECT
2800 1 AS PHASE_CODE
2801 ,3 AS AMOUNT_TYPE_CODE
2802 ,l_label_margin AS AMOUNT_TYPE_LABEL
2803 , 0 AS P_ACTUAL
2804 , 0 AS PY_ACTUAL
2805 , null AS P_CHANGE1
2806 , null AS P_CHANGE11
2807 , null AS P_CHANGE12
2808 , 0 AS P_FORECAST
2809 , 0 AS PY_FORECAST
2810 , null AS P_CHANGE2
2811 , null AS P_CHANGE21
2812 , null AS P_CHANGE22
2813 FROM dual
2814 )
2815 WHERE 1 = 1
2816 GROUP BY PHASE_CODE,AMOUNT_TYPE_CODE,AMOUNT_TYPE_LABEL;
2817
2818 END IF; -- p_Class_Codes_Ids NOT Passed by User
2819
2820 /*
2821 ** -- PHASE II: Derive ALL Ratios for Each Amount Type
2822 ** -- At this point, there should be one row for each amount type, three all together
2823 */
2824 Ln := 3;
2825 FOR i IN 1..Ln LOOP
2826 IF (l_phase_tab(i).amount_type_code = 1)
2827 THEN
2828 /*
2829 ** -- REVENUE -----------------------------+
2830 */
2831
2832 l_phase_tab(i).P_ACTUAL1 := l_phase_tab(i).P_ACTUAL;
2833 l_phase_tab(i).P_ACTUAL2 := NULL;
2834 l_phase_tab(i).PY_ACTUAL1 := l_phase_tab(i).PY_ACTUAL;
2835 l_phase_tab(i).PY_ACTUAL2 := NULL;
2836
2837 l_phase_tab(i).P_FORECAST1 := l_phase_tab(i).P_FORECAST;
2838 l_phase_tab(i).P_FORECAST2 := NULL;
2839 l_phase_tab(i).PY_FORECAST1 := l_phase_tab(i).PY_FORECAST;
2840 l_phase_tab(i).PY_FORECAST2 := NULL;
2841
2842 IF (l_phase_tab(i).PY_ACTUAL = 0)
2843 THEN
2844 l_phase_tab(i).P_CHANGE11 := 0;
2845 l_phase_tab(i).P_CHANGE12 := NULL;
2846 ELSE
2847 l_phase_tab(i).P_CHANGE11 := ROUND( ((l_phase_tab(i).P_ACTUAL -
2848
2849 l_phase_tab(i).PY_ACTUAL)/ABS(l_phase_tab(i).PY_ACTUAL))*100, 2) ;
2850 l_phase_tab(i).P_CHANGE12 := NULL;
2851 END IF;
2852
2853
2854 IF (l_phase_tab(i).PY_FORECAST = 0)
2855 THEN
2856 l_phase_tab(i).P_CHANGE21 := 0;
2857 l_phase_tab(i).P_CHANGE22 := NULL;
2858 ELSE
2859 l_phase_tab(i).P_CHANGE21 := ROUND( ((l_phase_tab(i).P_FORECAST -
2860
2861 l_phase_tab(i).PY_FORECAST)/ABS(l_phase_tab(i).PY_FORECAST))*100, 2);
2862 l_phase_tab(i).P_CHANGE22 := NULL;
2863 END IF;
2864
2865 /*
2866 ** -- Cache revenue amounts for subsequent Margin Percentage Calc
2867 */
2868
2869 l_rev_P_ACTUAL := l_phase_tab(i).P_ACTUAL;
2870 l_rev_P_FORECAST := l_phase_tab(i).P_FORECAST;
2871 l_rev_PY_ACTUAL := l_phase_tab(i).PY_ACTUAL;
2872 l_rev_PY_FORECAST := l_phase_tab(i).PY_FORECAST;
2873
2874
2875
2876 ELSIF (l_phase_tab(i).amount_type_code = 2)
2877 THEN
2878 /*
2879 ** -- COST ---------------------------+
2880 */
2881 l_phase_tab(i).P_ACTUAL1 := l_phase_tab(i).P_ACTUAL;
2882 l_phase_tab(i).P_ACTUAL2 := NULL;
2883 l_phase_tab(i).PY_ACTUAL1 := l_phase_tab(i).PY_ACTUAL;
2884 l_phase_tab(i).PY_ACTUAL2 := NULL;
2885
2886 l_phase_tab(i).P_FORECAST1 := l_phase_tab(i).P_FORECAST;
2887 l_phase_tab(i).P_FORECAST2 := NULL;
2888 l_phase_tab(i).PY_FORECAST1 := l_phase_tab(i).PY_FORECAST;
2889 l_phase_tab(i).PY_FORECAST2 := NULL;
2890
2891
2892 IF (l_phase_tab(i).PY_ACTUAL = 0)
2893 THEN
2894 l_phase_tab(i).P_CHANGE11 := 0;
2895 l_phase_tab(i).P_CHANGE12 := NULL;
2896
2897 ELSE
2898 l_phase_tab(i).P_CHANGE11 := ROUND( ((l_phase_tab(i).P_ACTUAL -
2899
2900 l_phase_tab(i).PY_ACTUAL)/ABS(l_phase_tab(i).PY_ACTUAL))*100, 2) ;
2901 l_phase_tab(i).P_CHANGE12 := NULL;
2902 END IF;
2903
2904
2905 IF (l_phase_tab(i).PY_FORECAST = 0)
2906 THEN
2907 l_phase_tab(i).P_CHANGE21 := 0;
2908 l_phase_tab(i).P_CHANGE22 := NULL;
2909 ELSE
2910 l_phase_tab(i).P_CHANGE21 := ROUND( ((l_phase_tab(i).P_FORECAST -
2911
2912 l_phase_tab(i).PY_FORECAST)/ABS(l_phase_tab(i).PY_FORECAST))*100, 2);
2913 l_phase_tab(i).P_CHANGE22 := NULL;
2914 END IF;
2915
2916
2917 ELSIF (l_phase_tab(i).amount_type_code =3)
2918 THEN
2919 /*
2920 ** -- MARGIN ---------------------------+
2921 */
2922 l_phase_tab(i).P_ACTUAL1 := l_phase_tab(i).P_ACTUAL;
2923 l_phase_tab(i).P_ACTUAL2 := NULL;
2924 l_phase_tab(i).PY_ACTUAL1 := l_phase_tab(i).PY_ACTUAL;
2925 l_phase_tab(i).PY_ACTUAL2 := NULL;
2926
2927 l_phase_tab(i).P_FORECAST1 := l_phase_tab(i).P_FORECAST;
2928 l_phase_tab(i).P_FORECAST2 := NULL;
2929 l_phase_tab(i).PY_FORECAST1 := l_phase_tab(i).PY_FORECAST;
2930 l_phase_tab(i).PY_FORECAST2 := NULL;
2931
2932 IF (l_phase_tab(i).PY_ACTUAL = 0)
2933 THEN
2934 l_phase_tab(i).P_CHANGE11 := 0;
2935 l_phase_tab(i).P_CHANGE12 := NULL;
2936 ELSE
2937 l_phase_tab(i).P_CHANGE11 := ROUND( ((l_phase_tab(i).P_ACTUAL -
2938
2939 l_phase_tab(i).PY_ACTUAL)/ABS(l_phase_tab(i).PY_ACTUAL))*100, 2) ;
2940 l_phase_tab(i).P_CHANGE12 := NULL;
2941 END IF;
2942
2943
2944 IF (l_phase_tab(i).PY_FORECAST = 0)
2945 THEN
2946 l_phase_tab(i).P_CHANGE21 := 0;
2947 l_phase_tab(i).P_CHANGE22 := NULL;
2948 ELSE
2949 l_phase_tab(i).P_CHANGE21 := ROUND( ((l_phase_tab(i).P_FORECAST -
2950
2951 l_phase_tab(i).PY_FORECAST)/ABS(l_phase_tab(i).PY_FORECAST))*100, 2);
2952 l_phase_tab(i).P_CHANGE22 := NULL;
2953 END IF;
2954
2955 /*
2956 ** -- Cache margin amounts for subsequent Margin Percentage Calc
2957 */
2958 l_mgn_P_ACTUAL := l_phase_tab(i).P_ACTUAL;
2959 l_mgn_P_FORECAST := l_phase_tab(i).P_FORECAST;
2960 l_mgn_PY_ACTUAL := l_phase_tab(i).PY_ACTUAL;
2961 l_mgn_PY_FORECAST := l_phase_tab(i).PY_FORECAST;
2962
2963
2964 END IF;
2965
2966
2967 END LOOP;
2968
2969 /*
2970 ** -- PHASE III: Create the Margin Percentage Row ---------------------+
2971 */
2972 l_phase_tab.extend;
2973
2974
2975 l_phase_tab(4):=PJI_REP_PP3(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
2976 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
2977 NULL,NULL,NULL,NULL,NULL,NULL,NULL);
2978
2979 i := 4;
2980
2981 l_phase_tab(i).phase_code := 1;
2982
2983 l_phase_tab(i).amount_type_code := 4;
2984
2985 l_phase_tab(i).amount_type_label := l_label_mgnpct;
2986
2987 IF (l_rev_P_ACTUAL = 0)
2988 THEN
2989
2990 l_phase_tab(i).P_ACTUAL := NULL;
2991
2992 ELSE
2993
2994 l_phase_tab(i).P_ACTUAL := ROUND((l_mgn_P_ACTUAL/l_rev_P_ACTUAL)*100,2);
2995
2996 END IF;
2997
2998 IF (l_rev_PY_ACTUAL = 0)
2999 THEN
3000
3001 l_phase_tab(i).PY_ACTUAL := NULL;
3002 ELSE
3003
3004 l_phase_tab(i).PY_ACTUAL := ROUND((l_mgn_PY_ACTUAL/l_rev_PY_ACTUAL)*100, 2);
3005
3006 END IF;
3007
3008 IF ( (l_rev_P_ACTUAL = 0)
3009 OR (l_rev_PY_ACTUAL = 0)
3010 )
3011 THEN
3012
3013 l_phase_tab(i).p_change11 := NULL;
3014 l_phase_tab(i).p_change12 := 0;
3015 ELSE
3016
3017 l_phase_tab(i).p_change11 := NULL;
3018 l_phase_tab(i).p_change12 := ROUND(
3019
3020 (((l_mgn_P_ACTUAL/l_rev_P_ACTUAL)*100)-((l_mgn_PY_ACTUAL/l_rev_PY_ACTUAL)*100)), 2);
3021
3022 END IF;
3023
3024 IF (l_rev_P_FORECAST = 0)
3025 THEN
3026
3027 l_phase_tab(i).P_FORECAST := NULL;
3028
3029 ELSE
3030
3031 l_phase_tab(i).P_FORECAST := ROUND((l_mgn_P_FORECAST/l_rev_P_FORECAST)*100, 2);
3032
3033 END IF;
3034
3035
3036 IF (l_rev_PY_FORECAST = 0)
3037 THEN
3038
3039 l_phase_tab(i).PY_FORECAST := NULL;
3040
3041 ELSE
3042
3043 l_phase_tab(i).PY_FORECAST := ROUND((l_mgn_PY_FORECAST/l_rev_PY_FORECAST)*100, 2);
3044
3045 END IF;
3046
3047
3048 IF ( (l_rev_P_FORECAST = 0)
3049 OR (l_rev_PY_FORECAST = 0)
3050 )
3051 THEN
3052
3053 l_phase_tab(i).p_change21 := NULL;
3054 l_phase_tab(i).p_change22 := 0;
3055
3056 ELSE
3057
3058
3059 l_phase_tab(i).p_change21 := NULL;
3060 l_phase_tab(i).p_change22 := ROUND((((l_mgn_P_FORECAST/l_rev_P_FORECAST)*100) -
3061
3062 ((l_mgn_PY_FORECAST/l_rev_PY_FORECAST)*100)), 2);
3063
3064 END IF;
3065
3066 l_phase_tab(i).P_ACTUAL1 := NULL;
3067 l_phase_tab(i).P_ACTUAL2 := l_phase_tab(i).P_ACTUAL;
3068 l_phase_tab(i).PY_ACTUAL1 := NULL;
3069 l_phase_tab(i).PY_ACTUAL2 := l_phase_tab(i).PY_ACTUAL;
3070
3071 l_phase_tab(i).P_FORECAST1 := NULL;
3072 l_phase_tab(i).P_FORECAST2 := l_phase_tab(i).P_FORECAST;
3073 l_phase_tab(i).PY_FORECAST1 := NULL;
3074 l_phase_tab(i).PY_FORECAST2 := l_phase_tab(i).PY_FORECAST;
3075
3076
3077 /*
3078 ** Additionally, generating the drill across url to different reports.
3079 */
3080 FOR i IN 1..4
3081 LOOP
3082 IF l_phase_tab(i).amount_type_label = l_label_cost THEN
3083
3084
3085 l_phase_tab(i).pji_rep_url1:='pFunctionName=PJI_REP_PP10&VIEW_BY_NAME=VIEW_BY_VALUE';
3086
3087
3088 l_phase_tab(i).pji_rep_url2:='pFunctionName=PJI_REP_PP10&VIEW_BY_NAME=VIEW_BY_VALUE';
3089 ELSE
3090
3091
3092 l_phase_tab(i).pji_rep_url1:='pFunctionName=PJI_REP_PP9&VIEW_BY_NAME=VIEW_BY_VALUE';
3093
3094
3095 l_phase_tab(i).pji_rep_url2:='pFunctionName=PJI_REP_PP9&VIEW_BY_NAME=VIEW_BY_VALUE';
3096 END IF;
3097 END LOOP;
3098
3099
3100
3101
3102 /*
3103 ** Return the bulk collected table back to pmv.
3104 */
3105
3106 COMMIT;
3107
3108
3109 RETURN l_phase_tab;
3110
3111
3112 END PLSQLDriver_PJI_REP_PP3;
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122 /* Name: PLSQLDriver_PJI_REP_PPDTL
3123 ** Type: Function
3124 **
3125 ** Description: This function receives PM Viewer runtime query parameters
3126 ** and RETURNS a PL/SQL table for the PM Viewer report.
3127 **
3128 ** This function is designed for the Project Profitability
3129 ** Detail Reports:
3130 ** 1) Project Profitability Detail (PP9)
3131 ** 2) Project Cost Detail (PP10)
3132 **
3133 ** NOTE:
3134 ** These report do NOT have any View-By dimensions. Therefore,
3135 ** the collection logic does not address view-by logic requirements.
3136 **
3137 ** Also, double counting, which may occur if class codes are specified,
3138 ** is NOT permitted for these reports. As a result, if class codes are specified,
3139 ** then the pji_pmv_prj_dim_tmp is populated on the fly and joined in the SQL
3140 ** to prevent double counting.
3141 **
3142 ** Issues:
3143 **
3144 **
3145 ** Called subprograms:
3146 ** Various PJI_PMV_ENGINE.Convert APIs
3147 **
3148 ** Called objects:
3149 ** PJI_REP_PPDTL_TBL (table of db object PJI_REP_PPDTL)
3150 **
3151 ** History:
3152 ** 03-JUN-2002 jwhite Created.
3153 */
3154
3155 FUNCTION PLSQLDriver_PJI_REP_PPDTL(
3156 p_Operating_Unit IN VARCHAR2 DEFAULT NULL
3157 , p_Organization IN VARCHAR2
3158 , p_Currency_Type IN VARCHAR2
3159 , p_As_of_Date IN NUMBER
3160 , p_Period_Type IN VARCHAR2
3161 , p_View_BY IN VARCHAR2
3162 , p_Classifications IN VARCHAR2 DEFAULT NULL
3163 , p_Class_Codes IN VARCHAR2 DEFAULT NULL
3164 , p_Project_IDS IN VARCHAR2 DEFAULT NULL
3165
3166 , p_Expenditure_Category IN VARCHAR2 DEFAULT NULL
3167 , p_Expenditure_Type IN VARCHAR2 DEFAULT NULL
3168 , p_Revenue_Category IN VARCHAR2 DEFAULT NULL
3169 , p_Revenue_Type IN VARCHAR2 DEFAULT NULL
3170 , p_Work_Type IN VARCHAR2 DEFAULT NULL
3171
3172 ) RETURN PJI_REP_PPDTL_TBL
3173 IS
3174
3175 PRAGMA AUTONOMOUS_TRANSACTION;
3176
3177 /*
3178 ** PL/SQL Declaration
3179 */
3180 l_detail_tab PJI_REP_PPDTL_TBL := PJI_REP_PPDTL_TBL();
3181
3182 l_Total_Revenue NUMBER := 0;
3183 l_Total_Cost NUMBER := 0;
3184 l_Total_Bgt_Revenue NUMBER := 0;
3185 l_Total_Bgt_Cost NUMBER := 0;
3186 l_Total_Forecast_Revenue NUMBER := 0;
3187 l_Total_Forecast_Cost NUMBER := 0;
3188 l_Total_Margin NUMBER := 0;
3189 l_Total_Cost_Variance NUMBER := 0;
3190 l_Total_Budget_Margin NUMBER := 0;
3191 l_Total_Fcst_Margin NUMBER := 0;
3192 l_Total_Fcst_Margin_Variance NUMBER := 0;
3193 l_Total_Fcst_Cost_Variance NUMBER := 0;
3194
3195 l_Convert_Classification VARCHAR2(1);
3196 l_Convert_Expenditure_Type VARCHAR2(1);
3197 l_Convert_Event_Revenue_Type VARCHAR2(1);
3198 l_Convert_Work_Type VARCHAR2(1);
3199 l_number NUMBER := 0;
3200 l_curr_record_type_id NUMBER:= 1;
3201
3202 BEGIN
3203
3204 BEGIN
3205 SELECT report_cost_type
3206 INTO G_Report_Cost_Type
3207 FROM pji_system_settings;
3208 EXCEPTION
3209 WHEN NO_DATA_FOUND THEN
3210 G_Report_Cost_Type:='RC';
3211 END;
3212
3213 /*
3214 ** Place a call to all the parse API's which parse the
3215 ** parameters passed by PMV and populate all the
3216 ** temporary tables.
3217 */
3218
3219 PJI_PMV_ENGINE.Convert_Operating_Unit(P_OPERATING_UNIT_IDS => p_Operating_Unit
3220 , P_VIEW_BY => p_View_BY
3221 );
3222
3223 PJI_PMV_ENGINE.Convert_Organization(P_TOP_ORGANIZATION_ID => p_Organization
3224 , P_VIEW_BY => p_View_BY
3225 );
3226
3227
3228
3229 PJI_PMV_ENGINE.Convert_Time(P_AS_OF_DATE => p_As_of_Date
3230 , P_PERIOD_TYPE => p_Period_Type
3231 , P_VIEW_BY => p_View_By
3232 , P_PARSE_PRIOR => NULL
3233 , P_PARSE_ITD => NULL
3234 , P_FULL_PERIOD_FLAG => 'Y'
3235 );
3236
3237
3238 l_Convert_Classification := PJI_PMV_ENGINE.Convert_Classification(p_Classifications, p_Class_Codes, p_View_BY);
3239 l_Convert_Expenditure_Type := PJI_PMV_ENGINE.Convert_Expenditure_Type(p_Expenditure_Category, p_Expenditure_Type, p_View_BY);
3240 l_Convert_Event_Revenue_Type := PJI_PMV_ENGINE.Convert_Event_Revenue_Type(p_Revenue_Category, p_Revenue_Type, p_View_BY );
3241 l_Convert_Work_Type := PJI_PMV_ENGINE.Convert_Work_Type(p_Work_Type, p_View_BY);
3242 l_curr_record_type_id:=PJI_PMV_ENGINE.Convert_Currency_Record_Type(p_Currency_Type);
3243
3244 /*
3245 ** PHASE I: Insert Separate Current and Prior Year Rows for Revenue, Cost and Margin
3246 */
3247
3248 IF p_Project_IDS IS NULL THEN
3249
3250 /*
3251 ** Code the SQL statement for all of the following conditions
3252 ** 1. Current Year
3253 **
3254 ** Bulk-Collect the output into a pl/sql table to be returned to
3255 ** pmv.
3256 **
3257 */
3258 /*
3259 ** logic builds an intersection tmp table between the class codes tmp table and the
3260 ** project_class mapping table. The intersection table is equi-joined in the following
3261 ** select statement.
3262 */
3263 BEGIN
3264 DELETE pji_pmv_prj_dim_tmp;
3265
3266 if(l_Convert_Classification = 'Y') then
3267 INSERT into pji_pmv_prj_dim_tmp (id, name)
3268 SELECT DISTINCT prj.project_id, '-1' name
3269 FROM
3270 pji_project_classes PJM
3271 , pji_pmv_cls_dim_tmp PTM
3272 , pji_pmv_orgz_dim_tmp org
3273 , pa_projects_all prj
3274 WHERE
3275 pjm.project_class_id = ptm.id
3276 AND prj.project_id = pjm.project_id
3277 AND prj.carrying_out_organization_id = org.ID;
3278 else
3279 INSERT into pji_pmv_prj_dim_tmp (id, name)
3280 SELECT DISTINCT prj.project_id, '-1' name
3281 FROM
3282 pji_pmv_orgz_dim_tmp org
3283 , pa_projects_all prj
3284 WHERE
3285 prj.carrying_out_organization_id = org.ID;
3286 end if;
3287
3288 END;
3289
3290 ELSE
3291 PJI_PMV_ENGINE.Convert_Project(P_PROJECT_IDS=>p_Project_IDS
3292 , P_VIEW_BY =>p_View_BY);
3293 END IF;
3294
3295
3296
3297 /*
3298 ** ORG Processing ---------------------------------------------------+
3299 */
3300
3301
3302 /* ----------------------------- Case 1 truth table ------------------------------------ */
3303
3304 IF (l_Convert_Classification = 'N')
3305 and (l_Convert_Expenditure_Type = 'N')
3306 and (l_Convert_Event_Revenue_Type = 'N')
3307 and (l_Convert_Work_Type = 'N')
3308 THEN
3309
3310
3311
3312 SELECT PJI_REP_PPDTL(PROJECT_ID
3313 , NULL
3314 , NULL
3315 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3316 , NULL
3317 , NULL
3318 , ORGANIZATION_ID
3319 , NULL
3320 , SUM(REVENUE)
3321 , SUM(BURDENED_COST)
3322 , SUM(CURR_BGT_REVENUE)
3323 , SUM(CURR_BGT_BURDENED_COST)
3324 , SUM(FORECAST_REVENUE)
3325 , SUM(FORECAST_BURDENED_COST)
3326 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3327 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3328 , 0, 0, 0, 0)
3329 BULK COLLECT INTO l_detail_tab
3330 FROM
3331 (SELECT /*+ ORDERED */
3332 FCT.PROJECT_ID AS PROJECT_ID
3333 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3334 , DECODE(TIME.amount_type,1,FCT.REVENUE, 0) AS REVENUE
3335 , DECODE(TIME.amount_type,1,
3336 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3337 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3338 , DECODE(TIME.amount_type,2,FCT.CURR_BGT_REVENUE, 0) AS CURR_BGT_REVENUE
3339 , DECODE(TIME.amount_type,2,
3340 DECODE(G_Report_Cost_Type, 'BC', fct.curr_bgt_burdened_cost,
3341 'RC', fct.curr_bgt_raw_cost, 0), 0) AS CURR_BGT_BURDENED_COST
3342 , DECODE(TIME.amount_type,2,FCT.FORECAST_REVENUE, 0) AS FORECAST_REVENUE
3343 , DECODE(TIME.amount_type,2,
3344 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
3345 'RC', fct.forecast_raw_cost, 0), 0) AS FORECAST_BURDENED_COST
3346 FROM PJI_PMV_TIME_DIM_TMP TIME
3347 , PJI_PMV_PRJ_DIM_TMP PRJ
3348 , PJI_PMV_ORGZ_DIM_TMP HORG
3349 , PJI_FP_PROJ_F FCT
3350 , PJI_PMV_ORG_DIM_TMP HOU
3351 WHERE 1=1
3352 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3353 AND FCT.PROJECT_ID = PRJ.ID
3354 AND FCT.PROJECT_ORG_ID = HOU.ID
3355 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
3356 AND FCT.TIME_ID = TIME.ID
3357 AND TIME.ID IS NOT NULL
3358 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3359 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3360 ) FCT
3361 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3362
3363 /*
3364 ** -- PROJECT CLASSIFICATION Processing ---------------------------------------------------+
3365 */
3366
3367
3368 /* ----------------------------------- Case 2 truth table ------------------------------------- */
3369
3370 ELSIF (l_Convert_Expenditure_Type = 'N')
3371 and (l_Convert_Event_Revenue_Type = 'N')
3372 and (l_Convert_Work_Type = 'N')
3373
3374 THEN
3375
3376 SELECT PJI_REP_PPDTL(PROJECT_ID
3377 , NULL
3378 , NULL
3379 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3380 , NULL
3381 , NULL
3382 , ORGANIZATION_ID
3383 , NULL
3384 , SUM(REVENUE)
3385 , SUM(BURDENED_COST)
3386 , SUM(CURR_BGT_REVENUE)
3387 , SUM(CURR_BGT_BURDENED_COST)
3388 , SUM(FORECAST_REVENUE)
3389 , SUM(FORECAST_BURDENED_COST)
3390 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3391 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3392 , 0, 0, 0, 0)
3393 BULK COLLECT INTO l_detail_tab
3394 FROM
3395 (SELECT /*+ ORDERED */
3396 FCT.PROJECT_ID AS PROJECT_ID
3397 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3398 , DECODE(TIME.amount_type,1,FCT.REVENUE, 0) AS REVENUE
3399 , DECODE(TIME.amount_type,1,
3400 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3401 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3402 , DECODE(TIME.amount_type,2,FCT.CURR_BGT_REVENUE, 0) AS CURR_BGT_REVENUE
3403 , DECODE(TIME.amount_type,2,
3404 DECODE(G_Report_Cost_Type, 'BC',fct.curr_bgt_burdened_cost,
3405 'RC',fct.curr_bgt_raw_cost, 0), 0) AS CURR_BGT_BURDENED_COST
3406 , DECODE(TIME.amount_type,2,FCT.FORECAST_REVENUE, 0) AS FORECAST_REVENUE
3407 , DECODE(TIME.amount_type,2,
3408 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
3409 'RC', fct.forecast_raw_cost, 0), 0) AS FORECAST_BURDENED_COST
3410 FROM PJI_PMV_TIME_DIM_TMP TIME
3411 , PJI_PMV_PRJ_DIM_TMP PRJ
3412 , PJI_FP_PROJ_F FCT
3413 , PJI_PMV_ORG_DIM_TMP HOU
3414 WHERE 1=1
3415 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3416 AND FCT.PROJECT_ID = PRJ.ID
3417 AND FCT.PROJECT_ORG_ID = HOU.ID
3418 AND FCT.TIME_ID = TIME.ID
3419 AND TIME.ID IS NOT NULL
3420 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3421 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3422 ) FCT
3423 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3424
3425 /*
3426 ** Expenditure or Revenue Type Processing ---------------------------------------------------+
3427 */
3428
3429 /* ----------------------------------- Case 3 truth table ------------------------------------- */
3430
3431 ELSIF (l_Convert_Classification = 'N')
3432 and (l_Convert_Work_Type = 'N')
3433 THEN
3434
3435
3436 SELECT PJI_REP_PPDTL(PROJECT_ID
3437 , NULL
3438 , NULL
3439 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3440 , NULL
3441 , NULL
3442 , ORGANIZATION_ID
3443 , NULL
3444 , SUM(REVENUE)
3445 , SUM(BURDENED_COST)
3446 , SUM(CURR_BGT_REVENUE)
3447 , SUM(CURR_BGT_BURDENED_COST)
3448 , SUM(FORECAST_REVENUE)
3449 , SUM(FORECAST_BURDENED_COST)
3450 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3451 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3452 , 0, 0, 0, 0)
3453 BULK COLLECT INTO l_detail_tab
3454 FROM
3455 (SELECT /*+ ORDERED */
3456 FCT.PROJECT_ID AS PROJECT_ID
3457 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3458 , DECODE(TIME.amount_type,1,FCT.REVENUE, 0) AS REVENUE
3459 , DECODE(TIME.amount_type,1,
3460 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3461 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3462 , NULL AS CURR_BGT_REVENUE
3463 , NULL AS CURR_BGT_BURDENED_COST
3464 , NULL AS FORECAST_REVENUE
3465 , NULL AS FORECAST_BURDENED_COST
3466 FROM PJI_PMV_TIME_DIM_TMP TIME
3467 , PJI_PMV_PRJ_DIM_TMP PRJ
3468 , PJI_PMV_ET_RT_DIM_TMP ET
3469 , PJI_FP_PROJ_ET_F FCT
3470 , PJI_PMV_ORG_DIM_TMP HOU
3471 WHERE 1=1
3472 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3473 AND FCT.PROJECT_ID = PRJ.ID
3474 AND FCT.EXP_EVT_TYPE_ID = ET.ID
3475 AND ET.record_type =
3476
3477 decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
3478 AND FCT.PROJECT_ORG_ID = HOU.ID
3479 AND FCT.TIME_ID = TIME.ID
3480 AND TIME.ID IS NOT NULL
3481 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3482 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3483 ) FCT
3484 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3485
3486 /*
3487 ** Work Type Processing ---------------------------------------------------+
3488 */
3489
3490 /* ----------------------------------- Case 4 truth table ------------------------------------- */
3491
3492 ELSIF (l_Convert_Classification = 'N')
3493 and (l_Convert_Expenditure_Type = 'N')
3494 and (l_Convert_Event_Revenue_Type = 'N')
3495 THEN
3496
3497
3498 SELECT PJI_REP_PPDTL(PROJECT_ID
3499 , NULL
3500 , NULL
3501 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3502 , NULL
3503 , NULL
3504 , ORGANIZATION_ID
3505 , NULL
3506 , SUM(REVENUE)
3507 , SUM(BURDENED_COST)
3508 , SUM(CURR_BGT_REVENUE)
3509 , SUM(CURR_BGT_BURDENED_COST)
3510 , SUM(FORECAST_REVENUE)
3511 , SUM(FORECAST_BURDENED_COST)
3512 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3513 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3514 , 0, 0, 0, 0)
3515 BULK COLLECT INTO l_detail_tab
3516 FROM
3517 (SELECT /*+ ORDERED */
3518 FCT.PROJECT_ID AS PROJECT_ID
3519 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3520 , null AS REVENUE
3521 , DECODE(TIME.amount_type,1,
3522 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3523 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3524 , NULL AS CURR_BGT_REVENUE
3525 , NULL AS CURR_BGT_BURDENED_COST
3526 , NULL AS FORECAST_REVENUE
3527 , NULL AS FORECAST_BURDENED_COST
3528 FROM PJI_PMV_TIME_DIM_TMP TIME
3529 , PJI_PMV_PRJ_DIM_TMP PRJ
3530 , PJI_PMV_WT_DIM_TMP WT
3531 , PJI_FP_PROJ_ET_WT_F FCT
3532 , PJI_PMV_ORG_DIM_TMP HOU
3533 WHERE 1=1
3534 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3535 AND FCT.PROJECT_ID = PRJ.ID
3536 AND FCT.WORK_TYPE_ID = WT.ID
3537 AND FCT.PROJECT_ORG_ID = HOU.ID
3538 AND FCT.TIME_ID = TIME.ID
3539 AND TIME.ID IS NOT NULL
3540 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3541 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3542 ) FCT
3543 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3544
3545 /*
3546 ** Project classification and Expenditure or Revenue Type Processing ---------------------------------+
3547 */
3548
3549 /* ----------------------------------- Case 5 truth table ------------------------------------- */
3550
3551 ELSIF (l_Convert_Work_Type = 'N')
3552 THEN
3553
3554
3555
3556 SELECT PJI_REP_PPDTL(PROJECT_ID
3557 , NULL
3558 , NULL
3559 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3560 , NULL
3561 , NULL
3562 , ORGANIZATION_ID
3563 , NULL
3564 , SUM(REVENUE)
3565 , SUM(BURDENED_COST)
3566 , SUM(CURR_BGT_REVENUE)
3567 , SUM(CURR_BGT_BURDENED_COST)
3568 , SUM(FORECAST_REVENUE)
3569 , SUM(FORECAST_BURDENED_COST)
3570 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3571 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3572 , 0, 0, 0, 0)
3573 BULK COLLECT INTO l_detail_tab
3574 FROM
3575 (SELECT /*+ ORDERED */
3576 FCT.PROJECT_ID AS PROJECT_ID
3577 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3578 , DECODE(TIME.amount_type,1,FCT.REVENUE, 0) AS REVENUE
3579 , DECODE(TIME.amount_type,1,
3580 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3581 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3582 , NULL AS CURR_BGT_REVENUE
3583 , NULL AS CURR_BGT_BURDENED_COST
3584 , NULL AS FORECAST_REVENUE
3585 , NULL AS FORECAST_BURDENED_COST
3586 FROM PJI_PMV_TIME_DIM_TMP TIME
3587 , PJI_PMV_PRJ_DIM_TMP PRJ
3588 , PJI_PMV_ET_RT_DIM_TMP ET
3589 , PJI_FP_PROJ_ET_F FCT
3590 , PJI_PMV_ORG_DIM_TMP HOU
3591 WHERE 1=1
3592 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3593 AND FCT.PROJECT_ID = PRJ.ID
3594 AND FCT.EXP_EVT_TYPE_ID = ET.ID
3595 AND ET.record_type =
3596
3597 decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
3598 AND FCT.PROJECT_ORG_ID = HOU.ID
3599 AND FCT.TIME_ID = TIME.ID
3600 AND TIME.ID IS NOT NULL
3601 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3602 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3603 ) FCT
3604 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3605
3606 /*
3607 ** Expenditure or Revenue Type and Work Type Processing -----------------------------------------+
3608 */
3609
3610 /* ----------------------------------- Case 6 truth table ------------------------------------- */
3611
3612 ELSIF (l_Convert_Classification = 'N')
3613 THEN
3614
3615
3616
3617 SELECT PJI_REP_PPDTL(PROJECT_ID
3618 , NULL
3619 , NULL
3620 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3621 , NULL
3622 , NULL
3623 , ORGANIZATION_ID
3624 , NULL
3625 , SUM(REVENUE)
3626 , SUM(BURDENED_COST)
3627 , SUM(CURR_BGT_REVENUE)
3628 , SUM(CURR_BGT_BURDENED_COST)
3629 , SUM(FORECAST_REVENUE)
3630 , SUM(FORECAST_BURDENED_COST)
3631 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3632 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3633 , 0, 0, 0, 0)
3634 BULK COLLECT INTO l_detail_tab
3635 FROM
3636 (SELECT /*+ ORDERED */
3637 FCT.PROJECT_ID AS PROJECT_ID
3638 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3639 , null AS REVENUE
3640 , DECODE(TIME.amount_type,1,
3641 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3642 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3643 , NULL AS CURR_BGT_REVENUE
3644 , NULL AS CURR_BGT_BURDENED_COST
3645 , NULL AS FORECAST_REVENUE
3646 , NULL AS FORECAST_BURDENED_COST
3647 FROM PJI_PMV_TIME_DIM_TMP TIME
3648 , PJI_PMV_PRJ_DIM_TMP PRJ
3649 , PJI_PMV_ET_RT_DIM_TMP ET
3650 , PJI_PMV_WT_DIM_TMP WT
3651 , PJI_FP_PROJ_ET_WT_F FCT
3652 , PJI_PMV_ORG_DIM_TMP HOU
3653 WHERE 1=1
3654 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3655 AND FCT.PROJECT_ID = PRJ.ID
3656 AND FCT.EXP_EVT_TYPE_ID = ET.ID
3657 AND ET.record_type =
3658
3659 decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
3660 AND FCT.WORK_TYPE_ID = WT.ID
3661 AND FCT.PROJECT_ORG_ID = HOU.ID
3662 AND FCT.TIME_ID = TIME.ID
3663 AND TIME.ID IS NOT NULL
3664 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3665 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3666 ) FCT
3667 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3668
3669 /*
3670 ** Project classification and Work Type Processing -----------------------------------------------+
3671 */
3672
3673 /* ----------------------------------- Case 7 truth table ------------------------------------- */
3674
3675 ELSIF (l_Convert_Expenditure_Type = 'N')
3676 and (l_Convert_Event_Revenue_Type = 'N')
3677 THEN
3678
3679
3680
3681 SELECT PJI_REP_PPDTL(PROJECT_ID
3682 , NULL
3683 , NULL
3684 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3685 , NULL
3686 , NULL
3687 , ORGANIZATION_ID
3688 , NULL
3689 , SUM(REVENUE)
3690 , SUM(BURDENED_COST)
3691 , SUM(CURR_BGT_REVENUE)
3692 , SUM(CURR_BGT_BURDENED_COST)
3693 , SUM(FORECAST_REVENUE)
3694 , SUM(FORECAST_BURDENED_COST)
3695 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3696 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3697 , 0, 0, 0, 0)
3698 BULK COLLECT INTO l_detail_tab
3699 FROM
3700 (SELECT /*+ ORDERED */
3701 FCT.PROJECT_ID AS PROJECT_ID
3702 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3703 , null AS REVENUE
3704 , DECODE(TIME.amount_type,1,
3705 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3706 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3707 , NULL AS CURR_BGT_REVENUE
3708 , NULL AS CURR_BGT_BURDENED_COST
3709 , NULL AS FORECAST_REVENUE
3710 , NULL AS FORECAST_BURDENED_COST
3711 FROM PJI_PMV_TIME_DIM_TMP TIME
3712 , PJI_PMV_PRJ_DIM_TMP PRJ
3713 , PJI_PMV_WT_DIM_TMP WT
3714 , PJI_FP_PROJ_ET_WT_F FCT
3715 , PJI_PMV_ORG_DIM_TMP HOU
3716 WHERE 1=1
3717 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3718 AND FCT.PROJECT_ID = PRJ.ID
3719 AND FCT.WORK_TYPE_ID = WT.ID
3720 AND FCT.PROJECT_ORG_ID = HOU.ID
3721 AND FCT.TIME_ID = TIME.ID
3722 AND TIME.ID IS NOT NULL
3723 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3724 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3725 ) FCT
3726 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3727
3728 /*
3729 ** Project classification and Expenditure or Revenue Type and Work Type Processing ----------------+
3730 */
3731
3732 /* ----------------------------------- Case 8 truth table ------------------------------------- */
3733
3734 ELSE
3735
3736
3737 SELECT PJI_REP_PPDTL(PROJECT_ID
3738 , NULL
3739 , NULL
3740 , PJI_PMV_UTIL.Drill_To_Proj_Perf_URL(PROJECT_ID, l_curr_record_type_id, p_As_of_Date,p_Period_Type)
3741 , NULL
3742 , NULL
3743 , ORGANIZATION_ID
3744 , NULL
3745 , SUM(REVENUE)
3746 , SUM(BURDENED_COST)
3747 , SUM(CURR_BGT_REVENUE)
3748 , SUM(CURR_BGT_BURDENED_COST)
3749 , SUM(FORECAST_REVENUE)
3750 , SUM(FORECAST_BURDENED_COST)
3751 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3752 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3753 , 0, 0, 0, 0)
3754 BULK COLLECT INTO l_detail_tab
3755 FROM
3756 (SELECT /*+ ORDERED */
3757 FCT.PROJECT_ID AS PROJECT_ID
3758 , FCT.PROJECT_ORGANIZATION_ID AS ORGANIZATION_ID
3759 , null AS REVENUE
3760 , DECODE(TIME.amount_type,1,
3761 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
3762 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
3763 , NULL AS CURR_BGT_REVENUE
3764 , NULL AS CURR_BGT_BURDENED_COST
3765 , NULL AS FORECAST_REVENUE
3766 , NULL AS FORECAST_BURDENED_COST
3767 FROM PJI_PMV_TIME_DIM_TMP TIME
3768 , PJI_PMV_PRJ_DIM_TMP PRJ
3769 , PJI_PMV_ET_RT_DIM_TMP ET
3770 , PJI_PMV_WT_DIM_TMP WT
3771 , PJI_FP_PROJ_ET_WT_F FCT
3772 , PJI_PMV_ORG_DIM_TMP HOU
3773 WHERE 1=1
3774 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
3775 AND FCT.PROJECT_ID = PRJ.ID
3776 AND FCT.EXP_EVT_TYPE_ID = ET.ID
3777 AND ET.record_type =
3778
3779 decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
3780 AND FCT.WORK_TYPE_ID = WT.ID
3781 AND FCT.PROJECT_ORG_ID = HOU.ID
3782 AND FCT.TIME_ID = TIME.ID
3783 AND TIME.ID IS NOT NULL
3784 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
3785 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
3786 ) FCT
3787 GROUP BY PROJECT_ID,ORGANIZATION_ID;
3788
3789
3790 END IF;
3791
3792
3793 FOR i IN 1..l_detail_tab.COUNT
3794 LOOP
3795 /*
3796 ** FETCH THE PRIMARY CUSTOMER NAME AND PROJECT MANAGER NAME.
3797 */
3798
3799
3800
3801 l_detail_tab(i).PRIMARY_CUSTOMER_NAME:=PA_PROJECTS_MAINT_UTILS.GET_PRIMARY_CUSTOMER_NAME(l_detail_tab(i).PROJECT_ID);
3802
3803
3804 l_detail_tab(i).PERSON_MANAGER_NAME:=PA_PROJECTS_MAINT_UTILS.GET_PROJECT_MANAGER_NAME(l_detail_tab(i).PROJECT_ID);
3805
3806
3807 /*
3808 ** FETCH THE PROJECT ATTRIBUTES.
3809 */
3810 SELECT NAME
3811 , SEGMENT1
3812 , PROJECT_TYPE
3813 INTO l_detail_tab(i).PROJECT_NAME
3814 , l_detail_tab(i).PROJECT_NUMBER
3815 , l_detail_tab(i).PROJECT_TYPE
3816 FROM PA_PROJECTS_ALL
3817 WHERE PROJECT_ID = l_detail_tab(i).PROJECT_ID;
3818
3819
3820 /*
3821 ** FETCH THE ORGANIZATION NAME.
3822 */
3823 SELECT NAME
3824 INTO l_detail_tab(i).ORGANIZATION_NAME
3825 FROM HR_ALL_ORGANIZATION_UNITS_TL
3826 WHERE LANGUAGE = USERENV ('LANG')
3827 AND ORGANIZATION_ID = l_detail_tab(i).ORGANIZATION_NAME;
3828
3829 l_detail_tab(i).MARGIN := l_detail_tab(i).REVENUE - l_detail_tab(i).BURDENED_COST;
3830 l_detail_tab(i).BUDGET_MARGIN := l_detail_tab(i).CURR_BGT_REVENUE - l_detail_tab(i).CURR_BGT_BURDENED_COST;
3831 l_detail_tab(i).FORECAST_MARGIN := l_detail_tab(i).FORECAST_REVENUE - l_detail_tab(i).FORECAST_BURDENED_COST;
3832
3833 IF NVL(l_detail_tab(i).CURR_BGT_BURDENED_COST, 0) <> 0 THEN
3834 l_detail_tab(i).COST_VARIANCE :=
3835
3836 100*((l_detail_tab(i).BURDENED_COST-l_detail_tab(i).CURR_BGT_BURDENED_COST)/ABS(l_detail_tab(i).CURR_BGT_BURDENED_COST));
3837 l_detail_tab(i).FORECAST_COST_VARIANCE :=
3838
3839 100*((l_detail_tab(i).FORECAST_BURDENED_COST-l_detail_tab(i).CURR_BGT_BURDENED_COST)/ABS(l_detail_tab(i).CURR_BGT_BURDENED_COST));
3840 ELSE
3841 l_detail_tab(i).FORECAST_COST_VARIANCE := NULL;
3842 l_detail_tab(i).COST_VARIANCE := NULL;
3843 END IF;
3844
3845 IF NVL(l_detail_tab(i).BUDGET_MARGIN, 0) <> 0 THEN
3846 l_detail_tab(i).FORECAST_MARGIN_VARIANCE :=
3847
3848 100*((l_detail_tab(i).FORECAST_MARGIN-l_detail_tab(i).BUDGET_MARGIN)/ABS(l_detail_tab(i).BUDGET_MARGIN));
3849 ELSE
3850 l_detail_tab(i).FORECAST_MARGIN_VARIANCE := NULL;
3851 END IF;
3852
3853 l_Total_Revenue := l_Total_Revenue + NVL(l_detail_tab(i).REVENUE , 0);
3854 l_Total_Cost := l_Total_Cost + NVL(l_detail_tab(i).BURDENED_COST , 0);
3855 l_Total_Bgt_Revenue := l_Total_Bgt_Revenue + NVL(l_detail_tab(i).CURR_BGT_REVENUE , 0);
3856 l_Total_Bgt_Cost := l_Total_Bgt_Cost + NVL(l_detail_tab(i).CURR_BGT_BURDENED_COST , 0);
3857 l_Total_Forecast_Revenue := l_Total_Forecast_Revenue + NVL(l_detail_tab(i).FORECAST_REVENUE , 0);
3858 l_Total_Forecast_Cost := l_Total_Forecast_Cost + NVL(l_detail_tab(i).FORECAST_BURDENED_COST , 0);
3859 l_Total_Margin := l_Total_Margin + NVL(l_detail_tab(i).MARGIN , 0);
3860 l_Total_Budget_Margin := l_Total_Budget_Margin + NVL(l_detail_tab(i).BUDGET_MARGIN , 0);
3861 l_Total_Fcst_Margin := l_Total_Fcst_Margin + NVL(l_detail_tab(i).FORECAST_MARGIN , 0);
3862 END LOOP;
3863
3864 FOR i IN 1..l_detail_tab.COUNT
3865 LOOP
3866 l_detail_tab(i).PJI_REP_TOTAL_1:=l_Total_Revenue;
3867 l_detail_tab(i).PJI_REP_TOTAL_2:=l_Total_Cost;
3868 l_detail_tab(i).PJI_REP_TOTAL_3:=l_Total_Bgt_Revenue;
3869 l_detail_tab(i).PJI_REP_TOTAL_4:=l_Total_Bgt_Cost;
3870 l_detail_tab(i).PJI_REP_TOTAL_5:=l_Total_Forecast_Revenue;
3871 l_detail_tab(i).PJI_REP_TOTAL_6:=l_Total_Forecast_Cost;
3872
3873 l_detail_tab(i).PJI_REP_TOTAL_7:=l_detail_tab(i).PJI_REP_TOTAL_1 - l_detail_tab(i).PJI_REP_TOTAL_2;
3874 l_detail_tab(i).PJI_REP_TOTAL_9:=l_detail_tab(i).PJI_REP_TOTAL_3 - l_detail_tab(i).PJI_REP_TOTAL_4;
3875 l_detail_tab(i).PJI_REP_TOTAL_10:=l_detail_tab(i).PJI_REP_TOTAL_5 - l_detail_tab(i).PJI_REP_TOTAL_6;
3876
3877 IF NVL(l_detail_tab(i).PJI_REP_TOTAL_4, 0) <> 0 THEN
3878 l_detail_tab(i).PJI_REP_TOTAL_8 :=
3879
3880 100*((l_detail_tab(i).PJI_REP_TOTAL_2-l_detail_tab(i).PJI_REP_TOTAL_4)/ABS(l_detail_tab(i).PJI_REP_TOTAL_4));
3881 l_detail_tab(i).PJI_REP_TOTAL_12 :=
3882
3883 100*((l_detail_tab(i).PJI_REP_TOTAL_6-l_detail_tab(i).PJI_REP_TOTAL_4)/ABS(l_detail_tab(i).PJI_REP_TOTAL_4));
3884 ELSE
3885 l_detail_tab(i).PJI_REP_TOTAL_8 := NULL;
3886 l_detail_tab(i).PJI_REP_TOTAL_12 := NULL;
3887 END IF;
3888
3889 IF NVL(l_detail_tab(i).PJI_REP_TOTAL_9, 0) <> 0 THEN
3890 l_detail_tab(i).PJI_REP_TOTAL_11 :=
3891
3892 100*((l_detail_tab(i).PJI_REP_TOTAL_10-l_detail_tab(i).PJI_REP_TOTAL_9)/ABS(l_detail_tab(i).PJI_REP_TOTAL_9));
3893 ELSE
3894 l_detail_tab(i).PJI_REP_TOTAL_11 := NULL;
3895 END IF;
3896
3897 END LOOP;
3898
3899
3900 /*
3901 ** Return the bulk collected table back to pmv.
3902 */
3903
3904 COMMIT;
3905
3906
3907
3908
3909 RETURN l_detail_tab;
3910
3911
3912 END PLSQLDriver_PJI_REP_PPDTL;
3913
3914
3915
3916
3917 /* Name: PLSQLDriver_PJI_REP_PPSUM
3918 ** Type: Function
3919 **
3920 ** Description: This function receives PM Viewer runtime query parameters
3921 ** and RETURNS a PL/SQL table for the PM Viewer report.
3922 **
3923 ** This function is designed for the Project SUMMARY Profitability
3924 ** Reports:
3925 ** 1) Project Actual Profitability (PP1)
3926 ** 2) Project Forecast Profitability (PP2)
3927 ** 3) Project Cost Profitability (PP4)
3928 **
3929 ** NOTE:
3930 ** The Project SUMMARY Profitability reports are DBI reports.
3931 **
3932 ** Called subprograms:
3933 ** Various PJI_PMV_ENGINE.Convert APIs
3934 **
3935 ** Called objects:
3936 ** PJI_REP_PPSUM_TBL (table of db object PJI_REP_PPSUM)
3937 **
3938 ** History:
3939 ** 06-JUN-2002 jwhite Created.
3940 */
3941
3942 FUNCTION PLSQLDriver_PJI_REP_PPSUM(
3943 p_Operating_Unit IN VARCHAR2 DEFAULT NULL
3944 , p_Organization IN VARCHAR2
3945 , p_Currency_Type IN VARCHAR2
3946 , p_As_of_Date IN NUMBER
3947 , p_Time_Comparison_Type IN VARCHAR2
3948 , p_Period_Type IN VARCHAR2
3949 , p_View_BY IN VARCHAR2
3950 , p_Classifications IN VARCHAR2 DEFAULT NULL
3951 , p_Class_Codes IN VARCHAR2 DEFAULT NULL
3952
3953 , p_Expenditure_Category IN VARCHAR2 DEFAULT NULL
3954 , p_Expenditure_Type IN VARCHAR2 DEFAULT NULL
3955 , p_Revenue_Category IN VARCHAR2 DEFAULT NULL
3956 , p_Revenue_Type IN VARCHAR2 DEFAULT NULL
3957 , p_Work_Type IN VARCHAR2 DEFAULT NULL
3958
3959 ) RETURN PJI_REP_PPSUM_TBL
3960 IS
3961
3962 PRAGMA AUTONOMOUS_TRANSACTION;
3963
3964 /*
3965 ** -- Local Variable Declaration
3966 */
3967
3968 l_Total_Revenue NUMBER:=0;
3969 l_Total_Cost NUMBER:=0;
3970 l_Total_Forecast_Revenue NUMBER:=0;
3971 l_Total_Forecast_Cost NUMBER:=0;
3972 l_Total_Margin NUMBER:=0;
3973
3974 l_CT_Total_Revenue NUMBER:=0;
3975 l_CT_Total_Cost NUMBER:=0;
3976 l_CT_Total_Forecast_Revenue NUMBER:=0;
3977 l_CT_Total_Forecast_Cost NUMBER:=0;
3978 l_CT_Total_Margin NUMBER:=0;
3979
3980 l_TO_Total_Revenue NUMBER:=0;
3981 l_TO_Total_Cost NUMBER:=0;
3982 l_TO_Total_Forecast_Revenue NUMBER:=0;
3983 l_TO_Total_Forecast_Cost NUMBER:=0;
3984 l_TO_Total_Margin NUMBER:=0;
3985
3986 l_TO_CT_Total_Revenue NUMBER:=0;
3987 l_TO_CT_Total_Cost NUMBER:=0;
3988 l_TO_CT_Total_Forecast_Revenue NUMBER:=0;
3989 l_TO_CT_Total_Forecast_Cost NUMBER:=0;
3990 l_TO_CT_Total_Margin NUMBER:=0;
3991
3992 l_Top_Org_Index NUMBER;
3993 l_Top_Organization_Name VARCHAR2(240);
3994
3995 l_Convert_Classification VARCHAR2(1);
3996 l_Convert_Expenditure_Type VARCHAR2(1);
3997 l_Convert_Event_Revenue_Type VARCHAR2(1);
3998 l_Convert_Work_Type VARCHAR2(1);
3999
4000 l_curr_record_type_id NUMBER:= 1;
4001 /*
4002 ** -- PL/SQL Declaration
4003 */
4004 l_lines_tab PJI_REP_PPSUM_TBL := PJI_REP_PPSUM_TBL();
4005
4006
4007 BEGIN
4008 BEGIN
4009 SELECT report_cost_type
4010 INTO G_Report_Cost_Type
4011 FROM pji_system_settings;
4012 EXCEPTION
4013 WHEN NO_DATA_FOUND THEN
4014 G_Report_Cost_Type:='RC';
4015 END;
4016
4017 /*
4018 ** Place a call to all the parse API's which parse the
4019 ** parameters passed by PMV and populate all the
4020 ** temporary tables.
4021 */
4022
4023 PJI_PMV_ENGINE.Convert_Operating_Unit(P_OPERATING_UNIT_IDS => p_Operating_Unit
4024 , P_VIEW_BY => p_View_BY
4025 );
4026
4027
4028 PJI_PMV_ENGINE.Convert_Organization(P_TOP_ORGANIZATION_ID => p_Organization
4029 , P_VIEW_BY => p_View_BY
4030 , p_Top_Organization_Name => l_Top_Organization_Name
4031 );
4032
4033
4034 IF p_Time_Comparison_Type <> 'BUDGET' THEN
4035 PJI_PMV_ENGINE.Convert_Time(P_AS_OF_DATE => p_As_of_Date
4036 , P_PERIOD_TYPE => p_Period_Type
4037 , P_VIEW_BY => p_View_By
4038 , P_PARSE_PRIOR => NULL
4039 , P_REPORT_TYPE => 'DBI'
4040 , P_COMPARATOR => p_Time_Comparison_Type
4041 , P_PARSE_ITD => NULL
4042 , P_FULL_PERIOD_FLAG => 'Y'
4043 );
4044 ELSE
4045 PJI_PMV_ENGINE.Convert_Time(P_AS_OF_DATE => p_As_of_Date
4046 , P_PERIOD_TYPE => p_Period_Type
4047 , P_VIEW_BY => p_View_By
4048 , P_PARSE_PRIOR => NULL
4049 , P_REPORT_TYPE => NULL
4050 , P_COMPARATOR => NULL
4051 , P_PARSE_ITD => NULL
4052 , P_FULL_PERIOD_FLAG => 'Y'
4053 );
4054 END IF;
4055
4056 l_Convert_Classification := PJI_PMV_ENGINE.Convert_Classification(p_Classifications, p_Class_Codes, p_View_BY);
4057 l_Convert_Expenditure_Type := PJI_PMV_ENGINE.Convert_Expenditure_Type(p_Expenditure_Category, p_Expenditure_Type, p_View_BY);
4058 l_Convert_Event_Revenue_Type := PJI_PMV_ENGINE.Convert_Event_Revenue_Type(p_Revenue_Category, p_Revenue_Type, p_View_BY );
4059 l_Convert_Work_Type := PJI_PMV_ENGINE.Convert_Work_Type(p_Work_Type, p_View_BY);
4060 l_curr_record_type_id:=PJI_PMV_ENGINE.Convert_Currency_Record_Type(p_Currency_Type);
4061
4062 /*
4063 ** -- Conditionally Processing from different facts --------------------------------+
4064 */
4065
4066
4067 /*
4068 ** Code the SQL statement for all of the following conditions
4069 ** 1. Current Year Actuals and Forecast
4070 ** 2. Prior Year Actuals and Forecast
4071 ** 3. Prior Period Actuals and Forecast
4072 ** 4. Budget Actuals and Forecast
4073 **
4074 ** Prior Year and Period and Budget amounts will be stored in the
4075 ** equivalent Compare-To (CT) columns. Compare-To budget amounts
4076 ** are always CURR_BGT amounts.
4077 **
4078 **
4079 ** UNION ALLs conditionally create zero amount records for all OUs and organizations
4080 ** class/codes.
4081 ** 1) The Org select forces creates OU and organization rows.
4082 ** 2) The Class/Code select creates OU and organization rows as well as class/code
4083 ** rows. The OU/organization forced rows are required because the user can
4084 ** VIEWBY OU/Organization and filter by Class/Code.
4085 **
4086 ** Bulk-Collect the output into a pl/sql table to be returned to
4087 ** pmv.
4088 */
4089
4090
4091 /*
4092 ** ORG Processing ---------------------------------------------------+
4093 */
4094
4095 /* ----------------------------------- Case 1 truth table ------------------------------------- */
4096
4097 IF (l_Convert_Classification = 'N')
4098 and (l_Convert_Expenditure_Type = 'N')
4099 and (l_Convert_Event_Revenue_Type = 'N')
4100 and (l_Convert_Work_Type = 'N')
4101 THEN
4102
4103
4104 SELECT PJI_REP_PPSUM(ORG_ID
4105 , ORGANIZATION_ID
4106 , PROJECT_CLASS_ID
4107 , EXPENDITURE_CATEGORY
4108 , EXPENDITURE_TYPE_ID
4109 , REVENUE_CATEGORY
4110 , REVENUE_TYPE_ID
4111 , WORK_TYPE_ID
4112 , SUM(REVENUE)
4113 , SUM(BURDENED_COST)
4114 , SUM(FORECAST_REVENUE)
4115 , SUM(FORECAST_BURDENED_COST)
4116 , SUM(CT_REVENUE)
4117 , SUM(CT_BURDENED_COST)
4118 , SUM(CT_FORECAST_REVENUE)
4119 , SUM(CT_FORECAST_BURDENED_COST)
4120 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4121 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4122 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4123 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4124 )
4125 BULK COLLECT INTO l_lines_tab
4126 FROM
4127 ( SELECT /*+ ORDERED */
4128 HOU.NAME AS ORG_ID
4129 , HORG.NAME AS ORGANIZATION_ID
4130 , '-1' AS PROJECT_CLASS_ID
4131 , '-1' AS EXPENDITURE_CATEGORY
4132 , '-1' AS EXPENDITURE_TYPE_ID
4133 , '-1' AS REVENUE_CATEGORY
4134 , '-1' AS REVENUE_TYPE_ID
4135 , '-1' AS WORK_TYPE_ID
4136 , DECODE(TIME.amount_type,1,REVENUE,0) AS REVENUE
4137 , DECODE(TIME.amount_type,1,
4138 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4139 'RC', fct.raw_cost, 0),0) AS BURDENED_COST
4140 , DECODE(TIME.amount_type,2,FORECAST_REVENUE,0) AS FORECAST_REVENUE
4141 , DECODE(TIME.amount_type,2,
4142 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
4143 'RC', fct.forecast_raw_cost, 0),0) AS
4144
4145 FORECAST_BURDENED_COST
4146 , 0 AS CT_REVENUE
4147 , 0 AS CT_BURDENED_COST
4148 , 0 AS CT_FORECAST_REVENUE
4149 , 0 AS CT_FORECAST_BURDENED_COST
4150 FROM
4151 PJI_PMV_TIME_DIM_TMP TIME
4152 , PJI_PMV_ORGZ_DIM_TMP HORG
4153 , PJI_FP_ORGO_F_MV fct
4154 , PJI_PMV_ORG_DIM_TMP HOU
4155
4156 WHERE
4157 fct.org_id = hou.id
4158 AND FCT.ORGANIZATION_ID = HORG.ID
4159 AND FCT.TIME_ID = TIME.ID
4160 AND TIME.ID IS NOT NULL
4161 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4162 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4163 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4164 UNION ALL -- CURRENT Approved Budgets
4165 SELECT /*+ ORDERED */
4166 HOU.NAME AS ORG_ID
4167 , HORG.NAME AS ORGANIZATION_ID
4168 , '-1' AS PROJECT_CLASS_ID
4169 , '-1' AS EXPENDITURE_CATEGORY
4170 , '-1' AS EXPENDITURE_TYPE_ID
4171 , '-1' AS REVENUE_CATEGORY
4172 , '-1' AS REVENUE_TYPE_ID
4173 , '-1' AS WORK_TYPE_ID
4174 , 0 AS REVENUE
4175 , 0 AS BURDENED_COST
4176 , 0 AS FORECAST_REVENUE
4177 , 0 AS FORECAST_BURDENED_COST
4178 , DECODE(TIME.amount_type,2,CURR_BGT_REVENUE,0) AS CT_REVENUE
4179 , DECODE(TIME.amount_type,2,
4180 DECODE(G_Report_Cost_Type, 'BC', fct.curr_bgt_burdened_cost,
4181 'RC', fct.curr_bgt_raw_cost, 0)
4182 ,0) AS CT_BURDENED_COST
4183 , DECODE(TIME.amount_type,2,CURR_BGT_REVENUE,0) AS CT_FORECAST_REVENUE
4184 , DECODE(TIME.amount_type,2,
4185 DECODE(G_Report_Cost_Type, 'BC', fct.curr_bgt_burdened_cost,
4186 'RC', fct.curr_bgt_raw_cost, 0)
4187 ,0) AS CT_FORECAST_BURDENED_COST
4188 FROM
4189 PJI_PMV_TIME_DIM_TMP TIME
4190 , PJI_PMV_ORGZ_DIM_TMP HORG
4191 , PJI_FP_ORGO_F_MV fct
4192 , PJI_PMV_ORG_DIM_TMP HOU
4193 WHERE
4194 fct.org_id = hou.id
4195 AND FCT.ORGANIZATION_ID = HORG.ID
4196 AND FCT.TIME_ID = TIME.ID
4197 AND TIME.ID IS NOT NULL
4198 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4199 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4200 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4201 and p_Time_Comparison_Type = 'BUDGET'
4202 UNION ALL -- PRIOR Actuals
4203 SELECT /*+ ORDERED */
4204 HOU.NAME AS ORG_ID
4205 , HORG.NAME AS ORGANIZATION_ID
4206 , '-1' AS PROJECT_CLASS_ID
4207 , '-1' AS EXPENDITURE_CATEGORY
4208 , '-1' AS EXPENDITURE_TYPE_ID
4209 , '-1' AS REVENUE_CATEGORY
4210 , '-1' AS REVENUE_TYPE_ID
4211 , '-1' AS WORK_TYPE_ID
4212 , 0 AS REVENUE
4213 , 0 AS BURDENED_COST
4214 , 0 AS FORECAST_REVENUE
4215 , 0 AS FORECAST_BURDENED_COST
4216 , DECODE(TIME.amount_type,1,REVENUE,0) AS CT_REVENUE
4217 , DECODE(TIME.amount_type,1,
4218 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4219 'RC', fct.raw_cost, 0),0) AS CT_BURDENED_COST
4220 , DECODE(TIME.amount_type,2,FORECAST_REVENUE,0) AS CT_FORECAST_REVENUE
4221 , DECODE(TIME.amount_type,2,
4222 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
4223 'RC', fct.forecast_raw_cost, 0),0) AS CT_FORECAST_BURDENED_COST
4224 FROM
4225 PJI_PMV_TCMP_DIM_TMP TIME
4226 , PJI_PMV_ORGZ_DIM_TMP HORG
4227 , PJI_FP_ORGO_F_MV fct
4228 , PJI_PMV_ORG_DIM_TMP HOU
4229 WHERE
4230 fct.org_id = hou.id
4231 AND FCT.ORGANIZATION_ID = HORG.ID
4232 AND FCT.TIME_ID = TIME.ID
4233 AND TIME.ID IS NOT NULL
4234 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4235 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4236 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4237 and p_Time_Comparison_Type <> 'BUDGET'
4238 UNION ALL -- FORCE Creation of Org rows
4239 SELECT HOU.NAME AS ORG_ID
4240 , '-1' AS ORGANIZATION_ID
4241 , '-1' AS PROJECT_CLASS_ID
4242 , '-1' AS EXPENDITURE_CATEGORY
4243 , '-1' AS EXPENDITURE_TYPE_ID
4244 , '-1' AS REVENUE_CATEGORY
4245 , '-1' AS REVENUE_TYPE_ID
4246 , '-1' AS WORK_TYPE_ID
4247 , 0 AS REVENUE
4248 , 0 AS BURDENED_COST
4249 , 0 AS FORECAST_REVENUE
4250 , 0 AS FORECAST_BURDENED_COST
4251 , 0 AS CT_REVENUE
4252 , 0 AS CT_BURDENED_COST
4253 , 0 AS CT_FORECAST_REVENUE
4254 , 0 AS CT_FORECAST_BURDENED_COST
4255 FROM PJI_PMV_ORG_DIM_TMP HOU
4256 WHERE HOU.NAME <> '-1'
4257 UNION ALL -- FORCE Creation of Organization Rows
4258 SELECT '-1' AS ORG_ID
4259 , HORG.NAME AS ORGANIZATION_ID
4260 , '-1' AS PROJECT_CLASS_ID
4261 , '-1' AS EXPENDITURE_CATEGORY
4262 , '-1' AS EXPENDITURE_TYPE_ID
4263 , '-1' AS REVENUE_CATEGORY
4264 , '-1' AS REVENUE_TYPE_ID
4265 , '-1' AS WORK_TYPE_ID
4266 , 0 AS REVENUE
4267 , 0 AS BURDENED_COST
4268 , 0 AS FORECAST_REVENUE
4269 , 0 AS FORECAST_BURDENED_COST
4270 , 0 AS CT_REVENUE
4271 , 0 AS CT_BURDENED_COST
4272 , 0 AS CT_FORECAST_REVENUE
4273 , 0 AS CT_FORECAST_BURDENED_COST
4274 FROM PJI_PMV_ORGZ_DIM_TMP HORG
4275 WHERE HORG.NAME <> '-1'
4276 )
4277 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
4278 REVENUE_TYPE_ID, WORK_TYPE_ID;
4279
4280
4281
4282
4283
4284 /*
4285 ** -- PROJECT CLASSIFICATION Processing ---------------------------------------------------+
4286 */
4287
4288
4289 /* ----------------------------------- Case 2 truth table ------------------------------------- */
4290
4291 ELSIF (l_Convert_Expenditure_Type = 'N')
4292 and (l_Convert_Event_Revenue_Type = 'N')
4293 and (l_Convert_Work_Type = 'N')
4294
4295 THEN
4296
4297 SELECT PJI_REP_PPSUM(ORG_ID
4298 , ORGANIZATION_ID
4299 , PROJECT_CLASS_ID
4300 , EXPENDITURE_CATEGORY
4301 , EXPENDITURE_TYPE_ID
4302 , REVENUE_CATEGORY
4303 , REVENUE_TYPE_ID
4304 , WORK_TYPE_ID
4305 , SUM(REVENUE)
4306 , SUM(BURDENED_COST)
4307 , SUM(FORECAST_REVENUE)
4308 , SUM(FORECAST_BURDENED_COST)
4309 , SUM(CT_REVENUE)
4310 , SUM(CT_BURDENED_COST)
4311 , SUM(CT_FORECAST_REVENUE)
4312 , SUM(CT_FORECAST_BURDENED_COST)
4313 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4314 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4315 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4316 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4317 )
4318 BULK COLLECT INTO l_lines_tab
4319 FROM
4320 ( SELECT /*+ ORDERED */
4321 HOU.NAME AS ORG_ID
4322 , HORG.NAME AS ORGANIZATION_ID
4323 , CLS.NAME AS PROJECT_CLASS_ID
4324 , '-1' AS EXPENDITURE_CATEGORY
4325 , '-1' AS EXPENDITURE_TYPE_ID
4326 , '-1' AS REVENUE_CATEGORY
4327 , '-1' AS REVENUE_TYPE_ID
4328 , '-1' AS WORK_TYPE_ID
4329 , DECODE(TIME.amount_type,1,REVENUE, 0) AS REVENUE
4330 , DECODE(TIME.amount_type,1,
4331 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4332 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
4333 , DECODE(TIME.amount_type,2,FORECAST_REVENUE, 0) AS FORECAST_REVENUE
4334 , DECODE(TIME.amount_type,2,
4335 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
4336 'RC', fct.forecast_raw_cost, 0), 0) AS FORECAST_BURDENED_COST
4337 , 0 AS CT_REVENUE
4338 , 0 AS CT_BURDENED_COST
4339 , 0 AS CT_FORECAST_REVENUE
4340 , 0 AS CT_FORECAST_BURDENED_COST
4341 FROM
4342 PJI_PMV_TIME_DIM_TMP TIME
4343 , PJI_PMV_ORGZ_DIM_TMP HORG
4344 , PJI_PMV_CLS_DIM_TMP CLS
4345 , PJI_FP_CLSO_F_MV fct
4346 , PJI_PMV_ORG_DIM_TMP HOU
4347 WHERE
4348 fct.project_org_id = hou.id
4349 AND FCT.project_ORGANIZATION_ID = HORG.ID
4350 AND FCT.TIME_ID = TIME.ID
4351 AND TIME.ID IS NOT NULL
4352 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4353 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4354 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4355 and fct.project_class_id = CLS.id
4356 UNION ALL -- CURRENT Approved Budgets
4357 SELECT /*+ ORDERED */
4358 HOU.NAME AS ORG_ID
4359 , HORG.NAME AS ORGANIZATION_ID
4360 , CLS.NAME AS PROJECT_CLASS_ID
4361 , '-1' AS EXPENDITURE_CATEGORY
4362 , '-1' AS EXPENDITURE_TYPE_ID
4363 , '-1' AS REVENUE_CATEGORY
4364 , '-1' AS REVENUE_TYPE_ID
4365 , '-1' AS WORK_TYPE_ID
4366 , 0 AS REVENUE
4367 , 0 AS BURDENED_COST
4368 , 0 AS FORECAST_REVENUE
4369 , 0 AS FORECAST_BURDENED_COST
4370 , DECODE(TIME.amount_type,2,CURR_BGT_REVENUE, 0) AS CT_REVENUE
4371 , DECODE(TIME.amount_type,2,
4372 DECODE(G_Report_Cost_Type, 'BC', fct.curr_bgt_burdened_cost,
4373 'RC', fct.curr_bgt_raw_cost, 0), 0) AS CT_BURDENED_COST
4374 , DECODE(TIME.amount_type,2,CURR_BGT_REVENUE, 0) AS CT_FORECAST_REVENUE
4375 , DECODE(TIME.amount_type,2,
4376 DECODE(G_Report_Cost_Type, 'BC', fct.curr_bgt_burdened_cost,
4377 'RC', fct.curr_bgt_raw_cost, 0), 0) AS
4378
4379 CT_FORECAST_BURDENED_COST
4380 FROM
4381 PJI_PMV_TIME_DIM_TMP TIME
4382 , PJI_PMV_ORGZ_DIM_TMP HORG
4383 , PJI_PMV_CLS_DIM_TMP CLS
4384 , PJI_FP_CLSO_F_MV fct
4385 , PJI_PMV_ORG_DIM_TMP HOU
4386 WHERE
4387 fct.project_org_id = hou.id
4388 AND FCT.project_ORGANIZATION_ID = HORG.ID
4389 AND FCT.TIME_ID = TIME.ID
4390 AND TIME.ID IS NOT NULL
4391 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4392 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4393 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4394 and fct.project_class_id = CLS.id
4395 and p_Time_Comparison_Type = 'BUDGET'
4396 UNION ALL -- PRIOR Actuals
4397 SELECT /*+ ORDERED */
4398 HOU.NAME AS ORG_ID
4399 , HORG.NAME AS ORGANIZATION_ID
4400 , CLS.NAME AS PROJECT_CLASS_ID
4401 , '-1' AS EXPENDITURE_CATEGORY
4402 , '-1' AS EXPENDITURE_TYPE_ID
4403 , '-1' AS REVENUE_CATEGORY
4404 , '-1' AS REVENUE_TYPE_ID
4405 , '-1' AS WORK_TYPE_ID
4406 , 0 AS REVENUE
4407 , 0 AS BURDENED_COST
4408 , 0 AS FORECAST_REVENUE
4409 , 0 AS FORECAST_BURDENED_COST
4410 , DECODE(TIME.amount_type,1,REVENUE, 0) AS CT_REVENUE
4411 , DECODE(TIME.amount_type,1,
4412 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4413 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
4414 , DECODE(TIME.amount_type,2,FORECAST_REVENUE, 0) AS CT_FORECAST_REVENUE
4415 , DECODE(TIME.amount_type,2,
4416 DECODE(G_Report_Cost_Type, 'BC', fct.forecast_burdened_cost,
4417 'RC', fct.forecast_raw_cost, 0), 0) AS
4418
4419 CT_FORECAST_BURDENED_COST
4420 FROM
4421 PJI_PMV_TCMP_DIM_TMP TIME
4422 , PJI_PMV_ORGZ_DIM_TMP HORG
4423 , PJI_PMV_CLS_DIM_TMP CLS
4424 , PJI_FP_CLSO_F_MV fct
4425 , PJI_PMV_ORG_DIM_TMP HOU
4426 WHERE
4427 fct.project_org_id = hou.id
4428 AND FCT.project_ORGANIZATION_ID = HORG.ID
4429 AND FCT.TIME_ID = TIME.ID
4430 AND TIME.ID IS NOT NULL
4431 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4432 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4433 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4434 and fct.project_class_id = CLS.id
4435 and p_Time_Comparison_Type <> 'BUDGET'
4436 UNION ALL -- FORCE Creation of Org Rows
4437 SELECT HOU.NAME AS ORG_ID
4438 , '-1' AS ORGANIZATION_ID
4439 , '-1' AS PROJECT_CLASS_ID
4440 , '-1' AS EXPENDITURE_CATEGORY
4441 , '-1' AS EXPENDITURE_TYPE_ID
4442 , '-1' AS REVENUE_CATEGORY
4443 , '-1' AS REVENUE_TYPE_ID
4444 , '-1' AS WORK_TYPE_ID
4445 , 0 AS REVENUE
4446 , 0 AS BURDENED_COST
4447 , 0 AS FORECAST_REVENUE
4448 , 0 AS FORECAST_BURDENED_COST
4449 , 0 AS CT_REVENUE
4450 , 0 AS CT_BURDENED_COST
4451 , 0 AS CT_FORECAST_REVENUE
4452 , 0 AS CT_FORECAST_BURDENED_COST
4453 FROM PJI_PMV_ORG_DIM_TMP HOU
4454 WHERE HOU.NAME <> '-1'
4455 UNION ALL -- FORCE Creation of Organization Rows
4456 SELECT '-1' AS ORG_ID
4457 , HORG.NAME AS ORGANIZATION_ID
4458 , '-1' AS PROJECT_CLASS_ID
4459 , '-1' AS EXPENDITURE_CATEGORY
4460 , '-1' AS EXPENDITURE_TYPE_ID
4461 , '-1' AS REVENUE_CATEGORY
4462 , '-1' AS REVENUE_TYPE_ID
4463 , '-1' AS WORK_TYPE_ID
4464 , 0 AS REVENUE
4465 , 0 AS BURDENED_COST
4466 , 0 AS FORECAST_REVENUE
4467 , 0 AS FORECAST_BURDENED_COST
4468 , 0 AS CT_REVENUE
4469 , 0 AS CT_BURDENED_COST
4470 , 0 AS CT_FORECAST_REVENUE
4471 , 0 AS CT_FORECAST_BURDENED_COST
4472 FROM PJI_PMV_ORGZ_DIM_TMP HORG
4473 WHERE HORG.NAME <> '-1'
4474 UNION ALL -- FORCE Creation of Class/Code Rows
4475 SELECT '-1' AS ORG_ID
4476 , '-1' AS ORGANIZATION_ID
4477 , NAME AS PROJECT_CLASS_ID
4478 , '-1' AS EXPENDITURE_CATEGORY
4479 , '-1' AS EXPENDITURE_TYPE_ID
4480 , '-1' AS REVENUE_CATEGORY
4481 , '-1' AS REVENUE_TYPE_ID
4482 , '-1' AS WORK_TYPE_ID
4483 , 0 AS REVENUE
4484 , 0 AS BURDENED_COST
4485 , 0 AS FORECAST_REVENUE
4486 , 0 AS FORECAST_BURDENED_COST
4487 , 0 AS CT_REVENUE
4488 , 0 AS CT_BURDENED_COST
4489 , 0 AS CT_FORECAST_REVENUE
4490 , 0 AS CT_FORECAST_BURDENED_COST
4491 FROM PJI_PMV_CLS_DIM_TMP HORG
4492 WHERE HORG.NAME <> '-1'
4493 )
4494 WHERE 1 = 1
4495 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
4496 REVENUE_TYPE_ID, WORK_TYPE_ID;
4497
4498 /*
4499 ** Expenditure or Revenue Type Processing ---------------------------------------------------+
4500 */
4501
4502 /* ----------------------------------- Case 3 truth table ------------------------------------- */
4503
4504 ELSIF (l_Convert_Classification = 'N')
4505 and (l_Convert_Work_Type = 'N')
4506 THEN
4507
4508 SELECT PJI_REP_PPSUM(ORG_ID
4509 , ORGANIZATION_ID
4510 , PROJECT_CLASS_ID
4511 , EXPENDITURE_CATEGORY
4512 , EXPENDITURE_TYPE_ID
4513 , REVENUE_CATEGORY
4514 , REVENUE_TYPE_ID
4515 , WORK_TYPE_ID
4516 , SUM(REVENUE)
4517 , SUM(BURDENED_COST)
4518 , SUM(FORECAST_REVENUE)
4519 , SUM(FORECAST_BURDENED_COST)
4520 , SUM(CT_REVENUE)
4521 , SUM(CT_BURDENED_COST)
4522 , SUM(CT_FORECAST_REVENUE)
4523 , SUM(CT_FORECAST_BURDENED_COST)
4524 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4525 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4526 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4527 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4528 )
4529 BULK COLLECT INTO l_lines_tab
4530 FROM
4531 ( SELECT /*+ ORDERED */
4532 HOU.NAME AS ORG_ID
4533 , HORG.NAME AS ORGANIZATION_ID
4534 , '-1' AS PROJECT_CLASS_ID
4535 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4536 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4537 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4538 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4539 , '-1' AS WORK_TYPE_ID
4540 , DECODE(TIME.amount_type,1,REVENUE, 0) AS REVENUE
4541 , DECODE(TIME.amount_type,1,
4542 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4543 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
4544 , NULL AS FORECAST_REVENUE
4545 , NULL AS FORECAST_BURDENED_COST
4546 , 0 AS CT_REVENUE
4547 , 0 AS CT_BURDENED_COST
4548 , NULL AS CT_FORECAST_REVENUE
4549 , NULL AS CT_FORECAST_BURDENED_COST
4550 FROM
4551 PJI_PMV_TIME_DIM_TMP TIME
4552 , PJI_PMV_ORGZ_DIM_TMP HORG
4553 , PJI_PMV_ET_RT_DIM_TMP ET
4554 , PJI_FP_ORGO_ET_F_MV fct
4555 , PJI_PMV_ORG_DIM_TMP HOU
4556 WHERE
4557 fct.org_id = hou.id
4558 AND FCT.ORGANIZATION_ID = HORG.ID
4559 AND FCT.TIME_ID = TIME.ID
4560 AND TIME.ID IS NOT NULL
4561 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4562 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4563 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4564 and fct.exp_evt_type_id = ET.id
4565 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
4566 UNION ALL -- CURRENT Approved Budgets
4567 SELECT /*+ ORDERED */
4568 HOU.NAME AS ORG_ID
4569 , HORG.NAME AS ORGANIZATION_ID
4570 , '-1' AS PROJECT_CLASS_ID
4571 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4572 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4573 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4574 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4575 , '-1' AS WORK_TYPE_ID
4576 , 0 AS REVENUE
4577 , 0 AS BURDENED_COST
4578 , NULL AS FORECAST_REVENUE
4579 , NULL AS FORECAST_BURDENED_COST
4580 , 0 AS CT_REVENUE
4581 , 0 AS CT_BURDENED_COST
4582 , NULL AS CT_FORECAST_REVENUE
4583 , NULL AS CT_FORECAST_BURDENED_COST
4584 FROM
4585 PJI_PMV_TIME_DIM_TMP TIME
4586 , PJI_PMV_ORGZ_DIM_TMP HORG
4587 , PJI_PMV_ET_RT_DIM_TMP ET
4588 , PJI_FP_ORGO_ET_F_MV fct
4589 , PJI_PMV_ORG_DIM_TMP HOU
4590 WHERE
4591 fct.org_id = hou.id
4592 AND FCT.ORGANIZATION_ID = HORG.ID
4593 AND FCT.TIME_ID = TIME.ID
4594 AND TIME.ID IS NOT NULL
4595 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4596 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4597 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4598 and fct.exp_evt_type_id = ET.id
4599 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
4600 and p_Time_Comparison_Type = 'BUDGET'
4601 UNION ALL -- PRIOR Actuals
4602 SELECT /*+ ORDERED */
4603 HOU.NAME AS ORG_ID
4604 , HORG.NAME AS ORGANIZATION_ID
4605 , '-1' AS PROJECT_CLASS_ID
4606 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4607 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4608 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4609 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4610 , '-1' AS WORK_TYPE_ID
4611 , 0 AS REVENUE
4612 , 0 AS BURDENED_COST
4613 , 0 AS FORECAST_REVENUE
4614 , 0 AS FORECAST_BURDENED_COST
4615 , DECODE(TIME.amount_type,1,REVENUE, 0) AS CT_REVENUE
4616 , DECODE(TIME.amount_type,1,
4617 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4618 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
4619 , NULL AS CT_FORECAST_REVENUE
4620 , NULL AS CT_FORECAST_BURDENED_COST
4621 FROM
4622 PJI_PMV_TCMP_DIM_TMP TIME
4623 , PJI_PMV_ORGZ_DIM_TMP HORG
4624 , PJI_PMV_ET_RT_DIM_TMP ET
4625 , PJI_FP_ORGO_ET_F_MV fct
4626 , PJI_PMV_ORG_DIM_TMP HOU
4627 WHERE
4628 fct.org_id = hou.id
4629 AND FCT.ORGANIZATION_ID = HORG.ID
4630 AND FCT.TIME_ID = TIME.ID
4631 AND TIME.ID IS NOT NULL
4632 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4633 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4634 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4635 and fct.exp_evt_type_id = ET.id
4636 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
4637 and p_Time_Comparison_Type <> 'BUDGET'
4638 UNION ALL -- FORCE Creation of Org Rows
4639 SELECT HOU.NAME AS ORG_ID
4640 , '-1' AS ORGANIZATION_ID
4641 , '-1' AS PROJECT_CLASS_ID
4642 , '-1' AS EXPENDITURE_CATEGORY
4643 , '-1' AS EXPENDITURE_TYPE_ID
4644 , '-1' AS REVENUE_CATEGORY
4645 , '-1' AS REVENUE_TYPE_ID
4646 , '-1' AS WORK_TYPE_ID
4647 , 0 AS REVENUE
4648 , 0 AS BURDENED_COST
4649 , 0 AS FORECAST_REVENUE
4650 , 0 AS FORECAST_BURDENED_COST
4651 , 0 AS CT_REVENUE
4652 , 0 AS CT_BURDENED_COST
4653 , 0 AS CT_FORECAST_REVENUE
4654 , 0 AS CT_FORECAST_BURDENED_COST
4655 FROM PJI_PMV_ORG_DIM_TMP HOU
4656 WHERE HOU.NAME <> '-1'
4657 UNION ALL -- FORCE Creation of Organization Rows
4658 SELECT '-1' AS ORG_ID
4659 , HORG.NAME AS ORGANIZATION_ID
4660 , '-1' AS PROJECT_CLASS_ID
4661 , '-1' AS EXPENDITURE_CATEGORY
4662 , '-1' AS EXPENDITURE_TYPE_ID
4663 , '-1' AS REVENUE_CATEGORY
4664 , '-1' AS REVENUE_TYPE_ID
4665 , '-1' AS WORK_TYPE_ID
4666 , 0 AS REVENUE
4667 , 0 AS BURDENED_COST
4668 , NULL AS FORECAST_REVENUE
4669 , NULL AS FORECAST_BURDENED_COST
4670 , 0 AS CT_REVENUE
4671 , 0 AS CT_BURDENED_COST
4672 , 0 AS CT_FORECAST_REVENUE
4673 , 0 AS CT_FORECAST_BURDENED_COST
4674 FROM PJI_PMV_ORGZ_DIM_TMP HORG
4675 WHERE HORG.NAME <> '-1'
4676 UNION ALL -- FORCE Creation of Expenditure Category/Type Rows
4677 SELECT '-1' AS ORG_ID
4678 , '-1' AS ORGANIZATION_ID
4679 , '-1' AS PROJECT_CLASS_ID
4680 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4681 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4682 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4683 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4684 , '-1' AS WORK_TYPE_ID
4685 , 0 AS REVENUE
4686 , 0 AS BURDENED_COST
4687 , NULL AS FORECAST_REVENUE
4688 , NULL AS FORECAST_BURDENED_COST
4689 , 0 AS CT_REVENUE
4690 , 0 AS CT_BURDENED_COST
4691 , 0 AS CT_FORECAST_REVENUE
4692 , 0 AS CT_FORECAST_BURDENED_COST
4693 FROM PJI_PMV_ET_RT_DIM_TMP ET
4694 WHERE ET.NAME <> '-1'
4695 )
4696 WHERE 1 = 1
4697 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
4698 REVENUE_TYPE_ID, WORK_TYPE_ID;
4699
4700 /*
4701 ** Work Type Processing ---------------------------------------------------+
4702 */
4703
4704 /* ----------------------------------- Case 4 truth table ------------------------------------- */
4705
4706 ELSIF (l_Convert_Classification = 'N')
4707 and (l_Convert_Expenditure_Type = 'N')
4708 and (l_Convert_Event_Revenue_Type = 'N')
4709 THEN
4710
4711 SELECT PJI_REP_PPSUM(ORG_ID
4712 , ORGANIZATION_ID
4713 , PROJECT_CLASS_ID
4714 , EXPENDITURE_CATEGORY
4715 , EXPENDITURE_TYPE_ID
4716 , REVENUE_CATEGORY
4717 , REVENUE_TYPE_ID
4718 , WORK_TYPE_ID
4719 , SUM(REVENUE)
4720 , SUM(BURDENED_COST)
4721 , SUM(FORECAST_REVENUE)
4722 , SUM(FORECAST_BURDENED_COST)
4723 , SUM(CT_REVENUE)
4724 , SUM(CT_BURDENED_COST)
4725 , SUM(CT_FORECAST_REVENUE)
4726 , SUM(CT_FORECAST_BURDENED_COST)
4727 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4728 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4729 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4730 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4731 )
4732 BULK COLLECT INTO l_lines_tab
4733 FROM
4734 ( SELECT /*+ ORDERED */
4735 HOU.NAME AS ORG_ID
4736 , HORG.NAME AS ORGANIZATION_ID
4737 , '-1' AS PROJECT_CLASS_ID
4738 , '-1' AS EXPENDITURE_CATEGORY
4739 , '-1' AS EXPENDITURE_TYPE_ID
4740 , '-1' AS REVENUE_CATEGORY
4741 , '-1' AS REVENUE_TYPE_ID
4742 , WT.NAME AS WORK_TYPE_ID
4743 , null AS REVENUE
4744 , DECODE(TIME.amount_type,1,
4745 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4746 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
4747 , NULL AS FORECAST_REVENUE
4748 , NULL AS FORECAST_BURDENED_COST
4749 , 0 AS CT_REVENUE
4750 , 0 AS CT_BURDENED_COST
4751 , NULL AS CT_FORECAST_REVENUE
4752 , NULL AS CT_FORECAST_BURDENED_COST
4753 FROM
4754 PJI_PMV_TIME_DIM_TMP TIME
4755 , PJI_PMV_ORGZ_DIM_TMP HORG
4756 , PJI_PMV_WT_DIM_TMP WT
4757 , PJI_FP_ORGO_ET_WT_F_MV fct
4758 , PJI_PMV_ORG_DIM_TMP HOU
4759 WHERE
4760 fct.org_id = hou.id
4761 AND FCT.ORGANIZATION_ID = HORG.ID
4762 AND FCT.TIME_ID = TIME.ID
4763 AND TIME.ID IS NOT NULL
4764 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4765 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4766 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4767 and fct.work_type_id = WT.id
4768 UNION ALL -- CURRENT Approved Budgets
4769 SELECT /*+ ORDERED */
4770 HOU.NAME AS ORG_ID
4771 , HORG.NAME AS ORGANIZATION_ID
4772 , '-1' AS PROJECT_CLASS_ID
4773 , '-1' AS EXPENDITURE_CATEGORY
4774 , '-1' AS EXPENDITURE_TYPE_ID
4775 , '-1' AS REVENUE_CATEGORY
4776 , '-1' AS REVENUE_TYPE_ID
4777 , WT.NAME AS WORK_TYPE_ID
4778 , 0 AS REVENUE
4779 , 0 AS BURDENED_COST
4780 , NULL AS FORECAST_REVENUE
4781 , NULL AS FORECAST_BURDENED_COST
4782 , 0 AS CT_REVENUE
4783 , 0 AS CT_BURDENED_COST
4784 , NULL AS CT_FORECAST_REVENUE
4785 , NULL AS CT_FORECAST_BURDENED_COST
4786 FROM
4787 PJI_PMV_TIME_DIM_TMP TIME
4788 , PJI_PMV_ORGZ_DIM_TMP HORG
4789 , PJI_PMV_WT_DIM_TMP WT
4790 , PJI_FP_ORGO_ET_WT_F_MV fct
4791 , PJI_PMV_ORG_DIM_TMP HOU
4792 WHERE
4793 fct.org_id = hou.id
4794 AND FCT.ORGANIZATION_ID = HORG.ID
4795 AND FCT.TIME_ID = TIME.ID
4796 AND TIME.ID IS NOT NULL
4797 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4798 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4799 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4800 and fct.work_type_id = WT.id
4801 and p_Time_Comparison_Type = 'BUDGET'
4802 UNION ALL -- PRIOR Actuals
4803 SELECT /*+ ORDERED */
4804 HOU.NAME AS ORG_ID
4805 , HORG.NAME AS ORGANIZATION_ID
4806 , '-1' AS PROJECT_CLASS_ID
4807 , '-1' AS EXPENDITURE_CATEGORY
4808 , '-1' AS EXPENDITURE_TYPE_ID
4809 , '-1' AS REVENUE_CATEGORY
4810 , '-1' AS REVENUE_TYPE_ID
4811 , WT.NAME AS WORK_TYPE_ID
4812 , 0 AS REVENUE
4813 , 0 AS BURDENED_COST
4814 , 0 AS FORECAST_REVENUE
4815 , 0 AS FORECAST_BURDENED_COST
4816 , null AS CT_REVENUE
4817 , DECODE(TIME.amount_type,1,
4818 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4819 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
4820 , NULL AS CT_FORECAST_REVENUE
4821 , NULL AS CT_FORECAST_BURDENED_COST
4822 FROM
4823 PJI_PMV_TCMP_DIM_TMP TIME
4824 , PJI_PMV_ORGZ_DIM_TMP HORG
4825 , PJI_PMV_WT_DIM_TMP WT
4826 , PJI_FP_ORGO_ET_WT_F_MV fct
4827 , PJI_PMV_ORG_DIM_TMP HOU
4828 WHERE
4829 fct.org_id = hou.id
4830 AND FCT.ORGANIZATION_ID = HORG.ID
4831 AND FCT.TIME_ID = TIME.ID
4832 AND TIME.ID IS NOT NULL
4833 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4834 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4835 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4836 and fct.work_type_id = WT.id
4837 and p_Time_Comparison_Type <> 'BUDGET'
4838 UNION ALL -- FORCE Creation of Org Rows
4839 SELECT HOU.NAME AS ORG_ID
4840 , '-1' AS ORGANIZATION_ID
4841 , '-1' AS PROJECT_CLASS_ID
4842 , '-1' AS EXPENDITURE_CATEGORY
4843 , '-1' AS EXPENDITURE_TYPE_ID
4844 , '-1' AS REVENUE_CATEGORY
4845 , '-1' AS REVENUE_TYPE_ID
4846 , '-1' AS WORK_TYPE_ID
4847 , 0 AS REVENUE
4848 , 0 AS BURDENED_COST
4849 , 0 AS FORECAST_REVENUE
4850 , 0 AS FORECAST_BURDENED_COST
4851 , 0 AS CT_REVENUE
4852 , 0 AS CT_BURDENED_COST
4853 , 0 AS CT_FORECAST_REVENUE
4854 , 0 AS CT_FORECAST_BURDENED_COST
4855 FROM PJI_PMV_ORG_DIM_TMP HOU
4856 WHERE HOU.NAME <> '-1'
4857 UNION ALL -- FORCE Creation of Organization Rows
4858 SELECT '-1' AS ORG_ID
4859 , HORG.NAME AS ORGANIZATION_ID
4860 , '-1' AS PROJECT_CLASS_ID
4861 , '-1' AS EXPENDITURE_CATEGORY
4862 , '-1' AS EXPENDITURE_TYPE_ID
4863 , '-1' AS REVENUE_CATEGORY
4864 , '-1' AS REVENUE_TYPE_ID
4865 , '-1' AS WORK_TYPE_ID
4866 , 0 AS REVENUE
4867 , 0 AS BURDENED_COST
4868 , NULL AS FORECAST_REVENUE
4869 , NULL AS FORECAST_BURDENED_COST
4870 , 0 AS CT_REVENUE
4871 , 0 AS CT_BURDENED_COST
4872 , 0 AS CT_FORECAST_REVENUE
4873 , 0 AS CT_FORECAST_BURDENED_COST
4874 FROM PJI_PMV_ORGZ_DIM_TMP HORG
4875 WHERE HORG.NAME <> '-1'
4876 UNION ALL -- FORCE Creation of Work Type Rows
4877 SELECT '-1' AS ORG_ID
4878 , '-1' AS ORGANIZATION_ID
4879 , '-1' AS PROJECT_CLASS_ID
4880 , '-1' AS EXPENDITURE_CATEGORY
4881 , '-1' AS EXPENDITURE_TYPE_ID
4882 , '-1' AS REVENUE_CATEGORY
4883 , '-1' AS REVENUE_TYPE_ID
4884 , WT.NAME AS WORK_TYPE_ID
4885 , 0 AS REVENUE
4886 , 0 AS BURDENED_COST
4887 , NULL AS FORECAST_REVENUE
4888 , NULL AS FORECAST_BURDENED_COST
4889 , 0 AS CT_REVENUE
4890 , 0 AS CT_BURDENED_COST
4891 , 0 AS CT_FORECAST_REVENUE
4892 , 0 AS CT_FORECAST_BURDENED_COST
4893 FROM PJI_PMV_WT_DIM_TMP WT
4894 WHERE WT.NAME <> '-1'
4895 )
4896 WHERE 1 = 1
4897 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
4898 REVENUE_TYPE_ID, WORK_TYPE_ID;
4899
4900 /*
4901 ** Project classification and Expenditure or Revenue Type Processing ---------------------------------+
4902 */
4903
4904 /* ----------------------------------- Case 5 truth table ------------------------------------- */
4905
4906 ELSIF (l_Convert_Work_Type = 'N')
4907 THEN
4908
4909 SELECT PJI_REP_PPSUM(ORG_ID
4910 , ORGANIZATION_ID
4911 , PROJECT_CLASS_ID
4912 , EXPENDITURE_CATEGORY
4913 , EXPENDITURE_TYPE_ID
4914 , REVENUE_CATEGORY
4915 , REVENUE_TYPE_ID
4916 , WORK_TYPE_ID
4917 , SUM(REVENUE)
4918 , SUM(BURDENED_COST)
4919 , SUM(FORECAST_REVENUE)
4920 , SUM(FORECAST_BURDENED_COST)
4921 , SUM(CT_REVENUE)
4922 , SUM(CT_BURDENED_COST)
4923 , SUM(CT_FORECAST_REVENUE)
4924 , SUM(CT_FORECAST_BURDENED_COST)
4925 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4926 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4927 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4928 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4929 )
4930 BULK COLLECT INTO l_lines_tab
4931 FROM
4932 ( SELECT /*+ ORDERED */
4933 HOU.NAME AS ORG_ID
4934 , HORG.NAME AS ORGANIZATION_ID
4935 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
4936 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4937 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4938 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4939 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4940 , '-1' AS WORK_TYPE_ID
4941 , DECODE(TIME.amount_type,1,REVENUE, 0) AS REVENUE
4942 , DECODE(TIME.amount_type,1,
4943 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
4944 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
4945 , NULL AS FORECAST_REVENUE
4946 , NULL AS FORECAST_BURDENED_COST
4947 , 0 AS CT_REVENUE
4948 , 0 AS CT_BURDENED_COST
4949 , NULL AS CT_FORECAST_REVENUE
4950 , NULL AS CT_FORECAST_BURDENED_COST
4951 FROM
4952 PJI_PMV_TIME_DIM_TMP TIME
4953 , PJI_PMV_ORGZ_DIM_TMP HORG
4954 , PJI_PMV_CLS_DIM_TMP CLS
4955 , PJI_PMV_ET_RT_DIM_TMP ET
4956 , PJI_FP_CLSO_ET_F_MV fct
4957 , PJI_PMV_ORG_DIM_TMP HOU
4958 WHERE
4959 fct.project_org_id = hou.id
4960 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
4961 AND FCT.TIME_ID = TIME.ID
4962 AND TIME.ID IS NOT NULL
4963 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
4964 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
4965 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
4966 and fct.project_class_id = CLS.id
4967 and fct.exp_evt_type_id = ET.id
4968 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
4969 UNION ALL -- CURRENT Approved Budgets
4970 SELECT /*+ ORDERED */
4971 HOU.NAME AS ORG_ID
4972 , HORG.NAME AS ORGANIZATION_ID
4973 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
4974 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
4975 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
4976 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
4977 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
4978 , '-1' AS WORK_TYPE_ID
4979 , 0 AS REVENUE
4980 , 0 AS BURDENED_COST
4981 , NULL AS FORECAST_REVENUE
4982 , NULL AS FORECAST_BURDENED_COST
4983 , 0 AS CT_REVENUE
4984 , 0 AS CT_BURDENED_COST
4985 , NULL AS CT_FORECAST_REVENUE
4986 , NULL AS CT_FORECAST_BURDENED_COST
4987 FROM
4988 PJI_PMV_TIME_DIM_TMP TIME
4989 , PJI_PMV_ORGZ_DIM_TMP HORG
4990 , PJI_PMV_CLS_DIM_TMP CLS
4991 , PJI_PMV_ET_RT_DIM_TMP ET
4992 , PJI_FP_CLSO_ET_F_MV fct
4993 , PJI_PMV_ORG_DIM_TMP HOU
4994 WHERE
4995 fct.project_org_id = hou.id
4996 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
4997 AND FCT.TIME_ID = TIME.ID
4998 AND TIME.ID IS NOT NULL
4999 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5000 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5001 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5002 and fct.project_class_id = CLS.id
5003 and fct.exp_evt_type_id = ET.id
5004 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5005 and p_Time_Comparison_Type = 'BUDGET'
5006 UNION ALL -- PRIOR Actuals
5007 SELECT /*+ ORDERED */
5008 HOU.NAME AS ORG_ID
5009 , HORG.NAME AS ORGANIZATION_ID
5010 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5011 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5012 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5013 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5014 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5015 , '-1' AS WORK_TYPE_ID
5016 , 0 AS REVENUE
5017 , 0 AS BURDENED_COST
5018 , 0 AS FORECAST_REVENUE
5019 , 0 AS FORECAST_BURDENED_COST
5020 , DECODE(TIME.amount_type,1,REVENUE, 0) AS CT_REVENUE
5021 , DECODE(TIME.amount_type,1,
5022 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5023 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
5024 , NULL AS CT_FORECAST_REVENUE
5025 , NULL AS CT_FORECAST_BURDENED_COST
5026 FROM
5027 PJI_PMV_TCMP_DIM_TMP TIME
5028 , PJI_PMV_ORGZ_DIM_TMP HORG
5029 , PJI_PMV_CLS_DIM_TMP CLS
5030 , PJI_PMV_ET_RT_DIM_TMP ET
5031 , PJI_FP_CLSO_ET_F_MV fct
5032 , PJI_PMV_ORG_DIM_TMP HOU
5033 WHERE
5034 fct.project_org_id = hou.id
5035 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5036 AND FCT.TIME_ID = TIME.ID
5037 AND TIME.ID IS NOT NULL
5038 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5039 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5040 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5041 and fct.project_class_id = CLS.id
5042 and fct.exp_evt_type_id = ET.id
5043 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5044 and p_Time_Comparison_Type <> 'BUDGET'
5045 UNION ALL -- FORCE Creation of Org Rows
5046 SELECT HOU.NAME AS ORG_ID
5047 , '-1' AS ORGANIZATION_ID
5048 , '-1' AS PROJECT_CLASS_ID
5049 , '-1' AS EXPENDITURE_CATEGORY
5050 , '-1' AS EXPENDITURE_TYPE_ID
5051 , '-1' AS REVENUE_CATEGORY
5052 , '-1' AS REVENUE_TYPE_ID
5053 , '-1' AS WORK_TYPE_ID
5054 , 0 AS REVENUE
5055 , 0 AS BURDENED_COST
5056 , 0 AS FORECAST_REVENUE
5057 , 0 AS FORECAST_BURDENED_COST
5058 , 0 AS CT_REVENUE
5059 , 0 AS CT_BURDENED_COST
5060 , 0 AS CT_FORECAST_REVENUE
5061 , 0 AS CT_FORECAST_BURDENED_COST
5062 FROM PJI_PMV_ORG_DIM_TMP HOU
5063 WHERE HOU.NAME <> '-1'
5064 UNION ALL -- FORCE Creation of Organization Rows
5065 SELECT '-1' AS ORG_ID
5066 , HORG.NAME AS ORGANIZATION_ID
5067 , '-1' AS PROJECT_CLASS_ID
5068 , '-1' AS EXPENDITURE_CATEGORY
5069 , '-1' AS EXPENDITURE_TYPE_ID
5070 , '-1' AS REVENUE_CATEGORY
5071 , '-1' AS REVENUE_TYPE_ID
5072 , '-1' AS WORK_TYPE_ID
5073 , 0 AS REVENUE
5074 , 0 AS BURDENED_COST
5075 , NULL AS FORECAST_REVENUE
5076 , NULL AS FORECAST_BURDENED_COST
5077 , 0 AS CT_REVENUE
5078 , 0 AS CT_BURDENED_COST
5079 , 0 AS CT_FORECAST_REVENUE
5080 , 0 AS CT_FORECAST_BURDENED_COST
5081 FROM PJI_PMV_ORGZ_DIM_TMP HORG
5082 WHERE HORG.NAME <> '-1'
5083 UNION ALL -- FORCE Creation of Class/Code Rows
5084 SELECT '-1' AS ORG_ID
5085 , '-1' AS ORGANIZATION_ID
5086 , CLS.NAME AS PROJECT_CLASS_ID
5087 , '-1' AS EXPENDITURE_CATEGORY
5088 , '-1' AS EXPENDITURE_TYPE_ID
5089 , '-1' AS REVENUE_CATEGORY
5090 , '-1' AS REVENUE_TYPE_ID
5091 , '-1' AS WORK_TYPE_ID
5092 , 0 AS REVENUE
5093 , 0 AS BURDENED_COST
5094 , NULL AS FORECAST_REVENUE
5095 , NULL AS FORECAST_BURDENED_COST
5096 , 0 AS CT_REVENUE
5097 , 0 AS CT_BURDENED_COST
5098 , 0 AS CT_FORECAST_REVENUE
5099 , 0 AS CT_FORECAST_BURDENED_COST
5100 FROM PJI_PMV_CLS_DIM_TMP CLS
5101 WHERE CLS.NAME <> '-1'
5102 UNION ALL -- FORCE Creation of Expenditure Category/Type Rows
5103 SELECT '-1' AS ORG_ID
5104 , '-1' AS ORGANIZATION_ID
5105 , '-1' AS PROJECT_CLASS_ID
5106 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5107 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5108 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5109 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5110 , '-1' AS WORK_TYPE_ID
5111 , 0 AS REVENUE
5112 , 0 AS BURDENED_COST
5113 , NULL AS FORECAST_REVENUE
5114 , NULL AS FORECAST_BURDENED_COST
5115 , 0 AS CT_REVENUE
5116 , 0 AS CT_BURDENED_COST
5117 , 0 AS CT_FORECAST_REVENUE
5118 , 0 AS CT_FORECAST_BURDENED_COST
5119 FROM PJI_PMV_ET_RT_DIM_TMP ET
5120 WHERE ET.NAME <> '-1'
5121
5122 )
5123 WHERE 1 = 1
5124 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
5125 REVENUE_TYPE_ID, WORK_TYPE_ID;
5126
5127 /*
5128 ** Expenditure or Revenue Type and Work Type Processing -----------------------------------------+
5129 */
5130
5131 /* ----------------------------------- Case 6 truth table ------------------------------------- */
5132
5133 ELSIF (l_Convert_Classification = 'N')
5134 THEN
5135
5136 SELECT PJI_REP_PPSUM(ORG_ID
5137 , ORGANIZATION_ID
5138 , PROJECT_CLASS_ID
5139 , EXPENDITURE_CATEGORY
5140 , EXPENDITURE_TYPE_ID
5141 , REVENUE_CATEGORY
5142 , REVENUE_TYPE_ID
5143 , WORK_TYPE_ID
5144 , SUM(REVENUE)
5145 , SUM(BURDENED_COST)
5146 , SUM(FORECAST_REVENUE)
5147 , SUM(FORECAST_BURDENED_COST)
5148 , SUM(CT_REVENUE)
5149 , SUM(CT_BURDENED_COST)
5150 , SUM(CT_FORECAST_REVENUE)
5151 , SUM(CT_FORECAST_BURDENED_COST)
5152 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5153 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5154 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5155 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5156 )
5157 BULK COLLECT INTO l_lines_tab
5158 FROM
5159 ( SELECT /*+ ORDERED */
5160 HOU.NAME AS ORG_ID
5161 , HORG.NAME AS ORGANIZATION_ID
5162 , '-1' AS PROJECT_CLASS_ID
5163 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5164 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5165 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5166 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5167 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5168 , null AS REVENUE
5169 , DECODE(TIME.amount_type,1,
5170 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5171 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
5172 , NULL AS FORECAST_REVENUE
5173 , NULL AS FORECAST_BURDENED_COST
5174 , 0 AS CT_REVENUE
5175 , 0 AS CT_BURDENED_COST
5176 , NULL AS CT_FORECAST_REVENUE
5177 , NULL AS CT_FORECAST_BURDENED_COST
5178 FROM
5179 PJI_PMV_TIME_DIM_TMP TIME
5180 , PJI_PMV_ORGZ_DIM_TMP HORG
5181 , PJI_PMV_ET_RT_DIM_TMP ET
5182 , PJI_PMV_WT_DIM_TMP WT
5183 , PJI_FP_ORGO_ET_WT_F_MV fct
5184 , PJI_PMV_ORG_DIM_TMP HOU
5185 WHERE
5186 fct.org_id = hou.id
5187 AND FCT.ORGANIZATION_ID = HORG.ID
5188 AND FCT.TIME_ID = TIME.ID
5189 AND TIME.ID IS NOT NULL
5190 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5191 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5192 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5193 and fct.exp_evt_type_id = ET.id
5194 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5195 and fct.work_type_id = WT.id
5196 UNION ALL -- CURRENT Approved Budgets
5197 SELECT /*+ ORDERED */
5198 HOU.NAME AS ORG_ID
5199 , HORG.NAME AS ORGANIZATION_ID
5200 , '-1' AS PROJECT_CLASS_ID
5201 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5202 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5203 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5204 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5205 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5206 , 0 AS REVENUE
5207 , 0 AS BURDENED_COST
5208 , NULL AS FORECAST_REVENUE
5209 , NULL AS FORECAST_BURDENED_COST
5210 , 0 AS CT_REVENUE
5211 , 0 AS CT_BURDENED_COST
5212 , NULL AS CT_FORECAST_REVENUE
5213 , NULL AS CT_FORECAST_BURDENED_COST
5214 FROM
5215 PJI_PMV_TIME_DIM_TMP TIME
5216 , PJI_PMV_ORGZ_DIM_TMP HORG
5217 , PJI_PMV_ET_RT_DIM_TMP ET
5218 , PJI_PMV_WT_DIM_TMP WT
5219 , PJI_FP_ORGO_ET_WT_F_MV fct
5220 , PJI_PMV_ORG_DIM_TMP HOU
5221 WHERE
5222 fct.org_id = hou.id
5223 AND FCT.ORGANIZATION_ID = HORG.ID
5224 AND FCT.TIME_ID = TIME.ID
5225 AND TIME.ID IS NOT NULL
5226 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5227 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5228 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5229 and fct.exp_evt_type_id = ET.id
5230 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5231 and fct.work_type_id = WT.id
5232 and p_Time_Comparison_Type = 'BUDGET'
5233 UNION ALL -- PRIOR Actuals
5234 SELECT /*+ ORDERED */
5235 HOU.NAME AS ORG_ID
5236 , HORG.NAME AS ORGANIZATION_ID
5237 , '-1' AS PROJECT_CLASS_ID
5238 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5239 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5240 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5241 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5242 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5243 , 0 AS REVENUE
5244 , 0 AS BURDENED_COST
5245 , 0 AS FORECAST_REVENUE
5246 , 0 AS FORECAST_BURDENED_COST
5247 , null AS CT_REVENUE
5248 , DECODE(TIME.amount_type,1,
5249 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5250 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
5251 , NULL AS CT_FORECAST_REVENUE
5252 , NULL AS CT_FORECAST_BURDENED_COST
5253 FROM
5254 PJI_PMV_TCMP_DIM_TMP TIME
5255 , PJI_PMV_ORGZ_DIM_TMP HORG
5256 , PJI_PMV_ET_RT_DIM_TMP ET
5257 , PJI_PMV_WT_DIM_TMP WT
5258 , PJI_FP_ORGO_ET_WT_F_MV fct
5259 , PJI_PMV_ORG_DIM_TMP HOU
5260 WHERE
5261 fct.org_id = hou.id
5262 AND FCT.ORGANIZATION_ID = HORG.ID
5263 AND FCT.TIME_ID = TIME.ID
5264 AND TIME.ID IS NOT NULL
5265 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5266 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5267 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5268 and fct.exp_evt_type_id = ET.id
5269 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5270 and fct.work_type_id = WT.id
5271 and p_Time_Comparison_Type <> 'BUDGET'
5272 UNION ALL -- FORCE Creation of Org Rows
5273 SELECT HOU.NAME AS ORG_ID
5274 , '-1' AS ORGANIZATION_ID
5275 , '-1' AS PROJECT_CLASS_ID
5276 , '-1' AS EXPENDITURE_CATEGORY
5277 , '-1' AS EXPENDITURE_TYPE_ID
5278 , '-1' AS REVENUE_CATEGORY
5279 , '-1' AS REVENUE_TYPE_ID
5280 , '-1' AS WORK_TYPE_ID
5281 , 0 AS REVENUE
5282 , 0 AS BURDENED_COST
5283 , 0 AS FORECAST_REVENUE
5284 , 0 AS FORECAST_BURDENED_COST
5285 , 0 AS CT_REVENUE
5286 , 0 AS CT_BURDENED_COST
5287 , 0 AS CT_FORECAST_REVENUE
5288 , 0 AS CT_FORECAST_BURDENED_COST
5289 FROM PJI_PMV_ORG_DIM_TMP HOU
5290 WHERE HOU.NAME <> '-1'
5291 UNION ALL -- FORCE Creation of Organization Rows
5292 SELECT '-1' AS ORG_ID
5293 , HORG.NAME AS ORGANIZATION_ID
5294 , '-1' AS PROJECT_CLASS_ID
5295 , '-1' AS EXPENDITURE_CATEGORY
5296 , '-1' AS EXPENDITURE_TYPE_ID
5297 , '-1' AS REVENUE_CATEGORY
5298 , '-1' AS REVENUE_TYPE_ID
5299 , '-1' AS WORK_TYPE_ID
5300 , 0 AS REVENUE
5301 , 0 AS BURDENED_COST
5302 , NULL AS FORECAST_REVENUE
5303 , NULL AS FORECAST_BURDENED_COST
5304 , 0 AS CT_REVENUE
5305 , 0 AS CT_BURDENED_COST
5306 , 0 AS CT_FORECAST_REVENUE
5307 , 0 AS CT_FORECAST_BURDENED_COST
5308 FROM PJI_PMV_ORGZ_DIM_TMP HORG
5309 WHERE HORG.NAME <> '-1'
5310 UNION ALL -- FORCE Creation of Expenditure Category/Type Rows
5311 SELECT '-1' AS ORG_ID
5312 , '-1' AS ORGANIZATION_ID
5313 , '-1' AS PROJECT_CLASS_ID
5314 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5315 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5316 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5317 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5318 , '-1' AS WORK_TYPE_ID
5319 , 0 AS REVENUE
5320 , 0 AS BURDENED_COST
5321 , NULL AS FORECAST_REVENUE
5322 , NULL AS FORECAST_BURDENED_COST
5323 , 0 AS CT_REVENUE
5324 , 0 AS CT_BURDENED_COST
5325 , 0 AS CT_FORECAST_REVENUE
5326 , 0 AS CT_FORECAST_BURDENED_COST
5327 FROM PJI_PMV_ET_RT_DIM_TMP ET
5328 WHERE ET.NAME <> '-1'
5329 UNION ALL -- FORCE Creation of Work Type Rows
5330 SELECT '-1' AS ORG_ID
5331 , '-1' AS ORGANIZATION_ID
5332 , '-1' AS PROJECT_CLASS_ID
5333 , '-1' AS EXPENDITURE_CATEGORY
5334 , '-1' AS EXPENDITURE_TYPE_ID
5335 , '-1' AS REVENUE_CATEGORY
5336 , '-1' AS REVENUE_TYPE_ID
5337 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5338 , 0 AS REVENUE
5339 , 0 AS BURDENED_COST
5340 , NULL AS FORECAST_REVENUE
5341 , NULL AS FORECAST_BURDENED_COST
5342 , 0 AS CT_REVENUE
5343 , 0 AS CT_BURDENED_COST
5344 , 0 AS CT_FORECAST_REVENUE
5345 , 0 AS CT_FORECAST_BURDENED_COST
5346 FROM PJI_PMV_WT_DIM_TMP WT
5347 WHERE WT.NAME <> '-1'
5348
5349
5350 )
5351 WHERE 1 = 1
5352 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
5353 REVENUE_TYPE_ID, WORK_TYPE_ID;
5354
5355 /*
5356 ** Project classification and Work Type Processing -----------------------------------------------+
5357 */
5358
5359 /* ----------------------------------- Case 7 truth table ------------------------------------- */
5360
5361 ELSIF (l_Convert_Expenditure_Type = 'N')
5362 and (l_Convert_Event_Revenue_Type = 'N')
5363 THEN
5364
5365 SELECT PJI_REP_PPSUM(ORG_ID
5366 , ORGANIZATION_ID
5367 , PROJECT_CLASS_ID
5368 , EXPENDITURE_CATEGORY
5369 , EXPENDITURE_TYPE_ID
5370 , REVENUE_CATEGORY
5371 , REVENUE_TYPE_ID
5372 , WORK_TYPE_ID
5373 , SUM(REVENUE)
5374 , SUM(BURDENED_COST)
5375 , SUM(FORECAST_REVENUE)
5376 , SUM(FORECAST_BURDENED_COST)
5377 , SUM(CT_REVENUE)
5378 , SUM(CT_BURDENED_COST)
5379 , SUM(CT_FORECAST_REVENUE)
5380 , SUM(CT_FORECAST_BURDENED_COST)
5381 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5382 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5383 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5384 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5385 )
5386 BULK COLLECT INTO l_lines_tab
5387 FROM
5388 ( SELECT /*+ ORDERED */
5389 HOU.NAME AS ORG_ID
5390 , HORG.NAME AS ORGANIZATION_ID
5391 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5392 , '-1' AS EXPENDITURE_CATEGORY
5393 , '-1' AS EXPENDITURE_TYPE_ID
5394 , '-1' AS REVENUE_CATEGORY
5395 , '-1' AS REVENUE_TYPE_ID
5396 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5397 , null AS REVENUE
5398 , DECODE(TIME.amount_type,1,
5399 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5400 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
5401 , NULL AS FORECAST_REVENUE
5402 , NULL AS FORECAST_BURDENED_COST
5403 , 0 AS CT_REVENUE
5404 , 0 AS CT_BURDENED_COST
5405 , NULL AS CT_FORECAST_REVENUE
5406 , NULL AS CT_FORECAST_BURDENED_COST
5407 FROM
5408 PJI_PMV_TIME_DIM_TMP TIME
5409 , PJI_PMV_ORGZ_DIM_TMP HORG
5410 , PJI_PMV_CLS_DIM_TMP CLS
5411 , PJI_PMV_WT_DIM_TMP WT
5412 , PJI_FP_CLSO_ET_WT_F_MV fct
5413 , PJI_PMV_ORG_DIM_TMP HOU
5414 WHERE
5415 fct.project_org_id = hou.id
5416 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5417 AND FCT.TIME_ID = TIME.ID
5418 AND TIME.ID IS NOT NULL
5419 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5420 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5421 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5422 and fct.project_class_id = CLS.id
5423 and fct.work_type_id = WT.id
5424 UNION ALL -- CURRENT Approved Budgets
5425 SELECT /*+ ORDERED */
5426 HOU.NAME AS ORG_ID
5427 , HORG.NAME AS ORGANIZATION_ID
5428 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5429 , '-1' AS EXPENDITURE_CATEGORY
5430 , '-1' AS EXPENDITURE_TYPE_ID
5431 , '-1' AS REVENUE_CATEGORY
5432 , '-1' AS REVENUE_TYPE_ID
5433 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5434 , 0 AS REVENUE
5435 , 0 AS BURDENED_COST
5436 , NULL AS FORECAST_REVENUE
5437 , NULL AS FORECAST_BURDENED_COST
5438 , 0 AS CT_REVENUE
5439 , 0 AS CT_BURDENED_COST
5440 , NULL AS CT_FORECAST_REVENUE
5441 , NULL AS CT_FORECAST_BURDENED_COST
5442 FROM
5443 PJI_PMV_TIME_DIM_TMP TIME
5444 , PJI_PMV_ORGZ_DIM_TMP HORG
5445 , PJI_PMV_CLS_DIM_TMP CLS
5446 , PJI_PMV_WT_DIM_TMP WT
5447 , PJI_FP_CLSO_ET_WT_F_MV fct
5448 , PJI_PMV_ORG_DIM_TMP HOU
5449 WHERE
5450 fct.project_org_id = hou.id
5451 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5452 AND FCT.TIME_ID = TIME.ID
5453 AND TIME.ID IS NOT NULL
5454 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5455 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5456 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5457 and fct.project_class_id = CLS.id
5458 and fct.work_type_id = WT.id
5459 and p_Time_Comparison_Type = 'BUDGET'
5460 UNION ALL -- PRIOR Actuals
5461 SELECT /*+ ORDERED */
5462 HOU.NAME AS ORG_ID
5463 , HORG.NAME AS ORGANIZATION_ID
5464 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5465 , '-1' AS EXPENDITURE_CATEGORY
5466 , '-1' AS EXPENDITURE_TYPE_ID
5467 , '-1' AS REVENUE_CATEGORY
5468 , '-1' AS REVENUE_TYPE_ID
5469 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5470 , 0 AS REVENUE
5471 , 0 AS BURDENED_COST
5472 , 0 AS FORECAST_REVENUE
5473 , 0 AS FORECAST_BURDENED_COST
5474 , null AS CT_REVENUE
5475 , DECODE(TIME.amount_type,1,
5476 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5477 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
5478 , NULL AS CT_FORECAST_REVENUE
5479 , NULL AS CT_FORECAST_BURDENED_COST
5480 FROM
5481 PJI_PMV_TCMP_DIM_TMP TIME
5482 , PJI_PMV_ORGZ_DIM_TMP HORG
5483 , PJI_PMV_CLS_DIM_TMP CLS
5484 , PJI_PMV_WT_DIM_TMP WT
5485 , PJI_FP_CLSO_ET_WT_F_MV fct
5486 , PJI_PMV_ORG_DIM_TMP HOU
5487 WHERE
5488 fct.project_org_id = hou.id
5489 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5490 AND FCT.TIME_ID = TIME.ID
5491 AND TIME.ID IS NOT NULL
5492 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5493 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5494 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5495 and fct.project_class_id = CLS.id
5496 and fct.work_type_id = WT.id
5497 and p_Time_Comparison_Type <> 'BUDGET'
5498 UNION ALL -- FORCE Creation of Org Rows
5499 SELECT HOU.NAME AS ORG_ID
5500 , '-1' AS ORGANIZATION_ID
5501 , '-1' AS PROJECT_CLASS_ID
5502 , '-1' AS EXPENDITURE_CATEGORY
5503 , '-1' AS EXPENDITURE_TYPE_ID
5504 , '-1' AS REVENUE_CATEGORY
5505 , '-1' AS REVENUE_TYPE_ID
5506 , '-1' AS WORK_TYPE_ID
5507 , 0 AS REVENUE
5508 , 0 AS BURDENED_COST
5509 , 0 AS FORECAST_REVENUE
5510 , 0 AS FORECAST_BURDENED_COST
5511 , 0 AS CT_REVENUE
5512 , 0 AS CT_BURDENED_COST
5513 , 0 AS CT_FORECAST_REVENUE
5514 , 0 AS CT_FORECAST_BURDENED_COST
5515 FROM PJI_PMV_ORG_DIM_TMP HOU
5516 WHERE HOU.NAME <> '-1'
5517 UNION ALL -- FORCE Creation of Organization Rows
5518 SELECT '-1' AS ORG_ID
5519 , HORG.NAME AS ORGANIZATION_ID
5520 , '-1' AS PROJECT_CLASS_ID
5521 , '-1' AS EXPENDITURE_CATEGORY
5522 , '-1' AS EXPENDITURE_TYPE_ID
5523 , '-1' AS REVENUE_CATEGORY
5524 , '-1' AS REVENUE_TYPE_ID
5525 , '-1' AS WORK_TYPE_ID
5526 , 0 AS REVENUE
5527 , 0 AS BURDENED_COST
5528 , NULL AS FORECAST_REVENUE
5529 , NULL AS FORECAST_BURDENED_COST
5530 , 0 AS CT_REVENUE
5531 , 0 AS CT_BURDENED_COST
5532 , 0 AS CT_FORECAST_REVENUE
5533 , 0 AS CT_FORECAST_BURDENED_COST
5534 FROM PJI_PMV_ORGZ_DIM_TMP HORG
5535 WHERE HORG.NAME <> '-1'
5536 UNION ALL -- FORCE Creation of Class/Code Rows
5537 SELECT '-1' AS ORG_ID
5538 , '-1' AS ORGANIZATION_ID
5539 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5540 , '-1' AS EXPENDITURE_CATEGORY
5541 , '-1' AS EXPENDITURE_TYPE_ID
5542 , '-1' AS REVENUE_CATEGORY
5543 , '-1' AS REVENUE_TYPE_ID
5544 , '-1' AS WORK_TYPE_ID
5545 , 0 AS REVENUE
5546 , 0 AS BURDENED_COST
5547 , NULL AS FORECAST_REVENUE
5548 , NULL AS FORECAST_BURDENED_COST
5549 , 0 AS CT_REVENUE
5550 , 0 AS CT_BURDENED_COST
5551 , 0 AS CT_FORECAST_REVENUE
5552 , 0 AS CT_FORECAST_BURDENED_COST
5553 FROM PJI_PMV_CLS_DIM_TMP CLS
5554 WHERE CLS.NAME <> '-1'
5555 UNION ALL -- FORCE Creation of Work Type Rows
5556 SELECT '-1' AS ORG_ID
5557 , '-1' AS ORGANIZATION_ID
5558 , '-1' AS PROJECT_CLASS_ID
5559 , '-1' AS EXPENDITURE_CATEGORY
5560 , '-1' AS EXPENDITURE_TYPE_ID
5561 , '-1' AS REVENUE_CATEGORY
5562 , '-1' AS REVENUE_TYPE_ID
5563 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5564 , 0 AS REVENUE
5565 , 0 AS BURDENED_COST
5566 , NULL AS FORECAST_REVENUE
5567 , NULL AS FORECAST_BURDENED_COST
5568 , 0 AS CT_REVENUE
5569 , 0 AS CT_BURDENED_COST
5570 , 0 AS CT_FORECAST_REVENUE
5571 , 0 AS CT_FORECAST_BURDENED_COST
5572 FROM PJI_PMV_WT_DIM_TMP WT
5573 WHERE WT.NAME <> '-1'
5574
5575
5576 )
5577 WHERE 1 = 1
5578 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
5579 REVENUE_TYPE_ID, WORK_TYPE_ID;
5580
5581 /*
5582 ** Project classification and Expenditure or Revenue Type and Work Type Processing ----------------+
5583 */
5584
5585 /* ----------------------------------- Case 8 truth table ------------------------------------- */
5586
5587 ELSE
5588
5589 SELECT PJI_REP_PPSUM(ORG_ID
5590 , ORGANIZATION_ID
5591 , PROJECT_CLASS_ID
5592 , EXPENDITURE_CATEGORY
5593 , EXPENDITURE_TYPE_ID
5594 , REVENUE_CATEGORY
5595 , REVENUE_TYPE_ID
5596 , WORK_TYPE_ID
5597 , SUM(REVENUE)
5598 , SUM(BURDENED_COST)
5599 , SUM(FORECAST_REVENUE)
5600 , SUM(FORECAST_BURDENED_COST)
5601 , SUM(CT_REVENUE)
5602 , SUM(CT_BURDENED_COST)
5603 , SUM(CT_FORECAST_REVENUE)
5604 , SUM(CT_FORECAST_BURDENED_COST)
5605 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5606 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5607 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5608 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5609 )
5610 BULK COLLECT INTO l_lines_tab
5611 FROM
5612 ( SELECT /*+ ORDERED */
5613 HOU.NAME AS ORG_ID
5614 , HORG.NAME AS ORGANIZATION_ID
5615 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5616 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5617 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5618 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5619 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5620 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5621 , null AS REVENUE
5622 , DECODE(TIME.amount_type,1,
5623 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5624 'RC', fct.raw_cost, 0), 0) AS BURDENED_COST
5625 , NULL AS FORECAST_REVENUE
5626 , NULL AS FORECAST_BURDENED_COST
5627 , 0 AS CT_REVENUE
5628 , 0 AS CT_BURDENED_COST
5629 , NULL AS CT_FORECAST_REVENUE
5630 , NULL AS CT_FORECAST_BURDENED_COST
5631 FROM
5632 PJI_PMV_TIME_DIM_TMP TIME
5633 , PJI_PMV_ORGZ_DIM_TMP HORG
5634 , PJI_PMV_CLS_DIM_TMP CLS
5635 , PJI_PMV_ET_RT_DIM_TMP ET
5636 , PJI_PMV_WT_DIM_TMP WT
5637 , PJI_FP_CLSO_ET_WT_F_MV fct
5638 , PJI_PMV_ORG_DIM_TMP HOU
5639 WHERE
5640 fct.project_org_id = hou.id
5641 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5642 AND FCT.TIME_ID = TIME.ID
5643 AND TIME.ID IS NOT NULL
5644 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5645 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5646 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5647 and fct.project_class_id = CLS.id
5648 and fct.exp_evt_type_id = ET.id
5649 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5650 and fct.work_type_id = WT.id
5651 UNION ALL -- CURRENT Approved Budgets
5652 SELECT /*+ ORDERED */
5653 HOU.NAME AS ORG_ID
5654 , HORG.NAME AS ORGANIZATION_ID
5655 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5656 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5657 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5658 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5659 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5660 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5661 , 0 AS REVENUE
5662 , 0 AS BURDENED_COST
5663 , NULL AS FORECAST_REVENUE
5664 , NULL AS FORECAST_BURDENED_COST
5665 , 0 AS CT_REVENUE
5666 , 0 AS CT_BURDENED_COST
5667 , NULL AS CT_FORECAST_REVENUE
5668 , NULL AS CT_FORECAST_BURDENED_COST
5669 FROM
5670 PJI_PMV_TIME_DIM_TMP TIME
5671 , PJI_PMV_ORGZ_DIM_TMP HORG
5672 , PJI_PMV_CLS_DIM_TMP CLS
5673 , PJI_PMV_ET_RT_DIM_TMP ET
5674 , PJI_PMV_WT_DIM_TMP WT
5675 , PJI_FP_CLSO_ET_WT_F_MV fct
5676 , PJI_PMV_ORG_DIM_TMP HOU
5677 WHERE
5678 fct.project_org_id = hou.id
5679 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5680 AND FCT.TIME_ID = TIME.ID
5681 AND TIME.ID IS NOT NULL
5682 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5683 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5684 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5685 and fct.project_class_id = CLS.id
5686 and fct.exp_evt_type_id = ET.id
5687 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5688 and fct.work_type_id = WT.id
5689 and p_Time_Comparison_Type = 'BUDGET'
5690 UNION ALL -- PRIOR Actuals
5691 SELECT /*+ ORDERED */
5692 HOU.NAME AS ORG_ID
5693 , HORG.NAME AS ORGANIZATION_ID
5694 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5695 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5696 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5697 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5698 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5699 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5700 , 0 AS REVENUE
5701 , 0 AS BURDENED_COST
5702 , 0 AS FORECAST_REVENUE
5703 , 0 AS FORECAST_BURDENED_COST
5704 , null AS CT_REVENUE
5705 , DECODE(TIME.amount_type,1,
5706 DECODE(G_Report_Cost_Type, 'BC', fct.burdened_cost,
5707 'RC', fct.raw_cost, 0), 0) AS CT_BURDENED_COST
5708 , NULL AS CT_FORECAST_REVENUE
5709 , NULL AS CT_FORECAST_BURDENED_COST
5710 FROM
5711 PJI_PMV_TCMP_DIM_TMP TIME
5712 , PJI_PMV_ORGZ_DIM_TMP HORG
5713 , PJI_PMV_CLS_DIM_TMP CLS
5714 , PJI_PMV_ET_RT_DIM_TMP ET
5715 , PJI_PMV_WT_DIM_TMP WT
5716 , PJI_FP_CLSO_ET_WT_F_MV fct
5717 , PJI_PMV_ORG_DIM_TMP HOU
5718 WHERE
5719 fct.project_org_id = hou.id
5720 AND FCT.PROJECT_ORGANIZATION_ID = HORG.ID
5721 AND FCT.TIME_ID = TIME.ID
5722 AND TIME.ID IS NOT NULL
5723 AND FCT.PERIOD_TYPE_ID = TIME.PERIOD_TYPE
5724 AND FCT.CALENDAR_TYPE = TIME.CALENDAR_TYPE
5725 AND bitand(fct.curr_record_type_id, l_curr_record_type_id) = l_curr_record_type_id
5726 and fct.project_class_id = CLS.id
5727 and fct.exp_evt_type_id = ET.id
5728 and ET.record_type = decode(l_Convert_Expenditure_Type,'Y','ET',l_Convert_Event_Revenue_Type,'Y','RT')
5729 and fct.work_type_id = WT.id
5730 and p_Time_Comparison_Type <> 'BUDGET'
5731 UNION ALL -- FORCE Creation of Org Rows
5732 SELECT HOU.NAME AS ORG_ID
5733 , '-1' AS ORGANIZATION_ID
5734 , '-1' AS PROJECT_CLASS_ID
5735 , '-1' AS EXPENDITURE_CATEGORY
5736 , '-1' AS EXPENDITURE_TYPE_ID
5737 , '-1' AS REVENUE_CATEGORY
5738 , '-1' AS REVENUE_TYPE_ID
5739 , '-1' AS WORK_TYPE_ID
5740 , 0 AS REVENUE
5741 , 0 AS BURDENED_COST
5742 , 0 AS FORECAST_REVENUE
5743 , 0 AS FORECAST_BURDENED_COST
5744 , 0 AS CT_REVENUE
5745 , 0 AS CT_BURDENED_COST
5746 , 0 AS CT_FORECAST_REVENUE
5747 , 0 AS CT_FORECAST_BURDENED_COST
5748 FROM PJI_PMV_ORG_DIM_TMP HOU
5749 WHERE HOU.NAME <> '-1'
5750 UNION ALL -- FORCE Creation of Organization Rows
5751 SELECT '-1' AS ORG_ID
5752 , HORG.NAME AS ORGANIZATION_ID
5753 , '-1' AS PROJECT_CLASS_ID
5754 , '-1' AS EXPENDITURE_CATEGORY
5755 , '-1' AS EXPENDITURE_TYPE_ID
5756 , '-1' AS REVENUE_CATEGORY
5757 , '-1' AS REVENUE_TYPE_ID
5758 , '-1' AS WORK_TYPE_ID
5759 , 0 AS REVENUE
5760 , 0 AS BURDENED_COST
5761 , NULL AS FORECAST_REVENUE
5762 , NULL AS FORECAST_BURDENED_COST
5763 , 0 AS CT_REVENUE
5764 , 0 AS CT_BURDENED_COST
5765 , 0 AS CT_FORECAST_REVENUE
5766 , 0 AS CT_FORECAST_BURDENED_COST
5767 FROM PJI_PMV_ORGZ_DIM_TMP HORG
5768 WHERE HORG.NAME <> '-1'
5769 UNION ALL -- FORCE Creation of Class/Code Rows
5770 SELECT '-1' AS ORG_ID
5771 , '-1' AS ORGANIZATION_ID
5772 , decode(p_view_by, 'CC', CLS.name, '-1') AS PROJECT_CLASS_ID
5773 , '-1' AS EXPENDITURE_CATEGORY
5774 , '-1' AS EXPENDITURE_TYPE_ID
5775 , '-1' AS REVENUE_CATEGORY
5776 , '-1' AS REVENUE_TYPE_ID
5777 , '-1' AS WORK_TYPE_ID
5778 , 0 AS REVENUE
5779 , 0 AS BURDENED_COST
5780 , NULL AS FORECAST_REVENUE
5781 , NULL AS FORECAST_BURDENED_COST
5782 , 0 AS CT_REVENUE
5783 , 0 AS CT_BURDENED_COST
5784 , 0 AS CT_FORECAST_REVENUE
5785 , 0 AS CT_FORECAST_BURDENED_COST
5786 FROM PJI_PMV_CLS_DIM_TMP CLS
5787 WHERE CLS.NAME <> '-1'
5788 UNION ALL -- FORCE Creation of Expenditure Category/Type Rows
5789 SELECT '-1' AS ORG_ID
5790 , '-1' AS ORGANIZATION_ID
5791 , '-1' AS PROJECT_CLASS_ID
5792 , decode(p_view_by, 'EC', ET.name, '-1') AS EXPENDITURE_CATEGORY
5793 , decode(p_view_by, 'ET', ET.name, '-1') AS EXPENDITURE_TYPE_ID
5794 , decode(p_view_by, 'RC', ET.name, '-1') AS REVENUE_CATEGORY
5795 , decode(p_view_by, 'RT', ET.name, '-1') AS REVENUE_TYPE_ID
5796 , '-1' AS WORK_TYPE_ID
5797 , 0 AS REVENUE
5798 , 0 AS BURDENED_COST
5799 , NULL AS FORECAST_REVENUE
5800 , NULL AS FORECAST_BURDENED_COST
5801 , 0 AS CT_REVENUE
5802 , 0 AS CT_BURDENED_COST
5803 , 0 AS CT_FORECAST_REVENUE
5804 , 0 AS CT_FORECAST_BURDENED_COST
5805 FROM PJI_PMV_ET_RT_DIM_TMP ET
5806 WHERE ET.NAME <> '-1'
5807 UNION ALL -- FORCE Creation of Work Type Rows
5808 SELECT '-1' AS ORG_ID
5809 , '-1' AS ORGANIZATION_ID
5810 , '-1' AS PROJECT_CLASS_ID
5811 , '-1' AS EXPENDITURE_CATEGORY
5812 , '-1' AS EXPENDITURE_TYPE_ID
5813 , '-1' AS REVENUE_CATEGORY
5814 , '-1' AS REVENUE_TYPE_ID
5815 , decode(p_view_by, 'WT', WT.name, '-1') AS WORK_TYPE_ID
5816 , 0 AS REVENUE
5817 , 0 AS BURDENED_COST
5818 , NULL AS FORECAST_REVENUE
5819 , NULL AS FORECAST_BURDENED_COST
5820 , 0 AS CT_REVENUE
5821 , 0 AS CT_BURDENED_COST
5822 , 0 AS CT_FORECAST_REVENUE
5823 , 0 AS CT_FORECAST_BURDENED_COST
5824 FROM PJI_PMV_WT_DIM_TMP WT
5825 WHERE WT.NAME <> '-1'
5826
5827
5828 )
5829 WHERE 1 = 1
5830 GROUP BY ORG_ID, ORGANIZATION_ID, PROJECT_CLASS_ID, EXPENDITURE_CATEGORY,EXPENDITURE_TYPE_ID,REVENUE_CATEGORY,
5831 REVENUE_TYPE_ID, WORK_TYPE_ID;
5832
5833 END IF;-- p_Class_Codes_Ids NOT Passed by User
5834
5835 FOR i in 1..l_lines_tab.COUNT
5836 LOOP
5837
5838 IF p_View_By = 'OG' THEN
5839 IF l_lines_tab(i).ORGANIZATION_ID = l_Top_Organization_Name THEN
5840 l_Top_Org_Index:=i;
5841
5842 /*
5843 ** Storing the total values at top org level.
5844 */
5845 l_TO_Total_Revenue :=l_lines_tab(i).REVENUE;
5846 l_TO_Total_Cost :=l_lines_tab(i).BURDENED_COST;
5847 l_TO_Total_Forecast_Revenue :=l_lines_tab(i).FORECAST_REVENUE;
5848 l_TO_Total_Forecast_Cost :=l_lines_tab(i).FORECAST_BURDENED_COST;
5849
5850 l_TO_CT_Total_Revenue :=l_lines_tab(i).CT_REVENUE;
5851 l_TO_CT_Total_Cost :=l_lines_tab(i).CT_BURDENED_COST;
5852 l_TO_CT_Total_Forecast_Revenue :=l_lines_tab(i).CT_FORECAST_REVENUE;
5853 l_TO_CT_Total_Forecast_Cost :=l_lines_tab(i).CT_FORECAST_BURDENED_COST;
5854 ELSE
5855 l_Total_Revenue :=l_Total_Revenue
5856 + NVL(l_lines_tab(i).REVENUE,0);
5857 l_Total_Cost :=l_Total_Cost
5858 + NVL(l_lines_tab(i).BURDENED_COST,0);
5859 l_Total_Forecast_Revenue:=l_Total_Forecast_Revenue
5860 + NVL(l_lines_tab(i).FORECAST_REVENUE,0);
5861 l_Total_Forecast_Cost :=l_Total_Forecast_Cost
5862 + NVL(l_lines_tab(i).FORECAST_BURDENED_COST,0);
5863 l_CT_Total_Revenue :=l_CT_Total_Revenue
5864 + NVL(l_lines_tab(i).CT_REVENUE,0);
5865 l_CT_Total_Cost :=l_CT_Total_Cost
5866 + NVL(l_lines_tab(i).CT_BURDENED_COST,0);
5867 l_CT_Total_Forecast_Revenue :=l_CT_Total_Forecast_Revenue
5868 + NVL(l_lines_tab(i).CT_FORECAST_REVENUE,0);
5869 l_CT_Total_Forecast_Cost:=l_CT_Total_Forecast_Cost
5870 + NVL(l_lines_tab(i).CT_FORECAST_BURDENED_COST,0);
5871 END IF;
5872 ELSE
5873 l_Total_Revenue :=l_Total_Revenue
5874 + NVL(l_lines_tab(i).REVENUE,0);
5875 l_Total_Cost :=l_Total_Cost
5876 + NVL(l_lines_tab(i).BURDENED_COST,0);
5877 l_Total_Forecast_Revenue:=l_Total_Forecast_Revenue
5878 + NVL(l_lines_tab(i).FORECAST_REVENUE,0);
5879 l_Total_Forecast_Cost :=l_Total_Forecast_Cost
5880 + NVL(l_lines_tab(i).FORECAST_BURDENED_COST,0);
5881 l_CT_Total_Revenue :=l_CT_Total_Revenue
5882 + NVL(l_lines_tab(i).CT_REVENUE,0);
5883 l_CT_Total_Cost :=l_CT_Total_Cost
5884 + NVL(l_lines_tab(i).CT_BURDENED_COST,0);
5885 l_CT_Total_Forecast_Revenue :=l_CT_Total_Forecast_Revenue
5886 + NVL(l_lines_tab(i).CT_FORECAST_REVENUE,0);
5887 l_CT_Total_Forecast_Cost:=l_CT_Total_Forecast_Cost
5888 + NVL(l_lines_tab(i).CT_FORECAST_BURDENED_COST,0);
5889 END IF;
5890
5891 l_lines_tab(i).MARGIN := l_lines_tab(i).REVENUE
5892 - l_lines_tab(i).BURDENED_COST;
5893 l_lines_tab(i).CT_MARGIN := l_lines_tab(i).CT_REVENUE
5894 - l_lines_tab(i).CT_BURDENED_COST;
5895 l_lines_tab(i).FCST_MARGIN := l_lines_tab(i).FORECAST_REVENUE
5896 - l_lines_tab(i).FORECAST_BURDENED_COST;
5897 l_lines_tab(i).FCST_CT_MARGIN := l_lines_tab(i).CT_FORECAST_REVENUE
5898 - l_lines_tab(i).CT_FORECAST_BURDENED_COST;
5899
5900
5901 IF NVL(l_lines_tab(i).REVENUE, 0) <> 0 THEN
5902 l_lines_tab(i).MARGIN_PERCENT := 100 * (l_lines_tab(i).MARGIN
5903 / ABS( l_lines_tab(i).REVENUE));
5904 ELSE
5905 l_lines_tab(i).MARGIN_PERCENT := NULL;
5906 END IF;
5907
5908
5909 IF NVL(l_lines_tab(i).CT_REVENUE, 0) <> 0 THEN
5910 l_lines_tab(i).CT_MARGIN_PERCENT := 100 * (l_lines_tab(i).CT_MARGIN
5911 / ABS( l_lines_tab(i).CT_REVENUE));
5912 l_lines_tab(i).REV_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).REVENUE
5913 - l_lines_tab(i).CT_REVENUE)
5914 / ABS( l_lines_tab(i).CT_REVENUE));
5915 ELSE
5916 l_lines_tab(i).CT_MARGIN_PERCENT := NULL;
5917 l_lines_tab(i).REV_CHANGE_PERCENT := NULL;
5918 END IF;
5919
5920 IF NVL(l_lines_tab(i).CT_BURDENED_COST, 0) <> 0 THEN
5921 l_lines_tab(i).CST_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).BURDENED_COST
5922 - l_lines_tab(i).CT_BURDENED_COST)
5923 / ABS( l_lines_tab(i).CT_BURDENED_COST));
5924 ELSE
5925 l_lines_tab(i).CST_CHANGE_PERCENT := NULL;
5926 END IF;
5927
5928 IF NVL(l_lines_tab(i).CT_MARGIN, 0) <> 0 THEN
5929 l_lines_tab(i).MAR_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).MARGIN
5930 - l_lines_tab(i).CT_MARGIN)
5931 / ABS( l_lines_tab(i).CT_MARGIN));
5932 ELSE
5933 l_lines_tab(i).MAR_CHANGE_PERCENT := NULL;
5934 END IF;
5935
5936
5937 IF NVL(l_lines_tab(i).FORECAST_REVENUE, 0) <> 0 THEN
5938 l_lines_tab(i).FCST_MARGIN_PERCENT := 100 * (l_lines_tab(i).FCST_MARGIN
5939 / ABS( l_lines_tab(i).FORECAST_REVENUE));
5940 ELSE
5941 l_lines_tab(i).FCST_MARGIN_PERCENT := NULL;
5942 END IF;
5943
5944 IF NVL(l_lines_tab(i).CT_FORECAST_REVENUE, 0) <> 0 THEN
5945 l_lines_tab(i).FCST_CT_MARGIN_PERCENT := 100 * (l_lines_tab(i).FCST_CT_MARGIN
5946 / ABS( l_lines_tab(i).CT_FORECAST_REVENUE));
5947 l_lines_tab(i).FCST_REV_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).FORECAST_REVENUE
5948 - l_lines_tab(i).CT_FORECAST_REVENUE)
5949 / ABS( l_lines_tab(i).CT_FORECAST_REVENUE));
5950 ELSE
5951 l_lines_tab(i).FCST_CT_MARGIN_PERCENT := NULL;
5952 l_lines_tab(i).FCST_REV_CHANGE_PERCENT := NULL;
5953 END IF;
5954
5955 IF NVL(l_lines_tab(i).CT_FORECAST_BURDENED_COST, 0) <> 0 THEN
5956 l_lines_tab(i).FCST_CST_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).FORECAST_BURDENED_COST
5957 - l_lines_tab(i).CT_FORECAST_BURDENED_COST)
5958 / ABS( l_lines_tab(i).CT_FORECAST_BURDENED_COST));
5959 ELSE
5960 l_lines_tab(i).FCST_CST_CHANGE_PERCENT := NULL;
5961 END IF;
5962
5963 IF NVL(l_lines_tab(i).FCST_CT_MARGIN, 0) <> 0 THEN
5964 l_lines_tab(i).FCST_MAR_CHANGE_PERCENT := 100 * ( (l_lines_tab(i).FCST_MARGIN
5965 - l_lines_tab(i).FCST_CT_MARGIN)
5966 / ABS( l_lines_tab(i).FCST_CT_MARGIN));
5967 ELSE
5968 l_lines_tab(i).FCST_MAR_CHANGE_PERCENT := NULL;
5969 END IF;
5970
5971 l_lines_tab(i).MAR_PERCENT_CHANGE := l_lines_tab(i).MARGIN_PERCENT
5972 - l_lines_tab(i).CT_MARGIN_PERCENT;
5973 l_lines_tab(i).FCST_MAR_PERCENT_CHANGE := l_lines_tab(i).FCST_MARGIN_PERCENT
5974 - l_lines_tab(i).FCST_CT_MARGIN_PERCENT;
5975 END LOOP;
5976
5977
5978 IF p_View_By = 'OG' THEN
5979 l_lines_tab(l_Top_Org_Index).REVENUE
5980 :=NVL(l_lines_tab(l_Top_Org_Index).REVENUE,0)-l_Total_Revenue;
5981 l_lines_tab(l_Top_Org_Index).BURDENED_COST
5982 :=NVL(l_lines_tab(l_Top_Org_Index).BURDENED_COST,0)-l_Total_Cost;
5983 l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE
5984 :=NVL(l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE,0)-l_Total_Forecast_Revenue;
5985 l_lines_tab(l_Top_Org_Index).FORECAST_BURDENED_COST
5986 :=NVL(l_lines_tab(l_Top_Org_Index).FORECAST_BURDENED_COST,0)-l_Total_Forecast_Cost;
5987 l_lines_tab(l_Top_Org_Index).CT_REVENUE
5988 :=NVL(l_lines_tab(l_Top_Org_Index).CT_REVENUE,0)-l_CT_Total_Revenue;
5989 l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST
5990 :=NVL(l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST,0)-l_CT_Total_Cost;
5991 l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE
5992 :=NVL(l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE,0)-l_CT_Total_Forecast_Revenue;
5993 l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST
5994 :=NVL(l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST,0)-l_CT_Total_Forecast_Cost;
5995
5996 l_lines_tab(l_Top_Org_Index).MARGIN := l_lines_tab(l_Top_Org_Index).REVENUE
5997 - l_lines_tab(l_Top_Org_Index).BURDENED_COST;
5998 l_lines_tab(l_Top_Org_Index).CT_MARGIN := l_lines_tab(l_Top_Org_Index).CT_REVENUE
5999 - l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST;
6000
6001 l_lines_tab(l_Top_Org_Index).FCST_MARGIN := l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE
6002 - l_lines_tab(l_Top_Org_Index).FORECAST_BURDENED_COST;
6003 l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN := l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE
6004 - l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST;
6005
6006 IF NVL(l_lines_tab(l_Top_Org_Index).REVENUE, 0) <> 0 THEN
6007 l_lines_tab(l_Top_Org_Index).MARGIN_PERCENT := 100*(l_lines_tab(l_Top_Org_Index).MARGIN
6008 / ABS( l_lines_tab(l_Top_Org_Index).REVENUE));
6009 ELSE
6010 l_lines_tab(l_Top_Org_Index).MARGIN_PERCENT := NULL;
6011 END IF;
6012
6013 IF NVL(l_lines_tab(l_Top_Org_Index).CT_REVENUE, 0) <> 0 THEN
6014 l_lines_tab(l_Top_Org_Index).CT_MARGIN_PERCENT := 100*(l_lines_tab(l_Top_Org_Index).CT_MARGIN
6015 / ABS( l_lines_tab(l_Top_Org_Index).CT_REVENUE));
6016 l_lines_tab(l_Top_Org_Index).REV_CHANGE_PERCENT := 100*((l_lines_tab(l_Top_Org_Index).REVENUE
6017 - l_lines_tab(l_Top_Org_Index).CT_REVENUE)/ABS( l_lines_tab(l_Top_Org_Index).CT_REVENUE));
6018 ELSE
6019 l_lines_tab(l_Top_Org_Index).CT_MARGIN_PERCENT := NULL;
6020 l_lines_tab(l_Top_Org_Index).REV_CHANGE_PERCENT := NULL;
6021 END IF;
6022
6023 IF NVL(l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST, 0) <> 0 THEN
6024 l_lines_tab(l_Top_Org_Index).CST_CHANGE_PERCENT := 100*((l_lines_tab(l_Top_Org_Index).BURDENED_COST
6025 - l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST)/ABS(
6026
6027 l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST));
6028 ELSE
6029 l_lines_tab(l_Top_Org_Index).CST_CHANGE_PERCENT := NULL;
6030 END IF;
6031
6032 IF NVL(l_lines_tab(l_Top_Org_Index).CT_MARGIN, 0) <> 0 THEN
6033 l_lines_tab(l_Top_Org_Index).MAR_CHANGE_PERCENT := 100*((l_lines_tab(l_Top_Org_Index).MARGIN
6034 - l_lines_tab(l_Top_Org_Index).CT_MARGIN)/ABS( l_lines_tab(l_Top_Org_Index).CT_MARGIN));
6035 ELSE
6036 l_lines_tab(l_Top_Org_Index).MAR_CHANGE_PERCENT := NULL;
6037 END IF;
6038
6039 IF NVL(l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE, 0) <> 0 THEN
6040 l_lines_tab(l_Top_Org_Index).FCST_MARGIN_PERCENT := 100*(l_lines_tab(l_Top_Org_Index).FCST_MARGIN
6041 / ABS( l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE));
6042 ELSE
6043 l_lines_tab(l_Top_Org_Index).FCST_MARGIN_PERCENT := NULL;
6044 END IF;
6045
6046 IF NVL(l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE, 0) <> 0 THEN
6047 l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN_PERCENT :=
6048
6049 100*(l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN
6050 / ABS( l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE));
6051 l_lines_tab(l_Top_Org_Index).FCST_REV_CHANGE_PERCENT :=
6052
6053 100*((l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE
6054 - l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE)/ABS(
6055
6056 l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE));
6057 ELSE
6058 l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN_PERCENT := NULL;
6059 l_lines_tab(l_Top_Org_Index).FCST_REV_CHANGE_PERCENT := NULL;
6060 END IF;
6061
6062 IF NVL(l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST, 0) <> 0 THEN
6063 l_lines_tab(l_Top_Org_Index).FCST_CST_CHANGE_PERCENT :=
6064
6065 100*((l_lines_tab(l_Top_Org_Index).FORECAST_BURDENED_COST
6066 - l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST)/ABS(
6067
6068 l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST));
6069 ELSE
6070 l_lines_tab(l_Top_Org_Index).FCST_CST_CHANGE_PERCENT := NULL;
6071 END IF;
6072
6073 IF NVL(l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN, 0) <> 0 THEN
6074 l_lines_tab(l_Top_Org_Index).FCST_MAR_CHANGE_PERCENT :=
6075
6076 100*((l_lines_tab(l_Top_Org_Index).FCST_MARGIN
6077 - l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN)/ABS(
6078
6079 l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN));
6080 ELSE
6081 l_lines_tab(l_Top_Org_Index).FCST_MAR_CHANGE_PERCENT := NULL;
6082 END IF;
6083
6084 l_lines_tab(l_Top_Org_Index).MAR_PERCENT_CHANGE := l_lines_tab(l_Top_Org_Index).MARGIN_PERCENT
6085 - l_lines_tab(l_Top_Org_Index).CT_MARGIN_PERCENT;
6086 l_lines_tab(l_Top_Org_Index).FCST_MAR_PERCENT_CHANGE := l_lines_tab(l_Top_Org_Index).FCST_MARGIN_PERCENT
6087 - l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN_PERCENT;
6088
6089 IF NVL( l_lines_tab(l_Top_Org_Index).REVENUE, 0 ) = 0
6090 AND NVL( l_lines_tab(l_Top_Org_Index).BURDENED_COST, 0 ) = 0
6091 AND NVL( l_lines_tab(l_Top_Org_Index).FORECAST_REVENUE, 0 ) = 0
6092 AND NVL( l_lines_tab(l_Top_Org_Index).FORECAST_BURDENED_COST, 0 ) = 0
6093 AND NVL( l_lines_tab(l_Top_Org_Index).CT_REVENUE, 0 ) = 0
6094 AND NVL( l_lines_tab(l_Top_Org_Index).CT_BURDENED_COST, 0 ) = 0
6095 AND NVL( l_lines_tab(l_Top_Org_Index).CT_FORECAST_REVENUE, 0 ) = 0
6096 AND NVL( l_lines_tab(l_Top_Org_Index).CT_FORECAST_BURDENED_COST, 0 ) = 0
6097 AND NVL( l_lines_tab(l_Top_Org_Index).MARGIN, 0 ) = 0
6098 AND NVL( l_lines_tab(l_Top_Org_Index).CT_MARGIN, 0 ) = 0
6099 AND NVL( l_lines_tab(l_Top_Org_Index).MARGIN_PERCENT, 0 ) = 0
6100 AND NVL( l_lines_tab(l_Top_Org_Index).CT_MARGIN_PERCENT, 0 ) = 0
6101 AND NVL( l_lines_tab(l_Top_Org_Index).CST_CHANGE_PERCENT, 0 ) = 0
6102 AND NVL( l_lines_tab(l_Top_Org_Index).REV_CHANGE_PERCENT, 0 ) = 0
6103 AND NVL( l_lines_tab(l_Top_Org_Index).MAR_CHANGE_PERCENT, 0 ) = 0
6104 AND NVL( l_lines_tab(l_Top_Org_Index).MAR_PERCENT_CHANGE, 0 ) = 0
6105 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_MARGIN, 0 ) = 0
6106 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN, 0 ) = 0
6107 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_MARGIN_PERCENT, 0 ) = 0
6108 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_CT_MARGIN_PERCENT, 0 ) = 0
6109 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_CST_CHANGE_PERCENT, 0 ) = 0
6110 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_REV_CHANGE_PERCENT, 0 ) = 0
6111 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_MAR_CHANGE_PERCENT, 0 ) = 0
6112 AND NVL( l_lines_tab(l_Top_Org_Index).FCST_MAR_PERCENT_CHANGE, 0 ) = 0
6113 THEN
6114 l_lines_tab.DELETE(l_Top_Org_Index);
6115 END IF;
6116 l_Total_Revenue:=l_TO_Total_Revenue;
6117 l_Total_Cost:=l_TO_Total_Cost;
6118 l_Total_Forecast_Revenue:=l_TO_Total_Forecast_Revenue;
6119 l_Total_Forecast_Cost:=l_TO_Total_Forecast_Cost;
6120 l_CT_Total_Revenue:=l_TO_CT_Total_Revenue;
6121 l_CT_Total_Cost:=l_TO_CT_Total_Cost;
6122 l_CT_Total_Forecast_Revenue:=l_TO_CT_Total_Forecast_Revenue;
6123 l_CT_Total_Forecast_Cost:=l_TO_CT_Total_Forecast_Cost;
6124 END IF;
6125
6126 IF l_lines_tab.COUNT > 0 THEN
6127 FOR i in l_lines_tab.FIRST..l_lines_tab.LAST
6128 LOOP
6129 IF l_lines_tab.EXISTS(i) THEN
6130 l_lines_tab(i).PJI_REP_TOTAL_1:=l_Total_Revenue;
6131 l_lines_tab(i).PJI_REP_TOTAL_2:=l_Total_Cost;
6132 l_lines_tab(i).PJI_REP_TOTAL_3:=l_Total_Forecast_Revenue;
6133 l_lines_tab(i).PJI_REP_TOTAL_4:=l_Total_Forecast_Cost;
6134 l_lines_tab(i).PJI_REP_TOTAL_5:=l_CT_Total_Revenue;
6135 l_lines_tab(i).PJI_REP_TOTAL_6:=l_CT_Total_Cost;
6136 l_lines_tab(i).PJI_REP_TOTAL_7:=l_CT_Total_Forecast_Revenue;
6137 l_lines_tab(i).PJI_REP_TOTAL_8:=l_CT_Total_Forecast_Cost;
6138
6139 /* Actual Amount */
6140 l_lines_tab(i).PJI_REP_TOTAL_9:=l_Total_Revenue-l_Total_Cost; -- Total Margin
6141 l_lines_tab(i).PJI_REP_TOTAL_10:=l_CT_Total_Revenue-l_CT_Total_Cost; -- Total CT Margin
6142
6143 IF NVL(l_Total_Revenue, 0) <> 0 THEN
6144 l_lines_tab(i).PJI_REP_TOTAL_11:=100*((l_Total_Revenue-l_Total_Cost)/ABS( l_Total_Revenue));
6145
6146 -- Margin %
6147 ELSE
6148 l_lines_tab(i).PJI_REP_TOTAL_11:=NULL;
6149 END IF;
6150
6151 IF NVL(l_CT_Total_Revenue, 0) <> 0 THEN
6152 l_lines_tab(i).PJI_REP_TOTAL_12:=100*((l_CT_Total_Revenue-l_CT_Total_Cost)/ABS(
6153
6154 l_CT_Total_Revenue)); -- CT Margin %
6155 l_lines_tab(i).PJI_REP_TOTAL_14:=100*((l_Total_Revenue-l_CT_Total_Revenue)/ABS(
6156
6157 l_CT_Total_Revenue)); -- Revenue Change %
6158 ELSE
6159 l_lines_tab(i).PJI_REP_TOTAL_12:=NULL;
6160 l_lines_tab(i).PJI_REP_TOTAL_14:=NULL;
6161 END IF;
6162
6163 IF NVL(l_CT_Total_Cost, 0) <> 0 THEN
6164 l_lines_tab(i).PJI_REP_TOTAL_13:=100*((l_Total_Cost-l_CT_Total_Cost)/ABS( l_CT_Total_Cost));
6165
6166 -- Cost Change %
6167 ELSE
6168 l_lines_tab(i).PJI_REP_TOTAL_13:=NULL;
6169 END IF;
6170
6171 IF NVL(l_lines_tab(i).PJI_REP_TOTAL_10, 0) <> 0 THEN
6172
6173
6174 l_lines_tab(i).PJI_REP_TOTAL_15:=100*((l_lines_tab(i).PJI_REP_TOTAL_9-l_lines_tab(i).PJI_REP_TOTAL_10)
6175 /ABS( l_lines_tab(i).PJI_REP_TOTAL_10)); -- Margin Change %
6176 ELSE
6177 l_lines_tab(i).PJI_REP_TOTAL_15:=NULL;
6178 END IF;
6179
6180 l_lines_tab(i).PJI_REP_TOTAL_16:=l_lines_tab(i).PJI_REP_TOTAL_11-l_lines_tab(i).PJI_REP_TOTAL_12;
6181
6182 -- Margin % Change
6183
6184 /* Forecast Amount */
6185 l_lines_tab(i).PJI_REP_TOTAL_17:=l_Total_Forecast_Revenue-l_Total_Forecast_Cost; -- Total Margin
6186 l_lines_tab(i).PJI_REP_TOTAL_18:=l_CT_Total_Forecast_Revenue-l_CT_Total_Forecast_Cost; -- Total CT Margin
6187
6188 IF NVL(l_Total_Forecast_Revenue, 0) <> 0 THEN
6189 l_lines_tab(i).PJI_REP_TOTAL_19:=100*((l_Total_Forecast_Revenue-l_Total_Forecast_Cost)/ABS(
6190
6191 l_Total_Forecast_Revenue)); -- Margin %
6192 ELSE
6193 l_lines_tab(i).PJI_REP_TOTAL_19:=NULL;
6194 END IF;
6195
6196 IF NVL(l_CT_Total_Forecast_Revenue, 0) <> 0 THEN
6197
6198
6199 l_lines_tab(i).PJI_REP_TOTAL_20:=100*((l_CT_Total_Forecast_Revenue-l_CT_Total_Forecast_Cost)/ABS(
6200
6201 l_CT_Total_Forecast_Revenue)); -- CT Margin %
6202
6203
6204 l_lines_tab(i).PJI_REP_TOTAL_22:=100*((l_Total_Forecast_Revenue-l_CT_Total_Forecast_Revenue)/ABS(
6205
6206 l_CT_Total_Forecast_Revenue)); -- Revenue Change %
6207 ELSE
6208 l_lines_tab(i).PJI_REP_TOTAL_20:=NULL;
6209 l_lines_tab(i).PJI_REP_TOTAL_22:=NULL;
6210 END IF;
6211
6212 IF NVL(l_CT_Total_Forecast_Cost, 0) <> 0 THEN
6213 l_lines_tab(i).PJI_REP_TOTAL_21:=100*((l_Total_Forecast_Cost-l_CT_Total_Forecast_Cost)/ABS(
6214
6215 l_CT_Total_Forecast_Cost)); -- Cost Change %
6216 ELSE
6217 l_lines_tab(i).PJI_REP_TOTAL_21:=NULL;
6218 END IF;
6219
6220 IF NVL(l_lines_tab(i).PJI_REP_TOTAL_18, 0) <> 0 THEN
6221
6222
6223 l_lines_tab(i).PJI_REP_TOTAL_23:=100*((l_lines_tab(i).PJI_REP_TOTAL_17-l_lines_tab(i).PJI_REP_TOTAL_18)
6224 /ABS( l_lines_tab(i).PJI_REP_TOTAL_18)); -- Margin Change %
6225 ELSE
6226 l_lines_tab(i).PJI_REP_TOTAL_23:=NULL;
6227 END IF;
6228
6229 l_lines_tab(i).PJI_REP_TOTAL_24:=l_lines_tab(i).PJI_REP_TOTAL_19-l_lines_tab(i).PJI_REP_TOTAL_20; -- Margin % Change
6230
6231 END IF;
6232 END LOOP;
6233 END IF;
6234
6235 /*
6236 ** ---------------------------------------------------+
6237 ** -- Return the bulk collected table back to pmv.-+
6238 ** ---------------------------------------------------+
6239 */
6240 COMMIT;
6241
6242
6243 RETURN l_lines_tab;
6244
6245
6246 END PLSQLDriver_PJI_REP_PPSUM;
6247
6248 END PJI_PMV_PROFITABILITY;
6249