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