1 Package Body hr_cgd_upd 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_upd.'; -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |-----------------------------< convert_defs >-----------------------------|
12 -- ----------------------------------------------------------------------------
13 Procedure convert_defs(p_rec in out nocopy hr_cgd_shd.g_rec_type) is
14 --
15 l_proc varchar2(72) := g_package||'convert_defs';
16 --
17 Begin
18 --
19 hr_utility.set_location('Entering:'||l_proc, 5);
20 --
21 -- We must now examine each argument value in the
22 -- p_rec plsql record structure
23 -- to see if a system default is being used. If a system default
24 -- is being used then we must set to the 'current' argument value.
25 --
26 If (p_rec.id_flex_num = hr_api.g_number) then
27 p_rec.id_flex_num :=
28 hr_cgd_shd.g_old_rec.id_flex_num;
29 End If;
30 If (p_rec.summary_flag = hr_api.g_varchar2) then
31 p_rec.summary_flag :=
32 hr_cgd_shd.g_old_rec.summary_flag;
33 End If;
34 If (p_rec.enabled_flag = hr_api.g_varchar2) then
35 p_rec.enabled_flag :=
36 hr_cgd_shd.g_old_rec.enabled_flag;
37 End If;
38 If (p_rec.start_date_active = hr_api.g_date) then
39 p_rec.start_date_active :=
40 hr_cgd_shd.g_old_rec.start_date_active;
41 End If;
42 If (p_rec.end_date_active = hr_api.g_date) then
43 p_rec.end_date_active :=
44 hr_cgd_shd.g_old_rec.end_date_active;
45 End If;
46 If (p_rec.segment1 = hr_api.g_varchar2) then
47 p_rec.segment1 :=
48 hr_cgd_shd.g_old_rec.segment1;
49 End If;
50 If (p_rec.segment2 = hr_api.g_varchar2) then
51 p_rec.segment2 :=
52 hr_cgd_shd.g_old_rec.segment2;
53 End If;
54 If (p_rec.segment3 = hr_api.g_varchar2) then
55 p_rec.segment3 :=
56 hr_cgd_shd.g_old_rec.segment3;
57 End If;
58 If (p_rec.segment4 = hr_api.g_varchar2) then
59 p_rec.segment4 :=
60 hr_cgd_shd.g_old_rec.segment4;
61 End If;
62 If (p_rec.segment5 = hr_api.g_varchar2) then
63 p_rec.segment5 :=
64 hr_cgd_shd.g_old_rec.segment5;
65 End If;
66 If (p_rec.segment6 = hr_api.g_varchar2) then
67 p_rec.segment6 :=
68 hr_cgd_shd.g_old_rec.segment6;
69 End If;
70 If (p_rec.segment7 = hr_api.g_varchar2) then
71 p_rec.segment7 :=
72 hr_cgd_shd.g_old_rec.segment7;
73 End If;
74 If (p_rec.segment8 = hr_api.g_varchar2) then
75 p_rec.segment8 :=
76 hr_cgd_shd.g_old_rec.segment8;
77 End If;
78 If (p_rec.segment9 = hr_api.g_varchar2) then
79 p_rec.segment9 :=
80 hr_cgd_shd.g_old_rec.segment9;
81 End If;
82 If (p_rec.segment10 = hr_api.g_varchar2) then
83 p_rec.segment10 :=
84 hr_cgd_shd.g_old_rec.segment10;
85 End If;
86 If (p_rec.segment11 = hr_api.g_varchar2) then
87 p_rec.segment11 :=
88 hr_cgd_shd.g_old_rec.segment11;
89 End If;
90 If (p_rec.segment12 = hr_api.g_varchar2) then
91 p_rec.segment12 :=
92 hr_cgd_shd.g_old_rec.segment12;
93 End If;
94 If (p_rec.segment13 = hr_api.g_varchar2) then
95 p_rec.segment13 :=
96 hr_cgd_shd.g_old_rec.segment13;
97 End If;
98 If (p_rec.segment14 = hr_api.g_varchar2) then
99 p_rec.segment14 :=
100 hr_cgd_shd.g_old_rec.segment14;
101 End If;
102 If (p_rec.segment15 = hr_api.g_varchar2) then
103 p_rec.segment15 :=
104 hr_cgd_shd.g_old_rec.segment15;
105 End If;
106 If (p_rec.segment16 = hr_api.g_varchar2) then
107 p_rec.segment16 :=
108 hr_cgd_shd.g_old_rec.segment16;
109 End If;
110 If (p_rec.segment17 = hr_api.g_varchar2) then
111 p_rec.segment17 :=
112 hr_cgd_shd.g_old_rec.segment17;
113 End If;
114 If (p_rec.segment18 = hr_api.g_varchar2) then
115 p_rec.segment18 :=
116 hr_cgd_shd.g_old_rec.segment18;
117 End If;
118 If (p_rec.segment19 = hr_api.g_varchar2) then
119 p_rec.segment19 :=
120 hr_cgd_shd.g_old_rec.segment19;
121 End If;
122 If (p_rec.segment20 = hr_api.g_varchar2) then
123 p_rec.segment20 :=
124 hr_cgd_shd.g_old_rec.segment20;
125 End If;
126 --
127 hr_utility.set_location(' Leaving:'||l_proc, 10);
128 --
129 End convert_defs;
130 --
131 -- ----------------------------------------------------------------------------
132 -- |-------------------------------< upd_or_sel >-----------------------------|
133 -- ----------------------------------------------------------------------------
134 --
135 procedure upd_or_sel
136 (p_segment1 in varchar2 default hr_api.g_varchar2,
137 p_segment2 in varchar2 default hr_api.g_varchar2,
138 p_segment3 in varchar2 default hr_api.g_varchar2,
139 p_segment4 in varchar2 default hr_api.g_varchar2,
140 p_segment5 in varchar2 default hr_api.g_varchar2,
141 p_segment6 in varchar2 default hr_api.g_varchar2,
142 p_segment7 in varchar2 default hr_api.g_varchar2,
143 p_segment8 in varchar2 default hr_api.g_varchar2,
144 p_segment9 in varchar2 default hr_api.g_varchar2,
145 p_segment10 in varchar2 default hr_api.g_varchar2,
146 p_segment11 in varchar2 default hr_api.g_varchar2,
147 p_segment12 in varchar2 default hr_api.g_varchar2,
148 p_segment13 in varchar2 default hr_api.g_varchar2,
149 p_segment14 in varchar2 default hr_api.g_varchar2,
150 p_segment15 in varchar2 default hr_api.g_varchar2,
151 p_segment16 in varchar2 default hr_api.g_varchar2,
152 p_segment17 in varchar2 default hr_api.g_varchar2,
153 p_segment18 in varchar2 default hr_api.g_varchar2,
154 p_segment19 in varchar2 default hr_api.g_varchar2,
155 p_segment20 in varchar2 default hr_api.g_varchar2,
156 p_id_flex_num in number default hr_api.g_number,
157 p_business_group_id in number,
158 p_cagr_grade_def_id in out nocopy number,
159 p_concatenated_segments out nocopy varchar2
160 ) is
161 --
162 l_proc varchar2(72) := g_package||'upd_or_sel';
163 l_rec hr_cgd_shd.g_rec_type;
164 l_concatenated_segments varchar2(2000);
165 l_segs_changed boolean;
166 --
167 begin
168 hr_utility.set_location('Entering:'||l_proc, 5);
169 --
170 -- Derive if any segments are changing
171 If ((l_rec.segment1 = hr_api.g_varchar2) AND
172 (l_rec.segment2 = hr_api.g_varchar2) AND
173 (l_rec.segment3 = hr_api.g_varchar2) AND
174 (l_rec.segment4 = hr_api.g_varchar2) AND
175 (l_rec.segment5 = hr_api.g_varchar2) AND
176 (l_rec.segment6 = hr_api.g_varchar2) AND
177 (l_rec.segment7 = hr_api.g_varchar2) AND
178 (l_rec.segment8 = hr_api.g_varchar2) AND
179 (l_rec.segment9 = hr_api.g_varchar2) AND
180 (l_rec.segment10 = hr_api.g_varchar2) AND
181 (l_rec.segment11 = hr_api.g_varchar2) AND
182 (l_rec.segment12 = hr_api.g_varchar2) AND
183 (l_rec.segment13 = hr_api.g_varchar2) AND
184 (l_rec.segment14 = hr_api.g_varchar2) AND
185 (l_rec.segment15 = hr_api.g_varchar2) AND
186 (l_rec.segment16 = hr_api.g_varchar2) AND
187 (l_rec.segment17 = hr_api.g_varchar2) AND
188 (l_rec.segment18 = hr_api.g_varchar2) AND
189 (l_rec.segment19 = hr_api.g_varchar2) AND
190 (l_rec.segment20 = hr_api.g_varchar2)) THEN
191 l_segs_changed := true;
192 Else
193 l_segs_changed := false;
194 End if;
195 --
196 -- Do not need to go any further if there is nothing to do.
197 If (p_id_flex_num = hr_api.g_number)
198 AND (l_segs_changed = false) THEN
199 --
200 -- nothing to do
201 -- leave the grade id as it was
202 p_concatenated_segments := null;
203 --
204 ELSE
205 --
206 -- set the client_info
207 --
208 hr_api.validate_bus_grp_id (p_business_group_id);
209 --
210 -- convert args into record format
211 l_rec :=
212 hr_cgd_shd.convert_args (
213 p_cagr_grade_def_id => p_cagr_grade_def_id,
214 p_id_flex_num => p_id_flex_num,
215 p_summary_flag => null,
216 p_enabled_flag => null,
217 p_start_date_active => null,
218 p_end_date_active => null,
219 p_segment1 => p_segment1,
220 p_segment2 => p_segment2,
221 p_segment3 => p_segment3,
222 p_segment4 => p_segment4,
223 p_segment5 => p_segment5,
224 p_segment6 => p_segment6,
225 p_segment7 => p_segment7,
226 p_segment8 => p_segment8,
227 p_segment9 => p_segment9,
228 p_segment10 => p_segment10,
229 p_segment11 => p_segment11,
230 p_segment12 => p_segment12,
231 p_segment13 => p_segment13,
232 p_segment14 => p_segment14,
233 p_segment15 => p_segment15,
234 p_segment16 => p_segment16,
235 p_segment17 => p_segment17,
236 p_segment18 => p_segment18,
237 p_segment19 => p_segment19,
238 p_segment20 => p_segment20
239 );
240 --
241 -- check to see if we are updating a row
242 --
243 if hr_cgd_shd.api_updating
244 (p_cagr_grade_def_id => l_rec.cagr_grade_def_id) then
245 --
246 hr_utility.set_location(l_proc, 10);
247 --
248 -- the current row exists and we have populated the g_old_rec
249 -- we must now build up the new record by converting the
250 -- arguments into a record structure and converting any of the
251 -- system default values
252 --
253 hr_cgd_upd.convert_defs(p_rec => l_rec);
254 else
255 --
256 -- as we are actually doing an insert we need to reset the
257 -- arguments if they are using a system default value
258 -- to null otherwise the segments will have the system default
259 -- values when being inserted
260 --
261 if (l_rec.segment1 = hr_api.g_varchar2) then
262 l_rec.segment1 := null;
263 end if;
264 if (l_rec.segment2 = hr_api.g_varchar2) then
265 l_rec.segment2 := null;
266 end if;
267 if (l_rec.segment3 = hr_api.g_varchar2) then
268 l_rec.segment3 := null;
269 end if;
270 if (l_rec.segment4 = hr_api.g_varchar2) then
271 l_rec.segment4 := null;
272 end if;
273 if (l_rec.segment5 = hr_api.g_varchar2) then
274 l_rec.segment5 := null;
275 end if;
276 if (l_rec.segment6 = hr_api.g_varchar2) then
277 l_rec.segment6 := null;
278 end if;
279 if (l_rec.segment7 = hr_api.g_varchar2) then
280 l_rec.segment7 := null;
281 end if;
282 if (l_rec.segment8 = hr_api.g_varchar2) then
283 l_rec.segment8 := null;
284 end if;
285 if (l_rec.segment9 = hr_api.g_varchar2) then
286 l_rec.segment9 := null;
287 end if;
288 if (l_rec.segment10 = hr_api.g_varchar2) then
289 l_rec.segment10 := null;
290 end if;
291 if (l_rec.segment11 = hr_api.g_varchar2) then
292 l_rec.segment11 := null;
293 end if;
294 if (l_rec.segment12 = hr_api.g_varchar2) then
295 l_rec.segment12 := null;
296 end if;
297 if (l_rec.segment13 = hr_api.g_varchar2) then
298 l_rec.segment13 := null;
299 end if;
300 if (l_rec.segment14 = hr_api.g_varchar2) then
301 l_rec.segment14 := null;
302 end if;
303 if (l_rec.segment15 = hr_api.g_varchar2) then
304 l_rec.segment15 := null;
305 end if;
306 if (l_rec.segment16 = hr_api.g_varchar2) then
307 l_rec.segment16 := null;
308 end if;
309 if (l_rec.segment17 = hr_api.g_varchar2) then
310 l_rec.segment17 := null;
311 end if;
312 if (l_rec.segment18 = hr_api.g_varchar2) then
313 l_rec.segment18 := null;
314 end if;
315 if (l_rec.segment19 = hr_api.g_varchar2) then
316 l_rec.segment19 := null;
317 end if;
318 if (l_rec.segment20 = hr_api.g_varchar2) then
319 l_rec.segment20 := null;
320 end if;
321 if (l_rec.id_flex_num = hr_api.g_number) then
322 l_rec.id_flex_num := null;
323 end if;
324 end if;
325 --
326 hr_utility.set_location(l_proc, 15);
327 --
328 -- call the ins_or_sel process
329 --
330 hr_cgd_ins.ins_or_sel
331 (p_segment1 => l_rec.segment1,
332 p_segment2 => l_rec.segment2,
333 p_segment3 => l_rec.segment3,
334 p_segment4 => l_rec.segment4,
335 p_segment5 => l_rec.segment5,
336 p_segment6 => l_rec.segment6,
337 p_segment7 => l_rec.segment7,
338 p_segment8 => l_rec.segment8,
339 p_segment9 => l_rec.segment9,
340 p_segment10 => l_rec.segment10,
341 p_segment11 => l_rec.segment11,
342 p_segment12 => l_rec.segment12,
343 p_segment13 => l_rec.segment13,
344 p_segment14 => l_rec.segment14,
345 p_segment15 => l_rec.segment15,
346 p_segment16 => l_rec.segment16,
347 p_segment17 => l_rec.segment17,
348 p_segment18 => l_rec.segment18,
349 p_segment19 => l_rec.segment19,
350 p_segment20 => l_rec.segment20,
351 p_id_flex_num => l_rec.id_flex_num,
352 p_cagr_grade_def_id => l_rec.cagr_grade_def_id,
353 p_concatenated_segments => l_concatenated_segments,
354 p_business_group_id => p_business_group_id
355 );
356 --
357 -- set the out arguments
358 --
359 p_cagr_grade_def_id := l_rec.cagr_grade_def_id;
360 p_concatenated_segments := l_concatenated_segments;
361 hr_utility.set_location(' Leaving:'||l_proc, 20);
362 END IF;
363 --
364 end upd_or_sel;
365 end hr_cgd_upd;