[Home] [Help]
PACKAGE BODY: APPS.PA_FP_AUTO_BASELINE_PKG
Source
1 PACKAGE BODY PA_FP_AUTO_BASELINE_PKG AS
2 /* $Header: PAFPABPB.pls 120.3 2005/09/23 12:29:09 rnamburi noship $ */
3
4 g_module_name VARCHAR2(100) := 'pa.plsql.PA_FP_AUTO_BASELINE_PKG';
5
6 /*==============================================================================
7 This api would be calling by the billing code to create a baselined version
8 based on the funding lines when automatic baseline feature is enabled for
9 the project.
10 ===============================================================================*/
11
12 P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
13
14 PROCEDURE CREATE_BASELINED_VERSION
15 ( p_project_id IN pa_budget_versions.project_id%TYPE
16 ,p_fin_plan_type_id IN pa_budget_versions.fin_plan_type_id%TYPE
17 ,p_funding_level_code IN pa_proj_fp_options.cost_fin_plan_level_code%TYPE
18 ,p_version_name IN pa_budget_versions.version_name%TYPE
19 ,p_description IN pa_budget_versions.description%TYPE
20 ,p_funding_bl_tab IN pa_fp_auto_baseline_pkg.funding_bl_tab
21 -- Start of additional columns for Bug :- 2634900
22 ,p_ci_id IN pa_budget_versions.ci_id%TYPE --:= NULL
23 ,p_est_proj_raw_cost IN pa_budget_versions.est_project_raw_cost%TYPE --:= NULL
24 ,p_est_proj_bd_cost IN pa_budget_versions.est_project_burdened_cost%TYPE--:= NULL
25 ,p_est_proj_revenue IN pa_budget_versions.est_project_revenue%TYPE --:= NULL
26 ,p_est_qty IN pa_budget_versions.est_quantity%TYPE --:= NULL
27 ,p_est_equip_qty IN pa_budget_versions.est_equipment_quantity%TYPE -- FP.M
28 ,p_impacted_task_id IN pa_tasks.task_id%TYPE --:= NULL
29 ,p_agreement_id IN pa_budget_versions.agreement_id%TYPE --:= NULL
30 -- End of additional columns for Bug :- 2634900
31 ,x_budget_version_id OUT NOCOPY pa_budget_versions.budget_version_id%TYPE --File.Sql.39 bug 4440895
32 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
33 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
34 ,x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
35 AS
36 -- Bug Fix: 4569365. Removed MRC code.
37 -- l_calling_context pa_mrc_finplan.g_calling_module%TYPE; /* Bug# 2674353 */
38 l_calling_context VARCHAR2(30) ;
39
40 l_uncateg_resource_list_id pa_proj_fp_options.cost_resource_list_id%TYPE;
41 l_uncateg_rlm_id pa_resource_assignments.resource_list_member_id%TYPE;
42 l_uncateg_resource_id pa_resource_list_members.resource_id%TYPE;
43 l_uncateg_trk_as_labor_flg pa_resource_list_members.track_as_labor_flag%TYPE;
44 l_err_code pa_debug.G_Err_Code%TYPE;
45 l_err_stage pa_debug.g_err_stage%TYPE;
46
47 l_plan_in_mc_flag pa_proj_fp_options.plan_in_multi_curr_flag%TYPE;
48 l_budget_lines_tab pa_fin_plan_pvt.budget_lines_tab;
49
50 l_project_currency_code pa_projects_all.project_currency_code%TYPE;
51 l_projfunc_currency_code pa_projects_all.projfunc_currency_code%TYPE;
52 l_dummy_currency_code pa_projects_all.projfunc_currency_code%TYPE;
53
54 l_fp_options_id pa_proj_fp_options.proj_fp_options_id%TYPE;
55 l_baselined_version_id pa_budget_versions.budget_version_id%TYPE;
56 l_record_version_number pa_budget_versions.record_version_number%TYPE;
57 l_orig_record_version_number pa_budget_versions.record_version_number%TYPE;
58 l_created_version_id pa_budget_versions.budget_version_id%TYPE;
59
60 l_fp_mc_cols pa_proj_fp_options_pub.FP_MC_COLS;
61
62
63 l_msg_count NUMBER := 0;
64 l_data VARCHAR2(2000);
65 l_msg_data VARCHAR2(2000);
66 l_return_status VARCHAR2(1);
67 l_debug_mode VARCHAR2(30);
68 l_msg_index_out NUMBER;
69 l_fc_version_created_flag VARCHAR2(1);
70
71 BEGIN
72
73 x_msg_count := 0;
74 x_return_status := FND_API.G_RET_STS_SUCCESS;
75 pa_debug.set_err_stack('PA_FP_AUTO_BASELINE_PKG.CREATE_AUTO_BASELINE_VERSION');
76 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
77 l_debug_mode := NVL(l_debug_mode, 'Y');
78 pa_debug.set_process('PLSQL','LOG',l_debug_mode);
79
80 -- Check for business rules violations
81
82 pa_debug.g_err_stage:= 'Validating input parameters';
83 IF P_PA_DEBUG_MODE = 'Y' THEN
84 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
85 END IF;
86
87 --Check if project id or plan type id or plan level code
88 --is null
89
90 IF (p_project_id is null or p_fin_plan_type_id is null or p_version_name is null
91 or p_funding_level_code not in (PA_FP_CONSTANTS_PKG.G_BUDGET_ENTRY_LEVEL_PROJECT,
92 PA_FP_CONSTANTS_PKG.G_BUDGET_ENTRY_LEVEL_TOP))
93 THEN
94
95 pa_debug.g_err_stage:= 'project id = '|| p_project_id ;
96 IF P_PA_DEBUG_MODE = 'Y' THEN
97 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
98 END IF;
99
100 pa_debug.g_err_stage:= 'plan type id = '|| p_fin_plan_type_id;
101 IF P_PA_DEBUG_MODE = 'Y' THEN
102 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
103 END IF;
104
105 pa_debug.g_err_stage:= 'finplan level code = '|| p_funding_level_code;
106 IF P_PA_DEBUG_MODE = 'Y' THEN
107 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
108 END IF;
109
110 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
111 p_msg_name => 'PA_FP_INV_PARAM_PASSED');
112
113 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
114
115 END IF;
116
117 pa_debug.g_err_stage:= 'Input parameters validated';
118 IF P_PA_DEBUG_MODE = 'Y' THEN
119 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
120 END IF;
121
122 l_calling_context := PA_FP_CONSTANTS_PKG.G_AUTOMATIC_BASELINE; /* Bug# 2674353 */
123
124 pa_debug.g_err_stage:= 'Get the uncategorized resource list id';
125 IF P_PA_DEBUG_MODE = 'Y' THEN
126 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
127 END IF;
128
129 PA_GET_RESOURCE.Get_Uncateg_Resource_Info( p_resource_list_id => l_uncateg_resource_list_id
130 ,p_resource_list_member_id => l_uncateg_rlm_id
131 ,p_resource_id => l_uncateg_resource_id
132 ,p_track_as_labor_flag => l_uncateg_trk_as_labor_flg
133 ,p_err_code => l_err_code
134 ,p_err_stage => l_err_stage
135 ,p_err_stack => PA_DEBUG.G_Err_Stack);
136
137 pa_debug.g_err_stage:= 'uncategorized resource list id ' || l_uncateg_resource_list_id;
138 IF P_PA_DEBUG_MODE = 'Y' THEN
139 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
140 END IF;
141
142 pa_debug.g_err_stage:= 'Determine the MC flag';
143 IF P_PA_DEBUG_MODE = 'Y' THEN
144 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
145 END IF;
146
147 pa_budget_utils.Get_Project_Currency_Info
148 (
149 p_project_id => p_project_id
150 , x_projfunc_currency_code => l_projfunc_currency_code
151 , x_project_currency_code => l_project_currency_code
152 , x_txn_currency_code => l_dummy_currency_code
153 , x_msg_count => x_msg_count
154 , x_msg_data => x_msg_data
155 , x_return_status => x_return_status
156 );
157
158 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
159 pa_debug.g_err_stage:= 'Could not obtain currency info for the project';
160 IF P_PA_DEBUG_MODE = 'Y' THEN
161 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
162 END IF;
163 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
164 END IF;
165
166
167 IF ( l_projfunc_currency_code <> l_project_currency_code) THEN
168 l_plan_in_mc_flag := 'Y';
169 ELSE
170 l_plan_in_mc_flag := 'N';
171 END IF;
172
173 pa_debug.g_err_stage:= 'MC flag -> ' || l_plan_in_mc_flag;
174 IF P_PA_DEBUG_MODE = 'Y' THEN
175 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
176 END IF;
177
178
179 pa_debug.g_err_stage:= 'Get the currency attributes from the plan type';
180 IF P_PA_DEBUG_MODE = 'Y' THEN
181 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
182 END IF;
183
184 l_fp_options_id := pa_proj_fp_options_pub.get_fp_option_id( p_project_id => p_project_id
185 ,p_plan_type_id => p_fin_plan_type_id
186 ,p_plan_version_id => NULL );
187
188 pa_debug.g_err_stage:= 'plan type option id is ' || l_fp_options_id;
189 IF P_PA_DEBUG_MODE = 'Y' THEN
190 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
191 END IF;
192
193 l_fp_mc_cols := pa_proj_fp_options_pub.Get_FP_Proj_Mc_Options(p_proj_fp_options_id => l_fp_options_id);
194
195
196 pa_debug.g_err_stage:= 'Prepare the budget lines tab from funding lines tab';
197 IF P_PA_DEBUG_MODE = 'Y' THEN
198 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
199 END IF;
200
201
202
203 /* Review Comment - Included comment for system reference columns
204 system_reference1 -> task_id
205 system_reference2 -> resource_list_member_id
206 system_reference4 -> unit_of_measure
207 system_reference5 -> track_as_labor_flag
208 */
209 IF nvl(p_funding_bl_tab.last,0) > 0 THEN
210 FOR i IN p_funding_bl_tab.first..p_funding_bl_tab.last LOOP
211 IF(p_funding_level_code = PA_FP_CONSTANTS_PKG.G_BUDGET_ENTRY_LEVEL_PROJECT) THEN
212 l_budget_lines_tab(i).system_reference1 := 0;
213 ELSE
214 l_budget_lines_tab(i).system_reference1 := p_funding_bl_tab(i).task_id;
215 END IF;
216
217 l_budget_lines_tab(i).description := p_funding_bl_tab(i).description;
218 IF(p_funding_bl_tab(i).start_date IS NULL) THEN
219 pa_debug.g_err_stage:= 'start date is null';
220 IF P_PA_DEBUG_MODE = 'Y' THEN
221 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
222 END IF;
223 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
224 ELSE
225 l_budget_lines_tab(i).start_date := p_funding_bl_tab(i).start_date;
226 END IF;
227
228
229 /* In budget lines table the end date is a not null column. Hence including
230 the following validation */
231 IF(p_funding_bl_tab(i).end_date IS NULL) THEN --Included after UT.
232 pa_debug.g_err_stage:= 'end date is null';
233 IF P_PA_DEBUG_MODE = 'Y' THEN
234 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
235 END IF;
236 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
237 ELSE
238 l_budget_lines_tab(i).end_date := p_funding_bl_tab(i).end_date;
239 END IF;
240
241 --Commented after UT.
242 --l_budget_lines_tab(i).end_date := p_funding_bl_tab(i).end_date;
243
244 l_budget_lines_tab(i).projfunc_revenue := p_funding_bl_tab(i).projfunc_revenue;
245 l_budget_lines_tab(i).project_revenue := p_funding_bl_tab(i).project_revenue;
246 l_budget_lines_tab(i).system_reference2 := l_uncateg_rlm_id;
247 l_budget_lines_tab(i).period_name := NULL;
248 l_budget_lines_tab(i).quantity := NULL;
249 l_budget_lines_tab(i).system_reference4 := NULL; /* Changed after ut */
250 l_budget_lines_tab(i).system_reference5 := 'N'; /* Changed after ut */
251 l_budget_lines_tab(i).txn_currency_code := l_projfunc_currency_code;
252 l_budget_lines_tab(i).projfunc_raw_cost := NULL;
253 l_budget_lines_tab(i).projfunc_burdened_cost := NULL;
254 l_budget_lines_tab(i).txn_raw_cost := NULL;
255 l_budget_lines_tab(i).txn_burdened_cost := NULL;
256 l_budget_lines_tab(i).txn_revenue := p_funding_bl_tab(i).projfunc_revenue;
257 l_budget_lines_tab(i).project_raw_cost := NULL;
258 l_budget_lines_tab(i).project_burdened_cost := NULL;
259 l_budget_lines_tab(i).change_reason_code := NULL;
260 l_budget_lines_tab(i).attribute_category := NULL;
261 l_budget_lines_tab(i).attribute1 := NULL;
262 l_budget_lines_tab(i).attribute2 := NULL;
263 l_budget_lines_tab(i).attribute4 := NULL;
264 l_budget_lines_tab(i).attribute5 := NULL;
265 l_budget_lines_tab(i).attribute6 := NULL;
266 l_budget_lines_tab(i).attribute7 := NULL;
267 l_budget_lines_tab(i).attribute8 := NULL;
268 l_budget_lines_tab(i).attribute9 := NULL;
269 l_budget_lines_tab(i).attribute10 := NULL;
270 l_budget_lines_tab(i).attribute11 := NULL;
271 l_budget_lines_tab(i).attribute12 := NULL;
272 l_budget_lines_tab(i).attribute13 := NULL;
273 l_budget_lines_tab(i).attribute14 := NULL;
274 l_budget_lines_tab(i).attribute15 := NULL;
275 l_budget_lines_tab(i).PROJFUNC_COST_RATE_TYPE := l_fp_mc_cols.projfunc_cost_rate_type;
276 l_budget_lines_tab(i).PROJFUNC_COST_RATE_DATE_TYPE := l_fp_mc_cols.projfunc_cost_rate_date_type;
277 l_budget_lines_tab(i).PROJFUNC_COST_RATE_DATE := l_fp_mc_cols.projfunc_cost_rate_date;
278 l_budget_lines_tab(i).PROJFUNC_COST_EXCHANGE_RATE := NULL;
279 l_budget_lines_tab(i).PROJFUNC_REV_RATE_TYPE := l_fp_mc_cols.projfunc_rev_rate_type;
280 l_budget_lines_tab(i).PROJFUNC_REV_RATE_DATE_TYPE := l_fp_mc_cols.projfunc_rev_rate_date_type;
281 l_budget_lines_tab(i).PROJFUNC_REV_RATE_DATE := l_fp_mc_cols.projfunc_rev_rate_date;
282 l_budget_lines_tab(i).PROJFUNC_REV_EXCHANGE_RATE := NULL;
283 l_budget_lines_tab(i).PROJECT_COST_RATE_TYPE := l_fp_mc_cols.project_cost_rate_type;
284 l_budget_lines_tab(i).PROJECT_COST_RATE_DATE_TYPE := l_fp_mc_cols.project_cost_rate_date_type;
285 l_budget_lines_tab(i).PROJECT_COST_RATE_DATE := l_fp_mc_cols.project_cost_rate_date;
286 l_budget_lines_tab(i).PROJECT_COST_EXCHANGE_RATE := NULL;
287 l_budget_lines_tab(i).PROJECT_REV_RATE_TYPE := l_fp_mc_cols.project_rev_rate_type;
288 l_budget_lines_tab(i).PROJECT_REV_RATE_DATE_TYPE := l_fp_mc_cols.project_rev_rate_date_type;
289 l_budget_lines_tab(i).PROJECT_REV_RATE_DATE := l_fp_mc_cols.project_rev_rate_date;
290 l_budget_lines_tab(i).PROJECT_REV_EXCHANGE_RATE := NULL;
291 l_budget_lines_tab(i).pm_product_code := NULL;
292 l_budget_lines_tab(i).pm_budget_line_reference := NULL;
293 l_budget_lines_tab(i).quantity_source := PA_FP_CONSTANTS_PKG.G_AMOUNT_SOURCE_MANUAL_M;
294 l_budget_lines_tab(i).raw_cost_source := PA_FP_CONSTANTS_PKG.G_AMOUNT_SOURCE_MANUAL_M;
295 l_budget_lines_tab(i).burdened_cost_source := PA_FP_CONSTANTS_PKG.G_AMOUNT_SOURCE_MANUAL_M;
296 l_budget_lines_tab(i).revenue_source := PA_FP_CONSTANTS_PKG.G_AMOUNT_SOURCE_MANUAL_M;
297 l_budget_lines_tab(i).resource_assignment_id := -1;
298 END LOOP;
299 END IF;
300
301 pa_debug.g_err_stage:= 'Calling pa_fin_plan_pvt.create_draft';
302 IF P_PA_DEBUG_MODE = 'Y' THEN
303 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
304 END IF;
305
306 pa_fin_plan_pvt.create_draft
307 ( p_project_id => p_project_id
308 ,p_fin_plan_type_id => p_fin_plan_type_id
309 ,p_version_type => PA_FP_CONSTANTS_PKG.G_ELEMENT_TYPE_REVENUE
310 ,p_calling_context => l_calling_context
311 ,p_time_phased_code => PA_FP_CONSTANTS_PKG.G_TIME_PHASED_CODE_N
312 ,p_resource_list_id => l_uncateg_resource_list_id
313 ,p_fin_plan_level_code => p_funding_level_code
314 ,p_plan_in_mc_flag => l_plan_in_mc_flag
315 ,p_version_name => p_version_name
316 ,p_description => p_description
317 ,p_change_reason_code => NULL
318 ,p_raw_cost_flag => 'N'
319 ,p_burdened_cost_flag => 'N'
320 ,p_cost_qty_flag => 'N'
321 ,p_revenue_flag => 'Y'
322 /* Bug# 2676365 - For autobaseline case, the revenue qty should be enterable
323 ,p_revenue_qty_flag => 'N' Bug# 2676365 */
324 ,p_revenue_qty_flag => 'Y'
325 ,p_all_qty_flag => 'N'
326 ,p_attribute_category => NULL
327 ,p_attribute1 => NULL
328 ,p_attribute2 => NULL
329 ,p_attribute3 => NULL
330 ,p_attribute4 => NULL
331 ,p_attribute5 => NULL
332 ,p_attribute6 => NULL
333 ,p_attribute7 => NULL
334 ,p_attribute8 => NULL
335 ,p_attribute9 => NULL
336 ,p_attribute10 => NULL
337 ,p_attribute11 => NULL
338 ,p_attribute12 => NULL
339 ,p_attribute13 => NULL
340 ,p_attribute14 => NULL
341 ,p_attribute15 => NULL
342 ,x_budget_version_id => l_created_version_id
343 ,p_projfunc_cost_rate_type => l_fp_mc_cols.projfunc_cost_rate_type
344 ,p_projfunc_cost_rate_date_type => l_fp_mc_cols.projfunc_cost_rate_date_type
345 ,p_projfunc_cost_rate_date => l_fp_mc_cols.projfunc_cost_rate_date
346 ,p_projfunc_rev_rate_type => l_fp_mc_cols.projfunc_rev_rate_type
347 ,p_projfunc_rev_rate_date_type => l_fp_mc_cols.projfunc_rev_rate_date_type
348 ,p_projfunc_rev_rate_date => l_fp_mc_cols.projfunc_rev_rate_date
349 ,p_project_cost_rate_type => l_fp_mc_cols.project_cost_rate_type
350 ,p_project_cost_rate_date_type => l_fp_mc_cols.project_cost_rate_date_type
351 ,p_project_cost_rate_date => l_fp_mc_cols.project_cost_rate_date
352 ,p_project_rev_rate_type => l_fp_mc_cols.project_rev_rate_type
353 ,p_project_rev_rate_date_type => l_fp_mc_cols.project_rev_rate_date_type
354 ,p_project_rev_rate_date => l_fp_mc_cols.project_rev_rate_date
355 ,p_pm_product_code => NULL
356 ,p_pm_budget_reference => NULL
357 ,p_budget_lines_tab => l_budget_lines_tab
358 -- Start of additional columns for Bug :- 2634900
359 ,p_ci_id => p_ci_id
360 ,p_est_proj_raw_cost => p_est_proj_raw_cost
361 ,p_est_proj_bd_cost => p_est_proj_bd_cost
362 ,p_est_proj_revenue => p_est_proj_revenue
363 ,p_est_qty => p_est_qty
364 ,p_est_equip_qty => p_est_equip_qty
365 ,p_impacted_task_id => p_impacted_task_id
366 ,p_agreement_id => p_agreement_id
367 -- End of additional columns for Bug :- 2634900
368
369 --Added the following parameters. These parameters are added to create_draft for AMG
370 ,p_create_new_curr_working_flag => 'N'
371 ,p_replace_current_working_flag => 'Y'
372 ,x_return_status => x_return_status
373 ,x_msg_count => x_msg_count
374 ,x_msg_data => x_msg_data );
375
376 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
377 pa_debug.g_err_stage:= 'Error Calling Create_Draft';
378 IF P_PA_DEBUG_MODE = 'Y' THEN
379 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
380 END IF;
381 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
382 ELSE
383 x_budget_version_id := l_created_version_id;
384 pa_debug.g_err_stage:= 'successful call of Create_Draft. Created Version id : ' || l_created_version_id;
385 IF P_PA_DEBUG_MODE = 'Y' THEN
386 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
387 END IF;
388 END IF;
389
390 /* Review Comment */
391 l_record_version_number := pa_fin_plan_utils.Retrieve_Record_Version_Number
392 (p_budget_version_id => l_created_version_id);
393
394 /* The version needs to be baselined only if the ci_id is null - Bug 2672654 */
395 IF (p_ci_id is null) THEN
396 pa_debug.g_err_stage:= 'This is not a control item version - Going ahead to baseline';
397 IF P_PA_DEBUG_MODE = 'Y' THEN
398 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
399 END IF;
400
401 pa_debug.g_err_stage:= 'Get details of the existing baselined version';
402 IF P_PA_DEBUG_MODE = 'Y' THEN
403 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
404 END IF;
405
406 PA_FIN_PLAN_UTILS.Get_Baselined_Version_Info(
407 p_project_id => p_project_id
408 ,p_fin_plan_type_id => p_fin_plan_type_id
409 ,p_version_type => PA_FP_CONSTANTS_PKG.G_ELEMENT_TYPE_REVENUE
410 ,x_fp_options_id => l_fp_options_id
411 ,x_fin_plan_version_id => l_baselined_version_id
412 ,x_return_status => x_return_status
413 ,x_msg_count => x_msg_count
414 ,x_msg_data => x_msg_data );
415
416 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
417 pa_debug.g_err_stage:= 'Error Getting current baselined version info';
418 IF P_PA_DEBUG_MODE = 'Y' THEN
419 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
420 END IF;
421 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
422 END IF;
423
424 pa_debug.g_err_stage:= 'current baselined version id -> ' || l_baselined_version_id;
425 IF P_PA_DEBUG_MODE = 'Y' THEN
426 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
427 END IF;
428
429
430
431 l_record_version_number := pa_fin_plan_utils.Retrieve_Record_Version_Number
432 (p_budget_version_id => l_created_version_id);
433
434 IF l_baselined_version_id is not null THEN
435 l_orig_record_version_number := pa_fin_plan_utils.Retrieve_Record_Version_Number
436 (p_budget_version_id => l_baselined_version_id);
437 END IF;
438 -- Bug Fix: 4569365. Removed MRC code.
439 -- PA_MRC_FINPLAN.G_CALLING_MODULE := l_calling_context; /* Bug 2881994 */
440
441 PA_FIN_PLAN_PUB.Baseline(
442 p_project_id => p_project_id
443 ,p_budget_version_id => l_created_version_id
444 ,p_record_version_number => l_record_version_number -- Changed after Review.
445 ,p_orig_budget_version_id => l_baselined_version_id
446 ,p_orig_record_version_number => l_orig_record_version_number -- Changed after Review.
447 ,x_fc_version_created_flag => l_fc_version_created_flag
448 ,x_return_status => x_return_status
449 ,x_msg_count => x_msg_count
450 ,x_msg_data => x_msg_data );
451 -- Bug Fix: 4569365. Removed MRC code.
452 -- PA_MRC_FINPLAN.G_CALLING_MODULE := null; /* Bug 2881994 */
453
454 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
455 pa_debug.g_err_stage:= 'Error baselining version - Version id->' || l_created_version_id;
456 IF P_PA_DEBUG_MODE = 'Y' THEN
457 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
458 END IF;
459 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
460 END IF;
461
462 ELSE
463 pa_debug.g_err_stage:= 'This is a control item version - Skipped baseline';
464 IF P_PA_DEBUG_MODE = 'Y' THEN
465 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
466 END IF;
467 END IF;
468
469 pa_debug.g_err_stage:= 'Exiting CREATE_AUTO_BASELINE_VERSION';
470 IF P_PA_DEBUG_MODE = 'Y' THEN
471 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL3);
472 END IF;
473 pa_debug.reset_err_stack;
474
475 EXCEPTION
476
477 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
478 x_budget_version_id := NULL; --NOCOPY
479 x_return_status := FND_API.G_RET_STS_ERROR;
480 -- Bug Fix: 4569365. Removed MRC code.
481 -- PA_MRC_FINPLAN.G_CALLING_MODULE := null; /* Bug 2881994 */
482 l_msg_count := FND_MSG_PUB.count_msg;
483 IF l_msg_count = 1 THEN
484 PA_INTERFACE_UTILS_PUB.get_messages
485 (p_encoded => FND_API.G_TRUE
486 ,p_msg_index => 1
487 ,p_msg_count => l_msg_count
488 ,p_msg_data => l_msg_data
489 ,p_data => l_data
490 ,p_msg_index_out => l_msg_index_out);
491 x_msg_data := l_data;
492 x_msg_count := l_msg_count;
493 ELSE
494 x_msg_count := l_msg_count;
495 END IF;
496
497 pa_debug.g_err_stage:= 'Invalid Arguments Passed';
498 IF P_PA_DEBUG_MODE = 'Y' THEN
499 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
500 END IF;
501 pa_debug.reset_err_stack;
502 RAISE;
503
504 WHEN others THEN
505
506 x_budget_version_id := NULL; --NOCOPY
507 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
508 x_msg_count := 1;
509 x_msg_data := SQLERRM;
510 -- Bug Fix: 4569365. Removed MRC code.
511 -- PA_MRC_FINPLAN.G_CALLING_MODULE := null; /* Bug 2881994 */
512 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_AUTO_BASELINE_PKG'
513 ,p_procedure_name => 'CREATE_BASELINED_VERSION');
514 pa_debug.g_err_stage:= 'Unexpected Error'||SQLERRM;
515 IF P_PA_DEBUG_MODE = 'Y' THEN
516 pa_debug.write('CREATE_BASELINED_VERSION: ' || g_module_name,pa_debug.g_err_stage,PA_FP_CONSTANTS_PKG.G_DEBUG_LEVEL5);
517 END IF;
518 pa_debug.reset_err_stack;
519 RAISE;
520
521 END CREATE_BASELINED_VERSION;
522
523 END PA_FP_AUTO_BASELINE_PKG;