[Home] [Help]
PACKAGE BODY: APPS.PA_PROJECT_INTEGRATION_PUB
Source
1 PACKAGE BODY PA_PROJECT_INTEGRATION_PUB AS
2 /* $Header: PAPRJINTB.pls 120.7.12020000.2 2013/04/04 07:29:25 djambhek ship $ */
3
4 gl_currency_code varchar2(30);
5
6
7 -- perf changes 8894180 added below local procedure and change write_log call to log_pvt in all the code
8
9 PROCEDURE LOG_PVT (
10 p_module in varchar2,
11 p_msg in varchar2
12 ) IS
13
14 begin
15 if ( NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N') = 'Y' ) then
16
17 write_log(p_module,p_msg);
18
19 end if;
20
21 end ;
22
23 PROCEDURE SYNC_PROJECTS(
24 -- X_RETURN_STATUS_OBJ_TBL OUT NOCOPY PROJ_RET_STATUS_OBJ_TBL
25 X_CP_REQUEST_OBJ_TBL OUT NOCOPY SYSTEM.PROJ_CP_REQ_OBJ_TBL
26 ,X_PROJECTS_OUT OUT NOCOPY SYSTEM.PROJECT_OUT_OBJ_TBL
27 ,X_RETURN_STATUS OUT NOCOPY VARCHAR2
28 ,P_SYNC_MODE IN CHAR := 'S'
29 ,P_PROJECTS_IN IN SYSTEM.PROJECT_IN_OBJ_TBL
30 )
31 IS
32
33
34
35 -- Records
36 L_PROJECT_IN_REC pa_project_pub.PROJECT_IN_REC_TYPE ;
37 L_PROJECT_OUT_REC pa_project_pub.PROJECT_OUT_REC_TYPE;
38
39
40
41
42 l_task_com_id_tbl task_com_id_tbl_type;
43
44 l_task_id_ref_tbl task_id_ref_tbl_type;
45
46
47 l_res_com_id_tbl task_com_id_tbl_type ;
48 l_res_id_ref_tbl task_id_ref_tbl_type ;
49
50 --L_TASKS_IN_REC TASK_IN_REC_TYPE;
51 --L_TASKS_OUT_REC task_out_obj;
52 --L_STRUCTURE_IN_REC STRUCTURE_IN_REC_TYPE;
53
54 --Objects
55
56 L_PROJECT_IN_OBJ SYSTEM.PROJECT_IN_OBJ ;
57 L_PROJECT_OUT_OBJ SYSTEM.PROJECT_OUT_OBJ;
58
59 L_PROJECT_OUT_TBL SYSTEM.PROJECT_OUT_OBJ_TBL;
60
61 --L_TASKS_IN_OBJ TASK_IN_OBJ;
62 --L_TASKS_OUT_OBJ TASK_OUT_OBJ;
63 --L_STRUCTURE_IN_OBJ STRUCTURE_IN_OBJ;
64 -- Tables
65
66 L_TASKS_IN_REC_TBL pa_project_pub.TASK_IN_TBL_TYPE;
67 L_TASKS_OUT_REC_TBL pa_project_pub.TASK_OUT_TBL_TYPE;
68 L_TASK_OUT_REC pa_project_pub.task_out_rec_type;
69 L_STRUCTURE_IN_REC pa_project_pub.STRUCTURE_IN_REC_TYPE;
70
71
72 l_delete_task_id_tbl g_num_tbl;
73 l_delete_task_ver_id_tbl g_num_tbl;
74
75
76 i_task_out_obj SYSTEM.task_out_obj;
77 i_task_out_tbl SYSTEM.task_out_obj_tbl;
78
79 i_del_task_out_obj SYSTEM.delete_task_out_obj;
80 i_del_task_out_obj_tbl SYSTEM.delete_task_out_obj_tbl;
81 i_del_task_status varchar2(1);
82 i_del_task_msg_data varchar2(2000);
83
84 t_crt_count NUMBER; -- Bug 10077151
85
86 L_WORKFLOW_STARTED VARCHAR2(30);
87 L_PROJECT_ID NUMBER;
88 X_MSG_COUNT NUMBER;
89 X_MSG_DATA VARCHAR2(2000);
90 l_RETURN_STATUS VARCHAR2(30);
91
92 l_plan_in_multi_curr_flag varchar2(1);
93
94 li_return_status varchar2(3);
95 li_return_message varchar2(200);
96
97 ----------- res assignment --------------------------------
98
99 c_res_currency_code PA_VC_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) ;
100 u_res_currency_code PA_VC_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) ;
101
102 c_res_pm_project_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) ;
103 c_res_pa_project_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
104 c_res_pa_struct_version_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
105 c_res_pm_task_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
106 c_res_pa_task_number PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
107 c_res_pa_task_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
108 c_res_pa_task_elem_ver_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
109 c_res_pm_task_asgmt_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
110 c_res_pa_task_assignment_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
111 c_res_resource_alias PA_VC_1000_80 := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
112 c_res_resource_list_member_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
113 c_res_start_date PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE);
114 c_res_end_date PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE);
115 c_res_planned_quantity PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
116 c_res_planned_total_raw_cost PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
117 c_res_planned_total_bur_cost PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
118
119 c_res_counter number;
120
121
122 u_res_pm_project_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) ;
123 u_res_pa_project_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
124 u_res_pa_struct_version_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
125 u_res_pm_task_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
126 u_res_pa_task_number PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
127 u_res_pa_task_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
128 u_res_pa_task_elem_ver_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
129 u_res_pm_task_asgmt_reference PA_VC_1000_25 := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
130 u_res_pa_task_assignment_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
131 u_res_resource_alias PA_VC_1000_80 := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
132 u_res_resource_list_member_id PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
133 u_res_start_date PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE);
134 u_res_end_date PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE);
135 u_res_planned_quantity PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
136 u_res_planned_total_raw_cost PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
137 u_res_planned_total_bur_cost PA_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
138
139 u_res_counter number;
140
141
142 l_res_asgmt_obj SYSTEM.RES_ASGMT_OUT_OBJ;
143 l_res_asgmt_obj_tbl SYSTEM.RES_ASGMT_OUT_OBJ_TBL;
144
145 l_res_out_counter number;
146
147 l_del_res_asgmt_tbl SYSTEM.delete_RES_ASGMT_OUT_OBJ_TBL;
148 l_del_res_asgm_status varchar2(3);
149 l_del_res_msg_data varchar2(2000);
150
151 -- out variable ----
152
153 o_task_asgmt_index pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
154 o_pm_task_asgmt_reference pa_vc_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
155 o_pa_task_assignment_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
156 o_pm_task_reference pa_vc_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
157 o_pa_task_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
158 o_resource_alias pa_vc_1000_80 := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
159 o_resource_list_member_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
160
161
162 ou_task_asgmt_index pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
163 ou_pm_task_asgmt_reference pa_vc_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
164 ou_pa_task_assignment_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
165 ou_pm_task_reference pa_vc_1000_30 := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
166 ou_pa_task_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
167 ou_resource_alias pa_vc_1000_80 := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR);
168 ou_resource_list_member_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
169
170 type num_tbl_c is table of number index by varchar2(30);
171 type num_tbl is table of number index by binary_integer;
172 type var_tbl is table of varchar2(30) index by binary_integer;
173
174 l_task_id_tbl num_tbl;
175 l_elem_ver_id_tbl num_tbl;
176 l_task_elem_ver_id_tbl num_tbl_c;
177
178 l_task_num_tbl var_tbl;
179
180 l_task_num_id_tbl num_tbl_c;
181
182 l_cost_resource_list_id number;
183
184 -------------- res assignment end -----------------------------------------------------
185
186 ------ for testing --------------------------
187 l_data VARCHAR2(2000);
188 l_msg_index number;
189 l_msg_index_out number;
190
191 ------ for testing -----------------------------
192
193 -- org_context Bug 12914488
194 l_msg_data varchar2(2000);
195 l_msg_count number;
196 l_ou_id number;
197 CURSOR proj_ou_id_csr (c_project_id NUMBER)
198 IS
199 select org_id from pa_projects_all where project_id = c_project_id;
200
201 -- Added for CBS, it is just a place holder , as Primavera does not support CBS 16598322
202 o_cbs_element_id pa_num_1000_num := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM);
203 BEGIN
204
205 log_pvt('MAIN', 'START INTEGRATION p_sync_mode : '|| p_sync_mode);
206
207 log_pvt('MAIN', 'START : project count : '||p_projects_in.count);
208
209 log_pvt('MAIN', ' PA_DEBUG_MODE '||NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N'));
210
211 x_return_status := 'S';
212
213 L_PROJECT_OUT_TBL := SYSTEM.PROJECT_OUT_OBJ_TBL();
214
215 L_PROJECT_OUT_TBL.extend(p_projects_in.count);
216
217 L_PROJECT_OUT_OBJ := SYSTEM.project_out_obj(null,null,null,null,null,null,null,null,null,null,null,null,null,null);
218
219 i_task_out_tbl := SYSTEM.task_out_obj_tbl();
220
221 i_task_out_obj := SYSTEM.task_out_obj(null,null,null,null,null);
222
223
224 l_del_res_asgmt_tbl := SYSTEM.delete_RES_ASGMT_OUT_OBJ_TBL();
225
226 i_del_task_out_obj_tbl := SYSTEM.delete_task_out_obj_tbl();
227
228 i_del_task_out_obj := SYSTEM.delete_task_out_obj(null,null,null);
229
230 l_res_asgmt_obj := null;
231
232 l_res_asgmt_obj := SYSTEM.RES_ASGMT_OUT_OBJ(null,null,null,null,null);
233
234 L_RES_ASGMT_OBJ_TBL := SYSTEM.RES_ASGMT_OUT_OBJ_TBL();
235
236 FOR i in P_PROJECTS_IN.first .. P_PROJECTS_IN.last LOOP
237
238 log_pvt('MAIN','LOOP :Start ');
239
240 ---- initializing the out variables -------------------
241
242 l_tasks_in_rec_tbl.delete;
243 L_TASKS_OUT_REC_TBL.delete;
244
245 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := null;
246 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := null;
247 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'S';
248
249 L_PROJECT_OUT_REC.pa_project_id := null;
250 L_PROJECT_OUT_REC.pa_project_number := null;
251 L_PROJECT_OUT_REC.return_status := null;
252
253 g_res_pm_project_reference.delete;
254 g_res_pa_project_id.delete;
255 g_res_pa_struct_version_id.delete;
256 g_res_pm_task_reference.delete;
257 g_res_pa_task_number.delete;
258 g_res_pa_task_id.delete;
259 g_res_pa_task_elem_ver_id.delete;
260 g_res_pm_task_asgmt_reference.delete;
261 g_res_pa_task_assignment_id.delete;
262 g_res_resource_alias.delete;
263 g_res_resource_list_member_id.delete;
264 g_res_start_date.delete;
265 g_res_end_date.delete;
266 g_res_planned_quantity.delete;
267 g_res_planned_total_raw_cost.delete;
268 g_res_planned_total_bur_cost.delete;
269
270 l_res_asgmt_obj_tbl.delete;
271 i_task_out_tbl.delete;
272
273
274 g_res_counter := 0;
275
276 ---- initializing the out variables -------------------
277
278 L_PROJECT_IN_OBJ := P_PROJECTS_IN(i);
279
280 log_pvt('MAIN','i: '||i||' project_id '||L_PROJECT_IN_OBJ.pa_project_id);
281 log_pvt('MAIN','i: '||i||' pm_project_reference '||L_PROJECT_IN_OBJ.pm_project_reference);
282
283 --g_res_id_ref_tbl('1001') := 2;
284
285 log_pvt('MAIN','Before load_project_in_reec ');
286
287 LOAD_PROJECT_IN_REC(
288 P_PROJECT_IN_OBJ => L_PROJECT_IN_OBJ ,
289 x_project_in_rec => L_PROJECT_IN_REC,
290 x_task_in_tbl => L_TASKS_IN_REC_TBL,
291 x_structure_in_rec => L_STRUCTURE_IN_REC,
292 x_task_com_id_tbl => l_task_com_id_tbl,
293 x_task_id_ref_tbl => l_task_id_ref_tbl,
294 x_res_com_id_tbl => l_res_com_id_tbl,
295 x_res_id_ref_tbl => l_res_id_ref_tbl,
296 x_delete_task_id_tbl => l_delete_task_id_tbl,
297 x_delete_task_ver_id_tbl => l_delete_task_ver_id_tbl,
298 X_RETURN_STATUS => li_return_status ,
299 x_RETURN_MESSAGE => li_return_message );
300 --begin
301 --select 1/0 into li_return_status from dual ;
302 --end;
303 log_pvt('MAIN','After load_project_in_reec ');
304
305
306 L_PROJECT_OUT_OBJ.AIA_COMMON_ID := L_PROJECT_IN_OBJ.AIA_COMMON_ID;
307 L_PROJECT_OUT_OBJ.msg_data := li_return_message;
308 L_PROJECT_OUT_OBJ.RETURN_STATUS := li_return_status ;
309 L_PROJECT_OUT_OBJ.PM_PROJECT_REFERENCE := L_PROJECT_IN_REC.PM_PROJECT_REFERENCE;
310 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := L_PROJECT_IN_REC.PA_PROJECT_NUMBER;
311 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := L_PROJECT_IN_REC.PA_PROJECT_ID;
312
313 L_PROJECT_OUT_OBJ.P_TASK_OUT_OBJ_TBL := i_task_out_tbl;
314 L_PROJECT_OUT_OBJ.P_RES_ASGMT_OUT_OBJ_TBL := l_res_asgmt_obj_tbl;
315
316 L_PROJECT_ID := L_PROJECT_IN_REC.PA_PROJECT_ID;
317
318 L_PROJECT_OUT_TBL(i) := L_PROJECT_OUT_OBJ;
319
320 ------- Project Creation / Update Start -------------------------------
321
322 IF ( li_return_status = 'S' ) THEN
323 BEGIN
324
325 IF ( nvl(L_PROJECT_IN_REC.PA_PROJECT_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
326 = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
327
328 /* COMMIT_ISSUE Start Change */
329 if ( p_sync_mode <> 'D') then
330 /* COMMIT_ISSUE End Change */
331
332 -- org_context Bug 12914488
333 OPEN proj_ou_id_csr (L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID); -- Bug 13257831
334 FETCH proj_ou_id_csr into l_ou_id;
335 CLOSE proj_ou_id_csr;
336 log_pvt('SYNC_PROJECTS CREATE_PROJECT', '############# org_context : L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID '|| L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID);
337 log_pvt('SYNC_PROJECTS CREATE_PROJECT', '############# org_context : l_ou_id'|| l_ou_id);
338 PA_MOAC_UTILS.MO_INIT_SET_CONTEXT
339 (
340 p_org_id => l_ou_id
341 , p_product_code => 'PA'
342 , p_msg_count => l_msg_count
343 , p_msg_data => l_msg_data
344 , p_return_status => l_return_status
345 );
346 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
347 RAISE FND_API.G_EXC_ERROR ;
348 END IF ;
349 -- org_context changes end
350 log_pvt('MAIN','before create_project ');
351
352 PA_PROJECT_PUB.CREATE_PROJECT( P_API_VERSION_NUMBER => 1.0,
353 P_COMMIT => fnd_api.g_false,
354 P_INIT_MSG_LIST => 'T',
355 P_MSG_COUNT => X_MSG_COUNT,
356 P_MSG_DATA => X_MSG_DATA,
357 P_RETURN_STATUS => l_RETURN_STATUS,
358 P_WORKFLOW_STARTED => L_WORKFLOW_STARTED,
359 P_PM_PRODUCT_CODE => 'PRIMAVERA',
360 P_PROJECT_IN => L_PROJECT_IN_REC,
361 P_PROJECT_OUT => L_PROJECT_OUT_REC,
362 P_TASKS_IN => L_TASKS_IN_REC_TBL,
363 P_TASKS_OUT => L_TASKS_OUT_REC_TBL,
364 P_STRUCTURE_IN => L_STRUCTURE_IN_REC
365 );
366
367 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := L_PROJECT_OUT_REC.pa_project_id;
368 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := L_PROJECT_OUT_REC.pa_project_number;
369
370 L_PROJECT_OUT_REC.return_status := l_return_status;
371 log_pvt('MAIN','after create_project '||l_RETURN_STATUS);
372 log_pvt('MAIN','after create_project L_PROJECT_OUT_REC.return_status '||L_PROJECT_OUT_REC.return_status);
373 /* COMMIT_ISSUE Start Change */
374 else
375 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := NULL;
376 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := NULL;
377 L_PROJECT_OUT_REC.return_status := 'S';
378
379 end if;
380 /* COMMIT_ISSUE End Change */
381
382 ELSE
383 null;
384 /* COMMIT_ISSUE Start Change */
385 if ( p_sync_mode <> 'P') then
386 /* COMMIT_ISSUE End Change */
387 log_pvt('MAIN','before update_project ');
388
389 -- Bug 9887691 : Moving DELETE_TASK_PVT below DELETE_RES_ASSGN_PVT.
390
391 DELETE_RES_ASSGN_PVT (
392 p_project_in_rec => L_PROJECT_IN_REC,
393 p_structure_in_rec => L_STRUCTURE_IN_REC,
394 p_res_pa_task_assignment_id => g_res_pa_task_assignment_id,
395 x_DEL_RES_ASGMT_OBJ_TBL => l_del_res_asgmt_tbl ,
396 x_DEL_RES_ASSGMT_STATUS => l_del_res_asgm_status,
397 x_del_res_msg_data => l_del_res_msg_data );
398
399 commit; -- testing the deadlock
400
401 log_pvt('MAIN_DEL',' after the api call ');
402 if ( l_del_res_asgmt_tbl is not null ) then
403
404 log_pvt('MAIN_DEL',' p_delete_RES_ASGMT_OUT_OBJ_TBL.count '||l_del_res_asgmt_tbl.count);
405
406 L_PROJECT_OUT_OBJ.p_delete_RES_ASGMT_OUT_OBJ_TBL := l_del_res_asgmt_tbl;
407 L_PROJECT_OUT_OBJ.p_delete_res_asgmt_status := l_del_res_asgm_status;
408 L_PROJECT_OUT_OBJ.del_res_msg_data := l_del_res_msg_data;
409
410 log_pvt('MAIN_DEL',' p_delete_RES_ASGMT_OUT_OBJ_TBL.count '||l_del_res_asgmt_tbl.count);
411 log_pvt('MAIN_DEL',' p_delete_res_asgmt_status '||l_del_res_asgm_status);
412 log_pvt('MAIN_DEL',' l_del_res_msg_data '||l_del_res_msg_data);
413
414 end if;
415
416 i_del_task_out_obj_tbl.delete;
417 i_del_task_out_obj_tbl.extend(l_delete_task_id_tbl.count);
418
419 DELETE_TASK_PVT(
420 p_project_in_rec => L_PROJECT_IN_REC,
421 p_structure_in_rec => L_STRUCTURE_IN_REC,
422 p_delete_task_id_tbl => l_delete_task_id_tbl,
423 p_delete_task_ver_id_tbl => l_delete_task_ver_id_tbl,
424 x_del_task_out_obj_tbl => i_del_task_out_obj_tbl ,
425 x_del_task_status => i_del_task_status,
426 x_del_task_msg_data => i_del_task_msg_data );
427
428 L_PROJECT_OUT_OBJ.P_DELETE_TASK_OUT_OBJ_TBL := i_del_task_out_obj_tbl;
429 L_PROJECT_OUT_OBJ.P_DELETE_TASK_STATUS := i_del_task_status;
430 L_PROJECT_OUT_OBJ.del_task_msg_data := i_del_task_msg_data;
431
432 commit;
433
434 /* SRIDHAR_COMMIT_ISSUE Start Change */
435 end if ;
436
437 if ( p_sync_mode <> 'D') then
438 /* COMMIT_ISSUE End Change */
439
440 -- org_context Bug 12914488
441 OPEN proj_ou_id_csr (L_PROJECT_IN_REC.PA_PROJECT_ID);
442 FETCH proj_ou_id_csr into l_ou_id;
443 CLOSE proj_ou_id_csr;
444 log_pvt('SYNC_PROJECTS UPDATE_PROJECT', '############# org_context: L_PROJECT_IN_REC.PA_PROJECT_ID '|| L_PROJECT_IN_REC.PA_PROJECT_ID);
445 log_pvt('SYNC_PROJECTS UPDATE_PROJECT', '############# org_context: l_ou_id'|| l_ou_id);
446 PA_MOAC_UTILS.MO_INIT_SET_CONTEXT
447 (
448 p_org_id => l_ou_id
449 , p_product_code => 'PA'
450 , p_msg_count => l_msg_count
451 , p_msg_data => l_msg_data
452 , p_return_status => l_return_status
453 );
454 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
455 RAISE FND_API.G_EXC_ERROR ;
456 END IF ;
457 -- org_context changes end
458 PA_PROJECT_PUB.UPDATE_PROJECT( P_API_VERSION_NUMBER => 1.0,
459 P_COMMIT => fnd_api.g_false,
460 P_INIT_MSG_LIST => 'T',
461 P_MSG_COUNT => X_MSG_COUNT,
462 P_MSG_DATA => X_MSG_DATA,
463 P_RETURN_STATUS => l_RETURN_STATUS,
464 P_WORKFLOW_STARTED => L_WORKFLOW_STARTED,
465 P_PM_PRODUCT_CODE => 'PRIMAVERA',
466 P_PASS_ENTIRE_STRUCTURE => 'Y',
467 P_PROJECT_IN => L_PROJECT_IN_REC,
468 P_PROJECT_OUT => L_PROJECT_OUT_REC,
469 P_TASKS_IN => L_TASKS_IN_REC_TBL,
470 P_TASKS_OUT => L_TASKS_OUT_REC_TBL,
471 P_STRUCTURE_IN => L_STRUCTURE_IN_REC
472 );
473
474 log_pvt('MAIN','after update_project '||l_RETURN_STATUS);
475 log_pvt('MAIN','after L_PROJECT_OUT_REC.pa_project_id;'||L_PROJECT_OUT_REC.pa_project_id);
476 log_pvt('MAIN','after L_PROJECT_OUT_REC.pa_project_number '||L_PROJECT_OUT_REC.pa_project_number);
477 log_pvt('MAIN','L_PROJECT_OUT_REC.return_status '||L_PROJECT_OUT_REC.return_status);
478
479 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := L_PROJECT_IN_REC.pa_project_id;
480 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := L_PROJECT_IN_REC.pa_project_number;
481
482 /* COMMIT_ISSUE Start Change */
483 else
484 L_PROJECT_OUT_OBJ.PA_PROJECT_ID := L_PROJECT_IN_REC.pa_project_id;
485 L_PROJECT_OUT_OBJ.PA_PROJECT_NUMBER := L_PROJECT_IN_REC.pa_project_number;
486 l_return_status := 'S';
487 end if;
488 /* COMMIT_ISSUE End Change */
489 END IF;
490
491 x_msg_count := nvl(x_msg_count,1);
492
493 if ( x_msg_count > 10 ) then
494 x_msg_count := 10;
495 end if;
496 for i in 1..x_msg_count loop
497 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
498 ,p_msg_index => x_msg_count
499 ,p_data => l_data
500 ,p_msg_index_out => l_msg_index_out
501 );
502
503 -- dbms_output.put_line ('Error Message: ' ||l_data);
504 log_pvt('MAIN','ERORRS : '||l_data);
505 l_project_out_obj.msg_data := l_data;
506
507 end loop;
508
509 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_return_status;
510
511 i_task_out_tbl.delete;
512 i_task_out_tbl.extend(L_TASKS_OUT_REC_TBL.count);
513
514
515 log_pvt('MAIN','before task_table '||L_PROJECT_OUT_OBJ.RETURN_STATUS);
516
517 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
518 if (L_TASKS_OUT_REC_TBL is not null) then
519 if (L_TASKS_OUT_REC_TBL.count > 0) then
520
521 for l1 in L_TASKS_OUT_REC_TBL.first .. L_TASKS_OUT_REC_TBL.last loop
522
523 L_TASK_OUT_REC := L_TASKS_OUT_REC_TBL(l1);
524
525 log_pvt('OUT','L_TASK_OUT_REC.pa_task_id '||L_TASK_OUT_REC.pa_task_id);
526 log_pvt('OUT','L_TASK_OUT_REC.pm_task_reference'||L_TASK_OUT_REC.pm_task_reference);
527 log_pvt('OUT','L_TASK_OUT_REC.return_status '||L_TASK_OUT_REC.return_status);
528 log_pvt('OUT','L_TASK_OUT_REC.task_version_id '||L_TASK_OUT_REC.task_version_id);
529 log_pvt('OUT','l_task_id_ref_tbl(L_TASK_OUT_REC.pm_task_reference) '||l_task_id_ref_tbl(L_TASK_OUT_REC.pm_task_reference));
530 log_pvt('OUT','l_task_com_id_tbl(l_task_id_ref_tbl(L_TASK_OUT_REC.pm_task_reference)) '||l_task_com_id_tbl(l_task_id_ref_tbl(L_TASK_OUT_REC.pm_task_reference)));
531
532 i_task_out_obj.pa_task_id := L_TASK_OUT_REC.pa_task_id;
533 log_pvt('OUT','Step 1 ');
534 i_task_out_obj.pm_task_reference := L_TASK_OUT_REC.pm_task_reference;
535 log_pvt('OUT','Step 2');
536 i_task_out_obj.return_status := L_TASK_OUT_REC.return_status;
537 log_pvt('OUT','Step 3 ');
538 i_task_out_obj.task_version_id := L_TASK_OUT_REC.task_version_id;
539 log_pvt('OUT','Step 4 ');
540 i_task_out_obj.aia_common_id := l_task_com_id_tbl(l_task_id_ref_tbl(L_TASK_OUT_REC.pm_task_reference));
541 log_pvt('OUT','Step 5 ');
542
543 i_task_out_tbl(l1) := i_task_out_obj;
544 log_pvt('OUT','Step 6 ');
545
546 end loop;
547 end if;
548 end if;
549 end if;
550
551 log_pvt('MAIN','after task_table ');
552 L_PROJECT_OUT_OBJ.P_TASK_OUT_OBJ_TBL := i_task_out_tbl;
553
554 EXCEPTION
555
556 WHEN OTHERS THEN
557 log_pvt('MAIN','raise 1000');
558 raise;
559 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
560
561 END ;
562
563 END IF;
564
565 ------- Project Creation / Update Ends -------------------------------
566
567
568 log_pvt('MAIN','SYNC_PROJECTS before resource assignments count : '||g_res_pm_project_reference.count);
569
570
571 ------- Project Resource Assignment Creation / Update Start -------------------------------
572
573 /* COMMIT_ISSUE Start Change */
574 if ( ( l_project_out_obj.return_status = 'S' and g_res_pm_project_reference.count > 0 )
575 AND
576 ( p_sync_mode <> 'D'))
577 /* COMMIT_ISSUE End Change */
578 then
579
580 log_pvt('MAIN','start if ');
581
582 c_res_currency_code.delete;
583 c_res_pm_project_reference.delete;
584 c_res_pa_project_id.delete;
585 c_res_pa_struct_version_id.delete;
586 c_res_pm_task_reference.delete;
587 c_res_pa_task_number.delete;
588 c_res_pa_task_id.delete;
589 c_res_pa_task_elem_ver_id.delete;
590 c_res_pm_task_asgmt_reference.delete;
591 c_res_pa_task_assignment_id.delete;
592 c_res_resource_alias.delete;
593 c_res_resource_list_member_id.delete;
594 c_res_start_date.delete;
595 c_res_end_date.delete;
596 c_res_planned_quantity.delete;
597 c_res_planned_total_raw_cost.delete;
598 c_res_planned_total_bur_cost.delete;
599
600 log_pvt('MAIN','after c_res init');
601
602 c_res_counter := 0;
603
604 u_res_currency_code.delete;
605 u_res_pm_project_reference.delete;
606 u_res_pa_project_id.delete;
607 u_res_pa_struct_version_id.delete;
608 u_res_pm_task_reference.delete;
609 u_res_pa_task_number.delete;
610 u_res_pa_task_id.delete;
611 u_res_pa_task_elem_ver_id.delete;
612 u_res_pm_task_asgmt_reference.delete;
613 u_res_pa_task_assignment_id.delete;
614 u_res_resource_alias.delete;
615 u_res_resource_list_member_id.delete;
616 u_res_start_date.delete;
617 u_res_end_date.delete;
618 u_res_planned_quantity.delete;
619 u_res_planned_total_raw_cost.delete;
620 u_res_planned_total_bur_cost.delete;
621
622 log_pvt('MAIN','after u_res init ');
623
624 u_res_counter := 0;
625
626
627 l_res_out_counter := 0;
628
629 o_task_asgmt_index.delete;
630
631 ou_task_asgmt_index.delete;
632
633
634 log_pvt('MAIN','before first select ');
635
636 begin
637
638 /**
639 select s.element_version_id
640 into L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
641 from pa_proj_elem_ver_structure s,
642 pa_proj_structure_types ppst,
643 pa_structure_types pst
644 where s.project_id = L_PROJECT_OUT_OBJ.pa_project_id
645 and ( ( s.status_code = 'STRUCTURE_WORKING' AND
646 exists ( select 'x' from pa_proj_workplan_attr w1
647 where w1.project_id = s.project_id
648 and w1.wp_enable_version_flag = 'Y' ) )
649 OR
650 ( s.status_code = 'STRUCTURE_PUBLISHED' AND
651 exists ( select 'x' from pa_proj_workplan_attr w2
652 where w2.project_id = s.project_id
653 and w2.wp_enable_version_flag = 'N' ))
654 )
655 and s.current_working_flag = 'Y'
656 and s.proj_element_id = ppst.proj_element_id
657 and ppst.structure_type_id = pst.structure_type_id
658 and pst.structure_type_class_code = 'WORKPLAN';
659 **/
660 select s.element_version_id, cost_resource_list_id
661 into L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID, l_cost_resource_list_id
662 from pa_proj_elem_ver_structure s,
663 pa_proj_structure_types ppst,
664 pa_structure_types pst,
665 pa_budget_versions bud,
666 pa_proj_fp_options opt
667 where s.project_id = L_PROJECT_OUT_OBJ.pa_project_id
668 and ( ( s.status_code = 'STRUCTURE_WORKING' AND
669 exists ( select 'x' from pa_proj_workplan_attr w1
670 where w1.project_id = s.project_id
671 and w1.wp_enable_version_flag = 'Y' ) )
672 OR
673 ( s.status_code = 'STRUCTURE_PUBLISHED' AND
674 exists ( select 'x' from pa_proj_workplan_attr w2
675 where w2.project_id = s.project_id
676 and w2.wp_enable_version_flag = 'N' ))
677 )
678 and s.current_working_flag = 'Y'
679 and s.proj_element_id = ppst.proj_element_id
680 and ppst.structure_type_id = pst.structure_type_id
681 and pst.structure_type_class_code = 'WORKPLAN'
682 and bud.project_structure_version_id = s.element_version_id
683 and bud.budget_version_id = opt.fin_plan_version_id
684 and opt.project_id = bud.project_id
685 and opt.fin_plan_type_id = 10
686 and opt.fin_plan_option_level_code = 'PLAN_VERSION';
687
688 exception
689 WHEN NO_DATA_FOUND THEN
690 L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID := null;
691 write_log ('MAIN', 'query condition unsatisfied');
692 when others then
693 log_pvt('MAIN','raise 2000');
694 raise;
695 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
696 end ;
697
698 begin
699
700 log_pvt('MAIN','before second 0 select ');
701
702 l_task_id_tbl.delete;
703 l_task_num_tbl.delete;
704 l_task_num_id_tbl.delete;
705 l_elem_ver_id_tbl.delete;
706 l_task_elem_ver_id_tbl.delete;
707
708 log_pvt('MAIN','before second 1 select ');
709
710 --Changed this query for fetching correct tasks in case of split structures.
711 select a.element_version_id , a.proj_element_id , c.element_number bulk collect
712 into l_elem_ver_id_tbl,l_task_id_tbl , l_task_num_tbl
713 from pa_proj_element_versions a , pa_proj_elem_ver_structure s, pa_proj_elements c, pa_proj_element_versions d,
714 pa_proj_structure_types PPST, pa_integration_settings pis
715 where s.project_id = L_PROJECT_OUT_OBJ.PA_PROJECT_ID
716 and s.project_id = a.project_id
717 and a.parent_structure_version_id = s.element_version_id
718 and a.object_type = 'PA_TASKS'
719 and ( ( s.status_code = 'STRUCTURE_WORKING' AND
720 exists ( select 'x' from pa_proj_workplan_attr w1
721 where w1.project_id = s.project_id
722 and w1.wp_enable_version_flag = 'Y' ) )
723 OR
724 ( s.status_code = 'STRUCTURE_PUBLISHED' AND
725 exists ( select 'x' from pa_proj_workplan_attr w2
726 where w2.project_id = s.project_id
727 and w2.wp_enable_version_flag = 'N' )
728 )
729 )
730 and s.current_working_flag = 'Y'
731 and c.proj_element_id = a.proj_element_id
732 and c.parent_structure_id = d.PROJ_ELEMENT_ID
733 and d.ELEMENT_VERSION_ID = s.ELEMENT_VERSION_ID
734 and pis.project_id = s.project_id
735 and Decode(pis.structure_type, 'FINANCIAL', 6, 'WORKPLAN', 1, NULL, -1) = Decode(pis.structure_type, NULL, -1, PPST.STRUCTURE_TYPE_ID)
736 AND ppst.proj_element_id = d.proj_element_id;
737
738 log_pvt('MAIN','after second 1 select '||l_task_id_tbl.count);
739
740 if (l_task_id_tbl is not null) then
741 if (l_task_id_tbl.count > 0) then
742
743 for t1 in l_task_id_tbl.first .. l_task_id_tbl.last loop
744
745 l_task_elem_ver_id_tbl(l_task_num_tbl(t1)) := l_elem_ver_id_tbl(t1);
746
747 l_task_num_id_tbl(l_task_num_tbl(t1)) := l_task_id_tbl(t1);
748
749 end loop;
750
751 end if;
752 end if;
753
754 exception
755 when others then
756 log_pvt('MAIN','raise 3000');
757 raise;
758 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
759 end ;
760
761 begin
762 Select plan_in_multi_curr_flag into l_plan_in_multi_curr_flag from pa_proj_fp_options WHERE project_id = L_PROJECT_OUT_OBJ.PA_PROJECT_ID
763 AND FIN_PLAN_TYPE_ID = 10 AND FIN_PLAN_OPTION_LEVEL_CODE = 'PLAN_TYPE';
764
765 log_pvt('MAIN','plan_in_multi_curr_flag = '||l_plan_in_multi_curr_flag);
766 log_pvt('MAIN','gl_currency_code = '||gl_currency_code);
767
768 if (l_plan_in_multi_curr_flag = 'N') then
769 begin
770
771 Select 'x' INTO l_plan_in_multi_curr_flag from pa_projects_all where project_id = L_PROJECT_OUT_OBJ.PA_PROJECT_ID
772 and PROJECT_CURRENCY_CODE = gl_currency_code ;
773 log_pvt('MAIN','plan_in_multi_curr_flag 2nd = '||l_plan_in_multi_curr_flag);
774
775 exception
776 when NO_DATA_FOUND then
777 log_pvt('MAIN','Exception : Plan in Multiple Currencies not enabled');
778 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
779 pa_utils.add_message
780 ( p_app_short_name => 'PA'
781 ,p_msg_name => 'PA_PLAN_MC_NOT_ENABLED'
782 );
783 X_MSG_COUNT := FND_MSG_PUB.count_msg ; -- amehrotr
784 --L_PROJECT_OUT_OBJ.msg_data := 'PA_PLAN_MC_NOT_ENABLED';
785 --RAISE;
786 for i in 1..x_msg_count loop
787
788 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
789 ,p_msg_index => x_msg_count
790 ,p_data => l_data
791 ,p_msg_index_out => l_msg_index_out
792 );
793
794 -- dbms_output.put_line ('Error Message: ' ||l_data);
795 log_pvt('MAIN','ERORRS : '||l_data);
796 l_project_out_obj.msg_data := l_data;
797 end loop;
798 END;
799
800 END IF;
801 end;
802
803
804 log_pvt('MAIN','before resource assignments '||L_PROJECT_OUT_OBJ.RETURN_STATUS);
805
806
807 log_pvt('MAIN','before for loop resource assignments count : '||g_res_pm_project_reference.count);
808
809 if ( l_cost_resource_list_id is not null ) then
810
811 for i in g_res_pm_project_reference.first .. g_res_pm_project_reference.last loop
812
813 /******* Bug 10077151 changes start ******************/
814
815 if (nvl(g_res_pa_task_assignment_id(i),PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
816 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
817
818 select count(*) into t_crt_count
819 from pa_resource_assignments
820 where resource_assignment_id = g_res_pa_task_assignment_id(i);
821
822 log_pvt('MAIN','t_crt_count : '||t_crt_count);
823
824 If t_crt_count = 0 then
825
826 g_res_pa_task_assignment_id(i) := NULL ;
827
828 end if ;
829
830 end if;
831
832 /******* Bug 10077151 changes end *******************/
833
834 log_pvt('MAIN','LOOP : g_res_pa_task_assignment_id(i) '||g_res_pa_task_assignment_id(i));
835
836 if ( nvl(g_res_pa_task_assignment_id(i),PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
837 = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
838
839 c_res_counter := c_res_counter + 1;
840
841 c_res_currency_code.extend(1);
842 c_res_pm_project_reference.extend(1);
843 c_res_pa_project_id.extend(1);
844 c_res_pa_struct_version_id.extend(1);
845 c_res_pm_task_reference.extend(1);
846 c_res_pa_task_number.extend(1);
847 c_res_pa_task_id.extend(1);
848 c_res_pa_task_elem_ver_id.extend(1);
849 c_res_pm_task_asgmt_reference.extend(1);
850 c_res_pa_task_assignment_id.extend(1);
851 c_res_resource_alias.extend(1);
852 c_res_resource_list_member_id.extend(1);
853 c_res_start_date.extend(1);
854 c_res_end_date.extend(1);
855 c_res_planned_quantity.extend(1);
856 c_res_planned_total_raw_cost.extend(1);
857 c_res_planned_total_bur_cost.extend(1);
858
859 o_task_asgmt_index.extend(1);
860
861 log_pvt('MAIN',' PROJ ID '||L_PROJECT_OUT_OBJ.PA_PROJECT_ID||' struct '||L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID);
862
863 g_res_pa_project_id(i) := L_PROJECT_OUT_OBJ.PA_PROJECT_ID;
864 g_res_pa_task_id(i) := l_task_num_id_tbl(g_res_pa_task_number(i));
865 g_res_pa_struct_version_id(i) := L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID;
866
867 c_res_currency_code(c_res_counter) := gl_currency_code;
868 c_res_pm_project_reference(c_res_counter) := g_res_pm_project_reference(i);
869 c_res_pa_project_id(c_res_counter) := g_res_pa_project_id(i);
870 c_res_pa_struct_version_id(c_res_counter) := g_res_pa_struct_version_id(i);
871 c_res_pm_task_reference(c_res_counter) := g_res_pm_task_reference(i);
872 c_res_pa_task_number(c_res_counter) := g_res_pa_task_number(i);
873 c_res_pa_task_id(c_res_counter) := g_res_pa_task_id(i);
874
875 log_pvt('MAIN',' Before l_task_elem_ver_id_tbl(g_res_pa_task_number(i))');
876
877 c_res_pa_task_elem_ver_id(c_res_counter) := l_task_elem_ver_id_tbl(g_res_pa_task_number(i));
878
879 c_res_pm_task_asgmt_reference(c_res_counter) := g_res_pm_task_asgmt_reference(i);
880 c_res_pa_task_assignment_id(c_res_counter) := g_res_pa_task_assignment_id(i);
881 c_res_resource_alias(c_res_counter) := g_res_resource_alias(i);
882 c_res_resource_list_member_id(c_res_counter) := g_res_resource_list_member_id(i);
883 c_res_start_date(c_res_counter) := g_res_start_date(i);
884 c_res_end_date(c_res_counter) := g_res_end_date(i);
885
886 log_pvt('MAIN',' Before Get_rate_based_flag 0 ');
887 log_pvt('MAIN',' Before Get_rate_based_flag'||g_res_resource_list_member_id(i));
888
889 IF PA_PLANNING_RESOURCE_UTILS.Get_rate_based_flag(g_res_resource_list_member_id(i))='Y' THEN -- Bug 8812098
890 c_res_planned_quantity(c_res_counter) := g_res_planned_quantity(i);
891 ELSE
892 c_res_planned_quantity(c_res_counter) := g_res_planned_total_raw_cost(i);
893 END IF;
894
895 log_pvt('MAIN',' After Get_rate_based_flag 0 ');
896
897 c_res_planned_total_raw_cost(c_res_counter) := g_res_planned_total_raw_cost(i);
898 c_res_planned_total_bur_cost(c_res_counter) := g_res_planned_total_bur_cost(i);
899
900 o_task_asgmt_index(c_res_counter) := c_res_counter;
901
902 end if;
903
904 log_pvt('MAIN',' After Create If ');
905
906 if ( nvl(g_res_pa_task_assignment_id(i),PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
907 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
908
909
910 u_res_counter := u_res_counter + 1;
911
912 log_pvt('MAIN','LOOP : u_res_counter '|| u_res_counter);
913
914 u_res_currency_code.extend(1);
915 u_res_pm_project_reference.extend(1);
916 u_res_pa_project_id.extend(1);
917 u_res_pa_struct_version_id.extend(1);
918 u_res_pm_task_reference.extend(1);
919 u_res_pa_task_number.extend(1);
920 u_res_pa_task_id.extend(1);
921 u_res_pa_task_elem_ver_id.extend(1);
922 u_res_pm_task_asgmt_reference.extend(1);
923 u_res_pa_task_assignment_id.extend(1);
924 u_res_resource_alias.extend(1);
925 u_res_resource_list_member_id.extend(1);
926 u_res_start_date.extend(1);
927 u_res_end_date.extend(1);
928 u_res_planned_quantity.extend(1);
929 u_res_planned_total_raw_cost.extend(1);
930 u_res_planned_total_bur_cost.extend(1);
931
932 ou_task_asgmt_index.extend(1);
933
934 u_res_currency_code(u_res_counter) := gl_currency_code;
935 u_res_pm_project_reference(u_res_counter) := g_res_pm_project_reference(i);
936 u_res_pa_project_id(u_res_counter) := g_res_pa_project_id(i);
937 u_res_pa_struct_version_id(u_res_counter) := g_res_pa_struct_version_id(i);
938 u_res_pm_task_reference(u_res_counter) := g_res_pm_task_reference(i);
939 u_res_pa_task_number(u_res_counter) := g_res_pa_task_number(i);
940 u_res_pa_task_id(u_res_counter) := g_res_pa_task_id(i);
941
942 u_res_pa_task_elem_ver_id(u_res_counter) := l_task_elem_ver_id_tbl(g_res_pa_task_number(i));
943
944 u_res_pm_task_asgmt_reference(u_res_counter) := g_res_pm_task_asgmt_reference(i);
945 u_res_pa_task_assignment_id(u_res_counter) := g_res_pa_task_assignment_id(i);
946 u_res_resource_alias(u_res_counter) := g_res_resource_alias(i);
947 u_res_resource_list_member_id(u_res_counter) := g_res_resource_list_member_id(i);
948 u_res_start_date(u_res_counter) := g_res_start_date(i);
949 u_res_end_date(u_res_counter) := g_res_end_date(i);
950 IF PA_PLANNING_RESOURCE_UTILS.Get_rate_based_flag(g_res_resource_list_member_id(i))='Y' THEN -- Bug 8812098
951 u_res_planned_quantity(u_res_counter) := g_res_planned_quantity(i);
952 ELSE
953 u_res_planned_quantity(u_res_counter) := g_res_planned_total_raw_cost(i);
954 END IF;
955 u_res_planned_total_raw_cost(u_res_counter) := g_res_planned_total_raw_cost(i);
956 u_res_planned_total_bur_cost(u_res_counter) := g_res_planned_total_bur_cost(i);
957
958 ou_task_asgmt_index(u_res_counter) := u_res_counter;
959
960 end if;
961
962 BEGIN
963
964
965 if ( l_project_out_obj.return_status = 'S' and ( ( c_res_counter = 1000 ) or ( i = g_res_pm_project_reference.last and c_res_counter > 0 ) ) ) then
966
967 ------ create resource assignments start --------------------
968
969 for k1 in c_res_pm_project_reference.first .. c_res_pm_project_reference.last loop
970
971 log_pvt('MAIN',' c_res_pm_project_reference '||c_res_pm_project_reference(k1));
972 log_pvt('MAIN',' c_res_pa_project_id '||c_res_pa_project_id(k1));
973 log_pvt('MAIN',' c_res_pa_struct_version_id '|| c_res_pa_struct_version_id(k1));
974 log_pvt('MAIN',' c_res_pm_task_reference '||c_res_pm_task_reference(k1));
975 log_pvt('MAIN',' c_res_pa_task_id '||c_res_pa_task_id(k1));
976 log_pvt('MAIN',' c_res_pa_task_elem_ver_id '||c_res_pa_task_elem_ver_id(k1));
977 log_pvt('MAIN',' c_res_pm_task_asgmt_reference '||c_res_pm_task_asgmt_reference(k1));
978 log_pvt('MAIN',' c_res_pa_task_assignment_id '||c_res_pa_task_assignment_id(k1));
979 log_pvt('MAIN',' c_res_resource_alias '||c_res_resource_alias(k1));
980 log_pvt('MAIN',' c_res_resource_list_member_id '||c_res_resource_list_member_id(k1));
981 log_pvt('MAIN',' c_res_start_date '||c_res_start_date(k1));
982 log_pvt('MAIN',' c_res_end_date '||c_res_end_date(k1));
983 log_pvt('MAIN',' c_res_planned_quantity '||c_res_pm_task_asgmt_reference(k1));
984 log_pvt('MAIN',' c_res_planned_total_raw_cost '||c_res_planned_total_raw_cost(k1));
985 log_pvt('MAIN',' c_res_planned_total_bur_cost '||c_res_planned_total_bur_cost(k1));
986 log_pvt('MAIN',' c_res_currency_code '||c_res_currency_code(k1));
987
988 end loop;
989
990 log_pvt('MAIN','Start creating resource assignments count : '||c_res_counter);
991
992 PA_TASK_ASSIGNMENTS_PUB.Init_Task_Assignments;
993
994 PA_TASK_ASSIGNMENTS_PUB.Load_Task_Assignments
995 ( p_api_version_number => 1.0
996 ,p_commit => fnd_api.g_false
997 ,p_init_msg_list => FND_API.G_TRUE
998 ,p_pm_project_reference => c_res_pm_project_reference
999 ,p_pa_project_id => c_res_pa_project_id
1000 ,p_pa_structure_version_id => c_res_pa_struct_version_id
1001 ,p_pm_task_reference => c_res_pm_task_reference
1002 ,p_pa_task_id => c_res_pa_task_id
1003 ,p_pa_task_element_version_id => c_res_pa_task_elem_ver_id
1004 ,p_pm_task_asgmt_reference => c_res_pm_task_asgmt_reference
1005 ,p_pa_task_assignment_id => c_res_pa_task_assignment_id
1006 ,p_resource_alias => c_res_resource_alias
1007 ,p_resource_list_member_id => c_res_resource_list_member_id
1008 ,p_start_date => c_res_start_date
1009 ,p_end_date => c_res_end_date
1010 ,p_planned_quantity => c_res_planned_quantity
1011 ,p_planned_total_raw_cost => c_res_planned_total_raw_cost
1012 ,p_planned_total_bur_cost => c_res_planned_total_bur_cost
1013 ,p_currency_code => c_res_currency_code
1014 ,x_msg_count => X_MSG_COUNT
1015 ,x_msg_data => X_MSG_DATA
1016 ,x_return_status => l_RETURN_STATUS
1017 ) ;
1018
1019 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
1020 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1021 end if;
1022
1023 log_pvt('MAIN','creating resource assignments: after load '||l_RETURN_STATUS);
1024
1025 if ( l_RETURN_STATUS = 'S' ) then
1026
1027 PA_TASK_ASSIGNMENTS_PUB.Execute_Create_Task_Asgmts
1028 ( p_api_version_number => 1.0
1029 ,p_commit => fnd_api.g_false
1030 ,p_init_msg_list => FND_API.G_TRUE
1031 ,p_pm_product_code => 'P6PROJECT'
1032 ,p_pm_project_reference => L_PROJECT_IN_REC.PM_PROJECT_REFERENCE
1033 ,p_pa_project_id => L_PROJECT_OUT_OBJ.PA_PROJECT_ID
1034 ,p_pa_structure_version_id => L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
1035 ,x_msg_count => X_MSG_COUNT
1036 ,x_msg_data => X_MSG_DATA
1037 ,x_return_status => l_RETURN_STATUS
1038 ) ;
1039
1040 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
1041 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1042 end if;
1043
1044 l_project_out_obj.msg_data := x_msg_data;
1045
1046 log_pvt('MAIN','creating resource assignments: after execute '||l_RETURN_STATUS||' x_msg_count '||x_msg_count);
1047
1048 if ( l_return_status <> 'S') then
1049 l_return_status := 'E';
1050 end if;
1051
1052 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1053
1054 x_msg_count := nvl(x_msg_count,1);
1055
1056 if ( x_msg_count > 10 ) then
1057 x_msg_count := 10;
1058 end if;
1059 for i in 1..x_msg_count loop
1060
1061 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
1062 ,p_msg_index => x_msg_count
1063 ,p_data => l_data
1064 ,p_msg_index_out => l_msg_index_out
1065 );
1066
1067 -- dbms_output.put_line ('Error Message: ' ||l_data);
1068 log_pvt('MAIN','ERORRS : '||l_data);
1069 l_project_out_obj.msg_data := l_data;
1070
1071 end loop;
1072
1073
1074 end if;
1075
1076 if ( l_RETURN_STATUS = 'S' ) then
1077
1078 o_pm_task_asgmt_reference.delete;
1079 o_pa_task_assignment_id.delete;
1080 o_pm_task_reference.delete;
1081 o_pa_task_id.delete;
1082 o_resource_alias.delete;
1083 o_resource_list_member_id.delete;
1084
1085
1086 o_pm_task_asgmt_reference.extend(c_res_pm_project_reference.count);
1087 o_pa_task_assignment_id.extend(c_res_pm_project_reference.count);
1088 o_pm_task_reference.extend(c_res_pm_project_reference.count);
1089 o_pa_task_id.extend(c_res_pm_project_reference.count);
1090 o_resource_alias.extend(c_res_pm_project_reference.count);
1091 o_resource_list_member_id.extend(c_res_pm_project_reference.count);
1092 o_cbs_element_id.extend(c_res_pm_project_reference.count);
1093
1094 PA_TASK_ASSIGNMENTS_PUB.Fetch_Task_Assignments
1095 ( p_api_version_number => 1.0
1096 ,p_init_msg_list => FND_API.G_TRUE
1097 ,p_task_asgmt_index => o_task_asgmt_index
1098 ,p_pm_task_asgmt_reference => o_pm_task_asgmt_reference
1099 ,p_pa_task_assignment_id => o_pa_task_assignment_id
1100 ,p_pm_task_reference => o_pm_task_reference
1101 ,p_pa_task_id => o_pa_task_id
1102 ,p_resource_alias => o_resource_alias
1103 ,p_resource_list_member_id => o_resource_list_member_id
1104 ,p_cbs_element_id => o_cbs_element_id -- CBS is not supported for primavera, this is just a place holder 16598322
1105 ,x_return_status => l_RETURN_STATUS );
1106
1107 log_pvt('MAIN','creating resource assignments: after fetch '||l_RETURN_STATUS);
1108
1109 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
1110 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1111 end if;
1112
1113 l_res_asgmt_obj_tbl.extend(o_task_asgmt_index.COUNT);
1114
1115 FOR j in 1..o_task_asgmt_index.COUNT LOOP
1116
1117
1118 log_pvt('OUT',' o_pa_task_assignment_id(j) '||o_pa_task_assignment_id(j));
1119 log_pvt('OUT',' o_pm_task_asgmt_reference(j) '||o_pm_task_asgmt_reference(j));
1120 log_pvt('OUT',' o_pa_task_id(j) '||o_pa_task_id(j));
1121 log_pvt('OUT',' c_res_pm_task_asgmt_reference(j) '||c_res_pm_task_asgmt_reference(j));
1122
1123 l_res_asgmt_obj.RESOURCE_ASSIGNMENT_ID := o_pa_task_assignment_id(j);
1124 l_res_asgmt_obj.PM_RES_ASSIGN_REFERENCE := c_res_pm_task_asgmt_reference(j);
1125 l_res_asgmt_obj.PA_TASK_ID := o_pa_task_id(j);
1126
1127 l_res_asgmt_obj.aia_common_id := l_res_com_id_tbl(l_res_id_ref_tbl(c_res_pm_task_asgmt_reference(j)));
1128
1129
1130
1131 if ( o_pa_task_assignment_id(j) is not null ) then
1132 l_res_asgmt_obj.RETURN_STATUS := 'S';
1133 else
1134 l_res_asgmt_obj.RETURN_STATUS := 'E';
1135 end if;
1136
1137 l_res_out_counter := l_res_out_counter + 1;
1138 l_res_asgmt_obj_tbl(l_res_out_counter) := l_res_asgmt_obj;
1139
1140 END LOOP;
1141
1142 end if; /* if return success */
1143
1144 c_res_counter := 0;
1145
1146 c_res_currency_code.delete;
1147 c_res_pm_project_reference.delete;
1148 c_res_pa_project_id.delete;
1149 c_res_pa_struct_version_id.delete;
1150 c_res_pm_task_reference.delete;
1151 c_res_pa_task_number.delete;
1152 c_res_pa_task_id.delete;
1153 c_res_pa_task_elem_ver_id.delete;
1154 c_res_pm_task_asgmt_reference.delete;
1155 c_res_pa_task_assignment_id.delete;
1156 c_res_resource_alias.delete;
1157 c_res_resource_list_member_id.delete;
1158 c_res_start_date.delete;
1159 c_res_end_date.delete;
1160 c_res_planned_quantity.delete;
1161 c_res_planned_total_raw_cost.delete;
1162 c_res_planned_total_bur_cost.delete;
1163
1164 o_task_asgmt_index.delete;
1165
1166 o_task_asgmt_index.delete;
1167 o_pm_task_asgmt_reference.delete;
1168 o_pa_task_assignment_id.delete;
1169 o_pm_task_reference.delete;
1170 o_pa_task_id.delete;
1171 o_resource_alias.delete;
1172 o_resource_list_member_id.delete;
1173
1174 log_pvt('MAIN','creating resource assignments: end ');
1175
1176 end if; /* create assignments */
1177
1178 ------ create resource assignments end --------------------
1179
1180 if ( l_project_out_obj.return_status = 'S' and ( ( u_res_counter = 1000 ) or ( i = g_res_pm_project_reference.last and u_res_counter > 0 ) ) ) then
1181
1182 ------ update resource assignments start --------------------
1183
1184 log_pvt('MAIN','updating resource assignments: start '||u_res_counter);
1185
1186 for k2 in u_res_pm_project_reference.first .. u_res_pm_project_reference.last loop
1187
1188
1189 log_pvt('MAIN',' u_res_pm_project_reference '||u_res_pm_project_reference(k2));
1190 log_pvt('MAIN',' u_res_pa_project_id '||u_res_pa_project_id(k2));
1191 log_pvt('MAIN',' u_res_pa_struct_version_id '|| u_res_pa_struct_version_id(k2));
1192 log_pvt('MAIN',' u_res_pm_task_reference '||u_res_pm_task_reference(k2));
1193 log_pvt('MAIN',' u_res_pa_task_id '||u_res_pa_task_id(k2));
1194 log_pvt('MAIN',' u_res_pa_task_elem_ver_id '||u_res_pa_task_elem_ver_id(k2));
1195 log_pvt('MAIN',' u_res_pm_task_asgmt_reference '||u_res_pm_task_asgmt_reference(k2));
1196 log_pvt('MAIN',' u_res_pa_task_assignment_id '||u_res_pa_task_assignment_id(k2));
1197 log_pvt('MAIN',' u_res_resource_alias '||u_res_resource_alias(k2));
1198 log_pvt('MAIN',' u_res_resource_list_member_id '||u_res_resource_list_member_id(k2));
1199 log_pvt('MAIN',' u_res_start_date '||u_res_start_date(k2));
1200 log_pvt('MAIN',' u_res_end_date '||u_res_end_date(k2));
1201 log_pvt('MAIN',' u_res_planned_quantity '||u_res_pm_task_asgmt_reference(k2));
1202 log_pvt('MAIN',' u_res_planned_total_raw_cost '||u_res_planned_total_raw_cost(k2));
1203 log_pvt('MAIN',' u_res_planned_total_bur_cost '||u_res_planned_total_bur_cost(k2));
1204 log_pvt('MAIN',' u_res_currency_code '||u_res_currency_code(k2));
1205
1206 end loop;
1207
1208 PA_TASK_ASSIGNMENTS_PUB.Init_Task_Assignments;
1209
1210 PA_TASK_ASSIGNMENTS_PUB.Load_Task_Assignments
1211 ( p_api_version_number => 1.0
1212 ,p_commit => fnd_api.g_false
1213 ,p_init_msg_list => FND_API.G_TRUE
1214 ,p_pm_project_reference => u_res_pm_project_reference
1215 ,p_pa_project_id => u_res_pa_project_id
1216 ,p_pa_structure_version_id => u_res_pa_struct_version_id
1217 ,p_pm_task_reference => u_res_pm_task_reference
1218 ,p_pa_task_id => u_res_pa_task_id
1219 ,p_pa_task_element_version_id => u_res_pa_task_elem_ver_id
1220 ,p_pm_task_asgmt_reference => u_res_pm_task_asgmt_reference
1221 ,p_pa_task_assignment_id => u_res_pa_task_assignment_id
1222 ,p_resource_alias => u_res_resource_alias
1223 ,p_resource_list_member_id => u_res_resource_list_member_id
1224 ,p_start_date => u_res_start_date
1225 ,p_end_date => u_res_end_date
1226 ,p_planned_quantity => u_res_planned_quantity
1227 ,p_planned_total_raw_cost => u_res_planned_total_raw_cost
1228 ,p_planned_total_bur_cost => u_res_planned_total_bur_cost
1229 --,p_currency_code => u_res_currency_code --removed currency code to not check for override
1230 ,x_msg_count => X_MSG_COUNT
1231 ,x_msg_data => X_MSG_DATA
1232 ,x_return_status => l_RETURN_STATUS
1233 ) ;
1234
1235 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
1236 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1237 end if;
1238
1239 log_pvt('MAIN','updating resource assignments: after load ');
1240 log_pvt('MAIN','updating resource assignments: after load, return status : '||l_RETURN_STATUS);
1241
1242 if ( l_RETURN_STATUS = 'S' ) then
1243
1244 PA_TASK_ASSIGNMENTS_PUB.Execute_Update_Task_Asgmts
1245 ( p_api_version_number => 1.0
1246 ,p_commit => fnd_api.g_false
1247 ,p_init_msg_list => FND_API.G_TRUE
1248 ,p_pm_product_code => 'P6PROJECT'
1249 ,p_pm_project_reference => L_PROJECT_IN_REC.PM_PROJECT_REFERENCE
1250 ,p_pa_project_id => L_PROJECT_IN_REC.PA_PROJECT_ID
1251 ,p_pa_structure_version_id => L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
1252 ,x_msg_count => X_MSG_COUNT
1253 ,x_msg_data => X_MSG_DATA
1254 ,x_return_status => l_RETURN_STATUS
1255 ) ;
1256
1257 log_pvt('MAIN','updating resource assignments: after execute '||l_RETURN_STATUS);
1258
1259 x_msg_count := nvl(x_msg_count,1);
1260 if ( x_msg_count > 10 ) then
1261 x_msg_count := 10;
1262 end if;
1263 for i in 1..x_msg_count loop
1264
1265 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
1266 ,p_msg_index => x_msg_count
1267 ,p_data => l_data
1268 ,p_msg_index_out => l_msg_index_out
1269 );
1270
1271 -- dbms_output.put_line ('Error Message: ' ||l_data);
1272 log_pvt('MAIN','ERORRS : '||l_data);
1273 l_project_out_obj.msg_data := l_data;
1274
1275
1276 end loop;
1277
1278 if ( l_return_status <> 'S') then
1279 l_return_status := 'E';
1280 end if;
1281
1282 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1283
1284
1285 PA_TASK_ASSIGNMENTS_PUB.Fetch_Task_Assignments
1286 ( p_api_version_number => 1.0
1287 ,p_init_msg_list => FND_API.G_TRUE
1288 ,p_task_asgmt_index => ou_task_asgmt_index
1289 ,p_pm_task_asgmt_reference => ou_pm_task_asgmt_reference
1290 ,p_pa_task_assignment_id => ou_pa_task_assignment_id
1291 ,p_pm_task_reference => ou_pm_task_reference
1292 ,p_pa_task_id => ou_pa_task_id
1293 ,p_resource_alias => ou_resource_alias
1294 ,p_resource_list_member_id => ou_resource_list_member_id
1295 ,p_cbs_element_id => o_cbs_element_id -- CBS is not supported for primavera, this is just a place holder
1296 ,x_return_status => l_RETURN_STATUS );
1297
1298 if ( L_PROJECT_OUT_OBJ.RETURN_STATUS = 'S' ) then
1299 L_PROJECT_OUT_OBJ.RETURN_STATUS := l_RETURN_STATUS;
1300 end if;
1301
1302 log_pvt('MAIN','updating resource assignments: after fetch '||ou_task_asgmt_index.COUNT);
1303
1304 l_res_asgmt_obj_tbl.extend(ou_task_asgmt_index.COUNT);
1305
1306 l_res_asgmt_obj := SYSTEM.RES_ASGMT_OUT_OBJ(null,null,null,null,null);
1307 log_pvt('MAIN','updating resource assignments: after fetch '||ou_task_asgmt_index.COUNT);
1308
1309 FOR j in 1..u_res_counter LOOP
1310 -- FOR j in 1..ou_task_asgmt_index.COUNT LOOP
1311
1312
1313 l_res_asgmt_obj.RESOURCE_ASSIGNMENT_ID := ou_pa_task_assignment_id(j);
1314 l_res_asgmt_obj.PM_RES_ASSIGN_REFERENCE := u_res_pm_task_asgmt_reference(j);
1315 l_res_asgmt_obj.PA_TASK_ID := ou_pa_task_id(j);
1316
1317
1318 l_res_asgmt_obj.RESOURCE_ASSIGNMENT_ID := ou_pa_task_assignment_id(j);
1319 l_res_asgmt_obj.PA_TASK_ID := ou_pa_task_id(j);
1320
1321
1322 l_res_asgmt_obj.aia_common_id := l_res_com_id_tbl(l_res_id_ref_tbl(u_res_pm_task_asgmt_reference(j)));
1323
1324
1325 if ( ou_pa_task_assignment_id(j) is not null ) then
1326 l_res_asgmt_obj.RETURN_STATUS := 'S';
1327 else
1328 l_res_asgmt_obj.RETURN_STATUS := 'E';
1329 end if;
1330
1331 log_pvt('OUT',' END 2c c_res_pm_project_reference(j) '||u_res_pm_project_reference(j));
1332 l_res_out_counter := l_res_out_counter + 1;
1333 l_res_asgmt_obj_tbl(l_res_out_counter) := l_res_asgmt_obj;
1334
1335 log_pvt('OUT',' END 3 c_res_pm_project_reference(j) '||u_res_pm_project_reference(j));
1336
1337 END LOOP;
1338
1339 end if; /* if return success */
1340
1341 u_res_counter := 0;
1342
1343 u_res_currency_code.delete;
1344 u_res_pm_project_reference.delete;
1345 u_res_pa_project_id.delete;
1346 u_res_pa_struct_version_id.delete;
1347 u_res_pm_task_reference.delete;
1348 u_res_pa_task_number.delete;
1349 u_res_pa_task_id.delete;
1350 u_res_pa_task_elem_ver_id.delete;
1351 u_res_pm_task_asgmt_reference.delete;
1352 u_res_pa_task_assignment_id.delete;
1353 u_res_resource_alias.delete;
1354 u_res_resource_list_member_id.delete;
1355 u_res_start_date.delete;
1356 u_res_end_date.delete;
1357 u_res_planned_quantity.delete;
1358 u_res_planned_total_raw_cost.delete;
1359 u_res_planned_total_bur_cost.delete;
1360
1361 ou_task_asgmt_index.delete;
1362
1363 ou_task_asgmt_index.delete;
1364 ou_pm_task_asgmt_reference.delete;
1365 ou_pa_task_assignment_id.delete;
1366 ou_pm_task_reference.delete;
1367 ou_pa_task_id.delete;
1368 ou_resource_alias.delete;
1369 ou_resource_list_member_id.delete;
1370
1371 log_pvt('MAIN','updating resource assignments: end ');
1372
1373 end if; /* update resource assignments */
1374
1375 ------ update resource assignments end --------------------
1376
1377
1378 EXCEPTION
1379
1380 WHEN OTHERS THEN
1381 log_pvt('MAIN','raise 4000');
1382 raise;
1383 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
1384
1385 END ;
1386
1387
1388 end loop;
1389
1390 end if; /* if resource list assigned */
1391
1392 end if ; /* if resource assignments exists */
1393
1394
1395 ------- Project Resource Assignment Creation / Update End -------------------------------
1396
1397 log_pvt('MAIN','BEFORE END ');
1398
1399 L_PROJECT_OUT_OBJ.P_RES_ASGMT_OUT_OBJ_TBL := l_res_asgmt_obj_tbl;
1400
1401 /* Commit issue changes Start */
1402
1403 if ( p_sync_mode = 'D' ) then
1404
1405 if ( ( nvl(L_PROJECT_OUT_OBJ.P_DELETE_TASK_STATUS,'S') <> 'S' ) or ( nvl(L_PROJECT_OUT_OBJ.p_delete_res_asgmt_status,'S') <> 'S' ) ) then
1406
1407 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'E';
1408 else
1409 L_PROJECT_OUT_OBJ.RETURN_STATUS := 'S';
1410 x_return_status := 'S';
1411 end if;
1412 end if;
1413
1414 log_pvt('MAIN',' L_PROJECT_OUT_OBJ.RETURN_STATUS '||L_PROJECT_OUT_OBJ.RETURN_STATUS);
1415 log_pvt('MAIN',' L_PROJECT_OUT_OBJ.P_DELETE_TASK_STATUS '||L_PROJECT_OUT_OBJ.P_DELETE_TASK_STATUS);
1416 log_pvt('MAIN',' L_PROJECT_OUT_OBJ.L_PROJECT_OUT_OBJ.p_delete_res_asgmt_status'||L_PROJECT_OUT_OBJ.p_delete_res_asgmt_status);
1417
1418 /* Commit issue changes End */
1419
1420 if ( x_return_status = 'S' ) then
1421 x_return_status := L_PROJECT_OUT_OBJ.RETURN_STATUS;
1422 end if;
1423
1424 L_PROJECT_OUT_TBL(i) := L_PROJECT_OUT_OBJ;
1425
1426 --L_ROJECT_OUT_REC := LOAD_PROJECT_OUT ( L_PROJECT_OUT_REC,L_TASKS_OUT_REC);
1427 --X_RETURN_STATUS_OBJ_TBL := LOAD_RETURN_STATUS_OUT ( L_PROJECT_OUT_REC, L_TASKS_OUT_REC,P_MSG_COUNT,P_MSG_DATA,P_RETURN_STATUS);
1428 --X_CP_REQUEST_OBJ_TBL := LOAD_CP_REQUEST_OUT( L_PROJECT_OUT_REC, L_TASKS_OUT_REC,P_MSG_COUNT,P_MSG_DATA,P_RETURN_STATUS);
1429 ----------------------------------------------------------------
1430 -- Copy Integration Options from Source Projects to the new
1431 -- Project , Take the Out Project ID and from Integarion Options
1432 -- Copy the Integration Options
1433 ----------------------------------------------------------------
1434 log_pvt('MAIN','END LOOP ');
1435 END LOOP;
1436
1437 x_projects_out := L_PROJECT_OUT_TBL;
1438
1439 log_pvt('MAIN','END PROECDURE ');
1440
1441 END SYNC_PROJECTS;
1442
1443 PROCEDURE LOAD_PROJECT_IN_REC (
1444 P_PROJECT_IN_OBJ IN SYSTEM.PROJECT_IN_OBJ ,
1445 x_project_in_rec OUT NOCOPY pa_project_pub.project_in_rec_type,
1446 x_task_in_tbl OUT NOCOPY pa_project_pub.task_in_tbl_type,
1447 x_structure_in_rec OUT NOCOPY pa_project_pub.structure_in_rec_type,
1448 x_task_com_id_tbl OUT NOCOPY task_com_id_tbl_type,
1449 x_task_id_ref_tbl OUT NOCOPY task_id_ref_tbl_type,
1450 x_res_com_id_tbl OUT NOCOPY task_com_id_tbl_type ,
1451 x_res_id_ref_tbl OUT NOCOPY task_id_ref_tbl_type ,
1452 x_delete_task_ver_id_tbl OUT NOCOPY g_num_tbl,
1453 x_delete_task_id_tbl OUT NOCOPY g_num_tbl,
1454 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
1455 x_RETURN_MESSAGE OUT NOCOPY VARCHAR2 ) IS
1456
1457 -- FUNCTION LOAD_PROJECT_IN_REC ( l_PROJECT_IN_OBJ IN PROJECT_IN_OBJ )
1458 -- RETURN pa_project_pub.PROJECT_IN_REC_TYPE IS
1459
1460 -- Records
1461 L_PROJECT_IN_REC pa_project_pub.PROJECT_IN_REC_TYPE ;
1462 --Objects
1463 L_PROJECT_IN_OBJ SYSTEM.PROJECT_IN_OBJ ;
1464
1465
1466 ll_task_com_id_tbl task_com_id_tbl_type ;
1467 ll_task_id_ref_tbl task_id_ref_tbl_type ;
1468
1469 ll_res_com_id_tbl task_com_id_tbl_type ;
1470 ll_res_id_ref_tbl task_id_ref_tbl_type ;
1471
1472 l_create_from_project_id number;
1473
1474 l_struct_type varchar2(80);
1475 l_setup_struct_type varchar2(80);
1476 l_receive_task varchar2(3);
1477
1478 l_return_status varchar2(3);
1479 l_return_message varchar2(200);
1480
1481 ----- task variables -------------------
1482
1483 L_TASK_IN_REC pa_project_pub.TASK_IN_REC_TYPE;
1484 L_TASKS_IN_REC_TBL pa_project_pub.TASK_IN_TBL_TYPE;
1485 L_STRUCTURE_IN_OBJ SYSTEM.STRUCTURE_IN_OBJ;
1486 L_TASK_IN_OBJ_TABLE SYSTEM.TASK_IN_OBJ_TBL;
1487 L_TASK_IN_OBJ SYSTEM.TASK_IN_OBJ;
1488 L_COUNTER NUMBER := 1;
1489
1490 T_TASK_IN_OBJ_TABLE SYSTEM.TASK_IN_OBJ_TBL;
1491
1492 --l_RES_ASSIGN_OBJ_TBL PROJECT_RES_ASSIGN_OBJ_TBL ;
1493 l_PLANNED_OBJECT SYSTEM.PROJECT_TASK_PLANNED_OBJ ;
1494 l_EARNED_OBJECT SYSTEM.PROJECT_TASK_EARNED_OBJ ;
1495 l_TASK_EST_OBJECT SYSTEM.PROJECT_TASK_EST_OBJ ;
1496 l_TASK_PER_COMP_OBJECT SYSTEM.PROJECT_TASK_PER_COMP_OBJ ;
1497
1498
1499 ll_delete_task_id_tbl g_num_tbl;
1500 ll_delete_task_ver_id_tbl g_num_tbl;
1501
1502 ---- Structure variable -----------------------
1503
1504 L_STRUCTURE_IN_REC pa_project_pub.STRUCTURE_IN_REC_TYPE;
1505 ---L_CREATED_FROM_PROJECT_ID NUMBER;
1506
1507
1508 ---- resource assignment variables -----------------------
1509
1510 l_res_assign SYSTEM.PROJECT_RES_ASSIGN_OBJ;
1511 l_res_assign_tbl SYSTEM.PROJECT_RES_ASSIGN_OBJ_TBL;
1512
1513 ---- resource assignment variables -----------------------
1514
1515 BEGIN
1516
1517 log_pvt('LOAD_PROEJCT','START PROECDURE ');
1518
1519 l_project_in_obj := p_project_in_obj;
1520 l_STRUCTURE_IN_OBJ := l_PROJECT_IN_OBJ.STRUCTURE_IN_OBJECT;
1521 T_TASK_IN_OBJ_TABLE := L_STRUCTURE_IN_OBJ.TASK_IN_OBJ_TABLE;
1522
1523
1524
1525 --------START Convert fnd_api.g_miss* to pa g_miss -----------------------------
1526
1527 if ( l_project_in_obj.PA_PROJECT_ID = FND_API.G_MISS_NUM ) then
1528
1529 l_project_in_obj.PA_PROJECT_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1530
1531 end if;
1532
1533 if ( l_project_in_obj.PA_PROJECT_NUMBER = FND_API.G_MISS_CHAR ) then
1534
1535 l_project_in_obj.PA_PROJECT_NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1536
1537 end if;
1538
1539
1540 if ( l_project_in_obj.PROJECT_NAME = FND_API.G_MISS_CHAR ) then
1541
1542 l_project_in_obj.PROJECT_NAME := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1543
1544 end if;
1545
1546 if ( l_project_in_obj.pm_project_reference = FND_API.G_MISS_CHAR ) then
1547
1548 l_project_in_obj.pm_project_reference := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1549
1550 end if;
1551
1552 if ( l_project_in_obj.DESCRIPTION = FND_API.G_MISS_CHAR ) then
1553
1554 l_project_in_obj.DESCRIPTION := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1555
1556 end if;
1557
1558 --log_pvt('LOAD_PROEJCT','init 01 ');
1559
1560 if ( l_project_in_obj.PROJECT_STATUS = FND_API.G_MISS_CHAR ) then
1561
1562 l_project_in_obj.PROJECT_STATUS := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1563
1564 end if;
1565
1566 if ( l_project_in_obj.START_DATE = FND_API.G_MISS_DATE ) then
1567
1568 l_project_in_obj.START_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1569
1570 end if;
1571
1572 if ( l_project_in_obj.COMPLETION_DATE = FND_API.G_MISS_DATE ) then
1573
1574 l_project_in_obj.COMPLETION_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1575
1576 end if;
1577
1578 --log_pvt('LOAD_PROEJCT','init 02 ');
1579
1580 if ( l_project_in_obj.ACTUAL_START_DATE = FND_API.G_MISS_DATE ) then
1581
1582 l_project_in_obj.ACTUAL_START_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1583
1584 end if;
1585
1586
1587 if ( l_project_in_obj.ACTUAL_FINISH_DATE = FND_API.G_MISS_DATE ) then
1588
1589 l_project_in_obj.ACTUAL_FINISH_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1590
1591 end if;
1592
1593
1594 if ( l_project_in_obj.EARLY_START_DATE = FND_API.G_MISS_DATE ) then
1595
1596 l_project_in_obj.EARLY_START_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1597
1598 end if;
1599
1600
1601 if ( l_project_in_obj.EARLY_FINISH_DATE = FND_API.G_MISS_DATE ) then
1602
1603 l_project_in_obj.EARLY_FINISH_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
1604
1605 end if;
1606
1607
1608 --log_pvt('LOAD_PROEJCT','init 03 ');
1609 if ( l_project_in_obj.MAX_WBS_LEVEL = FND_API.G_MISS_NUM ) then
1610
1611 l_project_in_obj.MAX_WBS_LEVEL := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1612
1613 end if;
1614
1615 --log_pvt('LOAD_PROEJCT','init 03a ');
1616
1617 if ( l_project_in_obj.COST_CHG_QTY_INDICATOR = FND_API.G_MISS_CHAR ) then
1618
1619 l_project_in_obj.COST_CHG_QTY_INDICATOR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1620
1621 end if;
1622
1623 --log_pvt('LOAD_PROEJCT','init 03b ');
1624
1625 if ( l_project_in_obj.CREATED_FROM_PROJECT_ID = FND_API.G_MISS_NUM ) then
1626
1627 l_project_in_obj.CREATED_FROM_PROJECT_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1628
1629 end if;
1630
1631 --log_pvt('LOAD_PROEJCT','init 03 c');
1632 if ( l_project_in_obj.CREATED_FROM_PROJECT_NUMBER = FND_API.G_MISS_CHAR ) then
1633
1634 l_project_in_obj.CREATED_FROM_PROJECT_NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1635
1636 end if;
1637
1638 --log_pvt('LOAD_PROEJCT','init 03 d');
1639 if ( l_project_in_obj.PROJECT_ORGANIZATION_ID = FND_API.G_MISS_NUM ) then
1640
1641 l_project_in_obj.PROJECT_ORGANIZATION_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1642
1643 end if;
1644
1645 --log_pvt('LOAD_PROEJCT','init 03 e');
1646 if ( l_project_in_obj.ORG_ID = FND_API.G_MISS_NUM ) then
1647
1648 l_project_in_obj.ORG_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1649
1650 end if;
1651
1652 --log_pvt('LOAD_PROEJCT','init 03 fa');
1653
1654 if ( l_project_in_obj.EPS_CLASS_CODE = FND_API.G_MISS_CHAR ) then
1655
1656 l_project_in_obj.EPS_CLASS_CODE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1657
1658 end if;
1659
1660
1661 --log_pvt('LOAD_PROEJCT','init 03 ');
1662 if ( l_project_in_obj.PROJECT_TYPE_CODE = FND_API.G_MISS_CHAR ) then
1663
1664 l_project_in_obj.PROJECT_TYPE_CODE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1665
1666 end if;
1667
1668 --log_pvt('LOAD_PROEJCT','init 04 ');
1669 if ( l_project_in_obj.ORIGINAL_BUDGET_AMOUNT = FND_API.G_MISS_NUM ) then
1670
1671 l_project_in_obj.ORIGINAL_BUDGET_AMOUNT := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1672
1673 end if;
1674
1675 if ( l_project_in_obj.BUDGET_AMOUNT = FND_API.G_MISS_NUM ) then
1676
1677 l_project_in_obj.BUDGET_AMOUNT := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
1678
1679 end if;
1680
1681
1682 if ( l_project_in_obj.PROJECT_CURRENCY_CODE = FND_API.G_MISS_CHAR ) then
1683
1684 l_project_in_obj.PROJECT_CURRENCY_CODE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1685
1686 end if;
1687
1688
1689 if ( l_project_in_obj.ACTIVITY_TRACKING_INDICATOR = FND_API.G_MISS_CHAR ) then
1690
1691 l_project_in_obj.ACTIVITY_TRACKING_INDICATOR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1692
1693 end if;
1694
1695
1696 if ( l_project_in_obj.RES_ASS_TRACK_LEV_CODE = FND_API.G_MISS_CHAR ) then
1697
1698 l_project_in_obj.RES_ASS_TRACK_LEV_CODE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1699
1700 end if;
1701
1702 --log_pvt('LOAD_PROEJCT','init 05 ');
1703
1704 --STRUCTURE_IN_OBJECT STRUCTURE_IN_OBJ
1705
1706 --------END Convert fnd_api.g_miss* to pa g_miss -----------------------------
1707
1708 log_pvt('LOAD_PROEJCT','Before created_from_poroject_number'|| l_PROJECT_IN_OBJ.created_from_project_number );
1709
1710 l_return_status := 'S';
1711 l_return_message := null;
1712
1713 IF ( nvl(l_PROJECT_IN_OBJ.PA_PROJECT_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1714 = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
1715
1716 begin
1717 select project_id into l_create_from_project_id
1718 from pa_projects_all
1719 where segment1 = l_PROJECT_IN_OBJ.created_from_project_number;
1720 exception
1721 when others then
1722 log_pvt('MAIN','raise 5000');
1723 l_create_from_project_id := -9999;
1724 l_return_status := 'E';
1725 pa_utils.add_message
1726 ( p_app_short_name => 'PA'-- new message for AA TRACKING
1727 ,p_msg_name => 'PA_SOURCE_TEMPLATE_INVALID_AMG'
1728 ,p_token1 => 'PROJECT'
1729 ,p_value1 => l_project_in_obj.created_from_project_number
1730 );
1731 l_return_message := 'PA_SOURCE_TEMPLATE_INVALID_AMG';
1732
1733 end ;
1734
1735 end if;
1736
1737 log_pvt('LOAD_PROEJCT','After getting from_project_id '||l_create_from_project_id);
1738
1739
1740 log_pvt('LOAD_PROEJCT',' l_PROJECT_IN_OBJ.PA_PROJECT_ID '||l_PROJECT_IN_OBJ.PA_PROJECT_ID);
1741
1742 if ( l_return_status = 'S' ) then
1743 begin
1744
1745 IF ( l_PROJECT_IN_OBJ.PA_PROJECT_ID IS NOT NULL
1746 AND l_PROJECT_IN_OBJ.PA_PROJECT_ID <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1747 AND l_return_status = 'S' ) then
1748
1749 select decode(PA_PROJ_TASK_STRUC_PUB.IS_WP_SEPARATE_FROM_FN(l_PROJECT_IN_OBJ.PA_PROJECT_ID ), 'N',
1750 'FINANCIAL', structure_type), receive_task , structure_type
1751 into l_struct_type , l_receive_task , l_setup_struct_type
1752 from pa_integration_settings
1753 where project_id = l_PROJECT_IN_OBJ.PA_PROJECT_ID
1754 and enable_integration = 'Y';
1755
1756 else
1757
1758 select decode(PA_PROJ_TASK_STRUC_PUB.IS_WP_SEPARATE_FROM_FN( l_create_from_project_id ), 'N',
1759 'FINANCIAL', structure_type) , receive_task, structure_type
1760 into l_struct_type , l_receive_task , l_setup_struct_type
1761 from pa_integration_settings
1762 where project_id = l_create_from_project_id
1763 and enable_integration = 'Y';
1764
1765 end if ;
1766
1767
1768 log_pvt('LOAD_PROEJCT','before l_receive_task if ');
1769
1770 if ( nvl(l_receive_task,'N') <> 'Y' ) then
1771 l_return_status := 'E';
1772 pa_utils.add_message
1773 ( p_app_short_name => 'PA'
1774 ,p_msg_name => 'PA_RECEIVE_TASK_NOT_ENABLED'
1775 );
1776 l_return_message := 'PA_RECEIVE_TASK_NOT_ENABLED';
1777 end if;
1778
1779 exception
1780 when no_data_found then
1781 log_pvt('MAIN','raise 6002');
1782 l_return_status := 'E';
1783 pa_utils.add_message
1784 ( p_app_short_name => 'PA'
1785 ,p_msg_name => 'PA_INTG_NOT_ENABLED'
1786 );
1787 l_return_message := 'PA_INTG_NOT_ENABLED';
1788 when others then
1789 log_pvt('MAIN','raise 6000');
1790 raise;
1791 end ;
1792
1793 end if;
1794
1795
1796
1797 log_pvt('LOAD_PROEJCT','After getting Integration settings '||l_return_message);
1798
1799 if ( l_return_status = 'S' ) then
1800
1801 L_PROJECT_IN_REC.PA_PROJECT_ID := l_PROJECT_IN_OBJ.PA_PROJECT_ID ;
1802 L_PROJECT_IN_REC.PA_PROJECT_NUMBER := l_PROJECT_IN_OBJ.PA_PROJECT_NUMBER ;
1803 L_PROJECT_IN_REC.pm_project_reference := l_PROJECT_IN_OBJ.pm_project_reference ;
1804 L_PROJECT_IN_REC.PROJECT_NAME := l_PROJECT_IN_OBJ.PROJECT_NAME ;
1805 L_PROJECT_IN_REC.project_status_code := l_PROJECT_IN_OBJ.PROJECT_STATUS ;
1806 L_PROJECT_IN_REC.description := l_project_in_obj.DESCRIPTION;
1807
1808 L_PROJECT_IN_REC.START_DATE := trunc(l_PROJECT_IN_OBJ.START_DATE) ;
1809 L_PROJECT_IN_REC.COMPLETION_DATE := trunc(l_PROJECT_IN_OBJ.COMPLETION_DATE) ;
1810 L_PROJECT_IN_REC.ACTUAL_START_DATE := trunc(l_PROJECT_IN_OBJ.ACTUAL_START_DATE) ;
1811 L_PROJECT_IN_REC.ACTUAL_FINISH_DATE := trunc(l_PROJECT_IN_OBJ.ACTUAL_FINISH_DATE) ;
1812 L_PROJECT_IN_REC.EARLY_START_DATE := trunc(l_PROJECT_IN_OBJ.EARLY_START_DATE) ;
1813 L_PROJECT_IN_REC.EARLY_FINISH_DATE := trunc(l_PROJECT_IN_OBJ.EARLY_FINISH_DATE) ;
1814
1815 IF ( nvl(l_PROJECT_IN_OBJ.PA_PROJECT_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
1816 = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
1817
1818 L_PROJECT_IN_REC.PROJECT_CURRENCY_CODE := l_PROJECT_IN_OBJ.PROJECT_CURRENCY_CODE ;
1819 END IF;
1820 gl_currency_code := l_PROJECT_IN_OBJ.PROJECT_CURRENCY_CODE ;
1821
1822 L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID := L_CREATE_FROM_PROJECT_ID ;
1823
1824 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.description '||L_PROJECT_IN_REC.description);
1825 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.project_status_code '||L_PROJECT_IN_REC.project_status_code);
1826 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.START_DATE '||L_PROJECT_IN_REC.START_DATE);
1827 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.COMPLETION_DATE '||L_PROJECT_IN_REC.COMPLETION_DATE);
1828 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.ACTUAL_START_DATE '||L_PROJECT_IN_REC.ACTUAL_START_DATE);
1829 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.ACTUAL_FINISH_DATE '||L_PROJECT_IN_REC.ACTUAL_FINISH_DATE);
1830 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.EARLY_START_DATE '||L_PROJECT_IN_REC.EARLY_START_DATE);
1831 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.EARLY_FINISH_DATE '||L_PROJECT_IN_REC.EARLY_FINISH_DATE);
1832 log_pvt('LOAD_PROEJCT',' L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID '||L_PROJECT_IN_REC.CREATED_FROM_PROJECT_ID);
1833
1834 end if;
1835
1836
1837 log_pvt('LOAD_PROEJCT','After project Attributes copy '||l_return_message);
1838 ---------- Structure Start -----------------------------------------------
1839
1840 if ( l_return_status = 'S' ) then
1841
1842
1843
1844 L_STRUCTURE_IN_REC.STRUCTURE_TYPE := l_struct_type;
1845
1846 if ( L_STRUCTURE_IN_REC.DESCRIPTION = FND_API.G_MISS_CHAR ) then
1847
1848 L_STRUCTURE_IN_REC.DESCRIPTION := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
1849
1850 end if;
1851
1852
1853 L_STRUCTURE_IN_REC.DESCRIPTION := L_STRUCTURE_IN_OBJ.DESCRIPTION;
1854
1855
1856 L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
1857
1858 IF ( l_PROJECT_IN_OBJ.PA_PROJECT_ID IS NOT NULL
1859 AND l_PROJECT_IN_OBJ.PA_PROJECT_ID <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
1860
1861 begin
1862
1863 if ( l_setup_struct_type = 'FINANCIAL') then
1864
1865 L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID := PA_PROJECT_STRUCTURE_UTILS.GET_FIN_STRUC_VER_ID(l_PROJECT_IN_OBJ.PA_PROJECT_ID);
1866
1867 else
1868 select ppevs.element_version_id
1869 into L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
1870 from pa_proj_elem_ver_structure ppevs,
1871 pa_proj_structure_types ppst,
1872 pa_structure_types pst
1873 where ppevs.proj_element_id = ppst.proj_element_id
1874 and ppevs.project_id = l_PROJECT_IN_OBJ.PA_PROJECT_ID
1875 and ( ( ppevs.status_code = 'STRUCTURE_WORKING' AND
1876 exists ( select 'x' from pa_proj_workplan_attr w1
1877 where w1.project_id = ppevs.project_id
1878 and w1.wp_enable_version_flag = 'Y' ) )
1879 OR
1880 ( ppevs.status_code = 'STRUCTURE_PUBLISHED' AND
1881 exists ( select 'x' from pa_proj_workplan_attr w2
1882 where w2.project_id = ppevs.project_id
1883 and w2.wp_enable_version_flag = 'N' ))
1884 )
1885 and ppevs.current_working_flag = 'Y'
1886 and ppst.structure_type_id = pst.structure_type_id
1887 and pst.structure_type_class_code = 'WORKPLAN';
1888 end if;
1889
1890 exception
1891 WHEN NO_DATA_FOUND THEN
1892 L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID := null;
1893 when others then
1894 log_pvt('MAIN','raise 7000');
1895 raise;
1896 l_return_status := 'E';
1897 pa_utils.add_message
1898 ( p_app_short_name => 'PA'
1899 ,p_msg_name => 'PA_ERROR_GET_STRUCT_ID'
1900 );
1901 l_return_message := 'PA_ERROR_GET_STRUCT_ID';
1902 end ;
1903 end if;
1904
1905 X_structure_in_rec := L_STRUCTURE_IN_REC;
1906
1907 end if;
1908 ---------- Structure end -----------------------------------------------
1909
1910
1911 log_pvt('LOAD_PROEJCT','After structure Attributes copy '||l_return_message);
1912
1913 ---------- task start -----------------------------------------------
1914
1915
1916 if ( l_return_status = 'S' AND T_TASK_IN_OBJ_TABLE is not null) then
1917
1918 if (T_TASK_IN_OBJ_TABLE.count > 0) then
1919
1920 wbs_order (
1921 P_TASK_IN_OBJ_TABLE => T_TASK_IN_OBJ_TABLE,
1922 P_PROJECT_IN_REC => L_PROJECT_IN_REC,
1923 P_STRUCTURE_IN_REC => L_STRUCTURE_IN_REC,
1924 X_TASK_IN_OBJ_TABLE => L_TASK_IN_OBJ_TABLE,
1925 X_DELETE_TASK_ID_TBL => LL_DELETE_TASK_ID_TBL,
1926 X_DELETE_TASK_ver_ID_TBL => LL_DELETE_TASK_VER_ID_TBL
1927 );
1928
1929 log_pvt('LOAD_PROEJCT',' L_TASK_IN_OBJ_TABLE.count '|| L_TASK_IN_OBJ_TABLE.count);
1930
1931 FOR i in L_TASK_IN_OBJ_TABLE.FIRST .. L_TASK_IN_OBJ_TABLE.LAST LOOP
1932
1933
1934 L_TASK_IN_OBJ := L_TASK_IN_OBJ_TABLE(i);
1935
1936 log_pvt('LOAD_PROEJCT',' TASK_REF '||L_TASK_IN_OBJ.PM_TASK_REFERENCE||' PA_TASK_ID '||L_TASK_IN_OBJ.PA_TASK_ID || ' parent_task_id '|| L_TASK_in_obj.PA_PARENT_TASK_ID );
1937 log_pvt('LOAD_PROEJCT',' L_TASK_in_obj.PA_TASK_NUMBER '||L_TASK_in_obj.PA_TASK_NUMBER||' PA_TASK_ID '||L_TASK_IN_OBJ.PA_TASK_ID || ' parent_task_id '|| L_TASK_in_obj.PA_PARENT_TASK_ID );
1938
1939 l_res_assign_tbl := L_TASK_IN_OBJ.RES_ASSIGN_OBJ_TBL;
1940
1941 -- IMPORTANT NOTE :
1942 --- Always getting task_id as null / g_pa_miss_num. Will realy on pm_task_reference for task updates.
1943 --- This allows to support use case where a task is deleted in EBS , but exist in P6.
1944 -- P6 send the wbs update to EBS. Since the cross-reff table will hve task id the ABCS layer will send
1945 -- the task id. This will lead to failure during the updates as the corresponding task is deleted in
1946 -- EBS.
1947 -- By sending the pm_task_reference only , the system will re-create the task in EBS.
1948 --
1949
1950 /**
1951
1952 if ( L_TASK_in_obj.PA_TASK_ID = FND_API.G_MISS_NUM ) then
1953 L_TASK_IN_REC.PA_TASK_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
1954 else
1955 L_TASK_IN_REC.PA_TASK_ID := L_TASK_IN_OBJ.PA_TASK_ID;
1956 end if;
1957 **/
1958
1959 L_TASK_IN_REC.PA_TASK_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
1960
1961
1962 if ( L_TASK_in_obj.TASK_NAME = FND_API.G_MISS_CHAR ) then
1963 L_TASK_IN_REC.TASK_NAME := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1964 else
1965 L_TASK_IN_REC.TASK_NAME := L_TASK_IN_OBJ.TASK_NAME;
1966 L_TASK_IN_REC.LONG_TASK_NAME := L_TASK_IN_OBJ.TASK_NAME;
1967 end if;
1968
1969 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.TASK_NAME '|| L_TASK_IN_REC.TASK_NAME);
1970
1971 if ( L_TASK_in_obj.PA_TASK_NUMBER = FND_API.G_MISS_CHAR ) then
1972 L_TASK_IN_REC.PA_TASK_NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1973 else
1974 L_TASK_IN_REC.PA_TASK_NUMBER := L_TASK_IN_OBJ.PA_TASK_NUMBER;
1975 end if;
1976
1977 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.PA_TASK_NUMBER '|| L_TASK_IN_REC.PA_TASK_NUMBER);
1978 if ( L_TASK_in_obj.TASK_DESCRIPTION = FND_API.G_MISS_CHAR ) then
1979 L_TASK_IN_REC.TASK_DESCRIPTION := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1980 else
1981 L_TASK_IN_REC.TASK_DESCRIPTION := L_TASK_IN_OBJ.TASK_DESCRIPTION;
1982 end if;
1983
1984 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.TASK_DESCRIPTION '|| L_TASK_IN_REC.TASK_DESCRIPTION);
1985 if ( L_TASK_in_obj.PM_TASK_REFERENCE = FND_API.G_MISS_CHAR ) then
1986 L_TASK_IN_REC.PM_TASK_REFERENCE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1987 else
1988 L_TASK_IN_REC.PM_TASK_REFERENCE := L_TASK_IN_OBJ.PM_TASK_REFERENCE;
1989 end if;
1990
1991 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.PM_TASK_REFERENCE '|| L_TASK_IN_REC.PM_TASK_REFERENCE);
1992 if ( L_TASK_in_obj.PM_PARENT_TASK_REFERENCE = FND_API.G_MISS_CHAR ) then
1993 L_TASK_IN_REC.PM_PARENT_TASK_REFERENCE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
1994 else
1995 L_TASK_IN_REC.PM_PARENT_TASK_REFERENCE := L_TASK_IN_OBJ.PM_PARENT_TASK_REFERENCE;
1996 end if;
1997
1998 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.PM_PARENT_TASK_REFERENCE '||L_TASK_IN_REC.PM_PARENT_TASK_REFERENCE);
1999 /**
2000 if ( L_TASK_in_obj.PA_PARENT_TASK_ID = FND_API.G_MISS_NUM ) then
2001 L_TASK_IN_REC.PA_PARENT_TASK_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2002 else
2003 L_TASK_IN_REC.PA_PARENT_TASK_ID := L_TASK_IN_OBJ.PA_PARENT_TASK_ID;
2004 end if;
2005 **/
2006
2007 L_TASK_IN_REC.PA_PARENT_TASK_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2008
2009
2010 if ( L_TASK_in_obj.TASK_START_DATE = FND_API.G_MISS_DATE ) then
2011 L_TASK_IN_REC.TASK_START_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2012 else
2013 L_TASK_IN_REC.TASK_START_DATE := trunc(L_TASK_IN_OBJ.TASK_START_DATE);
2014 end if;
2015
2016 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.TASK_START_DATE '|| L_TASK_IN_REC.TASK_START_DATE);
2017
2018 if ( L_TASK_in_obj.TASK_COMPLETION_DATE = FND_API.G_MISS_DATE ) then
2019 L_TASK_IN_REC.TASK_COMPLETION_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2020 else
2021 L_TASK_IN_REC.TASK_COMPLETION_DATE := trunc(nvl(trunc(L_TASK_IN_OBJ.TASK_COMPLETION_DATE), L_PROJECT_IN_REC.COMPLETION_DATE));
2022 end if;
2023
2024
2025 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.TASK_COMPLETION_DATE '|| L_TASK_IN_REC.TASK_COMPLETION_DATE);
2026 --L_RES_ASSIGN_OBJ_TBL := l_task_in_obj.res_assign_obj_tbl;
2027 L_PLANNED_OBJECT := l_task_in_obj.planned_object;
2028 L_EARNED_OBJECT := l_task_in_obj.earned_object;
2029 L_TASK_EST_OBJECT := l_task_in_obj.task_est_object;
2030 L_TASK_PER_COMP_OBJECT := l_task_in_obj.task_per_comp_object;
2031
2032 -- Never to update EAC values for current working version. AMEHROTR. Bug 8790577.
2033 L_TASK_EST_OBJECT.EAC_LABOR_QTY := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2034 L_TASK_EST_OBJECT.EAC_LABOR_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2035
2036
2037 --L_TASK_IN_REC.actual_start_date :=
2038 --L_TASK_IN_REC.actual_finish_date :=
2039
2040 /* Bug 12986544: Added trunc for Early Start Date, Early Finish Date,
2041 Late Start Date and Late Finish Date since these were showing incorrect dates in Ebiz*/
2042
2043 if ( trunc(l_planned_object.early_start_date) = FND_API.G_MISS_DATE ) then
2044 L_TASK_IN_REC.early_start_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2045 else
2046 L_TASK_IN_REC.early_start_date := trunc(l_planned_object.EARLY_START_DATE);
2047 end if;
2048
2049 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.early_start_date '|| L_TASK_IN_REC.early_start_date);
2050 if ( trunc(l_planned_object.early_finish_date) = FND_API.G_MISS_DATE ) then
2051 L_TASK_IN_REC.early_finish_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2052 else
2053 L_TASK_IN_REC.early_finish_date := trunc(l_planned_object.early_finish_date);
2054 end if;
2055
2056 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.early_finish_date '|| L_TASK_IN_REC.early_finish_date);
2057 if ( trunc(l_planned_object.late_start_date) = FND_API.G_MISS_DATE ) then
2058 L_TASK_IN_REC.late_start_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2059 else
2060 L_TASK_IN_REC.late_start_date := trunc(l_planned_object.late_start_date);
2061 end if;
2062
2063 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.late_start_date '|| L_TASK_IN_REC.late_start_date);
2064 if ( trunc(l_planned_object.late_finish_date) = FND_API.G_MISS_DATE ) then
2065 L_TASK_IN_REC.late_finish_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2066 else
2067 L_TASK_IN_REC.late_finish_date := trunc(l_planned_object.late_finish_date);
2068 end if;
2069
2070 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.late_finish_date '|| L_TASK_IN_REC.late_finish_date);
2071 if ( l_planned_object.PLANNED_START_DATE = FND_API.G_MISS_DATE ) then
2072 L_TASK_IN_REC.scheduled_start_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2073 else
2074 L_TASK_IN_REC.scheduled_start_date := trunc(nvl(nvl(trunc(l_planned_object.PLANNED_START_DATE),L_TASK_IN_REC.TASK_START_DATE),L_PROJECT_IN_REC.START_DATE));
2075 end if;
2076
2077 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.scheduled_start_date '|| L_TASK_IN_REC.scheduled_start_date);
2078 if ( l_planned_object.PLANNED_COMPL_DATE = FND_API.G_MISS_DATE ) then
2079 L_TASK_IN_REC.scheduled_finish_date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2080 else
2081 L_TASK_IN_REC.scheduled_finish_date := trunc(nvl(nvl(trunc(l_planned_object.PLANNED_COMPL_DATE),L_TASK_IN_REC.TASK_COMPLETION_DATE),L_PROJECT_IN_REC.COMPLETION_DATE));
2082 end if;
2083
2084 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.scheduled_finish_date '|| L_TASK_IN_REC.scheduled_finish_date);
2085 if ( l_planned_object.BASELINE_START_DATE = FND_API.G_MISS_DATE ) then
2086 L_TASK_IN_REC.BASELINE_START_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2087 else
2088 L_TASK_IN_REC.BASELINE_START_DATE := TRUNC(NVL(trunc(l_planned_object.BASELINE_START_DATE), L_TASK_IN_REC.TASK_START_DATE));
2089 end if;
2090
2091 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.BASELINE_START_DATE '|| L_TASK_IN_REC.BASELINE_START_DATE);
2092 if ( l_planned_object.BASELINE_FINISH_DATE = FND_API.G_MISS_DATE ) then
2093 L_TASK_IN_REC.BASELINE_FINISH_DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2094 else
2095 L_TASK_IN_REC.BASELINE_FINISH_DATE := trunc(nvl(trunc(l_planned_object.BASELINE_FINISH_DATE), L_TASK_IN_REC.TASK_COMPLETION_DATE));
2096 end if;
2097
2098
2099 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.BASELINE_FINISH_DATE '|| L_TASK_IN_REC.BASELINE_FINISH_DATE);
2100 if ( l_planned_object.planned_duration = FND_API.G_MISS_NUM ) then
2101 L_TASK_IN_REC.ext_act_duration := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2102 else
2103 L_TASK_IN_REC.ext_act_duration := l_planned_object.planned_duration;
2104 end if;
2105
2106
2107 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.ext_act_duration '|| L_TASK_IN_REC.ext_act_duration);
2108 if ( l_task_est_object.remaining_duration = FND_API.G_MISS_NUM ) then
2109 L_TASK_IN_REC.ext_remain_duration := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2110 else
2111 L_TASK_IN_REC.ext_remain_duration := l_task_est_object.remaining_duration;
2112 end if;
2113
2114 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.ext_remain_duration '|| L_TASK_IN_REC.ext_remain_duration);
2115 if ( l_task_est_object.etc_labor_qty = FND_API.G_MISS_NUM ) then
2116 L_TASK_IN_REC.etc_effort := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2117 else
2118 L_TASK_IN_REC.etc_effort := l_task_est_object.etc_labor_qty;
2119 end if;
2120
2121 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.etc_effort '|| L_TASK_IN_REC.etc_effort);
2122 if ( l_task_per_comp_object.physical_percent_comp = FND_API.G_MISS_NUM ) then
2123 L_TASK_IN_REC.percent_complete := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2124 else
2125 L_TASK_IN_REC.percent_complete := l_task_per_comp_object.physical_percent_comp;
2126 end if;
2127
2128 log_pvt('LOAD_PROEJCT',' L_TASK_IN_REC.percent_complete '|| L_TASK_IN_REC.percent_complete);
2129
2130
2131 ll_task_com_id_tbl(l_counter) := L_TASK_IN_OBJ.aia_common_id;
2132
2133 ll_task_id_ref_tbl( L_TASK_IN_REC.PM_TASK_REFERENCE) := l_counter;
2134
2135
2136 L_TASKS_IN_REC_TBL(L_COUNTER) := L_TASK_IN_REC;
2137
2138 L_COUNTER := L_COUNTER + 1;
2139
2140 log_pvt('LOAD_PROEJCT','Before Resource Assignments ');
2141
2142 if ( l_res_assign_tbl is not null and l_setup_struct_type = 'WORKPLAN') then
2143
2144 log_pvt('LOAD_PROEJCT','Resource Assignments exist '||l_res_assign_tbl.count);
2145
2146 if ( l_res_assign_tbl.count > 0 ) then
2147
2148 for k in l_res_assign_tbl.first .. l_res_assign_tbl.last loop
2149
2150 log_pvt('LOAD_PROEJCT','Resource Assignments k '||k);
2151
2152 l_res_assign := l_res_assign_tbl(k);
2153
2154 g_res_counter := g_res_counter + 1;
2155
2156 /*** perf issue
2157 g_res_pm_project_reference.extend(1);
2158
2159 g_res_pa_project_id.extend(1);
2160 g_res_pa_struct_version_id.extend(1);
2161 g_res_pm_task_reference.extend(1);
2162 g_res_pa_task_number.extend(1);
2163 g_res_pa_task_id.extend(1);
2164 g_res_pa_task_elem_ver_id.extend(1);
2165 g_res_pm_task_asgmt_reference.extend(1);
2166 g_res_pa_task_assignment_id.extend(1);
2167 g_res_resource_alias.extend(1);
2168 g_res_resource_list_member_id.extend(1);
2169 g_res_start_date.extend(1);
2170 g_res_end_date.extend(1);
2171 g_res_planned_quantity.extend(1);
2172 g_res_planned_total_raw_cost.extend(1);
2173 g_res_planned_total_bur_cost.extend(1);
2174 **/
2175
2176 --log_pvt('LOAD_PROEJCT','Resource Assignments before g_res '||k);
2177
2178 g_res_pm_project_reference(g_res_counter) := L_PROJECT_IN_REC.pm_project_reference;
2179 g_res_pa_project_id(g_res_counter) := L_PROJECT_IN_REC.pa_project_id;
2180 g_res_pa_struct_version_id(g_res_counter) := L_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID;
2181 g_res_pm_task_reference(g_res_counter) := L_TASK_IN_REC.PM_TASK_REFERENCE;
2182 g_res_pa_task_number(g_res_counter) := L_TASK_IN_REC.PA_TASK_NUMBER;
2183 g_res_pa_task_id(g_res_counter) := L_TASK_IN_REC.PA_TASK_ID;
2184
2185
2186 g_res_pa_task_elem_ver_id(g_res_counter) := null;
2187
2188
2189
2190 if ( l_res_assign.PM_RES_ASSIGN_REFERENCE = FND_API.G_MISS_CHAR ) then
2191 g_res_pm_task_asgmt_reference(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
2192 else
2193 g_res_pm_task_asgmt_reference(g_res_counter) := l_res_assign.PM_RES_ASSIGN_REFERENCE;
2194 end if;
2195
2196 if ( l_res_assign.RESOURCE_ASSIGNMENT_ID = FND_API.G_MISS_NUM ) then
2197 g_res_pa_task_assignment_id(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2198 else
2199 g_res_pa_task_assignment_id(g_res_counter) := l_res_assign.RESOURCE_ASSIGNMENT_ID;
2200 end if;
2201
2202 log_pvt('LOAD_PROJECT',' g_res_pa_task_assignment_id(g_res_counter) '||g_res_pa_task_assignment_id(g_res_counter));
2203
2204 if ( l_res_assign.RESOURCE_NAME = FND_API.G_MISS_CHAR ) then
2205 g_res_resource_alias(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
2206 else
2207 g_res_resource_alias(g_res_counter) := l_res_assign.RESOURCE_NAME;
2208 end if;
2209
2210 log_pvt('LOAD_PROJECT',' g_res_resource_alias(g_res_counter) '||g_res_resource_alias(g_res_counter));
2211
2212 if ( l_res_assign.RESOURCE_LIST_MEMBER_ID = FND_API.G_MISS_NUM ) then
2213 g_res_resource_list_member_id(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2214 else
2215 g_res_resource_list_member_id(g_res_counter) := l_res_assign.RESOURCE_LIST_MEMBER_ID;
2216 end if;
2217
2218 log_pvt('LOAD_PROJECT',' g_res_resource_list_member_id(g_res_counter) '||g_res_resource_list_member_id(g_res_counter));
2219
2220 if ( l_res_assign.PLANNED_QTY = FND_API.G_MISS_NUM ) then
2221 g_res_planned_quantity(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2222 else
2223 g_res_planned_quantity(g_res_counter) := l_res_assign.PLANNED_QTY;
2224 end if;
2225 log_pvt('LOAD_PROJECT',' g_res_planned_quantity(g_res_counter) '||g_res_planned_quantity(g_res_counter));
2226
2227 if ( l_res_assign.PLANNED_START_DATE = FND_API.G_MISS_DATE ) then
2228 g_res_start_date(g_res_counter) := null;
2229 else
2230 g_res_start_date(g_res_counter) := trunc(l_res_assign.PLANNED_START_DATE);
2231 end if;
2232
2233 if ( l_res_assign.PLANNED_COMPL_DATE = FND_API.G_MISS_DATE ) then
2234 g_res_end_date(g_res_counter) := null;
2235 else
2236 g_res_end_date(g_res_counter) := trunc(l_res_assign.PLANNED_COMPL_DATE);
2237 end if;
2238
2239
2240 if ( l_res_assign.START_DATE = FND_API.G_MISS_DATE ) then
2241 g_res_start_date(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2242 else
2243 g_res_start_date(g_res_counter) := trunc(nvl(g_res_start_date(g_res_counter),l_res_assign.START_DATE));
2244 end if;
2245
2246 if ( l_res_assign.COMPLETION_DATE = FND_API.G_MISS_DATE ) then
2247 g_res_end_date(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
2248 else
2249 g_res_end_date(g_res_counter) := trunc(nvl(g_res_end_date(g_res_counter),l_res_assign.COMPLETION_DATE));
2250 end if;
2251
2252
2253 log_pvt('LOAD_PROJECT',' g_res_start_date(g_res_counter) '||g_res_start_date(g_res_counter));
2254 log_pvt('LOAD_PROJECT',' g_res_end_date(g_res_counter) '||g_res_end_date(g_res_counter));
2255
2256 if ( l_res_assign.PLANNED_COST = FND_API.G_MISS_NUM ) then
2257 g_res_planned_total_raw_cost(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2258 g_res_planned_total_bur_cost(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
2259 else
2260 g_res_planned_total_raw_cost(g_res_counter) := l_res_assign.PLANNED_COST;
2261 -- assigned null value this to help use burdening in EBS.
2262 g_res_planned_total_bur_cost(g_res_counter) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM; -- Perf Change 8894180
2263 end if;
2264
2265 log_pvt('LOAD_PROJECT',' g_res_planned_total_raw_cost(g_res_counter) '||g_res_planned_total_raw_cost(g_res_counter));
2266
2267 log_pvt('LOAD_PROJECT',' l_res_assign.AIA_COMMON_ID '||l_res_assign.AIA_COMMON_ID);
2268 log_pvt('LOAD_PROJECT',' g_res_pm_task_asgmt_reference(g_res_counter) '||g_res_pm_task_asgmt_reference(g_res_counter));
2269 log_pvt('LOAD_PROJECT',' g_res_counter '||g_res_counter);
2270
2271
2272 ll_res_com_id_tbl(g_res_counter) := l_res_assign.AIA_COMMON_ID;
2273
2274 ll_res_id_ref_tbl(g_res_pm_task_asgmt_reference(g_res_counter)) := g_res_counter;
2275
2276 /** Perf Change bug 8894180
2277 g_res_pm_task_asgmt_reference(g_res_counter) := l_res_assign.PM_RES_ASSIGN_REFERENCE;
2278 g_res_pa_task_assignment_id(g_res_counter) := l_res_assign.RESOURCE_ASSIGNMENT_ID;
2279 g_res_resource_alias(g_res_counter) := l_res_assign.RESOURCE_NAME;
2280 g_res_resource_list_member_id(g_res_counter) := l_res_assign.RESOURCE_LIST_MEMBER_ID;
2281 g_res_start_date(g_res_counter) := l_res_assign.START_DATE ;
2282 g_res_end_date(g_res_counter) := l_res_assign.COMPLETION_DATE ;
2283 g_res_planned_quantity(g_res_counter) := l_res_assign.PLANNED_QTY;
2284 g_res_planned_total_raw_cost(g_res_counter) := l_res_assign.PLANNED_COST;
2285 g_res_planned_total_bur_cost(g_res_counter) := l_res_assign.PLANNED_COST;
2286 **/
2287 --log_pvt('LOAD_PROEJCT','Resource Assignments after all g_res '||k);
2288
2289
2290 end loop;
2291 end if;
2292 end if ;
2293
2294 --log_pvt('LOAD_PROEJCT','After Resource Assignments ');
2295
2296 END LOOP;
2297
2298 x_task_in_tbl := L_TASKS_IN_REC_TBL;
2299
2300 x_task_com_id_tbl := ll_task_com_id_tbl;
2301 x_task_id_ref_tbl := ll_task_id_ref_tbl;
2302
2303 x_res_com_id_tbl := ll_res_com_id_tbl;
2304 x_res_id_ref_tbl := ll_res_id_ref_tbl;
2305
2306 x_delete_task_id_tbl := ll_delete_task_id_tbl;
2307 x_delete_task_ver_id_tbl := ll_delete_task_ver_id_tbl;
2308 end if;
2309 END IF;
2310 ---------- task end -----------------------------------------------
2311
2312 x_project_in_rec := L_PROJECT_IN_REC;
2313 x_return_status := l_return_status ;
2314 x_return_message := l_return_message;
2315
2316 log_pvt('LOAD_PROEJCT','END PROCEDURE '||l_return_message||' '||l_return_status);
2317 END LOAD_PROJECT_IN_REC;
2318
2319
2320 PROCEDURE wbs_order (
2321 P_TASK_IN_OBJ_TABLE IN SYSTEM.TASK_IN_OBJ_TBL,
2322 P_PROJECT_IN_REC IN PA_PROJECT_PUB.PROJECT_IN_REC_TYPE ,
2323 P_STRUCTURE_IN_REC IN PA_PROJECT_PUB.STRUCTURE_IN_REC_TYPE,
2324 X_TASK_IN_OBJ_TABLE OUT NOCOPY SYSTEM.TASK_IN_OBJ_TBL,
2325 X_DELETE_TASK_VER_ID_TBL OUT NOCOPY G_NUM_TBL,
2326 X_DELETE_TASK_ID_TBL OUT NOCOPY G_NUM_TBL
2327 ) IS
2328
2329 i number;
2330 -- type var_tbl is table of varchar2(25) index by binary_integer;
2331 -- type num_tbl is table of number index by binary_integer;
2332
2333 l_task_ref_tbl g_var_tbl;
2334 l_parent_ref_tbl g_var_tbl;
2335
2336 l_task_id_tbl g_num_tbl;
2337 l_list_tbl g_num_tbl;
2338
2339 tl_task_in_obj_table SYSTEM.TASK_IN_OBJ_TBL;
2340 f_task_in_obj_table SYSTEM.TASK_IN_OBJ_TBL;
2341 tl_task_in_obj SYSTEM.TASK_IN_OBJ;
2342
2343 l_proj_ref varchar2(100);
2344
2345 BEGIN
2346
2347 log_pvt('WBS_ORDER','001');
2348 tl_task_in_obj_table := SYSTEM.TASK_IN_OBJ_TBL();
2349
2350
2351
2352 log_pvt('WBS_ORDER','001a'||P_TASK_IN_OBJ_TABLE.count);
2353 FOR i in P_TASK_IN_OBJ_TABLE.FIRST .. P_TASK_IN_OBJ_TABLE.LAST LOOP
2354 log_pvt('WBS_ORDER','001b');
2355 TL_TASK_IN_OBJ := P_TASK_IN_OBJ_TABLE(i);
2356
2357 l_task_ref_tbl(i) := TL_TASK_IN_OBJ.PM_TASK_REFERENCE;
2358 l_parent_ref_tbl(i) := TL_TASK_IN_OBJ.PM_PARENT_TASK_REFERENCE;
2359 l_task_id_tbl(i) := TL_TASK_IN_OBJ.PA_TASK_ID;
2360 l_list_tbl(i) := i;
2361 log_pvt('WBS_ORDER',' l_task_id_tbl(i) '|| l_task_id_tbl(i)||' l_task_ref_tbl(i) '||l_task_ref_tbl(i)||' l_parent_ref_tbl(i) '||l_parent_ref_tbl(i));
2362 END LOOP;
2363
2364 log_pvt('WBS_ORDER','001c');
2365 delete from pa_wbs_seq_tmp ;
2366
2367 FORALL i in l_task_ref_tbl.first .. l_task_ref_tbl.last
2368 INSERT INTO pa_wbs_seq_tmp ( task_id , task_ref , parent_task_ref , list_id )
2369 VALUES ( l_task_id_tbl(i),l_task_ref_tbl(i), l_parent_ref_tbl(i), l_list_tbl(i));
2370
2371 log_pvt('WBS_ORDER','001d');
2372
2373 l_task_ref_tbl.delete;
2374 l_parent_ref_tbl.delete;
2375 l_list_tbl.delete;
2376
2377 select count(*) into i from pa_wbs_seq_tmp ;
2378
2379 log_pvt('WBS_ORDER','001 i '||i);
2380
2381 select parent_task_ref , task_ref , list_id bulk collect
2382 into l_parent_ref_tbl, l_task_ref_tbl , l_list_tbl
2383 from pa_wbs_seq_tmp
2384 start with parent_task_Ref is null
2385 connect by prior task_ref = parent_task_ref;
2386
2387 log_pvt('WBS_ORDER','001' || 'l_list_tbl.count '||l_list_tbl.count );
2388
2389 tl_task_in_obj_table.extend(l_list_tbl.count);
2390
2391 for i in l_list_tbl.first .. l_list_tbl.last loop
2392
2393 -- log_pvt('WBS_ORDER',' l_list_tbl(i) '||l_list_tbl(i));
2394
2395 tl_task_in_obj_table(i) := P_TASK_IN_OBJ_TABLE(l_list_tbl(i));
2396
2397 end loop;
2398
2399 -- commit;
2400
2401 X_TASK_IN_OBJ_TABLE := tl_task_in_obj_table;
2402
2403 --i:= 10/0;
2404
2405 -- log_pvt('WBS_ORDER','001');
2406 -- Finding tasks that need to be deleted .......
2407
2408 IF ( P_PROJECT_IN_REC.PA_PROJECT_ID IS NOT NULL
2409 AND P_PROJECT_IN_REC.PA_PROJECT_ID <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) THEN
2410
2411
2412 begin
2413
2414 -- These updates are required to support the following use cases :
2415 -- (a) Project created in EBS and send to P6 and then the same project is
2416 -- is sent back to EBS. In that case the reference columns are null in table and
2417 -- the inflow message with have reference information.
2418 -- this leads to AMG API erroring out, since it treats this as new task.
2419 -- Also reference columns are required for self-healing functionality.
2420 --
2421 -- Self-healing : If a task is deleted in EBS but not in P6. And P6 sends that task
2422 -- then the AIA cross-ref table will send the deleted task_id. We cannot send this
2423 -- deleted task_id value for this task into AMG API.
2424 -- That will lead to update error.
2425 -- Hence the AMG APi will always be relied on reference columns. This allows the product
2426 -- to re-create that task.
2427 --
2428 -- (b) The reference column stores the P6 task_id value. As discussed above P6 also implementing
2429 -- self-healing feature. In that case existing task updates will get new task reference. This
2430 -- must be updated before calling the update API. Otherwise the API will error out with
2431 -- since it will treat this as new task.
2432
2433
2434 update pa_projects_all a
2435 set pm_project_reference = P_PROJECT_IN_REC.pm_project_reference ,
2436 pm_product_code = 'PRIMAVERA'
2437 where project_id = P_PROJECT_IN_REC.pa_project_id;
2438
2439 update pa_proj_elements a
2440 set ( pm_source_reference ) =
2441 ( select b.task_ref
2442 from pa_wbs_seq_tmp b
2443 where b.task_id = a.proj_element_id )
2444 where exists
2445 ( select 'x' from pa_wbs_seq_tmp c where c.task_id = a.proj_element_id ) ;
2446
2447 update pa_tasks a
2448 set ( pm_task_reference, pm_product_code ) =
2449 ( select b.task_ref, 'PRIMAVERA'
2450 from pa_wbs_seq_tmp b
2451 where b.task_id = a.task_id )
2452 where exists
2453 ( select 'x' from pa_wbs_seq_tmp c where c.task_id = a.task_id ) ;
2454
2455
2456 select a.proj_element_id , a.element_version_id
2457 bulk collect into X_DELETE_TASK_ID_TBL, X_DELETE_TASK_VER_ID_TBL
2458 from PA_PROJ_ELEMENT_VERSIONS a , pa_proj_elements c
2459 where a.project_id = P_PROJECT_IN_REC.pa_project_id
2460 and a.parent_structure_version_id = P_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
2461 and a.object_type = 'PA_TASKS'
2462 and a.proj_element_id = c.proj_element_id
2463 and
2464 ( not exists
2465 ( select 'x'
2466 from pa_wbs_seq_tmp b
2467 where ( c.pm_source_reference is not null and c.pm_source_reference = b.task_ref ) or ( c.pm_source_reference is null and b.task_id = c.proj_element_id )
2468 )
2469 )
2470 order by a.wbs_level desc ;
2471
2472 log_pvt('WBS_ORDER',' X_DELETE_TASK_ID_TBL.count '||X_DELETE_TASK_ID_TBL.count);
2473
2474 exception
2475 when no_data_found then
2476 null;
2477 when others then
2478 log_pvt('WBS_ORDER','raise 2222a');
2479 raise;
2480 END ;
2481
2482
2483 END IF;
2484
2485
2486
2487
2488 exception
2489 when others then
2490 log_pvt('WBS_ORDER','raise 2222');
2491 raise;
2492 END wbs_order;
2493
2494
2495 procedure DELETE_RES_ASSGN_PVT (
2496 p_project_in_rec IN pa_project_pub.project_in_rec_type,
2497 p_structure_in_rec IN pa_project_pub.structure_in_rec_type,
2498 p_res_pa_task_assignment_id IN g_num,
2499 x_DEL_RES_ASGMT_OBJ_TBL OUT NOCOPY SYSTEM.delete_RES_ASGMT_OUT_OBJ_TBL,
2500 x_DEL_RES_ASSGMT_STATUS OUT NOCOPY varchar2,
2501 x_del_res_msg_data OUT NOCOPY varchar2
2502 ) IS
2503
2504 l_del_res_id_tbl g_num_tbl;
2505 l_del_task_id_tbl g_num_tbl;
2506 l_del_task_ver_id_tbl g_num_tbl;
2507
2508 l_cnt number;
2509 l_res_id_tbl g_num_tbl;
2510
2511 l_del_res_asgmt_obj SYSTEM.delete_RES_ASGMT_OUT_OBJ;
2512 l_del_res_asgmt_obj_tbl SYSTEM.delete_res_asgmt_out_obj_tbl;
2513
2514 l_del_res_asgmt_rec PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_IN_REC_TYPE;
2515 l_del_res_asgmt_rec_tbl PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_IN_TBL_TYPE;
2516
2517 X_MSG_COUNT NUMBER;
2518 X_MSG_DATA VARCHAR2(2000);
2519 l_RETURN_STATUS VARCHAR2(30);
2520
2521 l_data VARCHAR2(2000);
2522 l_msg_index number;
2523 l_msg_index_out number;
2524
2525 Begin
2526 null;
2527
2528 l_del_res_asgmt_obj_tbl := SYSTEM.delete_res_asgmt_out_obj_tbl();
2529 l_del_res_asgmt_obj := SYSTEM.delete_RES_ASGMT_OUT_OBJ(null,null,null);
2530
2531 l_del_res_asgmt_obj_tbl.delete;
2532
2533 l_cnt := 0;
2534
2535 log_pvt('DEL_RES','Before For loop p_res_pa_task_assignment_id.count '|| p_res_pa_task_assignment_id.count);
2536
2537 if ( p_res_pa_task_assignment_id.count > 0 ) then
2538
2539 FOR i in p_res_pa_task_assignment_id.first .. p_res_pa_task_assignment_id.last loop
2540
2541 if ( nvl(p_res_pa_task_assignment_id(i),PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
2542 <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
2543
2544 l_cnt := l_cnt + 1;
2545 l_res_id_tbl(l_cnt) := p_res_pa_task_assignment_id(i);
2546
2547 log_pvt('DEL_RES','l_res_id_tbl count : '|| l_res_id_tbl.count);
2548
2549 end if;
2550
2551 END LOOP;
2552
2553 end if;
2554
2555 DELETE FROM pa_wbs_seq_tmp ;
2556
2557 log_pvt('DEL_RES','Before Forall '|| l_res_id_tbl.count);
2558
2559 if ( l_res_id_tbl.count > 0 ) then
2560
2561 FORALL i in l_res_id_tbl.first .. l_res_id_tbl.last
2562 INSERT INTO pa_wbs_seq_tmp ( task_id , task_ref , parent_task_ref , list_id )
2563 VALUES ( l_res_id_tbl(i),null,null,null);
2564
2565 end if;
2566
2567 log_pvt('DEL_RES','Before select '|| l_res_id_tbl.count);
2568
2569 Select res1.resource_assignment_id , res1.task_id , a.element_version_id bulk collect
2570 into l_del_res_id_tbl, l_del_task_id_tbl, l_del_task_ver_id_tbl
2571 from pa_resource_assignments res1 , pa_budget_versions bud1 , PA_PROJ_ELEMENT_VERSIONS a
2572 where bud1.project_structure_version_id = P_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
2573 and bud1.budget_version_id = res1.budget_version_id
2574 and a.proj_element_id = res1.task_id
2575 and a.parent_structure_version_id = bud1.project_structure_version_id
2576 AND res1.unplanned_flag IS NULL -- Bug 12970445
2577 and not exists
2578 ( select 'x' from pa_wbs_seq_tmp seq1
2579 where seq1.task_id = res1. resource_assignment_id ) ;
2580
2581 log_pvt('DEL_RES',' l_del_res_id_tbl.count '||l_del_res_id_tbl.count);
2582
2583 if ( l_del_res_id_tbl.count > 0 ) then
2584
2585 -- log_pvt('DEL_RES',' Before Extend ');
2586
2587 l_del_res_asgmt_obj_tbl.extend(l_del_res_id_tbl.count);
2588
2589 for k in l_del_res_id_tbl.first .. l_del_res_id_tbl.last loop
2590
2591 -- log_pvt('DEL_RES',' Start loop ');
2592
2593 l_del_res_asgmt_obj.RESOURCE_ASSIGNMENT_ID := l_del_res_id_tbl(k);
2594 l_del_res_asgmt_obj.PA_TASK_ID := l_del_task_id_tbl(k);
2595 l_del_res_asgmt_obj.deleted_status := 'S';
2596
2597
2598 begin
2599
2600 l_del_res_asgmt_rec.pa_project_id := p_project_in_rec.pa_project_id;
2601 l_del_res_asgmt_rec.pa_structure_version_id := P_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID;
2602 l_del_res_asgmt_rec.pa_task_id := l_del_task_id_tbl(k);
2603 l_del_res_asgmt_rec.pa_task_element_version_id := l_del_task_ver_id_tbl(k);
2604 l_del_res_asgmt_rec.pa_task_assignment_id := l_del_res_id_tbl(k);
2605 l_del_res_asgmt_rec.p_context := 'D';
2606
2607 -- log_pvt('DEL_RES',' before tbl assign ');
2608
2609 l_del_res_asgmt_rec_tbl(k) := l_del_res_asgmt_rec;
2610
2611 exception
2612 when others then
2613 l_del_res_asgmt_obj.deleted_status := 'E' ;
2614 x_DEL_RES_ASSGMT_STATUS := 'E';
2615 end ;
2616
2617 l_del_res_asgmt_obj_tbl(k) := l_del_res_asgmt_obj;
2618
2619 end loop; /* res assigm loop */
2620
2621 x_DEL_RES_ASGMT_OBJ_TBL := l_del_res_asgmt_obj_tbl;
2622
2623 log_pvt('DEL_RES',' Before API Call 0 ');
2624 log_pvt('DEL_RES',' Before API Call '||l_del_res_asgmt_rec_tbl.count);
2625
2626 begin
2627
2628
2629 PA_TASK_ASSIGNMENTS_PUB.Delete_Task_Assignments
2630 ( p_api_version_number => 1.0
2631 ,p_commit => fnd_api.g_false
2632 ,p_init_msg_list => FND_API.G_TRUE
2633 ,p_pa_project_id => p_project_in_rec.pa_project_id
2634 ,p_pa_structure_version_id => P_STRUCTURE_IN_REC.STRUCTURE_VERSION_ID
2635 ,p_task_assignments_in => l_del_res_asgmt_rec_tbl
2636 ,x_msg_count => x_msg_count
2637 ,x_msg_data => x_msg_data
2638 ,x_return_status => l_return_status
2639 );
2640
2641
2642 X_DEL_RES_ASSGMT_STATUS := l_return_status;
2643
2644 --- ADD DELETE PUB API !!!!
2645
2646 log_pvt('DEL_RES','ERORRS : x_msg_count '|| x_msg_count);
2647 log_pvt('DEL_RES','ERORRS : l_return_status '|| l_return_status);
2648
2649 x_msg_count := nvl(x_msg_count,1);
2650 if ( x_msg_count > 10 ) then
2651 x_msg_count := 10;
2652 end if;
2653 for i in 1..x_msg_count loop
2654
2655 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
2656 ,p_msg_index => x_msg_count
2657 ,p_data => l_data
2658 ,p_msg_index_out => l_msg_index_out
2659 );
2660 log_pvt('DEL_RES','ERORRS : delete res assgm : '||l_data);
2661 x_del_res_msg_data := l_data;
2662 end loop; /* error message loop */
2663
2664 exception
2665 when others then
2666 l_del_res_asgmt_obj.deleted_status := 'E' ;
2667 x_DEL_RES_ASSGMT_STATUS := 'E';
2668 x_del_res_msg_data := 'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM;
2669 end ;
2670
2671
2672 end if ;
2673
2674 log_pvt('DEL_RES',' End of delete_res_assgn_pvt ');
2675
2676 End DELETE_RES_ASSGN_PVT ;
2677
2678
2679 procedure DELETE_TASK_PVT(
2680 p_project_in_rec IN pa_project_pub.project_in_rec_type,
2681 p_structure_in_rec IN pa_project_pub.structure_in_rec_type,
2682 p_delete_task_ver_id_tbl IN G_NUM_TBL,
2683 p_delete_task_id_tbl IN G_NUM_TBL,
2684 x_del_task_out_obj_tbl OUT NOCOPY SYSTEM.delete_TASK_OUT_obj_TBL,
2685 x_del_task_status OUT NOCOPY varchar2,
2686 x_del_task_msg_data OUT NOCOPY varchar2
2687 ) IS
2688
2689 l_del_task_out_obj SYSTEM.delete_task_out_obj;
2690 l_del_task_out_obj_tbl SYSTEM.delete_task_out_obj_tbl;
2691 l_del_task_status varchar2(1);
2692
2693 X_MSG_COUNT NUMBER;
2694 X_MSG_DATA VARCHAR2(2000);
2695 l_RETURN_STATUS VARCHAR2(30);
2696
2697 l_project_id NUMBER;
2698 l_task_id NUMBER;
2699
2700 l_data VARCHAR2(2000);
2701 l_msg_index number;
2702 l_msg_index_out number;
2703
2704 begin
2705
2706 x_del_task_status := 'S';
2707
2708 l_del_task_out_obj_tbl := SYSTEM.delete_task_out_obj_tbl();
2709 l_del_task_out_obj := SYSTEM.delete_task_out_obj(null,null,null);
2710
2711 l_del_task_out_obj_tbl.delete;
2712
2713 if ( p_delete_task_id_tbl.count > 0 ) then
2714
2715 l_del_task_out_obj_tbl.extend( p_delete_task_id_tbl.count);
2716
2717 for i in p_delete_task_id_tbl.first .. p_delete_task_id_tbl.last loop
2718
2719 log_pvt('DELETE',' p_delete_task_id_tbl(i) '|| p_delete_task_id_tbl(i));
2720
2721 l_del_task_out_obj.pa_task_id := p_delete_task_id_tbl(i);
2722
2723 begin
2724
2725
2726 pa_project_pub.delete_task ( p_api_version_number => 1.0 -- for bug# 3802319
2727 ,p_commit => fnd_api.g_false
2728 ,p_init_msg_list => 'T'
2729 ,p_msg_count => x_msg_count
2730 ,p_msg_data => x_msg_data
2731 ,p_return_status => l_return_status
2732 ,p_pm_product_code => 'PRIMAVERA'
2733 -- ,p_pm_project_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2734 ,p_pa_project_id => p_project_in_rec.pa_project_id
2735 -- ,p_pm_task_reference IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2736 ,p_pa_task_id => p_delete_task_id_tbl(i)
2737 ,p_cascaded_delete_flag => 'N'
2738 ,p_project_id => l_project_id
2739 ,p_task_id => l_task_id
2740 ,p_task_version_id => p_delete_task_ver_id_tbl(i)
2741 ,p_structure_type => p_structure_in_rec.STRUCTURE_TYPE
2742 -- ,p_process_mode IN VARCHAR2 := 'ONLINE'
2743 -- ,p_structure_updates_flag IN VARCHAR2 := 'Y'
2744 );
2745
2746 log_pvt('DELETE','pub.delete_task : after execute '||l_RETURN_STATUS);
2747
2748 x_msg_count := nvl(x_msg_count,1);
2749 if ( x_msg_count > 10 ) then
2750 x_msg_count := 10;
2751 end if;
2752 for i in 1..x_msg_count loop
2753
2754 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
2755 ,p_msg_index => x_msg_count
2756 ,p_data => l_data
2757 ,p_msg_index_out => l_msg_index_out
2758 );
2759
2760 -- dbms_output.put_line ('Error Message: ' ||l_data);
2761 log_pvt('DELETE','ERORRS : '||l_data);
2762 -- l_project_out_obj.msg_data := l_data;
2763 l_del_task_out_obj.error_message := l_data;
2764 x_del_task_msg_data := l_data;
2765 end loop;
2766
2767
2768 l_del_task_out_obj.deleted_status := l_return_status;
2769
2770 if ( x_del_task_status = 'S' ) then
2771 x_del_task_status := l_return_status;
2772 end if;
2773
2774 null;
2775 exception
2776 when others then
2777 l_del_task_out_obj.deleted_status := 'E';
2778 x_del_task_status := 'E';
2779 end;
2780
2781 l_del_task_out_obj_tbl(i) := l_del_task_out_obj;
2782
2783 end loop;
2784 end if ;
2785
2786 x_del_task_status := 'S';
2787
2788 --commit;
2789
2790 end DELETE_TASK_PVT;
2791
2792 PROCEDURE WRITE_LOG (
2793 p_module in varchar2,
2794 p_msg in varchar2
2795 ) IS pragma autonomous_transaction;
2796
2797 BEGIN
2798
2799
2800 insert into PJI_SYSTEM_DEBUG_MSG
2801 (
2802 MESSAGE_ID,
2803 MESSAGE_LEVEL,
2804 MESSAGE_CONTEXT,
2805 MESSAGE_TEXT,
2806 MESSAGE_TYPE,
2807 MODULE,
2808 CREATED_BY,
2809 CREATION_DATE
2810 )
2811 values
2812 (
2813 PJI_SYSTEM_DEBUG_MSG_S.NEXTVAL,
2814 1,
2815 'AIA',
2816 substr(p_msg,1,3999),
2817 'OUT',
2818 substr(p_module,1,239),
2819 -1,
2820 sysdate
2821 );
2822 insert into
2823 fnd_log_messages
2824 (module,
2825 log_level,
2826 message_text,
2827 user_id,
2828 timestamp,
2829 log_sequence)
2830 values
2831 ('AIA-PA_PROJECT_INTEGRATION_PUB' || substr(p_module,1,225),
2832 1,
2833 substr(p_msg,1,3999),
2834 fnd_global.user_id,
2835 sysdate,
2836 fnd_log_messages_s.nextval);
2837 commit;
2838
2839
2840 END write_log;
2841
2842 PROCEDURE COPY_PROJECT_INT_OPTIONS ( P_ORIG_PROJECT_ID IN NUMBER,
2843 P_PROJECT_ID IN NUMBER,
2844 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
2845 X_MSG_COUNT OUT NOCOPY NUMBER ,
2846 X_MSG_DATA OUT NOCOPY VARCHAR2 )
2847 IS
2848 L_RETURN_STATUS VARCHAR2(1);
2849 L_MSG_COUNT NUMBER;
2850 L_MSG_DATA VARCHAR2(2000);
2851
2852 CURSOR C_SOURCE_RECORDS ( CP_PROJECT_ID NUMBER ) IS
2853 SELECT PaProjectIntegrationSettingsEO.PROJECT_ID,
2854 PaProjectIntegrationSettingsEO.ENABLE_INTEGRATION,
2855 PaProjectIntegrationSettingsEO.STRUCTURE_TYPE,
2856 PaProjectIntegrationSettingsEO.SEND_ACTUAL_COST_TYPE,
2857 PaProjectIntegrationSettingsEO.SEND_TASK,
2858 PaProjectIntegrationSettingsEO.SEND_TASK_REF,
2859 PaProjectIntegrationSettingsEO.RECEIVE_TASK,
2860 PaProjectIntegrationSettingsEO.SEND_BUDGET,
2861 PaProjectIntegrationSettingsEO.SEND_BUDGET_REF,
2862 PaProjectIntegrationSettingsEO.RECEIVE_BUDGET,
2863 PaProjectIntegrationSettingsEO.FIN_PLAN_TYPE_ID,
2864 PaProjectIntegrationSettingsEO.FIN_STRUCT_MAX_LEVEL,
2865 PaProjectIntegrationSettingsEO.BUDGET_TYPE,
2866 PaProjectIntegrationSettingsEO.SYNCHRONIZE_MARK,
2867 PaProjectIntegrationSettingsEO.LAST_SYNCHRONIZATION_DATE,
2868 PaProjectIntegrationSettingsEO.SYNCHRONIZATION_STAGE,
2869 PaProjectIntegrationSettingsEO.CREATE_PLANNING_RESOURCE
2870 FROM PA_INTEGRATION_SETTINGS PaProjectIntegrationSettingsEO
2871 WHERE PaProjectIntegrationSettingsEO.PROJECT_ID = CP_PROJECT_ID;
2872
2873 BEGIN
2874
2875 FOR C_SOURCE_RECORD IN C_SOURCE_RECORDS(P_ORIG_PROJECT_ID) LOOP
2876 BEGIN
2877 INSERT INTO PA_INTEGRATION_SETTINGS (
2878 PROJECT_ID,
2879 ENABLE_INTEGRATION,
2880 STRUCTURE_TYPE,
2881 SEND_ACTUAL_COST_TYPE,
2882 SEND_TASK,
2883 SEND_TASK_REF,
2884 RECEIVE_TASK,
2885 SEND_BUDGET,
2886 SEND_BUDGET_REF,
2887 RECEIVE_BUDGET,
2888 FIN_PLAN_TYPE_ID,
2889 FIN_STRUCT_MAX_LEVEL,
2890 BUDGET_TYPE,
2891 SYNCHRONIZE_MARK,
2892 CREATE_PLANNING_RESOURCE,
2893 LAST_UPDATE_DATE,
2894 LAST_UPDATED_BY,
2895 CREATION_DATE,
2896 CREATED_BY,
2897 LAST_UPDATE_LOGIN )
2898 VALUES (
2899 P_PROJECT_ID,
2900 C_SOURCE_RECORD.ENABLE_INTEGRATION,
2901 C_SOURCE_RECORD.STRUCTURE_TYPE,
2902 C_SOURCE_RECORD.SEND_ACTUAL_COST_TYPE,
2903 C_SOURCE_RECORD.SEND_TASK,
2904 C_SOURCE_RECORD.SEND_TASK_REF,
2905 C_SOURCE_RECORD.RECEIVE_TASK,
2906 C_SOURCE_RECORD.SEND_BUDGET,
2907 C_SOURCE_RECORD.SEND_BUDGET_REF,
2908 C_SOURCE_RECORD.RECEIVE_BUDGET,
2909 C_SOURCE_RECORD.FIN_PLAN_TYPE_ID,
2910 C_SOURCE_RECORD.FIN_STRUCT_MAX_LEVEL,
2911 C_SOURCE_RECORD.BUDGET_TYPE,
2912 C_SOURCE_RECORD.SYNCHRONIZE_MARK,
2913 C_SOURCE_RECORD.CREATE_PLANNING_RESOURCE,
2914 SYSDATE,
2915 FND_GLOBAL.USER_ID,
2916 SYSDATE,
2917 FND_GLOBAL.USER_ID,
2918 FND_GLOBAL.USER_ID );
2919 END;
2920 END LOOP;
2921
2922 EXCEPTION
2923 WHEN OTHERS THEN
2924 X_RETURN_STATUS := 'E';
2925 X_MSG_COUNT := 1;
2926 X_MSG_DATA := SQLERRM;
2927 END COPY_PROJECT_INT_OPTIONS;
2928
2929 PROCEDURE get_project_org_name (
2930 X_org_name OUT NOCOPY varchar2
2931 ,x_return_status OUT NOCOPY varchar2
2932 ,x_msg_data OUT NOCOPY varchar2
2933 ,p_CREATED_FROM_PROJECT_NUMBER IN VARCHAR2
2934 ,P_pa_project_id IN Number
2935 )
2936 IS
2937 l_project_id number := null;
2938 l_from_project_number varchar2(50) := null;
2939 X_MSG_COUNT NUMBER;
2940 l_data VARCHAR2(2000);
2941 l_msg_index number;
2942 l_msg_index_out number;
2943
2944 Begin
2945
2946 x_return_status := 'S';
2947
2948 if ( p_CREATED_FROM_PROJECT_NUMBER <> FND_API.G_MISS_CHAR ) then
2949 l_from_project_number := p_CREATED_FROM_PROJECT_NUMBER ;
2950 end if;
2951
2952 if ( P_pa_project_id <> FND_API.G_MISS_NUM ) then
2953 l_project_id := P_pa_project_id ;
2954 end if;
2955
2956 select a.name
2957 into X_org_name
2958 from hr_operating_units a , pa_projects_all b
2959 where (
2960 ( ( l_project_id is not null ) and ( l_project_id = b.project_id ) )
2961 or
2962 ( ( l_project_id is null ) and (l_from_project_number = b.segment1 ) )
2963 )
2964 and a.organization_id = b.org_id ;
2965
2966 EXCEPTION
2967 WHEN NO_DATA_FOUND THEN
2968 x_return_status := 'E';
2969 pa_utils.add_message
2970 ( p_app_short_name => 'PA'-- new message for AA TRACKING
2971 ,p_msg_name => 'PA_SOURCE_TEMPLATE_INVALID_AMG'
2972 ,p_token1 => 'PROJECT'
2973 ,p_value1 => p_CREATED_FROM_PROJECT_NUMBER
2974 );
2975 X_MSG_COUNT := FND_MSG_PUB.count_msg ;
2976 for i in 1..x_msg_count loop
2977 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
2978 ,p_msg_index => x_msg_count
2979 ,p_data => l_data
2980 ,p_msg_index_out => l_msg_index_out
2981 );
2982
2983 log_pvt('get_project_org_name','ERORRS : '||l_data);
2984 x_msg_data := l_data;
2985
2986 end loop;
2987 WHEN OTHERS THEN
2988 raise;
2989 end get_project_org_name;
2990
2991 PROCEDURE SYNC_BUDGETS(
2992 X_budget_OUT OUT NOCOPY SYSTEM.budget_OUT_OBJ_TBL
2993 ,X_RETURN_STATUS OUT NOCOPY VARCHAR2
2994 ,P_SYNC_MODE IN CHAR := 'S'
2995 ,P_budget_IN IN SYSTEM.budget_IN_OBJ_TBL
2996 )
2997 IS
2998
2999 l_budget_line_out_tbl pa_budget_pub.budget_line_out_tbl_type;
3000 p_dumy_budget_line_out_tbl pa_budget_pub.budget_line_out_tbl_type;
3001
3002 l_budget_line_in_rec pa_budget_pub.budget_line_in_rec_type;
3003 c_budget_line_in_rec pa_budget_pub.budget_line_in_rec_type;
3004 l_budget_line_out_rec pa_budget_pub.budget_line_out_rec_type;
3005
3006 l_budget_line_in_tbl pa_budget_pub.budget_line_in_tbl_type;
3007 P_dumy_budget_line_in_tbl pa_budget_pub.budget_line_in_tbl_type;
3008
3009 l_budget_cnt number := 0;
3010
3011 l_task_line_obj SYSTEM.task_line_obj ;
3012 l_task_line_OBJ_tbl SYSTEM.task_line_OBJ_tbl;
3013 l_plan_task_obj SYSTEM.plan_task_obj ;
3014 l_Plan_Task_OBJ_tbl SYSTEM.Plan_Task_OBJ_tbl ;
3015 l_budget_in_obj SYSTEM.budget_in_obj ;
3016 l_budget_in_obj_TBL SYSTEM.budget_in_obj_TBL ;
3017 l_budget_out_obj SYSTEM.budget_out_obj ;
3018 l_budget_out_obj_tbl SYSTEM.budget_out_obj_tbl ;
3019
3020 l_return_status varchar2(3) := 'S';
3021 lx_return_status varchar2(3) := 'S';
3022 l_return_message varchar2(200);
3023
3024 l_fin_plan_type_id number;
3025 l_budget_type varchar2(30) := null;
3026
3027 l_level_code varchar2(30);
3028 l_res_list_id number;
3029 l_res_mem_id number;
3030 l_budget_ver_id number ;
3031
3032 l_ver_not_found varchar2(1);
3033
3034 X_MSG_COUNT NUMBER;
3035 X_MSG_DATA VARCHAR2(2000);
3036
3037 l_create_flag varchar2(1);
3038 l_replace_flag varchar2(1);
3039
3040 l_ver_name varchar2(200);
3041 l_ver_number varchar2(200);
3042 l_cost_time_phased_code varchar2(3);
3043
3044 l_task_line_out_obj SYSTEM.task_line_out_obj;
3045 l_task_line_OUT_TBL SYSTEM.task_line_OUT_OBJ_TBL;
3046 l_plan_task_out_obj SYSTEM.plan_task_out_obj;
3047 l_plan_task_OUT_TBL SYSTEM.plan_task_OUT_OBJ_TBL;
3048
3049 CURSOR l_period_date_csr
3050 (p_date DATE
3051 ,p_period_type_code VARCHAR2 )
3052 IS
3053 SELECT period_start_date , period_end_date
3054 FROM pa_budget_periods_v
3055 WHERE period_type_code = p_period_type_code
3056 AND p_date between period_start_date AND period_end_date;
3057
3058
3059 l_start_date date;
3060 l_end_date date ;
3061
3062
3063 ------ for testing --------------------------
3064 l_data VARCHAR2(2000);
3065 l_msg_index number;
3066 l_msg_index_out number;
3067
3068 ------ for testing -----------------------------
3069
3070 BEGIN
3071 null;
3072
3073 log_pvt('BUDGET','****Start of the procedure*****');
3074
3075 log_pvt('BUDGET',' P_budget_IN.count '||P_budget_IN.count);
3076
3077 log_pvt('BUDGET', '############# FND_GLOBAL.User_id '|| FND_GLOBAL.User_id);
3078 log_pvt('BUDGET', '############# FND_GLOBAL.Resp_id '|| FND_GLOBAL.Resp_id);
3079 log_pvt('BUDGET', '############# FND_GLOBAL.ORG_ID '|| FND_GLOBAL.ORG_ID);
3080
3081 MO_GLOBAL.SET_POLICY_CONTEXT('S',fnd_global.ORG_ID); -- Bug 10254776
3082
3083 l_budget_out_obj_tbl := SYSTEM.budget_out_obj_tbl();
3084
3085 l_budget_out_obj_tbl.extend(P_budget_IN.count);
3086
3087 l_budget_out_obj := SYSTEM.budget_out_obj(null,null,null,null,null);
3088
3089
3090 FOR i in P_budget_IN.first .. P_budget_IN.last LOOP
3091
3092 l_budget_line_in_tbl.delete;
3093 l_budget_line_out_tbl.delete;
3094
3095 --------- START ---------- reading one budget data into AMG API budget records ------------------
3096
3097 l_budget_in_obj := P_budget_in(i);
3098
3099 log_pvt('BUDGET_DATA',' BEFORE HEAD project_id '||l_budget_in_obj.PROJECT_ID);
3100 log_pvt('BUDGET_DATA',' BEFORE HEAD Currency_Code '||l_budget_in_obj.Currency_Code);
3101 log_pvt('BUDGET_DATA',' BEFORE HEAD TOTAL_BURDENED_COST '||l_budget_in_obj.TOTAL_BURDENED_COST);
3102 log_pvt('BUDGET_DATA',' BEFORE HEAD TOTAL_RAW_COST '||l_budget_in_obj.TOTAL_RAW_COST);
3103 log_pvt('BUDGET_DATA',' BEFORE HEAD BUDGET_ID '||l_budget_in_obj.BUDGET_ID);
3104
3105 if ( nvl(l_budget_in_obj.PROJECT_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3106 l_budget_in_obj.PROJECT_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3107 end if;
3108
3109 if ( nvl(l_budget_in_obj.Plan_Class_Code,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3110 l_budget_in_obj.Plan_Class_Code := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3111 end if;
3112
3113 if ( nvl(l_budget_in_obj.Currency_Code,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3114 l_budget_in_obj.Currency_Code := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3115 end if;
3116
3117 if ( nvl(l_budget_in_obj.Update_Reason,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3118 l_budget_in_obj.Update_Reason := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3119 end if;
3120
3121 if ( nvl(l_budget_in_obj.Status,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3122 l_budget_in_obj.Status := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3123 end if;
3124
3125 if ( nvl(l_budget_in_obj.Baselined_Date,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) = FND_API.G_MISS_DATE ) then
3126 l_budget_in_obj.Baselined_Date := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
3127 end if;
3128
3129 if ( nvl(l_budget_in_obj.TOTAL_BURDENED_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3130 l_budget_in_obj.TOTAL_BURDENED_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3131 end if;
3132
3133 if ( nvl(l_budget_in_obj.TOTAL_RAW_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3134 l_budget_in_obj.TOTAL_RAW_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3135 end if;
3136
3137 if ( nvl(l_budget_in_obj.BUDGET_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3138 l_budget_in_obj.BUDGET_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3139 end if;
3140
3141 if ( nvl(l_budget_in_obj.Type_Code,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3142 l_budget_in_obj.Type_Code := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3143 end if;
3144
3145 if ( nvl(l_budget_in_obj.Level_Code,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3146 l_budget_in_obj.Level_Code := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3147 end if;
3148
3149 if ( nvl(l_budget_in_obj.Name,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3150 l_budget_in_obj.Name := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3151 end if;
3152
3153 if ( nvl(l_budget_in_obj.Description,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3154 l_budget_in_obj.Description := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3155 end if;
3156
3157 l_budget_out_obj.AIA_COMMON_ID := l_budget_in_obj.AIA_COMMON_ID;
3158 l_budget_out_obj.budget_id := l_budget_in_obj.project_id;
3159 l_budget_out_obj.RETURN_STATUS := 'S';
3160
3161 log_pvt('BUDGET_DATA',' AFTER HEAD project_id '||l_budget_in_obj.PROJECT_ID);
3162 log_pvt('BUDGET_DATA',' AFTER HEAD Currency_Code '||l_budget_in_obj.Currency_Code);
3163 log_pvt('BUDGET_DATA',' AFTER HEAD TOTAL_BURDENED_COST '||l_budget_in_obj.TOTAL_BURDENED_COST);
3164 log_pvt('BUDGET_DATA',' AFTER HEAD TOTAL_RAW_COST '||l_budget_in_obj.TOTAL_RAW_COST);
3165 log_pvt('BUDGET_DATA',' AFTER HEAD BUDGET_ID '||l_budget_in_obj.BUDGET_ID);
3166
3167 log_pvt('BUDGET','before selecting intg options l_budget_in_obj.project_id '||l_budget_in_obj.project_id );
3168
3169 begin
3170
3171 l_fin_plan_type_id := null;
3172 l_budget_type := null;
3173 select i1.fin_plan_type_id , i1.budget_type, p1.start_date , p1.completion_date
3174 into l_fin_plan_type_id , l_budget_type, l_start_date , l_end_date
3175 from pa_integration_settings i1, pa_projects_all p1
3176 where i1.project_id = l_budget_in_obj.project_id
3177 and i1.project_id = p1.project_id
3178 and i1.enable_integration = 'Y';
3179
3180 exception
3181 when no_data_found then
3182 log_pvt('BUDGET','PA_INTG_NOT_ENABLED');
3183 l_return_status := 'E';
3184 pa_utils.add_message
3185 ( p_app_short_name => 'PA'
3186 ,p_msg_name => 'PA_INTG_NOT_ENABLED'
3187 );
3188 l_return_message := 'PA_INTG_NOT_ENABLED';
3189 when others then
3190 log_pvt('BUDGET','raise 6000');
3191 l_return_status := 'E';
3192 raise;
3193 end ;
3194
3195 l_level_code := null;
3196 l_res_list_id := null;
3197 l_budget_ver_id := null;
3198
3199 log_pvt('BUDGET','l_fin_plan_type_id '||l_fin_plan_type_id||'l_budget_type '||l_budget_type );
3200 if ( l_fin_plan_type_id is not null ) and l_return_status = 'S' then
3201
3202 l_budget_type := null;
3203 l_ver_not_found := 'N';
3204 begin
3205 select b.cost_fin_plan_level_code , b.cost_resource_list_id , a.budget_version_id , b.cost_time_phased_code --a.* -- <> 1000
3206 into l_level_code , l_res_list_id , l_budget_ver_id , l_cost_time_phased_code
3207 from pa_budget_versions a , pa_proj_fp_options b
3208 where a.project_id = l_budget_in_obj.project_id
3209 and a.budget_status_code = 'W'
3210 and a.current_working_flag = 'Y'
3211 and a.fin_plan_type_id = b.fin_plan_type_id
3212 and a.budget_version_id = b.fin_plan_version_id --Kmaddi
3213 and b.fin_plan_option_level_code = 'PLAN_VERSION'
3214 and a.project_id = b.project_id
3215 and b.fin_plan_preference_code like '%COST%'
3216 and a.fin_plan_type_id = l_fin_plan_type_id
3217 and a.fin_plan_type_id <> 10 ;
3218
3219 exception
3220 when no_data_found then
3221 log_pvt('BUDGET','no budget version ');
3222 l_ver_not_found := 'Y';
3223 when others then
3224 log_pvt('BUDGET','raise 6001');
3225 raise;
3226 end ;
3227
3228 if ( l_ver_not_found = 'Y' ) then
3229
3230 begin
3231 select b.cost_fin_plan_level_code , b.cost_resource_list_id , to_number(null) , b.cost_time_phased_code --a.* -- <> 1000
3232 into l_level_code , l_res_list_id , l_budget_ver_id , l_cost_time_phased_code
3233 from pa_proj_fp_options b
3234 where b.project_id = l_budget_in_obj.project_id
3235 and b.fin_plan_option_level_code = 'PLAN_TYPE'
3236 and b.fin_plan_preference_code like '%COST%'
3237 and b.fin_plan_type_id = l_fin_plan_type_id;
3238
3239 exception
3240 when no_data_found then
3241 log_pvt('BUDGET','plan type not defined ');
3242 l_return_status := 'E';
3243 pa_utils.add_message
3244 ( p_app_short_name => 'PA'
3245 ,p_msg_name => 'PA_PLAN_TYPE_NO_DEFINED'
3246 );
3247 l_return_message := 'PA_PLAN_TYPE_NO_DEFINED';
3248 when others then
3249 log_pvt('BUDGET','raise 6002');
3250 l_return_status := 'E';
3251 raise;
3252 end ;
3253
3254 end if ; -- l_ver_not_found = 'Y'
3255
3256 else /* l_fin_plan_type_id is not null */
3257 null;
3258
3259 begin
3260
3261 select a.resource_list_id , b.entry_level_code , a.budget_version_id, version_name, version_number,
3262 b.time_phased_type_code --Bug 8821532
3263 into l_res_list_id, l_level_code, l_budget_ver_id, l_ver_name , l_ver_number,l_cost_time_phased_code --Bug 8821532
3264 FROM PA_BUDGET_VERSIONS a , pa_budget_entry_methods b
3265 where a.fin_plan_type_id is null
3266 and a.project_id = l_budget_in_obj.project_id
3267 and a.budget_status_code = 'W'
3268 --and a.current_working_flag = 'Y' --Bug 8821532
3269 and a.budget_type_code = l_budget_type
3270 and b.budget_entry_method_code = a.budget_entry_method_code ;
3271
3272 exception
3273 when no_data_found then
3274 log_pvt('BUDGET','working budget not defined ');
3275 l_return_status := 'E';
3276 pa_utils.add_message
3277 ( p_app_short_name => 'PA'
3278 ,p_msg_name => 'PA_BUD_WORK_NOT_EXIST'
3279 );
3280 l_return_message := 'PA_BUD_WORK_NOT_EXIST';
3281 when others then
3282 log_pvt('BUDGET','raise 6004');
3283 l_return_status := 'E';
3284 raise;
3285 end ;
3286
3287 end if; /* l_fin_plan_type_id is not null */
3288
3289 log_pvt('BUDGET','l_level_code '||l_level_code||' l_res_list_id '||l_res_list_id);
3290 log_pvt('BUDGET','l_cost_time_phased_code '||l_cost_time_phased_code||' l_budget_ver_id '||l_budget_ver_id);
3291 log_pvt('BUDGET','l_start_date '||l_start_date||' l_end_date '||l_end_date);
3292
3293 if ( l_level_code = 'P' and nvl(l_res_list_id,1000) = 1000 ) and l_return_status = 'S' then
3294
3295
3296 l_budget_line_in_rec.raw_cost := l_budget_in_obj.TOTAL_RAW_COST;
3297 --l_budget_line_in_rec.burdened_cost := l_budget_in_obj.TOTAL_BURDENED_COST; --Bug 8811777
3298 l_budget_line_in_rec.pm_product_code := 'PRIMAVERA';
3299 l_budget_line_in_rec.pm_budget_line_reference := l_budget_in_obj.project_id;
3300 l_budget_line_in_rec.budget_start_date := l_start_date;
3301 l_budget_line_in_rec.budget_end_date := l_end_date;
3302 l_budget_line_in_rec.txn_currency_code := l_budget_in_obj.Currency_Code;
3303 l_budget_line_in_rec.pa_task_id := 0; --Bug 8813761
3304
3305 OPEN l_period_date_csr( l_start_date
3306 ,l_cost_time_phased_code );
3307
3308 FETCH l_period_date_csr
3309 INTO l_budget_line_in_rec.budget_start_date,
3310 l_budget_line_in_rec.budget_end_date;
3311
3312 IF l_period_date_csr%NOTFOUND
3313 THEN
3314 l_budget_line_in_rec.budget_start_date := l_start_date;
3315 l_budget_line_in_rec.budget_end_date := l_end_date;
3316 END IF;
3317
3318 CLOSE l_period_date_csr;
3319
3320 log_pvt('BUDGET','Level P :budget_start_date: '||l_budget_line_in_rec.budget_start_date||' :budget_end_date: '||l_budget_line_in_rec.budget_end_date);
3321
3322 l_budget_cnt := l_budget_cnt + 1;
3323 l_budget_line_in_tbl(l_budget_cnt) := l_budget_line_in_rec;
3324
3325
3326
3327 end if;
3328
3329 l_Plan_Task_obj_tbl := l_budget_in_obj.Plan_Task_tbl;
3330
3331 if ( ( l_Plan_Task_OBJ_tbl is not null ) and ( ( l_level_code <> 'P' ) or ( nvl(l_res_list_id,1000) <> 1000 ) ) ) and l_return_status = 'S' then
3332
3333 if ( l_Plan_Task_OBJ_tbl.count > 0 ) then
3334
3335 for j in l_Plan_Task_OBJ_tbl.first .. l_Plan_Task_OBJ_tbl.last LOOP
3336
3337 log_pvt('BUDGET_DATA',' BEFORE LINE plan_task_id '||l_plan_task_obj.plan_task_id);
3338 log_pvt('BUDGET_DATA',' BEFORE LINE TOTAL_RAW_COST '||l_plan_task_obj.TOTAL_RAW_COST);
3339 log_pvt('BUDGET_DATA',' BEFORE LINE TOTAL_BURDENED_COST '||l_plan_task_obj.TOTAL_BURDENED_COST);
3340
3341 l_plan_task_obj := l_Plan_Task_OBJ_tbl(j);
3342 l_task_line_OBJ_tbl := l_Plan_Task_OBJ.task_line_tbl;
3343
3344 if ( nvl(l_plan_task_obj.plan_task_id,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3345 l_plan_task_obj.plan_task_id := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3346 end if;
3347
3348 if ( nvl(l_plan_task_obj.StartDate,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) = FND_API.G_MISS_DATE ) then
3349 l_plan_task_obj.StartDate := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
3350 end if;
3351
3352 if ( nvl(l_plan_task_obj.EndDate,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) = FND_API.G_MISS_DATE ) then
3353 l_plan_task_obj.EndDate := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
3354 end if;
3355
3356 if ( nvl(l_plan_task_obj.TOTAL_BURDENED_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3357 l_plan_task_obj.TOTAL_BURDENED_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3358 end if;
3359
3360 if ( nvl(l_plan_task_obj.TOTAL_RAW_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3361 l_plan_task_obj.TOTAL_RAW_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3362 end if;
3363
3364 if ( nvl(l_plan_task_obj.TASK_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3365 l_plan_task_obj.TASK_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3366 end if;
3367
3368 if ( nvl(l_budget_in_obj.Update_Reason,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3369 l_budget_in_obj.Update_Reason := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3370 end if;
3371
3372 log_pvt('BUDGET_DATA',' AFTER LINE task_id '||l_plan_task_obj.task_id);
3373 log_pvt('BUDGET_DATA',' AFTER LINE plan_task_id '||l_plan_task_obj.plan_task_id);
3374 log_pvt('BUDGET_DATA',' AFTER LINE TOTAL_RAW_COST '||l_plan_task_obj.TOTAL_RAW_COST);
3375 log_pvt('BUDGET_DATA',' AFTER LINE TOTAL_BURDENED_COST '||l_plan_task_obj.TOTAL_BURDENED_COST);
3376
3377
3378 if ( ( l_level_code <> 'P' ) AND ( nvl(l_res_list_id,1000) = 1000 ) ) then --Kmaddi
3379
3380 l_budget_line_in_rec.pa_task_id := l_plan_task_obj.task_id;
3381 l_budget_line_in_rec.raw_cost := l_plan_task_obj.TOTAL_RAW_COST;
3382 --l_budget_line_in_rec.burdened_cost := l_plan_task_obj.TOTAL_BURDENED_COST; --Bug 8811777
3383 l_budget_line_in_rec.pm_product_code := 'PRIMAVERA';
3384 l_budget_line_in_rec.pm_budget_line_reference := l_plan_task_obj.plan_task_id;
3385 l_budget_line_in_rec.budget_start_date := l_plan_task_obj.Startdate;
3386 l_budget_line_in_rec.budget_end_date := l_plan_task_obj.Enddate;
3387 l_budget_line_in_rec.txn_currency_code := l_budget_in_obj.Currency_Code;
3388
3389 OPEN l_period_date_csr( l_plan_task_obj.Startdate
3390 ,l_cost_time_phased_code );
3391
3392 FETCH l_period_date_csr
3393 INTO l_budget_line_in_rec.budget_start_date,
3394 l_budget_line_in_rec.budget_end_date;
3395
3396 IF l_period_date_csr%NOTFOUND
3397 THEN
3398 l_budget_line_in_rec.budget_start_date := l_plan_task_obj.Startdate;
3399 l_budget_line_in_rec.budget_end_date := l_plan_task_obj.Enddate;
3400 END IF;
3401 CLOSE l_period_date_csr;
3402
3403 log_pvt('BUDGET','Level Non P :budget_start_date: '||l_budget_line_in_rec.budget_start_date||' :budget_end_date: '||l_budget_line_in_rec.budget_end_date);
3404
3405 l_budget_cnt := l_budget_cnt + 1;
3406 l_budget_line_in_tbl(l_budget_cnt) := l_budget_line_in_rec;
3407
3408 end if;
3409
3410 if ( ( l_level_code <> 'P' ) and ( nvl(l_res_list_id,1000) <> 1000 ) ) then
3411
3412 l_budget_line_in_rec.pa_task_id := l_plan_task_obj.task_id;
3413
3414 end if;
3415
3416 IF ( ( l_level_code = 'P' ) and ( nvl(l_res_list_id,1000) <> 1000 ) ) THEN -- Bug 8813761
3417 l_budget_line_in_rec.pa_task_id := 0;
3418 END IF;
3419
3420 if ( l_task_line_OBJ_tbl is not null and ( nvl(l_res_list_id,1000) <> 1000 ) ) then
3421 if ( l_task_line_OBJ_tbl.count > 0 ) then
3422 for k in l_task_line_OBJ_tbl.first .. l_task_line_OBJ_tbl.last loop
3423
3424 l_task_line_obj := l_task_line_OBJ_tbl(k);
3425
3426 log_pvt('BUDGET_DATA',' BEFORE LINE RESOURCE_LIST_MEMBER_ID '||l_task_line_obj.RESOURCE_LIST_MEMBER_ID);
3427 log_pvt('BUDGET_DATA',' BEFORE LINE TOTAL_RAW_COST '||l_task_line_obj.TOTAL_RAW_COST);
3428 log_pvt('BUDGET_DATA',' BEFORE LINE TOTAL_BURDENED_COST '||l_task_line_obj.TOTAL_BURDENED_COST);
3429
3430
3431 if ( nvl(l_task_line_obj.task_line_id,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3432 l_task_line_obj.task_line_id := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3433 end if;
3434
3435 if ( nvl(l_task_line_obj.StartDate,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) = FND_API.G_MISS_DATE ) then
3436 l_task_line_obj.StartDate := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
3437 end if;
3438
3439 if ( nvl(l_task_line_obj.EndDate,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) = FND_API.G_MISS_DATE ) then
3440 l_task_line_obj.EndDate := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ;
3441 end if;
3442
3443 if ( nvl(l_task_line_obj.TOTAL_BURDENED_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3444 l_task_line_obj.TOTAL_BURDENED_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3445 end if;
3446
3447 if ( nvl(l_task_line_obj.TOTAL_RAW_COST,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3448 l_task_line_obj.TOTAL_RAW_COST := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3449 end if;
3450
3451 if ( nvl(l_task_line_obj.RESOURCE_LIST_MEMBER_ID,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = FND_API.G_MISS_NUM ) then
3452 l_task_line_obj.RESOURCE_LIST_MEMBER_ID := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ;
3453 end if;
3454
3455 if ( nvl(l_task_line_obj.Update_Reason,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) = FND_API.G_MISS_CHAR ) then
3456 l_task_line_obj.Update_Reason := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ;
3457 end if;
3458
3459
3460 l_budget_line_in_rec.resource_list_member_id := l_task_line_obj.RESOURCE_LIST_MEMBER_ID;
3461 l_budget_line_in_rec.raw_cost := l_task_line_obj.TOTAL_RAW_COST;
3462 --l_budget_line_in_rec.burdened_cost := l_task_line_obj.TOTAL_BURDENED_COST; --Bug 8811777
3463 l_budget_line_in_rec.pm_product_code := 'PRIMAVERA';
3464 --l_budget_line_in_rec.pm_budget_line_reference := l_plan_task_obj.plan_task_id||'-'||l_task_line_obj.RESOURCE_LIST_MEMBER_ID; --Kmaddi
3465 l_budget_line_in_rec.pm_budget_line_reference := l_plan_task_obj.plan_task_id; --Kmaddi
3466 l_budget_line_in_rec.budget_start_date := l_plan_task_obj.Startdate;
3467 l_budget_line_in_rec.budget_end_date := l_plan_task_obj.Enddate;
3468 l_budget_line_in_rec.txn_currency_code := l_budget_in_obj.Currency_Code;
3469
3470 OPEN l_period_date_csr( l_plan_task_obj.Startdate
3471 ,l_cost_time_phased_code );
3472
3473 FETCH l_period_date_csr
3474 INTO l_budget_line_in_rec.budget_start_date,
3475 l_budget_line_in_rec.budget_end_date;
3476
3477 IF l_period_date_csr%NOTFOUND
3478 THEN
3479 l_budget_line_in_rec.budget_start_date := l_plan_task_obj.Startdate;
3480 l_budget_line_in_rec.budget_end_date := l_plan_task_obj.Enddate;
3481 END IF;
3482
3483 CLOSE l_period_date_csr;
3484
3485 log_pvt('BUDGET','Level Non P Categorized :budget_start_date: '||l_budget_line_in_rec.budget_start_date||' :budget_end_date: '||l_budget_line_in_rec.budget_end_date);
3486
3487 l_budget_cnt := l_budget_cnt + 1;
3488 l_budget_line_in_tbl(l_budget_cnt) := l_budget_line_in_rec;
3489
3490
3491 end loop;
3492
3493 end if; -- l_task_line_OBJ_tbl is not null
3494 end if; -- l_task_line_OBJ_tbl.count > 0
3495
3496 end loop ;
3497 end if; --l_Plan_Task_OBJ_tbl.count > 0
3498 end if; -- l_Plan_Task_OBJ_tbl is not null
3499
3500 --------- END ---------- reading one budget data into AMG API budget records ------------------
3501
3502 log_pvt('BUDGET_CALL',' l_return_status '||l_return_status);
3503 log_pvt('BUDGET_CALL','Before Call l_fin_plan_type_id '||l_fin_plan_type_id||' l_budget_ver_id '||l_budget_ver_id);
3504 log_pvt('BUDGET_CALL','Before Call l_budget_type '||l_budget_type||' l_res_list_id '||l_res_list_id);
3505
3506 l_budget_out_obj.RETURN_STATUS := l_return_status;
3507 l_budget_out_obj.msg_data := l_return_message;
3508
3509 if ( ( l_return_status = 'S' ) and ( l_fin_plan_type_id is not null ) ) then
3510
3511 if ( l_budget_ver_id is not null ) then
3512
3513 l_create_flag := 'N';
3514 l_replace_flag := 'Y';
3515
3516 else
3517
3518 l_create_flag := 'Y';
3519 l_replace_flag := 'N';
3520
3521 end if;
3522
3523 log_pvt('BUDGET_CALL','Before create_draft_budget l_replace_flag '||l_replace_flag);
3524
3525 pa_budget_pub.create_draft_budget
3526 ( p_api_version_number => 1.1
3527 ,p_msg_count => x_msg_count
3528 ,p_msg_data => x_msg_data
3529 ,p_return_status => l_return_status
3530 ,p_pm_product_code => 'PRIMAVERA'
3531 ,p_pm_budget_reference => l_budget_in_obj.PROJECT_ID
3532 ,p_budget_version_name => 'Draft Budget'
3533 ,p_pa_project_id => l_budget_in_obj.PROJECT_ID
3534 ,p_budget_lines_in => l_budget_line_in_tbl
3535 ,p_budget_lines_out => l_budget_line_out_tbl
3536 ,p_fin_plan_type_id => l_fin_plan_type_id
3537 ,p_create_new_curr_working_flag => l_create_flag
3538 ,p_replace_current_working_flag => l_replace_flag
3539 ,p_version_type => 'COST'
3540 ,p_burdened_cost_flag => 'Y'
3541 ,p_raw_cost_flag => 'Y' -- Bug 8821873
3542 ,p_cost_qty_flag => 'Y' -- Bug 8821873
3543 ,p_resource_list_id => l_res_list_id
3544 );
3545
3546 log_pvt('BUDGET_CALL','After create_draft_budget l_return_status '||l_return_status);
3547
3548 if ( l_return_status <> 'S' ) then
3549 l_return_status := 'E';
3550 end if;
3551
3552 l_budget_out_obj.RETURN_STATUS := l_return_status;
3553
3554
3555 x_msg_count := nvl(x_msg_count,1);
3556
3557 if ( x_msg_count > 10 ) then
3558 x_msg_count := 10;
3559 end if;
3560 for i in 1..x_msg_count loop
3561 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
3562 ,p_msg_index => x_msg_count
3563 ,p_data => l_data
3564 ,p_msg_index_out => l_msg_index_out
3565 );
3566
3567 log_pvt('BUDGET_MAIN','ERORRS : '||l_data);
3568 l_budget_out_obj.msg_data := l_data;
3569
3570 end loop;
3571
3572 end if; -- end if for plan types calling.
3573
3574 if ( ( l_return_status = 'S' ) and ( l_fin_plan_type_id is null ) ) then
3575
3576
3577 log_pvt('BUDGET_CALL','Before update_draft_budget ');
3578
3579 pa_budget_pub.update_budget
3580 ( p_api_version_number => 1.1
3581 ,p_init_msg_list => FND_API.G_TRUE
3582 ,p_msg_count => x_msg_count
3583 ,p_msg_data => x_msg_data
3584 ,p_return_status => l_return_status
3585 ,p_pm_product_code => 'PRIMAVERA'
3586 ,p_pa_project_id => l_budget_in_obj.PROJECT_ID
3587 ,p_budget_type_code => l_budget_type
3588 ,p_budget_lines_in => l_budget_line_in_tbl
3589 ,p_budget_lines_out => l_budget_line_out_tbl
3590 ,p_budget_version_number => l_ver_number
3591 ,p_budget_version_name => l_ver_name
3592 );
3593
3594
3595 log_pvt('BUDGET_CALL','After update_draft_budget l_return_status '||l_return_status);
3596
3597 if ( l_return_status <> 'S' ) then
3598 l_return_status := 'E';
3599 end if;
3600
3601 l_budget_out_obj.RETURN_STATUS := l_return_status;
3602
3603
3604 x_msg_count := nvl(x_msg_count,1);
3605
3606 if ( x_msg_count > 10 ) then
3607 x_msg_count := 10;
3608 end if;
3609 for i in 1..x_msg_count loop
3610 pa_interface_utils_pub.get_messages ( p_encoded => fnd_api.g_false
3611 ,p_msg_index => x_msg_count
3612 ,p_data => l_data
3613 ,p_msg_index_out => l_msg_index_out
3614 );
3615
3616 log_pvt('BUDGET_MAIN','ERORRS : '||l_data);
3617 l_budget_out_obj.msg_data := l_data;
3618
3619 end loop;
3620 end if; -- budget type code calling;
3621
3622
3623 l_plan_task_OUT_TBL := SYSTEM.plan_task_OUT_OBJ_TBL();
3624
3625 if ( ( l_Plan_Task_OBJ_tbl is not null ) and ( l_budget_out_obj.return_status = 'S' ) ) then
3626
3627 if ( l_Plan_Task_OBJ_tbl.count > 0 ) then
3628
3629 l_plan_task_OUT_TBL.extend(l_Plan_Task_OBJ_tbl.count);
3630 l_plan_task_out_obj := SYSTEM.plan_task_out_obj(null,null,null);
3631
3632 for j in l_Plan_Task_OBJ_tbl.first .. l_Plan_Task_OBJ_tbl.last LOOP
3633
3634 l_plan_task_obj := l_Plan_Task_OBJ_tbl(j);
3635 l_task_line_OBJ_tbl := l_Plan_Task_OBJ.task_line_tbl;
3636 null;
3637 l_plan_task_out_obj.AIA_COMMON_ID := l_plan_task_obj.AIA_COMMON_ID;
3638 l_plan_task_out_obj.plan_task_id := l_plan_task_obj.task_id;
3639
3640 l_task_line_OUT_TBL := SYSTEM.task_line_OUT_OBJ_TBL();
3641
3642
3643 if ( l_task_line_OBJ_tbl is not null ) then
3644 if ( l_task_line_OBJ_tbl.count > 0 ) then
3645
3646 l_task_line_OUT_TBL.extend(l_task_line_OBJ_tbl.count);
3647 l_task_line_out_obj := SYSTEM.task_line_out_obj(null,null);
3648
3649 for k in l_task_line_OBJ_tbl.first .. l_task_line_OBJ_tbl.last loop
3650
3651 l_task_line_obj := l_task_line_OBJ_tbl(k);
3652
3653 l_task_line_out_obj.AIA_COMMON_ID := l_task_line_obj.AIA_COMMON_ID;
3654 l_task_line_out_obj.task_line_id := l_plan_task_obj.task_id||'-'||l_task_line_obj.RESOURCE_LIST_MEMBER_ID;
3655
3656 l_task_line_OUT_TBL(k) := l_task_line_out_obj;
3657
3658 end loop;
3659 end if;
3660 end if;
3661
3662 l_plan_task_out_obj.o_task_line_tbl := l_task_line_OUT_TBL;
3663 l_plan_task_OUT_TBL(j) := l_plan_task_out_obj;
3664
3665 end loop;
3666 end if;
3667 end if;
3668
3669 if ( nvl(lx_return_status,'S') = 'S') then
3670
3671 lX_RETURN_STATUS := l_budget_out_obj.return_status;
3672
3673 end if;
3674
3675 l_budget_out_obj.o_plan_task_tbl := l_plan_task_OUT_TBL;
3676 l_budget_out_obj_tbl(i) := l_budget_out_obj;
3677
3678
3679 end loop; -- end loop for budgets object
3680
3681 X_budget_OUT := l_budget_out_obj_tbl;
3682 x_return_status := lx_return_status;
3683
3684 END SYNC_BUDGETS;
3685
3686
3687 END PA_PROJECT_INTEGRATION_PUB;