DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_TASK_ASSIGNMENTS_PUB

Source


1 PACKAGE BODY PA_TASK_ASSIGNMENTS_PUB AS
2 -- $Header: PATAPUBB.pls 120.17.12020000.3 2013/06/11 14:53:52 rmuthine ship $
3 
4 
5   G_PKG_NAME      CONSTANT VARCHAR2(30) := 'PA_TASK_ASSIGNMENTS_PUB';
6   g_periodic_mode          varchar2(1)  := null;
7   P_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
8   li_curr_level NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9 
10 PROCEDURE Load_Task_Assignments
11 ( p_api_version_number       IN NUMBER            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
12  ,p_commit                               IN VARCHAR2          := FND_API.G_FALSE
13  ,p_init_msg_list                IN VARCHAR2          := FND_API.G_FALSE
14  ,p_pm_project_reference     IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
15  ,p_pa_project_id                IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
16  ,p_pa_structure_version_id      IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
17  ,p_pm_task_reference        IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
18  ,p_pa_task_id               IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
19  ,p_pa_task_element_version_id IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
20  ,p_pm_task_asgmt_reference  IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
21  ,p_pa_task_assignment_id    IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
22  ,p_resource_alias           IN PA_VC_1000_80     := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
23  ,p_resource_list_member_id  IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
24  ,p_cbs_element_id  IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) -- Added for CBS :16598322
25  ,p_start_date               IN PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
26  ,p_end_date                 IN PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
27  ,p_planned_quantity         IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
28  ,p_planned_total_raw_cost   IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
29  ,p_planned_total_bur_cost   IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
30  ,p_currency_code            IN PA_VC_1000_30     := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
31  --This parameter is added for Bug 3948128: TA Delay CR by DHI
32  ,p_scheduled_delay          IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
33  ,p_attribute_category       IN PA_VC_1000_30     := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
34  ,p_attribute1               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
35  ,p_attribute2               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
36  ,p_attribute3               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
37  ,p_attribute4               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
38  ,p_attribute5               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
39  ,p_attribute6               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
40  ,p_attribute7               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
41  ,p_attribute8               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
42  ,p_attribute9               IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
43  ,p_attribute10              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
44  ,p_attribute11              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
45  ,p_attribute12              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
46  ,p_attribute13              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
47  ,p_attribute14              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
48  ,p_attribute15              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
49  ,p_attribute16              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
50  ,p_attribute17              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
51  ,p_attribute18              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
52  ,p_attribute19              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
53  ,p_attribute20              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
54  ,p_attribute21              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
55  ,p_attribute22              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
56  ,p_attribute23              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
57  ,p_attribute24              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
58  ,p_attribute25              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
59  ,p_attribute26              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
60  ,p_attribute27              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
61  ,p_attribute28              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
62  ,p_attribute29              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
63  ,p_attribute30              IN PA_VC_1000_150    := PA_VC_1000_150(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
64  ,up_description             IN PA_VC_1000_240    := PA_VC_1000_240(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
65  ,up_use_task_schedule_flag  IN PA_VC_1000_1      := PA_VC_1000_1(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
66  ,up_raw_cost_rate_override  IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
67  ,up_burd_cost_rate_override IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
68  ,up_billable_work_percent   IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
69  ,up_mfg_cost_type           IN PA_VC_1000_10     := PA_VC_1000_10(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
70  ,up_mfg_cost_type_id        IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
71  ,p_context_flag             IN PA_VC_1000_1      := PA_VC_1000_1(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
72  ,x_msg_count                    OUT NOCOPY NUMBER
73  ,x_msg_data                     OUT NOCOPY VARCHAR2
74  ,x_return_status                    OUT NOCOPY VARCHAR2
75 )  IS
76 
77    l_api_name      CONSTANT  VARCHAR2(30)     := 'load_task_assignments';
78    i            NUMBER;
79    L_FuncProc varchar2(2000);
80 
81 BEGIN
82    L_FuncProc := 'Load Task Assignments';
83 
84 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
85    pa_debug.g_err_stage:='Entered ' || L_FuncProc;
86    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
87 END IF;
88 
89   --  Standard begin of API savepoint
90 
91   --  debug_msg1('Entered procedure:' || L_FuncProc);
92 
93     SAVEPOINT load_task_asgmts_pub;
94 
95   --  Standard call to check for call compatibility.
96 
97    IF NOT FND_API.Compatible_API_Call ( 1.0, --pa_project_pub.g_api_version_number  ,
98                                p_api_version_number  ,
99                                l_api_name         ,
100                                G_PKG_NAME         )
101    THEN
102 
103         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
104 
105    END IF;
106 
107    --dbms_output.put_line('FND API Compatible:' || L_FuncProc);
108 
109    --  Initialize the message table if requested.
110 
111    IF FND_API.TO_BOOLEAN( p_init_msg_list )
112 
113    THEN
114 
115          FND_MSG_PUB.initialize;
116 
117    END IF;
118 
119    --  Set API return status to success
120 
121        x_return_status := FND_API.G_RET_STS_SUCCESS;
122 
123 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
124    pa_debug.g_err_stage:='Before Looping through 1000 records.' ;
125    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
126 END IF;
127 
128     FOR i in 1..1000 LOOP
129 
130               if p_pa_task_assignment_id.exists(i) and p_pm_task_asgmt_reference.exists(i) then
131 
132                             if (p_pa_task_assignment_id(i) is null and p_pm_task_asgmt_reference(i) is null) OR
133                               (p_pa_task_assignment_id(i) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
134                                and p_pm_task_asgmt_reference(i) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) then
135 
136 						   	   	   IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
137                                          pa_debug.g_err_stage:='Returning from Load TA as index loaded at  :' || i ;
138                                          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
139 									END IF;
140 
141                                          return;
142 
143                             end if;
144                 elsif p_pa_task_assignment_id.exists(i) then
145 
146                                 if (p_pa_task_assignment_id(i) is null) OR
147                                    (p_pa_task_assignment_id(i) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) then
148 								    IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
149                                         pa_debug.g_err_stage:='Returning from Load TA as index loaded at  :' || i ;
150                                         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
151 									END IF;
152                                          return;
153                                 end if;
154                 elsif   p_pm_task_asgmt_reference.exists(i)  then
155 
156 
157                                     if (p_pm_task_asgmt_reference(i) is null) OR
158                                       (p_pm_task_asgmt_reference(i) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ) then
159 									  	IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
160                                            pa_debug.g_err_stage:='Returning from Load TA as index loaded at :' || i ;
161                                            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
162 										END IF;
163                                               return;
164 
165                                     end if;
166                  else
167 				 	 		IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
168                                 pa_debug.g_err_stage:='Returning from Load TA as index loaded at -:' || i ;
169                                 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
170 							END IF;
171                                 return;
172                  end if;
173 
174                --  assign a value to the global counter for this table
175             IF g_task_asgmts_tbl_count IS NOT NULL THEN
176                 g_task_asgmts_tbl_count  := g_task_asgmts_tbl_count + 1;
177             ELSE
178                 g_task_asgmts_tbl_count  := 1;
179             END IF;
180 
181 			IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
182 	            pa_debug.g_err_stage:='g_task_asgmts_tbl_count :' || g_task_asgmts_tbl_count ;
183 	            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
184 			END IF;
185 
186             IF p_pm_project_reference.exists(i) THEN
187               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_project_reference      :=    p_pm_project_reference(i);
188             ELSE
189               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_project_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
190             END IF;
191 
192 
193             IF  p_pa_project_id.exists(i) THEN
194                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_project_id             :=  p_pa_project_id(i);
195             ELSE
196                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_project_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
197             END IF;
198 
199             IF p_pa_structure_version_id.exists(i) THEN
200                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_structure_version_id       :=  p_pa_structure_version_id(i);
201             ELSE
202                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_structure_version_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
203             END IF;
204 
205             IF p_pm_task_reference.exists(i) THEN
206                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_task_reference   :=  p_pm_task_reference(i);
207 			   IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
208 	               pa_debug.g_err_stage:='In Load task asgmts. p_pm_task_reference(' || i || '):' || p_pm_task_reference(i) ;
209 	               pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
210 			   END IF;
211             ELSE
212                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_task_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
213             END IF;
214 
215             IF p_pa_task_id.exists(i) THEN
216                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_id       :=  p_pa_task_id(i);
217 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
218                pa_debug.g_err_stage:='In Load task asgmts. p_pa_task_id(' || i || '):' || p_pa_task_id(i);
219                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
220 END IF;
221             ELSE
222                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
223             END IF;
224 
225             IF p_pa_task_element_version_id.exists(i) THEN
226                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_element_version_id       :=  p_pa_task_element_version_id(i);
227 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
228                pa_debug.g_err_stage:='In Load task asgmts. p_pa_task_element_version_id(' || i || '):' || p_pa_task_element_version_id(i);
229                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
230 END IF;
231             ELSE
232                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_element_version_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
233             END IF;
234 
235             IF p_pa_task_assignment_id.exists(i) THEN
236                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_assignment_id       :=  p_pa_task_assignment_id(i);
237 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
238                pa_debug.g_err_stage:='In Load task asgmts. p_pa_task_assignment_id(' || i || '):' || p_pa_task_assignment_id(i);
239                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
240 END IF;
241             ELSE
242                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pa_task_assignment_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
243             END IF;
244 
245            IF p_pm_task_asgmt_reference.exists(i) THEN
246               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_task_asgmt_reference   :=  p_pm_task_asgmt_reference(i);
247 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
248               pa_debug.g_err_stage:='In Load task asgmts. p_pm_task_asgmt_reference(' || i || '):' || p_pm_task_asgmt_reference(i);
249               pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
250 END IF;
251            ELSE
252              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).pm_task_asgmt_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
253            END IF;
254 
255            IF p_resource_alias.exists(i) THEN
256               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).resource_alias   :=  p_resource_alias(i);
257            ELSE
258              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).resource_alias      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
259            END IF;
260 
261            IF p_resource_list_member_id.exists(i) THEN
262               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).resource_list_member_id       :=  p_resource_list_member_id(i);
263            ELSE
264               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).resource_list_member_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
265            END IF;
266 
267 		    -- Added for CBS 16598322
268 		   IF p_cbs_element_id.exists(i) THEN
269               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).cbs_element_id       :=  p_cbs_element_id(i);
270            ELSE
271               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).cbs_element_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
272            END IF;
273 
274            IF p_start_date.exists(i) THEN
275               g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).start_date       :=  p_start_date(i);
276            ELSE
277              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).start_date       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
278            END IF;
279 
280            IF p_end_date.exists(i) THEN
281              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).end_date       :=  p_end_date(i);
282            ELSE
283              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).end_date       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
284            END IF;
285 
286            IF p_planned_quantity.exists(i) THEN
287 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
288              pa_debug.g_err_stage:='p_planned_quantity(i)' || p_planned_quantity(i);
289              pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
290 END IF;
291              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_quantity       :=  p_planned_quantity(i);
292            ELSE
293              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_quantity       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
294            END IF;
295 
296            IF p_planned_total_raw_cost.exists(i) THEN
297              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_total_raw_cost       :=  p_planned_total_raw_cost(i);
298            ELSE
299              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_total_raw_cost       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
300            END IF;
301 
302            IF p_planned_total_bur_cost.exists(i) THEN
303              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_total_bur_cost       :=  p_planned_total_bur_cost(i);
304            ELSE
305              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).planned_total_bur_cost       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
306            END IF;
307 
308            IF p_currency_code.exists(i) THEN
309              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).currency_code   :=  p_currency_code(i);
310            ELSE
311              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).currency_code      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
312            END IF;
313 
314            --This parameter is added for Bug 3948128: TA Delay CR by DHI
315            IF p_scheduled_delay.exists(i) THEN
316              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).scheduled_delay   :=  p_scheduled_delay(i);
317            ELSE
318              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).scheduled_delay :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
319            END IF;
320 
321            IF p_attribute_category.exists(i) THEN
322              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute_category   :=  p_attribute_category(i);
323            ELSE
324              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute_category      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
325            END IF;
326 
327            IF p_attribute1.exists(i) THEN
328              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute1   :=  p_attribute1(i);
329            ELSE
330              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute1      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
331            END IF;
332 
333            IF p_attribute2.exists(i) THEN
334             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute2   :=  p_attribute2(i);
335            ELSE
336              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute2      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
337            END IF;
338 
339            IF p_attribute3.exists(i) THEN
340              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute3   :=  p_attribute3(i);
341            ELSE
342              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute3      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
343            END IF;
344 
345            IF p_attribute4.exists(i) THEN
346              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute4   :=  p_attribute4(i);
347            ELSE
348              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute4      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
349            END IF;
350 
351            IF p_attribute5.exists(i) THEN
352              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute5   :=  p_attribute5(i);
353            ELSE
354              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute5      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
355            END IF;
356 
357            IF p_attribute6.exists(i) THEN
358              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute6   :=  p_attribute6(i);
359            ELSE
360              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute6      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
361            END IF;
362 
363            IF p_attribute7.exists(i) THEN
364              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute7   :=  p_attribute7(i);
365            ELSE
366              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute7      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
367            END IF;
368 
369            IF p_attribute8.exists(i) THEN
370             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute8   :=  p_attribute8(i);
371            ELSE
372              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute8      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
373            END IF;
374 
375            IF p_attribute9.exists(i) THEN
376             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute9   :=  p_attribute9(i);
377            ELSE
378              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute9      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
379            END IF;
380 
381            IF p_attribute10.exists(i) THEN
382             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute10   :=  p_attribute10(i);
383            ELSE
384              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute10      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
385            END IF;
386 
387            IF p_attribute11.exists(i) THEN
388             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute11   :=  p_attribute11(i);
389            ELSE
390              g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute11      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
391            END IF;
392            IF p_attribute12.exists(i) THEN
393             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute12   :=  p_attribute12(i);
394             ELSE
395                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute12      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
396            END IF;
397            IF p_attribute13.exists(i) THEN
398             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute13   :=  p_attribute13(i);
399             ELSE
400                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute13      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
401            END IF;
402            IF p_attribute14.exists(i) THEN
403             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute14   :=  p_attribute14(i);
404             ELSE
405                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute14      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
406            END IF;
407            IF p_attribute15.exists(i) THEN
408             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute15   :=  p_attribute15(i);
409             ELSE
410                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute15      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
411            END IF;
412            IF p_attribute16.exists(i) THEN
413             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute16   :=  p_attribute16(i);
414             ELSE
415                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute16      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
416            END IF;
417            IF p_attribute17.exists(i) THEN
418             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute17   :=  p_attribute17(i);
419             ELSE
420                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute17      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
421            END IF;
422            IF p_attribute18.exists(i) THEN
423             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute18   :=  p_attribute18(i);
424             ELSE
425                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute18      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
426            END IF;
427            IF p_attribute19.exists(i) THEN
428             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute19   :=  p_attribute19(i);
429             ELSE
430                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute19      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
431            END IF;
432            IF p_attribute20.exists(i) THEN
433             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute20   :=  p_attribute20(i);
434             ELSE
435                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute20      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
436            END IF;
437            IF p_attribute21.exists(i) THEN
438             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute21   :=  p_attribute21(i);
439             ELSE
440                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute21      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
441            END IF;
442            IF p_attribute22.exists(i) THEN
443             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute22   :=  p_attribute22(i);
444             ELSE
445                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute22      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
446            END IF;
447            IF p_attribute23.exists(i) THEN
448             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute23   :=  p_attribute23(i);
449             ELSE
450                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute23      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
451            END IF;
452            IF p_attribute24.exists(i) THEN
453             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute24   :=  p_attribute24(i);
454             ELSE
455                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute24      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
456            END IF;
457            IF p_attribute25.exists(i) THEN
458             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute25   :=  p_attribute25(i);
459             ELSE
460                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute25      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
461            END IF;
462            IF p_attribute26.exists(i) THEN
463             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute26   :=  p_attribute26(i);
464             ELSE
465                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute26      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
466            END IF;
467            IF p_attribute27.exists(i) THEN
468             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute27   :=  p_attribute27(i);
469             ELSE
470                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute27      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
471            END IF;
472            IF p_attribute28.exists(i) THEN
473             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute28   :=  p_attribute28(i);
474             ELSE
475                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute28      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
476            END IF;
477            IF p_attribute29.exists(i) THEN
478             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute29   :=  p_attribute29(i);
479             ELSE
480                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute29      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
481            END IF;
482           IF p_attribute30.exists(i) THEN
483             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute30   :=  p_attribute30(i);
484             ELSE
485                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).attribute30      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
486            END IF;
487            IF up_description.exists(i) THEN
488             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).description   :=  up_description(i);
489             ELSE
490                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).description      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
491            END IF;
492 
493            IF up_use_task_schedule_flag.exists(i) THEN
494             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).use_task_schedule_flag     :=  up_use_task_schedule_flag(i);
495             ELSE
496                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).use_task_schedule_flag  :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
497            END IF;
498 
499             IF up_raw_cost_rate_override.exists(i) THEN
500             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).raw_cost_rate_override   :=  up_raw_cost_rate_override(i);
501             ELSE
502                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).raw_cost_rate_override      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
503            END IF;
504            IF up_burd_cost_rate_override.exists(i) THEN
505             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).burd_cost_rate_override   :=  up_burd_cost_rate_override(i);
506             ELSE
507                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).burd_cost_rate_override      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
508            END IF;
509             IF up_mfg_cost_type.exists(i) THEN
510             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).mfg_cost_type   :=  up_mfg_cost_type(i);
511             ELSE
512                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).mfg_cost_type      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
513            END IF;
514             IF up_mfg_cost_type_id.exists(i) THEN
515             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).mfg_cost_type_id   :=  up_mfg_cost_type_id(i);
516             ELSE
517                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).mfg_cost_type_id      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
518            END IF;
519            IF up_billable_work_percent.exists(i) THEN
520             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).billable_work_percent   :=  up_billable_work_percent(i);
521             ELSE
522                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).billable_work_percent      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
523            END IF;
524            IF p_context_flag.exists(i) THEN
525             g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).p_context   :=  p_context_flag(i);
526             ELSE
527                g_task_asgmts_in_tbl(g_task_asgmts_tbl_count).p_context      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
528            END IF;
529 
530 
531    END LOOP;
532 
533 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
534    pa_debug.g_err_stage:='Done Loading..' ;
535    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
536 END IF;
537 
538 EXCEPTION
539 
540   WHEN FND_API.G_EXC_ERROR
541   THEN
542        ROLLBACK TO load_task_asgmts_pub;
543 
544        x_return_status := FND_API.G_RET_STS_ERROR;
545 IF P_DEBUG_MODE = 'Y' THEN
546        PA_DEBUG.write_log (x_module => G_PKG_NAME
547                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
548                                ,x_log_level   => 5);
549 END IF;
550 
551        FND_MSG_PUB.Count_And_Get
552            (   p_count    =>  x_msg_count  ,
553                p_data    =>   x_msg_data  );
554 
555   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
556   THEN
557        ROLLBACK TO load_task_asgmts_pub;
558 
559        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
560 IF P_DEBUG_MODE = 'Y' THEN
561        PA_DEBUG.write_log (x_module => G_PKG_NAME
562                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
563                                ,x_log_level   => 5);
564 END IF;
565 
566        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
567        THEN
568          FND_MSG_PUB.add_exc_msg
569              ( p_pkg_name    => G_PKG_NAME
570              , p_procedure_name  => l_api_name  );
571 
572        END IF;
573 
574        FND_MSG_PUB.Count_And_Get
575            (   p_count    =>  x_msg_count  ,
576                p_data    =>   x_msg_data  );
577 
578   WHEN OTHERS THEN
579        ROLLBACK TO load_task_asgmts_pub;
580 
581        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
582 IF P_DEBUG_MODE = 'Y' THEN
583        PA_DEBUG.write_log (x_module => G_PKG_NAME
584                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
585                                ,x_log_level   => 5);
586 END IF;
587 
588        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
589        THEN
590          FND_MSG_PUB.add_exc_msg
591              ( p_pkg_name    => G_PKG_NAME
592              , p_procedure_name  => l_api_name  );
593 
594        END IF;
595        FND_MSG_PUB.Count_And_Get
596            (   p_count    =>  x_msg_count  ,
597                p_data    =>   x_msg_data  );
598 
599 END LOAD_TASK_ASSIGNMENTS;
600 
601 
602 PROCEDURE Load_Task_Asgmt_Periods
603 ( p_api_version_number       IN NUMBER            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
604  ,p_commit                               IN VARCHAR2          := FND_API.G_FALSE
605  ,p_init_msg_list                IN VARCHAR2          := FND_API.G_FALSE
606  ,p_pm_project_reference     IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
607  ,p_pa_project_id                IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
608  ,p_pa_structure_version_id      IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
609  ,p_pm_task_reference        IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
610  ,p_pa_task_id               IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
611  ,p_pa_task_element_version_id IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
612  ,p_pm_task_asgmt_reference  IN PA_VC_1000_25     := PA_VC_1000_25(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
613  ,p_pa_task_assignment_id    IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
614  ,p_resource_alias           IN PA_VC_1000_80     := PA_VC_1000_80(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
615  ,p_resource_list_member_id  IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
616  ,p_cbs_element_id  IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) -- Added for CBS :16598322
617  --Name of the period if available
618  ,p_period_name              IN PA_VC_1000_30     := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
619  --Start date of the period
620  ,p_start_date               IN PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
621  --End date of the period
622  ,p_end_date                 IN PA_date_1000_date := PA_date_1000_date(PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE)
623  ,p_txn_quantity             IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
624  ,p_txn_raw_cost             IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
625  ,p_txn_bur_cost             IN PA_num_1000_num   := PA_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
626  ,p_currency_code            IN PA_VC_1000_30     := PA_VC_1000_30(PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)
627  ,x_msg_count                    OUT NOCOPY NUMBER
628  ,x_msg_data                     OUT NOCOPY VARCHAR2
629  ,x_return_status                    OUT NOCOPY VARCHAR2
630 ) IS
631  l_api_name      CONSTANT  VARCHAR2(30)     := 'load_task_assignments';
632    i            NUMBER;
633 
634 L_FuncProc varchar2(2000);
635 
636 BEGIN
637 L_FuncProc := 'Load Task Assignment Periods';
638 
639 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
640 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
641 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
642 END IF;
643 
644   --dbms_output.put_line('Entered procedure:' || L_FuncProc);
645 
646 --  Standard begin of API savepoint
647 
648     SAVEPOINT Load_Task_Asgmt_Periods;
649 
650 --  Standard call to check for call compatibility.
651 
652      IF NOT FND_API.Compatible_API_Call ( 1.0, --pa_project_pub.g_api_version_number  ,
653                                p_api_version_number  ,
654                                l_api_name         ,
655                                G_PKG_NAME         )
656     THEN
657 
658         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
659 
660     END IF;
661 
662 --  Initialize the message table if requested.
663 
664     IF FND_API.TO_BOOLEAN( p_init_msg_list )
665 
666         THEN
667 
668          FND_MSG_PUB.initialize;
669 
670     END IF;
671 
672 --  Set API return status to success
673 
674     x_return_status := FND_API.G_RET_STS_SUCCESS;
675 
676 
677 
678   --assign appropriate values to outgoing parameters
679 
680  FOR i in 1..1000 LOOP
681 
682 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
683   pa_debug.g_err_stage:='In Task assignment periods load loop start index:' || i;
684   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
685 END IF;
686 
687       if p_pa_task_assignment_id.exists(i) and p_pm_task_asgmt_reference.exists(i) then
688 
689                    if p_pa_task_assignment_id(i) is null and p_pm_task_asgmt_reference(i) is null then
690 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
691                      pa_debug.g_err_stage:='p_pa_task_assignment_id(i) is null and p_pm_task_asgmt_reference(i) is null returning:';
692                      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
693 END IF;
694                       return;
695                    end if;
696         elsif p_pa_task_assignment_id.exists(i) then
697 
698                         if p_pa_task_assignment_id(i) is null then
699 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
700                                  pa_debug.g_err_stage:='p_pa_task_assignment_id(i) is null returning:';
701                                  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
702 END IF;
703                                 return;
704                          end if;
705         elsif   p_pm_task_asgmt_reference.exists(i)  then
706 
707 
708                            if p_pm_task_asgmt_reference(i) is null then
709 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
710                                 pa_debug.g_err_stage:='p_pm_task_asgmt_reference(i) is null returning:' ;
711                                 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
712 END IF;
713                                 return;
714                            end if;
715         else
716 
717                  return;
718          end if;
719 
720            --  assign a value to the global counter for this table
721            IF g_asgmts_periods_tbl_count IS NOT NULL THEN
722 
723              g_asgmts_periods_tbl_count  := g_asgmts_periods_tbl_count + 1;
724 
725            ELSE
726 
727              g_asgmts_periods_tbl_count  := 1;
728 
729            END IF;
730 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
731          pa_debug.g_err_stage:='g_asgmts_periods_tbl_count:'  || g_asgmts_periods_tbl_count;
732          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
733 END IF;
734 --  assign incoming parameters to the global table fields
735 
736             IF p_pm_project_reference.exists(i) THEN
737             g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_project_reference      :=    p_pm_project_reference(i);
738           ELSE
739              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_project_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
740           END IF;
741 
742 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
743            pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_project_reference:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_project_reference;
744            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
745 END IF;
746            IF  p_pa_project_id.exists(i) THEN
747              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_project_id             :=  p_pa_project_id(i);
748           ELSE
749              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_project_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
750           END IF;
751 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
752            pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_project_id:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_project_id;
753            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
754 END IF;
755 
756           IF p_pa_structure_version_id.exists(i) THEN
757              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_structure_version_id       :=  p_pa_structure_version_id(i);
758           ELSE
759              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_structure_version_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
760           END IF;
761 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
762           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_structure_version_id:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_structure_version_id;
763           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
764 END IF;
765 
766            IF p_pm_task_reference.exists(i) THEN
767           g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_reference   :=  p_pm_task_reference(i);
768           ELSE
769              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
770          END IF;
771 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
772          pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_reference:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_reference;
773          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
774 END IF;
775 
776            IF p_pa_task_id.exists(i) THEN
777              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_id       :=  p_pa_task_id(i);
778           ELSE
779              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
780           END IF;
781 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
782          pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_id:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_id;
783          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
784 END IF;
785 
786            IF p_pa_task_element_version_id.exists(i) THEN
787               g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_element_version_id       :=  p_pa_task_element_version_id(i);
788 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
789                  pa_debug.g_err_stage:='In Load task asgmts periods. p_pa_task_element_version_id(' || i || '):' || p_pa_task_element_version_id(i)  ;
790                  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
791 END IF;
792           ELSE
793               g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_element_version_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
794           END IF;
795 
796             IF p_pa_task_assignment_id.exists(i) THEN
797              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_assignment_id       :=  p_pa_task_assignment_id(i);
798           ELSE
799              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_assignment_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
800           END IF;
801 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
802         pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_assignment_id:'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pa_task_assignment_id;
803         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
804 END IF;
805 
806            IF p_pm_task_asgmt_reference.exists(i) THEN
807           g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_asgmt_reference   :=  p_pm_task_asgmt_reference(i);
808           ELSE
809              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_asgmt_reference      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
810          END IF;
811 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
812          pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_asgmt_reference :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).pm_task_asgmt_reference ;
813          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
814 END IF;
815 
816            IF p_resource_alias.exists(i) THEN
817           g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_alias   :=  p_resource_alias(i);
818           ELSE
819              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_alias      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
820          END IF;
821 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
822           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_alias :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_alias ;
823           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
824 END IF;
825 
826            IF p_resource_list_member_id.exists(i) THEN
827              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_list_member_id       :=  p_resource_list_member_id(i);
828           ELSE
829              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_list_member_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
830           END IF;
831 
832 		  -- Added for CBS 16598322
833 		   IF p_cbs_element_id.exists(i) THEN
834              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).cbs_element_id       :=  p_cbs_element_id(i);
835           ELSE
836              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).cbs_element_id       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
837           END IF;
838 
839 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
840         pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_list_member_id :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).resource_list_member_id ;
841         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
842 END IF;
843            IF p_start_date.exists(i) THEN
844              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).start_date       :=  p_start_date(i);
845           ELSE
846              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).start_date       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
847           END IF;
848 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
849           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).start_date :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).start_date ;
850           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
851 END IF;
852 
853           IF p_end_date.exists(i) THEN
854              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).end_date       :=  p_end_date(i);
855           ELSE
856              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).end_date       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE;
857           END IF;
858 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
859         pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).end_date :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).end_date ;
860         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
861 END IF;
862 
863            IF p_period_name.exists(i) THEN
864           g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).period_name   :=  p_period_name(i);
865           ELSE
866              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).period_name      :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
867          END IF;
868 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
869          pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).period_name :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).period_name ;
870          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
871 END IF;
872 
873             IF p_txn_quantity.exists(i) THEN
874              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).quantity       :=  p_txn_quantity(i);
875           ELSE
876              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).quantity       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
877           END IF;
878 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
879           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).quantity :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).quantity ;
880           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
881 END IF;
882 
883              IF p_txn_raw_cost.exists(i) THEN
884              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_raw_cost       :=  p_txn_raw_cost(i);
885           ELSE
886              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_raw_cost       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
887           END IF;
888 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
889           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_raw_cost :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_raw_cost ;
890           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
891 END IF;
892              IF p_txn_bur_cost.exists(i) THEN
893              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_burdened_cost       :=  p_txn_bur_cost(i);
894           ELSE
895              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_burdened_cost       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM;
896           END IF;
897 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
898           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_burdened_cost :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_burdened_cost ;
899           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
900 END IF;
901             IF p_currency_code.exists(i) THEN
902              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_currency_code       :=  p_currency_code(i);
903           ELSE
904              g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_currency_code       :=    PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
905           END IF;
906 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
907           pa_debug.g_err_stage:='g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_currency_code :'  || g_asgmts_periods_tbl(g_asgmts_periods_tbl_count).txn_currency_code ;
908           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
909 END IF;
910 
911  END LOOP;
912 
913 EXCEPTION
914 
915   WHEN FND_API.G_EXC_ERROR
916   THEN
917        ROLLBACK TO Load_Task_Asgmt_Periods;
918 
919        x_return_status := FND_API.G_RET_STS_ERROR;
920 IF P_DEBUG_MODE = 'Y' THEN
921        PA_DEBUG.write_log (x_module => G_PKG_NAME
922                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
923                                ,x_log_level   => 5);
924 END IF;
925 
926        FND_MSG_PUB.Count_And_Get
927            (   p_count    =>  x_msg_count  ,
928                p_data    =>   x_msg_data  );
929 
930   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
931   THEN
932        ROLLBACK TO Load_Task_Asgmt_Periods;
933 
934        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
935 IF P_DEBUG_MODE = 'Y' THEN
936        PA_DEBUG.write_log (x_module => G_PKG_NAME
937                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
938                                ,x_log_level   => 5);
939 END IF;
940        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
941        THEN
942          FND_MSG_PUB.add_exc_msg
943              ( p_pkg_name    => G_PKG_NAME
944              , p_procedure_name  => l_api_name  );
945 
946        END IF;
947 
948        FND_MSG_PUB.Count_And_Get
949            (   p_count    =>  x_msg_count  ,
950                p_data    =>   x_msg_data  );
951 
952   WHEN OTHERS THEN
953        ROLLBACK TO Load_Task_Asgmt_Periods;
954 
955        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
956 IF P_DEBUG_MODE = 'Y' THEN
957        PA_DEBUG.write_log (x_module => G_PKG_NAME
958                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
959                                ,x_log_level   => 5);
960 END IF;
961        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
962        THEN
963          FND_MSG_PUB.add_exc_msg
964              ( p_pkg_name    => G_PKG_NAME
965              , p_procedure_name  => l_api_name  );
966 
967        END IF;
968        FND_MSG_PUB.Count_And_Get
969            (   p_count    =>  x_msg_count  ,
970                p_data    =>   x_msg_data  );
971 
972 END Load_Task_Asgmt_Periods;
973 --------------------------------------------------------------------------------
974 --Name:               EXECUTE_CREATE_TASK_ASGMTS
975 --Type:               Procedure
976 --Description:        This procedure can be used to create task assignments
977 --                    using global PL/SQL tables.
978 --
979 --Called subprograms:
980 --
981 --
982 --
983 --History:
984 --      01-APR-2004
985 --
986 
987 PROCEDURE Execute_Create_Task_Asgmts
988 ( p_api_version_number        IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
989  ,p_commit                                IN  VARCHAR2     := FND_API.G_FALSE
990  ,p_init_msg_list                 IN  VARCHAR2     := FND_API.G_FALSE
991  ,p_pm_product_code               IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
992  ,p_pm_project_reference      IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
993  ,p_pa_project_id             IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
994  ,p_pa_structure_version_id   IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
995  ,x_msg_count                     OUT NOCOPY NUMBER
996  ,x_msg_data                      OUT NOCOPY VARCHAR2
997  ,x_return_status                     OUT NOCOPY VARCHAR2
998 ) IS
999 
1000    l_api_name             CONSTANT  VARCHAR2(30)     := 'EXECUTE_CREATE_TASK_ASGMTS';
1001    i                      NUMBER;
1002    l_return_status        VARCHAR2(1);
1003    l_err_stage            VARCHAR2(120);
1004    l_msg_data             VARCHAR2(2000);
1005    l_msg_count            NUMBER;
1006    l_project_id           NUMBER;
1007 
1008 L_FuncProc varchar2(2000);
1009 
1010 BEGIN
1011 L_FuncProc := 'Execute_Create_Task_Asgmts';
1012 
1013 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1014 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
1015 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1016 END IF;
1017   --dbms_output.put_line('count of global tables: in exec. create' || g_task_asgmts_tbl_count);
1018 --  Standard begin of API savepoint
1019 
1020     SAVEPOINT EXECUTE_CREATE_TASK_ASGMTS;
1021 
1022 --  Standard call to check for call compatibility.
1023 
1024     IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
1025                                p_api_version_number,
1026                                l_api_name,
1027                                G_PKG_NAME         )
1028     THEN
1029          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1030     END IF;
1031 
1032 
1033 --  Initialize the message table if requested.
1034 
1035     IF FND_API.TO_BOOLEAN( p_init_msg_list )
1036     THEN
1037        FND_MSG_PUB.initialize;
1038     END IF;
1039 
1040 --  Set API return status to success
1041 
1042     x_return_status := FND_API.G_RET_STS_SUCCESS;
1043    --dbms_output.put_line('g_task_asgmts_tbl_count:' || g_task_asgmts_tbl_count);
1044    --dbms_output.put_line('g_asgmts_periods_tbl_count:' || g_asgmts_periods_tbl_count);
1045 
1046 
1047         IF nvl(g_task_asgmts_tbl_count, 0) > 0 THEN
1048                           --dbms_output.put_line('calling create task assignment');
1049                       Create_Task_Assignments
1050                       (  p_api_version_number        => 1.0
1051                       ,p_commit                          => FND_API.G_FALSE
1052                       ,p_init_msg_list           => FND_API.G_FALSE
1053                           ,p_pm_product_code         => p_pm_product_code
1054                           ,p_pm_project_reference    => p_pm_project_reference
1055                           ,p_pa_project_id           => p_pa_project_id
1056                           ,p_pa_structure_version_id => p_pa_structure_version_id
1057                           ,p_task_assignments_in     => g_task_asgmts_in_tbl
1058                       ,p_task_assignments_out    => g_task_asgmts_out_tbl
1059                       ,x_msg_count                       => l_msg_count
1060                       ,x_msg_data                        => l_msg_data
1061                       ,x_return_status               => l_return_status
1062                       );
1063                           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1064 
1065                                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1066 
1067                          ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1068 
1069                                  RAISE FND_API.G_EXC_ERROR;
1070 
1071                          END IF;
1072 
1073         END IF;
1074 
1075 
1076    IF nvl(g_asgmts_periods_tbl_count,0) > 0 THEN
1077 
1078                  --dbms_output.put_line('calling create task assignment periods');
1079               Pa_Task_Assignments_Pvt.Create_Task_Assignment_Periods
1080              (  p_api_version_number         => 1.0
1081               ,p_commit                          => FND_API.G_FALSE
1082               ,p_init_msg_list           => FND_API.G_FALSE
1083                   ,p_pm_product_code         => p_pm_product_code
1084                   ,p_pm_project_reference    => p_pm_project_reference
1085                   ,p_pa_project_id           => p_pa_project_id
1086                   ,p_pa_structure_version_id => p_pa_structure_version_id
1087                   ,p_task_assignment_periods_in     => g_asgmts_periods_tbl
1088               ,p_task_assignment_periods_out    => g_asgmts_periods_out_tbl
1089               ,x_msg_count                       => l_msg_count
1090               ,x_msg_data                        => l_msg_data
1091               ,x_return_status               => l_return_status
1092              );
1093          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1094 
1095                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1096 
1097         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1098 
1099                  RAISE FND_API.G_EXC_ERROR;
1100 
1101          END IF;
1102 
1103    END IF;
1104 
1105 
1106 
1107      IF FND_API.to_boolean( p_commit ) THEN
1108         COMMIT;
1109      END IF;
1110 
1111 
1112 EXCEPTION
1113 
1114   WHEN FND_API.G_EXC_ERROR
1115   THEN
1116        ROLLBACK TO EXECUTE_CREATE_TASK_ASGMTS;
1117 
1118        x_return_status := FND_API.G_RET_STS_ERROR;
1119 IF P_DEBUG_MODE = 'Y' THEN
1120        PA_DEBUG.write_log (x_module => G_PKG_NAME
1121                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
1122                                ,x_log_level   => 5);
1123 END IF;
1124        FND_MSG_PUB.Count_And_Get
1125            (   p_count    =>  x_msg_count  ,
1126                p_data    =>   x_msg_data  );
1127 
1128   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1129   THEN
1130        ROLLBACK TO EXECUTE_CREATE_TASK_ASGMTS;
1131 
1132        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1133 IF P_DEBUG_MODE = 'Y' THEN
1134        PA_DEBUG.write_log (x_module => G_PKG_NAME
1135                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
1136                                ,x_log_level   => 5);
1137 END IF;
1138        FND_MSG_PUB.Count_And_Get
1139            (   p_count    =>  x_msg_count  ,
1140                p_data    =>  x_msg_data  );
1141 
1142   WHEN OTHERS THEN
1143        ROLLBACK TO EXECUTE_CREATE_TASK_ASGMTS;
1144 
1145        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1146 IF P_DEBUG_MODE = 'Y' THEN
1147        PA_DEBUG.write_log (x_module => G_PKG_NAME
1148                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
1149                                ,x_log_level   => 5);
1150 END IF;
1151        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1152        THEN
1153          FND_MSG_PUB.add_exc_msg
1154              ( p_pkg_name    => G_PKG_NAME
1155              , p_procedure_name  => l_api_name  );
1156 
1157        END IF;
1158 
1159        FND_MSG_PUB.Count_And_Get
1160            (   p_count    =>  x_msg_count  ,
1161                p_data    =>  x_msg_data  );
1162 
1163 END EXECUTE_CREATE_TASK_ASGMTS;
1164 
1165 
1166 PROCEDURE Execute_Update_Task_Asgmts
1167 ( p_api_version_number        IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1168  ,p_commit                                IN  VARCHAR2     := FND_API.G_FALSE
1169  ,p_init_msg_list                 IN  VARCHAR2     := FND_API.G_FALSE
1170  ,p_pm_product_code               IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1171  ,p_pm_project_reference      IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1172  ,p_pa_project_id             IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1173  ,p_pa_structure_version_id   IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1174  ,x_msg_count                     OUT NOCOPY NUMBER
1175  ,x_msg_data                      OUT NOCOPY VARCHAR2
1176  ,x_return_status                     OUT NOCOPY VARCHAR2
1177 ) IS
1178 
1179    l_api_name        CONSTANT  VARCHAR2(30)     := 'EXECUTE_UPDATE_TASK_ASGMTS';
1180 
1181    i                      NUMBER;
1182    l_return_status        VARCHAR2(1);
1183    l_err_stage            VARCHAR2(120);
1184    l_msg_data             VARCHAR2(2000);
1185    l_msg_count            NUMBER;
1186 
1187 L_FuncProc varchar2(2000);
1188 
1189 BEGIN
1190 L_FuncProc := 'Execute_Update_Task_Asgmts';
1191 
1192 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1193 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
1194 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1195 END IF;
1196     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
1197 --  Standard begin of API savepoint
1198 
1199     SAVEPOINT EXECUTE_UPDATE_TASK_ASGMTS;
1200 
1201 --  Standard call to check for call compatibility.
1202 
1203     IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
1204                                p_api_version_number,
1205                                l_api_name,
1206                                G_PKG_NAME         )
1207     THEN
1208          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1209     END IF;
1210 
1211 
1212 --  Initialize the message table if requested.
1213 
1214     IF FND_API.TO_BOOLEAN( p_init_msg_list )
1215     THEN
1216        FND_MSG_PUB.initialize;
1217     END IF;
1218 
1219 
1220 
1221 --  Set API return status to success
1222 
1223     x_return_status := FND_API.G_RET_STS_SUCCESS;
1224 
1225         IF nvl(g_task_asgmts_tbl_count, 0) > 0 THEN
1226 
1227                      UPDATE_Task_Assignments
1228                      (  p_api_version_number         => 1.0
1229                       ,p_commit                          => FND_API.G_FALSE
1230                       ,p_init_msg_list           => FND_API.G_FALSE
1231                           ,p_pm_product_code         => p_pm_product_code
1232                           ,p_pm_project_reference    => p_pm_project_reference
1233                           ,p_pa_project_id           => p_pa_project_id
1234                           ,p_pa_structure_version_id => p_pa_structure_version_id
1235                           ,p_task_assignments_in     => g_task_asgmts_in_tbl
1236                       ,p_task_assignments_out    => g_task_asgmts_out_tbl
1237                       ,x_msg_count                       => l_msg_count
1238                       ,x_msg_data                        => l_msg_data
1239                       ,x_return_status               => l_return_status
1240                       );
1241                   IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1242 
1243                          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1244 
1245                  ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1246 
1247                          RAISE FND_API.G_EXC_ERROR;
1248 
1249                  END IF;
1250 
1251     END IF;
1252 
1253     IF nvl(g_asgmts_periods_tbl_count,0) > 0 THEN
1254 
1255                      Pa_Task_Assignments_Pvt.Create_Task_Assignment_Periods
1256                       (p_api_version_number          => 1.0
1257                       ,p_commit                          => FND_API.G_FALSE
1258                       ,p_init_msg_list           => FND_API.G_FALSE
1259                           ,p_pm_product_code         => p_pm_product_code
1260                           ,p_pm_project_reference    => p_pm_project_reference
1261                           ,p_pa_project_id           => p_pa_project_id
1262                           ,p_pa_structure_version_id => p_pa_structure_version_id
1263                           ,p_task_assignment_periods_in     => g_asgmts_periods_tbl
1264                       ,p_task_assignment_periods_out    => g_asgmts_periods_out_tbl
1265                       ,x_msg_count                       => l_msg_count
1266                       ,x_msg_data                        => l_msg_data
1267                       ,x_return_status               => l_return_status
1268                       );
1269 
1270                       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1271 
1272                                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1273 
1274                       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1275 
1276                                 RAISE FND_API.G_EXC_ERROR;
1277 
1278                       END IF;
1279         END IF;
1280 
1281 
1282   --assign appropriate values to outgoing parameters
1283 
1284      IF FND_API.to_boolean( p_commit ) THEN
1285         COMMIT;
1286      END IF;
1287 
1288 
1289 EXCEPTION
1290 
1291   WHEN FND_API.G_EXC_ERROR
1292   THEN
1293        ROLLBACK TO EXECUTE_UPDATE_TASK_ASGMTS;
1294 
1295        x_return_status := FND_API.G_RET_STS_ERROR;
1296 
1297        FND_MSG_PUB.Count_And_Get
1298            (   p_count    =>  x_msg_count  ,
1299                p_data    =>   x_msg_data  );
1300 
1301   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1302   THEN
1303        ROLLBACK TO EXECUTE_UPDATE_TASK_ASGMTS;
1304 
1305        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1306        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1307        THEN
1308          FND_MSG_PUB.add_exc_msg
1309              ( p_pkg_name    => G_PKG_NAME
1310              , p_procedure_name  => l_api_name  );
1311 
1312        END IF;
1313        FND_MSG_PUB.Count_And_Get
1314            (   p_count    =>  x_msg_count  ,
1315                p_data    =>  x_msg_data  );
1316 
1317   WHEN OTHERS THEN
1318        ROLLBACK TO EXECUTE_UPDATE_TASK_ASGMTS;
1319 
1320        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1321 
1322        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1323        THEN
1324          FND_MSG_PUB.add_exc_msg
1325              ( p_pkg_name    => G_PKG_NAME
1326              , p_procedure_name  => l_api_name  );
1327 
1328        END IF;
1329 
1330        FND_MSG_PUB.Count_And_Get
1331            (   p_count    =>  x_msg_count  ,
1332                p_data    =>  x_msg_data  );
1333 
1334 END EXECUTE_UPDATE_TASK_ASGMTS;
1335 
1336 
1337 PROCEDURE Create_Task_Assignments
1338 ( p_api_version_number        IN   NUMBER            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1339  ,p_commit                                IN   VARCHAR2      := FND_API.G_FALSE
1340  ,p_init_msg_list                 IN   VARCHAR2      := FND_API.G_FALSE
1341  ,p_pm_product_code               IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1342  ,p_pm_project_reference      IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1343  ,p_pa_project_id             IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1344  ,p_pa_structure_version_id   IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1345  ,p_task_assignments_in       IN   ASSIGNMENT_IN_TBL_TYPE
1346  ,p_task_assignments_out      OUT  NOCOPY ASSIGNMENT_OUT_TBL_TYPE
1347  ,x_msg_count                     OUT  NOCOPY NUMBER
1348  ,x_msg_data                      OUT  NOCOPY VARCHAR2
1349  ,x_return_status                     OUT  NOCOPY VARCHAR2
1350 ) IS
1351    l_rlm_id                                              NUMBER;
1352    l_task_elem_version_id        NUMBER;
1353    l_project_id                  pa_projects_all.project_id%type;
1354    l_d_task_id                   NUMBER;
1355    l_task_assignment_id          NUMBER;
1356    l_msg_count                   NUMBER ;
1357    l_msg_data                    VARCHAR2(2000);
1358    l_function_allowed            VARCHAR2(1);
1359    l_resp_id                     NUMBER := 0;
1360    l_user_id                     NUMBER := 0;
1361    l_module_name                 VARCHAR2(80);
1362    l_return_status               VARCHAR2(1);
1363    l_api_name                    CONSTANT  VARCHAR2(30)     := 'add_task_assignments';
1364    i                             NUMBER;
1365    l_count                       NUMBER;
1366    l_msg_code                    VARCHAR2(30);
1367 
1368    l_context                     varchar2(200);
1369    l_calling_module              varchar2(200);
1370    l_struct_elem_version_id      number;
1371    l_budget_version_id           number;
1372    lk_task_elem_version_id_tbl    system.pa_num_tbl_type:= system.pa_num_tbl_type();
1373    lk_resource_list_member_id_tbl system.pa_num_tbl_type:= system.pa_num_tbl_type();
1374    l_task_elem_version_id_tbl    system.pa_num_tbl_type:= system.pa_num_tbl_type();
1375    l_resource_list_member_id_tbl system.pa_num_tbl_type:= system.pa_num_tbl_type();
1376    l_cbs_element_id_tbl 		 system.pa_num_tbl_type:= system.pa_num_tbl_type(); -- Added for 16598322
1377    l_task_name_tbl               system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
1378    l_task_number_tbl             system.pa_varchar2_100_tbl_type := system.pa_varchar2_100_tbl_type();
1379    l_start_date_tbl              system.pa_date_tbl_type :=system.pa_date_tbl_type();
1380    l_end_date_tbl                system.pa_date_tbl_type := system.pa_date_tbl_type();
1381    l_planned_people_effort_tbl   system.pa_num_tbl_type:= system.pa_num_tbl_type();
1382    l_planned_equip_effort_tbl    system.pa_num_tbl_type:= system.pa_num_tbl_type();
1383    l_latest_eff_pub_flag_tbl     system.pa_varchar2_1_tbl_type := system.pa_varchar2_1_tbl_type();
1384    l_project_assignment_id_tbl   system.pa_num_tbl_type:= system.pa_num_tbl_type();
1385    l_quantity_tbl                system.pa_num_tbl_type:= system.pa_num_tbl_type();
1386    l_currency_code_tbl           system.pa_varchar2_15_tbl_type := system.pa_varchar2_15_tbl_type();
1387    l_raw_cost_tbl                system.pa_num_tbl_type:= system.pa_num_tbl_type();
1388    l_burdened_cost_tbl           system.pa_num_tbl_type:= system.pa_num_tbl_type();
1389    l_revenue_tbl                 system.pa_num_tbl_type:= system.pa_num_tbl_type();
1390    l_cost_rate_tbl               system.pa_num_tbl_type:= system.pa_num_tbl_type();
1391    l_bill_rate_tbl               system.pa_num_tbl_type:= system.pa_num_tbl_type();
1392    l_burdened_rate_tbl           system.pa_num_tbl_type:= system.pa_num_tbl_type();
1393    l_product_code_tbl            system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();
1394    l_product_reference_tbl       system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();  --incorrect to change to 25.
1395    l_attribute_category_tbl         system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();
1396    l_attribute1 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1397    l_attribute2 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1398    l_attribute3 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1399    l_attribute4 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1400    l_attribute5 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1401    l_attribute6 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1402    l_attribute7 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1403    l_attribute8 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1404    l_attribute9 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1405    l_attribute10 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1406    l_attribute11 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1407    l_attribute12 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1408    l_attribute13 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1409    l_attribute14 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1410    l_attribute15 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1411    l_attribute16 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1412    l_attribute17 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1413    l_attribute18 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1414    l_attribute19 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1415    l_attribute20 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1416    l_attribute21 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1417    l_attribute22 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1418    l_attribute23 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1419    l_attribute24 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1420    l_attribute25 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1421    l_attribute26 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1422    l_attribute27 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1423    l_attribute28 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1424    l_attribute29 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1425    l_attribute30 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
1426    --Added following two collections for for Bug 3940284
1427    l_delete_task_res_asgmt_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
1428    l_delete_task_elem_ver_id_tbl  system.pa_num_tbl_type := system.pa_num_tbl_type();
1429 
1430    --This table is added for Bug 3948128: TA Delay CR by DHI
1431    l_scheduled_delay_tbl          system.pa_num_tbl_type:= system.pa_num_tbl_type();
1432 
1433    CURSOR C_Get_Budget_Version_Id(p_structure_version_id IN NUMBER) is
1434    select budget_version_id
1435    from pa_budget_versions
1436    where project_structure_version_id = p_structure_version_id
1437    and project_id = p_pa_project_id;
1438 
1439 
1440    CURSOR C_Task_Elem_Version_Id(p_structure_version_id IN NUMBER,
1441                                  p_task_id in NUMBER,
1442                                  p_project_id IN NUMBER) IS
1443    SELECT pe.element_version_id
1444    from pa_proj_element_versions pe
1445    where parent_structure_version_id = p_structure_version_id
1446    and pe.proj_element_id = p_task_id
1447    and pe.project_id = p_project_id;
1448 
1449    CURSOR C_task_version(p_task_element_version_id IN NUMBER) IS
1450    SELECT pe.element_version_id, pe.proj_element_id
1451    from pa_proj_element_versions pe
1452    where pe.element_version_id = p_task_element_version_id;
1453 
1454 
1455     CURSOR c_cur_out(p_structure_version_id IN NUMBER,
1456                     p_project_id IN NUMBER,
1457                                         p_wbs_version_id IN NUMBER,
1458                                         p_resource_list_member_id IN NUMBER ) IS
1459    Select a.alias, b.resource_assignment_id
1460    from pa_resource_list_members a, pa_resource_assignments b, pa_budget_versions bv
1461    where a.resource_list_member_id = b.resource_list_member_id
1462    and b.resource_list_member_id = p_resource_list_member_id
1463    and b.ta_display_flag = 'Y'
1464    and b.budget_version_id = bv.budget_version_id
1465    and b.project_id = bv.project_id
1466    and bv.project_structure_version_id = p_structure_version_id
1467    and b.project_id = p_project_id
1468    and b.wbs_element_version_id = p_wbs_version_id;
1469     c_rec_out c_cur_out%ROWTYPE;
1470 
1471    CURSOR c_cur_out_for_cbs(p_structure_version_id IN NUMBER,
1472                     p_project_id IN NUMBER,
1473                                         p_wbs_version_id IN NUMBER,
1474                                         p_resource_list_member_id IN NUMBER,
1475 										p_cbs_element_id IN NUMBER ) IS
1476    Select a.alias, b.resource_assignment_id
1477    from pa_resource_list_members a, pa_resource_assignments b, pa_budget_versions bv
1478    where a.resource_list_member_id = b.resource_list_member_id
1479    and b.resource_list_member_id = p_resource_list_member_id
1480    and b.ta_display_flag = 'Y'
1481    and b.budget_version_id = bv.budget_version_id
1482    and b.project_id = bv.project_id
1483    and bv.project_structure_version_id = p_structure_version_id
1484    and b.project_id = p_project_id
1485    and b.wbs_element_version_id = p_wbs_version_id
1486    and b.cbs_element_id = p_cbs_element_id;
1487     c_rec_out_for_cbs c_cur_out_for_cbs%ROWTYPE;
1488 
1489 
1490    CURSOR C_Res_List_mem_Check(p_resource_list_member_id IN NUMBER) IS
1491    SELECT 'X', resource_class_code
1492    from pa_resource_list_members
1493    where resource_list_member_id = p_resource_list_member_id;
1494    C_Res_List_Mem_Check_Rec C_Res_List_Mem_Check%ROWTYPE;
1495 
1496    -- Bug 4087956
1497 --   Cursor C_Reference_Check(p_res_assignment_reference IN VARCHAR2) IS
1498    Cursor C_Reference_Check(p_res_assignment_reference IN VARCHAR2, c_budget_version_id IN NUMBER) IS
1499    select 'X'
1500    from pa_resource_assignments  a --, pa_budget_versions b
1501    where a.pm_res_assignment_reference = p_res_assignment_reference
1502    and a.pm_product_code = p_pm_product_code
1503    and a.project_id = p_pa_project_id
1504    and a.ta_display_flag is not null
1505    and a.budget_version_id = c_budget_version_id;
1506 --   and b.project_structure_version_id = p_pa_structure_version_id
1507 --   and a.budget_version_id = b.budget_version_id
1508 --   and a.project_id = b.project_id;
1509    C_Reference_rec c_Reference_Check%ROWTYPE;
1510 
1511 
1512    CURSOR c_unique_res_check(p_structure_version_id IN NUMBER,
1513                     p_project_id IN NUMBER,
1514                                         p_wbs_version_id IN NUMBER,
1515                                         p_resource_list_member_id IN NUMBER ) IS
1516    Select 'X'
1517    from pa_resource_assignments b, pa_budget_versions bv
1518    where b.resource_list_member_id = p_resource_list_member_id
1519    and b.ta_display_flag is not null
1520    and b.budget_version_id = bv.budget_version_id
1521    and b.project_id = bv.project_id
1522    and bv.project_structure_version_id = p_structure_version_id
1523    and b.project_id = p_project_id
1524    and b.wbs_element_version_id = p_wbs_version_id;
1525    c_unique_res_rec c_unique_res_check%ROWTYPE;
1526 
1527    --Added for CBS 16598322
1528     CURSOR c_unique_res_check_for_cbs(p_structure_version_id IN NUMBER,
1529                     p_project_id IN NUMBER,
1530                                         p_wbs_version_id IN NUMBER,
1531                                         p_resource_list_member_id IN NUMBER ,
1532 										p_cbs_element_id IN NUMBER) IS
1533    Select 'X'
1534    from pa_resource_assignments b, pa_budget_versions bv
1535    where b.resource_list_member_id = p_resource_list_member_id
1536    and b.ta_display_flag is not null
1537    and b.budget_version_id = bv.budget_version_id
1538    and b.project_id = bv.project_id
1539    and bv.project_structure_version_id = p_structure_version_id
1540    and b.project_id = p_project_id
1541    and b.wbs_element_version_id = p_wbs_version_id
1542    and b.cbs_element_id = p_cbs_element_id;
1543    c_unique_res_rec_for_cbs c_unique_res_check_for_cbs%ROWTYPE;
1544 
1545    CURSOR c_people_res_check(p_structure_version_id IN NUMBER,
1546                     p_project_id IN NUMBER,
1547                                         p_wbs_version_id IN NUMBER
1548                                          ) IS
1549    Select b.budget_version_id
1550    from pa_resource_assignments b, pa_budget_versions bv
1551    where b.ta_display_flag = 'N'
1552    and b.budget_version_id = bv.budget_version_id
1553    and b.project_id = bv.project_id
1554    and bv.project_structure_version_id = p_structure_version_id
1555    and b.project_id = p_project_id
1556    and b.wbs_element_version_id = p_wbs_version_id
1557    and b.resource_class_code='PEOPLE'
1558    and b.pm_product_code is not NULL;
1559    c_people_res_rec c_people_res_check%ROWTYPE;
1560 
1561    CURSOR C_Workplan_Costs_enabled(p_budget_version_id IN NUMBER) IS
1562         select TRACK_WORKPLAN_COSTS_FLAG enabled_flag from pa_proj_fp_options
1563     where fin_plan_version_id = p_budget_version_id;
1564         C_Workplan_costs_rec C_Workplan_Costs_enabled%ROWTYPE;
1565 
1566    CURSOR C_Check_Res_List_None (c_resource_list_id IN NUMBER) IS
1567      SELECT uncategorized_flag
1568        FROM pa_resource_lists
1569       WHERE resource_list_id = c_resource_list_id;
1570 
1571    k_index NUMBER := 0;
1572 
1573 L_FuncProc varchar2(2000);
1574 
1575 l_valid_member_flag varchar2(1);
1576 l_resource_list_id number;
1577 none_resource_list_flag varchar2(1);
1578 l_resource_list_member_id number;
1579 
1580    -- Changes for Bug 3910882 Begin
1581    l_num_of_tasks NUMBER;
1582    l_db_block_size NUMBER;
1583    l_num_blocks NUMBER;
1584 
1585    CURSOR C_Get_Default_Res_Asgmt(p_project_id IN NUMBER,
1586                                   p_budget_version_id IN NUMBER)
1587    IS
1588    SELECT resource_assignment_id, wbs_element_version_id
1589    FROM pa_resource_assignments ra, pa_copy_asgmts_temp cat
1590    WHERE ra.wbs_element_version_id = cat.src_elem_ver_id
1591    AND ra.project_id = p_project_id
1592    AND ra.budget_version_id = p_budget_version_id
1593    AND ra.ta_display_flag = 'N';
1594 
1595    -- Changes for Bug 3910882 End
1596 
1597 l_cbs_enabled_project varchar2(1) :='N'; -- Added for CBS 16598322
1598 
1599 BEGIN
1600 
1601 L_FuncProc := 'Create_Task_Asgmts';
1602 
1603 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1604 pa_debug.g_err_stage:='Entered ' || L_FuncProc ;
1605 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1606 END IF;
1607 
1608 --  Standard begin of API savepoint
1609 
1610     SAVEPOINT add_task_asgmts_pub;
1611 
1612 --  Standard call to check for call compatibility.
1613 
1614      IF NOT FND_API.Compatible_API_Call ( 1.0, --pa_project_pub.g_api_version_number  ,
1615                                p_api_version_number  ,
1616                                l_api_name         ,
1617                                G_PKG_NAME         )
1618     THEN
1619 
1620           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1621 
1622     END IF;
1623 
1624   --dbms_output.put_line('Fnd Api is compatible:');
1625 
1626 --  Initialize the message table if requested.
1627 
1628     IF FND_API.TO_BOOLEAN( p_init_msg_list )
1629     THEN
1630 
1631   FND_MSG_PUB.initialize;
1632 
1633     END IF;
1634 
1635 --  Set API return status to success
1636 
1637     x_return_status := FND_API.G_RET_STS_SUCCESS;
1638 
1639     --  Initialize the message table if requested.
1640     --  pm_product_code is mandatory
1641 
1642  --dbms_output.put_line('Initialized message table.');
1643 
1644 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1645  pa_debug.g_err_stage:='Checking p_pm_product_code ' || L_FuncProc;
1646  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1647 END IF;
1648 
1649     IF p_pm_product_code IS NOT NULL
1650           AND p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR   THEN
1651 
1652                        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1653                                  pa_interface_utils_pub.map_new_amg_msg
1654                                    ( p_old_message_code => 'PA_PRODUCT_CODE_IS_MISSING'
1655                                     ,p_msg_attribute    => 'CHANGE'
1656                                     ,p_resize_flag      => 'N'
1657                                     ,p_msg_context      => 'GENERAL'
1658                                     ,p_attribute1       => ''
1659                                     ,p_attribute2       => ''
1660                                     ,p_attribute3       => ''
1661                                     ,p_attribute4       => ''
1662                                     ,p_attribute5       => '');
1663                        END IF;
1664                RAISE FND_API.G_EXC_ERROR;
1665 
1666     END IF;
1667 
1668  --dbms_output.put_line('Product Code is checked:');
1669 
1670     l_resp_id := FND_GLOBAL.Resp_id;
1671     l_user_id := FND_GLOBAL.User_id;
1672 
1673 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1674     pa_debug.g_err_stage:='User id :' || l_user_id || 'l_resp_id' || l_resp_id;
1675     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1676 
1677     pa_debug.g_err_stage:=' p_pm_product_code check successful.' || L_FuncProc;
1678     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1679 END IF;
1680 
1681     l_module_name := 'PA_PM_ADD_TASK_ASSIGNMENT';
1682 
1683 --> Project Id check.
1684 
1685         IF p_pa_project_id is NOT NULL AND p_pa_project_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
1686 
1687                   l_project_id := p_pa_project_id;
1688 
1689                  --dbms_output.put_line('Project_id successfully passed..Check ' || l_project_id);
1690 
1691          ELSE
1692                  --dbms_output.put_line('Converting Project ref to id:' || p_pm_project_reference);
1693                         PA_PROJECT_PVT.Convert_pm_projref_to_id
1694                         (           p_pm_project_reference =>      p_pm_project_reference
1695                                  ,  p_pa_project_id     =>      p_pa_project_id
1696                                  ,  p_out_project_id    =>      l_project_id
1697                                  ,  p_return_status     =>      l_return_status
1698                         );
1699 
1700                         IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1701 
1702                                        --dbms_output.put_line('Project_id not successful ');
1703 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1704                                        pa_debug.g_err_stage:=' Project ref to id check not successful.' || L_FuncProc;
1705                                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1706 END IF;
1707                                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
1708 
1709                         ELSIF  (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1710 
1711                                        --dbms_output.put_line('Project_id conv. not successful ');
1712 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1713                                        pa_debug.g_err_stage:=' Project ref to id check not successful.' || L_FuncProc;
1714                                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1715 END IF;
1716                                RAISE  FND_API.G_EXC_ERROR;
1717 
1718                         END IF;
1719         END IF;
1720 
1721          --dbms_output.put_line('Project ref to id check successful for Project ' || l_Project_id);
1722 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1723         pa_debug.g_err_stage:=' Project ref to id check successful.' || L_FuncProc;
1724         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1725 END IF;
1726     -- As part of enforcing project security, which would determine
1727     -- whether the user has the necessary privileges to update the project
1728     -- need to call the pa_security package
1729 
1730     pa_security.initialize (X_user_id        => l_user_id,
1731                             X_calling_module => l_module_name);
1732 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1733         pa_debug.g_err_stage:=' After initializing security..' || L_FuncProc;
1734         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1735 END IF;
1736     -- Actions performed using the APIs would be subject to
1737     -- function security. If the responsibility does not allow
1738     -- such functions to be executed, the API should not proceed further
1739     -- since the user does not have access to such functions
1740 
1741     -- Function security procedure check whether user have the
1742     -- privilege to add task or not
1743        --dbms_output.put_line('Security Initialize successful.');
1744       PA_INTERFACE_UTILS_PUB.G_PROJECT_ID := l_project_id;  --bug 2471668 ( in the project context )
1745 
1746 	  --Get the CBS flag 16598322
1747 	   l_cbs_enabled_project := PA_ALTERNATE_TASK_PVT.Is_Cbs_Enabled(p_Project_Id => l_project_id);
1748 
1749       PA_PM_FUNCTION_SECURITY_PUB.check_function_security
1750       (p_api_version_number => p_api_version_number,
1751        p_responsibility_id  => l_resp_id,
1752        p_function_name      => 'PA_PM_ADD_TASK_ASSIGNMENT',
1753        p_msg_count      => l_msg_count,
1754        p_msg_data           => l_msg_data,
1755        p_return_status      => l_return_status,
1756        p_function_allowed   => l_function_allowed);
1757 
1758        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1759        THEN
1760            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1761 
1762        ELSIF l_return_status = FND_API.G_RET_STS_ERROR
1763        THEN
1764             RAISE FND_API.G_EXC_ERROR;
1765        END IF;
1766 
1767 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1768                 pa_debug.g_err_stage:=' PA_PM_ADD_TASK_ASSIGNMENT function check successful.' || L_FuncProc;
1769         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1770 END IF;
1771         --dbms_output.put_line('PA_PM_ADD_TASK_ASSIGNMENT function check successful.');
1772        IF l_function_allowed = 'N' THEN
1773                  pa_interface_utils_pub.map_new_amg_msg
1774                    ( p_old_message_code => 'PA_FUNCTION_SECURITY_ENFORCED'
1775                     ,p_msg_attribute    => 'CHANGE'
1776                     ,p_resize_flag      => 'Y'
1777                     ,p_msg_context      => 'GENERAL'
1778                     ,p_attribute1       => ''
1779                     ,p_attribute2       => ''
1780                     ,p_attribute3       => ''
1781                     ,p_attribute4       => ''
1782                     ,p_attribute5       => '');
1783                  RAISE FND_API.G_EXC_ERROR;
1784        END IF;
1785            --dbms_output.put_line('PA_FUNCTION_SECURITY_ENFORCED function check successful.');
1786 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1787       pa_debug.g_err_stage:=' PA_FUNCTION_SECURITY_ENFORCED function check successful.' || L_FuncProc;
1788         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1789 END IF;
1790 
1791 
1792 
1793       -- Now verify whether project security allows the user to update
1794       -- the project
1795       -- The user does not have query privileges on this project
1796       -- Hence, cannot update the project.Raise error
1797           -- If the user has query privileges, then check whether
1798       -- update privileges are also available
1799 
1800       IF pa_security.allow_query(x_project_id => l_project_id ) = 'N' OR
1801              pa_security.allow_update(x_project_id => l_project_id ) = 'N' THEN
1802 
1803                     -- The user does not have update privileges on this project
1804                     -- Hence , raise error
1805                  --dbms_output.put_line('pa_security.allow_query or update not allowed..');
1806                  pa_interface_utils_pub.map_new_amg_msg
1807                    ( p_old_message_code => 'PA_PROJECT_SECURITY_ENFORCED'
1808                     ,p_msg_attribute    => 'CHANGE'
1809                     ,p_resize_flag      => 'Y'
1810                     ,p_msg_context      => 'GENERAL'
1811                     ,p_attribute1       => ''
1812                     ,p_attribute2       => ''
1813                     ,p_attribute3       => ''
1814                     ,p_attribute4       => ''
1815                     ,p_attribute5       => '');
1816                  RAISE FND_API.G_EXC_ERROR;
1817      END IF;
1818 
1819          --dbms_output.put_line('pa_security.allow_query or update  successful..');
1820 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1821          pa_debug.g_err_stage:='PA_PROJECT_SECURITY_ENFORCED function check successful.' || L_FuncProc;
1822      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1823 END IF;
1824 
1825          --dbms_output.put_line('Project Id:'  || l_project_id);
1826          begin
1827 
1828           IF  NVL(PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS( l_project_id ), 'N') = 'N' THEN
1829                         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1830                         THEN
1831                                    --dbms_output.put_line('PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS IS N..');
1832                             pa_interface_utils_pub.map_new_amg_msg
1833                               ( p_old_message_code => 'PA_PS_WP_NOT_SEP_FN_AMG'
1834                                   ,p_msg_attribute    => 'CHANGE'
1835                                   ,p_resize_flag      => 'N'
1836                                   ,p_msg_context      => 'GENERAL'
1837                                   ,p_attribute1       => ''
1838                                   ,p_attribute2       => ''
1839                                   ,p_attribute3       => ''
1840                                   ,p_attribute4       => ''
1841                                   ,p_attribute5       => '');
1842                         END IF;
1843                 RAISE FND_API.G_EXC_ERROR;
1844         END IF;
1845          exception when others then
1846          null;
1847          end;
1848 
1849    --dbms_output.put_line('PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS IS Fine..');
1850 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1851    pa_debug.g_err_stage:='PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS function check successful.' || L_FuncProc;
1852    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1853 END IF;
1854 
1855                 IF  p_pa_structure_version_id IS NOT NULL AND
1856                     (p_pa_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
1857 
1858                                  l_struct_elem_version_id := p_pa_structure_version_id;
1859 
1860                  ELSE
1861                      --dbms_output.put_line('Getting current structure version'  );
1862                      l_struct_elem_version_id := PA_PROJECT_STRUCTURE_UTILS.get_current_working_ver_id(
1863                                                      p_project_id => l_project_id);
1864                  END IF;
1865 
1866                     --dbms_output.put_line(' structure version is: ' || l_struct_elem_version_id );
1867             --dbms_output.put_line(' testing str if..' );
1868         IF ( l_struct_elem_version_id IS NULL OR
1869                      l_struct_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1870               )
1871 
1872        THEN
1873            --dbms_output.put_line(' test struct.null or g miss..');
1874 
1875                     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1876                     THEN
1877                                         --dbms_output.put_line(' test struct.null or gmiss err..');
1878                                pa_interface_utils_pub.map_new_amg_msg
1879                                     ( p_old_message_code => 'PA_PS_STRUC_VER_REQ'
1880                                      ,p_msg_attribute    => 'CHANGE'
1881                                      ,p_resize_flag      => 'N'
1882                                      ,p_msg_context      => 'GENERAL'
1883                                      ,p_attribute1       => ''
1884                                      ,p_attribute2       => ''
1885                                      ,p_attribute3       => ''
1886                                      ,p_attribute4       => ''
1887                                      ,p_attribute5       => '');
1888                     END IF;
1889             RAISE FND_API.G_EXC_ERROR;
1890        END IF;
1891 
1892        -- DHI ER: allowing multiple user to update task assignment
1893        --         Removed logic to lock version.
1894        -- pa_task_assignments_pvt.lock_version(l_project_id, l_struct_elem_version_id);
1895 
1896        -- Bug 3940853: Raise locking error return from structure API
1897        IF FND_MSG_PUB.count_msg > 0 THEN
1898          x_return_status := FND_API.G_RET_STS_ERROR;
1899          RAISE FND_API.G_EXC_ERROR;
1900        END IF;
1901 
1902         IF 'N' = pa_task_assignment_utils.check_edit_task_ok
1903                                         ( P_PROJECT_ID              => l_project_id,
1904                                           P_STRUCTURE_VERSION_ID    => l_struct_elem_version_id,
1905                                           P_CURR_STRUCT_VERSION_ID  => l_struct_elem_version_id) THEN
1906                                                                                                         -- Bug 4533152
1907                         --PA_UTILS.ADD_MESSAGE
1908                         --       (p_app_short_name => 'PA',
1909                         --        p_msg_name       => 'PA_UPDATE_PUB_VER_ERR'
1910                         --        );
1911                         x_return_status := FND_API.G_RET_STS_ERROR;
1912                  RAISE FND_API.G_EXC_ERROR;
1913        END IF;
1914 
1915            --dbms_output.put_line(' check edit successful' );
1916 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1917                 pa_debug.g_err_stage:='struct_elem version id function check successful.' || L_FuncProc;
1918         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1919 END IF;
1920 
1921 
1922 
1923                 OPEN C_Get_Budget_Version_Id(l_struct_elem_version_id);
1924                 FETCH C_Get_Budget_Version_Id INTO l_budget_version_id;
1925                 CLOSE C_Get_Budget_Version_Id;
1926 
1927       IF ( l_budget_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
1928             l_budget_version_id IS NULL  )
1929        THEN
1930            --dbms_output.put_line(' budget version not obtained.. successful' );
1931                     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1932                     THEN
1933                                 PA_UTILS.ADD_MESSAGE
1934                                        (p_app_short_name => 'PA',
1935                                         p_msg_name       => 'PA_FP_PROJ_VERSION_MISMATCH'
1936                                         );
1937                     END IF;
1938                  x_return_status    := FND_API.G_RET_STS_ERROR;
1939                  RAISE FND_API.G_EXC_ERROR;
1940 
1941        END IF;
1942 
1943         -- Check if the resource list is None for the workplan
1944         l_resource_list_id := PA_TASK_ASSIGNMENT_UTILS.Get_WP_Resource_List_Id(l_project_id);
1945 
1946         none_resource_list_flag := 'N';
1947 
1948         OPEN C_Check_Res_List_None(l_resource_list_id);
1949         FETCH C_Check_Res_List_None INTO none_resource_list_flag;
1950         CLOSE C_Check_Res_List_None;
1951 
1952  -- Bug 13358104 (Start) : To Display proper error message If the resources assigned in Primavera do not belong to the planning resource list
1953   --   associated to workplan
1954    -- Commented the below code
1955 /*
1956         IF none_resource_list_flag = 'Y' THEN
1957           IF p_pm_product_code = 'MSPROJECT'
1958           THEN
1959             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1960                                  ,p_msg_name       => 'PA_RES_LIST_NONE_ERR_MSP'
1961                                  ,p_token1 => 'TASK_NAME'  -- Bug 6497559
1962                                  ,p_value1 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
1963                                  ,p_token2 => 'TASK_NUMBER'
1964                                  ,p_value2 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
1965                                 );
1966             x_return_status := FND_API.G_RET_STS_ERROR;
1967             RAISE FND_API.G_EXC_ERROR;
1968           ELSE
1969             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1970                                  ,p_msg_name       => 'PA_RES_LIST_NONE_ERR_AMG'
1971                                  ,p_token1 => 'TASK_ID'  -- Bug 6497559
1972                                  ,p_value1 => p_task_assignments_in(i).pa_task_id
1973                                 );
1974             x_return_status := FND_API.G_RET_STS_ERROR;
1975             RAISE FND_API.G_EXC_ERROR;
1976           END IF;
1977         END IF;
1978 
1979 */
1980  -- Added the below code
1981         IF none_resource_list_flag = 'Y' THEN
1982                PA_UTILS.ADD_MESSAGE
1983                (p_app_short_name => 'PA',
1984                 p_msg_name       => 'PA_RES_LIST_NONE_ERR'
1985                );
1986                x_return_status := FND_API.G_RET_STS_ERROR;
1987                RAISE FND_API.G_EXC_ERROR;
1988         END IF;
1989  --(End) Bug 13358104
1990 
1991    --dbms_output.put_line(' budget version id: ' || l_budget_version_id );
1992 
1993         l_count := p_task_assignments_in.COUNT;
1994 
1995 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
1996          pa_debug.g_err_stage:='Count of task assignments' || l_count || ':' || L_FuncProc;
1997          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
1998 END IF;
1999 
2000 
2001         --dbms_output.put_line(' Input Count of Global Input Tables..: ' || l_count );
2002 
2003         --dbms_output.put_line(' Prior to Loading internal Tables..for Count:' || l_Count );
2004 
2005         l_task_elem_version_id_tbl.extend(l_count);
2006         l_resource_list_member_id_tbl.extend(l_count);
2007 
2008 		l_cbs_element_id_tbl.extend(l_count); -- Added for CBS 16598322
2009 
2010          --dbms_output.put_line('l_count 1'|| l_count);
2011         l_task_name_tbl.extend(l_count);
2012 
2013         l_task_number_tbl.extend(l_count);
2014 
2015         l_start_date_tbl.extend(l_count);
2016 
2017         l_end_date_tbl.extend(l_count);
2018 
2019         l_planned_people_effort_tbl.extend(l_count);
2020 
2021         l_planned_equip_effort_tbl.extend(l_count);
2022 
2023         l_latest_eff_pub_flag_tbl.extend(l_count);
2024 
2025         l_project_assignment_id_tbl.extend(l_count);
2026 
2027         l_quantity_tbl.extend(l_count);
2028 
2029         l_currency_code_tbl.extend(l_count);
2030 
2031         l_raw_cost_tbl.extend(l_count);
2032 
2033         l_burdened_cost_tbl.extend(l_count);
2034 
2035         l_product_code_tbl.extend(l_count);
2036 
2037          l_product_reference_tbl.extend(l_count);
2038          --dbms_output.put_line('l_count 2'|| l_count);
2039         l_attribute_category_tbl.extend(l_count);
2040      --dbms_output.put_line('l_count 3'|| l_count);
2041         l_attribute1.extend(l_count);
2042 
2043         l_attribute2.extend(l_count);
2044 
2045         l_attribute3.extend(l_count);
2046 
2047         l_attribute4.extend(l_count);
2048 
2049         l_attribute5.extend(l_count);
2050 
2051         l_attribute6.extend(l_count);
2052 
2053         l_attribute7.extend(l_count);
2054 
2055         l_attribute8.extend(l_count);
2056 
2057         l_attribute9.extend(l_count);
2058 
2059         l_attribute10.extend(l_count);
2060 
2061         l_attribute11.extend(l_count);
2062 
2063         l_attribute12.extend(l_count);
2064 
2065         l_attribute13.extend(l_count);
2066 
2067         l_attribute14.extend(l_count);
2068 
2069         l_attribute15.extend(l_count);
2070 
2071         l_attribute16.extend(l_count);
2072 
2073         l_attribute17.extend(l_count);
2074 
2075         l_attribute18.extend(l_count);
2076 
2077         l_attribute19.extend(l_count);
2078 
2079         l_attribute20.extend(l_count);
2080 
2081         l_attribute21.extend(l_count);
2082 
2083         l_attribute22.extend(l_count);
2084 
2085         l_attribute23.extend(l_count);
2086 
2087         l_attribute24.extend(l_count);
2088 
2089         l_attribute25.extend(l_count);
2090 
2091         l_attribute26.extend(l_count);
2092 
2093         l_attribute27.extend(l_count);
2094 
2095         l_attribute28.extend(l_count);
2096 
2097         l_attribute29.extend(l_count);
2098 
2099         l_attribute30.extend(l_count);
2100 
2101         l_scheduled_delay_tbl.extend(l_count); --Bug 3948128
2102 
2103          --dbms_output.put_line('l_count 4'|| l_count);
2104  FOR i in 1..l_count LOOP
2105 
2106             --dbms_output.put_line('Start of Loading internal Create Tables i index is:' || i);
2107             --dbms_output.put_line('l_count'|| l_count);
2108                 IF p_task_assignments_in.exists(i) THEN
2109                    --dbms_output.put_line('Exists :' || i);
2110                            NULL;
2111                 END IF;
2112                 IF p_task_assignments_in.exists(l_count) THEN
2113                        NUll;
2114                    --dbms_output.put_line('Exists :' || l_count);
2115                else
2116                        null;
2117                    --dbms_output.put_line('Not Exists :' || l_count);
2118                 END IF;
2119 
2120             --dbms_output.put_line('task_id' || i|| ':' || p_task_assignments_in(i).pa_task_id);
2121                 --dbms_output.put_line('task_ref' || i || ':' || p_task_assignments_in(i).pm_task_reference);
2122             --dbms_output.put_line('task_id' || l_count|| ':' || p_task_assignments_in(l_count).pa_task_id);
2123                 --dbms_output.put_line('task_ref' || l_count|| ':' || p_task_assignments_in(l_count).pm_task_reference);
2124 
2125         l_d_task_id := NULL;
2126         l_task_elem_version_id := NULL;
2127 
2128         IF p_task_assignments_in.exists(i) AND p_task_assignments_in(i).pa_task_element_version_id IS NOT NULL AND
2129                  p_task_assignments_in(i).pa_task_element_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2130              OPEN C_task_version(p_task_assignments_in(i).pa_task_element_version_id);
2131                  FETCH C_task_version INTO l_task_elem_version_id, l_d_task_id;
2132                  CLOSE C_task_version;
2133 
2134 
2135         ELSIF p_task_assignments_in.exists(i) AND p_task_assignments_in(i).pa_task_id IS NOT NULL AND
2136            p_task_assignments_in(i).pa_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2137 
2138                         l_d_task_id := p_task_assignments_in(i).pa_task_id;
2139 
2140                          --dbms_output.put_line('l_d_task_id valid input:'|| l_d_task_id);
2141 
2142 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2143                          pa_debug.g_err_stage:='task_id ' || l_d_task_id;
2144                          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2145 END IF;
2146 
2147                          --dbms_output.put_line('l_d_task_id'|| l_d_task_id);
2148 
2149                           IF ( l_d_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
2150                                  l_d_task_id IS NULL  )
2151                             THEN
2152                                          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2153                                          THEN
2154                                                   PA_UTILS.ADD_MESSAGE
2155                                                             (p_app_short_name => 'PA',
2156                                                              p_msg_name       => 'PA_TASK_REQUIRED'
2157                                                              );
2158                                          END IF;
2159 
2160                                  RAISE FND_API.G_EXC_ERROR;
2161                             END IF;
2162 
2163                          l_task_elem_version_id := PA_PROJ_ELEMENTS_UTILS.GET_TASK_VERSION_ID(p_structure_version_id => l_struct_elem_version_id
2164                                           ,p_task_id => l_d_task_id);
2165 
2166 
2167         ELSIF p_task_assignments_in.exists(i) AND
2168               p_task_assignments_in(i).pm_task_reference IS NOT NULL AND
2169               p_task_assignments_in(i).pm_task_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
2170 
2171          --dbms_output.put_line('l_d_task_reference'|| p_task_assignments_in(i).pm_task_reference);
2172 
2173 
2174 
2175                    PA_PROJECT_PVT.CONVERT_PM_TASKREF_TO_ID_all(p_pa_project_id => l_project_id
2176                                                       ,p_pm_task_reference => p_task_assignments_in(i).pm_task_reference
2177                                                       ,p_structure_type => 'WORKPLAN'
2178                                                       ,p_out_task_id => l_d_task_id
2179                                                       ,p_return_status => l_return_status);
2180 
2181                         --dbms_output.put_line('l_d_task_id'|| l_d_task_id);
2182 
2183                            IF ( l_d_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
2184                                 l_d_task_id IS NULL  )
2185                            THEN
2186                                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2187                                 THEN
2188                                           PA_UTILS.ADD_MESSAGE
2189                                                    (p_app_short_name => 'PA',
2190                                                     p_msg_name       => 'PA_TASK_REQUIRED'
2191                                                     );
2192                                 END IF;
2193 
2194                                 RAISE FND_API.G_EXC_ERROR;
2195                             END IF;
2196 
2197 
2198 
2199                         l_task_elem_version_id := PA_PROJ_ELEMENTS_UTILS.GET_TASK_VERSION_ID(p_structure_version_id => l_struct_elem_version_id
2200                                           ,p_task_id => l_d_task_id);
2201 
2202         END IF;
2203 
2204 
2205 
2206     IF ( l_task_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
2207             l_task_elem_version_id IS NULL  )
2208        THEN
2209            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2210             THEN
2211                           PA_UTILS.ADD_MESSAGE
2212                                (p_app_short_name => 'PA',
2213                                 p_msg_name       => 'PA_TASK_VERSION_REQUIRED'
2214                                 );
2215             END IF;
2216 
2217             RAISE FND_API.G_EXC_ERROR;
2218 
2219        END IF;
2220 
2221         --dbms_output.put_line('task elem version id ' || l_task_elem_version_id );
2222 
2223 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2224         pa_debug.g_err_stage:='task_elem version id ' || l_task_elem_version_id ;
2225         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2226 END IF;
2227 
2228         --dbms_output.put_line('Assign all input variables to tabular form for api input.');
2229 
2230    IF l_task_elem_version_id IS NOT NULL THEN
2231 
2232                  k_index := k_index + 1;
2233 
2234                 lk_task_elem_version_id_tbl.extend(1);
2235                 lk_resource_list_member_id_tbl.extend(1);
2236 
2237                  l_task_elem_version_id_tbl(k_index) := l_task_elem_version_id;
2238 
2239                  lk_task_elem_version_id_tbl(k_index) := l_task_elem_version_id;
2240          --dbms_output.put_line('test 1:');
2241                 IF p_task_assignments_in(i).resource_list_member_id IS NOT NULL AND
2242                    p_task_assignments_in(i).resource_list_member_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2243 
2244 
2245                        OPEN C_Res_List_Mem_Check(p_task_assignments_in(i).resource_list_member_id);
2246                        Fetch C_Res_List_Mem_Check into C_Res_List_Mem_Check_Rec;
2247                        Close C_Res_List_Mem_Check;
2248 
2249                 ELSE
2250 
2251                             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2252                             THEN
2253                               IF p_pm_product_code = 'MSPROJECT'
2254                               THEN
2255                                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2256                                                      ,p_msg_name       => 'PA_INVALID_RES_LIST_MEM_ID_MSP'
2257                                                      ,p_token1 => 'PLANNING_RESOURCE_NAME'  -- Bug 6497559
2258                                                      ,p_value1 => PA_TASK_UTILS.get_resource_name(p_task_assignments_in(i).resource_list_member_id)
2259                                                     );
2260                                 x_return_status := FND_API.G_RET_STS_ERROR;
2261                                 RAISE FND_API.G_EXC_ERROR;
2262                               ELSE
2263                                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2264                                                      ,p_msg_name       => 'PA_INVALID_RES_LIST_MEM_ID_AMG'
2265                                                      ,p_token1 => 'PLANNING_RESOURCE_ID'  -- Bug 6497559
2266                                                      ,p_value1 => p_task_assignments_in(i).resource_list_member_id
2267                                                     );
2268                                 x_return_status := FND_API.G_RET_STS_ERROR;
2269                                 RAISE FND_API.G_EXC_ERROR;
2270                               END IF;
2271                              END IF;
2272                 END IF;
2273 
2274                 PA_PLANNING_RESOURCE_UTILS.check_list_member_on_list(
2275                        p_resource_list_id          => l_resource_list_id,
2276                        p_resource_list_member_id   => p_task_assignments_in(i).resource_list_member_id,
2277                        p_project_id                => l_project_id,
2278                        p_chk_enabled               => 'Y',
2279                        x_resource_list_member_id   => l_rlm_id,
2280                        x_valid_member_flag         => l_valid_member_flag,
2281                        x_return_status             => x_return_status,
2282                        x_msg_count                 => x_msg_count,
2283                        x_msg_data                  => x_msg_data ) ;
2284 
2285                 IF l_valid_member_flag = 'N' THEN
2286                        x_return_status := FND_API.G_RET_STS_ERROR;
2287                        RAISE FND_API.G_EXC_ERROR;
2288                 END IF;
2289 				-- ADD CBS VALIDATIONS HERE 16598322
2290 				IF l_cbs_enabled_project = 'Y' THEN
2291 					IF p_task_assignments_in(i).cbs_element_id IS NOT NULL AND
2292                    p_task_assignments_in(i).cbs_element_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2293 
2294 							PA_ALTERNATE_TASK_PVT.Is_Cost_Element_Valid(
2295 								p_Cbs_Element_Id		 	=>p_task_assignments_in(i).cbs_element_id,
2296 								p_Task_Id 					=>l_d_task_id,
2297 								p_Project_Id				=>l_project_id,
2298 							    x_return_status             => x_return_status,
2299 								x_msg_count                 => x_msg_count,
2300 								x_msg_data                  => x_msg_data
2301 							);
2302 
2303 					IF x_return_status <> 'S' THEN
2304 												    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2305                                                      ,p_msg_name       =>  x_msg_data
2306                                                     );
2307                                 x_return_status := FND_API.G_RET_STS_ERROR;
2308                                 RAISE FND_API.G_EXC_ERROR;
2309 					END IF;
2310 
2311 				   ELSE
2312 						    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2313                                                      ,p_msg_name       => 'PA_CBS_WP__COST_CODE_MNDTR'
2314                                                      ,p_token1 => 'RES_NAME'
2315                                                      ,p_value1 => PA_TASK_UTILS.get_resource_name(p_task_assignments_in(i).resource_list_member_id)
2316                                                     );
2317                                 x_return_status := FND_API.G_RET_STS_ERROR;
2318                                 RAISE FND_API.G_EXC_ERROR;
2319 
2320 				   END IF;
2321 
2322 				END IF;
2323 
2324 
2325                 IF p_task_assignments_in(i).start_date IS NOT NULL and
2326                    p_task_assignments_in(i).start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE and
2327                    p_task_assignments_in(i).end_date IS NOT NULL and
2328                    p_task_assignments_in(i).end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE and
2329                           p_task_assignments_in(i).start_date > p_task_assignments_in(i).end_date THEN
2330 
2331                                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2332                                   IF p_pm_product_code = 'MSPROJECT'
2333                                   THEN
2334                                     PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2335                                                          ,p_msg_name       => 'PA_INVALID_DATES_MSP'
2336                                                          ,p_token1 => 'TASK_NAME'  -- Bug 6497559
2337                                                          ,p_value1 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
2338                                                          ,p_token2 => 'TASK_NUMBER'
2339                                                          ,p_value2 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
2340                                                         );
2341                                     x_return_status := FND_API.G_RET_STS_ERROR;
2342                                     RAISE FND_API.G_EXC_ERROR;
2343                                   ELSE
2344                                     PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2345                                                          ,p_msg_name       => 'PA_INVALID_DATES_AMG'
2346                                                          ,p_token1 => 'TASK_ID'  -- Bug 6497559
2347                                                          ,p_value1 => p_task_assignments_in(i).pa_task_id
2348                                                         );
2349                                     x_return_status := FND_API.G_RET_STS_ERROR;
2350                                     RAISE FND_API.G_EXC_ERROR;
2351                                   END IF;
2352                              END IF;
2353 
2354                 END IF;
2355 
2356          --dbms_output.put_line('test 7:');
2357                 IF p_task_assignments_in(i).pm_task_asgmt_reference IS NULL OR
2358                        p_task_assignments_in(i).pm_task_asgmt_reference =  PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR   THEN
2359                            --dbms_output.put_line('pm_task_asgmt_reference is NULL/G_MISS...error');
2360                             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2361                        THEN
2362                                   PA_UTILS.ADD_MESSAGE
2363                                           (p_app_short_name => 'PA',
2364                                            p_msg_name       => 'PA_PM_TASK_ASGMT_REF_REQ'
2365                                            );
2366                        END IF;
2367                                 x_return_status    := FND_API.G_RET_STS_ERROR;
2368                        RAISE FND_API.G_EXC_ERROR;
2369 
2370                 END IF;
2371 
2372            --dbms_output.put_line('pm_task_asgmt_reference is NULL/G_MISS..check passed');
2373                 -- Bug 4087956
2374                 OPEN C_Reference_Check(p_task_assignments_in(i).pm_task_asgmt_reference, l_budget_version_id);
2375                 FETCH C_Reference_Check into C_Reference_Rec;
2376                 IF C_Reference_Check%FOUND THEN
2377                  --dbms_output.put_line('pm_task_asgmt_reference is EXISTING error');
2378                               IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2379                                THEN
2380                                           --CLOSE C_Reference_Check;  Bug 3937017
2381                                           PA_UTILS.ADD_MESSAGE
2382                                                   (p_app_short_name => 'PA'
2383                                                   ,p_msg_name       => 'PA_DUPLICATE_TA_REF'
2384                                                   ,p_token1 => 'TASK_ASGMT_REF'  -- Bug 6497559
2385                                                   ,p_value1 => p_task_assignments_in(i).pm_task_asgmt_reference
2386                                                   ,p_token2 => 'BUDGET_VER_ID'
2387                                                   ,p_value2 => l_budget_version_id
2388                                                    );
2389                                END IF;
2390                                -- Bug 3937017 Moved Close cursor
2391                                CLOSE C_Reference_Check;
2392                                 x_return_status    := FND_API.G_RET_STS_ERROR;
2393                        RAISE FND_API.G_EXC_ERROR;
2394                   END IF;
2395                 Close C_Reference_Check;
2396                  --dbms_output.put_line('pm_task_asgmt_reference is EXISTING check passed');
2397 
2398 
2399 
2400                 --dbms_output.put_line('pm_task_asgmt_reference check passed:' || p_task_assignments_in(i).pm_task_asgmt_reference);
2401 
2402                 --dbms_output.put_line('Count of out table prior to input on create: ' || g_task_asgmts_out_tbl.COUNT);
2403 
2404 
2405 
2406                 p_task_assignments_out(k_index).pa_task_id  := l_d_task_id;
2407                 p_task_assignments_out(k_index).resource_list_member_id  := p_task_assignments_in(i).resource_list_member_id ;
2408 				p_task_assignments_out(k_index).cbs_element_id  := p_task_assignments_in(i).cbs_element_id ;-- Added for CBS 16598322
2409 
2410                 PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(k_index).pa_task_id := l_d_task_id;
2411                 PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(k_index).resource_list_member_id := p_task_assignments_in(i).resource_list_member_id ;
2412 
2413                 lk_resource_list_member_id_tbl(k_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).resource_list_member_id) ;
2414 
2415 				l_cbs_element_id_tbl(k_index) :=pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).cbs_element_id) ; -- Added for CBS 16598322
2416 
2417                  l_start_date_tbl(k_index)                :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).start_date) ;
2418                 l_end_date_tbl(k_index)                  :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).end_date) ;
2419                 --l_latest_eff_pub_flag_tbl(1)       :=  NULL ;  --TBD
2420                 l_resource_list_member_id_tbl(k_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).resource_list_member_id) ;
2421                 l_project_assignment_id_tbl(k_index)     :=  -1 ;
2422 
2423                 IF g_asgmts_periods_tbl_count >  0 THEN
2424 
2425                    l_quantity_tbl(k_index)                  :=  NULL ;
2426                    l_raw_cost_tbl(k_index)                  :=  NULL ;
2427                    l_burdened_cost_tbl(k_index)             :=  NULL ;
2428 
2429                 ELSE
2430 
2431                          OPEN C_Workplan_Costs_enabled(l_budget_version_id);
2432                          FETCH C_Workplan_Costs_enabled INTO C_Workplan_Costs_rec;
2433                           CLOSE C_Workplan_Costs_enabled;
2434 
2435                           IF C_Workplan_Costs_rec.enabled_flag = 'Y' THEN
2436                                 l_raw_cost_tbl(k_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_raw_cost) ;
2437                                 l_burdened_cost_tbl(k_index)             :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_bur_cost) ;
2438                           /* Bug Fix 5505113
2439 							 As per the B n F team request started overriding the miss num with NULL.
2440 
2441                           */
2442                           	IF l_raw_cost_tbl(k_index) = FND_API.G_MISS_NUM THEN
2443                             	l_raw_cost_tbl(k_index) := NULL;
2444                           	END IF;
2445 
2446                           	IF l_burdened_cost_tbl(k_index) = FND_API.G_MISS_NUM THEN
2447                             	l_burdened_cost_tbl(k_index) := NULL;
2448                           	END IF;
2449 
2450                           END IF;
2451                           l_quantity_tbl(k_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_quantity) ;
2452                           /* Bug Fix 5505113
2453 							 As per the B n F team request started overriding the miss num with NULL.
2454 
2455                           */
2456                           	IF l_quantity_tbl(k_index) = FND_API.G_MISS_NUM THEN
2457                             	l_quantity_tbl(k_index) := NULL;
2458                           	END IF;
2459 
2460                 END IF;
2461 
2462         l_currency_code_tbl(k_index)             :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).currency_code) ;
2463         l_product_code_tbl(k_index)              :=  p_pm_product_code   ;
2464         l_product_reference_tbl(k_index)         :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).pm_task_asgmt_reference) ;
2465         l_attribute_category_tbl(k_index)        :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute_category) ;
2466         l_attribute1(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute1) ;
2467         l_attribute2(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute2) ;
2468         l_attribute3(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute3) ;
2469         l_attribute4(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute4) ;
2470         l_attribute5(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute5) ;
2471         l_attribute6(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute6) ;
2472         l_attribute7(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute7) ;
2473         l_attribute8(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute8) ;
2474         l_attribute9(k_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute9) ;
2475         l_attribute10(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute10) ;
2476         l_attribute11(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute11) ;
2477         l_attribute12(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute12) ;
2478         l_attribute13(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute13) ;
2479         l_attribute14(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute14) ;
2480         l_attribute15(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute15) ;
2481         l_attribute16(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute16) ;
2482         l_attribute17(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute17) ;
2483         l_attribute18(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute18) ;
2484         l_attribute19(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute19) ;
2485         l_attribute20(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute20) ;
2486         l_attribute21(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute21) ;
2487         l_attribute22(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute22) ;
2488         l_attribute23(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute23) ;
2489         l_attribute24(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute24) ;
2490         l_attribute25(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute25) ;
2491         l_attribute26(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute26) ;
2492         l_attribute27(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute27) ;
2493         l_attribute28(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute28) ;
2494         l_attribute29(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute29) ;
2495         l_attribute30(k_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute30) ;
2496         l_scheduled_delay_tbl(k_index)           :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).scheduled_delay) ;--Bug 3948128
2497 
2498 		IF  l_cbs_enabled_project = 'N' THEN
2499               open c_unique_res_check( l_struct_elem_version_id,
2500                                   l_project_id,
2501                                   lk_task_elem_version_id_tbl(i),
2502                                                   lk_resource_list_member_id_tbl(i) );
2503                   fetch c_unique_res_check into c_unique_res_rec;
2504 
2505                   IF c_unique_res_check%FOUND THEN
2506                                  IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2507                                  THEN
2508                                           --CLOSE c_unique_res_check;  Bug 3937017
2509                                           IF p_pm_product_code = 'MSPROJECT'
2510                                           THEN
2511                                             PA_UTILS.ADD_MESSAGE
2512                                             ( p_app_short_name => 'PA'
2513                                              ,p_msg_name       => 'PA_UNIQUE_TA_RES_MSP'
2514                                              ,p_token1 => 'PLANNING_RESOURCE_NAME'  -- Bug 6497559
2515                                              ,p_value1 => PA_TASK_UTILS.get_resource_name(p_task_assignments_in(i).resource_list_member_id)
2516                                             );
2517                                           ELSE
2518                                             PA_UTILS.ADD_MESSAGE
2519                                             ( p_app_short_name => 'PA'
2520                                              ,p_msg_name       => 'PA_UNIQUE_TA_RES_AMG'
2521                                              ,p_token1 => 'PLANNING_RESOURCE_ID'  -- Bug 6497559
2522                                              ,p_value1 => p_task_assignments_in(i).resource_list_member_id
2523                                             );
2524                                           END IF;
2525                                 END IF;
2526                         -- Bug 3937017 Moved Close cursor
2527                         CLOSE c_unique_res_check;
2528                         x_return_status    := FND_API.G_RET_STS_ERROR;
2529                         RAISE FND_API.G_EXC_ERROR;
2530                  END IF;
2531                  Close c_unique_res_check;
2532 		ELSE
2533 			              open c_unique_res_check_for_cbs( l_struct_elem_version_id,
2534                                   l_project_id,
2535                                   lk_task_elem_version_id_tbl(i),
2536                                                   lk_resource_list_member_id_tbl(i),
2537 											lk_resource_list_member_id_tbl(i));
2538                   fetch c_unique_res_check_for_cbs into c_unique_res_rec;
2539 
2540                   IF c_unique_res_check_for_cbs%FOUND THEN
2541                                  IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2542                                  THEN
2543 
2544                                             PA_UTILS.ADD_MESSAGE
2545                                             ( p_app_short_name => 'PA'
2546                                              ,p_msg_name       => 'PA_CBS_RESCBS_UNQ_VOILTN'
2547                                              ,p_token1 => 'TASK'
2548                                              ,p_value1 => lk_task_elem_version_id_tbl(i)
2549 											 ,p_token2 => 'Cost_Codes'
2550                                              ,p_value2 => l_cbs_element_id_tbl(i)
2551 											 ,p_token3 => 'Res_name'
2552                                              ,p_value3 => lk_resource_list_member_id_tbl(i)
2553                                             );
2554                                 END IF;
2555 
2556                         CLOSE c_unique_res_check_for_cbs;
2557                         x_return_status    := FND_API.G_RET_STS_ERROR;
2558                         RAISE FND_API.G_EXC_ERROR;
2559                  END IF;
2560                  Close c_unique_res_check_for_cbs;
2561 
2562 
2563 		END IF;
2564 
2565                           -- Commented for Bug 3940284 by rishukla
2566                          /*IF C_Res_List_Mem_Check_Rec.resource_class_code = 'PEOPLE' THEN
2567                             open c_people_res_check( l_struct_elem_version_id,
2568                                                      l_project_id,
2569                                                      lk_task_elem_version_id_tbl(i) );
2570 
2571                                     fetch c_people_res_check into c_people_res_rec;
2572 
2573                                         IF c_people_res_check%FOUND THEN
2574 
2575 
2576                                                   --dbms_output.put_line('Deleting records of task level effort from pa_resource_assignments. ');
2577 
2578                                                   delete from pa_resource_assignments where
2579                                                   resource_class_code = 'PEOPLE'
2580                                                   and project_id = l_project_id
2581                                                   and budget_version_id = c_people_res_rec.budget_version_id
2582                                                   and wbs_element_version_id = lk_task_elem_version_id_tbl(i)
2583                                                   and ta_display_flag = 'N';
2584                                                 -- Bug 3840323 fix
2585                                                 -- Should delete regardless of product code
2586                                                 --and pm_product_code is not null;
2587 
2588                                                  --dbms_output.put_line('After Deleting records of task level effort from pa_resource_assignments. ');
2589 
2590                                         END IF;
2591 
2592                                         close c_people_res_check;
2593                          END IF;*/
2594 
2595         END IF;   --  End if for check of task elem version id prior to loading internal tables
2596 
2597 END LOOP;
2598 
2599 
2600                   --dbms_output.put_line('Value of internal k_index of task assignment input records loaded so far...: ' || k_index);
2601  IF k_index > 0 THEN
2602 
2603       --dbms_output.put_line('b4 call to pa_fp_planning_transactions.add_planning_transactions:'||x_return_status );
2604 
2605     For i in 1..k_index LOOP
2606             NULL;
2607       --dbms_output.put_line('p_context' ||           pa_fp_constants_pkg.g_calling_module_task);
2608           --dbms_output.put_line('p_project_id                  ' || l_project_id);
2609       --dbms_output.put_line('p_struct_elem_version_id      ' || l_struct_elem_version_id );
2610           --dbms_output.put_line('p_budget_version_id           ' || l_budget_version_id);
2611           --dbms_output.put_line('p_task_elem_version_id_tbl(k_index)    ' || l_task_elem_version_id_tbl(k_index));
2612           --dbms_output.put_line('p_task_name_tbl(k_index)                ' || l_task_name_tbl(k_index) );
2613           --dbms_output.put_line('p_task_number_tbl(k_index)              ' || l_task_number_tbl(k_index) );
2614       --dbms_output.put_line('p_start_date_tbl(k_index)               ' || l_start_date_tbl(k_index) );
2615           --dbms_output.put_line('p_end_date_tbl(k_index)                 ' || l_end_date_tbl(k_index) );
2616           --dbms_output.put_line('p_planned_people_effort_tbl(k_index)    ' || l_planned_people_effort_tbl(k_index) );
2617           --dbms_output.put_line('p_planned_equip_effort_tbl(k_index)     ' || l_planned_equip_effort_tbl(k_index) );
2618           --dbms_output.put_line('p_latest_eff_pub_flag_tbl(k_index)      ' || l_latest_eff_pub_flag_tbl(k_index) );
2619           --dbms_output.put_line('p_resource_list_member_id_tbl(k_index)  ' || l_resource_list_member_id_tbl(k_index) );
2620           --dbms_output.put_line('p_project_assignment_id_tbl(k_index)    ' || l_project_assignment_id_tbl(k_index) );
2621           --dbms_output.put_line('p_quantity_tbl(k_index)                ' || l_quantity_tbl(k_index) );
2622           --dbms_output.put_line('p_currency_code_tbl(k_index)           ' || l_currency_code_tbl(k_index));
2623           --dbms_output.put_line('p_raw_cost_tbl(k_index)                ' || l_raw_cost_tbl(k_index));
2624           --dbms_output.put_line('p_burdened_cost_tbl(k_index)           ' || l_burdened_cost_tbl(k_index));
2625           --dbms_output.put_line('p_pm_product_code(k_index)             ' || l_product_code_tbl(k_index));
2626       --dbms_output.put_line('p_pm_res_asgmt_ref(k_index)            ' || l_product_reference_tbl(k_index));
2627           --dbms_output.put_line('p_attribute1(k_index)                  ' || l_attribute1(k_index));           --These are pl/sql system tables too..
2628           --dbms_output.put_line('p_attribute2(k_index)                  ' || l_attribute2(k_index));
2629           --dbms_output.put_line('p_attribute3(k_index)                  ' || l_attribute3(k_index));
2630           --dbms_output.put_line('p_attribute4(k_index)                  ' || l_attribute4(k_index));
2631           --dbms_output.put_line('p_attribute5(k_index)                  ' || l_attribute5(k_index));
2632           --dbms_output.put_line('p_attribute6(k_index)                  ' || l_attribute6(k_index));
2633           --dbms_output.put_line('p_attribute7(k_index)                  ' || l_attribute7(k_index));
2634           --dbms_output.put_line('p_attribute8(k_index)                  ' || l_attribute8(k_index));
2635           --dbms_output.put_line('p_attribute9(k_index)                  ' || l_attribute9(k_index));
2636           --dbms_output.put_line('p_attribute10(k_index)                 ' || l_attribute10(k_index));
2637           --dbms_output.put_line('p_attribute11(k_index)                 ' || l_attribute11(k_index));
2638           --dbms_output.put_line('p_attribute12(k_index)                 ' || l_attribute12(k_index));
2639           --dbms_output.put_line('p_attribute13(k_index)                 ' || l_attribute13(k_index));
2640           --dbms_output.put_line('p_attribute14(k_index)                 ' || l_attribute14(k_index));
2641           --dbms_output.put_line('p_attribute15(k_index)                 ' || l_attribute15(k_index));
2642           --dbms_output.put_line('p_attribute16(k_index)                 ' || l_attribute16(k_index));
2643           --dbms_output.put_line('p_attribute17(k_index)                 ' || l_attribute17(k_index));
2644           --dbms_output.put_line('p_attribute18(k_index)                 ' || l_attribute18(k_index));
2645           --dbms_output.put_line('p_attribute19(k_index)                 ' || l_attribute19(k_index));
2646           --dbms_output.put_line('p_attribute20(k_index)                 ' || l_attribute20(k_index));
2647           --dbms_output.put_line('p_attribute21(k_index)                 ' || l_attribute21(k_index));
2648           --dbms_output.put_line('p_attribute22(k_index)                 ' || l_attribute22(k_index));
2649           --dbms_output.put_line('p_attribute23(k_index)                 ' || l_attribute23(k_index));
2650           --dbms_output.put_line('p_attribute24(k_index)                 ' || l_attribute24(k_index));
2651           --dbms_output.put_line('p_attribute25(k_index)                 ' || l_attribute25(k_index));
2652           --dbms_output.put_line('p_attribute26(k_index)                 ' || l_attribute26(k_index));
2653           --dbms_output.put_line('p_attribute27(k_index)                 ' || l_attribute27(k_index));
2654           --dbms_output.put_line('p_attribute28(k_index)                 ' || l_attribute28(k_index));
2655           --dbms_output.put_line('p_attribute29(k_index)                 ' || l_attribute29(k_index));
2656           --dbms_output.put_line('p_attribute30(k_index)                 ' || l_attribute30(k_index));
2657           --dbms_output.put_line('x_return_status                  ' || x_return_status);
2658           --dbms_output.put_line('x_msg_count                      ' || x_msg_count);
2659           --dbms_output.put_line('x_msg_data                       ' || x_msg_data);
2660 
2661         end LOOP;
2662 
2663         --Added for Bug 3940284
2664 
2665         /* Updates from the bug
2666         In both pa_task_assignments_pub create_task_assignments and
2667         update_task_assignments AMG APIs, we are deleting the ta_display_flag='N'
2668         assignment records whenever the first resource is assigned to the task
2669         version.  There are a few problems that need to be fixed:
2670 
2671         1. We currently only delete if the resource being assigned to task is of
2672         'PEOPLE' class.  This IF should be removed, deletion should be done when
2673         resource of ANY class is assigned to task.
2674         2. We should NOT be deleting directly from pa_resource_assignments.  Instead,
2675         we should call pa_fp_planning_transaction_pub.delete_planning_transactions to
2676         to properly delete the assignment record.
2677         */
2678 
2679         --Changes for Bug 3910882 Begin
2680         /* Updates from the Bug
2681         The UPDATE does not perform very well in volume env.  My suggestion to improve
2682         this is to replace the FORALL UPDATE by 2 operations:
2683         * 1. Insert the task version ids into an existing temp table, PA_COPY_ASGMTS_TEMP
2684         * 2. Select resource assignments from pa_resource_assignments joining to the temp table
2685         */
2686 
2687         -- dynamically computing the statistics for the Temporary table
2688         l_num_of_tasks := l_task_elem_version_id_tbl.COUNT;
2689 
2690         SELECT to_number(value)
2691         INTO   l_db_block_size
2692         FROM   v$parameter
2693         WHERE  name = 'db_block_size';
2694 
2695         l_num_blocks := 1.25 * (l_num_of_tasks * 75) / l_db_block_size;
2696 
2697         -- Manually seed the statistics for the temporary table.
2698 		-- Bug 8261905, Replaced 'PA' by PJI_UTILS.GET_PA_SCHEMA_NAME
2699         pa_task_assignment_utils.set_table_stats(PJI_UTILS.GET_PA_SCHEMA_NAME,'PA_COPY_ASGMTS_TEMP',
2700                                                   l_num_of_tasks, l_num_blocks, 75);
2701 
2702         -- delete content from temp table before inserting
2703         DELETE pa_copy_asgmts_temp;
2704 
2705         -- bulk inserting the task version ids into the temp table
2706         -- Changed due to bug 4153366
2707         FORALL i IN 1..l_task_elem_version_id_tbl.COUNT
2708             INSERT INTO pa_copy_asgmts_temp VALUES
2709             (l_task_elem_version_id_tbl(i), -1, null, null, null, null);
2710 
2711 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2712         pa_debug.g_err_stage:='Successfully inserted task version ids into the temp table';
2713         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2714 END IF;
2715 
2716         -- select resource_assignment_ids and wbs_element_version_ids by joining to
2717         -- the temp table for all records having ta_display_flag = 'N'
2718         OPEN C_Get_Default_Res_Asgmt(l_project_id, l_budget_version_id);
2719         FETCH C_Get_Default_Res_Asgmt BULK COLLECT INTO
2720               l_delete_task_res_asgmt_id_tbl, l_delete_task_elem_ver_id_tbl;
2721         CLOSE C_Get_Default_Res_Asgmt;
2722 
2723 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2724         pa_debug.g_err_stage:='Selected resource_assignment_ids and wbs_element_version_ids into plsql tables';
2725         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2726 END IF;
2727 
2728         /*
2729         FORALL k IN l_task_elem_version_id_tbl.FIRST .. l_task_elem_version_id_tbl.LAST
2730         UPDATE pa_resource_assignments
2731         SET ta_display_flag = 'N'
2732         WHERE ta_display_flag = 'N'
2733         AND wbs_element_version_id = l_task_elem_version_id_tbl(k)
2734         AND project_id = l_project_id
2735         AND budget_version_id = l_budget_version_id
2736         RETURNING resource_assignment_id, wbs_element_version_id BULK COLLECT INTO
2737                   l_delete_task_res_asgmt_id_tbl, l_delete_task_elem_ver_id_tbl;
2738         */
2739 
2740         --Changes for Bug 3910882 End
2741 
2742         IF l_delete_task_res_asgmt_id_tbl.COUNT > 0 THEN
2743                 --dbms_output.put_line('Before calling delete planning transactions:ret. status' || x_return_status);
2744 
2745               -- Bug 4200146: Prevent rollup from happening in PJI plan update call
2746               --              Turn on the mask.
2747               IF g_periodic_mode IS NULL THEN
2748                 PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
2749               END IF;
2750 
2751                 PA_FP_PLANNING_TRANSACTION_PUB.DELETE_PLANNING_TRANSACTIONS(
2752                 P_CONTEXT => pa_fp_constants_pkg.g_calling_module_task,
2753                 P_TASK_OR_RES => 'ASSIGNMENT',
2754                 P_ELEMENT_VERSION_ID_TBL => l_delete_task_elem_ver_id_tbl,
2755                 P_TASK_NUMBER_TBL => NULL,
2756                 P_TASK_NAME_TBL => NULL,
2757                 P_RESOURCE_ASSIGNMENT_TBL => l_delete_task_res_asgmt_id_tbl,
2758                 P_VALIDATE_DELETE_FLAG => NULL,
2759                 X_RETURN_STATUS => X_RETURN_STATUS,
2760                 X_MSG_COUNT => X_MSG_COUNT,
2761                 X_MSG_DATA => X_MSG_DATA);
2762 
2763               -- Bug 4200146: Prevent rollup from happening in PJI plan update call
2764               --              Turn off the mask.
2765               IF g_periodic_mode IS NULL THEN
2766                 PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
2767               END IF;
2768 
2769          END IF;
2770 
2771         --dbms_output.put_line('After Calling delete planning transactions:ret. status' || x_return_status);
2772         --End of Changes for Bug 3940284
2773 
2774 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2775           pa_debug.g_err_stage:='b4 call to pa_fp_planning_transactions.add_planning_transactions ret status:'||x_return_status;
2776           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2777           pa_debug.g_err_stage:='p_context' ||           pa_fp_constants_pkg.g_calling_module_task;
2778           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2779           pa_debug.g_err_stage:='p_project_id                  ' || l_project_id;
2780           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2781           pa_debug.g_err_stage:='p_struct_elem_version_id      ' || l_struct_elem_version_id ;
2782           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2783           pa_debug.g_err_stage:='p_budget_version_id           ' || l_budget_version_id;
2784           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2785 
2786         -- For i in 1..k_index LOOP
2787 
2788           pa_debug.g_err_stage:='p_task_elem_version_id_tbl' || l_task_elem_version_id_tbl(1);
2789           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2790 
2791           pa_debug.g_err_stage:='p_start_date_tbl' || l_start_date_tbl(1) ;
2792           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2793           pa_debug.g_err_stage:='p_end_date_tbl' || l_end_date_tbl(1) ;
2794           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2795 
2796 
2797           pa_debug.g_err_stage:='p_resource_list_member_id_tbl:' || l_resource_list_member_id_tbl(1) ;
2798           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2799           pa_debug.g_err_stage:='p_project_assignment_id_tbl:' || l_project_assignment_id_tbl(1) ;
2800           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2801           pa_debug.g_err_stage:='p_quantity_tbl:' || l_quantity_tbl(1) ;
2802           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2803           pa_debug.g_err_stage:='p_currency_code_tbl:' || l_currency_code_tbl(1);
2804           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2805           pa_debug.g_err_stage:='p_raw_cost_tbl:' || l_raw_cost_tbl(1);
2806           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2807           pa_debug.g_err_stage:='p_burdened_cost_tbl:' || l_burdened_cost_tbl(1);
2808           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2809           pa_debug.g_err_stage:='p_pm_product_code:' || l_product_code_tbl(1);
2810           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2811           pa_debug.g_err_stage:='p_pm_res_asgmt_ref:' || l_product_reference_tbl(1);
2812           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2813           pa_debug.g_err_stage:='p_scheduled_delay:' || l_scheduled_delay_tbl(1);
2814           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2815 
2816          -- END LOOP;
2817 END IF;
2818 
2819    pa_fp_planning_transaction_pub.add_planning_transactions
2820     ( p_context                     => pa_fp_constants_pkg.g_calling_module_task,
2821           p_one_to_one_mapping_flag     => 'Y',
2822           p_project_id                  => l_project_id,
2823       p_struct_elem_version_id      => l_struct_elem_version_id ,
2824           p_budget_version_id           => l_budget_version_id,
2825           p_task_elem_version_id_tbl    => l_task_elem_version_id_tbl,
2826           p_task_name_tbl               => l_task_name_tbl,
2827           p_task_number_tbl             => l_task_number_tbl,
2828           p_planning_start_date_tbl              => l_start_date_tbl,
2829           p_planning_end_date_tbl                => l_end_date_tbl,
2830           p_planned_people_effort_tbl   => l_planned_people_effort_tbl,
2831          -- p_planned_equip_effort_tbl    => l_planned_equip_effort_tbl,
2832           p_latest_eff_pub_flag_tbl     => l_latest_eff_pub_flag_tbl,
2833           p_resource_list_member_id_tbl => l_resource_list_member_id_tbl,
2834 		  p_cbs_element_id_tbl => l_cbs_element_id_tbl, -- Added for CBS 16598322
2835           p_project_assignment_id_tbl   => l_project_assignment_id_tbl,
2836           p_quantity_tbl                => l_quantity_tbl,
2837           p_currency_code_tbl           => l_currency_code_tbl,
2838           p_raw_cost_tbl                => l_raw_cost_tbl,
2839           p_burdened_cost_tbl           => l_burdened_cost_tbl,
2840           p_pm_product_code             => l_product_code_tbl,
2841       p_pm_res_asgmt_ref            => l_product_reference_tbl,
2842           p_attribute_category_tbl      => l_attribute_category_tbl,
2843           p_attribute1                  => l_attribute1,           --These are pl/sql system tables too..
2844           p_attribute2                  => l_attribute2,
2845           p_attribute3                  => l_attribute3,
2846           p_attribute4                  => l_attribute4,
2847           p_attribute5                  => l_attribute5,
2848           p_attribute6                  => l_attribute6,
2849           p_attribute7                  => l_attribute7,
2850           p_attribute8                  => l_attribute8,
2851           p_attribute9                  => l_attribute9,
2852           p_attribute10                 => l_attribute10,
2853           p_attribute11                 => l_attribute11,
2854           p_attribute12                 => l_attribute12,
2855           p_attribute13                 => l_attribute13,
2856           p_attribute14                 => l_attribute14,
2857           p_attribute15                 => l_attribute15,
2858           p_attribute16                 => l_attribute16,
2859           p_attribute17                 => l_attribute17,
2860           p_attribute18                 => l_attribute18,
2861           p_attribute19                 => l_attribute19,
2862           p_attribute20                 => l_attribute20,
2863           p_attribute21                 => l_attribute21,
2864           p_attribute22                 => l_attribute22,
2865           p_attribute23                 => l_attribute23,
2866           p_attribute24                 => l_attribute24,
2867           p_attribute25                 => l_attribute25,
2868           p_attribute26                 => l_attribute26,
2869           p_attribute27                 => l_attribute27,
2870           p_attribute28                 => l_attribute28,
2871           p_attribute29                 => l_attribute29,
2872           p_attribute30                 => l_attribute30,
2873           p_scheduled_delay             => l_scheduled_delay_tbl, --Bug 3948128
2874           x_return_status               => x_return_status,
2875           x_msg_count                   => x_msg_count,
2876           x_msg_data                    => x_msg_data
2877           );
2878 
2879           --dbms_output.put_line('After returning from add planning transactions return status:' ||x_return_status );
2880 
2881 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2882           pa_debug.g_err_stage:='Return status after add planning transactions.' ||x_return_status;
2883           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2884 END IF;
2885 
2886            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2887                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
2888            ELSIF  (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2889                 RAISE  FND_API.G_EXC_ERROR;
2890            END IF;
2891 
2892   END IF;    --k_index for add planning transactions...
2893 
2894 
2895 
2896 
2897 
2898 
2899 
2900 
2901         FOR i in 1..(k_index) LOOP
2902 
2903 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2904                   pa_debug.g_err_stage:='Obtaining Task Assignment Ids index:' || i;
2905                   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2906 END IF;
2907                 IF  l_cbs_enabled_project = 'N' THEN
2908                   open c_cur_out( l_struct_elem_version_id, l_project_id, lk_task_elem_version_id_tbl(i), lk_resource_list_member_id_tbl(i) );
2909                   fetch c_cur_out into c_rec_out;
2910 
2911                   IF c_cur_out%FOUND THEN
2912 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2913                           pa_debug.g_err_stage:='Success on index:' || i;
2914                           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2915 END IF;
2916                           p_task_assignments_out(i).return_status  := 'S';
2917                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'S';
2918 
2919                   ELSE
2920 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2921                          pa_debug.g_err_stage:='Errored on index:' || i;
2922                          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2923 END IF;
2924                          p_task_assignments_out(i).return_status  := 'E';
2925                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'E';
2926                   END IF;
2927 
2928 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2929                   pa_debug.g_err_stage:='Out resource_assignment_id:' || c_rec_out.resource_assignment_id  || 'Out resource alias:' || c_rec_out.alias;
2930                   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2931 END IF;
2932                   p_task_assignments_out(i).pa_task_assignment_id  := c_rec_out.resource_assignment_id;
2933                   p_task_assignments_out(i).resource_alias         := c_rec_out.alias;
2934 
2935                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).pa_task_assignment_id := c_rec_out.resource_assignment_id;
2936                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).resource_alias        := c_rec_out.alias;
2937 
2938 
2939                   close c_cur_out;
2940 			ELSE -- for CBS enabled projects
2941 			      open c_cur_out_for_cbs( l_struct_elem_version_id, l_project_id, lk_task_elem_version_id_tbl(i), lk_resource_list_member_id_tbl(i),l_cbs_element_id_tbl(i) );
2942                   fetch c_cur_out_for_cbs into c_rec_out_for_cbs;
2943 
2944                   IF c_cur_out_for_cbs%FOUND THEN
2945 						IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2946 												  pa_debug.g_err_stage:='Success on index:' || i;
2947 												  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2948 						END IF;
2949                           p_task_assignments_out(i).return_status  := 'S';
2950                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'S';
2951 
2952                   ELSE
2953 						IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2954 												 pa_debug.g_err_stage:='Errored on index:' || i;
2955 												 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2956 						END IF;
2957                          p_task_assignments_out(i).return_status  := 'E';
2958                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'E';
2959                   END IF;
2960 
2961 				IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2962 								  pa_debug.g_err_stage:='Out resource_assignment_id:' || c_rec_out_for_cbs.resource_assignment_id  || 'Out resource alias:' || c_rec_out.alias;
2963 								  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2964 				END IF;
2965                   p_task_assignments_out(i).pa_task_assignment_id  := c_rec_out_for_cbs.resource_assignment_id;
2966                   p_task_assignments_out(i).resource_alias         := c_rec_out_for_cbs.alias;
2967 
2968                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).pa_task_assignment_id := c_rec_out_for_cbs.resource_assignment_id;
2969                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).resource_alias        := c_rec_out_for_cbs.alias;
2970 
2971 
2972                   close c_cur_out_for_cbs;
2973 
2974 
2975 			END IF;
2976 
2977 
2978             END LOOP;
2979 
2980                   --dbms_output.put_line('End of Create Task Assignments:');
2981 
2982 
2983      IF FND_API.to_boolean( p_commit ) THEN
2984 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
2985         pa_debug.g_err_stage:='COMMIT done in Create Task Assignments';
2986         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
2987 END IF;
2988 	COMMIT;
2989      END IF;
2990 
2991 EXCEPTION
2992 
2993   WHEN FND_API.G_EXC_ERROR
2994   THEN
2995        ROLLBACK TO add_task_asgmts_pub;
2996 IF P_DEBUG_MODE = 'Y' THEN
2997        PA_DEBUG.write_log (x_module => G_PKG_NAME
2998                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
2999                                ,x_log_level   => 5);
3000 END IF;
3001        x_return_status := FND_API.G_RET_STS_ERROR;
3002 
3003        FND_MSG_PUB.Count_And_Get
3004            (   p_count    =>  x_msg_count  ,
3005                p_data    =>  x_msg_data  );
3006 
3007   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3008   THEN
3009        ROLLBACK TO add_task_asgmts_pub;
3010 
3011 IF P_DEBUG_MODE = 'Y' THEN
3012         PA_DEBUG.write_log (x_module => G_PKG_NAME
3013                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3014                                ,x_log_level   => 5);
3015 END IF;
3016        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3017 
3018        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3019        THEN
3020                  FND_MSG_PUB.add_exc_msg
3021                      ( p_pkg_name    => G_PKG_NAME
3022                      , p_procedure_name  => l_api_name  );
3023 
3024        END IF;
3025        FND_MSG_PUB.Count_And_Get
3026            (   p_count    =>  x_msg_count  ,
3027                p_data    =>  x_msg_data  );
3028 
3029 
3030   WHEN OTHERS THEN
3031        ROLLBACK TO add_task_asgmts_pub;
3032 
3033        -- Bug 4200146: Prevent rollup from happening in PJI plan update call
3034        --              Reset the mask.
3035        PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3036 
3037 IF P_DEBUG_MODE = 'Y' THEN
3038         PA_DEBUG.write_log (x_module => G_PKG_NAME
3039                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3040                                ,x_log_level   => 5);
3041 END IF;
3042        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3043 
3044        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3045        THEN
3046                  FND_MSG_PUB.add_exc_msg
3047                      ( p_pkg_name    => G_PKG_NAME
3048                      , p_procedure_name  => l_api_name  );
3049 
3050        END IF;
3051 
3052        FND_MSG_PUB.Count_And_Get
3053            (   p_count    =>  x_msg_count  ,
3054                p_data    =>  x_msg_data  );
3055 
3056 END CREATE_TASK_ASSIGNMENTS;
3057 
3058 
3059 
3060 PROCEDURE Create_Task_Assignment_Periods
3061 ( p_api_version_number          IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3062  ,p_commit                                  IN   VARCHAR2            := FND_API.G_FALSE
3063  ,p_init_msg_list                   IN   VARCHAR2            := FND_API.G_FALSE
3064  ,p_pm_product_code                 IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3065  ,p_pm_project_reference        IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3066  ,p_pa_project_id               IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3067  ,p_pa_structure_version_id     IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3068  ,p_task_assignments_in         IN   ASSIGNMENT_IN_TBL_TYPE
3069  ,p_task_assignment_periods_in  IN   PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_PERIODS_TBL_TYPE
3070  ,p_task_assignments_out        OUT  NOCOPY ASSIGNMENT_OUT_TBL_TYPE
3071  ,p_task_assignment_periods_out OUT  NOCOPY PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_OUT_TBL_TYPE
3072  ,x_msg_count                       OUT  NOCOPY NUMBER
3073  ,x_msg_data                        OUT  NOCOPY VARCHAR2
3074  ,x_return_status                       OUT  NOCOPY VARCHAR2
3075 ) IS
3076 
3077    l_api_name             CONSTANT  VARCHAR2(30)     := 'Create_Task_Asgmt_Periods';
3078    i                      NUMBER;
3079    l_return_status        VARCHAR2(1);
3080    l_err_stage            VARCHAR2(120);
3081    l_msg_data             VARCHAR2(2000);
3082    l_msg_code             VARCHAR2(30);
3083    l_msg_count            NUMBER;
3084    l_project_id           NUMBER;
3085    l_task_assignment_periods_out PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_OUT_TBL_TYPE;
3086 L_FuncProc varchar2(2000);
3087 
3088    -- Added for bug 5469303
3089    CURSOR C_Get_Budget_Version_Id(p_structure_version_id IN NUMBER) is
3090    select budget_version_id
3091      from pa_budget_versions
3092     where project_structure_version_id = p_structure_version_id
3093       and project_id = p_pa_project_id;
3094 
3095 		l_budget_version_id       number;
3096   l_struct_elem_version_id  number;
3097 
3098 
3099 BEGIN
3100 L_FuncProc := 'Create_Task_Asgmt_Periods';
3101 --dbms_output.put_line('In Create_Task_Asgmt_Periods:');
3102 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
3103 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
3104 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
3105 END IF;
3106 --  Standard begin of API savepoint
3107 
3108     SAVEPOINT CREATE_TASK_ASGMT_PERIODS;
3109 
3110 --  Standard call to check for call compatibility.
3111 
3112     IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
3113                                p_api_version_number,
3114                                l_api_name,
3115                                G_PKG_NAME         )
3116     THEN
3117          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3118     END IF;
3119 
3120 
3121 --  Initialize the message table if requested.
3122 
3123     IF FND_API.TO_BOOLEAN( p_init_msg_list )
3124     THEN
3125        FND_MSG_PUB.initialize;
3126     END IF;
3127 
3128     --  Set API return status to success
3129     x_return_status := FND_API.G_RET_STS_SUCCESS;
3130 
3131    -- Added for bug 5469303
3132    IF  p_pa_structure_version_id IS NOT NULL AND (p_pa_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
3133      l_struct_elem_version_id := p_pa_structure_version_id;
3134    ELSE
3135      l_struct_elem_version_id := PA_PROJECT_STRUCTURE_UTILS.get_current_working_ver_id( p_project_id => p_pa_project_id);
3136    END IF;
3137 
3138    IF ( l_struct_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_struct_elem_version_id IS NULL  ) THEN
3139      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3140        pa_interface_utils_pub.map_new_amg_msg ( p_old_message_code => 'PA_PS_STRUC_VER_REQ'
3141 						,p_msg_attribute    => 'CHANGE'
3142 						,p_resize_flag      => 'N'
3143 						,p_msg_context      => 'GENERAL'
3144 						,p_attribute1       => ''
3145 						,p_attribute2       => ''
3146 						,p_attribute3       => ''
3147 						,p_attribute4       => ''
3148 						,p_attribute5       => '');
3149       END IF;
3150       RAISE FND_API.G_EXC_ERROR;
3151    END IF;
3152 
3153    OPEN C_Get_Budget_Version_Id(l_struct_elem_version_id);
3154    FETCH C_Get_Budget_Version_Id INTO l_budget_version_id;
3155    CLOSE C_Get_Budget_Version_Id;
3156 
3157    IF ( l_budget_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_budget_version_id IS NULL  ) THEN
3158      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3159        PA_UTILS.ADD_MESSAGE (p_app_short_name => 'PA',
3160 			     p_msg_name       => 'PA_FP_PROJ_VERSION_MISMATCH'
3161 			    );
3162      END IF;
3163      x_return_status    := FND_API.G_RET_STS_ERROR;
3164      RAISE FND_API.G_EXC_ERROR;
3165    END IF;
3166 
3167    IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
3168      pa_debug.g_err_stage:=' budget version id: ' || l_budget_version_id ;
3169      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
3170    END IF;
3171    -- End of changes for bug 5469303
3172 
3173 
3174         --dbms_output.put_line('Calling Init_Task_Assignments:');
3175         Init_Task_Assignments;
3176         g_asgmts_periods_tbl_count := p_task_assignment_periods_in.count;
3177 
3178         IF nvl(p_task_assignments_in.COUNT, 0) > 0 THEN
3179                       --dbms_output.put_line('Calling Create_Task_Assignments:return status: ' || l_return_status);
3180 
3181                       -- Bug 4200146: Set the global variable to indicate that create task assignments
3182                       --  is called with create task assignment periods
3183                       --  Prevent rollup from happening in PJI plan update call
3184                       g_periodic_mode := 'Y';
3185                       PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
3186 
3187                       Create_Task_Assignments
3188                       (  p_api_version_number        => 1.0
3189                       ,p_commit                          => FND_API.G_FALSE
3190                       ,p_init_msg_list           => FND_API.G_FALSE
3191                           ,p_pm_product_code         => p_pm_product_code
3192                           ,p_pm_project_reference    => p_pm_project_reference
3193                           ,p_pa_project_id           => p_pa_project_id
3194                           ,p_pa_structure_version_id => p_pa_structure_version_id
3195                           ,p_task_assignments_in     => p_task_assignments_in
3196                       ,p_task_assignments_out    => p_task_assignments_out
3197                       ,x_msg_count                       => l_msg_count
3198                       ,x_msg_data                        => l_msg_data
3199                       ,x_return_status               => l_return_status
3200                       );
3201 
3202                       -- Bug 4200146
3203                       g_periodic_mode := null;
3204                       PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3205 
3206                   --dbms_output.put_line('After Create_Task_Assignments:return status: ' || l_return_status);
3207                   IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3208 
3209                           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3210 
3211                  ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3212 
3213                          RAISE FND_API.G_EXC_ERROR;
3214 
3215                  END IF;
3216 
3217          END IF;
3218 
3219    IF nvl(p_task_assignment_periods_in.count,0) > 0 THEN
3220                   --dbms_output.put_line('Calling Create_Task_Assignment_Periods return status: ' || l_return_status);
3221 
3222               -- Bug 4200146: Set the global variable to
3223               --  prevent rollup from happening in PJI plan update call
3224               PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
3225 
3226               Pa_Task_Assignments_pvt.Create_Task_Assignment_Periods
3227              (  p_api_version_number            => 1.0
3228               ,p_commit                                 => FND_API.G_FALSE
3229               ,p_init_msg_list                  => FND_API.G_FALSE
3230                   ,p_pm_product_code                => p_pm_product_code
3231                   ,p_pm_project_reference           => p_pm_project_reference
3232                   ,p_pa_project_id                  => p_pa_project_id
3233                   ,p_pa_structure_version_id        => p_pa_structure_version_id
3234                   ,p_task_assignment_periods_in     => p_task_assignment_periods_in
3235               ,p_task_assignment_periods_out    => l_task_assignment_periods_out
3236               ,x_msg_count                              => l_msg_count
3237               ,x_msg_data                               => l_msg_data
3238               ,x_return_status                      => l_return_status
3239              );
3240 
3241              -- Bug 4200146
3242              PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3243 
3244                  IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3245 
3246                          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3247 
3248                   ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3249 
3250                         RAISE FND_API.G_EXC_ERROR;
3251 
3252                  END IF;
3253 
3254    END IF;
3255 
3256    -- Bug 4200146: Call PJI update update
3257    IF nvl(p_task_assignments_in.COUNT, 0) > 0 OR nvl(p_task_assignment_periods_in.count,0) > 0 THEN
3258      PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (p_plan_version_id => l_budget_version_id,  -- added for bug 5469303
3259                                          x_msg_code => l_msg_code,
3260                                          x_return_status => l_return_status);
3261 
3262 
3263      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3264        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3265      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3266       RAISE FND_API.G_EXC_ERROR;
3267      END IF;
3268 
3269    END IF;
3270 
3271      IF FND_API.to_boolean( p_commit ) THEN
3272         COMMIT;
3273      END IF;
3274     --dbms_output.put_line('End of Create_Task_Assignment_Periods return status: ' || l_return_status);
3275 
3276 EXCEPTION
3277 
3278   WHEN FND_API.G_EXC_ERROR
3279   THEN
3280        ROLLBACK TO CREATE_TASK_ASGMT_PERIODS;
3281 
3282        x_return_status := FND_API.G_RET_STS_ERROR;
3283 IF P_DEBUG_MODE = 'Y' THEN
3284        PA_DEBUG.write_log (x_module => G_PKG_NAME
3285                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
3286                                ,x_log_level   => 5);
3287 END IF;
3288        FND_MSG_PUB.Count_And_Get
3289            (   p_count    =>  x_msg_count  ,
3290                p_data    =>   x_msg_data  );
3291 
3292   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3293   THEN
3294        ROLLBACK TO CREATE_TASK_ASGMT_PERIODS;
3295 
3296        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3297 IF P_DEBUG_MODE = 'Y' THEN
3298        PA_DEBUG.write_log (x_module => G_PKG_NAME
3299                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3300                                ,x_log_level   => 5);
3301 END IF;
3302        FND_MSG_PUB.Count_And_Get
3303            (   p_count    =>  x_msg_count  ,
3304                p_data    =>  x_msg_data  );
3305 
3306   WHEN OTHERS THEN
3307        ROLLBACK TO CREATE_TASK_ASGMT_PERIODS;
3308 
3309        -- Bug 4200146
3310        g_periodic_mode := null;
3311        PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3312 
3313        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3314 IF P_DEBUG_MODE = 'Y' THEN
3315        PA_DEBUG.write_log (x_module => G_PKG_NAME
3316                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3317                                ,x_log_level   => 5);
3318 END IF;
3319        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3320        THEN
3321          FND_MSG_PUB.add_exc_msg
3322              ( p_pkg_name    => G_PKG_NAME
3323              , p_procedure_name  => l_api_name  );
3324 
3325        END IF;
3326 
3327        FND_MSG_PUB.Count_And_Get
3328            (   p_count    =>  x_msg_count  ,
3329                p_data    =>  x_msg_data  );
3330 
3331 END Create_Task_Assignment_Periods;
3332 
3333 
3334 PROCEDURE Update_Task_Assignment_Periods
3335 ( p_api_version_number          IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3336  ,p_commit                                  IN   VARCHAR2            := FND_API.G_FALSE
3337  ,p_init_msg_list                   IN   VARCHAR2            := FND_API.G_FALSE
3338  ,p_pm_product_code                 IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3339  ,p_pm_project_reference        IN   VARCHAR2      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3340  ,p_pa_project_id               IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3341  ,p_pa_structure_version_id     IN   NUMBER        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3342  ,p_task_assignments_in         IN   ASSIGNMENT_IN_TBL_TYPE
3343  ,p_task_assignment_periods_in  IN   PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_PERIODS_TBL_TYPE
3344  ,p_task_assignments_out        OUT  NOCOPY ASSIGNMENT_OUT_TBL_TYPE
3345  ,p_task_assignment_periods_out OUT  NOCOPY PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_OUT_TBL_TYPE
3346  ,x_msg_count                       OUT  NOCOPY NUMBER
3347  ,x_msg_data                        OUT  NOCOPY VARCHAR2
3348  ,x_return_status                       OUT  NOCOPY VARCHAR2
3349 ) IS
3350 
3351    l_api_name             CONSTANT  VARCHAR2(30)     := 'Update_Task_Asgmt_Periods';
3352    i                      NUMBER;
3353    l_return_status        VARCHAR2(1);
3354    l_err_stage            VARCHAR2(120);
3355    l_msg_data             VARCHAR2(2000);
3356    l_msg_count            NUMBER;
3357    l_msg_code             VARCHAR2(30);
3358    l_project_id           NUMBER;
3359    l_task_assignment_periods_out PA_TASK_ASSIGNMENTS_PUB.ASSIGNMENT_OUT_TBL_TYPE;
3360 L_FuncProc varchar2(2000);
3361 
3362    -- Added for bug 5469303
3363    CURSOR C_Get_Budget_Version_Id(p_structure_version_id IN NUMBER) is
3364    select budget_version_id
3365      from pa_budget_versions
3366     where project_structure_version_id = p_structure_version_id
3367       and project_id = p_pa_project_id;
3368 
3369 		l_budget_version_id       number;
3370   l_struct_elem_version_id  number;
3371 
3372 
3373 BEGIN
3374 L_FuncProc := 'Update_Task_Asgmt_Periods';
3375 
3376 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
3377 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
3378 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
3379 END IF;
3380 --  Standard begin of API savepoint
3381 
3382     SAVEPOINT UPDATE_TASK_ASGMT_PERIODS;
3383 
3384 --  Standard call to check for call compatibility.
3385 
3386     IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
3387                                p_api_version_number,
3388                                l_api_name,
3389                                G_PKG_NAME         )
3390     THEN
3391          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3392     END IF;
3393 
3394 --  Initialize the message table if requested.
3395 
3396     IF FND_API.TO_BOOLEAN( p_init_msg_list )
3397     THEN
3398        FND_MSG_PUB.initialize;
3399     END IF;
3400 
3401 
3402 
3403 --  Set API return status to success
3404 
3405     x_return_status := FND_API.G_RET_STS_SUCCESS;
3406 
3407    -- Added for bug 5469303
3408         IF  p_pa_structure_version_id IS NOT NULL AND (p_pa_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
3409 				l_struct_elem_version_id := p_pa_structure_version_id;
3410 	ELSE
3411 				l_struct_elem_version_id := PA_PROJECT_STRUCTURE_UTILS.get_current_working_ver_id( p_project_id => p_pa_project_id);
3412 	END IF;
3413 
3414 	IF ( l_struct_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_struct_elem_version_id IS NULL  ) THEN
3415 	  IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3416 		pa_interface_utils_pub.map_new_amg_msg ( p_old_message_code => 'PA_PS_STRUC_VER_REQ'
3417 							,p_msg_attribute    => 'CHANGE'
3418 							,p_resize_flag      => 'N'
3419 							,p_msg_context      => 'GENERAL'
3420 						        ,p_attribute1       => ''
3421 							,p_attribute2       => ''
3422 							,p_attribute3       => ''
3423 							,p_attribute4       => ''
3424 							,p_attribute5       => '');
3425        	END IF;
3426 	RAISE FND_API.G_EXC_ERROR;
3427      END IF;
3428 
3429 
3430 			OPEN C_Get_Budget_Version_Id(l_struct_elem_version_id);
3431 			FETCH C_Get_Budget_Version_Id INTO l_budget_version_id;
3432 			CLOSE C_Get_Budget_Version_Id;
3433 
3434 			IF ( l_budget_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_budget_version_id IS NULL  ) THEN
3435 				IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3436 				  PA_UTILS.ADD_MESSAGE (p_app_short_name => 'PA',
3437 							p_msg_name       => 'PA_FP_PROJ_VERSION_MISMATCH'
3438 							);
3439 			        END IF;
3440 			x_return_status    := FND_API.G_RET_STS_ERROR;
3441 			RAISE FND_API.G_EXC_ERROR;
3442 
3443                         END IF;
3444 
3445 			IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
3446 				pa_debug.g_err_stage:=' budget version id: ' || l_budget_version_id ;
3447 				pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
3448 			END IF;
3449    -- End of changes for bug 5469303
3450 
3451 
3452     Init_Task_Assignments;
3453         g_asgmts_periods_tbl_count := p_task_assignment_periods_in.count;
3454 
3455 
3456         IF nvl(p_task_assignments_in.COUNT, 0) > 0 THEN
3457 
3458                       -- Bug 4200146: Set the global variable to indicate that update task assignments
3459                       --  is called with update task assignment periods
3460                       --  Prevent rollup from happening in PJI plan update call
3461                       g_periodic_mode := 'Y';
3462                       PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
3463 
3464                       Update_Task_Assignments
3465                       (  p_api_version_number        => 1.0
3466                       ,p_commit                          => FND_API.G_FALSE
3467                       ,p_init_msg_list           => FND_API.G_FALSE
3468                           ,p_pm_product_code         => p_pm_product_code
3469                           ,p_pm_project_reference    => p_pm_project_reference
3470                           ,p_pa_project_id           => p_pa_project_id
3471                           ,p_pa_structure_version_id => p_pa_structure_version_id
3472                           ,p_task_assignments_in     => p_task_assignments_in
3473                       ,p_task_assignments_out    => p_task_assignments_out
3474                       ,x_msg_count                       => l_msg_count
3475                       ,x_msg_data                        => l_msg_data
3476                       ,x_return_status               => l_return_status
3477                       );
3478 
3479                       -- Bug 4200146
3480                       g_periodic_mode := null;
3481                       PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3482 
3483                           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3484 
3485                                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3486 
3487                            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3488 
3489                                 RAISE FND_API.G_EXC_ERROR;
3490 
3491                          END IF;
3492 
3493           END IF;
3494 
3495 
3496    IF nvl(p_task_assignment_periods_in.count,0) > 0 THEN
3497 
3498               -- Bug 4200146: Set the global variable to
3499               --  prevent rollup from happening in PJI plan update call
3500               PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
3501 
3502               Pa_Task_Assignments_pvt.Create_Task_Assignment_Periods
3503                 (  p_api_version_number            => 1.0
3504                   ,p_commit                                 => FND_API.G_FALSE
3505                   ,p_init_msg_list                  => FND_API.G_FALSE
3506                   ,p_pm_product_code                => p_pm_product_code
3507                   ,p_pm_project_reference           => p_pm_project_reference
3508                   ,p_pa_project_id                  => p_pa_project_id
3509                   ,p_pa_structure_version_id        => p_pa_structure_version_id
3510                   ,p_task_assignment_periods_in     => p_task_assignment_periods_in
3511                   ,p_task_assignment_periods_out    => l_task_assignment_periods_out
3512                   ,x_msg_count                              => l_msg_count
3513                   ,x_msg_data                               => l_msg_data
3514                   ,x_return_status                      => l_return_status
3515               );
3516 
3517               -- Bug 4200146
3518               PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3519 
3520                  IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3521 
3522                           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3523 
3524                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3525 
3526                         RAISE FND_API.G_EXC_ERROR;
3527 
3528                  END IF;
3529 
3530    END IF;
3531 
3532    -- Bug 4200146: Call PJI update update
3533    IF nvl(p_task_assignments_in.COUNT, 0) > 0 OR nvl(p_task_assignment_periods_in.count,0) > 0 THEN
3534      PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (p_plan_version_id => l_budget_version_id,  -- added for bug 5469303
3535                                          x_msg_code => l_msg_code,
3536                                          x_return_status => l_return_status);
3537 
3538 
3539      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3540        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3541      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3542       RAISE FND_API.G_EXC_ERROR;
3543      END IF;
3544 
3545    END IF;
3546 
3547 
3548 
3549      IF FND_API.to_boolean( p_commit ) THEN
3550         COMMIT;
3551      END IF;
3552 
3553 
3554 EXCEPTION
3555 
3556   WHEN FND_API.G_EXC_ERROR
3557   THEN
3558        ROLLBACK TO UPDATE_TASK_ASGMT_PERIODS;
3559 
3560        x_return_status := FND_API.G_RET_STS_ERROR;
3561 IF P_DEBUG_MODE = 'Y' THEN
3562        PA_DEBUG.write_log (x_module => G_PKG_NAME
3563                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
3564                                ,x_log_level   => 5);
3565 END IF;
3566        FND_MSG_PUB.Count_And_Get
3567            (   p_count    =>  x_msg_count  ,
3568                p_data    =>   x_msg_data  );
3569 
3570   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3571   THEN
3572        ROLLBACK TO UPDATE_TASK_ASGMT_PERIODS;
3573 
3574        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3575 IF P_DEBUG_MODE = 'Y' THEN
3576        PA_DEBUG.write_log (x_module => G_PKG_NAME
3577                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3578                                ,x_log_level   => 5);
3579 END IF;
3580        FND_MSG_PUB.Count_And_Get
3581            (   p_count    =>  x_msg_count  ,
3582                p_data    =>  x_msg_data  );
3583 
3584   WHEN OTHERS THEN
3585        ROLLBACK TO UPDATE_TASK_ASGMT_PERIODS;
3586 
3587        -- Bug 4200146: Reset the masks
3588        g_periodic_mode := null;
3589        PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
3590 
3591        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3592 IF P_DEBUG_MODE = 'Y' THEN
3593        PA_DEBUG.write_log (x_module => G_PKG_NAME
3594                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3595                                ,x_log_level   => 5);
3596 END IF;
3597        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3598        THEN
3599          FND_MSG_PUB.add_exc_msg
3600              ( p_pkg_name    => G_PKG_NAME
3601              , p_procedure_name  => l_api_name  );
3602 
3603        END IF;
3604 
3605        FND_MSG_PUB.Count_And_Get
3606            (   p_count    =>  x_msg_count  ,
3607                p_data    =>  x_msg_data  );
3608 END Update_Task_Assignment_Periods;
3609 
3610 
3611 PROCEDURE Delete_Task_Assignments
3612 ( p_api_version_number        IN  NUMBER           := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3613  ,p_commit                                IN  VARCHAR2     := FND_API.G_FALSE
3614  ,p_init_msg_list                 IN  VARCHAR2     := FND_API.G_FALSE
3615  --Either project reference or project id is required
3616  ,p_pm_project_reference      IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3617  ,p_pa_project_id             IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3618  --Structure version id is required
3619  ,p_pa_structure_version_id   IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3620  --Pass in list of task assignment id's or references as information at a minimum
3621  ,p_task_assignments_in       IN  ASSIGNMENT_IN_TBL_TYPE
3622  ,x_msg_count                     OUT NOCOPY NUMBER
3623  ,x_msg_data                      OUT NOCOPY VARCHAR2
3624  ,x_return_status                     OUT NOCOPY VARCHAR2
3625 ) IS
3626    l_pm_product_code      VARCHAR2(30) := 'INTERNAL';
3627    l_task_assignments_out  ASSIGNMENT_OUT_TBL_TYPE;
3628    l_api_name             CONSTANT  VARCHAR2(30)     := 'Delete_Task_Assignments';
3629    i                      NUMBER;
3630    l_return_status        VARCHAR2(1);
3631    l_err_stage            VARCHAR2(120);
3632    l_msg_data             VARCHAR2(2000);
3633    l_msg_count            NUMBER;
3634    l_project_id           NUMBER;
3635 
3636 L_FuncProc varchar2(2000);
3637 
3638   l_task_assignments_in ASSIGNMENT_IN_TBL_TYPE;
3639 
3640 BEGIN
3641 L_FuncProc := 'Delete_Task_Assignments';
3642 
3643 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
3644 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
3645 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
3646 END IF;
3647 --dbms_output.put_line('Entered Delete_Task_Assignments: ' || L_FuncProc);
3648 
3649 --  Standard begin of API savepoint
3650 
3651     SAVEPOINT Delete_Task_Assignments;
3652 
3653 --  Standard call to check for call compatibility.
3654 
3655     IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
3656                                p_api_version_number,
3657                                l_api_name,
3658                                G_PKG_NAME         )
3659     THEN
3660          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3661     END IF;
3662 
3663 
3664 --  Initialize the message table if requested.
3665 
3666     IF FND_API.TO_BOOLEAN( p_init_msg_list )
3667     THEN
3668        FND_MSG_PUB.initialize;
3669     END IF;
3670 
3671 
3672 
3673 --  Set API return status to success
3674 
3675     x_return_status := FND_API.G_RET_STS_SUCCESS;
3676 
3677 
3678         IF nvl(p_task_assignments_in.COUNT, 0) > 0 THEN
3679 
3680                 l_task_assignments_in := p_task_assignments_in;
3681 
3682                   FOR i in 1..l_task_assignments_in.COUNT LOOP
3683 
3684                      l_task_assignments_in(i).p_context := 'D';
3685 
3686                   END LOOP;
3687                   --dbms_output.put_line('From  Delete_Task_Assignments calling Update_Task_Assignments' );
3688                       Update_Task_Assignments
3689                       (  p_api_version_number        => 1.0
3690                       ,p_commit                          => FND_API.G_FALSE
3691                       ,p_init_msg_list           => FND_API.G_FALSE
3692                           ,p_pm_product_code         => l_pm_product_code
3693                           ,p_pm_project_reference    => p_pm_project_reference
3694                           ,p_pa_project_id           => p_pa_project_id
3695                           ,p_pa_structure_version_id => p_pa_structure_version_id
3696                           ,p_task_assignments_in     => l_task_assignments_in
3697                       ,p_task_assignments_out    => l_task_assignments_out
3698                       ,x_msg_count                       => l_msg_count
3699                       ,x_msg_data                        => l_msg_data
3700                       ,x_return_status               => l_return_status
3701                       );
3702 
3703                         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3704 
3705                                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3706 
3707                         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3708 
3709                                  RAISE FND_API.G_EXC_ERROR;
3710 
3711                         END IF;
3712 
3713          END IF;
3714 
3715 
3716      IF FND_API.to_boolean( p_commit ) THEN
3717         COMMIT;
3718      END IF;
3719 
3720 EXCEPTION
3721 
3722   WHEN FND_API.G_EXC_ERROR
3723   THEN
3724        ROLLBACK TO Delete_Task_Assignments;
3725 
3726        x_return_status := FND_API.G_RET_STS_ERROR;
3727 IF P_DEBUG_MODE = 'Y' THEN
3728        PA_DEBUG.write_log (x_module => G_PKG_NAME
3729                                ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
3730                                ,x_log_level   => 5);
3731 END IF;
3732        FND_MSG_PUB.Count_And_Get
3733            (   p_count    =>  x_msg_count  ,
3734                p_data    =>   x_msg_data  );
3735 
3736   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3737   THEN
3738        ROLLBACK TO Delete_Task_Assignments;
3739 
3740        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3741 IF P_DEBUG_MODE = 'Y' THEN
3742        PA_DEBUG.write_log (x_module => G_PKG_NAME
3743                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3744                                ,x_log_level   => 5);
3745 END IF;
3746        FND_MSG_PUB.Count_And_Get
3747            (   p_count    =>  x_msg_count  ,
3748                p_data    =>  x_msg_data  );
3749 
3750   WHEN OTHERS THEN
3751        ROLLBACK TO Delete_Task_Assignments;
3752 
3753        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3754 IF P_DEBUG_MODE = 'Y' THEN
3755        PA_DEBUG.write_log (x_module => G_PKG_NAME
3756                                ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
3757                                ,x_log_level   => 5);
3758 END IF;
3759        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3760        THEN
3761          FND_MSG_PUB.add_exc_msg
3762              ( p_pkg_name    => G_PKG_NAME
3763              , p_procedure_name  => l_api_name  );
3764 
3765        END IF;
3766 
3767        FND_MSG_PUB.Count_And_Get
3768            (   p_count    =>  x_msg_count  ,
3769                p_data    =>  x_msg_data  );
3770 END Delete_Task_Assignments;
3771 
3772 
3773 
3774 PROCEDURE Update_Task_Assignments
3775 ( p_api_version_number        IN  NUMBER           := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3776  ,p_commit                                IN  VARCHAR2     := FND_API.G_FALSE
3777  ,p_init_msg_list                 IN  VARCHAR2     := FND_API.G_FALSE
3778  ,p_pm_product_code               IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3779  ,p_pm_project_reference      IN  VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3780  ,p_pa_project_id             IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3781  ,p_pa_structure_version_id   IN  NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3782  ,p_task_assignments_in       IN  ASSIGNMENT_IN_TBL_TYPE
3783  ,p_task_assignments_out      OUT NOCOPY ASSIGNMENT_OUT_TBL_TYPE
3784  ,x_msg_count                     OUT NOCOPY NUMBER
3785  ,x_msg_data                      OUT NOCOPY VARCHAR2
3786  ,x_return_status                     OUT NOCOPY VARCHAR2
3787 ) IS
3788    l_rlm_id                                              NUMBER;
3789    l_task_elem_version_id        NUMBER;
3790    l_project_id                  pa_projects_all.project_id%type;
3791    l_d_task_id                   NUMBER;
3792    l_task_assignment_id          NUMBER;
3793    l_msg_count                   NUMBER ;
3794    l_msg_data                    VARCHAR2(2000);
3795    l_function_allowed            VARCHAR2(1);
3796    l_resp_id                     NUMBER := 0;
3797    l_user_id                     NUMBER := 0;
3798    l_module_name                 VARCHAR2(80);
3799    l_return_status               VARCHAR2(1);
3800    l_api_name                    CONSTANT  VARCHAR2(30)     := 'update_task_assignments';
3801    i                             NUMBER;
3802    l_count                       NUMBER;
3803    int_del_index                 NUMBER;
3804    int_del_tmp_index             NUMBER := 0;
3805    l_msg_code                    VARCHAR2(30);
3806 
3807    l_task_asgmt_del_tbl          task_asgmt_del_tbl_type ;
3808 
3809    l_ta_del_tmp_tbl              assignment_del_tbl_type;
3810    l_ta_del_empty_tbl            assignment_del_tbl_type;
3811 
3812    l_ta_del_tbl                  assignment_del_tbl_type;
3813 
3814    l_temp_proj_ass_id            NUMBER :=-99; --bug#9374037
3815 
3816    l_context                     varchar2(200);
3817    l_calling_module              varchar2(200);
3818    l_struct_elem_version_id      number;
3819    l_budget_version_id           number;
3820    l_task_elem_version_id_tbl    system.pa_num_tbl_type := system.pa_num_tbl_type();
3821    l_task_name_tbl               system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3822    l_task_number_tbl             system.pa_varchar2_100_tbl_type :=  system.pa_varchar2_100_tbl_type();
3823    l_incur_by_resource_code_tbl  system.pa_varchar2_30_tbl_type  :=system.pa_varchar2_30_tbl_type() ;
3824    l_incur_by_resource_name_tbl  system.pa_varchar2_240_tbl_type :=system.pa_varchar2_240_tbl_type() ;
3825    l_incur_by_res_class_code_tbl system.pa_varchar2_30_tbl_type  :=system.pa_varchar2_30_tbl_type();
3826    lu_task_elem_version_id_tbl   system.pa_num_tbl_type := system.pa_num_tbl_type();
3827    ld_task_elem_version_id_tbl   system.pa_num_tbl_type := system.pa_num_tbl_type();
3828    l_start_date_tbl              system.pa_date_tbl_type := system.pa_date_tbl_type();
3829    l_end_date_tbl                system.pa_date_tbl_type := system.pa_date_tbl_type();
3830    l_planning_start_date_tbl     system.pa_date_tbl_type := system.pa_date_tbl_type();
3831    l_planning_end_date_tbl       system.pa_date_tbl_type := system.pa_date_tbl_type();
3832 
3833    l_latest_eff_pub_flag_tbl     system.pa_varchar2_1_tbl_type := system.pa_varchar2_1_tbl_type();
3834    l_resource_list_member_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3835    l_cbs_element_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type(); -- Added for CBS 16598322
3836    l_project_assignment_id_tbl   system.pa_num_tbl_type := system.pa_num_tbl_type();
3837    l_quantity_tbl                system.pa_num_tbl_type := system.pa_num_tbl_type();
3838    l_currency_code_tbl           system.pa_varchar2_15_tbl_type := system.pa_varchar2_15_tbl_type();
3839    l_raw_cost_tbl                system.pa_num_tbl_type := system.pa_num_tbl_type();
3840    l_burdened_cost_tbl           system.pa_num_tbl_type := system.pa_num_tbl_type();
3841    l_revenue_tbl                 system.pa_num_tbl_type := system.pa_num_tbl_type();
3842    l_resource_assignment_id_tbl  system.pa_num_tbl_type := system.pa_num_tbl_type();
3843    lp_resource_assignment_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3844    ld_resource_assignment_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3845    l_resource_class_code_tbl     system.pa_varchar2_30_tbl_type :=  system.pa_varchar2_30_tbl_type();
3846    l_resource_alias_tbl          system.pa_varchar2_80_tbl_type  := system.pa_varchar2_80_tbl_type();
3847    l_res_type_code_tbl           system.pa_varchar2_30_tbl_type  := system.pa_varchar2_30_tbl_type();
3848    l_resource_code_tbl           system.pa_varchar2_30_tbl_type  := system.pa_varchar2_30_tbl_type();
3849    l_resource_name               system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3850    l_project_role_id_tbl         system.pa_num_tbl_type          := system.pa_num_tbl_type();
3851    l_project_role_name_tbl       system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3852    l_supplier_id_tbl             system.pa_num_tbl_type          := system.pa_num_tbl_type();
3853    l_supplier_name_tbl           system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3854    l_organization_id_tbl         system.pa_num_tbl_type          := system.pa_num_tbl_type();
3855    l_organization_name_tbl       system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3856    l_fc_res_type_code_tbl        system.pa_varchar2_30_tbl_type  := system.pa_varchar2_30_tbl_type();
3857    l_financial_category_name_tbl system.pa_varchar2_80_tbl_type  := system.pa_varchar2_80_tbl_type();
3858    l_named_role_tbl              system.pa_varchar2_80_tbl_type  := system.pa_varchar2_80_tbl_type() ;
3859 
3860    l_attribute_category_tbl         system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();
3861    l_attribute1_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3862    l_attribute2_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3863    l_attribute3_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3864    l_attribute4_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3865    l_attribute5_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3866    l_attribute6_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3867    l_attribute7_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3868    l_attribute8_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3869    l_attribute9_tbl                 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3870    l_attribute10_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3871    l_attribute11_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3872    l_attribute12_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3873    l_attribute13_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3874    l_attribute14_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3875    l_attribute15_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3876    l_attribute16_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3877    l_attribute17_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3878    l_attribute18_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3879    l_attribute19_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3880    l_attribute20_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3881    l_attribute21_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3882    l_attribute22_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3883    l_attribute23_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3884    l_attribute24_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3885    l_attribute25_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3886    l_attribute26_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3887    l_attribute27_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3888    l_attribute28_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3889    l_attribute29_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3890    l_attribute30_tbl                system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3891    l_description_tbl                system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3892    l_use_task_schedule_flag_tbl     system.pa_varchar2_1_tbl_type := system.pa_varchar2_1_tbl_type();
3893    l_raw_cost_rate_override_tbl     system.pa_num_tbl_type := system.pa_num_tbl_type();
3894    l_burd_cost_rate_override_tbl    system.pa_num_tbl_type := system.pa_num_tbl_type();
3895    l_billable_work_percent_tbl      system.pa_num_tbl_type := system.pa_num_tbl_type();
3896    l_mfc_cost_type_id_tbl               system.pa_num_tbl_type := system.pa_num_tbl_type();
3897 
3898    l_scheduled_delay_tbl            system.pa_num_tbl_type := system.pa_num_tbl_type();--Bug 3948128: TA Delay CR by DHI
3899 
3900   --For create.
3901    lc_task_elem_version_id_tbl    system.pa_num_tbl_type := system.pa_num_tbl_type();
3902    lc_task_name_tbl               system.pa_varchar2_240_tbl_type := system.pa_varchar2_240_tbl_type();
3903    lc_task_number_tbl             system.pa_varchar2_100_tbl_type :=  system.pa_varchar2_100_tbl_type();
3904    lc_start_date_tbl              system.pa_date_tbl_type := system.pa_date_tbl_type();
3905    lc_end_date_tbl                system.pa_date_tbl_type := system.pa_date_tbl_type();
3906    lc_planned_people_effort_tbl   system.pa_num_tbl_type := system.pa_num_tbl_type();
3907    lc_planned_equip_effort_tbl    system.pa_num_tbl_type := system.pa_num_tbl_type();
3908    lc_latest_eff_pub_flag_tbl     system.pa_varchar2_1_tbl_type := system.pa_varchar2_1_tbl_type();
3909    lc_resource_list_member_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3910    lc_cbs_element_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3911    lc_project_assignment_id_tbl   system.pa_num_tbl_type := system.pa_num_tbl_type();
3912    lc_quantity_tbl                system.pa_num_tbl_type := system.pa_num_tbl_type();
3913    lc_currency_code_tbl           system.pa_varchar2_15_tbl_type := system.pa_varchar2_15_tbl_type();
3914    lc_raw_cost_tbl                system.pa_num_tbl_type := system.pa_num_tbl_type();
3915    lc_burdened_cost_tbl           system.pa_num_tbl_type := system.pa_num_tbl_type();
3916    lc_revenue_tbl                 system.pa_num_tbl_type := system.pa_num_tbl_type();
3917    lc_cost_rate_tbl               system.pa_num_tbl_type := system.pa_num_tbl_type();
3918    lc_bill_rate_tbl               system.pa_num_tbl_type := system.pa_num_tbl_type();
3919    lc_burdened_rate_tbl           system.pa_num_tbl_type := system.pa_num_tbl_type();
3920    lc_product_code_tbl            system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();
3921    lc_product_reference_tbl       system.pa_varchar2_30_tbl_type := system.pa_varchar2_30_tbl_type();  --incorrect to change to 25.
3922 --   l_attribute_category_tbl         system.pa_varchar2_30_tbl_type;
3923    lc_attribute1 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3924    lc_attribute2 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3925    lc_attribute3 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3926    lc_attribute4 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3927    lc_attribute5 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3928    lc_attribute6 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3929    lc_attribute7 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3930    lc_attribute8 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3931    lc_attribute9 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3932    lc_attribute10 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3933    lc_attribute11 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3934    lc_attribute12 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3935    lc_attribute13 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3936    lc_attribute14 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3937    lc_attribute15 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3938    lc_attribute16 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3939    lc_attribute17 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3940    lc_attribute18 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3941    lc_attribute19 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3942    lc_attribute20 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3943    lc_attribute21 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3944    lc_attribute22 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3945    lc_attribute23 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3946    lc_attribute24 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3947    lc_attribute25 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3948    lc_attribute26 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3949    lc_attribute27 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3950    lc_attribute28 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3951    lc_attribute29 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3952    lc_attribute30 system.pa_varchar2_150_tbl_type := system.pa_varchar2_150_tbl_type();
3953 
3954    lc_scheduled_delay_tbl            system.pa_num_tbl_type := system.pa_num_tbl_type();--Bug 3948128: TA Delay CR by DHI
3955 
3956 --   l_planned_people_effort_tbl   system.pa_num_tbl_type;
3957 --   l_planned_equip_effort_tbl    system.pa_num_tbl_type;
3958 --   l_cost_rate_tbl               system.pa_num_tbl_type;
3959 --   l_bill_rate_tbl               system.pa_num_tbl_type;
3960 --   l_burdened_rate_tbl           system.pa_num_tbl_type;
3961 
3962  --Added following two collections for for Bug 3940284
3963    l_delete_task_res_asgmt_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3964    l_delete_task_elem_ver_id_tbl  system.pa_num_tbl_type := system.pa_num_tbl_type();
3965 
3966    none_resource_list_flag varchar2(1);
3967 --Added by rbanerje - Bug 8646853 -start
3968    l_spread_curve_id NUMBER;
3969    l_spread_curve_exists VARCHAR2(1);
3970    l_fixed_date DATE;
3971    l_spread_curve_id_tbl system.pa_num_tbl_type := system.pa_num_tbl_type();
3972    l_spread_curve_code pa_spread_curves_b.spread_curve_code%TYPE ;
3973    l_fixed_date_tbl system.pa_date_tbl_type :=system.pa_date_tbl_type();
3974    l_time_phased_code pa_proj_fp_options.all_time_phased_code%TYPE;  --8429604
3975    --Bug#8646853 -Addition end
3976 
3977 --Bug#9374037
3978    CURSOR C_Proj_Ass_Id(p_resource_assignment_id IN NUMBER) IS
3979    select project_assignment_id
3980    from pa_resource_assignments
3981    where resource_assignment_id = p_resource_assignment_id;
3982 
3983   CURSOR C_Check_Res_List_None (c_resource_list_id IN NUMBER) IS
3984      SELECT uncategorized_flag
3985        FROM pa_resource_lists
3986       WHERE resource_list_id = c_resource_list_id;
3987 
3988    CURSOR C_Get_Budget_Version_Id(p_structure_version_id IN NUMBER) is
3989    select budget_version_id
3990    from pa_budget_versions
3991    where project_structure_version_id = p_structure_version_id
3992    and project_id = p_pa_project_id;
3993 
3994    CURSOR C_Task_Elem_Version_Id(p_structure_version_id IN NUMBER,
3995                                  p_task_id in NUMBER,
3996                                  p_project_id IN NUMBER) IS
3997    SELECT pe.element_version_id
3998    from pa_proj_element_versions pe
3999    where parent_structure_version_id = p_structure_version_id
4000    and pe.proj_element_id = p_task_id
4001    and pe.project_id = p_project_id;
4002 
4003     CURSOR C_task_version(p_task_element_version_id IN NUMBER) IS
4004    SELECT pe.element_version_id, pe.proj_element_id
4005    from pa_proj_element_versions pe
4006    where pe.element_version_id = p_task_element_version_id;
4007 
4008    c_index NUMBER := 0;
4009    u_index NUMBER := 0;
4010    del_index NUMBER := 0;
4011 
4012    CURSOR c_cur_out(p_structure_version_id IN NUMBER,
4013                     p_project_id IN NUMBER,
4014                                         p_wbs_version_id IN NUMBER,
4015                                         p_resource_list_member_id IN NUMBER ) IS
4016    Select a.alias, b.resource_assignment_id
4017    from pa_resource_list_members a, pa_resource_assignments b, pa_budget_versions bv
4018    where a.resource_list_member_id = b.resource_list_member_id
4019    and b.resource_list_member_id = p_resource_list_member_id
4020    and b.ta_display_flag = 'Y'
4021    and b.budget_version_id = bv.budget_version_id
4022    and b.project_id = bv.project_id
4023    and bv.project_structure_version_id = p_structure_version_id
4024    and b.project_id = p_project_id
4025    and b.wbs_element_version_id = p_wbs_version_id;
4026     c_rec_out c_cur_out%ROWTYPE;
4027 	-- Added for CBS16598322
4028 	CURSOR c_cur_out_for_cbs(p_structure_version_id IN NUMBER,
4029                     p_project_id IN NUMBER,
4030                                         p_wbs_version_id IN NUMBER,
4031                                         p_resource_list_member_id IN NUMBER,
4032 										p_cbs_element_id IN NUMBER										) IS
4033    Select a.alias, b.resource_assignment_id
4034    from pa_resource_list_members a, pa_resource_assignments b, pa_budget_versions bv
4035    where a.resource_list_member_id = b.resource_list_member_id
4036    and b.resource_list_member_id = p_resource_list_member_id
4037    and b.ta_display_flag = 'Y'
4038    and b.budget_version_id = bv.budget_version_id
4039    and b.project_id = bv.project_id
4040    and bv.project_structure_version_id = p_structure_version_id
4041    and b.project_id = p_project_id
4042    and b.wbs_element_version_id = p_wbs_version_id
4043    and b.cbs_element_id=p_cbs_element_id;
4044     c_rec_out_for_cbs c_cur_out_for_cbs%ROWTYPE;
4045 
4046    CURSOR C_Res_List_mem_Check(p_resource_list_member_id IN NUMBER) IS
4047    SELECT par.ALIAS, par.resource_class_code
4048    from pa_resource_list_members par
4049    where resource_list_member_id = p_resource_list_member_id;
4050    C_Res_List_Mem_Check_Rec C_Res_List_Mem_Check%ROWTYPE;
4051 
4052 
4053 
4054    Cursor C_Cost_Type(p_cost_type IN VARCHAR2) IS
4055    select cost_type_id
4056    from cst_cost_types_V
4057    where multi_org_flag = 1
4058    and cost_type = p_cost_type;
4059    C_Cost_Type_rec C_Cost_Type%ROWTYPE;
4060 
4061    Cursor C_Cost_Type_Exists(p_cost_type_id IN NUMBER) IS
4062    select 'X'
4063    from cst_cost_types_V
4064    where multi_org_flag = 1
4065    and cost_type_id = p_cost_type_id;
4066    C_Cost_Type_Exists_rec C_Cost_Type_Exists%ROWTYPE;
4067 
4068    Cursor C_UOM_exists(p_uom_code IN VARCHAR2) IS
4069    select lookup_code --meaning
4070    from pa_lookups
4071    where lookup_type = 'UNIT'
4072    and lookup_code = p_uom_code;
4073    C_UOM_exists_rec C_UOM_exists%ROWTYPE;
4074 
4075    Cursor C_UOM(p_uom IN VARCHAR2) IS
4076    select lookup_code --meaning
4077    from pa_lookups
4078    where lookup_type = 'UNIT'
4079    and meaning = p_uom;
4080    C_UOM_rec C_UOM%ROWTYPE;
4081 
4082    Cursor C_Currency_Exists(p_currency_code IN VARCHAR2, p_project_id IN NUMBER) IS
4083    select distinct TXN_CURRENCY_CODE
4084    from PA_FP_TXN_CURRENCIES
4085    where project_id = p_project_id and txn_currency_code = p_currency_code;
4086    C_Currency_Exists_rec C_Currency_Exists%ROWTYPE;
4087    --
4088    Cursor C_Currency_Default( p_project_id IN NUMBER) IS
4089    select distinct TXN_CURRENCY_CODE
4090    from PA_FP_TXN_CURRENCIES
4091    where  --PROJECT_CURRENCY_FLAG = 'Y'
4092    -- and
4093     PROJFUNC_CURRENCY_FLAG = 'Y';
4094    C_Currency_Default_rec C_Currency_Default%ROWTYPE;
4095 
4096    L_FuncProc varchar2(2000);
4097 
4098    l_cost_type_id NUMBER;
4099    l_cost_type_exists VARCHAR2(1);
4100    l_uom_code VARCHAR2(30);
4101    l_uom_exists VARCHAR2(1);
4102    l_currency_code VARCHAR2(15);
4103 
4104    CURSOR C_Res_Asgmt_Data(p_resource_assignment_id IN NUMBER) IS
4105    select task_id, wbs_element_version_id, resource_class_code, resource_assignment_id,
4106    project_role_id, organization_id,
4107    fc_res_type_code, named_role,res_type_code, planning_start_date, planning_end_date,
4108    use_task_schedule_flag, rate_based_flag, supplier_id
4109    from pa_resource_assignments
4110    where resource_assignment_id = p_resource_assignment_id;
4111    C_Res_Asgmt_Data_Rec C_Res_Asgmt_Data%ROWTYPE;
4112 
4113   ip_fc_res_type_code varchar2(200);
4114   ip_expenditure_type varchar2(200);
4115   ip_expenditure_category varchar2(200);
4116   ip_event_type varchar2(200);
4117   ip_revenue_category_code varchar2(200);
4118 
4119   lp_res_type_code varchar2(200);
4120   lp_person_id number;
4121   lp_bom_resource_id number;
4122   lp_job_id number;
4123   lp_person_type_code varchar2(200);
4124   lp_non_labor_resource varchar2(200);
4125   lp_inventory_item_id number;
4126   lp_resource_class_id number;
4127   lp_item_category_id number;
4128 
4129   -- Bug 3721630: 1) Change cursor to return all assignments
4130   -- in all task in the given structure version
4131 
4132   -- Bug Fix 5406196
4133   -- Issue: Unable to delete task assignments from MSP.
4134   -- Analysis: The p_pm_product code is the reason for the above.
4135   --           Whenever TAs are deleted from MSP p_pm_product_code is also passed.
4136   --           For TAs created using Oracle Projects the p_pm_product code is not populated.
4137   --		   This is causing the code to skip the TAs that are deleted from MSP, thus
4138   --		   a succesful message is shown in MSP without actually deleting the TA.
4139   -- Resolution: Comment out the p_pm_product_code check. Thus the code will go ahead and will
4140   --             mark the TAs to be deleted and will go through the regular validations
4141   --             and will either succesfully delete or will raise an error message.
4142   --			 This behaviour will be in consistent with the deletion of TA from Oracle Projects.
4143 
4144   -- Notes:
4145   --           There is a concern that this might be designed in that way. Not allowing the user to delete
4146   --           the Oracle Project's TA from third party tools.
4147   --           If that is the case then we need to loop through the tasks that are marked for delete and compare
4148   --           the p_pm_produce_code with the pm_product_code in the db. If they are not same then skip the delete
4149   --           and come up with the following message.
4150   --           You cannot delete a task assignment created in Oracle Projects using an external application.
4151   --           Task Number: <Task Number>. Resource Name : <Resource Name>
4152   --
4153   --   Currently going ahead with commenting out the pm_product_code check.
4154 
4155   CURSOR c_ta_del(p_structure_version_id in number, p_project_id in number) is
4156   select a.resource_assignment_id, a.wbs_element_version_id
4157   from pa_resource_assignments a, pa_budget_versions b
4158   where a.budget_version_id = b.budget_version_id
4159   and a.project_id = b.project_id
4160   and a.ta_display_flag = 'Y'
4161   and b.project_id = p_project_id
4162   and b.project_structure_version_id = p_structure_version_id;
4163 --  and a.pm_product_code is not null
4164 --  and a.pm_product_code = p_pm_product_code;
4165 -- End of Bug Fix 5406196
4166 
4167   c_ta_del_rec c_ta_del%rowtype;
4168 
4169   l_resource_list_member_id NUMBER;
4170 
4171    -- Bug 4087956
4172 --   Cursor C_Reference_Check(p_res_assignment_reference IN VARCHAR2) IS
4173    Cursor C_Reference_Check(p_res_assignment_reference IN VARCHAR2, c_budget_version_id IN NUMBER) IS
4174    select 'X'
4175    from pa_resource_assignments  a --, pa_budget_versions b
4176    where a.pm_res_assignment_reference = p_res_assignment_reference
4177    and a.pm_product_code = p_pm_product_code
4178    and a.project_id = p_pa_project_id
4179    and a.ta_display_flag is not null
4180    and a.budget_version_id = c_budget_version_id;
4181 --   and b.project_structure_version_id = p_pa_structure_version_id
4182 --   and a.budget_version_id = b.budget_version_id
4183 --   and a.project_id = b.project_id;
4184    C_Reference_rec c_Reference_Check%ROWTYPE;
4185 
4186    CURSOR c_people_res_check(
4187                     p_structure_version_id IN NUMBER,
4188                     p_project_id IN NUMBER,
4189                                         p_wbs_version_id IN NUMBER
4190                                          ) IS
4191    Select b.budget_version_id
4192    from pa_resource_assignments b, pa_budget_versions bv
4193    where b.ta_display_flag = 'N'
4194    and b.budget_version_id = bv.budget_version_id
4195    and b.project_id = bv.project_id
4196    and bv.project_structure_version_id = p_structure_version_id
4197    and b.project_id = p_project_id
4198    and b.wbs_element_version_id = p_wbs_version_id
4199    and b.resource_class_code='PEOPLE'
4200    and b.pm_product_code is not NULL;
4201    c_people_res_rec c_people_res_check%ROWTYPE;
4202 
4203 
4204    CURSOR C_Workplan_Costs_enabled(p_budget_version_id IN NUMBER) IS
4205         select TRACK_WORKPLAN_COSTS_FLAG enabled_flag from pa_proj_fp_options
4206     where fin_plan_version_id = p_budget_version_id;
4207         C_Workplan_costs_rec C_Workplan_Costs_enabled%ROWTYPE;
4208 
4209    l_valid_member_flag varchar2(1);
4210    l_resource_list_id number;
4211 
4212    -- Changes for Bug 3910882 Begin
4213    l_num_of_tasks NUMBER;
4214    l_db_block_size NUMBER;
4215    l_num_blocks NUMBER;
4216 
4217    CURSOR C_Get_Default_Res_Asgmt(p_project_id IN NUMBER,
4218                                   p_budget_version_id IN NUMBER)
4219    IS
4220    SELECT resource_assignment_id, wbs_element_version_id
4221    FROM pa_resource_assignments ra, pa_copy_asgmts_temp cat
4222    WHERE ra.wbs_element_version_id = cat.src_elem_ver_id
4223    AND ra.project_id = p_project_id
4224    AND ra.budget_version_id = p_budget_version_id
4225    AND ra.ta_display_flag = 'N';
4226 
4227    -- Changes for Bug 3910882 End
4228 
4229 --Added by rbanerje - Bug#8646853 -start
4230    Cursor C_Spread_Curve(p_spread_curve_name IN VARCHAR2) IS
4231    select a.spread_curve_id spread_curve_id
4232    from pa_spread_curves_b a,
4233             pa_spread_curves_tl t
4234    where t.name = p_spread_curve_name
4235    and a.spread_curve_id = t.spread_curve_id
4236    and t.language = userenv('LANG')
4237    and sysdate BETWEEN a.effective_start_date AND nvl(a.effective_end_date,
4238 sysdate);
4239    c_spread_curve_rec C_Spread_Curve%ROWTYPE;
4240 
4241    Cursor C_Spread_Curve_Exists(p_spread_curve_id IN NUMBER) IS
4242    select 'X'
4243    from pa_spread_curves_b
4244    where spread_curve_id = p_spread_curve_id
4245    and sysdate BETWEEN effective_start_date AND nvl(effective_end_date,
4246 sysdate);
4247    c_spread_curve_exists_rec C_Spread_Curve_Exists%ROWTYPE;
4248 
4249    Cursor C_Spread_Curve_Code(p_spread_curve_id IN NUMBER) IS
4250    select spread_curve_code
4251    from pa_spread_curves_b
4252    where spread_curve_id = p_spread_curve_id
4253    and sysdate BETWEEN effective_start_date AND nvl(effective_end_date,
4254 sysdate);
4255    c_spread_curve_code_rec C_Spread_Curve_Code%ROWTYPE;
4256 
4257    Cursor C_Time_Phased_Code(p_budget_version_id IN NUMBER) IS
4258    select pa_fin_plan_utils.Get_Time_Phased_code(p_budget_version_id)
4259 time_phased_code
4260    from dual;
4261    c_time_phased_code_rec C_Time_Phased_Code%ROWTYPE;
4262 
4263    Cursor C_Spread_Curve_Id(p_task_assignment_id IN NUMBER) IS
4264    select spread_curve_id
4265    from pa_resource_assignments
4266    where resource_assignment_id = p_task_assignment_id ;
4267    c_spread_curve_id_rec C_Spread_Curve_Id%ROWTYPE;
4268 
4269    Cursor C_Res_Asgmt_Id(p_project_id IN NUMBER,p_task_asgmt_reference IN
4270 VARCHAR2,p_task_element_version_id IN NUMBER, p_resource_list_member_id IN
4271 NUMBER) IS
4272    select resource_assignment_id
4273    from pa_resource_assignments
4274    where project_id = p_project_id AND
4275    pm_res_assignment_reference = p_task_asgmt_reference AND
4276    wbs_element_version_id = p_task_element_version_id AND
4277    resource_list_member_id = p_resource_list_member_id;
4278    c_res_asgmt_id_rec C_Res_Asgmt_Id%ROWTYPE;
4279 
4280    --Bug#8646853 -Addition end
4281    -- Added below for Bug 8842724
4282    l_task_assignments_in        ASSIGNMENT_IN_TBL_TYPE := p_task_assignments_in;
4283 
4284    l_cbs_enabled_project varchar2(1) :='N'; -- Added for CBS 16598322
4285 
4286 BEGIN
4287 L_FuncProc := 'Update_Task_Asgmts';
4288 
4289 
4290 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4291 pa_debug.g_err_stage:='Entered ' || L_FuncProc;
4292 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4293 END IF;
4294 --  Standard begin of API savepoint
4295 
4296 --dbms_output.put_line('Entered Update Task Asgmts.');
4297 
4298     SAVEPOINT UPDATE_task_asgmts_pub;
4299 
4300 --  Standard call to check for call compatibility.
4301 
4302      IF NOT FND_API.Compatible_API_Call ( 1.0, --pa_project_pub.g_api_version_number  ,
4303                                p_api_version_number  ,
4304                                l_api_name         ,
4305                                G_PKG_NAME         )
4306     THEN
4307 
4308   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4309 
4310     END IF;
4311 
4312 --  Initialize the message table if requested.
4313 
4314     IF FND_API.TO_BOOLEAN( p_init_msg_list )
4315     THEN
4316 
4317   FND_MSG_PUB.initialize;
4318 
4319     END IF;
4320 
4321 --dbms_output.put_line('Update Task Asgmts.: API Comp. checked.');
4322 
4323 --  Set API return status to success
4324 
4325     x_return_status := FND_API.G_RET_STS_SUCCESS;
4326 
4327     --  Initialize the message table if requested.
4328     --  pm_product_code is mandatory
4329 
4330    --dbms_output.put_line('Initialized message table.');
4331 
4332 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4333  pa_debug.g_err_stage:='Checking p_pm_product_code ' || L_FuncProc;
4334  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4335 END IF;
4336 
4337     IF p_pm_product_code IS NOT NULL
4338     AND p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR   THEN
4339 
4340        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4341          pa_interface_utils_pub.map_new_amg_msg
4342            ( p_old_message_code => 'PA_PRODUCT_CODE_IS_MISSING'
4343             ,p_msg_attribute    => 'CHANGE'
4344             ,p_resize_flag      => 'N'
4345             ,p_msg_context      => 'GENERAL'
4346             ,p_attribute1       => ''
4347             ,p_attribute2       => ''
4348             ,p_attribute3       => ''
4349             ,p_attribute4       => ''
4350             ,p_attribute5       => '');
4351        END IF;
4352        RAISE FND_API.G_EXC_ERROR;
4353 
4354     END IF;
4355 
4356 --dbms_output.put_line('Update Task Asgmts.: Product Code checked.');
4357 
4358     l_resp_id := FND_GLOBAL.Resp_id;
4359     l_user_id := FND_GLOBAL.User_id;
4360 
4361  --dbms_output.put_line('User id :' || l_user_id || 'l_resp_id' || l_resp_id);
4362 
4363 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4364 pa_debug.g_err_stage:=' p_pm_product_code check successful.' || L_FuncProc;
4365 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4366 END IF;
4367 
4368 
4369 
4370     l_module_name := 'PA_PM_UPDATE_TASK_ASSIGNMENT';
4371 
4372 
4373   --
4374 
4375 
4376     IF p_pa_project_id is NOT NULL AND p_pa_project_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4377 
4378      l_project_id := p_pa_project_id;
4379 
4380 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4381      pa_debug.g_err_stage:='Project_id successfully passed..Check ' || l_project_id;
4382      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4383 END IF;
4384 
4385     ELSE
4386 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4387         pa_debug.g_err_stage:='Converting Project ref to id:' || p_pm_project_reference;
4388         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4389 END IF;
4390         PA_PROJECT_PVT.Convert_pm_projref_to_id
4391         (           p_pm_project_reference =>   p_pm_project_reference
4392                  ,  p_pa_project_id     =>      p_pa_project_id
4393                  ,  p_out_project_id    =>      l_project_id
4394                  ,  p_return_status     =>      l_return_status
4395         );
4396 
4397         IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4398 
4399                        --dbms_output.put_line('Project_id not successful ');
4400 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4401                        pa_debug.g_err_stage:=' Project ref to id check not successful.' || L_FuncProc;
4402                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4403 END IF;
4404                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
4405 
4406         ELSIF  (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4407 
4408                        --dbms_output.put_line('Project_id conv. not successful ');
4409 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4410                        pa_debug.g_err_stage:=' Project ref to id check not successful.' || L_FuncProc;
4411                pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4412 END IF;
4413                RAISE  FND_API.G_EXC_ERROR;
4414 
4415                 END IF;
4416         END IF;
4417 
4418          --dbms_output.put_line('Project ref to id check successful for Project ' || l_Project_id);
4419 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4420         pa_debug.g_err_stage:=' Project ref to id check successful.' || L_FuncProc;
4421         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4422 END IF;
4423 
4424     -- As part of enforcing project security, which would determine
4425     -- whether the user has the necessary privileges to update the project
4426     -- need to call the pa_security package
4427 
4428     pa_security.initialize (X_user_id        => l_user_id,
4429                             X_calling_module => l_module_name);
4430 
4431     -- Actions performed using the APIs would be subject to
4432     -- function security. If the responsibility does not allow
4433     -- such functions to be executed, the API should not proceed further
4434     -- since the user does not have access to such functions
4435 
4436     -- Function security procedure check whether user have the
4437     -- privilege to UPDATE task or not
4438 
4439       PA_INTERFACE_UTILS_PUB.G_PROJECT_ID := l_project_id;  --bug 2471668 ( in the project context )
4440 	  	  --Get the CBS flag 16598322
4441 	   l_cbs_enabled_project := PA_ALTERNATE_TASK_PVT.Is_Cbs_Enabled(p_Project_Id => l_project_id);
4442 
4443       PA_PM_FUNCTION_SECURITY_PUB.check_function_security
4444       (p_api_version_number => p_api_version_number,
4445        p_responsibility_id  => l_resp_id,
4446        p_function_name      => 'PA_PM_UPDATE_TASK_ASSIGNMENT',
4447        p_msg_count      => l_msg_count,
4448        p_msg_data           => l_msg_data,
4449        p_return_status      => l_return_status,
4450        p_function_allowed   => l_function_allowed);
4451 
4452        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
4453        THEN
4454       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4455 
4456        ELSIF l_return_status = FND_API.G_RET_STS_ERROR
4457        THEN
4458       RAISE FND_API.G_EXC_ERROR;
4459        END IF;
4460 
4461        IF l_function_allowed = 'N' THEN
4462          pa_interface_utils_pub.map_new_amg_msg
4463            ( p_old_message_code => 'PA_FUNCTION_SECURITY_ENFORCED'
4464             ,p_msg_attribute    => 'CHANGE'
4465             ,p_resize_flag      => 'Y'
4466             ,p_msg_context      => 'GENERAL'
4467             ,p_attribute1       => ''
4468             ,p_attribute2       => ''
4469             ,p_attribute3       => ''
4470             ,p_attribute4       => ''
4471             ,p_attribute5       => '');
4472          x_return_status := FND_API.G_RET_STS_ERROR;
4473          RAISE FND_API.G_EXC_ERROR;
4474        END IF;
4475 
4476     IF FND_API.TO_BOOLEAN( p_init_msg_list )
4477     THEN
4478 
4479   FND_MSG_PUB.initialize;
4480 
4481     END IF;
4482 
4483 
4484 --dbms_output.put_line('Update Task Asgmts.: Function Security checked.');
4485 
4486 --  Set API return status to success
4487 
4488     x_return_status := FND_API.G_RET_STS_SUCCESS;
4489 
4490 
4491       -- Now verify whether project security allows the user to update
4492       -- the project
4493       -- The user does not have query privileges on this project
4494       -- Hence, cannot update the project.Raise error
4495           -- If the user has query privileges, then check whether
4496       -- update privileges are also available
4497 
4498       IF pa_security.allow_query(x_project_id => l_project_id ) = 'N' OR
4499              pa_security.allow_update(x_project_id => l_project_id ) = 'N' THEN
4500 
4501             -- The user does not have update privileges on this project
4502             -- Hence , raise error
4503 
4504          pa_interface_utils_pub.map_new_amg_msg
4505            ( p_old_message_code => 'PA_PROJECT_SECURITY_ENFORCED'
4506             ,p_msg_attribute    => 'CHANGE'
4507             ,p_resize_flag      => 'Y'
4508             ,p_msg_context      => 'GENERAL'
4509             ,p_attribute1       => ''
4510             ,p_attribute2       => ''
4511             ,p_attribute3       => ''
4512             ,p_attribute4       => ''
4513             ,p_attribute5       => '');
4514           x_return_status := FND_API.G_RET_STS_ERROR;
4515          RAISE FND_API.G_EXC_ERROR;
4516      END IF;
4517 
4518 --dbms_output.put_line('Update Task Asgmts.: Project  Security checked for: ' || l_project_id);
4519 
4520 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4521          pa_debug.g_err_stage:='PA_PROJECT_SECURITY_ENFORCED function check successful.' || L_FuncProc;
4522      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4523 END IF;
4524 
4525          --dbms_output.put_line('Project Id:'  || l_project_id);
4526 
4527           IF  NVL(PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS( l_project_id ), 'N') = 'N' THEN
4528         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4529         THEN
4530                    --dbms_output.put_line('PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS IS N..');
4531             pa_interface_utils_pub.map_new_amg_msg
4532               ( p_old_message_code => 'PA_PS_WP_NOT_SEP_FN_AMG'
4533                   ,p_msg_attribute    => 'CHANGE'
4534                   ,p_resize_flag      => 'N'
4535                   ,p_msg_context      => 'GENERAL'
4536                   ,p_attribute1       => ''
4537                   ,p_attribute2       => ''
4538                   ,p_attribute3       => ''
4539                   ,p_attribute4       => ''
4540                   ,p_attribute5       => '');
4541         END IF;
4542         RAISE FND_API.G_EXC_ERROR;
4543       END IF;
4544 
4545    --dbms_output.put_line('PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS IS Fine..');
4546 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4547    pa_debug.g_err_stage:='PA_PROJ_TASK_STRUC_PUB.WP_STR_EXISTS function check successful.' || L_FuncProc;
4548    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4549 END IF;
4550 
4551                 IF  p_pa_structure_version_id IS NOT NULL AND
4552                     (p_pa_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
4553 
4554                  l_struct_elem_version_id := p_pa_structure_version_id;
4555 
4556             ELSE
4557                      --dbms_output.put_line('Getting current structure version'  );
4558                      l_struct_elem_version_id := PA_PROJECT_STRUCTURE_UTILS.get_current_working_ver_id(
4559                                                      p_project_id => l_project_id);
4560 
4561 
4562             END IF;
4563 
4564                     --dbms_output.put_line(' structure version: ' || l_struct_elem_version_id );
4565                         --Project Structures Integration
4566 
4567         IF ( l_struct_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
4568             l_struct_elem_version_id IS NULL  )
4569        THEN
4570             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4571             THEN
4572                pa_interface_utils_pub.map_new_amg_msg
4573                     ( p_old_message_code => 'PA_PS_STRUC_VER_REQ'
4574                      ,p_msg_attribute    => 'CHANGE'
4575                      ,p_resize_flag      => 'N'
4576                      ,p_msg_context      => 'GENERAL'
4577                      ,p_attribute1       => ''
4578                      ,p_attribute2       => ''
4579                      ,p_attribute3       => ''
4580                      ,p_attribute4       => ''
4581                      ,p_attribute5       => '');
4582             END IF;
4583             RAISE FND_API.G_EXC_ERROR;
4584        END IF;
4585 
4586 
4587 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4588        pa_debug.g_err_stage:='Update Task Asgmts.: Structure element version for locking.: '|| l_struct_elem_version_id  ;
4589        pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4590 END IF;
4591 
4592        -- DHI ER: allowing multiple user to update task assignment
4593        --         Removed logic to lock version.
4594        -- pa_task_assignments_pvt.lock_version(l_project_id, l_struct_elem_version_id);
4595 
4596        -- Bug 3940853: Raise locking error return from structure API
4597        IF FND_MSG_PUB.count_msg > 0 THEN
4598          x_return_status := FND_API.G_RET_STS_ERROR;
4599          RAISE FND_API.G_EXC_ERROR;
4600        END IF;
4601 
4602 
4603 
4604 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4605        pa_debug.g_err_stage:='Lock version done';
4606        pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4607 END IF;
4608 
4609           IF 'N' = pa_task_assignment_utils.check_edit_task_ok( P_PROJECT_ID           => l_project_id,
4610                                                                 P_STRUCTURE_VERSION_ID    => l_struct_elem_version_id,
4611                                                                                                                         P_CURR_STRUCT_VERSION_ID  => l_struct_elem_version_id) THEN
4612                         -- Bug 4533152
4613                         --PA_UTILS.ADD_MESSAGE
4614                         --       (p_app_short_name => 'PA',
4615                         --        p_msg_name       => 'PA_UPDATE_PUB_VER_ERR'
4616                         --        );
4617                         x_return_status := FND_API.G_RET_STS_ERROR;
4618             RAISE FND_API.G_EXC_ERROR;
4619        END IF;
4620 
4621 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4622 pa_debug.g_err_stage:='Check edit task done';
4623   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4624 END IF;
4625             OPEN C_Get_Budget_Version_Id(l_struct_elem_version_id);
4626                 FETCH C_Get_Budget_Version_Id INTO l_budget_version_id;
4627                 CLOSE C_Get_Budget_Version_Id;
4628 
4629           IF ( l_budget_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
4630             l_budget_version_id IS NULL  ) THEN
4631             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4632             THEN
4633                         PA_UTILS.ADD_MESSAGE
4634                                (p_app_short_name => 'PA',
4635                                 p_msg_name       => 'PA_FP_PROJ_VERSION_MISMATCH'
4636                                 );
4637             END IF;
4638                         x_return_status    := FND_API.G_RET_STS_ERROR;
4639             RAISE FND_API.G_EXC_ERROR;
4640 
4641        END IF;
4642 
4643 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4644         pa_debug.g_err_stage:=' budget version id: ' || l_budget_version_id ;
4645         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4646 END IF;
4647 
4648         l_count := p_task_assignments_in.COUNT;
4649 
4650 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4651         pa_debug.g_err_stage:='Count of input table Checked: for count of : '|| l_count ;
4652         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4653 END IF;
4654 
4655 
4656 
4657       --dbms_output.put_line('Prior to starting Loop to load internal tables..');
4658 
4659  -- Bug 3721630: s) Moved logic to populate l_ta_del_tmp_tbl from c_ta_del
4660  --   cursor to outside the main loop (loop thru p_task_assignments_in)
4661  IF p_task_assignments_in IS NOT NULL AND
4662     p_task_assignments_in.COUNT > 0 AND
4663     p_task_assignments_in(1).p_context = 'F' THEN
4664 
4665     l_ta_del_tmp_tbl := l_ta_del_empty_tbl;
4666     int_del_tmp_index  := 0;
4667 
4668     OPEN c_ta_del(l_struct_elem_version_id, l_project_id);
4669       LOOP
4670       FETCH c_ta_del INTO c_ta_del_rec;
4671       EXIT WHEN c_ta_del%NOTFOUND;
4672           int_del_tmp_index := int_del_tmp_index + 1;
4673           l_ta_del_tmp_tbl(int_del_tmp_index).pa_task_assignment_id := c_ta_del_rec.resource_assignment_id;
4674           l_ta_del_tmp_tbl(int_del_tmp_index).pa_task_elem_version_id := c_ta_del_rec.wbs_element_version_id;
4675           l_ta_del_tmp_tbl(int_del_tmp_index).del_ta_flag := 'Y';
4676       END LOOP;
4677     CLOSE c_ta_del;
4678 
4679  END IF;   --IF p_task_assignments_in(i).p_context = 'F' and
4680  -- End of Bug 3721630 2)
4681 
4682 
4683         -- Check if the resource list is None for the workplan
4684         l_resource_list_id := PA_TASK_ASSIGNMENT_UTILS.Get_WP_Resource_List_Id(l_project_id);
4685 
4686         none_resource_list_flag := 'N';
4687 
4688         OPEN C_Check_Res_List_None(l_resource_list_id);
4689         FETCH C_Check_Res_List_None INTO none_resource_list_flag;
4690         CLOSE C_Check_Res_List_None;
4691 
4692         IF none_resource_list_flag = 'Y' THEN
4693                PA_UTILS.ADD_MESSAGE
4694                (p_app_short_name => 'PA',
4695                 p_msg_name       => 'PA_RES_LIST_NONE_ERR'
4696                );
4697                x_return_status := FND_API.G_RET_STS_ERROR;
4698                RAISE FND_API.G_EXC_ERROR;
4699         END IF;
4700 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4701     pa_debug.g_err_stage:='l_count'|| l_count;
4702     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4703 END IF;
4704 
4705 --Added by rbanerje-bug#8646853
4706  IF l_budget_version_id IS NOT NULL THEN
4707      OPEN C_Time_Phased_Code(l_budget_version_id);
4708      FETCH C_Time_Phased_Code INTO c_time_phased_code_rec;
4709      l_time_phased_code := c_time_phased_code_rec.time_phased_code ;
4710      CLOSE C_Time_Phased_Code;
4711  END IF;
4712  --bug#8646853-Addition end
4713 
4714   FOR i in 1..l_count LOOP
4715 
4716 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4717     pa_debug.g_err_stage:='Start of Loading internal Update/Add/Delete Tables i index is:' || i;
4718     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4719 END IF;
4720 
4721 
4722         IF p_task_assignments_in.exists(i) THEN
4723 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4724            pa_debug.g_err_stage:='Exists :' || i;
4725            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4726 END IF;
4727                    NULL;
4728         END IF;
4729         IF p_task_assignments_in.exists(l_count) THEN
4730                NUll;
4731            --dbms_output.put_line('Exists :' || l_count);
4732        else
4733                null;
4734            --dbms_output.put_line('Not Exists :' || l_count);
4735     END IF;
4736 
4737 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4738     pa_debug.g_err_stage:='task_id' || i|| ':' || p_task_assignments_in(i).pa_task_id;
4739     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4740     pa_debug.g_err_stage:='task_ref' || i || ':' || p_task_assignments_in(i).pm_task_reference;
4741     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4742     pa_debug.g_err_stage:='task_id' || l_count|| ':' || p_task_assignments_in(l_count).pa_task_id;
4743     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4744         pa_debug.g_err_stage:='task_ref' || l_count|| ':' || p_task_assignments_in(l_count).pm_task_reference;
4745         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4746 
4747         pa_debug.g_err_stage:='task_asgmt_id' || i|| ':' || p_task_assignments_in(i).pa_task_assignment_id;
4748         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4749         pa_debug.g_err_stage:='task_asgmt_ref' || i || ':' || p_task_assignments_in(i).pm_task_asgmt_reference;
4750         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4751     pa_debug.g_err_stage:='task_asgmt_id' || l_count|| ':' || p_task_assignments_in(l_count).pa_task_assignment_id;
4752     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4753         pa_debug.g_err_stage:='task_asgmt_ref' || l_count|| ':' || p_task_assignments_in(l_count).pm_task_asgmt_reference;
4754         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4755 END IF;
4756 
4757         l_d_task_id := NULL;
4758         l_task_elem_version_id := NULL;
4759 
4760         C_Res_Asgmt_Data_Rec := NULL;
4761 
4762         IF p_task_assignments_in(i).pa_task_assignment_id is not NULL AND
4763            p_task_assignments_in(i).pa_task_assignment_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4764 
4765           OPEN C_Res_Asgmt_Data(p_task_assignments_in(i).pa_task_assignment_id);
4766           FETCH C_Res_Asgmt_Data into C_Res_Asgmt_Data_Rec;
4767           CLOSE C_Res_Asgmt_Data;
4768           l_d_task_id := C_Res_Asgmt_Data_Rec.task_id;
4769           l_task_elem_version_id := C_Res_Asgmt_Data_Rec.wbs_element_version_id;
4770 
4771         END IF;
4772 
4773 
4774         IF l_task_elem_version_id IS NULL AND p_task_assignments_in.exists(i) AND p_task_assignments_in(i).pa_task_element_version_id IS NOT NULL AND
4775            p_task_assignments_in(i).pa_task_element_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4776 
4777              OPEN C_task_version(p_task_assignments_in(i).pa_task_element_version_id);
4778                  FETCH C_task_version INTO l_task_elem_version_id, l_d_task_id;
4779                  CLOSE C_task_version;
4780 
4781 
4782         ELSIF l_task_elem_version_id IS NULL AND p_task_assignments_in.exists(i) AND
4783            p_task_assignments_in(i).pa_task_id IS NOT NULL AND
4784            p_task_assignments_in(i).pa_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4785 
4786           l_d_task_id := p_task_assignments_in(i).pa_task_id;
4787 
4788 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4789           pa_debug.g_err_stage:='l_d_task_id valid input:'|| l_d_task_id;
4790           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4791 
4792           pa_debug.g_err_stage:='task_id ' || l_d_task_id;
4793       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4794 
4795           pa_debug.g_err_stage:='l_d_task_id'|| l_d_task_id;
4796           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4797 END IF;
4798 
4799           IF ( l_d_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
4800                  l_d_task_id IS NULL  )
4801             THEN
4802                  IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4803                  THEN
4804                           PA_UTILS.ADD_MESSAGE
4805                                     (p_app_short_name => 'PA',
4806                                      p_msg_name       => 'PA_TASK_REQUIRED'
4807                                      );
4808                  END IF;
4809 
4810                  RAISE FND_API.G_EXC_ERROR;
4811             END IF;
4812 
4813 
4814 
4815           l_task_elem_version_id := PA_PROJ_ELEMENTS_UTILS.GET_TASK_VERSION_ID(p_structure_version_id => l_struct_elem_version_id
4816                                           ,p_task_id => l_d_task_id);
4817 
4818 
4819         ELSIF l_task_elem_version_id IS NULL AND p_task_assignments_in.exists(i) AND
4820               p_task_assignments_in(i).pm_task_reference IS NOT NULL AND
4821               p_task_assignments_in(i).pm_task_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
4822 
4823 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4824          pa_debug.g_err_stage:='l_d_task_reference'|| p_task_assignments_in(i).pm_task_reference;
4825          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4826 END IF;
4827 
4828 
4829 
4830            PA_PROJECT_PVT.CONVERT_PM_TASKREF_TO_ID_all(p_pa_project_id => l_project_id
4831                                               ,p_pm_task_reference => p_task_assignments_in(i).pm_task_reference
4832                                               ,p_structure_type => 'WORKPLAN'
4833                                               ,p_out_task_id => l_d_task_id
4834                                               ,p_return_status => l_return_status);
4835 
4836 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4837                         pa_debug.g_err_stage:='l_d_task_id'|| l_d_task_id;
4838                         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4839 END IF;
4840 
4841            IF ( l_d_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
4842                 l_d_task_id IS NULL  )
4843            THEN
4844                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4845                 THEN
4846                           PA_UTILS.ADD_MESSAGE
4847                                    (p_app_short_name => 'PA',
4848                                     p_msg_name       => 'PA_TASK_REQUIRED'
4849                                     );
4850                 END IF;
4851 
4852                 RAISE FND_API.G_EXC_ERROR;
4853             END IF;
4854 
4855 
4856 
4857                         l_task_elem_version_id := PA_PROJ_ELEMENTS_UTILS.GET_TASK_VERSION_ID(p_structure_version_id => l_struct_elem_version_id
4858                                           ,p_task_id => l_d_task_id);
4859 
4860         END IF;
4861 
4862      IF l_task_elem_version_id is not NULL AND
4863           l_task_elem_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4864 
4865                    l_task_elem_version_id_tbl.extend(1);
4866 
4867            l_task_elem_version_id_tbl(i):= l_task_elem_version_id;
4868 
4869            ELSE
4870             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4871             THEN
4872                 PA_UTILS.ADD_MESSAGE
4873                                (p_app_short_name => 'PA',
4874                                 p_msg_name       => 'PA_TASK_VERSION_REQUIRED'
4875                                 );
4876 
4877             RAISE FND_API.G_EXC_ERROR;
4878             END IF;
4879        END IF;
4880 
4881 
4882 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4883   pa_debug.g_err_stage:='l_task_elem_version_id' || l_task_elem_version_id;
4884   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4885 END IF;
4886 
4887 -- Added below for Bug 8842724
4888 l_task_assignments_in(i).pm_task_asgmt_reference := p_task_assignments_in(i).pm_task_asgmt_reference;
4889 
4890       lp_resource_assignment_id_tbl.extend(1);
4891   IF p_task_assignments_in(i).pa_task_assignment_id is NOT null AND
4892      p_task_assignments_in(i).pa_task_assignment_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  THEN
4893 
4894 
4895 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4896                  pa_debug.g_err_stage:='Accepting Task Assignment Id given:' || p_task_assignments_in(i).pa_task_assignment_id ;
4897                  pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4898 END IF;
4899              lp_resource_assignment_id_tbl(i) := p_task_assignments_in(i).pa_task_assignment_id;
4900 
4901   ELSIF p_task_assignments_in(i).pm_task_asgmt_reference is not null AND
4902         p_task_assignments_in(i).pm_task_asgmt_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
4903 
4904 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4905       pa_debug.g_err_stage:='Converting Task Asgmt Reference:' || p_task_assignments_in(i).pm_task_asgmt_reference ;
4906       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4907       pa_debug.g_err_stage:='p_pa_task_elem_ver_id     => ' || l_task_elem_version_id_tbl(i)  ;
4908       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4909       pa_debug.g_err_stage:='p_pm_task_asgmt_reference => ' || p_task_assignments_in(i).pm_task_asgmt_reference ;
4910       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4911       pa_debug.g_err_stage:='p_pa_task_assignment_id   => ' || p_task_assignments_in(i).pa_task_assignment_id;
4912       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4913       pa_debug.g_err_stage:='p_resource_alias          => ' || p_task_assignments_in(i).resource_alias;
4914       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4915       pa_debug.g_err_stage:='p_resource_list_member_id => ' || p_task_assignments_in(i).resource_list_member_id ;
4916       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4917 
4918           pa_debug.g_err_stage:='x_return_status  B4 convert taref to Id => ' || x_return_status;
4919           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4920 END IF;
4921 				IF  l_cbs_enabled_project = 'N' THEN
4922                   Convert_PM_TARef_To_ID( p_pm_product_code         => p_pm_product_code
4923                                                                                                          ,p_pa_project_id           => l_project_id
4924                                                                                                          ,p_pa_structure_version_id => l_struct_elem_version_id
4925                                                                                                          ,p_pa_task_id              => l_d_task_id
4926                                                                                                          ,p_pa_task_elem_ver_id     => l_task_elem_version_id_tbl(i)
4927                                                                                                          ,p_pm_task_asgmt_reference =>  p_task_assignments_in(i).pm_task_asgmt_reference
4928                                                                                                          ,p_pa_task_assignment_id   =>  p_task_assignments_in(i).pa_task_assignment_id
4929                                                                                                          ,p_resource_alias          =>  p_task_assignments_in(i).resource_alias
4930                                                                                                          ,p_resource_list_member_id =>  p_task_assignments_in(i).resource_list_member_id
4931                                                                                                          ,p_add_error_msg_flag      =>  'N'  --Bug 3937017
4932                                                                                                          ,x_pa_task_assignment_id   =>  lp_resource_assignment_id_tbl(i)
4933                                                                                                          ,x_return_status                   =>  x_return_status
4934                                                                                                          );
4935 
4936 				ELSE
4937 		 Convert_PM_TARef_To_ID( p_pm_product_code         => p_pm_product_code
4938                                                                                                          ,p_pa_project_id           => l_project_id
4939                                                                                                          ,p_pa_structure_version_id => l_struct_elem_version_id
4940                                                                                                          ,p_pa_task_id              => l_d_task_id
4941                                                                                                          ,p_pa_task_elem_ver_id     => l_task_elem_version_id_tbl(i)
4942                                                                                                          ,p_pm_task_asgmt_reference =>  p_task_assignments_in(i).pm_task_asgmt_reference
4943                                                                                                          ,p_pa_task_assignment_id   =>  p_task_assignments_in(i).pa_task_assignment_id
4944                                                                                                          ,p_resource_alias          =>  p_task_assignments_in(i).resource_alias
4945                                                                                                          ,p_resource_list_member_id =>  p_task_assignments_in(i).resource_list_member_id
4946 																										 ,p_cbs_element_id =>  p_task_assignments_in(i).cbs_element_id
4947                                                                                                          ,p_add_error_msg_flag      =>  'N'  --Bug 3937017
4948                                                                                                          ,x_pa_task_assignment_id   =>  lp_resource_assignment_id_tbl(i)
4949                                                                                                          ,x_return_status                   =>  x_return_status
4950                                                                                                          );
4951 				END IF;
4952     -- Added below for Bug 8842724
4953     -- Making the task assignment id as null because for creation the task_assignment_id
4954     -- is always null. For update the task_assignment_id always exist.
4955     IF lp_resource_assignment_id_tbl(i) IS NOT NULL OR
4956        lp_resource_assignment_id_tbl(i) <> FND_API.G_MISS_NUM THEN
4957        l_task_assignments_in(i).pm_task_asgmt_reference := p_task_assignments_in(i).pm_task_asgmt_reference || to_char(sysdate,':DDMMYYHH24MISS') ;
4958        lp_resource_assignment_id_tbl(i) := null;
4959     END IF;
4960     -- End of Bug 8842724
4961 
4962 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
4963           pa_debug.g_err_stage:='x_return_status  after convert taref to Id => ' || x_return_status;
4964           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4965           pa_debug.g_err_stage:='x_pa_task_assignment_id   => ' || lp_resource_assignment_id_tbl(i);
4966           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
4967 END IF;
4968 
4969    END IF;
4970 
4971  IF p_task_assignments_in(i).p_context <> 'D' THEN  --Validations of Not Delete Context..(Update or Add)
4972 
4973    IF p_task_assignments_in(i).resource_list_member_id IS NOT NULL AND
4974           p_task_assignments_in(i).resource_list_member_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4975 
4976       C_Res_List_Mem_Check_Rec := NULL;
4977 
4978        OPEN C_Res_List_Mem_Check(p_task_assignments_in(i).resource_list_member_id);
4979        Fetch C_Res_List_Mem_Check into C_Res_List_Mem_Check_Rec;
4980        Close C_Res_List_Mem_Check;
4981 
4982 
4983        PA_PLANNING_RESOURCE_UTILS.check_list_member_on_list(
4984                     p_resource_list_id          => l_resource_list_id,
4985                     p_resource_list_member_id   => p_task_assignments_in(i).resource_list_member_id,
4986                     p_project_id                => l_project_id,
4987                     p_chk_enabled               => 'Y',
4988                                         x_resource_list_member_id   => l_rlm_id,
4989                     x_valid_member_flag         => l_valid_member_flag,
4990                     x_return_status             => x_return_status,
4991                     x_msg_count                 => x_msg_count,
4992                     x_msg_data                  => x_msg_data ) ;
4993 
4994        IF l_valid_member_flag = 'N' THEN
4995                x_return_status := FND_API.G_RET_STS_ERROR;
4996                RAISE FND_API.G_EXC_ERROR;
4997        END IF;
4998 
4999   ELSIF p_task_assignments_in(i).pa_task_assignment_id IS NULL AND
5000           p_task_assignments_in(i).p_context <> 'D' AND
5001       (p_task_assignments_in(i).resource_list_member_id IS  NULL OR
5002           p_task_assignments_in(i).resource_list_member_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
5003             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5004             THEN
5005               IF p_pm_product_code = 'MSPROJECT'
5006               THEN
5007                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5008                                      ,p_msg_name       => 'PA_INVALID_RES_LIST_MEM_ID_MSP'
5009                                      ,p_token1 => 'PLANNING_RESOURCE_NAME'  -- Bug 6497559
5010                                      ,p_value1 => PA_TASK_UTILS.get_resource_name(p_task_assignments_in(i).resource_list_member_id)
5011                                     );
5012                 x_return_status := FND_API.G_RET_STS_ERROR;
5013                 RAISE FND_API.G_EXC_ERROR;
5014               ELSE
5015                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5016                                      ,p_msg_name       => 'PA_INVALID_RES_LIST_MEM_ID_AMG'
5017                                      ,p_token1 => 'PLANNING_RESOURCE_ID'  -- Bug 6497559
5018                                      ,p_value1 => p_task_assignments_in(i).resource_list_member_id
5019                                     );
5020                 x_return_status := FND_API.G_RET_STS_ERROR;
5021                 RAISE FND_API.G_EXC_ERROR;
5022               END IF;
5023              END IF;
5024         END IF;
5025 
5026 			-- ADD CBS VALIDATIONS HERE 16598322
5027 				IF l_cbs_enabled_project = 'Y' AND p_task_assignments_in(i).p_context <> 'D' THEN
5028 					IF p_task_assignments_in(i).cbs_element_id IS NOT NULL AND
5029                    p_task_assignments_in(i).cbs_element_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
5030 
5031 							PA_ALTERNATE_TASK_PVT.Is_Cost_Element_Valid(
5032 								p_Cbs_Element_Id		 	=>p_task_assignments_in(i).cbs_element_id,
5033 								p_Task_Id 					=>l_d_task_id,
5034 								p_Project_Id				=>l_project_id,
5035 							    x_return_status             => x_return_status,
5036 								x_msg_count                 => x_msg_count,
5037 								x_msg_data                  => x_msg_data
5038 							);
5039 
5040 					IF x_return_status <> 'S' THEN
5041 												    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5042                                                      ,p_msg_name       =>  x_msg_data
5043                                                     );
5044                                 x_return_status := FND_API.G_RET_STS_ERROR;
5045                                 RAISE FND_API.G_EXC_ERROR;
5046 					END IF;
5047 
5048 				   ELSE
5049 						    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5050                                                      ,p_msg_name       => 'PA_CBS_WP__COST_CODE_MNDTR'
5051                                                      ,p_token1 => 'RES_NAME'
5052                                                      ,p_value1 => PA_TASK_UTILS.get_resource_name(p_task_assignments_in(i).resource_list_member_id)
5053                                                     );
5054                                 x_return_status := FND_API.G_RET_STS_ERROR;
5055                                 RAISE FND_API.G_EXC_ERROR;
5056 
5057 				   END IF;
5058 
5059 				END IF;
5060 
5061 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5062        pa_debug.g_err_stage:='Res List Mem Id check passed:';
5063        pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5064 END IF;
5065 
5066         IF p_task_assignments_in(i).start_date IS NOT NULL and
5067            p_task_assignments_in(i).start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE and
5068            p_task_assignments_in(i).end_date IS NOT NULL and
5069            p_task_assignments_in(i).end_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE and
5070        p_task_assignments_in(i).start_date > p_task_assignments_in(i).end_date THEN
5071 
5072                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5073                   IF p_pm_product_code = 'MSPROJECT'
5074                   THEN
5075                     PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5076                                          ,p_msg_name       => 'PA_INVALID_DATES_MSP'
5077                                          ,p_token1 => 'TASK_NAME'  -- Bug 6497559
5078                                          ,p_value1 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
5079                                          ,p_token2 => 'TASK_NUMBER'
5080                                          ,p_value2 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
5081                                         );
5082                     x_return_status := FND_API.G_RET_STS_ERROR;
5083                     RAISE FND_API.G_EXC_ERROR;
5084                   ELSE
5085                     PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5086                                          ,p_msg_name       => 'PA_INVALID_DATES_AMG'
5087                                          ,p_token1 => 'TASK_ID'  -- Bug 6497559
5088                                          ,p_value1 => p_task_assignments_in(i).pa_task_id
5089                                         );
5090                     x_return_status := FND_API.G_RET_STS_ERROR;
5091                     RAISE FND_API.G_EXC_ERROR;
5092                   END IF;
5093              END IF;
5094 
5095         END IF;
5096 
5097         -- Made the pm_task_asgmt_reference to refer to l_task_assignments_in plsql table.
5098         -- For Bug 8842724
5099         IF p_task_assignments_in(i).pa_task_assignment_id IS NULL and
5100                    (l_task_assignments_in(i).pm_task_asgmt_reference IS NULL OR
5101                l_task_assignments_in(i).pm_task_asgmt_reference =  PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR)   THEN
5102                     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5103                THEN
5104                           PA_UTILS.ADD_MESSAGE
5105                                   (p_app_short_name => 'PA',
5106                                    p_msg_name       => 'PA_PM_TASK_ASGMT_REF_REQ'
5107                                    );
5108                END IF;
5109                         x_return_status    := FND_API.G_RET_STS_ERROR;
5110                RAISE FND_API.G_EXC_ERROR;
5111 
5112         END IF;
5113 
5114 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5115         pa_debug.g_err_stage:='pm_task_asgmt_reference check passed.';
5116         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5117 END IF;
5118 
5119           IF p_task_assignments_in(i).use_task_schedule_flag IS NOT NULL AND
5120            p_task_assignments_in(i).use_task_schedule_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR AND
5121            p_task_assignments_in(i).use_task_schedule_flag  not in ('Y', 'N') THEN
5122                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5123             THEN
5124                pa_interface_utils_pub.map_new_amg_msg
5125                     ( p_old_message_code => 'PA_TASK_SCHED_FLAG_INVALID'  -->>>>
5126                      ,p_msg_attribute    => 'CHANGE'
5127                      ,p_resize_flag      => 'N'
5128                      ,p_msg_context      => 'GENERAL'
5129                      ,p_attribute1       => ''
5130                      ,p_attribute2       => ''
5131                      ,p_attribute3       => ''
5132                      ,p_attribute4       => ''
5133                      ,p_attribute5       => '');
5134             END IF;
5135             RAISE FND_API.G_EXC_ERROR;
5136             x_return_status    := FND_API.G_RET_STS_SUCCESS;
5137 
5138         END IF;
5139 
5140 
5141 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5142         pa_debug.g_err_stage:='use_task_schedule_flag  check passed.';
5143         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5144 END IF;
5145 
5146         -- 4108372: Should default currency code to default value instead of NULL
5147         l_currency_code := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
5148 
5149    IF p_task_assignments_in(i).currency_code IS NOT NULL AND
5150          p_task_assignments_in(i).currency_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
5151 
5152            OPEN C_currency_exists(p_task_assignments_in(i).currency_code, l_project_id );
5153            FETCH C_currency_exists INTO C_currency_exists_rec;
5154 
5155            IF C_currency_exists%FOUND THEN
5156               l_currency_code := p_task_assignments_in(i).currency_code ;
5157            ELSIF C_currency_exists%NOTFOUND THEN
5158               IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5159             THEN
5160                pa_interface_utils_pub.map_new_amg_msg
5161                     ( p_old_message_code => 'PA_INVALID_CURRENCY'  -->>>>
5162                      ,p_msg_attribute    => 'CHANGE'
5163                      ,p_resize_flag      => 'N'
5164                      ,p_msg_context      => 'GENERAL'
5165                      ,p_attribute1       => ''
5166                      ,p_attribute2       => ''
5167                      ,p_attribute3       => ''
5168                      ,p_attribute4       => ''
5169                      ,p_attribute5       => '');
5170             END IF;
5171             CLOSE C_currency_exists; --Bug 3937017
5172             RAISE FND_API.G_EXC_ERROR;
5173            END IF;
5174            CLOSE C_currency_exists;
5175 
5176     END IF;
5177 
5178 
5179 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5180         pa_debug.g_err_stage:='Currency Check passed.';
5181         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5182 END IF;
5183 
5184  END IF; -- IF p_task_assignments_in(i).p_context <> 'D' THEN  --Validations of Not Delete Context..
5185 
5186 
5187 
5188  IF lp_resource_assignment_id_tbl(i) IS NOT NULL  AND                  --Delete Content
5189      lp_resource_assignment_id_tbl(i) <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  AND
5190          p_task_assignments_in(i).p_context = 'D' THEN
5191 
5192           OPEN C_Res_Asgmt_Data(lp_resource_assignment_id_tbl(i));
5193           FETCH C_Res_Asgmt_Data into C_Res_Asgmt_Data_Rec;
5194           CLOSE C_Res_Asgmt_Data;
5195 
5196 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5197            pa_debug.g_err_stage:='Entering Delete loading internal tables in Update api. Process';
5198            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5199 END IF;
5200          ld_task_elem_version_id_tbl.extend(1);
5201      ld_resource_assignment_id_tbl.extend(1);
5202 
5203          del_index := del_index + 1;
5204 
5205          ld_task_elem_version_id_tbl(del_index)   := l_task_elem_version_id_tbl(i);
5206      ld_resource_assignment_id_tbl(del_index) :=  lp_resource_assignment_id_tbl(i);
5207 
5208 
5209  ELSIF lp_resource_assignment_id_tbl(i) IS NOT NULL  AND                 --Update Content
5210      lp_resource_assignment_id_tbl(i) <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  AND
5211          p_task_assignments_in(i).p_context <> 'D' THEN
5212 
5213          OPEN C_Res_Asgmt_Data(lp_resource_assignment_id_tbl(i));
5214           FETCH C_Res_Asgmt_Data into C_Res_Asgmt_Data_Rec;
5215          CLOSE C_Res_Asgmt_Data;
5216 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5217           pa_debug.g_err_stage:='Entering Update loading internal tables in Update api. Process';
5218           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5219 END IF;
5220 
5221   IF p_task_assignments_in(i).p_context = 'F' THEN
5222 
5223         FOR m in 1..l_ta_del_tmp_tbl.COUNT LOOP
5224 
5225            IF lp_resource_assignment_id_tbl(i) = l_ta_del_tmp_tbl(m).pa_task_assignment_id THEN
5226 
5227               l_ta_del_tmp_tbl(m).del_ta_flag := 'N';
5228 
5229            END IF;
5230 
5231         END LOOP;
5232 
5233    END IF;
5234 
5235 
5236         IF p_task_assignments_in(i).billable_work_percent IS NOT NULL AND
5237            p_task_assignments_in(i).billable_work_percent <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
5238           ( p_task_assignments_in(i).billable_work_percent < 0 OR
5239            p_task_assignments_in(i).billable_work_percent > 100) THEN
5240                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5241                THEN
5242                  IF p_pm_product_code = 'MSPROJECT'
5243                  THEN
5244                    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5245                                         ,p_msg_name       => 'PA_WEIGHTING_NOT_POSITIVE_MSP'
5246                                         ,p_token1 => 'TASK_NAME'  -- Bug 6497559
5247                                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
5248                                         ,p_token2 => 'TASK_NUMBER'
5249                                         ,p_value2 => PA_TASK_UTILS.get_task_name(p_task_assignments_in(i).pa_task_id)
5250                                        );
5251 
5252                    x_return_status := FND_API.G_RET_STS_ERROR;
5253                    RAISE FND_API.G_EXC_ERROR;
5254                  ELSE
5255                    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
5256                                         ,p_msg_name       => 'PA_WEIGHTING_NOT_POSITIVE_AMG'
5257                                         ,p_token1 => 'TASK_ID'  -- Bug 6497559
5258                                         ,p_value1 =>p_task_assignments_in(i).pa_task_id
5259                                        );
5260 
5261                    x_return_status := FND_API.G_RET_STS_ERROR;
5262                    RAISE FND_API.G_EXC_ERROR;
5263                  END If;
5264           END IF;
5265 
5266         END IF;
5267 
5268 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5269                 pa_debug.g_err_stage:='Billable Work Percent check passed.';
5270                 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5271 END IF;
5272 
5273         l_Cost_Type_exists := NULL;
5274         l_cost_type_id := NULL;
5275 
5276         IF p_task_assignments_in(i).mfg_cost_type_id IS NOT NULL AND
5277            p_task_assignments_in(i).mfg_cost_type_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
5278 
5279            OPEN C_Cost_Type_Exists(p_task_assignments_in(i).mfg_cost_type_id );
5280            FETCH C_Cost_Type_Exists INTO C_Cost_Type_Exists_rec;
5281 
5282            IF C_Cost_Type_Exists%FOUND THEN
5283               l_Cost_Type_id := p_task_assignments_in(i).mfg_cost_type_id ;
5284            ELSIF C_Cost_Type_Exists%NOTFOUND THEN
5285               l_Cost_Type_exists := 'N';
5286             END IF;
5287            CLOSE C_Cost_Type_Exists;
5288 
5289          ELSIF p_task_assignments_in(i).mfg_cost_type IS NOT NULL AND
5290                p_task_assignments_in(i).mfg_cost_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
5291 
5292            OPEN C_Cost_Type(p_task_assignments_in(i).mfg_cost_type_id );
5293            FETCH C_Cost_Type INTO C_Cost_Type_rec;
5294 
5295            IF C_Cost_Type%FOUND THEN
5296               l_Cost_Type_id := p_task_assignments_in(i).mfg_cost_type_id ;
5297            ELSIF C_Cost_Type%NOTFOUND THEN
5298               l_Cost_Type_exists := 'N';
5299             END IF;
5300            CLOSE C_Cost_Type;
5301 
5302          ELSE
5303              l_Cost_Type_id := p_task_assignments_in(i).mfg_cost_type_id ;
5304          END IF;
5305 
5306    IF l_Cost_Type_exists is NOT NULL and l_Cost_Type_exists = 'N' THEN
5307           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5308             THEN
5309                pa_interface_utils_pub.map_new_amg_msg
5310                     ( p_old_message_code => 'PA_INVALID_COST_TYPE'  -->>>>
5311                      ,p_msg_attribute    => 'CHANGE'
5312                      ,p_resize_flag      => 'N'
5313                      ,p_msg_context      => 'GENERAL'
5314                      ,p_attribute1       => ''
5315                      ,p_attribute2       => ''
5316                      ,p_attribute3       => ''
5317                      ,p_attribute4       => ''
5318                      ,p_attribute5       => '');
5319             END IF;
5320             RAISE FND_API.G_EXC_ERROR;
5321    END IF;
5322 
5323 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5324    pa_debug.g_err_stage:='Cost Type check passed.';
5325    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5326 END IF;
5327        	--Added by rbanerje - Bug#8646853 -start
5328   l_spread_curve_exists := NULL;
5329   l_spread_curve_id := NULL;
5330   l_spread_curve_code := NULL;
5331   l_fixed_date := p_task_assignments_in(i).fixed_date;
5332 
5333   IF ( (l_time_phased_code IS NULL OR (l_time_phased_code <> 'P' AND l_time_phased_code<> 'G'))
5334          AND ((p_task_assignments_in(i).spread_curve_id IS NOT NULL AND p_task_assignments_in(i).spread_curve_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) OR
5335             (p_task_assignments_in(i).spread_curve_name IS NOT NULL AND p_task_assignments_in(i).spread_curve_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ))) THEN
5336         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5337                pa_interface_utils_pub.map_new_amg_msg
5338                     ( p_old_message_code => 'PA_DISABL_WP_NA' -->>>>
5339                      ,p_msg_attribute    => 'CHANGE'
5340                      ,p_resize_flag      => 'N'
5341                      ,p_msg_context      => 'GENERAL'
5342                      ,p_attribute1       => ''
5343                      ,p_attribute2       => ''
5344                      ,p_attribute3       => ''
5345                      ,p_attribute4       => ''
5346                      ,p_attribute5       => '');
5347         END IF;
5348         RAISE FND_API.G_EXC_ERROR;
5349     END IF;
5350 
5351   IF p_task_assignments_in(i).spread_curve_id IS NOT NULL AND
5352 p_task_assignments_in(i).spread_curve_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5353 THEN
5354            OPEN C_Spread_Curve_Exists(p_task_assignments_in(i).spread_curve_id
5355 );
5356            FETCH C_Spread_Curve_Exists INTO c_spread_curve_exists_rec;
5357            IF C_Spread_Curve_Exists%FOUND THEN
5358               l_spread_curve_id := p_task_assignments_in(i).spread_curve_id ;
5359            ELSE
5360               l_spread_curve_exists := 'N';
5361            END IF;
5362            CLOSE C_Spread_Curve_Exists;
5363 
5364   ELSIF p_task_assignments_in(i).spread_curve_name IS NOT NULL AND
5365 p_task_assignments_in(i). spread_curve_name <>
5366 PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
5367            OPEN C_Spread_Curve (p_task_assignments_in(i).spread_curve_name);
5368            FETCH C_Spread_Curve INTO c_spread_curve_rec;
5369            IF C_Spread_Curve %FOUND THEN
5370               l_spread_curve_id := c_spread_curve_rec.spread_curve_id;
5371            ELSE
5372               l_spread_curve_exists := 'N';
5373            END IF;
5374            CLOSE C_Spread_Curve;
5375 
5376   END IF;
5377 
5378   IF (l_spread_curve_exists is NOT NULL and l_spread_curve_exists = 'N') OR
5379 (p_task_assignments_in(i).spread_curve_id IS NULL) THEN
5380           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5381                pa_interface_utils_pub.map_new_amg_msg
5382                     ( p_old_message_code => 'PA_INVALID_SPREAD_CURVE' -->>>>
5383                      ,p_msg_attribute    => 'CHANGE'
5384                      ,p_resize_flag      => 'N'
5385                      ,p_msg_context      => 'GENERAL'
5386                      ,p_attribute1       => ''
5387                      ,p_attribute2       => ''
5388                      ,p_attribute3       => ''
5389                      ,p_attribute4       => ''
5390                      ,p_attribute5       => '');
5391             END IF;
5392             RAISE FND_API.G_EXC_ERROR;
5393    END IF;
5394 
5395     IF l_spread_curve_id is NOT NULL THEN
5396 	   OPEN C_Spread_Curve_Code(l_spread_curve_id);
5397            FETCH C_Spread_Curve_Code INTO c_spread_curve_code_rec;
5398            IF C_Spread_Curve_Code%FOUND THEN
5399               l_spread_curve_code := c_spread_curve_code_rec.spread_curve_code ;
5400            END IF;
5401            CLOSE C_Spread_Curve_Code;
5402    END IF;
5403 
5404    IF l_spread_curve_code is NOT NULL THEN
5405           IF l_spread_curve_code = 'FIXED_DATE' and (l_fixed_date is null or l_fixed_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) THEN
5406              IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5407               pa_interface_utils_pub.map_new_amg_msg
5408                     ( p_old_message_code => 'PA_FIXED_DATE_MISSING' -->>>>
5409                      ,p_msg_attribute    => 'CHANGE'
5410                      ,p_resize_flag      => 'N'
5411                      ,p_msg_context      => 'GENERAL'
5412                      ,p_attribute1       => ''
5413                      ,p_attribute2       => ''
5414                      ,p_attribute3       => ''
5415                      ,p_attribute4       => ''
5416                      ,p_attribute5       => '');
5417              END IF;
5418              RAISE FND_API.G_EXC_ERROR;
5419             END IF;
5420 
5421 
5422        IF l_spread_curve_code <> 'FIXED_DATE' and l_fixed_date <>
5423 PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE THEN
5424                pa_interface_utils_pub.map_new_amg_msg
5425                    ( p_old_message_code => 'PA_APPL_ONLY_FIXED_DATE' -->>>>
5426                     ,p_msg_attribute    => 'CHANGE'
5427                      ,p_resize_flag      => 'N'
5428                      ,p_msg_context      => 'GENERAL'
5429                      ,p_attribute1       => ''
5430                      ,p_attribute2       => ''
5431                      ,p_attribute3       => ''
5432                      ,p_attribute4       => ''
5433                      ,p_attribute5       => '');
5434         END IF;
5435 
5436          IF l_spread_curve_code <> 'FIXED_DATE' THEN
5437 	     l_fixed_date := null;
5438 	 END IF;
5439 
5440    END IF;
5441 
5442    -- Retain existing spread curve if spread curve is not specified
5443 	IF p_task_assignments_in(i).spread_curve_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND p_task_assignments_in(i). spread_curve_name = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
5444         -- Made the pm_task_asgmt_reference to refer to l_task_assignments_in plsql table.
5445         -- For Bug 8842724
5446 
5447 	       IF p_task_assignments_in(i).pa_task_assignment_id is NULL OR p_task_assignments_in(i).pa_task_assignment_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
5448 		  OPEN C_Res_Asgmt_Id(p_pa_project_id,l_task_assignments_in(i).pm_task_asgmt_reference,p_task_assignments_in(i).pa_task_element_version_id,p_task_assignments_in(i).resource_list_member_id);
5449 		  FETCH C_Res_Asgmt_Id INTO c_res_asgmt_id_rec;
5450 		  IF C_Res_Asgmt_Id%FOUND THEN
5451 		     l_task_assignment_id := c_res_asgmt_id_rec.resource_assignment_id;
5452 		  END IF;
5453 		  CLOSE C_Res_Asgmt_Id;
5454 		ELSE
5455 		   l_task_assignment_id := p_task_assignments_in(i).pa_task_assignment_id ;
5456 		END IF;
5457 
5458 		OPEN C_Spread_Curve_Id(l_task_assignment_id);
5459 		FETCH C_Spread_Curve_Id INTO c_spread_curve_id_rec ;
5460 		IF C_Spread_Curve_Id%FOUND THEN
5461 			l_spread_curve_id := c_spread_curve_id_rec.spread_curve_id;
5462 		END IF;
5463 		CLOSE C_Spread_Curve_Id ;
5464 	END IF;
5465 
5466 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5467     pa_debug.g_err_stage:='l_spread_curve_id ' || l_spread_curve_id;
5468     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5469 END IF;
5470 
5471 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5472     pa_debug.g_err_stage:='l_spread_curve_name ' ||
5473 p_task_assignments_in(i).spread_curve_name;
5474     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5475 END IF;
5476 
5477 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5478     pa_debug.g_err_stage:='fixed_date ' || l_fixed_date;
5479     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5480 END IF;
5481 
5482 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5483     pa_debug.g_err_stage:='l_time_phased_code ' || l_time_phased_code;
5484     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5485 END IF;
5486 
5487 --Bug#8646853 -Addition end
5488 
5489                  u_index := u_index + 1;
5490 
5491 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5492         pa_debug.g_err_stage:='u_index:' || u_index;
5493         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5494 END IF;
5495 
5496         lu_task_elem_version_id_tbl.extend(1);
5497         l_resource_assignment_id_tbl.extend(1);
5498         l_start_date_tbl.extend(1);
5499         l_end_date_tbl.extend(1);
5500         l_planning_start_date_tbl.extend(1);
5501         l_planning_end_date_tbl.extend(1);
5502         l_resource_list_member_id_tbl.extend(1) ;
5503 		l_cbs_element_id_tbl.extend(1) ;
5504         l_project_assignment_id_tbl.extend(1);
5505         l_quantity_tbl.extend(1);
5506         l_currency_code_tbl.extend(1);
5507         l_raw_cost_tbl.extend(1);
5508         l_burdened_cost_tbl.extend(1);
5509         l_attribute_category_tbl.extend(1);
5510         l_attribute1_tbl.extend(1);
5511         l_attribute2_tbl.extend(1);
5512         l_attribute3_tbl.extend(1);
5513         l_attribute4_tbl.extend(1);
5514         l_attribute5_tbl.extend(1);
5515         l_attribute6_tbl.extend(1);
5516         l_attribute7_tbl.extend(1);
5517         l_attribute8_tbl.extend(1);
5518         l_attribute9_tbl.extend(1);
5519         l_attribute10_tbl.extend(1);
5520         l_attribute11_tbl.extend(1);
5521         l_attribute12_tbl.extend(1);
5522         l_attribute13_tbl.extend(1);
5523         l_attribute14_tbl.extend(1);
5524         l_attribute15_tbl.extend(1);
5525         l_attribute16_tbl.extend(1);
5526         l_attribute17_tbl.extend(1);
5527         l_attribute18_tbl.extend(1);
5528         l_attribute19_tbl.extend(1);
5529         l_attribute20_tbl.extend(1);
5530         l_attribute21_tbl.extend(1);
5531         l_attribute22_tbl.extend(1);
5532         l_attribute23_tbl.extend(1);
5533         l_attribute24_tbl.extend(1);
5534         l_attribute25_tbl.extend(1);
5535         l_attribute26_tbl.extend(1);
5536         l_attribute27_tbl.extend(1);
5537         l_attribute28_tbl.extend(1);
5538         l_attribute29_tbl.extend(1);
5539         l_attribute30_tbl.extend(1);
5540         l_description_tbl.extend(1);
5541         l_use_task_schedule_flag_tbl.extend(1);
5542         l_raw_cost_rate_override_tbl.extend(1);
5543         l_burd_cost_rate_override_tbl.extend(1);
5544         l_billable_work_percent_tbl.extend(1);
5545         l_mfc_cost_type_id_tbl.extend(1);
5546         l_task_name_tbl.extend(1);
5547         l_task_number_tbl.extend(1);
5548         l_resource_class_code_tbl.extend(1);
5549     l_resource_alias_tbl.extend(1);
5550     l_res_type_code_tbl.extend(1);
5551     l_resource_code_tbl.extend(1);
5552     l_resource_name.extend(1);
5553     l_project_role_id_tbl.extend(1);
5554     l_project_role_name_tbl.extend(1);
5555     l_supplier_id_tbl.extend(1);
5556     l_supplier_name_tbl.extend(1);
5557     l_organization_id_tbl.extend(1);
5558     l_organization_name_tbl.extend(1);
5559     l_fc_res_type_code_tbl.extend(1);
5560     l_financial_category_name_tbl.extend(1);
5561     l_named_role_tbl.extend(1);
5562 
5563     l_incur_by_resource_code_tbl.extend(1);
5564     l_scheduled_delay_tbl.extend(1); --Bug 3948128
5565     l_spread_curve_id_tbl.extend(1); -- Bug#8646853
5566     l_fixed_date_tbl.extend(1);--Bug#8646853
5567 
5568 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5569     pa_debug.g_err_stage:='Update Tables index is:' || u_index;
5570     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5571 END IF;
5572 
5573     p_task_assignments_out(c_index+ u_index).pa_task_id  := l_d_task_id;
5574 
5575         p_task_assignments_out(c_index+ u_index).resource_list_member_id  := p_task_assignments_in(i).resource_list_member_id ;
5576 
5577 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5578         pa_debug.g_err_stage:='Setting global out variables for task and resource list member id';
5579         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5580 END IF;
5581 
5582         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).pa_task_id := l_d_task_id;
5583         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).resource_list_member_id := p_task_assignments_in(i).resource_list_member_id ;
5584 		PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).cbs_element_id := p_task_assignments_in(i).cbs_element_id ;
5585 
5586 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5587         pa_debug.g_err_stage:='Setting other main variables';
5588         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5589 END IF;
5590 
5591         l_start_date_tbl(u_index)                :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).start_date) ;
5592         l_end_date_tbl(u_index)                  :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).end_date) ;
5593 
5594         l_planning_start_date_tbl(u_index)       :=  pa_task_assignments_pvt.pfdate(C_Res_Asgmt_Data_Rec.planning_start_date) ;
5595         l_planning_end_date_tbl(u_index)         :=  pa_task_assignments_pvt.pfdate(C_Res_Asgmt_Data_Rec.planning_end_date) ;
5596 
5597         lu_task_elem_version_id_tbl(u_index)     :=  pa_task_assignments_pvt.pfnum(l_task_elem_version_id_tbl(i));
5598 
5599         l_resource_list_member_id_tbl(u_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).resource_list_member_id) ;
5600         l_resource_assignment_id_tbl(u_index)    :=  pa_task_assignments_pvt.pfnum(lp_resource_assignment_id_tbl(i));
5601 
5602 		l_cbs_element_id_tbl(u_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).cbs_element_id) ;
5603 
5604 	----Bug#9374037 Starts
5605 	-- l_project_assignment_id_tbl(u_index)     :=  -1 ;
5606 
5607 	l_temp_proj_ass_id :=0;
5608 	Open C_Proj_Ass_Id(p_task_assignments_in(i).pa_task_assignment_id);
5609 	FETCH C_Proj_Ass_Id INTO l_temp_proj_ass_id;
5610 	CLOSE C_Proj_Ass_Id;
5611 
5612 	if (l_temp_proj_ass_id <> -1 and l_temp_proj_ass_id <> 0) then
5613 	l_project_assignment_id_tbl(u_index)     :=  l_temp_proj_ass_id ;
5614 	else
5615 	l_project_assignment_id_tbl(u_index)     :=  -1 ;
5616 	end if;
5617         ----Bug#9374037 Ends
5618 
5619 
5620         OPEN C_Workplan_Costs_enabled(l_budget_version_id);
5621         FETCH C_Workplan_Costs_enabled INTO C_Workplan_Costs_rec;
5622         CLOSE C_Workplan_Costs_enabled;
5623 
5624         --Rate based override currency only if workplan cost is enabled
5625         --Non-rate based one can override currency.
5626         if C_Res_Asgmt_Data_Rec.rate_based_flag = 'Y' AND C_Workplan_Costs_rec.enabled_flag = 'N' THEN
5627             l_currency_code_tbl(u_index)             := NULL;
5628         else
5629         l_currency_code_tbl(u_index)             :=  pa_task_assignments_pvt.pfchar(l_currency_code) ;
5630     end if;
5631 
5632         IF g_asgmts_periods_tbl_count >  0 THEN
5633 
5634        l_quantity_tbl(u_index)                  :=  NULL ;
5635            l_raw_cost_tbl(u_index)                  :=  NULL ;
5636            l_burdened_cost_tbl(u_index)             :=  NULL ;
5637 
5638         ELSE
5639           IF C_Workplan_Costs_rec.enabled_flag = 'Y' THEN
5640             l_raw_cost_tbl(u_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_raw_cost) ;
5641             l_burdened_cost_tbl(u_index)             :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_bur_cost) ;
5642             /* Bug Fix 5505113
5643             */
5644             IF l_raw_cost_tbl(u_index) = FND_API.G_MISS_NUM THEN
5645                l_raw_cost_tbl(u_index) := NULL;
5646             END IF;
5647 
5648             IF l_burdened_cost_tbl(u_index) = FND_API.G_MISS_NUM THEN
5649                l_burdened_cost_tbl(u_index) := NULL;
5650             END IF;
5651 
5652           END IF;
5653           l_quantity_tbl(u_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_quantity) ;
5654             /* Bug Fix 5505113
5655             */
5656             IF l_quantity_tbl(u_index) = FND_API.G_MISS_NUM THEN
5657                l_quantity_tbl(u_index) := NULL;
5658             END IF;
5659 
5660         END IF;
5661 
5662 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5663     pa_debug.g_err_stage:='Setting attributes';
5664     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5665 END IF;
5666 
5667     l_attribute_category_tbl(u_index)           :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute_category);
5668     l_attribute1_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute1);
5669     l_attribute2_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute2);
5670     l_attribute3_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute3);
5671     l_attribute4_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute4);
5672     l_attribute5_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute5);
5673     l_attribute6_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute6);
5674     l_attribute7_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute7);
5675     l_attribute8_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute8);
5676     l_attribute9_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute9);
5677     l_attribute10_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute10);
5678     l_attribute11_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute11);
5679     l_attribute12_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute12);
5680     l_attribute13_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute13);
5681     l_attribute14_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute14);
5682     l_attribute15_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute15);
5683     l_attribute16_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute16);
5684     l_attribute17_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute17);
5685     l_attribute18_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute18);
5686     l_attribute19_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute19);
5687     l_attribute20_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute20);
5688     l_attribute21_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute21);
5689     l_attribute22_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute22);
5690     l_attribute23_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute23);
5691     l_attribute24_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute24);
5692     l_attribute25_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute25);
5693     l_attribute26_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute26);
5694     l_attribute27_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute27);
5695     l_attribute28_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute28);
5696     l_attribute29_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute29);
5697     l_attribute30_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute30);
5698     l_scheduled_delay_tbl(u_index)              :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).scheduled_delay); --Bug 3948128
5699     l_spread_curve_id_tbl(u_index)              := pa_task_assignments_pvt.pfnum(l_spread_curve_id);--Bug#8646853
5700     l_fixed_date_tbl(u_index)                       := pa_task_assignments_pvt.pfdate(l_fixed_date) ;--Bug#8646853
5701 
5702 
5703 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5704     pa_debug.g_err_stage:='Setting update only parameters:';
5705     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5706 END IF;
5707 
5708         l_description_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).description);
5709         l_use_task_schedule_flag_tbl(u_index)       :=  pa_task_assignments_pvt.pfchar(nvl(p_task_assignments_in(i).use_task_schedule_flag, C_Res_Asgmt_Data_Rec.use_task_schedule_flag));
5710 
5711    --dbms_output.put_line('p_task_assignments_in(i).procure_resource_flag:' || p_task_assignments_in(i).procure_resource_flag);
5712         --dbms_output.put_line('p_task_assignments_in(i).use_task_schedule_flag:' || p_task_assignments_in(i).use_task_schedule_flag);
5713 
5714    -- l_procure_resource_flag_tbl(u_index)        :=  pa_task_assignments_pvt.pfchar(nvl(p_task_assignments_in(i).procure_resource_flag, C_Res_Asgmt_Data_Rec.procure_resource_flag));
5715 
5716 
5717         IF g_asgmts_periods_tbl_count >  0 THEN
5718 
5719        l_raw_cost_rate_override_tbl(u_index)                  :=  NULL ;
5720            l_burd_cost_rate_override_tbl(u_index)                 :=  NULL ;
5721         ELSE
5722           if C_Res_Asgmt_Data_Rec.rate_based_flag = 'Y' AND C_Workplan_Costs_rec.enabled_flag = 'Y' THEN
5723        --dbms_output.put_line('p_task_assignments_in(i).raw_cost_rate_override:' || p_task_assignments_in(i).raw_cost_rate_override);
5724        l_raw_cost_rate_override_tbl(u_index)       :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).raw_cost_rate_override);
5725 
5726            --dbms_output.put_line('p_task_assignments_in(i).burd_cost_rate_override:' || p_task_assignments_in(i).burd_cost_rate_override);
5727 
5728        l_burd_cost_rate_override_tbl(u_index)      :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).burd_cost_rate_override);
5729         /* Bug Fix 5505113
5730         */
5731        IF l_raw_cost_rate_override_tbl(u_index) = FND_API.G_MISS_NUM THEN
5732           l_raw_cost_rate_override_tbl(u_index) := NULL;
5733        END IF;
5734 
5735        IF l_burd_cost_rate_override_tbl(u_index) = FND_API.G_MISS_NUM THEN
5736           l_burd_cost_rate_override_tbl(u_index) := NULL;
5737        END IF;
5738 
5739           elsif C_Res_Asgmt_Data_Rec.rate_based_flag = 'N' AND C_Workplan_Costs_rec.enabled_flag = 'Y' THEN
5740             --dbms_output.put_line('p_task_assignments_in(i).burd_cost_rate_override:' || p_task_assignments_in(i).burd_cost_rate_override);
5741 
5742        l_burd_cost_rate_override_tbl(u_index)      :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).burd_cost_rate_override);
5743         /* Bug Fix 5505113
5744         */
5745        IF l_burd_cost_rate_override_tbl(u_index) = FND_API.G_MISS_NUM THEN
5746           l_burd_cost_rate_override_tbl(u_index) := NULL;
5747        END IF;
5748 
5749           end if;
5750     END IF;
5751 
5752 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5753     pa_debug.g_err_stage:='p_task_assignments_in(i).billable_work_percent' || p_task_assignments_in(i).billable_work_percent;
5754     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5755 END IF;
5756 
5757     l_billable_work_percent_tbl(u_index)        :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).billable_work_percent);
5758 
5759 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5760         pa_debug.g_err_stage:='l_cost_type_id' || l_cost_type_id;
5761         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5762 END IF;
5763 
5764     l_mfc_cost_type_id_tbl(u_index)             :=  pa_task_assignments_pvt.pfnum(l_cost_type_id);
5765 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5766         pa_debug.g_err_stage:='End of Setting All Update Params: int. index:' || u_index || ' Overall Index:' || i;
5767         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5768 
5769     pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.task_id' || C_Res_Asgmt_Data_Rec.task_id;
5770     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5771 
5772         pa_debug.g_err_stage:='pa_proj_elements_utils.get_element_name(C_Res_Asgmt_Data_Rec.task_id)' || pa_proj_elements_utils.get_element_name(C_Res_Asgmt_Data_Rec.task_id);
5773         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5774 END IF;
5775 
5776 
5777         l_task_name_tbl(u_index)                    :=  pa_task_assignments_pvt.pfchar(pa_proj_elements_utils.get_element_name(C_Res_Asgmt_Data_Rec.task_id));
5778 
5779 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5780         pa_debug.g_err_stage:='pa_proj_elements_utils.get_element_number(C_Res_Asgmt_Data_Rec.task_id)' || pa_proj_elements_utils.get_element_number(C_Res_Asgmt_Data_Rec.task_id);
5781         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5782 END IF;
5783 
5784         l_task_number_tbl(u_index)                  :=  pa_task_assignments_pvt.pfchar(pa_proj_elements_utils.get_element_number(C_Res_Asgmt_Data_Rec.task_id));
5785 
5786 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5787         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.Resource_Class_Code' || C_Res_Asgmt_Data_Rec.Resource_Class_Code;
5788         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5789 END IF;
5790 
5791         l_resource_class_code_tbl(u_index)          :=  pa_task_assignments_pvt.pfchar(C_Res_Asgmt_Data_Rec.Resource_Class_Code);
5792 
5793 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5794         pa_debug.g_err_stage:='C_Res_List_Mem_Check_Rec.Alias' || C_Res_List_Mem_Check_Rec.Alias;
5795         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5796 END IF;
5797 
5798     l_resource_alias_tbl(u_index)               :=  pa_task_assignments_pvt.pfchar(C_Res_List_Mem_Check_Rec.Alias);
5799 
5800 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5801         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.res_type_code' || C_Res_Asgmt_Data_Rec.res_type_code;
5802         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5803 END IF;
5804 
5805         l_res_type_code_tbl(u_index)                :=  pa_task_assignments_pvt.pfchar(C_Res_Asgmt_Data_Rec.Res_Type_Code);
5806 
5807 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5808         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.resource_assignment_id ' || C_Res_Asgmt_Data_Rec.resource_assignment_id;
5809         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5810 
5811         pa_debug.g_err_stage:='PA_PLANNING_RESOURCE_UTILS.Get_resource_Code(C_Res_Asgmt_Data_Rec.resource_assignment_id)' || PA_PLANNING_RESOURCE_UTILS.Get_resource_Code(C_Res_Asgmt_Data_Rec.resource_assignment_id);
5812         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5813 END IF;
5814 
5815     l_resource_code_tbl(u_index)                :=  pa_task_assignments_pvt.pfchar(PA_PLANNING_RESOURCE_UTILS.Get_resource_Code(C_Res_Asgmt_Data_Rec.resource_assignment_id));
5816 
5817         l_resource_name(u_index)                    :=  pa_task_assignments_pvt.pfchar(PA_PLANNING_RESOURCE_UTILS.RET_RESOURCE_NAME (
5818                                                                                   LP_RES_TYPE_CODE,
5819                                                                                   LP_PERSON_ID,
5820                                                                                   LP_BOM_RESOURCE_ID, LP_JOB_ID,
5821                                                                                   LP_PERSON_TYPE_CODE,
5822                                                                                   LP_NON_LABOR_RESOURCE,
5823                                                                                   LP_INVENTORY_ITEM_ID,
5824                                                                                   LP_RESOURCE_CLASS_ID, LP_ITEM_CATEGORY_ID,
5825                                                                                   C_Res_Asgmt_Data_Rec.resource_assignment_id ));
5826 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5827         pa_debug.g_err_stage:='resource name: ' || l_resource_name(u_index);
5828         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5829 
5830         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.Project_Role_Id: ' || C_Res_Asgmt_Data_Rec.Project_Role_Id;
5831         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5832 END IF;
5833 
5834     l_project_role_id_tbl(u_index)              :=  pa_task_assignments_pvt.pfnum(C_Res_Asgmt_Data_Rec.Project_Role_Id);
5835 
5836 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5837         pa_debug.g_err_stage:='pa_planning_element_utils.get_project_role_name(C_Res_Asgmt_Data_Rec.Project_Role_Id): ' || pa_planning_element_utils.get_project_role_name(C_Res_Asgmt_Data_Rec.Project_Role_Id);
5838         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5839 END IF;
5840 
5841         l_project_role_name_tbl(u_index)            :=  pa_task_assignments_pvt.pfchar(pa_planning_element_utils.get_project_role_name(C_Res_Asgmt_Data_Rec.Project_Role_Id));
5842 
5843 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5844         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.Organization_Id: ' || C_Res_Asgmt_Data_Rec.Organization_Id;
5845         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5846 END IF;
5847 
5848         l_organization_id_tbl(u_index)              :=  pa_task_assignments_pvt.pfnum(C_Res_Asgmt_Data_Rec.Organization_Id);
5849 
5850 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5851         pa_debug.g_err_stage:='pa_expenditures_utils.GetOrgTlName(C_Res_Asgmt_Data_Rec.Organization_Id):' || pa_expenditures_utils.GetOrgTlName(C_Res_Asgmt_Data_Rec.Organization_Id);
5852         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5853 END IF;
5854 
5855         l_organization_name_tbl(u_index)            :=  pa_task_assignments_pvt.pfchar(pa_expenditures_utils.GetOrgTlName(C_Res_Asgmt_Data_Rec.Organization_Id));
5856 
5857 
5858 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5859         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.fc_res_type_Code:' || C_Res_Asgmt_Data_Rec.fc_res_type_Code;
5860         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5861 END IF;
5862 
5863         l_fc_res_type_code_tbl(u_index)             :=  pa_task_assignments_pvt.pfchar(C_Res_Asgmt_Data_Rec.fc_res_type_Code);
5864 
5865 
5866         l_financial_category_name_tbl(u_index)      :=  pa_task_assignments_pvt.pfchar(PA_PLANNING_RESOURCE_UTILS.RET_FIN_CATEGORY_NAME (IP_FC_RES_TYPE_CODE, IP_EXPENDITURE_TYPE, IP_EXPENDITURE_CATEGORY,
5867                                                                                        IP_EVENT_TYPE, IP_REVENUE_CATEGORY_CODE, C_Res_Asgmt_Data_Rec.Resource_Assignment_Id ));
5868 
5869 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5870         pa_debug.g_err_stage:='financial category name :' ||           l_financial_category_name_tbl(u_index);
5871         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5872 END IF;
5873 
5874         -- Bug 4246109: Should pass in supplier to update_planning_transaction
5875         l_supplier_id_tbl(u_index)                  :=  pa_task_assignments_pvt.pfnum(C_Res_Asgmt_Data_Rec.supplier_id);
5876 
5877         -- Bug 4528392:
5878         IF l_supplier_id_tbl(u_index) IS NOT NULL and l_supplier_id_tbl(u_index) <> FND_API.G_MISS_NUM THEN
5879           l_supplier_name_tbl(u_index)                :=  pa_task_assignments_pvt.pfchar(pa_planning_resource_utils.ret_supplier_name(l_supplier_id_tbl(u_index)));
5880         ELSIF l_supplier_id_tbl(u_index) IS NULL THEN
5881           l_supplier_name_tbl(u_index) := NULL;
5882         ELSE
5883           l_supplier_name_tbl(u_index) := FND_API.G_MISS_CHAR;
5884         END IF;
5885         -- End of Bug 4528392:
5886 
5887 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5888         pa_debug.g_err_stage:='C_Res_Asgmt_Data_Rec.Named_Role: ' || C_Res_Asgmt_Data_Rec.Named_Role;
5889         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5890 END IF;
5891 
5892         l_named_role_tbl(u_index)                   :=  pa_task_assignments_pvt.pfchar(C_Res_Asgmt_Data_Rec.Named_Role);
5893 
5894 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5895         pa_debug.g_err_stage:='PA_PLANNING_RESOURCE_UTILS.GET_INCUR_BY_RES_CODE(  C_Res_Asgmt_Data_Rec.resource_assignment_id) ' || PA_PLANNING_RESOURCE_UTILS.GET_INCUR_BY_RES_CODE(  C_Res_Asgmt_Data_Rec.resource_assignment_id);
5896         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5897 END IF;
5898 
5899         l_incur_by_resource_code_tbl(u_index)       := pa_task_assignments_pvt.pfchar(PA_PLANNING_RESOURCE_UTILS.GET_INCUR_BY_RES_CODE(  C_Res_Asgmt_Data_Rec.resource_assignment_id) );
5900 
5901 
5902   ELSE              -- Add content.
5903 
5904 
5905 
5906         -- Bug 4087956
5907         -- Made the pm_task_asgmt_reference to refer to l_task_assignments_in plsql table.
5908         -- For Bug 8842724
5909         OPEN C_Reference_Check(l_task_assignments_in(i).pm_task_asgmt_reference, l_budget_version_id);
5910         FETCH C_Reference_Check into C_Reference_Rec;
5911         IF C_Reference_Check%FOUND THEN
5912 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5913          pa_debug.g_err_stage:='pm_task_asgmt_reference is EXISTING error';
5914          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5915 END IF;
5916               IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
5917                THEN
5918                           --CLOSE C_Reference_Check;Bug 3937017
5919                           PA_UTILS.ADD_MESSAGE
5920                                   (p_app_short_name => 'PA'
5921                                   ,p_msg_name       => 'PA_DUPLICATE_TA_REF'
5922                                   ,p_token1 => 'TASK_ASGMT_REF'  -- Bug 6497559
5923                                   ,p_value1 => l_task_assignments_in(i).pm_task_asgmt_reference
5924                                   ,p_token2 => 'BUDGET_VER_ID'
5925                                   ,p_value2 => l_budget_version_id
5926                                    );
5927                END IF;
5928                CLOSE C_Reference_Check;--Bug 3937017
5929                         x_return_status    := FND_API.G_RET_STS_ERROR;
5930                RAISE FND_API.G_EXC_ERROR;
5931     END IF;
5932         Close C_Reference_Check;
5933 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5934          pa_debug.g_err_stage:='pm_task_asgmt_reference is EXISTING check passed';
5935          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5936 END IF;
5937 
5938     c_index := c_index + 1;
5939 
5940 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
5941     pa_debug.g_err_stage:='Entering setting of internal tables for Add sequence in Update..';
5942     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
5943 END IF;
5944 
5945     lc_task_elem_version_id_tbl.extend(1);
5946         lc_task_name_tbl.extend(1);
5947         lc_task_number_tbl.extend(1);
5948     lc_start_date_tbl.extend(1);
5949         lc_end_date_tbl.extend(1);
5950         lc_planned_people_effort_tbl.extend(1);
5951         lc_planned_equip_effort_tbl.extend(1);
5952         lc_latest_eff_pub_flag_tbl.extend(1);
5953         lc_resource_list_member_id_tbl.extend(1);
5954 		lc_cbs_element_id_tbl.extend(1); -- Added for CBS 16598322
5955         lc_project_assignment_id_tbl.extend(1);
5956         lc_quantity_tbl.extend(1);
5957         lc_currency_code_tbl.extend(1);
5958         lc_raw_cost_tbl.extend(1);
5959         lc_burdened_cost_tbl.extend(1);
5960         lc_product_code_tbl.extend(1);
5961     lc_product_reference_tbl.extend(1);
5962         lc_attribute1.extend(1);
5963         lc_attribute2.extend(1);
5964         lc_attribute3.extend(1);
5965         lc_attribute4.extend(1);
5966         lc_attribute5.extend(1);
5967         lc_attribute6.extend(1);
5968         lc_attribute7.extend(1);
5969         lc_attribute8.extend(1);
5970         lc_attribute9.extend(1);
5971         lc_attribute10.extend(1);
5972         lc_attribute11.extend(1);
5973         lc_attribute12.extend(1);
5974         lc_attribute13.extend(1);
5975         lc_attribute14.extend(1);
5976         lc_attribute15.extend(1);
5977         lc_attribute16.extend(1);
5978         lc_attribute17.extend(1);
5979         lc_attribute18.extend(1);
5980         lc_attribute19.extend(1);
5981         lc_attribute20.extend(1);
5982         lc_attribute21.extend(1);
5983         lc_attribute22.extend(1);
5984         lc_attribute23.extend(1);
5985         lc_attribute24.extend(1);
5986         lc_attribute25.extend(1);
5987         lc_attribute26.extend(1);
5988         lc_attribute27.extend(1);
5989         lc_attribute28.extend(1);
5990         lc_attribute29.extend(1);
5991         lc_attribute30.extend(1);
5992         lc_scheduled_delay_tbl.extend(1); --Bug 3948128
5993 
5994 
5995     p_task_assignments_out(c_index + u_index).pa_task_id  := l_d_task_id;
5996         p_task_assignments_out(c_index + u_index).resource_list_member_id  := p_task_assignments_in(i).resource_list_member_id ;
5997 		p_task_assignments_out(c_index + u_index).cbs_element_id  := p_task_assignments_in(i).cbs_element_id ; -- 16598322
5998 
5999         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).pa_task_id := l_d_task_id;
6000         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).resource_list_member_id := p_task_assignments_in(i).resource_list_member_id ;
6001         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(c_index + u_index).cbs_element_id := p_task_assignments_in(i).cbs_element_id ;-- 16598322
6002 
6003 
6004         lc_task_elem_version_id_tbl(c_index)      :=  pa_task_assignments_pvt.pfnum(l_task_elem_version_id_tbl(i));
6005     lc_task_name_tbl(c_index)                 :=  NULL; --TBD
6006         lc_task_number_tbl(c_index)               :=  NULL; --TBD
6007     lc_start_date_tbl(c_index)                :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).start_date) ;
6008         lc_end_date_tbl(c_index)                  :=  pa_task_assignments_pvt.pfdate(p_task_assignments_in(i).end_date) ;
6009         lc_latest_eff_pub_flag_tbl(c_index)       :=  NULL ;  --TBD
6010         lc_resource_list_member_id_tbl(c_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).resource_list_member_id) ;
6011 		lc_cbs_element_id_tbl(c_index)   :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).cbs_element_id) ;
6012         lc_project_assignment_id_tbl(c_index)     :=  -1 ;
6013         lc_currency_code_tbl(c_index)             :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).currency_code) ;
6014 
6015         OPEN C_Workplan_Costs_enabled(l_budget_version_id);
6016         FETCH C_Workplan_Costs_enabled INTO C_Workplan_Costs_rec;
6017         CLOSE C_Workplan_Costs_enabled;
6018 
6019         IF g_asgmts_periods_tbl_count >  0 THEN
6020 
6021            lc_quantity_tbl(c_index)                  :=  NULL ;
6022            lc_raw_cost_tbl(c_index)                  :=  NULL ;
6023            lc_burdened_cost_tbl(c_index)             :=  NULL ;
6024 
6025         ELSE
6026           IF C_Workplan_Costs_rec.enabled_flag = 'Y' THEN
6027            lc_raw_cost_tbl(c_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_raw_cost) ;
6028            lc_burdened_cost_tbl(c_index)             :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_total_bur_cost) ;
6029            /* Bug Fix 5505113
6030            */
6031           IF lc_raw_cost_tbl(c_index) = FND_API.G_MISS_NUM THEN
6032              lc_raw_cost_tbl(c_index) := NULL;
6033           END IF;
6034 
6035           IF lc_burdened_cost_tbl(c_index)  = FND_API.G_MISS_NUM THEN
6036              lc_burdened_cost_tbl(c_index)  := NULL;
6037           END IF;
6038 
6039           END IF;
6040 
6041           lc_quantity_tbl(c_index)                  :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).planned_quantity);
6042            /* Bug Fix 5505113
6043            */
6044           IF lc_quantity_tbl(c_index) = FND_API.G_MISS_NUM THEN
6045              lc_quantity_tbl(c_index) := NULL;
6046           END IF;
6047 
6048         END IF;
6049 
6050         -- Made the pm_task_asgmt_reference to refer to l_task_assignments_in plsql table.
6051         -- For Bug 8842724
6052 
6053         lc_product_code_tbl(c_index)              :=  pa_task_assignments_pvt.pfchar(p_pm_product_code)  ;
6054     lc_product_reference_tbl(c_index)         :=  pa_task_assignments_pvt.pfchar(l_task_assignments_in(i).pm_task_asgmt_reference) ;
6055         lc_attribute1(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute1) ;
6056         lc_attribute2(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute2) ;
6057         lc_attribute3(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute3) ;
6058         lc_attribute4(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute4) ;
6059         lc_attribute5(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute5) ;
6060         lc_attribute6(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute6) ;
6061         lc_attribute7(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute7) ;
6062         lc_attribute8(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute8) ;
6063         lc_attribute9(c_index)                    :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute9) ;
6064         lc_attribute10(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute10) ;
6065         lc_attribute11(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute11) ;
6066         lc_attribute12(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute12) ;
6067         lc_attribute13(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute13) ;
6068         lc_attribute14(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute14) ;
6069         lc_attribute15(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute15) ;
6070         lc_attribute16(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute16) ;
6071         lc_attribute17(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute17) ;
6072         lc_attribute18(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute18) ;
6073         lc_attribute19(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute19) ;
6074         lc_attribute20(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute20) ;
6075         lc_attribute21(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute21) ;
6076         lc_attribute22(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute22) ;
6077         lc_attribute23(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute23) ;
6078         lc_attribute24(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute24) ;
6079         lc_attribute25(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute25) ;
6080         lc_attribute26(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute26) ;
6081         lc_attribute27(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute27) ;
6082         lc_attribute28(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute28) ;
6083         lc_attribute29(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute29) ;
6084         lc_attribute30(c_index)                   :=  pa_task_assignments_pvt.pfchar(p_task_assignments_in(i).attribute30) ;
6085         lc_scheduled_delay_tbl(c_index)           :=  pa_task_assignments_pvt.pfnum(p_task_assignments_in(i).scheduled_delay) ; --Bug 3948128
6086 
6087    END IF;
6088 
6089   END LOOP;
6090 
6091 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6092 pa_debug.g_err_stage:='Loop  has ended in setting params.';
6093 pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6094 END IF;
6095 
6096         --Added for Bug 3940284
6097 
6098         /* Updates from the bug
6099         In both pa_task_assignments_pub create_task_assignments and
6100         update_task_assignments AMG APIs, we are deleting the ta_display_flag='N'
6101         assignment records whenever the first resource is assigned to the task
6102         version.  There are a few problems that need to be fixed:
6103 
6104         1. We currently only delete if the resource being assigned to task is of
6105         'PEOPLE' class.  This IF should be removed, deletion should be done when
6106         resource of ANY class is assigned to task.
6107         2. We should NOT be deleting directly from pa_resource_assignments.  Instead,
6108         we should call pa_fp_planning_transaction_pub.delete_planning_transactions to
6109         to properly delete the assignment record.
6110         */
6111 
6112         --Changes for Bug 3910882 Begin
6113         /* Updates from the Bug
6114         The UPDATE does not perform very well in volume env.  My suggestion to improve
6115         this is to replace the FORALL UPDATE by 2 operations:
6116         * 1. Insert the task version ids into an existing temp table, PA_COPY_ASGMTS_TEMP
6117         * 2. Select resource assignments from pa_resource_assignments joining to the temp table
6118         */
6119 
6120         -- dynamically computing the statistics for the Temporary table
6121         l_num_of_tasks := l_task_elem_version_id_tbl.COUNT;
6122 
6123         SELECT to_number(value)
6124         INTO   l_db_block_size
6125         FROM   v$parameter
6126         WHERE  name = 'db_block_size';
6127 
6128         l_num_blocks := 1.25 * (l_num_of_tasks * 75) / l_db_block_size;
6129 
6130         -- Manually seed the statistics for the temporary table.
6131 		-- Bug 8261905, Replaced 'PA' by PJI_UTILS.GET_PA_SCHEMA_NAME
6132         pa_task_assignment_utils.set_table_stats(PJI_UTILS.GET_PA_SCHEMA_NAME,'PA_COPY_ASGMTS_TEMP',
6133                                                   l_num_of_tasks, l_num_blocks, 75);
6134 
6135         -- delete content from temp table before inserting
6136         DELETE pa_copy_asgmts_temp;
6137 
6138         -- bulk inserting the task version ids into the temp table
6139         FORALL i IN 1..l_task_elem_version_id_tbl.COUNT
6140             -- Changed due to bug 4153366
6141             INSERT INTO pa_copy_asgmts_temp VALUES
6142             (l_task_elem_version_id_tbl(i), -1, null, null, null, null);
6143 
6144 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6145         pa_debug.g_err_stage:='Successfully inserted task version ids into the temp table';
6146         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6147 END IF;
6148 
6149         -- select resource_assignment_ids and wbs_element_version_ids by joining to
6150         -- the temp table for all records having ta_display_flag = 'N'
6151         OPEN C_Get_Default_Res_Asgmt(l_project_id, l_budget_version_id);
6152         FETCH C_Get_Default_Res_Asgmt BULK COLLECT INTO
6153               l_delete_task_res_asgmt_id_tbl, l_delete_task_elem_ver_id_tbl;
6154         CLOSE C_Get_Default_Res_Asgmt;
6155 
6156 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6157         pa_debug.g_err_stage:='Selected resource_assignment_ids and wbs_element_version_ids into plsql tables';
6158         pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6159 END IF;
6160 
6161         /*
6162         FORALL k IN l_task_elem_version_id_tbl.FIRST .. l_task_elem_version_id_tbl.LAST
6163         UPDATE pa_resource_assignments
6164         SET ta_display_flag = 'N'
6165         WHERE ta_display_flag = 'N'
6166         AND wbs_element_version_id = l_task_elem_version_id_tbl(k)
6167         AND project_id = l_project_id
6168         AND budget_version_id = l_budget_version_id
6169         RETURNING resource_assignment_id, wbs_element_version_id BULK COLLECT INTO
6170                   l_delete_task_res_asgmt_id_tbl, l_delete_task_elem_ver_id_tbl;
6171         */
6172 
6173         --Changes for Bug 3910882 End
6174 
6175         IF l_delete_task_res_asgmt_id_tbl.COUNT > 0 THEN
6176                 --dbms_output.put_line('Before calling delete planning transactions:ret. status' || x_return_status);
6177 
6178                 -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6179                 --              Turn on the mask.
6180                 IF g_periodic_mode IS NULL THEN
6181                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
6182                 END IF;
6183 
6184                 PA_FP_PLANNING_TRANSACTION_PUB.DELETE_PLANNING_TRANSACTIONS(
6185                 P_CONTEXT => pa_fp_constants_pkg.g_calling_module_task,
6186                 P_TASK_OR_RES => 'ASSIGNMENT',
6187                 P_ELEMENT_VERSION_ID_TBL => l_delete_task_elem_ver_id_tbl,
6188                 P_TASK_NUMBER_TBL => NULL,
6189                 P_TASK_NAME_TBL => NULL,
6190                 P_RESOURCE_ASSIGNMENT_TBL => l_delete_task_res_asgmt_id_tbl,
6191                 P_VALIDATE_DELETE_FLAG => NULL,
6192                 X_RETURN_STATUS => X_RETURN_STATUS,
6193                 X_MSG_COUNT => X_MSG_COUNT,
6194                 X_MSG_DATA => X_MSG_DATA);
6195 
6196                 -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6197                 --              Turn off the mask.
6198                 IF g_periodic_mode IS NULL THEN
6199                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
6200                 END IF;
6201 
6202 
6203         END IF;
6204                 --dbms_output.put_line('After Calling delete planning transactions:ret. status' || x_return_status);
6205         --End of Changes for Bug 3940284
6206 
6207 
6208   IF c_index > 0 THEN
6209 
6210   IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6211      pa_debug.g_err_stage:='Need to call Add Planning Transactions in Update Process count of Add is:' || c_index ;
6212      pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6213 
6214          pa_debug.g_err_stage:='B4 Call to pa_fp_planning_transactions.add_planning_transactions ret status is:'|| x_return_status;
6215          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6216 
6217          For i in 1..c_index LOOP
6218           pa_debug.g_err_stage:='Index Num. in call to add:' || i ;
6219           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6220           pa_debug.g_err_stage:='p_context' || i ||  ':' ||         pa_fp_constants_pkg.g_calling_module_task;
6221           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6222           pa_debug.g_err_stage:='p_project_id' || i ||  ':' ||  l_project_id;
6223           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6224           pa_debug.g_err_stage:='p_struct_elem_version_id' || i || ':' ||  l_struct_elem_version_id ;
6225           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6226           pa_debug.g_err_stage:='p_budget_version_id' || i || ':' ||  l_budget_version_id;
6227           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6228           pa_debug.g_err_stage:='p_task_elem_version_id_tbl' || i || ':' ||  lc_task_elem_version_id_tbl(i);
6229           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6230           pa_debug.g_err_stage:='p_task_name_tbl' || i ||  ':' || lc_task_name_tbl(i);
6231           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6232           pa_debug.g_err_stage:='p_task_number_tbl' || i || ':' ||  lc_task_number_tbl(i);
6233           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6234           pa_debug.g_err_stage:='p_start_date_tbl' || i || ':' ||  lc_start_date_tbl(i) ;
6235           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6236           pa_debug.g_err_stage:='p_end_date_tbl' || i || ':' ||  lc_end_date_tbl(i);
6237           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6238           pa_debug.g_err_stage:='p_planned_people_effort_tbl' || i ||  ':' || lc_planned_people_effort_tbl(i);
6239           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6240           pa_debug.g_err_stage:='p_planned_equip_effort_tbl' || i ||  ':' || lc_planned_equip_effort_tbl(i);
6241           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6242           pa_debug.g_err_stage:='p_latest_eff_pub_flag_tbl' || i || ':' ||  lc_latest_eff_pub_flag_tbl(i);
6243           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6244           pa_debug.g_err_stage:='p_resource_list_member_id_tbl' || i || ':' ||  lc_resource_list_member_id_tbl(i);
6245           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6246           pa_debug.g_err_stage:='p_project_assignment_id_tbl' || i || ':' ||  lc_project_assignment_id_tbl(i);
6247           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6248           pa_debug.g_err_stage:='p_quantity_tbl' || i || ':' ||  lc_quantity_tbl(i);
6249           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6250           pa_debug.g_err_stage:='p_currency_code_tbl' || i || ':' ||  lc_currency_code_tbl(i);
6251           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6252           pa_debug.g_err_stage:='p_raw_cost_tbl'|| i || ':' ||  lc_raw_cost_tbl(i);
6253           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6254           pa_debug.g_err_stage:='p_burdened_cost_tbl'|| i ||  ':' || lc_burdened_cost_tbl(i);
6255           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6256           pa_debug.g_err_stage:='p_pm_product_code'|| i || ':' ||  lc_product_code_tbl(i);
6257           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6258           pa_debug.g_err_stage:='p_pm_res_asgmt_ref' || i || ':' ||  lc_product_reference_tbl(i);
6259           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6260 
6261          END LOOP;
6262 
6263           pa_debug.g_err_stage:='b4 call to pa_fp_planning_transactions.add_planning_transactions ret status:'||x_return_status;
6264           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6265 END IF;
6266 
6267          -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6268          --              Turn on the mask.
6269          IF g_periodic_mode IS NULL THEN
6270                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
6271          END IF;
6272 
6273          pa_fp_planning_transaction_pub.add_planning_transactions
6274         ( p_context                     => pa_fp_constants_pkg.g_calling_module_task,
6275           p_one_to_one_mapping_flag     => 'Y',
6276           p_project_id                  => l_project_id,
6277           p_struct_elem_version_id      => l_struct_elem_version_id ,
6278           p_budget_version_id           => l_budget_version_id,
6279           p_task_elem_version_id_tbl    => lc_task_elem_version_id_tbl,
6280           p_task_name_tbl               => lc_task_name_tbl,
6281           p_task_number_tbl             => lc_task_number_tbl,
6282           p_planning_start_date_tbl              => lc_start_date_tbl,
6283           p_planning_end_date_tbl                => lc_end_date_tbl,
6284           p_planned_people_effort_tbl   => lc_planned_people_effort_tbl,
6285           p_latest_eff_pub_flag_tbl     => lc_latest_eff_pub_flag_tbl,
6286           p_resource_list_member_id_tbl => lc_resource_list_member_id_tbl,
6287 		  p_cbs_element_id_tbl => lc_cbs_element_id_tbl, 	-- Added for CBS16598322
6288           p_project_assignment_id_tbl   => lc_project_assignment_id_tbl,
6289           p_quantity_tbl                => lc_quantity_tbl,
6290           p_currency_code_tbl           => lc_currency_code_tbl,
6291           p_raw_cost_tbl                => lc_raw_cost_tbl,
6292           p_burdened_cost_tbl           => lc_burdened_cost_tbl,
6293           p_pm_product_code             => lc_product_code_tbl,
6294           p_pm_res_asgmt_ref            => lc_product_reference_tbl,
6295           p_attribute1                  => lc_attribute1,           --These are pl/sql system tables too..
6296           p_attribute2                  => lc_attribute2,
6297           p_attribute3                  => lc_attribute3,
6298           p_attribute4                  => lc_attribute4,
6299           p_attribute5                  => lc_attribute5,
6300           p_attribute6                  => lc_attribute6,
6301           p_attribute7                  => lc_attribute7,
6302           p_attribute8                  => lc_attribute8,
6303           p_attribute9                  => lc_attribute9,
6304           p_attribute10                 => lc_attribute10,
6305           p_attribute11                 => lc_attribute11,
6306           p_attribute12                 => lc_attribute12,
6307           p_attribute13                 => lc_attribute13,
6308           p_attribute14                 => lc_attribute14,
6309           p_attribute15                 => lc_attribute15,
6310           p_attribute16                 => lc_attribute16,
6311           p_attribute17                 => lc_attribute17,
6312           p_attribute18                 => lc_attribute18,
6313           p_attribute19                 => lc_attribute19,
6314           p_attribute20                 => lc_attribute20,
6315           p_attribute21                 => lc_attribute21,
6316           p_attribute22                 => lc_attribute22,
6317           p_attribute23                 => lc_attribute23,
6318           p_attribute24                 => lc_attribute24,
6319           p_attribute25                 => lc_attribute25,
6320           p_attribute26                 => lc_attribute26,
6321           p_attribute27                 => lc_attribute27,
6322           p_attribute28                 => lc_attribute28,
6323           p_attribute29                 => lc_attribute29,
6324           p_attribute30                 => lc_attribute30,
6325           p_scheduled_delay             => lc_scheduled_delay_tbl, --Bug 3948128
6326           x_return_status               => x_return_status,
6327           x_msg_count                   => x_msg_count,
6328           x_msg_data                    => x_msg_data
6329           );
6330 
6331          -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6332          --              Turn off the mask.
6333          IF g_periodic_mode IS NULL THEN
6334                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
6335          END IF;
6336 
6337 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6338           pa_debug.g_err_stage:='After Calling add planning transactions:ret. status' || x_return_status;
6339           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6340 END IF;
6341 
6342             IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6343                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
6344         ELSIF  (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6345                 RAISE  FND_API.G_EXC_ERROR;
6346         END IF;
6347 
6348          END IF; -- IF c_index > 0 THEN
6349 
6350 
6351    --Collecting delete data
6352    --Edge case if earlier loop not encountered based on same task/single count
6353    IF p_task_assignments_in.exists(1) and
6354       p_task_assignments_in(1).p_context = 'F' and
6355       l_ta_del_tmp_tbl.exists(1) THEN
6356 
6357      FOR k in 1..l_ta_del_tmp_tbl.COUNT LOOP
6358 
6359        IF  l_ta_del_tmp_tbl(k).del_ta_flag = 'Y' THEN
6360 
6361          ld_task_elem_version_id_tbl.extend(1);
6362          ld_resource_assignment_id_tbl.extend(1);
6363 
6364          del_index := del_index + 1;
6365 
6366          ld_task_elem_version_id_tbl(del_index)   :=  l_ta_del_tmp_tbl(k).pa_task_elem_version_id;
6367          ld_resource_assignment_id_tbl(del_index) :=  l_ta_del_tmp_tbl(k).pa_task_assignment_id;
6368 
6369 
6370        END IF;
6371      END LOOP;
6372 
6373    END IF;
6374 
6375    IF del_index > 0 THEN
6376 
6377 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6378          pa_debug.g_err_stage:='Need to call Delete Planning Transactions in Update Process count of Delete is:' || del_index;
6379          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6380          pa_debug.g_err_stage:='Before calling delete planning transactions:ret. status' || x_return_status;
6381          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6382 END IF;
6383 
6384          -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6385          --              Turn on the mask.
6386          IF g_periodic_mode IS NULL THEN
6387                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
6388          END IF;
6389 
6390          PA_FP_PLANNING_TRANSACTION_PUB.DELETE_PLANNING_TRANSACTIONS(
6391          P_CONTEXT => pa_fp_constants_pkg.g_calling_module_task,
6392          P_TASK_OR_RES => 'ASSIGNMENT',
6393          P_ELEMENT_VERSION_ID_TBL => ld_task_elem_version_id_tbl,
6394          P_TASK_NUMBER_TBL => NULL,
6395          P_TASK_NAME_TBL => NULL,
6396          P_RESOURCE_ASSIGNMENT_TBL => ld_resource_assignment_id_tbl,
6397          P_VALIDATE_DELETE_FLAG => NULL,
6398          X_RETURN_STATUS => X_RETURN_STATUS,
6399          X_MSG_COUNT => X_MSG_COUNT,
6400          X_MSG_DATA => X_MSG_DATA);
6401 
6402          -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6403          --              Turn off the mask.
6404          IF g_periodic_mode IS NULL THEN
6405                   PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
6406          END IF;
6407 
6408 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6409          pa_debug.g_err_stage:='After Calling delete planning transactions:ret. status' || x_return_status;
6410          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6411 END IF;
6412 
6413             IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6414                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
6415         ELSIF  (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6416                 RAISE  FND_API.G_EXC_ERROR;
6417         END IF;
6418     END IF;
6419 
6420 
6421 
6422 
6423    IF u_index > 0 THEN
6424 
6425 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6426    pa_debug.g_err_stage:='Before Calling Update planning transactions:ret. status' || x_return_status || 'internal upd index:' || u_index;
6427    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6428 
6429       pa_debug.g_err_stage:='p_context' ||           pa_fp_constants_pkg.g_calling_module_task;
6430       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6431       pa_debug.g_err_stage:='p_project_id                  ' || l_project_id;
6432       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6433       pa_debug.g_err_stage:='p_struct_elem_version_id      ' || l_struct_elem_version_id ;
6434       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6435       pa_debug.g_err_stage:='p_budget_version_id           ' || l_budget_version_id;
6436       pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6437 
6438 
6439    For i in 1..u_index LOOP
6440 
6441          pa_debug.g_err_stage:='Index Num. in call to add:' || i ;
6442          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6443 
6444           pa_debug.g_err_stage:='p_task_elem_version_id_tbl(i)    ' || lu_task_elem_version_id_tbl(i);
6445           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6446 
6447           pa_debug.g_err_stage:='p_start_date_tbl(i)               ' || l_start_date_tbl(i) ;
6448           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6449           pa_debug.g_err_stage:='p_end_date_tbl(i)                 ' || l_end_date_tbl(i) ;
6450           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6451            pa_debug.g_err_stage:='l_resource_assignment_id_tbl(i)    ' || l_resource_assignment_id_tbl(i) ;
6452           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6453 
6454           pa_debug.g_err_stage:='p_resource_list_member_id_tbl(i)  ' || l_resource_list_member_id_tbl(i) ;
6455           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6456           pa_debug.g_err_stage:='p_project_assignment_id_tbl(i)    ' || l_project_assignment_id_tbl(i) ;
6457           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6458           pa_debug.g_err_stage:='p_quantity_tbl(i)                ' || l_quantity_tbl(i) ;
6459           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6460           pa_debug.g_err_stage:='p_currency_code_tbl(i)           ' || l_currency_code_tbl(i);
6461           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6462           pa_debug.g_err_stage:='p_raw_cost_tbl(i)                ' || l_raw_cost_tbl(i);
6463           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6464           pa_debug.g_err_stage:='p_burdened_cost_tbl(i)           ' || l_burdened_cost_tbl(i);
6465           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6466           pa_debug.g_err_stage:='p_mfc_cost_type_id_id_tbl(i)  ' || l_mfc_cost_type_id_tbl(i) ;
6467           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6468           pa_debug.g_err_stage:='p_use_task_schedule_flag_tbl(i)  ' || l_use_task_schedule_flag_tbl(i) ;
6469           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6470         pa_debug.g_err_stage:='p_raw_cost_rate_override_tbl(i)  ' || l_raw_cost_rate_override_tbl(i) ;
6471           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6472           pa_debug.g_err_stage:='p_burd_cost_rate_override_tbl(i)  ' || l_burd_cost_rate_override_tbl(i) ;
6473           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6474           pa_debug.g_err_stage:='p_billable_work_percent_tbl(i)  ' || l_billable_work_percent_tbl(i) ;
6475           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6476   END LOOP;
6477 END IF;
6478 
6479     -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6480     --              Turn on the mask.
6481     IF g_periodic_mode IS NULL THEN
6482        PA_TASK_PUB1.G_CALL_PJI_ROLLUP := 'N';
6483     END IF;
6484 
6485     pa_fp_planning_transaction_pub.update_planning_transactions (
6486         p_context => pa_fp_constants_pkg.g_calling_module_task,
6487         p_struct_elem_version_id => l_struct_elem_version_id ,
6488         p_budget_version_id => l_budget_version_id,
6489         p_task_elem_version_id_tbl => lu_task_elem_version_id_tbl,
6490         p_schedule_start_date_tbl => l_start_date_tbl,
6491         p_schedule_end_date_tbl => l_end_date_tbl,
6492         p_planning_start_date_tbl => l_planning_start_date_tbl,
6493         p_planning_end_date_tbl => l_planning_end_date_tbl,
6494         p_resource_assignment_id_tbl => l_resource_assignment_id_tbl,
6495         p_resource_list_member_id_tbl => l_resource_list_member_id_tbl,
6496 		--p_cbs_element_id_tbl => l_cbs_element_id_tbl,	-- Added For CBS 16598322
6497         p_assignment_description_tbl => l_description_tbl,
6498         p_project_assignment_id_tbl => l_project_assignment_id_tbl,
6499         p_mfc_cost_type_id_tbl  => l_mfc_cost_type_id_tbl,
6500         p_use_task_schedule_flag_tbl => l_use_task_schedule_flag_tbl,
6501         p_quantity_tbl => l_quantity_tbl,
6502         p_txn_currency_override_tbl => l_currency_code_tbl,
6503         p_raw_cost_tbl => l_raw_cost_tbl,
6504         p_burdened_cost_tbl => l_burdened_cost_tbl,
6505         p_cost_rate_override_tbl => l_raw_cost_rate_override_tbl,
6506         p_burdened_rate_override_tbl => l_burd_cost_rate_override_tbl,
6507         p_billable_percent_tbl => l_billable_work_percent_tbl,
6508         p_task_name_tbl => l_task_name_tbl,
6509         p_task_number_tbl => l_task_number_tbl,
6510         p_resource_alias_tbl => l_resource_alias_tbl,
6511         p_resource_class_code_tbl => l_resource_class_code_tbl,
6512         p_res_type_code_tbl => l_res_type_code_tbl,
6513         p_resource_code_tbl => l_resource_code_tbl,
6514         p_resource_name => l_resource_name,
6515         p_project_role_id_tbl => l_project_role_id_tbl,
6516         p_project_role_name_tbl => l_project_role_name_tbl ,
6517         p_supplier_id_tbl => l_supplier_id_tbl,
6518         p_supplier_name_tbl => l_supplier_name_tbl,
6519         p_organization_id_tbl => l_organization_id_tbl,
6520         p_organization_name_tbl => l_organization_name_tbl,
6521         p_fc_res_type_code_tbl => l_fc_res_type_code_tbl,
6522         p_named_role_tbl => l_named_role_tbl,
6523         p_financial_category_name_tbl => l_financial_category_name_tbl,
6524         p_incur_by_resource_code_tbl => l_incur_by_resource_code_tbl,
6525         p_attribute_category_tbl => l_attribute_category_tbl,
6526         p_attribute1_tbl => l_attribute1_tbl,
6527         p_attribute2_tbl => l_attribute2_tbl,
6528         p_attribute3_tbl => l_attribute3_tbl,
6529         p_attribute4_tbl => l_attribute4_tbl,
6530         p_attribute5_tbl => l_attribute5_tbl,
6531         p_attribute6_tbl => l_attribute6_tbl,
6532         p_attribute7_tbl => l_attribute7_tbl,
6533         p_attribute8_tbl => l_attribute8_tbl,
6534         p_attribute9_tbl => l_attribute9_tbl,
6535         p_attribute10_tbl => l_attribute10_tbl,
6536         p_attribute11_tbl => l_attribute11_tbl,
6537         p_attribute12_tbl => l_attribute12_tbl,
6538         p_attribute13_tbl => l_attribute13_tbl,
6539         p_attribute14_tbl => l_attribute14_tbl,
6540         p_attribute15_tbl => l_attribute15_tbl,
6541         p_attribute16_tbl => l_attribute16_tbl,
6542         p_attribute17_tbl => l_attribute17_tbl,
6543         p_attribute18_tbl => l_attribute18_tbl,
6544         p_attribute19_tbl => l_attribute19_tbl,
6545         p_attribute20_tbl => l_attribute20_tbl,
6546         p_attribute21_tbl => l_attribute21_tbl,
6547         p_attribute22_tbl => l_attribute22_tbl,
6548         p_attribute23_tbl => l_attribute23_tbl,
6549         p_attribute24_tbl => l_attribute24_tbl,
6550         p_attribute25_tbl => l_attribute25_tbl,
6551         p_attribute26_tbl => l_attribute26_tbl,
6552         p_attribute27_tbl => l_attribute27_tbl,
6553         p_attribute28_tbl => l_attribute28_tbl,
6554         p_attribute29_tbl => l_attribute29_tbl,
6555         p_attribute30_tbl => l_attribute30_tbl,
6556         p_scheduled_delay => l_scheduled_delay_tbl, --Bug 3948128
6557         p_upd_cost_amts_too_for_ta_flg => 'Y', -- Bug 4538286
6558         p_spread_curve_id_tbl => l_spread_curve_id_tbl, --Bug#8646853
6559 	p_sp_fixed_date_tbl => l_fixed_date_tbl,--Bug#8646853
6560         x_return_status   => x_return_status,
6561         x_msg_count       => x_msg_count,
6562         x_msg_data        => x_msg_data
6563         );
6564 
6565     -- Bug 4200146: Prevent rollup from happening in PJI plan update call
6566     --              Turn off the mask.
6567     IF g_periodic_mode IS NULL THEN
6568        PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
6569     END IF;
6570 
6571 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6572           pa_debug.g_err_stage:='Return status after update planning transactions.' ||x_return_status;
6573           pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6574 END IF;
6575 
6576       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6577                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
6578       ELSIF  (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6579                 RAISE  FND_API.G_EXC_ERROR;
6580       END IF;
6581         END IF;
6582 
6583 
6584 
6585                 FOR i in 1..(u_index+c_index) LOOP
6586 
6587 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6588                   pa_debug.g_err_stage:='Obtaining Task Assignment Ids index:' || i;
6589                   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6590 END IF;
6591           IF  l_cbs_enabled_project = 'N' THEN -- Added for CBS 16598322
6592                   open c_cur_out( l_struct_elem_version_id, l_project_id, l_task_elem_version_id_tbl(i), p_task_assignments_in(i).resource_list_member_id );
6593                   fetch c_cur_out into c_rec_out;
6594 
6595                   IF c_cur_out%FOUND THEN
6596 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6597                     pa_debug.g_err_stage:='Success on index:' || i;
6598                     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6599 END IF;
6600                     p_task_assignments_out(i).return_status  := 'S';
6601                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'S';
6602 
6603                   ELSE
6604 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6605                     pa_debug.g_err_stage:='Errored on index:' || i;
6606                     pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6607 END IF;
6608                     p_task_assignments_out(i).return_status  := 'E';
6609                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'E';
6610                   END IF;
6611 
6612 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6613                    pa_debug.g_err_stage:='Out resource_assignment_id:' || c_rec_out.resource_assignment_id;
6614                    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6615                    pa_debug.g_err_stage:='Out resource alias:' || c_rec_out.alias;
6616                    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6617 END IF;
6618 
6619                   p_task_assignments_out(i).pa_task_assignment_id  := c_rec_out.resource_assignment_id;
6620                   p_task_assignments_out(i).resource_alias         := c_rec_out.alias;
6621 
6622                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).pa_task_assignment_id := c_rec_out.resource_assignment_id;
6623                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).resource_alias        := c_rec_out.alias;
6624 
6625 
6626                   close c_cur_out;
6627 	    ELSE-- Added for CBS 16598322
6628 		                  open c_cur_out_for_cbs( l_struct_elem_version_id, l_project_id, l_task_elem_version_id_tbl(i), p_task_assignments_in(i).resource_list_member_id,p_task_assignments_in(i).cbs_element_id );
6629                   fetch c_cur_out_for_cbs into c_rec_out_for_cbs;
6630 
6631                   IF c_cur_out_for_cbs%FOUND THEN
6632 						IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6633 											pa_debug.g_err_stage:='Success on index:' || i;
6634 											pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6635 						END IF;
6636                     p_task_assignments_out(i).return_status  := 'S';
6637                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'S';
6638 
6639                   ELSE
6640 						IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6641 											pa_debug.g_err_stage:='Errored on index:' || i;
6642 											pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6643 						END IF;
6644                     p_task_assignments_out(i).return_status  := 'E';
6645                         PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).return_status:= 'E';
6646                   END IF;
6647 
6648 						IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6649 										   pa_debug.g_err_stage:='Out resource_assignment_id:' || c_rec_out_for_cbs.resource_assignment_id;
6650 										   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6651 										   pa_debug.g_err_stage:='Out resource alias:' || c_rec_out_for_cbs.alias;
6652 										   pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6653 						END IF;
6654 
6655                   p_task_assignments_out(i).pa_task_assignment_id  := c_rec_out_for_cbs.resource_assignment_id;
6656                   p_task_assignments_out(i).resource_alias         := c_rec_out_for_cbs.alias;
6657 
6658                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).pa_task_assignment_id := c_rec_out_for_cbs.resource_assignment_id;
6659                   PA_TASK_ASSIGNMENTS_PUB.g_task_asgmts_out_tbl(i).resource_alias        := c_rec_out_for_cbs.alias;
6660 
6661 
6662                   close c_cur_out_for_cbs;
6663 
6664 		END IF;-- Added for CBS 16598322
6665 
6666               END LOOP;
6667 
6668          -- Bug 4200146: Call PJI update update
6669          IF nvl(p_task_assignments_in.COUNT, 0) > 0 AND g_periodic_mode IS NULL THEN
6670            PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (p_plan_version_id => l_budget_version_id,  -- added for bug 5469303
6671                                                x_msg_code => l_msg_code,
6672                                                x_return_status => l_return_status);
6673 
6674 
6675            IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6676              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6677            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
6678              RAISE FND_API.G_EXC_ERROR;
6679            END IF;
6680 
6681          END IF;
6682 
6683          IF FND_API.to_boolean( p_commit ) THEN
6684 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6685 	    pa_debug.g_err_stage:='COMMIT done in Update Task Assignments';
6686 	    pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6687 END IF;
6688             COMMIT;
6689          END IF;
6690 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6691          pa_debug.g_err_stage:='End of Update_Task_Assignment';
6692          pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6693 END IF;
6694 
6695 
6696 EXCEPTION
6697 
6698   WHEN FND_API.G_EXC_ERROR
6699   THEN
6700       ROLLBACK TO UPDATE_task_asgmts_pub;
6701 
6702 
6703       x_return_status := FND_API.G_RET_STS_ERROR;
6704 IF P_DEBUG_MODE = 'Y' THEN
6705       PA_DEBUG.write_log (x_module => G_PKG_NAME
6706                               ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
6707                               ,x_log_level   => 5);
6708 END IF;
6709 
6710       FND_MSG_PUB.Count_And_Get
6711           (   p_count    =>  x_msg_count  ,
6712               p_data    =>  x_msg_data  );
6713 
6714   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
6715   THEN
6716       ROLLBACK TO UPDATE_task_asgmts_pub;
6717 
6718 
6719       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6720 IF P_DEBUG_MODE = 'Y' THEN
6721       PA_DEBUG.write_log (x_module => G_PKG_NAME
6722                               ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
6723                               ,x_log_level   => 5);
6724 END IF;
6725       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6726       THEN
6727         FND_MSG_PUB.add_exc_msg
6728             ( p_pkg_name    => G_PKG_NAME
6729             , p_procedure_name  => l_api_name  );
6730 
6731       END IF;
6732       FND_MSG_PUB.Count_And_Get
6733           (   p_count    =>  x_msg_count  ,
6734               p_data    =>  x_msg_data  );
6735 
6736   WHEN OTHERS THEN
6737       ROLLBACK TO UPDATE_task_asgmts_pub;
6738 
6739       -- Bug 4200146: Reset the mask.
6740       PA_TASK_PUB1.G_CALL_PJI_ROLLUP := null;
6741 
6742       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6743 IF P_DEBUG_MODE = 'Y' THEN
6744       PA_DEBUG.write_log (x_module => G_PKG_NAME
6745                               ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
6746                               ,x_log_level   => 5);
6747 END IF;
6748       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6749       THEN
6750         FND_MSG_PUB.add_exc_msg
6751             ( p_pkg_name    => G_PKG_NAME
6752             , p_procedure_name  => l_api_name  );
6753 
6754       END IF;
6755 
6756       FND_MSG_PUB.Count_And_Get
6757           (   p_count    =>  x_msg_count  ,
6758               p_data    =>  x_msg_data  );
6759 
6760 END UPDATE_TASK_ASSIGNMENTS;
6761 
6762 
6763 
6764 
6765 
6766 PROCEDURE Fetch_Task_Assignments
6767 ( p_api_version_number      IN    NUMBER           := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6768  ,p_init_msg_list                   IN    VARCHAR2         := FND_API.G_FALSE
6769  ,p_task_asgmt_index        IN    pa_num_1000_num  := pa_num_1000_num(PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
6770  ,p_pm_task_asgmt_reference     OUT       NOCOPY pa_vc_1000_30
6771  ,p_pa_task_assignment_id       OUT       NOCOPY pa_num_1000_num
6772  ,p_pm_task_reference       OUT   NOCOPY pa_vc_1000_30
6773  ,p_pa_task_id              OUT   NOCOPY pa_num_1000_num
6774  ,p_resource_alias          OUT   NOCOPY pa_vc_1000_80
6775  ,p_resource_list_member_id OUT   NOCOPY pa_num_1000_num
6776  ,p_cbs_element_id OUT   NOCOPY pa_num_1000_num -- Added for CBS 16598322
6777  ,x_return_status                   OUT   NOCOPY VARCHAR2
6778 ) IS
6779    l_api_name      CONSTANT  VARCHAR2(30)     := 'fetch_task_assignments';
6780    l_index          NUMBER;
6781    i            NUMBER;
6782 
6783 L_FuncProc varchar2(2000);
6784 
6785 BEGIN
6786            L_FuncProc := 'Fetch_Task_Asgmts';
6787 
6788 IF P_DEBUG_MODE = 'Y' AND (li_curr_level <= 3) THEN
6789            pa_debug.g_err_stage:='Entered ' || L_FuncProc;
6790            pa_debug.write(G_PKG_NAME ,pa_debug.g_err_stage,3);
6791 END IF;
6792 
6793            --dbms_output.put_line('Entering Fetch Task Assignments');
6794 
6795            p_pm_task_asgmt_reference    := pa_vc_1000_30();
6796            p_pa_task_assignment_id        := pa_num_1000_num();
6797            p_pm_task_reference       :=  pa_vc_1000_30();
6798            p_pa_task_id              := pa_num_1000_num();
6799            p_resource_alias           := pa_vc_1000_80();
6800            p_resource_list_member_id  := pa_num_1000_num();
6801            p_cbs_element_id :=pa_num_1000_num(); --added for the bug 16924151
6802 
6803            p_pm_task_asgmt_reference.extend(p_task_asgmt_index.COUNT);
6804            p_pa_task_assignment_id.extend(p_task_asgmt_index.COUNT);
6805            p_pm_task_reference.extend(p_task_asgmt_index.COUNT);
6806            p_pa_task_id.extend(p_task_asgmt_index.COUNT);
6807            p_resource_alias.extend(p_task_asgmt_index.COUNT);
6808            p_resource_list_member_id.extend(p_task_asgmt_index.COUNT);
6809 
6810 		   p_cbs_element_id.extend(p_task_asgmt_index.COUNT); -- Added for CBS 16598322
6811 
6812            --dbms_output.put_line('After initializing out parameters');
6813 
6814         --  Standard begin of API savepoint
6815 
6816             SAVEPOINT fetch_task_assignments_pub;
6817 
6818         --  Standard call to check for call compatibility.
6819 
6820             IF NOT FND_API.Compatible_API_Call ( 1.0, --g_api_version_number  ,
6821                                        p_api_version_number  ,
6822                                        l_api_name         ,
6823                                        G_PKG_NAME         )
6824             THEN
6825 
6826                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6827 
6828             END IF;
6829 
6830         --  Initialize the message table if requested.
6831 
6832             IF FND_API.TO_BOOLEAN( p_init_msg_list )
6833             THEN
6834                 FND_MSG_PUB.initialize;
6835             END IF;
6836 
6837         --  Set API return status to success
6838 
6839          x_return_status := FND_API.G_RET_STS_SUCCESS;
6840 
6841         --  Check Task index value, when they don't provide an index we will error out
6842 FOR i in 1..p_task_asgmt_index.COUNT LOOP
6843 
6844          --dbms_output.put_line('Entering Fetch Loop: p_task_asgmt_index.COUNT' || p_task_asgmt_index.COUNT);
6845 
6846             IF p_task_asgmt_index(i) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6847             OR p_task_asgmt_index(i) IS NULL THEN
6848 
6849                          --dbms_output.put_line('Asgmt index is not passed.');
6850 
6851                                 RETURN;
6852 
6853                               IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6854                                          pa_interface_utils_pub.map_new_amg_msg
6855                                            ( p_old_message_code => 'PA_INDEX_NOT_PROVIDED'
6856                                             ,p_msg_attribute    => 'CHANGE'
6857                                             ,p_resize_flag      => 'N'
6858                                             ,p_msg_context      => 'GENERAL'
6859                                             ,p_attribute1       => ''
6860                                             ,p_attribute2       => ''
6861                                             ,p_attribute3       => ''
6862                                             ,p_attribute4       => ''
6863                                             ,p_attribute5       => '');
6864                                END IF;
6865 
6866                         x_return_status := FND_API.G_RET_STS_ERROR;
6867                         RAISE FND_API.G_EXC_ERROR;
6868 
6869             END IF;
6870 
6871           IF g_task_asgmts_out_tbl.exists(p_task_asgmt_index(i)) AND
6872              g_task_asgmts_out_tbl(p_task_asgmt_index(i)).return_status  = 'S' THEN
6873 
6874                          --dbms_output.put_line('out table exists.');
6875 
6876                         --  assign global table fields to the outgoing parameter
6877                         --  we don't want to return the big number G_PA_MISS_NUM
6878 
6879                          IF g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_assignment_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
6880                            g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_assignment_id = NULL
6881                          THEN
6882 
6883                                 p_pa_task_assignment_id(i)   := NULL;
6884 
6885                         ELSE
6886                                  --dbms_output.put_line('setting task assignment id for index ' || p_task_asgmt_index(i));
6887                                  p_pa_task_assignment_id(i)   := NULL;
6888                                 --dbms_output.put_line('setting task assignment id for index res id' || g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_assignment_id);
6889                                 p_pa_task_assignment_id(i)        := g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_assignment_id;
6890                                  --dbms_output.put_line('after set');
6891 
6892                          END IF;
6893 
6894                         IF g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
6895                            g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_id  = NULL
6896                         THEN
6897                                 --dbms_output.put_line('task id is null');
6898                                   p_pa_task_id(i)                   := NULL;
6899 
6900                           ELSE
6901                                 --dbms_output.put_line('task id is not null');
6902                                   p_pa_task_id(i)                   := g_task_asgmts_out_tbl(p_task_asgmt_index(i)).pa_task_id;
6903                                  --dbms_output.put_line('task id is set');
6904                         END IF;
6905 
6906                         IF g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_alias = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR
6907                            g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_alias = NULL
6908                         THEN
6909                                   --dbms_output.put_line('null  resource alias');
6910                                  p_resource_alias(i)          := NULL;
6911                                    --dbms_output.put_line('after null  resource alias');
6912                           ELSE
6913                                    --dbms_output.put_line('setting resource alias');
6914                                         p_resource_alias(i)               := g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_alias;
6915                                          --dbms_output.put_line('after setting resource alias');
6916                          END IF;
6917 
6918                         IF g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_list_member_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
6919                            g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_list_member_id = NULL
6920                         THEN
6921                                  --dbms_output.put_line('null resource list member id');
6922                                  p_resource_list_member_id(i) := NULL;
6923                                  --dbms_output.put_line('after null resource list member id');
6924                          ELSE
6925                                   --dbms_output.put_line('setting resource list member id');
6926                                  p_resource_list_member_id(i)      := g_task_asgmts_out_tbl(p_task_asgmt_index(i)).resource_list_member_id;
6927                                 --dbms_output.put_line('after setting resource list member id');
6928                         END IF;
6929 
6930 						-- Added for CBS 16598322
6931 						IF g_task_asgmts_out_tbl(p_task_asgmt_index(i)).cbs_element_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
6932                            g_task_asgmts_out_tbl(p_task_asgmt_index(i)).cbs_element_id = NULL
6933                         THEN
6934                                  p_cbs_element_id(i) := NULL;
6935                          ELSE
6936                                  p_cbs_element_id(i)      := g_task_asgmts_out_tbl(p_task_asgmt_index(i)).cbs_element_id;
6937                         END IF;
6938 
6939 
6940             END IF;
6941   --dbms_output.put_line('out table end of loop');
6942  --dbms_output.put_line('out table end of fetch task assignments.');
6943 
6944 END LOOP;
6945 
6946 EXCEPTION
6947 
6948   WHEN FND_API.G_EXC_ERROR
6949   THEN
6950      ROLLBACK TO fetch_task_assignments_pub;
6951 
6952      x_return_status := FND_API.G_RET_STS_ERROR;
6953 IF P_DEBUG_MODE = 'Y' THEN
6954      PA_DEBUG.write_log (x_module => G_PKG_NAME
6955                              ,x_msg         => 'Expected Error:' || L_FuncProc || SQLERRM
6956                              ,x_log_level   => 5);
6957 END IF;
6958 
6959   WHEN FND_API.G_EXC_UNEXPECTED_ERROR
6960   THEN
6961      ROLLBACK TO fetch_task_assignments_pub;
6962 
6963      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6964 IF P_DEBUG_MODE = 'Y' THEN
6965      PA_DEBUG.write_log (x_module => G_PKG_NAME
6966                              ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
6967                              ,x_log_level   => 5);
6968 END IF;
6969 
6970 
6971   WHEN OTHERS THEN
6972      ROLLBACK TO fetch_task_assignments_pub;
6973 
6974      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6975 IF P_DEBUG_MODE = 'Y' THEN
6976      PA_DEBUG.write_log (x_module => G_PKG_NAME
6977                              ,x_msg         => 'Unexpected Error:' || L_FuncProc || SQLERRM
6978                              ,x_log_level   => 5);
6979 END IF;
6980 
6981 
6982 
6983 END;
6984 
6985 
6986 
6987 PROCEDURE Init_Task_Assignments IS
6988 BEGIN
6989          -->>  Empty global tables , count
6990                  g_task_asgmts_in_tbl     := empty_task_asgmts_in_tbl;
6991              g_task_asgmts_out_tbl    := empty_task_asgmts_out_tbl;
6992                  g_task_asgmts_tbl_count  := 0;
6993              g_asgmts_periods_tbl     := empty_asgmts_periods_tbl;
6994                  g_asgmts_periods_out_tbl := empty_task_asgmts_out_tbl;
6995              g_asgmts_periods_tbl_count := 0;
6996 END;
6997 
6998 
6999 PROCEDURE Convert_PM_TARef_To_ID
7000 ( p_pm_product_code           IN VARCHAR2
7001  ,p_pa_project_id             IN NUMBER
7002  ,p_pa_structure_version_id   IN NUMBER
7003  ,p_pa_task_id                IN NUMBER
7004  ,p_pa_task_elem_ver_id       IN NUMBER
7005  ,p_pm_task_asgmt_reference   IN VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7006  ,p_pa_task_assignment_id     IN NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7007  ,p_resource_alias            IN VARCHAR2     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7008  ,p_resource_list_member_id   IN NUMBER       := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7009  ,p_cbs_element_id   IN NUMBER := null -- Added for CBS 16598322
7010  -- Bug 3937017 Added a new parameter p_add_error_msg_flag
7011  ,p_add_error_msg_flag        IN VARCHAR2     DEFAULT 'Y'
7012  -- Bug 3872176 Added a new parameter p_published_version_flag
7013  ,p_published_version_flag     IN VARCHAR2     DEFAULT 'N'
7014  ,x_pa_task_assignment_id     OUT  NOCOPY NUMBER
7015  ,x_return_status             OUT  NOCOPY VARCHAR2
7016 ) IS
7017 L_FuncProc varchar2(250) ;
7018 
7019 -- Bug 3872176 select more related project information
7020 CURSOR  l_project_id_csr
7021 IS
7022 SELECT  'X', template_flag, PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(project_id)
7023 FROM    pa_projects_all
7024 where   project_id = p_pa_project_id;
7025 
7026 -- 3860640 Added parameter to the cursor
7027 -- and using it in the where condition instead of input parameter
7028 -- p_pa_structure_version_id which may be null if it is called from
7029 -- ASSOCIATE_DLV_TO_TASK_ASSIGN api
7030 
7031 CURSOR  l_task_asgmt_id_csr(l_struct_ver_id NUMBER)
7032 IS
7033 SELECT  'X'
7034 FROM    pa_resource_assignments a, pa_budget_versions b
7035 WHERE   a.resource_assignment_id = p_pa_task_assignment_id
7036 AND     a.project_id = p_pa_project_id
7037 AND     b.budget_version_id = a.budget_version_id
7038 AND     b.project_structure_version_id = l_struct_ver_id;
7039 
7040 
7041 CURSOR c_task_asgmt_csr(p_struct_version_id IN NUMBER) IS
7042 SELECT a.resource_assignment_id
7043 FROM    pa_resource_assignments a, pa_budget_versions b
7044 WHERE   a.project_id                   = p_pa_project_id
7045 AND     b.budget_version_id            = a.budget_version_id
7046 AND     b.project_structure_version_id = p_struct_version_id
7047 AND     a.pm_res_assignment_reference  = p_pm_task_asgmt_reference
7048 AND     a.pm_product_code = p_pm_product_code;
7049 
7050 CURSOR c_task_asgmt_from_id_csr(p_struct_version_id IN NUMBER) IS
7051 SELECT a.resource_assignment_id
7052 FROM    pa_resource_assignments a, pa_budget_versions b
7053 WHERE   a.project_id                   = p_pa_project_id
7054 AND     b.budget_version_id            = a.budget_version_id
7055 AND     b.project_structure_version_id = p_struct_version_id
7056 AND     a.wbs_element_version_id = p_pa_task_elem_ver_id
7057 AND     a.resource_list_member_id = p_resource_list_member_id
7058 AND     NVL(a.cbs_element_id,-1) = NVL(p_cbs_element_id,-1); -- Added for CBS 16598322
7059 
7060 
7061 l_api_name  CONSTANT    VARCHAR2(30) := 'Convert_pm_taref_to_id';
7062 l_task_ver_id               NUMBER ;
7063 l_task_asgmt_id         NUMBER ;
7064 l_struct_elem_version_id NUMBER;
7065 l_dummy                 VARCHAR2(1);
7066 l_template_flag         VARCHAR2(1);
7067 l_version_enabled_flag  VARCHAR2(1);
7068 
7069 --needed to get the field values associated to a AMG message
7070 
7071    CURSOR   l_amg_project_csr
7072       (p_pa_project_id pa_projects_all.project_id%type)
7073    IS
7074    SELECT   segment1
7075    FROM     pa_projects_all p
7076    WHERE p.project_id = p_pa_project_id;
7077 
7078    l_amg_segment1       VARCHAR2(25);
7079 --Added by rtarway for BUG 3872176
7080 CURSOR c_task_asgmt_csr_pub_ver ( l_structure_version_id NUMBER )
7081    IS
7082 SELECT  published_version.resource_assignment_id
7083 FROM    pa_resource_assignments published_version,
7084         (SELECT   task_id, resource_list_member_id
7085          FROM     pa_resource_assignments ra,
7086                   pa_budget_versions bv,
7087                   pa_proj_elem_ver_structure pevs
7088          WHERE    ra.pm_product_code = p_pm_product_code
7089          AND      ra.pm_res_assignment_reference = p_pm_task_asgmt_reference
7090          AND      ra.project_id = p_pa_project_id
7091          AND      ra.budget_version_id = bv.budget_version_id
7092          AND      bv.project_id = p_pa_project_id
7093          AND      bv.project_structure_version_id = pevs.element_version_id
7094          AND      pevs.current_flag = 'N'
7095          AND      pevs.project_id = p_pa_project_id) working_version,
7096         pa_budget_versions bv
7097 WHERE   working_version.task_id = published_version.task_id
7098 AND     working_version.resource_list_member_id =  published_version.resource_list_member_id
7099 AND     bv.project_structure_version_id = l_structure_version_id
7100 AND     published_version.project_id = p_pa_project_id
7101 AND     bv.budget_version_id = published_version.budget_version_id
7102 AND     rownum = 1;
7103 
7104 -- Bug 3872176 Cursor to get the structure_version_id of a template
7105 CURSOR get_template_struct_ver IS
7106      select c.element_version_id
7107         from pa_proj_element_versions c,
7108              pa_proj_elements b,
7109              pa_proj_structure_types a,
7110              pa_structure_types d
7111        where d.structure_type_class_code = 'WORKPLAN'
7112          and d.structure_type_id = a.structure_type_id
7113          and a.proj_element_id = b.proj_element_id
7114          and b.project_id = p_pa_project_id
7115          and b.proj_element_id = c.proj_element_id
7116          and b.project_id = c.project_id
7117          and c.object_type = 'PA_STRUCTURES';
7118 -- End of Bug 3872176
7119 
7120    l_published_struct_elem_ver_id NUMBER;
7121    l_struct_ver_id NUMBER;
7122 
7123 BEGIN
7124 
7125    x_return_status :=  FND_API.G_RET_STS_SUCCESS;
7126 
7127    -- Bug 3872176 get project information
7128    OPEN l_project_id_csr;
7129    FETCH l_project_id_csr INTO l_dummy, l_template_flag, l_version_enabled_flag;
7130    CLOSE l_project_id_csr;
7131 
7132    IF p_pa_project_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7133       AND p_pa_project_id IS NOT NULL  THEN
7134 
7135       IF l_dummy IS NULL THEN
7136 
7137                         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7138                            THEN
7139                              pa_interface_utils_pub.map_new_amg_msg
7140                               ( p_old_message_code => 'PA_INVALID_PROJECT_ID'
7141                                ,p_msg_attribute    => 'CHANGE'
7142                                ,p_resize_flag      => 'N'
7143                                ,p_msg_context      => 'GENERAL'
7144                                ,p_attribute1       => ''
7145                                ,p_attribute2       => ''
7146                                ,p_attribute3       => ''
7147                                ,p_attribute4       => ''
7148                                ,p_attribute5       => '');
7149                       END IF;
7150 
7151                          RAISE FND_API.G_EXC_ERROR;
7152                 END IF;
7153 
7154    ELSE
7155 
7156                  IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7157                  THEN
7158                              pa_interface_utils_pub.map_new_amg_msg
7159                               ( p_old_message_code => 'PA_PROJECT_ID_MISSING'
7160                                ,p_msg_attribute    => 'CHANGE'
7161                                ,p_resize_flag      => 'N'
7162                                ,p_msg_context      => 'GENERAL'
7163                                ,p_attribute1       => ''
7164                                ,p_attribute2       => ''
7165                                ,p_attribute3       => ''
7166                                ,p_attribute4       => ''
7167                                ,p_attribute5       => '');
7168                  END IF;
7169 
7170                  RAISE FND_API.G_EXC_ERROR;
7171 
7172    END IF;
7173 
7174    IF  p_pa_structure_version_id IS NOT NULL AND
7175             (p_pa_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) THEN
7176 
7177              l_struct_elem_version_id := p_pa_structure_version_id;
7178 
7179 --Added by rtarway for BUG 3872176
7180     -- 1. Project, VE Structure , Working version
7181     ELSIF l_template_flag = 'N' AND p_PUBLISHED_VERSION_FLAG = 'N' AND l_version_enabled_flag = 'Y' THEN
7182 
7183              l_struct_elem_version_id := PA_PROJECT_STRUCTURE_UTILS.get_current_working_ver_id(
7184                                          p_project_id => p_pa_project_id);
7185 
7186     -- 2. Project, VE Structure, Published version
7187     ELSIF l_template_flag = 'N' AND p_PUBLISHED_VERSION_FLAG = 'Y' AND l_version_enabled_flag = 'Y' THEN
7188 
7189              l_struct_elem_version_id := pa_project_structure_utils.GET_LATEST_WP_VERSION(
7190                                               p_project_id => p_pa_project_id);
7191 
7192     -- 3. Project, VD Structure
7193     ELSIF l_template_flag = 'N' AND l_version_enabled_flag = 'N' THEN
7194              --dbms_output.put_line('Getting current structure version'  );
7195              l_struct_elem_version_id := pa_project_structure_utils.GET_LATEST_WP_VERSION(
7196                                               p_project_id => p_pa_project_id);
7197 
7198     -- 4. Template
7199     ELSIF l_template_flag = 'Y' THEN
7200 
7201              OPEN get_template_struct_ver;
7202              FETCH get_template_struct_ver INTO l_struct_elem_version_id;
7203              CLOSE get_template_struct_ver;
7204 
7205 --End Add by rtarway for BUG 3872176
7206 
7207     END IF;
7208 
7209       --dbms_output.put_line(' structure version is: ' || l_struct_elem_version_id );
7210             --dbms_output.put_line(' testing str if..' );
7211 
7212         IF ( l_struct_elem_version_id IS NULL OR
7213              l_struct_elem_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7214               )
7215 
7216        THEN
7217                          --dbms_output.put_line(' test struct.null or g miss..');
7218 
7219                     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7220                     THEN
7221                             --dbms_output.put_line(' test struct.null or gmiss err..');
7222                                pa_interface_utils_pub.map_new_amg_msg
7223                                     ( p_old_message_code => 'PA_PS_STRUC_VER_REQ'
7224                                      ,p_msg_attribute    => 'CHANGE'
7225                                      ,p_resize_flag      => 'N'
7226                                      ,p_msg_context      => 'GENERAL'
7227                                      ,p_attribute1       => ''
7228                                      ,p_attribute2       => ''
7229                                      ,p_attribute3       => ''
7230                                      ,p_attribute4       => ''
7231                                      ,p_attribute5       => '');
7232                     END IF;
7233                  RAISE FND_API.G_EXC_ERROR;
7234        END IF;
7235 
7236    IF p_pa_task_id <>  PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7237    AND p_pa_task_id IS NOT NULL
7238    THEN
7239 
7240                 -- Get segment1 for AMG messages
7241 
7242                        OPEN l_amg_project_csr( p_pa_project_id );
7243                        FETCH l_amg_project_csr INTO l_amg_segment1;
7244                        CLOSE l_amg_project_csr;
7245 
7246                       l_task_ver_id := pa_proj_elements_utils.get_task_version_id(
7247                                         l_struct_elem_version_id,
7248                                         p_pa_task_id);
7249 --dbms_output.put_line(l_task_ver_id);
7250                IF l_task_ver_id is NULL
7251                THEN
7252                          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7253                          THEN
7254                              pa_interface_utils_pub.map_new_amg_msg
7255                               ( p_old_message_code => 'PA_TASK_ID_INVALID'
7256                                ,p_msg_attribute    => 'CHANGE'
7257                                ,p_resize_flag      => 'N'
7258                                ,p_msg_context      => 'PROJ'
7259                                ,p_attribute1       => l_amg_segment1
7260                                ,p_attribute2       => ''
7261                                ,p_attribute3       => ''
7262                                ,p_attribute4       => ''
7263                                ,p_attribute5       => '');
7264                           END IF;
7265 
7266 
7267                          RAISE FND_API.G_EXC_ERROR;
7268                 END IF;
7269 
7270         --p_out_task_id := p_pa_task_id;  --JRAJ.
7271     END IF;  --IF p_pa_task_id <>  PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7272 
7273 
7274 
7275     IF p_pa_task_assignment_id <>  PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7276    AND p_pa_task_assignment_id IS NOT NULL
7277    THEN
7278 --dbms_output.put_line('task assignment id is passed'||p_pa_task_assignment_id);
7279         -- Get segment1 for AMG messages
7280 
7281 
7282                OPEN l_amg_project_csr( p_pa_project_id );
7283                FETCH l_amg_project_csr INTO l_amg_segment1;
7284                CLOSE l_amg_project_csr;
7285 
7286                -- 3860640 Passing derived structure version id to l_task_asgmt_id_csr cursor
7287                OPEN l_task_asgmt_id_csr(l_struct_elem_version_id);
7288                FETCH l_task_asgmt_id_csr INTO l_dummy;
7289 
7290                IF l_task_asgmt_id_csr%NOTFOUND
7291                THEN
7292                          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7293                          THEN
7294                              pa_interface_utils_pub.map_new_amg_msg
7295                               ( p_old_message_code => 'PA_TASK_ASGMT_ID_INVALID'
7296                                ,p_msg_attribute    => 'CHANGE'
7297                                ,p_resize_flag      => 'N'
7298                                ,p_msg_context      => 'PROJ'
7299                                ,p_attribute1       => l_amg_segment1
7300                                ,p_attribute2       => ''
7301                                ,p_attribute3       => ''
7302                                ,p_attribute4       => ''
7303                                ,p_attribute5       => '');
7304                           END IF;
7305 
7306                         CLOSE l_task_asgmt_id_csr;
7307                          RAISE FND_API.G_EXC_ERROR;
7308                 END IF;
7309 
7310                  CLOSE l_task_asgmt_id_csr;
7311 
7312                  x_pa_task_assignment_id := p_pa_task_assignment_id;  --JRAJ.
7313     ELSIF p_pm_task_asgmt_reference <>  PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7314        AND p_pm_task_asgmt_reference IS NOT NULL
7315     THEN
7316 
7317 
7318               --dbms_output.put_line('p_pm_task_asgmt_reference'||p_pm_task_asgmt_reference);
7319                   --Added by rtarway for BUG 3872176
7320                  --Added If condition
7321                  IF (p_published_version_flag = 'N')
7322                  THEN
7323                       OPEN c_task_asgmt_csr(l_struct_elem_version_id);
7324                       FETCH c_task_asgmt_csr INTO l_task_asgmt_id ;
7325                       CLOSE c_task_asgmt_csr;
7326 
7327 
7328                       -- 4216541
7329                       IF l_task_asgmt_id  IS NULL THEN
7330 
7331                         IF p_pa_task_elem_ver_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
7332                            p_pa_task_elem_ver_id IS NOT NULL AND
7333                           p_resource_list_member_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
7334                           p_resource_list_member_id IS NOT NULL
7335                         THEN
7336 
7337                           OPEN c_task_asgmt_from_id_csr(l_struct_elem_version_id);
7338                           FETCH c_task_asgmt_from_id_csr INTO l_task_asgmt_id ;
7339                           CLOSE c_task_asgmt_from_id_csr;
7340 
7341                         END IF;    -- IF p_pa_task_elem_ver_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
7342                         -- END OF 4216541
7343 
7344                         IF  l_task_asgmt_id  IS NULL THEN
7345 
7346                                   IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
7347                                   AND p_add_error_msg_flag = 'Y'    -- Bug 3937017
7348                                   -- In update_task_assignments flow, convert_pm_taref_to_id is called to determine whether
7349                                   -- the given assignment data should be created (if failed to convert) or updated (if conversion
7350                                   -- succeeds).  Therefore, in this flow, failing to convert is not really an expected error
7351                                   -- suitable to be added to the fnd error stack. Hence checking the value of
7352                                   -- p_add_error_msg_flag before adding this error to the error stack.
7353                                   THEN
7354                                              FND_MESSAGE.SET_NAME('PA','PA_API_CONV_ERROR_AMG'); -- Bug 2257612
7355                                              FND_MESSAGE.SET_TOKEN('ATTR_NAME','Pm Task Assignment Reference');
7356                                              FND_MESSAGE.SET_TOKEN('ATTR_VALUE',p_pm_task_asgmt_reference);
7357                                              FND_MSG_PUB.add;
7358 
7359                                              RAISE FND_API.G_EXC_ERROR;
7360 
7361                                   END IF;
7362 
7363                           ELSE
7364                                 x_pa_task_assignment_id := l_task_asgmt_id ;
7365 
7366                           END IF; -- IF  l_task_asgmt_id  IS NULL
7367 
7368 
7369                        ELSE
7370                              x_pa_task_assignment_id := l_task_asgmt_id ;
7371 
7372                        END IF; -- IF l_task_asgmt_id  IS NULL
7373 
7374                 ELSE
7375                       --Update from BUG 3872176
7376                     /*   3.2 write a new cursor to return the assignment in the published version,
7377                          with rlm_id and task_id matching the record in the working version using the
7378                          given TARef.
7379                          3.3 execute the cursor sql and return the resource_assignment_id; or add
7380                          error to message stack if not found.
7381                     */
7382                       OPEN  c_task_asgmt_csr_pub_ver(l_struct_elem_version_id);
7383                       FETCH c_task_asgmt_csr_pub_ver INTO l_task_asgmt_id ;
7384                       CLOSE c_task_asgmt_csr_pub_ver;
7385                       --dbms_output.put_line('l_task_asgmt_id'||l_task_asgmt_id);
7386                       IF  l_task_asgmt_id  IS NULL
7387                       THEN
7388 
7389                                   IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
7390                                   AND p_add_error_msg_flag = 'Y'    -- Bug 3937017
7391                                   THEN
7392                                              FND_MESSAGE.SET_NAME('PA','PA_API_CONV_ERROR_AMG'); -- Bug 2257612
7393                                              FND_MESSAGE.SET_TOKEN('ATTR_NAME','Pm Task Assignment Reference');
7394                                              FND_MESSAGE.SET_TOKEN('ATTR_VALUE',p_pm_task_asgmt_reference);
7395                                              FND_MSG_PUB.add;
7396 
7397                                              RAISE FND_API.G_EXC_ERROR;
7398 
7399                                   END IF;
7400                       ELSE
7401                              x_pa_task_assignment_id := l_task_asgmt_id ;  --JRAJ.
7402 
7403                       END IF;
7404                 END IF;
7405                 --End Added by rtarway for BUG 3872176
7406 
7407 
7408      ELSE
7409 
7410                 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR)
7411                 THEN
7412                      pa_interface_utils_pub.map_new_amg_msg
7413                       ( p_old_message_code => 'PA_TASK_ASGMT_REF_ID_MISSING'
7414                        ,p_msg_attribute    => 'CHANGE'
7415                        ,p_resize_flag      => 'N'
7416                        ,p_msg_context      => 'PROJ'
7417                        ,p_attribute1       => l_amg_segment1
7418                        ,p_attribute2       => ''
7419                        ,p_attribute3       => ''
7420                        ,p_attribute4       => ''
7421                        ,p_attribute5       => '');
7422                     END IF;
7423 
7424             RAISE FND_API.G_EXC_ERROR;
7425 
7426      END IF; -- If p_pa_task_id <>  PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7427    --dbms_output.put_line('l_task_asgmt_id'||l_task_asgmt_id);
7428 EXCEPTION
7429 
7430     WHEN FND_API.G_EXC_ERROR
7431     THEN
7432 
7433 
7434         x_return_status := FND_API.G_RET_STS_ERROR;
7435 
7436     WHEN FND_API.G_EXC_UNEXPECTED_ERROR
7437     THEN
7438 
7439 
7440         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7441 
7442     WHEN OTHERS THEN
7443 
7444 
7445         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7446 
7447         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7448         THEN
7449             FND_MSG_PUB.add_exc_msg
7450                     ( p_pkg_name        => 'PA_TASK_ASSIGNMENT_UTILS'
7451                     , p_procedure_name  => l_api_name   );
7452 
7453         END IF;
7454 
7455 END Convert_pm_taref_to_id;
7456 
7457 end PA_TASK_ASSIGNMENTS_PUB;