[Home] [Help]
PACKAGE BODY: APPS.PA_CONTROL_ITEMS_PUB
Source
1 PACKAGE BODY PA_CONTROL_ITEMS_PUB AS
2 --$Header: PACICIPB.pls 120.1 2007/02/08 11:22:30 sukhanna ship $
3
4
5 procedure getPartyIdFromName(
6 p_project_id IN NUMBER
7 ,p_name IN VARCHAR2
8 ,x_party_id OUT NOCOPY NUMBER
9 ,x_return_status OUT NOCOPY VARCHAR2
10 ,x_msg_count OUT NOCOPY NUMBER
11 ,x_msg_data OUT NOCOPY VARCHAR2
12 ) is
13
14 l_party_id NUMBER := NULL;
15
16 BEGIN
17 x_return_status := 'S';
18 BEGIN
19 SELECT DISTINCT ppp.resource_source_id party_id
20 INTO l_party_id
21 FROM hz_parties hzp,
22 pa_project_parties ppp
23 WHERE hzp.party_name = p_name
24 AND hzp.party_type = 'PERSON'
25 AND ppp.resource_source_id = hzp.party_id
26 AND ppp.resource_type_id = 112
27 AND ppp.project_id = p_project_id
28 AND (TRUNC(SYSDATE) BETWEEN TRUNC(ppp.start_date_active)
29 AND TRUNC(NVL(ppp.end_date_active, SYSDATE)));
30
31
32 EXCEPTION
33 when TOO_MANY_ROWS then
34 PA_UTILS.Add_Message( p_app_short_name => 'PA'
35 ,p_msg_name => 'PA_OWNER_NAME_MULTIPLE');
36 x_return_status := 'E';
37 when NO_DATA_FOUND then
38 l_party_id := NULL;
39 when OTHERS then
40 PA_UTILS.Add_Message( p_app_short_name => 'PA'
41 ,p_msg_name => 'PA_CI_NO_OWNER');
42 x_return_status := 'E';
43 END;
44
45 IF (x_return_status = 'S' AND l_party_id is NULL) THEN
46 SELECT DISTINCT ppf.party_id party_id
47 INTO l_party_id
48 FROM pa_project_parties ppp,
49 per_all_people_f ppf
50 WHERE ppf.full_name = p_name
51 AND (TRUNC(SYSDATE) BETWEEN TRUNC(ppf.effective_start_date)
52 AND TRUNC(ppf.effective_end_date))
53 AND ppp.resource_source_id = ppf.person_id
54 AND ppp.resource_type_id = 101
55 AND ppp.project_id = p_project_id
56 AND (TRUNC(SYSDATE) BETWEEN TRUNC(ppp.start_date_active)
57 AND TRUNC(NVL(ppp.end_date_active, SYSDATE)));
58 END IF;
59
60 x_party_id := l_party_id;
61
62 exception when TOO_MANY_ROWS then
63 PA_UTILS.Add_Message( p_app_short_name => 'PA'
64 ,p_msg_name => 'PA_OWNER_NAME_MULTIPLE');
65 x_return_status := 'E';
66
67 when OTHERS then
68 PA_UTILS.Add_Message( p_app_short_name => 'PA'
69 ,p_msg_name => 'PA_CI_NO_OWNER');
70 x_return_status := 'E';
71
72 end getPartyIdFromName;
73
74
75 procedure ADD_CONTROL_ITEM(
76 p_api_version IN NUMBER := 1.0
77 ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
78 ,p_commit IN VARCHAR2 := FND_API.g_false
79 ,p_validate_only IN VARCHAR2 := FND_API.g_true
80 ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
81
82 ,p_ci_type_id IN NUMBER
83 ,p_summary IN VARCHAR2
84 ,p_status_code IN VARCHAR2
85 ,p_owner_id IN NUMBER := NULL
86 ,p_owner_name IN VARCHAR2 := NULL
87 ,p_highlighted_flag IN VARCHAR2 := 'N'
88 ,p_progress_status_code IN VARCHAR2 := NULL
89 ,p_progress_as_of_date IN DATE := NULL
90 ,p_classification_code IN NUMBER
91 ,p_reason_code IN NUMBER
92 ,p_project_id IN NUMBER
93 ,p_object_type IN VARCHAR2 := NULL
94 ,p_object_id IN NUMBER := NULL
95 ,p_object_name IN VARCHAR2 := NULL
96 ,p_ci_number IN VARCHAR2 := NULL
97 ,p_date_required IN DATE := NULL
98 ,p_date_closed IN DATE := NULL
99 ,p_closed_by_id IN NUMBER := NULL
100
101
102 ,p_description IN VARCHAR2 := NULL
103 ,p_status_overview IN VARCHAR2 := NULL
104 ,p_resolution IN VARCHAR2 := NULL
105 ,p_resolution_code IN NUMBER := NULL
106 ,p_priority_code IN VARCHAR2 := NULL
107 ,p_effort_level_code IN VARCHAR2 := NULL
108 ,p_open_action_num IN NUMBER := NULL
109
110 ,p_price IN NUMBER := NULL
111 ,p_price_currency_code IN VARCHAR2 := NULL
112 ,p_source_type_code IN VARCHAR2 := NULL
113 ,p_source_comment IN VARCHAR2 := NULL
114 ,p_source_number IN VARCHAR2 := NULL
115 ,p_source_date_received IN DATE := NULL
116 ,p_source_organization IN VARCHAR2 := NULL
117 ,p_source_person IN VARCHAR2 := NULL
118 ,p_attribute_category IN VARCHAR2 := NULL
119
120 ,p_attribute1 IN VARCHAR2 := NULL
121 ,p_attribute2 IN VARCHAR2 := NULL
122 ,p_attribute3 IN VARCHAR2 := NULL
123 ,p_attribute4 IN VARCHAR2 := NULL
124 ,p_attribute5 IN VARCHAR2 := NULL
125 ,p_attribute6 IN VARCHAR2 := NULL
126 ,p_attribute7 IN VARCHAR2 := NULL
127 ,p_attribute8 IN VARCHAR2 := NULL
128 ,p_attribute9 IN VARCHAR2 := NULL
129 ,p_attribute10 IN VARCHAR2 := NULL
130 ,p_attribute11 IN VARCHAR2 := NULL
131 ,p_attribute12 IN VARCHAR2 := NULL
132 ,p_attribute13 IN VARCHAR2 := NULL
133 ,p_attribute14 IN VARCHAR2 := NULL
134 ,p_attribute15 IN VARCHAR2 := NULL
135
136 ,px_ci_id IN OUT NOCOPY NUMBER
137 ,x_ci_number OUT NOCOPY VARCHAR2
138 ,x_return_status OUT NOCOPY VARCHAR2
139 ,x_msg_count OUT NOCOPY NUMBER
140 ,x_msg_data OUT NOCOPY VARCHAR2
141 ) is
142
143 l_msg_index_out NUMBER;
144 l_last_modified_by_id NUMBER;
145 l_owner_id NUMBER := NULL;
146 l_object_id NUMBER;
147 l_debug_mode VARCHAR2(1);
148 l_debug_level6 CONSTANT NUMBER := 6;
149 g_module_name VARCHAR2(100) := 'pa.plsql.CreateCI,Add_Control_Item';
150 l_classification_code NUMBER; /*Bug 4049588*/
151 l_reason_code NUMBER; /* Bug 4049588*/
152
153 BEGIN
154
155 -- Initialize the Error Stack
156 PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.Add_Control_Item');
157
158 -- Initialize the return status to success
159 x_return_status := FND_API.G_RET_STS_SUCCESS;
160
161 --Clear the global PL/SQL message table
162 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
163 FND_MSG_PUB.initialize;
164 END IF;
165 --get hz_parties.party_id of the logged in user
166 l_last_modified_by_id := PA_CONTROL_ITEMS_UTILS.GetPartyId(fnd_global.user_id );
167 l_owner_id := p_owner_id;
168 l_object_id := p_object_id;
169
170
171 -- check mandatory owner_id
172 IF (l_owner_id IS NULL) THEN
173 IF (p_owner_name is not null) then
174 getPartyIdFromName(
175 p_project_id => p_project_id
176 ,p_name => p_owner_name
177 ,x_party_id => l_owner_id
178 ,x_return_status => x_return_status
179 ,x_msg_count => x_msg_count
180 ,x_msg_data => x_msg_data);
181 ELSE
182 PA_UTILS.Add_Message( p_app_short_name => 'PA'
183 ,p_msg_name => 'PA_CI_NO_OWNER');
184 x_return_status := 'E';
185 END IF;
186 END IF;
187
188 --Bug 4049588. Check if Classification Code and Reason Code are null.
189 l_classification_code := p_classification_code ;
190 l_reason_code := p_reason_code;
191 IF (l_classification_code IS NULL OR l_reason_code IS NULL )
192 THEN
193 IF (l_classification_code IS NULL) THEN
194 PA_UTILS.Add_Message( p_app_short_name => 'PA'
195 ,p_msg_name => 'PA_CI_NO_CLASSIFICATION_CODE');
196 x_return_status := 'E';
197 END IF;
198 IF (l_reason_code IS NULL) THEN
199 PA_UTILS.Add_Message( p_app_short_name => 'PA'
200 ,p_msg_name => 'PA_CI_NO_REASON_CODE');
201 x_return_status := 'E';
202 END IF;
203 END IF;
204
205
206 IF (l_object_id IS NULL AND p_object_name is not null) THEN
207 -- try to get object id from name - as of now we're only handling PA_TASKS objects
208 begin
209 select proj_element_id
210 into l_object_id
211 from PA_FIN_LATEST_PUB_TASKS_V
212 where element_name = p_object_name
213 and project_id = p_project_id;
214
215 exception when TOO_MANY_ROWS then
216 PA_UTILS.Add_Message( p_app_short_name => 'PA'
217 ,p_msg_name => 'PA_OBJECT_NAME_MULTIPLE');
218 x_return_status := 'E';
219
220 when OTHERS then
221 PA_UTILS.Add_Message( p_app_short_name => 'PA'
222 ,p_msg_name => 'PA_OBJECT_NAME_INV');
223 x_return_status := 'E';
224 end;
225
226 END IF;
227
228
229 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
230 IF l_debug_mode = 'Y' THEN
231 pa_debug.g_err_stage:= 'About to call the private method';
232 pa_debug.write(g_module_name,pa_debug.g_err_stage,
233 l_debug_level6);
234 END IF;
235
236 IF (x_return_status <> 'E')THEN
237 PA_CONTROL_ITEMS_PVT.ADD_CONTROL_ITEM(
238 p_api_version
239 ,p_init_msg_list
240 ,p_commit
241 ,p_validate_only
242 ,p_max_msg_count
243
244 ,p_ci_type_id
245 ,p_summary
246 ,p_status_code
247 ,l_owner_id
248 ,nvl(p_highlighted_flag,'N')
249 ,p_progress_status_code
250 ,p_progress_as_of_date
251 ,p_classification_code
252 ,p_reason_code
253 ,p_project_id
254 ,l_last_modified_by_id
255 ,p_object_type
256 ,l_object_id
257 ,p_ci_number
258 ,p_date_required
259 ,p_date_closed
260 ,p_closed_by_id
261
262 ,p_description
263 ,p_status_overview
264 ,p_resolution
265 ,p_resolution_code
266 ,p_priority_code
267 ,p_effort_level_code
268 ,p_open_action_num
269
270 ,p_price
271 ,p_price_currency_code
272 ,p_source_type_code
273 ,p_source_comment
274 ,p_source_number
275 ,p_source_date_received
276 ,p_source_organization
277 ,p_source_person
278
279 ,p_attribute_category
280 ,p_attribute1
281
282 ,p_attribute2
283 ,p_attribute3
284 ,p_attribute4
285 ,p_attribute5
286 ,p_attribute6
287 ,p_attribute7
288 ,p_attribute8
289 ,p_attribute9
290 ,p_attribute10
291 ,p_attribute11
292 ,p_attribute12
293 ,p_attribute13
294 ,p_attribute14
295 ,p_attribute15
296 ,px_ci_id
297 ,x_ci_number
298 ,x_return_status
299 ,x_msg_count
300 ,x_msg_data
301
302 );
303 END IF;
304
305 IF l_debug_mode = 'Y' THEN
306 pa_debug.g_err_stage:= 'private method called';
307 pa_debug.write(g_module_name,pa_debug.g_err_stage,
308 l_debug_level6);
309 END IF;
310
311
312 -- IF the number of messages is 1 then fetch the message code from the stack
313 -- and return its text
314 x_msg_count := FND_MSG_PUB.Count_Msg;
315 IF x_msg_count = 1 THEN
316 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
317 ,p_msg_index => 1
318 ,p_data => x_msg_data
319 ,p_msg_index_out => l_msg_index_out
320 );
321 END IF;
322
323 -- Reset the error stack when returning to the calling program
324 PA_DEBUG.Reset_Err_Stack;
325
326
327 EXCEPTION
328 WHEN OTHERS THEN
329 rollback;
330 -- Set the excetption Message and the stack
331 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.ADD_CONTROL_ITEM'
332 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
333
334 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
335 RAISE;
336
337 end ADD_CONTROL_ITEM;
338
339 procedure UPDATE_CONTROL_ITEM (
340 p_api_version IN NUMBER := 1.0
341 ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
342 ,p_commit IN VARCHAR2 := FND_API.g_false
343 ,p_validate_only IN VARCHAR2 := FND_API.g_true
344 ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
345 ,p_ci_id IN NUMBER
346 ,p_ci_type_id IN NUMBER
347 ,p_summary IN VARCHAR2
348 ,p_status_code IN VARCHAR2 := NULL
349
350 ,p_owner_id IN NUMBER := NULL
351 ,p_owner_name IN VARCHAR2 := NULL
352 ,p_highlighted_flag IN VARCHAR2 := 'N'
353 ,p_progress_status_code IN VARCHAR2
354 ,p_progress_as_of_date IN DATE
355 ,p_classification_code IN NUMBER
356 ,p_reason_code IN NUMBER
357 ,p_record_version_number IN NUMBER
358 ,p_project_id IN NUMBER
359 ,p_object_type IN VARCHAR2 := NULL
360 ,p_object_id IN NUMBER := NULL
361 ,p_object_name IN VARCHAR2 := NULL
362 ,p_ci_number IN VARCHAR2 := NULL
363 ,p_date_required IN DATE := NULL
364 ,p_date_closed IN DATE := NULL
365 ,p_closed_by_id IN NUMBER := NULL
366
367 ,p_description IN VARCHAR2 := NULL
368 ,p_status_overview IN VARCHAR2 := NULL
369 ,p_resolution IN VARCHAR2 := NULL
370 ,p_resolution_code IN NUMBER := NULL
371 ,p_priority_code IN VARCHAR2 := NULL
372 ,p_effort_level_code IN VARCHAR2 := NULL
373 ,p_open_action_num IN NUMBER := NULL
374 ,p_price IN NUMBER := NULL
375 ,p_price_currency_code IN VARCHAR2 := NULL
376 ,p_source_type_code IN VARCHAR2 := NULL
377 ,p_source_comment IN VARCHAR2 := NULL
378 ,p_source_number IN VARCHAR2 := NULL
379 ,p_source_date_received IN DATE := NULL
380 ,p_source_organization IN VARCHAR2 := NULL
381 ,p_source_person IN VARCHAR2 := NULL
382
383 ,p_attribute_category IN VARCHAR2 := NULL
384
385 ,p_attribute1 IN VARCHAR2 := NULL
386 ,p_attribute2 IN VARCHAR2 := NULL
387 ,p_attribute3 IN VARCHAR2 := NULL
388 ,p_attribute4 IN VARCHAR2 := NULL
392 ,p_attribute8 IN VARCHAR2 := NULL
389 ,p_attribute5 IN VARCHAR2 := NULL
390 ,p_attribute6 IN VARCHAR2 := NULL
391 ,p_attribute7 IN VARCHAR2 := NULL
393 ,p_attribute9 IN VARCHAR2 := NULL
394 ,p_attribute10 IN VARCHAR2 := NULL
395 ,p_attribute11 IN VARCHAR2 := NULL
396 ,p_attribute12 IN VARCHAR2 := NULL
397 ,p_attribute13 IN VARCHAR2 := NULL
398 ,p_attribute14 IN VARCHAR2 := NULL
399 ,p_attribute15 IN VARCHAR2 := NULL
400 ,x_return_status OUT NOCOPY VARCHAR2
401 ,x_msg_count OUT NOCOPY NUMBER
402 ,x_msg_data OUT NOCOPY VARCHAR2
403 ) is
404
405 l_msg_index_out NUMBER;
406 l_last_modified_by_id NUMBER;
407 l_owner_id NUMBER;
408 l_object_id NUMBER;
409 l_chgowner_allowed VARCHAR2(1); /* Bug3297238 */
410 l_curr_owner_id NUMBER;
411 l_to_owner_allowed VARCHAR2(1); /* Bug#4050242 */
412 l_classification_code NUMBER; /* Bug 4049588.*/
413 l_reason_code NUMBER; /* Bug 4049588.*/
414
415 cursor c_curr_owner is
416 select owner_id from pa_control_items
417 where ci_id = p_ci_id;
418 begin
419
420 -- Initialize the Error Stack
421 PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.UPDATE_CONTROL_ITEM');
422
423 -- Initialize the return status to success
424 x_return_status := FND_API.G_RET_STS_SUCCESS;
425
426 --Clear the global PL/SQL message table
427 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
428 FND_MSG_PUB.initialize;
429 END IF;
430
431 --get hz_parties.party_id of the logged in user
432 l_last_modified_by_id := PA_CONTROL_ITEMS_UTILS.GetPartyId(fnd_global.user_id );
433 l_owner_id := p_owner_id;
434 l_object_id := p_object_id;
435
436 -- check mandatory owner_id
437 IF (l_owner_id IS NULL) THEN
438 IF (p_owner_name is not null) then
439 getPartyIdFromName(
440 p_project_id => p_project_id
441 ,p_name => p_owner_name
442 ,x_party_id => l_owner_id
443 ,x_return_status => x_return_status
444 ,x_msg_count => x_msg_count
445 ,x_msg_data => x_msg_data);
446 ELSE
447 PA_UTILS.Add_Message( p_app_short_name => 'PA'
448 ,p_msg_name => 'PA_CI_NO_OWNER');
449 x_return_status := 'E';
450 END IF;
451 END IF;
452
453 --Bug 4049588. Check if Classification Code and Reason Code are null.
454 l_classification_code := p_classification_code ;
455 l_reason_code := p_reason_code;
456 IF (l_classification_code IS NULL OR l_reason_code IS NULL )
457 THEN
458 IF (l_classification_code IS NULL) THEN
459 PA_UTILS.Add_Message( p_app_short_name => 'PA'
460 ,p_msg_name => 'PA_CI_NO_CLASSIFICATION_CODE');
461 x_return_status := 'E';
462 END IF;
463 IF (l_reason_code IS NULL) THEN
464 PA_UTILS.Add_Message( p_app_short_name => 'PA'
465 ,p_msg_name => 'PA_CI_NO_REASON_CODE');
466 x_return_status := 'E';
467 END IF;
468 END IF;
469
470 /* Code added for Bug#3297238, starts here */
471 open c_curr_owner;
472 fetch c_curr_owner into l_curr_owner_id;
473 close c_curr_owner;
474
475 if (l_owner_id <> l_curr_owner_id) then
476 l_chgowner_allowed := pa_ci_security_pkg.check_change_owner_access(p_ci_id);
477 if (l_chgowner_allowed <> 'T') then
478 PA_UTILS.Add_Message( p_app_short_name => 'PA'
479 ,p_msg_name => 'PA_CI_OWNER_CHG_NOT_ALLOWED');
480 x_return_status := 'E';
481 /* Code added for Bug#4050242, starts here */
482 else
483 l_to_owner_allowed := pa_ci_security_pkg.is_to_owner_allowed(p_ci_id, l_owner_id);
484 if (l_to_owner_allowed <> 'T') then
485 PA_UTILS.Add_Message( p_app_short_name => 'PA'
486 ,p_msg_name => 'PA_CI_TO_OWNER_NOT_ALLOWED');
487 x_return_status := 'E';
488 end if;
489 /* Code added for Bug#4050242, ends here */
490 end if;
491
492 -- Bug 3650877: Commneted this check for the owner id.
493
494 --elsif (l_owner_id = l_curr_owner_id) then
495 -- PA_UTILS.Add_Message( p_app_short_name => 'PA'
496 -- ,p_msg_name => 'PA_CI_CHANGE_OWNER_INVALID');
497 -- x_return_status := 'E';
498 end if;
499 /* Code added for Bug#3297238, ends here */
500
501 IF (l_object_id IS NULL AND p_object_name is not null) THEN
502 -- try to get object id from name - as of now we're only handling PA_TASKS objects
503 begin
504 select proj_element_id
505 into l_object_id
506 from PA_FIN_LATEST_PUB_TASKS_V
507 where element_name = p_object_name
508 and project_id = p_project_id;
509
510 exception when TOO_MANY_ROWS then
511 PA_UTILS.Add_Message( p_app_short_name => 'PA'
515 when OTHERS then
512 ,p_msg_name => 'PA_OBJECT_NAME_MULTIPLE');
513 x_return_status := 'E';
514
516 PA_UTILS.Add_Message( p_app_short_name => 'PA'
517 ,p_msg_name => 'PA_OBJECT_NAME_INV');
518 x_return_status := 'E';
519 end;
520
521 END IF;
522
523
524 IF (x_return_status <> 'E')THEN
525 PA_CONTROL_ITEMS_PVT.UPDATE_CONTROL_ITEM(
526 p_api_version
527 ,p_init_msg_list
528 ,p_commit
529 ,p_validate_only
530 ,p_max_msg_count
531
532 ,p_ci_id
533 ,p_ci_type_id
534 ,p_summary
535 ,p_status_code
536 ,l_owner_id
537 ,nvl(p_highlighted_flag,'N')
538 ,p_progress_status_code
539 ,p_progress_as_of_date
540 ,p_classification_code
541 ,p_reason_code
542 ,p_record_version_number
543 ,p_project_id
544 ,l_last_modified_by_id
545 ,p_object_type
546 ,l_object_id
547 ,p_ci_number
548 ,p_date_required
549 ,p_date_closed
550 ,p_closed_by_id
551
552 ,p_description
553 ,p_status_overview
554 ,p_resolution
555 ,p_resolution_code
556 ,p_priority_code
557 ,p_effort_level_code
558 ,p_open_action_num
559 ,p_price
560 ,p_price_currency_code
561 ,p_source_type_code
562 ,p_source_comment
563 ,p_source_number
564 ,p_source_date_received
565 ,p_source_organization
566 ,p_source_person
567
568 ,p_attribute_category
569
570 ,p_attribute1
571 ,p_attribute2
572 ,p_attribute3
573 ,p_attribute4
574 ,p_attribute5
575 ,p_attribute6
576 ,p_attribute7
577 ,p_attribute8
578 ,p_attribute9
579 ,p_attribute10
580 ,p_attribute11
581 ,p_attribute12
582 ,p_attribute13
583 ,p_attribute14
584 ,p_attribute15
585 ,x_return_status
586 ,x_msg_count
587 ,x_msg_data
588 );
589 END IF;
590
591 -- IF the number of messaages is 1 then fetch the message code from the stack
592 -- and return its text
593 x_msg_count := FND_MSG_PUB.Count_Msg;
594 IF x_msg_count = 1 THEN
595 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
596 ,p_msg_index => 1
597 ,p_data => x_msg_data
598 ,p_msg_index_out => l_msg_index_out
599 );
600 END IF;
601
602 -- Reset the error stack when returning to the calling program
603 PA_DEBUG.Reset_Err_Stack;
604
605
606 EXCEPTION
607 WHEN OTHERS THEN
608 rollback;
609 -- Set the excetption Message and the stack
610 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.UPDATE_CONTROL_ITEM'
611 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
612
613 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
614 RAISE;
615 end UPDATE_CONTROL_ITEM;
616
617
618
619 procedure DELETE_CONTROL_ITEM (
620 p_api_version IN NUMBER := 1.0
621 ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
622 ,p_commit IN VARCHAR2 := FND_API.g_false
623 ,p_validate_only IN VARCHAR2 := FND_API.g_true
624 ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
625
626 ,p_ci_id IN NUMBER
627 ,p_record_version_number IN NUMBER
628 ,x_return_status OUT NOCOPY VARCHAR2
629 ,x_msg_count OUT NOCOPY NUMBER
630 ,x_msg_data OUT NOCOPY VARCHAR2
631
632 ) is
633
634 l_msg_index_out NUMBER;
635 -- l_status_code pa_control_items.status_code%type;
636
637 -- cursor valid_ci is
638 -- select status_code
639 -- from pa_control_items
640 -- where ci_id = p_ci_id;
641
642 begin
643
644 -- Initialize the Error Stack
645 PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.DELETE_CONTROL_ITEM');
646
647 -- Initialize the return status to success
648 x_return_status := FND_API.G_RET_STS_SUCCESS;
649
650 --Clear the global PL/SQL message table
651 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
652 FND_MSG_PUB.initialize;
653 END IF;
654 /*
655 open valid_ci;
656 fetch valid_ci into l_status_code;
657
658 if (valid_ci%notfound) then
659 --- invalid ci_id error
660 PA_UTILS.Add_Message( p_app_short_name => 'PA'
661 ,p_msg_name => 'PA_CI_INVALID_ITEM');
662 x_return_status := FND_API.G_RET_STS_ERROR;
663 else
664 if (l_status_code <> 'CI_DRAFT') then
665 --- invalid status error
669 end if;
666 PA_UTILS.Add_Message( p_app_short_name => 'PA'
667 ,p_msg_name => 'PA_CI_ONLY_DRAFT_DEL');
668 x_return_status := FND_API.G_RET_STS_ERROR;
670 end if;
671 close valid_ci;
672
673
674 if (x_return_status = 'S') then */
675
676 PA_CONTROL_ITEMS_PVT.DELETE_CONTROL_ITEM(
677 p_api_version
678 ,p_init_msg_list
679 ,p_commit
680 ,p_validate_only
681 ,p_max_msg_count
682
683 ,p_ci_id
684 ,p_record_version_number
685 ,x_return_status
686 ,x_msg_count
687 ,x_msg_data
688 );
689 -- end if;
690
691
692 -- IF the number of messaages is 1 then fetch the message code from the stack
693 -- and return its text
694 x_msg_count := FND_MSG_PUB.Count_Msg;
695 IF x_msg_count = 1 THEN
696 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
697 ,p_msg_index => 1
698 ,p_data => x_msg_data
699 ,p_msg_index_out => l_msg_index_out
700 );
701 END IF;
702
703 -- Reset the error stack when returning to the calling program
704 PA_DEBUG.Reset_Err_Stack;
705
706
707 EXCEPTION
708 WHEN OTHERS THEN
709 rollback;
710 -- Set the excetption Message and the stack
711 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.DELETE_CONTROL_ITEM'
712 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
713
714
715 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
716 RAISE;
717 end DELETE_CONTROL_ITEM;
718
719 procedure COPY_CONTROL_ITEM (
720 p_api_version IN NUMBER := 1.0
721 ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
722 ,p_commit IN VARCHAR2 := FND_API.g_false
723 ,p_validate_only IN VARCHAR2 := FND_API.g_true
724 ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
725
726 ,p_project_id IN NUMBER
727 ,p_ci_id_from IN NUMBER -- copy from this
728 ,p_ci_type_id IN NUMBER -- copy to this
729 ,p_classification_code_id IN NUMBER
730 ,p_reason_code_id IN NUMBER
731 ,p_include IN VARCHAR2 := 'N'
732 ,p_record_version_number_from IN NUMBER
733 ,x_ci_id OUT NOCOPY NUMBER
734 ,x_ci_number OUT NOCOPY VARCHAR2
735 ,x_return_status OUT NOCOPY VARCHAR2
736 ,x_msg_count OUT NOCOPY NUMBER
737 ,x_msg_data OUT NOCOPY VARCHAR2
738
739 ) is
740
741 l_msg_index_out NUMBER;
742
743 begin
744
745 -- Initialize the Error Stack
746 PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.COPY_CONTROL_ITEM');
747
748 -- Initialize the return status to success
749 x_return_status := FND_API.G_RET_STS_SUCCESS;
750
751 --Clear the global PL/SQL message table
752 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
753 FND_MSG_PUB.initialize;
754 END IF;
755
756 pa_control_items_pvt.COPY_CONTROL_ITEM (
757 p_commit => p_commit
758 ,p_validate_only => p_validate_only
759
760 ,p_project_id => p_project_id
761 ,p_ci_id_from => p_ci_id_from -- copy from this
762 ,p_ci_type_id => p_ci_type_id -- copy to this
763 ,p_classification_code_id => p_classification_code_id
764 ,p_reason_code_id => p_reason_code_id
765 ,p_include => p_include
766 ,p_record_version_number_from => p_record_version_number_from
767 ,x_ci_id => x_ci_id
768 ,x_ci_number => x_ci_number
769 ,x_return_status => x_return_status
770 ,x_msg_count => x_msg_count
771 ,x_msg_data => x_msg_data);
772
773 -- IF the number of messages is 1 then fetch the message code from the stack
774 -- and return its text
775 x_msg_count := FND_MSG_PUB.Count_Msg;
776 IF x_msg_count = 1 THEN
777 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
778 ,p_msg_index => 1
779 ,p_data => x_msg_data
780 ,p_msg_index_out => l_msg_index_out
781 );
782 end if;
783
784 if (p_commit = 'T' and x_return_status = 'S') then
785 commit;
786 end if;
787
788 -- Reset the error stack when returning to the calling program
789 PA_DEBUG.Reset_Err_Stack;
790
791
792 EXCEPTION
793 WHEN OTHERS THEN
794 rollback;
795 -- Set the excetption Message and the stack
796 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.COPY_CONTROL_ITEM'
797 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
798
799
800 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
801 RAISE;
802 end COPY_CONTROL_ITEM;
803
804 procedure INCLUDE_CONTROL_ITEM(
805 p_api_version IN NUMBER := 1.0
806 ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
807 ,p_commit IN VARCHAR2 := FND_API.g_false
808 ,p_validate_only IN VARCHAR2 := FND_API.g_true
809 ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
810
811 ,p_from_ci_id IN NUMBER
812 ,p_to_ci_id IN NUMBER
813 ,p_record_version_number_to IN NUMBER
814 ,x_relationship_id OUT NOCOPY NUMBER
815 ,x_return_status OUT NOCOPY VARCHAR2
816 ,x_msg_count OUT NOCOPY NUMBER
817 ,x_msg_data OUT NOCOPY VARCHAR2
818 ) is
819
820 l_relationship_id NUMBER;
821 l_msg_index_out NUMBER;
822
823 begin
824
825 -- Initialize the Error Stack
826 PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.INCLUDE_CONTROL_ITEM');
827
828 -- Initialize the return status to success
829 x_return_status := FND_API.G_RET_STS_SUCCESS;
830
831 --Clear the global PL/SQL message table
832 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
833 FND_MSG_PUB.initialize;
834 END IF;
835
836 if (x_return_status = FND_API.G_RET_STS_SUCCESS) then
837 PA_CONTROL_ITEMS_PVT.INCLUDE_CONTROL_ITEM(
838 p_api_version => p_api_version
839 ,p_init_msg_list => p_init_msg_list
840 ,p_commit => p_commit
841 ,p_validate_only => p_validate_only
842 ,p_max_msg_count => p_max_msg_count
843 ,p_from_ci_id => p_from_ci_id
844 ,p_to_ci_id => p_to_ci_id
845 ,p_record_version_number_to => p_record_version_number_to
846 ,x_relationship_id => l_relationship_id
847 ,x_return_status => x_return_status
848 ,x_msg_count => x_msg_count
849 ,x_msg_data => x_msg_data);
850 end if;
851
852 -- IF the number of messaages is 1 then fetch the message code from the stack
853 -- and return its text
854 x_msg_count := FND_MSG_PUB.Count_Msg;
855 IF x_msg_count = 1 THEN
856 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
857 ,p_msg_index => 1
858 ,p_data => x_msg_data
859 ,p_msg_index_out => l_msg_index_out
860 );
861 END IF;
862
863 if (p_commit = 'T' and x_return_status = 'S') then
864 commit;
865 end if;
866
867 -- Reset the error stack when returning to the calling program
868 PA_DEBUG.Reset_Err_Stack;
869
870
871 EXCEPTION
872 WHEN OTHERS THEN
873 rollback;
874 -- Set the excetption Message and the stack
875 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.INCLUDE_CONTROL_ITEM'
876 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
877
878
879 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
880 RAISE;
881 end INCLUDE_CONTROL_ITEM;
882
883
884 function GET_OBJECT_NAME(p_object_id IN NUMBER
885 ,p_object_type IN VARCHAR2
886 ) return VARCHAR2 is
887
888 begin
889 null;
890 end GET_OBJECT_NAME;
891
892
893 END PA_CONTROL_ITEMS_PUB;