DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.PA_ASSIGNMENT_PROGRESS_PUB

Source


1 PACKAGE BODY PA_ASSIGNMENT_PROGRESS_PUB AS
2 /* $Header: PAPRASPB.pls 120.12.12020000.7 2013/04/19 10:39:21 krkondur ship $ */
3 
4 G_PKG_NAME              CONSTANT VARCHAR2(30) := 'PA_ASSIGNMENT_PROGRESS_PUB';
5 
6 --g1_debug_mode varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
7 
8 PROCEDURE UPDATE_ASSIGNMENT_PROGRESS(
9  p_api_version             IN NUMBER    := 1.0                             ,
10  p_init_msg_list           IN VARCHAR2  := FND_API.G_TRUE                  ,
11  p_commit                  IN VARCHAR2  := FND_API.G_FALSE                 ,
12  p_validate_only           IN VARCHAR2  := FND_API.G_TRUE                  ,
13  p_validation_level        IN NUMBER    := FND_API.G_VALID_LEVEL_FULL      ,
14  p_calling_module          IN VARCHAR2  := 'SELF_SERVICE'                  ,
15  p_action                  IN VARCHAR2  := 'SAVE'                          ,
16  p_bulk_load_flag          IN VARCHAR2  := 'N'                             ,
17  p_progress_mode           IN VARCHAR2  := 'FUTURE'                        ,
18  p_percent_complete_id     IN NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
19  p_project_id              IN NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
20  p_object_id               IN NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
21  p_object_version_id       IN NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
22  p_task_id                 IN NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
23  p_as_of_date                 IN   DATE      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
24  p_progress_comment           IN   VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR     ,
25  p_brief_overview             IN   VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR     ,
26  p_actual_start_date          IN   DATE      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
27  p_actual_finish_date         IN   DATE      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
28  p_estimated_start_date       IN   DATE      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
29  p_estimated_finish_date      IN   DATE      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
30  p_record_version_number      IN   NUMBER    := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
31  p_pm_product_code            IN   VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR     ,
32  p_rate_based_flag            IN   VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR     ,
33  p_resource_class_code        IN   VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR     ,
34  p_txn_currency_code          IN        VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR         ,
35  p_rbs_element_id             IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM          ,
36  --p_resource_list_member_id    IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM          , --bug# 3764224
37  p_resource_assignment_id    IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM          ,
38  p_actual_cost                IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM          , -- Bug3621404 This parameter represents raw cost
39  p_actual_effort              IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM          ,
40  p_planned_cost               IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      , -- Bug3621404 This parameter represents raw cost
41  p_planned_effort             IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
42  p_structure_type             IN   VARCHAR2       := 'WORKPLAN'                                ,
43  p_structure_version_id       IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
47  p_etc_effort_this_period     IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      , -- Though the name of this column is this period but it is cumulative
44  p_actual_cost_this_period    IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      , -- Bug3621404 This parameter represents raw cost
45  p_actual_effort_this_period  IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      ,
46  p_etc_cost_this_period       IN   NUMBER         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM      , -- Though the name of this column is this period but it is cumulative -- Bug3621404 This parameter represents raw cost
48  p_scheduled_start_date       IN   DATE           := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
49  p_scheduled_finish_date      IN   DATE           := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE     ,
50  x_return_status              OUT  NOCOPY VARCHAR2                                                    , --File.Sql.39 bug 4440895
51  x_msg_count                  OUT  NOCOPY NUMBER                                                      , --File.Sql.39 bug 4440895
52  x_msg_data                   OUT  NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
53 IS
54 
55    l_api_name                      CONSTANT VARCHAR(30) := 'UPDATE_ASSIGNMENT_PROGRESS'             ;
56    l_api_version                   CONSTANT NUMBER      := 1.0                            ;
57    l_return_status                 VARCHAR2(1)                                       ;
58    l_msg_count                     NUMBER                                       ;
59    l_msg_data                      VARCHAR2(250)                                ;
60    l_data                          VARCHAR2(250)                                ;
61    l_msg_index_out                 NUMBER                                       ;
62    l_error_msg_code                VARCHAR2(250)                                ;
63    l_user_id                       NUMBER         := FND_GLOBAL.USER_ID                   ;
64    l_login_id                      NUMBER         := FND_GLOBAL.LOGIN_ID                  ;
65    l_task_id                NUMBER                                    ;
66    l_assignment_id                 NUMBER                                       ;
67    l_project_id                    NUMBER                                       ;
68    l_percent_complete_id    NUMBER                                    ;
69    l_PROGRESS_ROLLUP_ID          NUMBER                                    ;
70    l_last_progress_date            DATE                                         ;
71    l_progress_exists_on_aod        VARCHAR2(15)                                      ;
72    l_db_action                     VARCHAR2(10)                                      ;
73    l_published_flag                VARCHAR2(1)                                       ;
74    l_current_flag                  VARCHAR2(1)                                       ;
75    l_actual_start_date             DATE                                         ;
76    l_actual_finish_date            DATE                                         ;
77     --bug no. 3586648  start
78    l_scheduled_start_date          DATE                                         ;
79    l_scheduled_finish_date         DATE                                         ;
80     --bug no. 3586648  end
81    l_estimated_start_date          DATE                                         ;
82    l_estimated_finish_date         DATE                                         ;
83    l_est_remaining_eff_flag        VARCHAR2(1)                                       ;
84    l_rollup_rec_ver_number         NUMBER                                       ;
85    l_published_by_party_id         NUMBER            := PA_UTILS.get_party_id( l_user_id )          ;
86    l_working_aod                   DATE                                         ;
87    l_aod                           DATE                                         ;
88    l_progress_entry_enable_flag    VARCHAR2(1)                                       ;
89    l_object_type            VARCHAR2(15)          := 'PA_ASSIGNMENTS'                ;
90    l_structure_version_id        NUMBER                                    ;
91    l_published_structure           VARCHAR2(1)                                       ;
92    l_object_version_id           NUMBER                                    ;
93    g1_debug_mode            VARCHAR2(1)                                    ;
94    --l_structure_shared          VARCHAR2(1)                                    ;
95    l_structure_sharing_code        VARCHAR2(30)                                      ;  --bug no. 3586648
96    l_actual_effort_this_period     NUMBER                                       ;
97    l_etc_effort_this_period        NUMBER                                       ;
98    l_brief_overview         VARCHAR2(250)                                  ;
99    l_progress_comment            VARCHAR2(4000)                                 ;
100    l_pm_product_code               VARCHAR2(30)                                      ;
101 
102 
103   -- Raw Cost Changes : Changed the variables to include raw or burden
104    l_ppl_act_raw_cost_to_date_tc   NUMBER                                       ;
105    l_ppl_act_raw_cost_to_date_fc   NUMBER                                       ;
106    l_ppl_act_raw_cost_to_date_pc   NUMBER                                       ;
107    l_ppl_act_bur_cost_to_date_tc   NUMBER                                       ;
108    l_ppl_act_bur_cost_to_date_fc   NUMBER                                       ;
109    l_ppl_act_bur_cost_to_date_pc   NUMBER                                       ;
110    l_eqp_act_raw_cost_to_date_tc NUMBER                                    ;
111    l_eqp_act_raw_cost_to_date_fc NUMBER                                    ;
112    l_eqp_act_raw_cost_to_date_pc NUMBER                                    ;
113    l_eqp_act_bur_cost_to_date_tc NUMBER                                    ;
114    l_eqp_act_bur_cost_to_date_fc NUMBER                                    ;
115    l_eqp_act_bur_cost_to_date_pc NUMBER                                    ;
116    l_oth_act_raw_cost_to_date_tc   NUMBER                                       ;
117    l_oth_act_raw_cost_to_date_fc   NUMBER                                       ;
121    l_oth_act_bur_cost_to_date_pc   NUMBER                                       ;
118    l_oth_act_raw_cost_to_date_pc   NUMBER                                       ;
119    l_oth_act_bur_cost_to_date_tc   NUMBER                                       ;
120    l_oth_act_bur_cost_to_date_fc   NUMBER                                       ;
122    l_ppl_act_effort_to_date        NUMBER                                       ;
123    l_eqpmt_act_effort_to_date    NUMBER                                    ;
124    l_act_txn_raw_cost            NUMBER                                    ;
125    l_act_txn_bur_cost            NUMBER                                    ;
126 
127    l_ppl_etc_raw_cost_tc    NUMBER                                    ;
128    l_ppl_etc_raw_cost_fc    NUMBER                                    ;
129    l_ppl_etc_raw_cost_pc    NUMBER                                    ;
130    l_ppl_etc_bur_cost_tc    NUMBER                                    ;
131    l_ppl_etc_bur_cost_fc    NUMBER                                    ;
132    l_ppl_etc_bur_cost_pc    NUMBER                                    ;
133    l_eqpmt_etc_raw_cost_tc       NUMBER                                    ;
134    l_eqpmt_etc_raw_cost_fc       NUMBER                                    ;
135    l_eqpmt_etc_raw_cost_pc       NUMBER                                    ;
136    l_eqpmt_etc_bur_cost_tc       NUMBER                                    ;
137    l_eqpmt_etc_bur_cost_fc       NUMBER                                    ;
138    l_eqpmt_etc_bur_cost_pc       NUMBER                                    ;
139    l_oth_etc_raw_cost_tc    NUMBER                                    ;
140    l_oth_etc_raw_cost_fc    NUMBER                                    ;
141    l_oth_etc_raw_cost_pc    NUMBER                                    ;
142    l_oth_etc_bur_cost_tc    NUMBER                                    ;
143    l_oth_etc_bur_cost_fc    NUMBER                                    ;
144    l_oth_etc_bur_cost_pc    NUMBER                                    ;
145    l_ppl_etc_effort         NUMBER                                    ;
146    l_eqpmt_etc_effort            NUMBER                                    ;
147    l_etc_txn_raw_cost            NUMBER                                    ;
148    l_etc_txn_bur_cost       NUMBER                                    ;
149    l_txn_currency_code           VARCHAR2(30)                                        ;
150    l_project_curr_code             VARCHAR2(30)                                      ;
151    l_project_rate_type             VARCHAR2(30)                                      ;
152    l_project_rate_date             DATE                                         ;
153    l_project_exch_rate             NUMBER                                       ;
154    l_act_project_raw_cost          NUMBER                                       ;
155    l_act_project_bur_cost          NUMBER                                       ;
156    l_projfunc_curr_code            VARCHAR2(30)                                      ;
157    l_projfunc_cost_rate_type       VARCHAR2(30)                                      ;
158    l_projfunc_cost_rate_date       DATE                                         ;
159    l_projfunc_cost_exch_rate       NUMBER                                       ;
160    l_act_projfunc_raw_cost         NUMBER                                       ;
161    l_act_projfunc_bur_cost         NUMBER                                       ;
162 
163    l_etc_project_raw_cost          NUMBER                                       ;
164    l_etc_projfunc_raw_cost         NUMBER                                       ;
165    l_etc_project_bur_cost          NUMBER                                       ;
166    l_etc_projfunc_bur_cost         NUMBER                                       ;
167 
168    l_prog_pa_period_name    VARCHAR2(30)                                        ;
169    l_prog_gl_period_name    VARCHAR2(30)                                        ;
170 
171    --bug no.3595585 Satish start
172    l_etc_txn_raw_cost_this_period      NUMBER                                        ;
173    l_etc_prj_raw_cost_this_period      NUMBER                                        ;
174    l_etc_pfc_raw_cost_this_period      NUMBER                                        ;
175    l_etc_txn_bur_cost_this_period      NUMBER                                        ;
176    l_etc_prj_bur_cost_this_period      NUMBER                                        ;
177    l_etc_pfc_bur_cost_this_period      NUMBER                                        ;
178 
179    l_etc_effort_incr               NUMBER                                       ;
180    l_etc_effort_last             NUMBER                                         ;
181    --bug no.3595585 Satish end
182 
183    -- required for compilation
184    l_percent_complete              NUMBER                                       ;
185    l_progress_status_code          VARCHAR2(30)  :='PROGRESS_STAT_ON_TRACK'                               ;
186    l_task_status            VARCHAR2(150)                                       ;
187    l_rollup_progress_status      VARCHAR2(150):='PROGRESS_STAT_ON_TRACK'                                  ;
188    l_INCREMENTAL_WORK_QTY        NUMBER                                         ;
189    l_CUMULATIVE_WORK_QTY    NUMBER                                              ;
190    l_BASE_PERCENT_COMPLETE       NUMBER                                         ;
191    l_EFF_ROLLUP_PERCENT_COMP     NUMBER                                         ;
192    l_rollup_completed_percentage   NUMBER                                       ;
193    l_BASE_PERCENT_COMP_DERIV_CODE  VARCHAR2(30)                                 ;
194    l_BASE_PROGRESS_STATUS_CODE     VARCHAR2(30) :='PROGRESS_STAT_ON_TRACK'                                ;
195    l_EFF_ROLLUP_PROG_STAT_CODE     VARCHAR2(150)                                ;
196    l_ACTUAL_WQ_ENTRY_CODE          VARCHAR2(30)                                 ;
197    l_wq_enabled_flag             VARCHAR2(1)                                    ;
198    l_percent_complete_flag       VARCHAR2(1)                                    ;
202 
199    l_allow_collab_prog_entry     VARCHAR2(1)                                    ;
200    l_allw_phy_prcnt_cmp_overrides  VARCHAR2(1)                                  ;
201    l_task_weight_basis_code      VARCHAR2(30)                                   ;
203 --   l_res_list_memb_id_tbl          SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()             ;
204 --   l_res_effort_tbl            SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
205 --   l_res_txn_cost_tbl          SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
206 --   l_etc_res_effort_tbl             SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
207 --   l_etc_res_txn_cost_tbl      SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
208 
209    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
210    IS
211    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
212    FROM pa_proj_elem_ver_structure str, pa_project_statuses status
213    where str.element_version_id = c_structure_version_id
214    AND str.project_id = c_project_id
215    AND str.status_code = status.project_status_code;
216 
217 
218    -- FPM Dev CR 3 Begin
219    l_task_elem_version_id_tbl      SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()               ;
220    l_planned_people_effort_tbl        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
221    l_planned_equip_effort_tbl    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
222    l_resource_assignment_id_tbl       SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()            ;
223    l_resource_list_member_id_tbl   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()               ;
224    l_resource_class_code_tbl     SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
225 
226 -- Raw Cost Changes : Changed the cost columns to Raw Cost
227    CURSOR cur_task_cost(c_project_id number, c_object_id number, c_structure_type VARCHAR2, c_resource_class_code VARCHAR2, c_as_of_date DATE ,  c_cbs_element_id number)
228    IS
229     SELECT decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_tc,0), nvl(ppr.oth_act_rawcost_to_date_tc,0)) tc_raw_cost,
230          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_pc,0), nvl(ppr.oth_act_rawcost_to_date_pc,0)) pc_raw_cost,
231          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_fc,0), nvl(ppr.oth_act_rawcost_to_date_fc,0)) fc_raw_cost,
232          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_tc,0), nvl(ppr.oth_act_cost_to_date_tc,0)) tc_bur_cost,
233          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_pc,0), nvl(ppr.oth_act_cost_to_date_pc,0)) pc_bur_cost,
234          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_fc,0), nvl(ppr.oth_act_cost_to_date_fc,0)) fc_bur_cost,
235          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0), 'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0), nvl(ppr.OTH_QUANTITY_TO_DATE,0)) act_effort -- 3696572 OTH_QUANTITY_TO_DATE shd also be considered here
236      FROM pa_progress_rollup ppr
237     WHERE  ppr.project_id = c_project_id
238      AND   ppr.object_id  = c_object_id
239      AND   ppr.structure_type = c_structure_type
240      AND   ppr.structure_version_id is null        --bug# 3821106 Satish
241      AND   ppr.object_type = 'PA_ASSIGNMENTS'
242      AND   ppr.proj_element_id = p_task_id    --bug 3861360
243      AND   ppr.current_flag <> 'W'   -- Bug 3879461
244 	 AND   NVL(ppr.cbs_element_id,-1) = NVL(c_cbs_element_id,-1) -- Added for 16200605
245      --bug# 3821106 Satish
246      /*AND   ppr.as_of_date = ( SELECT max(as_of_date)
247                            from pa_progress_rollup ppr2
248                           WHERE ppr2.as_of_date < c_as_of_date
249                            AND  ppr2.project_id = c_project_id
250                            AND ppr2.object_id  = c_object_id
251                            AND ppr2.object_type = 'PA_ASSIGNMENTS'
252                            AND ppr2.structure_type = c_structure_type
253                        );*/
254      AND   ppr.as_of_date = ( SELECT max(as_of_date)
255                            from pa_progress_rollup ppr2
256                           WHERE ppr2.as_of_date < c_as_of_date ---4290592
257                            AND  ppr2.project_id = c_project_id
258                            AND ppr2.object_id  = c_object_id
259                            AND ppr2.object_type = 'PA_ASSIGNMENTS'
260                            AND ppr2.structure_type = c_structure_type
261 			   AND ppr2.structure_version_id is null
262                            AND ppr2.proj_element_id = p_task_id    --bug 3861360
263 			   AND ppr2.current_flag <> 'W'   -- Bug 3879461
264 			    AND   NVL(ppr2.cbs_element_id,-1) = NVL(c_cbs_element_id,-1) -- Added for 16200605
265 			   -- Bug 3879461 : Not exists is not required now
266 --			   AND NOT EXISTS (
267 --					    SELECT 'X' FROM pa_percent_completes ppc
268 --					    WHERE ppc.date_computed = ppr2.as_of_date
269 --					    AND   ppc.project_id = c_project_id
270 --					    AND   ppc.object_id  = c_object_id
271 --					    AND   ppc.object_type = 'PA_ASSIGNMENTS'
272 --					    AND   ppc.structure_type = c_structure_type
273 --					    AND   ppc.published_flag = 'N'
274 --                                             AND  ppc.task_id = p_task_id   --3861360
275 --					  )
276                        );
277 
278    CURSOR cur_task_cost_shared(c_project_id number, c_object_id number, c_structure_type VARCHAR2, c_resource_class_code VARCHAR2, c_as_of_date DATE ,  c_cbs_element_id number)
279    IS
283          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_tc,0), nvl(ppr.oth_act_cost_to_date_tc,0)) tc_bur_cost,
280     SELECT decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_tc,0), nvl(ppr.oth_act_rawcost_to_date_tc,0)) tc_raw_cost,
281          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_pc,0), nvl(ppr.oth_act_rawcost_to_date_pc,0)) pc_raw_cost,
282          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_fc,0), nvl(ppr.oth_act_rawcost_to_date_fc,0)) fc_raw_cost,
284          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_pc,0), nvl(ppr.oth_act_cost_to_date_pc,0)) pc_bur_cost,
285          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_fc,0), nvl(ppr.oth_act_cost_to_date_fc,0)) fc_bur_cost,
286          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0), 'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0), nvl(ppr.OTH_QUANTITY_TO_DATE,0)) act_effort -- 3696572 OTH_QUANTITY_TO_DATE shd also be considered here
287      FROM pa_progress_rollup ppr
288     WHERE  ppr.project_id = c_project_id
289      AND   ppr.object_id  = c_object_id
290      AND   ppr.structure_type = c_structure_type
291      AND   ppr.structure_version_id is null        --bug# 3821106 Satish
292      AND   ppr.object_type = 'PA_ASSIGNMENTS'
293      AND   ppr.proj_element_id = p_task_id    --bug 3861360
294      AND   ppr.current_flag <> 'W'   -- Bug 3879461
295 	 AND   NVL(ppr.cbs_element_id,-1) = NVL(c_cbs_element_id,-1) -- Added for 16200605
296      --bug# 3821106 Satish
297      AND   ppr.as_of_date = ( SELECT max(as_of_date)
298                            from pa_progress_rollup ppr2
299                           WHERE ppr2.as_of_date <= c_as_of_date ---4290592
300                            AND  ppr2.project_id = c_project_id
301                            AND ppr2.object_id  = c_object_id
302                            AND ppr2.object_type = 'PA_ASSIGNMENTS'
303                            AND ppr2.structure_type = c_structure_type
304 						   AND   NVL(ppr2.cbs_element_id,-1) = NVL(c_cbs_element_id,-1) -- Added for 16200605
305 			   AND ppr2.structure_version_id is null
306                            AND ppr2.proj_element_id = p_task_id    --bug 3861360
307 			   AND ppr2.current_flag <> 'W'   -- Bug 3879461
308                        );
309 
310  CURSOR cur_task_cost_latest(c_project_id number, c_object_id number, c_structure_type VARCHAR2, c_resource_class_code VARCHAR2, c_as_of_date DATE ,  c_cbs_element_id number)
311    IS
312     SELECT decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_tc,0), nvl(ppr.oth_act_rawcost_to_date_tc,0)) tc_raw_cost,
313          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_pc,0), nvl(ppr.oth_act_rawcost_to_date_pc,0)) pc_raw_cost,
314          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_rawcost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_rawcost_to_date_fc,0), nvl(ppr.oth_act_rawcost_to_date_fc,0)) fc_raw_cost,
315          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_tc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_tc,0), nvl(ppr.oth_act_cost_to_date_tc,0)) tc_bur_cost,
316          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_pc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_pc,0), nvl(ppr.oth_act_cost_to_date_pc,0)) pc_bur_cost,
317          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.ppl_act_cost_to_date_fc,0), 'EQUIPMENT', nvl(ppr.eqpmt_act_cost_to_date_fc,0), nvl(ppr.oth_act_cost_to_date_fc,0)) fc_bur_cost,
318          decode(c_resource_class_code, 'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0), 'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0), nvl(ppr.OTH_QUANTITY_TO_DATE,0)) act_effort
319      FROM pa_progress_rollup ppr
320     WHERE  ppr.project_id = c_project_id
321      AND   ppr.object_id  = c_object_id
322      AND   ppr.structure_type = c_structure_type
323      AND   ppr.structure_version_id is null        --bug# 3821106 Satish
324      AND   ppr.object_type = 'PA_ASSIGNMENTS'
325      AND   ppr.proj_element_id = p_task_id    --bug 3861360
326      AND   ppr.current_flag <> 'W'   -- Bug 3879461
327 	  AND   NVL(ppr.cbs_element_id,-1) = NVL(c_cbs_element_id,-1) -- Added for 16200605
328      AND   ppr.as_of_date = c_as_of_date;
329 
330     subm_prog_exists_aod                VARCHAR2(1):='N';
331     l_act_raw_cost_last_subm_tc         NUMBER             ;
332     l_act_raw_cost_last_subm_pc         NUMBER             ;
333     l_act_raw_cost_last_subm_fc         NUMBER             ;
334     l_act_bur_cost_last_subm_tc         NUMBER             ;
335     l_act_bur_cost_last_subm_pc         NUMBER             ;
336     l_act_bur_cost_last_subm_fc         NUMBER             ;
337     l_act_effort_last_subm         NUMBER               ;
338     l_act_raw_cost_latest_subm_tc         NUMBER           ;
339     l_act_raw_cost_latest_subm_pc         NUMBER           ;
340     l_act_raw_cost_latest_subm_fc         NUMBER           ;
341     l_act_bur_cost_latest_subm_tc         NUMBER           ;
342     l_act_bur_cost_latest_subm_pc         NUMBER           ;
343     l_act_bur_cost_latest_subm_fc         NUMBER           ;
344     l_act_effort_latest_subm         NUMBER              ;
345     l_total_effort            NUMBER                                       ;
346     l_record_version_number        NUMBER                                       ;
347     -- FPM Dev CR 3 End
348 
349     --bug 3608801
350     l_oth_quantity_to_date              NUMBER;
351     l_oth_etc_quantity                  NUMBER;
352     --bug 3608801
353     -- Bug 3606627 Start
354     l_resource_list_member_id      NUMBER;
355     l_rate_based_flag                   VARCHAR2(1);
359     l_actual_raw_cost_this_period       NUMBER;
356     l_resource_class_code          pa_task_assignments_v.resource_class_code%TYPE;
357     l_rbs_element_id               NUMBER;
358     l_actual_raw_cost              NUMBER;
360     l_actual_bur_cost              NUMBER;
361     l_actual_bur_cost_this_period       NUMBER;
362 
363     l_actual_effort           NUMBER;
364     l_etc_raw_cost_this_period          NUMBER;
365     l_etc_bur_cost_this_period          NUMBER;
366     L_DUMMY_RAW_COST                    NUMBER;
367     L_RES_RAW_RATE                      NUMBER;
368     L_RES_BURDEN_RATE                   NUMBER;
369     L_BURDEN_MULTIPLIER                 NUMBER;
370     L_RES_CUR_CODE                      VARCHAR2(15);
371     l_etc_txn_raw_cost_last        NUMBER;
372     l_etc_prj_raw_cost_last        NUMBER;
373     l_etc_pfc_raw_cost_last        NUMBER;
374     l_etc_txn_bur_cost_last        NUMBER;
375     l_etc_prj_bur_cost_last        NUMBER;
376     l_etc_pfc_bur_cost_last        NUMBER;
377     L_DUMMY_BURDEN_COST            NUMBER;
378 
379  -- Bug 3627315 : Added new parameters to hold plan rates for ETC
380     l_plan_res_cur_code		   VARCHAR2(15);
381     l_plan_res_raw_rate            NUMBER;
382     l_plan_res_burden_rate	   NUMBER;
383     l_plan_burden_multiplier       NUMBER;
384 
385     -- Bug 3696429 Satish start
386     l_proj_res_raw_rate            NUMBER;
387     l_projfunc_res_raw_rate        NUMBER;
388     l_proj_res_burden_rate         NUMBER;
389     l_projfunc_res_burden_rate     NUMBER;
390     -- Bug 3696429 Satish end
391 
392 
393     --Begin add by rtarway
394     --BUG 3630743( This cursor is to get planned values)
395     CURSOR c_get_planned_values (l_resource_list_member_id NUMBER, l_resource_assignment_id NUMBER, l_project_id NUMBER) IS
396     SELECT
397      planned_quantity,
398      planned_bur_cost_txn_cur,
399      planned_bur_cost_projfunc,
400      planned_bur_cost_proj_cur,
401      planned_raw_cost_txn_cur,
402      planned_raw_cost_proj_cur,
403      planned_raw_cost_projfunc,
404      budget_version_id       ---4372462
405      FROM
406      pa_task_asgmts_v
407      WHERE
408      RESOURCE_LIST_MEMBER_ID = l_resource_list_member_id
409      AND
410      RESOURCE_ASSIGNMENT_ID  = l_resource_assignment_id
411      AND
412      PROJECT_ID = l_project_id;
413 
414      --This cursor to see if any progress record exists.
415      CURSOR c_if_progress_exists(l_object_id NUMBER, l_project_id NUMBER, l_structure_version_id NUMBER , c_cbs_element_id NUMBER) IS
416      SELECT 'x' FROM dual
417      WHERE EXISTS
418      (
419       SELECT 'y' FROM PA_PROGRESS_ROLLUP
420       WHERE OBJECT_ID = l_object_id
421       AND PROJECT_ID = l_project_id
422       AND OBJECT_TYPE = 'PA_ASSIGNMENTS'
423       AND STRUCTURE_TYPE = 'WORKPLAN'
424       and proj_element_id = l_task_id  --3818384
425       AND current_flag <> 'W'   -- Bug 3879461
426 	  AND NVL(CBS_ELEMENT_ID,-1) = NVL(c_cbs_element_id,-1) --Added for CBS 16200605
427       AND
428       (
429        ( l_published_structure = 'Y' AND STRUCTURE_VERSION_ID IS NULL)
430        OR
431        ( l_published_structure = 'N' AND STRUCTURE_VERSION_ID = l_structure_version_id)
432       )
433      );
434 
435      --bug# 3814545 Satish
436      l_progress_exists VARCHAR2(1):='N';
437      l_budget_version_id        NUMBER; -- 4372462
438      l_planned_quantity  NUMBER;
439      l_planned_bur_cost_txn_cur NUMBER;
440      l_planned_bur_cost_projfunc NUMBER;
441      l_planned_bur_cost_proj_cur NUMBER;
442      l_planned_raw_cost_txn_cur NUMBER;
443      l_planned_raw_cost_proj_cur NUMBER;
444      l_planned_raw_cost_projfunc NUMBER;
445      l_track_wp_cost_flag  VARCHAR2(1) := 'Y'; -- Bug 3801745
446 
447      --bug 3824042
448      l_prj_currency_code VARCHAR2(15) := null;
449      l_prjfunc_currency_code VARCHAR2(15) := null;
450      l_rollup_current_flag VARCHAR2(1);  -- Bug 3879461
451 
452      /*
453      --bug 3958686, check whether the the assignment is hidden assignment, start
454      CURSOR cur_assgmt(l_resource_list_member_id NUMBER, l_resource_assignment_id NUMBER, l_task_id NUMBER, l_project_id NUMBER, l_structure_version_id NUMBER) IS
455      SELECT ta_display_flag
456      FROM pa_task_assignments_v
457      WHERE RESOURCE_LIST_MEMBER_ID = l_resource_list_member_id  AND
458            RESOURCE_ASSIGNMENT_ID  = l_resource_assignment_id   AND
459 	   TASK_ID                 = l_task_id                  AND
460            PROJECT_ID              = l_project_id               AND
461 	   STRUCTURE_VERSION_ID    = l_structure_version_id;
462 
463      l_ta_display_flag VARCHAR2(1);
464      --bug 3958686, check whether the the assignment is hidden assignment, end
465      */
466 -- 4533112 Begin
467 CURSOR c_get_dates_overrides(c_project_id number, c_object_id number, c_object_type varchar2, c_as_of_date Date , c_cbs_element_id Number) IS
468 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
469 , ppr.estimated_start_date
470 , ppr.estimated_finish_date
471 , ppr.actual_start_date
472 , ppr.actual_finish_date
473 , ppe.status_code
474 FROM pa_progress_rollup ppr
475 , pa_proj_elements ppe
476 WHERE ppr.project_id = c_project_id
477 AND ppr.object_id = c_object_id
478 AND ppr.object_type = c_object_type
479 AND ppr.structure_type = 'WORKPLAN'
480 AND ppr.structure_version_id is null
481 AND trunc(ppr.as_of_date) <= trunc(c_as_of_date)
482 AND ppr.current_flag IN ('Y', 'N')
483 AND ppr.proj_element_id = ppe.proj_element_id
484 AND ppr.cbs_element_id = c_cbs_element_id  --Added for 16200605
485 ORDER by as_of_date desc;
486 
487 
491 l_db_estimated_finish_date	DATE;
488 l_date_override_flag		VARCHAR2(1):='N';
489 l_db_date_override_flag		VARCHAR2(1):='N';
490 l_db_estimated_start_date	DATE;
492 l_db_actual_start_date		DATE;
493 l_db_actual_finish_date		DATE;
494 l_clex_estimated_start_date	DATE;
495 l_clex_estimated_finish_date	DATE;
496 l_clex_actual_start_date	DATE;
497 l_clex_actual_finish_date	DATE;
498 l_task_status_code		VARCHAR2(150);
499 -- 4533112 End
500 
501 -- Added below code for 16200605 CBS phase 2
502 l_cbs_element_id		NUMBER(15);
503 
504 Cursor get_Cbs_element_id IS
505 SELECT CBS_ELEMENT_ID
506 FROM PA_RESOURCE_ASSIGNMENTS
507 WHERE project_id=p_project_id
508 AND resource_assignment_id = p_resource_assignment_id;
509 
510 BEGIN
511 
512         -- Percent Complete          Progress Rollup     Possible         Comments
513         -- Insert                    Update              No               Applicable for summary level
514         -- Insert                    Insert              Yes              Normal Case
515         -- Update                    Insert              Yes              When record save on 1st March(current) and then publish on 8th March(future)
516         -- Update                    Update              Yes              Normal Case
517 
518     g1_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
519     IF g1_debug_mode  = 'Y' THEN
520        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'ENTERED', x_Log_Level=> 3);
521     END IF;
522 
523     IF g1_debug_mode  = 'Y' THEN
524        pa_debug.init_err_stack ('PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS');
525     END IF;
526 
527     IF (p_commit = FND_API.G_TRUE) THEN
528       savepoint UPDATE_ASSIGNMENT_PROGRESS;
529     END IF;
530 
531     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
532       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
533     END IF;
534 
535     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
536       FND_MSG_PUB.initialize;
537     END IF;
538 
539     IF g1_debug_mode  = 'Y' THEN
540        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_task_id: '||p_task_id, x_Log_Level=> 3);
541        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_object_version_id: '||p_object_version_id, x_Log_Level=> 3);
542        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_project_id: '||p_project_id, x_Log_Level=> 3);
543        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_object_id: '||p_object_id, x_Log_Level=> 3);
544        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_as_of_date: '||p_as_of_date, x_Log_Level=> 3);
545        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_percent_complete_id: '||p_percent_complete_id, x_Log_Level=> 3);
546        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_actual_start_date: '||p_actual_start_date, x_Log_Level=> 3);
547        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_actual_finish_date: '||p_actual_finish_date, x_Log_Level=> 3);
548        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_estimated_start_date: '||p_estimated_start_date, x_Log_Level=> 3);
549        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_estimated_finish_date: '||p_estimated_finish_date, x_Log_Level=> 3);
550        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_record_version_number: '||p_record_version_number, x_Log_Level=> 3);
551        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_actual_cost_this_period: '||p_actual_cost_this_period, x_Log_Level=> 3);
552        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_actual_effort_this_period: '||p_actual_effort_this_period, x_Log_Level=> 3);
553        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_etc_cost_this_period: '||p_etc_cost_this_period, x_Log_Level=> 3);
554        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_etc_effort_this_period: '||p_etc_effort_this_period, x_Log_Level=> 3);
555        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_structure_type: '||p_structure_type, x_Log_Level=> 3);
556        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_structure_version_id: '||p_structure_version_id, x_Log_Level=> 3);
557        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_resource_class_code: '||p_resource_class_code, x_Log_Level=> 3);
558        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_rate_based_flag: '||p_rate_based_flag, x_Log_Level=> 3);
559     END IF;
560 
561 	   --DEBUG_DJ('p_task_id: '||p_task_id);
562        --DEBUG_DJ('p_object_version_id: '||p_object_version_id);
563        --DEBUG_DJ('p_project_id: '||p_project_id);
564        --DEBUG_DJ('p_object_id: '||p_object_id);
565        --DEBUG_DJ('p_as_of_date: '||p_as_of_date);
566        --DEBUG_DJ('p_percent_complete_id: '||p_percent_complete_id);
567        --DEBUG_DJ('p_actual_start_date: '||p_actual_start_date);
568        --DEBUG_DJ('p_actual_finish_date: '||p_actual_finish_date);
569        --DEBUG_DJ('p_estimated_start_date: '||p_estimated_start_date);
570        --DEBUG_DJ('p_estimated_finish_date: '||p_estimated_finish_date);
571        --DEBUG_DJ('p_record_version_number: '||p_record_version_number);
572        --DEBUG_DJ('p_actual_cost_this_period: '||p_actual_cost_this_period);
573        --DEBUG_DJ('p_actual_effort_this_period: '||p_actual_effort_this_period);
577        --DEBUG_DJ('p_structure_version_id: '||p_structure_version_id);
574        --DEBUG_DJ('p_etc_cost_this_period: '||p_etc_cost_this_period);
575        --DEBUG_DJ('p_etc_effort_this_period: '||p_etc_effort_this_period);
576        --DEBUG_DJ('p_structure_type: '||p_structure_type);
578        --DEBUG_DJ('p_resource_class_code: '||p_resource_class_code);
579        --DEBUG_DJ('p_rate_based_flag: '||p_rate_based_flag);
580 
581 
582     x_return_status := FND_API.G_RET_STS_SUCCESS;
583 
584 SELECT DECODE(ptt.REMAIN_EFFORT_ENABLE_FLAG, 'Y', DECODE(pppa.REMAIN_EFFORT_ENABLE_FLAG, 'Y', 'Y', 'N'), 'N')
585 INTO   l_est_remaining_eff_flag
586 FROM   pa_proj_elements ppe,
587        pa_task_types ptt   ,
588        pa_proj_progress_attr pppa
589 WHERE  ppe.proj_element_id = p_task_id
590    AND ppe.type_id         = ptt.task_type_id
591    AND pppa.project_id     = ppe.project_id
592    AND pppa.structure_type = 'WORKPLAN'; -- For Bug 8887270
593 
594     --moved this up for bug 3675107
595     ---4457403, added begin/end block to handle no_data_found exception
596     begin
597       l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
598       l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
599     exception
600       WHEN OTHERS THEN
601                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
602                                             p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
603                  x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
604                  x_return_status := 'E';
605                  x_msg_count := fnd_msg_pub.count_msg;
606                  RAISE  FND_API.G_EXC_ERROR;
607     end;
608 
609     l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --Bug 3801745
610 --moved this up for bug 3675107
611 
612     --bug 3824042
613     SELECT project_currency_code, projfunc_currency_code  INTO  l_prj_currency_code, l_prjfunc_currency_code  FROM pa_projects_all WHERE project_id = p_project_id;
614 
615     IF p_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
616     THEN
617        l_task_id := 0;
618     ELSE
619        l_task_id := nvl(p_task_id, 0);
620     END IF;
621 
622     --bug# 3764224 Changes for RLM start
623     /*IF p_object_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
624     THEN
625        l_assignment_id := 0;
626     ELSE
627        l_assignment_id := nvl(p_object_id, 0);
628     END IF;*/
629 
630     IF p_resource_assignment_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
631     THEN
632        l_assignment_id := 0;
633     ELSE
634        l_assignment_id := nvl(p_resource_assignment_id, 0);
635     END IF;
636     --bug# 3764224 Changes for RLM end
637 
638 	--Added for bug16200605 CBS phase 2
639 	OPEN  get_Cbs_element_id;
640 	FETCH get_Cbs_element_id INTO l_cbs_element_id;
641 	CLOSE get_Cbs_element_id;
642 
643  --DEBUG_DJ('l_cbs_element_id: '||l_cbs_element_id);
644     IF p_object_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
645     THEN
646        l_object_version_id := 0;
647     ELSE
648        l_object_version_id := nvl(p_object_version_id, 0);
649     END IF;
650 
651     IF p_brief_overview = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
652     THEN
653        l_brief_overview := null;
654     ELSE
655        l_brief_overview := p_brief_overview;
656     END IF;
657 
658     IF p_progress_comment = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
659     THEN
660        l_progress_comment := null;
661     ELSE
662        l_progress_comment := p_progress_comment;
663     END IF;
664 
665     IF p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
666     THEN
667        l_pm_product_code := null;
668     ELSE
669        l_pm_product_code := p_pm_product_code;
670     END IF;
671 
672     OPEN cur_check_published_version(p_structure_version_id, p_project_id);
673     FETCH cur_check_published_version INTO l_published_structure;
674     CLOSE cur_check_published_version;
675 
676     IF l_published_structure = 'Y'
677        OR p_structure_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  --maansari4/8
678     THEN
679      l_structure_version_id := null;
680     ELSE
681      l_structure_version_id := p_structure_version_id;
682     END IF;
683 
684     --bug no. 3586648  start
685     IF p_scheduled_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
686     THEN
687         l_scheduled_start_date := null;
688     ELSE
689         l_scheduled_start_date := p_scheduled_start_date;
690     END IF;
691 
692     IF p_scheduled_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
693     THEN
694         l_scheduled_finish_date := null;
695     ELSE
696         l_scheduled_finish_date := p_scheduled_finish_date;
697     END IF;
698 
699     /* Bug 3606627 : Shifting this code below
700     IF p_actual_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
701     THEN
702         IF p_actual_cost_this_period > 0 OR p_actual_effort_this_period > 0
703      THEN
704          l_actual_start_date := l_scheduled_start_date;
705      ELSE
706             l_actual_start_date  := null;
707      END IF;
708     ELSE
709         l_actual_start_date  := p_actual_start_date;
710     END IF;
711     */
712 
713     --bug no. 3586648  end
714 
715     IF p_actual_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
716     THEN
717         l_actual_finish_date  := null;
718     ELSE
719         l_actual_finish_date  := p_actual_finish_date;
720     END IF;
721 
725     ELSE
722     IF p_estimated_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
723     THEN
724         l_estimated_start_date  := null;
726         l_estimated_start_date  := p_estimated_start_date;
727     END IF;
728 
729     IF p_estimated_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
730     THEN
731         l_estimated_finish_date  := null;
732     ELSE
733         l_estimated_finish_date  := p_estimated_finish_date;
734     END IF;
735 
736     IF p_actual_effort_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
737        p_actual_effort_this_period IS NOT NULL
738     THEN
739         l_actual_effort_this_period          := p_actual_effort_this_period; -- This is incremental
740     ELSE
741      l_actual_effort_this_period        := null;
742     END IF;
743 
744     -- 3958686, moved this code from below
745     --bug# 3764224 Changes for RLM start
746     -- Bug 3606627 Start
747     /*IF p_resource_list_member_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
748        p_resource_list_member_id IS NOT NULL
749     THEN
750      l_resource_list_member_id          := p_resource_list_member_id;
751     ELSE
752      l_resource_list_member_id          := null;
753     END IF;*/
754 
755     IF p_object_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
756        p_object_id IS NOT NULL
757     THEN
758      l_resource_list_member_id          := p_object_id;
759     ELSE
760      l_resource_list_member_id          := null;
761     END IF;
762     --bug# 3764224 Changes for RLM end
763     /*
764     --bug 3958686, start
765     OPEN cur_assgmt(l_resource_list_member_id, l_assignment_id, l_task_id, p_project_id, p_structure_version_id);
766     FETCH cur_assgmt INTO l_ta_display_flag;
767     CLOSE cur_assgmt;
768     --bug 3958686, end
769 
770     IF g1_debug_mode  = 'Y' THEN
771        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_ta_display_flag '||l_ta_display_flag, x_Log_Level=> 3);
772     END IF;
773     */
774 
775   -- 3970229 actuals can be -ive
776   /*--3779387, 3958686 this error should not be raised for hidden assignment as in this case it is being called from update_task_progress
777     IF l_actual_effort_this_period < 0 AND  l_ta_display_flag = 'Y'
778     THEN
779         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
780                              ,p_msg_name       => 'PA_TP_NO_NEG_ACT');
781         x_msg_data := 'PA_TP_NO_NEG_ACT';
782         x_return_status := 'E';
783         RAISE  FND_API.G_EXC_ERROR;
784     END IF;
785   */
786      --bug 3958686, end
787 
788 
789     IF p_etc_effort_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
790        p_etc_effort_this_period IS NOT NULL AND l_est_remaining_eff_flag =  'Y' --For Bug 8887270
791        --p_actual_finish_date  IS NULL AND p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE maansari4/27
792     THEN
793      l_etc_effort_this_period      := p_etc_effort_this_period; -- This is cumulative
794     ELSE
795      l_etc_effort_this_period      := null;
796     END IF;
797 
798     /* 5726773
799 --bug 3779387
800     IF l_etc_effort_this_period < 0
801     THEN
802         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
803                              ,p_msg_name       => 'PA_TP_NO_NEG_ETC');
804         x_msg_data := 'PA_TP_NO_NEG_ETC';
805         x_return_status := 'E';
806         RAISE  FND_API.G_EXC_ERROR;
807     END IF;
808     */
809 
810 
811     --maansari 4/27
812     -- Bug 3956299 : As per discussion with Saima, ETC should be given precedence over act finish date
813     --IF p_actual_finish_date  IS NOT NULL AND p_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
814     --THEN
815     --   l_etc_effort_this_period := 0;
816     --END IF;
817     IF l_etc_effort_this_period  IS NOT NULL AND l_etc_effort_this_period > 0
818     THEN
819        l_actual_finish_date := null;
820     END IF;
821 
822 --maansari 4/27
823 
824 
825     IF p_txn_currency_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR AND
826        p_txn_currency_code IS NOT NULL
827     THEN
828      l_txn_currency_code      := p_txn_currency_code;
829     ELSE
830      l_txn_currency_code      := null;
831     END IF;
832 
833     IF p_rate_based_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR AND
834        p_rate_based_flag IS NOT NULL
835     THEN
836      l_rate_based_flag        := p_rate_based_flag;
837     ELSE
838      l_rate_based_flag        := null;
839     END IF;
840 
841     IF p_resource_class_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR AND
842        p_resource_class_code IS NOT NULL
843     THEN
844      l_resource_class_code         := p_resource_class_code;
845     ELSE
846      l_resource_class_code         := null;
847     END IF;
848 
849     IF p_rbs_element_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
850        p_rbs_element_id IS NOT NULL
851     THEN
852      l_rbs_element_id         := p_rbs_element_id;
853     ELSE
854      l_rbs_element_id         := null;
855     END IF;
856     -- Raw Cost Changes : Changed the vaiable names to include raw
857     IF p_actual_cost <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
858        p_actual_cost IS NOT NULL
859     THEN
860      l_actual_raw_cost        := p_actual_cost;
861     ELSE
862      l_actual_raw_cost        := null;
863     END IF;
864     -- Raw Cost Changes : Changed the vaiable names to include raw
865     IF p_actual_cost_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
869     ELSE
866        p_actual_cost_this_period IS NOT NULL
867     THEN
868      l_actual_raw_cost_this_period      := p_actual_cost_this_period;
870      l_actual_raw_cost_this_period      := null;
871     END IF;
872 
873   ---- 3970229 actuals can be -ive
874   /* --3779387
875     IF l_actual_raw_cost_this_period < 0
876     THEN
877         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
878                              ,p_msg_name       => 'PA_TP_NO_NEG_ACT');
879         x_msg_data := 'PA_TP_NO_NEG_ACT';
880         x_return_status := 'E';
881         RAISE  FND_API.G_EXC_ERROR;
882     END IF;
883   */
884 
885 
886     IF p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
887        p_actual_effort IS NOT NULL
888     THEN
889      l_actual_effort          := p_actual_effort;
890     ELSE
891      l_actual_effort          := null;
892     END IF;
893     -- Raw Cost Changes : Changed the vaiable names to include raw
894     IF p_etc_cost_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
895        p_etc_cost_this_period IS NOT NULL
896     THEN
897      l_etc_raw_cost_this_period         := p_etc_cost_this_period;
898     ELSE
899      l_etc_raw_cost_this_period         := null;
900     END IF;
901     -- Bug 3606627 End
902 
903    /* 5726773
904 --bug 3779387 ---4378391 Added l_etc_effort_this_period is null
905     IF l_etc_raw_cost_this_period < 0 and l_etc_effort_this_period is null
906     THEN
907         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
908                              ,p_msg_name       => 'PA_TP_NO_NEG_ETC');
909         x_msg_data := 'PA_TP_NO_NEG_ETC';
910         x_return_status := 'E';
911         RAISE  FND_API.G_EXC_ERROR;
912     END IF;
913     */
914 
915     /* Bug 3606627 Shifting this code below
916     l_res_list_memb_id_tbl.extend(1);
917     l_res_list_memb_id_tbl(1)      := p_resource_list_member_id;
918     l_txn_currency_code            := p_txn_currency_code;
919     */
920 /* Reverted 14602604
921     -- Bug 16573693 Begin
922     -- If Calling module is AMG and workplan is version disabled, then throw error
923     -- message.
924     IF (PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'N'
925 	AND p_calling_module = 'AMG'
926 	AND NVL(PA_FP_CALC_PLAN_PKG.g_is_wp_quantity_changed,'N') = 'N'
927 	AND p_structure_type = 'WORKPLAN')
928     THEN
929 	IF (p_etc_cost_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
930 		and p_etc_cost_this_period IS NOT NULL)  OR
931 	   (p_etc_effort_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
932 		and p_etc_effort_this_period IS NOT NULL )
933 	THEN
934 		PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
935 		       ,p_msg_name       => 'PA_WP_VD_CANT_UPDATE_ETC');
936 		x_msg_data := 'PA_WP_VD_CANT_UPDATE_ETC';
937 		x_return_status := 'E';
938 		RAISE  FND_API.G_EXC_ERROR;
939 	END IF;
940     END IF;
941 	*/
942     -- Bug 16573693 End
943     ---- if status is CANCELLED
944     IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) = 'CANCELLED'
945     THEN
946        PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
947                             ,p_msg_name       => 'PA_TP_ASSG_CANT_NTER_PRG_CNCEL');
948        x_msg_data := 'PA_TP_ASSG_CANT_NTER_PRG_CNCEL';
949        x_return_status := 'E';
950        RAISE  FND_API.G_EXC_ERROR;
951     END IF;
952     ---- if status is CANCELLED
953 
954     /* Commented by rtarway for BUG 3762650
955     ---- if status is ON HOLD
956     IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) = 'ON HOLD'
957     THEN
958        PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
959                             ,p_msg_name       => 'PA_TP_ASSG_CANT_NTER_PRG_ONHOLD');
960        x_msg_data := 'PA_TP_ASSG_CANT_NTER_PRG_ONHOLD';
961        x_return_status := 'E';
962        RAISE  FND_API.G_EXC_ERROR;
963     END IF;
964     ---- if status is ON HOLD
965     */
966      --bug no. 3586648  start
967     SELECT structure_sharing_code
968     INTO l_structure_sharing_code
969     FROM pa_projects_all
970     WHERE project_id = p_project_id;
971 
972     --- check if structure is shared and actuals are passed
973     /*l_structure_shared := PA_PROJECT_STRUCTURE_UTILS.Check_Sharing_Enabled(p_project_id);
974     IF l_structure_shared = 'Y'
975     THEN
976      IF (p_actual_cost_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND p_actual_cost_this_period >0)
977         OR (p_actual_effort_this_period <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND p_actual_effort_this_period >0)
978      THEN
979             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
980                         ,p_msg_name       => 'PA_TP_CANT_NTER_ACT_SHR_STR');
981             x_msg_data := 'PA_TP_CANT_NTER_ACT_SHR_STR';
982             x_return_status := 'E';
983             RAISE  FND_API.G_EXC_ERROR;
984      END IF;
985     END IF;*/
986     --- check if structure is shared and actuals are passed
987     --bug no. 3586648  end
988     --added by rtarway for 3816022
989     IF (p_calling_module = 'AMG' AND l_structure_sharing_code = 'SHARE_FULL')
990     THEN
991           IF (l_actual_effort IS NOT NULL AND l_actual_effort >0)
992           OR (l_actual_raw_cost IS NOT NULL AND l_actual_raw_cost >0)
993           THEN
994 
995             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
996                         ,p_msg_name       => 'PA_TP_CANT_NTER_ACT_SHR_STR');
997             x_msg_data := 'PA_TP_CANT_NTER_ACT_SHR_STR';
998             x_return_status := 'E';
999             RAISE  FND_API.G_EXC_ERROR;
1000           END IF;
1004     ----- Wrong MODE
1001     END IF;
1002     --end added by rtarway for 3816022
1003 
1005     IF p_progress_mode not in ( 'FUTURE' )
1006     THEN
1007         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1008                              ,p_msg_name       => 'PA_TP_WRONG_PRG_MODE4');
1009         x_msg_data := 'PA_TP_WRONG_PRG_MODE4';
1010         x_return_status := 'E';
1011         RAISE  FND_API.G_EXC_ERROR;
1012     END IF;
1013     ----- Wrong MODE
1014 
1015     ----- Invalid DATE
1016     IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
1017     THEN
1018         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1019                              ,p_msg_name       => 'PA_TP_INV_AOD');
1020        x_msg_data := 'PA_TP_INV_AOD';
1021        x_return_status := 'E';
1022        RAISE  FND_API.G_EXC_ERROR;
1023     END IF;
1024     ----- Wrong DATE
1025 
1026 
1027     -- Bug 3979303 : Commentee code here and moved it below with some modification
1028     /*
1029     IF p_estimated_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND p_estimated_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1030     THEN
1031         IF (p_estimated_finish_date  < p_estimated_start_date)
1032      THEN
1033             x_return_status := FND_API.G_RET_STS_ERROR;
1034             pa_utils.add_message(p_app_short_name => 'PA',
1035                                   p_msg_name => 'PA_EST_DATES_INV');
1036             raise fnd_api.g_exc_error;
1037      END IF;
1038     END IF;
1039     */
1040 
1041   --bug 4185364, start
1042   -- if action is SAVE then delete al the present and future working records.
1043   --there shud be only one working record.
1044     if  p_action = 'SAVE'
1045     THEN
1046        delete from pa_percent_completes
1047        where project_id= p_project_id
1048          and object_id = p_object_id
1049          and published_flag = 'N'
1050          and task_id = p_task_id
1051          and structure_type = p_structure_type
1052          and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id,-1)	--Added for 16200605
1053 		 ;
1054 
1055        delete from pa_progress_rollup
1056        where project_id= p_project_id
1057          and object_id = p_object_id
1058          and current_flag = 'W'
1059          and proj_element_id = p_task_id
1060          and structure_type = p_structure_type
1061          and structure_version_id is null
1062 		and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id,-1)	--Added for 16200605
1063          ;
1064     end if;
1065   --bug 4185364, end
1066 
1067 
1068   --bug 3879461
1069     --This code is required is PUBLISH mode  to delete working progress records on previous dates.
1070     if  p_action = 'PUBLISH' and p_structure_type = 'WORKPLAN'
1071     then
1072        delete from pa_percent_completes
1073        where project_id= p_project_id
1074          and object_id = p_object_id
1075          and published_flag = 'N'
1076          and date_computed <= p_as_of_date      --bug 4247839, modified so that two records are not created for same as of date
1077          and task_id = p_task_id
1078          and structure_type = p_structure_type
1079 		 and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id,-1)	--Added for 16200605
1080 	-- DJ::: NEED TO ADD CBS_ELEMENT_ID
1081          ;
1082 
1083        delete from pa_progress_rollup
1084        where project_id= p_project_id
1085          and object_id = p_object_id
1086          and current_flag = 'W'
1087          and as_of_date < p_as_of_date
1088          and proj_element_id = p_task_id
1089          and structure_type = p_structure_type
1090          and structure_version_id is null
1091         and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id,-1)	--Added for 16200605
1092          -- DJ::: NEED TO ADD CBS_ELEMENT_ID
1093          ;
1094     end if;
1095   --bug 3879461
1096 
1097 
1098     -- Bug 3606627 Start
1099     IF p_calling_module = 'AMG' THEN
1100      BEGIN
1101          /* COMMENTING for performance issues
1102           SELECT rate_based_flag, resource_class_code, txn_currency_code,
1103                rbs_element_id, resource_list_member_id, assignment_start_date, assignment_end_date -- Bug 3956299 : Added assignment_end_date
1104           INTO l_rate_based_flag, l_resource_class_code, l_txn_currency_code,
1105                l_rbs_element_id, l_resource_list_member_id, l_scheduled_start_date, l_scheduled_finish_date -- Bug 3956299 : Added l_scheduled_finish_date
1106           FROM pa_task_assignments_v
1107           WHERE --resource_assignment_id = l_assignment_id Bug 3799841
1108 	  resource_list_member_id = l_resource_list_member_id -- Bug 3799841
1109           AND structure_version_id = p_structure_version_id
1110           AND task_version_id = l_object_version_id;
1111          */
1112 		--IF l_cbs_element_id is null  THEN
1113           SELECT rate_based_flag,
1114                  resource_class_code,
1115                  PA_TASK_ASSIGNMENT_UTILS.get_planned_currency_info(pra.resource_assignment_id, pra.project_id, 'txn_currency_code') as txn_currency_code,
1116                  rbs_element_id,
1117                  resource_list_member_id,
1118                  schedule_start_date,
1119                  schedule_end_date,
1120 		 pra.resource_assignment_id -- Bug 4186007 : Derive res_assignment_id from AMG, it can be null
1121             INTO l_rate_based_flag, l_resource_class_code, l_txn_currency_code,
1122                  l_rbs_element_id, l_resource_list_member_id, l_scheduled_start_date,
1123                  l_scheduled_finish_date,
1124 		 l_assignment_id -- Bug 4186007 : Derive res_assignment_id from AMG, it can be null
1125             FROM pa_resource_assignments pra,
1126                  PA_PROJ_ELEMENT_VERSIONS PPEV
1127            where resource_list_member_id = l_resource_list_member_id
1131              AND pra.wbs_element_version_id = ppev.element_version_id
1128              AND PPEV.PROJECT_ID = p_project_id
1129              AND PPEV.PARENT_STRUCTURE_VERSION_ID = p_structure_version_id
1130              AND pra.TASK_ID = PPEV.PROJ_ELEMENT_ID
1132              --Added following conditions bug4110593, rtarway
1133              AND pra.task_id = p_task_id
1134              AND pra.wbs_element_version_id = p_object_version_id
1135 			 AND NVL(pra.cbs_element_id,-1)=NVL(l_cbs_element_id,-1);
1136      EXCEPTION
1137           WHEN NO_DATA_FOUND THEN
1138 
1139 		  IF l_cbs_element_id is null  THEN
1140                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1141                                  p_msg_name       => 'PA_TP_INV_ASSGN_AMG',
1142                      P_TOKEN1         => 'OBJECT_ID',
1143                      P_VALUE1         => l_resource_list_member_id);
1144                x_msg_data := 'PA_TP_INV_ASSGN_AMG';
1145                x_return_status := FND_API.G_RET_STS_ERROR;
1146                RAISE  FND_API.G_EXC_ERROR;
1147 		 ELSE
1148 		                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1149 									 p_msg_name       => 'PA_CBS_TP_INV_ASSGN_AMG',
1150 						 P_TOKEN1         => 'OBJECT_ID',
1151 						 P_VALUE1         => l_resource_list_member_id);
1152 				   x_msg_data := 'PA_CBS_TP_INV_ASSGN_AMG';
1153 				   x_return_status := FND_API.G_RET_STS_ERROR;
1154                RAISE  FND_API.G_EXC_ERROR;
1155 
1156 		 END IF;
1157 		 END;
1158 
1159 
1160 
1161 
1162     /* Begin: Fix for Bug # 3988457. */
1163 
1164     /* Currently the value of p_txn_currency_code is not passed to this API in the AMG flow.
1165        However, the following code will handle the case if the AMG flow is later modified to
1166        pass the value of p_txn_currency_code to this API. */
1167 
1168     IF (p_txn_currency_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR AND
1169 
1170     	p_txn_currency_code IS NOT NULL)
1171 
1172     THEN
1173 
1174     	l_txn_currency_code := p_txn_currency_code;
1175 
1176     END IF;
1177 
1178     /* End: Fix for Bug # 3988457. */
1179 
1180     END IF;
1181 
1182     -- Bug 3979303 : Begin
1183     IF l_estimated_finish_date is not null and l_estimated_start_date IS NULL THEN
1184 	l_estimated_start_date := l_scheduled_start_date;
1185     END IF;
1186 
1187     IF l_estimated_finish_date is not null and l_estimated_finish_date < nvl(l_estimated_start_date,l_estimated_finish_date+1) THEN
1188 	x_return_status := FND_API.G_RET_STS_ERROR;
1189 	pa_utils.add_message(p_app_short_name => 'PA',
1190                                p_msg_name => 'PA_EST_DATES_INV');
1191 	raise fnd_api.g_exc_error;
1192     END IF;
1193     -- Bug 3979303 : End
1194 
1195 
1196     IF p_actual_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1197     THEN
1198         IF l_actual_raw_cost_this_period > 0 OR l_actual_effort_this_period > 0
1199      THEN
1200          l_actual_start_date := l_scheduled_start_date;
1201      ELSE
1202             l_actual_start_date  := null;
1203      END IF;
1204     ELSE
1205         l_actual_start_date  := p_actual_start_date;
1206     END IF;
1207 
1208     -- FPM Dev CR 3 : Added Logic to get total cost from last submission and this period.
1209     --bug# 3764224 Changes for RLM
1210     --OPEN cur_task_cost(p_project_id, l_assignment_id, p_structure_type, l_resource_class_code, p_as_of_date);
1211 
1212     -- if structure is shared then we need to get last actuals <= to as_of_date
1213     if (l_structure_sharing_code = 'SHARE_FULL' OR p_calling_module = 'AMG' or p_calling_module = 'HIDDEN_ASGMT') then -- Bug 5294838:Added AMG check; 5441402:added HIDDEN_ASGMT
1214        OPEN cur_task_cost_shared(p_project_id, l_resource_list_member_id, p_structure_type, l_resource_class_code, p_as_of_date , l_cbs_element_id);
1215        FETCH cur_task_cost_shared INTO l_act_raw_cost_last_subm_tc, l_act_raw_cost_last_subm_pc, l_act_raw_cost_last_subm_fc,l_act_bur_cost_last_subm_tc, l_act_bur_cost_last_subm_pc, l_act_bur_cost_last_subm_fc, l_act_effort_last_subm;
1216        CLOSE cur_task_cost_shared;
1217     else
1218        OPEN cur_task_cost(p_project_id, l_resource_list_member_id, p_structure_type, l_resource_class_code, p_as_of_date ,l_cbs_element_id);
1219        FETCH cur_task_cost INTO l_act_raw_cost_last_subm_tc, l_act_raw_cost_last_subm_pc, l_act_raw_cost_last_subm_fc,l_act_bur_cost_last_subm_tc, l_act_bur_cost_last_subm_pc, l_act_bur_cost_last_subm_fc, l_act_effort_last_subm;
1220        CLOSE cur_task_cost;
1221     end if;
1222 
1223     OPEN cur_task_cost_latest(p_project_id, l_resource_list_member_id, p_structure_type, l_resource_class_code, p_as_of_date , l_cbs_element_id);
1224     FETCH cur_task_cost_latest INTO l_act_raw_cost_latest_subm_tc, l_act_raw_cost_latest_subm_pc, l_act_raw_cost_latest_subm_fc,l_act_bur_cost_latest_subm_tc, l_act_bur_cost_latest_subm_pc, l_act_bur_cost_latest_subm_fc, l_act_effort_latest_subm;
1225     if cur_task_cost_latest%notfound then
1226        subm_prog_exists_aod := 'N';
1227     else
1228        subm_prog_exists_aod := 'Y';
1229     end if;
1230     CLOSE cur_task_cost_latest;
1231 
1232 
1233     IF p_calling_module = 'AMG' THEN
1234      -- If called from AMG then l_Actual_cost and l_actual_effort will behave as to_date cost and not as last_submitted
1235      -- So we need to derive this_period cost or effort
1236      -- Bug 5294838 : Commented the fix of 4541353, Added new
1237 /*
1238      -- Begin Bug # 4541353.
1239      -- Need to set the values of: l_actual_raw_cost and l_actual_effort before calculating: l_actual_raw_cost_this_period
1240      -- and l_actual_effort_this_period.
1241      l_actual_raw_cost := nvl(l_act_raw_cost_last_subm_tc,0);
1242      l_actual_effort := nvl(l_act_effort_last_subm,0);
1243      -- End Bug # 4541353.
1244 */
1248      -- commenting this because l_actual_effort_this_period is already calculated and sent to this api
1245      -- Bug 12611285: Uncommenting the code since the value of l_actual_effort_this_period is not passed when called from PA_PROGRESS_PUB.UPDATE_PROGRESS
1246 
1247      -- rbruno commented for bug 9545413  - start
1249      -- from  PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS api
1250 
1251      IF l_actual_effort_this_period IS NULL AND nvl(l_actual_effort,0) > 0 THEN   -- Bug 12611285
1252 
1253        l_actual_raw_cost_this_period := nvl(l_actual_raw_cost,0) - nvl(l_act_raw_cost_last_subm_tc,0);
1254        l_actual_effort_this_period := nvl(l_actual_effort,0) - nvl(l_act_effort_last_subm,0);
1255 
1256        l_actual_raw_cost := nvl(l_act_raw_cost_last_subm_tc,0);
1257        l_actual_effort := nvl(l_act_effort_last_subm,0);
1258 
1259     END IF;
1260       -- rbruno commented for bug 9545413 - end
1261 
1262 
1263      -- Bug 5294838 : Added code below
1264      if (l_structure_sharing_code = 'SHARE_FULL') then
1265           l_actual_raw_cost_this_period := 0;
1266           l_actual_effort_this_period := 0;
1267      end if;
1268 
1269     END IF;
1270 
1271 
1272 --    l_res_list_memb_id_tbl.extend(1);
1273 --    l_res_list_memb_id_tbl(1)         := l_resource_list_member_id;
1274 
1275     -- Bug 3606627 End
1276 
1277 	-- 4533112 Begin
1278 
1279 	IF g1_debug_mode  = 'Y' THEN
1280 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Client Extension Logic Starts', x_Log_Level=> 3);
1281 	END IF;
1282 
1283 	OPEN c_get_dates_overrides(p_project_id,l_resource_list_member_id,'PA_ASSIGNMENTS',p_as_of_date , l_cbs_element_id);
1284 	FETCH c_get_dates_overrides INTO
1285 	l_db_date_override_flag
1286 	, l_db_estimated_start_date
1287 	, l_db_estimated_finish_date
1288 	, l_db_actual_start_date
1289 	, l_db_actual_finish_date
1290 	, l_task_status_code;
1291 	CLOSE c_get_dates_overrides;
1292 
1293 	IF g1_debug_mode  = 'Y' THEN
1294 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
1295 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
1296 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
1297 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
1298 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
1299 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
1300 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
1301 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
1302 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
1303 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_object_type='||l_object_type, x_Log_Level=> 3);
1304 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_object_version_id='||l_object_version_id, x_Log_Level=> 3);
1305 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_resource_list_member_id='||l_resource_list_member_id, x_Log_Level=> 3);
1306 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
1307 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
1308 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
1309 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
1310 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
1311 	END IF;
1312 
1313 
1314 	l_date_override_flag := 'N';
1315 
1316 	PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
1317 		p_project_id		=> p_project_id,
1318 		p_structure_type        => 'WORKPLAN',
1319 		p_structure_version_id	=> p_structure_version_id,
1320 		p_object_type		=> l_object_type,
1321 		p_object_id		=> l_resource_list_member_id,
1322 		p_object_version_id     => l_object_version_id,
1323 		p_proj_element_id	=> p_task_id,
1324 		p_task_status		=> l_task_status_code,
1325 		p_percent_complete	=> null,
1326 		p_estimated_start_date	=> l_estimated_start_date,
1327 		p_estimated_finish_date	=> l_estimated_finish_date,
1328 		p_actual_start_date	=> l_actual_start_date,
1329 		p_actual_finish_date	=> l_actual_finish_date,
1330 		x_estimated_start_date	=> l_clex_estimated_start_date,
1331 		x_estimated_finish_date	=> l_clex_estimated_finish_date,
1332 		x_actual_start_date	=> l_clex_actual_start_date,
1333 		x_actual_finish_date	=> l_clex_actual_finish_date,
1334 		x_return_status		=> x_return_status,
1335 		x_msg_count		=> x_msg_count,
1336 		x_msg_data		=> x_msg_data
1337 		);
1338 
1339 	IF g1_debug_mode  = 'Y' THEN
1340 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
1344 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
1341 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
1342 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
1343 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
1345 	END IF;
1346 
1347 	IF x_return_status <> 'S' THEN
1348 		raise FND_API.G_EXC_ERROR;
1349 	END IF;
1350 
1351 	IF nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
1352 	OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
1353 	OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
1354 	OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
1355 	THEN
1356 		l_date_override_flag := 'Y';
1357 		l_estimated_start_date := l_clex_estimated_start_date;
1358 		l_estimated_finish_date := l_clex_estimated_finish_date;
1359 		l_actual_start_date := l_clex_actual_start_date;
1360 		l_actual_finish_date := l_clex_actual_finish_date;
1361 	END IF;
1362 
1363 	IF l_date_override_flag = 'N' AND nvl(l_db_date_override_flag, 'N') = 'Y' THEN
1364 		l_date_override_flag := 'Y';
1365 	END IF;
1366 
1367 	IF l_date_override_flag = 'N' AND
1368 	(nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_db_estimated_start_date,FND_API.g_miss_date)
1369 	OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_db_estimated_finish_date,FND_API.g_miss_date)
1370 	OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_db_actual_start_date,FND_API.g_miss_date)
1371 	OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_db_actual_finish_date,FND_API.g_miss_date))
1372 	THEN
1373 		l_date_override_flag := 'Y';
1374 	END IF;
1375 
1376 	IF l_etc_effort_this_period  IS NOT NULL AND l_etc_effort_this_period > 0    THEN
1377 		l_actual_finish_date := null;
1378 	END IF;
1379 
1380 	IF g1_debug_mode  = 'Y' THEN
1381 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
1382 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
1383 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
1384 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
1385 		pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
1386 	END IF;
1387 
1388 	-- 4533112 End
1389 
1390 
1391 
1392     IF l_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE AND l_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1393     THEN
1394         IF l_actual_finish_date < l_actual_start_date
1395         THEN
1396             IF TRUNC(SYSDATE) < l_actual_start_date
1397             THEN
1398                 l_actual_finish_date := l_actual_start_date;
1399             ELSE
1400                 l_actual_finish_date := TRUNC(SYSDATE);
1401             END IF;
1402         END IF;
1403     END IF;
1404 
1405 
1406     l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1407                          p_task_id        => p_task_id
1408                         ,p_project_id     => p_project_id
1409                         --,p_object_id      => l_assignment_id        --bug# 3764224 Changes for RLM
1410                         ,p_object_id      => l_resource_list_member_id
1411                         ,p_object_type    => l_object_type
1412                         ,p_structure_type => p_structure_type
1413 						,p_cbs_element_id		=> l_cbs_element_id -- Added for Bug16200605
1414                    );
1415 
1416 
1417     IF g1_debug_mode  = 'Y' THEN
1418        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_last_progress_date: '||l_last_progress_date, x_Log_Level=> 3);
1419     END IF;
1420 
1421     l_working_aod := PA_PROGRESS_UTILS.Working_version_exist(
1422                                       --p_task_id          => l_assignment_id     --bug# 3764224 Changes for RLM
1423                                       p_task_id          => p_task_id
1424                                      ,p_project_id       => p_project_id
1425                                      ,p_object_type      => l_object_type
1426 				     ,p_object_id        => l_resource_list_member_id --bug# 3764224 Added for RLM
1427 					 ,p_cbs_element_id		=> l_cbs_element_id -- Added for Bug16200605
1428 				     ,p_as_of_date       => p_as_of_date);  --bug 4185364, get working record upto p_as_of_date
1429 				                                           -- as we dont want to update future working records.
1430 
1431     IF g1_debug_mode  = 'Y' THEN
1432        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_working_aod: '||l_working_aod, x_Log_Level=> 3);
1433     END IF;
1434 
1435 
1436     l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
1437                                       p_project_id         => p_project_id
1438                                      ,p_object_type        => l_object_type
1439                                      ,p_object_version_id  => l_object_version_id
1440                                      --,p_task_id            => l_assignment_id     --bug# 3764224 Changes for RLM
1444 				     ,p_object_id           => l_resource_list_member_id  --bug# 3764224 Added for RLM
1441                                      ,p_task_id            => p_task_id
1442                                      ,p_as_of_date         => p_as_of_date
1443 				     ,p_structure_type      => p_structure_type
1445 					 ,p_cbs_element_id		=> l_cbs_element_id -- Added for Bug16200605
1446                                     );
1447 
1448     IF g1_debug_mode  = 'Y' THEN
1449        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_progress_exists_on_aod: '||l_progress_exists_on_aod, x_Log_Level=> 3);
1450     END IF;
1451 
1452 
1453     IF p_as_of_date < NVL( l_last_progress_date, p_as_of_date )
1454     --AND l_working_aod IS NULL  -- progress exists after  as of date -- commented as not needed  Satish
1455     THEN
1456         --You cannot create a future progress when there exists a progress
1457         --after AS_OF_DATE for this task.
1458         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1459                              p_msg_name       => 'PA_TP_ASSG_WRONG_PRG_MODE3',
1460                              p_token1         => 'AS_OF_DATE',
1461                              p_value1         => p_as_of_date );
1462         x_msg_data := 'PA_TP_ASSG_WRONG_PRG_MODE3';
1463         x_return_status := 'E';
1464         RAISE  FND_API.G_EXC_ERROR;
1465     --bug# 3821106 Satish start,  bug 4185364
1466     /*ELSIF (p_as_of_date = NVL(l_last_progress_date, p_as_of_date + 1 ) AND  p_action = 'SAVE')
1467     THEN
1468        if (l_working_aod = p_as_of_date) then
1469           l_db_action := 'UPDATE';
1470        else
1471           l_db_action := 'CREATE';
1472        end if;
1473     ELSIF (p_as_of_date = NVL(l_last_progress_date, p_as_of_date + 1 ) AND  p_action = 'PUBLISH')
1474     THEN
1475           l_db_action := 'CREATE';*/
1476    /* commenting out as now we will allow to create a working rec if published record exists on that as_of_date
1477         --You cannot save progress when there exists a published progress
1478         --for this as of date.
1479         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1480                              p_msg_name       => 'PA_TP_ASSG_WRONG_ACTION',
1481                              p_token1         => 'AS_OF_DATE',
1482                              p_value1         => p_as_of_date );
1483         x_msg_data := 'PA_TP_ASSG_WRONG_ACTION';
1484         x_return_status := 'E';
1485         RAISE  FND_API.G_EXC_ERROR;
1486     --bug# 3821106 Satish end
1487    */
1488     ELSE
1489        --Validate as of date
1490           -- Bug 3627315 : Check valid as of date should not be called from AMG or Task Progress Details page
1491 	  -- Beacuse from both the places we submit progress for all objects against one cycle date
1492 
1493        --bug 3994165, commmenting as as of date validation is not required
1494        /*IF p_calling_module <> 'AMG' -- Bug 3627315
1495        AND p_calling_module <> 'TASK_PROG_DET_PAGE' -- Bug 3627315
1496        --bug# 3764224 Added for RLM
1497        --AND PA_PROGRESS_UTILS.CHECK_VALID_AS_OF_DATE( p_as_of_date, p_project_id, l_assignment_id, l_object_type  ) = 'N'
1498        AND PA_PROGRESS_UTILS.CHECK_VALID_AS_OF_DATE( p_as_of_date, p_project_id, l_resource_list_member_id, l_object_type, p_task_id  ) = 'N'
1499        AND nvl(l_last_progress_date,p_as_of_date + 1 ) <> p_as_of_date
1500        THEN
1501            --Add message
1502         --Invalid as of date
1503         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1504                                 ,p_msg_name       => 'PA_TP_INV_AOD2');
1505            x_msg_data := 'PA_TP_INV_AOD2';
1506            x_return_status := 'E';
1507            RAISE  FND_API.G_EXC_ERROR;
1508        END IF;*/
1509 
1510        IF l_progress_exists_on_aod = 'WORKING'
1511        THEN
1512            --update the existing working progress record
1513            l_db_action := 'UPDATE';
1514       --This code is modified for Correction flow bug no.3595585. Satish
1515       --In ppc for correction flow record should be inserted. bug no. 3595585 Satish
1516        ELSIF l_progress_exists_on_aod = 'PUBLISHED'
1517        THEN
1518             --bug 4185364, if correcting published record it should be update as we dont want to maintain history of corrected records
1519 	    --and if action is save then create a new record
1520             IF p_action = 'PUBLISH' THEN
1521 		l_db_action := 'UPDATE';
1522 	    ELSE
1523 		l_db_action := 'CREATE';
1524 	    END IF;
1525        ELSIF l_progress_exists_on_aod = 'N'
1526        THEN
1527             --Create a new working progress record.
1528             l_db_action := 'CREATE';
1529          --there is only one working version allowed hence update that record only if it exists
1530             --IF  l_working_aod IS NOT NULL ,  now this case will never come
1531             IF  l_working_aod IS NOT NULL
1532             THEN
1533                 l_db_action := 'UPDATE';
1534             END IF;
1535         END IF;
1536     END IF;
1537 
1538     IF g1_debug_mode  = 'Y' THEN
1539        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_db_action: '||l_db_action, x_Log_Level=> 3);
1540     END IF;
1541 
1542     IF ( p_action = 'PUBLISH')
1543     THEN
1544         l_published_flag        := 'Y';
1545         l_current_flag          := 'Y';
1546         l_rollup_current_flag := 'Y'; -- Bug 3879461
1547 
1548         UPDATE pa_percent_completes
1549         SET current_flag = 'N'
1550         WHERE project_id = p_project_id
1551         --AND object_id = l_assignment_id  --bug# 3764224 Changes for RLM
1552         AND object_id = l_resource_list_member_id
1553         AND task_id = l_task_id    --maansari7/21 bug# 3764224 Changes for RLM
1554         AND current_flag = 'Y'
1555         AND object_type = l_object_type
1559         SET current_flag = 'N'
1556 		AND CBS_ELEMENT_ID = L_CBS_ELEMENT_ID; --Added for 16200605
1557 
1558         UPDATE pa_progress_rollup
1560         WHERE project_id = p_project_id
1561         --AND object_id = l_assignment_id --bug# 3764224 Changes for RLM
1562         AND object_id = l_resource_list_member_id
1563         AND proj_element_id = l_task_id    --maansari7/21 bug# 3764224 Changes for RLM
1564         AND current_flag = 'Y'
1565         AND object_type = l_object_type
1566 	    AND structure_version_id is null -- Bug 3846353 : *** AMKSINGH  08/24/04 09:53 am ***  Issue F - 2
1567 		AND CBS_ELEMENT_ID = L_CBS_ELEMENT_ID; -- Added for 16200605
1568 
1569         -- Bug 3879461 Begin
1570 -----	IF l_db_action = 'UPDATE' THEN
1571 		/*
1572 		-- Delete the published progress record on the same as of date
1573 		DELETE FROM pa_progress_rollup
1574 		where project_id = p_project_id
1575 		and object_id = l_resource_list_member_id
1576 		and proj_element_id = l_task_id
1577 		and object_type = l_object_type
1578 		and structure_version_id is null
1579 		and structure_type = 'WORKPLAN'
1580 		and current_flag = 'Y'
1581 		and trunc(as_of_date) = trunc(p_as_of_date)
1582 		and exists(select 1
1583 				from pa_progress_rollup
1584 				where project_id = p_project_id
1585 				and object_id = l_resource_list_member_id
1586 				and proj_element_id = l_task_id
1587 				and object_type = l_object_type
1588 				and structure_version_id is null
1589 				and structure_type = 'WORKPLAN'
1590 				and current_flag = 'W'
1591 				and trunc(as_of_date) = trunc(p_as_of_date)
1592 		  	   );
1593 		-- Update the  working progress record on the same as of date as published progress
1594 		-- so that while updating rollup record its values can be considered
1595 		-- Basically this is done so get_prog_rollup_id can return this row for update mode
1596 
1597 		Update pa_progress_rollup
1598 		set current_flag = 'Y'
1599 		where project_id = p_project_id
1600 		and object_id = l_resource_list_member_id
1601 		and proj_element_id = l_task_id
1602 		and object_type = l_object_type
1603 		and structure_version_id is null
1604 		and structure_type = 'WORKPLAN'
1605 		and current_flag = 'W'
1606 		and trunc(as_of_date) = trunc(p_as_of_date);
1607 		*/
1608                 --- while PUBLISH we delete all working rec <= to as_of_date
1609 		Delete from pa_progress_rollup
1610 		where project_id = p_project_id
1611 		and object_id = l_resource_list_member_id
1612 		and proj_element_id = l_task_id
1613 		and object_type = l_object_type
1614 		and structure_version_id is null
1615 		and structure_type = 'WORKPLAN'
1616 		and current_flag = 'W'
1617 		and trunc(as_of_date) <= trunc(p_as_of_date)
1618 		and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id,-1)	--Added for 16200605
1619 		;
1620 ------	END IF;
1621         -- Bug 3879461 End
1622     ELSE
1623         l_published_flag := 'N';
1624         l_current_flag := 'N';
1625         l_rollup_current_flag := 'W'; -- Bug 3879461
1626     END IF;
1627 
1628 
1629     --bug 3824042, round effort upto 2 deciaml places, start
1630     IF l_rate_based_flag = 'Y'
1631     THEN
1632 	    l_actual_effort_this_period := round(l_actual_effort_this_period, 5);
1633 	    l_etc_effort_this_period    := round(l_etc_effort_this_period, 5);
1634     ELSE
1635 	    l_actual_effort_this_period := pa_currency.round_trans_currency_amt(l_actual_effort_this_period, l_txn_currency_code);
1636 	    l_etc_effort_this_period    := pa_currency.round_trans_currency_amt(l_etc_effort_this_period, l_txn_currency_code);
1637     END IF;
1638     --bug 3824042, round effort upto 2 deciaml places, end
1639 
1640      --BUG3630743 (Get all planned values)
1641     -- Bug 3696572 : Wrongly l_project_id was passed to below cursor instead of p_project_id
1642     ---4372462 (moved this code here from below)
1643     OPEN c_get_planned_values (l_resource_list_member_id , l_assignment_id, p_project_id ) ;
1644     FETCH c_get_planned_values INTO
1645           l_planned_quantity ,
1646           l_planned_bur_cost_txn_cur,
1647           l_planned_bur_cost_projfunc,
1648           l_planned_bur_cost_proj_cur,
1649           l_planned_raw_cost_txn_cur,
1650           l_planned_raw_cost_proj_cur,
1651           l_planned_raw_cost_projfunc,
1652           l_budget_version_id ;
1653     CLOSE c_get_planned_values;
1654     --BUG3630743
1655 
1656 
1657 -- Raw Cost Changes Begin
1658 -- IF l_actual_effort_this_period IS NOT NULL   bug 3784733  need to call this api even for non-rate based  assgns to get the burden multiplier.
1659 -- THEN
1660 
1661      IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
1662        --bug 4334545
1663        if (l_actual_effort_this_period is not null AND (l_actual_effort_this_period <> 0 or l_actual_raw_cost_this_period <> 0)) then
1664        BEGIN
1665        IF g1_debug_mode  = 'Y' THEN
1666           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Calling Get_Res_txn_Cost_Rate', x_Log_Level=> 3);
1667        END IF;
1668        PA_PROGRESS_UTILS.Get_Res_Rate_Burden_Multiplier(
1669             P_res_list_mem_id             => l_resource_list_member_id
1670            ,P_project_id                  => p_project_id
1671            ,P_task_id                  => p_task_id      --bug 3860575
1672            ,p_as_of_date               => p_as_of_date   --bug 3901289
1673            --maansari6/14 3686920
1674            ,p_structure_version_id        => p_structure_version_id
1675            ,p_currency_code               => l_txn_currency_code
1676            --maansari6/14 3686920
1677 	   ,p_calling_mode                => 'ACTUAL_RATES'
1678            ,x_resource_curr_code          => l_res_cur_code
1679            ,x_resource_raw_rate           => l_res_raw_rate
1683            ,x_msg_count                   => l_msg_count
1680            ,x_resource_burden_rate        => l_res_burden_rate
1681            ,X_burden_multiplier           => l_burden_multiplier
1682            ,x_return_status               => l_return_status
1684            ,x_msg_data                    => l_msg_data
1685           );
1686 
1687        IF g1_debug_mode  = 'Y' THEN
1688             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => ' Before conversion l_res_raw_rate'||l_res_raw_rate, x_Log_Level=> 3);
1689             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Before conversion l_res_burden_rate'||l_res_burden_rate, x_Log_Level=> 3);
1690             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Before conversion l_res_cur_code'||l_res_cur_code, x_Log_Level=> 3);
1691        END IF;
1692 
1693 
1694       EXCEPTION
1695            WHEN OTHERS THEN
1696                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_ASSIGNMENT_PROGRESS_PUB',
1697                             p_procedure_name =>        'UPDATE_ASSIGNMENT_PROGRESS',
1698                             p_error_text     => SUBSTRB('PA_PROGRESS_UTILS.Get_Res_Rate_Burden_Multiplier1:'||SQLERRM,1,240));
1699                 RAISE FND_API.G_EXC_ERROR;
1700 
1701       END;
1702 
1703       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1704           x_return_status := 'E';
1705           x_msg_data      := l_msg_data;
1706           x_msg_count     := l_msg_count;
1707           RAISE  FND_API.G_EXC_ERROR;
1708       END IF;
1709 
1710     -- Bug 3696429 currency conversion for resource  Satish 03-JUL-2004 start
1711     IF l_txn_currency_code <> l_res_cur_code
1712     THEN
1713         PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
1714              p_project_id               => p_project_id
1715             ,p_task_id                  => p_task_id
1716             --,p_as_of_date               => SYSDATE
1717             ,p_as_of_date               => p_as_of_date     --bug 3901289
1718             ,p_txn_cost                 => l_res_raw_rate
1719             ,p_txn_curr_code            => l_res_cur_code
1720             ,p_project_curr_code        => l_txn_currency_code
1721             ,p_project_rate_type        => l_project_rate_type
1722             ,p_project_rate_date        => l_project_rate_date
1723             ,p_project_exch_rate        => l_project_exch_rate
1724             ,p_project_raw_cost         => l_proj_res_raw_rate
1725             --,p_projfunc_curr_code       => l_txn_currency_code
1726             ,p_projfunc_curr_code       => l_projfunc_curr_code --BUG 4354031
1727             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
1728             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
1729             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
1730             ,p_projfunc_raw_cost        => l_projfunc_res_raw_rate
1731             ,p_structure_version_id     => p_structure_version_id -- 3627787
1732             ,x_return_status            => l_return_status
1733             ,x_msg_count                => l_msg_count
1734             ,x_msg_data                 => l_msg_data
1735         );
1736 
1737         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1738               x_return_status := 'E';
1739               x_msg_data      := l_msg_data;
1740               x_msg_count     := l_msg_count;
1741               RAISE  FND_API.G_EXC_ERROR;
1742         END IF;
1743 
1744         IF l_res_raw_rate <> l_res_burden_rate
1745 	THEN
1746 		PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
1747 		     p_project_id               => p_project_id
1748 		    ,p_task_id                  => p_task_id
1749 	--	    ,p_as_of_date               => SYSDATE
1750                     ,p_as_of_date               => p_as_of_date     --bug 3901289
1751 		    ,p_txn_cost                 => l_res_burden_rate
1752 		    ,p_txn_curr_code            => l_res_cur_code
1753 		    ,p_project_curr_code        => l_txn_currency_code
1754 		    ,p_project_rate_type        => l_project_rate_type
1755 		    ,p_project_rate_date        => l_project_rate_date
1756 		    ,p_project_exch_rate        => l_project_exch_rate
1757 		    ,p_project_raw_cost         => l_proj_res_burden_rate
1758 		    --,p_projfunc_curr_code       => l_txn_currency_code
1759 		    ,p_projfunc_curr_code       => l_projfunc_curr_code --BUG 4354031
1760                     ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
1761 		    ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
1762 		    ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
1763 		    ,p_projfunc_raw_cost        => l_projfunc_res_burden_rate
1764 		    ,p_structure_version_id     => p_structure_version_id -- 3627787
1765 		    ,x_return_status            => l_return_status
1766 		    ,x_msg_count                => l_msg_count
1767 		    ,x_msg_data                 => l_msg_data
1768 		);
1769 		IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1770 		      x_return_status := 'E';
1771 		      x_msg_data      := l_msg_data;
1772 		      x_msg_count     := l_msg_count;
1773 		      RAISE  FND_API.G_EXC_ERROR;
1774 		END IF;
1775 
1776 		l_res_burden_rate := l_proj_res_burden_rate;
1777 	ELSE
1778 		l_res_burden_rate := l_proj_res_raw_rate;
1779 	END IF;
1780 	l_res_raw_rate := l_proj_res_raw_rate;
1781     END IF; -- IF l_txn_currency_code <> l_res_cur_code
1782 
1783     IF g1_debug_mode  = 'Y' THEN
1784          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => ' After conversion l_res_raw_rate'||l_res_raw_rate, x_Log_Level=> 3);
1785          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'After conversion l_res_burden_rate'||l_res_burden_rate, x_Log_Level=> 3);
1786     END IF;
1787 
1788     end if;
1789 
1793      BEGIN
1790 --    IF l_etc_effort_this_period IS NOT NULL  --maansari6/14 bug 3784733  need to call this api even for non-rate based  assgns to get the burden multiplier.
1791    --bug 4334545
1792     if (l_etc_effort_this_period is not null and (l_etc_effort_this_period <> 0 or l_etc_raw_cost_this_period <> 0)) then
1794      PA_PROGRESS_UTILS.Get_Res_Rate_Burden_Multiplier(
1795             P_res_list_mem_id             => l_resource_list_member_id
1796            ,P_project_id                  => p_project_id
1797            ,P_task_id                     => p_task_id      --bug 3860575
1798           ,p_as_of_date               => p_as_of_date   --bug 3901289
1799            --maansari6/14 3686920
1800            ,p_structure_version_id        => p_structure_version_id
1801            ,p_currency_code               => l_txn_currency_code
1802            --maansari6/14 3686920
1803 	   ,p_calling_mode                => 'PLAN_RATES'
1804            ,x_resource_curr_code          => l_plan_res_cur_code
1805            ,x_resource_raw_rate           => l_plan_res_raw_rate
1806            ,x_resource_burden_rate        => l_plan_res_burden_rate
1807            ,X_burden_multiplier           => l_plan_burden_multiplier
1808            ,x_return_status               => l_return_status
1809            ,x_msg_count                   => l_msg_count
1810            ,x_msg_data                    => l_msg_data
1811           );
1812 
1813     IF g1_debug_mode  = 'Y' THEN
1814          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Before conversion l_plan_res_raw_rate'||l_plan_res_raw_rate, x_Log_Level=> 3);
1815          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Before conversion l_plan_res_burden_rate'||l_plan_res_burden_rate, x_Log_Level=> 3);
1816          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_plan_res_cur_code'||l_plan_res_cur_code, x_Log_Level=> 3);
1817     END IF;
1818 
1819     EXCEPTION
1820            WHEN OTHERS THEN
1821                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_ASSIGNMENT_PROGRESS_PUB',
1822                             p_procedure_name =>        'UPDATE_ASSIGNMENT_PROGRESS',
1823                             p_error_text     => SUBSTRB('PA_PROGRESS_UTILS.Get_Res_Rate_Burden_Multiplier2:'||SQLERRM,1,240));
1824                 RAISE FND_API.G_EXC_ERROR;
1825 
1826     END;
1827 
1828     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1829           x_return_status := 'E';
1830           x_msg_data      := l_msg_data;
1831           x_msg_count     := l_msg_count;
1832           RAISE  FND_API.G_EXC_ERROR;
1833     END IF;
1834     -- Bug 3784874 currency conversion for ETC Start
1835     --IF l_txn_currency_code <> l_res_cur_code
1836     IF l_txn_currency_code <> l_plan_res_cur_code -- 06-sep-2004,3860575 Satish
1837     THEN
1838         PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
1839              p_project_id               => p_project_id
1840             ,p_task_id                  => p_task_id
1841 --            ,p_as_of_date               => SYSDATE
1842             ,p_as_of_date               => p_as_of_date     --bug 3901289
1843             ,p_txn_cost                 => l_plan_res_raw_rate
1844             ,p_txn_curr_code            => l_plan_res_cur_code
1845             ,p_project_curr_code        => l_txn_currency_code
1846             ,p_project_rate_type        => l_project_rate_type
1847             ,p_project_rate_date        => l_project_rate_date
1848             ,p_project_exch_rate        => l_project_exch_rate
1849             ,p_project_raw_cost         => l_proj_res_raw_rate
1850             --,p_projfunc_curr_code       => l_txn_currency_code
1851             ,p_projfunc_curr_code       => l_projfunc_curr_code --BUG 4354031
1852             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
1853             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
1854             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
1855             ,p_projfunc_raw_cost        => l_projfunc_res_raw_rate
1856             ,p_structure_version_id     => p_structure_version_id
1857             ,x_return_status            => l_return_status
1858             ,x_msg_count                => l_msg_count
1859             ,x_msg_data                 => l_msg_data
1860         );
1861 
1862         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1863               x_return_status := 'E';
1864               x_msg_data      := l_msg_data;
1865               x_msg_count     := l_msg_count;
1866               RAISE  FND_API.G_EXC_ERROR;
1867         END IF;
1868 
1869         IF l_plan_res_raw_rate <> l_plan_res_burden_rate
1870 	THEN
1871 		PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
1872 		     p_project_id               => p_project_id
1873 		    ,p_task_id                  => p_task_id
1874 --		    ,p_as_of_date               => SYSDATE
1875             ,p_as_of_date               => p_as_of_date     --bug 3901289
1876 		    ,p_txn_cost                 => l_plan_res_burden_rate
1877 		    ,p_txn_curr_code            => l_plan_res_cur_code
1878 		    ,p_project_curr_code        => l_txn_currency_code
1879 		    ,p_project_rate_type        => l_project_rate_type
1880 		    ,p_project_rate_date        => l_project_rate_date
1881 		    ,p_project_exch_rate        => l_project_exch_rate
1882 		    ,p_project_raw_cost         => l_proj_res_burden_rate
1883 		    --,p_projfunc_curr_code       => l_txn_currency_code
1884 		    ,p_projfunc_curr_code       => l_projfunc_curr_code --BUG 4354031
1885 		    ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
1886 		    ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
1887 		    ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
1888 		    ,p_projfunc_raw_cost        => l_projfunc_res_burden_rate
1889 		    ,p_structure_version_id     => p_structure_version_id
1890 		    ,x_return_status            => l_return_status
1891 		    ,x_msg_count                => l_msg_count
1895 		      x_return_status := 'E';
1892 		    ,x_msg_data                 => l_msg_data
1893 		);
1894 		IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1896 		      x_msg_data      := l_msg_data;
1897 		      x_msg_count     := l_msg_count;
1898 		      RAISE  FND_API.G_EXC_ERROR;
1899 		END IF;
1900 
1901 		l_plan_res_burden_rate := l_proj_res_burden_rate;
1902 	ELSE
1903 		l_plan_res_burden_rate := l_proj_res_raw_rate;
1904 	END IF;
1905 	l_plan_res_raw_rate := l_proj_res_raw_rate;
1906     END IF; -- l_txn_currency_code <> l_plan_res_cur_code
1907 
1908    END IF;
1909   END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
1910 
1911     IF g1_debug_mode  = 'Y' THEN
1912          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => ' After conversion l_plan_res_raw_rate'||l_plan_res_raw_rate, x_Log_Level=> 3);
1913          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'After conversion l_plan_res_burden_rate'||l_plan_res_burden_rate, x_Log_Level=> 3);
1914     END IF;
1915 
1916     -- Bug 3784874 currency conversion for ETC End
1917 
1918 /*   l_burden_cost := pa_currency.round_trans_currency_amt(
1919                                             l_txn_raw_cost * l_burden_multiplier, l_txn_curr_code) +
1920                                             l_txn_raw_cost ;*/
1921 
1922 -- Raw Cost Changes End
1923 
1924     IF l_rate_based_flag = 'Y'    --maansari7/6 bug 3742356
1925     THEN
1926 
1927       --IF p_actual_cost_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR p_actual_cost_this_period IS NULL
1928       --THEN  --maansari4/10
1929     IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
1930 
1931      --maansari4/10
1932      IF l_actual_effort_this_period IS NOT NULL
1933      THEN
1934      --maansari4/10
1935      /* Raw Cost Changes Begin
1936           l_res_effort_tbl.extend(1);
1937           l_res_effort_tbl(1) := l_actual_effort_this_period; -- This is incremental
1938 
1939              IF g1_debug_mode  = 'Y' THEN
1940                   pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'calling effort to cost for actual', x_Log_Level=> 3);
1941              END IF;
1942 
1943           PA_PROGRESS_UTILS.GET_TXN_COST_FOR_EFFORT(
1944                p_project_id        => p_project_id
1945               ,p_res_list_memb_id_tbl     => l_res_list_memb_id_tbl
1946               ,P_res_effort_tbl           => l_res_effort_tbl
1947               ,P_res_txn_cost_tbl         => l_res_txn_cost_tbl
1948               ,x_return_status             => x_return_status
1949               ,x_msg_count         => x_msg_count
1950               ,x_msg_data               => x_msg_data
1951           );
1952              IF x_return_status <> FND_API.G_RET_STS_SUCCESS -- FPM Dev CR 8
1953           THEN
1954                  RAISE  FND_API.G_EXC_ERROR;
1955              END IF;
1956 
1957           l_act_txn_cost := l_res_txn_cost_tbl(1); -- This is incremental
1958           */
1959           l_act_txn_raw_cost := nvl(l_actual_effort_this_period,0) * l_res_raw_rate; -- This is incremental
1960           l_act_txn_bur_cost := nvl(l_actual_effort_this_period,0) * l_res_burden_rate; -- This is incremental
1961           -- Raw Cost Changes End
1962 	  --bug 3824042 start
1963           l_act_txn_raw_cost      := pa_currency.round_trans_currency_amt(l_act_txn_raw_cost, l_txn_currency_code);
1964           l_act_txn_bur_cost      := pa_currency.round_trans_currency_amt(l_act_txn_bur_cost, l_txn_currency_code);
1965 	  --bug 3824042 end
1966      ELSE
1967           --l_act_txn_cost := null; -- This is incremental
1968           l_act_txn_raw_cost  := null; -- Raw Cost Changes
1969           l_act_txn_bur_cost := null; -- Raw Cost Changes
1970      END IF;  --if effort not equal to g_miss_num and not null --maansari4/10
1971      END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
1972 
1973      --bug 3851528
1974      if p_action = 'PUBLISH'
1975      then
1976         --If etc is not passed then it can be taken as not overidden and let summarization do plann - actual.
1977         IF l_etc_effort_this_period IS NOT NULL OR
1978            l_etc_raw_cost_this_period IS NOT NULL
1979         THEN
1980            UPDATE pa_proj_elements
1981               SET progress_outdated_flag = 'Y'
1982             WHERE project_id=p_project_id
1983              and object_type= 'PA_TASKS'
1984              and proj_element_id = p_task_id
1985              and progress_outdated_flag = 'N'
1986              ;
1987         END IF;
1988      end if;
1989 
1990      IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
1991      --maansari4/10
1992      IF l_etc_effort_this_period IS NOT NULL
1993      THEN
1994      --maansari4/10
1995      /* Raw Cost Changes Begin
1996           l_etc_res_effort_tbl.extend(1);
1997           l_etc_res_effort_tbl(1) := l_etc_effort_this_period; -- This is cumulative
1998 
1999              IF g1_debug_mode  = 'Y' THEN
2000                   pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'calling effort to cost for etc', x_Log_Level=> 3);
2001              END IF;
2002 
2003           PA_PROGRESS_UTILS.GET_TXN_COST_FOR_EFFORT(
2004                p_project_id        => p_project_id
2005               ,p_res_list_memb_id_tbl     => l_res_list_memb_id_tbl
2006               ,P_res_effort_tbl           => l_etc_res_effort_tbl
2007               ,P_res_txn_cost_tbl         => l_etc_res_txn_cost_tbl
2008               ,x_return_status             => x_return_status
2009               ,x_msg_count         => x_msg_count
2010               ,x_msg_data               => x_msg_data
2011           );
2012 
2013              IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2014           THEN
2018           */
2015                  RAISE  FND_API.G_EXC_ERROR;
2016              END IF;
2017           l_etc_txn_cost := l_etc_res_txn_cost_tbl(1); -- This is cumulative
2019 	  -- Bug 3627315 : Using plan rates instead of actual rates
2020           l_etc_txn_raw_cost := nvl(l_etc_effort_this_period,0)*l_plan_res_raw_rate; -- This is cumulative
2021           l_etc_txn_bur_cost := nvl(l_etc_effort_this_period,0)*l_plan_res_burden_rate; -- This is cumulative
2022           -- Raw Cost Changes End
2023 	  --bug 3824042 start
2024           l_etc_txn_raw_cost      := pa_currency.round_trans_currency_amt(l_etc_txn_raw_cost, l_txn_currency_code);
2025           l_etc_txn_bur_cost      := pa_currency.round_trans_currency_amt(l_etc_txn_bur_cost, l_txn_currency_code);
2026 	  --bug 3824042 end
2027       ELSE
2028           --l_etc_txn_cost := null; -- This is cumulative
2029           l_etc_txn_raw_cost := null; -- Raw Cost Changes
2030           l_etc_txn_bur_cost := null; -- Raw Cost Changes
2031       END IF;    --if etc effort not equal to g_miss_num and not null --maansari4/10
2032       End IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2033 
2034      --maansari4/10
2035       --ELSE
2036       --    l_act_txn_cost := p_actual_cost_this_period; -- This is incremental
2037       --    l_etc_txn_cost := p_etc_cost_this_period; -- This is cumulative
2038       --END IF;
2039      --maansari4/10
2040 
2041 
2042        IF g1_debug_mode  = 'Y' THEN
2043             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_raw_cost'||l_etc_txn_raw_cost, x_Log_Level=> 3);
2044             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_bur_cost'||l_etc_txn_bur_cost, x_Log_Level=> 3);
2045        END IF;
2046 
2047     ELSIF  l_rate_based_flag = 'N' --maansari7/6 bug 3742356
2048     THEN
2049       IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2050      --Bug 3606627 : Used l_ varable instead of p_
2051 
2052     -- Bug 3801745 Begin : Commented below code and added new
2053 --     l_act_txn_raw_cost := l_actual_raw_cost_this_period; -- This is incremental.
2054 --     l_etc_txn_raw_cost := l_etc_raw_cost_this_period; -- This is cumulative.
2055 --     l_actual_effort_this_period := null; -- This is incremental
2056 --     l_etc_effort_this_period := null; -- This is cumulative
2057     -- Raw Cost Changes Begin
2058      l_act_txn_raw_cost := l_actual_effort_this_period;
2059      l_etc_txn_raw_cost := l_etc_effort_this_period;
2060     -- Bug 3801745 End
2061 
2062     l_act_txn_bur_cost := nvl( pa_currency.round_trans_currency_amt(
2063                                             l_act_txn_raw_cost * l_burden_multiplier, l_txn_currency_code),0) +
2064                                             l_act_txn_raw_cost ;
2065     -- Bug 3627315 : Using plan burden multiplier instead of actual
2066     l_etc_txn_bur_cost := nvl( pa_currency.round_trans_currency_amt(
2067                                             l_etc_txn_raw_cost * l_plan_burden_multiplier, l_txn_currency_code),0) +
2068                                             l_etc_txn_raw_cost ;
2069     End IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2070     -- Raw Cost Changes End
2071 
2072     END IF;
2073 
2074     --bug no. 3586648
2075     -- IF ((l_etc_txn_raw_cost = 0 OR l_etc_txn_raw_cost = null) AND l_actual_finish_date = null) Bug 3801745
2076 --    IF ((l_etc_effort_this_period = 0 OR l_etc_effort_this_period = null) AND l_actual_finish_date = null) Bug 3956299
2077    --bug 4341100, moved this code below after defaulting etc as planned - actual
2078    /*IF ((l_etc_effort_this_period = 0 OR l_etc_effort_this_period is null) AND l_actual_finish_date is null) -- Bug 3956299
2079     THEN
2080         -- Bug 3956299 : We can default actual finish date in this case from scheduled_finish_date
2081 	l_actual_finish_date := l_scheduled_finish_date;
2082 	IF l_actual_finish_date is null THEN
2083 		--You have to pass actual finish date if etc is 0
2084 		PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2085 				     ,p_msg_name       => 'PA_TP_ASSG_NTER_FIN_DATE');
2086 	       x_msg_data := 'PA_TP_ASSG_NTER_FIN_DATE';
2087 	       x_return_status := 'E';
2088 	       RAISE  FND_API.G_EXC_ERROR;
2089 	END IF;
2090     END IF;*/
2091     --bug no. 3586648
2092 
2093    IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2094 
2095    IF l_act_txn_raw_cost IS NOT NULL AND l_act_txn_raw_cost <> 0 THEN
2096     PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
2097           p_project_id             => p_project_id
2098                ,p_task_id               => p_task_id
2099 --            ,p_as_of_date               => SYSDATE
2100             ,p_as_of_date               => p_as_of_date     --bug 3901289
2101             ,p_txn_cost            => l_act_txn_raw_cost
2102             ,p_txn_curr_code            => l_txn_currency_code
2103             ,p_project_curr_code        => l_project_curr_code
2104             ,p_project_rate_type        => l_project_rate_type
2105             ,p_project_rate_date        => l_project_rate_date
2106             ,p_project_exch_rate        => l_project_exch_rate
2107             ,p_project_raw_cost         => l_act_project_raw_cost
2108             ,p_projfunc_curr_code       => l_projfunc_curr_code
2109             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
2110             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
2111             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
2112             ,p_projfunc_raw_cost        => l_act_projfunc_raw_cost
2113             ,p_structure_version_id          => p_structure_version_id -- 3627787
2114             ,x_return_status            => x_return_status
2115             ,x_msg_count           => x_msg_count
2116             ,x_msg_data            => x_msg_data
2117     );
2118              IF x_return_status <> FND_API.G_RET_STS_SUCCESS -- FPM Dev CR 8
2119           THEN
2123     PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
2120                  RAISE  FND_API.G_EXC_ERROR;
2121              END IF;
2122      -- Raw Cost Changes Begin
2124           p_project_id             => p_project_id
2125                ,p_task_id               => p_task_id
2126 --            ,p_as_of_date               => SYSDATE
2127             ,p_as_of_date               => p_as_of_date     --bug 3901289
2128             ,p_txn_cost            => l_act_txn_bur_cost
2129             ,p_txn_curr_code            => l_txn_currency_code
2130             ,p_project_curr_code        => l_project_curr_code
2131             ,p_project_rate_type        => l_project_rate_type
2132             ,p_project_rate_date        => l_project_rate_date
2133             ,p_project_exch_rate        => l_project_exch_rate
2134             ,p_project_raw_cost         => l_act_project_bur_cost
2135             ,p_projfunc_curr_code       => l_projfunc_curr_code
2136             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
2137             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
2138             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
2139             ,p_projfunc_raw_cost        => l_act_projfunc_bur_cost
2140             ,p_structure_version_id          => p_structure_version_id -- 3627787
2141             ,x_return_status            => x_return_status
2142             ,x_msg_count           => x_msg_count
2143             ,x_msg_data            => x_msg_data
2144     );
2145              IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2146           THEN
2147                  RAISE  FND_API.G_EXC_ERROR;
2148              END IF;
2149      -- Raw Cost Changes End
2150 
2151     ELSE
2152      l_act_project_raw_cost := null;
2153      l_act_projfunc_raw_cost := null;
2154      l_act_project_bur_cost := null; --Raw Cost Changes
2155      l_act_projfunc_bur_cost := null; --Raw Cost Changes
2156     END IF;
2157 
2158     IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2159     THEN
2160          RAISE  FND_API.G_EXC_ERROR;
2161     END IF;
2162 
2163     IF g1_debug_mode  = 'Y' THEN
2164 --          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_act_txn_cost'||l_act_txn_cost, x_Log_Level=> 3);
2165           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_act_project_raw_cost'||l_act_project_raw_cost, x_Log_Level=> 3);
2166           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_act_projfunc_raw_cost'||l_act_projfunc_raw_cost, x_Log_Level=> 3);
2167     END IF;
2168 
2169     IF l_etc_txn_raw_cost IS NOT NULL AND l_etc_txn_raw_cost <> 0 THEN
2170     PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
2171           p_project_id             => p_project_id
2172                ,p_task_id               => p_task_id
2173 --            ,p_as_of_date               => SYSDATE
2174             ,p_as_of_date               => p_as_of_date     --bug 3901289
2175             ,p_txn_cost            => l_etc_txn_raw_cost
2176             ,p_txn_curr_code            => l_txn_currency_code
2177             ,p_calling_mode             => 'PLAN_RATES'    ---4372462
2178             ,p_res_assignment_id        => l_assignment_id ---4372462
2179             ,p_budget_version_id        => l_budget_version_id ---4372462
2180             ,p_project_curr_code        => l_project_curr_code
2181             ,p_project_rate_type        => l_project_rate_type
2182             ,p_project_rate_date        => l_project_rate_date
2183             ,p_project_exch_rate        => l_project_exch_rate
2184             ,p_project_raw_cost         => l_etc_project_raw_cost
2185             ,p_projfunc_curr_code       => l_projfunc_curr_code
2186             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
2187             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
2188             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
2189             ,p_projfunc_raw_cost        => l_etc_projfunc_raw_cost
2190             ,p_structure_version_id          => p_structure_version_id -- 3627787
2191             ,x_return_status            => x_return_status
2192             ,x_msg_count           => x_msg_count
2193             ,x_msg_data            => x_msg_data
2194     );
2195              IF x_return_status <> FND_API.G_RET_STS_SUCCESS -- FPM Dev CR 8
2196           THEN
2197                  RAISE  FND_API.G_EXC_ERROR;
2198              END IF;
2199     -- Raw Cost Changes Begin
2200     PA_PROGRESS_UTILS.CONVERT_CURRENCY_AMOUNTS(
2201           p_project_id             => p_project_id
2202                ,p_task_id               => p_task_id
2203 --            ,p_as_of_date               => SYSDATE
2204             ,p_as_of_date               => p_as_of_date     --bug 3901289
2205             ,p_txn_cost            => l_etc_txn_bur_cost
2206             ,p_txn_curr_code            => l_txn_currency_code
2207             ,p_calling_mode             => 'PLAN_RATES'    ---4372462
2208             ,p_res_assignment_id        => l_assignment_id ---4372462
2209             ,p_budget_version_id        => l_budget_version_id ---4372462
2210             ,p_project_curr_code        => l_project_curr_code
2211             ,p_project_rate_type        => l_project_rate_type
2212             ,p_project_rate_date        => l_project_rate_date
2213             ,p_project_exch_rate        => l_project_exch_rate
2214             ,p_project_raw_cost         => l_etc_project_bur_cost
2215             ,p_projfunc_curr_code       => l_projfunc_curr_code
2216             ,p_projfunc_cost_rate_type  => l_projfunc_cost_rate_type
2217             ,p_projfunc_cost_rate_date  => l_projfunc_cost_rate_date
2218             ,p_projfunc_cost_exch_rate  => l_projfunc_cost_exch_rate
2219             ,p_projfunc_raw_cost        => l_etc_projfunc_bur_cost
2220             ,p_structure_version_id          => p_structure_version_id -- 3627787
2221             ,x_return_status            => x_return_status
2225              IF x_return_status <> FND_API.G_RET_STS_SUCCESS -- FPM Dev CR 8
2222             ,x_msg_count           => x_msg_count
2223             ,x_msg_data            => x_msg_data
2224     );
2226           THEN
2227                  RAISE  FND_API.G_EXC_ERROR;
2228              END IF;
2229     -- Raw Cost Changes End
2230     ELSE
2231      l_etc_project_raw_cost := null;
2232      l_etc_projfunc_raw_cost := null;
2233      l_etc_project_bur_cost := null;
2234      l_etc_projfunc_bur_cost := null;
2235      -- Bug 4116080 : Begin
2236      IF l_etc_txn_raw_cost = 0 THEN
2237 	l_etc_project_raw_cost := 0;
2238 	l_etc_projfunc_raw_cost := 0;
2239 	l_etc_project_bur_cost := 0;
2240 	l_etc_projfunc_bur_cost := 0;
2241      END IF;
2242      -- Bug 4116080 : End
2243     END IF;
2244     END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2245 
2246     IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2247     THEN
2248          RAISE  FND_API.G_EXC_ERROR;
2249     END IF;
2250 
2251 
2252     IF g1_debug_mode  = 'Y' THEN
2253 --          pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_cost'||l_etc_txn_cost, x_Log_Level=> 3);
2254           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_project_raw_cost'||l_etc_project_raw_cost, x_Log_Level=> 3);
2255           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_projfunc_raw_cost'||l_etc_projfunc_raw_cost, x_Log_Level=> 3);
2256           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_project_rate_type'||l_project_rate_type, x_Log_Level=> 3);
2257           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_project_rate_date'||l_project_rate_date, x_Log_Level=> 3);
2258           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_project_exch_rate'||l_project_exch_rate, x_Log_Level=> 3);
2259           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_projfunc_cost_rate_type'||l_projfunc_cost_rate_type, x_Log_Level=> 3);
2260           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_projfunc_cost_rate_date'||l_projfunc_cost_rate_date, x_Log_Level=> 3);
2261           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_projfunc_cost_exch_rate'||l_projfunc_cost_exch_rate, x_Log_Level=> 3);
2262           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_act_effort_last_subm'||l_act_effort_last_subm, x_Log_Level=> 3);
2263           pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_act_raw_cost_last_subm_tc'||l_act_raw_cost_last_subm_tc, x_Log_Level=> 3);
2264     END IF;
2265 
2266     /* Bug 3606627 : Shifted this code up
2267     -- FPM Dev CR 3 : Added Logic to get total cost from last submission and this period.
2268     OPEN cur_task_cost(p_project_id, l_assignment_id, p_structure_type, l_resource_class_code, p_as_of_date);
2269     FETCH cur_task_cost INTO l_act_cost_last_subm_tc, l_act_cost_last_subm_pc, l_act_cost_last_subm_fc, l_act_effort_last_subm;
2270     CLOSE cur_task_cost;
2271     */
2272 
2273   /*  MOVING THIS CODE ABOVE TO GET BUDGET_VERSION_ID FOR CONVERSION to fix 4372462
2274     --BUG3630743 (Get all planned values)
2275     -- Bug 3696572 : Wrongly l_project_id was passed to below cursor instead of p_project_id
2276     OPEN c_get_planned_values (l_resource_list_member_id , l_assignment_id, p_project_id ) ;
2277     FETCH c_get_planned_values INTO
2278           l_planned_quantity ,
2279           l_planned_bur_cost_txn_cur,
2280           l_planned_bur_cost_projfunc,
2281           l_planned_bur_cost_proj_cur,
2282           l_planned_raw_cost_txn_cur,
2283           l_planned_raw_cost_proj_cur,
2284           l_planned_raw_cost_projfunc;
2285     CLOSE c_get_planned_values;
2286     --BUG3630743
2287     */
2288 
2289 
2290     --bug 3824042, round all the cost figures by calling pa_currency api,   start
2291 
2292     l_act_projfunc_raw_cost := pa_currency.round_trans_currency_amt(l_act_projfunc_raw_cost, l_prjfunc_currency_code);
2293     l_act_project_raw_cost  := pa_currency.round_trans_currency_amt(l_act_project_raw_cost, l_prj_currency_code);
2294     l_act_projfunc_bur_cost := pa_currency.round_trans_currency_amt(l_act_projfunc_bur_cost, l_prjfunc_currency_code);
2295     l_act_project_bur_cost  := pa_currency.round_trans_currency_amt(l_act_project_bur_cost, l_prj_currency_code);
2296 
2297     l_etc_projfunc_raw_cost := pa_currency.round_trans_currency_amt(l_etc_projfunc_raw_cost, l_prjfunc_currency_code);
2298     l_etc_project_raw_cost  := pa_currency.round_trans_currency_amt(l_etc_project_raw_cost, l_prj_currency_code);
2299     l_etc_projfunc_bur_cost := pa_currency.round_trans_currency_amt(l_etc_projfunc_bur_cost, l_prjfunc_currency_code);
2300     l_etc_project_bur_cost  := pa_currency.round_trans_currency_amt(l_etc_project_bur_cost, l_prj_currency_code);
2301 
2302     --bug 3824042, round all the cost figures by calling pa_currency api,   end
2303 
2304 
2305     IF l_resource_class_code = 'PEOPLE'   --maansari7/6 bug 3742356
2306     THEN
2307 
2308      -- Actuals are incremental amounts
2309      IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2310 	     l_ppl_act_raw_cost_to_date_tc := NVL( l_act_raw_cost_last_subm_tc, 0) + NVL( l_act_txn_raw_cost, 0);
2311 	     l_ppl_act_raw_cost_to_date_fc := NVL( l_act_raw_cost_last_subm_fc, 0) + NVL( l_act_projfunc_raw_cost, 0);
2312 	     l_ppl_act_raw_cost_to_date_pc := NVL( l_act_raw_cost_last_subm_pc, 0) + NVL( l_act_project_raw_cost, 0);
2313 	     -- Raw Cost Changes
2314 	     l_ppl_act_bur_cost_to_date_tc := NVL( l_act_bur_cost_last_subm_tc, 0) + NVL( l_act_txn_bur_cost, 0);
2315 	     l_ppl_act_bur_cost_to_date_fc := NVL( l_act_bur_cost_last_subm_fc, 0) + NVL( l_act_projfunc_bur_cost, 0);
2319      l_ppl_act_effort_to_date  := NVL( l_act_effort_last_subm, 0 ) + NVL( l_actual_effort_this_period, 0 ); --added NVL maansari4/8
2316 	     l_ppl_act_bur_cost_to_date_pc := NVL( l_act_bur_cost_last_subm_pc, 0) + NVL( l_act_project_bur_cost, 0);
2317      END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2318 
2320 
2321      -- here we need to decide what is the correct value of actual this period
2322      if (subm_prog_exists_aod = 'Y') then
2323          l_act_txn_raw_cost := l_ppl_act_raw_cost_to_date_tc - nvl(l_act_raw_cost_latest_subm_tc,0);
2324          l_act_projfunc_raw_cost := l_ppl_act_raw_cost_to_date_fc - nvl(l_act_raw_cost_latest_subm_fc,0);
2325          l_act_project_raw_cost := l_ppl_act_raw_cost_to_date_pc - nvl(l_act_raw_cost_latest_subm_pc,0);
2326          l_act_txn_bur_cost := l_ppl_act_bur_cost_to_date_tc - nvl(l_act_bur_cost_latest_subm_tc,0);
2327          l_act_projfunc_bur_cost := l_ppl_act_bur_cost_to_date_fc - nvl(l_act_bur_cost_latest_subm_fc,0);
2328          l_act_project_bur_cost := l_ppl_act_bur_cost_to_date_pc - nvl(l_act_bur_cost_latest_subm_pc,0);
2329          l_actual_effort_this_period := l_ppl_act_effort_to_date - nvl(l_act_effort_latest_subm,0);
2330      end if;
2331 
2332      --BUG3630743 ( If etc is passed as null , default it with planned-actual )
2333      -- Added If part
2334      --IF (l_etc_txn_raw_cost IS NULL OR l_etc_effort_this_period IS NULL) THEN Bug 3801745
2335        IF l_etc_effort_this_period IS NULL THEN
2336           -- Default Etc as planned - Actual
2337           -- Since ETC is always cumulative , use to_date values of actuals to subtract from planned
2338 	  IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2339 		  l_ppl_etc_raw_cost_tc := NVL (l_planned_raw_cost_txn_cur,0) -  NVL(l_ppl_act_raw_cost_to_date_tc,0);
2340 		  l_ppl_etc_raw_cost_fc := NVL(l_planned_raw_cost_projfunc,0) - NVL(l_ppl_act_raw_cost_to_date_fc,0);
2341 		  l_ppl_etc_raw_cost_pc := NVL(l_planned_raw_cost_proj_cur,0) - NVL(l_ppl_act_raw_cost_to_date_pc,0);
2342 
2343 		  l_ppl_etc_bur_cost_tc := NVL(l_planned_bur_cost_txn_cur,0) - NVL(l_ppl_act_bur_cost_to_date_tc,0);
2344 		  l_ppl_etc_bur_cost_fc := NVL(l_planned_bur_cost_projfunc,0) - NVL(l_ppl_act_bur_cost_to_date_fc,0);
2345 		  l_ppl_etc_bur_cost_pc := NVL(l_planned_bur_cost_proj_cur,0) - NVL(l_ppl_act_bur_cost_to_date_pc,0);
2346 
2347 		  --bug 3968789, if planned - actual is -ve then make it 0, start
2348 		  IF l_ppl_etc_raw_cost_tc < 0
2349 		  THEN
2350 			l_ppl_etc_raw_cost_tc := 0;
2351 			l_ppl_etc_raw_cost_fc := 0;
2352 			l_ppl_etc_raw_cost_pc := 0;
2353 			l_ppl_etc_bur_cost_tc := 0;
2354 			l_ppl_etc_bur_cost_fc := 0;
2355 			l_ppl_etc_bur_cost_pc := 0;
2356 		  END IF;
2357 		  --bug 3968789, if planned - actual is -ve then make it 0, end
2358     	  END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2359 
2360           l_ppl_etc_effort := NVL(l_planned_quantity,0) - NVL(l_ppl_act_effort_to_date,0);
2361 	  --bug 3968789,
2362 	  IF l_ppl_etc_effort < 0
2363 	  THEN
2364 		l_ppl_etc_effort := 0;
2365 	  END IF;
2366      --Added Else
2367      ELSE
2368           -- ETC's are cumulative amounts
2369 	  IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2370 		  l_ppl_etc_raw_cost_tc := l_etc_txn_raw_cost;
2371 		  l_ppl_etc_raw_cost_fc := l_etc_projfunc_raw_cost;
2372 		  l_ppl_etc_raw_cost_pc := l_etc_project_raw_cost;
2373 		  -- Raw Cost Changes
2374 
2375 		  l_ppl_etc_bur_cost_tc := l_etc_txn_bur_cost;
2376 		  l_ppl_etc_bur_cost_fc := l_etc_projfunc_bur_cost;
2377 		  l_ppl_etc_bur_cost_pc := l_etc_project_bur_cost;
2378 	 END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2379 
2380           l_ppl_etc_effort  := l_etc_effort_this_period;
2381      END IF;
2382 --maansari4/28
2383     ELSIF l_resource_class_code = 'EQUIPMENT'       --maansari7/6 bug 3742356
2384     THEN
2385      -- Actuals are incremental amounts
2386      IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2387 	     l_eqp_act_raw_cost_to_date_tc := NVL(l_act_raw_cost_last_subm_tc,0) + NVL(l_act_txn_raw_cost,0);
2388 	     l_eqp_act_raw_cost_to_date_fc := NVL(l_act_raw_cost_last_subm_fc,0) + NVL(l_act_projfunc_raw_cost,0);
2389 	     l_eqp_act_raw_cost_to_date_pc := NVL(l_act_raw_cost_last_subm_pc,0) + NVL(l_act_project_raw_cost,0);
2390 	     -- Raw Cost Changes
2391 	     l_eqp_act_bur_cost_to_date_tc := NVL(l_act_bur_cost_last_subm_tc,0) + NVL(l_act_txn_bur_cost,0);
2392 	     l_eqp_act_bur_cost_to_date_fc := NVL(l_act_bur_cost_last_subm_fc,0) + NVL(l_act_projfunc_bur_cost,0);
2393 	     l_eqp_act_bur_cost_to_date_pc := NVL(l_act_bur_cost_last_subm_pc,0) + NVL(l_act_project_bur_cost,0);
2394      END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2395 
2396      l_eqpmt_act_effort_to_date  := NVL(l_act_effort_last_subm,0) + NVL(l_actual_effort_this_period,0);
2397 
2398      -- here we need to decide what is the correct value of actual this period
2399      if (subm_prog_exists_aod = 'Y') then
2400          l_act_txn_raw_cost := l_eqp_act_raw_cost_to_date_tc - nvl(l_act_raw_cost_latest_subm_tc,0);
2401          l_act_projfunc_raw_cost := l_eqp_act_raw_cost_to_date_fc - nvl(l_act_raw_cost_latest_subm_fc,0);
2402          l_act_project_raw_cost := l_eqp_act_raw_cost_to_date_pc - nvl(l_act_raw_cost_latest_subm_pc,0);
2403          l_act_txn_bur_cost := l_eqp_act_bur_cost_to_date_tc - nvl(l_act_bur_cost_latest_subm_tc,0);
2404          l_act_projfunc_bur_cost := l_eqp_act_bur_cost_to_date_fc - nvl(l_act_bur_cost_latest_subm_fc,0);
2405          l_act_project_bur_cost := l_eqp_act_bur_cost_to_date_pc - nvl(l_act_bur_cost_latest_subm_pc,0);
2406          l_actual_effort_this_period := l_eqpmt_act_effort_to_date - nvl(l_act_effort_latest_subm,0);
2407      end if;
2408 
2409      --BUG3630743 Added If part Default Etc as planned - Actual
2410      -- IF (l_etc_txn_raw_cost IS NULL OR l_etc_effort_this_period IS NULL) THEN  Bug 3801745
2411         IF l_etc_effort_this_period IS NULL THEN
2412           -- Since ETC is always cumulative , use to_date values of actuals to subtract from planned
2416 		  l_eqpmt_etc_raw_cost_pc := NVL(l_planned_raw_cost_proj_cur,0) - NVL(l_eqp_act_raw_cost_to_date_pc,0);
2413           IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2414 		  l_eqpmt_etc_raw_cost_tc := NVL(l_planned_raw_cost_txn_cur,0)  - NVL(l_eqp_act_raw_cost_to_date_tc,0);
2415 		  l_eqpmt_etc_raw_cost_fc := NVL(l_planned_raw_cost_projfunc,0) - NVL(l_eqp_act_raw_cost_to_date_fc,0);
2417 
2418 		  l_eqpmt_etc_bur_cost_tc := NVL(l_planned_bur_cost_txn_cur,0)  -  NVL(l_eqp_act_bur_cost_to_date_tc,0);
2419 		  l_eqpmt_etc_bur_cost_fc := NVL(l_planned_bur_cost_projfunc,0) -  NVL(l_eqp_act_bur_cost_to_date_fc,0);
2420 		  l_eqpmt_etc_bur_cost_pc := NVL(l_planned_bur_cost_proj_cur ,0)-  NVL(l_eqp_act_bur_cost_to_date_pc,0);
2421 
2422 		  --bug 3968789, if planned - actual is -ve then make it 0, start
2423 		  IF l_eqpmt_etc_raw_cost_tc < 0
2424 		  THEN
2425 			l_eqpmt_etc_raw_cost_tc := 0;
2426 			l_eqpmt_etc_raw_cost_fc := 0;
2427 			l_eqpmt_etc_raw_cost_pc := 0;
2428 			l_eqpmt_etc_bur_cost_tc := 0;
2429 			l_eqpmt_etc_bur_cost_fc := 0;
2430 			l_eqpmt_etc_bur_cost_pc := 0;
2431 		  END IF;
2432 		  --bug 3968789, if planned - actual is -ve then make it 0, end
2433 	  END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2434 
2435           l_eqpmt_etc_effort := NVL(l_planned_quantity,0) - NVL(l_eqpmt_act_effort_to_date,0);
2436 	  --bug 3968789
2437 	  IF l_eqpmt_etc_effort < 0
2438 	  THEN
2439 		l_eqpmt_etc_effort := 0;
2440 	  END IF;
2441 
2442      ELSE
2443           -- ETC's are cumulative amounts
2444           IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2445 		  l_eqpmt_etc_raw_cost_tc := l_etc_txn_raw_cost;
2446 		  l_eqpmt_etc_raw_cost_fc := l_etc_projfunc_raw_cost;
2447 		  l_eqpmt_etc_raw_cost_pc := l_etc_project_raw_cost;
2448 		  -- Raw Cost Changes
2449 		  l_eqpmt_etc_bur_cost_tc := l_etc_txn_bur_cost;
2450 		  l_eqpmt_etc_bur_cost_fc := l_etc_projfunc_bur_cost;
2451 		  l_eqpmt_etc_bur_cost_pc := l_etc_project_bur_cost;
2452 	  END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2453 
2454           l_eqpmt_etc_effort := l_etc_effort_this_period;
2455      END IF;
2456 
2457     ELSIF l_resource_class_code = 'FINANCIAL_ELEMENTS' OR l_resource_class_code = 'MATERIAL_ITEMS'   --maansari7/6 bug 3742356
2458     THEN
2459      -- Actuals are incremental amounts
2460      IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2461 	     l_oth_act_raw_cost_to_date_tc := NVL(l_act_raw_cost_last_subm_tc,0) + NVL(l_act_txn_raw_cost,0);
2462 	     l_oth_act_raw_cost_to_date_fc := NVL(l_act_raw_cost_last_subm_fc,0) + NVL(l_act_projfunc_raw_cost,0);
2463 	     l_oth_act_raw_cost_to_date_pc := NVL(l_act_raw_cost_last_subm_pc,0) + NVL(l_act_project_raw_cost,0);
2464 	     -- Raw Cost Changes
2465 	     l_oth_act_bur_cost_to_date_tc := NVL(l_act_bur_cost_last_subm_tc,0) + NVL(l_act_txn_bur_cost,0);
2466 	     l_oth_act_bur_cost_to_date_fc := NVL(l_act_bur_cost_last_subm_fc,0) + NVL(l_act_projfunc_bur_cost,0);
2467 	     l_oth_act_bur_cost_to_date_pc := NVL(l_act_bur_cost_last_subm_pc,0) + NVL(l_act_project_bur_cost,0);
2468      END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2469 
2470      l_oth_quantity_to_date  := NVL(l_act_effort_last_subm,0) + NVL(l_actual_effort_this_period,0); --bug 3608801
2471 
2472 -- here we need to decide what is the correct value of actual this period
2473      if (subm_prog_exists_aod = 'Y') then
2474          l_act_txn_raw_cost := l_oth_act_raw_cost_to_date_tc - nvl(l_act_raw_cost_latest_subm_tc,0);
2475          l_act_projfunc_raw_cost := l_oth_act_raw_cost_to_date_fc - nvl(l_act_raw_cost_latest_subm_fc,0);
2476          l_act_project_raw_cost := l_oth_act_raw_cost_to_date_pc - nvl(l_act_raw_cost_latest_subm_pc,0);
2477          l_act_txn_bur_cost := l_oth_act_bur_cost_to_date_tc - nvl(l_act_bur_cost_latest_subm_tc,0);
2478          l_act_projfunc_bur_cost := l_oth_act_bur_cost_to_date_fc - nvl(l_act_bur_cost_latest_subm_fc,0);
2479          l_act_project_bur_cost := l_oth_act_bur_cost_to_date_pc - nvl(l_act_bur_cost_latest_subm_pc,0);
2480          l_actual_effort_this_period := l_oth_quantity_to_date - nvl(l_act_effort_latest_subm,0);
2481      end if;
2482 
2483         --IF (l_etc_txn_raw_cost IS NULL OR  Bug 3801745
2484         -- ( l_etc_effort_this_period IS NULL AND l_rate_based_flag = 'Y')) THEN  --bug 3779387 aded to prevent -ve ETC computation.
2485         IF l_etc_effort_this_period IS NULL THEN
2486           -- Default Etc as planned - Actual
2487           -- Since ETC is always cumulative , use to_date values of actuals to subtract from planned
2488 	  IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2489 		  l_oth_etc_raw_cost_tc := NVL(l_planned_raw_cost_txn_cur,0)  - NVL(l_oth_act_raw_cost_to_date_tc,0);
2490 		  l_oth_etc_raw_cost_fc := NVL(l_planned_raw_cost_projfunc,0) - NVL(l_oth_act_raw_cost_to_date_fc,0);
2491 		  l_oth_etc_raw_cost_pc := NVL(l_planned_raw_cost_proj_cur,0) - NVL(l_oth_act_raw_cost_to_date_pc,0);
2492 
2493 		  l_oth_etc_bur_cost_tc := NVL(l_planned_bur_cost_txn_cur,0)  - NVL(l_oth_act_bur_cost_to_date_tc,0);
2494 		  l_oth_etc_bur_cost_fc := NVL(l_planned_bur_cost_projfunc,0) - NVL(l_oth_act_bur_cost_to_date_fc,0);
2495 		  l_oth_etc_bur_cost_pc := NVL(l_planned_bur_cost_proj_cur ,0)- NVL(l_oth_act_bur_cost_to_date_pc,0);
2496 
2497 		  --bug 3968789, if planned - actual is -ve then make it 0, start
2498 		  IF l_oth_etc_raw_cost_tc < 0
2499 		  THEN
2500 			l_oth_etc_raw_cost_tc := 0;
2501 			l_oth_etc_raw_cost_fc := 0;
2502 			l_oth_etc_raw_cost_pc := 0;
2503 			l_oth_etc_bur_cost_tc := 0;
2504 			l_oth_etc_bur_cost_fc := 0;
2505 			l_oth_etc_bur_cost_pc := 0;
2506 		  END IF;
2507 		  --bug 3968789, if planned - actual is -ve then make it 0, end
2508 
2509 	  END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2510 
2511           l_oth_etc_quantity    := NVL(l_planned_quantity,0)- NVL(l_oth_quantity_to_date,0);
2512 	  --bug 3968789
2513 	  IF l_oth_etc_quantity < 0
2514 	  THEN
2515 		l_oth_etc_quantity := 0;
2519           -- ETC's are cumulative amounts
2516 	  END IF;
2517 
2518      ELSE
2520 	  IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2521 		  l_oth_etc_raw_cost_tc   := l_etc_txn_raw_cost;
2522 		  l_oth_etc_raw_cost_fc   := l_etc_projfunc_raw_cost;
2523 		  l_oth_etc_raw_cost_pc   := l_etc_project_raw_cost;
2524 		  -- Raw Cost Changes
2525 		  l_oth_etc_bur_cost_tc   := l_etc_txn_bur_cost;
2526 		  l_oth_etc_bur_cost_fc   := l_etc_projfunc_bur_cost;
2527 		  l_oth_etc_bur_cost_pc   := l_etc_project_bur_cost;
2528           END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2529 
2530    	  l_oth_etc_quantity := l_etc_effort_this_period; --bug 3608801
2531      END IF;
2532     END IF;
2533 --maansari4/28
2534     IF g1_debug_mode  = 'Y' THEN
2535        pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'calling api to push actuals ', x_Log_Level=> 3);
2536     END IF;
2537 
2538 
2539     --bug no. 3586648
2540     --IF l_structure_shared = 'N' AND (l_act_txn_cost IS NOT NULL OR l_act_effort_this_period IS NOT NULL)
2541     --bug no. 3595585 moved the call after updating progress rollup Satish start
2542     /*IF ((l_structure_sharing_code <> 'SHARE_FULL') AND (l_act_txn_cost IS NOT NULL OR l_act_effort_this_period IS NOT NULL))
2543     THEN
2544      PA_PROGRESS_PUB.push_workplan_actuals(
2545           p_project_Id                 => p_project_id,
2546           p_structure_version_id       => p_structure_version_id,
2547           p_proj_element_id            => p_task_id,
2548           p_object_id                  => p_object_id,
2549           p_object_type                => l_object_type,
2550           p_as_of_date                 => p_as_of_date,
2551           p_rbs_element_id             => l_rbs_element_id,    --maansari7/6 bug 3742356
2552           p_rate_based_flag            => l_rate_based_flag,   --maansari7/6 bug 3742356
2553           p_resource_class_code        => l_resource_class_code,  --maansari7/6 bug 3742356
2554           p_TXN_CURRENCY_CODE          =>  l_txn_currency_code, -- Fix for Bug # 3988457.
2555 					   -- p_txn_currency_code,
2556           p_act_TXN_COST_this_period   => l_act_txn_cost,
2557           p_act_PRJ_COST_this_period   => l_act_project_raw_cost,
2558           p_act_POU_COST_this_period   => l_act_projfunc_raw_cost,
2559           p_act_effort_this_period     => l_act_effort_this_period,
2560           -- BUG # 3659659.
2561 	  --p_txn_currency_code	       => l_txn_currency_code,  	* already we are passing this parameter Bug: 4537865
2562 	  p_prj_currency_code 	       => l_project_curr_code,
2563 	  p_pfn_currency_code	       => l_projfunc_curr_code,
2564 	  -- BUG # 3659659.
2565           x_return_status              => x_return_status,
2566           x_msg_count                  => x_msg_count,
2567           x_msg_data                   => x_msg_data
2568      );
2569     END IF;
2570 
2571     IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2572     THEN
2573          RAISE  FND_API.G_EXC_ERROR;
2574     END IF;*/
2575 
2576     IF (p_action='PUBLISH' AND (l_act_txn_raw_cost IS NOT NULL OR l_actual_effort_this_period IS NOT NULL
2577         OR l_etc_txn_raw_cost IS NOT NULL OR l_etc_effort_this_period IS NOT NULL)) --bug etc was not getting pushed to PJI due to this statement.
2578     THEN
2579      -- Raw Cost Changes : Added Burden parameters
2580      PA_PROGRESS_UTILS.get_last_etc_all(
2581                                         p_project_id                => p_project_id
2582                                        ,p_object_id                 => p_object_id
2583                                        ,p_object_type               => l_object_type
2584                                        ,p_as_of_date                => p_as_of_date
2585                                        ,p_structure_type        => 'WORKPLAN'
2586                            ,x_etc_txn_raw_cost_last_subm => l_etc_txn_raw_cost_last
2587                            ,x_etc_prj_raw_cost_last_subm => l_etc_prj_raw_cost_last
2588                            ,x_etc_pfc_raw_cost_last_subm => l_etc_pfc_raw_cost_last
2589                            ,x_etc_effort_last_subm       => l_etc_effort_last
2590                            ,x_etc_txn_bur_cost_last_subm => l_etc_txn_bur_cost_last
2591                            ,x_etc_prj_bur_cost_last_subm => l_etc_prj_bur_cost_last
2592                            ,x_etc_pfc_bur_cost_last_subm => l_etc_pfc_bur_cost_last
2593                            ,x_return_status           => x_return_status
2594                            ,x_msg_count          => x_msg_count
2595                            ,x_msg_data           => x_msg_data
2596 			   ,p_proj_element_id    => p_task_id   --bug# 3764224 Added for RLM
2597 			   ,p_resource_class_code => l_resource_class_code -- Bug 3836485
2598 			   ,p_cbs_element_id		=> l_cbs_element_id -- Added for Bug16200605
2599                                          );
2600 
2601      IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2602         THEN
2603             RAISE  FND_API.G_EXC_ERROR;
2604         END IF;
2605      --BUG 3630743 (If No progress exists default ETC this period as etc - planned)
2606 --     OPEN c_if_progress_exists(l_assignment_id , l_project_id , l_structure_version_id );  --bug# 3764224 Changes for RLM
2607 
2608      IF g1_debug_mode  = 'Y' THEN
2609 	pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_effort_last ='||l_etc_effort_last, x_Log_Level=> 3);
2610 	pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_raw_cost_last ='||l_etc_txn_raw_cost_last, x_Log_Level=> 3);
2611 	pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_bur_cost_last ='||l_etc_txn_bur_cost_last, x_Log_Level=> 3);
2612      END IF;
2613 
2614      --bug# 3814545 Satish
2615      OPEN c_if_progress_exists(l_resource_list_member_id , p_project_id , l_structure_version_id , l_cbs_element_id);
2616      FETCH c_if_progress_exists INTO l_progress_exists;
2620 	pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Checking the cursor l_progress_exists='||l_progress_exists, x_Log_Level=> 3);
2617      CLOSE c_if_progress_exists;
2618 
2619      IF g1_debug_mode  = 'Y' THEN
2621      END IF;
2622 
2623 --     IF c_if_progress_exists%NOTFOUND THEN
2624        IF nvl(l_progress_exists, 'N')='N'  THEN
2625 
2626 	    -- Bug 3696572 , we shd not be using l_etc_txn_raw_cost varables instead we shd sum up individual buckets
2627 	    -- this is because l_etc_txn_raw_cost will be null if not passed from UI, in this case
2628 	    -- up in the code we default individual etc buckets, we shd use them
2629             /*l_etc_txn_raw_cost_this_period := NVL(l_etc_txn_raw_cost,0) - NVL(l_planned_raw_cost_txn_cur,0);
2630             l_etc_prj_raw_cost_this_period := NVL(l_etc_project_raw_cost,0) - NVL(l_planned_raw_cost_proj_cur,0);
2631             l_etc_pfc_raw_cost_this_period := NVL(l_etc_projfunc_raw_cost,0) - NVL(l_planned_raw_cost_projfunc,0);
2632             l_etc_txn_bur_cost_this_period := NVL(l_etc_txn_bur_cost,0) - NVL(l_planned_bur_cost_txn_cur,0);
2633 	    l_etc_prj_bur_cost_this_period := NVL(l_etc_project_bur_cost,0) - NVL(l_planned_bur_cost_projfunc,0);
2634             l_etc_pfc_bur_cost_this_period := NVL(l_etc_projfunc_bur_cost ,0)- NVL(l_planned_bur_cost_proj_cur,0);
2635             l_etc_effort_incr              := NVL(l_etc_effort_this_period,0) - NVL(l_planned_quantity,0);
2636 	    */
2637 	    IF g1_debug_mode  = 'Y' THEN
2638 		  pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Progress does not exist', x_Log_Level=> 3);
2639 	    END IF;
2640 	    IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2641 		    l_etc_txn_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_tc,0) + NVL(l_eqpmt_etc_raw_cost_tc,0) + NVL(l_oth_etc_raw_cost_tc,0) - NVL(l_planned_raw_cost_txn_cur,0);
2642 		    l_etc_prj_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_pc,0) + NVL(l_eqpmt_etc_raw_cost_pc,0) + NVL(l_oth_etc_raw_cost_pc,0) - NVL(l_planned_raw_cost_proj_cur,0);
2643 		    l_etc_pfc_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_fc,0) + NVL(l_eqpmt_etc_raw_cost_fc,0) + NVL(l_oth_etc_raw_cost_fc,0) - NVL(l_planned_raw_cost_projfunc,0);
2644 		    l_etc_txn_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_tc,0) + NVL(l_eqpmt_etc_bur_cost_tc,0) + NVL(l_oth_etc_bur_cost_tc,0) - NVL(l_planned_bur_cost_txn_cur,0);
2645 		    l_etc_prj_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_pc,0) + NVL(l_eqpmt_etc_bur_cost_pc,0) + NVL(l_oth_etc_bur_cost_pc,0) - NVL(l_planned_bur_cost_projfunc,0);
2646 		    l_etc_pfc_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_fc,0) + NVL(l_eqpmt_etc_bur_cost_fc,0) + NVL(l_oth_etc_bur_cost_fc,0) - NVL(l_planned_bur_cost_proj_cur,0);
2647 	    END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2648             l_etc_effort_incr              := NVL(l_ppl_etc_effort,0) + NVL(l_eqpmt_etc_effort,0) + NVL(l_oth_etc_quantity,0) - NVL(l_planned_quantity,0);
2649      ELSE
2650           /*l_etc_txn_raw_cost_this_period := NVL(l_etc_txn_raw_cost,0) - NVL(l_etc_txn_raw_cost_last,0);
2651           l_etc_prj_raw_cost_this_period := NVL(l_etc_project_raw_cost,0) - NVL(l_etc_prj_raw_cost_last,0);
2652           l_etc_pfc_raw_cost_this_period := NVL(l_etc_projfunc_raw_cost,0) - NVL(l_etc_pfc_raw_cost_last,0);
2653           l_etc_txn_bur_cost_this_period := NVL(l_etc_txn_bur_cost,0) - NVL(l_etc_txn_bur_cost_last,0);
2654           l_etc_prj_bur_cost_this_period := NVL(l_etc_project_bur_cost,0) - NVL(l_etc_prj_bur_cost_last,0);
2655           l_etc_pfc_bur_cost_this_period := NVL(l_etc_projfunc_bur_cost,0) - NVL(l_etc_pfc_bur_cost_last,0);
2656           l_etc_effort_incr              := NVL(l_etc_effort_this_period,0) - NVL(l_etc_effort_last,0);
2657 	  */
2658 	  IF g1_debug_mode  = 'Y' THEN
2659 	      pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'Progress  exists', x_Log_Level=> 3);
2660 	  END IF;
2661           IF NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2662            -- 3818384 (etc = current_etc - nvl(last etc, (planned - last act))
2663           if (l_planned_raw_cost_txn_cur >= l_act_raw_cost_last_subm_tc) then
2664              l_etc_txn_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_tc,0) + NVL(l_eqpmt_etc_raw_cost_tc,0) + NVL(l_oth_etc_raw_cost_tc,0) - NVL(l_etc_txn_raw_cost_last,nvl(l_planned_raw_cost_txn_cur,0)-nvl(l_act_raw_cost_last_subm_tc,0));
2665           else
2666              l_etc_txn_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_tc,0) + NVL(l_eqpmt_etc_raw_cost_tc,0) + NVL(l_oth_etc_raw_cost_tc,0) - NVL(l_etc_txn_raw_cost_last,0);
2667           end if;
2668           if (l_planned_raw_cost_proj_cur >= l_act_raw_cost_last_subm_pc) then
2669              l_etc_prj_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_pc,0) + NVL(l_eqpmt_etc_raw_cost_pc,0) + NVL(l_oth_etc_raw_cost_pc,0) - NVL(l_etc_prj_raw_cost_last,nvl(l_planned_raw_cost_proj_cur,0)-nvl(l_act_raw_cost_last_subm_pc,0));
2670           else
2671              l_etc_prj_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_pc,0) + NVL(l_eqpmt_etc_raw_cost_pc,0) + NVL(l_oth_etc_raw_cost_pc,0) - NVL(l_etc_prj_raw_cost_last,0);
2672           end if;
2673           if (l_planned_raw_cost_projfunc >= l_act_raw_cost_last_subm_fc) then
2674              l_etc_pfc_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_fc,0) + NVL(l_eqpmt_etc_raw_cost_fc,0) + NVL(l_oth_etc_raw_cost_fc,0) - NVL(l_etc_pfc_raw_cost_last,nvl(l_planned_raw_cost_projfunc,0)-nvl(l_act_raw_cost_last_subm_fc,0));
2675           else
2676              l_etc_pfc_raw_cost_this_period := NVL(l_ppl_etc_raw_cost_fc,0) + NVL(l_eqpmt_etc_raw_cost_fc,0) + NVL(l_oth_etc_raw_cost_fc,0) - NVL(l_etc_pfc_raw_cost_last,0);
2677           end if;
2678           if (l_planned_bur_cost_txn_cur >= l_act_bur_cost_last_subm_tc) then
2679              l_etc_txn_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_tc,0) + NVL(l_eqpmt_etc_bur_cost_tc,0) + NVL(l_oth_etc_bur_cost_tc,0) - NVL(l_etc_txn_bur_cost_last,nvl(l_planned_bur_cost_txn_cur,0)-nvl(l_act_bur_cost_last_subm_tc,0));
2680           else
2681              l_etc_txn_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_tc,0) + NVL(l_eqpmt_etc_bur_cost_tc,0) + NVL(l_oth_etc_bur_cost_tc,0) - NVL(l_etc_txn_bur_cost_last,0);
2682           end if;
2683           if (l_planned_bur_cost_proj_cur >= l_act_bur_cost_last_subm_pc) then
2687           end if;
2684              l_etc_prj_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_pc,0) + NVL(l_eqpmt_etc_bur_cost_pc,0) + NVL(l_oth_etc_bur_cost_pc,0) - NVL(l_etc_prj_bur_cost_last,nvl(l_planned_bur_cost_proj_cur,0)-nvl(l_act_bur_cost_last_subm_pc,0));
2685           else
2686              l_etc_prj_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_pc,0) + NVL(l_eqpmt_etc_bur_cost_pc,0) + NVL(l_oth_etc_bur_cost_pc,0) - NVL(l_etc_prj_bur_cost_last,0);
2688           if (l_planned_bur_cost_projfunc >= l_act_bur_cost_last_subm_fc) then
2689              l_etc_pfc_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_fc,0) + NVL(l_eqpmt_etc_bur_cost_fc,0) + NVL(l_oth_etc_bur_cost_fc,0) - NVL(l_etc_pfc_bur_cost_last,nvl(l_planned_bur_cost_projfunc,0)-nvl(l_act_bur_cost_last_subm_fc,0));
2690           else
2691              l_etc_pfc_bur_cost_this_period := NVL(l_ppl_etc_bur_cost_fc,0) + NVL(l_eqpmt_etc_bur_cost_fc,0) + NVL(l_oth_etc_bur_cost_fc,0) - NVL(l_etc_pfc_bur_cost_last,0);
2692           end if;
2693           END IF;-- NVL(l_track_wp_cost_flag, 'Y') = 'Y' THEN -- Bug 3801745
2694           if (l_planned_quantity >= l_act_effort_last_subm) then
2695              l_etc_effort_incr              := NVL(l_ppl_etc_effort,0) + NVL(l_eqpmt_etc_effort,0) + NVL(l_oth_etc_quantity,0) - NVL(l_etc_effort_last,nvl(l_planned_quantity,0)-nvl(l_act_effort_last_subm,0));
2696           else
2697              l_etc_effort_incr              := NVL(l_ppl_etc_effort,0) + NVL(l_eqpmt_etc_effort,0) + NVL(l_oth_etc_quantity,0) - NVL(l_etc_effort_last,0);
2698           end if;
2699      END IF;
2700 
2701 --     CLOSE c_if_progress_exists;
2702 
2703      IF g1_debug_mode  = 'Y' THEN
2704 	      pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_raw_cost_this_period '||l_etc_txn_raw_cost_this_period, x_Log_Level=> 3);
2705 	      pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_txn_bur_cost_this_period '||l_etc_txn_bur_cost_this_period, x_Log_Level=> 3);
2706 	      pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_etc_effort_incr '||l_etc_effort_incr, x_Log_Level=> 3);
2707      END IF;
2708 
2709      -- Raw Cost Changes : Modified  push_workplan actuals call
2710 	 --DEBUG_DJ('**********PA_PROGRESS_PUB.push_workplan_actuals');
2711      PA_PROGRESS_PUB.push_workplan_actuals(
2712           p_project_Id                 => p_project_id,
2713           p_structure_version_id       => p_structure_version_id,
2714           p_proj_element_id            => p_task_id,
2715           p_object_id                  => p_object_id,
2716           p_object_type                => l_object_type,
2717           p_as_of_date                 => p_as_of_date,
2718           p_resource_assignment_id     => l_assignment_id, -- Bug 4186007
2719           p_resource_list_member_id    => l_resource_list_member_id, -- Bug 4186007
2720           p_rbs_element_id             => l_rbs_element_id,               --maansari7/6 bug 3742356
2721           p_rate_based_flag            => l_rate_based_flag,              --maansari7/6 bug 3742356
2722           p_resource_class_code        => l_resource_class_code,          --maansari7/6 bug 3742356
2723           p_act_TXN_COST_this_period   => l_act_txn_bur_cost,
2724           p_act_PRJ_COST_this_period   => l_act_project_bur_cost,
2725           p_act_POU_COST_this_period   => l_act_projfunc_bur_cost,
2726           p_act_effort_this_period     => l_actual_effort_this_period,
2727                 p_etc_TXN_COST_this_period   => l_etc_txn_bur_cost_this_period,
2728                 p_etc_PRJ_COST_this_period   => l_etc_prj_bur_cost_this_period,
2729                 p_etc_POU_COST_this_period   => l_etc_pfc_bur_cost_this_period,
2730                 p_etc_effort_this_period     => l_etc_effort_incr,
2731                 p_act_TXN_raw_COST_this_period => l_act_txn_raw_cost,
2732                 p_act_PRJ_raw_COST_this_period => l_act_project_raw_cost,
2733                 p_act_POU_raw_COST_this_period => l_act_projfunc_raw_cost,
2734                 p_etc_TXN_raw_COST_this_period => l_etc_txn_raw_cost_this_period,
2735                 p_etc_PRJ_raw_COST_this_period => l_etc_prj_raw_cost_this_period,
2736                 p_etc_POU_raw_COST_this_period => l_etc_pfc_raw_cost_this_period,
2737 	  -- BUG # 3659659.
2738           p_txn_currency_code          => l_txn_currency_code,
2739           p_prj_currency_code          => l_project_curr_code,
2740           p_pfn_currency_code          => l_projfunc_curr_code,
2741 	  -- BUG # 3659659.
2742       --bug 3675107
2743           p_pa_period_name             => l_prog_pa_period_name,
2744           p_gl_period_name             => l_prog_gl_period_name,
2745       --bug 3675107
2746           x_return_status              => x_return_status,
2747           x_msg_count                  => x_msg_count,
2748           x_msg_data                   => x_msg_data
2749 		  ,p_cbs_element_id		=> l_cbs_element_id -- Added for Bug16200605
2750      );
2751 
2752      IF x_return_status <> FND_API.G_RET_STS_SUCCESS
2753         THEN
2754             RAISE  FND_API.G_EXC_ERROR;
2755         END IF;
2756 
2757     END IF;
2758     --bug no. 3595585 Satish end
2759 
2760    --bug 4341100, start
2761     IF  l_etc_effort_this_period is null
2762     THEN
2763 	    IF l_resource_class_code = 'PEOPLE'
2764 	    THEN
2765 		  l_etc_effort_this_period  := l_ppl_etc_effort;
2766 	    ELSIF l_resource_class_code = 'EQUIPMENT'
2767 	    THEN
2768 		  l_etc_effort_this_period := l_eqpmt_etc_effort;
2769 	    ELSIF l_resource_class_code = 'FINANCIAL_ELEMENTS' OR l_resource_class_code = 'MATERIAL_ITEMS'
2770 	    THEN
2771 		   l_etc_effort_this_period := l_oth_etc_quantity;
2772 	    END IF;
2773     END IF;
2774 
2775    IF ((l_etc_effort_this_period = 0 OR l_etc_effort_this_period is null) AND l_actual_finish_date is null) -- Bug 3956299
2776     THEN
2777         -- Bug 3956299 : We can default actual finish date in this case from scheduled_finish_date
2778 	l_actual_finish_date := l_scheduled_finish_date;
2779 	IF l_actual_finish_date is null THEN
2783 	       x_msg_data := 'PA_TP_ASSG_NTER_FIN_DATE';
2780 		--You have to pass actual finish date if etc is 0
2781 		PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2782 				     ,p_msg_name       => 'PA_TP_ASSG_NTER_FIN_DATE');
2784 	       x_return_status := 'E';
2785 	       RAISE  FND_API.G_EXC_ERROR;
2786 	END IF;
2787     END IF;
2788    --bug 4341100, end
2789 
2790     IF l_etc_effort_this_period  IS NOT NULL AND l_etc_effort_this_period > 0
2791     THEN
2792        l_actual_finish_date := null;
2793     END IF; --Bug 8887270
2794 
2795 --DEBUG_DJ('l_db_action ::'||l_db_action);
2796     IF l_db_action = 'CREATE'
2797     THEN
2798        /* FPM Dev CR 3
2799        IF p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2800         THEN
2801             l_percent_complete_id := null;
2802         ELSE
2803             l_percent_complete_id := p_percent_complete_id;
2804         END IF;
2805      */
2806         l_percent_complete_id := null;
2807 
2808 
2809         PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
2810                       p_TASK_ID                  => l_task_id
2811                       ,p_DATE_COMPUTED           => p_as_of_date
2812                       ,p_LAST_UPDATE_DATE        => SYSDATE
2813                       ,p_LAST_UPDATED_BY         => l_user_id
2814                       ,p_CREATION_DATE           => SYSDATE
2815                       ,p_CREATED_BY              => l_user_id
2816                       ,p_LAST_UPDATE_LOGIN       => l_login_id
2817                 ,p_COMPLETED_PERCENTAGE    => l_percent_complete
2818                       ,p_DESCRIPTION             => l_brief_overview
2819                       ,p_PROJECT_ID              => p_project_id
2820                       ,p_PM_PRODUCT_CODE         => l_pm_product_code
2821                       ,p_CURRENT_FLAG            => l_current_flag
2822                       ,p_OBJECT_TYPE             => l_object_type
2823                       --,p_OBJECT_ID               => l_assignment_id     --bug# 3764224 Changes for RLM
2824                       ,p_OBJECT_ID               => l_resource_list_member_id
2825                 ,p_OBJECT_VERSION_ID       => l_object_version_id
2826                 ,p_PROGRESS_STATUS_CODE    => l_progress_status_code
2827                       ,p_ACTUAL_START_DATE       => l_actual_start_date
2828                       ,p_ACTUAL_FINISH_DATE      => l_actual_finish_date
2829                       ,p_ESTIMATED_START_DATE    => l_estimated_start_date
2830                       ,p_ESTIMATED_FINISH_DATE   => l_estimated_finish_date
2831                       ,p_PUBLISHED_FLAG          => l_published_flag
2832                       ,p_PUBLISHED_BY_PARTY_ID   => l_published_by_party_id
2833                       ,p_PROGRESS_COMMENT        => l_progress_comment
2834                       ,p_HISTORY_FLAG            => 'N'
2835                 ,p_status_code             => l_task_status
2836                       ,x_PERCENT_COMPLETE_ID     => l_percent_complete_id
2837                       ,p_ATTRIBUTE_CATEGORY      => null
2838                       ,p_ATTRIBUTE1              => null
2839                       ,p_ATTRIBUTE2              => null
2840                       ,p_ATTRIBUTE3              => null
2841                       ,p_ATTRIBUTE4              => null
2842                       ,p_ATTRIBUTE5              => null
2843                       ,p_ATTRIBUTE6              => null
2844                       ,p_ATTRIBUTE7              => null
2845                       ,p_ATTRIBUTE8              => null
2846                       ,p_ATTRIBUTE9              => null
2847                       ,p_ATTRIBUTE10             => null
2848                       ,p_ATTRIBUTE11             => null
2849                       ,p_ATTRIBUTE12             => null
2850                       ,p_ATTRIBUTE13             => null
2851                       ,p_ATTRIBUTE14             => null
2852                       ,p_ATTRIBUTE15             => null
2853                 ,p_structure_type        => p_structure_type
2854 				,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
2855         );
2856 
2857           IF Fnd_Msg_Pub.count_msg > 0 THEN -- FPM Dev CR 8
2858                RAISE  FND_API.G_EXC_ERROR;
2859           END IF;
2860 
2861         l_PROGRESS_ROLLUP_ID := null;
2862         --Create record in progress rollup
2863 
2864         IF g1_debug_mode  = 'Y' THEN
2865             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'INSERTED IN PPC', x_Log_Level=> 3);
2866         END IF;
2867 
2868 		--DEBUG_DJ('Calling PA_PROGRESS_UTILS.get_prog_rollup_id 2966');
2869         l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
2870                                    p_project_id             => p_project_id
2871                                   --,p_object_id            => l_assignment_id  --bug# 3764224 Changes for RLM
2872                                   ,p_object_id              => l_resource_list_member_id
2873                                   ,p_object_type	    => l_object_type
2874                                   ,p_object_version_id      => l_object_version_id
2875                                   ,p_as_of_date             => p_as_of_date
2876 				  ,p_structure_version_id   => l_structure_version_id
2877 				  ,p_action                 => p_action -- Bug 3879461
2878                                   ,x_record_version_number  => l_rollup_rec_ver_number
2879 				  ,p_proj_element_id        => p_task_id   --bug# 3764224 Added for RLM
2880 				  ,p_cbs_element_id     => l_cbs_element_id --Added for 16200605
2881                                 );
2882           IF Fnd_Msg_Pub.count_msg > 0 THEN
2883                RAISE  FND_API.G_EXC_ERROR;
2884           END IF;
2885 
2886 
2887         IF g1_debug_mode  = 'Y' THEN
2888             pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID '||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
2892         IF l_PROGRESS_ROLLUP_ID IS NULL
2889         END IF;
2890 
2891 
2893         THEN
2894             IF g1_debug_mode  = 'Y' THEN
2895                pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'INSERTING IN PPR', x_Log_Level=> 3);
2896             END IF;
2897 
2898             PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
2899                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
2900                       ,X_PROJECT_ID                      => p_project_id
2901                       --,X_OBJECT_ID                       => l_assignment_id    --bug# 3764224 Changes for RLM
2902                       ,X_OBJECT_ID                       => l_resource_list_member_id
2903                       ,X_OBJECT_TYPE                     => l_object_type
2904                       ,X_AS_OF_DATE                      => p_as_of_date
2905 		,X_OBJECT_VERSION_ID          => l_object_version_id
2906                       ,X_LAST_UPDATE_DATE                => SYSDATE
2907                       ,X_LAST_UPDATED_BY                 => l_user_id
2908                       ,X_CREATION_DATE                   => SYSDATE
2909                       ,X_CREATED_BY                      => l_user_id
2910                 ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
2911                       ,X_LAST_UPDATE_LOGIN               => l_login_id
2912                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
2913                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
2914                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
2915                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
2916                       ,X_COMPLETED_PERCENTAGE            => l_rollup_completed_percentage
2917                       ,X_ESTIMATED_START_DATE            => l_estimated_start_date
2918                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
2919                       ,X_ACTUAL_START_DATE               => l_actual_start_date
2920                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
2921                       ,X_EST_REMAINING_EFFORT            => l_ppl_etc_effort
2922                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
2923                       ,X_BASE_PROGRESS_STATUS_CODE       => l_date_override_flag -- 4533112 l_BASE_PROGRESS_STATUS_CODE
2924                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
2925                 ,x_percent_complete_id             => l_percent_complete_id
2926                 ,X_STRUCTURE_TYPE                  => p_structure_type
2927                 ,X_PROJ_ELEMENT_ID                 => p_task_id
2928                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
2929                       ,X_PPL_ACT_EFFORT_TO_DATE          => l_ppl_act_effort_to_date
2930                       ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_eqpmt_act_effort_to_date
2931                       ,X_EQPMT_ETC_EFFORT                => l_eqpmt_etc_effort
2932                       ,X_OTH_ACT_COST_TO_DATE_TC   => l_oth_act_bur_cost_to_date_tc
2933                       ,X_OTH_ACT_COST_TO_DATE_FC   => l_oth_act_bur_cost_to_date_fc
2934                       ,X_OTH_ACT_COST_TO_DATE_PC   => l_oth_act_bur_cost_to_date_pc
2935                       ,X_OTH_ETC_COST_TC                 => l_oth_etc_bur_cost_tc
2936                       ,X_OTH_ETC_COST_FC                 => l_oth_etc_bur_cost_fc
2937                       ,X_OTH_ETC_COST_PC                 => l_oth_etc_bur_cost_pc
2938                       ,X_PPL_ACT_COST_TO_DATE_TC   => l_ppl_act_bur_cost_to_date_tc
2939                       ,X_PPL_ACT_COST_TO_DATE_FC   => l_ppl_act_bur_cost_to_date_fc
2940                       ,X_PPL_ACT_COST_TO_DATE_PC   => l_ppl_act_bur_cost_to_date_pc
2941                       ,X_PPL_ETC_COST_TC                 => l_ppl_etc_bur_cost_tc
2942                       ,X_PPL_ETC_COST_FC                 => l_ppl_etc_bur_cost_fc
2943                       ,X_PPL_ETC_COST_PC                 => l_ppl_etc_bur_cost_pc
2944                       ,X_EQPMT_ACT_COST_TO_DATE_TC      => l_eqp_act_bur_cost_to_date_tc
2945                       ,X_EQPMT_ACT_COST_TO_DATE_FC      => l_eqp_act_bur_cost_to_date_fc
2946                       ,X_EQPMT_ACT_COST_TO_DATE_PC      => l_eqp_act_bur_cost_to_date_pc
2947                       ,X_EQPMT_ETC_COST_TC               => l_eqpmt_etc_bur_cost_tc
2948                       ,X_EQPMT_ETC_COST_FC               => l_eqpmt_etc_bur_cost_fc
2949                       ,X_EQPMT_ETC_COST_PC               => l_eqpmt_etc_bur_cost_pc
2950                       ,X_EARNED_VALUE                    => null
2951                       ,X_TASK_WT_BASIS_CODE              => null
2952                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
2953                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
2954                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
2955                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
2956                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
2957                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
2958                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
2959                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
2960                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
2961                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
2962                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
2963                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
2964                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
2965                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
2966                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
2967                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
2968                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
2969                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
2970                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
2971                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
2975                 ,X_CURRENT_FLAG               => l_rollup_current_flag -- Bug 3879461 l_current_flag
2972                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
2973                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
2974                 ,X_SUBPRJ_EARNED_VALUE             => null
2976                 ,X_PROJFUNC_COST_RATE_TYPE         => l_projfunc_cost_rate_type
2977                 ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_projfunc_cost_exch_rate
2978                 ,X_PROJFUNC_COST_RATE_DATE         => l_projfunc_cost_rate_date
2979                 ,X_PROJ_COST_RATE_TYPE             => l_project_rate_type
2980                 ,X_PROJ_COST_EXCHANGE_RATE         => l_project_exch_rate
2981                 ,X_PROJ_COST_RATE_DATE             => l_project_rate_date
2982                 ,X_TXN_CURRENCY_CODE          =>  l_txn_currency_code -- Fix for Bug # 3988457.
2983 						  -- p_txn_currency_code    --maansari4/30
2984                 ,X_PROG_PA_PERIOD_NAME        => l_prog_pa_period_name
2985                 ,X_PROG_GL_PERIOD_NAME        => l_prog_gl_period_name
2986                 --bug 3608801
2987                 ,X_OTH_QUANTITY_TO_DATE            => l_oth_quantity_to_date  -- bug no.3608801
2988                      ,X_OTH_ETC_QUANTITY                => l_oth_etc_quantity
2989                 --bug 3608801
2990                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC     => l_oth_act_raw_cost_to_date_tc
2991                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC     => l_oth_act_raw_cost_to_date_fc
2992                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC     => l_oth_act_raw_cost_to_date_pc
2993                       ,X_OTH_ETC_RAWCOST_TC        => l_oth_etc_raw_cost_tc
2994                       ,X_OTH_ETC_RAWCOST_FC        => l_oth_etc_raw_cost_fc
2995                       ,X_OTH_ETC_RAWCOST_PC        => l_oth_etc_raw_cost_pc
2996                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC     => l_ppl_act_raw_cost_to_date_tc
2997                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC     => l_ppl_act_raw_cost_to_date_fc
2998                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC     => l_ppl_act_raw_cost_to_date_pc
2999                       ,X_PPL_ETC_RAWCOST_TC        => l_ppl_etc_raw_cost_tc
3000                       ,X_PPL_ETC_RAWCOST_FC        => l_ppl_etc_raw_cost_fc
3001                       ,X_PPL_ETC_RAWCOST_PC        => l_ppl_etc_raw_cost_pc
3002                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC   => l_eqp_act_raw_cost_to_date_tc
3003                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC   => l_eqp_act_raw_cost_to_date_fc
3004                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC   => l_eqp_act_raw_cost_to_date_pc
3005                       ,X_EQPMT_ETC_RAWCOST_TC           => l_eqpmt_etc_raw_cost_tc
3006                       ,X_EQPMT_ETC_RAWCOST_FC           => l_eqpmt_etc_raw_cost_fc
3007                       ,X_EQPMT_ETC_RAWCOST_PC           => l_eqpmt_etc_raw_cost_pc
3008                       ,X_SP_OTH_ACT_RAWCOST_TODATE_TC   => null
3009                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC   => null
3010                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC   => null
3011                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC      => null
3012                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC      => null
3013                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC      => null
3014                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC    => null
3015                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC    => null
3016                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC    => null
3017                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC      => null
3018                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC      => null
3019                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC      => null
3020                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC      => null
3021                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC      => null
3022                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC      => null
3023                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC    => null
3024                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC    => null
3025                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC    => null
3026 					  ,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
3027             );
3028 
3029           IF Fnd_Msg_Pub.count_msg > 0 THEN
3030                RAISE  FND_API.G_EXC_ERROR;
3031           END IF;
3032 
3033             IF g1_debug_mode  = 'Y' THEN
3034                  pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'INSERTED IN PPR', x_Log_Level=> 3);
3035             END IF;
3036 
3037         ELSE
3038             --update progress rollup
3039          --This case is not possible for Assignments but the code has been kept.
3040             IF g1_debug_mode  = 'Y' THEN
3041                  pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'UPDATING PPR', x_Log_Level=> 3);
3042             END IF;
3043 
3044             PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
3045                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
3046                       ,X_PROJECT_ID                      => p_project_id
3047                       --,X_OBJECT_ID                       => l_assignment_id  --bug# 3764224 Changes for RLM
3048                       ,X_OBJECT_ID                       => l_resource_list_member_id
3049                       ,X_OBJECT_TYPE                     => l_object_type
3050                       ,X_AS_OF_DATE                      => p_as_of_date
3051                 ,X_OBJECT_VERSION_ID          => l_object_version_id
3052                       ,X_LAST_UPDATE_DATE                => SYSDATE
3053                       ,X_LAST_UPDATED_BY                 => l_user_id
3054                 ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
3055                       ,X_LAST_UPDATE_LOGIN               => l_login_id
3056                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
3057                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
3058                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
3062                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
3059                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
3060                       ,X_COMPLETED_PERCENTAGE            => l_rollup_completed_percentage
3061                 ,X_ESTIMATED_START_DATE            => l_estimated_start_date
3063                       ,X_ACTUAL_START_DATE               => l_actual_start_date
3064                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
3065                       ,X_EST_REMAINING_EFFORT            => l_ppl_etc_effort  -- need to populate the buckets
3066                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
3067                       ,X_BASE_PROGRESS_STATUS_CODE       => l_date_override_flag -- 4533112 l_BASE_PROGRESS_STATUS_CODE
3068                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
3069                 ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
3070                       ,x_percent_complete_id             => l_percent_complete_id
3071                       ,X_STRUCTURE_TYPE                  => p_structure_type
3072                       ,X_PROJ_ELEMENT_ID                 => p_task_id
3073                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
3074                       ,X_PPL_ACT_EFFORT_TO_DATE         => l_ppl_act_effort_to_date
3075                       ,X_EQPMT_ACT_EFFORT_TO_DATE  => l_eqpmt_act_effort_to_date
3076                       ,X_EQPMT_ETC_EFFORT                => l_eqpmt_etc_effort
3077                       ,X_OTH_ACT_COST_TO_DATE_TC   => l_oth_act_bur_cost_to_date_tc
3078                       ,X_OTH_ACT_COST_TO_DATE_FC   => l_oth_act_bur_cost_to_date_fc
3079                       ,X_OTH_ACT_COST_TO_DATE_PC   => l_oth_act_bur_cost_to_date_pc
3080                       ,X_OTH_ETC_COST_TC                 => l_oth_etc_bur_cost_tc
3081                       ,X_OTH_ETC_COST_FC                 => l_oth_etc_bur_cost_fc
3082                       ,X_OTH_ETC_COST_PC                 => l_oth_etc_bur_cost_pc
3083                       ,X_PPL_ACT_COST_TO_DATE_TC   => l_ppl_act_bur_cost_to_date_tc
3084                       ,X_PPL_ACT_COST_TO_DATE_FC   => l_ppl_act_bur_cost_to_date_fc
3085                       ,X_PPL_ACT_COST_TO_DATE_PC   => l_ppl_act_bur_cost_to_date_pc
3086                       ,X_PPL_ETC_COST_TC                 => l_ppl_etc_bur_cost_tc
3087                       ,X_PPL_ETC_COST_FC                 => l_ppl_etc_bur_cost_fc
3088                       ,X_PPL_ETC_COST_PC                 => l_ppl_etc_bur_cost_pc
3089                       ,X_EQPMT_ACT_COST_TO_DATE_TC      => l_eqp_act_bur_cost_to_date_tc
3090                       ,X_EQPMT_ACT_COST_TO_DATE_FC      => l_eqp_act_bur_cost_to_date_fc
3091                       ,X_EQPMT_ACT_COST_TO_DATE_PC      => l_eqp_act_bur_cost_to_date_pc
3092                       ,X_EQPMT_ETC_COST_TC               => l_eqpmt_etc_bur_cost_tc
3093                       ,X_EQPMT_ETC_COST_FC               => l_eqpmt_etc_bur_cost_fc
3094                       ,X_EQPMT_ETC_COST_PC               => l_eqpmt_etc_bur_cost_pc
3095                       ,X_EARNED_VALUE                    => null
3096                       ,X_TASK_WT_BASIS_CODE              => null
3097                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
3098                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
3099                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
3100                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
3101                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
3102                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
3103                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
3104                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
3105                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
3106                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
3107                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
3108                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
3109                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
3110                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
3111                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
3112                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
3113                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
3114                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
3115                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
3116                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
3117                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
3118                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
3119                       ,X_SUBPRJ_EARNED_VALUE             => null
3120                 ,X_CURRENT_FLAG               => l_rollup_current_flag -- Bug 3879461 l_current_flag
3121                 ,X_PROJFUNC_COST_RATE_TYPE         => l_projfunc_cost_rate_type
3122                 ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_projfunc_cost_exch_rate
3123                 ,X_PROJFUNC_COST_RATE_DATE         => l_projfunc_cost_rate_date
3124                 ,X_PROJ_COST_RATE_TYPE             => l_project_rate_type
3125                 ,X_PROJ_COST_EXCHANGE_RATE         => l_project_exch_rate
3126                 ,X_PROJ_COST_RATE_DATE             => l_project_rate_date
3127                 ,X_TXN_CURRENCY_CODE             =>  l_txn_currency_code -- Fix for Bug # 3988457.
3128 						     -- p_txn_currency_code    --maansari4/30
3129                 ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
3130                 ,X_PROG_GL_PERIOD_NAME        => l_prog_gl_period_name
3131                 --bug 3608801
3132                       ,X_OTH_QUANTITY_TO_DATE            => l_oth_quantity_to_date -- bug no.3608801
3133                       ,X_OTH_ETC_QUANTITY                => l_oth_etc_quantity
3134                 --bug 3608801
3135                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC     => l_oth_act_raw_cost_to_date_tc
3136                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC     => l_oth_act_raw_cost_to_date_fc
3140                       ,X_OTH_ETC_RAWCOST_PC        => l_oth_etc_raw_cost_pc
3137                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC     => l_oth_act_raw_cost_to_date_pc
3138                       ,X_OTH_ETC_RAWCOST_TC        => l_oth_etc_raw_cost_tc
3139                       ,X_OTH_ETC_RAWCOST_FC        => l_oth_etc_raw_cost_fc
3141                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC     => l_ppl_act_raw_cost_to_date_tc
3142                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC     => l_ppl_act_raw_cost_to_date_fc
3143                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC     => l_ppl_act_raw_cost_to_date_pc
3144                       ,X_PPL_ETC_RAWCOST_TC        => l_ppl_etc_raw_cost_tc
3145                       ,X_PPL_ETC_RAWCOST_FC        => l_ppl_etc_raw_cost_fc
3146                       ,X_PPL_ETC_RAWCOST_PC        => l_ppl_etc_raw_cost_pc
3147                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC   => l_eqp_act_raw_cost_to_date_tc
3148                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC   => l_eqp_act_raw_cost_to_date_fc
3149                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC   => l_eqp_act_raw_cost_to_date_pc
3150                       ,X_EQPMT_ETC_RAWCOST_TC           => l_eqpmt_etc_raw_cost_tc
3151                       ,X_EQPMT_ETC_RAWCOST_FC           => l_eqpmt_etc_raw_cost_fc
3152                       ,X_EQPMT_ETC_RAWCOST_PC           => l_eqpmt_etc_raw_cost_pc
3153                       ,X_SP_OTH_ACT_RAWCOST_TODATE_TC   => null
3154                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC   => null
3155                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC   => null
3156                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC      => null
3157                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC      => null
3158                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC      => null
3159                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC    => null
3160                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC    => null
3161                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC    => null
3162                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC      => null
3163                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC      => null
3164                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC      => null
3165                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC      => null
3166                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC      => null
3167                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC      => null
3168                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC    => null
3169                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC    => null
3170                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC    => null
3171 					  ,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
3172             );
3173           IF Fnd_Msg_Pub.count_msg > 0 THEN
3174                RAISE  FND_API.G_EXC_ERROR;
3175           END IF;
3176 
3177 
3178         END IF;
3179 
3180     ELSIF l_db_action = 'UPDATE'
3181     THEN
3182         IF  l_working_aod IS NOT NULL
3183         THEN
3184             l_aod := l_working_aod;
3185         ELSE
3186             l_aod := p_as_of_date;
3187         END IF;
3188 
3189 	-- Bug 3879461 : Temporary getting percent complete id and record version number from database
3190 	-- So no locking.
3191 	-- There is issue in UI, after calling API under Recalculate, it should incrment the VO record version number
3192 
3193 --        IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3194 --        THEN
3195 			--DEBUG_DJ('Calling PA_PROGRESS_UTILS.get_ppc_id 3293');
3196             l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
3197                                       p_project_id        => p_project_id
3198                                      --,p_object_id         => l_assignment_id  --bug# 3764224 Changes for RLM
3199                                      ,p_object_id         => l_resource_list_member_id
3200                                      ,p_object_type       => l_object_type
3201                          ,p_object_version_id => l_object_version_id
3202                                      ,p_as_of_date        => l_aod
3203                          ,p_structure_type    => p_structure_type
3204 			 ,p_task_id            => p_task_id                   --bug# 3764224 Added for RLM
3205 			 ,p_cbs_element_id     => l_cbs_element_id --Added for 16200605
3206 
3207                                      );
3208 			--DEBUG_DJ('Out of PA_PROGRESS_UTILS.get_ppc_id 3293 || ' || l_percent_complete_id);
3209            -- FPM Dev CR 3 Getting Record Version Number too
3210         BEGIN
3211           SELECT record_version_number into l_record_version_number
3212           FROM pa_percent_completes
3213           where percent_complete_id = l_percent_complete_id;
3214         END;
3215 		--DEBUG_DJ('After SELECT INTO 3313');
3216            -- FPM Dev CR 3 Getting Record Version Number too
3217   --      ELSE
3218 --           l_percent_complete_id := p_percent_complete_id;
3219   --      l_record_version_number := p_record_version_number;
3220     --    END IF;
3221 
3222         IF g1_debug_mode  = 'Y' THEN
3223            pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_percent_complete_id: '||l_percent_complete_id, x_Log_Level=> 3);
3224         END IF;
3225 
3226 
3227         PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
3228                        p_TASK_ID                 => l_task_id
3229                       ,p_DATE_COMPUTED           => p_as_of_date
3230                       ,p_LAST_UPDATE_DATE        => SYSDATE
3231                       ,p_LAST_UPDATED_BY         => l_user_id
3232                       ,p_LAST_UPDATE_LOGIN       => l_login_id
3233                 ,p_COMPLETED_PERCENTAGE    => l_percent_complete
3234                       ,p_DESCRIPTION             => l_brief_overview
3235                 ,p_PM_PRODUCT_CODE         => l_pm_product_code
3236                 ,p_CURRENT_FLAG            => l_current_flag
3237                 ,p_PERCENT_COMPLETE_ID     => l_percent_complete_id
3241                       ,p_OBJECT_ID               => l_resource_list_member_id
3238                       ,p_project_id              => p_project_id
3239                       ,p_OBJECT_TYPE             => l_object_type
3240                       --,p_OBJECT_ID               => l_assignment_id  --bug# 3764224 Changes for RLM
3242                 ,p_OBJECT_VERSION_ID       => l_object_version_id
3243                 ,p_PROGRESS_STATUS_CODE    => l_progress_status_code
3244                       ,p_ACTUAL_START_DATE       => l_actual_start_date
3245                       ,p_ACTUAL_FINISH_DATE      => l_actual_finish_date
3246                       ,p_ESTIMATED_START_DATE    => l_estimated_start_date
3247                       ,p_ESTIMATED_FINISH_DATE   => l_estimated_finish_date
3248                       ,p_PUBLISHED_FLAG          => l_published_flag
3249                       ,p_PUBLISHED_BY_PARTY_ID   => l_published_by_party_id
3250                       ,p_PROGRESS_COMMENT        => l_progress_comment
3251                       ,p_HISTORY_FLAG            => 'N'
3252                 ,p_status_code             => l_task_status
3253                       ,p_RECORD_VERSION_NUMBER   => l_record_version_number
3254                       ,p_ATTRIBUTE_CATEGORY      => null
3255                       ,p_ATTRIBUTE1              => null
3256                       ,p_ATTRIBUTE2              => null
3257                       ,p_ATTRIBUTE3              => null
3258                       ,p_ATTRIBUTE4              => null
3259                       ,p_ATTRIBUTE5              => null
3260                       ,p_ATTRIBUTE6              => null
3261                       ,p_ATTRIBUTE7              => null
3262                       ,p_ATTRIBUTE8              => null
3263                       ,p_ATTRIBUTE9              => null
3264                       ,p_ATTRIBUTE10             => null
3265                       ,p_ATTRIBUTE11             => null
3266                       ,p_ATTRIBUTE12             => null
3267                       ,p_ATTRIBUTE13             => null
3268                       ,p_ATTRIBUTE14             => null
3269                       ,p_ATTRIBUTE15             => null
3270                 ,p_structure_type        => p_structure_type
3271 				,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
3272 
3273         );
3274           IF Fnd_Msg_Pub.count_msg > 0 THEN
3275                RAISE  FND_API.G_EXC_ERROR;
3276           END IF;
3277 
3278 
3279 
3280         --update progress rollup
3281         l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
3282                                    p_project_id   => p_project_id
3283                                   --,p_object_id    => l_assignment_id   --bug# 3764224 Changes for RLM
3284                                   ,p_object_id    => l_resource_list_member_id
3285                                   ,p_object_type  => l_object_type
3286                                   ,p_object_version_id => l_object_version_id
3287                                   ,p_as_of_date   => l_aod -- FPM Dev CR 3 : Using l_aod instead of p_as_of_date
3288                       ,p_structure_type => p_structure_type
3289                       ,p_structure_version_id => l_structure_version_id
3290 				  ,p_action                 => p_action -- Bug 3879461
3291                                   ,x_record_version_number => l_rollup_rec_ver_number
3292 				  ,p_proj_element_id      => p_task_id   --bug# 3764224 Added for RLM
3293 				  ,p_cbs_element_id     => l_cbs_element_id --Added for 16200605
3294                                 );
3295 
3296         IF g1_debug_mode  = 'Y' THEN
3297              pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID: '||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
3298         END IF;
3299 
3300 
3301         IF l_PROGRESS_ROLLUP_ID IS NOT NULL
3302         THEN
3303             PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
3304                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
3305                       ,X_PROJECT_ID                      => p_project_id
3306                       --,X_OBJECT_ID                       => l_assignment_id   --bug# 3764224 Changes for RLM
3307                       ,X_OBJECT_ID                       => l_resource_list_member_id
3308                       ,X_OBJECT_TYPE                     => l_object_type
3309                       ,X_AS_OF_DATE                      => p_as_of_date
3310                 ,X_OBJECT_VERSION_ID          => l_object_version_id
3311                       ,X_LAST_UPDATE_DATE                => SYSDATE
3312                       ,X_LAST_UPDATED_BY                 => l_user_id
3313                 ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
3314                       ,X_LAST_UPDATE_LOGIN               => l_login_id
3315                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
3316                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
3317                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
3318                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
3319                       ,X_COMPLETED_PERCENTAGE            => l_rollup_completed_percentage
3320                 ,X_ESTIMATED_START_DATE            => l_estimated_start_date
3321                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
3322                       ,X_ACTUAL_START_DATE               => l_actual_start_date
3323                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
3324                       ,X_EST_REMAINING_EFFORT            => l_ppl_etc_effort  -- need to populate the buckets
3325                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
3326                       ,X_BASE_PROGRESS_STATUS_CODE       => l_date_override_flag -- 4533112 l_BASE_PROGRESS_STATUS_CODE
3327                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
3331                       ,X_PROJ_ELEMENT_ID                 => p_task_id
3328                 ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
3329                       ,x_percent_complete_id             => l_percent_complete_id
3330                       ,X_STRUCTURE_TYPE                  => p_structure_type
3332                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
3333                       ,X_PPL_ACT_EFFORT_TO_DATE         => l_ppl_act_effort_to_date
3334                       ,X_EQPMT_ACT_EFFORT_TO_DATE  => l_eqpmt_act_effort_to_date
3335                       ,X_EQPMT_ETC_EFFORT                => l_eqpmt_etc_effort
3336                       ,X_OTH_ACT_COST_TO_DATE_TC   => l_oth_act_bur_cost_to_date_tc
3337                       ,X_OTH_ACT_COST_TO_DATE_FC   => l_oth_act_bur_cost_to_date_fc
3338                       ,X_OTH_ACT_COST_TO_DATE_PC   => l_oth_act_bur_cost_to_date_pc
3339                       ,X_OTH_ETC_COST_TC                 => l_oth_etc_bur_cost_tc
3340                       ,X_OTH_ETC_COST_FC                 => l_oth_etc_bur_cost_fc
3341                       ,X_OTH_ETC_COST_PC                 => l_oth_etc_bur_cost_pc
3342                       ,X_PPL_ACT_COST_TO_DATE_TC   => l_ppl_act_bur_cost_to_date_tc
3343                       ,X_PPL_ACT_COST_TO_DATE_FC   => l_ppl_act_bur_cost_to_date_fc
3344                       ,X_PPL_ACT_COST_TO_DATE_PC   => l_ppl_act_bur_cost_to_date_pc
3345                       ,X_PPL_ETC_COST_TC                 => l_ppl_etc_bur_cost_tc
3346                       ,X_PPL_ETC_COST_FC                 => l_ppl_etc_bur_cost_fc
3347                       ,X_PPL_ETC_COST_PC                 => l_ppl_etc_bur_cost_pc
3348                       ,X_EQPMT_ACT_COST_TO_DATE_TC      => l_eqp_act_bur_cost_to_date_tc
3349                       ,X_EQPMT_ACT_COST_TO_DATE_FC      => l_eqp_act_bur_cost_to_date_fc
3350                       ,X_EQPMT_ACT_COST_TO_DATE_PC      => l_eqp_act_bur_cost_to_date_pc
3351                       ,X_EQPMT_ETC_COST_TC               => l_eqpmt_etc_bur_cost_tc
3352                       ,X_EQPMT_ETC_COST_FC               => l_eqpmt_etc_bur_cost_fc
3353                       ,X_EQPMT_ETC_COST_PC               => l_eqpmt_etc_bur_cost_pc
3354                       ,X_EARNED_VALUE                    => null
3355                       ,X_TASK_WT_BASIS_CODE              => null
3356                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
3357                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
3358                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
3359                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
3360                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
3361                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
3362                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
3363                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
3364                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
3365                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
3366                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
3367                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
3368                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
3369                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
3370                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
3371                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
3372                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
3373                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
3374                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
3375                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
3376                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
3377                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
3378                       ,X_SUBPRJ_EARNED_VALUE             => null
3379                 ,X_CURRENT_FLAG               => l_rollup_current_flag -- Bug 3879461 l_current_flag
3380                 ,X_PROJFUNC_COST_RATE_TYPE         => l_projfunc_cost_rate_type
3381                 ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_projfunc_cost_exch_rate
3382                 ,X_PROJFUNC_COST_RATE_DATE         => l_projfunc_cost_rate_date
3383                 ,X_PROJ_COST_RATE_TYPE             => l_project_rate_type
3384                 ,X_PROJ_COST_EXCHANGE_RATE         => l_project_exch_rate
3385                 ,X_PROJ_COST_RATE_DATE             => l_project_rate_date
3386                 ,X_TXN_CURRENCY_CODE             =>  l_txn_currency_code -- Fix for Bug # 3988457.
3387 						     -- p_txn_currency_code    --maansari4/30
3388                 ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
3389                 ,X_PROG_GL_PERIOD_NAME        => l_prog_gl_period_name
3390                 --bug 3608801
3391                       ,X_OTH_QUANTITY_TO_DATE            => l_oth_quantity_to_date  -- bug no.3608801
3392                       ,X_OTH_ETC_QUANTITY                => l_oth_etc_quantity
3393                 --bug 3608801
3394                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC     => l_oth_act_raw_cost_to_date_tc
3395                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC     => l_oth_act_raw_cost_to_date_fc
3396                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC     => l_oth_act_raw_cost_to_date_pc
3397                       ,X_OTH_ETC_RAWCOST_TC        => l_oth_etc_raw_cost_tc
3398                       ,X_OTH_ETC_RAWCOST_FC        => l_oth_etc_raw_cost_fc
3399                       ,X_OTH_ETC_RAWCOST_PC        => l_oth_etc_raw_cost_pc
3400                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC     => l_ppl_act_raw_cost_to_date_tc
3401                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC     => l_ppl_act_raw_cost_to_date_fc
3402                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC     => l_ppl_act_raw_cost_to_date_pc
3403                       ,X_PPL_ETC_RAWCOST_TC        => l_ppl_etc_raw_cost_tc
3404                       ,X_PPL_ETC_RAWCOST_FC        => l_ppl_etc_raw_cost_fc
3405                       ,X_PPL_ETC_RAWCOST_PC        => l_ppl_etc_raw_cost_pc
3406                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC   => l_eqp_act_raw_cost_to_date_tc
3410                       ,X_EQPMT_ETC_RAWCOST_FC           => l_eqpmt_etc_raw_cost_fc
3407                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC   => l_eqp_act_raw_cost_to_date_fc
3408                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC   => l_eqp_act_raw_cost_to_date_pc
3409                       ,X_EQPMT_ETC_RAWCOST_TC           => l_eqpmt_etc_raw_cost_tc
3411                       ,X_EQPMT_ETC_RAWCOST_PC           => l_eqpmt_etc_raw_cost_pc
3412                 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
3413                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC   => null
3414                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC   => null
3415                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC      => null
3416                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC      => null
3417                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC      => null
3418                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC    => null
3419                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC    => null
3420                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC    => null
3421                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC      => null
3422                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC      => null
3423                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC      => null
3424                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC      => null
3425                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC      => null
3426                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC      => null
3427                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC    => null
3428                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC    => null
3429                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC    => null
3430 					  ,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
3431 
3432             );
3433           IF Fnd_Msg_Pub.count_msg > 0 THEN
3434                RAISE  FND_API.G_EXC_ERROR;
3435           END IF;
3436 
3437         ELSE
3438             PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
3439                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
3440                       ,X_PROJECT_ID                      => p_project_id
3441                       --,X_OBJECT_ID                       => l_assignment_id  --bug# 3764224 Changes for RLM
3442                       ,X_OBJECT_ID                       => l_resource_list_member_id
3443                       ,X_OBJECT_TYPE                     => l_object_type
3444                       ,X_AS_OF_DATE                      => p_as_of_date
3445                 ,X_OBJECT_VERSION_ID          => l_object_version_id
3446                       ,X_LAST_UPDATE_DATE                => SYSDATE
3447                       ,X_LAST_UPDATED_BY                 => l_user_id
3448                       ,X_CREATION_DATE                   => SYSDATE
3449                       ,X_CREATED_BY                      => l_user_id
3450                 ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
3451                       ,X_LAST_UPDATE_LOGIN               => l_login_id
3452                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
3453                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
3454                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
3455                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
3456                       ,X_COMPLETED_PERCENTAGE            => l_rollup_completed_percentage
3457                       ,X_ESTIMATED_START_DATE            => l_estimated_start_date
3458                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
3459                       ,X_ACTUAL_START_DATE               => l_actual_start_date
3460                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
3461                       ,X_EST_REMAINING_EFFORT            => l_ppl_etc_effort
3462                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
3463                       ,X_BASE_PROGRESS_STATUS_CODE       => l_date_override_flag -- 4533112 l_BASE_PROGRESS_STATUS_CODE
3464                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
3465                 ,x_percent_complete_id             => l_percent_complete_id
3466                 ,X_STRUCTURE_TYPE                  => p_structure_type
3467                 ,X_PROJ_ELEMENT_ID                 => p_task_id
3468                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
3469                       ,X_PPL_ACT_EFFORT_TO_DATE          => l_ppl_act_effort_to_date
3470                       ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_eqpmt_act_effort_to_date
3471                       ,X_EQPMT_ETC_EFFORT                => l_eqpmt_etc_effort
3472                       ,X_OTH_ACT_COST_TO_DATE_TC   => l_oth_act_bur_cost_to_date_tc
3473                       ,X_OTH_ACT_COST_TO_DATE_FC   => l_oth_act_bur_cost_to_date_fc
3474                       ,X_OTH_ACT_COST_TO_DATE_PC   => l_oth_act_bur_cost_to_date_pc
3475                       ,X_OTH_ETC_COST_TC                 => l_oth_etc_bur_cost_tc
3476                       ,X_OTH_ETC_COST_FC                 => l_oth_etc_bur_cost_fc
3477                       ,X_OTH_ETC_COST_PC                 => l_oth_etc_bur_cost_pc
3478                       ,X_PPL_ACT_COST_TO_DATE_TC   => l_ppl_act_bur_cost_to_date_tc
3479                       ,X_PPL_ACT_COST_TO_DATE_FC   => l_ppl_act_bur_cost_to_date_fc
3480                       ,X_PPL_ACT_COST_TO_DATE_PC   => l_ppl_act_bur_cost_to_date_pc
3481                       ,X_PPL_ETC_COST_TC                 => l_ppl_etc_bur_cost_tc
3482                       ,X_PPL_ETC_COST_FC                 => l_ppl_etc_bur_cost_fc
3483                       ,X_PPL_ETC_COST_PC                 => l_ppl_etc_bur_cost_pc
3484                       ,X_EQPMT_ACT_COST_TO_DATE_TC      => l_eqp_act_bur_cost_to_date_tc
3485                       ,X_EQPMT_ACT_COST_TO_DATE_FC      => l_eqp_act_bur_cost_to_date_fc
3486                       ,X_EQPMT_ACT_COST_TO_DATE_PC      => l_eqp_act_bur_cost_to_date_pc
3487                       ,X_EQPMT_ETC_COST_TC               => l_eqpmt_etc_bur_cost_tc
3488                       ,X_EQPMT_ETC_COST_FC               => l_eqpmt_etc_bur_cost_fc
3489                       ,X_EQPMT_ETC_COST_PC               => l_eqpmt_etc_bur_cost_pc
3490                       ,X_EARNED_VALUE                    => null
3491                       ,X_TASK_WT_BASIS_CODE              => null
3492                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
3493                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
3494                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
3495                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
3496                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
3497                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
3498                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
3499                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
3500                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
3501                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
3502                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
3503                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
3504                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
3505                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
3506                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
3507                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
3508                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
3509                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
3510                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
3511                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
3512                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
3513                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
3514                 ,X_SUBPRJ_EARNED_VALUE             => null
3515                 ,X_CURRENT_FLAG               => l_rollup_current_flag -- Bug 3879461 l_current_flag
3516                 ,X_PROJFUNC_COST_RATE_TYPE         => l_projfunc_cost_rate_type
3517                 ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_projfunc_cost_exch_rate
3518                 ,X_PROJFUNC_COST_RATE_DATE         => l_projfunc_cost_rate_date
3519                 ,X_PROJ_COST_RATE_TYPE             => l_project_rate_type
3520                 ,X_PROJ_COST_EXCHANGE_RATE         => l_project_exch_rate
3521                 ,X_PROJ_COST_RATE_DATE             => l_project_rate_date
3525                 ,X_PROG_GL_PERIOD_NAME        => l_prog_gl_period_name
3522                 ,X_TXN_CURRENCY_CODE          =>  l_txn_currency_code -- Fix for Bug # 3988457.
3523 						  -- p_txn_currency_code    --maansari4/30
3524                 ,X_PROG_PA_PERIOD_NAME        => l_prog_pa_period_name
3526                 --bug 3608801
3527                       ,X_OTH_QUANTITY_TO_DATE            => l_oth_quantity_to_date   -- bug no.3608801
3528                       ,X_OTH_ETC_QUANTITY                => l_oth_etc_quantity
3529                 --bug 3608801
3530                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC     => l_oth_act_raw_cost_to_date_tc
3531                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC     => l_oth_act_raw_cost_to_date_fc
3532                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC     => l_oth_act_raw_cost_to_date_pc
3533                       ,X_OTH_ETC_RAWCOST_TC        => l_oth_etc_raw_cost_tc
3534                       ,X_OTH_ETC_RAWCOST_FC        => l_oth_etc_raw_cost_fc
3535                       ,X_OTH_ETC_RAWCOST_PC        => l_oth_etc_raw_cost_pc
3536                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC     => l_ppl_act_raw_cost_to_date_tc
3537                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC     => l_ppl_act_raw_cost_to_date_fc
3538                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC     => l_ppl_act_raw_cost_to_date_pc
3539                       ,X_PPL_ETC_RAWCOST_TC        => l_ppl_etc_raw_cost_tc
3540                       ,X_PPL_ETC_RAWCOST_FC        => l_ppl_etc_raw_cost_fc
3541                       ,X_PPL_ETC_RAWCOST_PC        => l_ppl_etc_raw_cost_pc
3542                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC   => l_eqp_act_raw_cost_to_date_tc
3543                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC   => l_eqp_act_raw_cost_to_date_fc
3544                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC   => l_eqp_act_raw_cost_to_date_pc
3545                       ,X_EQPMT_ETC_RAWCOST_TC           => l_eqpmt_etc_raw_cost_tc
3546                       ,X_EQPMT_ETC_RAWCOST_FC           => l_eqpmt_etc_raw_cost_fc
3547                       ,X_EQPMT_ETC_RAWCOST_PC           => l_eqpmt_etc_raw_cost_pc
3548                 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
3549                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC   => null
3550                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC   => null
3551                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC      => null
3552                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC      => null
3553                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC      => null
3554                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC    => null
3555                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC    => null
3556                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC    => null
3557                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC      => null
3558                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC      => null
3559                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC      => null
3560                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC      => null
3561                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC      => null
3562                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC      => null
3563                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC    => null
3564                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC    => null
3565                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC    => null
3566 					  ,X_CBS_ELEMENT_ID					=> l_cbs_element_id --Added for 16200605
3567 
3568             );
3569           IF Fnd_Msg_Pub.count_msg > 0 THEN
3570                RAISE  FND_API.G_EXC_ERROR;
3571           END IF;
3572 
3573         END IF;
3574 
3575      IF g1_debug_mode  = 'Y' THEN
3576              pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'COMPLETED ', x_Log_Level=> 3);
3577         END IF;
3578 
3579     END IF;  --<l_db_action>
3580 
3581 
3582     -- FPM Dev CR 3 Begin
3583 
3584     --bug no.3595585 Satish start
3585     /*--bug no.3586648
3586     IF l_structure_sharing_code <> 'SHARE_FULL'
3587     THEN
3588          l_total_effort := nvl(l_ppl_act_effort_to_date,0) + nvl(l_ppl_etc_effort,0) + nvl(l_eqpmt_act_effort_to_date,0) + nvl(l_eqpmt_etc_effort,0);
3589 
3590          IF p_structure_type = 'WORKPLAN' AND p_progress_mode = 'FUTURE'
3591             AND l_total_effort > 0
3592             AND l_total_effort > p_planned_effort
3593             AND PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'N'
3594             AND p_action = 'PUBLISH'
3595             AND l_rate_based_flag = 'Y'    --maansari7/6 bug 3742356
3596          THEN
3597 
3598             l_task_elem_version_id_tbl.extend(1);
3599             l_planned_people_effort_tbl.extend(1);
3600             l_planned_equip_effort_tbl.extend(1);
3601             l_resource_assignment_id_tbl.extend(1);
3602             l_resource_list_member_id_tbl.extend(1);
3606 
3603             l_resource_class_code_tbl.extend(1);
3604      --       l_start_date_tbl.extend(1);
3605      --       l_end_date_tbl.extend(1);
3607             l_task_elem_version_id_tbl(1)    := p_object_version_id;
3608             l_planned_people_effort_tbl(1)   := l_ppl_act_effort_to_date + l_ppl_etc_effort;
3609             l_planned_equip_effort_tbl(1)    := l_eqpmt_act_effort_to_date + l_eqpmt_etc_effort;
3610             l_resource_assignment_id_tbl(1)  := p_object_id;
3611             l_resource_list_member_id_tbl(1) := p_resource_list_member_id;
3612             l_resource_class_code_tbl(1)     := l_resource_class_code;      --maansari7/6 bug 3742356
3613      --       l_start_date_tbl(1)       := l_actual_start_date;
3614      --       l_end_date_tbl(1)         := l_actual_finish_date;
3615 
3616             BEGIN
3617              pa_fp_planning_transaction_pub.update_planning_transactions
3618              (
3619                p_context                      => 'WORKPLAN'
3620               ,p_struct_elem_version_id       => p_structure_version_id
3621               ,p_task_elem_version_id_tbl     => l_task_elem_version_id_tbl
3622               ,p_planned_people_effort_tbl    => l_planned_people_effort_tbl
3623               ,p_planned_equip_effort_tbl     => l_planned_equip_effort_tbl
3624               ,p_resource_assignment_id_tbl   => l_resource_assignment_id_tbl
3625               ,p_resource_list_member_id_tbl  => l_resource_list_member_id_tbl
3626               ,p_resource_class_code_tbl      => l_resource_class_code_tbl
3627      --            ,p_start_date_tbl               => l_start_date_tbl
3628      --            ,p_end_date_tbl                 => l_end_date_tbl
3629               ,x_return_status                => l_return_status
3630               ,x_msg_count                    => l_msg_count
3631               ,x_msg_data                     => l_msg_data
3632              );
3633             EXCEPTION
3634              WHEN OTHERS THEN
3635                fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_ASSIGNMENT_PROGRESS_PUB',
3636                               p_procedure_name => 'UPDATE_ASSIGNMENT_PROGRESS',
3637                               p_error_text     => SUBSTRB('pa_fp_planning_transaction_pub.update_planning_transactions:'||SQLERRM,1,240));
3638              RAISE FND_API.G_EXC_ERROR;
3639             END;
3640          END IF;
3641     END IF;*/
3642     --bug no.3595585 Satish end
3643     -- FPM Dev CR 3 End
3644 
3645     IF g1_debug_mode  = 'Y' THEN
3646            pa_debug.write(x_Module=>'PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS', x_Msg => 'EXITING ', x_Log_Level=> 3);
3647     END IF;
3648 
3649 EXCEPTION
3650  when FND_API.G_EXC_ERROR then
3651       x_return_status := FND_API.G_RET_STS_ERROR;
3652       l_msg_count := Fnd_Msg_Pub.count_msg;
3653 
3654       if p_commit = FND_API.G_TRUE then
3655          rollback to UPDATE_ASSIGNMENT_PROGRESS;
3656       end if;
3657 
3658      IF l_msg_count = 1 AND x_msg_data IS NULL
3659       THEN
3660           Pa_Interface_Utils_Pub.get_messages
3661               ( p_encoded        => Fnd_Api.G_TRUE
3662               , p_msg_index      => 1
3663               , p_msg_count      => l_msg_count
3664               , p_msg_data       => l_msg_data
3665               , p_data           => l_data
3666               , p_msg_index_out  => l_msg_index_out);
3667           x_msg_data := l_data;
3668           x_msg_count := l_msg_count;
3669      ELSE
3670           x_msg_count := l_msg_count;
3671      END IF;
3672 
3673      when FND_API.G_EXC_UNEXPECTED_ERROR then
3674        x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3675        x_msg_count     := 1;
3676        x_msg_data      := SQLERRM;
3677 
3678       if p_commit = FND_API.G_TRUE then
3679          rollback to UPDATE_ASSIGNMENT_PROGRESS;
3680       end if;
3681       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3682       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_ASSIGNMENT_PROGRESS_PUB',
3683                               p_procedure_name => 'UPDATE_ASSIGNMENT_PROGRESS',
3684                               p_error_text     => SUBSTRB(SQLERRM,1,240));
3685     when OTHERS then
3686      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3687      x_msg_count     := 1;
3688      x_msg_data      := SUBSTRB(SQLERRM,1,240);
3689       if p_commit = FND_API.G_TRUE then
3690          rollback to UPDATE_DELIVERABLE_PROGRESS;
3691       end if;
3692 
3693       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_ASSIGNMENT_PROGRESS_PUB',
3694                               p_procedure_name => 'UPDATE_ASSIGNMENT_PROGRESS',
3695                               p_error_text     => SUBSTRB(SQLERRM,1,240));
3696       raise;
3697 
3698 
3699 END UPDATE_ASSIGNMENT_PROGRESS;
3700 
3701 END PA_ASSIGNMENT_PROGRESS_PUB;