DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_CONTACT_REL_API

Source


1 Package Body hr_contact_rel_api as
2 /* $Header: pecrlapi.pkb 115.22 2003/02/06 10:29:45 vramanai ship $ */
3 --
4 -- Package Variables
5 --
6 g_package  varchar2(33) := '  hr_contact_rel_api.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |--------------------------< create_contact >------------------------------|
10 -- ----------------------------------------------------------------------------
11 --
12 procedure create_contact
13   (
14    p_validate                     in        boolean     default false
15   ,p_start_date                   in        date
16   ,p_business_group_id            in        number
17   ,p_person_id                    in        number
18   ,p_contact_person_id            in        number      default null
19   ,p_contact_type                 in        varchar2
20   ,p_ctr_comments                 in        varchar2    default null
21   ,p_primary_contact_flag         in        varchar2    default 'N'
22   ,p_date_start                   in        date        default null
23   ,p_start_life_reason_id         in        number      default null
24   ,p_date_end                     in        date        default null
25   ,p_end_life_reason_id           in        number      default null
26   ,p_rltd_per_rsds_w_dsgntr_flag  in        varchar2    default 'N'
27   ,p_personal_flag                in        varchar2    default 'N'
28   ,p_sequence_number              in        number      default null
29   ,p_cont_attribute_category      in        varchar2    default null
30   ,p_cont_attribute1              in        varchar2    default null
31   ,p_cont_attribute2              in        varchar2    default null
32   ,p_cont_attribute3              in        varchar2    default null
33   ,p_cont_attribute4              in        varchar2    default null
34   ,p_cont_attribute5              in        varchar2    default null
35   ,p_cont_attribute6              in        varchar2    default null
36   ,p_cont_attribute7              in        varchar2    default null
37   ,p_cont_attribute8              in        varchar2    default null
38   ,p_cont_attribute9              in        varchar2    default null
39   ,p_cont_attribute10             in        varchar2    default null
40   ,p_cont_attribute11             in        varchar2    default null
41   ,p_cont_attribute12             in        varchar2    default null
42   ,p_cont_attribute13             in        varchar2    default null
43   ,p_cont_attribute14             in        varchar2    default null
44   ,p_cont_attribute15             in        varchar2    default null
45   ,p_cont_attribute16             in        varchar2    default null
46   ,p_cont_attribute17             in        varchar2    default null
47   ,p_cont_attribute18             in        varchar2    default null
48   ,p_cont_attribute19             in        varchar2    default null
49   ,p_cont_attribute20             in        varchar2    default null
50   ,p_cont_information_category      in        varchar2    default null
51   ,p_cont_information1              in        varchar2    default null
52   ,p_cont_information2              in        varchar2    default null
53   ,p_cont_information3              in        varchar2    default null
54   ,p_cont_information4              in        varchar2    default null
55   ,p_cont_information5              in        varchar2    default null
56   ,p_cont_information6              in        varchar2    default null
57   ,p_cont_information7              in        varchar2    default null
58   ,p_cont_information8              in        varchar2    default null
59   ,p_cont_information9              in        varchar2    default null
60   ,p_cont_information10             in        varchar2    default null
61   ,p_cont_information11             in        varchar2    default null
62   ,p_cont_information12             in        varchar2    default null
63   ,p_cont_information13             in        varchar2    default null
64   ,p_cont_information14             in        varchar2    default null
65   ,p_cont_information15             in        varchar2    default null
66   ,p_cont_information16             in        varchar2    default null
67   ,p_cont_information17             in        varchar2    default null
68   ,p_cont_information18             in        varchar2    default null
69   ,p_cont_information19             in        varchar2    default null
70   ,p_cont_information20             in        varchar2    default null
71   ,p_third_party_pay_flag         in        varchar2    default 'N'
72   ,p_bondholder_flag              in        varchar2    default 'N'
73   ,p_dependent_flag               in        varchar2    default 'N'
74   ,p_beneficiary_flag             in        varchar2    default 'N'
75   ,p_last_name                    in        varchar2    default null
76   ,p_sex                          in        varchar2    default null
77   ,p_person_type_id               in        number      default null
78   ,p_per_comments                 in        varchar2    default null
79   ,p_date_of_birth                in        date        default null
80   ,p_email_address                in        varchar2    default null
81   ,p_first_name                   in        varchar2    default null
82   ,p_known_as                     in        varchar2    default null
83   ,p_marital_status               in        varchar2    default null
84   ,p_middle_names                 in        varchar2    default null
85   ,p_nationality                  in        varchar2    default null
86   ,p_national_identifier          in        varchar2    default null
87   ,p_previous_last_name           in        varchar2    default null
88   ,p_registered_disabled_flag     in        varchar2    default null
89   ,p_title                        in        varchar2    default null
90   ,p_work_telephone               in        varchar2    default null
91   ,p_attribute_category           in        varchar2    default null
92   ,p_attribute1                   in        varchar2    default null
93   ,p_attribute2                   in        varchar2    default null
94   ,p_attribute3                   in        varchar2    default null
95   ,p_attribute4                   in        varchar2    default null
96   ,p_attribute5                   in        varchar2    default null
97   ,p_attribute6                   in        varchar2    default null
98   ,p_attribute7                   in        varchar2    default null
99   ,p_attribute8                   in        varchar2    default null
100   ,p_attribute9                   in        varchar2    default null
101   ,p_attribute10                  in        varchar2    default null
102   ,p_attribute11                  in        varchar2    default null
103   ,p_attribute12                  in        varchar2    default null
104   ,p_attribute13                  in        varchar2    default null
105   ,p_attribute14                  in        varchar2    default null
106   ,p_attribute15                  in        varchar2    default null
107   ,p_attribute16                  in        varchar2    default null
108   ,p_attribute17                  in        varchar2    default null
109   ,p_attribute18                  in        varchar2    default null
110   ,p_attribute19                  in        varchar2    default null
111   ,p_attribute20                  in        varchar2    default null
112   ,p_attribute21                  in        varchar2    default null
113   ,p_attribute22                  in        varchar2    default null
114   ,p_attribute23                  in        varchar2    default null
115   ,p_attribute24                  in        varchar2    default null
116   ,p_attribute25                  in        varchar2    default null
117   ,p_attribute26                  in        varchar2    default null
118   ,p_attribute27                  in        varchar2    default null
119   ,p_attribute28                  in        varchar2    default null
120   ,p_attribute29                  in        varchar2    default null
121   ,p_attribute30                  in        varchar2    default null
122   ,p_per_information_category     in        varchar2    default null
123   ,p_per_information1             in        varchar2    default null
124   ,p_per_information2             in        varchar2    default null
125   ,p_per_information3             in        varchar2    default null
126   ,p_per_information4             in        varchar2    default null
127   ,p_per_information5             in        varchar2    default null
128   ,p_per_information6             in        varchar2    default null
129   ,p_per_information7             in        varchar2    default null
130   ,p_per_information8             in        varchar2    default null
131   ,p_per_information9             in        varchar2    default null
132   ,p_per_information10            in        varchar2    default null
133   ,p_per_information11            in        varchar2    default null
134   ,p_per_information12            in        varchar2    default null
135   ,p_per_information13            in        varchar2    default null
136   ,p_per_information14            in        varchar2    default null
137   ,p_per_information15            in        varchar2    default null
138   ,p_per_information16            in        varchar2    default null
139   ,p_per_information17            in        varchar2    default null
140   ,p_per_information18            in        varchar2    default null
141   ,p_per_information19            in        varchar2    default null
142   ,p_per_information20            in        varchar2    default null
143   ,p_per_information21            in        varchar2    default null
144   ,p_per_information22            in        varchar2    default null
145   ,p_per_information23            in        varchar2    default null
146   ,p_per_information24            in        varchar2    default null
147   ,p_per_information25            in        varchar2    default null
148   ,p_per_information26            in        varchar2    default null
149   ,p_per_information27            in        varchar2    default null
150   ,p_per_information28            in        varchar2    default null
151   ,p_per_information29            in        varchar2    default null
152   ,p_per_information30            in        varchar2    default null
153   ,p_correspondence_language      in        varchar2    default null
154   ,p_honors                       in        varchar2    default null
155   ,p_pre_name_adjunct             in        varchar2    default null
156   ,p_suffix                       in        varchar2    default null
157   ,p_create_mirror_flag           in        varchar2    default 'N'
158   ,p_mirror_type                  in        varchar2    default null
159   ,p_mirror_cont_attribute_cat    in        varchar2    default null
160   ,p_mirror_cont_attribute1       in        varchar2    default null
161   ,p_mirror_cont_attribute2       in        varchar2    default null
162   ,p_mirror_cont_attribute3       in        varchar2    default null
163   ,p_mirror_cont_attribute4       in        varchar2    default null
164   ,p_mirror_cont_attribute5       in        varchar2    default null
165   ,p_mirror_cont_attribute6       in        varchar2    default null
166   ,p_mirror_cont_attribute7       in        varchar2    default null
167   ,p_mirror_cont_attribute8       in        varchar2    default null
168   ,p_mirror_cont_attribute9       in        varchar2    default null
169   ,p_mirror_cont_attribute10      in        varchar2    default null
170   ,p_mirror_cont_attribute11      in        varchar2    default null
171   ,p_mirror_cont_attribute12      in        varchar2    default null
172   ,p_mirror_cont_attribute13      in        varchar2    default null
173   ,p_mirror_cont_attribute14      in        varchar2    default null
174   ,p_mirror_cont_attribute15      in        varchar2    default null
175   ,p_mirror_cont_attribute16      in        varchar2    default null
176   ,p_mirror_cont_attribute17      in        varchar2    default null
177   ,p_mirror_cont_attribute18      in        varchar2    default null
178   ,p_mirror_cont_attribute19      in        varchar2    default null
179   ,p_mirror_cont_attribute20      in        varchar2    default null
180   ,p_mirror_cont_information_cat    in        varchar2    default null
181   ,p_mirror_cont_information1       in        varchar2    default null
182   ,p_mirror_cont_information2       in        varchar2    default null
183   ,p_mirror_cont_information3       in        varchar2    default null
184   ,p_mirror_cont_information4       in        varchar2    default null
185   ,p_mirror_cont_information5       in        varchar2    default null
186   ,p_mirror_cont_information6       in        varchar2    default null
187   ,p_mirror_cont_information7       in        varchar2    default null
188   ,p_mirror_cont_information8       in        varchar2    default null
189   ,p_mirror_cont_information9       in        varchar2    default null
190   ,p_mirror_cont_information10      in        varchar2    default null
191   ,p_mirror_cont_information11      in        varchar2    default null
192   ,p_mirror_cont_information12      in        varchar2    default null
193   ,p_mirror_cont_information13      in        varchar2    default null
194   ,p_mirror_cont_information14      in        varchar2    default null
195   ,p_mirror_cont_information15      in        varchar2    default null
196   ,p_mirror_cont_information16      in        varchar2    default null
197   ,p_mirror_cont_information17      in        varchar2    default null
198   ,p_mirror_cont_information18      in        varchar2    default null
199   ,p_mirror_cont_information19      in        varchar2    default null
200   ,p_mirror_cont_information20      in        varchar2    default null
201   ,p_contact_relationship_id      out nocopy number
202   ,p_ctr_object_version_number    out nocopy number
203   ,p_per_person_id                out nocopy number
204   ,p_per_object_version_number    out nocopy number
205   ,p_per_effective_start_date     out nocopy date
206   ,p_per_effective_end_date       out nocopy date
207   ,p_full_name                    out nocopy varchar2
208   ,p_per_comment_id               out nocopy number
209   ,p_name_combination_warning     out nocopy boolean
210   ,p_orig_hire_warning            out nocopy boolean
211   ) is
212   --
213   -- Declare cursors and local variables
214   --
215   l_proc                       varchar2(72) := g_package||'create_contact';
216   l_contact_relationship_id
217     per_contact_relationships.contact_relationship_id%TYPE;
218   l_per_object_version_number  number(9);
219   l_ctr_object_version_number  number(9);
220   l_name_combination_warning   boolean;
221   l_orig_hire_warning          boolean;
222   l_start_date                 date;
223   l_date_start                 date;
224   l_date_end                   date;
225   --
226   -- dummy variables for rh outs
227   --
228   l_date_employee_data_verified    date;
229   l_employee_number                varchar2(30);
230   l_contact_person_id              per_contact_relationships.contact_person_id%TYPE;
231   l_contact_person_id_save         per_contact_relationships.contact_person_id%TYPE;
232   l_person_id                      per_contact_relationships.person_id%TYPE;
233   l_contact_type                   varchar2(30);
234   l_third_party_pay_flag           varchar2(1);
235   l_primary_contact_flag           varchar2(1);
236   l_bondholder_flag                varchar2(1);
237   l_dependent_flag                 varchar2(1);
238   l_beneficiary_flag               varchar2(1);
239   l_sequence_number                number;
240   l_mirror_ovn                     number;
241   l_mirror_contact_rel_id          number;
242   --
243   -- Extra dummy vars for rh outs. Created due to User Hook.
244   --
245   l_per_effective_start_date       date;
246   l_per_effective_end_date         date;
247   l_full_name                      varchar2(240);
248   l_per_comment_id                 number;
249   --
250 begin
251   hr_utility.set_location('Entering:'|| l_proc, 5);
252   --
253   -- Issue a savepoint.
254   --
255   l_start_date := trunc(p_start_date);
256   l_date_start := trunc(p_date_start);
257   l_date_end   := trunc(p_date_end);
258   --
259   savepoint create_contact;
260   hr_utility.set_location(l_proc, 6);
261   --
262   --
263   begin
264     --
265     -- Start of API User Hook for the before hook of create_contact
266     --
267      hr_contact_rel_bk1.create_contact_b
268       (p_start_date                   =>  l_start_date
269       ,p_person_id                    =>  p_person_id
270       ,p_business_group_id            =>  p_business_group_id
271       ,p_contact_person_id            =>  p_contact_person_id
272       ,p_contact_type                 =>  p_contact_type
273       ,p_ctr_comments                 =>  p_ctr_comments
274       ,p_primary_contact_flag         =>  p_primary_contact_flag
275       ,p_date_start                   =>  l_date_start
276       ,p_start_life_reason_id         =>  p_start_life_reason_id
277       ,p_date_end                     =>  l_date_end
278       ,p_end_life_reason_id           =>  p_end_life_reason_id
279       ,p_rltd_per_rsds_w_dsgntr_flag  =>  p_rltd_per_rsds_w_dsgntr_flag
280       ,p_personal_flag                =>  p_personal_flag
281       ,p_sequence_number              =>  p_sequence_number
282       ,p_cont_attribute_category      =>  p_cont_attribute_category
283       ,p_cont_attribute1              =>  p_cont_attribute1
284       ,p_cont_attribute2              =>  p_cont_attribute2
285       ,p_cont_attribute3              =>  p_cont_attribute3
286       ,p_cont_attribute4              =>  p_cont_attribute4
287       ,p_cont_attribute5              =>  p_cont_attribute5
288       ,p_cont_attribute6              =>  p_cont_attribute6
289       ,p_cont_attribute7              =>  p_cont_attribute7
290       ,p_cont_attribute8              =>  p_cont_attribute8
291       ,p_cont_attribute9              =>  p_cont_attribute9
292       ,p_cont_attribute10             =>  p_cont_attribute10
293       ,p_cont_attribute11             =>  p_cont_attribute11
294       ,p_cont_attribute12             =>  p_cont_attribute12
295       ,p_cont_attribute13             =>  p_cont_attribute13
296       ,p_cont_attribute14             =>  p_cont_attribute14
297       ,p_cont_attribute15             =>  p_cont_attribute15
298       ,p_cont_attribute16             =>  p_cont_attribute16
299       ,p_cont_attribute17             =>  p_cont_attribute17
300       ,p_cont_attribute18             =>  p_cont_attribute18
301       ,p_cont_attribute19             =>  p_cont_attribute19
302       ,p_cont_attribute20             =>  p_cont_attribute20
303       ,p_cont_information_category      =>  p_cont_information_category
304       ,p_cont_information1              =>  p_cont_information1
305       ,p_cont_information2              =>  p_cont_information2
306       ,p_cont_information3              =>  p_cont_information3
307       ,p_cont_information4              =>  p_cont_information4
308       ,p_cont_information5              =>  p_cont_information5
309       ,p_cont_information6              =>  p_cont_information6
310       ,p_cont_information7              =>  p_cont_information7
311       ,p_cont_information8              =>  p_cont_information8
312       ,p_cont_information9              =>  p_cont_information9
313       ,p_cont_information10             =>  p_cont_information10
314       ,p_cont_information11             =>  p_cont_information11
315       ,p_cont_information12             =>  p_cont_information12
316       ,p_cont_information13             =>  p_cont_information13
317       ,p_cont_information14             =>  p_cont_information14
318       ,p_cont_information15             =>  p_cont_information15
319       ,p_cont_information16             =>  p_cont_information16
320       ,p_cont_information17             =>  p_cont_information17
321       ,p_cont_information18             =>  p_cont_information18
322       ,p_cont_information19             =>  p_cont_information19
323       ,p_cont_information20             =>  p_cont_information20
324       ,p_third_party_pay_flag         =>  p_third_party_pay_flag
325       ,p_bondholder_flag              =>  p_bondholder_flag
326       ,p_dependent_flag               =>  p_dependent_flag
327       ,p_beneficiary_flag             =>  p_beneficiary_flag
328       ,p_sex                          =>  p_sex
329       ,p_last_name                    =>  p_last_name
330       ,p_person_type_id               =>  p_person_type_id
331       ,p_per_comments                 =>  p_per_comments
332       ,p_date_of_birth                =>  p_date_of_birth
333       ,p_email_address                =>  p_email_address
334       ,p_first_name                   =>  p_first_name
335       ,p_known_as                     =>  p_known_as
336       ,p_marital_status               =>  p_marital_status
337       ,p_middle_names                 =>  p_middle_names
338       ,p_nationality                  =>  p_nationality
339       ,p_national_identifier          =>  p_national_identifier
340       ,p_previous_last_name           =>  p_previous_last_name
341       ,p_registered_disabled_flag     =>  p_registered_disabled_flag
342       ,p_title                        =>  p_title
343       ,p_work_telephone               =>  p_work_telephone
344       ,p_attribute_category           =>  p_attribute_category
345       ,p_attribute1                   =>  p_attribute1
346       ,p_attribute2                   =>  p_attribute2
347       ,p_attribute3                   =>  p_attribute3
348       ,p_attribute4                   =>  p_attribute4
349       ,p_attribute5                   =>  p_attribute5
350       ,p_attribute6                   =>  p_attribute6
351       ,p_attribute7                   =>  p_attribute7
352       ,p_attribute8                   =>  p_attribute8
353       ,p_attribute9                   =>  p_attribute9
354       ,p_attribute10                  =>  p_attribute10
355       ,p_attribute11                  =>  p_attribute11
356       ,p_attribute12                  =>  p_attribute12
357       ,p_attribute13                  =>  p_attribute13
358       ,p_attribute14                  =>  p_attribute14
359       ,p_attribute15                  =>  p_attribute15
360       ,p_attribute16                  =>  p_attribute16
361       ,p_attribute17                  =>  p_attribute17
362       ,p_attribute18                  =>  p_attribute18
363       ,p_attribute19                  =>  p_attribute19
364       ,p_attribute20                  =>  p_attribute20
365       ,p_attribute21                  =>  p_attribute21
366       ,p_attribute22                  =>  p_attribute22
367       ,p_attribute23                  =>  p_attribute23
368       ,p_attribute24                  =>  p_attribute24
369       ,p_attribute25                  =>  p_attribute25
370       ,p_attribute26                  =>  p_attribute26
371       ,p_attribute27                  =>  p_attribute27
372       ,p_attribute28                  =>  p_attribute28
373       ,p_attribute29                  =>  p_attribute29
374       ,p_attribute30                  =>  p_attribute30
375       ,p_per_information_category     =>  p_per_information_category
376       ,p_per_information1             =>  p_per_information1
377       ,p_per_information2             =>  p_per_information2
378       ,p_per_information3             =>  p_per_information3
379       ,p_per_information4             =>  p_per_information4
380       ,p_per_information5             =>  p_per_information5
381       ,p_per_information6             =>  p_per_information6
382       ,p_per_information7             =>  p_per_information7
383       ,p_per_information8             =>  p_per_information8
384       ,p_per_information9             =>  p_per_information9
385       ,p_per_information10            =>  p_per_information10
386       ,p_per_information11            =>  p_per_information11
387       ,p_per_information12            =>  p_per_information12
388       ,p_per_information13            =>  p_per_information13
389       ,p_per_information14            =>  p_per_information14
390       ,p_per_information15            =>  p_per_information15
391       ,p_per_information16            =>  p_per_information16
392       ,p_per_information17            =>  p_per_information17
393       ,p_per_information18            =>  p_per_information18
394       ,p_per_information19            =>  p_per_information19
395       ,p_per_information20            =>  p_per_information20
396       ,p_per_information21            =>  p_per_information21
397       ,p_per_information22            =>  p_per_information22
398       ,p_per_information23            =>  p_per_information23
399       ,p_per_information24            =>  p_per_information24
400       ,p_per_information25            =>  p_per_information25
401       ,p_per_information26            =>  p_per_information26
402       ,p_per_information27            =>  p_per_information27
403       ,p_per_information28            =>  p_per_information28
404       ,p_per_information29            =>  p_per_information29
405       ,p_per_information30            =>  p_per_information30
406       ,p_correspondence_language      =>  p_correspondence_language
407       ,p_honors                       =>  p_honors
408       ,p_pre_name_adjunct             =>  p_pre_name_adjunct
409       ,p_suffix                       =>  p_suffix
410       ,p_create_mirror_flag           =>  p_create_mirror_flag
411       ,p_mirror_type                  =>  p_mirror_type
412       ,p_mirror_cont_attribute_cat    =>  p_mirror_cont_attribute_cat
413       ,p_mirror_cont_attribute1       =>  p_mirror_cont_attribute1
414       ,p_mirror_cont_attribute2       =>  p_mirror_cont_attribute2
415       ,p_mirror_cont_attribute3       =>  p_mirror_cont_attribute3
416       ,p_mirror_cont_attribute4       =>  p_mirror_cont_attribute4
417       ,p_mirror_cont_attribute5       =>  p_mirror_cont_attribute5
418       ,p_mirror_cont_attribute6       =>  p_mirror_cont_attribute6
419       ,p_mirror_cont_attribute7       =>  p_mirror_cont_attribute7
420       ,p_mirror_cont_attribute8       =>  p_mirror_cont_attribute8
421       ,p_mirror_cont_attribute9       =>  p_mirror_cont_attribute9
422       ,p_mirror_cont_attribute10      =>  p_mirror_cont_attribute10
423       ,p_mirror_cont_attribute11      =>  p_mirror_cont_attribute11
424       ,p_mirror_cont_attribute12      =>  p_mirror_cont_attribute12
425       ,p_mirror_cont_attribute13      =>  p_mirror_cont_attribute13
426       ,p_mirror_cont_attribute14      =>  p_mirror_cont_attribute14
427       ,p_mirror_cont_attribute15      =>  p_mirror_cont_attribute15
428       ,p_mirror_cont_attribute16      =>  p_mirror_cont_attribute16
429       ,p_mirror_cont_attribute17      =>  p_mirror_cont_attribute17
430       ,p_mirror_cont_attribute18      =>  p_mirror_cont_attribute18
431       ,p_mirror_cont_attribute19      =>  p_mirror_cont_attribute19
432       ,p_mirror_cont_attribute20      =>  p_mirror_cont_attribute20
433       ,p_mirror_cont_information_cat    =>  p_mirror_cont_information_cat
434       ,p_mirror_cont_information1       =>  p_mirror_cont_information1
435       ,p_mirror_cont_information2       =>  p_mirror_cont_information2
436       ,p_mirror_cont_information3       =>  p_mirror_cont_information3
437       ,p_mirror_cont_information4       =>  p_mirror_cont_information4
438       ,p_mirror_cont_information5       =>  p_mirror_cont_information5
439       ,p_mirror_cont_information6       =>  p_mirror_cont_information6
440       ,p_mirror_cont_information7       =>  p_mirror_cont_information7
441       ,p_mirror_cont_information8       =>  p_mirror_cont_information8
442       ,p_mirror_cont_information9       =>  p_mirror_cont_information9
443       ,p_mirror_cont_information10      =>  p_mirror_cont_information10
444       ,p_mirror_cont_information11      =>  p_mirror_cont_information11
445       ,p_mirror_cont_information12      =>  p_mirror_cont_information12
446       ,p_mirror_cont_information13      =>  p_mirror_cont_information13
447       ,p_mirror_cont_information14      =>  p_mirror_cont_information14
448       ,p_mirror_cont_information15      =>  p_mirror_cont_information15
449       ,p_mirror_cont_information16      =>  p_mirror_cont_information16
450       ,p_mirror_cont_information17      =>  p_mirror_cont_information17
451       ,p_mirror_cont_information18      =>  p_mirror_cont_information18
452       ,p_mirror_cont_information19      =>  p_mirror_cont_information19
453       ,p_mirror_cont_information20      =>  p_mirror_cont_information20
454       );
455  exception
456     when hr_api.cannot_find_prog_unit then
457       hr_api.cannot_find_prog_unit_error
458         (p_module_name => 'Create_contact'
459         ,p_hook_type   => 'BP'
460         );
461     --
462     -- End of API User Hook for the before hook of create_contact
463     --
464   end;
465   --
466   -- Process Logic
467   -- Check that the contact person is not null. If not, go straight to
468   -- entering the details into per_contact_relationships. If it is null,
469   -- call hr_contact_api.create_person
470   --
471  if p_contact_person_id is null then
472   --
473   hr_contact_api.create_person
474   (p_validate                     =>  false
475   ,p_start_date                   =>  l_start_date
476   ,p_person_id                    =>  l_contact_person_id
477   ,p_business_group_id            =>  p_business_group_id
478   ,p_sex                          =>  p_sex
479   ,p_last_name                    =>  p_last_name
480   ,p_person_type_id               =>  p_person_type_id
481   --
482   ,p_comments                     =>  p_per_comments
483   ,p_date_employee_data_verified  =>  l_date_employee_data_verified
484   ,p_date_of_birth                =>  p_date_of_birth
485   ,p_email_address                =>  p_email_address
486   ,p_first_name                   =>  p_first_name
487   ,p_known_as                     =>  p_known_as
488   ,p_marital_status               =>  p_marital_status
489   ,p_middle_names                 =>  p_middle_names
490   ,p_nationality                  =>  p_nationality
491   ,p_national_identifier          =>  p_national_identifier
492   ,p_previous_last_name           =>  p_previous_last_name
493   ,p_registered_disabled_flag     =>  p_registered_disabled_flag
494   ,p_title                        =>  p_title
495   ,p_work_telephone               =>  p_work_telephone
496   ,p_attribute_category           =>  p_attribute_category
497   ,p_attribute1                   =>  p_attribute1
498   ,p_attribute2                   =>  p_attribute2
499   ,p_attribute3                   =>  p_attribute3
500   ,p_attribute4                   =>  p_attribute4
501   ,p_attribute5                   =>  p_attribute5
502   ,p_attribute6                   =>  p_attribute6
503   ,p_attribute7                   =>  p_attribute7
504   ,p_attribute8                   =>  p_attribute8
505   ,p_attribute9                   =>  p_attribute9
506   ,p_attribute10                  =>  p_attribute10
507   ,p_attribute11                  =>  p_attribute11
508   ,p_attribute12                  =>  p_attribute12
509   ,p_attribute13                  =>  p_attribute13
510   ,p_attribute14                  =>  p_attribute14
511   ,p_attribute15                  =>  p_attribute15
512   ,p_attribute16                  =>  p_attribute16
513   ,p_attribute17                  =>  p_attribute17
514   ,p_attribute18                  =>  p_attribute18
515   ,p_attribute19                  =>  p_attribute19
516   ,p_attribute20                  =>  p_attribute20
517   ,p_attribute21                  =>  p_attribute21
518   ,p_attribute22                  =>  p_attribute22
519   ,p_attribute23                  =>  p_attribute23
520   ,p_attribute24                  =>  p_attribute24
521   ,p_attribute25                  =>  p_attribute25
522   ,p_attribute26                  =>  p_attribute26
523   ,p_attribute27                  =>  p_attribute27
524   ,p_attribute28                  =>  p_attribute28
525   ,p_attribute29                  =>  p_attribute29
526   ,p_attribute30                  =>  p_attribute30
527   ,p_per_information_category     =>  p_per_information_category
528   ,p_per_information1             =>  p_per_information1
529   ,p_per_information2             =>  p_per_information2
530   ,p_per_information3             =>  p_per_information3
531   ,p_per_information4             =>  p_per_information4
532   ,p_per_information5             =>  p_per_information5
533   ,p_per_information6             =>  p_per_information6
534   ,p_per_information7             =>  p_per_information7
535   ,p_per_information8             =>  p_per_information8
536   ,p_per_information9             =>  p_per_information9
537   ,p_per_information10            =>  p_per_information10
538   ,p_per_information11            =>  p_per_information11
539   ,p_per_information12            =>  p_per_information12
540   ,p_per_information13            =>  p_per_information13
541   ,p_per_information14            =>  p_per_information14
542   ,p_per_information15            =>  p_per_information15
543   ,p_per_information16            =>  p_per_information16
544   ,p_per_information17            =>  p_per_information17
545   ,p_per_information18            =>  p_per_information18
546   ,p_per_information19            =>  p_per_information19
547   ,p_per_information20            =>  p_per_information20
548   ,p_per_information21            => p_per_information21
549   ,p_per_information22            => p_per_information22
550   ,p_per_information23            => p_per_information23
551   ,p_per_information24            => p_per_information24
552   ,p_per_information25            => p_per_information25
553   ,p_per_information26            => p_per_information26
554   ,p_per_information27            => p_per_information27
555   ,p_per_information28            => p_per_information28
556   ,p_per_information29            => p_per_information29
557   ,p_per_information30            => p_per_information30
558   ,p_correspondence_language      => p_correspondence_language
559   ,p_honors                       => p_honors
560   ,p_pre_name_adjunct             => p_pre_name_adjunct
561   ,p_suffix                       =>  p_suffix
562   --
563   ,p_object_version_number        =>  l_per_object_version_number
564   ,p_effective_start_date         =>  l_per_effective_start_date
565   ,p_effective_end_date           =>  l_per_effective_end_date
566   ,p_full_name                    =>  l_full_name
567   ,p_comment_id                   =>  l_per_comment_id
568   ,p_name_combination_warning     =>  l_name_combination_warning
569   ,p_orig_hire_warning            =>  l_orig_hire_warning
570   );
571   --
572   l_contact_person_id_save :=  l_contact_person_id;
573   --
574   else
575     l_contact_person_id := p_contact_person_id;
576     l_contact_person_id_save := l_contact_person_id;
577   --
578   end if;
579   --
580   -- Now we are sure of having a person_id for a contact, insert the
581   -- details by calling the per_contact_relationships row handler.
582   --
583   hr_utility.set_location(l_proc, 40);
584   --
585  per_ctr_ins.ins(p_contact_relationship_id =>  l_contact_relationship_id
586                 ,p_business_group_id       =>  p_business_group_id
587                 ,p_person_id               =>  p_person_id
588                 ,p_contact_person_id       =>  l_contact_person_id
589                 ,p_contact_type            =>  p_contact_type
590                 ,p_comments                =>  p_ctr_comments
591                 ,p_primary_contact_flag    =>  p_primary_contact_flag
592                 ,p_date_start              =>  l_date_start
593                 ,p_start_life_reason_id    =>  p_start_life_reason_id
594                 ,p_date_end                =>  l_date_end
595                 ,p_end_life_reason_id      =>  p_end_life_reason_id
596                 ,p_rltd_per_rsds_w_dsgntr_flag =>  p_rltd_per_rsds_w_dsgntr_flag
597                 ,p_personal_flag           =>  p_personal_flag
598 		,p_sequence_number         =>  p_sequence_number
599                 ,p_cont_attribute_category =>  p_cont_attribute_category
600                 ,p_cont_attribute1         =>  p_cont_attribute1
601                 ,p_cont_attribute2         =>  p_cont_attribute2
602                 ,p_cont_attribute3         =>  p_cont_attribute3
603                 ,p_cont_attribute4         =>  p_cont_attribute4
604                 ,p_cont_attribute5         =>  p_cont_attribute5
605                 ,p_cont_attribute6         =>  p_cont_attribute6
606                 ,p_cont_attribute7         =>  p_cont_attribute7
607                 ,p_cont_attribute8         =>  p_cont_attribute8
608                 ,p_cont_attribute9         =>  p_cont_attribute9
609                 ,p_cont_attribute10        =>  p_cont_attribute10
610                 ,p_cont_attribute11        =>  p_cont_attribute11
611                 ,p_cont_attribute12        =>  p_cont_attribute12
612                 ,p_cont_attribute13        =>  p_cont_attribute13
613                 ,p_cont_attribute14        =>  p_cont_attribute14
614                 ,p_cont_attribute15        =>  p_cont_attribute15
615                 ,p_cont_attribute16        =>  p_cont_attribute16
616                 ,p_cont_attribute17        =>  p_cont_attribute17
617                 ,p_cont_attribute18        =>  p_cont_attribute18
618                 ,p_cont_attribute19        =>  p_cont_attribute19
619                 ,p_cont_attribute20        =>  p_cont_attribute20
620                 ,p_cont_information_category =>  p_cont_information_category
621                 ,p_cont_information1         =>  p_cont_information1
622                 ,p_cont_information2         =>  p_cont_information2
623                 ,p_cont_information3         =>  p_cont_information3
624                 ,p_cont_information4         =>  p_cont_information4
625                 ,p_cont_information5         =>  p_cont_information5
626                 ,p_cont_information6         =>  p_cont_information6
627                 ,p_cont_information7         =>  p_cont_information7
628                 ,p_cont_information8         =>  p_cont_information8
629                 ,p_cont_information9         =>  p_cont_information9
630                 ,p_cont_information10        =>  p_cont_information10
631                 ,p_cont_information11        =>  p_cont_information11
632                 ,p_cont_information12        =>  p_cont_information12
633                 ,p_cont_information13        =>  p_cont_information13
634                 ,p_cont_information14        =>  p_cont_information14
635                 ,p_cont_information15        =>  p_cont_information15
636                 ,p_cont_information16        =>  p_cont_information16
637                 ,p_cont_information17        =>  p_cont_information17
638                 ,p_cont_information18        =>  p_cont_information18
639                 ,p_cont_information19        =>  p_cont_information19
640                 ,p_cont_information20        =>  p_cont_information20
641                 ,p_third_party_pay_flag    =>  p_third_party_pay_flag
642                 ,p_bondholder_flag         =>  p_bondholder_flag
643                 ,p_dependent_flag          =>  p_dependent_flag
644                 ,p_beneficiary_flag        =>  p_beneficiary_flag
645                 ,p_object_version_number   =>  l_ctr_object_version_number
646                 ,p_effective_date          =>  l_start_date
647                 );
648   --
649   -- Set pipe on for Debug output
650   --
651   hr_utility.set_location(l_proc||'First contact created with id: ',l_contact_relationship_id);
652   hr_utility.set_location(l_proc||'                     and type: '||p_contact_type, 0);
653   hr_utility.set_location(l_proc||'                and person_id: ',p_person_id);
654   hr_utility.set_location(l_proc||'        and contact_person_id: ',l_contact_person_id);
655   --
656   -- start of code for bug 2678841
657     if p_contact_type in ('P','C','S') and
658          p_personal_flag <> 'Y' then
659        hr_utility.set_message(800,'PER_6994_PERSONAL_FLAG');
660        hr_utility.raise_error;
661      end if;
662    -- end of code for bug 2678841
663 
664   if p_create_mirror_flag = 'Y' then
665 
666   -- Set the mirror person ids for the new contact relationship
667   --
668   l_person_id := l_contact_person_id;
669   l_contact_person_id := p_person_id;
670   --
671   -- Set flags to 'N', these have to be set with the update API.
672   --
673   l_third_party_pay_flag := 'N';
674   l_primary_contact_flag := 'N';
675   l_bondholder_flag := 'N';
676   l_dependent_flag  := 'N';
677   l_beneficiary_flag := 'N';
678   --
679   -- Set mirror sequence number to null
680   l_sequence_number := null;
681   --
682   -- Validation in addition to Row Handlers.
683   --
684    if p_contact_type = 'P' and p_mirror_type <> 'C'
685      or p_contact_type = 'C' and p_mirror_type <> 'P'
686      or p_contact_type = 'S' and p_mirror_type <> 'S' then
687      hr_utility.set_message(801, 'PER_6995_MIRR_CON_REL_TYPES');
688      hr_utility.raise_error;
689    end if;
690   --
691    if (p_date_start is not null
692        and p_date_of_birth is not null
693        and p_date_start < p_date_of_birth) then
694      fnd_message.set_name('PER','PER_50386_CON_SDT_LES_EMP_BDT');
695      fnd_message.raise_error;
696    end if;
697   --
698   -- Insert the mirror contact relationship
699   --
700   hr_utility.set_location(l_proc, 45);
701   --
702   per_ctr_ins.ins(p_contact_relationship_id =>  l_mirror_contact_rel_id
703                  ,p_business_group_id       =>  p_business_group_id
704                  ,p_person_id               =>  l_person_id
705                  ,p_contact_person_id       =>  l_contact_person_id
706                  ,p_contact_type            =>  p_mirror_type
707                  ,p_comments                =>  null
708                  ,p_primary_contact_flag    =>  l_primary_contact_flag
709                  ,p_date_start              =>  l_date_start
710                  ,p_start_life_reason_id    =>  p_start_life_reason_id
711                  ,p_date_end                =>  l_date_end
712                  ,p_end_life_reason_id      =>  p_end_life_reason_id
713                  ,p_rltd_per_rsds_w_dsgntr_flag => p_rltd_per_rsds_w_dsgntr_flag
714                  ,p_personal_flag           =>  p_personal_flag
715 		 ,p_sequence_number         =>  l_sequence_number
716                  ,p_cont_attribute_category =>  p_mirror_cont_attribute_cat
717                  ,p_cont_attribute1         =>  p_mirror_cont_attribute1
718                  ,p_cont_attribute2         =>  p_mirror_cont_attribute2
719                  ,p_cont_attribute3         =>  p_mirror_cont_attribute3
720                  ,p_cont_attribute4         =>  p_mirror_cont_attribute4
721                  ,p_cont_attribute5         =>  p_mirror_cont_attribute5
722                  ,p_cont_attribute6         =>  p_mirror_cont_attribute6
723                  ,p_cont_attribute7         =>  p_mirror_cont_attribute7
724                  ,p_cont_attribute8         =>  p_mirror_cont_attribute8
725                  ,p_cont_attribute9         =>  p_mirror_cont_attribute9
726                  ,p_cont_attribute10        =>  p_mirror_cont_attribute10
727                  ,p_cont_attribute11        =>  p_mirror_cont_attribute11
728                  ,p_cont_attribute12        =>  p_mirror_cont_attribute12
729                  ,p_cont_attribute13        =>  p_mirror_cont_attribute13
730                  ,p_cont_attribute14        =>  p_mirror_cont_attribute14
731                  ,p_cont_attribute15        =>  p_mirror_cont_attribute15
732                  ,p_cont_attribute16        =>  p_mirror_cont_attribute16
733                  ,p_cont_attribute17        =>  p_mirror_cont_attribute17
734                  ,p_cont_attribute18        =>  p_mirror_cont_attribute18
735                  ,p_cont_attribute19        =>  p_mirror_cont_attribute19
736                  ,p_cont_attribute20        =>  p_mirror_cont_attribute20
737                  ,p_cont_information_category =>  p_mirror_cont_information_cat
738                  ,p_cont_information1         =>  p_mirror_cont_information1
739                  ,p_cont_information2         =>  p_mirror_cont_information2
740                  ,p_cont_information3         =>  p_mirror_cont_information3
741                  ,p_cont_information4         =>  p_mirror_cont_information4
742                  ,p_cont_information5         =>  p_mirror_cont_information5
743                  ,p_cont_information6         =>  p_mirror_cont_information6
744                  ,p_cont_information7         =>  p_mirror_cont_information7
745                  ,p_cont_information8         =>  p_mirror_cont_information8
746                  ,p_cont_information9         =>  p_mirror_cont_information9
747                  ,p_cont_information10        =>  p_mirror_cont_information10
748                  ,p_cont_information11        =>  p_mirror_cont_information11
749                  ,p_cont_information12        =>  p_mirror_cont_information12
750                  ,p_cont_information13        =>  p_mirror_cont_information13
751                  ,p_cont_information14        =>  p_mirror_cont_information14
752                  ,p_cont_information15        =>  p_mirror_cont_information15
753                  ,p_cont_information16        =>  p_mirror_cont_information16
754                  ,p_cont_information17        =>  p_mirror_cont_information17
755                  ,p_cont_information18        =>  p_mirror_cont_information18
756                  ,p_cont_information19        =>  p_mirror_cont_information19
757                  ,p_cont_information20        =>  p_mirror_cont_information20
758                  ,p_third_party_pay_flag    =>  l_third_party_pay_flag
759                  ,p_bondholder_flag         =>  l_bondholder_flag
760                  ,p_dependent_flag          =>  l_dependent_flag
761                  ,p_beneficiary_flag        =>  l_beneficiary_flag
762                  ,p_object_version_number   =>  l_mirror_ovn
763                  ,p_effective_date          =>  l_start_date
764                  );
765   --
766   -- Set pipe on for Debug output
767   --
768   hr_utility.set_location(l_proc||'Mirror contact created with id: ',l_mirror_contact_rel_id);
769   hr_utility.set_location(l_proc||'                      and type: '||l_contact_type, 0);
770   hr_utility.set_location(l_proc||'                 and person_id: ',l_person_id);
771   hr_utility.set_location(l_proc||'         and contact_person_id: ',l_contact_person_id);
772   --
773   end if;
774   --
775   -- 1766066: added call for contact start date enh.
776   --
777   per_people12_pkg.maintain_coverage(p_person_id      => l_contact_person_id_save
778                                     ,p_type           => 'CONT'
779                                     );
780   -- 1766066 end.
781   -- 2410386 start
782       select per.object_version_number into l_per_object_version_number
783       from per_all_people_f per
784       where per.person_id=l_contact_person_id_save
785       and p_start_date between per.effective_start_date and per.effective_end_date;
786   -- 2410386 end
787   --
788   -- Set all output arguments
789   --
790   p_per_person_id                :=  l_contact_person_id_save;
791   p_contact_relationship_id      :=  l_contact_relationship_id;
792   --
793   p_ctr_object_version_number    := l_ctr_object_version_number;
794   p_per_object_version_number    := l_per_object_version_number;
795   p_per_effective_start_date     := l_per_effective_start_date;
796   p_per_effective_end_date       := l_per_effective_end_date;
797   p_full_name                    := l_full_name;
798   p_per_comment_id               := l_per_comment_id;
799   p_name_combination_warning     := l_name_combination_warning;
800   p_orig_hire_warning            := l_orig_hire_warning;
801   --
802   begin
803     --
804     -- Start of API User Hook for the after hook of create_contact
805     --
806     hr_contact_rel_bk1.create_contact_a
807       (p_start_date                   =>  l_start_date
808       ,p_person_id                    =>  p_person_id
809       ,p_business_group_id            =>  p_business_group_id
810       ,p_contact_person_id            =>  p_contact_person_id
811       ,p_contact_type                 =>  p_contact_type
812       ,p_ctr_comments                 =>  p_ctr_comments
813       ,p_primary_contact_flag         =>  p_primary_contact_flag
814       ,p_date_start                   =>  l_date_start
815       ,p_start_life_reason_id         =>  p_start_life_reason_id
816       ,p_date_end                     =>  l_date_end
817       ,p_end_life_reason_id           =>  p_end_life_reason_id
818       ,p_rltd_per_rsds_w_dsgntr_flag  =>  p_rltd_per_rsds_w_dsgntr_flag
819       ,p_personal_flag                =>  p_personal_flag
820       ,p_sequence_number              =>  p_sequence_number
821       ,p_cont_attribute_category      =>  p_cont_attribute_category
822       ,p_cont_attribute1              =>  p_cont_attribute1
823       ,p_cont_attribute2              =>  p_cont_attribute2
824       ,p_cont_attribute3              =>  p_cont_attribute3
825       ,p_cont_attribute4              =>  p_cont_attribute4
826       ,p_cont_attribute5              =>  p_cont_attribute5
827       ,p_cont_attribute6              =>  p_cont_attribute6
828       ,p_cont_attribute7              =>  p_cont_attribute7
829       ,p_cont_attribute8              =>  p_cont_attribute8
830       ,p_cont_attribute9              =>  p_cont_attribute9
831       ,p_cont_attribute10             =>  p_cont_attribute10
832       ,p_cont_attribute11             =>  p_cont_attribute11
833       ,p_cont_attribute12             =>  p_cont_attribute12
834       ,p_cont_attribute13             =>  p_cont_attribute13
835       ,p_cont_attribute14             =>  p_cont_attribute14
836       ,p_cont_attribute15             =>  p_cont_attribute15
837       ,p_cont_attribute16             =>  p_cont_attribute16
838       ,p_cont_attribute17             =>  p_cont_attribute17
839       ,p_cont_attribute18             =>  p_cont_attribute18
840       ,p_cont_attribute19             =>  p_cont_attribute19
841       ,p_cont_attribute20             =>  p_cont_attribute20
842       ,p_cont_information_category      =>  p_cont_information_category
843       ,p_cont_information1              =>  p_cont_information1
844       ,p_cont_information2              =>  p_cont_information2
845       ,p_cont_information3              =>  p_cont_information3
846       ,p_cont_information4              =>  p_cont_information4
847       ,p_cont_information5              =>  p_cont_information5
848       ,p_cont_information6              =>  p_cont_information6
849       ,p_cont_information7              =>  p_cont_information7
850       ,p_cont_information8              =>  p_cont_information8
851       ,p_cont_information9              =>  p_cont_information9
852       ,p_cont_information10             =>  p_cont_information10
853       ,p_cont_information11             =>  p_cont_information11
854       ,p_cont_information12             =>  p_cont_information12
855       ,p_cont_information13             =>  p_cont_information13
856       ,p_cont_information14             =>  p_cont_information14
857       ,p_cont_information15             =>  p_cont_information15
858       ,p_cont_information16             =>  p_cont_information16
859       ,p_cont_information17             =>  p_cont_information17
860       ,p_cont_information18             =>  p_cont_information18
861       ,p_cont_information19             =>  p_cont_information19
862       ,p_cont_information20             =>  p_cont_information20
863       ,p_third_party_pay_flag         =>  p_third_party_pay_flag
864       ,p_bondholder_flag              =>  p_bondholder_flag
865       ,p_dependent_flag               =>  p_dependent_flag
866       ,p_beneficiary_flag             =>  p_beneficiary_flag
867       ,p_sex                          =>  p_sex
868       ,p_last_name                    =>  p_last_name
869       ,p_person_type_id               =>  p_person_type_id
870       ,p_per_comments                 =>  p_per_comments
871       ,p_date_of_birth                =>  p_date_of_birth
872       ,p_email_address                =>  p_email_address
873       ,p_first_name                   =>  p_first_name
874       ,p_known_as                     =>  p_known_as
875       ,p_marital_status               =>  p_marital_status
876       ,p_middle_names                 =>  p_middle_names
877       ,p_nationality                  =>  p_nationality
878       ,p_national_identifier          =>  p_national_identifier
879       ,p_previous_last_name           =>  p_previous_last_name
880       ,p_registered_disabled_flag     =>  p_registered_disabled_flag
881       ,p_title                        =>  p_title
882       ,p_work_telephone               =>  p_work_telephone
883       ,p_attribute_category           =>  p_attribute_category
884       ,p_attribute1                   =>  p_attribute1
885       ,p_attribute2                   =>  p_attribute2
886       ,p_attribute3                   =>  p_attribute3
887       ,p_attribute4                   =>  p_attribute4
888       ,p_attribute5                   =>  p_attribute5
889       ,p_attribute6                   =>  p_attribute6
890       ,p_attribute7                   =>  p_attribute7
891       ,p_attribute8                   =>  p_attribute8
892       ,p_attribute9                   =>  p_attribute9
893       ,p_attribute10                  =>  p_attribute10
894       ,p_attribute11                  =>  p_attribute11
895       ,p_attribute12                  =>  p_attribute12
896       ,p_attribute13                  =>  p_attribute13
897       ,p_attribute14                  =>  p_attribute14
898       ,p_attribute15                  =>  p_attribute15
899       ,p_attribute16                  =>  p_attribute16
900       ,p_attribute17                  =>  p_attribute17
901       ,p_attribute18                  =>  p_attribute18
902       ,p_attribute19                  =>  p_attribute19
903       ,p_attribute20                  =>  p_attribute20
904       ,p_attribute21                  =>  p_attribute21
905       ,p_attribute22                  =>  p_attribute22
906       ,p_attribute23                  =>  p_attribute23
907       ,p_attribute24                  =>  p_attribute24
908       ,p_attribute25                  =>  p_attribute25
909       ,p_attribute26                  =>  p_attribute26
910       ,p_attribute27                  =>  p_attribute27
911       ,p_attribute28                  =>  p_attribute28
912       ,p_attribute29                  =>  p_attribute29
913       ,p_attribute30                  =>  p_attribute30
914       ,p_per_information_category     =>  p_per_information_category
915       ,p_per_information1             =>  p_per_information1
916       ,p_per_information2             =>  p_per_information2
917       ,p_per_information3             =>  p_per_information3
918       ,p_per_information4             =>  p_per_information4
919       ,p_per_information5             =>  p_per_information5
920       ,p_per_information6             =>  p_per_information6
921       ,p_per_information7             =>  p_per_information7
922       ,p_per_information8             =>  p_per_information8
923       ,p_per_information9             =>  p_per_information9
924       ,p_per_information10            =>  p_per_information10
925       ,p_per_information11            =>  p_per_information11
926       ,p_per_information12            =>  p_per_information12
927       ,p_per_information13            =>  p_per_information13
928       ,p_per_information14            =>  p_per_information14
929       ,p_per_information15            =>  p_per_information15
930       ,p_per_information16            =>  p_per_information16
931       ,p_per_information17            =>  p_per_information17
932       ,p_per_information18            =>  p_per_information18
933       ,p_per_information19            =>  p_per_information19
934       ,p_per_information20            =>  p_per_information20
935       ,p_per_information21            =>  p_per_information21
936       ,p_per_information22            =>  p_per_information22
937       ,p_per_information23            =>  p_per_information23
938       ,p_per_information24            =>  p_per_information24
939       ,p_per_information25            =>  p_per_information25
940       ,p_per_information26            =>  p_per_information26
941       ,p_per_information27            =>  p_per_information27
942       ,p_per_information28            =>  p_per_information28
943       ,p_per_information29            =>  p_per_information29
944       ,p_per_information30            =>  p_per_information30
945       ,p_correspondence_language      =>  p_correspondence_language
946       ,p_honors                       =>  p_honors
947       ,p_pre_name_adjunct             =>  p_pre_name_adjunct
948       ,p_suffix                       =>  p_suffix
949       ,p_create_mirror_flag           =>  p_create_mirror_flag
950       ,p_mirror_type                  =>  p_mirror_type
951       ,p_mirror_cont_attribute_cat    =>  p_mirror_cont_attribute_cat
952       ,p_mirror_cont_attribute1       =>  p_mirror_cont_attribute1
953       ,p_mirror_cont_attribute2       =>  p_mirror_cont_attribute2
954       ,p_mirror_cont_attribute3       =>  p_mirror_cont_attribute3
955       ,p_mirror_cont_attribute4       =>  p_mirror_cont_attribute4
956       ,p_mirror_cont_attribute5       =>  p_mirror_cont_attribute5
957       ,p_mirror_cont_attribute6       =>  p_mirror_cont_attribute6
958       ,p_mirror_cont_attribute7       =>  p_mirror_cont_attribute7
959       ,p_mirror_cont_attribute8       =>  p_mirror_cont_attribute8
960       ,p_mirror_cont_attribute9       =>  p_mirror_cont_attribute9
961       ,p_mirror_cont_attribute10      =>  p_mirror_cont_attribute10
962       ,p_mirror_cont_attribute11      =>  p_mirror_cont_attribute11
963       ,p_mirror_cont_attribute12      =>  p_mirror_cont_attribute12
964       ,p_mirror_cont_attribute13      =>  p_mirror_cont_attribute13
965       ,p_mirror_cont_attribute14      =>  p_mirror_cont_attribute14
966       ,p_mirror_cont_attribute15      =>  p_mirror_cont_attribute15
967       ,p_mirror_cont_attribute16      =>  p_mirror_cont_attribute16
968       ,p_mirror_cont_attribute17      =>  p_mirror_cont_attribute17
969       ,p_mirror_cont_attribute18      =>  p_mirror_cont_attribute18
970       ,p_mirror_cont_attribute19      =>  p_mirror_cont_attribute19
971       ,p_mirror_cont_attribute20      =>  p_mirror_cont_attribute20
972       ,p_mirror_cont_information_cat    =>  p_mirror_cont_information_cat
973       ,p_mirror_cont_information1       =>  p_mirror_cont_information1
974       ,p_mirror_cont_information2       =>  p_mirror_cont_information2
975       ,p_mirror_cont_information3       =>  p_mirror_cont_information3
976       ,p_mirror_cont_information4       =>  p_mirror_cont_information4
977       ,p_mirror_cont_information5       =>  p_mirror_cont_information5
978       ,p_mirror_cont_information6       =>  p_mirror_cont_information6
979       ,p_mirror_cont_information7       =>  p_mirror_cont_information7
980       ,p_mirror_cont_information8       =>  p_mirror_cont_information8
981       ,p_mirror_cont_information9       =>  p_mirror_cont_information9
982       ,p_mirror_cont_information10      =>  p_mirror_cont_information10
983       ,p_mirror_cont_information11      =>  p_mirror_cont_information11
984       ,p_mirror_cont_information12      =>  p_mirror_cont_information12
985       ,p_mirror_cont_information13      =>  p_mirror_cont_information13
986       ,p_mirror_cont_information14      =>  p_mirror_cont_information14
987       ,p_mirror_cont_information15      =>  p_mirror_cont_information15
988       ,p_mirror_cont_information16      =>  p_mirror_cont_information16
989       ,p_mirror_cont_information17      =>  p_mirror_cont_information17
990       ,p_mirror_cont_information18      =>  p_mirror_cont_information18
991       ,p_mirror_cont_information19      =>  p_mirror_cont_information19
992       ,p_mirror_cont_information20      =>  p_mirror_cont_information20
993       ,p_contact_relationship_id      =>  l_contact_relationship_id
994       ,p_ctr_object_version_number    =>  l_ctr_object_version_number
995       ,p_per_person_id                =>  l_contact_person_id
996       ,p_per_object_version_number    =>  l_per_object_version_number
997       ,p_per_effective_start_date     =>  l_per_effective_start_date
998       ,p_per_effective_end_date       =>  l_per_effective_end_date
999       ,p_full_name                    =>  l_full_name
1000       ,p_per_comment_id               =>  l_per_comment_id
1001       ,p_name_combination_warning     =>  l_name_combination_warning
1002       ,p_orig_hire_warning            =>  l_orig_hire_warning
1003       );
1004   exception
1005     when hr_api.cannot_find_prog_unit then
1006       hr_api.cannot_find_prog_unit_error
1007         (p_module_name => 'Create_contact'
1008         ,p_hook_type   => 'AP'
1009         );
1010     --
1011     -- End of API User Hook for the after hook of create_contact
1012     --
1013   end;
1014   --
1015   -- When in validation only mode raise the Validate_Enabled exception
1016   --
1017   if p_validate then
1018     raise hr_api.validate_enabled;
1019   end if;
1020   --
1021   hr_utility.set_location(' Leaving:'||l_proc, 11);
1022 exception
1023   when hr_api.validate_enabled then
1024     --
1025     -- As the Validate_Enabled exception has been raised
1026     -- we must rollback to the savepoint
1027     --
1028     ROLLBACK TO create_contact;
1029     --
1030     -- Only set output warning arguments
1031     -- (Any key or derived arguments must be set to null
1032     -- when validation only mode is being used.)
1033     --
1034   p_per_object_version_number  :=  null;
1035   p_ctr_object_version_number  :=  null;
1036   p_name_combination_warning   :=  null;
1037   p_orig_hire_warning          :=  null;
1038   p_per_person_id              :=  null;
1039   p_per_effective_start_date   :=  null;
1040   p_per_effective_end_date     :=  null;
1041   p_full_name                  :=  null;
1042   p_per_comment_id             :=  null;
1043   p_contact_relationship_id    :=  null;
1044 
1045     hr_utility.set_location(' Leaving:'||l_proc, 50);
1046     --
1047   when others then
1048     --
1049     -- A validation or unexpected error has occurred
1050     --
1051     -- Added as part of fix to bug 632479
1052     --
1053     ROLLBACK TO create_contact;
1054         --
1055     -- set in out parameters and set out parameters
1056     --
1057   p_per_object_version_number  :=  null;
1058   p_ctr_object_version_number  :=  null;
1059   p_name_combination_warning   :=  null;
1060   p_orig_hire_warning          :=  null;
1061   p_per_person_id              :=  null;
1062   p_per_effective_start_date   :=  null;
1063   p_per_effective_end_date     :=  null;
1064   p_full_name                  :=  null;
1065   p_per_comment_id             :=  null;
1066   p_contact_relationship_id    :=  null;
1067     raise;
1068     --
1069     -- End of fix.
1070     --
1071 end create_contact;
1072 --
1073 -- ----------------------------------------------------------------------------------
1074 -- |----------------------< update_contact_relationship  >--------------------------|
1075 -- ----------------------------------------------------------------------------------
1076 --
1077 procedure update_contact_relationship
1078   (p_validate                          in        boolean   default false
1079   ,p_effective_date                    in        date
1080   ,p_contact_relationship_id           in        number
1081   ,p_contact_type                      in        varchar2  default hr_api.g_varchar2
1082   ,p_comments                          in        long      default hr_api.g_varchar2
1083   ,p_primary_contact_flag              in        varchar2  default hr_api.g_varchar2
1084   ,p_third_party_pay_flag              in        varchar2  default hr_api.g_varchar2
1085   ,p_bondholder_flag                   in        varchar2  default hr_api.g_varchar2
1086   ,p_date_start                        in        date      default hr_api.g_date
1087   ,p_start_life_reason_id              in        number    default hr_api.g_number
1088   ,p_date_end                          in        date      default hr_api.g_date
1089   ,p_end_life_reason_id                in        number    default hr_api.g_number
1090   ,p_rltd_per_rsds_w_dsgntr_flag       in        varchar2  default hr_api.g_varchar2
1091   ,p_personal_flag                     in        varchar2  default hr_api.g_varchar2
1092   ,p_sequence_number                   in        number    default hr_api.g_number
1093   ,p_dependent_flag                    in        varchar2  default hr_api.g_varchar2
1094   ,p_beneficiary_flag                  in        varchar2  default hr_api.g_varchar2
1095   ,p_cont_attribute_category           in        varchar2  default hr_api.g_varchar2
1096   ,p_cont_attribute1                   in        varchar2  default hr_api.g_varchar2
1097   ,p_cont_attribute2                   in        varchar2  default hr_api.g_varchar2
1098   ,p_cont_attribute3                   in        varchar2  default hr_api.g_varchar2
1099   ,p_cont_attribute4                   in        varchar2  default hr_api.g_varchar2
1100   ,p_cont_attribute5                   in        varchar2  default hr_api.g_varchar2
1101   ,p_cont_attribute6                   in        varchar2  default hr_api.g_varchar2
1102   ,p_cont_attribute7                   in        varchar2  default hr_api.g_varchar2
1103   ,p_cont_attribute8                   in        varchar2  default hr_api.g_varchar2
1104   ,p_cont_attribute9                   in        varchar2  default hr_api.g_varchar2
1105   ,p_cont_attribute10                  in        varchar2  default hr_api.g_varchar2
1106   ,p_cont_attribute11                  in        varchar2  default hr_api.g_varchar2
1107   ,p_cont_attribute12                  in        varchar2  default hr_api.g_varchar2
1108   ,p_cont_attribute13                  in        varchar2  default hr_api.g_varchar2
1109   ,p_cont_attribute14                  in        varchar2  default hr_api.g_varchar2
1110   ,p_cont_attribute15                  in        varchar2  default hr_api.g_varchar2
1111   ,p_cont_attribute16                  in        varchar2  default hr_api.g_varchar2
1112   ,p_cont_attribute17                  in        varchar2  default hr_api.g_varchar2
1113   ,p_cont_attribute18                  in        varchar2  default hr_api.g_varchar2
1114   ,p_cont_attribute19                  in        varchar2  default hr_api.g_varchar2
1115   ,p_cont_attribute20                  in        varchar2  default hr_api.g_varchar2
1116   ,p_cont_information_category           in        varchar2  default hr_api.g_varchar2
1117   ,p_cont_information1                   in        varchar2  default hr_api.g_varchar2
1118   ,p_cont_information2                   in        varchar2  default hr_api.g_varchar2
1119   ,p_cont_information3                   in        varchar2  default hr_api.g_varchar2
1120   ,p_cont_information4                   in        varchar2  default hr_api.g_varchar2
1121   ,p_cont_information5                   in        varchar2  default hr_api.g_varchar2
1122   ,p_cont_information6                   in        varchar2  default hr_api.g_varchar2
1123   ,p_cont_information7                   in        varchar2  default hr_api.g_varchar2
1124   ,p_cont_information8                   in        varchar2  default hr_api.g_varchar2
1125   ,p_cont_information9                   in        varchar2  default hr_api.g_varchar2
1126   ,p_cont_information10                  in        varchar2  default hr_api.g_varchar2
1127   ,p_cont_information11                  in        varchar2  default hr_api.g_varchar2
1128   ,p_cont_information12                  in        varchar2  default hr_api.g_varchar2
1129   ,p_cont_information13                  in        varchar2  default hr_api.g_varchar2
1130   ,p_cont_information14                  in        varchar2  default hr_api.g_varchar2
1131   ,p_cont_information15                  in        varchar2  default hr_api.g_varchar2
1132   ,p_cont_information16                  in        varchar2  default hr_api.g_varchar2
1133   ,p_cont_information17                  in        varchar2  default hr_api.g_varchar2
1134   ,p_cont_information18                  in        varchar2  default hr_api.g_varchar2
1135   ,p_cont_information19                  in        varchar2  default hr_api.g_varchar2
1136   ,p_cont_information20                  in        varchar2  default hr_api.g_varchar2
1137   ,p_object_version_number             in out nocopy    number
1138   )
1139 is
1140   --
1141   -- Declare all out local variables and cursors
1142   --
1143   l_proc                            varchar2(72) := g_package||'update_contact';
1144   --
1145   l_object_version_number
1146   per_contact_relationships.object_version_number%TYPE;
1147   l_ovn 		  	    number;
1148   l_effective_date                  date;
1149   l_date_start                      date;
1150   l_date_end                        date;
1151   --
1152   l_mirror_contact_type          varchar2(30);
1153   l_contact_type                 varchar2(30);
1154   --
1155   -- Declare cursor to check that there is a mirror contact
1156   -- adhunter: 2425534: added extra check on date_start
1157   --
1158   cursor check_mirror is
1159     select pcr2.contact_relationship_id,
1160            pcr2.object_version_number
1161     from   per_contact_relationships pcr1,
1162            per_contact_relationships pcr2
1163     where pcr2.contact_person_id = pcr1.person_id
1164       and pcr2.person_id = pcr1.contact_person_id
1165       and (pcr2.date_start = pcr1.date_start
1166        or (pcr2.date_start is null and pcr1.date_start is null))
1167       and pcr1.contact_relationship_id = p_contact_relationship_id
1168       and pcr2.contact_type = l_mirror_contact_type;
1169   --
1170   l_mirror_rec            check_mirror%ROWTYPE;
1171   --
1172   cursor get_contact_type is
1173      select pcr.contact_type,
1174             pcr.date_start,
1175             pcr.start_life_reason_id,
1176             pcr.date_end,
1177             pcr.end_life_reason_id,
1178             pcr.rltd_per_rsds_w_dsgntr_flag,
1179             pcr.personal_flag,
1180             pcr.contact_person_id
1181      from   per_contact_relationships pcr
1182      where  pcr.contact_relationship_id = p_contact_relationship_id;
1183   --
1184   l_start_life_reason_id         number;
1185   l_end_life_reason_id           number;
1186   l_rltd_per_rsds_w_dsgntr_flag  varchar2(1);
1187   l_personal_flag                varchar2(1);
1188   l_contact_person_id            number;
1189   --
1190 begin
1191   hr_utility.set_location('Entering:'|| l_proc, 10);
1192   --
1193   -- Store initial values for IN OUT parameters
1194   --
1195   l_object_version_number := p_object_version_number;
1196   l_ovn := p_object_version_number;
1197   --
1198   -- Truncate all date parameters
1199   --
1200   l_effective_date := trunc(p_effective_date);
1201   --
1202   -- Issue a savepoint.
1203   --
1204   savepoint update_contact_relationship;
1205   --
1206   hr_utility.set_location(l_proc, 20);
1207   --
1208   begin
1209     --
1210     -- Start of API User Hook for the before hook of update_contact_relationship
1211     --
1212     hr_contact_rel_bk2.update_contact_relationship_b
1213       (p_effective_date               =>  l_effective_date
1214       ,p_contact_relationship_id      =>  p_contact_relationship_id
1215       ,p_contact_type                 =>  p_contact_type
1216       ,p_comments                     =>  p_comments
1217       ,p_primary_contact_flag         =>  p_primary_contact_flag
1218       ,p_third_party_pay_flag         =>  p_third_party_pay_flag
1219       ,p_bondholder_flag              =>  p_bondholder_flag
1220       ,p_date_start                   =>  trunc(p_date_start)
1221       ,p_start_life_reason_id         =>  p_start_life_reason_id
1222       ,p_date_end                     =>  trunc(p_date_end)
1223       ,p_end_life_reason_id           =>  p_end_life_reason_id
1224       ,p_rltd_per_rsds_w_dsgntr_flag  =>  p_rltd_per_rsds_w_dsgntr_flag
1225       ,p_personal_flag                =>  p_personal_flag
1226       ,p_sequence_number              =>  p_sequence_number
1227       ,p_dependent_flag               =>  p_dependent_flag
1228       ,p_beneficiary_flag             =>  p_beneficiary_flag
1229       ,p_cont_attribute_category      =>  p_cont_attribute_category
1230       ,p_cont_attribute1              =>  p_cont_attribute1
1231       ,p_cont_attribute2              =>  p_cont_attribute2
1232       ,p_cont_attribute3              =>  p_cont_attribute3
1233       ,p_cont_attribute4              =>  p_cont_attribute4
1234       ,p_cont_attribute5              =>  p_cont_attribute5
1235       ,p_cont_attribute6              =>  p_cont_attribute6
1236       ,p_cont_attribute7              =>  p_cont_attribute7
1237       ,p_cont_attribute8              =>  p_cont_attribute8
1238       ,p_cont_attribute9              =>  p_cont_attribute9
1239       ,p_cont_attribute10             =>  p_cont_attribute10
1240       ,p_cont_attribute11             =>  p_cont_attribute11
1241       ,p_cont_attribute12             =>  p_cont_attribute12
1242       ,p_cont_attribute13             =>  p_cont_attribute13
1243       ,p_cont_attribute14             =>  p_cont_attribute14
1244       ,p_cont_attribute15             =>  p_cont_attribute15
1245       ,p_cont_attribute16             =>  p_cont_attribute16
1246       ,p_cont_attribute17             =>  p_cont_attribute17
1247       ,p_cont_attribute18             =>  p_cont_attribute18
1248       ,p_cont_attribute19             =>  p_cont_attribute19
1249       ,p_cont_attribute20             =>  p_cont_attribute20
1250       ,p_cont_information_category      =>  p_cont_information_category
1251       ,p_cont_information1              =>  p_cont_information1
1252       ,p_cont_information2              =>  p_cont_information2
1253       ,p_cont_information3              =>  p_cont_information3
1254       ,p_cont_information4              =>  p_cont_information4
1255       ,p_cont_information5              =>  p_cont_information5
1256       ,p_cont_information6              =>  p_cont_information6
1257       ,p_cont_information7              =>  p_cont_information7
1258       ,p_cont_information8              =>  p_cont_information8
1259       ,p_cont_information9              =>  p_cont_information9
1260       ,p_cont_information10             =>  p_cont_information10
1261       ,p_cont_information11             =>  p_cont_information11
1262       ,p_cont_information12             =>  p_cont_information12
1263       ,p_cont_information13             =>  p_cont_information13
1264       ,p_cont_information14             =>  p_cont_information14
1265       ,p_cont_information15             =>  p_cont_information15
1266       ,p_cont_information16             =>  p_cont_information16
1267       ,p_cont_information17             =>  p_cont_information17
1268       ,p_cont_information18             =>  p_cont_information18
1269       ,p_cont_information19             =>  p_cont_information19
1270       ,p_cont_information20             =>  p_cont_information20
1271       ,p_object_version_number        =>  p_object_version_number
1272       );
1273   exception
1274     when hr_api.cannot_find_prog_unit then
1275       hr_api.cannot_find_prog_unit_error
1276         (p_module_name => 'Update_contact_relationship'
1277         ,p_hook_type   => 'BP'
1278         );
1279     --
1280     -- End of API User Hook for the before hook of update_contact_relationship
1281     --
1282   end;
1283   --
1284   open get_contact_type;
1285   fetch get_contact_type into l_contact_type,
1286                               l_date_start,
1287                               l_start_life_reason_id,
1288                               l_date_end,
1289                               l_end_life_reason_id,
1290                               l_rltd_per_rsds_w_dsgntr_flag,
1291                               l_personal_flag,
1292                               l_contact_person_id;
1293   close get_contact_type;
1294   --
1295   -- Call the update contact relationship row handler
1296   --
1297   per_ctr_upd.upd
1298     (p_validate                    =>  FALSE
1299     ,p_effective_date              =>  l_effective_date
1300     ,p_contact_relationship_id     =>  p_contact_relationship_id
1301     ,p_contact_type                =>  p_contact_type
1302     ,p_comments                    =>  p_comments
1303     ,p_primary_contact_flag        =>  p_primary_contact_flag
1304     ,p_third_party_pay_flag        =>  p_third_party_pay_flag
1305     ,p_bondholder_flag             =>  p_bondholder_flag
1306     ,p_date_start                  =>  trunc(p_date_start)
1307     ,p_start_life_reason_id        =>  p_start_life_reason_id
1308     ,p_date_end                    =>  trunc(p_date_end)
1309     ,p_end_life_reason_id          =>  p_end_life_reason_id
1310     ,p_rltd_per_rsds_w_dsgntr_flag =>  p_rltd_per_rsds_w_dsgntr_flag
1311     ,p_personal_flag               =>  p_personal_flag
1312     ,p_sequence_number             =>  p_sequence_number
1313     ,p_dependent_flag              =>  p_dependent_flag
1314     ,p_beneficiary_flag            =>  p_beneficiary_flag
1315     ,p_cont_attribute_category     =>  p_cont_attribute_category
1316     ,p_cont_attribute1             =>  p_cont_attribute1
1317     ,p_cont_attribute2             =>  p_cont_attribute2
1318     ,p_cont_attribute3             =>  p_cont_attribute3
1319     ,p_cont_attribute4             =>  p_cont_attribute4
1320     ,p_cont_attribute5             =>  p_cont_attribute5
1321     ,p_cont_attribute6             =>  p_cont_attribute6
1322     ,p_cont_attribute7             =>  p_cont_attribute7
1323     ,p_cont_attribute8             =>  p_cont_attribute8
1324     ,p_cont_attribute9             =>  p_cont_attribute9
1325     ,p_cont_attribute10            =>  p_cont_attribute10
1326     ,p_cont_attribute11            =>  p_cont_attribute11
1327     ,p_cont_attribute12            =>  p_cont_attribute12
1328     ,p_cont_attribute13            =>  p_cont_attribute13
1329     ,p_cont_attribute14            =>  p_cont_attribute14
1330     ,p_cont_attribute15            =>  p_cont_attribute15
1331     ,p_cont_attribute16            =>  p_cont_attribute16
1332     ,p_cont_attribute17            =>  p_cont_attribute17
1333     ,p_cont_attribute18            =>  p_cont_attribute18
1334     ,p_cont_attribute19            =>  p_cont_attribute19
1335     ,p_cont_attribute20            =>  p_cont_attribute20
1336     ,p_cont_information_category     =>  p_cont_information_category
1337     ,p_cont_information1             =>  p_cont_information1
1338     ,p_cont_information2             =>  p_cont_information2
1339     ,p_cont_information3             =>  p_cont_information3
1340     ,p_cont_information4             =>  p_cont_information4
1341     ,p_cont_information5             =>  p_cont_information5
1342     ,p_cont_information6             =>  p_cont_information6
1343     ,p_cont_information7             =>  p_cont_information7
1344     ,p_cont_information8             =>  p_cont_information8
1345     ,p_cont_information9             =>  p_cont_information9
1346     ,p_cont_information10            =>  p_cont_information10
1347     ,p_cont_information11            =>  p_cont_information11
1348     ,p_cont_information12            =>  p_cont_information12
1349     ,p_cont_information13            =>  p_cont_information13
1350     ,p_cont_information14            =>  p_cont_information14
1351     ,p_cont_information15            =>  p_cont_information15
1352     ,p_cont_information16            =>  p_cont_information16
1353     ,p_cont_information17            =>  p_cont_information17
1354     ,p_cont_information18            =>  p_cont_information18
1355     ,p_cont_information19            =>  p_cont_information19
1356     ,p_cont_information20            =>  p_cont_information20
1357     ,p_object_version_number       =>  p_object_version_number
1358     );
1359 
1360   hr_utility.set_location(l_proc, 30);
1361   --
1362   if ((p_date_start <> hr_api.g_date
1363     and p_date_start <> nvl(l_date_start,hr_api.g_date))
1364   or (p_start_life_reason_id <>  hr_api.g_number
1365     and p_start_life_reason_id <> nvl(l_start_life_reason_id,hr_api.g_number))
1366   or (p_date_end <> hr_api.g_date
1367     and p_date_end <> nvl(l_date_end,hr_api.g_date))
1368   or (p_end_life_reason_id <> hr_api.g_number
1369     and p_end_life_reason_id <> nvl(l_end_life_reason_id,hr_api.g_number))
1370   or (p_rltd_per_rsds_w_dsgntr_flag <> hr_api.g_varchar2
1371     and p_rltd_per_rsds_w_dsgntr_flag <> nvl(l_rltd_per_rsds_w_dsgntr_flag,hr_api.g_varchar2))
1372   or (p_personal_flag <> hr_api.g_varchar2
1373     and p_personal_flag <> nvl(l_personal_flag,hr_api.g_varchar2)))
1374       and (p_contact_type = hr_api.g_varchar2
1375       or p_contact_type = l_contact_type)
1376 then
1377     --
1378 l_mirror_contact_type := per_contact_relationships_pkg.get_mirror_contact_type
1379                                                            (l_contact_type);
1380     --
1381     open check_mirror;
1382     fetch check_mirror into l_mirror_rec;
1383     if check_mirror%found then
1384   --
1385 hr_utility.set_location('id '||l_mirror_rec.contact_relationship_id, 7);
1386       --
1387       -- Now update the Mirror Contact by calling the Row Handler.
1388       --
1389       per_ctr_upd.upd
1390         (p_validate                    =>  FALSE
1391         ,p_effective_date              =>  l_effective_date
1392         ,p_contact_relationship_id     =>  l_mirror_rec.contact_relationship_id
1393         ,p_contact_type                =>  l_mirror_contact_type
1394         ,p_date_start                  =>  p_date_start
1395         ,p_start_life_reason_id        =>  p_start_life_reason_id
1396         ,p_date_end                    =>  p_date_end
1397         ,p_end_life_reason_id          =>  p_end_life_reason_id
1398         ,p_rltd_per_rsds_w_dsgntr_flag =>  p_rltd_per_rsds_w_dsgntr_flag
1399         ,p_personal_flag               =>  p_personal_flag
1400         ,p_object_version_number       =>  l_mirror_rec.object_version_number
1401         );
1402     end if;
1403     close check_mirror;
1404   end if;
1405   --
1406   -- start of code for bug 2678841
1407   if p_personal_flag <> hr_api.g_varchar2 then
1408    if p_contact_type=hr_api.g_varchar2 then
1409     if l_contact_type in ('P','C','S') and
1410          p_personal_flag <> 'Y' then
1411            hr_utility.set_message(800,'PER_6994_PERSONAL_FLAG');
1412            hr_utility.raise_error;
1413     end if;
1414    else
1415      if p_contact_type in ('P','C','S') and
1416          p_personal_flag <> 'Y' then
1417        hr_utility.set_message(800,'PER_6994_PERSONAL_FLAG');
1418        hr_utility.raise_error;
1419      end if;
1420    end if;
1421   end if;
1422   -- end of code for bug2678841
1423 
1424   -- 1766066: added call for contact start date enh.
1425   --
1426   if (p_date_start <> hr_api.g_date
1427       and p_date_start < l_date_start) then
1428     per_people12_pkg.maintain_coverage(p_person_id      => l_contact_person_id
1429                                       ,p_type           => 'CONT'
1430                                       );
1431   end if;
1432   -- 1766066 end.
1433   --
1434   begin
1435     --
1436     -- Start of API User Hook for the after hook of update_contact_relationship
1437     --
1438     hr_contact_rel_bk2.update_contact_relationship_a
1439       (p_effective_date               =>  l_effective_date
1440       ,p_contact_relationship_id      =>  p_contact_relationship_id
1441       ,p_contact_type                 =>  p_contact_type
1442       ,p_comments                     =>  p_comments
1443       ,p_primary_contact_flag         =>  p_primary_contact_flag
1444       ,p_third_party_pay_flag         =>  p_third_party_pay_flag
1445       ,p_bondholder_flag              =>  p_bondholder_flag
1446       ,p_date_start                   =>  trunc(p_date_start)
1447       ,p_start_life_reason_id         =>  p_start_life_reason_id
1448       ,p_date_end                     =>  trunc(p_date_end)
1449       ,p_end_life_reason_id           =>  p_end_life_reason_id
1450       ,p_rltd_per_rsds_w_dsgntr_flag  =>  p_rltd_per_rsds_w_dsgntr_flag
1451       ,p_personal_flag                =>  p_personal_flag
1452       ,p_sequence_number              =>  p_sequence_number
1453       ,p_dependent_flag               =>  p_dependent_flag
1454       ,p_beneficiary_flag             =>  p_beneficiary_flag
1455       ,p_cont_attribute_category      =>  p_cont_attribute_category
1456       ,p_cont_attribute1              =>  p_cont_attribute1
1457       ,p_cont_attribute2              =>  p_cont_attribute2
1458       ,p_cont_attribute3              =>  p_cont_attribute3
1459       ,p_cont_attribute4              =>  p_cont_attribute4
1460       ,p_cont_attribute5              =>  p_cont_attribute5
1461       ,p_cont_attribute6              =>  p_cont_attribute6
1462       ,p_cont_attribute7              =>  p_cont_attribute7
1463       ,p_cont_attribute8              =>  p_cont_attribute8
1464       ,p_cont_attribute9              =>  p_cont_attribute9
1465       ,p_cont_attribute10             =>  p_cont_attribute10
1466       ,p_cont_attribute11             =>  p_cont_attribute11
1467       ,p_cont_attribute12             =>  p_cont_attribute12
1468       ,p_cont_attribute13             =>  p_cont_attribute13
1469       ,p_cont_attribute14             =>  p_cont_attribute14
1470       ,p_cont_attribute15             =>  p_cont_attribute15
1471       ,p_cont_attribute16             =>  p_cont_attribute16
1472       ,p_cont_attribute17             =>  p_cont_attribute17
1473       ,p_cont_attribute18             =>  p_cont_attribute18
1474       ,p_cont_attribute19             =>  p_cont_attribute19
1475       ,p_cont_attribute20             =>  p_cont_attribute20
1476       ,p_cont_information_category      =>  p_cont_information_category
1477       ,p_cont_information1              =>  p_cont_information1
1478       ,p_cont_information2              =>  p_cont_information2
1479       ,p_cont_information3              =>  p_cont_information3
1480       ,p_cont_information4              =>  p_cont_information4
1481       ,p_cont_information5              =>  p_cont_information5
1482       ,p_cont_information6              =>  p_cont_information6
1483       ,p_cont_information7              =>  p_cont_information7
1484       ,p_cont_information8              =>  p_cont_information8
1485       ,p_cont_information9              =>  p_cont_information9
1486       ,p_cont_information10             =>  p_cont_information10
1487       ,p_cont_information11             =>  p_cont_information11
1488       ,p_cont_information12             =>  p_cont_information12
1489       ,p_cont_information13             =>  p_cont_information13
1490       ,p_cont_information14             =>  p_cont_information14
1491       ,p_cont_information15             =>  p_cont_information15
1492       ,p_cont_information16             =>  p_cont_information16
1493       ,p_cont_information17             =>  p_cont_information17
1494       ,p_cont_information18             =>  p_cont_information18
1495       ,p_cont_information19             =>  p_cont_information19
1496       ,p_cont_information20             =>  p_cont_information20
1497       ,p_object_version_number        =>  p_object_version_number
1498       );
1499   exception
1500     when hr_api.cannot_find_prog_unit then
1501       hr_api.cannot_find_prog_unit_error
1502         (p_module_name => 'Update_contact_relationship'
1503         ,p_hook_type   => 'AP'
1504         );
1505     --
1506     -- End of API User Hook for the afer hook of update_contact_relationship
1507     --
1508   end;
1509   --
1510   -- When in validation only mode raise the Validate_Enabled exception
1511   --
1512   if p_validate then
1513     raise hr_api.validate_enabled;
1514   end if;
1515   --
1516   hr_utility.set_location(' Leaving:'||l_proc, 100);
1517 exception
1518   when hr_api.validate_enabled then
1519     --
1520     -- As the Validate_Enabled exception has been raised
1521     -- we must rollback to the savepoint
1522     --
1523     ROLLBACK TO update_contact_relationship;
1524     --
1525     -- Only set output warning arguments
1526     -- (Any key or derived arguments must be set to null
1527     -- when validation only mode is being used.)
1528     --
1529     p_object_version_number    := l_object_version_number;
1530     --
1531   when others then
1532     --
1533     -- A validation or unexpected error has occurred
1534     --
1535     -- Added as part of fix to bug 632479
1536     --
1537     ROLLBACK TO update_contact_relationship;
1538     --
1539     -- set in out parameters and set out parameters
1540     --
1541     p_object_version_number := l_ovn;
1542     raise;
1543     --
1544     -- End of fix.
1545     --
1546   hr_utility.set_location(' Leaving:'||l_proc, 200);
1547   --
1548 end update_contact_relationship;
1549 --
1550 --
1551 -- ----------------------------------------------------------------------------------
1552 -- |----------------------< delete_contact_relationship  >--------------------------|
1553 -- ----------------------------------------------------------------------------------
1554 --
1555 procedure delete_contact_relationship
1556   (p_validate                          in        boolean   default false
1557   ,p_contact_relationship_id           in        number
1558   ,p_object_version_number             in        number
1559   )
1560 is
1561   --
1562   -- Declare all out local variables and cursors
1563   --
1564   l_proc                            varchar2(72) := g_package||'delete_contact';
1565   --
1566   l_object_version_number           number;
1567   l_mirror_contact_type             varchar2(30);
1568   -- Declare cursor to check that there is a mirror contact
1569   --
1570   cursor check_mirror is
1571     select pcr2.contact_relationship_id,
1572            pcr2.object_version_number
1573     from   per_contact_relationships pcr1,
1574            per_contact_relationships pcr2
1575     where pcr2.contact_person_id = pcr1.person_id
1576       and pcr2.person_id = pcr1.contact_person_id
1577       and pcr1.contact_relationship_id = p_contact_relationship_id
1578       and pcr2.contact_type = l_mirror_contact_type;   -- bug# 2742210
1579   --
1580   cursor csr_person_details(p_person_id number) is
1581 	select object_version_number
1582 	      ,effective_start_date
1583 	from  per_all_people_f
1584 	where person_id = p_person_id
1585 	and   effective_end_date = hr_general.end_of_time;
1586   --
1587   cursor csr_contact_person is
1588     select contact_person_id,contact_type
1589     from per_contact_relationships
1590     where contact_relationship_id = p_contact_relationship_id;
1591   --
1592   l_mirror_rec            check_mirror%ROWTYPE;
1593   l_effective_start_date date;
1594   l_effective_end_date date;
1595   l_per_object_version_number number;
1596   l_effective_date date;
1597   l_contact_person_id number;
1598   l_contact_type      varchar2(30);
1599   --
1600 begin
1601   hr_utility.set_location('Entering:'|| l_proc, 10);
1602   --
1603   -- Store initial values for IN OUT parameters
1604   --
1605   l_object_version_number := p_object_version_number;
1606   --
1607   -- Issue a savepoint.
1608   --
1609     savepoint delete_contact_relationship;
1610   --
1611   hr_utility.set_location(l_proc, 20);
1612   --
1613   begin
1614     --
1615     -- Start of API User Hook for the before hook of delete_contact_relationship
1616     --
1617     hr_contact_rel_bk3.delete_contact_relationship_b
1618       (p_contact_relationship_id           => p_contact_relationship_id
1619       ,p_object_version_number             => p_object_version_number
1620       );
1621   exception
1622     when hr_api.cannot_find_prog_unit then
1623       hr_api.cannot_find_prog_unit_error
1624         (p_module_name => 'Delete_contact_relationship'
1625         ,p_hook_type   => 'BP'
1626         );
1627     --
1628     -- End of API User Hook for the before hook of delete_contact_relationship
1629     --
1630   end;
1631   -- Derive contact_person_id before row is deleted
1632   --
1633   open csr_contact_person;
1634   fetch csr_contact_person into l_contact_person_id,l_contact_type;
1635   close csr_contact_person;
1636      hr_utility.set_location('Contact person id is: ',l_contact_person_id);
1637   --
1638   -- If Relationship has a mirror row then then we have to delete the mirror rel.
1639   -- Have to do this first otherwise the cursor will always fail.
1640   -- start of code for bug 2742210
1641   l_mirror_contact_type := per_contact_relationships_pkg.get_mirror_contact_type
1642                                                            (l_contact_type);
1643   -- end of code for bug 2742210
1644   open check_mirror;
1645   fetch check_mirror into l_mirror_rec;
1646   if check_mirror%found then
1647     --
1648     -- Delete the Mirror Contact by calling the Row Handler.
1649     --
1650     per_ctr_del.del
1651       (p_validate                    =>  FALSE
1652       ,p_contact_relationship_id     =>  l_mirror_rec.contact_relationship_id
1653       ,p_object_version_number       =>  l_mirror_rec.object_version_number
1654       );
1655     close check_mirror;
1656   else
1657     close check_mirror;
1658   end if;
1659   --
1660   -- Call the delete contact relationship row handler
1661   --
1662   per_ctr_del.del
1663     (p_validate                    =>  FALSE
1664     ,p_contact_relationship_id     =>  p_contact_relationship_id
1665     ,p_object_version_number       =>  p_object_version_number
1666     );
1667   --
1668   hr_utility.set_location(l_proc, 30);
1669   --
1670   --Added following for bug 2017198
1671   --
1672   --
1673   if (hr_contact_relationships.contact_only(l_contact_person_id) = 'Y'
1674      and hr_contact_relationships.multiple_contacts(l_contact_person_id) = 'N') then
1675      --
1676      hr_utility.set_location(l_proc, 31);
1677      --
1678      per_contact_relationships_pkg.delete_validation
1679              (l_contact_person_id
1680              ,p_contact_relationship_id
1681              );
1682      -- delete the person
1683      --
1684      open csr_person_details(l_contact_person_id);
1685      fetch csr_person_details
1686         into  l_per_object_version_number
1687 	      ,l_effective_date;
1688      close csr_person_details;
1689      --
1690      hr_utility.set_location(l_proc, 32);
1691      --
1692      per_per_del.del(p_person_id	      => l_contact_person_id
1693                     ,p_effective_start_date   => l_effective_start_date
1694                     ,p_effective_end_date     => l_effective_end_date
1695                     ,p_object_version_number  => l_per_object_version_number
1696                     ,p_effective_date         => l_effective_date
1697                     ,p_datetrack_mode         => 'ZAP'
1698                     ,p_validate               => FALSE
1699                     );
1700   end if;
1701   -- 2017198 end
1702   --
1703   hr_utility.set_location(l_proc, 35);
1704   --
1705   begin
1706     --
1707     -- Start of API User Hook for the after hook of delete_contact_relationship
1708     --
1709     hr_contact_rel_bk3.delete_contact_relationship_a
1710       (p_contact_relationship_id           => p_contact_relationship_id
1711       ,p_object_version_number             => p_object_version_number
1712       );
1713   exception
1714     when hr_api.cannot_find_prog_unit then
1715       hr_api.cannot_find_prog_unit_error
1716         (p_module_name => 'Delete_contact_relationship'
1717         ,p_hook_type   => 'AP'
1718         );
1719     --
1720     -- End of API User Hook for the after hook of delete_contact_relationship
1721     --
1722   end;
1723   --
1724   -- When in validation only mode raise the Validate_Enabled exception
1725   --
1726   if p_validate then
1727     raise hr_api.validate_enabled;
1728   end if;
1729   --
1730   hr_utility.set_location(' Leaving:'||l_proc, 100);
1731 exception
1732   when hr_api.validate_enabled then
1733     --
1734     -- As the Validate_Enabled exception has been raised
1735     -- we must rollback to the savepoint
1736     --
1737     ROLLBACK TO delete_contact_relationship;
1738     --
1739     --
1740   when others then
1741     --
1742     -- A validation or unexpected error has occurred
1743     --
1744     -- Added as part of fix to bug 632479
1745     --
1746     ROLLBACK TO delete_contact_relationship;
1747     raise;
1748     --
1749     -- End of fix.
1750     --
1751   hr_utility.set_location(' Leaving:'||l_proc, 200);
1752 end delete_contact_relationship;
1753 --
1754 end hr_contact_rel_api;