DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_PTU_INS

Source


1 Package Body per_ptu_ins as
2 /* $Header: pepturhi.pkb 120.0 2005/05/31 15:57:51 appldev noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  per_ptu_ins.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |----------------------------< dt_insert_dml >-----------------------------|
12 -- ----------------------------------------------------------------------------
13 -- {Start Of Comments}
14 --
15 -- Description:
16 --   This procedure controls the actual dml insert logic for datetrack. The
17 --   functions of this procedure are as follows:
18 --   1) Get the object_version_number.
19 --   2) To set the effective start and end dates to the corresponding
20 --      validation start and end dates. Also, the object version number
21 --      record attribute is set.
22 --   3) To insert the row into the schema with the derived effective start
23 --      and end dates and the object version number.
24 --   4) To trap any constraint violations that may have occurred.
25 --   5) To raise any other errors.
26 --
27 -- Prerequisites:
28 --   This is an internal private procedure which must be called from the
29 --   insert_dml and pre_update (logic permitting) procedure and must have
30 --   all mandatory arguments set.
31 --
32 -- In Parameters:
33 --   A Pl/Sql record structre.
34 --
35 -- Post Success:
36 --   The specified row will be inserted into the schema.
37 --
38 -- Post Failure:
39 --   If a check or unique integrity constraint violation is raised the
40 --   constraint_error procedure will be called.
41 --
42 -- Developer Implementation Notes:
43 --   This is an internal datetrack maintenance procedure which should
44 --   not be modified in anyway.
45 --
46 -- Access Status:
47 --   Internal Row Handler Use Only.
48 --
49 -- {End Of Comments}
50 -- ----------------------------------------------------------------------------
51 Procedure dt_insert_dml
52    (p_rec          in out nocopy per_ptu_shd.g_rec_type,
53     p_effective_date  in   date,
54     p_datetrack_mode  in   varchar2,
55     p_validation_start_date in   date,
56     p_validation_end_date   in   date) is
57 --
58 -- Cursor to select 'old' created AOL who column values
59 --
60   Cursor C_Sel1 Is
61     select t.created_by,
62            t.creation_date
63     from   per_person_type_usages_f t
64     where  t.person_type_usage_id       = p_rec.person_type_usage_id
65     and    t.effective_start_date =
66              per_ptu_shd.g_old_rec.effective_start_date
67     and    t.effective_end_date   = (p_validation_start_date - 1);
68 --
69   l_proc    varchar2(72) := g_package||'dt_insert_dml';
70   l_created_by          per_person_type_usages_f.created_by%TYPE;
71   l_creation_date       per_person_type_usages_f.creation_date%TYPE;
72   l_last_update_date    per_person_type_usages_f.last_update_date%TYPE;
73   l_last_updated_by     per_person_type_usages_f.last_updated_by%TYPE;
74   l_last_update_login   per_person_type_usages_f.last_update_login%TYPE;
75 --
76 Begin
77   hr_utility.set_location('Entering:'||l_proc, 5);
78   --
79   -- Get the object version number for the insert
80   --
81   p_rec.object_version_number :=
82     dt_api.get_object_version_number
83    (p_base_table_name => 'per_person_type_usages_f',
84     p_base_key_column => 'person_type_usage_id',
85     p_base_key_value  => p_rec.person_type_usage_id);
86   --
87   -- Set the effective start and end dates to the corresponding
88   -- validation start and end dates
89   --
90   p_rec.effective_start_date := p_validation_start_date;
91   p_rec.effective_end_date   := p_validation_end_date;
92   --
93   -- If the datetrack_mode is not INSERT then we must populate the WHO
94   -- columns with the 'old' creation values and 'new' updated values.
95   --
96   If (p_datetrack_mode <> 'INSERT') then
97     hr_utility.set_location(l_proc, 10);
98     --
99     -- Select the 'old' created values
100     --
101     Open C_Sel1;
102     Fetch C_Sel1 Into l_created_by, l_creation_date;
103     If C_Sel1%notfound Then
104       --
105       -- The previous 'old' created row has not been found. We need
106       -- to error as an internal datetrack problem exists.
107       --
108       Close C_Sel1;
109       hr_utility.set_message(801, 'HR_6153_ALL_PROCEDURE_FAIL');
110       hr_utility.set_message_token('PROCEDURE', l_proc);
111       hr_utility.set_message_token('STEP','10');
112       hr_utility.raise_error;
113     End If;
114     Close C_Sel1;
115     --
116     -- Set the AOL updated WHO values
117     --
118     l_last_update_date   := sysdate;
119     l_last_updated_by    := fnd_global.user_id;
120     l_last_update_login  := fnd_global.login_id;
121   End If;
122   --
123   --
124   -- Insert the row into: per_person_type_usages_f
125   --
126   insert into per_person_type_usages_f
127   (   person_type_usage_id,
128    person_id,
129    person_type_id,
130    effective_start_date,
131    effective_end_date,
132    object_version_number,
133    request_id,
134    program_application_id,
135    program_id,
136    program_update_date,
137    attribute_category,
138    attribute1,
139    attribute2,
140    attribute3,
141    attribute4,
142    attribute5,
143    attribute6,
144    attribute7,
145    attribute8,
146    attribute9,
147    attribute10,
148    attribute11,
149    attribute12,
150    attribute13,
151    attribute14,
152    attribute15,
153    attribute16,
154    attribute17,
155    attribute18,
156    attribute19,
157    attribute20,
158    attribute21,
159    attribute22,
160    attribute23,
161    attribute24,
162    attribute25,
163    attribute26,
164    attribute27,
165    attribute28,
166    attribute29,
167    attribute30,
168    created_by,
169    creation_date,
170    last_update_date,
171    last_updated_by,
172    last_update_login
173   )
174   Values
175   (   p_rec.person_type_usage_id,
176    p_rec.person_id,
177    p_rec.person_type_id,
178    p_rec.effective_start_date,
179    p_rec.effective_end_date,
180    p_rec.object_version_number,
181    p_rec.request_id,
182    p_rec.program_application_id,
183    p_rec.program_id,
184    p_rec.program_update_date,
185    p_rec.attribute_category,
186    p_rec.attribute1,
187    p_rec.attribute2,
188    p_rec.attribute3,
189    p_rec.attribute4,
190    p_rec.attribute5,
191    p_rec.attribute6,
192    p_rec.attribute7,
193    p_rec.attribute8,
194    p_rec.attribute9,
195    p_rec.attribute10,
196    p_rec.attribute11,
197    p_rec.attribute12,
198    p_rec.attribute13,
199    p_rec.attribute14,
200    p_rec.attribute15,
201    p_rec.attribute16,
202    p_rec.attribute17,
203    p_rec.attribute18,
204    p_rec.attribute19,
205    p_rec.attribute20,
206    p_rec.attribute21,
207    p_rec.attribute22,
208    p_rec.attribute23,
209    p_rec.attribute24,
210    p_rec.attribute25,
211    p_rec.attribute26,
212    p_rec.attribute27,
213    p_rec.attribute28,
214    p_rec.attribute29,
215    p_rec.attribute30,
216    l_created_by,
217    l_creation_date,
218    l_last_update_date,
219    l_last_updated_by,
220    l_last_update_login
221   );
222   --
223   hr_utility.set_location(' Leaving:'||l_proc, 15);
224 --
225 Exception
226   When hr_api.check_integrity_violated Then
227     -- A check constraint has been violated
228     per_ptu_shd.constraint_error
229       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
230   When hr_api.unique_integrity_violated Then
231     -- Unique integrity has been violated
232     per_ptu_shd.constraint_error
233       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
234   When Others Then
235     Raise;
236 End dt_insert_dml;
237 --
238 -- ----------------------------------------------------------------------------
239 -- |------------------------------< insert_dml >------------------------------|
240 -- ----------------------------------------------------------------------------
241 Procedure insert_dml
242    (p_rec          in out nocopy per_ptu_shd.g_rec_type,
243     p_effective_date  in   date,
244     p_datetrack_mode  in   varchar2,
245     p_validation_start_date in   date,
246     p_validation_end_date   in   date) is
247 --
248   l_proc varchar2(72) := g_package||'insert_dml';
249 --
250 Begin
251   hr_utility.set_location('Entering:'||l_proc, 5);
252   --
253   dt_insert_dml(p_rec         => p_rec,
254       p_effective_date  => p_effective_date,
255       p_datetrack_mode  => p_datetrack_mode,
256             p_validation_start_date => p_validation_start_date,
257       p_validation_end_date   => p_validation_end_date);
258   --
259   hr_utility.set_location(' Leaving:'||l_proc, 10);
260 End insert_dml;
261 --
262 -- ----------------------------------------------------------------------------
263 -- |------------------------------< pre_insert >------------------------------|
264 -- ----------------------------------------------------------------------------
265 -- {Start Of Comments}
266 --
267 -- Description:
268 --   This private procedure contains any processing which is required before
269 --   the insert dml. Presently, if the entity has a corresponding primary
270 --   key which is maintained by an associating sequence, the primary key for
271 --   the entity will be populated with the next sequence value in
272 --   preparation for the insert dml.
273 --   Also, if comments are defined for this entity, the comments insert
274 --   logic will also be called, generating a comment_id if required.
275 --
276 -- Prerequisites:
277 --   This is an internal procedure which is called from the ins procedure.
278 --
279 -- In Parameters:
280 --   A Pl/Sql record structre.
281 --
282 -- Post Success:
283 --   Processing continues.
284 --
285 -- Post Failure:
286 --   If an error has occurred, an error message and exception will be raised
287 --   but not handled.
288 --
289 -- Developer Implementation Notes:
290 --   Any pre-processing required before the insert dml is issued should be
291 --   coded within this procedure. As stated above, a good example is the
292 --   generation of a primary key number via a corresponding sequence.
293 --   It is important to note that any 3rd party maintenance should be reviewed
294 --   before placing in this procedure.
295 --
296 -- Access Status:
297 --   Internal Row Handler Use Only.
298 --
299 -- {End Of Comments}
300 -- ----------------------------------------------------------------------------
301 Procedure pre_insert
302    (p_rec         in out nocopy per_ptu_shd.g_rec_type,
303     p_effective_date    in date,
304     p_datetrack_mode    in varchar2,
305     p_validation_start_date   in date,
306     p_validation_end_date     in date) is
307 --
308   l_proc varchar2(72) := g_package||'pre_insert';
309 --
310   Cursor C_Sel1 is select per_person_type_usages_s.nextval from sys.dual;
311 --
312 Begin
313   hr_utility.set_location('Entering:'||l_proc, 5);
314   --
315   --
316   -- Select the next sequence number
317   --
318   Open C_Sel1;
319   Fetch C_Sel1 Into p_rec.person_type_usage_id;
320   Close C_Sel1;
321   --
322   --
323   hr_utility.set_location(' Leaving:'||l_proc, 10);
324 End pre_insert;
325 --
326 -- ----------------------------------------------------------------------------
327 -- |-----------------------------< post_insert >------------------------------|
328 -- ----------------------------------------------------------------------------
329 -- {Start Of Comments}
330 --
331 -- Description:
332 --   This private procedure contains any processing which is required after the
333 --   insert dml.
334 --
335 -- Prerequisites:
336 --   This is an internal procedure which is called from the ins procedure.
337 --
338 -- In Parameters:
339 --   A Pl/Sql record structre.
340 --
341 -- Post Success:
342 --   Processing continues.
343 --
344 -- Post Failure:
345 --   If an error has occurred, an error message and exception will be raised
346 --   but not handled.
347 --
348 -- Developer Implementation Notes:
349 --   Any post-processing required after the insert dml is issued should be
350 --   coded within this procedure. It is important to note that any 3rd party
351 --   maintenance should be reviewed before placing in this procedure.
352 --
353 -- Access Status:
354 --   Internal Row Handler Use Only.
355 --
356 -- {End Of Comments}
357 -- ----------------------------------------------------------------------------
358 Procedure post_insert
359    (p_rec          in per_ptu_shd.g_rec_type,
360     p_effective_date  in date,
361     p_datetrack_mode  in varchar2,
362     p_validation_start_date in date,
363     p_validation_end_date   in date) is
364 --
365   l_proc varchar2(72) := g_package||'post_insert';
366   --
367   -- Start of Fix for WWBUG 1408379
368   --
369   l_old ben_ptu_ler.g_ptu_ler_rec;
370   l_new ben_ptu_ler.g_ptu_ler_rec;
371   --
372   -- End of Fix for WWBUG 1408379
373   --
374 --
375 Begin
376   hr_utility.set_location('Entering:'||l_proc, 5);
377   --
378   --
379   -- Start of API User Hook for post_insert.
380   begin
381     per_ptu_rki.after_insert
382           (
383            p_person_type_usage_id  => p_rec.person_type_usage_id,
384            p_person_id             => p_rec.person_id,
385            p_person_type_id        => p_rec.person_type_id,
386            p_effective_start_date  => p_rec.effective_start_date,
387            p_effective_end_date    => p_rec.effective_end_date,
388            p_object_version_number  => p_rec.object_version_number,
389            p_request_id             => p_rec.request_id,
390            p_program_application_id  => p_rec.program_application_id,
391            p_program_id              => p_rec.program_id,
392            p_program_update_date     => p_rec.program_update_date,
393            p_attribute_category      => p_rec.attribute_category
394           ,p_attribute1          => p_rec.attribute1
395      ,p_attribute2          => p_rec.attribute2
396      ,p_attribute3          => p_rec.attribute3
397      ,p_attribute4          => p_rec.attribute4
398      ,p_attribute5          => p_rec.attribute5
399      ,p_attribute6          => p_rec.attribute6
400      ,p_attribute7          => p_rec.attribute7
401      ,p_attribute8          => p_rec.attribute8
402      ,p_attribute9          => p_rec.attribute9
403      ,p_attribute10         => p_rec.attribute10
404      ,p_attribute11         => p_rec.attribute11
405      ,p_attribute12         => p_rec.attribute12
406      ,p_attribute13         => p_rec.attribute13
407      ,p_attribute14         => p_rec.attribute14
408      ,p_attribute15         => p_rec.attribute15
409      ,p_attribute16         => p_rec.attribute16
410      ,p_attribute17         => p_rec.attribute17
411      ,p_attribute18         => p_rec.attribute18
412      ,p_attribute19         => p_rec.attribute19
413      ,p_attribute20         => p_rec.attribute20
414      ,p_attribute21         => p_rec.attribute21
415      ,p_attribute22         => p_rec.attribute22
416      ,p_attribute23         => p_rec.attribute23
417      ,p_attribute24         => p_rec.attribute24
418      ,p_attribute25         => p_rec.attribute25
419      ,p_attribute26         => p_rec.attribute26
420      ,p_attribute27         => p_rec.attribute27
421      ,p_attribute28         => p_rec.attribute28
422      ,p_attribute29         => p_rec.attribute29
423      ,p_attribute30         => p_rec.attribute30
424           ,p_effective_date   => p_effective_date
425           ,p_validation_start_date      => p_validation_start_date
426           ,p_validation_end_date        => p_validation_end_date );
427   exception
428     when hr_api.cannot_find_prog_unit then
429       hr_api.cannot_find_prog_unit_error
430         (p_module_name => 'PER_PERSON_TYPE_USAGES_F'
431         ,p_hook_type   => 'AI'
432         );
433   end;
434   --
435   -- Start of Fix for WWBUG 1408379
436   --
437   l_old.person_type_usage_id := null;
438   l_old.person_id := null;
439   l_old.person_type_id := null;
440   l_old.effective_start_date := null;
441   l_old.effective_end_date := null;
442   l_new.person_type_usage_id := p_rec.person_type_usage_id;
443   l_new.person_id := p_rec.person_id;
444   l_new.person_type_id := p_rec.person_type_id;
445   l_new.effective_start_date := p_rec.effective_start_date;
446   l_new.effective_end_date := p_rec.effective_end_date;
447   --
448   ben_ptu_ler.ler_chk(p_old            => l_old,
449                       p_new            => l_new,
450                       p_effective_date => p_rec.effective_start_date);
451   --
452   -- End of Fix for WWBUG 1408379
453   --
454   --
455   -- End of API User Hook for post_insert.
456   --
457   hr_utility.set_location(' Leaving:'||l_proc, 10);
458 End post_insert;
459 --
460 -- ----------------------------------------------------------------------------
461 -- |-------------------------------< ins_lck >--------------------------------|
462 -- ----------------------------------------------------------------------------
463 -- {Start Of Comments}
464 --
465 -- Description:
466 --   The ins_lck process has one main function to perform. When inserting
467 --   a datetracked row, we must validate the DT mode.
468 --   be manipulated.
469 --
470 -- Prerequisites:
471 --   This procedure can only be called for the datetrack mode of INSERT.
472 --
473 -- In Parameters:
474 --
475 -- Post Success:
476 --   On successful completion of the ins_lck process the parental
477 --   datetracked rows will be locked providing the p_enforce_foreign_locking
478 --   argument value is TRUE.
479 --   If the p_enforce_foreign_locking argument value is FALSE then the
480 --   parential rows are not locked.
481 --
482 -- Post Failure:
483 --   The Lck process can fail for:
484 --   1) When attempting to lock the row the row could already be locked by
485 --      another user. This will raise the HR_Api.Object_Locked exception.
486 --   2) When attempting to the lock the parent which doesn't exist.
487 --      For the entity to be locked the parent must exist!
488 --
489 -- Developer Implementation Notes:
490 --   None.
491 --
492 -- Access Status:
493 --   Internal Row Handler Use Only.
494 --
495 -- {End Of Comments}
496 -- ----------------------------------------------------------------------------
497 Procedure ins_lck
498    (p_effective_date  in  date,
499     p_datetrack_mode  in  varchar2,
500     p_rec          in  per_ptu_shd.g_rec_type,
501     p_validation_start_date out nocopy date,
502     p_validation_end_date   out nocopy date) is
503 --
504   l_proc      varchar2(72) := g_package||'ins_lck';
505   l_validation_start_date date;
506   l_validation_end_date   date;
507 --
508 Begin
509   hr_utility.set_location('Entering:'||l_proc, 5);
510   --
511   -- Validate the datetrack mode mode getting the validation start
512   -- and end dates for the specified datetrack operation.
513   --
514   dt_api.validate_dt_mode
515    (p_effective_date    => p_effective_date,
516     p_datetrack_mode    => p_datetrack_mode,
517     p_base_table_name      => 'per_person_type_usages_f',
518     p_base_key_column      => 'person_type_usage_id',
519     p_base_key_value       => p_rec.person_type_usage_id,
520          p_parent_table_name1      => 'per_all_people_f',
521          p_parent_key_column1      => 'person_id',
522          p_parent_key_value1       => p_rec.person_id,
523          p_enforce_foreign_locking => true,
524     p_validation_start_date   => l_validation_start_date,
525     p_validation_end_date     => l_validation_end_date);
526   --
527   -- Set the validation start and end date OUT arguments
528   --
529   p_validation_start_date := l_validation_start_date;
530   p_validation_end_date   := l_validation_end_date;
531   --
532   hr_utility.set_location(' Leaving:'||l_proc, 10);
533 --
534 End ins_lck;
535 --
536 -- ----------------------------------------------------------------------------
537 -- |---------------------------------< ins >----------------------------------|
538 -- ----------------------------------------------------------------------------
539 Procedure ins
540   (
541   p_rec        in out nocopy per_ptu_shd.g_rec_type,
542   p_effective_date in     date
543   ) is
544 --
545   l_proc       varchar2(72) := g_package||'ins';
546   l_datetrack_mode      varchar2(30) := 'INSERT';
547   l_validation_start_date  date;
548   l_validation_end_date    date;
549 --
550 Begin
551   hr_utility.set_location('Entering:'||l_proc, 5);
552   --
553   -- Call the lock operation
554   --
555   ins_lck
556    (p_effective_date  => p_effective_date,
557     p_datetrack_mode  => l_datetrack_mode,
558     p_rec          => p_rec,
559     p_validation_start_date => l_validation_start_date,
560     p_validation_end_date   => l_validation_end_date);
561   --
562   -- Call the supporting insert validate operations
563   --
564   per_ptu_bus.insert_validate
565    (p_rec          => p_rec,
566     p_effective_date  => p_effective_date,
567     p_datetrack_mode  => l_datetrack_mode,
568     p_validation_start_date => l_validation_start_date,
569     p_validation_end_date   => l_validation_end_date);
570   --
571   -- Call the supporting pre-insert operation
572   --
573   pre_insert
574    (p_rec          => p_rec,
575     p_effective_date  => p_effective_date,
576     p_datetrack_mode  => l_datetrack_mode,
577     p_validation_start_date => l_validation_start_date,
578     p_validation_end_date   => l_validation_end_date);
579   --
580   -- Insert the row
581   --
582   insert_dml
583    (p_rec          => p_rec,
584     p_effective_date  => p_effective_date,
585     p_datetrack_mode  => l_datetrack_mode,
586     p_validation_start_date => l_validation_start_date,
587     p_validation_end_date   => l_validation_end_date);
588   --
589   -- Call the supporting post-insert operation
590   --
591   post_insert
592    (p_rec          => p_rec,
593     p_effective_date  => p_effective_date,
594     p_datetrack_mode  => l_datetrack_mode,
595     p_validation_start_date => l_validation_start_date,
596     p_validation_end_date   => l_validation_end_date);
597 end ins;
598 --
599 -- ----------------------------------------------------------------------------
600 -- |---------------------------------< ins >----------------------------------|
601 -- ----------------------------------------------------------------------------
602 Procedure ins
603   (
604   p_person_type_usage_id         out nocopy number,
605   p_person_id                    in number,
606   p_person_type_id               in number,
607   p_effective_start_date         out nocopy date,
608   p_effective_end_date           out nocopy date,
609   p_object_version_number        out nocopy number,
610   p_request_id                   in number           default null,
611   p_program_application_id       in number           default null,
612   p_program_id                   in number           default null,
613   p_program_update_date          in date             default null,
614   p_attribute_category           in varchar2         default null,
615   p_attribute1                   in varchar2         default null,
616   p_attribute2                   in varchar2         default null,
617   p_attribute3                   in varchar2         default null,
618   p_attribute4                   in varchar2         default null,
619   p_attribute5                   in varchar2         default null,
620   p_attribute6                   in varchar2         default null,
621   p_attribute7                   in varchar2         default null,
622   p_attribute8                   in varchar2         default null,
623   p_attribute9                   in varchar2         default null,
624   p_attribute10                  in varchar2         default null,
625   p_attribute11                  in varchar2         default null,
626   p_attribute12                  in varchar2         default null,
627   p_attribute13                  in varchar2         default null,
628   p_attribute14                  in varchar2         default null,
629   p_attribute15                  in varchar2         default null,
630   p_attribute16                  in varchar2         default null,
631   p_attribute17                  in varchar2         default null,
632   p_attribute18                  in varchar2         default null,
633   p_attribute19                  in varchar2         default null,
634   p_attribute20                  in varchar2         default null,
635   p_attribute21                  in varchar2         default null,
636   p_attribute22                  in varchar2         default null,
637   p_attribute23                  in varchar2         default null,
638   p_attribute24                  in varchar2         default null,
639   p_attribute25                  in varchar2         default null,
640   p_attribute26                  in varchar2         default null,
641   p_attribute27                  in varchar2         default null,
642   p_attribute28                  in varchar2         default null,
643   p_attribute29                  in varchar2         default null,
644   p_attribute30                  in varchar2         default null,
645   p_effective_date       in date
646   ) is
647 --
648   l_rec     per_ptu_shd.g_rec_type;
649   l_proc varchar2(72) := g_package||'ins';
650 --
651 Begin
652   hr_utility.set_location('Entering:'||l_proc, 5);
653   --
654   -- Call conversion function to turn arguments into the
655   -- p_rec structure.
656   --
657   l_rec :=
658   per_ptu_shd.convert_args
659   (
660   null,
661   p_person_id,
662   p_person_type_id,
663   null,
664   null,
665   null,
666   p_request_id,
667   p_program_application_id,
668   p_program_id,
669   p_program_update_date,
670   p_attribute_category,
671   p_attribute1,
672   p_attribute2,
673   p_attribute3,
674   p_attribute4,
675   p_attribute5,
676   p_attribute6,
677   p_attribute7,
678   p_attribute8,
679   p_attribute9,
680   p_attribute10,
681   p_attribute11,
682   p_attribute12,
683   p_attribute13,
684   p_attribute14,
685   p_attribute15,
686   p_attribute16,
687   p_attribute17,
688   p_attribute18,
689   p_attribute19,
690   p_attribute20,
691   p_attribute21,
692   p_attribute22,
693   p_attribute23,
694   p_attribute24,
695   p_attribute25,
696   p_attribute26,
697   p_attribute27,
698   p_attribute28,
699   p_attribute29,
700   p_attribute30
701   );
702   --
703   -- Having converted the arguments into the per_ptu_rec
704   -- plsql record structure we call the corresponding record
705   -- business process.
706   --
707   ins(l_rec, p_effective_date);
708   --
709   -- Set the OUT arguments.
710   --
711   p_person_type_usage_id         := l_rec.person_type_usage_id;
712   p_effective_start_date   := l_rec.effective_start_date;
713   p_effective_end_date     := l_rec.effective_end_date;
714   p_object_version_number  := l_rec.object_version_number;
715   --
716   --
717   hr_utility.set_location(' Leaving:'||l_proc, 10);
718 End ins;
719 --
720 end per_ptu_ins;