DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_PCL_SHD

Source


4 -- ----------------------------------------------------------------------------
1 PACKAGE BODY per_pcl_shd AS
2 /* $Header: pepclrhi.pkb 115.9 2002/12/09 15:33:43 pkakar noship $ */
3 --
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  per_pcl_shd.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |-------------------------< non_value_category >---------------------------|
12 -- ----------------------------------------------------------------------------
13 --
14 FUNCTION non_value_category
15   (p_category_name IN VARCHAR2) RETURN BOOLEAN IS
16   --
17   -- Declare Local Variables
18   --
19   l_proc         VARCHAR2(72) := g_package || 'non_value_category';
20   l_return_value BOOLEAN;
21   --
22 BEGIN
23   --
24   hr_utility.set_location('Entering:'||l_proc, 10);
25   --
26   -- If the category is such that the value field
27   -- should not be populated then return false
28   --
29   IF p_category_name IN ('PYS','POS','PRO') THEN
30     --
31 	l_return_value := TRUE;
32 	--
33 	hr_utility.set_location(l_proc, 20);
34 	--
35   ELSE
36     --
37 	l_return_value := FALSE;
38 	--
39 	hr_utility.set_location(l_proc, 30);
40 	--
41   END IF;
42   --
43   hr_utility.set_location('Leaving :'||l_proc, 999);
44   --
45   RETURN(l_return_value);
46   --
47 END non_value_category;
48 --
49 -- ----------------------------------------------------------------------------
50 -- |----------------------< retrieve_entitlement_info >-----------------------|
51 -- ----------------------------------------------------------------------------
52 --
53 PROCEDURE retrieve_entitlement_item_info
54   (p_cagr_entitlement_id      IN     NUMBER
55   ,p_cagr_entitlement_item_id    OUT NOCOPY NUMBER
56   ,p_category_name               OUT NOCOPY VARCHAR2
57   ,p_formula_criteria            OUT NOCOPY VARCHAR2)IS
58   --
59   -- Cursor to fetch the entitlement_item_id and category_name
60   --
61   CURSOR csr_get_entitlement_item_id IS
62     SELECT pce.cagr_entitlement_item_id,
63 	       pci.category_name,
64 		   pce.formula_criteria
65 	FROM   per_cagr_entitlements pce,
66 	       per_cagr_entitlement_items pci
67 	WHERE  pci.cagr_entitlement_item_id = pce.cagr_entitlement_item_id
68 	AND    pce.cagr_entitlement_id      = p_cagr_entitlement_id;
69   --
70   -- Declare Local Variables
71   --
72   l_proc VARCHAR2(72) := g_package||'retrieve_entitlement_item_info';
73   --
74 BEGIN
75   --
76   hr_utility.set_location('Entering:'||l_proc, 10);
77   --
78   -- Check mandatory parameters has been set
79   --
80   hr_api.mandatory_arg_error
81     (p_api_name	      => l_proc
82     ,p_argument	      => 'CAGR_ENTITLEMENT_ID'
83     ,p_argument_value => p_cagr_entitlement_id);
84   --
85   hr_utility.set_location(l_proc, 30);
86   --
87   -- Retrieve the entitlement_item_id
88   --
89   OPEN csr_get_entitlement_item_id;
90   FETCH csr_get_entitlement_item_id INTO p_cagr_entitlement_item_id,
91                                          p_category_name,
92 										 p_formula_criteria;
93   --
94   IF csr_get_entitlement_item_id%NOTFOUND THEN
95     --
96     hr_utility.set_location(l_proc, 30);
97     --
101     hr_utility.raise_error;
98 	CLOSE csr_get_entitlement_item_id;
99 	--
100 	hr_utility.set_message(800, 'HR_289330_ENT_ITEM_NOT_FOUND');
102 	--
103   END IF;
104   --
105   hr_utility.set_location(l_proc, 40);
106   --
107   CLOSE csr_get_entitlement_item_id;
108   --
109   hr_utility.set_location('Leaving:'||l_proc, 999);
110   --
111 END retrieve_entitlement_item_info;
112 --
113 -- ----------------------------------------------------------------------------
114 -- |-------------------------< retrieve_cagr_info >---------------------------|
115 -- ----------------------------------------------------------------------------
116 --
117 PROCEDURE retrieve_cagr_info
118   (p_cagr_entitlement_id     IN     NUMBER
119   ,p_collective_agreement_id    OUT NOCOPY NUMBER
120   ,p_business_group_id          OUT NOCOPY NUMBER) IS
121   --
122   -- Declare Local Cursors
123   --
124   CURSOR csr_cagr_info IS
125     SELECT cag.collective_agreement_id,
126                cag.business_group_id
127         FROM   per_cagr_entitlements pce,
128                per_collective_agreements cag
129         WHERE  cag.collective_agreement_id = pce.collective_agreement_id
130         AND    pce.cagr_entitlement_id     = p_cagr_entitlement_id;
131   --
132   -- Declare Local Variables
133   --
134   l_proc VARCHAR2(72) := g_package || 'retrieve_cagr_info';
135   --
136 BEGIN
137   --
138   hr_utility.set_location('Entering:'||l_proc, 10);
139   --
140   -- Check mandatory parameters has been set
141   --
142   hr_api.mandatory_arg_error
143     (p_api_name       => l_proc
144     ,p_argument       => 'CAGR_ENTITLEMENT_ID'
145     ,p_argument_value => p_cagr_entitlement_id);
146   --
147   OPEN csr_cagr_info;
148   FETCH csr_cagr_info INTO p_collective_agreement_id, p_business_group_id;
149   --
150   IF csr_cagr_info%NOTFOUND THEN
151     --
152         CLOSE csr_cagr_info;
153         --
154         hr_utility.set_message(800, 'HR_289345_CAGR_REC_INV');
155     hr_utility.raise_error;
156         --
157   ELSE
158     --
159         CLOSE csr_cagr_info;
160         --
161   END IF;
162   --
163   hr_utility.set_location('Leaving :'||l_proc, 999);
164   --
165 END retrieve_cagr_info;
166 --
167 -- ----------------------------------------------------------------------------
168 -- |-------------------------< retrieve_value_set_id >------------------------|
169 -- ----------------------------------------------------------------------------
170 --
171 FUNCTION retrieve_value_set_id
172   (p_cagr_entitlement_item_id IN per_cagr_entitlements.cagr_entitlement_item_id%TYPE)
173   RETURN NUMBER IS
174   --
175   -- Declare Local Variables
176   --
177   l_flex_value_set_id per_cagr_entitlement_items.flex_value_set_id%TYPE;
178   l_proc VARCHAR2(72) := g_package || 'retrieve_value_set_id';
179   --
180   -- Cursor to fetch the entitlement_item_id
181   -- that entitlement_line is for.
182   --
183   CURSOR csr_get_value_set_id IS
184     SELECT flex_value_set_id
185 	FROM   per_cagr_entitlement_items cei
186 	WHERE  cei.cagr_entitlement_item_Id = P_cagr_entitlement_item_id
187 	AND    cei.flex_value_set_id IS NOT NULL;
188   --
189 BEGIN
190   --
191   hr_utility.set_location('Entering:'||l_proc, 10);
192   --
193   -- Check mandatory parameters has been set
194   --
195   hr_api.mandatory_arg_error
196     (p_api_name	      => l_proc
197     ,p_argument	      => 'CAGR_ENTITLEMENT_ITEM_ID'
198     ,p_argument_value => p_cagr_entitlement_item_id);
199   --
200   hr_utility.set_location(l_proc, 20);
201   --
202   OPEN csr_get_value_set_id;
203   FETCH csr_get_value_set_id INTO l_flex_value_set_id;
204   --
205   hr_utility.set_location(l_proc, 30);
206   --
207   CLOSE csr_get_value_set_id;
208   --
209   hr_utility.set_location('Leaving:'||l_proc, 10);
210   --
211   RETURN(l_flex_value_set_id);
212   --
213 END retrieve_value_set_id;
214 --
215 -- ----------------------------------------------------------------------------
216 -- |---------------------------< constraint_error >---------------------------|
217 -- ----------------------------------------------------------------------------
218 --
219 Procedure constraint_error
220   (p_constraint_name in all_constraints.constraint_name%TYPE
221   ) Is
222 --
223   l_proc        varchar2(72) := g_package||'constraint_error';
224 --
225 Begin
226   --
227   If (p_constraint_name = 'PER_CAGR_ENTITLEMENT_LINES_FK1') Then
228     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
229     fnd_message.set_token('PROCEDURE', l_proc);
230     fnd_message.set_token('STEP','5');
231     fnd_message.raise_error;
232   ElsIf (p_constraint_name = 'PER_CAGR_ENTITLEMENT_LINES_FK2') Then
233     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
234     fnd_message.set_token('PROCEDURE', l_proc);
235     fnd_message.set_token('STEP','10');
236     fnd_message.raise_error;
237   ElsIf (p_constraint_name = 'PER_CAGR_ENTITLEMENT_LINES_PK') Then
238     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
239     fnd_message.set_token('PROCEDURE', l_proc);
240     fnd_message.set_token('STEP','15');
241     fnd_message.raise_error;
242   Else
243     fnd_message.set_name('PAY', 'HR_7877_API_INVALID_CONSTRAINT');
244     fnd_message.set_token('PROCEDURE', l_proc);
248   --
245     fnd_message.set_token('CONSTRAINT_NAME', p_constraint_name);
246     fnd_message.raise_error;
247   End If;
249 End constraint_error;
250 --
251 -- ----------------------------------------------------------------------------
252 -- |-----------------------------< api_updating >-----------------------------|
253 -- ----------------------------------------------------------------------------
254 Function api_updating
255   (p_effective_date                   in date
256   ,p_cagr_entitlement_line_id         in number
257   ,p_object_version_number            in number
258   ) Return Boolean Is
259   --
260   -- Cursor selects the 'current' row from the HR Schema
261   --
262   Cursor C_Sel1 is
263     select
264      cagr_entitlement_line_id
265     ,cagr_entitlement_id
266     ,mandatory
267     ,value
268     ,range_from
269     ,range_to
270     ,effective_start_date
271     ,effective_end_date
272     ,parent_spine_id
273     ,step_id
274     ,from_step_id
275     ,to_step_id
276     ,status
277     ,oipl_id
278     ,object_version_number
279     ,grade_spine_id
280     ,eligy_prfl_id
281     from        per_cagr_entitlement_lines_f
282     where       cagr_entitlement_line_id = p_cagr_entitlement_line_id
283     and         p_effective_date
284     between     effective_start_date and effective_end_date;
285 --
286   l_fct_ret     boolean;
287 --
288 Begin
289   --
290   If (p_effective_date is null or
291       p_cagr_entitlement_line_id is null or
292       p_object_version_number is null) Then
293     --
294     -- One of the primary key arguments is null therefore we must
295     -- set the returning function value to false
296     --
297     l_fct_ret := false;
298   Else
299     If (p_cagr_entitlement_line_id =
300         per_pcl_shd.g_old_rec.cagr_entitlement_line_id and
301         p_object_version_number =
302         per_pcl_shd.g_old_rec.object_version_number
303 ) Then
304       --
305       -- The g_old_rec is current therefore we must
306       -- set the returning function to true
307       --
308       l_fct_ret := true;
309     Else
310       --
311       -- Select the current row
312       --
313       Open C_Sel1;
314       Fetch C_Sel1 Into per_pcl_shd.g_old_rec;
315       If C_Sel1%notfound Then
316         Close C_Sel1;
317         --
318         -- The primary key is invalid therefore we must error
319         --
320         fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
321         fnd_message.raise_error;
322       End If;
323       Close C_Sel1;
324       If (p_object_version_number
325           <> per_pcl_shd.g_old_rec.object_version_number) Then
326         fnd_message.set_name('PAY', 'HR_7155_OBJECT_INVALID');
327         fnd_message.raise_error;
328       End If;
329       l_fct_ret := true;
330     End If;
331   End If;
332   Return (l_fct_ret);
333 --
334 End api_updating;
335 --
336 -- ----------------------------------------------------------------------------
337 -- |---------------------------< find_dt_upd_modes >--------------------------|
338 -- ----------------------------------------------------------------------------
339 Procedure find_dt_upd_modes
340   (p_effective_date         in date
341   ,p_base_key_value         in number
342   ,p_correction             out nocopy boolean
343   ,p_update                 out nocopy boolean
344   ,p_update_override        out nocopy boolean
345   ,p_update_change_insert   out nocopy boolean
346   ) is
347 --
348   l_proc        varchar2(72) := g_package||'find_dt_upd_modes';
349 --
350 Begin
351   hr_utility.set_location('Entering:'||l_proc, 5);
352   --
353   -- Call the corresponding datetrack api
354   --
355   dt_api.find_dt_upd_modes
356     (p_effective_date        => p_effective_date
357     ,p_base_table_name       => 'per_cagr_entitlement_lines_f'
358     ,p_base_key_column       => 'cagr_entitlement_line_id'
359     ,p_base_key_value        => p_base_key_value
360     ,p_correction            => p_correction
361     ,p_update                => p_update
367 End find_dt_upd_modes;
362     ,p_update_override       => p_update_override
363     ,p_update_change_insert  => p_update_change_insert
364     );
365   --
366   hr_utility.set_location(' Leaving:'||l_proc, 10);
368 --
369 -- ----------------------------------------------------------------------------
370 -- |---------------------------< find_dt_del_modes >--------------------------|
371 -- ----------------------------------------------------------------------------
372 Procedure find_dt_del_modes
373   (p_effective_date        in date
374   ,p_base_key_value        in number
375   ,p_zap                   out nocopy boolean
376   ,p_delete                out nocopy boolean
377   ,p_future_change         out nocopy boolean
378   ,p_delete_next_change    out nocopy boolean
379   ) is
380   --
381   l_proc                varchar2(72)    := g_package||'find_dt_del_modes';
382   --
383   l_parent_key_value1     number;
384   l_parent_key_value2     number;
385   l_parent_key_value3     number;
386   l_parent_key_value4     number;
387   --
388   Cursor C_Sel1 Is
389     select
390      t.grade_spine_id
391     ,t.step_id
392     ,t.from_step_id
393     ,t.to_step_id
394     from   per_cagr_entitlement_lines_f t
395     where  t.cagr_entitlement_line_id = p_base_key_value
396     and    p_effective_date
397     between t.effective_start_date and t.effective_end_date;
398   --
399 Begin
400   hr_utility.set_location('Entering:'||l_proc, 5);
401   Open C_sel1;
402   Fetch C_Sel1 Into
403      l_parent_key_value1
404     ,l_parent_key_value2
405     ,l_parent_key_value3
406     ,l_parent_key_value4;
407   If C_Sel1%NOTFOUND then
408     Close C_Sel1;
409     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
410      fnd_message.set_token('PROCEDURE',l_proc);
411      fnd_message.set_token('STEP','10');
412      fnd_message.raise_error;
413   End If;
414   Close C_Sel1;
415   --
416   -- Call the corresponding datetrack api
417   --
418   dt_api.find_dt_del_modes
419    (p_effective_date                => p_effective_date
420    ,p_base_table_name               => 'per_cagr_entitlement_lines_f'
421    ,p_base_key_column               => 'cagr_entitlement_line_id'
422    ,p_base_key_value                => p_base_key_value
423    ,p_parent_table_name1            => 'per_grade_spines_f'
424    ,p_parent_key_column1            => 'grade_spine_id'
425    ,p_parent_key_value1             => l_parent_key_value1
426    ,p_parent_table_name2            => 'per_spinal_point_steps_f'
427    ,p_parent_key_column2            => 'step_id'
428    ,p_parent_key_value2             => l_parent_key_value2
429    ,p_parent_table_name3            => 'per_spinal_point_steps_f'
430    ,p_parent_key_column3            => 'step_id'
431    ,p_parent_key_value3             => l_parent_key_value3
432    ,p_parent_table_name4            => 'per_spinal_point_steps_f'
433    ,p_parent_key_column4            => 'step_id'
434    ,p_parent_key_value4             => l_parent_key_value4
435    ,p_zap                           => p_zap
436    ,p_delete                        => p_delete
437    ,p_future_change                 => p_future_change
438    ,p_delete_next_change            => p_delete_next_change
439    );
440   --
441   hr_utility.set_location(' Leaving:'||l_proc, 10);
442 End find_dt_del_modes;
443 --
444 -- ----------------------------------------------------------------------------
445 -- |-----------------------< upd_effective_end_date >-------------------------|
446 -- ----------------------------------------------------------------------------
447 Procedure upd_effective_end_date
448   (p_effective_date                   in date
449   ,p_base_key_value                   in number
450   ,p_new_effective_end_date           in date
451   ,p_validation_start_date            in date
452   ,p_validation_end_date              in date
453   ,p_object_version_number  out nocopy number
454   ) is
455 --
456   l_proc                  varchar2(72) := g_package||'upd_effective_end_date';
457   l_object_version_number number;
458 --
459 Begin
460   hr_utility.set_location('Entering:'||l_proc, 5);
461   --
462   -- Because we are updating a row we must get the next object
463   -- version number.
464   --
465   l_object_version_number :=
466     dt_api.get_object_version_number
467       (p_base_table_name    => 'per_cagr_entitlement_lines_f'
468       ,p_base_key_column    => 'cagr_entitlement_line_id'
469       ,p_base_key_value     => p_base_key_value
470       );
471   --
472   hr_utility.set_location(l_proc, 10);
473   --
474 --
475   -- Update the specified datetrack row setting the effective
476   -- end date to the specified new effective end date.
477   --
478   update  per_cagr_entitlement_lines_f t
479   set     t.effective_end_date    = p_new_effective_end_date
480     ,     t.object_version_number = l_object_version_number
481   where   t.cagr_entitlement_line_id        = p_base_key_value
482   and     p_effective_date
483   between t.effective_start_date and t.effective_end_date;
484   --
485   --
486   p_object_version_number := l_object_version_number;
487   hr_utility.set_location(' Leaving:'||l_proc, 15);
488 --
489 End upd_effective_end_date;
490 --
491 -- ----------------------------------------------------------------------------
492 -- |---------------------------------< lck >----------------------------------|
493 -- ----------------------------------------------------------------------------
494 Procedure lck
495   (p_effective_date                   in date
496   ,p_datetrack_mode                   in varchar2
497   ,p_cagr_entitlement_line_id         in number
498   ,p_object_version_number            in number
502 --
499   ,p_validation_start_date            out nocopy date
500   ,p_validation_end_date              out nocopy date
501   ) is
503   l_proc                  varchar2(72) := g_package||'lck';
504   l_validation_start_date date;
505   l_validation_end_date   date;
506   l_argument              varchar2(30);
507   --
508   -- Cursor C_Sel1 selects the current locked row as of session date
509   -- ensuring that the object version numbers match.
510   --
511   Cursor C_Sel1 is
512     select
513      cagr_entitlement_line_id
514     ,cagr_entitlement_id
515     ,mandatory
516     ,value
517     ,range_from
518     ,range_to
519     ,effective_start_date
520     ,effective_end_date
521     ,parent_spine_id
522     ,step_id
523     ,from_step_id
524     ,to_step_id
525     ,status
529     ,eligy_prfl_id
526     ,oipl_id
527     ,object_version_number
528     ,grade_spine_id
530     from    per_cagr_entitlement_lines_f
531     where   cagr_entitlement_line_id = p_cagr_entitlement_line_id
532     and     p_effective_date
533     between effective_start_date and effective_end_date
534     for update nowait;
535   --
536   --
537   --
538 Begin
539   hr_utility.set_location('Entering:'||l_proc, 5);
540   --
541   -- Ensure that all the mandatory arguments are not null
542   --
543   hr_api.mandatory_arg_error(p_api_name       => l_proc
544                             ,p_argument       => 'effective_date'
545                             ,p_argument_value => p_effective_date
546                             );
547   --
548   hr_api.mandatory_arg_error(p_api_name       => l_proc
549                             ,p_argument       => 'datetrack_mode'
550                             ,p_argument_value => p_datetrack_mode
551                             );
552   --
553   hr_api.mandatory_arg_error(p_api_name       => l_proc
554                             ,p_argument       => 'cagr_entitlement_line_id'
555                             ,p_argument_value => p_cagr_entitlement_line_id
556                             );
557   --
558     hr_api.mandatory_arg_error(p_api_name       => l_proc
559                             ,p_argument       => 'object_version_number'
560                             ,p_argument_value => p_object_version_number
561                             );
562   --
563   -- Check to ensure the datetrack mode is not INSERT.
564   --
565   If (p_datetrack_mode <> hr_api.g_insert) then
566     --
567     -- We must select and lock the current row.
568     --
569     Open  C_Sel1;
570     Fetch C_Sel1 Into per_pcl_shd.g_old_rec;
571     If C_Sel1%notfound then
572       Close C_Sel1;
573       --
574       -- The primary key is invalid therefore we must error
575       --
576       fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
577       fnd_message.raise_error;
578     End If;
579     Close C_Sel1;
580     If (p_object_version_number
581           <> per_pcl_shd.g_old_rec.object_version_number) Then
582         fnd_message.set_name('PAY', 'HR_7155_OBJECT_INVALID');
583         fnd_message.raise_error;
584     End If;
585     --
586     --
587     -- Validate the datetrack mode mode getting the validation start
588     -- and end dates for the specified datetrack operation.
589     --
590     dt_api.validate_dt_mode
591       (p_effective_date          => p_effective_date
592       ,p_datetrack_mode          => p_datetrack_mode
593       ,p_base_table_name         => 'per_cagr_entitlement_lines_f'
594       ,p_base_key_column         => 'cagr_entitlement_line_id'
595       ,p_base_key_value          => p_cagr_entitlement_line_id
596       ,p_parent_table_name1      => 'per_grade_spines_f'
597       ,p_parent_key_column1      => 'grade_spine_id'
598       ,p_parent_key_value1       => per_pcl_shd.g_old_rec.grade_spine_id
599       ,p_parent_table_name2      => 'per_spinal_point_steps_f'
600       ,p_parent_key_column2      => 'step_id'
601       ,p_parent_key_value2       => per_pcl_shd.g_old_rec.step_id
602       ,p_parent_table_name3      => 'per_spinal_point_steps_f'
603       ,p_parent_key_column3      => 'step_id'
604       ,p_parent_key_value3       => per_pcl_shd.g_old_rec.from_step_id
605       ,p_parent_table_name4      => 'per_spinal_point_steps_f'
606       ,p_parent_key_column4      => 'step_id'
607       ,p_parent_key_value4       => per_pcl_shd.g_old_rec.to_step_id
608       ,p_enforce_foreign_locking => true
609       ,p_validation_start_date   => l_validation_start_date
610       ,p_validation_end_date     => l_validation_end_date
611       );
612   Else
613     --
617     --
614     -- We are doing a datetrack 'INSERT' which is illegal within this
615     -- procedure therefore we must error (note: to lck on insert the
616     -- private procedure ins_lck should be called).
618     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
619     fnd_message.set_token('PROCEDURE', l_proc);
620     fnd_message.set_token('STEP','20');
621     fnd_message.raise_error;
622   End If;
623   --
624   -- Set the validation start and end date OUT arguments
625   --
626   p_validation_start_date := l_validation_start_date;
627   p_validation_end_date   := l_validation_end_date;
628   --
629   hr_utility.set_location(' Leaving:'||l_proc, 30);
630 --
631 -- We need to trap the ORA LOCK exception
632 --
633 Exception
634   When HR_Api.Object_Locked then
635     --
636     -- The object is locked therefore we need to supply a meaningful
637     -- error message.
638     --
639     fnd_message.set_name('PAY', 'HR_7165_OBJECT_LOCKED');
640     fnd_message.set_token('TABLE_NAME', 'per_cagr_entitlement_lines_f');
641     fnd_message.raise_error;
642 End lck;
643 --
644 -- ----------------------------------------------------------------------------
645 -- |-----------------------------< convert_args >-----------------------------|
646 -- ----------------------------------------------------------------------------
647 Function convert_args
648   (p_cagr_entitlement_line_id       in number
649   ,p_cagr_entitlement_id            in number
650   ,p_mandatory                      in varchar2
651   ,p_value                          in varchar2
652   ,p_range_from                     in varchar2
653   ,p_range_to                       in varchar2
654   ,p_effective_start_date           in date
655   ,p_effective_end_date             in date
656   ,p_parent_spine_id                in number
657   ,p_step_id                        in number
658   ,p_from_step_id                   in number
659   ,p_to_step_id                     in number
660   ,p_status                         in varchar2
661   ,p_oipl_id                        in number
662   ,p_object_version_number          in number
663   ,p_grade_spine_id                 in number
664   ,p_eligy_prfl_id                  in number
665   )
666   Return g_rec_type is
667 --
668   l_rec   g_rec_type;
669 --
670 Begin
671   --
672   -- Convert arguments into local l_rec structure.
673   --
674   l_rec.cagr_entitlement_line_id         := p_cagr_entitlement_line_id;
675   l_rec.cagr_entitlement_id              := p_cagr_entitlement_id;
676   l_rec.mandatory                        := p_mandatory;
677   l_rec.value                            := p_value;
678   l_rec.range_from                       := p_range_from;
679   l_rec.range_to                         := p_range_to;
683   l_rec.step_id                          := p_step_id;
680   l_rec.effective_start_date             := p_effective_start_date;
681   l_rec.effective_end_date               := p_effective_end_date;
682   l_rec.parent_spine_id                  := p_parent_spine_id;
684   l_rec.from_step_id                     := p_from_step_id;
685   l_rec.to_step_id                       := p_to_step_id;
686   l_rec.status                           := p_status;
687   l_rec.oipl_id                          := p_oipl_id;
688   l_rec.object_version_number            := p_object_version_number;
689   l_rec.grade_spine_id                   := p_grade_spine_id;
690   l_rec.eligy_prfl_id                    := p_eligy_prfl_id;
691   --
692   -- Return the plsql record structure.
693   --
694   Return(l_rec);
695 --
696 End convert_args;
697 --
698 end per_pcl_shd;