DBA Data[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;