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