[Home] [Help]
PACKAGE BODY: APPS.PA_FP_MAP_BV_PUB
Source
1 PACKAGE body PA_FP_MAP_BV_PUB as
2 /* $Header: PAFPMBTB.pls 120.0 2005/05/29 19:14:08 appldev noship $ */
3 P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
4
5 PROCEDURE GEN_MAP_BV_TO_TARGET_RL
6 (P_SOURCE_BV_ID IN PA_BUDGET_VERSIONS.BUDGET_VERSION_ID%TYPE,
7 P_TARGET_FP_COLS_REC IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
8 P_ETC_FP_COLS_REC IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
9 P_CB_FP_COLS_REC IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
10 P_COMMIT_FLAG IN VARCHAR2,
11 P_INIT_MSG_FLAG IN VARCHAR2,
12 P_ACTUAL_THRU_DATE IN PA_PERIODS_ALL.END_DATE%TYPE,
13 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
14 X_MSG_COUNT OUT NOCOPY NUMBER,
15 X_MSG_DATA OUT NOCOPY VARCHAR2) IS
16
17 l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_map_bv_pub.gen_map_bv_to_target_rl';
18
19 CURSOR txn_sum_csr(c_project_currency_code PA_BUDGET_LINES.PROJECT_CURRENCY_CODE%TYPE,
20 c_multi_curr_flag PA_PROJ_FP_OPTIONS.PLAN_IN_MULTI_CURR_FLAG%TYPE)IS
21 SELECT /*+ INDEX(t3,PA_FP_CALC_AMT_TMP3_N2)*/
22 t3.res_list_member_id,
23 ra.task_id,
24 decode(c_multi_curr_flag,'Y',bl.txn_currency_code,
25 'N',c_project_currency_code),
26 sum(bl.quantity),
27 sum(decode(c_multi_curr_flag,'Y',bl.txn_raw_cost,
28 'N',bl.project_raw_cost)),
29 sum(decode(c_multi_curr_flag,'Y',bl.txn_burdened_cost,
30 'N',bl.project_burdened_cost)),
31 sum(decode(c_multi_curr_flag,'Y',bl.txn_revenue,
32 'N',bl.project_revenue)),
33 sum(bl.project_raw_cost),
34 sum(bl.project_burdened_cost),
35 sum(bl.project_revenue),
36 sum(bl.raw_cost),
37 sum(bl.burdened_cost),
38 sum(bl.revenue)
39 FROM pa_resource_assignments ra,
40 pa_budget_lines bl,
41 pa_fp_calc_amt_tmp3 t3
42 WHERE ra.resource_assignment_id = bl.resource_assignment_id
43 AND ra.resource_assignment_id = t3.res_asg_id
44 AND ra.budget_version_id = p_source_bv_id
45 AND bl.end_date <= nvl(p_actual_thru_date,bl.end_date)
46 and bl.cost_rejection_code is null
47 and bl.revenue_rejection_code is null
48 and bl.burden_rejection_code is null
49 and bl.other_rejection_code is null
50 and bl.pc_cur_conv_rejection_code is null
51 and bl.pfc_cur_conv_rejection_code is null
52 GROUP BY
53 t3.res_list_member_id,
54 ra.task_id,
55 decode(c_multi_curr_flag,'Y',bl.txn_currency_code,
56 'N',c_project_currency_code);
57
58 l_txn_currency_code_tab PA_PLSQL_DATATYPES.Char30TabTyp;
59 l_rlm_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
60 l_task_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
61 l_qty_tab PA_PLSQL_DATATYPES.NumTabTyp;
62 l_txn_raw_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
63 l_txn_burdend_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
64 l_txn_revenue_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
65 l_pc_raw_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
66 l_pc_burdend_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
67 l_pc_revenue_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
68 l_pfc_raw_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
69 l_pfc_burdend_cost_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
70 l_pfc_revenue_sum_tab PA_PLSQL_DATATYPES.NumTabTyp;
71
72
73 /* Local variable to call the pa_rlmi_rbs_map_pub.map_rlmi_rbs api */
74 l_rbs_version_id Number;
75 l_calling_process Varchar2(30);
76 l_calling_context varchar2(30);
77 l_process_code varchar2(30);
78 l_calling_mode Varchar2(30);
79 l_init_msg_list_flag Varchar2(1);
80 l_commit_flag Varchar2(1);
81 l_TXN_SOURCE_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
82 l_TXN_SOURCE_TYPE_CODE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
83 l_PERSON_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
84 l_JOB_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
85 l_ORGANIZATION_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
86 l_VENDOR_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
87 l_EXPENDITURE_TYPE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
88 l_EVENT_TYPE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
89 l_NON_LABOR_RESOURCE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
90 l_EXPENDITURE_CATEGORY_tab PA_PLSQL_DATATYPES.Char30TabTyp;
91 l_REVENUE_CATEGORY_CODE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
92 l_NLR_ORGANIZATION_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
93 l_EVENT_CLASSIFICATION_tab PA_PLSQL_DATATYPES.Char30TabTyp;
94 l_SYS_LINK_FUNCTION_tab PA_PLSQL_DATATYPES.Char30TabTyp;
95 l_PROJECT_ROLE_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
96 l_RESOURCE_CLASS_CODE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
97 l_MFC_COST_TYPE_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
98 l_RESOURCE_CLASS_FLAG_tab PA_PLSQL_DATATYPES.Char1TabTyp;
99 l_FC_RES_TYPE_CODE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
100 l_INVENTORY_ITEM_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
101 l_ITEM_CATEGORY_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
102 l_PERSON_TYPE_CODE_tab PA_PLSQL_DATATYPES.Char30TabTyp;
103 l_BOM_RESOURCE_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
104 l_NAMED_ROLE_tab PA_PLSQL_DATATYPES.Char80TabTyp;
105 l_INCURRED_BY_RES_FLAG_tab PA_PLSQL_DATATYPES.Char1TabTyp;
106 l_RATE_BASED_FLAG_tab PA_PLSQL_DATATYPES.Char1TabTyp;
107 l_TXN_TASK_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
108 l_TXN_WBS_ELEMENT_VER_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
109 l_TXN_RBS_ELEMENT_ID_tab PA_PLSQL_DATATYPES.IdTabTyp;
110 l_TXN_PLAN_START_DATE_tab PA_PLSQL_DATATYPES.DateTabTyp;
111 l_TXN_PLAN_END_DATE_tab PA_PLSQL_DATATYPES.DateTabTyp;
112 l_res_list_member_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
113 l_rbs_element_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
114 l_txn_accum_header_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
115 l_txn_src_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
116
117 l_tsk_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
118 l_resrc_assgn_id PA_PLSQL_DATATYPES.IdTabTyp;
119 l_count NUMBER;
120 l_msg_count NUMBER;
121 l_data VARCHAR2(2000);
122 l_msg_data VARCHAR2(2000);
123 l_msg_index_out NUMBER;
124
125 l_rl_uncategorized_flag VARCHAR2(1);
126 l_uc_res_list_rlm_id NUMBER;
127
128 BEGIN
129 --Setting initial values
130 IF p_init_msg_flag = 'Y' THEN
131 FND_MSG_PUB.initialize;
132 END IF;
133
134 X_MSG_COUNT := 0;
135 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
136
137 IF p_pa_debug_mode = 'Y' and p_init_msg_flag = 'Y' THEN
138 PA_DEBUG.init_err_stack('PA_FP_MAP_BV_PUB.GEN_MAP_BV_TO_TARGET_RL');
139 ELSIF p_pa_debug_mode = 'Y' and p_init_msg_flag = 'N' THEN
140 pa_debug.set_curr_function( p_function => 'GEN_MAP_BV_TO_TARGET_RL'
141 ,p_debug_mode => p_pa_debug_mode);
142 END IF;
143
144
145 l_rl_uncategorized_flag := PA_FP_GEN_AMOUNT_UTILS.
146 GET_RL_UNCATEGORIZED_FLAG(P_RESOURCE_LIST_ID => p_etc_fp_cols_rec.x_resource_list_id);
147
148 l_uc_res_list_rlm_id := PA_FP_GEN_AMOUNT_UTILS.
149 GET_UC_RES_LIST_RLM_ID(P_RESOURCE_LIST_ID => p_etc_fp_cols_rec.x_resource_list_id,
150 P_RESOURCE_CLASS_CODE => 'FINANCIAL_ELEMENTS');
151
152 IF p_cb_fp_cols_rec.x_resource_list_id <>
153 p_etc_fp_cols_rec.x_resource_list_id
154 AND l_rl_uncategorized_flag = 'N' THEN
155 --Calling the map_rlmi_rbs api
156 IF p_pa_debug_mode = 'Y' THEN
157 pa_fp_gen_amount_utils.fp_debug
158 (p_msg => 'Before calling
159 pa_rlmi_rbs_map_pub.map_rlmi_rbs',
160 p_module_name => l_module_name,
161 p_log_level => 5);
162 END IF;
163 /* PA_RLMI_RBS_MAP_PUB.MAP_RLMI_RBS
164 ( p_budget_version_id => null,
165 p_resource_list_id =>
166 p_etc_fp_cols_rec.x_resource_list_id,
167 p_rbs_version_id => l_rbs_version_id,
168 p_calling_process => 'BUDGET_GENERATION',
169 p_calling_context => 'PLSQL',
170 p_process_code => l_process_code,
171 p_calling_mode => 'BUDGET_VERSION',
172 p_init_msg_list_flag => l_init_msg_list_flag,
173 p_commit_flag => l_commit_flag,
174 p_TXN_SOURCE_ID_tab => l_TXN_SOURCE_ID_tab,
175 p_TXN_SOURCE_TYPE_CODE_tab => l_TXN_SOURCE_TYPE_CODE_tab,
176 p_PERSON_ID_tab => l_PERSON_ID_tab,
177 p_JOB_ID_tab => l_JOB_ID_tab,
178 p_ORGANIZATION_ID_tab => l_ORGANIZATION_ID_tab,
179 p_VENDOR_ID_tab => l_VENDOR_ID_tab,
180 p_EXPENDITURE_TYPE_tab => l_EXPENDITURE_TYPE_tab,
181 p_EVENT_TYPE_tab => l_EVENT_TYPE_tab,
182 p_NON_LABOR_RESOURCE_tab => l_NON_LABOR_RESOURCE_tab,
183 p_EXPENDITURE_CATEGORY_tab => l_EXPENDITURE_CATEGORY_tab,
184 p_REVENUE_CATEGORY_CODE_tab=> l_REVENUE_CATEGORY_CODE_tab,
185 p_NLR_ORGANIZATION_ID_tab => l_NLR_ORGANIZATION_ID_tab,
186 p_EVENT_CLASSIFICATION_tab => l_EVENT_CLASSIFICATION_tab,
187 p_SYS_LINK_FUNCTION_tab => l_SYS_LINK_FUNCTION_tab,
188 p_PROJECT_ROLE_ID_tab => l_PROJECT_ROLE_ID_tab,
189 p_RESOURCE_CLASS_CODE_tab => l_RESOURCE_CLASS_CODE_tab,
190 p_MFC_COST_TYPE_ID_tab => l_MFC_COST_TYPE_ID_tab,
191 p_RESOURCE_CLASS_FLAG_tab => l_RESOURCE_CLASS_FLAG_tab,
192 p_FC_RES_TYPE_CODE_tab => l_FC_RES_TYPE_CODE_tab,
193 p_INVENTORY_ITEM_ID_tab => l_INVENTORY_ITEM_ID_tab,
194 p_ITEM_CATEGORY_ID_tab => l_ITEM_CATEGORY_ID_tab,
195 p_PERSON_TYPE_CODE_tab => l_PERSON_TYPE_CODE_tab,
196 p_BOM_RESOURCE_ID_tab => l_BOM_RESOURCE_ID_tab,
197 p_NAMED_ROLE_tab => l_NAMED_ROLE_tab,
198 p_INCURRED_BY_RES_FLAG_tab => l_INCURRED_BY_RES_FLAG_tab,
199 p_RATE_BASED_FLAG_tab => l_RATE_BASED_FLAG_tab,
200 p_TXN_TASK_ID_tab => l_TXN_TASK_ID_tab,
201 p_TXN_WBS_ELEMENT_VER_ID_tab=>l_TXN_WBS_ELEMENT_VER_ID_tab,
202 p_TXN_RBS_ELEMENT_ID_tab => l_TXN_RBS_ELEMENT_ID_tab,
203 p_TXN_PLAN_START_DATE_tab => l_TXN_PLAN_START_DATE_tab,
204 p_TXN_PLAN_END_DATE_tab => l_TXN_PLAN_END_DATE_tab,
205 x_txn_source_id_tab => l_txn_src_id_tab,
206 x_res_list_member_id_tab => l_res_list_member_id_tab,
207 x_rbs_element_id_tab => l_rbs_element_id_tab,
208 x_txn_accum_header_id_tab => l_txn_accum_header_id_tab,
209 x_return_status => x_return_status,
210 x_msg_count => x_msg_count,
211 x_msg_data => x_msg_data); */
212 /* bug 3576766 : p_project_id parameter added for
213 non centrally controlled resource list mapping. */
214 --hr_utility.trace('@@@before calling PA_RLMI_RBS_MAP_PUB.MAP_RLMI_RBS :'||x_return_status);
215 PA_RLMI_RBS_MAP_PUB.MAP_RLMI_RBS
216 (p_project_id => P_TARGET_FP_COLS_REC.x_project_id,
217 p_budget_version_id => null,
218 p_resource_list_id =>
219 p_etc_fp_cols_rec.x_resource_list_id,
220 p_rbs_version_id => null,
221 p_calling_process => 'BUDGET_GENERATION',
222 p_calling_context => 'PLSQL',
223 p_process_code => 'RES_MAP',
224 p_calling_mode => 'BUDGET_VERSION',
225 p_init_msg_list_flag => 'N',
226 p_commit_flag => 'N',
227 x_txn_source_id_tab => l_txn_src_id_tab,
228 x_res_list_member_id_tab => l_res_list_member_id_tab,
229 x_rbs_element_id_tab => l_rbs_element_id_tab,
230 x_txn_accum_header_id_tab => l_txn_accum_header_id_tab,
231 x_return_status => x_return_status,
232 x_msg_count => x_msg_count,
233 x_msg_data => x_msg_data);
234 --hr_utility.trace('@@after calling PA_RLMI_RBS_MAP_PUB.MAP_RLMI_RBS :'||x_return_status);
235 IF X_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS THEN
236 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
237 END IF;
238 IF p_pa_debug_mode = 'Y' THEN
239 pa_fp_gen_amount_utils.fp_debug
240 (p_msg => 'Status after calling
241 pa_rlmi_rbs_map_pub.map_rlmi_rbs'
242 ||x_return_status,
243 p_module_name => l_module_name,
244 p_log_level => 5);
245 END IF;
246 /* dbms_output.put_line('Status of map_rlmi_rbs api: '
247 ||X_RETURN_STATUS); */
248 FORALL i IN 1..l_res_list_member_id_tab.count
249 INSERT INTO PA_FP_CALC_AMT_TMP3
250 (plan_version_id,
251 res_list_member_id,
252 res_asg_id)
253 VALUES
254 (p_etc_fp_cols_rec.x_budget_version_id,
255 l_res_list_member_id_tab(i),
256 l_txn_src_id_tab(i));
257 SELECT ra.task_id,
258 ra.resource_assignment_id
259 BULK COLLECT
260 INTO l_tsk_id_tab,
261 l_resrc_assgn_id
262 FROM pa_resource_assignments ra
266 FORALL m in 1..l_tsk_id_tab.count
263 WHERE ra.budget_version_id = p_etc_fp_cols_rec.
264 x_budget_version_id;
265
267 UPDATE /*+ INDEX(PA_FP_CALC_AMT_TMP3,PA_FP_CALC_AMT_TMP3_N2)*/
268 PA_FP_CALC_AMT_TMP3
269 SET task_id = l_tsk_id_tab(m)
270 WHERE res_asg_id = l_resrc_assgn_id(m);
271
272 OPEN txn_sum_csr(p_target_fp_cols_rec.x_project_currency_code,
273 p_target_fp_cols_rec.x_plan_in_multi_curr_flag);
274 FETCH txn_sum_csr
275 BULK COLLECT
276 INTO l_rlm_id_tab,
277 l_task_id_tab,
278 l_txn_currency_code_tab,
279 l_qty_tab,
280 l_txn_raw_cost_sum_tab,
281 l_txn_burdend_cost_sum_tab,
282 l_txn_revenue_sum_tab,
283 l_pc_raw_cost_sum_tab,
284 l_pc_burdend_cost_sum_tab,
285 l_pc_revenue_sum_tab,
286 l_pfc_raw_cost_sum_tab,
287 l_pfc_burdend_cost_sum_tab,
288 l_pfc_revenue_sum_tab;
289 CLOSE txn_sum_csr;
290
291 DELETE /*+ INDEX(PA_FP_CALC_AMT_TMP3,PA_FP_CALC_AMT_TMP3_N1)*/
292 FROM pa_fp_calc_amt_tmp3
293 WHERE plan_version_id =
294 P_ETC_FP_COLS_REC.x_budget_version_id;
295
296 FORALL k in 1..l_txn_src_id_tab.count
297 INSERT INTO pa_fp_calc_amt_tmp3
298 (plan_version_id,
299 task_id,
300 res_list_member_id,
301 res_asg_id,
302 txn_currency_code,
303 quantity,
304 txn_raw_cost,
305 txn_burdened_cost,
306 txn_revenue,
307 pc_raw_cost,
308 pc_burdened_cost,
309 pc_revenue,
310 pfc_raw_cost,
311 pfc_burdened_cost,
312 pfc_revenue)
313 VALUES (P_ETC_FP_COLS_REC.x_budget_version_id,
314 l_task_id_tab(k),
315 l_rlm_id_tab(k),
316 l_txn_src_id_tab(k),
317 l_txn_currency_code_tab(k),
318 l_qty_tab(k),
319 l_txn_raw_cost_sum_tab(k),
320 l_txn_burdend_cost_sum_tab(k),
321 l_txn_revenue_sum_tab(k),
322 l_pc_raw_cost_sum_tab(k),
323 l_pc_burdend_cost_sum_tab(k),
324 l_pc_revenue_sum_tab(k),
325 l_pfc_raw_cost_sum_tab(k),
326 l_pfc_burdend_cost_sum_tab(k),
327 l_pfc_revenue_sum_tab(k));
328 ELSIF p_cb_fp_cols_rec.x_resource_list_id =
329 p_etc_fp_cols_rec.x_resource_list_id THEN
330 INSERT INTO PA_FP_CALC_AMT_TMP3
331 (plan_version_id,
332 task_id,
333 res_list_member_id,
334 res_asg_id,
335 txn_currency_code,
336 quantity,
337 txn_raw_cost,
338 txn_burdened_cost,
339 txn_revenue,
340 pc_raw_cost,
341 pc_burdened_cost,
342 pc_revenue,
343 pfc_raw_cost,
344 pfc_burdened_cost,
345 pfc_revenue)
346 (SELECT ra.budget_version_id,
347 ra.task_id,
348 ra.resource_list_member_id,
349 ra.resource_assignment_id,
350 decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
351 'Y', bl.txn_currency_code,
352 'N',p_target_fp_cols_rec.x_project_currency_code),
353 sum(bl.quantity),
354 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
355 'Y',bl.txn_raw_cost,
356 'N',bl.project_raw_cost)),
357 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
358 'Y',bl.txn_burdened_cost,
359 'N',bl.project_burdened_cost)),
360 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
361 'Y',bl.txn_revenue,
362 'N',bl.project_revenue)),
363 sum(bl.project_raw_cost),
364 sum(bl.project_burdened_cost),
365 sum(bl.project_revenue),
366 sum(bl.raw_cost),
367 sum(bl.burdened_cost),
368 sum(bl.revenue)
369 FROM pa_resource_assignments ra,
370 pa_budget_lines bl
371 WHERE ra.resource_assignment_id = bl.resource_assignment_id
372 AND ra.budget_version_id = p_source_bv_id
373 and bl.cost_rejection_code is null
377 and bl.pc_cur_conv_rejection_code is null
374 and bl.revenue_rejection_code is null
375 and bl.burden_rejection_code is null
376 and bl.other_rejection_code is null
378 and bl.pfc_cur_conv_rejection_code is null
379 GROUP BY
380 ra.budget_version_id,
381 ra.task_id,
382 ra.resource_list_member_id,
383 ra.resource_assignment_id,
384 decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
385 'Y',bl.txn_currency_code,
386 'N',p_target_fp_cols_rec.x_project_currency_code));
387
388 ELSIF l_rl_uncategorized_flag = 'N' THEN
389 INSERT INTO PA_FP_CALC_AMT_TMP3
390 (plan_version_id,
391 task_id,
392 res_list_member_id,
393 res_asg_id,
394 txn_currency_code,
395 quantity,
396 txn_raw_cost,
397 txn_burdened_cost,
398 txn_revenue,
399 pc_raw_cost,
400 pc_burdened_cost,
401 pc_revenue,
402 pfc_raw_cost,
403 pfc_burdened_cost,
404 pfc_revenue)
405 (SELECT ra.budget_version_id,
406 ra.task_id,
407 l_uc_res_list_rlm_id,
408 ra.resource_assignment_id,
409 decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
410 'Y', bl.txn_currency_code,
411 'N',p_target_fp_cols_rec.x_project_currency_code),
412 sum(bl.quantity),
413 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
414 'Y',bl.txn_raw_cost,
415 'N',bl.project_raw_cost)),
416 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
417 'Y',bl.txn_burdened_cost,
418 'N',bl.project_burdened_cost)),
419 sum(decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
420 'Y',bl.txn_revenue,
421 'N',bl.project_revenue)),
422 sum(bl.project_raw_cost),
423 sum(bl.project_burdened_cost),
424 sum(bl.project_revenue),
425 sum(bl.raw_cost),
426 sum(bl.burdened_cost),
427 sum(bl.revenue)
428 FROM pa_resource_assignments ra,
429 pa_budget_lines bl
430 WHERE ra.resource_assignment_id = bl.resource_assignment_id
431 AND ra.budget_version_id = p_source_bv_id
432 and bl.cost_rejection_code is null
433 and bl.revenue_rejection_code is null
434 and bl.burden_rejection_code is null
435 and bl.other_rejection_code is null
436 and bl.pc_cur_conv_rejection_code is null
437 and bl.pfc_cur_conv_rejection_code is null
438 GROUP BY
439 ra.budget_version_id,
440 ra.task_id,
441 l_uc_res_list_rlm_id,
442 ra.resource_assignment_id,
443 decode(p_target_fp_cols_rec.x_plan_in_multi_curr_flag,
444 'Y',bl.txn_currency_code,
445 'N',p_target_fp_cols_rec.x_project_currency_code));
446 END IF;
447
448 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
449 PA_DEBUG.reset_err_stack;
450 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
451 PA_DEBUG.Reset_Curr_Function;
452 END IF;
453
454 EXCEPTION
455 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
456 l_msg_count := FND_MSG_PUB.count_msg;
457 IF l_msg_count = 1 THEN
458 PA_INTERFACE_UTILS_PUB.get_messages
459 ( p_encoded => FND_API.G_TRUE,
460 p_msg_index => 1,
461 p_msg_count => l_msg_count,
462 p_msg_data => l_msg_data,
463 p_data => l_data,
464 p_msg_index_out => l_msg_index_out);
465 x_msg_data := l_data;
466 x_msg_count := l_msg_count;
467 ELSE
468 x_msg_count := l_msg_count;
469 END IF;
470 ROLLBACK;
471
472 x_return_status := FND_API.G_RET_STS_ERROR;
473 IF P_PA_DEBUG_MODE = 'Y' THEN
474 pa_fp_gen_amount_utils.fp_debug
475 (p_msg => 'Invalid Arguments Passed',
476 p_module_name => l_module_name,
477 p_log_level => 5);
478 IF p_init_msg_flag = 'Y' THEN
479 PA_DEBUG.reset_err_stack;
480 ELSIF p_init_msg_flag = 'N' THEN
481 PA_DEBUG.Reset_Curr_Function;
482 END IF;
483 END IF;
484 RAISE;
485
486 WHEN OTHERS THEN
487 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
488 x_msg_data := SUBSTR(SQLERRM,1,240);
489 FND_MSG_PUB.add_exc_msg
490 ( p_pkg_name => 'PA_FP_MAP_BV_PUB'
491 ,p_procedure_name => 'GEN_MAP_BV_TO_TARGET_RL');
492 IF P_PA_DEBUG_MODE = 'Y' THEN
493 pa_fp_gen_amount_utils.fp_debug
494 (p_msg => 'Unexpected Error'||substr(sqlerrm, 1, 240),
495 p_module_name => l_module_name,
496 p_log_level => 5);
497 IF p_init_msg_flag = 'Y' THEN
501 END IF;
498 PA_DEBUG.reset_err_stack;
499 ELSIF p_init_msg_flag = 'N' THEN
500 PA_DEBUG.Reset_Curr_Function;
502 END IF;
503 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
504
505 END GEN_MAP_BV_TO_TARGET_RL;
506
507 PROCEDURE MAINTAIN_RBS_DTLS
508 (P_BUDGET_VERSION_ID IN PA_BUDGET_VERSIONS.BUDGET_VERSION_ID%TYPE,
509 P_FP_COLS_REC IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
510 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
511 X_MSG_COUNT OUT NOCOPY NUMBER,
512 X_MSG_DATA OUT NOCOPY VARCHAR2) IS
513 l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_map_bv_pub.maintain_rbs_dtls';
514
515 l_res_list_member_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
516 l_rbs_element_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
517 l_txn_accum_header_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
518 l_txn_src_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
519
520 l_count NUMBER;
521 l_msg_count NUMBER;
522 l_data VARCHAR2(2000);
523 l_msg_data VARCHAR2(2000);
524 l_msg_index_out NUMBER;
525
526 BEGIN
527 --Calling the map_rlmi_rbs api
528 IF p_pa_debug_mode = 'Y' THEN
529 pa_debug.set_curr_function( p_function => 'MAINTAIN_RBS_DTLS'
530 ,p_debug_mode => p_pa_debug_mode);
531 pa_fp_gen_amount_utils.fp_debug
532 (p_msg => 'Before calling
533 pa_rlmi_rbs_map_pub.map_rlmi_rbs',
534 p_module_name => l_module_name,
535 p_log_level => 5);
536 END IF;
537 PA_RLMI_RBS_MAP_PUB.MAP_RLMI_RBS
538 ( p_budget_version_id => p_budget_version_id,
539 p_resource_list_id => null,
540 p_rbs_version_id => p_fp_cols_rec.x_rbs_version_id,
541 p_calling_process => 'BUDGET_GENERATION',
542 p_calling_context => 'PLSQL',
543 p_process_code => 'RBS_MAP',
544 p_calling_mode => 'BUDGET_VERSION',
545 p_init_msg_list_flag => 'N',
546 p_commit_flag => 'N',
547 x_txn_source_id_tab => l_txn_src_id_tab,
548 x_res_list_member_id_tab => l_res_list_member_id_tab,
549 x_rbs_element_id_tab => l_rbs_element_id_tab,
550 x_txn_accum_header_id_tab => l_txn_accum_header_id_tab,
551 x_return_status => x_return_status,
552 x_msg_count => x_msg_count,
553 x_msg_data => x_msg_data);
554 IF X_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS THEN
555 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
556 END IF;
557 IF p_pa_debug_mode = 'Y' THEN
558 pa_fp_gen_amount_utils.fp_debug
559 (p_msg => 'Status after calling
560 pa_rlmi_rbs_map_pub.map_rlmi_rbs'
561 ||x_return_status,
562 p_module_name => l_module_name,
563 p_log_level => 5);
564 END IF;
565 /* dbms_output.put_line('Status of map_rlmi_rbs api: '
566 ||X_RETURN_STATUS); */
567
568 FORALL i IN 1..l_txn_src_id_tab.count
569 UPDATE pa_resource_assignments
570 SET rbs_element_id = l_rbs_element_id_tab(i),
571 txn_accum_header_id = l_txn_accum_header_id_tab(i)
572 WHERE resource_assignment_id = l_txn_src_id_tab(i);
573
574 IF p_pa_debug_mode = 'Y' THEN
575 PA_DEBUG.Reset_Curr_Function;
576 END IF;
577
578 EXCEPTION
579 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
580 l_msg_count := FND_MSG_PUB.count_msg;
581 IF l_msg_count = 1 THEN
582 PA_INTERFACE_UTILS_PUB.get_messages
583 ( p_encoded => FND_API.G_TRUE,
584 p_msg_index => 1,
585 p_msg_count => l_msg_count,
586 p_msg_data => l_msg_data,
587 p_data => l_data,
588 p_msg_index_out => l_msg_index_out);
589 x_msg_data := l_data;
590 x_msg_count := l_msg_count;
591 ELSE
592 x_msg_count := l_msg_count;
593 END IF;
594 ROLLBACK;
595
596 x_return_status := FND_API.G_RET_STS_ERROR;
597 IF P_PA_DEBUG_MODE = 'Y' THEN
598 pa_fp_gen_amount_utils.fp_debug
599 (p_msg => 'Invalid Arguments Passed',
600 p_module_name => l_module_name,
601 p_log_level => 5);
602 PA_DEBUG.Reset_Curr_Function;
603 END IF;
604 RAISE;
605
606 WHEN OTHERS THEN
607 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608 x_msg_data := SUBSTR(SQLERRM,1,240);
609 FND_MSG_PUB.add_exc_msg
610 ( p_pkg_name => 'PA_FP_MAP_BV_PUB'
611 ,p_procedure_name => 'MAINTAIN_RBS_DTLS');
612 IF P_PA_DEBUG_MODE = 'Y' THEN
613 pa_fp_gen_amount_utils.fp_debug
614 (p_msg => 'Unexpected Error'||substr(sqlerrm, 1, 240),
615 p_module_name => l_module_name,
616 p_log_level => 5);
617 PA_DEBUG.Reset_Curr_Function;
618 END IF;
619 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
620 END MAINTAIN_RBS_DTLS;
621
622 END PA_FP_MAP_BV_PUB;