1 Package Body hr_cgd_ins as
2 /* $Header: hrcgdrhi.pkb 115.4 2002/12/03 09:17:25 hjonnala ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' hr_cgd_ins.'; -- Global package name
9 --
10 --
11 -- ----------------------------------------------------------------------------
12 -- |-------------------------------< ins_or_sel >-----------------------------|
13 -- ----------------------------------------------------------------------------
14 procedure ins_or_sel
15 (p_segment1 in varchar2 default null,
16 p_segment2 in varchar2 default null,
17 p_segment3 in varchar2 default null,
18 p_segment4 in varchar2 default null,
19 p_segment5 in varchar2 default null,
20 p_segment6 in varchar2 default null,
21 p_segment7 in varchar2 default null,
22 p_segment8 in varchar2 default null,
23 p_segment9 in varchar2 default null,
24 p_segment10 in varchar2 default null,
25 p_segment11 in varchar2 default null,
26 p_segment12 in varchar2 default null,
27 p_segment13 in varchar2 default null,
28 p_segment14 in varchar2 default null,
29 p_segment15 in varchar2 default null,
30 p_segment16 in varchar2 default null,
31 p_segment17 in varchar2 default null,
32 p_segment18 in varchar2 default null,
33 p_segment19 in varchar2 default null,
34 p_segment20 in varchar2 default null,
35 p_id_flex_num in number default null,
36 p_business_group_id in number,
37 p_cagr_grade_def_id out nocopy number,
38 p_concatenated_segments out nocopy varchar2
39 ) is
40 --
41 l_cagr_grade_def_id per_cagr_grades_def.cagr_grade_def_id%type;
42 l_concatenated_segments varchar2(2000);
43 l_id_flex_num per_cagr_grades_def.id_flex_num%type;
44 l_proc varchar2(72) := g_package||'ins_or_sel';
45 l_segs_changed boolean;
46 --
47 begin
48 hr_utility.set_location('Entering:'||l_proc, 5);
49 --
50 -- set the client_info
51 --
52 hr_api.validate_bus_grp_id (p_business_group_id);
53 --
54 -- on insert, if any segments are set, but there is no ID_FLEX_NUM,
55 -- raise an error.
56 --
57 IF
58 (p_segment1 is not null) or
59 (p_segment2 is not null) or
60 (p_segment3 is not null) or
61 (p_segment4 is not null) or
62 (p_segment5 is not null) or
63 (p_segment6 is not null) or
64 (p_segment7 is not null) or
65 (p_segment8 is not null) or
66 (p_segment9 is not null) or
67 (p_segment10 is not null) or
68 (p_segment11 is not null) or
69 (p_segment12 is not null) or
70 (p_segment13 is not null) or
71 (p_segment14 is not null) or
72 (p_segment15 is not null) or
73 (p_segment16 is not null) or
74 (p_segment17 is not null) or
75 (p_segment18 is not null) or
76 (p_segment19 is not null) or
77 (p_segment20 is not null) THEN
78 l_segs_changed := true;
79 Else
80 l_segs_changed := false;
81 End if;
82 --
83 IF l_segs_changed and p_id_flex_num is null THEN
84 hr_utility.set_location(l_proc, 20);
85 -- msg French legislations must supply a grade structure with the segments.
86 hr_utility.set_message(800, 'PER_52819_STRUCT_WITH_SEGS');
87 hr_utility.raise_error;
88 End if;
89 --
90 IF p_id_flex_num is null and l_segs_changed = false THEN
91 null;
92 hr_utility.set_location(l_proc, 30);
93 -- nothing to do on insert.
94 ELSE
95 -- id_flex_num is true at this point.
96 -- Always call AOL code here, as user may be only changing id_flex_num and
97 -- not any segments, so we must ensure this is still validated.
98 hr_utility.set_location(l_proc, 40);
99 --
100 hr_utility.set_location(l_proc, 100);
101 hr_kflex_utility.ins_or_sel_keyflex_comb
102 (p_appl_short_name => 'PER',
103 p_flex_code => 'CAGR',
104 p_flex_num => p_id_flex_num,
105 p_segment1 => p_segment1,
106 p_segment2 => p_segment2,
107 p_segment3 => p_segment3,
108 p_segment4 => p_segment4,
109 p_segment5 => p_segment5,
110 p_segment6 => p_segment6,
111 p_segment7 => p_segment7,
112 p_segment8 => p_segment8,
113 p_segment9 => p_segment9,
114 p_segment10 => p_segment10,
115 p_segment11 => p_segment11,
116 p_segment12 => p_segment12,
117 p_segment13 => p_segment13,
118 p_segment14 => p_segment14,
119 p_segment15 => p_segment15,
120 p_segment16 => p_segment16,
121 p_segment17 => p_segment17,
122 p_segment18 => p_segment18,
123 p_segment19 => p_segment19,
124 p_segment20 => p_segment20,
125 p_concat_segments_in => null,
126 p_ccid => l_cagr_grade_def_id,
127 p_concat_segments_out => l_concatenated_segments );
128 --
129 p_cagr_grade_def_id := l_cagr_grade_def_id;
130 p_concatenated_segments := l_concatenated_segments;
131 End if;
132 hr_utility.set_location(' Leaving:'||l_proc, 60);
133 end ins_or_sel;
134 end hr_cgd_ins;