[Home] [Help]
PACKAGE BODY: APPS.HR_PHONE_API
Source
1 Package Body hr_phone_api as
2 /* $Header: pephnapi.pkb 120.0.12010000.1 2008/07/28 05:16:50 appldev ship $ */
3 --
4 -- Package Variables
5 --
6 g_package varchar2(33) := 'hr_phone_api.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |-----------------------------< create_phone >-----------------------------|
10 -- ----------------------------------------------------------------------------
11 --
12 procedure create_phone
13 (p_date_from in date,
14 p_date_to in date default null,
15 p_phone_type in varchar2,
16 p_phone_number in varchar2,
17 p_parent_id in number default null, -- HR/TCA merge
18 p_parent_table in varchar2 default null, --
19 p_attribute_category in varchar2 default null,
20 p_attribute1 in varchar2 default null,
21 p_attribute2 in varchar2 default null,
22 p_attribute3 in varchar2 default null,
23 p_attribute4 in varchar2 default null,
24 p_attribute5 in varchar2 default null,
25 p_attribute6 in varchar2 default null,
26 p_attribute7 in varchar2 default null,
27 p_attribute8 in varchar2 default null,
28 p_attribute9 in varchar2 default null,
29 p_attribute10 in varchar2 default null,
30 p_attribute11 in varchar2 default null,
31 p_attribute12 in varchar2 default null,
32 p_attribute13 in varchar2 default null,
33 p_attribute14 in varchar2 default null,
34 p_attribute15 in varchar2 default null,
35 p_attribute16 in varchar2 default null,
36 p_attribute17 in varchar2 default null,
37 p_attribute18 in varchar2 default null,
38 p_attribute19 in varchar2 default null,
39 p_attribute20 in varchar2 default null,
40 p_attribute21 in varchar2 default null,
41 p_attribute22 in varchar2 default null,
42 p_attribute23 in varchar2 default null,
43 p_attribute24 in varchar2 default null,
44 p_attribute25 in varchar2 default null,
45 p_attribute26 in varchar2 default null,
46 p_attribute27 in varchar2 default null,
47 p_attribute28 in varchar2 default null,
48 p_attribute29 in varchar2 default null,
49 p_attribute30 in varchar2 default null,
50 p_validate in boolean default false,
51 p_effective_date in date,
52 p_party_id in number default null, -- HR/TCA merge
53 p_validity in varchar2 default null,
54 p_object_version_number out nocopy number,
55 p_phone_id out nocopy number)
56 is
57 --
58 l_proc varchar2(72) := g_package||'create_phone';
59 l_object_version_number number;
60 l_phone_id number;
61 --
62 begin
63 hr_utility.set_location('Entering:'|| l_proc, 5);
64 --
65 -- Issue a savepoint.
66 --
67 savepoint create_phone;
68 --
69 hr_utility.set_location(l_proc, 7);
70 --
71 -- Process Logic
72 --
73 --
74 -- Start of API User Hook for the before hook of create_phone.
75 --
76 -- Start of Bug Fix for 2396117
77 begin
78 hr_phone_bk1.create_phone_b
79 (p_date_from => p_date_from,
80 p_date_to => p_date_to ,
81 p_phone_type => p_phone_type,
82 p_phone_number => p_phone_number ,
83 p_parent_id => p_parent_id ,
84 p_parent_table => p_parent_table ,
85 p_attribute_category => p_attribute_category ,
86 p_attribute1 => p_attribute1 ,
87 p_attribute2 => p_attribute2 ,
88 p_attribute3 => p_attribute3 ,
89 p_attribute4 => p_attribute4 ,
90 p_attribute5 => p_attribute5 ,
91 p_attribute6 => p_attribute6 ,
92 p_attribute7 => p_attribute7 ,
93 p_attribute8 => p_attribute8 ,
94 p_attribute9 => p_attribute9 ,
95 p_attribute10 => p_attribute10 ,
96 p_attribute11 => p_attribute11 ,
97 p_attribute12 => p_attribute12 ,
98 p_attribute13 => p_attribute13 ,
99 p_attribute14 => p_attribute14 ,
100 p_attribute15 => p_attribute15 ,
101 p_attribute16 => p_attribute16 ,
102 p_attribute17 => p_attribute17 ,
103 p_attribute18 => p_attribute18 ,
104 p_attribute19 => p_attribute19 ,
105 p_attribute20 => p_attribute20 ,
106 p_attribute21 => p_attribute21 ,
107 p_attribute22 => p_attribute22 ,
108 p_attribute23 => p_attribute23 ,
109 p_attribute24 => p_attribute24 ,
110 p_attribute25 => p_attribute25 ,
111 p_attribute26 => p_attribute26 ,
112 p_attribute27 => p_attribute27 ,
113 p_attribute28 => p_attribute28 ,
114 p_attribute29 => p_attribute29 ,
115 p_attribute30 => p_attribute30 ,
116 p_effective_date => p_effective_date ,
117 p_party_id => p_party_id , -- HR/TCA merge
118 p_validity => p_validity);
119 exception
120 when hr_api.cannot_find_prog_unit then
121 hr_api.cannot_find_prog_unit_error
122 (p_module_name => 'CREATE_PHONE',
123 p_hook_type => 'BP'
124 );
125 end;
126 -- End of Fix for Bug 2396117
127 --
128 per_phn_ins.ins
129 (p_phone_id => l_phone_id
130 ,p_date_from => trunc(p_date_from)
131 ,p_date_to => trunc(p_date_to)
132 ,p_phone_type => p_phone_type
133 ,p_phone_number => p_phone_number
134 ,p_parent_id => p_parent_id
135 ,p_parent_table => p_parent_table
136 ,p_attribute_category => p_attribute_category
137 ,p_attribute1 => p_attribute1
138 ,p_attribute2 => p_attribute2
139 ,p_attribute3 => p_attribute3
140 ,p_attribute4 => p_attribute4
141 ,p_attribute5 => p_attribute5
142 ,p_attribute6 => p_attribute6
143 ,p_attribute7 => p_attribute7
144 ,p_attribute8 => p_attribute8
145 ,p_attribute9 => p_attribute9
146 ,p_attribute10 => p_attribute10
147 ,p_attribute11 => p_attribute11
148 ,p_attribute12 => p_attribute12
149 ,p_attribute13 => p_attribute13
150 ,p_attribute14 => p_attribute14
151 ,p_attribute15 => p_attribute15
152 ,p_attribute16 => p_attribute16
153 ,p_attribute17 => p_attribute17
154 ,p_attribute18 => p_attribute18
155 ,p_attribute19 => p_attribute19
156 ,p_attribute20 => p_attribute20
157 ,p_attribute21 => p_attribute21
158 ,p_attribute22 => p_attribute22
159 ,p_attribute23 => p_attribute23
160 ,p_attribute24 => p_attribute24
161 ,p_attribute25 => p_attribute25
162 ,p_attribute26 => p_attribute26
163 ,p_attribute27 => p_attribute27
164 ,p_attribute28 => p_attribute28
165 ,p_attribute29 => p_attribute29
166 ,p_attribute30 => p_attribute30
167 ,p_object_version_number => l_object_version_number
168 ,p_validate => p_validate
169 ,p_effective_date => p_effective_date
170 ,p_party_id => p_party_id -- HR/TCA merge
171 ,p_validity => p_validity
172 );
173 --
174 hr_utility.set_location(l_proc, 8);
175 --
176 -- Start of API User Hook for the after hook of create_phone
177 --
178 -- Start of Fix for Bug 2396117
179 --
180 begin
181 hr_phone_bk1.create_phone_a
182 (p_date_from => p_date_from,
183 p_date_to => p_date_to ,
184 p_phone_type => p_phone_type,
185 p_phone_number => p_phone_number ,
186 p_parent_id => p_parent_id ,
187 p_parent_table => p_parent_table ,
188 p_attribute_category => p_attribute_category ,
189 p_attribute1 => p_attribute1 ,
190 p_attribute2 => p_attribute2 ,
191 p_attribute3 => p_attribute3 ,
192 p_attribute4 => p_attribute4 ,
193 p_attribute5 => p_attribute5 ,
194 p_attribute6 => p_attribute6 ,
195 p_attribute7 => p_attribute7 ,
196 p_attribute8 => p_attribute8 ,
197 p_attribute9 => p_attribute9 ,
198 p_attribute10 => p_attribute10 ,
199 p_attribute11 => p_attribute11 ,
200 p_attribute12 => p_attribute12 ,
201 p_attribute13 => p_attribute13 ,
202 p_attribute14 => p_attribute14 ,
203 p_attribute15 => p_attribute15 ,
204 p_attribute16 => p_attribute16 ,
205 p_attribute17 => p_attribute17 ,
206 p_attribute18 => p_attribute18 ,
207 p_attribute19 => p_attribute19 ,
208 p_attribute20 => p_attribute20 ,
209 p_attribute21 => p_attribute21 ,
210 p_attribute22 => p_attribute22 ,
211 p_attribute23 => p_attribute23 ,
212 p_attribute24 => p_attribute24 ,
213 p_attribute25 => p_attribute25 ,
214 p_attribute26 => p_attribute26 ,
215 p_attribute27 => p_attribute27 ,
216 p_attribute28 => p_attribute28 ,
217 p_attribute29 => p_attribute29 ,
218 p_attribute30 => p_attribute30 ,
219 p_effective_date => p_effective_date,
220 p_object_version_number => l_object_version_number,
221 p_phone_id => l_phone_id ,
222 p_party_id => p_party_id , -- HR/TCA merge
223 p_validity => p_validity);
224
225 exception
226 when hr_api.cannot_find_prog_unit then
227 hr_api.cannot_find_prog_unit_error
228 (p_module_name => 'CREATE_PHONE',
229 p_hook_type => 'AP'
230 );
231 end;
232 -- End of Fix for Bug 2396117
233 --
234 -- End of API User Hook for the after hook of create_phone.
235 --
236 --
237 -- When in validation only mode raise the Validate_Enabled exception
238 --
239 if p_validate then
240 raise hr_api.validate_enabled;
241 end if;
242 --
243 p_object_version_number := l_object_version_number;
244 p_phone_id := l_phone_id;
245 --
246 hr_utility.set_location(' Leaving:'||l_proc, 11);
247 exception
248 when hr_api.validate_enabled then
249 --
250 -- As the Validate_Enabled exception has been raised
251 -- we must rollback to the savepoint
252 --
253 ROLLBACK TO create_phone;
254 --
255 -- Only set output warning arguments
256 -- (Any key or derived arguments must be set to null
257 -- when validation only mode is being used.)
258 --
259 p_phone_id := null;
260 p_object_version_number := null;
261 --
262 --
263 when others then
264 --
265 -- A validation or unexpected error has occurred
266 --
267 -- Added as part of fix to bug 632479
268 --
269 p_phone_id := null;
270 p_object_version_number := null;
271
272 ROLLBACK TO create_phone;
273 raise;
274 --
275 -- End of fix.
276 --
277 end create_phone;
278 --
279 -- ----------------------------------------------------------------------------
280 -- |----------------------------< update_phone >------------------------------|
281 -- ----------------------------------------------------------------------------
282 --
283 procedure update_phone
284 (p_phone_id in number,
285 p_date_from in date default hr_api.g_date,
286 p_date_to in date default hr_api.g_date,
287 p_phone_type in varchar2 default hr_api.g_varchar2,
288 p_phone_number in varchar2 default hr_api.g_varchar2,
289 p_attribute_category in varchar2 default hr_api.g_varchar2,
290 p_attribute1 in varchar2 default hr_api.g_varchar2,
291 p_attribute2 in varchar2 default hr_api.g_varchar2,
292 p_attribute3 in varchar2 default hr_api.g_varchar2,
293 p_attribute4 in varchar2 default hr_api.g_varchar2,
294 p_attribute5 in varchar2 default hr_api.g_varchar2,
295 p_attribute6 in varchar2 default hr_api.g_varchar2,
296 p_attribute7 in varchar2 default hr_api.g_varchar2,
297 p_attribute8 in varchar2 default hr_api.g_varchar2,
298 p_attribute9 in varchar2 default hr_api.g_varchar2,
299 p_attribute10 in varchar2 default hr_api.g_varchar2,
300 p_attribute11 in varchar2 default hr_api.g_varchar2,
301 p_attribute12 in varchar2 default hr_api.g_varchar2,
302 p_attribute13 in varchar2 default hr_api.g_varchar2,
303 p_attribute14 in varchar2 default hr_api.g_varchar2,
304 p_attribute15 in varchar2 default hr_api.g_varchar2,
305 p_attribute16 in varchar2 default hr_api.g_varchar2,
306 p_attribute17 in varchar2 default hr_api.g_varchar2,
307 p_attribute18 in varchar2 default hr_api.g_varchar2,
308 p_attribute19 in varchar2 default hr_api.g_varchar2,
309 p_attribute20 in varchar2 default hr_api.g_varchar2,
310 p_attribute21 in varchar2 default hr_api.g_varchar2,
311 p_attribute22 in varchar2 default hr_api.g_varchar2,
312 p_attribute23 in varchar2 default hr_api.g_varchar2,
313 p_attribute24 in varchar2 default hr_api.g_varchar2,
314 p_attribute25 in varchar2 default hr_api.g_varchar2,
315 p_attribute26 in varchar2 default hr_api.g_varchar2,
316 p_attribute27 in varchar2 default hr_api.g_varchar2,
317 p_attribute28 in varchar2 default hr_api.g_varchar2,
318 p_attribute29 in varchar2 default hr_api.g_varchar2,
319 p_attribute30 in varchar2 default hr_api.g_varchar2,
320 p_object_version_number in out nocopy number,
321 p_validate in boolean default false,
322 p_effective_date in date,
323 p_party_id in number default hr_api.g_number,
324 p_validity in varchar2 default hr_api.g_varchar2
325 )
326
327 is
328 --
329 -- Declare cursors and local variables
330 --
331 l_object_version_number per_phones.object_version_number%TYPE;
332 l_object_version_number_temp per_phones.object_version_number%TYPE;
333 l_proc varchar2(72) := g_package||'update_phone';
334 l_temp_ovn number := p_object_version_number;
335 --
336 begin
337 hr_utility.set_location('Entering:'|| l_proc, 5);
338 --
339 -- Issue a savepoint.
340 --
341 savepoint update_phone;
342 hr_utility.set_location(l_proc, 6);
343 --
344 l_object_version_number_temp := p_object_version_number;
345 l_object_version_number := p_object_version_number;
346 --
347 -- Start of API User Hook for the before hook of update_phone.
348 --
349 -- Start of Fix for Bug 2396117
350 begin
351 hr_phone_bk2.update_phone_b
352 (p_phone_id => p_phone_id,
353 p_date_from => p_date_from,
354 p_date_to => p_date_to ,
355 p_phone_type => p_phone_type,
356 p_phone_number => p_phone_number ,
357 p_attribute_category => p_attribute_category ,
358 p_attribute1 => p_attribute1 ,
359 p_attribute2 => p_attribute2 ,
360 p_attribute3 => p_attribute3 ,
361 p_attribute4 => p_attribute4 ,
362 p_attribute5 => p_attribute5 ,
363 p_attribute6 => p_attribute6 ,
364 p_attribute7 => p_attribute7 ,
365 p_attribute8 => p_attribute8 ,
366 p_attribute9 => p_attribute9 ,
367 p_attribute10 => p_attribute10 ,
368 p_attribute11 => p_attribute11 ,
369 p_attribute12 => p_attribute12 ,
370 p_attribute13 => p_attribute13 ,
371 p_attribute14 => p_attribute14 ,
372 p_attribute15 => p_attribute15 ,
373 p_attribute16 => p_attribute16 ,
374 p_attribute17 => p_attribute17 ,
375 p_attribute18 => p_attribute18 ,
376 p_attribute19 => p_attribute19 ,
377 p_attribute20 => p_attribute20 ,
378 p_attribute21 => p_attribute21 ,
379 p_attribute22 => p_attribute22 ,
380 p_attribute23 => p_attribute23 ,
381 p_attribute24 => p_attribute24 ,
382 p_attribute25 => p_attribute25 ,
383 p_attribute26 => p_attribute26 ,
384 p_attribute27 => p_attribute27 ,
385 p_attribute28 => p_attribute28 ,
386 p_attribute29 => p_attribute29 ,
387 p_attribute30 => p_attribute30 ,
388 p_object_version_number => p_object_version_number,
389 p_effective_date => p_effective_date ,
390 p_validity => p_validity);
391 exception
392 when hr_api.cannot_find_prog_unit then
393 hr_api.cannot_find_prog_unit_error
394 (p_module_name => 'UPDATE_PHONE',
395 p_hook_type => 'BP'
396 );
397 end;
398 --
399 -- End of Fix for Bug 2396117
400 --
401 -- Update Phone details.
402 --
403 per_phn_upd.upd
404 (p_phone_id => p_phone_id
405 ,p_date_from => trunc(p_date_from)
406 ,p_date_to => trunc(p_date_to)
407 ,p_phone_type => p_phone_type
408 ,p_phone_number => p_phone_number
409 ,p_attribute_category => p_attribute_category
410 ,p_attribute1 => p_attribute1
411 ,p_attribute2 => p_attribute2
412 ,p_attribute3 => p_attribute3
413 ,p_attribute4 => p_attribute4
414 ,p_attribute5 => p_attribute5
415 ,p_attribute6 => p_attribute6
416 ,p_attribute7 => p_attribute7
417 ,p_attribute8 => p_attribute8
418 ,p_attribute9 => p_attribute9
419 ,p_attribute10 => p_attribute10
420 ,p_attribute11 => p_attribute11
421 ,p_attribute12 => p_attribute12
422 ,p_attribute13 => p_attribute13
423 ,p_attribute14 => p_attribute14
424 ,p_attribute15 => p_attribute15
425 ,p_attribute16 => p_attribute16
426 ,p_attribute17 => p_attribute17
427 ,p_attribute18 => p_attribute18
428 ,p_attribute19 => p_attribute19
429 ,p_attribute20 => p_attribute20
430 ,p_attribute21 => p_attribute21
431 ,p_attribute22 => p_attribute22
432 ,p_attribute23 => p_attribute23
433 ,p_attribute24 => p_attribute24
434 ,p_attribute25 => p_attribute25
435 ,p_attribute26 => p_attribute26
436 ,p_attribute27 => p_attribute27
437 ,p_attribute28 => p_attribute28
438 ,p_attribute29 => p_attribute29
439 ,p_attribute30 => p_attribute30
440 ,p_object_version_number => l_object_version_number
441 ,p_validate => p_validate
442 ,p_effective_date => p_effective_date
443 ,p_party_id => p_party_id
444 ,p_validity => p_validity
445 );
446 --
447 hr_utility.set_location(l_proc, 8);
448 --
449 -- Start of API User Hook for the after hook of update_phone
450 -- Start of Fix for Bug 2396117
451 --
452 begin
453 hr_phone_bk2.update_phone_a
454 (p_phone_id => p_phone_id,
455 p_date_from => p_date_from,
456 p_date_to => p_date_to ,
457 p_phone_type => p_phone_type,
458 p_phone_number => p_phone_number ,
459 p_attribute_category => p_attribute_category ,
460 p_attribute1 => p_attribute1 ,
461 p_attribute2 => p_attribute2 ,
462 p_attribute3 => p_attribute3 ,
463 p_attribute4 => p_attribute4 ,
464 p_attribute5 => p_attribute5 ,
465 p_attribute6 => p_attribute6 ,
466 p_attribute7 => p_attribute7 ,
467 p_attribute8 => p_attribute8 ,
468 p_attribute9 => p_attribute9 ,
469 p_attribute10 => p_attribute10 ,
470 p_attribute11 => p_attribute11 ,
471 p_attribute12 => p_attribute12 ,
472 p_attribute13 => p_attribute13 ,
473 p_attribute14 => p_attribute14 ,
474 p_attribute15 => p_attribute15 ,
475 p_attribute16 => p_attribute16 ,
476 p_attribute17 => p_attribute17 ,
477 p_attribute18 => p_attribute18 ,
478 p_attribute19 => p_attribute19 ,
479 p_attribute20 => p_attribute20 ,
480 p_attribute21 => p_attribute21 ,
481 p_attribute22 => p_attribute22 ,
482 p_attribute23 => p_attribute23 ,
483 p_attribute24 => p_attribute24 ,
484 p_attribute25 => p_attribute25 ,
485 p_attribute26 => p_attribute26 ,
486 p_attribute27 => p_attribute27 ,
487 p_attribute28 => p_attribute28 ,
488 p_attribute29 => p_attribute29 ,
489 p_attribute30 => p_attribute30 ,
490 p_object_version_number => l_object_version_number,
491 p_effective_date => p_effective_date ,
492 p_validity => p_validity);
493
494 exception
495 when hr_api.cannot_find_prog_unit then
496 hr_api.cannot_find_prog_unit_error
497 (p_module_name => 'UPDATE_PHONE',
498 p_hook_type => 'AP'
499 );
500 end;
501 --
502 -- End of Fix for Bug 2396117
503 -- End of API User Hook for the after hook of update_phone.
504 --
505 --
506 -- When in validation only mode raise the Validate_Enabled exception
507 --
508 if p_validate then
509 raise hr_api.validate_enabled;
510 end if;
511 --
512 p_object_version_number := l_object_version_number;
513 hr_utility.set_location(' Leaving:'||l_proc, 11);
514 exception
515 when hr_api.validate_enabled then
516 --
517 -- As the Validate_Enabled exception has been raised
518 -- we must rollback to the savepoint
519 --
520 ROLLBACK TO update_phone;
521 --
522 -- Only set output warning arguments
523 -- (Any key or derived arguments must be set to null
524 -- when validation only mode is being used.)
525 --
526 p_object_version_number := l_object_version_number_temp;
527 --
528 when others then
529 --
530 -- A validation or unexpected error has occurred
531 --
532 -- Added as part of fix to bug 632479
533 --
534 p_object_version_number := l_temp_ovn;
535 ROLLBACK TO update_phone;
536 raise;
537 --
538 -- End of fix.
539 --
540 end update_phone;
541 --
542 -- ----------------------------------------------------------------------------
543 -- |----------------------------< delete_phone >------------------------------|
544 -- ----------------------------------------------------------------------------
545 --
546 procedure delete_phone
547 (p_validate in boolean default false
548 ,p_phone_id in number
549 ,p_object_version_number in number
550 ) is
551 --
552 l_proc varchar2(72) := g_package||'delete_phone';
553 --
554 begin
555 hr_utility.set_location('Entering:'|| l_proc, 5);
556 --
557 -- Issue a savepoint.
558 --
559 savepoint delete_phone;
560 --
561 hr_utility.set_location(l_proc, 7);
562 --
563 -- Process Logic
564 --
565 --
566 -- Start of API User Hook for the before hook of delete_phone.
567 -- Start of Fix for Bug 2396117
568 --
569 begin
570 hr_phone_bk3.delete_phone_b
571 (p_phone_id => p_phone_id
572 ,p_object_version_number => p_object_version_number
573 );
574 exception
575 when hr_api.cannot_find_prog_unit then
576 hr_api.cannot_find_prog_unit_error
577 (p_module_name => 'DELETE_PHONE',
578 p_hook_type => 'BP'
579 );
580 end;
581 --
582 -- End of Fix for Bug 2396117
583
584 per_phn_del.del
585 (p_phone_id => p_phone_id
586 ,p_object_version_number => p_object_version_number
587 ,p_validate => false);
588 --
589 hr_utility.set_location(l_proc, 8);
590 --
591 -- Start of API User Hook for the after hook of delete_phone
592 -- Start of Fix for Bug 2396117
593 --
594 begin
595 hr_phone_bk3.delete_phone_a
596 (p_phone_id => p_phone_id
597 ,p_object_version_number => p_object_version_number
598 );
599 exception
600 when hr_api.cannot_find_prog_unit then
601 hr_api.cannot_find_prog_unit_error
602 (p_module_name => 'DELETE_PHONE',
603 p_hook_type => 'AP'
604 );
605 end;
606 -- End of Fix for Bug 2396117
607 --
608 -- End of API User Hook for the after hook of delete_phone.
609 --
610 --
611 -- When in validation only mode raise the Validate_Enabled exception
612 --
613 if p_validate then
614 raise hr_api.validate_enabled;
615 end if;
616 --
617 hr_utility.set_location(' Leaving:'||l_proc, 11);
618 exception
619 when hr_api.validate_enabled then
620 --
621 -- As the Validate_Enabled exception has been raised
622 -- we must rollback to the savepoint
623 --
624 ROLLBACK TO delete_phone;
625 --
626 --
627 when others then
628 --
629 -- A validation or unexpected error has occurred
630 --
631 -- Added as part of fix to bug 632479
632 --
633 ROLLBACK TO delete_phone;
634 raise;
635 --
636 -- End of fix.
637 --
638 end delete_phone;
639 --
640 -- ----------------------------------------------------------------------------
641 -- |------------------------< create_or_update_phone >------------------------|
642 -- ----------------------------------------------------------------------------
643 procedure create_or_update_phone
644 (p_update_mode in varchar2 default hr_api.g_correction,
645 p_phone_id in out nocopy number,
646 p_object_version_number in out nocopy number,
647 p_date_from in date default hr_api.g_date,
648 p_date_to in date default hr_api.g_date,
649 p_phone_type in varchar2 default hr_api.g_varchar2,
650 p_phone_number in varchar2 default hr_api.g_varchar2,
651 p_parent_id in number default hr_api.g_number,
652 p_parent_table in varchar2 default hr_api.g_varchar2,
653 p_attribute_category in varchar2 default hr_api.g_varchar2,
654 p_attribute1 in varchar2 default hr_api.g_varchar2,
655 p_attribute2 in varchar2 default hr_api.g_varchar2,
656 p_attribute3 in varchar2 default hr_api.g_varchar2,
657 p_attribute4 in varchar2 default hr_api.g_varchar2,
658 p_attribute5 in varchar2 default hr_api.g_varchar2,
659 p_attribute6 in varchar2 default hr_api.g_varchar2,
660 p_attribute7 in varchar2 default hr_api.g_varchar2,
661 p_attribute8 in varchar2 default hr_api.g_varchar2,
662 p_attribute9 in varchar2 default hr_api.g_varchar2,
663 p_attribute10 in varchar2 default hr_api.g_varchar2,
664 p_attribute11 in varchar2 default hr_api.g_varchar2,
665 p_attribute12 in varchar2 default hr_api.g_varchar2,
666 p_attribute13 in varchar2 default hr_api.g_varchar2,
667 p_attribute14 in varchar2 default hr_api.g_varchar2,
668 p_attribute15 in varchar2 default hr_api.g_varchar2,
669 p_attribute16 in varchar2 default hr_api.g_varchar2,
670 p_attribute17 in varchar2 default hr_api.g_varchar2,
671 p_attribute18 in varchar2 default hr_api.g_varchar2,
672 p_attribute19 in varchar2 default hr_api.g_varchar2,
673 p_attribute20 in varchar2 default hr_api.g_varchar2,
674 p_attribute21 in varchar2 default hr_api.g_varchar2,
675 p_attribute22 in varchar2 default hr_api.g_varchar2,
676 p_attribute23 in varchar2 default hr_api.g_varchar2,
677 p_attribute24 in varchar2 default hr_api.g_varchar2,
678 p_attribute25 in varchar2 default hr_api.g_varchar2,
679 p_attribute26 in varchar2 default hr_api.g_varchar2,
680 p_attribute27 in varchar2 default hr_api.g_varchar2,
681 p_attribute28 in varchar2 default hr_api.g_varchar2,
682 p_attribute29 in varchar2 default hr_api.g_varchar2,
683 p_attribute30 in varchar2 default hr_api.g_varchar2,
684 p_validate in boolean default false,
685 p_effective_date in date,
686 p_party_id in number default hr_api.g_number,
687 p_validity in varchar2 default hr_api.g_varchar2
688 ) is
689 --
690 l_proc varchar2(72) := g_package||'create_or_update_phone';
691 l_api_updating boolean;
692 l_phn_rec per_phn_shd.g_rec_type;
693 l_null_phn_rec per_phn_shd.g_rec_type;
694 l_update_mode varchar2(30);
695 l_effective_date date;
696 --
697 begin
698 --
699 hr_utility.set_location('Entering:'|| l_proc, 10);
700 --
701 savepoint create_or_update_phone;
702 --
703 l_update_mode:=p_update_mode;
704 l_effective_date:=trunc(p_effective_date);
705 l_api_updating := per_phn_shd.api_updating
706 (p_phone_id => p_phone_id
707 ,p_object_version_number => p_object_version_number);
708 hr_utility.set_location(l_proc, 20);
709 --
710 -- set the record
711 --
712 l_phn_rec:=
713 per_phn_shd.convert_args
714 (p_phone_id,
715 trunc(p_date_from),
716 trunc(p_date_to),
717 p_phone_type,
718 p_phone_number,
719 p_parent_id,
720 p_parent_table,
721 p_attribute_category,
722 p_attribute1,
723 p_attribute2,
724 p_attribute3,
725 p_attribute4,
726 p_attribute5,
727 p_attribute6,
728 p_attribute7,
729 p_attribute8,
730 p_attribute9,
731 p_attribute10,
732 p_attribute11,
733 p_attribute12,
734 p_attribute13,
735 p_attribute14,
736 p_attribute15,
737 p_attribute16,
738 p_attribute17,
739 p_attribute18,
740 p_attribute19,
741 p_attribute20,
742 p_attribute21,
743 p_attribute22,
744 p_attribute23,
745 p_attribute24,
746 p_attribute25,
747 p_attribute26,
748 p_attribute27,
749 p_attribute28,
750 p_attribute29,
751 p_attribute30,
752 p_party_id, -- HR/TCA merge
753 p_validity,
754 p_object_version_number
755 );
756 if not l_api_updating then
757 --
758 -- set g_old_rec to null
759 --
760 per_phn_shd.g_old_rec:=l_null_phn_rec;
761 hr_utility.set_location(l_proc, 30);
762 --
763 -- convert the null values
764 --
765 hr_utility.set_location(l_proc, 40);
766 per_phn_upd.convert_defs(l_phn_rec);
767 --
768 -- insert the data
769 --
770 hr_utility.set_location(l_proc||l_phn_rec.parent_id, 50);
771 hr_phone_api.create_phone
772 (p_date_from => l_phn_rec.date_from
773 ,p_date_to => l_phn_rec.date_to
774 ,p_phone_type => l_phn_rec.phone_type
775 ,p_phone_number => l_phn_rec.phone_number
776 ,p_parent_id => l_phn_rec.parent_id
777 ,p_parent_table => l_phn_rec.parent_table
778 ,p_attribute_category => l_phn_rec.attribute_category
779 ,p_attribute1 => l_phn_rec.attribute1
780 ,p_attribute2 => l_phn_rec.attribute2
781 ,p_attribute3 => l_phn_rec.attribute3
782 ,p_attribute4 => l_phn_rec.attribute4
783 ,p_attribute5 => l_phn_rec.attribute5
784 ,p_attribute6 => l_phn_rec.attribute6
785 ,p_attribute7 => l_phn_rec.attribute7
786 ,p_attribute8 => l_phn_rec.attribute8
787 ,p_attribute9 => l_phn_rec.attribute9
788 ,p_attribute10 => l_phn_rec.attribute10
789 ,p_attribute11 => l_phn_rec.attribute11
790 ,p_attribute12 => l_phn_rec.attribute12
791 ,p_attribute13 => l_phn_rec.attribute13
792 ,p_attribute14 => l_phn_rec.attribute14
793 ,p_attribute15 => l_phn_rec.attribute15
794 ,p_attribute16 => l_phn_rec.attribute16
795 ,p_attribute17 => l_phn_rec.attribute17
796 ,p_attribute18 => l_phn_rec.attribute18
797 ,p_attribute19 => l_phn_rec.attribute19
798 ,p_attribute20 => l_phn_rec.attribute20
799 ,p_attribute21 => l_phn_rec.attribute21
800 ,p_attribute22 => l_phn_rec.attribute22
801 ,p_attribute23 => l_phn_rec.attribute23
802 ,p_attribute24 => l_phn_rec.attribute24
803 ,p_attribute25 => l_phn_rec.attribute25
804 ,p_attribute26 => l_phn_rec.attribute26
805 ,p_attribute27 => l_phn_rec.attribute27
806 ,p_attribute28 => l_phn_rec.attribute28
807 ,p_attribute29 => l_phn_rec.attribute29
808 ,p_attribute30 => l_phn_rec.attribute30
809 ,p_validate => FALSE
810 ,p_effective_date => l_effective_date
811 ,p_object_version_number => l_phn_rec.object_version_number
812 ,p_phone_id => l_phn_rec.phone_id
813 ,p_party_id => l_phn_rec.party_id -- HR/TCA merge
814 ,p_validity => l_phn_rec.validity
815 );
816 hr_utility.set_location(l_proc, 60);
817 else
818 hr_utility.set_location(l_proc, 70);
819 --
820 -- updating not inserting
821 --
822 -- Validating update_mode values
823 if (l_update_mode not in (hr_api.g_update,hr_api.g_correction)) then
824 hr_utility.set_location(l_proc, 80);
825 hr_utility.set_message(800, 'HR_52858_PHN_CHK_MODE');
826 hr_utility.raise_error;
827 end if;
828 hr_utility.set_location(l_proc, 90);
829 --
830 -- Validating effective_date
831 --
832 if ((p_date_to <> hr_api.g_date) AND ( l_effective_date > p_date_to ))
833 or ((p_date_from <> hr_api.g_date) AND ( l_effective_date < p_date_from ))
834 then
835 hr_utility.set_location(l_proc, 100);
836 hr_utility.set_message(800, 'HR_52859_PHN_INVALID_EFF_DATE');
837 hr_utility.raise_error;
838 end if;
839 hr_utility.set_location(l_proc, 110);
840 --
841 per_phn_shd.lck
842 (p_phone_id => p_phone_id
843 ,p_object_version_number => p_object_version_number);
844 --
845 -- convert the null values
846 --
847 hr_utility.set_location(l_proc, 130);
848 per_phn_upd.convert_defs(l_phn_rec);
849 --
850 -- check to see if the start date hasn't changed and is equal to the
851 -- effective date. This will always be a correction.
852 --
853 if per_phn_shd.g_old_rec.date_from = l_phn_rec.date_from
854 and l_phn_rec.date_from = l_effective_date then
855 l_update_mode:= hr_api.g_correction;
856 end if;
857 --
858 -- check for the modes mode
859 --
860 if l_update_mode = hr_api.g_correction then
861 --
862 -- correct the data
863 --
864 hr_utility.set_location(l_proc, 140);
865 --
866 hr_phone_api.update_phone
867 (p_date_from => l_phn_rec.date_from
868 ,p_date_to => l_phn_rec.date_to
869 ,p_phone_type => l_phn_rec.phone_type
870 ,p_phone_number => l_phn_rec.phone_number
871 ,p_attribute_category => l_phn_rec.attribute_category
872 ,p_attribute1 => l_phn_rec.attribute1
873 ,p_attribute2 => l_phn_rec.attribute2
874 ,p_attribute3 => l_phn_rec.attribute3
875 ,p_attribute4 => l_phn_rec.attribute4
876 ,p_attribute5 => l_phn_rec.attribute5
877 ,p_attribute6 => l_phn_rec.attribute6
878 ,p_attribute7 => l_phn_rec.attribute7
879 ,p_attribute8 => l_phn_rec.attribute8
880 ,p_attribute9 => l_phn_rec.attribute9
881 ,p_attribute10 => l_phn_rec.attribute10
882 ,p_attribute11 => l_phn_rec.attribute11
883 ,p_attribute12 => l_phn_rec.attribute12
884 ,p_attribute13 => l_phn_rec.attribute13
885 ,p_attribute14 => l_phn_rec.attribute14
886 ,p_attribute15 => l_phn_rec.attribute15
887 ,p_attribute16 => l_phn_rec.attribute16
888 ,p_attribute17 => l_phn_rec.attribute17
889 ,p_attribute18 => l_phn_rec.attribute18
890 ,p_attribute19 => l_phn_rec.attribute19
891 ,p_attribute20 => l_phn_rec.attribute20
892 ,p_attribute21 => l_phn_rec.attribute21
893 ,p_attribute22 => l_phn_rec.attribute22
894 ,p_attribute23 => l_phn_rec.attribute23
895 ,p_attribute24 => l_phn_rec.attribute24
896 ,p_attribute25 => l_phn_rec.attribute25
897 ,p_attribute26 => l_phn_rec.attribute26
898 ,p_attribute27 => l_phn_rec.attribute27
899 ,p_attribute28 => l_phn_rec.attribute28
900 ,p_attribute29 => l_phn_rec.attribute29
901 ,p_attribute30 => l_phn_rec.attribute30
902 ,p_validate => FALSE
903 ,p_effective_date => l_effective_date
904 ,p_object_version_number => l_phn_rec.object_version_number
905 ,p_phone_id => l_phn_rec.phone_id
906 ,p_validity => l_phn_rec.validity
907 );
908 --
909 hr_utility.set_location(l_proc, 150);
910 --
911 else
912 --
913 -- update mode
914 --
915 hr_utility.set_location(l_proc, 160);
916 --
917 -- if the start date has changed and it is not the effective date then
918 -- we have an error. A change of start date is the new start date for
919 -- the new record, so must be the effective date so that the phone numbers
920 -- are continuous.
921 --
922 if per_phn_shd.g_old_rec.date_from <> l_phn_rec.date_from
923 and l_phn_rec.date_from <> l_effective_date then
924 hr_utility.set_location(l_proc, 170);
925 hr_utility.set_message(800, 'HR_52859_PHN_INVALID_EFF_DATE');
926 hr_utility.raise_error;
927 end if;
928 --
929 hr_utility.set_location(l_proc, 180);
930 --
931 -- end the old phone number
932 --
933 hr_phone_api.update_phone
934 (p_phone_id => l_phn_rec.phone_id
935 ,p_date_to => l_effective_date-1
936 ,p_object_version_number => l_phn_rec.object_version_number
937 ,p_validate => FALSE
938 ,p_effective_date => l_effective_date);
939 --
940 hr_utility.set_location(l_proc, 190);
941 --
942 -- insert the new phone number
943 --
944 hr_phone_api.create_phone
945 (p_date_from => l_effective_date
946 ,p_date_to => l_phn_rec.date_to
947 ,p_phone_type => l_phn_rec.phone_type
948 ,p_phone_number => l_phn_rec.phone_number
949 ,p_parent_id => l_phn_rec.parent_id
950 ,p_parent_table => l_phn_rec.parent_table
951 ,p_attribute_category => l_phn_rec.attribute_category
952 ,p_attribute1 => l_phn_rec.attribute1
953 ,p_attribute2 => l_phn_rec.attribute2
954 ,p_attribute3 => l_phn_rec.attribute3
955 ,p_attribute4 => l_phn_rec.attribute4
956 ,p_attribute5 => l_phn_rec.attribute5
957 ,p_attribute6 => l_phn_rec.attribute6
958 ,p_attribute7 => l_phn_rec.attribute7
959 ,p_attribute8 => l_phn_rec.attribute8
960 ,p_attribute9 => l_phn_rec.attribute9
961 ,p_attribute10 => l_phn_rec.attribute10
962 ,p_attribute11 => l_phn_rec.attribute11
963 ,p_attribute12 => l_phn_rec.attribute12
964 ,p_attribute13 => l_phn_rec.attribute13
965 ,p_attribute14 => l_phn_rec.attribute14
966 ,p_attribute15 => l_phn_rec.attribute15
967 ,p_attribute16 => l_phn_rec.attribute16
968 ,p_attribute17 => l_phn_rec.attribute17
969 ,p_attribute18 => l_phn_rec.attribute18
970 ,p_attribute19 => l_phn_rec.attribute19
971 ,p_attribute20 => l_phn_rec.attribute20
972 ,p_attribute21 => l_phn_rec.attribute21
973 ,p_attribute22 => l_phn_rec.attribute22
974 ,p_attribute23 => l_phn_rec.attribute23
975 ,p_attribute24 => l_phn_rec.attribute24
976 ,p_attribute25 => l_phn_rec.attribute25
977 ,p_attribute26 => l_phn_rec.attribute26
978 ,p_attribute27 => l_phn_rec.attribute27
979 ,p_attribute28 => l_phn_rec.attribute28
980 ,p_attribute29 => l_phn_rec.attribute29
981 ,p_attribute30 => l_phn_rec.attribute30
982 ,p_validate => FALSE
983 ,p_effective_date => l_effective_date
984 ,p_object_version_number => l_phn_rec.object_version_number
985 ,p_phone_id => l_phn_rec.phone_id
986 ,p_party_id => l_phn_rec.party_id -- HR/TCA merge
987 ,p_validity => l_phn_rec.validity
988 );
989 --
990 hr_utility.set_location(l_proc, 190);
991 --
992 end if;
993 end if;
994 --
995 if p_validate then
996 raise hr_api.validate_enabled;
997 end if;
998 --
999 p_phone_id:=l_phn_rec.phone_id;
1000 p_object_version_number:=l_phn_rec.object_version_number;
1001 hr_utility.set_location('Leaving:'||l_proc, 200);
1002 --
1003 exception
1004 when hr_api.validate_enabled then
1005 rollback to create_or_update_phone;
1006 p_phone_id:=null;
1007 p_object_version_number:=null;
1008 hr_utility.set_location('Leaving:'||l_proc, 220);
1009 --
1010 when others then
1011 rollback to create_or_update_phone;
1012 hr_utility.set_location('Leaving:'||l_proc, 230);
1013 raise;
1014 --
1015 end create_or_update_phone;
1016 --
1017 end hr_phone_api;