DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_SCL_SHD

Source


1 Package Body hr_scl_shd as
2 /* $Header: hrsclrhi.pkb 115.3 2002/12/03 08:23:56 raranjan ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  hr_scl_shd.';  -- Global package name
9 -- ----------------------------------------------------------------------------
10 -- |------------------------< segment_combination_check >---------------------|
11 -- ----------------------------------------------------------------------------
12 procedure segment_combination_check
13          (p_segment1               in  varchar2 default null,
14           p_segment2               in  varchar2 default null,
15           p_segment3               in  varchar2 default null,
16           p_segment4               in  varchar2 default null,
17           p_segment5               in  varchar2 default null,
18           p_segment6               in  varchar2 default null,
19           p_segment7               in  varchar2 default null,
20           p_segment8               in  varchar2 default null,
21           p_segment9               in  varchar2 default null,
22           p_segment10              in  varchar2 default null,
23           p_segment11              in  varchar2 default null,
24           p_segment12              in  varchar2 default null,
25           p_segment13              in  varchar2 default null,
26           p_segment14              in  varchar2 default null,
27           p_segment15              in  varchar2 default null,
28           p_segment16              in  varchar2 default null,
29           p_segment17              in  varchar2 default null,
30           p_segment18              in  varchar2 default null,
31           p_segment19              in  varchar2 default null,
32           p_segment20              in  varchar2 default null,
33           p_segment21              in  varchar2 default null,
34           p_segment22              in  varchar2 default null,
35           p_segment23              in  varchar2 default null,
36           p_segment24              in  varchar2 default null,
37           p_segment25              in  varchar2 default null,
38           p_segment26              in  varchar2 default null,
39           p_segment27              in  varchar2 default null,
40           p_segment28              in  varchar2 default null,
41           p_segment29              in  varchar2 default null,
42           p_segment30              in  varchar2 default null,
43           p_business_group_id      in  number,
44           p_soft_coding_keyflex_id out nocopy number,
45           p_concatenated_segments  out nocopy varchar2,
46           p_id_flex_num            out nocopy number) is
47   --
48   l_id_flex_num   hr_soft_coding_keyflex.id_flex_num%type;
49   l_proc          varchar2(72) := g_package||'segment_combination_check';
50   --
51   -- the cursor idsel selects the valid id_flex_num
52   -- (scl keyflex) for the specified business group
53   --
54   cursor idsel is
55     select plr.rule_mode                       id_flex_num
56     from   pay_legislation_rules               plr,
57            per_business_groups                 pbg
58     where  pbg.business_group_id               = p_business_group_id
59     and    plr.legislation_code                = pbg.legislation_code
60     and    plr.rule_type                       = 'S'
61     and    exists
62           (select 1
63            from   fnd_segment_attribute_values fsav
64            where  fsav.id_flex_num             = plr.rule_mode
65            and    fsav.application_id          = 800
66            and    fsav.id_flex_code            = 'SCL'
67            and    fsav.segment_attribute_type  = 'ASSIGNMENT'
68            and    fsav.attribute_value         = 'Y')
69     and    exists
70           (select 1
71            from   pay_legislation_rules        plr2
72            where  plr2.legislation_code        = pbg.legislation_code
73            and    plr2.rule_type               = 'SDL'
74            and    plr2.rule_mode               = 'A') ;
75   --
76   -- the cursor sclsel selects the soft_coding_keyflex_id
77   --
78   cursor sclsel is
79     select scl.soft_coding_keyflex_id,
80            scl.concatenated_segments
81     from   hr_soft_coding_keyflex scl
82     where  scl.id_flex_num   = l_id_flex_num
83     and    scl.enabled_flag  = 'Y'
84     and   (scl.segment1      = p_segment1
85     or    (scl.segment1      is null
86     and    p_segment1        is null))
87     and   (scl.segment2      = p_segment2
88     or    (scl.segment2      is null
89     and    p_segment2        is null))
90     and   (scl.segment3      = p_segment3
91     or    (scl.segment3      is null
92     and    p_segment3        is null))
93     and   (scl.segment4      = p_segment4
94     or    (scl.segment4      is null
95     and    p_segment4        is null))
96     and   (scl.segment5      = p_segment5
97     or    (scl.segment5      is null
98     and    p_segment5        is null))
99     and   (scl.segment6      = p_segment6
100     or    (scl.segment6      is null
101     and    p_segment6        is null))
102     and   (scl.segment7      = p_segment7
103     or    (scl.segment7      is null
104     and    p_segment7        is null))
105     and   (scl.segment8      = p_segment8
106     or    (scl.segment8      is null
107     and    p_segment8        is null))
108     and   (scl.segment9      = p_segment9
109     or    (scl.segment9      is null
110     and    p_segment9        is null))
111     and   (scl.segment10     = p_segment10
112     or    (scl.segment10     is null
113     and    p_segment10       is null))
114     and   (scl.segment11     = p_segment11
115     or    (scl.segment11     is null
116     and    p_segment11       is null))
117     and   (scl.segment12     = p_segment12
118     or    (scl.segment12     is null
119     and    p_segment12       is null))
120     and   (scl.segment13     = p_segment13
121     or    (scl.segment13     is null
122     and    p_segment13       is null))
123     and   (scl.segment14     = p_segment14
124     or    (scl.segment14      is null
125     and    p_segment14       is null))
126     and   (scl.segment15      = p_segment15
127     or    (scl.segment15     is null
128     and    p_segment15       is null))
129     and   (scl.segment16     = p_segment16
130     or    (scl.segment16     is null
131     and    p_segment16       is null))
132     and   (scl.segment17     = p_segment17
133     or    (scl.segment17     is null
134     and    p_segment17       is null))
135     and   (scl.segment18     = p_segment18
136     or    (scl.segment18     is null
137     and    p_segment18       is null))
138     and   (scl.segment19     = p_segment19
139     or    (scl.segment19     is null
140     and    p_segment19       is null))
141     and   (scl.segment20     = p_segment20
142     or    (scl.segment20     is null
143     and    p_segment20       is null))
144     and   (scl.segment21     = p_segment21
145     or    (scl.segment21     is null
146     and    p_segment21       is null))
147     and   (scl.segment22     = p_segment22
148     or    (scl.segment22     is null
149     and    p_segment22       is null))
150     and   (scl.segment23     = p_segment23
151     or    (scl.segment23     is null
152     and    p_segment23       is null))
153     and   (scl.segment24     = p_segment24
154     or    (scl.segment24     is null
155     and    p_segment24       is null))
156     and   (scl.segment25     = p_segment25
157     or    (scl.segment25     is null
158     and    p_segment25       is null))
159     and   (scl.segment26     = p_segment26
160     or    (scl.segment26     is null
161     and    p_segment26       is null))
162     and   (scl.segment27     = p_segment27
163     or    (scl.segment27     is null
164     and    p_segment27       is null))
165     and   (scl.segment28     = p_segment28
166     or    (scl.segment28     is null
167     and    p_segment28       is null))
168     and   (scl.segment29     = p_segment29
169     or    (scl.segment29     is null
170     and    p_segment29       is null))
171     and   (scl.segment30     = p_segment30
172     or    (scl.segment30     is null
173     and    p_segment30       is null));
174 --
175 begin
176   hr_utility.set_location('Entering:'||l_proc, 5);
177   hr_api.validate_bus_grp_id(p_business_group_id);
178   --
179   -- Determine if all the segments are null
180   --
181   if (p_segment1  is null  and
182       p_segment2  is null  and
183       p_segment3  is null  and
184       p_segment4  is null  and
185       p_segment5  is null  and
186       p_segment6  is null  and
187       p_segment7  is null  and
188       p_segment8  is null  and
189       p_segment9  is null  and
190       p_segment10 is null  and
191       p_segment11 is null  and
192       p_segment12 is null  and
193       p_segment13 is null  and
194       p_segment14 is null  and
195       p_segment15 is null  and
196       p_segment16 is null  and
197       p_segment17 is null  and
198       p_segment18 is null  and
199       p_segment19 is null  and
200       p_segment20 is null  and
201       p_segment21 is null  and
202       p_segment22 is null  and
203       p_segment23 is null  and
204       p_segment24 is null  and
205       p_segment25 is null  and
206       p_segment26 is null  and
207       p_segment27 is null  and
208       p_segment28 is null  and
209       p_segment29 is null  and
210       p_segment30 is null) then
211      --
212      -- as the segments are null set the p_id_flex_num
213      -- explicitly to null.
214      --
215      hr_utility.set_location(l_proc, 10);
216      p_id_flex_num            := null;
217      p_soft_coding_keyflex_id := null;
218      p_concatenated_segments  := null;
219   else
220     --
221     -- segments exists therefore select the id_flex_num
222     --
223     hr_utility.set_location(l_proc, 15);
224     open idsel;
225     fetch idsel into l_id_flex_num;
226     if idsel%notfound then
227       close idsel;
228       --
229       -- the flex structure has not been found therefore we must error
230       --
231       hr_utility.set_message(801, 'HR_7384_ASG_INV_KEYFLEX_LINK');
232       hr_utility.raise_error;
233     end if;
234     close idsel;
235     hr_utility.set_location(l_proc, 10);
236     p_id_flex_num := l_id_flex_num;
237     --
238     -- open and execute the partial segment cursor. if no rows are returned
239     -- then p_soft_coding_keyflex_id must be set to -1 (indicating a
240     -- new combination needs to be inserted.
241     --
242     hr_utility.set_location(l_proc, 20);
243     open  sclsel;
244     fetch sclsel into  p_soft_coding_keyflex_id, p_concatenated_segments;
245     if sclsel%notfound then
246       hr_utility.set_location(l_proc, 25);
247       p_soft_coding_keyflex_id := -1;
248       p_concatenated_segments  := null;
249     end if;
250     close sclsel;
251   end if;
252   --
253   --
254   hr_utility.set_location(' Leaving:'||l_proc, 30);
255 end segment_combination_check;
256 --
257 -- ----------------------------------------------------------------------------
258 -- |------------------------< return_api_dml_status >-------------------------|
259 -- ----------------------------------------------------------------------------
260 Function return_api_dml_status Return Boolean Is
261 --
262   l_proc 	varchar2(72) := g_package||'return_api_dml_status';
263 --
264 Begin
265   hr_utility.set_location('Entering:'||l_proc, 5);
266   --
267   Return (nvl(g_api_dml, false));
268   --
269   hr_utility.set_location(' Leaving:'||l_proc, 10);
270 End return_api_dml_status;
271 --
272 -- ----------------------------------------------------------------------------
273 -- |---------------------------< constraint_error >---------------------------|
274 -- ----------------------------------------------------------------------------
275 Procedure constraint_error
276             (p_constraint_name in all_constraints.constraint_name%TYPE) Is
277 --
278   l_proc 	varchar2(72) := g_package||'constraint_error';
279 --
280 Begin
281   hr_utility.set_location('Entering:'||l_proc, 5);
282   --
283   If (p_constraint_name = 'HR_SOFT_CODING_KEYFLEX_PK') Then
284     hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
285     hr_utility.raise_error;
286   Else
287     hr_utility.set_message(801, 'HR_7877_API_INVALID_CONSTRAINT');
288     hr_utility.set_message_token('PROCEDURE', l_proc);
289     hr_utility.set_message_token('CONSTRAINT_NAME', p_constraint_name);
290     hr_utility.raise_error;
291   End If;
292   --
293   hr_utility.set_location(' Leaving:'||l_proc, 10);
294 End constraint_error;
295 --
296 -- ----------------------------------------------------------------------------
297 -- |-----------------------------< api_updating >-----------------------------|
298 -- ----------------------------------------------------------------------------
299 Function api_updating
300   (p_soft_coding_keyflex_id in number) Return Boolean Is
301 --
302   --
303   -- Cursor selects the 'current' row from the HR Schema
304   --
305   Cursor C_Sel1 is
306     select
307 	soft_coding_keyflex_id,
308 	concatenated_segments,
309 	request_id,
310 	program_application_id,
311 	program_id,
312 	program_update_date,
313 	id_flex_num,
314 	summary_flag,
315 	enabled_flag,
316 	start_date_active,
317 	end_date_active,
318 	segment1,
319 	segment2,
320 	segment3,
321 	segment4,
322 	segment5,
323 	segment6,
324 	segment7,
325 	segment8,
326 	segment9,
327 	segment10,
328 	segment11,
329 	segment12,
330 	segment13,
331 	segment14,
332 	segment15,
333 	segment16,
334 	segment17,
335 	segment18,
336 	segment19,
337 	segment20,
338 	segment21,
339 	segment22,
340 	segment23,
341 	segment24,
342 	segment25,
343 	segment26,
344 	segment27,
345 	segment28,
346 	segment29,
347 	segment30
348     from  hr_soft_coding_keyflex
349     where soft_coding_keyflex_id = p_soft_coding_keyflex_id;
350 --
351   l_proc	varchar2(72)	:= g_package||'api_updating';
352   l_fct_ret	boolean;
353 --
354 Begin
355   hr_utility.set_location('Entering:'||l_proc, 5);
356   --
357   If (p_soft_coding_keyflex_id is null) Then
358     --
359     -- One of the primary key arguments is null therefore we must
360     -- set the returning function value to false
361     --
362     l_fct_ret := false;
363   Else
364     If (p_soft_coding_keyflex_id = g_old_rec.soft_coding_keyflex_id) Then
365       hr_utility.set_location(l_proc, 10);
366       --
367       -- The g_old_rec is current therefore we must
368       -- set the returning function to true
369       --
370       l_fct_ret := true;
371     Else
372       --
373       -- Select the current row into g_old_rec
374       --
375       Open C_Sel1;
376       Fetch C_Sel1 Into g_old_rec;
377       If C_Sel1%notfound Then
378         Close C_Sel1;
379         --
380         -- The primary key is invalid therefore we must error
381         --
382         hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
383         hr_utility.raise_error;
384       End If;
385       Close C_Sel1;
386       --
387       hr_utility.set_location(l_proc, 15);
388       l_fct_ret := true;
389     End If;
390   End If;
391   hr_utility.set_location(' Leaving:'||l_proc, 20);
392   Return (l_fct_ret);
393 --
394 End api_updating;
395 --
396 -- ----------------------------------------------------------------------------
397 -- |-----------------------------< convert_args >-----------------------------|
398 -- ----------------------------------------------------------------------------
399 Function convert_args
400 	(
401 	p_soft_coding_keyflex_id        in number,
402 	p_concatenated_segments         in varchar2,
403 	p_request_id                    in number,
404 	p_program_application_id        in number,
405 	p_program_id                    in number,
406 	p_program_update_date           in date,
407 	p_id_flex_num                   in number,
408 	p_summary_flag                  in varchar2,
409 	p_enabled_flag                  in varchar2,
410 	p_start_date_active             in date,
411 	p_end_date_active               in date,
412 	p_segment1                      in varchar2,
413 	p_segment2                      in varchar2,
414 	p_segment3                      in varchar2,
415 	p_segment4                      in varchar2,
416 	p_segment5                      in varchar2,
417 	p_segment6                      in varchar2,
418 	p_segment7                      in varchar2,
419 	p_segment8                      in varchar2,
420 	p_segment9                      in varchar2,
421 	p_segment10                     in varchar2,
422 	p_segment11                     in varchar2,
423 	p_segment12                     in varchar2,
424 	p_segment13                     in varchar2,
425 	p_segment14                     in varchar2,
426 	p_segment15                     in varchar2,
427 	p_segment16                     in varchar2,
428 	p_segment17                     in varchar2,
429 	p_segment18                     in varchar2,
430 	p_segment19                     in varchar2,
431 	p_segment20                     in varchar2,
432 	p_segment21                     in varchar2,
433 	p_segment22                     in varchar2,
434 	p_segment23                     in varchar2,
435 	p_segment24                     in varchar2,
436 	p_segment25                     in varchar2,
437 	p_segment26                     in varchar2,
438 	p_segment27                     in varchar2,
439 	p_segment28                     in varchar2,
440 	p_segment29                     in varchar2,
441 	p_segment30                     in varchar2
442 	)
443 	Return g_rec_type is
444 --
445   l_rec	  g_rec_type;
446   l_proc  varchar2(72) := g_package||'convert_args';
447 --
448 Begin
449   --
450   hr_utility.set_location('Entering:'||l_proc, 5);
451   --
452   -- Convert arguments into local l_rec structure.
453   --
454   l_rec.soft_coding_keyflex_id           := p_soft_coding_keyflex_id;
455   l_rec.concatenated_segments            := p_concatenated_segments;
456   l_rec.request_id                       := p_request_id;
457   l_rec.program_application_id           := p_program_application_id;
458   l_rec.program_id                       := p_program_id;
459   l_rec.program_update_date              := p_program_update_date;
460   l_rec.id_flex_num                      := p_id_flex_num;
461   l_rec.summary_flag                     := p_summary_flag;
462   l_rec.enabled_flag                     := p_enabled_flag;
463   l_rec.start_date_active                := p_start_date_active;
464   l_rec.end_date_active                  := p_end_date_active;
465   l_rec.segment1                         := p_segment1;
466   l_rec.segment2                         := p_segment2;
467   l_rec.segment3                         := p_segment3;
468   l_rec.segment4                         := p_segment4;
469   l_rec.segment5                         := p_segment5;
470   l_rec.segment6                         := p_segment6;
471   l_rec.segment7                         := p_segment7;
472   l_rec.segment8                         := p_segment8;
473   l_rec.segment9                         := p_segment9;
474   l_rec.segment10                        := p_segment10;
475   l_rec.segment11                        := p_segment11;
476   l_rec.segment12                        := p_segment12;
477   l_rec.segment13                        := p_segment13;
478   l_rec.segment14                        := p_segment14;
479   l_rec.segment15                        := p_segment15;
480   l_rec.segment16                        := p_segment16;
481   l_rec.segment17                        := p_segment17;
482   l_rec.segment18                        := p_segment18;
483   l_rec.segment19                        := p_segment19;
484   l_rec.segment20                        := p_segment20;
485   l_rec.segment21                        := p_segment21;
486   l_rec.segment22                        := p_segment22;
487   l_rec.segment23                        := p_segment23;
488   l_rec.segment24                        := p_segment24;
489   l_rec.segment25                        := p_segment25;
490   l_rec.segment26                        := p_segment26;
491   l_rec.segment27                        := p_segment27;
492   l_rec.segment28                        := p_segment28;
493   l_rec.segment29                        := p_segment29;
494   l_rec.segment30                        := p_segment30;
495   --
496   -- Return the plsql record structure.
497   --
498   hr_utility.set_location(' Leaving:'||l_proc, 10);
499   Return(l_rec);
500 --
501 End convert_args;
502 --
503 end hr_scl_shd;