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