DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_ICX_UPD

Source


1 Package Body hr_icx_upd as
2 /* $Header: hricxrhi.pkb 115.5 2003/10/23 01:44:08 bsubrama noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  hr_icx_upd.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------------------------------< update_dml >------------------------------|
12 -- ----------------------------------------------------------------------------
13 -- {Start Of Comments}
14 --
15 -- Description:
16 --   This procedure controls the actual dml update logic. The processing of
17 --   this procedure is:
18 --   1) Increment the object_version_number by 1 if the object_version_number
19 --      is defined as an attribute for this entity.
20 --   2) To set and unset the g_api_dml status as required (as we are about to
21 --      perform dml).
22 --   3) To update the specified row in the schema using the primary key in
23 --      the predicates.
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 upd
29 --   procedure.
30 --
31 -- In Parameters:
32 --   A Pl/Sql record structre.
33 --
34 -- Post Success:
35 --   The specified row will be updated in the schema.
36 --
37 -- Post Failure:
38 --   On the update dml failure it is important to note that we always reset the
39 --   g_api_dml status to false.
40 --   If a check, unique or parent integrity constraint violation is raised the
41 --   constraint_error procedure will be called.
42 --   If any other error is reported, the error will be raised after the
43 --   g_api_dml status is reset.
44 --
45 -- Developer Implementation Notes:
46 --   The update 'set' attribute list should be modified if any of your
47 --   attributes are not updateable.
48 --
49 -- Access Status:
50 --   Internal Row Handler Use Only.
51 --
52 -- {End Of Comments}
53 -- ----------------------------------------------------------------------------
54 Procedure update_dml
55   (p_rec in out nocopy hr_icx_shd.g_rec_type
56   ) is
57 --
58   l_proc  varchar2(72) := g_package||'update_dml';
59 --
60 Begin
61   hr_utility.set_location('Entering:'||l_proc, 5);
62   p_rec.object_version_number := p_rec.object_version_number + 1;
63   --
64   --
65   --
66   -- Update the hr_item_contexts Row
67   --
68   update hr_item_contexts
69     set
70      item_context_id                 = p_rec.item_context_id
71     ,object_version_number           = p_rec.object_version_number
72     ,id_flex_num                     = p_rec.id_flex_num
73     ,summary_flag                    = p_rec.summary_flag
74     ,enabled_flag                    = p_rec.enabled_flag
75     ,start_date_active               = p_rec.start_date_active
76     ,end_date_active                 = p_rec.end_date_active
77     ,segment1                        = p_rec.segment1
78     ,segment2                        = p_rec.segment2
79     ,segment3                        = p_rec.segment3
80     ,segment4                        = p_rec.segment4
81     ,segment5                        = p_rec.segment5
82     ,segment6                        = p_rec.segment6
83     ,segment7                        = p_rec.segment7
84     ,segment8                        = p_rec.segment8
85     ,segment9                        = p_rec.segment9
86     ,segment10                       = p_rec.segment10
87     ,segment11                       = p_rec.segment11
88     ,segment12                       = p_rec.segment12
89     ,segment13                       = p_rec.segment13
90     ,segment14                       = p_rec.segment14
91     ,segment15                       = p_rec.segment15
92     ,segment16                       = p_rec.segment16
93     ,segment17                       = p_rec.segment17
94     ,segment18                       = p_rec.segment18
95     ,segment19                       = p_rec.segment19
96     ,segment20                       = p_rec.segment20
97     ,segment21                       = p_rec.segment21
98     ,segment22                       = p_rec.segment22
99     ,segment23                       = p_rec.segment23
100     ,segment24                       = p_rec.segment24
101     ,segment25                       = p_rec.segment25
102     ,segment26                       = p_rec.segment26
103     ,segment27                       = p_rec.segment27
104     ,segment28                       = p_rec.segment28
105     ,segment29                       = p_rec.segment29
106     ,segment30                       = p_rec.segment30
107     where item_context_id = p_rec.item_context_id;
108   --
109   --
110   --
111   hr_utility.set_location(' Leaving:'||l_proc, 10);
112 --
113 Exception
114   When hr_api.check_integrity_violated Then
115     -- A check constraint has been violated
116     --
117     hr_icx_shd.constraint_error
118       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
119   When hr_api.parent_integrity_violated Then
120     -- Parent integrity has been violated
121     --
122     hr_icx_shd.constraint_error
123       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
124   When hr_api.unique_integrity_violated Then
125     -- Unique integrity has been violated
126     --
127     hr_icx_shd.constraint_error
128       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
129   When Others Then
130     --
131     Raise;
132 End update_dml;
133 --
134 -- ----------------------------------------------------------------------------
135 -- |------------------------------< pre_update >------------------------------|
136 -- ----------------------------------------------------------------------------
137 -- {Start Of Comments}
138 --
139 -- Description:
140 --   This private procedure contains any processing which is required before
141 --   the update dml.
142 --
143 -- Prerequisites:
144 --   This is an internal procedure which is called from the upd procedure.
145 --
146 -- In Parameters:
147 --   A Pl/Sql record structure.
148 --
149 -- Post Success:
150 --   Processing continues.
151 --
152 -- Post Failure:
153 --   If an error has occurred, an error message and exception wil be raised
154 --   but not handled.
155 --
156 -- Developer Implementation Notes:
157 --   Any pre-processing required before the update dml is issued should be
158 --   coded within this procedure. It is important to note that any 3rd party
159 --   maintenance should be reviewed before placing in this procedure.
160 --
161 -- Access Status:
162 --   Internal Row Handler Use Only.
163 --
164 -- {End Of Comments}
165 -- ----------------------------------------------------------------------------
166 Procedure pre_update
167   (p_rec in hr_icx_shd.g_rec_type
168   ) is
169 --
170   l_proc  varchar2(72) := g_package||'pre_update';
171 --
172 Begin
173   hr_utility.set_location('Entering:'||l_proc, 5);
174   --
175   hr_utility.set_location(' Leaving:'||l_proc, 10);
176 End pre_update;
177 --
178 -- ----------------------------------------------------------------------------
179 -- |-----------------------------< post_update >------------------------------|
180 -- ----------------------------------------------------------------------------
181 -- {Start Of Comments}
182 --
183 -- Description:
184 --   This private procedure contains any processing which is required after the
185 --   update dml.
186 --
187 -- Prerequisites:
188 --   This is an internal procedure which is called from the upd procedure.
189 --
190 -- In Parameters:
191 --   A Pl/Sql record structure.
192 --
193 -- Post Success:
194 --   Processing continues.
195 --
196 -- Post Failure:
197 --   If an error has occurred, an error message and exception will be raised
198 --   but not handled.
199 --
200 -- Developer Implementation Notes:
201 --   Any post-processing required after the update dml is issued should be
202 --   coded within this procedure. It is important to note that any 3rd party
203 --   maintenance should be reviewed before placing in this procedure.
204 --
205 -- Access Status:
206 --   Internal Row Handler Use Only.
207 --
208 -- {End Of Comments}
209 -- ----------------------------------------------------------------------------
210 Procedure post_update
211   (p_effective_date               in date
212   ,p_rec                          in hr_icx_shd.g_rec_type
213   ) is
214 --
215   l_proc  varchar2(72) := g_package||'post_update';
216 --
217 Begin
218   hr_utility.set_location('Entering:'||l_proc, 5);
219   begin
220     --
221     hr_icx_rku.after_update
222       (p_effective_date              => p_effective_date
223       ,p_object_version_number
224       => p_rec.object_version_number
225       ,p_item_context_id
226       => p_rec.item_context_id
227       ,p_id_flex_num
228       => p_rec.id_flex_num
229       ,p_summary_flag
230       => p_rec.summary_flag
231       ,p_enabled_flag
232       => p_rec.enabled_flag
233       ,p_start_date_active
234       => p_rec.start_date_active
235       ,p_end_date_active
236       => p_rec.end_date_active
237       ,p_segment1
238       => p_rec.segment1
239       ,p_segment2
240       => p_rec.segment2
241       ,p_segment3
242       => p_rec.segment3
243       ,p_segment4
244       => p_rec.segment4
245       ,p_segment5
246       => p_rec.segment5
247       ,p_segment6
248       => p_rec.segment6
249       ,p_segment7
250       => p_rec.segment7
251       ,p_segment8
252       => p_rec.segment8
253       ,p_segment9
254       => p_rec.segment9
255       ,p_segment10
256       => p_rec.segment10
257       ,p_segment11
258       => p_rec.segment11
259       ,p_segment12
260       => p_rec.segment12
261       ,p_segment13
262       => p_rec.segment13
263       ,p_segment14
264       => p_rec.segment14
265       ,p_segment15
266       => p_rec.segment15
267       ,p_segment16
268       => p_rec.segment16
269       ,p_segment17
270       => p_rec.segment17
271       ,p_segment18
272       => p_rec.segment18
273       ,p_segment19
274       => p_rec.segment19
275       ,p_segment20
276       => p_rec.segment20
277       ,p_segment21
278       => p_rec.segment21
279       ,p_segment22
280       => p_rec.segment22
281       ,p_segment23
282       => p_rec.segment23
283       ,p_segment24
284       => p_rec.segment24
285       ,p_segment25
286       => p_rec.segment25
287       ,p_segment26
288       => p_rec.segment26
289       ,p_segment27
290       => p_rec.segment27
291       ,p_segment28
292       => p_rec.segment28
293       ,p_segment29
294       => p_rec.segment29
295       ,p_segment30
296       => p_rec.segment30
297       ,p_object_version_number_o
298       => hr_icx_shd.g_old_rec.object_version_number
299       ,p_id_flex_num_o
300       => hr_icx_shd.g_old_rec.id_flex_num
301       ,p_summary_flag_o
302       => hr_icx_shd.g_old_rec.summary_flag
303       ,p_enabled_flag_o
304       => hr_icx_shd.g_old_rec.enabled_flag
305       ,p_start_date_active_o
306       => hr_icx_shd.g_old_rec.start_date_active
307       ,p_end_date_active_o
308       => hr_icx_shd.g_old_rec.end_date_active
309       ,p_segment1_o
310       => hr_icx_shd.g_old_rec.segment1
311       ,p_segment2_o
312       => hr_icx_shd.g_old_rec.segment2
313       ,p_segment3_o
314       => hr_icx_shd.g_old_rec.segment3
315       ,p_segment4_o
316       => hr_icx_shd.g_old_rec.segment4
317       ,p_segment5_o
318       => hr_icx_shd.g_old_rec.segment5
319       ,p_segment6_o
320       => hr_icx_shd.g_old_rec.segment6
321       ,p_segment7_o
322       => hr_icx_shd.g_old_rec.segment7
323       ,p_segment8_o
324       => hr_icx_shd.g_old_rec.segment8
325       ,p_segment9_o
326       => hr_icx_shd.g_old_rec.segment9
327       ,p_segment10_o
328       => hr_icx_shd.g_old_rec.segment10
329       ,p_segment11_o
330       => hr_icx_shd.g_old_rec.segment11
331       ,p_segment12_o
332       => hr_icx_shd.g_old_rec.segment12
333       ,p_segment13_o
334       => hr_icx_shd.g_old_rec.segment13
335       ,p_segment14_o
336       => hr_icx_shd.g_old_rec.segment14
337       ,p_segment15_o
338       => hr_icx_shd.g_old_rec.segment15
339       ,p_segment16_o
340       => hr_icx_shd.g_old_rec.segment16
341       ,p_segment17_o
342       => hr_icx_shd.g_old_rec.segment17
343       ,p_segment18_o
344       => hr_icx_shd.g_old_rec.segment18
345       ,p_segment19_o
346       => hr_icx_shd.g_old_rec.segment19
347       ,p_segment20_o
348       => hr_icx_shd.g_old_rec.segment20
349       ,p_segment21_o
350       => hr_icx_shd.g_old_rec.segment21
351       ,p_segment22_o
352       => hr_icx_shd.g_old_rec.segment22
353       ,p_segment23_o
354       => hr_icx_shd.g_old_rec.segment23
355       ,p_segment24_o
356       => hr_icx_shd.g_old_rec.segment24
357       ,p_segment25_o
358       => hr_icx_shd.g_old_rec.segment25
359       ,p_segment26_o
360       => hr_icx_shd.g_old_rec.segment26
361       ,p_segment27_o
362       => hr_icx_shd.g_old_rec.segment27
363       ,p_segment28_o
364       => hr_icx_shd.g_old_rec.segment28
365       ,p_segment29_o
366       => hr_icx_shd.g_old_rec.segment29
367       ,p_segment30_o
368       => hr_icx_shd.g_old_rec.segment30
369       );
370     --
371   exception
372     --
373     when hr_api.cannot_find_prog_unit then
374       --
375       hr_api.cannot_find_prog_unit_error
376         (p_module_name => 'HR_ITEM_CONTEXTS'
377         ,p_hook_type   => 'AU');
378       --
379   end;
380   --
381   hr_utility.set_location(' Leaving:'||l_proc, 10);
382 End post_update;
383 --
384 -- ----------------------------------------------------------------------------
385 -- |-----------------------------< convert_defs >-----------------------------|
386 -- ----------------------------------------------------------------------------
387 -- {Start Of Comments}
388 --
389 -- Description:
390 --   The Convert_Defs procedure has one very important function:
391 --   It must return the record structure for the row with all system defaulted
392 --   values converted into its corresponding parameter value for update. When
393 --   we attempt to update a row through the Upd process , certain
394 --   parameters can be defaulted which enables flexibility in the calling of
395 --   the upd process (e.g. only attributes which need to be updated need to be
396 --   specified). For the upd process to determine which attributes
397 --   have NOT been specified we need to check if the parameter has a reserved
398 --   system default value. Therefore, for all parameters which have a
399 --   corresponding reserved system default mechanism specified we need to
400 --   check if a system default is being used. If a system default is being
401 --   used then we convert the defaulted value into its corresponding attribute
402 --   value held in the g_old_rec data structure.
403 --
404 -- Prerequisites:
405 --   This private function can only be called from the upd process.
406 --
407 -- In Parameters:
408 --   A Pl/Sql record structure.
409 --
410 -- Post Success:
411 --   The record structure will be returned with all system defaulted parameter
412 --   values converted into its current row attribute value.
413 --
414 -- Post Failure:
415 --   No direct error handling is required within this function. Any possible
416 --   errors within this procedure will be a PL/SQL value error due to
420 --   None.
417 --   conversion of datatypes or data lengths.
418 --
419 -- Developer Implementation Notes:
421 --
422 -- Access Status:
423 --   Internal Row Handler Use Only.
424 --
425 -- {End Of Comments}
426 -- ----------------------------------------------------------------------------
427 Procedure convert_defs
428   (p_rec in out nocopy hr_icx_shd.g_rec_type
429   ) is
430 --
431 Begin
432   --
433   -- We must now examine each argument value in the
434   -- p_rec plsql record structure
435   -- to see if a system default is being used. If a system default
436   -- is being used then we must set to the 'current' argument value.
437   --
438   If (p_rec.id_flex_num = hr_api.g_number) then
439     p_rec.id_flex_num :=
440     hr_icx_shd.g_old_rec.id_flex_num;
441   End If;
442   If (p_rec.summary_flag = hr_api.g_varchar2) then
443     p_rec.summary_flag :=
444     hr_icx_shd.g_old_rec.summary_flag;
445   End If;
446   If (p_rec.enabled_flag = hr_api.g_varchar2) then
447     p_rec.enabled_flag :=
448     hr_icx_shd.g_old_rec.enabled_flag;
449   End If;
450   If (p_rec.start_date_active = hr_api.g_date) then
451     p_rec.start_date_active :=
452     hr_icx_shd.g_old_rec.start_date_active;
453   End If;
454   If (p_rec.end_date_active = hr_api.g_date) then
455     p_rec.end_date_active :=
456     hr_icx_shd.g_old_rec.end_date_active;
457   End If;
458   If (p_rec.segment1 = hr_api.g_varchar2) then
459     p_rec.segment1 :=
460     hr_icx_shd.g_old_rec.segment1;
461   End If;
462   If (p_rec.segment2 = hr_api.g_varchar2) then
463     p_rec.segment2 :=
464     hr_icx_shd.g_old_rec.segment2;
465   End If;
466   If (p_rec.segment3 = hr_api.g_varchar2) then
467     p_rec.segment3 :=
468     hr_icx_shd.g_old_rec.segment3;
469   End If;
470   If (p_rec.segment4 = hr_api.g_varchar2) then
471     p_rec.segment4 :=
472     hr_icx_shd.g_old_rec.segment4;
473   End If;
474   If (p_rec.segment5 = hr_api.g_varchar2) then
475     p_rec.segment5 :=
476     hr_icx_shd.g_old_rec.segment5;
477   End If;
478   If (p_rec.segment6 = hr_api.g_varchar2) then
479     p_rec.segment6 :=
480     hr_icx_shd.g_old_rec.segment6;
481   End If;
482   If (p_rec.segment7 = hr_api.g_varchar2) then
483     p_rec.segment7 :=
484     hr_icx_shd.g_old_rec.segment7;
485   End If;
486   If (p_rec.segment8 = hr_api.g_varchar2) then
487     p_rec.segment8 :=
488     hr_icx_shd.g_old_rec.segment8;
489   End If;
490   If (p_rec.segment9 = hr_api.g_varchar2) then
491     p_rec.segment9 :=
492     hr_icx_shd.g_old_rec.segment9;
493   End If;
494   If (p_rec.segment10 = hr_api.g_varchar2) then
495     p_rec.segment10 :=
496     hr_icx_shd.g_old_rec.segment10;
497   End If;
498   If (p_rec.segment11 = hr_api.g_varchar2) then
499     p_rec.segment11 :=
500     hr_icx_shd.g_old_rec.segment11;
501   End If;
502   If (p_rec.segment12 = hr_api.g_varchar2) then
503     p_rec.segment12 :=
504     hr_icx_shd.g_old_rec.segment12;
505   End If;
506   If (p_rec.segment13 = hr_api.g_varchar2) then
507     p_rec.segment13 :=
508     hr_icx_shd.g_old_rec.segment13;
509   End If;
510   If (p_rec.segment14 = hr_api.g_varchar2) then
511     p_rec.segment14 :=
512     hr_icx_shd.g_old_rec.segment14;
513   End If;
514   If (p_rec.segment15 = hr_api.g_varchar2) then
515     p_rec.segment15 :=
516     hr_icx_shd.g_old_rec.segment15;
517   End If;
518   If (p_rec.segment16 = hr_api.g_varchar2) then
519     p_rec.segment16 :=
520     hr_icx_shd.g_old_rec.segment16;
521   End If;
522   If (p_rec.segment17 = hr_api.g_varchar2) then
523     p_rec.segment17 :=
524     hr_icx_shd.g_old_rec.segment17;
525   End If;
526   If (p_rec.segment18 = hr_api.g_varchar2) then
527     p_rec.segment18 :=
528     hr_icx_shd.g_old_rec.segment18;
529   End If;
530   If (p_rec.segment19 = hr_api.g_varchar2) then
531     p_rec.segment19 :=
532     hr_icx_shd.g_old_rec.segment19;
533   End If;
534   If (p_rec.segment20 = hr_api.g_varchar2) then
535     p_rec.segment20 :=
536     hr_icx_shd.g_old_rec.segment20;
537   End If;
538   If (p_rec.segment21 = hr_api.g_varchar2) then
539     p_rec.segment21 :=
540     hr_icx_shd.g_old_rec.segment21;
541   End If;
542   If (p_rec.segment22 = hr_api.g_varchar2) then
543     p_rec.segment22 :=
544     hr_icx_shd.g_old_rec.segment22;
545   End If;
546   If (p_rec.segment23 = hr_api.g_varchar2) then
547     p_rec.segment23 :=
548     hr_icx_shd.g_old_rec.segment23;
549   End If;
550   If (p_rec.segment24 = hr_api.g_varchar2) then
551     p_rec.segment24 :=
552     hr_icx_shd.g_old_rec.segment24;
553   End If;
554   If (p_rec.segment25 = hr_api.g_varchar2) then
555     p_rec.segment25 :=
556     hr_icx_shd.g_old_rec.segment25;
557   End If;
558   If (p_rec.segment26 = hr_api.g_varchar2) then
559     p_rec.segment26 :=
560     hr_icx_shd.g_old_rec.segment26;
561   End If;
562   If (p_rec.segment27 = hr_api.g_varchar2) then
563     p_rec.segment27 :=
564     hr_icx_shd.g_old_rec.segment27;
565   End If;
566   If (p_rec.segment28 = hr_api.g_varchar2) then
567     p_rec.segment28 :=
571     p_rec.segment29 :=
568     hr_icx_shd.g_old_rec.segment28;
569   End If;
570   If (p_rec.segment29 = hr_api.g_varchar2) then
572     hr_icx_shd.g_old_rec.segment29;
573   End If;
574   If (p_rec.segment30 = hr_api.g_varchar2) then
575     p_rec.segment30 :=
576     hr_icx_shd.g_old_rec.segment30;
577   End If;
578   --
579 End convert_defs;
580 --
581 --
582 -- ----------------------------------------------------------------------------
583 -- |-------------------------------< upd_or_sel >-----------------------------|
584 -- ----------------------------------------------------------------------------
585 --
586 procedure upd_or_sel
587          (p_segment1               in     varchar2 default hr_api.g_varchar2,
588           p_segment2               in     varchar2 default hr_api.g_varchar2,
589           p_segment3               in     varchar2 default hr_api.g_varchar2,
590           p_segment4               in     varchar2 default hr_api.g_varchar2,
591           p_segment5               in     varchar2 default hr_api.g_varchar2,
592           p_segment6               in     varchar2 default hr_api.g_varchar2,
593           p_segment7               in     varchar2 default hr_api.g_varchar2,
594           p_segment8               in     varchar2 default hr_api.g_varchar2,
595           p_segment9               in     varchar2 default hr_api.g_varchar2,
596           p_segment10              in     varchar2 default hr_api.g_varchar2,
597           p_segment11              in     varchar2 default hr_api.g_varchar2,
598           p_segment12              in     varchar2 default hr_api.g_varchar2,
599           p_segment13              in     varchar2 default hr_api.g_varchar2,
600           p_segment14              in     varchar2 default hr_api.g_varchar2,
601           p_segment15              in     varchar2 default hr_api.g_varchar2,
602           p_segment16              in     varchar2 default hr_api.g_varchar2,
603           p_segment17              in     varchar2 default hr_api.g_varchar2,
604           p_segment18              in     varchar2 default hr_api.g_varchar2,
605           p_segment19              in     varchar2 default hr_api.g_varchar2,
606           p_segment20              in     varchar2 default hr_api.g_varchar2,
607           p_segment21              in     varchar2 default hr_api.g_varchar2,
608           p_segment22              in     varchar2 default hr_api.g_varchar2,
609           p_segment23              in     varchar2 default hr_api.g_varchar2,
610           p_segment24              in     varchar2 default hr_api.g_varchar2,
611           p_segment25              in     varchar2 default hr_api.g_varchar2,
612           p_segment26              in     varchar2 default hr_api.g_varchar2,
613           p_segment27              in     varchar2 default hr_api.g_varchar2,
614           p_segment28              in     varchar2 default hr_api.g_varchar2,
615           p_segment29              in     varchar2 default hr_api.g_varchar2,
616           p_segment30              in     varchar2 default hr_api.g_varchar2,
617           p_context_type           in     varchar2 default hr_api.g_varchar2,
618           p_item_context_id        in out nocopy number,
619           p_object_version_number  in out nocopy number,
620           p_concatenated_segments     out nocopy varchar2
621           ) is
622   --
623   CURSOR cur_id_flex
624   IS
625   SELECT id_flex_num
626   FROM fnd_id_flex_structures
627   WHERE id_flex_structure_code = p_context_type
628   AND application_id = 800
629   AND id_flex_code = 'ICX';
630 
631   l_proc          varchar2(72) := g_package||'upd_or_sel';
632   l_rec           hr_icx_shd.g_rec_type;
633   l_concatenated_segments   varchar2(2000);
634   l_segs_changed           boolean;
635   l_id_flex_num number ;
636   l_context_type varchar2(30);
637 --
638 begin
639   hr_utility.set_location('Entering:'||l_proc, 5);
640 
641   -- deriving id_flex_num
642     OPEN cur_id_flex;
643     FETCH cur_id_flex INTO l_id_flex_num;
644     CLOSE cur_id_flex;
645   --
646   -- Derive if any segments are changing
647   If ((l_rec.segment1 = hr_api.g_varchar2) AND
648      (l_rec.segment2 = hr_api.g_varchar2)  AND
649      (l_rec.segment3 = hr_api.g_varchar2)  AND
650      (l_rec.segment4 = hr_api.g_varchar2)  AND
651      (l_rec.segment5 = hr_api.g_varchar2)  AND
652      (l_rec.segment6 = hr_api.g_varchar2)  AND
653      (l_rec.segment7 = hr_api.g_varchar2)  AND
654      (l_rec.segment8 = hr_api.g_varchar2)  AND
655      (l_rec.segment9 = hr_api.g_varchar2)  AND
656      (l_rec.segment10 = hr_api.g_varchar2) AND
657      (l_rec.segment11 = hr_api.g_varchar2) AND
658      (l_rec.segment12 = hr_api.g_varchar2) AND
659      (l_rec.segment13 = hr_api.g_varchar2) AND
660      (l_rec.segment14 = hr_api.g_varchar2) AND
661      (l_rec.segment15 = hr_api.g_varchar2) AND
662      (l_rec.segment16 = hr_api.g_varchar2) AND
663      (l_rec.segment17 = hr_api.g_varchar2) AND
664      (l_rec.segment18 = hr_api.g_varchar2) AND
665      (l_rec.segment19 = hr_api.g_varchar2) AND
666      (l_rec.segment20 = hr_api.g_varchar2) AND
667      (l_rec.segment21 = hr_api.g_varchar2) AND
668      (l_rec.segment22 = hr_api.g_varchar2) AND
669      (l_rec.segment23 = hr_api.g_varchar2) AND
670      (l_rec.segment24 = hr_api.g_varchar2) AND
671      (l_rec.segment25 = hr_api.g_varchar2) AND
672      (l_rec.segment26 = hr_api.g_varchar2) AND
676      (l_rec.segment30 = hr_api.g_varchar2)) THEN
673      (l_rec.segment27 = hr_api.g_varchar2) AND
674      (l_rec.segment28 = hr_api.g_varchar2) AND
675      (l_rec.segment29 = hr_api.g_varchar2) AND
677      l_segs_changed := true;
678    Else
679      l_segs_changed := false;
680    End if;
681    --
682   -- Do not need to go any further if there is nothing to do.
683   If (p_context_type = hr_api.g_varchar2)
684     AND (l_segs_changed = false) THEN
685     --
686     -- nothing to do
687     p_concatenated_segments  := null;
688     --
689   ELSE
690     --
691     -- convert args into record format
692     l_rec :=
693       hr_icx_shd.convert_args (
694        p_item_context_id    => p_item_context_id,
695        p_object_version_number => p_object_version_number,
696        p_id_flex_num        => l_id_flex_num,
697        p_summary_flag       => null,
698        p_enabled_flag       => null,
699        p_start_date_active  => null,
700        p_end_date_active    => null,
701        p_segment1           => p_segment1,
702        p_segment2           => p_segment2,
703        p_segment3           => p_segment3,
704        p_segment4           => p_segment4,
705        p_segment5           => p_segment5,
706        p_segment6           => p_segment6,
707        p_segment7           => p_segment7,
708        p_segment8           => p_segment8,
709        p_segment9           => p_segment9,
710        p_segment10          => p_segment10,
711        p_segment11          => p_segment11,
712        p_segment12          => p_segment12,
713        p_segment13          => p_segment13,
714        p_segment14          => p_segment14,
715        p_segment15          => p_segment15,
716        p_segment16          => p_segment16,
717        p_segment17          => p_segment17,
718        p_segment18          => p_segment18,
719        p_segment19          => p_segment19,
720        p_segment20          => p_segment20,
721        p_segment21          => p_segment21,
722        p_segment22          => p_segment22,
723        p_segment23          => p_segment23,
724        p_segment24          => p_segment24,
725        p_segment25          => p_segment25,
726        p_segment26          => p_segment26,
727        p_segment27          => p_segment27,
728        p_segment28          => p_segment28,
729        p_segment29          => p_segment29,
730        p_segment30          => p_segment30
731        );
732     --
733     -- check to see if we are updating a row
734     --
735     if hr_icx_shd.api_updating
736        (p_item_context_id => l_rec.item_context_id
737        ,p_object_version_number => l_rec.object_version_number
738        ) then
739       --
740       hr_utility.set_location(l_proc, 10);
741       --
742       -- the current row exists and we have populated the g_old_rec
743       -- we must now build up the new record by converting the
744       -- arguments into a record structure and converting any of the
745       -- system default values
746       --
747       convert_defs(l_rec);
748     else
749       --
750       -- as we are actually doing an insert we need to reset the
751       -- arguments if they are using a system default value
752       -- to null otherwise the segments will have the system default
753       -- values when being inserted
754       --
755       if (l_rec.segment1 = hr_api.g_varchar2) then
756         l_rec.segment1 := null;
757       end if;
758     if (l_rec.segment2 = hr_api.g_varchar2) then
759       l_rec.segment2 := null;
760     end if;
761     if (l_rec.segment3 = hr_api.g_varchar2) then
762       l_rec.segment3 := null;
763     end if;
764     if (l_rec.segment4 = hr_api.g_varchar2) then
765       l_rec.segment4 := null;
766     end if;
767     if (l_rec.segment5 = hr_api.g_varchar2) then
768       l_rec.segment5 := null;
769     end if;
770     if (l_rec.segment6 = hr_api.g_varchar2) then
771       l_rec.segment6 := null;
772     end if;
773     if (l_rec.segment7 = hr_api.g_varchar2) then
774       l_rec.segment7 := null;
775     end if;
776     if (l_rec.segment8 = hr_api.g_varchar2) then
777       l_rec.segment8 := null;
778     end if;
779     if (l_rec.segment9 = hr_api.g_varchar2) then
780       l_rec.segment9 := null;
781     end if;
782     if (l_rec.segment10 = hr_api.g_varchar2) then
783       l_rec.segment10 := null;
784     end if;
785     if (l_rec.segment11 = hr_api.g_varchar2) then
786       l_rec.segment11 := null;
787     end if;
788     if (l_rec.segment12 = hr_api.g_varchar2) then
789       l_rec.segment12 := null;
790     end if;
791     if (l_rec.segment13 = hr_api.g_varchar2) then
792       l_rec.segment13 := null;
793     end if;
794     if (l_rec.segment14 = hr_api.g_varchar2) then
795       l_rec.segment14 := null;
796     end if;
797     if (l_rec.segment15 = hr_api.g_varchar2) then
798       l_rec.segment15 := null;
799     end if;
800     if (l_rec.segment16 = hr_api.g_varchar2) then
801       l_rec.segment16 := null;
802     end if;
803     if (l_rec.segment17 = hr_api.g_varchar2) then
804       l_rec.segment17 := null;
805     end if;
809     if (l_rec.segment19 = hr_api.g_varchar2) then
806     if (l_rec.segment18 = hr_api.g_varchar2) then
807       l_rec.segment18 := null;
808     end if;
810       l_rec.segment19 := null;
811     end if;
812     if (l_rec.segment20 = hr_api.g_varchar2) then
813       l_rec.segment20 := null;
814     end if;
815     if (l_rec.segment21 = hr_api.g_varchar2) then
816       l_rec.segment21 := null;
817     end if;
818     if (l_rec.segment22 = hr_api.g_varchar2) then
819       l_rec.segment22 := null;
820     end if;
821     if (l_rec.segment23 = hr_api.g_varchar2) then
822       l_rec.segment23 := null;
823     end if;
824     if (l_rec.segment24 = hr_api.g_varchar2) then
825       l_rec.segment24 := null;
826     end if;
827     if (l_rec.segment25 = hr_api.g_varchar2) then
828       l_rec.segment25 := null;
829     end if;
830     if (l_rec.segment26 = hr_api.g_varchar2) then
831       l_rec.segment26 := null;
832     end if;
833     if (l_rec.segment27 = hr_api.g_varchar2) then
834       l_rec.segment27 := null;
835     end if;
836     if (l_rec.segment28 = hr_api.g_varchar2) then
837       l_rec.segment28 := null;
838     end if;
839     if (l_rec.segment29 = hr_api.g_varchar2) then
840       l_rec.segment29 := null;
841     end if;
842     if (l_rec.segment30 = hr_api.g_varchar2) then
843       l_rec.segment30 := null;
844     end if;
845     if (p_context_type = hr_api.g_varchar2) then
846       l_context_type := null;
847     else
848       l_context_type := p_context_type;
849     end if;
850   end if;
851   --
852   hr_utility.set_location(l_proc, 15);
853   --
854   -- call the ins_or_sel process
855   --
856   hr_icx_ins.ins_or_sel
857     (p_segment1               => l_rec.segment1,
858      p_segment2               => l_rec.segment2,
859      p_segment3               => l_rec.segment3,
860      p_segment4               => l_rec.segment4,
861      p_segment5               => l_rec.segment5,
862      p_segment6               => l_rec.segment6,
863      p_segment7               => l_rec.segment7,
864      p_segment8               => l_rec.segment8,
865      p_segment9               => l_rec.segment9,
866      p_segment10              => l_rec.segment10,
867      p_segment11              => l_rec.segment11,
868      p_segment12              => l_rec.segment12,
869      p_segment13              => l_rec.segment13,
870      p_segment14              => l_rec.segment14,
871      p_segment15              => l_rec.segment15,
872      p_segment16              => l_rec.segment16,
873      p_segment17              => l_rec.segment17,
874      p_segment18              => l_rec.segment18,
875      p_segment19              => l_rec.segment19,
876      p_segment20              => l_rec.segment20,
877      p_segment21              => l_rec.segment21,
878      p_segment22              => l_rec.segment22,
879      p_segment23              => l_rec.segment23,
880      p_segment24              => l_rec.segment24,
881      p_segment25              => l_rec.segment25,
882      p_segment26              => l_rec.segment26,
883      p_segment27              => l_rec.segment27,
884      p_segment28              => l_rec.segment28,
885      p_segment29              => l_rec.segment29,
886      p_segment30              => l_rec.segment30,
887      p_context_type           => l_context_type,
888      p_item_context_id        => l_rec.item_context_id,
889      p_concatenated_segments  => l_concatenated_segments
890      );
891   --
892   -- set the out arguments
893   --
894   -- p_id_flex_num            := l_rec.id_flex_num;
895   p_concatenated_segments  := l_concatenated_segments;
896   hr_utility.set_location(' Leaving:'||l_proc, 20);
897   END IF;
898 --
899 end upd_or_sel;
900 --
901 -- ----------------------------------------------------------------------------
902 -- |---------------------------------< upd >----------------------------------|
903 -- ----------------------------------------------------------------------------
904 Procedure upd
905   (p_effective_date               in date
906   ,p_rec                          in out nocopy hr_icx_shd.g_rec_type
907   ) is
908 --
909   l_proc  varchar2(72) := g_package||'upd';
910 --
911 Begin
912   hr_utility.set_location('Entering:'||l_proc, 5);
913   --
914   -- We must lock the row which we need to update.
915   --
916   hr_icx_shd.lck
917     (p_rec.item_context_id,
918      p_rec.object_version_number
919     );
920   --
921   -- 1. During an update system defaults are used to determine if
922   --    arguments have been defaulted or not. We must therefore
923   --    derive the full record structure values to be updated.
924   --
925   -- 2. Call the supporting update validate operations.
926   --
927   convert_defs(p_rec);
928   hr_icx_bus.update_validate
929      (p_effective_date
930      ,p_rec
931      );
932   --
933   -- Call the supporting pre-update operation
934   --
935   hr_icx_upd.pre_update(p_rec);
936   --
937   -- Update the row.
938   --
939   hr_icx_upd.update_dml(p_rec);
940   --
941   -- Call the supporting post-update operation
942   --
943   hr_icx_upd.post_update
944      (p_effective_date
945      ,p_rec
946      );
947 End upd;
948 --
949 -- ----------------------------------------------------------------------------
950 -- |---------------------------------< upd >----------------------------------|
954   ,p_object_version_number        in out nocopy number
951 -- ----------------------------------------------------------------------------
952 Procedure upd
953   (p_effective_date               in     date
955   ,p_item_context_id              in     number
956   ,p_id_flex_num                  in     number    default hr_api.g_number
957   ,p_summary_flag                 in     varchar2  default hr_api.g_varchar2
958   ,p_enabled_flag                 in     varchar2  default hr_api.g_varchar2
959   ,p_start_date_active            in     date      default hr_api.g_date
960   ,p_end_date_active              in     date      default hr_api.g_date
961   ,p_segment1                     in     varchar2  default hr_api.g_varchar2
962   ,p_segment2                     in     varchar2  default hr_api.g_varchar2
963   ,p_segment3                     in     varchar2  default hr_api.g_varchar2
964   ,p_segment4                     in     varchar2  default hr_api.g_varchar2
965   ,p_segment5                     in     varchar2  default hr_api.g_varchar2
966   ,p_segment6                     in     varchar2  default hr_api.g_varchar2
967   ,p_segment7                     in     varchar2  default hr_api.g_varchar2
968   ,p_segment8                     in     varchar2  default hr_api.g_varchar2
969   ,p_segment9                     in     varchar2  default hr_api.g_varchar2
970   ,p_segment10                    in     varchar2  default hr_api.g_varchar2
971   ,p_segment11                    in     varchar2  default hr_api.g_varchar2
972   ,p_segment12                    in     varchar2  default hr_api.g_varchar2
973   ,p_segment13                    in     varchar2  default hr_api.g_varchar2
974   ,p_segment14                    in     varchar2  default hr_api.g_varchar2
975   ,p_segment15                    in     varchar2  default hr_api.g_varchar2
976   ,p_segment16                    in     varchar2  default hr_api.g_varchar2
977   ,p_segment17                    in     varchar2  default hr_api.g_varchar2
978   ,p_segment18                    in     varchar2  default hr_api.g_varchar2
979   ,p_segment19                    in     varchar2  default hr_api.g_varchar2
980   ,p_segment20                    in     varchar2  default hr_api.g_varchar2
981   ,p_segment21                    in     varchar2  default hr_api.g_varchar2
982   ,p_segment22                    in     varchar2  default hr_api.g_varchar2
983   ,p_segment23                    in     varchar2  default hr_api.g_varchar2
984   ,p_segment24                    in     varchar2  default hr_api.g_varchar2
985   ,p_segment25                    in     varchar2  default hr_api.g_varchar2
989   ,p_segment29                    in     varchar2  default hr_api.g_varchar2
986   ,p_segment26                    in     varchar2  default hr_api.g_varchar2
987   ,p_segment27                    in     varchar2  default hr_api.g_varchar2
988   ,p_segment28                    in     varchar2  default hr_api.g_varchar2
990   ,p_segment30                    in     varchar2  default hr_api.g_varchar2
991   ) is
992 --
993   l_rec   hr_icx_shd.g_rec_type;
994   l_proc  varchar2(72) := g_package||'upd';
995 --
996 Begin
997   hr_utility.set_location('Entering:'||l_proc, 5);
998   --
999   -- Call conversion function to turn arguments into the
1000   -- l_rec structure.
1001   --
1002   l_rec :=
1003   hr_icx_shd.convert_args
1004   (p_item_context_id
1005   ,p_object_version_number
1006   ,p_id_flex_num
1007   ,p_summary_flag
1008   ,p_enabled_flag
1009   ,p_start_date_active
1010   ,p_end_date_active
1011   ,p_segment1
1012   ,p_segment2
1013   ,p_segment3
1014   ,p_segment4
1015   ,p_segment5
1016   ,p_segment6
1017   ,p_segment7
1018   ,p_segment8
1019   ,p_segment9
1020   ,p_segment10
1021   ,p_segment11
1022   ,p_segment12
1023   ,p_segment13
1024   ,p_segment14
1025   ,p_segment15
1026   ,p_segment16
1027   ,p_segment17
1028   ,p_segment18
1029   ,p_segment19
1030   ,p_segment20
1031   ,p_segment21
1032   ,p_segment22
1033   ,p_segment23
1034   ,p_segment24
1035   ,p_segment25
1036   ,p_segment26
1037   ,p_segment27
1038   ,p_segment28
1039   ,p_segment29
1040   ,p_segment30
1041   );
1042   --
1043   -- Having converted the arguments into the
1044   -- plsql record structure we call the corresponding record
1045   -- business process.
1046   --
1047   hr_icx_upd.upd
1048      (p_effective_date
1049      ,l_rec
1050      );
1051   p_object_version_number := l_rec.object_version_number;
1052   --
1053   hr_utility.set_location(' Leaving:'||l_proc, 10);
1054 End upd;
1055 --
1056 end hr_icx_upd;