DBA Data[Home] [Help]

PACKAGE BODY: APPS.AME_CON_INS

Source


1 Package Body ame_con_ins as
2 /* $Header: amconrhi.pkb 120.6 2006/01/12 22:43 pvelugul noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  ame_con_ins.';  -- Global package name
9 --
10 -- The following global variables are only to be used by
11 -- the set_base_key_value and pre_insert procedures.
12 --
13 g_condition_id_i  number   default null;
14 --
15 -- Private funtion to return the default value of rule_key
16 --
17   function getNextConditionKey(
18                                 p_condition_key varchar2
19                               ) return varchar2 as
20     databaseId varchar2(50);
21     newConditionKey ame_rules.rule_key%type;
22     newConditionKey1 ame_rules.rule_key%type;
23     conditionKeyId number;
24     conditionCount number;
25     seededKeyPrefix varchar2(4);
26     l_proc              varchar2(72)  :=  g_package||'getNextConditionKey';
27     begin
28       if(ame_util.getHighestResponsibility <> ame_util.developerResponsibility
29            and p_condition_key is not null) then
30         return p_condition_key;
31       end if;
32       --+
33       begin
34         select to_char(db.dbid)
35         into databaseId
36         from v$database db, v$instance instance
37         where upper(db.name) = upper(instance.instance_name);
38       exception
39         when no_data_found then
40           databaseId := null;
41       end;
42       --+
43       if (fnd_global.resp_name = 'AME Developer') then
44          seededKeyPrefix := ame_util.seededKeyPrefix;
45       else
46          seededKeyPrefix := null;
47       end if;
48       --+
49       loop
50         select ame_condition_keys_s.nextval into conditionKeyId from dual;
51         newConditionKey := databaseId||':'||conditionKeyId;
52         if seededKeyPrefix is not null then
53           newConditionKey1 := seededKeyPrefix||'-' || newConditionKey;
54         else
55           newConditionKey1 := newConditionKey;
56         end if;
57         select count(*)
58           into conditionCount
59           from ame_conditions
60           where upper(condition_key) = upper(newConditionKey1) and
61                 rownum < 2;
62         if conditionCount = 0 then
63           exit;
64         end if;
65       end loop;
66       return(newConditionKey1);
67     exception
68       when app_exception.application_exception then
69         if hr_multi_message.exception_add
70           (p_associated_column1 => 'RULE_TYPE') then
71           hr_utility.set_location(' Leaving:'|| l_proc, 50);
72           raise;
73         end if;
74         hr_utility.set_location(' Leaving:'|| l_proc, 60);
75         return(null);
76   end getNextConditionKey;
77 --
78 -- ----------------------------------------------------------------------------
79 -- |------------------------< set_base_key_value >----------------------------|
80 -- ----------------------------------------------------------------------------
81 procedure set_base_key_value
82   (p_condition_id  in  number) is
83 --
84   l_proc       varchar2(72) := g_package||'set_base_key_value';
85 --
86 Begin
87   hr_utility.set_location('Entering:'||l_proc, 10);
88   --
89   ame_con_ins.g_condition_id_i := p_condition_id;
90   --
91   hr_utility.set_location(' Leaving:'||l_proc, 20);
92 End set_base_key_value;
93 --
94 --
95 -- ----------------------------------------------------------------------------
96 -- |----------------------------< dt_insert_dml >-----------------------------|
97 -- ----------------------------------------------------------------------------
98 -- {Start Of Comments}
99 --
100 -- Description:
101 --   This procedure controls the actual dml insert logic for datetrack. The
102 --   functions of this procedure are as follows:
103 --   1) Get the object_version_number.
104 --   2) To set the effective start and end dates to the corresponding
105 --      validation start and end dates. Also, the object version number
106 --      record attribute is set.
107 --   3) To set and unset the g_api_dml status as required (as we are about to
108 --      perform dml).
109 --   4) To insert the row into the schema with the derived effective start
110 --      and end dates and the object version number.
111 --   5) To trap any constraint violations that may have occurred.
112 --   6) To raise any other errors.
113 --
114 -- Prerequisites:
115 --   This is an internal private procedure which must be called from the
116 --   insert_dml and pre_update (logic permitting) procedure and must have
117 --   all mandatory arguments set.
118 --
119 -- In Parameters:
120 --   A Pl/Sql record structure.
121 --
122 -- Post Success:
123 --   The specified row will be inserted into the schema.
124 --
125 -- Post Failure:
126 --   On the insert dml failure it is important to note that we always reset the
127 --   g_api_dml status to false.
128 --   If a check or unique integrity constraint violation is raised the
129 --   constraint_error procedure will be called.
130 --   If any other error is reported, the error will be raised after the
131 --   g_api_dml status is reset.
132 --
133 -- Developer Implementation Notes:
134 --   This is an internal datetrack maintenance procedure which should
135 --   not be modified in anyway.
136 --
137 -- Access Status:
138 --   Internal Row Handler Use Only.
139 --
140 -- {End Of Comments}
141 -- ----------------------------------------------------------------------------
142 Procedure dt_insert_dml
143   (p_rec                     in out nocopy ame_con_shd.g_rec_type
144   ,p_effective_date          in date
145   ,p_datetrack_mode          in varchar2
146   ,p_validation_start_date   in date
147   ,p_validation_end_date     in date
148   ) is
149 -- Cursor to select 'old' created AOL who column values
150 --
151   Cursor C_Sel1 Is
152     select t.creation_date
153     from   ame_conditions t
154     where t.condition_id = p_rec.condition_id
155     and    t.start_date =
156              ame_con_shd.g_old_rec.start_date
157     and    t.end_date   = p_validation_start_date;
158 --
159    Cursor C_Sel2 Is
160     select created_by
161       from ame_conditions t
162      where t.condition_id = p_rec.condition_id
163        and ame_utility_pkg.is_seed_user(created_by) = ame_util.seededDataCreatedById
164        and rownum < 2;
165 --
166   l_proc                varchar2(72) := g_package||'dt_insert_dml';
167   l_created_by          ame_conditions.created_by%TYPE;
168   l_creation_date       ame_conditions.creation_date%TYPE;
169   l_last_update_date    ame_conditions.last_update_date%TYPE;
170   l_last_updated_by     ame_conditions.last_updated_by%TYPE;
171   l_last_update_login   ame_conditions.last_update_login%TYPE;
172   l_current_user_id     integer;
173   l_temp_count          integer;
174 --
175 Begin
176   hr_utility.set_location('Entering:'||l_proc, 5);
177   --
178   -- Set the effective start and end dates to the corresponding
179   -- validation start and end dates
180   --
181   p_rec.start_date  := p_validation_start_date;
182   p_rec.end_date    := p_validation_end_date;
183   l_current_user_id := fnd_global.user_id;
184   --
185   -- If the datetrack_mode is not INSERT then we must populate the WHO
186   -- columns with the 'old' creation values and 'new' updated values.
187   --
188   If (p_datetrack_mode <> hr_api.g_insert) then
189     hr_utility.set_location(l_proc, 10);
190     --
191       -- Get the object version number for the insert
192   --
193   p_rec.object_version_number :=
194    ame_con_shd.get_object_version_number
195       (p_condition_id =>  p_rec.condition_id
196       );
197   --
198     -- Select the 'old' created values
199     --
200     Open C_Sel1;
201     Fetch C_Sel1 Into l_creation_date;
202     If C_Sel1%notfound Then
203       --
204       -- The previous 'old' created row has not been found. We need
205       -- to error as an internal datetrack problem exists.
206       --
207       Close C_Sel1;
208       fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
209       fnd_message.set_token('PROCEDURE', l_proc);
210       fnd_message.set_token('STEP','10');
211       fnd_message.raise_error;
212     End If;
213     Close C_Sel1;
214     --
215     --
216     Open C_Sel2;
217     Fetch C_Sel2 Into l_temp_count;
218     if C_Sel2%found then
219       l_created_by := l_temp_count;
220     else
221       l_created_by := l_current_user_id;
222     end if;
223     Close C_Sel2;
224     --
225     -- Set the AOL updated WHO values
226     --
227     l_last_update_date   := sysdate;
228     l_last_updated_by    := l_current_user_id;
229     l_last_update_login  := l_current_user_id;
230   Else
231     p_rec.object_version_number := 1;  -- Initialise the object version
232     --
233     -- If the current user logged in using AME Developer responsibility
234     -- then the created_by value should be ame_util.seededDataCreatedById
235     --
236     if fnd_global.resp_name = 'AME Developer' then
237       l_created_by         := ame_util.seededDataCreatedById;
238     else
239       l_created_by         := l_current_user_id;
240     end if;
241     l_creation_date      := sysdate;
242     l_last_update_date   := sysdate;
243     l_last_updated_by    := l_current_user_id;
244     l_last_update_login  := l_current_user_id;
245   End If;
246   --
247   --
248   --
249   -- Insert the row into: ame_conditions
250   --
251   insert into ame_conditions
252       (condition_id
253       ,condition_type
254       ,attribute_id
255       ,parameter_one
256       ,parameter_two
257       ,parameter_three
258       ,include_lower_limit
259       ,include_upper_limit
260       ,start_date
261       ,end_date
262       ,security_group_id
263       ,condition_key
264       ,object_version_number
265       ,created_by
266       ,creation_date
267       ,last_update_date
268       ,last_updated_by
269       ,last_update_login
270       )
271   Values
272     (p_rec.condition_id
273     ,p_rec.condition_type
274     ,p_rec.attribute_id
275     ,p_rec.parameter_one
276     ,p_rec.parameter_two
277     ,p_rec.parameter_three
278     ,p_rec.include_lower_limit
279     ,p_rec.include_upper_limit
280     ,p_rec.start_date
281     ,p_rec.end_date
282     ,p_rec.security_group_id
283     ,p_rec.condition_key
284     ,p_rec.object_version_number
285     ,l_created_by
286     ,l_creation_date
287     ,l_last_update_date
288     ,l_last_updated_by
289     ,l_last_update_login
290     );
291   --
292   --
293   hr_utility.set_location(' Leaving:'||l_proc, 15);
294 --
295 Exception
296   When hr_api.check_integrity_violated Then
297     -- A check constraint has been violated
298     --
299     ame_con_shd.constraint_error
300       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
301   When hr_api.unique_integrity_violated Then
302     -- Unique integrity has been violated
303     --
304     ame_con_shd.constraint_error
305       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
306   When Others Then
307     --
308     Raise;
309 End dt_insert_dml;
310 --
311 -- ----------------------------------------------------------------------------
312 -- |------------------------------< insert_dml >------------------------------|
313 -- ----------------------------------------------------------------------------
314 Procedure insert_dml
315   (p_rec                   in out nocopy ame_con_shd.g_rec_type
316   ,p_effective_date        in date
317   ,p_datetrack_mode        in varchar2
318   ,p_validation_start_date in date
319   ,p_validation_end_date   in date
320   ) is
321 --
322   l_proc        varchar2(72) := g_package||'insert_dml';
323 --
324 Begin
325   hr_utility.set_location('Entering:'||l_proc, 5);
326   --
327   ame_con_ins.dt_insert_dml
328     (p_rec                   => p_rec
329     ,p_effective_date        => p_effective_date
330     ,p_datetrack_mode        => p_datetrack_mode
331     ,p_validation_start_date => p_validation_start_date
332     ,p_validation_end_date   => p_validation_end_date
333     );
334   --
335   hr_utility.set_location(' Leaving:'||l_proc, 10);
336 End insert_dml;
337 --
338 -- ----------------------------------------------------------------------------
339 -- |------------------------------< pre_insert >------------------------------|
340 -- ----------------------------------------------------------------------------
341 -- {Start Of Comments}
342 --
343 -- Description:
344 --   This private procedure contains any processing which is required before
345 --   the insert dml. Presently, if the entity has a corresponding primary
346 --   key which is maintained by an associating sequence, the primary key for
347 --   the entity will be populated with the next sequence value in
348 --   preparation for the insert dml.
349 --   Also, if comments are defined for this entity, the comments insert
350 --   logic will also be called, generating a comment_id if required.
351 --
352 -- Prerequisites:
353 --   This is an internal procedure which is called from the ins procedure.
354 --
355 -- In Parameters:
356 --   A Pl/Sql record structure.
357 --
358 -- Post Success:
359 --   Processing continues.
360 --
361 -- Post Failure:
362 --   If an error has occurred, an error message and exception will be raised
363 --   but not handled.
364 --
365 -- Developer Implementation Notes:
366 --   Any pre-processing required before the insert dml is issued should be
367 --   coded within this procedure. As stated above, a good example is the
368 --   generation of a primary key number via a corresponding sequence.
369 --   It is important to note that any 3rd party maintenance should be reviewed
370 --   before placing in this procedure.
371 --
372 -- Access Status:
373 --   Internal Row Handler Use Only.
374 --
375 -- {End Of Comments}
376 -- ----------------------------------------------------------------------------
377 Procedure pre_insert
378   (p_rec                   in out nocopy ame_con_shd.g_rec_type
379   ,p_effective_date        in date
380   ,p_datetrack_mode        in varchar2
381   ,p_validation_start_date in date
382   ,p_validation_end_date   in date
383   ) is
384 --
385   Cursor C_Sel1 is select ame_conditions_s.nextval from sys.dual;
386 --
387  Cursor C_Sel2 is
388     Select null
389       from ame_conditions
390      where condition_id =
391              ame_con_ins.g_condition_id_i
392        and p_effective_date between start_date
393              and nvl(end_date - ame_util.oneSecond , p_effective_date);
394 --
395   l_proc        varchar2(72) := g_package||'pre_insert';
396   l_exists      varchar2(1);
397 --
398 Begin
399   hr_utility.set_location('Entering:'||l_proc, 5);
400   --
401     If (ame_con_ins.g_condition_id_i is not null) Then
402     --
403     -- Verify registered primary key values not already in use
404     --
405     Open C_Sel2;
406     Fetch C_Sel2 into l_exists;
407     If C_Sel2%found Then
408        Close C_Sel2;
409        --
410        -- The primary key values are already in use.
411        --
412        fnd_message.set_name('PER','PER_289391_KEY_ALREADY_USED');
413        fnd_message.set_token('TABLE_NAME','ame_conditions');
414        fnd_message.raise_error;
415     End If;
416     Close C_Sel2;
417     --
418     -- Use registered key values and clear globals
419     --
420     p_rec.condition_id :=
421       ame_con_ins.g_condition_id_i;
422     ame_con_ins.g_condition_id_i := null;
423   Else
424     --
425     -- No registerd key values, so select the next sequence number
426     --
427     --
428     -- Select the next sequence number
429     --
430     Open C_Sel1;
431     Fetch C_Sel1 Into p_rec.condition_id;
432     Close C_Sel1;
433   End If;
434   --
435   --
436   p_rec.condition_key := getNextConditionKey(p_condition_key => p_rec.condition_key);
437   --
438   --
439   hr_utility.set_location(' Leaving:'||l_proc, 10);
440 End pre_insert;
441 --
442 -- ----------------------------------------------------------------------------
443 -- |----------------------------< post_insert >-------------------------------|
444 -- ----------------------------------------------------------------------------
445 -- {Start Of Comments}
446 --
447 -- Description:
448 --   This private procedure contains any processing which is required after
449 --   the insert dml.
450 --
451 -- Prerequisites:
452 --   This is an internal procedure which is called from the ins procedure.
453 --
454 -- In Parameters:
455 --   A Pl/Sql record structure.
456 --
457 -- Post Success:
458 --   Processing continues.
459 --
460 -- Post Failure:
461 --   If an error has occurred, an error message and exception will be raised
462 --   but not handled.
463 --
464 -- Developer Implementation Notes:
465 --   Any post-processing required after the insert dml is issued should be
466 --   coded within this procedure. It is important to note that any 3rd party
467 --   maintenance should be reviewed before placing in this procedure.
468 --
469 -- Access Status:
470 --   Internal Row Handler Use Only.
471 --
472 -- {End Of Comments}
473 -- ----------------------------------------------------------------------------
474 Procedure post_insert
475   (p_rec                   in ame_con_shd.g_rec_type
476   ,p_effective_date        in date
477   ,p_datetrack_mode        in varchar2
478   ,p_validation_start_date in date
479   ,p_validation_end_date   in date
480   ) is
481 --
482   l_proc        varchar2(72) := g_package||'post_insert';
483 --
484 Begin
485   hr_utility.set_location('Entering:'||l_proc, 5);
486   begin
487     --
488     ame_con_rki.after_insert
489       (p_effective_date
490       => p_effective_date
491       ,p_validation_start_date
492       => p_validation_start_date
493       ,p_validation_end_date
494       => p_validation_end_date
495       ,p_condition_id
496       => p_rec.condition_id
497       ,p_condition_type
498       => p_rec.condition_type
499       ,p_attribute_id
500       => p_rec.attribute_id
501       ,p_parameter_one
502       => p_rec.parameter_one
503       ,p_parameter_two
504       => p_rec.parameter_two
505       ,p_parameter_three
506       => p_rec.parameter_three
507       ,p_include_lower_limit
508       => p_rec.include_lower_limit
509       ,p_include_upper_limit
510       => p_rec.include_upper_limit
511       ,p_start_date
512       => p_rec.start_date
513       ,p_end_date
514       => p_rec.end_date
515       ,p_security_group_id
516       => p_rec.security_group_id
517       ,p_condition_key
518       => p_rec.condition_key
519       ,p_object_version_number
520       => p_rec.object_version_number
521       );
522     --
523   exception
524     --
525     when hr_api.cannot_find_prog_unit then
526       --
527       hr_api.cannot_find_prog_unit_error
528         (p_module_name => 'AME_CONDITIONS'
529         ,p_hook_type   => 'AI');
530       --
531   end;
532   --
533   hr_utility.set_location(' Leaving:'||l_proc, 10);
534 End post_insert;
535 --
536 -- ----------------------------------------------------------------------------
537 -- |-------------------------------< ins_lck >--------------------------------|
538 -- ----------------------------------------------------------------------------
539 -- {Start Of Comments}
540 --
541 -- Description:
542 --   The ins_lck process has one main function to perform. When inserting
543 --   a datetracked row, we must validate the DT mode.
544 --
545 -- Prerequisites:
546 --   This procedure can only be called for the datetrack mode of INSERT.
547 --
548 -- In Parameters:
549 --
550 -- Post Success:
551 --   On successful completion of the ins_lck process the parental
552 --   datetracked rows will be locked providing the p_enforce_foreign_locking
553 --   argument value is TRUE.
554 --   If the p_enforce_foreign_locking argument value is FALSE then the
555 --   parential rows are not locked.
556 --
557 -- Post Failure:
558 --   The Lck process can fail for:
559 --   1) When attempting to lock the row the row could already be locked by
560 --      another user. This will raise the HR_Api.Object_Locked exception.
561 --   2) When attempting to the lock the parent which doesn't exist.
562 --      For the entity to be locked the parent must exist!
563 --
564 -- Developer Implementation Notes:
565 --   None.
566 --
567 -- Access Status:
568 --   Internal Row Handler Use Only.
569 --
570 -- {End Of Comments}
571 -- ----------------------------------------------------------------------------
572 Procedure ins_lck
573   (p_effective_date        in date
574   ,p_datetrack_mode        in varchar2
575   ,p_rec                   in ame_con_shd.g_rec_type
576   ,p_validation_start_date out nocopy date
577   ,p_validation_end_date   out nocopy date
578   ) is
579 --
580   l_proc                  varchar2(72) := g_package||'ins_lck';
581   l_validation_start_date date;
582   l_validation_end_date   date;
583 --
584 Begin
585   hr_utility.set_location('Entering:'||l_proc, 5);
586   --
587   -- Validate the datetrack mode mode getting the validation start
588   -- and end dates for the specified datetrack operation.
589   --
590   --
591   -- Set the validation start and end date OUT arguments
592   --
593 --  p_validation_start_date := l_validation_start_date;
594 --  p_validation_end_date   := l_validation_end_date;
595 -- MURTHY_CHANGES
596   p_validation_start_date := sysdate;
597   p_validation_end_date   := ame_utility_pkg.endOfTime;
598   --
599   hr_utility.set_location(' Leaving:'||l_proc, 10);
600   --
601 End ins_lck;
602 --
603 -- ----------------------------------------------------------------------------
604 -- |---------------------------------< ins >----------------------------------|
605 -- ----------------------------------------------------------------------------
606 Procedure ins
607   (p_effective_date in     date
608   ,p_rec            in out nocopy ame_con_shd.g_rec_type
609   ) is
610 --
611   l_proc                        varchar2(72) := g_package||'ins';
612   l_datetrack_mode              varchar2(30) := hr_api.g_insert;
613   l_validation_start_date       date;
614   l_validation_end_date         date;
615 --
616 Begin
617   hr_utility.set_location('Entering:'||l_proc, 5);
618   --
619   -- Set the Attribute_id for LM Conditions
620   --
621   if(p_rec.condition_type = ame_util.listModConditionType) then
622     p_rec.attribute_id := nvl(p_rec.attribute_id,0);
623   end if;
624   --
625   -- Call the lock operation
626   --
627   ame_con_ins.ins_lck
628     (p_effective_date        => p_effective_date
629     ,p_datetrack_mode        => l_datetrack_mode
630     ,p_rec                   => p_rec
631     ,p_validation_start_date => l_validation_start_date
632     ,p_validation_end_date   => l_validation_end_date
633     );
634   --
635   -- Call the supporting insert validate operations
636   --
637   ame_con_bus.insert_validate
638     (p_rec                   => p_rec
639     ,p_effective_date        => p_effective_date
640     ,p_datetrack_mode        => l_datetrack_mode
641     ,p_validation_start_date => l_validation_start_date
642     ,p_validation_end_date   => l_validation_end_date
643     );
644   --
645   -- Call to raise any errors on multi-message list
646   hr_multi_message.end_validation_set;
647   --
648   -- Call the supporting pre-insert operation
649   --
650   ame_con_ins.pre_insert
651     (p_rec                   => p_rec
652     ,p_effective_date        => p_effective_date
653     ,p_datetrack_mode        => l_datetrack_mode
654     ,p_validation_start_date => l_validation_start_date
655     ,p_validation_end_date   => l_validation_end_date
656     );
657   --
658   -- Insert the row
659   --
660   ame_con_ins.insert_dml
661     (p_rec                   => p_rec
662     ,p_effective_date        => p_effective_date
663     ,p_datetrack_mode        => l_datetrack_mode
664     ,p_validation_start_date => l_validation_start_date
665     ,p_validation_end_date   => l_validation_end_date
666     );
667   --
668   -- Call the supporting post-insert operation
669   --
670   ame_con_ins.post_insert
671     (p_rec                   => p_rec
672     ,p_effective_date        => p_effective_date
673     ,p_datetrack_mode        => l_datetrack_mode
674     ,p_validation_start_date => l_validation_start_date
675     ,p_validation_end_date   => l_validation_end_date
676     );
677   --
678   -- Call to raise any errors on multi-message list
679   hr_multi_message.end_validation_set;
680   --
681   hr_utility.set_location('Leaving:'||l_proc,10);
682 end ins;
683 --
684 -- ----------------------------------------------------------------------------
685 -- |---------------------------------< ins >----------------------------------|
686 -- ----------------------------------------------------------------------------
687 Procedure ins
688   (p_effective_date                 in     date
689   ,p_condition_type                 in     varchar2
690   ,p_attribute_id                   in     number
691   ,p_condition_key                  in     varchar2
692   ,p_parameter_one                  in     varchar2 default null
693   ,p_parameter_two                  in     varchar2 default null
694   ,p_parameter_three                in     varchar2 default null
695   ,p_include_lower_limit            in     varchar2 default null
696   ,p_include_upper_limit            in     varchar2 default null
697   ,p_security_group_id              in     number   default null
698   ,p_condition_id                      out nocopy number
699   ,p_object_version_number             out nocopy number
700   ,p_start_date                        out nocopy date
701   ,p_end_date                          out nocopy date
702   ) is
703 --
704   l_rec         ame_con_shd.g_rec_type;
705   l_proc        varchar2(72) := g_package||'ins';
706 --
707 Begin
708   hr_utility.set_location('Entering:'||l_proc, 5);
709   --
710   -- Call conversion function to turn arguments into the
711   -- p_rec structure.
712   --
713   l_rec :=
714   ame_con_shd.convert_args
715     (null
716     ,p_condition_type
717     ,p_attribute_id
718     ,p_parameter_one
719     ,p_parameter_two
720     ,p_parameter_three
721     ,p_include_lower_limit
722     ,p_include_upper_limit
723     ,null
724     ,null
725     ,p_security_group_id
726     ,p_condition_key
727     ,null
728     );
729   --
730   -- Having converted the arguments into the ame_con_rec
731   -- plsql record structure we call the corresponding record
732   -- business process.
733   --
734   ame_con_ins.ins
735     (p_effective_date
736     ,l_rec
737     );
738   --
739   -- Set the OUT arguments.
740   --
741   p_condition_id := l_rec.condition_id;
742   p_start_date             := l_rec.start_date;
743   p_end_date               := l_rec.end_date;
744   p_object_version_number            := l_rec.object_version_number;
745   --
746   --
747   hr_utility.set_location(' Leaving:'||l_proc, 10);
748 End ins;
749 --
750 end ame_con_ins;