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