DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_ANC_SHD

Source


1 Package Body per_anc_shd as
2 /* $Header: peancrhi.pkb 120.2 2005/10/05 06:19:33 asahay noship $ */
3 --
4 -- ---------------------------------------------------------------------------- --
5 -- |                     Private Global Definitions                           | --
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  per_anc_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_id_flex_num           in  number,
45           p_analysis_criteria_id  out NOCOPY number) is
46   --
47   l_proc          varchar2(72) := g_package||'segment_combination_check';
48   l_discard	  number;
49   --
50   -- the cursor ancsel ensures the id_flex_num must be valid, enabled for
51   -- the id_flex_code 'PEA' and must exist within PER_SPECIAL_INFO_TYPES
52   -- for the business group.
53   --
54   cursor ancsel is
55     select   1
56     from     per_special_info_types pc,
57              fnd_id_flex_structures fs
58     where    fs.id_flex_num           = pc.id_flex_num
59     and      fs.id_flex_code          = 'PEA'
60     and      pc.enabled_flag          = 'Y'
61     and      pc.business_group_id + 0 = p_business_group_id
62     and      pc.id_flex_num           = p_id_flex_num;
63   --
64   -- the cursor ancerrsel1 determines if the id_flex_num is valid
65   -- note: only called when cursor ancsel fails
66   --
67   cursor ancerrsel1 is
68     select 1
69     from   fnd_id_flex_structures fs
70     where  fs.id_flex_num           = p_id_flex_num
71     and    fs.id_flex_code          = 'PEA';
72   --
73   -- the cursor ancerrsel2 determines if the id_flex_num is valid for
74   -- per_special_info_types
75   -- note: only called when cursor ancsel fails
76   --
77   cursor ancerrsel2 is
78     select 1
79     from   per_special_info_types pc
80     where  pc.business_group_id + 0 = p_business_group_id
81     and    pc.id_flex_num           = p_id_flex_num;
82 
83   --
84   -- the cursor kfsel selects the analysis_criteria_id
85   --
86   cursor kfsel is
87     select pac.analysis_criteria_id
88     from   per_analysis_criteria pac
89     where  pac.id_flex_num   = p_id_flex_num
90     and    pac.enabled_flag  = 'Y'
91     and   (pac.segment1      = p_segment1
92     or    (pac.segment1      is null
93     and    p_segment1        is null))
94     and   (pac.segment2      = p_segment2
95     or    (pac.segment2      is null
96     and    p_segment2        is null))
97     and   (pac.segment3      = p_segment3
98     or    (pac.segment3      is null
99     and    p_segment3        is null))
100     and   (pac.segment4      = p_segment4
101     or    (pac.segment4      is null
102     and    p_segment4        is null))
103     and   (pac.segment5      = p_segment5
104     or    (pac.segment5      is null
105     and    p_segment5        is null))
106     and   (pac.segment6      = p_segment6
107     or    (pac.segment6      is null
108     and    p_segment6        is null))
109     and   (pac.segment7      = p_segment7
110     or    (pac.segment7      is null
111     and    p_segment7        is null))
112     and   (pac.segment8      = p_segment8
113     or    (pac.segment8      is null
114     and    p_segment8        is null))
115     and   (pac.segment9      = p_segment9
116     or    (pac.segment9      is null
117     and    p_segment9        is null))
118     and   (pac.segment10     = p_segment10
119     or    (pac.segment10     is null
120     and    p_segment10       is null))
121     and   (pac.segment11     = p_segment11
122     or    (pac.segment11     is null
123     and    p_segment11       is null))
124     and   (pac.segment12     = p_segment12
125     or    (pac.segment12     is null
126     and    p_segment12       is null))
127     and   (pac.segment13     = p_segment13
128     or    (pac.segment13     is null
129     and    p_segment13       is null))
130     and   (pac.segment14     = p_segment14
131     or    (pac.segment14      is null
132     and    p_segment14       is null))
133     and   (pac.segment15      = p_segment15
134     or    (pac.segment15     is null
135     and    p_segment15       is null))
136     and   (pac.segment16     = p_segment16
137     or    (pac.segment16     is null
138     and    p_segment16       is null))
139     and   (pac.segment17     = p_segment17
140     or    (pac.segment17     is null
141     and    p_segment17       is null))
142     and   (pac.segment18     = p_segment18
143     or    (pac.segment18     is null
144     and    p_segment18       is null))
145     and   (pac.segment19     = p_segment19
146     or    (pac.segment19     is null
147     and    p_segment19       is null))
148     and   (pac.segment20     = p_segment20
149     or    (pac.segment20     is null
150     and    p_segment20       is null))
151     and   (pac.segment21     = p_segment21
152     or    (pac.segment21     is null
153     and    p_segment21       is null))
154     and   (pac.segment22     = p_segment22
155     or    (pac.segment22     is null
156     and    p_segment22       is null))
157     and   (pac.segment23     = p_segment23
158     or    (pac.segment23     is null
159     and    p_segment23       is null))
160     and   (pac.segment24     = p_segment24
161     or    (pac.segment24     is null
162     and    p_segment24       is null))
163     and   (pac.segment25     = p_segment25
164     or    (pac.segment25     is null
165     and    p_segment25       is null))
166     and   (pac.segment26     = p_segment26
167     or    (pac.segment26     is null
168     and    p_segment26       is null))
169     and   (pac.segment27     = p_segment27
170     or    (pac.segment27     is null
171     and    p_segment27       is null))
172     and   (pac.segment28     = p_segment28
173     or    (pac.segment28     is null
174     and    p_segment28       is null))
175     and   (pac.segment29     = p_segment29
176     or    (pac.segment29     is null
177     and    p_segment29       is null))
178     and   (pac.segment30     = p_segment30
179     or    (pac.segment30     is null
180     and    p_segment30       is null));
181 --
182 begin
183   hr_utility.set_location('Entering:'||l_proc, 5);
184   --
185   -- ensure that the id_flex_num exists
186   --
187  --
188   hr_api.mandatory_arg_error
189     (p_api_name       => l_proc,
190      p_argument       => 'id_flex_num',
191      p_argument_value => p_id_flex_num);
192   --
193   -- validate the business_group_id
194   --
195   hr_api.validate_bus_grp_id(p_business_group_id);
196 --
197   -- determine if all the segments are null
198   --
199   if (p_segment1  is null  and
200       p_segment2  is null  and
201       p_segment3  is null  and
202       p_segment4  is null  and
203       p_segment5  is null  and
204       p_segment6  is null  and
205       p_segment7  is null  and
206       p_segment8  is null  and
207       p_segment9  is null  and
208       p_segment10 is null  and
209       p_segment11 is null  and
210       p_segment12 is null  and
211       p_segment13 is null  and
212       p_segment14 is null  and
213       p_segment15 is null  and
214       p_segment16 is null  and
215       p_segment17 is null  and
216       p_segment18 is null  and
217       p_segment19 is null  and
218       p_segment20 is null  and
219       p_segment21 is null  and
220       p_segment22 is null  and
221       p_segment23 is null  and
222       p_segment24 is null  and
223       p_segment25 is null  and
224       p_segment26 is null  and
225       p_segment25 is null  and
226       p_segment26 is null  and
227       p_segment27 is null  and
228       p_segment28 is null  and
229       p_segment29 is null  and
230       p_segment30 is null) then
231      --
232      -- as the segments are null set the p_analysis_criteria_id
233      -- explicitly to null.
234      --
235      hr_utility.set_location(l_proc, 10);
236      p_analysis_criteria_id := null;
237 else
238     --
239     -- segments exists therefore validate the id_flex_num
240     --
241 hr_utility.set_location(l_proc, 15);
242     open ancsel;
243     fetch ancsel into l_discard;
244     if ancsel%notfound then
245       close ancsel;
246       --
247       -- the flex structure has not been found therefore we must
248       -- determine the error
249       --
250       open ancerrsel1;
251       fetch ancerrsel1 into l_discard;
252       if ancerrsel1%notfound then
253         close ancerrsel1;
254         hr_utility.set_message(801, 'HR_6039_ALL_CANT_GET_FFIELD');
255         hr_utility.set_message_token('FLEXFIELD_STRUCTURE',
256                                      p_id_flex_num);
257         hr_utility.raise_error;
258       end if;
259       close ancerrsel1;
260       open ancerrsel2;
261       fetch ancerrsel2 into l_discard;
262       if ancerrsel2%notfound then
263       close ancerrsel2;
264         --
265         -- the row does not exist in PER_SPECIAL_INFO_TYPES
266         --
267         hr_utility.set_message(801, 'HR_51114_JBR_SPCIAL_NOT_EXIST');
268         hr_utility.raise_error;
269       end if;
270       close ancerrsel2;
271         --
272         -- the row is not enabled in PER_SPECIAL_INFO_TYPES
273         --
274         hr_utility.set_message(801, 'HR_51115_JBR_SPCIAL_NOT_ENABLE');
275         hr_utility.raise_error;
276     end if;
277     close ancsel;
278     hr_utility.set_location(l_proc, 10);
279     --
280     -- open and execute the partial segment cursor. if no rows are returned
281     -- then p_analysis_criteria_id must be set to -1 (indicating a
282     -- new combination needs to be inserted.
283     --
284     hr_utility.set_location(l_proc, 20);
285     open  kfsel;
286     fetch kfsel into p_analysis_criteria_id;
287     if kfsel%notfound then
288     hr_utility.set_location(l_proc, 25);
289       p_analysis_criteria_id := -1;
290     end if;
291     close kfsel;
292   end if;
293   --
294   hr_utility.set_location(' Leaving:'||l_proc, 30);
295 end segment_combination_check;
296 --
297 -- ----------------------------------------------------------------------------
298 -- |------------------------< return_api_dml_status >-------------------------|
299 -- ----------------------------------------------------------------------------
300 Function return_api_dml_status Return Boolean Is
301 --
302   l_proc 	varchar2(72) := g_package||'return_api_dml_status';
303 --
304 Begin
305   hr_utility.set_location('Entering:'||l_proc, 5);
306   --
307   Return (nvl(g_api_dml, false));
308   --
309   hr_utility.set_location(' Leaving:'||l_proc, 10);
310 End return_api_dml_status;
311 --
312 -- ----------------------------------------------------------------------------
313 -- |---------------------------< constraint_error >---------------------------|
314 -- ----------------------------------------------------------------------------
315 Procedure constraint_error
316             (p_constraint_name in varchar2) Is
317 --
318   l_proc 	varchar2(72) := g_package||'constraint_error';
319 --
320 Begin
321   hr_utility.set_location('Entering:'||l_proc, 5);
322   --
323   If (p_constraint_name = 'PER_ANALYSIS_CRITERIA_PK') Then
324      hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
325      hr_utility.raise_error;
326   Else
327     hr_utility.set_message(801, 'HR_7877_API_INVALID_CONSTRAINT');
328     hr_utility.set_message_token('PROCEDURE', l_proc);
329     hr_utility.set_message_token('CONSTRAINT_NAME', p_constraint_name);
330     hr_utility.raise_error;
331   End If;
332   --
333   hr_utility.set_location(' Leaving:'||l_proc, 10);
334 End constraint_error;
335 --
336 -- ----------------------------------------------------------------------------
337 -- |-----------------------------< api_updating >-----------------------------|
338 -- ----------------------------------------------------------------------------
339 Function api_updating
340   (
341   p_analysis_criteria_id               in number
342   )      Return Boolean Is
343 --
344   --
348     select
345   -- Cursor selects the 'current' row from the HR Schema
346   --
347   Cursor C_Sel1 is
349 		analysis_criteria_id,
350 	request_id,
351 	program_application_id,
352 	program_id,
353 	program_update_date,
354 	id_flex_num,
355 	summary_flag,
356 	enabled_flag,
357 	start_date_active,
358 	end_date_active,
359 	segment1,
360 	segment2,
361 	segment3,
362 	segment4,
363 	segment5,
364 	segment6,
365 	segment7,
366 	segment8,
367 	segment9,
368 	segment10,
369 	segment11,
370 	segment12,
371 	segment13,
372 	segment14,
373 	segment15,
374 	segment16,
375 	segment17,
376 	segment18,
377 	segment19,
378 	segment20,
379 	segment21,
380 	segment22,
381 	segment23,
382 	segment24,
383 	segment25,
384 	segment26,
385 	segment27,
386 	segment28,
387 	segment29,
388 	segment30
389     from	per_analysis_criteria
390     where	analysis_criteria_id = p_analysis_criteria_id;
391 --
392   l_proc	varchar2(72)	:= g_package||'api_updating';
393   l_fct_ret	boolean;
394 --
395 Begin
396   hr_utility.set_location('Entering:'||l_proc, 5);
397   --
398   If (
399 	p_analysis_criteria_id is null
400      ) Then
401     --
402     -- One of the primary key arguments is null therefore we must
403     -- set the returning function value to false
404     --
405     l_fct_ret := false;
406   Else
407     If (
408 	p_analysis_criteria_id = g_old_rec.analysis_criteria_id
409        ) Then
410       hr_utility.set_location(l_proc, 10);
411       --
412       -- The g_old_rec is current therefore we must
413       -- set the returning function to true
414       --
415       l_fct_ret := true;
416     Else
417       --
418       -- Select the current row into g_old_rec
419       --
420       Open C_Sel1;
421       Fetch C_Sel1 Into g_old_rec;
422       If C_Sel1%notfound Then
423         Close C_Sel1;
424         --
425         -- The primary key is invalid therefore we must error
426         --
427         hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
428         hr_utility.raise_error;
429       End If;
430       Close C_Sel1;
431       --
432       hr_utility.set_location(l_proc, 15);
433       l_fct_ret := true;
434     End If;
435   End If;
436   hr_utility.set_location(' Leaving:'||l_proc, 20);
437   Return (l_fct_ret);
438 --
439 End api_updating;
440 --
441 -- ----------------------------------------------------------------------------
442 -- |-----------------------------< convert_args >-----------------------------|
443 -- ----------------------------------------------------------------------------
444 Function convert_args
445 	(
446 	p_analysis_criteria_id          in number,
447 	p_request_id                    in number,
448 	p_program_application_id        in number,
449 	p_program_id                    in number,
450 	p_program_update_date           in date,
451 	p_id_flex_num                   in number,
452 	p_summary_flag                  in varchar2,
453 	p_enabled_flag                  in varchar2,
454 	p_start_date_active             in date,
455 	p_end_date_active               in date,
456 	p_segment1                      in varchar2,
457 	p_segment2                      in varchar2,
458 	p_segment3                      in varchar2,
459 	p_segment4                      in varchar2,
460 	p_segment5                      in varchar2,
461 	p_segment6                      in varchar2,
462 	p_segment7                      in varchar2,
463 	p_segment8                      in varchar2,
464 	p_segment9                      in varchar2,
465 	p_segment10                     in varchar2,
466 	p_segment11                     in varchar2,
467 	p_segment12                     in varchar2,
468 	p_segment13                     in varchar2,
469 	p_segment14                     in varchar2,
470 	p_segment15                     in varchar2,
471 	p_segment16                     in varchar2,
472 	p_segment17                     in varchar2,
473 	p_segment18                     in varchar2,
474 	p_segment19                     in varchar2,
475 	p_segment20                     in varchar2,
476 	p_segment21                     in varchar2,
477 	p_segment22                     in varchar2,
478 	p_segment23                     in varchar2,
479 	p_segment24                     in varchar2,
480 	p_segment25                     in varchar2,
481 	p_segment26                     in varchar2,
482 	p_segment27                     in varchar2,
483 	p_segment28                     in varchar2,
484 	p_segment29                     in varchar2,
485 	p_segment30                     in varchar2
486 	)
487 	Return g_rec_type is
488 --
489   l_rec	  g_rec_type;
490   l_proc  varchar2(72) := g_package||'convert_args';
491 --
492 Begin
493   --
494   hr_utility.set_location('Entering:'||l_proc, 5);
495   --
496   -- Convert arguments into local l_rec structure.
497   --
498   l_rec.analysis_criteria_id             := p_analysis_criteria_id;
499   l_rec.request_id                       := p_request_id;
500   l_rec.program_application_id           := p_program_application_id;
501   l_rec.program_id                       := p_program_id;
502   l_rec.program_update_date              := p_program_update_date;
503   l_rec.id_flex_num                      := p_id_flex_num;
504   l_rec.summary_flag                     := p_summary_flag;
505   l_rec.enabled_flag                     := p_enabled_flag;
506   l_rec.start_date_active                := p_start_date_active;
507   l_rec.end_date_active                  := p_end_date_active;
508   l_rec.segment1                         := p_segment1;
509   l_rec.segment2                         := p_segment2;
510   l_rec.segment3                         := p_segment3;
511   l_rec.segment4                         := p_segment4;
512   l_rec.segment5                         := p_segment5;
513   l_rec.segment6                         := p_segment6;
514   l_rec.segment7                         := p_segment7;
515   l_rec.segment8                         := p_segment8;
516   l_rec.segment9                         := p_segment9;
517   l_rec.segment10                        := p_segment10;
518   l_rec.segment11                        := p_segment11;
519   l_rec.segment12                        := p_segment12;
520   l_rec.segment13                        := p_segment13;
521   l_rec.segment14                        := p_segment14;
522   l_rec.segment15                        := p_segment15;
523   l_rec.segment16                        := p_segment16;
524   l_rec.segment17                        := p_segment17;
525   l_rec.segment18                        := p_segment18;
526   l_rec.segment19                        := p_segment19;
527   l_rec.segment20                        := p_segment20;
528   l_rec.segment21                        := p_segment21;
529   l_rec.segment22                        := p_segment22;
530   l_rec.segment23                        := p_segment23;
531   l_rec.segment24                        := p_segment24;
532   l_rec.segment25                        := p_segment25;
533   l_rec.segment26                        := p_segment26;
534   l_rec.segment27                        := p_segment27;
535   l_rec.segment28                        := p_segment28;
536   l_rec.segment29                        := p_segment29;
537   l_rec.segment30                        := p_segment30;
538   --
539   -- Return the plsql record structure.
540   --
541   hr_utility.set_location(' Leaving:'||l_proc, 10);
542   Return(l_rec);
543 --
544 End convert_args;
545 --
546 end per_anc_shd;