[Home] [Help]
PACKAGE BODY: APPS.PA_ADW_COLLECT_FACTS
Source
1 PACKAGE BODY PA_ADW_COLLECT_FACTS AS
2 /* $Header: PAADWCFB.pls 120.2 2005/08/19 16:15:22 mwasowic ship $ */
3
4 FUNCTION Initialize RETURN NUMBER IS
5 BEGIN
6 NULL;
7 END Initialize;
8
9 -- Procedure to collect actual cost and commitment costs
10
11 PROCEDURE get_fact_act_cmts
12 (x_project_num_from IN VARCHAR2,
13 x_project_num_to IN VARCHAR2,
14 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
15 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
16 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
17 IS
18
19 -- Define Cursor for sending $0 measure values for
20 -- the resources which were refreshed at the lowest task level
21
22 CURSOR sel_ref_lowest_act_cmts(x_project_id NUMBER) IS
23 SELECT
24 PTXN.TASK_ID,
25 PTXN.PA_PERIOD_KEY,
26 PTXN.EXPENSE_ORGANIZATION_ID,
27 PTXN.OWNER_ORGANIZATION_ID,
28 PTXN.RESOURCE_LIST_MEMBER_ID,
29 PTXN.SERVICE_TYPE_CODE,
30 PTXN.EXPENDITURE_TYPE,
31 PTXN.USER_COL1,
32 PTXN.USER_COL2,
33 PTXN.USER_COL3,
34 PTXN.USER_COL4,
35 PTXN.USER_COL5,
36 SUM(PTXN.USER_COL6) USER_COL6,
37 SUM(PTXN.USER_COL7) USER_COL7,
38 SUM(PTXN.USER_COL8) USER_COL8,
39 SUM(PTXN.USER_COL9) USER_COL9,
40 SUM(PTXN.USER_COL10) USER_COL10,
41 SUM(PTXN.ACCUME_REVENUE) ACCUME_REVENUE,
42 SUM(PTXN.ACCUME_RAW_COST) ACCUME_RAW_COST,
43 SUM(PTXN.ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
44 SUM(PTXN.ACCUME_QUANTITY) ACCUME_QUANTITY,
45 SUM(PTXN.ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
46 SUM(PTXN.ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
47 SUM(PTXN.ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
48 SUM(PTXN.ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
49 SUM(PTXN.ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
50 SUM(PTXN.ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
51 SUM(PTXN.ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
52 SUM(PTXN.ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
53 PTXN.UNIT_OF_MEASURE
54 FROM
55 PA_ADW_R_ACT_CMT_V PTXN,
56 PA_ADW_LOWEST_TASKS_V PT
57 WHERE
58 PTXN.TASK_ID = PT.TASK_ID
59 AND PTXN.PROJECT_ID = x_project_id
60 -- Exclude top tasks
61 AND PT.TASK_ID <> PT.TOP_TASK_ID
62 AND PTXN.RES_ADW_NOTIFY_FLAG = 'S'
63 GROUP BY
64 PTXN.TASK_ID,
65 PTXN.PA_PERIOD_KEY,
66 PTXN.EXPENSE_ORGANIZATION_ID,
67 PTXN.OWNER_ORGANIZATION_ID,
68 PTXN.RESOURCE_LIST_MEMBER_ID,
69 PTXN.SERVICE_TYPE_CODE,
70 PTXN.EXPENDITURE_TYPE,
71 PTXN.USER_COL1,
72 PTXN.USER_COL2,
73 PTXN.USER_COL3,
74 PTXN.USER_COL4,
75 PTXN.USER_COL5,
76 PTXN.UNIT_OF_MEASURE;
77
78 -- Define Cursor for sending $0 measure values for
79 -- the resources which were refreshed at the top task level
80
81 CURSOR sel_ref_top_act_cmts(x_project_id NUMBER) IS
82 SELECT
83 PTXN.TOP_TASK_ID,
84 PTXN.PA_PERIOD_KEY,
85 PTXN.EXPENSE_ORGANIZATION_ID,
86 PTXN.OWNER_ORGANIZATION_ID,
87 PTXN.RESOURCE_LIST_MEMBER_ID,
88 PTXN.SERVICE_TYPE_CODE,
89 PTXN.EXPENDITURE_TYPE,
90 PTXN.USER_COL1,
91 PTXN.USER_COL2,
92 PTXN.USER_COL3,
93 PTXN.USER_COL4,
94 PTXN.USER_COL5,
95 SUM(PTXN.USER_COL6) USER_COL6,
96 SUM(PTXN.USER_COL7) USER_COL7,
97 SUM(PTXN.USER_COL8) USER_COL8,
98 SUM(PTXN.USER_COL9) USER_COL9,
99 SUM(PTXN.USER_COL10) USER_COL10,
100 SUM(PTXN.ACCUME_REVENUE) ACCUME_REVENUE,
101 SUM(PTXN.ACCUME_RAW_COST) ACCUME_RAW_COST,
102 SUM(PTXN.ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
103 SUM(PTXN.ACCUME_QUANTITY) ACCUME_QUANTITY,
104 SUM(PTXN.ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
105 SUM(PTXN.ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
106 SUM(PTXN.ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
107 SUM(PTXN.ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
108 SUM(PTXN.ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
109 SUM(PTXN.ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
110 SUM(PTXN.ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
111 SUM(PTXN.ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
112 PTXN.UNIT_OF_MEASURE
113 FROM
114 PA_ADW_R_ACT_CMT_V PTXN,
115 PA_ADW_TOP_TASKS_V PT
116 WHERE
117 PTXN.TOP_TASK_ID = PT.TOP_TASK_ID
118 AND PTXN.PROJECT_ID = x_project_id
119 AND PTXN.RES_ADW_NOTIFY_FLAG = 'S'
120 GROUP BY
121 PTXN.TOP_TASK_ID,
122 PTXN.PA_PERIOD_KEY,
123 PTXN.EXPENSE_ORGANIZATION_ID,
124 PTXN.OWNER_ORGANIZATION_ID,
125 PTXN.RESOURCE_LIST_MEMBER_ID,
126 PTXN.SERVICE_TYPE_CODE,
127 PTXN.EXPENDITURE_TYPE,
128 PTXN.USER_COL1,
129 PTXN.USER_COL2,
130 PTXN.USER_COL3,
131 PTXN.USER_COL4,
132 PTXN.USER_COL5,
133 PTXN.UNIT_OF_MEASURE;
134
135 -- Define Cursor for sending $0 measure values for
136 -- the resources which were refreshed at the project Level
137
138 CURSOR sel_ref_prj_act_cmts(x_project_id NUMBER) IS
139 SELECT
140 PROJECT_ID,
141 PA_PERIOD_KEY,
142 EXPENSE_ORGANIZATION_ID,
143 OWNER_ORGANIZATION_ID,
144 RESOURCE_LIST_MEMBER_ID,
145 SERVICE_TYPE_CODE,
146 EXPENDITURE_TYPE,
147 USER_COL1,
148 USER_COL2,
149 USER_COL3,
150 USER_COL4,
151 USER_COL5,
152 SUM(USER_COL6) USER_COL6,
153 SUM(USER_COL7) USER_COL7,
154 SUM(USER_COL8) USER_COL8,
155 SUM(USER_COL9) USER_COL9,
156 SUM(USER_COL10) USER_COL10,
157 SUM(ACCUME_REVENUE) ACCUME_REVENUE,
158 SUM(ACCUME_RAW_COST) ACCUME_RAW_COST,
159 SUM(ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
160 SUM(ACCUME_QUANTITY) ACCUME_QUANTITY,
161 SUM(ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
162 SUM(ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
163 SUM(ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
164 SUM(ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
165 SUM(ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
166 SUM(ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
167 SUM(ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
168 SUM(ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
169 UNIT_OF_MEASURE
170 FROM
171 PA_ADW_R_ACT_CMT_V
172 WHERE
173 RES_ADW_NOTIFY_FLAG = 'S'
174 AND PROJECT_ID = x_project_id
175 GROUP BY
176 PROJECT_ID,
177 PA_PERIOD_KEY,
178 EXPENSE_ORGANIZATION_ID,
179 OWNER_ORGANIZATION_ID,
180 RESOURCE_LIST_MEMBER_ID,
181 SERVICE_TYPE_CODE,
182 EXPENDITURE_TYPE,
183 USER_COL1,
184 USER_COL2,
185 USER_COL3,
186 USER_COL4,
187 USER_COL5,
188 UNIT_OF_MEASURE;
189
190 -- Define Cursor for sending $0 measure values for
191 -- the lowest level tasks for which service type was changed
192
193 CURSOR sel_ref_lowest_stype_act_cmts(x_project_id NUMBER) IS
194 SELECT
195 PTXN.TASK_ID,
196 PTXN.PA_PERIOD_KEY,
197 PTXN.EXPENSE_ORGANIZATION_ID,
198 PTXN.OWNER_ORGANIZATION_ID,
199 PTXN.RESOURCE_LIST_MEMBER_ID,
200 PTXN.SERVICE_TYPE_CODE,
201 PTXN.EXPENDITURE_TYPE,
202 PTXN.USER_COL1,
203 PTXN.USER_COL2,
204 PTXN.USER_COL3,
205 PTXN.USER_COL4,
206 PTXN.USER_COL5,
207 SUM(PTXN.USER_COL6) USER_COL6,
208 SUM(PTXN.USER_COL7) USER_COL7,
209 SUM(PTXN.USER_COL8) USER_COL8,
210 SUM(PTXN.USER_COL9) USER_COL9,
211 SUM(PTXN.USER_COL10) USER_COL10,
212 SUM(PTXN.ACCUME_REVENUE) ACCUME_REVENUE,
213 SUM(PTXN.ACCUME_RAW_COST) ACCUME_RAW_COST,
214 SUM(PTXN.ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
215 SUM(PTXN.ACCUME_QUANTITY) ACCUME_QUANTITY,
216 SUM(PTXN.ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
217 SUM(PTXN.ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
218 SUM(PTXN.ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
219 SUM(PTXN.ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
220 SUM(PTXN.ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
221 SUM(PTXN.ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
222 SUM(PTXN.ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
223 SUM(PTXN.ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
224 PTXN.UNIT_OF_MEASURE
225 FROM
226 PA_ADW_R_ST_ACT_CMT_V PTXN,
227 PA_ADW_LOWEST_TASKS_V PT
228 WHERE
229 PTXN.TASK_ID = PT.TASK_ID
230 AND PTXN.PROJECT_ID = x_project_id
231 -- Exclude top tasks
232 AND PT.TASK_ID <> PT.TOP_TASK_ID
233 AND (PTXN.TSK_ADW_NOTIFY_FLAG = 'S' OR PTXN.TSK_ADW_NOTIFY_FLAG = 'P')
234 GROUP BY
235 PTXN.TASK_ID,
236 PTXN.PA_PERIOD_KEY,
237 PTXN.EXPENSE_ORGANIZATION_ID,
238 PTXN.OWNER_ORGANIZATION_ID,
239 PTXN.RESOURCE_LIST_MEMBER_ID,
240 PTXN.SERVICE_TYPE_CODE,
241 PTXN.EXPENDITURE_TYPE,
242 PTXN.USER_COL1,
243 PTXN.USER_COL2,
244 PTXN.USER_COL3,
245 PTXN.USER_COL4,
246 PTXN.USER_COL5,
247 PTXN.UNIT_OF_MEASURE;
248
249 -- Define Cursor for sending $0 measure values for
250 -- the top level tasks for which service type was changed
251
252 CURSOR sel_ref_top_ser_type_act_cmts(x_project_id NUMBER) IS
253 SELECT
254 PTXN.TOP_TASK_ID,
255 PTXN.PA_PERIOD_KEY,
256 PTXN.EXPENSE_ORGANIZATION_ID,
257 PTXN.OWNER_ORGANIZATION_ID,
258 PTXN.RESOURCE_LIST_MEMBER_ID,
259 PTXN.SERVICE_TYPE_CODE,
260 PTXN.EXPENDITURE_TYPE,
261 PTXN.USER_COL1,
262 PTXN.USER_COL2,
263 PTXN.USER_COL3,
264 PTXN.USER_COL4,
265 PTXN.USER_COL5,
266 SUM(PTXN.USER_COL6) USER_COL6,
267 SUM(PTXN.USER_COL7) USER_COL7,
268 SUM(PTXN.USER_COL8) USER_COL8,
269 SUM(PTXN.USER_COL9) USER_COL9,
270 SUM(PTXN.USER_COL10) USER_COL10,
271 SUM(PTXN.ACCUME_REVENUE) ACCUME_REVENUE,
272 SUM(PTXN.ACCUME_RAW_COST) ACCUME_RAW_COST,
273 SUM(PTXN.ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
274 SUM(PTXN.ACCUME_QUANTITY) ACCUME_QUANTITY,
275 SUM(PTXN.ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
276 SUM(PTXN.ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
277 SUM(PTXN.ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
278 SUM(PTXN.ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
279 SUM(PTXN.ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
280 SUM(PTXN.ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
281 SUM(PTXN.ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
282 SUM(PTXN.ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
283 PTXN.UNIT_OF_MEASURE
284 FROM
285 PA_ADW_R_ST_ACT_CMT_V PTXN,
286 PA_ADW_TOP_TASKS_V PT
287 WHERE
288 PTXN.TOP_TASK_ID = PT.TOP_TASK_ID
289 AND PTXN.PROJECT_ID = x_project_id
290 AND (PTXN.TSK_ADW_NOTIFY_FLAG = 'S' OR PTXN.TSK_ADW_NOTIFY_FLAG = 'P')
291 GROUP BY
292 PTXN.TOP_TASK_ID,
293 PTXN.PA_PERIOD_KEY,
294 PTXN.EXPENSE_ORGANIZATION_ID,
295 PTXN.OWNER_ORGANIZATION_ID,
296 PTXN.RESOURCE_LIST_MEMBER_ID,
297 PTXN.SERVICE_TYPE_CODE,
298 PTXN.EXPENDITURE_TYPE,
299 PTXN.USER_COL1,
300 PTXN.USER_COL2,
301 PTXN.USER_COL3,
302 PTXN.USER_COL4,
303 PTXN.USER_COL5,
304 PTXN.UNIT_OF_MEASURE;
305
306 -- Define Cursor for sending $0 measure values at
307 -- the project level for the service type changed at task level
308
309 CURSOR sel_ref_prj_ser_type_act_cmts(x_project_id NUMBER) IS
310 SELECT
311 PROJECT_ID,
312 PA_PERIOD_KEY,
313 EXPENSE_ORGANIZATION_ID,
314 OWNER_ORGANIZATION_ID,
315 RESOURCE_LIST_MEMBER_ID,
316 SERVICE_TYPE_CODE,
317 EXPENDITURE_TYPE,
318 USER_COL1,
319 USER_COL2,
320 USER_COL3,
321 USER_COL4,
322 USER_COL5,
323 SUM(USER_COL6) USER_COL6,
324 SUM(USER_COL7) USER_COL7,
325 SUM(USER_COL8) USER_COL8,
326 SUM(USER_COL9) USER_COL9,
327 SUM(USER_COL10) USER_COL10,
328 SUM(ACCUME_REVENUE) ACCUME_REVENUE,
329 SUM(ACCUME_RAW_COST) ACCUME_RAW_COST,
330 SUM(ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
331 SUM(ACCUME_QUANTITY) ACCUME_QUANTITY,
332 SUM(ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
333 SUM(ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
334 SUM(ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
335 SUM(ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
336 SUM(ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
337 SUM(ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
338 SUM(ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
339 SUM(ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
340 UNIT_OF_MEASURE
341 FROM
342 PA_ADW_R_ST_ACT_CMT_V
343 WHERE
344 (TSK_ADW_NOTIFY_FLAG = 'S' OR TSK_ADW_NOTIFY_FLAG = 'P')
345 AND PROJECT_ID = x_project_id
346 GROUP BY
347 PROJECT_ID,
348 PA_PERIOD_KEY,
349 EXPENSE_ORGANIZATION_ID,
350 OWNER_ORGANIZATION_ID,
351 RESOURCE_LIST_MEMBER_ID,
352 SERVICE_TYPE_CODE,
353 EXPENDITURE_TYPE,
354 USER_COL1,
355 USER_COL2,
356 USER_COL3,
357 USER_COL4,
358 USER_COL5,
359 UNIT_OF_MEASURE;
360
361 -- Define Cursor for selecting Actuals and Commitments
362 -- at lowest level of task.
363
364 CURSOR sel_lowest_act_cmts(x_project_id NUMBER) IS
365 SELECT
366 TASK_ID,
367 PA_PERIOD_KEY,
368 EXPENSE_ORGANIZATION_ID,
369 OWNER_ORGANIZATION_ID,
370 RESOURCE_LIST_MEMBER_ID,
371 SERVICE_TYPE_CODE,
372 EXPENDITURE_TYPE,
373 USER_COL1,
374 USER_COL2,
375 USER_COL3,
376 USER_COL4,
377 USER_COL5,
378 SUM(USER_COL6) USER_COL6,
379 SUM(USER_COL7) USER_COL7,
380 SUM(USER_COL8) USER_COL8,
381 SUM(USER_COL9) USER_COL9,
382 SUM(USER_COL10) USER_COL10,
383 SUM(ACCUME_REVENUE) ACCUME_REVENUE,
384 SUM(ACCUME_RAW_COST) ACCUME_RAW_COST,
385 SUM(ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
386 SUM(ACCUME_QUANTITY) ACCUME_QUANTITY,
387 SUM(ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
388 SUM(ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
389 SUM(ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
390 SUM(ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
391 SUM(ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
392 SUM(ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
393 SUM(ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
394 SUM(ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
395 UNIT_OF_MEASURE
396 FROM
397 PA_ADW_ACT_CMT_V
398 WHERE
399 PROJECT_ID = x_project_id
400 AND (TASK_ID,
401 PA_PERIOD_KEY,
402 NVL(EXPENSE_ORGANIZATION_ID,-99),
403 NVL(OWNER_ORGANIZATION_ID,-99),
404 NVL(RESOURCE_LIST_MEMBER_ID,-99),
405 NVL(SERVICE_TYPE_CODE,'X'),
406 NVL(EXPENDITURE_TYPE,'X'),
407 NVL(USER_COL1,'X'),
408 NVL(USER_COL2,'X'),
409 NVL(USER_COL3,'X'),
410 NVL(USER_COL4,'X'),
411 NVL(USER_COL5,'X'),
412 NVL(UNIT_OF_MEASURE,'X'))
413 IN
414 (SELECT
415 PTXN.TASK_ID,
416 PTXN.PA_PERIOD_KEY,
417 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
418 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
419 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
420 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
421 NVL(PTXN.EXPENDITURE_TYPE,'X'),
422 NVL(PTXN.USER_COL1,'X'),
423 NVL(PTXN.USER_COL2,'X'),
424 NVL(PTXN.USER_COL3,'X'),
425 NVL(PTXN.USER_COL4,'X'),
426 NVL(PTXN.USER_COL5,'X'),
427 NVL(PTXN.UNIT_OF_MEASURE,'X')
428 FROM
429 PA_ADW_ACT_CMT_V PTXN,
430 PA_ADW_LOWEST_TASKS_V PT
431 WHERE
432 PTXN.TASK_ID = PT.TASK_ID
433 AND PTXN.PROJECT_ID = x_project_id
434 -- Exclude the tasks which are top tasks
435 AND PT.TASK_ID <> PT.TOP_TASK_ID
436 AND (PTXN.RES_ADW_NOTIFY_FLAG = 'S' OR PTXN.TXN_ADW_NOTIFY_FLAG = 'S')
437 GROUP BY
438 PTXN.TASK_ID,
439 PTXN.PA_PERIOD_KEY,
440 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
441 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
442 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
443 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
444 NVL(PTXN.EXPENDITURE_TYPE,'X'),
445 NVL(PTXN.USER_COL1,'X'),
446 NVL(PTXN.USER_COL2,'X'),
447 NVL(PTXN.USER_COL3,'X'),
448 NVL(PTXN.USER_COL4,'X'),
449 NVL(PTXN.USER_COL5,'X'),
450 NVL(PTXN.UNIT_OF_MEASURE,'X'))
451 GROUP BY
452 TASK_ID,
453 PA_PERIOD_KEY,
454 EXPENSE_ORGANIZATION_ID,
455 OWNER_ORGANIZATION_ID,
456 RESOURCE_LIST_MEMBER_ID,
457 SERVICE_TYPE_CODE,
458 EXPENDITURE_TYPE,
459 USER_COL1,
460 USER_COL2,
461 USER_COL3,
462 USER_COL4,
463 USER_COL5,
464 UNIT_OF_MEASURE;
465
466 -- Define Cursor for selecting Actuals and Commitments
467 -- at top level of task.
468
469 CURSOR sel_top_act_cmts(x_project_id NUMBER) IS
470 SELECT
471 TOP_TASK_ID,
472 PA_PERIOD_KEY,
473 EXPENSE_ORGANIZATION_ID,
474 OWNER_ORGANIZATION_ID,
475 RESOURCE_LIST_MEMBER_ID,
476 SERVICE_TYPE_CODE,
477 EXPENDITURE_TYPE,
478 USER_COL1,
479 USER_COL2,
480 USER_COL3,
481 USER_COL4,
482 USER_COL5,
483 SUM(USER_COL6) USER_COL6,
484 SUM(USER_COL7) USER_COL7,
485 SUM(USER_COL8) USER_COL8,
486 SUM(USER_COL9) USER_COL9,
487 SUM(USER_COL10) USER_COL10,
488 SUM(ACCUME_REVENUE) ACCUME_REVENUE,
489 SUM(ACCUME_RAW_COST) ACCUME_RAW_COST,
490 SUM(ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
491 SUM(ACCUME_QUANTITY) ACCUME_QUANTITY,
492 SUM(ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
493 SUM(ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
494 SUM(ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
495 SUM(ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
496 SUM(ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
497 SUM(ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
498 SUM(ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
499 SUM(ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
500 UNIT_OF_MEASURE
501 FROM
502 PA_ADW_ACT_CMT_V
503 WHERE
504 PROJECT_ID = x_project_id
505 AND (TOP_TASK_ID,
506 PA_PERIOD_KEY,
507 NVL(EXPENSE_ORGANIZATION_ID,-99),
508 NVL(OWNER_ORGANIZATION_ID,-99),
509 NVL(RESOURCE_LIST_MEMBER_ID,-99),
510 NVL(SERVICE_TYPE_CODE,'X'),
511 NVL(EXPENDITURE_TYPE,'X'),
512 NVL(USER_COL1,'X'),
513 NVL(USER_COL2,'X'),
514 NVL(USER_COL3,'X'),
515 NVL(USER_COL4,'X'),
516 NVL(USER_COL5,'X'),
517 NVL(UNIT_OF_MEASURE,'X'))
518 IN
519 (SELECT
520 PTXN.TOP_TASK_ID,
521 PTXN.PA_PERIOD_KEY,
522 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
523 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
524 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
525 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
526 NVL(PTXN.EXPENDITURE_TYPE,'X'),
527 NVL(PTXN.USER_COL1,'X'),
528 NVL(PTXN.USER_COL2,'X'),
529 NVL(PTXN.USER_COL3,'X'),
530 NVL(PTXN.USER_COL4,'X'),
531 NVL(PTXN.USER_COL5,'X'),
532 NVL(PTXN.UNIT_OF_MEASURE,'X')
533 FROM
534 PA_ADW_ACT_CMT_V PTXN,
535 PA_ADW_TOP_TASKS_V PT
536 WHERE
537 PTXN.TOP_TASK_ID = PT.TOP_TASK_ID
538 AND PTXN.PROJECT_ID = x_project_id
539 AND (PTXN.RES_ADW_NOTIFY_FLAG = 'S' OR PTXN.TXN_ADW_NOTIFY_FLAG = 'S')
540 GROUP BY
541 PTXN.TOP_TASK_ID,
542 PTXN.PA_PERIOD_KEY,
543 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
544 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
545 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
546 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
547 NVL(PTXN.EXPENDITURE_TYPE,'X'),
548 NVL(PTXN.USER_COL1,'X'),
549 NVL(PTXN.USER_COL2,'X'),
550 NVL(PTXN.USER_COL3,'X'),
551 NVL(PTXN.USER_COL4,'X'),
552 NVL(PTXN.USER_COL5,'X'),
553 NVL(PTXN.UNIT_OF_MEASURE,'X'))
554 GROUP BY
555 TOP_TASK_ID,
556 PA_PERIOD_KEY,
557 EXPENSE_ORGANIZATION_ID,
558 OWNER_ORGANIZATION_ID,
559 RESOURCE_LIST_MEMBER_ID,
560 SERVICE_TYPE_CODE,
561 EXPENDITURE_TYPE,
562 USER_COL1,
563 USER_COL2,
564 USER_COL3,
565 USER_COL4,
566 USER_COL5,
567 UNIT_OF_MEASURE;
568
569 -- Define Cursor for selecting Actuals and Commitments
570 -- at project level.
571
572 CURSOR sel_prj_act_cmts(x_project_id NUMBER) IS
573 SELECT
574 PROJECT_ID,
575 PA_PERIOD_KEY,
576 EXPENSE_ORGANIZATION_ID,
577 OWNER_ORGANIZATION_ID,
578 RESOURCE_LIST_MEMBER_ID,
579 SERVICE_TYPE_CODE,
580 EXPENDITURE_TYPE,
581 USER_COL1,
582 USER_COL2,
583 USER_COL3,
584 USER_COL4,
585 USER_COL5,
586 SUM(USER_COL6) USER_COL6,
587 SUM(USER_COL7) USER_COL7,
588 SUM(USER_COL8) USER_COL8,
589 SUM(USER_COL9) USER_COL9,
590 SUM(USER_COL10) USER_COL10,
591 SUM(ACCUME_REVENUE) ACCUME_REVENUE,
592 SUM(ACCUME_RAW_COST) ACCUME_RAW_COST,
593 SUM(ACCUME_BURDENED_COST) ACCUME_BURDENED_COST,
594 SUM(ACCUME_QUANTITY) ACCUME_QUANTITY,
595 SUM(ACCUME_LABOR_HOURS) ACCUME_LABOR_HOURS,
596 SUM(ACCUME_BILLABLE_RAW_COST) ACCUME_BILLABLE_RAW_COST,
597 SUM(ACCUME_BILLABLE_BURDENED_COST) ACCUME_BILLABLE_BURDENED_COST,
598 SUM(ACCUME_BILLABLE_QUANTITY) ACCUME_BILLABLE_QUANTITY,
599 SUM(ACCUME_BILLABLE_LABOR_HOURS) ACCUME_BILLABLE_LABOR_HOURS,
600 SUM(ACCUME_CMT_RAW_COST) ACCUME_CMT_RAW_COST,
601 SUM(ACCUME_CMT_BURDENED_COST) ACCUME_CMT_BURDENED_COST,
602 SUM(ACCUME_CMT_QUANTITY) ACCUME_CMT_QUANTITY,
603 UNIT_OF_MEASURE
604 FROM
605 PA_ADW_ACT_CMT_V
606 WHERE
607 PROJECT_ID = x_project_id
608 AND (PROJECT_ID,
609 PA_PERIOD_KEY,
610 NVL(EXPENSE_ORGANIZATION_ID,-99),
611 NVL(OWNER_ORGANIZATION_ID,-99),
612 NVL(RESOURCE_LIST_MEMBER_ID,-99),
613 NVL(SERVICE_TYPE_CODE,'X'),
614 NVL(EXPENDITURE_TYPE,'X'),
615 NVL(USER_COL1,'X'),
616 NVL(USER_COL2,'X'),
617 NVL(USER_COL3,'X'),
618 NVL(USER_COL4,'X'),
619 NVL(USER_COL5,'X'),
620 NVL(UNIT_OF_MEASURE,'X'))
621 IN
622 (SELECT
623 PTXN.PROJECT_ID,
624 PTXN.PA_PERIOD_KEY,
625 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
626 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
627 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
628 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
629 NVL(PTXN.EXPENDITURE_TYPE,'X'),
630 NVL(PTXN.USER_COL1,'X'),
631 NVL(PTXN.USER_COL2,'X'),
632 NVL(PTXN.USER_COL3,'X'),
633 NVL(PTXN.USER_COL4,'X'),
634 NVL(PTXN.USER_COL5,'X'),
635 NVL(PTXN.UNIT_OF_MEASURE,'X')
636 FROM
637 PA_ADW_ACT_CMT_V PTXN
638 WHERE
639 PTXN.PROJECT_ID = x_project_id
640 AND (PTXN.RES_ADW_NOTIFY_FLAG = 'S' OR PTXN.TXN_ADW_NOTIFY_FLAG = 'S')
641 GROUP BY
642 PTXN.PROJECT_ID,
643 PTXN.PA_PERIOD_KEY,
644 NVL(PTXN.EXPENSE_ORGANIZATION_ID,-99),
645 NVL(PTXN.OWNER_ORGANIZATION_ID,-99),
646 NVL(PTXN.RESOURCE_LIST_MEMBER_ID,-99),
647 NVL(PTXN.SERVICE_TYPE_CODE,'X'),
648 NVL(PTXN.EXPENDITURE_TYPE,'X'),
649 NVL(PTXN.USER_COL1,'X'),
650 NVL(PTXN.USER_COL2,'X'),
651 NVL(PTXN.USER_COL3,'X'),
652 NVL(PTXN.USER_COL4,'X'),
653 NVL(PTXN.USER_COL5,'X'),
654 NVL(PTXN.UNIT_OF_MEASURE,'X'))
655 GROUP BY
656 PROJECT_ID,
657 PA_PERIOD_KEY,
658 EXPENSE_ORGANIZATION_ID,
659 OWNER_ORGANIZATION_ID,
660 RESOURCE_LIST_MEMBER_ID,
661 SERVICE_TYPE_CODE,
662 EXPENDITURE_TYPE,
663 USER_COL1,
664 USER_COL2,
665 USER_COL3,
666 USER_COL4,
667 USER_COL5,
668 UNIT_OF_MEASURE;
669
670 -- Cursor for selecting projects for processing
671
672 CURSOR sel_prjs IS
673 SELECT
674 PROJECT_ID,
675 SEGMENT1
676 FROM
677 PA_ADW_PROJECTS_V
678 WHERE segment1 BETWEEN NVL(x_project_num_from,segment1)
679 AND NVL(x_project_num_to,segment1);
680
681 -- define procedure variables
682
683 ref_lowest_act_cmts_r sel_ref_lowest_act_cmts%ROWTYPE;
684 ref_top_act_cmts_r sel_ref_top_act_cmts%ROWTYPE;
685 ref_prj_act_cmts_r sel_ref_prj_act_cmts%ROWTYPE;
686 ref_lowest_ser_type_act_cmts_r sel_ref_lowest_stype_act_cmts%ROWTYPE;
687 ref_top_ser_type_act_cmts_r sel_ref_top_ser_type_act_cmts%ROWTYPE;
688 ref_prj_ser_type_act_cmts_r sel_ref_prj_ser_type_act_cmts%ROWTYPE;
689
690 lowest_act_cmts_r sel_lowest_act_cmts%ROWTYPE;
691 top_act_cmts_r sel_top_act_cmts%ROWTYPE;
692 prj_act_cmts_r sel_prj_act_cmts%ROWTYPE;
693
694 sel_prjs_r sel_prjs%ROWTYPE;
695
696 x_old_err_stack VARCHAR2(1024);
697 txn_count NUMBER;
698 res_count NUMBER;
699 ref_res_count NUMBER; -- The resources to be refreshed because
700 -- the resources were refreshed
701 ref_ser_type_count NUMBER; -- The number of tasks to be refreshed for
702 -- service type change
703
704
705 BEGIN
706 x_err_code := 0;
707 x_err_stage := 'Collecting Actuals/Commitments';
708 x_old_err_stack := x_err_stack;
709 x_err_stack := x_err_stack || '-> get_fact_act_cmts';
710
711 pa_debug.debug(x_err_stage);
712
713 -- Process all projects one one by one
714
715 FOR sel_prjs_r IN sel_prjs LOOP
716
717 -- Mark the PA_TASK_HISTORY rows for latest service_type
718 -- These are the task for which the service type is latest
719
720 pa_debug.debug('Processing project_id ' || to_char(sel_prjs_r.project_id) || ' Project Number' || sel_prjs_r.segment1 );
721
722 UPDATE
723 PA_TASK_HISTORY PTH
724 SET
725 ADW_NOTIFY_FLAG = 'Y'
726 WHERE
727 PROJECT_ID = sel_prjs_r.project_id
728 AND TASK_HISTORY_ID IN
729 ( SELECT MAX(TASK_HISTORY_ID)
730 FROM PA_TASK_HISTORY PTHL
731 WHERE PTHL.TASK_ID = PTH.TASK_ID
732 );
733
734 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' Task Rows for Transfer');
735
736 -- Update the task where the service type has changed from
737 -- the last time the tasks were interfaced to the interface table
738 -- and the task which are not refreshed earlier by the project refresh
739 -- cursor
740
741
742 UPDATE PA_ADW_INTERFACED_TASKS PTH
743 SET
744 ADW_NOTIFY_FLAG = 'S'
745 WHERE
746 ADW_INTERFACE_FLAG = 'Y'
747 AND PROJECT_ID = sel_prjs_r.project_id
748 AND EXISTS
749 ( SELECT 'Yes'
750 FROM PA_TASK_HISTORY PTHL
751 WHERE PTHL.TASK_ID = PTH.TASK_ID
752 AND (
753 PTHL.SERVICE_TYPE_CODE <> PTH.SERVICE_TYPE_CODE or
754 PTHL.CARRYING_OUT_ORGANIZATION_ID <> PTH.CARRYING_OUT_ORGANIZATION_ID -- fix for bug 1233570, created by DMPOTAPO
755 )
756 AND PTHL.TASK_HISTORY_ID > PTH.TASK_HISTORY_ID
757 )
758 AND NOT EXISTS
759 ( SELECT 'Yes'
760 FROM PA_OLD_RES_ACCUM_DTLS
761 WHERE PROJECT_ID = sel_prjs_r.project_id
762 AND TASK_ID = PTH.TASK_ID
763 AND ADW_NOTIFY_FLAG = 'Y'
764 );
765
766 ref_ser_type_count := SQL%ROWCOUNT;
767 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' Task Rows for Service Type Change');
768
769 -- Mark the other tasks with this service type for refresh too
770
771 UPDATE PA_ADW_INTERFACED_TASKS PTH
772 SET
773 ADW_NOTIFY_FLAG = 'P'
774 WHERE
775 ADW_INTERFACE_FLAG = 'Y'
776 AND ADW_NOTIFY_FLAG <> 'S'
777 AND PROJECT_ID = sel_prjs_r.project_id
778 AND EXISTS
779 ( SELECT 'Yes'
780 FROM PA_ADW_INTERFACED_TASKS PTHL
781 WHERE PTHL.TASK_ID <> PTH.TASK_ID
782 AND (
783 PTHL.SERVICE_TYPE_CODE = PTH.SERVICE_TYPE_CODE or
784 PTHL.CARRYING_OUT_ORGANIZATION_ID = PTH.CARRYING_OUT_ORGANIZATION_ID -- fix for bug 1233570, created by DMPOTAPO
785 )
786 AND PTHL.PROJECT_ID = sel_prjs_r.project_id
787 AND PTHL.ADW_NOTIFY_FLAG = 'S'
788 )
789 AND NOT EXISTS
790 ( SELECT 'Yes'
791 FROM PA_OLD_RES_ACCUM_DTLS
792 WHERE PROJECT_ID = sel_prjs_r.project_id
793 AND TASK_ID = PTH.TASK_ID
794 AND ADW_NOTIFY_FLAG = 'Y'
795 );
796 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' Task Rows for Service Type Change at other tasks');
797
798 -- Update all lowest level tasks if any top task got changed
799
800 UPDATE PA_ADW_INTERFACED_TASKS PTH
801 SET
802 ADW_NOTIFY_FLAG = 'P'
803 WHERE
804 ADW_INTERFACE_FLAG = 'Y'
805 AND ADW_NOTIFY_FLAG <> 'S'
806 AND PROJECT_ID = sel_prjs_r.project_id
807 AND EXISTS
808 ( SELECT 'Yes'
809 FROM PA_TASK_HISTORY PTHL
810 WHERE PTHL.TASK_ID = PTH.TOP_TASK_ID
811 AND PTHL.ADW_NOTIFY_FLAG = 'S'
812 )
813 AND NOT EXISTS
814 ( SELECT 'Yes'
815 FROM PA_OLD_RES_ACCUM_DTLS
816 WHERE PROJECT_ID = sel_prjs_r.project_id
817 AND TASK_ID = PTH.TASK_ID
818 AND ADW_NOTIFY_FLAG = 'Y'
819 );
820 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' Task Rows due to the service type change at top task level');
821
822 -- Mark all the resource accum rows need to be refreshed
823
824 UPDATE
825 PA_OLD_RES_ACCUM_DTLS
826 SET
827 ADW_NOTIFY_FLAG = 'S'
828 WHERE
829 PROJECT_ID = sel_prjs_r.project_id
830 AND ADW_NOTIFY_FLAG = 'Y';
831
832 ref_res_count := SQL%ROWCOUNT;
833
834 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' Old Resource accum details');
835
836 -- Check if the service type was changed for any task interfaced earlier
837 -- For all of these tasks we need to send adjustments. We will send $0
838 -- for the old service type and full amount to the new service type
839
840 IF ( ref_res_count <> 0 ) THEN
841
842 -- Check the profile option value for collecting lowest tasks
843
844 IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y') THEN
845
846 -- Refresh the lowest tasks numbers
847
848 x_err_stage := 'Refreshing txns at lowest task level';
849
850 pa_debug.debug(x_err_stage);
851
852 FOR ref_lowest_act_cmts_r IN sel_ref_lowest_act_cmts(sel_prjs_r.project_id) LOOP
853
854 pa_debug.debug('Sending $0** for lowest task_id ' || to_char(ref_lowest_act_cmts_r.task_id) || ' For Service Type ' || ref_lowest_act_cmts_r.service_type_code);
855
856 update_tasks_act_cmt
857 (ref_lowest_act_cmts_r.task_id,
858 ref_lowest_act_cmts_r.pa_period_key,
859 ref_lowest_act_cmts_r.expense_organization_id,
860 ref_lowest_act_cmts_r.owner_organization_id,
861 ref_lowest_act_cmts_r.resource_list_member_id,
862 ref_lowest_act_cmts_r.service_type_code,
863 ref_lowest_act_cmts_r.expenditure_type,
864 ref_lowest_act_cmts_r.user_col1,
865 ref_lowest_act_cmts_r.user_col2,
866 ref_lowest_act_cmts_r.user_col3,
867 ref_lowest_act_cmts_r.user_col4,
868 ref_lowest_act_cmts_r.user_col5,
869 ref_lowest_act_cmts_r.user_col6,
870 ref_lowest_act_cmts_r.user_col7,
871 ref_lowest_act_cmts_r.user_col8,
872 ref_lowest_act_cmts_r.user_col9,
873 ref_lowest_act_cmts_r.user_col10,
874 ref_lowest_act_cmts_r.accume_revenue,
875 ref_lowest_act_cmts_r.accume_raw_cost,
876 ref_lowest_act_cmts_r.accume_burdened_cost,
877 ref_lowest_act_cmts_r.accume_quantity,
878 ref_lowest_act_cmts_r.accume_labor_hours,
879 ref_lowest_act_cmts_r.accume_billable_raw_cost,
880 ref_lowest_act_cmts_r.accume_billable_burdened_cost,
881 ref_lowest_act_cmts_r.accume_billable_quantity,
882 ref_lowest_act_cmts_r.accume_billable_labor_hours,
883 ref_lowest_act_cmts_r.accume_cmt_raw_cost,
884 ref_lowest_act_cmts_r.accume_cmt_burdened_cost,
885 ref_lowest_act_cmts_r.accume_cmt_quantity,
886 ref_lowest_act_cmts_r.unit_of_measure,
887 x_err_stage,
888 x_err_stack,
889 x_err_code);
890
891 END LOOP; -- FOR ref_lowest_act_cmts_r IN sel_ref_lowest_act_cmts
892
893 END IF; -- IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y')
894
895 -- Check the profile option value for collecting top tasks
896
897 IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y') THEN
898
899 -- Refresh the top tasks numbers
900
901 x_err_stage := 'Refreshing txns at top task level';
902
903 pa_debug.debug(x_err_stage);
904
905 FOR ref_top_act_cmts_r IN sel_ref_top_act_cmts(sel_prjs_r.project_id) LOOP
906
907 pa_debug.debug('Sending $0** for top task_id ' || to_char(ref_top_act_cmts_r.top_task_id) || ' For Service Type ' || ref_top_act_cmts_r.service_type_code);
908
909 update_tasks_act_cmt
910 (ref_top_act_cmts_r.top_task_id,
911 ref_top_act_cmts_r.pa_period_key,
912 ref_top_act_cmts_r.expense_organization_id,
913 ref_top_act_cmts_r.owner_organization_id,
914 ref_top_act_cmts_r.resource_list_member_id,
915 ref_top_act_cmts_r.service_type_code,
916 ref_top_act_cmts_r.expenditure_type,
917 ref_top_act_cmts_r.user_col1,
918 ref_top_act_cmts_r.user_col2,
919 ref_top_act_cmts_r.user_col3,
920 ref_top_act_cmts_r.user_col4,
921 ref_top_act_cmts_r.user_col5,
922 ref_top_act_cmts_r.user_col6,
923 ref_top_act_cmts_r.user_col7,
924 ref_top_act_cmts_r.user_col8,
925 ref_top_act_cmts_r.user_col9,
926 ref_top_act_cmts_r.user_col10,
927 ref_top_act_cmts_r.accume_revenue,
928 ref_top_act_cmts_r.accume_raw_cost,
929 ref_top_act_cmts_r.accume_burdened_cost,
930 ref_top_act_cmts_r.accume_quantity,
931 ref_top_act_cmts_r.accume_labor_hours,
932 ref_top_act_cmts_r.accume_billable_raw_cost,
933 ref_top_act_cmts_r.accume_billable_burdened_cost,
934 ref_top_act_cmts_r.accume_billable_quantity,
935 ref_top_act_cmts_r.accume_billable_labor_hours,
936 ref_top_act_cmts_r.accume_cmt_raw_cost,
937 ref_top_act_cmts_r.accume_cmt_burdened_cost,
938 ref_top_act_cmts_r.accume_cmt_quantity,
939 ref_top_act_cmts_r.unit_of_measure,
940 x_err_stage,
941 x_err_stack,
942 x_err_code);
943
944 END LOOP; -- FOR ref_top_act_cmts_r IN sel_ref_top_act_cmts
945
946 END IF; -- IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y')
947
948 -- Refresh the project level Numbers
949
950 x_err_stage := 'Refreshing txns at Project level';
951
952 pa_debug.debug(x_err_stage);
953
954 FOR ref_prj_act_cmts_r IN sel_ref_prj_act_cmts(sel_prjs_r.project_id) LOOP
955
956 pa_debug.debug('Sending $0*** for project_id ' || to_char(ref_prj_act_cmts_r.project_id) || ' For Service Type ' || ref_prj_act_cmts_r.service_type_code);
957
958 update_prj_act_cmt
959 (ref_prj_act_cmts_r.project_id,
960 ref_prj_act_cmts_r.pa_period_key,
961 ref_prj_act_cmts_r.expense_organization_id,
962 ref_prj_act_cmts_r.owner_organization_id,
963 ref_prj_act_cmts_r.resource_list_member_id,
964 ref_prj_act_cmts_r.service_type_code,
965 ref_prj_act_cmts_r.expenditure_type,
966 ref_prj_act_cmts_r.user_col1,
967 ref_prj_act_cmts_r.user_col2,
968 ref_prj_act_cmts_r.user_col3,
969 ref_prj_act_cmts_r.user_col4,
970 ref_prj_act_cmts_r.user_col5,
971 ref_prj_act_cmts_r.user_col6,
972 ref_prj_act_cmts_r.user_col7,
973 ref_prj_act_cmts_r.user_col8,
974 ref_prj_act_cmts_r.user_col9,
975 ref_prj_act_cmts_r.user_col10,
976 ref_prj_act_cmts_r.accume_revenue,
977 ref_prj_act_cmts_r.accume_raw_cost,
978 ref_prj_act_cmts_r.accume_burdened_cost,
979 ref_prj_act_cmts_r.accume_quantity,
980 ref_prj_act_cmts_r.accume_labor_hours,
981 ref_prj_act_cmts_r.accume_billable_raw_cost,
982 ref_prj_act_cmts_r.accume_billable_burdened_cost,
983 ref_prj_act_cmts_r.accume_billable_quantity,
984 ref_prj_act_cmts_r.accume_billable_labor_hours,
985 ref_prj_act_cmts_r.accume_cmt_raw_cost,
986 ref_prj_act_cmts_r.accume_cmt_burdened_cost,
987 ref_prj_act_cmts_r.accume_cmt_quantity,
988 ref_prj_act_cmts_r.unit_of_measure,
989 x_err_stage,
990 x_err_stack,
991 x_err_code);
992
993 END LOOP; -- FOR ref_prj_act_cmts_r IN sel_ref_prj_act_cmts
994
995 -- Mark the project types as transferred to Interface table
996
997 -- PLEASE NOTE THAT WE ARE UPDATING THE BASE TABLE SINCE THE
998 -- PA_ADW_R_ACT_CMT_V IS DEFINED ON MULTIPLE TABLES
999
1000 UPDATE
1001 PA_OLD_RES_ACCUM_DTLS
1002 SET
1003 ADW_NOTIFY_FLAG = 'N'
1004 WHERE
1005 ADW_NOTIFY_FLAG = 'S';
1006
1007 END IF; -- IF ( ref_res_count <> 0 )
1008
1009 IF ( ref_ser_type_count <> 0 ) THEN
1010
1011 -- Check the profile option value for collecting lowest tasks
1012
1013 IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y') THEN
1014
1015 -- Refresh the lowest tasks numbers
1016
1017 x_err_stage := 'Refreshing txns at lowest task level for service type change';
1018
1019 pa_debug.debug(x_err_stage);
1020
1021 FOR ref_lowest_ser_type_act_cmts_r IN sel_ref_lowest_stype_act_cmts(sel_prjs_r.project_id) LOOP
1022
1023 pa_debug.debug('Sending $0**** for lowest task_id ' || to_char(ref_lowest_ser_type_act_cmts_r.task_id) || ' For Service Type ' || ref_lowest_ser_type_act_cmts_r.service_type_code);
1024
1025 update_tasks_act_cmt
1026 (ref_lowest_ser_type_act_cmts_r.task_id,
1027 ref_lowest_ser_type_act_cmts_r.pa_period_key,
1028 ref_lowest_ser_type_act_cmts_r.expense_organization_id,
1029 ref_lowest_ser_type_act_cmts_r.owner_organization_id,
1030 ref_lowest_ser_type_act_cmts_r.resource_list_member_id,
1031 ref_lowest_ser_type_act_cmts_r.service_type_code,
1032 ref_lowest_ser_type_act_cmts_r.expenditure_type,
1033 ref_lowest_ser_type_act_cmts_r.user_col1,
1034 ref_lowest_ser_type_act_cmts_r.user_col2,
1035 ref_lowest_ser_type_act_cmts_r.user_col3,
1036 ref_lowest_ser_type_act_cmts_r.user_col4,
1037 ref_lowest_ser_type_act_cmts_r.user_col5,
1038 ref_lowest_ser_type_act_cmts_r.user_col6,
1039 ref_lowest_ser_type_act_cmts_r.user_col7,
1040 ref_lowest_ser_type_act_cmts_r.user_col8,
1041 ref_lowest_ser_type_act_cmts_r.user_col9,
1042 ref_lowest_ser_type_act_cmts_r.user_col10,
1043 ref_lowest_ser_type_act_cmts_r.accume_revenue,
1044 ref_lowest_ser_type_act_cmts_r.accume_raw_cost,
1045 ref_lowest_ser_type_act_cmts_r.accume_burdened_cost,
1046 ref_lowest_ser_type_act_cmts_r.accume_quantity,
1047 ref_lowest_ser_type_act_cmts_r.accume_labor_hours,
1048 ref_lowest_ser_type_act_cmts_r.accume_billable_raw_cost,
1049 ref_lowest_ser_type_act_cmts_r.accume_billable_burdened_cost,
1050 ref_lowest_ser_type_act_cmts_r.accume_billable_quantity,
1051 ref_lowest_ser_type_act_cmts_r.accume_billable_labor_hours,
1052 ref_lowest_ser_type_act_cmts_r.accume_cmt_raw_cost,
1053 ref_lowest_ser_type_act_cmts_r.accume_cmt_burdened_cost,
1054 ref_lowest_ser_type_act_cmts_r.accume_cmt_quantity,
1055 ref_lowest_ser_type_act_cmts_r.unit_of_measure,
1056 x_err_stage,
1057 x_err_stack,
1058 x_err_code);
1059
1060 END LOOP; -- FOR ref_lowest_ser_type_act_cmts_r IN sel_ref_lowest_stype_act_cmts
1061
1062 END IF; -- IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y')
1063
1064 -- Check the profile option value for collecting top tasks
1065
1066 IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y') THEN
1067
1068 -- Refresh the top tasks numbers
1069
1070 x_err_stage := 'Refreshing txns at top task level for service type change';
1071
1072 pa_debug.debug(x_err_stage);
1073
1074 FOR ref_top_ser_type_act_cmts_r IN sel_ref_top_ser_type_act_cmts(sel_prjs_r.project_id) LOOP
1075
1076 pa_debug.debug('Sending $0**** for top task_id ' || to_char(ref_top_ser_type_act_cmts_r.top_task_id) || ' For Service Type ' || ref_top_ser_type_act_cmts_r.service_type_code);
1077
1078 update_tasks_act_cmt
1079 (ref_top_ser_type_act_cmts_r.top_task_id,
1080 ref_top_ser_type_act_cmts_r.pa_period_key,
1081 ref_top_ser_type_act_cmts_r.expense_organization_id,
1082 ref_top_ser_type_act_cmts_r.owner_organization_id,
1083 ref_top_ser_type_act_cmts_r.resource_list_member_id,
1084 ref_top_ser_type_act_cmts_r.service_type_code,
1085 ref_top_ser_type_act_cmts_r.expenditure_type,
1086 ref_top_ser_type_act_cmts_r.user_col1,
1087 ref_top_ser_type_act_cmts_r.user_col2,
1088 ref_top_ser_type_act_cmts_r.user_col3,
1089 ref_top_ser_type_act_cmts_r.user_col4,
1090 ref_top_ser_type_act_cmts_r.user_col5,
1091 ref_top_ser_type_act_cmts_r.user_col6,
1092 ref_top_ser_type_act_cmts_r.user_col7,
1093 ref_top_ser_type_act_cmts_r.user_col8,
1094 ref_top_ser_type_act_cmts_r.user_col9,
1095 ref_top_ser_type_act_cmts_r.user_col10,
1096 ref_top_ser_type_act_cmts_r.accume_revenue,
1097 ref_top_ser_type_act_cmts_r.accume_raw_cost,
1098 ref_top_ser_type_act_cmts_r.accume_burdened_cost,
1099 ref_top_ser_type_act_cmts_r.accume_quantity,
1100 ref_top_ser_type_act_cmts_r.accume_labor_hours,
1101 ref_top_ser_type_act_cmts_r.accume_billable_raw_cost,
1105 ref_top_ser_type_act_cmts_r.accume_cmt_raw_cost,
1102 ref_top_ser_type_act_cmts_r.accume_billable_burdened_cost,
1103 ref_top_ser_type_act_cmts_r.accume_billable_quantity,
1104 ref_top_ser_type_act_cmts_r.accume_billable_labor_hours,
1106 ref_top_ser_type_act_cmts_r.accume_cmt_burdened_cost,
1107 ref_top_ser_type_act_cmts_r.accume_cmt_quantity,
1108 ref_top_ser_type_act_cmts_r.unit_of_measure,
1109 x_err_stage,
1110 x_err_stack,
1111 x_err_code);
1112
1113 END LOOP; -- FOR ref_top_ser_type_act_cmts_r IN sel_ref_top_ser_type_act_cmts
1114
1115 END IF; -- IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y')
1116
1117 -- Refresh the project level Numbers
1118
1119 x_err_stage := 'Refreshing txns at Project level';
1120
1121 pa_debug.debug(x_err_stage);
1122
1123 FOR ref_prj_ser_type_act_cmts_r IN sel_ref_prj_ser_type_act_cmts(sel_prjs_r.project_id) LOOP
1124
1125 pa_debug.debug('Sending $0***** for project_id ' || to_char(ref_prj_ser_type_act_cmts_r.project_id) || ' For Service Type ' || ref_prj_ser_type_act_cmts_r.service_type_code);
1126
1127 update_prj_act_cmt
1128 (ref_prj_ser_type_act_cmts_r.project_id,
1129 ref_prj_ser_type_act_cmts_r.pa_period_key,
1130 ref_prj_ser_type_act_cmts_r.expense_organization_id,
1131 ref_prj_ser_type_act_cmts_r.owner_organization_id,
1132 ref_prj_ser_type_act_cmts_r.resource_list_member_id,
1133 ref_prj_ser_type_act_cmts_r.service_type_code,
1134 ref_prj_ser_type_act_cmts_r.expenditure_type,
1135 ref_prj_ser_type_act_cmts_r.user_col1,
1136 ref_prj_ser_type_act_cmts_r.user_col2,
1137 ref_prj_ser_type_act_cmts_r.user_col3,
1138 ref_prj_ser_type_act_cmts_r.user_col4,
1139 ref_prj_ser_type_act_cmts_r.user_col5,
1140 ref_prj_ser_type_act_cmts_r.user_col6,
1141 ref_prj_ser_type_act_cmts_r.user_col7,
1142 ref_prj_ser_type_act_cmts_r.user_col8,
1143 ref_prj_ser_type_act_cmts_r.user_col9,
1144 ref_prj_ser_type_act_cmts_r.user_col10,
1145 ref_prj_ser_type_act_cmts_r.accume_revenue,
1146 ref_prj_ser_type_act_cmts_r.accume_raw_cost,
1147 ref_prj_ser_type_act_cmts_r.accume_burdened_cost,
1148 ref_prj_ser_type_act_cmts_r.accume_quantity,
1149 ref_prj_ser_type_act_cmts_r.accume_labor_hours,
1150 ref_prj_ser_type_act_cmts_r.accume_billable_raw_cost,
1151 ref_prj_ser_type_act_cmts_r.accume_billable_burdened_cost,
1152 ref_prj_ser_type_act_cmts_r.accume_billable_quantity,
1153 ref_prj_ser_type_act_cmts_r.accume_billable_labor_hours,
1154 ref_prj_ser_type_act_cmts_r.accume_cmt_raw_cost,
1155 ref_prj_ser_type_act_cmts_r.accume_cmt_burdened_cost,
1156 ref_prj_ser_type_act_cmts_r.accume_cmt_quantity,
1157 ref_prj_ser_type_act_cmts_r.unit_of_measure,
1158 x_err_stage,
1159 x_err_stack,
1160 x_err_code);
1161
1162 END LOOP; -- FOR ref_prj_ser_type_act_cmts_r IN sel_ref_prj_ser_type_act_cmts
1163
1164 -- Mark the rows in PA_TXN_ACCUM table for re-transfer
1165
1166 UPDATE PA_TXN_ACCUM PTA
1167 SET ADW_NOTIFY_FLAG = 'Y'
1168 WHERE
1169 TASK_ID IN
1170 (SELECT TASK_ID
1171 FROM PA_TASK_HISTORY PTH
1172 WHERE PTH.TASK_ID = PTA.TASK_ID
1173 AND PTH.ADW_NOTIFY_FLAG IN ('S','P')
1174 );
1175
1176 pa_debug.debug('Marked '||TO_CHAR(SQL%ROWCOUNT)||' Txn Accum rows for re-transfer due to service type change alone');
1177
1178 UPDATE
1179 PA_TASK_HISTORY
1180 SET
1181 ADW_NOTIFY_FLAG = 'N'
1182 WHERE
1183 ADW_NOTIFY_FLAG = 'S';
1184
1185 UPDATE
1186 PA_TASK_HISTORY
1187 SET
1188 ADW_NOTIFY_FLAG = 'Y'
1189 WHERE
1190 ADW_NOTIFY_FLAG = 'P';
1191
1192 END IF; -- IF ( ref_ser_type_count <> 0 )
1193
1194
1195 /* Txns refresh completed */
1196
1197 -- First mark all the rows need to be transferred
1198
1199 UPDATE
1200 PA_RESOURCE_ACCUM_DETAILS PRAD
1201 SET
1202 PRAD.ADW_NOTIFY_FLAG = 'S'
1203 WHERE
1204 PRAD.PROJECT_ID = SEL_PRJS_R.PROJECT_ID
1205 AND PRAD.ADW_NOTIFY_FLAG = 'Y'
1206 AND EXISTS
1207 ( SELECT 'Yes'
1208 FROM
1209 PA_ADW_RES_LISTS_V PRL
1210 WHERE PRAD.RESOURCE_LIST_ID = PRL.RESOURCE_LIST_ID
1211 );
1212
1213 txn_count := SQL%ROWCOUNT;
1214
1215 UPDATE
1216 PA_TXN_ACCUM
1217 SET
1218 ADW_NOTIFY_FLAG = 'S'
1219 WHERE
1220 PROJECT_ID = sel_prjs_r.project_id
1221 AND ADW_NOTIFY_FLAG = 'Y';
1222
1223 res_count := SQL%ROWCOUNT;
1224
1225 IF ( txn_count <> 0 OR res_count <> 0 ) THEN
1226
1227 -- Check the profile option value for collecting lowest tasks
1228
1229 IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y') THEN
1230
1231 -- collect Actuals/Cmts at lowest tasks level
1232
1233 x_err_stage := 'Collecting Actuals/Cmts txns at lowest task level';
1234
1235 pa_debug.debug(x_err_stage);
1236
1237 FOR lowest_act_cmts_r IN sel_lowest_act_cmts(sel_prjs_r.project_id) LOOP
1238
1239 pa_debug.debug('Sending for lowest task_id ' || to_char(lowest_act_cmts_r.task_id) || ' For Service Type ' || lowest_act_cmts_r.service_type_code);
1240
1241
1242 update_tasks_act_cmt
1243 (lowest_act_cmts_r.task_id,
1244 lowest_act_cmts_r.pa_period_key,
1245 lowest_act_cmts_r.expense_organization_id,
1249 lowest_act_cmts_r.expenditure_type,
1246 lowest_act_cmts_r.owner_organization_id,
1247 lowest_act_cmts_r.resource_list_member_id,
1248 lowest_act_cmts_r.service_type_code,
1250 lowest_act_cmts_r.user_col1,
1251 lowest_act_cmts_r.user_col2,
1252 lowest_act_cmts_r.user_col3,
1253 lowest_act_cmts_r.user_col4,
1254 lowest_act_cmts_r.user_col5,
1255 lowest_act_cmts_r.user_col6,
1256 lowest_act_cmts_r.user_col7,
1257 lowest_act_cmts_r.user_col8,
1258 lowest_act_cmts_r.user_col9,
1259 lowest_act_cmts_r.user_col10,
1260 lowest_act_cmts_r.accume_revenue,
1261 lowest_act_cmts_r.accume_raw_cost,
1262 lowest_act_cmts_r.accume_burdened_cost,
1263 lowest_act_cmts_r.accume_quantity,
1264 lowest_act_cmts_r.accume_labor_hours,
1265 lowest_act_cmts_r.accume_billable_raw_cost,
1266 lowest_act_cmts_r.accume_billable_burdened_cost,
1267 lowest_act_cmts_r.accume_billable_quantity,
1268 lowest_act_cmts_r.accume_billable_labor_hours,
1269 lowest_act_cmts_r.accume_cmt_raw_cost,
1270 lowest_act_cmts_r.accume_cmt_burdened_cost,
1271 lowest_act_cmts_r.accume_cmt_quantity,
1272 lowest_act_cmts_r.unit_of_measure,
1273 x_err_stage,
1274 x_err_stack,
1275 x_err_code);
1276
1277 END LOOP; -- FOR lowest_act_cmts_r IN sel_lowest_act_cmts
1278
1279 END IF; -- IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y')
1280
1281 -- Check the profile option value for collecting top tasks
1282
1283 IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y') THEN
1284
1285 -- collect Actuals/Cmts at top tasks level
1286
1287 x_err_stage := 'Collecting Actuals/Cmts txns at top task level';
1288
1289 pa_debug.debug(x_err_stage);
1290
1291 FOR top_act_cmts_r IN sel_top_act_cmts(sel_prjs_r.project_id) LOOP
1292
1293 pa_debug.debug('Sending for top task_id ' || to_char(top_act_cmts_r.top_task_id) || ' For Service Type ' || top_act_cmts_r.service_type_code);
1294
1295 update_tasks_act_cmt
1296 (top_act_cmts_r.top_task_id,
1297 top_act_cmts_r.pa_period_key,
1298 top_act_cmts_r.expense_organization_id,
1299 top_act_cmts_r.owner_organization_id,
1300 top_act_cmts_r.resource_list_member_id,
1301 top_act_cmts_r.service_type_code,
1302 top_act_cmts_r.expenditure_type,
1303 top_act_cmts_r.user_col1,
1304 top_act_cmts_r.user_col2,
1305 top_act_cmts_r.user_col3,
1306 top_act_cmts_r.user_col4,
1307 top_act_cmts_r.user_col5,
1308 top_act_cmts_r.user_col6,
1309 top_act_cmts_r.user_col7,
1310 top_act_cmts_r.user_col8,
1311 top_act_cmts_r.user_col9,
1312 top_act_cmts_r.user_col10,
1313 top_act_cmts_r.accume_revenue,
1314 top_act_cmts_r.accume_raw_cost,
1315 top_act_cmts_r.accume_burdened_cost,
1316 top_act_cmts_r.accume_quantity,
1317 top_act_cmts_r.accume_labor_hours,
1318 top_act_cmts_r.accume_billable_raw_cost,
1319 top_act_cmts_r.accume_billable_burdened_cost,
1320 top_act_cmts_r.accume_billable_quantity,
1321 top_act_cmts_r.accume_billable_labor_hours,
1322 top_act_cmts_r.accume_cmt_raw_cost,
1323 top_act_cmts_r.accume_cmt_burdened_cost,
1324 top_act_cmts_r.accume_cmt_quantity,
1325 top_act_cmts_r.unit_of_measure,
1326 x_err_stage,
1327 x_err_stack,
1328 x_err_code);
1329
1330 END LOOP; -- FOR top_act_cmts_r IN sel_top_act_cmts
1331
1332 END IF; -- IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y')
1333
1334 -- collect Actuals/Cmts at Project level
1335
1336 x_err_stage := 'Collecting Actuals/Cmts txns at Project level';
1337
1338 pa_debug.debug(x_err_stage);
1339
1340 FOR prj_act_cmts_r IN sel_prj_act_cmts(sel_prjs_r.project_id) LOOP
1341 pa_debug.debug('Sending for project_id ' || to_char(prj_act_cmts_r.project_id) || ' For Service Type ' || prj_act_cmts_r.service_type_code);
1342
1343
1344 update_prj_act_cmt
1345 (prj_act_cmts_r.project_id,
1346 prj_act_cmts_r.pa_period_key,
1347 prj_act_cmts_r.expense_organization_id,
1348 prj_act_cmts_r.owner_organization_id,
1349 prj_act_cmts_r.resource_list_member_id,
1350 prj_act_cmts_r.service_type_code,
1351 prj_act_cmts_r.expenditure_type,
1352 prj_act_cmts_r.user_col1,
1353 prj_act_cmts_r.user_col2,
1354 prj_act_cmts_r.user_col3,
1355 prj_act_cmts_r.user_col4,
1356 prj_act_cmts_r.user_col5,
1357 prj_act_cmts_r.user_col6,
1358 prj_act_cmts_r.user_col7,
1359 prj_act_cmts_r.user_col8,
1360 prj_act_cmts_r.user_col9,
1361 prj_act_cmts_r.user_col10,
1362 prj_act_cmts_r.accume_revenue,
1363 prj_act_cmts_r.accume_raw_cost,
1364 prj_act_cmts_r.accume_burdened_cost,
1365 prj_act_cmts_r.accume_quantity,
1366 prj_act_cmts_r.accume_labor_hours,
1367 prj_act_cmts_r.accume_billable_raw_cost,
1368 prj_act_cmts_r.accume_billable_burdened_cost,
1369 prj_act_cmts_r.accume_billable_quantity,
1370 prj_act_cmts_r.accume_billable_labor_hours,
1371 prj_act_cmts_r.accume_cmt_raw_cost,
1372 prj_act_cmts_r.accume_cmt_burdened_cost,
1373 prj_act_cmts_r.accume_cmt_quantity,
1374 prj_act_cmts_r.unit_of_measure,
1375 x_err_stage,
1376 x_err_stack,
1377 x_err_code);
1378
1379 END LOOP; -- FOR prj_act_cmts_r IN sel_prj_act_cmts
1380
1381 -- Mark the PA_TASK_HISTORY rows which were transferred
1382 -- Both for Low level task as well as top level tasks
1383
1384 UPDATE
1388 WHERE
1385 PA_TASK_HISTORY PTH
1386 SET
1387 ADW_INTERFACE_FLAG = 'Y'
1389 ADW_NOTIFY_FLAG = 'Y'
1390 AND PTH.TASK_ID IN
1391 (SELECT TASK_ID
1392 FROM PA_RESOURCE_ACCUM_DETAILS
1393 WHERE ADW_NOTIFY_FLAG = 'S'
1394 UNION
1395 SELECT TASK_ID
1396 FROM PA_TXN_ACCUM
1397 WHERE ADW_NOTIFY_FLAG = 'S'
1398 );
1399 pa_debug.debug('Marked '||TO_CHAR(SQL%ROWCOUNT)||' task rows transferred to interface table');
1400
1401 UPDATE
1402 PA_TASK_HISTORY PTH
1403 SET
1404 ADW_INTERFACE_FLAG = 'Y'
1405 WHERE
1406 ADW_NOTIFY_FLAG = 'Y'
1407 AND PTH.TASK_ID IN
1408 (SELECT TOP_TASK_ID FROM PA_TASK_HISTORY PTHT
1409 WHERE
1410 PTHT.ADW_NOTIFY_FLAG = 'Y'
1411 AND PTHT.TASK_ID IN
1412 (SELECT TASK_ID
1413 FROM PA_RESOURCE_ACCUM_DETAILS
1414 WHERE ADW_NOTIFY_FLAG = 'S'
1415 UNION
1416 SELECT TASK_ID
1417 FROM PA_TXN_ACCUM
1418 WHERE ADW_NOTIFY_FLAG = 'S'
1419 )
1420 );
1421 pa_debug.debug('Marked '||TO_CHAR(SQL%ROWCOUNT)||' top task rows transferred to interface table');
1422
1423 -- PLEASE NOTE THAT WE ARE UPDATING THE BASE TABLE SINCE THE
1424 -- PA_ADW_R_ACT_CMT_V IS DEFINED ON MULTIPLE TABLES
1425
1426 UPDATE
1427 PA_RESOURCE_ACCUM_DETAILS
1428 SET
1429 ADW_NOTIFY_FLAG = 'N'
1430 WHERE
1431 ADW_NOTIFY_FLAG = 'S';
1432
1433 UPDATE
1434 PA_TXN_ACCUM
1435 SET
1436 ADW_NOTIFY_FLAG = 'N'
1437 WHERE
1438 ADW_NOTIFY_FLAG = 'S';
1439
1440 END IF; -- IF (txn_count <> 0 OR res_count <> 0)
1441
1442 UPDATE PA_TASK_HISTORY PTH
1443 SET ADW_NOTIFY_FLAG = 'N'
1444 WHERE
1445 ADW_NOTIFY_FLAG = 'Y';
1446
1447 pa_debug.debug('Marked ' || TO_CHAR(SQL%ROWCOUNT) || ' task rows Not transferred to interface table');
1448 -- Commit the project
1449 COMMIT;
1450 END LOOP; -- FOR sel_prjs_r IN sel_prjs
1451
1452 x_err_stack := x_old_err_stack;
1453
1454 pa_debug.debug('Completed ' || x_err_stage);
1455
1456 EXCEPTION
1457 WHEN OTHERS THEN
1458 x_err_code := SQLCODE;
1459 RAISE;
1460 END get_fact_act_cmts;
1461
1462 PROCEDURE update_tasks_act_cmt
1463 (x_task_id IN NUMBER,
1464 x_pa_period_key IN VARCHAR2,
1465 x_expense_organization_id IN NUMBER,
1466 x_owner_organization_id IN NUMBER,
1467 x_resource_list_member_id IN NUMBER,
1468 x_service_type_code IN VARCHAR2,
1469 x_expenditure_type IN VARCHAR2,
1470 x_user_col1 IN VARCHAR2,
1471 x_user_col2 IN VARCHAR2,
1472 x_user_col3 IN VARCHAR2,
1473 x_user_col4 IN VARCHAR2,
1474 x_user_col5 IN VARCHAR2,
1475 x_user_col6 IN VARCHAR2,
1476 x_user_col7 IN VARCHAR2,
1477 x_user_col8 IN VARCHAR2,
1478 x_user_col9 IN VARCHAR2,
1479 x_user_col10 IN VARCHAR2,
1480 x_accume_revenue IN NUMBER,
1481 x_accume_raw_cost IN NUMBER,
1482 x_accume_burdened_cost IN NUMBER,
1483 x_accume_quantity IN NUMBER,
1484 x_accume_labor_hours IN NUMBER,
1485 x_accume_billable_raw_cost IN NUMBER,
1486 x_acc_billable_burdened_cost IN NUMBER,
1487 x_accume_billable_quantity IN NUMBER,
1488 x_accume_billable_labor_hours IN NUMBER,
1489 x_accume_cmt_raw_cost IN NUMBER,
1490 x_accume_cmt_burdened_cost IN NUMBER,
1491 x_accume_cmt_quantity IN NUMBER,
1492 x_unit_of_measure IN VARCHAR2,
1493 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1494 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1495 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
1496 IS
1497 x_old_err_stack VARCHAR2(1024);
1498 BEGIN
1499 x_err_code := 0;
1500 x_err_stage := 'Creating Task Level Actuals and Commitments Table';
1501 x_old_err_stack := x_err_stack;
1502 x_err_stack := x_err_stack || '-> update_tasks_act_cmt';
1503
1504 -- First Try to Update the Row in the Interface Table
1505
1506 UPDATE
1507 PA_TSK_ACT_CMT_IT
1508 SET
1509 LAST_UPDATE_DATE = TRUNC(SYSDATE),
1510 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
1511 CREATION_DATE = TRUNC(SYSDATE),
1512 CREATED_BY = X_CREATED_BY,
1513 USER_COL6 = X_USER_COL6,
1514 USER_COL7 = X_USER_COL7,
1515 USER_COL8 = X_USER_COL8,
1516 USER_COL9 = X_USER_COL9,
1517 USER_COL10 = X_USER_COL10,
1518 ACCUME_REVENUE = X_ACCUME_REVENUE,
1519 ACCUME_RAW_COST = X_ACCUME_RAW_COST,
1520 ACCUME_BURDENED_COST = X_ACCUME_BURDENED_COST,
1521 ACCUME_QUANTITY = X_ACCUME_QUANTITY,
1522 ACCUME_LABOR_HOURS = X_ACCUME_LABOR_HOURS,
1523 ACCUME_BILLABLE_RAW_COST = X_ACCUME_BILLABLE_RAW_COST,
1524 ACCUME_BILLABLE_BURDENED_COST = X_ACC_BILLABLE_BURDENED_COST,
1525 ACCUME_BILLABLE_QUANTITY = X_ACCUME_BILLABLE_QUANTITY,
1526 ACCUME_BILLABLE_LABOR_HOURS = X_ACCUME_BILLABLE_LABOR_HOURS,
1527 ACCUME_CMT_RAW_COST = X_ACCUME_CMT_RAW_COST,
1528 ACCUME_CMT_BURDENED_COST = X_ACCUME_CMT_BURDENED_COST,
1529 ACCUME_CMT_QUANTITY = X_ACCUME_CMT_QUANTITY,
1530 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
1534 PROGRAM_UPDATE_DATE = TRUNC(SYSDATE),
1531 REQUEST_ID = X_REQUEST_ID,
1532 PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
1533 PROGRAM_ID = X_PROGRAM_ID,
1535 STATUS_CODE = 'P'
1536 WHERE
1537 TASK_ID = X_TASK_ID
1538 AND PA_PERIOD_KEY = X_PA_PERIOD_KEY
1539 AND NVL(EXPENSE_ORGANIZATION_ID,-99) = NVL(X_EXPENSE_ORGANIZATION_ID,-99)
1540 AND NVL(OWNER_ORGANIZATION_ID,-99) = NVL(X_OWNER_ORGANIZATION_ID,-99)
1541 AND NVL(RESOURCE_LIST_MEMBER_ID,-99) = NVL(X_RESOURCE_LIST_MEMBER_ID,-99)
1542 AND NVL(SERVICE_TYPE_CODE,'X') = NVL(X_SERVICE_TYPE_CODE,'X')
1543 AND NVL(EXPENDITURE_TYPE,'X') = NVL(X_EXPENDITURE_TYPE,'X')
1544 AND NVL(USER_COL1,'X') = NVL(X_USER_COL1,'X')
1545 AND NVL(USER_COL2,'X') = NVL(X_USER_COL2,'X')
1546 AND NVL(USER_COL3,'X') = NVL(X_USER_COL3,'X')
1547 AND NVL(USER_COL4,'X') = NVL(X_USER_COL4,'X')
1548 AND NVL(USER_COL5,'X') = NVL(X_USER_COL5,'X')
1549 AND NVL(UNIT_OF_MEASURE,'X') = NVL(X_UNIT_OF_MEASURE,'X');
1550
1551 -- Check If Any row was updated
1552
1553 IF (SQL%ROWCOUNT = 0) THEN
1554
1555 -- No row was updated, So Insert a new row into the interface table
1556 INSERT INTO PA_TSK_ACT_CMT_IT
1557 (
1558 TASK_ACT_CMT_KEY,
1559 TASK_ID,
1560 PA_PERIOD_KEY,
1561 LAST_UPDATE_DATE,
1562 LAST_UPDATED_BY,
1563 CREATION_DATE,
1564 CREATED_BY,
1565 EXPENSE_ORGANIZATION_ID,
1566 OWNER_ORGANIZATION_ID,
1567 RESOURCE_LIST_MEMBER_ID,
1568 SERVICE_TYPE_CODE,
1569 EXPENDITURE_TYPE,
1570 USER_COL1,
1571 USER_COL2,
1572 USER_COL3,
1573 USER_COL4,
1574 USER_COL5,
1575 USER_COL6,
1576 USER_COL7,
1577 USER_COL8,
1578 USER_COL9,
1579 USER_COL10,
1580 ACCUME_REVENUE,
1581 ACCUME_RAW_COST,
1582 ACCUME_BURDENED_COST,
1583 ACCUME_QUANTITY,
1584 ACCUME_LABOR_HOURS,
1585 ACCUME_BILLABLE_RAW_COST,
1586 ACCUME_BILLABLE_BURDENED_COST,
1587 ACCUME_BILLABLE_QUANTITY,
1588 ACCUME_BILLABLE_LABOR_HOURS,
1589 ACCUME_CMT_RAW_COST,
1590 ACCUME_CMT_BURDENED_COST,
1591 ACCUME_CMT_QUANTITY,
1592 UNIT_OF_MEASURE,
1593 LAST_UPDATE_LOGIN,
1594 REQUEST_ID,
1595 PROGRAM_APPLICATION_ID,
1596 PROGRAM_ID,
1597 PROGRAM_UPDATE_DATE,
1598 STATUS_CODE
1599 )
1600 VALUES
1601 (
1602 X_TASK_ID || '-' || X_PA_PERIOD_KEY || '-' || --
1603 NVL(X_EXPENSE_ORGANIZATION_ID,-99) || '-' || --|
1604 NVL(X_OWNER_ORGANIZATION_ID,-99)|| '-' || --|
1605 NVL(X_RESOURCE_LIST_MEMBER_ID,-99)|| '-' || --|
1606 NVL(X_SERVICE_TYPE_CODE,'X')|| '-' || --| Dimension Keys
1607 NVL(X_EXPENDITURE_TYPE,'X')|| '-' || --|
1608 NVL(X_USER_COL1,'X')|| '-' || --|
1609 NVL(X_USER_COL2,'X')|| '-' || --|
1610 NVL(X_USER_COL3,'X')|| '-' || --|
1611 NVL(X_USER_COL4,'X')|| '-' || --|
1612 NVL(X_USER_COL5,'X'), --
1613 X_TASK_ID,
1614 X_PA_PERIOD_KEY,
1615 TRUNC(SYSDATE),
1616 X_LAST_UPDATED_BY,
1617 TRUNC(SYSDATE),
1618 X_CREATED_BY,
1619 X_EXPENSE_ORGANIZATION_ID,
1620 X_OWNER_ORGANIZATION_ID,
1621 X_RESOURCE_LIST_MEMBER_ID,
1622 X_SERVICE_TYPE_CODE,
1623 X_EXPENDITURE_TYPE,
1624 X_USER_COL1,
1625 X_USER_COL2,
1626 X_USER_COL3,
1627 X_USER_COL4,
1628 X_USER_COL5,
1629 X_USER_COL6,
1630 X_USER_COL7,
1631 X_USER_COL8,
1632 X_USER_COL9,
1633 X_USER_COL10,
1634 X_ACCUME_REVENUE,
1635 X_ACCUME_RAW_COST,
1636 X_ACCUME_BURDENED_COST,
1637 X_ACCUME_QUANTITY,
1638 X_ACCUME_LABOR_HOURS,
1639 X_ACCUME_BILLABLE_RAW_COST,
1640 X_ACC_BILLABLE_BURDENED_COST,
1641 X_ACCUME_BILLABLE_QUANTITY,
1642 X_ACCUME_BILLABLE_LABOR_HOURS,
1643 X_ACCUME_CMT_RAW_COST,
1644 X_ACCUME_CMT_BURDENED_COST,
1645 X_ACCUME_CMT_QUANTITY,
1646 X_UNIT_OF_MEASURE,
1647 X_LAST_UPDATE_LOGIN,
1648 X_REQUEST_ID,
1649 X_PROGRAM_APPLICATION_ID,
1650 X_PROGRAM_ID,
1651 TRUNC(SYSDATE),
1652 'P'
1653 );
1654
1655 END IF; -- IF ( SQL%ROWCOUNT = 0 )
1656
1657 x_err_stack := x_old_err_stack;
1658
1659 EXCEPTION
1660 WHEN OTHERS THEN
1661 x_err_code := SQLCODE;
1662 RAISE;
1663 END update_tasks_act_cmt;
1664
1665 -- Update the project level numbers
1666
1667 PROCEDURE update_prj_act_cmt
1668 (x_project_id IN NUMBER,
1669 x_pa_period_key IN VARCHAR2,
1670 x_expense_organization_id IN NUMBER,
1671 x_owner_organization_id IN NUMBER,
1672 x_resource_list_member_id IN NUMBER,
1673 x_service_type_code IN VARCHAR2,
1674 x_expenditure_type IN VARCHAR2,
1675 x_user_col1 IN VARCHAR2,
1676 x_user_col2 IN VARCHAR2,
1677 x_user_col3 IN VARCHAR2,
1678 x_user_col4 IN VARCHAR2,
1679 x_user_col5 IN VARCHAR2,
1680 x_user_col6 IN VARCHAR2,
1681 x_user_col7 IN VARCHAR2,
1682 x_user_col8 IN VARCHAR2,
1683 x_user_col9 IN VARCHAR2,
1684 x_user_col10 IN VARCHAR2,
1685 x_accume_revenue IN NUMBER,
1686 x_accume_raw_cost IN NUMBER,
1687 x_accume_burdened_cost IN NUMBER,
1688 x_accume_quantity IN NUMBER,
1689 x_accume_labor_hours IN NUMBER,
1693 x_accume_billable_labor_hours IN NUMBER,
1690 x_accume_billable_raw_cost IN NUMBER,
1691 x_acc_billable_burdened_cost IN NUMBER,
1692 x_accume_billable_quantity IN NUMBER,
1694 x_accume_cmt_raw_cost IN NUMBER,
1695 x_accume_cmt_burdened_cost IN NUMBER,
1696 x_accume_cmt_quantity IN NUMBER,
1697 x_unit_of_measure IN VARCHAR2,
1698 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1699 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1700 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
1701 IS
1702 x_old_err_stack VARCHAR2(1024);
1703 BEGIN
1704 x_err_code := 0;
1705 x_err_stage := 'Creating Project Level Actuals and Commitments Table';
1706 x_old_err_stack := x_err_stack;
1707 x_err_stack := x_err_stack || '-> update_prj_act_cmt';
1708
1709 -- First Try to Update the Row in the Interface Table
1710
1711 UPDATE
1712 PA_PRJ_ACT_CMT_IT
1713 SET
1714 LAST_UPDATE_DATE = TRUNC(SYSDATE),
1715 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
1716 CREATION_DATE = TRUNC(SYSDATE),
1717 CREATED_BY = X_CREATED_BY,
1718 USER_COL6 = X_USER_COL6,
1719 USER_COL7 = X_USER_COL7,
1720 USER_COL8 = X_USER_COL8,
1721 USER_COL9 = X_USER_COL9,
1722 USER_COL10 = X_USER_COL10,
1723 ACCUME_REVENUE = X_ACCUME_REVENUE,
1724 ACCUME_RAW_COST = X_ACCUME_RAW_COST,
1725 ACCUME_BURDENED_COST = X_ACCUME_BURDENED_COST,
1726 ACCUME_QUANTITY = X_ACCUME_QUANTITY,
1727 ACCUME_LABOR_HOURS = X_ACCUME_LABOR_HOURS,
1728 ACCUME_BILLABLE_RAW_COST = X_ACCUME_BILLABLE_RAW_COST,
1729 ACCUME_BILLABLE_BURDENED_COST = X_ACC_BILLABLE_BURDENED_COST,
1730 ACCUME_BILLABLE_QUANTITY = X_ACCUME_BILLABLE_QUANTITY,
1731 ACCUME_BILLABLE_LABOR_HOURS = X_ACCUME_BILLABLE_LABOR_HOURS,
1732 ACCUME_CMT_RAW_COST = X_ACCUME_CMT_RAW_COST,
1733 ACCUME_CMT_BURDENED_COST = X_ACCUME_CMT_BURDENED_COST,
1734 ACCUME_CMT_QUANTITY = X_ACCUME_CMT_QUANTITY,
1735 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
1736 REQUEST_ID = X_REQUEST_ID,
1737 PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
1738 PROGRAM_ID = X_PROGRAM_ID,
1739 PROGRAM_UPDATE_DATE = TRUNC(SYSDATE),
1740 STATUS_CODE = 'P'
1741 WHERE
1742 PROJECT_ID = X_PROJECT_ID
1743 AND PA_PERIOD_KEY = X_PA_PERIOD_KEY
1744 AND NVL(EXPENSE_ORGANIZATION_ID,-99) = NVL(X_EXPENSE_ORGANIZATION_ID,-99)
1745 AND NVL(OWNER_ORGANIZATION_ID,-99) = NVL(X_OWNER_ORGANIZATION_ID,-99)
1746 AND NVL(RESOURCE_LIST_MEMBER_ID,-99) = NVL(X_RESOURCE_LIST_MEMBER_ID,-99)
1747 AND NVL(SERVICE_TYPE_CODE,'X') = NVL(X_SERVICE_TYPE_CODE,'X')
1748 AND NVL(EXPENDITURE_TYPE,'X') = NVL(X_EXPENDITURE_TYPE,'X')
1749 AND NVL(USER_COL1,'X') = NVL(X_USER_COL1,'X')
1750 AND NVL(USER_COL2,'X') = NVL(X_USER_COL2,'X')
1751 AND NVL(USER_COL3,'X') = NVL(X_USER_COL3,'X')
1752 AND NVL(USER_COL4,'X') = NVL(X_USER_COL4,'X')
1753 AND NVL(USER_COL5,'X') = NVL(X_USER_COL5,'X')
1754 AND NVL(UNIT_OF_MEASURE,'X') = NVL(X_UNIT_OF_MEASURE,'X');
1755
1756 -- Check If Any row was updated
1757
1758 IF (SQL%ROWCOUNT = 0) THEN
1759 -- No row was updated, So Insert a new row into the interface table
1760 INSERT INTO PA_PRJ_ACT_CMT_IT
1761 (
1762 PRJ_ACT_CMT_KEY,
1763 PROJECT_ID,
1764 PA_PERIOD_KEY,
1765 LAST_UPDATE_DATE,
1766 LAST_UPDATED_BY,
1767 CREATION_DATE,
1768 CREATED_BY,
1769 EXPENSE_ORGANIZATION_ID,
1770 OWNER_ORGANIZATION_ID,
1771 RESOURCE_LIST_MEMBER_ID,
1772 SERVICE_TYPE_CODE,
1773 EXPENDITURE_TYPE,
1774 USER_COL1,
1775 USER_COL2,
1776 USER_COL3,
1777 USER_COL4,
1778 USER_COL5,
1779 USER_COL6,
1780 USER_COL7,
1781 USER_COL8,
1782 USER_COL9,
1783 USER_COL10,
1784 ACCUME_REVENUE,
1785 ACCUME_RAW_COST,
1786 ACCUME_BURDENED_COST,
1787 ACCUME_QUANTITY,
1788 ACCUME_LABOR_HOURS,
1789 ACCUME_BILLABLE_RAW_COST,
1790 ACCUME_BILLABLE_BURDENED_COST,
1791 ACCUME_BILLABLE_QUANTITY,
1792 ACCUME_BILLABLE_LABOR_HOURS,
1793 ACCUME_CMT_RAW_COST,
1794 ACCUME_CMT_BURDENED_COST,
1795 ACCUME_CMT_QUANTITY,
1796 UNIT_OF_MEASURE,
1797 LAST_UPDATE_LOGIN,
1798 REQUEST_ID,
1799 PROGRAM_APPLICATION_ID,
1800 PROGRAM_ID,
1801 PROGRAM_UPDATE_DATE,
1802 STATUS_CODE
1803 )
1804 VALUES
1805 (
1806 X_PROJECT_ID || '-' || X_PA_PERIOD_KEY || '-' || --
1807 NVL(X_EXPENSE_ORGANIZATION_ID,-99) || '-' || --|
1808 NVL(X_OWNER_ORGANIZATION_ID,-99)|| '-' || --|
1809 NVL(X_RESOURCE_LIST_MEMBER_ID,-99)|| '-' || --|
1810 NVL(X_SERVICE_TYPE_CODE,'X')|| '-' || --| Dimension Keys
1811 NVL(X_EXPENDITURE_TYPE,'X')|| '-' || --|
1812 NVL(X_USER_COL1,'X')|| '-' || --|
1813 NVL(X_USER_COL2,'X')|| '-' || --|
1814 NVL(X_USER_COL3,'X')|| '-' || --|
1815 NVL(X_USER_COL4,'X')|| '-' || --|
1816 NVL(X_USER_COL5,'X'), --
1817 X_PROJECT_ID,
1818 X_PA_PERIOD_KEY,
1819 TRUNC(SYSDATE),
1820 X_LAST_UPDATED_BY,
1821 TRUNC(SYSDATE),
1822 X_CREATED_BY,
1823 X_EXPENSE_ORGANIZATION_ID,
1824 X_OWNER_ORGANIZATION_ID,
1825 X_RESOURCE_LIST_MEMBER_ID,
1826 X_SERVICE_TYPE_CODE,
1827 X_EXPENDITURE_TYPE,
1828 X_USER_COL1,
1829 X_USER_COL2,
1830 X_USER_COL3,
1834 X_USER_COL7,
1831 X_USER_COL4,
1832 X_USER_COL5,
1833 X_USER_COL6,
1835 X_USER_COL8,
1836 X_USER_COL9,
1837 X_USER_COL10,
1838 X_ACCUME_REVENUE,
1839 X_ACCUME_RAW_COST,
1840 X_ACCUME_BURDENED_COST,
1841 X_ACCUME_QUANTITY,
1842 X_ACCUME_LABOR_HOURS,
1843 X_ACCUME_BILLABLE_RAW_COST,
1844 X_ACC_BILLABLE_BURDENED_COST,
1845 X_ACCUME_BILLABLE_QUANTITY,
1846 X_ACCUME_BILLABLE_LABOR_HOURS,
1847 X_ACCUME_CMT_RAW_COST,
1848 X_ACCUME_CMT_BURDENED_COST,
1849 X_ACCUME_CMT_QUANTITY,
1850 X_UNIT_OF_MEASURE,
1851 X_LAST_UPDATE_LOGIN,
1852 X_REQUEST_ID,
1853 X_PROGRAM_APPLICATION_ID,
1854 X_PROGRAM_ID,
1855 TRUNC(SYSDATE),
1856 'P'
1857 );
1858
1859 END IF; -- IF ( SQL%ROWCOUNT = 0 )
1860
1861 x_err_stack := x_old_err_stack;
1862
1863 EXCEPTION
1864 WHEN OTHERS THEN
1865 x_err_code := SQLCODE;
1866 RAISE;
1867 END update_prj_act_cmt;
1868
1869 -- Procedure to collect budgets
1870
1871 PROCEDURE get_fact_budgets
1872 ( x_project_num_from IN VARCHAR2,
1873 x_project_num_to IN VARCHAR2,
1874 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1875 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
1876 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
1877 IS
1878
1879 -- Cursor for refreshing budgets at lowest level of task
1880
1881 CURSOR sel_ref_lowest_budgets(x_project_id NUMBER) IS
1882 SELECT
1883 PBGT.TASK_ID,
1884 PBGT.PA_PERIOD_KEY,
1885 PBGT.BUDGET_TYPE_CODE,
1886 PBGT.RESOURCE_LIST_MEMBER_ID,
1887 PBGT.SERVICE_TYPE_CODE,
1888 PBGT.OWNER_ORGANIZATION_ID,
1889 PBGT.EXPENDITURE_TYPE,
1890 PBGT.USER_COL1,
1891 PBGT.USER_COL2,
1892 PBGT.USER_COL3,
1893 PBGT.USER_COL4,
1894 PBGT.USER_COL5,
1895 SUM(PBGT.USER_COL6) USER_COL6,
1896 SUM(PBGT.USER_COL7) USER_COL7,
1897 SUM(PBGT.USER_COL8) USER_COL8,
1898 SUM(PBGT.USER_COL9) USER_COL9,
1899 SUM(PBGT.USER_COL10) USER_COL10,
1900 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
1901 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
1902 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
1903 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
1904 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
1905 PBGT.BGT_UNIT_OF_MEASURE
1906 FROM
1907 PA_ADW_R_BGT_LINES_V PBGT,
1908 PA_ADW_LOWEST_TASKS_V PT
1909 WHERE
1910 PBGT.TASK_ID = PT.TASK_ID
1911 AND PBGT.PROJECT_ID = x_project_id
1912 -- Exclude the tasks which are top tasks
1913 AND PT.TASK_ID <> PT.TOP_TASK_ID
1914 AND PBGT.ADW_NOTIFY_FLAG = 'R'
1915 GROUP BY
1916 PBGT.TASK_ID,
1917 PBGT.PA_PERIOD_KEY,
1918 PBGT.BUDGET_TYPE_CODE,
1919 PBGT.RESOURCE_LIST_MEMBER_ID,
1920 PBGT.SERVICE_TYPE_CODE,
1921 PBGT.OWNER_ORGANIZATION_ID,
1922 PBGT.EXPENDITURE_TYPE,
1923 PBGT.USER_COL1,
1924 PBGT.USER_COL2,
1925 PBGT.USER_COL3,
1926 PBGT.USER_COL4,
1927 PBGT.USER_COL5,
1928 PBGT.BGT_UNIT_OF_MEASURE;
1929
1930 -- Cursor for refreshing budgets at top level of task
1931
1932 CURSOR sel_ref_top_budgets(x_project_id NUMBER) IS
1933 SELECT
1934 PBGT.TOP_TASK_ID,
1935 PBGT.PA_PERIOD_KEY,
1936 PBGT.BUDGET_TYPE_CODE,
1937 PBGT.RESOURCE_LIST_MEMBER_ID,
1938 PBGT.SERVICE_TYPE_CODE,
1939 PBGT.OWNER_ORGANIZATION_ID,
1940 PBGT.EXPENDITURE_TYPE,
1941 PBGT.USER_COL1,
1942 PBGT.USER_COL2,
1943 PBGT.USER_COL3,
1944 PBGT.USER_COL4,
1945 PBGT.USER_COL5,
1946 SUM(PBGT.USER_COL6) USER_COL6,
1947 SUM(PBGT.USER_COL7) USER_COL7,
1948 SUM(PBGT.USER_COL8) USER_COL8,
1949 SUM(PBGT.USER_COL9) USER_COL9,
1950 SUM(PBGT.USER_COL10) USER_COL10,
1951 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
1952 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
1953 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
1954 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
1955 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
1956 PBGT.BGT_UNIT_OF_MEASURE
1957 FROM
1958 PA_ADW_R_BGT_LINES_V PBGT,
1959 PA_ADW_TOP_TASKS_V PT
1960 WHERE
1961 PBGT.TOP_TASK_ID = PT.TOP_TASK_ID
1962 AND PBGT.PROJECT_ID = x_project_id
1963 AND PBGT.ADW_NOTIFY_FLAG = 'R'
1964 GROUP BY
1965 PBGT.TOP_TASK_ID,
1966 PBGT.PA_PERIOD_KEY,
1967 PBGT.BUDGET_TYPE_CODE,
1968 PBGT.RESOURCE_LIST_MEMBER_ID,
1969 PBGT.SERVICE_TYPE_CODE,
1970 PBGT.OWNER_ORGANIZATION_ID,
1971 PBGT.EXPENDITURE_TYPE,
1972 PBGT.USER_COL1,
1973 PBGT.USER_COL2,
1974 PBGT.USER_COL3,
1975 PBGT.USER_COL4,
1976 PBGT.USER_COL5,
1977 PBGT.BGT_UNIT_OF_MEASURE;
1978
1979 -- Cursor for refreshing budgets at project level
1980
1981 CURSOR sel_ref_prj_budgets(x_project_id NUMBER) IS
1982 SELECT
1983 PBGT.PROJECT_ID,
1984 PBGT.PA_PERIOD_KEY,
1985 PBGT.BUDGET_TYPE_CODE,
1986 PBGT.RESOURCE_LIST_MEMBER_ID,
1987 PBGT.SERVICE_TYPE_CODE,
1988 PBGT.OWNER_ORGANIZATION_ID,
1992 PBGT.USER_COL3,
1989 PBGT.EXPENDITURE_TYPE,
1990 PBGT.USER_COL1,
1991 PBGT.USER_COL2,
1993 PBGT.USER_COL4,
1994 PBGT.USER_COL5,
1995 SUM(PBGT.USER_COL6) USER_COL6,
1996 SUM(PBGT.USER_COL7) USER_COL7,
1997 SUM(PBGT.USER_COL8) USER_COL8,
1998 SUM(PBGT.USER_COL9) USER_COL9,
1999 SUM(PBGT.USER_COL10) USER_COL10,
2000 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
2001 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
2002 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
2003 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
2004 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
2005 PBGT.BGT_UNIT_OF_MEASURE
2006 FROM
2007 PA_ADW_R_BGT_LINES_V PBGT,
2008 PA_ADW_PROJECTS_V PP
2009 WHERE
2010 PBGT.PROJECT_ID = PP.PROJECT_ID
2011 AND PBGT.PROJECT_ID = x_project_id
2012 AND PBGT.ADW_NOTIFY_FLAG = 'R'
2013 GROUP BY
2014 PBGT.PROJECT_ID,
2015 PBGT.PA_PERIOD_KEY,
2016 PBGT.BUDGET_TYPE_CODE,
2017 PBGT.RESOURCE_LIST_MEMBER_ID,
2018 PBGT.SERVICE_TYPE_CODE,
2019 PBGT.OWNER_ORGANIZATION_ID,
2020 PBGT.EXPENDITURE_TYPE,
2021 PBGT.USER_COL1,
2022 PBGT.USER_COL2,
2023 PBGT.USER_COL3,
2024 PBGT.USER_COL4,
2025 PBGT.USER_COL5,
2026 PBGT.BGT_UNIT_OF_MEASURE;
2027
2028 -- Define Cursor for selecting budgets at lowest level of task.
2029
2030 CURSOR sel_lowest_budgets(x_project_id NUMBER) IS
2031 SELECT
2032 PBGT.TASK_ID,
2033 PBGT.PA_PERIOD_KEY,
2034 PBGT.BUDGET_TYPE_CODE,
2035 PBGT.RESOURCE_LIST_MEMBER_ID,
2036 PBGT.SERVICE_TYPE_CODE,
2037 PBGT.OWNER_ORGANIZATION_ID,
2038 PBGT.EXPENDITURE_TYPE,
2039 PBGT.USER_COL1,
2040 PBGT.USER_COL2,
2041 PBGT.USER_COL3,
2042 PBGT.USER_COL4,
2043 PBGT.USER_COL5,
2044 SUM(PBGT.USER_COL6) USER_COL6,
2045 SUM(PBGT.USER_COL7) USER_COL7,
2046 SUM(PBGT.USER_COL8) USER_COL8,
2047 SUM(PBGT.USER_COL9) USER_COL9,
2048 SUM(PBGT.USER_COL10) USER_COL10,
2049 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
2050 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
2051 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
2052 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
2053 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
2054 PBGT.BGT_UNIT_OF_MEASURE
2055 FROM
2056 PA_ADW_BGT_LINES_V PBGT,
2057 PA_ADW_LOWEST_TASKS_V PT
2058 WHERE
2059 PBGT.TASK_ID = PT.TASK_ID
2060 -- Exclude the tasks which are top tasks
2061 AND PT.TASK_ID <> PT.TOP_TASK_ID
2062 AND PBGT.PROJECT_ID = x_project_id
2063 AND PBGT.ADW_NOTIFY_FLAG = 'S'
2064 GROUP BY
2065 PBGT.TASK_ID,
2066 PBGT.PA_PERIOD_KEY,
2067 PBGT.BUDGET_TYPE_CODE,
2068 PBGT.RESOURCE_LIST_MEMBER_ID,
2069 PBGT.SERVICE_TYPE_CODE,
2070 PBGT.OWNER_ORGANIZATION_ID,
2071 PBGT.EXPENDITURE_TYPE,
2072 PBGT.USER_COL1,
2073 PBGT.USER_COL2,
2074 PBGT.USER_COL3,
2075 PBGT.USER_COL4,
2076 PBGT.USER_COL5,
2077 PBGT.BGT_UNIT_OF_MEASURE;
2078
2079 -- Define Cursor for selecting budgets at top level of task.
2080
2081 CURSOR sel_top_budgets(x_project_id NUMBER) IS
2082 SELECT
2083 PBGT.TOP_TASK_ID,
2084 PBGT.PA_PERIOD_KEY,
2085 PBGT.BUDGET_TYPE_CODE,
2086 PBGT.RESOURCE_LIST_MEMBER_ID,
2087 PBGT.SERVICE_TYPE_CODE,
2088 PBGT.OWNER_ORGANIZATION_ID,
2089 PBGT.EXPENDITURE_TYPE,
2090 PBGT.USER_COL1,
2091 PBGT.USER_COL2,
2092 PBGT.USER_COL3,
2093 PBGT.USER_COL4,
2094 PBGT.USER_COL5,
2095 SUM(PBGT.USER_COL6) USER_COL6,
2096 SUM(PBGT.USER_COL7) USER_COL7,
2097 SUM(PBGT.USER_COL8) USER_COL8,
2098 SUM(PBGT.USER_COL9) USER_COL9,
2099 SUM(PBGT.USER_COL10) USER_COL10,
2100 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
2101 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
2102 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
2103 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
2104 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
2105 PBGT.BGT_UNIT_OF_MEASURE
2106 FROM
2107 PA_ADW_BGT_LINES_V PBGT,
2108 PA_ADW_TOP_TASKS_V PT
2109 WHERE
2110 PBGT.TOP_TASK_ID = PT.TOP_TASK_ID
2111 AND PBGT.PROJECT_ID = x_project_id
2112 AND PBGT.ADW_NOTIFY_FLAG = 'S'
2113 GROUP BY
2114 PBGT.TOP_TASK_ID,
2115 PBGT.PA_PERIOD_KEY,
2116 PBGT.BUDGET_TYPE_CODE,
2117 PBGT.RESOURCE_LIST_MEMBER_ID,
2118 PBGT.SERVICE_TYPE_CODE,
2119 PBGT.OWNER_ORGANIZATION_ID,
2120 PBGT.EXPENDITURE_TYPE,
2121 PBGT.USER_COL1,
2122 PBGT.USER_COL2,
2123 PBGT.USER_COL3,
2124 PBGT.USER_COL4,
2125 PBGT.USER_COL5,
2126 PBGT.BGT_UNIT_OF_MEASURE;
2127
2128 -- Define Cursor for selecting budgets at project level.
2129
2130 CURSOR sel_prj_budgets(x_project_id NUMBER) IS
2131 SELECT
2132 PBGT.PROJECT_ID,
2133 PBGT.PA_PERIOD_KEY,
2134 PBGT.BUDGET_TYPE_CODE,
2135 PBGT.RESOURCE_LIST_MEMBER_ID,
2136 PBGT.SERVICE_TYPE_CODE,
2137 PBGT.OWNER_ORGANIZATION_ID,
2138 PBGT.EXPENDITURE_TYPE,
2139 PBGT.USER_COL1,
2140 PBGT.USER_COL2,
2141 PBGT.USER_COL3,
2142 PBGT.USER_COL4,
2146 SUM(PBGT.USER_COL8) USER_COL8,
2143 PBGT.USER_COL5,
2144 SUM(PBGT.USER_COL6) USER_COL6,
2145 SUM(PBGT.USER_COL7) USER_COL7,
2147 SUM(PBGT.USER_COL9) USER_COL9,
2148 SUM(PBGT.USER_COL10) USER_COL10,
2149 SUM(PBGT.BGT_RAW_COST) BGT_RAW_COST,
2150 SUM(PBGT.BGT_BURDENED_COST) BGT_BURDENED_COST,
2151 SUM(PBGT.BGT_REVENUE) BGT_REVENUE,
2152 SUM(PBGT.BGT_QUANTITY) BGT_QUANTITY,
2153 SUM(PBGT.BGT_LABOR_QUANTITY) BGT_LABOR_QUANTITY,
2154 PBGT.BGT_UNIT_OF_MEASURE
2155 FROM
2156 PA_ADW_BGT_LINES_V PBGT,
2157 PA_ADW_PROJECTS_V PP
2158 WHERE
2159 PBGT.PROJECT_ID = PP.PROJECT_ID
2160 AND PBGT.PROJECT_ID = x_project_id
2161 AND PBGT.ADW_NOTIFY_FLAG = 'S'
2162 GROUP BY
2163 PBGT.PROJECT_ID,
2164 PBGT.PA_PERIOD_KEY,
2165 PBGT.BUDGET_TYPE_CODE,
2166 PBGT.RESOURCE_LIST_MEMBER_ID,
2167 PBGT.SERVICE_TYPE_CODE,
2168 PBGT.OWNER_ORGANIZATION_ID,
2169 PBGT.EXPENDITURE_TYPE,
2170 PBGT.USER_COL1,
2171 PBGT.USER_COL2,
2172 PBGT.USER_COL3,
2173 PBGT.USER_COL4,
2174 PBGT.USER_COL5,
2175 PBGT.BGT_UNIT_OF_MEASURE;
2176
2177 -- Cursor for selecting projects for processing
2178
2179 CURSOR sel_prjs IS
2180 SELECT
2181 PROJECT_ID,
2182 SEGMENT1
2183 FROM
2184 PA_ADW_PROJECTS_V
2185 WHERE segment1 BETWEEN NVL(x_project_num_from,segment1)
2186 AND NVL(x_project_num_to,segment1);
2187
2188 -- define procedure variables
2189
2190 ref_lowest_budgets_r sel_ref_lowest_budgets%ROWTYPE;
2191 ref_top_budgets_r sel_ref_top_budgets%ROWTYPE;
2192 ref_prj_budgets_r sel_ref_prj_budgets%ROWTYPE;
2193
2194 lowest_budgets_r sel_lowest_budgets%ROWTYPE;
2195 top_budgets_r sel_top_budgets%ROWTYPE;
2196 prj_budgets_r sel_prj_budgets%ROWTYPE;
2197
2198 sel_prjs_r sel_prjs%ROWTYPE;
2199
2200 x_old_err_stack VARCHAR2(1024);
2201
2202
2203 BEGIN
2204 x_err_code := 0;
2205 x_err_stage := 'Collecting Budgets';
2206 x_old_err_stack := x_err_stack;
2207 x_err_stack := x_err_stack || '-> get_fact_budgets';
2208
2209 pa_debug.debug(x_err_stage);
2210
2211 -- Process all projects one one by one
2212
2213 FOR sel_prjs_r IN sel_prjs LOOP
2214
2215 pa_debug.debug('Processing Budgets For Project ' || sel_prjs_r.segment1);
2216
2217 -- First mark all the budgets need to be transferred
2218 -- We will transfer the latest baselined budget only
2219
2220 UPDATE
2221 PA_BUDGET_VERSIONS PBV
2222 SET
2223 ADW_NOTIFY_FLAG = 'S'
2224 WHERE
2225 PROJECT_ID = SEL_PRJS_R.PROJECT_ID
2226 AND CURRENT_FLAG = 'Y'
2227 AND ADW_NOTIFY_FLAG = 'Y'
2228 AND EXISTS
2229 ( SELECT 'Yes'
2230 FROM
2231 PA_ADW_BGT_TYPES_V PBT
2232 WHERE PBT.BUDGET_TYPE_CODE = PBV.BUDGET_TYPE_CODE
2233 );
2234
2235 IF ( SQL%ROWCOUNT <> 0 ) THEN
2236
2237 -- Mark those budgets for refresh for which new version of the budgets
2238 -- were created. Only those budgets will be refreshed which were sent
2239 -- earlier
2240
2241 UPDATE
2242 PA_BUDGET_VERSIONS
2243 SET
2244 ADW_NOTIFY_FLAG = 'R'
2245 WHERE
2246 PROJECT_ID = sel_prjs_r.project_id
2247 AND (BUDGET_TYPE_CODE,VERSION_NUMBER) IN
2248 ( SELECT
2249 BUDGET_TYPE_CODE,
2250 MAX(VERSION_NUMBER)
2251 FROM
2252 PA_BUDGET_VERSIONS OB
2253 WHERE
2254 OB.PROJECT_ID = sel_prjs_r.project_id
2255 AND BUDGET_TYPE_CODE IN
2256 ( SELECT
2257 BUDGET_TYPE_CODE
2258 FROM
2259 PA_ADW_BGT_TYPES_V
2260 )
2261 AND OB.ADW_NOTIFY_FLAG = 'N'
2262 AND EXISTS
2263 -- Check if a new budget was baselined, since the time the this budget was sent
2264 ( SELECT
2265 'YES'
2266 FROM
2267 PA_BUDGET_VERSIONS NB
2268 WHERE
2269 NB.PROJECT_ID = sel_prjs_r.project_id
2270 AND NB.BUDGET_TYPE_CODE = OB.BUDGET_TYPE_CODE
2271 AND NB.ADW_NOTIFY_FLAG = 'S'
2272 )
2273 GROUP BY
2274 OB.BUDGET_TYPE_CODE
2275 );
2276
2277 -- Check the profile option value for collecting lowest tasks
2278
2279 IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y') THEN
2280
2281 -- refreshing Budgets at lowest tasks level
2282
2283 x_err_stage := 'Collecting Budgets at lowest task level';
2284
2285 FOR ref_lowest_budgets_r IN sel_ref_lowest_budgets(sel_prjs_r.project_id) LOOP
2286
2287 update_tasks_budgets
2288 (ref_lowest_budgets_r.task_id,
2289 ref_lowest_budgets_r.pa_period_key,
2290 ref_lowest_budgets_r.budget_type_code,
2291 ref_lowest_budgets_r.resource_list_member_id,
2292 ref_lowest_budgets_r.service_type_code,
2293 ref_lowest_budgets_r.owner_organization_id,
2294 ref_lowest_budgets_r.expenditure_type,
2295 ref_lowest_budgets_r.user_col1,
2296 ref_lowest_budgets_r.user_col2,
2297 ref_lowest_budgets_r.user_col3,
2298 ref_lowest_budgets_r.user_col4,
2299 ref_lowest_budgets_r.user_col5,
2300 ref_lowest_budgets_r.user_col6,
2301 ref_lowest_budgets_r.user_col7,
2302 ref_lowest_budgets_r.user_col8,
2303 ref_lowest_budgets_r.user_col9,
2304 ref_lowest_budgets_r.user_col10,
2305 ref_lowest_budgets_r.bgt_revenue,
2306 ref_lowest_budgets_r.bgt_raw_cost,
2307 ref_lowest_budgets_r.bgt_burdened_cost,
2308 ref_lowest_budgets_r.bgt_quantity,
2309 ref_lowest_budgets_r.bgt_labor_quantity,
2310 ref_lowest_budgets_r.bgt_unit_of_measure,
2311 x_err_stage,
2312 x_err_stack,
2313 x_err_code);
2314
2315 END LOOP; -- FOR ref_lowest_budgets_r IN sel_ref_lowest_budgets
2316
2317 END IF; -- IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y')
2318
2319 -- Check the profile option value for collecting top tasks
2320 IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y') THEN
2321
2322 -- refreshing Budgets at top tasks level
2323
2324 x_err_stage := 'Collecting Budgets at top task level';
2325
2326 FOR ref_top_budgets_r IN sel_ref_top_budgets(sel_prjs_r.project_id) LOOP
2327
2328 update_tasks_budgets
2329 (ref_top_budgets_r.top_task_id,
2330 ref_top_budgets_r.pa_period_key,
2331 ref_top_budgets_r.budget_type_code,
2332 ref_top_budgets_r.resource_list_member_id,
2333 ref_top_budgets_r.service_type_code,
2334 ref_top_budgets_r.owner_organization_id,
2335 ref_top_budgets_r.expenditure_type,
2336 ref_top_budgets_r.user_col1,
2337 ref_top_budgets_r.user_col2,
2338 ref_top_budgets_r.user_col3,
2339 ref_top_budgets_r.user_col4,
2340 ref_top_budgets_r.user_col5,
2341 ref_top_budgets_r.user_col6,
2342 ref_top_budgets_r.user_col7,
2343 ref_top_budgets_r.user_col8,
2344 ref_top_budgets_r.user_col9,
2345 ref_top_budgets_r.user_col10,
2346 ref_top_budgets_r.bgt_revenue,
2347 ref_top_budgets_r.bgt_raw_cost,
2348 ref_top_budgets_r.bgt_burdened_cost,
2349 ref_top_budgets_r.bgt_quantity,
2350 ref_top_budgets_r.bgt_labor_quantity,
2351 ref_top_budgets_r.bgt_unit_of_measure,
2352 x_err_stage,
2353 x_err_stack,
2354 x_err_code);
2355
2356 END LOOP; -- FOR ref_top_budgets_r IN sel_ref_top_budgets
2357
2358 END IF; -- IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y')
2359
2360 -- Refreshing Budgets at Project level
2361
2362 x_err_stage := 'Refreshing Budgets txns at Project level';
2363
2364 FOR ref_prj_budgets_r IN sel_ref_prj_budgets(sel_prjs_r.project_id) LOOP
2365
2366 update_prj_budgets
2367 (ref_prj_budgets_r.project_id,
2368 ref_prj_budgets_r.pa_period_key,
2369 ref_prj_budgets_r.budget_type_code,
2370 ref_prj_budgets_r.resource_list_member_id,
2371 ref_prj_budgets_r.service_type_code,
2372 ref_prj_budgets_r.owner_organization_id,
2373 ref_prj_budgets_r.expenditure_type,
2374 ref_prj_budgets_r.user_col1,
2375 ref_prj_budgets_r.user_col2,
2376 ref_prj_budgets_r.user_col3,
2377 ref_prj_budgets_r.user_col4,
2378 ref_prj_budgets_r.user_col5,
2379 ref_prj_budgets_r.user_col6,
2380 ref_prj_budgets_r.user_col7,
2381 ref_prj_budgets_r.user_col8,
2382 ref_prj_budgets_r.user_col9,
2383 ref_prj_budgets_r.user_col10,
2384 ref_prj_budgets_r.bgt_revenue,
2385 ref_prj_budgets_r.bgt_raw_cost,
2386 ref_prj_budgets_r.bgt_burdened_cost,
2387 ref_prj_budgets_r.bgt_quantity,
2388 ref_prj_budgets_r.bgt_labor_quantity,
2392 x_err_code);
2389 ref_prj_budgets_r.bgt_unit_of_measure,
2390 x_err_stage,
2391 x_err_stack,
2393
2394 END LOOP; -- FOR ref_prj_budgets_r IN sel_ref_prj_budgets
2395
2396 -- Budget refresh is complete
2397
2398 -- Check the profile option value for collecting lowest tasks
2399 IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y') THEN
2400
2401 -- Collect Budgets at lowest tasks level
2402
2403 x_err_stage := 'Collecting Budgets at lowest task level';
2404
2405 FOR lowest_budgets_r IN sel_lowest_budgets(sel_prjs_r.project_id) LOOP
2406
2407 update_tasks_budgets
2408 (lowest_budgets_r.task_id,
2409 lowest_budgets_r.pa_period_key,
2410 lowest_budgets_r.budget_type_code,
2411 lowest_budgets_r.resource_list_member_id,
2412 lowest_budgets_r.service_type_code,
2413 lowest_budgets_r.owner_organization_id,
2414 lowest_budgets_r.expenditure_type,
2415 lowest_budgets_r.user_col1,
2416 lowest_budgets_r.user_col2,
2417 lowest_budgets_r.user_col3,
2418 lowest_budgets_r.user_col4,
2419 lowest_budgets_r.user_col5,
2420 lowest_budgets_r.user_col6,
2421 lowest_budgets_r.user_col7,
2422 lowest_budgets_r.user_col8,
2423 lowest_budgets_r.user_col9,
2424 lowest_budgets_r.user_col10,
2425 lowest_budgets_r.bgt_revenue,
2426 lowest_budgets_r.bgt_raw_cost,
2427 lowest_budgets_r.bgt_burdened_cost,
2428 lowest_budgets_r.bgt_quantity,
2429 lowest_budgets_r.bgt_labor_quantity,
2430 lowest_budgets_r.bgt_unit_of_measure,
2431 x_err_stage,
2432 x_err_stack,
2433 x_err_code);
2434
2435 END LOOP; -- FOR lowest_budgets_r IN sel_lowest_budgets
2436
2437 END IF; -- IF ( pa_adw_collect_main.collect_lowest_tasks_flag = 'Y')
2438
2439 -- Check the profile option value for collecting top tasks
2440 IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y') THEN
2441
2442 -- Collect Budgets at top tasks level
2443
2444 x_err_stage := 'Collecting Budgets at top task level';
2445
2446 FOR top_budgets_r IN sel_top_budgets(sel_prjs_r.project_id) LOOP
2447
2448 update_tasks_budgets
2449 (top_budgets_r.top_task_id,
2450 top_budgets_r.pa_period_key,
2451 top_budgets_r.budget_type_code,
2452 top_budgets_r.resource_list_member_id,
2453 top_budgets_r.service_type_code,
2454 top_budgets_r.owner_organization_id,
2455 top_budgets_r.expenditure_type,
2456 top_budgets_r.user_col1,
2457 top_budgets_r.user_col2,
2458 top_budgets_r.user_col3,
2459 top_budgets_r.user_col4,
2460 top_budgets_r.user_col5,
2461 top_budgets_r.user_col6,
2462 top_budgets_r.user_col7,
2463 top_budgets_r.user_col8,
2464 top_budgets_r.user_col9,
2465 top_budgets_r.user_col10,
2466 top_budgets_r.bgt_revenue,
2467 top_budgets_r.bgt_raw_cost,
2468 top_budgets_r.bgt_burdened_cost,
2469 top_budgets_r.bgt_quantity,
2470 top_budgets_r.bgt_labor_quantity,
2471 top_budgets_r.bgt_unit_of_measure,
2472 x_err_stage,
2473 x_err_stack,
2474 x_err_code);
2475
2476 END LOOP; -- FOR top_budgets_r IN sel_top_budgets
2477
2478 END IF; -- IF ( pa_adw_collect_main.collect_top_tasks_flag = 'Y')
2479
2480 -- Collect Budgets at Project level
2481
2482 x_err_stage := 'Collecting Budgets txns at Project level';
2483
2484 FOR prj_budgets_r IN sel_prj_budgets(sel_prjs_r.project_id) LOOP
2485
2486 update_prj_budgets
2487 (prj_budgets_r.project_id,
2488 prj_budgets_r.pa_period_key,
2489 prj_budgets_r.budget_type_code,
2490 prj_budgets_r.resource_list_member_id,
2491 prj_budgets_r.service_type_code,
2492 prj_budgets_r.owner_organization_id,
2493 prj_budgets_r.expenditure_type,
2494 prj_budgets_r.user_col1,
2495 prj_budgets_r.user_col2,
2496 prj_budgets_r.user_col3,
2497 prj_budgets_r.user_col4,
2498 prj_budgets_r.user_col5,
2499 prj_budgets_r.user_col6,
2500 prj_budgets_r.user_col7,
2501 prj_budgets_r.user_col8,
2502 prj_budgets_r.user_col9,
2503 prj_budgets_r.user_col10,
2504 prj_budgets_r.bgt_revenue,
2505 prj_budgets_r.bgt_raw_cost,
2506 prj_budgets_r.bgt_burdened_cost,
2507 prj_budgets_r.bgt_quantity,
2508 prj_budgets_r.bgt_labor_quantity,
2509 prj_budgets_r.bgt_unit_of_measure,
2510 x_err_stage,
2511 x_err_stack,
2512 x_err_code);
2513
2514 END LOOP; -- FOR prj_budgets_r IN sel_prj_budgets
2515
2516 -- Mark the project types as transferred to Interface table
2517
2518 -- PLEASE NOTE THAT WE ARE UPDATING THE BASE TABLE SINCE THE
2519 -- PA_ADW_BUDGETS_V IS DEFINED ON MULTIPLE TABLES
2520
2521 UPDATE
2522 PA_BUDGET_VERSIONS
2523 SET
2524 ADW_NOTIFY_FLAG = 'N'
2525 WHERE
2526 ADW_NOTIFY_FLAG IN ('S','R');
2527
2528 END IF; --IF (SQL%ROWCOUNT <> 0)
2529 -- Commit the project
2530 COMMIT;
2531 END LOOP; -- FOR sel_prjs_r IN sel_prjs
2532
2533 x_err_stack := x_old_err_stack;
2534
2535 pa_debug.debug('Completed ' || x_err_stage);
2536
2537 EXCEPTION
2538 WHEN OTHERS THEN
2539 x_err_code := SQLCODE;
2540 RAISE;
2541 END get_fact_budgets;
2542
2543 PROCEDURE update_tasks_budgets
2544 (x_task_id IN NUMBER,
2545 x_pa_period_key IN VARCHAR2,
2546 x_budget_type_code IN VARCHAR2,
2547 x_resource_list_member_id IN NUMBER,
2548 x_service_type_code IN VARCHAR2,
2549 x_owner_organization_id IN NUMBER,
2550 x_expenditure_type IN VARCHAR2,
2551 x_user_col1 IN VARCHAR2,
2552 x_user_col2 IN VARCHAR2,
2553 x_user_col3 IN VARCHAR2,
2554 x_user_col4 IN VARCHAR2,
2555 x_user_col5 IN VARCHAR2,
2556 x_user_col6 IN VARCHAR2,
2557 x_user_col7 IN VARCHAR2,
2558 x_user_col8 IN VARCHAR2,
2559 x_user_col9 IN VARCHAR2,
2560 x_user_col10 IN VARCHAR2,
2561 x_bgt_revenue IN NUMBER,
2562 x_bgt_raw_cost IN NUMBER,
2563 x_bgt_burdened_cost IN NUMBER,
2564 x_bgt_quantity IN NUMBER,
2565 x_bgt_labor_quantity IN NUMBER,
2566 x_bgt_unit_of_measure IN VARCHAR2,
2567 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2568 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2569 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
2570 IS
2571 x_old_err_stack VARCHAR2(1024);
2572 BEGIN
2573 x_err_code := 0;
2574 x_err_stage := 'Creating Task Level Budgets';
2575 x_old_err_stack := x_err_stack;
2576 x_err_stack := x_err_stack || '-> update_tasks_budgets';
2577
2578 -- First Try to Update the Row in the Interface Table
2579
2580 UPDATE
2581 PA_TSK_BGT_LINES_IT
2582 SET
2583 LAST_UPDATE_DATE = TRUNC(SYSDATE),
2584 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
2585 CREATION_DATE = TRUNC(SYSDATE),
2586 CREATED_BY = X_CREATED_BY,
2587 USER_COL6 = X_USER_COL6,
2588 USER_COL7 = X_USER_COL7,
2589 USER_COL8 = X_USER_COL8,
2590 USER_COL9 = X_USER_COL9,
2591 USER_COL10 = X_USER_COL10,
2592 BGT_REVENUE = X_BGT_REVENUE,
2593 BGT_RAW_COST = X_BGT_RAW_COST,
2594 BGT_BURDENED_COST = X_BGT_BURDENED_COST,
2595 BGT_QUANTITY = X_BGT_QUANTITY,
2596 BGT_LABOR_QUANTITY = X_BGT_LABOR_QUANTITY,
2597 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
2598 REQUEST_ID = X_REQUEST_ID,
2599 PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
2600 PROGRAM_ID = X_PROGRAM_ID,
2601 PROGRAM_UPDATE_DATE = TRUNC(SYSDATE),
2602 STATUS_CODE = 'P'
2603 WHERE
2604 TASK_ID = X_TASK_ID
2605 AND PA_PERIOD_KEY = X_PA_PERIOD_KEY
2606 AND BUDGET_TYPE_CODE = X_BUDGET_TYPE_CODE
2607 AND NVL(RESOURCE_LIST_MEMBER_ID,-99) = NVL(X_RESOURCE_LIST_MEMBER_ID,-99)
2608 AND NVL(SERVICE_TYPE_CODE,'X') = NVL(X_SERVICE_TYPE_CODE,'X')
2609 AND NVL(OWNER_ORGANIZATION_ID,-99) = NVL(X_OWNER_ORGANIZATION_ID,-99)
2610 AND NVL(EXPENDITURE_TYPE,'X') = NVL(X_EXPENDITURE_TYPE,'X')
2611 AND NVL(USER_COL1,'X') = NVL(X_USER_COL1,'X')
2612 AND NVL(USER_COL2,'X') = NVL(X_USER_COL2,'X')
2613 AND NVL(USER_COL3,'X') = NVL(X_USER_COL3,'X')
2614 AND NVL(USER_COL4,'X') = NVL(X_USER_COL4,'X')
2615 AND NVL(USER_COL5,'X') = NVL(X_USER_COL5,'X')
2616 AND NVL(BGT_UNIT_OF_MEASURE,'X') = NVL(X_BGT_UNIT_OF_MEASURE,'X');
2617
2618 -- Check If Any row was updated
2619
2620 IF (SQL%ROWCOUNT = 0) THEN
2621
2622 -- No row was updated, So Insert a new row into the interface table
2623 INSERT INTO PA_TSK_BGT_LINES_IT
2624 (
2625 TASK_BUDGET_LINE_KEY,
2626 TASK_ID,
2627 PA_PERIOD_KEY,
2628 BUDGET_TYPE_CODE,
2629 LAST_UPDATE_DATE,
2630 LAST_UPDATED_BY,
2631 CREATION_DATE,
2632 CREATED_BY,
2633 RESOURCE_LIST_MEMBER_ID,
2634 SERVICE_TYPE_CODE,
2635 OWNER_ORGANIZATION_ID,
2636 EXPENDITURE_TYPE,
2637 USER_COL1,
2638 USER_COL2,
2639 USER_COL3,
2640 USER_COL4,
2641 USER_COL5,
2642 USER_COL6,
2643 USER_COL7,
2644 USER_COL8,
2645 USER_COL9,
2646 USER_COL10,
2647 BGT_REVENUE,
2648 BGT_RAW_COST,
2649 BGT_BURDENED_COST,
2650 BGT_QUANTITY,
2651 BGT_LABOR_QUANTITY,
2652 BGT_UNIT_OF_MEASURE,
2653 LAST_UPDATE_LOGIN,
2654 REQUEST_ID,
2655 PROGRAM_APPLICATION_ID,
2656 PROGRAM_ID,
2657 PROGRAM_UPDATE_DATE,
2658 STATUS_CODE
2659 )
2660 VALUES
2661 (
2662 X_TASK_ID || '-' || X_PA_PERIOD_KEY || '-' || --
2663 NVL(X_BUDGET_TYPE_CODE,'X') || '-' || --|
2664 NVL(X_OWNER_ORGANIZATION_ID,-99)|| '-' || --|
2665 NVL(X_RESOURCE_LIST_MEMBER_ID,-99)|| '-' || --|
2666 NVL(X_SERVICE_TYPE_CODE,'X')|| '-' || --| Dimension Keys
2667 NVL(X_EXPENDITURE_TYPE,'X')|| '-' || --|
2668 NVL(X_USER_COL1,'X')|| '-' || --|
2669 NVL(X_USER_COL2,'X')|| '-' || --|
2670 NVL(X_USER_COL3,'X')|| '-' || --|
2671 NVL(X_USER_COL4,'X')|| '-' || --|
2672 NVL(X_USER_COL5,'X'), --
2673 X_TASK_ID,
2674 X_PA_PERIOD_KEY,
2675 X_BUDGET_TYPE_CODE,
2676 TRUNC(SYSDATE),
2677 X_LAST_UPDATED_BY,
2678 TRUNC(SYSDATE),
2679 X_CREATED_BY,
2680 X_RESOURCE_LIST_MEMBER_ID,
2681 X_SERVICE_TYPE_CODE,
2682 X_OWNER_ORGANIZATION_ID,
2683 X_EXPENDITURE_TYPE,
2684 X_USER_COL1,
2685 X_USER_COL2,
2686 X_USER_COL3,
2687 X_USER_COL4,
2688 X_USER_COL5,
2689 X_USER_COL6,
2690 X_USER_COL7,
2691 X_USER_COL8,
2692 X_USER_COL9,
2693 X_USER_COL10,
2694 X_BGT_REVENUE,
2695 X_BGT_RAW_COST,
2696 X_BGT_BURDENED_COST,
2697 X_BGT_QUANTITY,
2698 X_BGT_LABOR_QUANTITY,
2699 X_BGT_UNIT_OF_MEASURE,
2700 X_LAST_UPDATE_LOGIN,
2701 X_REQUEST_ID,
2702 X_PROGRAM_APPLICATION_ID,
2703 X_PROGRAM_ID,
2704 TRUNC(SYSDATE),
2705 'P'
2706 );
2707
2708 END IF; -- IF ( SQL%ROWCOUNT = 0 )
2709
2710 x_err_stack := x_old_err_stack;
2711
2712 EXCEPTION
2713 WHEN OTHERS THEN
2714 x_err_code := SQLCODE;
2715 RAISE;
2716 END update_tasks_budgets;
2717
2718 -- Update the project level numbers
2719
2720 PROCEDURE update_prj_budgets
2721 (x_project_id IN NUMBER,
2722 x_pa_period_key IN VARCHAR2,
2723 x_budget_type_code IN VARCHAR2,
2724 x_resource_list_member_id IN NUMBER,
2725 x_service_type_code IN VARCHAR2,
2726 x_owner_organization_id IN NUMBER,
2727 x_expenditure_type IN VARCHAR2,
2728 x_user_col1 IN VARCHAR2,
2729 x_user_col2 IN VARCHAR2,
2730 x_user_col3 IN VARCHAR2,
2731 x_user_col4 IN VARCHAR2,
2732 x_user_col5 IN VARCHAR2,
2733 x_user_col6 IN VARCHAR2,
2734 x_user_col7 IN VARCHAR2,
2735 x_user_col8 IN VARCHAR2,
2736 x_user_col9 IN VARCHAR2,
2737 x_user_col10 IN VARCHAR2,
2738 x_bgt_revenue IN NUMBER,
2739 x_bgt_raw_cost IN NUMBER,
2740 x_bgt_burdened_cost IN NUMBER,
2741 x_bgt_quantity IN NUMBER,
2742 x_bgt_labor_quantity IN NUMBER,
2743 x_bgt_unit_of_measure IN VARCHAR2,
2744 x_err_stage IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2745 x_err_stack IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2746 x_err_code IN OUT NOCOPY NUMBER) --File.Sql.39 bug 4440895
2747 IS
2748 x_old_err_stack VARCHAR2(1024);
2749 BEGIN
2750 x_err_code := 0;
2751 x_err_stage := 'Creating Project Level Budgets';
2752 x_old_err_stack := x_err_stack;
2753 x_err_stack := x_err_stack || '-> update_prj_budgets';
2754
2755 -- First Try to Update the Row in the Interface Table
2756
2757 UPDATE
2758 PA_PRJ_BGT_LINES_IT
2759 SET
2760 LAST_UPDATE_DATE = TRUNC(SYSDATE),
2761 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
2762 CREATION_DATE = TRUNC(SYSDATE),
2763 CREATED_BY = X_CREATED_BY,
2764 USER_COL6 = X_USER_COL6,
2765 USER_COL7 = X_USER_COL7,
2766 USER_COL8 = X_USER_COL8,
2767 USER_COL9 = X_USER_COL9,
2768 USER_COL10 = X_USER_COL10,
2769 BGT_REVENUE = X_BGT_REVENUE,
2770 BGT_RAW_COST = X_BGT_RAW_COST,
2771 BGT_BURDENED_COST = X_BGT_BURDENED_COST,
2772 BGT_QUANTITY = X_BGT_QUANTITY,
2773 BGT_LABOR_QUANTITY = X_BGT_LABOR_QUANTITY,
2774 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
2775 REQUEST_ID = X_REQUEST_ID,
2776 PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
2777 PROGRAM_ID = X_PROGRAM_ID,
2778 PROGRAM_UPDATE_DATE = TRUNC(SYSDATE),
2779 STATUS_CODE = 'P'
2780 WHERE
2781 PROJECT_ID = X_PROJECT_ID
2782 AND PA_PERIOD_KEY = X_PA_PERIOD_KEY
2783 AND BUDGET_TYPE_CODE = X_BUDGET_TYPE_CODE
2784 AND NVL(RESOURCE_LIST_MEMBER_ID,-99) = NVL(X_RESOURCE_LIST_MEMBER_ID,-99)
2785 AND NVL(SERVICE_TYPE_CODE,'X') = NVL(X_SERVICE_TYPE_CODE,'X')
2786 AND NVL(OWNER_ORGANIZATION_ID,-99) = NVL(X_OWNER_ORGANIZATION_ID,-99)
2787 AND NVL(EXPENDITURE_TYPE,'X') = NVL(X_EXPENDITURE_TYPE,'X')
2788 AND NVL(USER_COL1,'X') = NVL(X_USER_COL1,'X')
2789 AND NVL(USER_COL2,'X') = NVL(X_USER_COL2,'X')
2790 AND NVL(USER_COL3,'X') = NVL(X_USER_COL3,'X')
2791 AND NVL(USER_COL4,'X') = NVL(X_USER_COL4,'X')
2792 AND NVL(USER_COL5,'X') = NVL(X_USER_COL5,'X')
2793 AND NVL(BGT_UNIT_OF_MEASURE,'X') = NVL(X_BGT_UNIT_OF_MEASURE,'X');
2794
2795 -- Check If Any row was updated
2796
2797 IF (SQL%ROWCOUNT = 0) THEN
2798
2799 -- No row was updated, So Insert a new row into the interface table
2800 INSERT INTO PA_PRJ_BGT_LINES_IT
2801 (
2802 PRJ_BUDGET_LINE_KEY,
2803 PROJECT_ID,
2804 PA_PERIOD_KEY,
2805 BUDGET_TYPE_CODE,
2806 LAST_UPDATE_DATE,
2807 LAST_UPDATED_BY,
2808 CREATION_DATE,
2809 CREATED_BY,
2810 RESOURCE_LIST_MEMBER_ID,
2811 SERVICE_TYPE_CODE,
2812 OWNER_ORGANIZATION_ID,
2813 EXPENDITURE_TYPE,
2814 USER_COL1,
2815 USER_COL2,
2816 USER_COL3,
2817 USER_COL4,
2818 USER_COL5,
2819 USER_COL6,
2820 USER_COL7,
2821 USER_COL8,
2822 USER_COL9,
2823 USER_COL10,
2824 BGT_REVENUE,
2825 BGT_RAW_COST,
2826 BGT_BURDENED_COST,
2827 BGT_QUANTITY,
2828 BGT_LABOR_QUANTITY,
2829 BGT_UNIT_OF_MEASURE,
2830 LAST_UPDATE_LOGIN,
2831 REQUEST_ID,
2832 PROGRAM_APPLICATION_ID,
2833 PROGRAM_ID,
2834 PROGRAM_UPDATE_DATE,
2835 STATUS_CODE
2836 )
2837 VALUES
2838 (
2839 X_PROJECT_ID || '-' || X_PA_PERIOD_KEY || '-' || --
2840 NVL(X_BUDGET_TYPE_CODE,'X') || '-' || --|
2841 NVL(X_OWNER_ORGANIZATION_ID,-99)|| '-' || --|
2842 NVL(X_RESOURCE_LIST_MEMBER_ID,-99)|| '-' || --|
2843 NVL(X_SERVICE_TYPE_CODE,'X')|| '-' || --| Dimension Keys
2844 NVL(X_EXPENDITURE_TYPE,'X')|| '-' || --|
2845 NVL(X_USER_COL1,'X')|| '-' || --|
2846 NVL(X_USER_COL2,'X')|| '-' || --|
2847 NVL(X_USER_COL3,'X')|| '-' || --|
2848 NVL(X_USER_COL4,'X')|| '-' || --|
2849 NVL(X_USER_COL5,'X'), --
2850 X_PROJECT_ID,
2851 X_PA_PERIOD_KEY,
2852 X_BUDGET_TYPE_CODE,
2853 TRUNC(SYSDATE),
2854 X_LAST_UPDATED_BY,
2855 TRUNC(SYSDATE),
2856 X_CREATED_BY,
2857 X_RESOURCE_LIST_MEMBER_ID,
2858 X_SERVICE_TYPE_CODE,
2859 X_OWNER_ORGANIZATION_ID,
2860 X_EXPENDITURE_TYPE,
2861 X_USER_COL1,
2862 X_USER_COL2,
2863 X_USER_COL3,
2864 X_USER_COL4,
2865 X_USER_COL5,
2866 X_USER_COL6,
2867 X_USER_COL7,
2868 X_USER_COL8,
2869 X_USER_COL9,
2870 X_USER_COL10,
2871 X_BGT_REVENUE,
2872 X_BGT_RAW_COST,
2873 X_BGT_BURDENED_COST,
2874 X_BGT_QUANTITY,
2875 X_BGT_LABOR_QUANTITY,
2876 X_BGT_UNIT_OF_MEASURE,
2877 X_LAST_UPDATE_LOGIN,
2878 X_REQUEST_ID,
2879 X_PROGRAM_APPLICATION_ID,
2880 X_PROGRAM_ID,
2881 TRUNC(SYSDATE),
2882 'P'
2883 );
2884
2885 END IF; -- IF ( SQL%ROWCOUNT = 0 )
2886
2887 x_err_stack := x_old_err_stack;
2888
2889 EXCEPTION
2890 WHEN OTHERS THEN
2891 x_err_code := SQLCODE;
2892 RAISE;
2893 END update_prj_budgets;
2894
2895 END PA_ADW_COLLECT_FACTS;