DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_SIT_API

Source


1 Package Body hr_sit_api as
2 /* $Header: pesitapi.pkb 120.2.12010000.2 2008/08/06 09:37:49 ubhat ship $ */
3 --
4 -- Package Variables
5 --
6 g_package  varchar2(33) := '  HR_SIT_API.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |-----------------------------< create_sit >-------------------------------|
10 -- ----------------------------------------------------------------------------
11 --
12 procedure create_sit
13   (p_validate                  in     boolean default false
14   ,p_person_id                 in     number
15   ,p_business_group_id         in     number
16   ,p_id_flex_num               in     number
17   ,p_effective_date            in     date
18   ,p_comments                  in     varchar2 default null
19   ,p_date_from                 in     date     default null
20   ,p_date_to                   in     date     default null
21   ,p_request_id                in     number   default null
22   ,p_program_application_id    in     number   default null
23   ,p_program_id                in     number   default null
24   ,p_program_update_date       in     date     default null
25   ,p_attribute_category        in     varchar2 default null
26   ,p_attribute1                in     varchar2 default null
27   ,p_attribute2                in     varchar2 default null
28   ,p_attribute3                in     varchar2 default null
29   ,p_attribute4                in     varchar2 default null
30   ,p_attribute5                in     varchar2 default null
31   ,p_attribute6                in     varchar2 default null
32   ,p_attribute7                in     varchar2 default null
33   ,p_attribute8                in     varchar2 default null
34   ,p_attribute9                in     varchar2 default null
35   ,p_attribute10               in     varchar2 default null
36   ,p_attribute11               in     varchar2 default null
37   ,p_attribute12               in     varchar2 default null
38   ,p_attribute13               in     varchar2 default null
39   ,p_attribute14               in     varchar2 default null
40   ,p_attribute15               in     varchar2 default null
41   ,p_attribute16               in     varchar2 default null
42   ,p_attribute17               in     varchar2 default null
43   ,p_attribute18               in     varchar2 default null
44   ,p_attribute19               in     varchar2 default null
45   ,p_attribute20               in     varchar2 default null
46   ,p_segment1                  in     varchar2 default null
47   ,p_segment2                  in     varchar2 default null
48   ,p_segment3                  in     varchar2 default null
49   ,p_segment4                  in     varchar2 default null
50   ,p_segment5                  in     varchar2 default null
51   ,p_segment6                  in     varchar2 default null
52   ,p_segment7                  in     varchar2 default null
53   ,p_segment8                  in     varchar2 default null
54   ,p_segment9                  in     varchar2 default null
55   ,p_segment10                 in     varchar2 default null
56   ,p_segment11                 in     varchar2 default null
57   ,p_segment12                 in     varchar2 default null
58   ,p_segment13                 in     varchar2 default null
59   ,p_segment14                 in     varchar2 default null
60   ,p_segment15                 in     varchar2 default null
61   ,p_segment16                 in     varchar2 default null
62   ,p_segment17                 in     varchar2 default null
63   ,p_segment18                 in     varchar2 default null
64   ,p_segment19                 in     varchar2 default null
65   ,p_segment20                 in     varchar2 default null
66   ,p_segment21                 in     varchar2 default null
67   ,p_segment22                 in     varchar2 default null
68   ,p_segment23                 in     varchar2 default null
69   ,p_segment24                 in     varchar2 default null
70   ,p_segment25                 in     varchar2 default null
71   ,p_segment26                 in     varchar2 default null
72   ,p_segment27                 in     varchar2 default null
73   ,p_segment28                 in     varchar2 default null
74   ,p_segment29                 in     varchar2 default null
75   ,p_segment30                 in     varchar2 default null
76   ,p_concat_segments           in     varchar2 default null
77   ,p_analysis_criteria_id      in out nocopy number
78   ,p_person_analysis_id        out nocopy    number
79   ,p_pea_object_version_number out nocopy   number
80   ) is
81   --
82   -- Declare cursors and local variables
83   --
84   l_proc                       varchar2(72) := g_package||'create_sit';
85   l_analysis_criteria_id       per_person_analyses.analysis_criteria_id%TYPE := p_analysis_criteria_id;
86   l_person_analysis_id         per_person_analyses.person_analysis_id%TYPE;
87   l_discard                    number;
88   l_name                       varchar2(700);
89   l_effective_date             date;
90   l_object_version_number      per_person_analyses.object_version_number%TYPE;
91   l_date_from                  per_person_analyses.date_from%TYPE;
92   l_date_to                    per_person_analyses.date_to%TYPE;
93   l_program_update_date        per_person_analyses.program_update_date%TYPE;
94   l_segment1                   varchar2(150) := p_segment1;
95   l_segment2                   varchar2(150) := p_segment2;
96   l_segment3                   varchar2(150) := p_segment3;
97   l_segment4                   varchar2(150) := p_segment4;
98   l_segment5                   varchar2(150) := p_segment5;
99   l_segment6                   varchar2(150) := p_segment6;
100   l_segment7                   varchar2(150) := p_segment7;
101   l_segment8                   varchar2(150) := p_segment8;
102   l_segment9                   varchar2(150) := p_segment9;
103   l_segment10                  varchar2(150) := p_segment10;
104   l_segment11                  varchar2(150) := p_segment11;
105   l_segment12                  varchar2(150) := p_segment12;
106   l_segment13                  varchar2(150) := p_segment13;
107   l_segment14                  varchar2(150) := p_segment14;
108   l_segment15                  varchar2(150) := p_segment15;
109   l_segment16                  varchar2(150) := p_segment16;
110   l_segment17                  varchar2(150) := p_segment17;
111   l_segment18                  varchar2(150) := p_segment18;
112   l_segment19                  varchar2(150) := p_segment19;
113   l_segment20                  varchar2(150) := p_segment20;
114   l_segment21                  varchar2(150) := p_segment21;
115   l_segment22                  varchar2(150) := p_segment22;
116   l_segment23                  varchar2(150) := p_segment23;
117   l_segment24                  varchar2(150) := p_segment24;
118   l_segment25                  varchar2(150) := p_segment25;
119   l_segment26                  varchar2(150) := p_segment26;
120   l_segment27                  varchar2(150) := p_segment27;
121   l_segment28                  varchar2(150) := p_segment28;
122   l_segment29                  varchar2(150) := p_segment29;
123   l_segment30                  varchar2(150) := p_segment30;
124   l_null_ind                   number(1)    := 0;
125   --
126   --
127   cursor csr_bg is
128     select 1
129     from per_business_groups pbg
130     where pbg.business_group_id = p_business_group_id;
131   --
132   -- the cursor ancsel ensures the id_flex_num must be valid, enabled for
133   -- the id_flex_code 'PEA' and must exist within PER_SPECIAL_INFO_TYPES
134   -- for the business group.
135   --
136   cursor ancsel is
137     select   1
138     from     per_special_info_types pc,
139              fnd_id_flex_structures fs
140     where    fs.id_flex_num           = pc.id_flex_num
141     and      fs.id_flex_code          = 'PEA'
142     and      pc.enabled_flag          = 'Y'
143     and      pc.business_group_id + 0 = p_business_group_id
144     and      pc.id_flex_num           = p_id_flex_num;
145   --
146   -- the cursor ancerrsel1 determines if the id_flex_num is valid
147   -- note: only called when cursor ancsel fails
148   --
149   cursor ancerrsel1 is
150     select 1
151     from   fnd_id_flex_structures fs
152     where  fs.id_flex_num           = p_id_flex_num
153     and    fs.id_flex_code          = 'PEA';
154   --
155   -- the cursor ancerrsel2 determines if the id_flex_num is valid for
156   -- per_special_info_types
157   -- note: only called when cursor ancsel fails
158   --
159   cursor ancerrsel2 is
160     select 1
161     from   per_special_info_types pc
162     where  pc.business_group_id + 0 = p_business_group_id
163     and    pc.id_flex_num           = p_id_flex_num;
164   --
165   -- the cursor c1 derives segment values using p_analysis_criteria_id
166   -- if it has a value
167   -- note: only called if p_analysis_criteria_id is not null
168   --
169   cursor c1 is
170     select segment1,
171            segment2,
172            segment3,
173            segment4,
174            segment5,
175            segment6,
176            segment7,
177            segment8,
178            segment9,
179            segment10,
180            segment11,
181            segment12,
182            segment13,
183            segment14,
184            segment15,
185            segment16,
186            segment17,
187            segment18,
188            segment19,
189            segment20,
190            segment21,
191            segment22,
192            segment23,
193            segment24,
194            segment25,
195            segment26,
196            segment27,
197            segment28,
198            segment29,
199            segment30
200     from   per_analysis_criteria
201     where  analysis_criteria_id = l_analysis_criteria_id;
202   --
203 begin
204   hr_utility.set_location('Entering:'|| l_proc, 10);
205   --
206   -- Issue a savepoint
207   --
208   savepoint create_sit;
209   --
210   hr_utility.set_location(l_proc, 20);
211   --
212   -- Truncate date, date_from, date_to and program_update_date values,
213   -- effectively removing time element.
214   --
215   l_effective_date            := trunc(p_effective_date);
216   l_date_from                 := trunc(p_date_from);
217   l_date_to                   := trunc(p_date_to);
218   l_program_update_date       := trunc(p_program_update_date);
219   --
220   -- Check if the p_business_group_id is valid
221   --
222   open csr_bg;
223   fetch csr_bg into l_discard;
224   if csr_bg%notfound then
225     close csr_bg;
226     hr_utility.set_message(801, 'HR_7208_API_BUS_GRP_INVALID');
227     hr_utility.raise_error;
228   end if;
229   close csr_bg;
230   --
231   -- Check if the p_person_id is valid
232   --
233   per_pea_bus.chk_person_id
234     (p_person_id             => p_person_id,
235      p_business_group_id     => p_business_group_id,
236      p_effective_date        => l_effective_date
237     );
238   --
239   -- get segment values if p_analysis_criteria_id has a value
240   --
241   if l_analysis_criteria_id is not null
242   then
243      -- set indicator to show p_criteria_analysis_id did not enter program null
244      --
245      l_null_ind := 1;
246      --
247      open c1;
248         fetch c1 into l_segment1,
249                       l_segment2,
250                       l_segment3,
251                       l_segment4,
252                       l_segment5,
253                       l_segment6,
254                       l_segment7,
255                       l_segment8,
256                       l_segment9,
257                       l_segment10,
258                       l_segment11,
259                       l_segment12,
260                       l_segment13,
261                       l_segment14,
262                       l_segment15,
263                       l_segment16,
264                       l_segment17,
265                       l_segment18,
266                       l_segment19,
267                       l_segment20,
268                       l_segment21,
269                       l_segment22,
270                       l_segment23,
271                       l_segment24,
272                       l_segment25,
273                       l_segment26,
274                       l_segment27,
275                       l_segment28,
276                       l_segment29,
277                       l_segment30;
278      close c1;
279   end if;
280   --
281   begin
282     --
283     -- Start of API User Hook for the before hook of create_sit
284     --
285     hr_sit_bk1.create_sit_b
286       (p_person_id                 => p_person_id
287       ,p_business_group_id         => p_business_group_id
288       ,p_id_flex_num               => p_id_flex_num
289       ,p_effective_date            => l_effective_date
290       ,p_comments                  => p_comments
291       ,p_date_from                 => l_date_from
292       ,p_date_to                   => l_date_to
293       ,p_request_id                => p_request_id
294       ,p_program_application_id    => p_program_application_id
295       ,p_program_id                => p_program_id
296       ,p_program_update_date       => l_program_update_date
297       ,p_attribute_category        => p_attribute_category
298       ,p_attribute1                => p_attribute1
299       ,p_attribute2                => p_attribute2
300       ,p_attribute3                => p_attribute3
301       ,p_attribute4                => p_attribute4
302       ,p_attribute5                => p_attribute5
303       ,p_attribute6                => p_attribute6
304       ,p_attribute7                => p_attribute7
305       ,p_attribute8                => p_attribute8
306       ,p_attribute9                => p_attribute9
307       ,p_attribute10               => p_attribute10
308       ,p_attribute11               => p_attribute11
309       ,p_attribute12               => p_attribute12
310       ,p_attribute13               => p_attribute13
311       ,p_attribute14               => p_attribute14
312       ,p_attribute15               => p_attribute15
313       ,p_attribute16               => p_attribute16
314       ,p_attribute17               => p_attribute17
315       ,p_attribute18               => p_attribute18
316       ,p_attribute19               => p_attribute19
317       ,p_attribute20               => p_attribute20
318       ,p_segment1                  => l_segment1
319       ,p_segment2                  => l_segment2
320       ,p_segment3                  => l_segment3
321       ,p_segment4                  => l_segment4
322       ,p_segment5                  => l_segment5
323       ,p_segment6                  => l_segment6
324       ,p_segment7                  => l_segment7
325       ,p_segment8                  => l_segment8
326       ,p_segment9                  => l_segment9
327       ,p_segment10                 => l_segment10
328       ,p_segment11                 => l_segment10
329       ,p_segment12                 => l_segment10
330       ,p_segment13                 => l_segment13
331       ,p_segment14                 => l_segment14
332       ,p_segment15                 => l_segment15
333       ,p_segment16                 => l_segment16
334       ,p_segment17                 => l_segment17
335       ,p_segment18                 => l_segment18
336       ,p_segment19                 => l_segment19
337       ,p_segment20                 => l_segment20
338       ,p_segment21                 => l_segment21
339       ,p_segment22                 => l_segment22
340       ,p_segment23                 => l_segment23
341       ,p_segment24                 => l_segment24
342       ,p_segment25                 => l_segment25
343       ,p_segment26                 => l_segment26
344       ,p_segment27                 => l_segment27
345       ,p_segment28                 => l_segment28
346       ,p_segment29                 => l_segment29
347       ,p_segment30                 => l_segment30
348       ,p_concat_segments           => p_concat_segments
349       );
350  exception
351     when hr_api.cannot_find_prog_unit then
352       hr_api.cannot_find_prog_unit_error
353         (p_module_name => 'CREATE_SIT'
354         ,p_hook_type   => 'BP'
355         );
356     --
357     -- End of API User Hook for the before hook of create_sit
358     --
359  end;
360     --
361     open ancsel;
362     fetch ancsel into l_discard;
363     if ancsel%notfound then
364       close ancsel;
365       --
366       -- the flex structure has not been found therefore we must
367       -- determine the error
368       --
369       open ancerrsel1;
370       fetch ancerrsel1 into l_discard;
371       if ancerrsel1%notfound then
372         close ancerrsel1;
373         hr_utility.set_message(801, 'HR_6039_ALL_CANT_GET_FFIELD');
374         hr_utility.set_message_token('FLEXFIELD_STRUCTURE',
375                                      p_id_flex_num);
376         hr_utility.raise_error;
377       end if;
378       close ancerrsel1;
379       --
380       open ancerrsel2;
381       fetch ancerrsel2 into l_discard;
382       if ancerrsel2%notfound then
383       close ancerrsel2;
384         --
385         -- the row does not exist in PER_SPECIAL_INFO_TYPES
386         --
387         hr_utility.set_message(801, 'HR_51114_JBR_SPCIAL_NOT_EXIST');
388         hr_utility.raise_error;
389       end if;
390       close ancerrsel2;
391         --
392         -- the row is not enabled in PER_SPECIAL_INFO_TYPES
393         --
394         hr_utility.set_message(801, 'HR_51115_JBR_SPCIAL_NOT_ENABLE');
395         hr_utility.raise_error;
396     end if;
397     close ancsel;
398   --
399   hr_utility.set_location(l_proc, 30);
400   --
401   --  Only call this if p_analysis_criteria_id has no value
402   --
403   if l_analysis_criteria_id is null
404   then
405      --
406      --  Determine the position defintion by calling ins_or_sel
407      --
408      hr_kflex_utility.ins_or_sel_keyflex_comb
409        (p_appl_short_name       => 'PER'
410        ,p_flex_code             => 'PEA'
411        ,p_flex_num              => p_id_flex_num
412        ,p_segment1              => l_segment1
413        ,p_segment2              => l_segment2
414        ,p_segment3              => l_segment3
415        ,p_segment4              => l_segment4
416        ,p_segment5              => l_segment5
417        ,p_segment6              => l_segment6
418        ,p_segment7              => l_segment7
419        ,p_segment8              => l_segment8
420        ,p_segment9              => l_segment9
421        ,p_segment10             => l_segment10
422        ,p_segment11             => l_segment11
423        ,p_segment12             => l_segment12
424        ,p_segment13             => l_segment13
425        ,p_segment14             => l_segment14
426        ,p_segment15             => l_segment15
427        ,p_segment16             => l_segment16
428        ,p_segment17             => l_segment17
429        ,p_segment18             => l_segment18
430        ,p_segment19             => l_segment19
431        ,p_segment20             => l_segment20
432        ,p_segment21             => l_segment21
433        ,p_segment22             => l_segment22
434        ,p_segment23             => l_segment23
435        ,p_segment24             => l_segment24
436        ,p_segment25             => l_segment25
437        ,p_segment26             => l_segment26
438        ,p_segment27             => l_segment27
439        ,p_segment28             => l_segment28
440        ,p_segment29             => l_segment29
441        ,p_segment30             => l_segment30
442        ,p_concat_segments_in    => p_concat_segments
443        ,p_ccid                  => l_analysis_criteria_id
444        ,p_concat_segments_out   => l_name
445        );
446       --
447       hr_utility.set_location(l_proc, 40);
448       --
449   end if;
450   --
451   if l_analysis_criteria_id is not null
452   then
453     --
454     -- insert person_analyses into PER_PERSON_ANALYSES
455     per_pea_ins.ins
456      (p_business_group_id          => p_business_group_id
457      ,p_analysis_criteria_id       => l_analysis_criteria_id
458      ,p_person_id                  => p_person_id
459      ,p_id_flex_num                => p_id_flex_num
460      ,p_effective_date             => l_effective_date
461      ,p_comments                   => p_comments
462      ,p_date_from                  => l_date_from
463      ,p_date_to                    => l_date_to
464      ,p_request_id                 => p_request_id
465      ,p_program_application_id     => p_program_application_id
466      ,p_program_id                 => p_program_id
467      ,p_program_update_date        => l_program_update_date
468      ,p_attribute_category         => p_attribute_category
469      ,p_attribute1                 => p_attribute1
470      ,p_attribute2                 => p_attribute2
471      ,p_attribute3                 => p_attribute3
472      ,p_attribute4                 => p_attribute4
473      ,p_attribute5                 => p_attribute5
474      ,p_attribute6                 => p_attribute6
475      ,p_attribute7                 => p_attribute7
476      ,p_attribute8                 => p_attribute8
477      ,p_attribute9                 => p_attribute9
478      ,p_attribute10                => p_attribute10
479      ,p_attribute11                => p_attribute11
480      ,p_attribute12                => p_attribute12
481      ,p_attribute13                => p_attribute13
482      ,p_attribute14                => p_attribute14
483      ,p_attribute15                => p_attribute15
484      ,p_attribute16                => p_attribute16
485      ,p_attribute17                => p_attribute17
486      ,p_attribute18                => p_attribute18
487      ,p_attribute19                => p_attribute19
488      ,p_attribute20                => p_attribute20
489      ,p_object_version_number      => l_object_version_number
490      ,p_person_analysis_id         => l_person_analysis_id
491      );
492   end if;
493   hr_utility.set_location(l_proc, 50);
494   --
495   -- Call After Process User Hook
496   --
497   begin
498     hr_sit_bk1.create_sit_a
499       (p_person_id                     => p_person_id
500       ,p_business_group_id             => p_business_group_id
501       ,p_id_flex_num                   => p_id_flex_num
502       ,p_effective_date                => l_effective_date
503       ,p_comments                      => p_comments
504       ,p_date_from                     => l_date_from
505       ,p_date_to                       => l_date_to
506       ,p_request_id                    => p_request_id
507       ,p_program_application_id        => p_program_application_id
508       ,p_program_id                    => p_program_id
509       ,p_program_update_date           => l_program_update_date
510       ,p_attribute_category            => p_attribute_category
511       ,p_attribute1                    => p_attribute1
512       ,p_attribute2                    => p_attribute2
513       ,p_attribute3                    => p_attribute3
514       ,p_attribute4                    => p_attribute4
515       ,p_attribute5                    => p_attribute5
516       ,p_attribute6                    => p_attribute6
517       ,p_attribute7                    => p_attribute7
518       ,p_attribute8                    => p_attribute8
519       ,p_attribute9                    => p_attribute9
520       ,p_attribute10                   => p_attribute10
521       ,p_attribute11                   => p_attribute11
522       ,p_attribute12                   => p_attribute12
523       ,p_attribute13                   => p_attribute13
524       ,p_attribute14                   => p_attribute14
525       ,p_attribute15                   => p_attribute15
526       ,p_attribute16                   => p_attribute16
527       ,p_attribute17                   => p_attribute17
528       ,p_attribute18                   => p_attribute18
529       ,p_attribute19                   => p_attribute19
530       ,p_attribute20                   => p_attribute20
531       ,p_segment1                      => l_segment1
532       ,p_segment2                      => l_segment2
533       ,p_segment3                      => l_segment3
534       ,p_segment4                      => l_segment4
535       ,p_segment5                      => l_segment5
536       ,p_segment6                      => l_segment6
537       ,p_segment7                      => l_segment7
538       ,p_segment8                      => l_segment8
539       ,p_segment9                      => l_segment9
540       ,p_segment10                     => l_segment10
541       ,p_segment11                     => l_segment11
542       ,p_segment12                     => l_segment12
543       ,p_segment13                     => l_segment13
544       ,p_segment14                     => l_segment14
545       ,p_segment15                     => l_segment15
546       ,p_segment16                     => l_segment16
547       ,p_segment17                     => l_segment17
548       ,p_segment18                     => l_segment18
549       ,p_segment19                     => l_segment19
550       ,p_segment20                     => l_segment20
551       ,p_segment21                     => l_segment21
552       ,p_segment22                     => l_segment22
553       ,p_segment23                     => l_segment23
554       ,p_segment24                     => l_segment24
555       ,p_segment25                     => l_segment25
556       ,p_segment26                     => l_segment26
557       ,p_segment27                     => l_segment27
558       ,p_segment28                     => l_segment28
559       ,p_segment29                     => l_segment29
560       ,p_segment30                     => l_segment30
561       ,p_concat_segments               => p_concat_segments
562       ,p_analysis_criteria_id          => l_analysis_criteria_id
563       ,p_person_analysis_id            => l_person_analysis_id
564       ,p_pea_object_version_number     => l_object_version_number
565       );
566   exception
567     when hr_api.cannot_find_prog_unit then
568       hr_api.cannot_find_prog_unit_error
569         (p_module_name => 'CREATE_SIT'
570         ,p_hook_type   => 'AP'
571         );
572     --
573     -- End of API User Hook for the after hook of create_sit
574     --
575   end;
576   --
577   hr_utility.set_location(l_proc, 70);
578   --
579   if p_validate then
580     raise hr_api.validate_enabled;
581   end if;
582   --
583   hr_utility.set_location(l_proc, 75);
584   --
585   -- Set OUT parameters
586   --
587   if l_null_ind = 1
588   then
589      p_person_analysis_id        := l_person_analysis_id;
590      p_pea_object_version_number := l_object_version_number;
591   else
592      p_analysis_criteria_id      := l_analysis_criteria_id;
593      p_person_analysis_id        := l_person_analysis_id;
594      p_pea_object_version_number := l_object_version_number;
595   end if;
596   --
597   hr_utility.set_location(' Leaving:'||l_proc, 80);
598 exception
599   when hr_api.validate_enabled then
600     --
601     -- As the Validate_Enabled exception has been raised
602     -- we must rollback to the savepoint
603     --
604     ROLLBACK TO create_sit;
605     --
606     -- Set OUT parameters to null
607     --
608   if l_null_ind = 1
609   then
610      p_person_analysis_id        := null;
611      p_pea_object_version_number := null;
612   else
613      p_analysis_criteria_id      := null;
614      p_person_analysis_id        := null;
615      p_pea_object_version_number := null;
616   end if;
617   --
618   hr_utility.set_location(' Leaving:'||l_proc, 90);
619   --
620   when others then
621   --
622   -- A validation or unexpected error has occured
623   --
624   -- Added as part of the fix to bug 632479
625   --
626   p_analysis_criteria_id      := l_analysis_criteria_id;
627   p_person_analysis_id        := null;
628   p_pea_object_version_number := null;
629   ROLLBACK TO create_sit;
630   --
631   hr_utility.set_location(' Leaving:'||l_proc, 100);
632   --
633   raise;
634   --
635 end create_sit;
636 --
637 -- ----------------------------------------------------------------------------
638 -- |-----------------------------< update_sit >-------------------------------|
639 -- ----------------------------------------------------------------------------
640 --
641 procedure update_sit
642   (p_validate                  in     boolean default false
643   ,p_person_analysis_id        in     number
644   ,p_pea_object_version_number in out nocopy number
645   ,p_comments                  in     varchar2 default hr_api.g_varchar2
646   ,p_date_from                 in     date     default hr_api.g_date
647   ,p_date_to                   in     date     default hr_api.g_date
648   ,p_request_id                in     number   default hr_api.g_number
649   ,p_program_application_id    in     number   default hr_api.g_number
650   ,p_program_id                in     number   default hr_api.g_number
651   ,p_program_update_date       in     date     default hr_api.g_date
652   ,p_attribute_category        in     varchar2 default hr_api.g_varchar2
653   ,p_attribute1                in     varchar2 default hr_api.g_varchar2
654   ,p_attribute2                in     varchar2 default hr_api.g_varchar2
655   ,p_attribute3                in     varchar2 default hr_api.g_varchar2
656   ,p_attribute4                in     varchar2 default hr_api.g_varchar2
657   ,p_attribute5                in     varchar2 default hr_api.g_varchar2
658   ,p_attribute6                in     varchar2 default hr_api.g_varchar2
659   ,p_attribute7                in     varchar2 default hr_api.g_varchar2
660   ,p_attribute8                in     varchar2 default hr_api.g_varchar2
661   ,p_attribute9                in     varchar2 default hr_api.g_varchar2
662   ,p_attribute10               in     varchar2 default hr_api.g_varchar2
663   ,p_attribute11               in     varchar2 default hr_api.g_varchar2
664   ,p_attribute12               in     varchar2 default hr_api.g_varchar2
665   ,p_attribute13               in     varchar2 default hr_api.g_varchar2
666   ,p_attribute14               in     varchar2 default hr_api.g_varchar2
667   ,p_attribute15               in     varchar2 default hr_api.g_varchar2
668   ,p_attribute16               in     varchar2 default hr_api.g_varchar2
669   ,p_attribute17               in     varchar2 default hr_api.g_varchar2
670   ,p_attribute18               in     varchar2 default hr_api.g_varchar2
671   ,p_attribute19               in     varchar2 default hr_api.g_varchar2
672   ,p_attribute20               in     varchar2 default hr_api.g_varchar2
673   ,p_segment1                  in     varchar2 default hr_api.g_varchar2
674   ,p_segment2                  in     varchar2 default hr_api.g_varchar2
675   ,p_segment3                  in     varchar2 default hr_api.g_varchar2
676   ,p_segment4                  in     varchar2 default hr_api.g_varchar2
677   ,p_segment5                  in     varchar2 default hr_api.g_varchar2
678   ,p_segment6                  in     varchar2 default hr_api.g_varchar2
679   ,p_segment7                  in     varchar2 default hr_api.g_varchar2
680   ,p_segment8                  in     varchar2 default hr_api.g_varchar2
681   ,p_segment9                  in     varchar2 default hr_api.g_varchar2
682   ,p_segment10                 in     varchar2 default hr_api.g_varchar2
683   ,p_segment11                 in     varchar2 default hr_api.g_varchar2
684   ,p_segment12                 in     varchar2 default hr_api.g_varchar2
685   ,p_segment13                 in     varchar2 default hr_api.g_varchar2
686   ,p_segment14                 in     varchar2 default hr_api.g_varchar2
687   ,p_segment15                 in     varchar2 default hr_api.g_varchar2
688   ,p_segment16                 in     varchar2 default hr_api.g_varchar2
689   ,p_segment17                 in     varchar2 default hr_api.g_varchar2
690   ,p_segment18                 in     varchar2 default hr_api.g_varchar2
691   ,p_segment19                 in     varchar2 default hr_api.g_varchar2
692   ,p_segment20                 in     varchar2 default hr_api.g_varchar2
693   ,p_segment21                 in     varchar2 default hr_api.g_varchar2
694   ,p_segment22                 in     varchar2 default hr_api.g_varchar2
695   ,p_segment23                 in     varchar2 default hr_api.g_varchar2
696   ,p_segment24                 in     varchar2 default hr_api.g_varchar2
697   ,p_segment25                 in     varchar2 default hr_api.g_varchar2
698   ,p_segment26                 in     varchar2 default hr_api.g_varchar2
699   ,p_segment27                 in     varchar2 default hr_api.g_varchar2
700   ,p_segment28                 in     varchar2 default hr_api.g_varchar2
701   ,p_segment29                 in     varchar2 default hr_api.g_varchar2
702   ,p_segment30                 in     varchar2 default hr_api.g_varchar2
703   ,p_concat_segments           in     varchar2 default hr_api.g_varchar2
704   ,p_analysis_criteria_id      in out nocopy number
705   ) is
706   --
707   --
708   l_proc                       varchar2(72) := g_package||'update_sit';
709   l_analysis_criteria_id       per_person_analyses.analysis_criteria_id%TYPE := p_analysis_criteria_id;
710   l_object_version_number      per_person_analyses.object_version_number%TYPE;
711   l_pea_object_version_number      per_person_analyses.object_version_number%TYPE := p_pea_object_version_number;
712   l_id_flex_num                per_person_analyses.id_flex_num%TYPE;
713   l_name                       varchar2(700);
714   l_business_group_id          per_person_analyses.business_group_id%TYPE;
715   l_api_updating               boolean;
716   l_date_from                  per_person_analyses.date_from%TYPE;
717   l_date_to                    per_person_analyses.date_to%TYPE;
718   l_program_update_date        per_person_analyses.program_update_date%TYPE;
719   l_segment1                   varchar2(150) := p_segment1;
720   l_segment2                   varchar2(150) := p_segment2;
721   l_segment3                   varchar2(150) := p_segment3;
722   l_segment4                   varchar2(150) := p_segment4;
723   l_segment5                   varchar2(150) := p_segment5;
724   l_segment6                   varchar2(150) := p_segment6;
725   l_segment7                   varchar2(150) := p_segment7;
726   l_segment8                   varchar2(150) := p_segment8;
727   l_segment9                   varchar2(150) := p_segment9;
728   l_segment10                  varchar2(150) := p_segment10;
729   l_segment11                  varchar2(150) := p_segment11;
730   l_segment12                  varchar2(150) := p_segment12;
731   l_segment13                  varchar2(150) := p_segment13;
732   l_segment14                  varchar2(150) := p_segment14;
733   l_segment15                  varchar2(150) := p_segment15;
734   l_segment16                  varchar2(150) := p_segment16;
735   l_segment17                  varchar2(150) := p_segment17;
736   l_segment18                  varchar2(150) := p_segment18;
737   l_segment19                  varchar2(150) := p_segment19;
738   l_segment20                  varchar2(150) := p_segment20;
739   l_segment21                  varchar2(150) := p_segment21;
740   l_segment22                  varchar2(150) := p_segment22;
741   l_segment23                  varchar2(150) := p_segment23;
742   l_segment24                  varchar2(150) := p_segment24;
743   l_segment25                  varchar2(150) := p_segment25;
744   l_segment26                  varchar2(150) := p_segment26;
745   l_segment27                  varchar2(150) := p_segment27;
746   l_segment28                  varchar2(150) := p_segment28;
747   l_segment29                  varchar2(150) := p_segment29;
748   l_segment30                  varchar2(150) := p_segment30;
749   l_null_ind                   number(1)    := 0;
750   --
751   -- Declare cursors and local variables
752   --
753   -- the cursor c1 derives segment values using p_analysis_criteria_id if
754   -- it has a value
755   -- note: only called if p_analysis_criteria_id is not null
756   --
757   cursor c1 is
758     select segment1,
759            segment2,
760            segment3,
761            segment4,
762            segment5,
763            segment6,
764            segment7,
765            segment8,
766            segment9,
767            segment10,
768            segment11,
769            segment12,
770            segment13,
771            segment14,
772            segment15,
773            segment16,
774            segment17,
775            segment18,
776            segment19,
777            segment20,
778            segment21,
779            segment22,
780            segment23,
781            segment24,
782            segment25,
783            segment26,
784            segment27,
785            segment28,
786            segment29,
787            segment30
788     from   per_analysis_criteria
789     where  analysis_criteria_id = l_analysis_criteria_id;
790   --
791   --
792   -- Cursor to select the id_flex_num required for the keyflex utility.
793   --
794   cursor c2 is
795     select id_flex_num
796     from   per_person_analyses
797     where  person_analysis_id = p_person_analysis_id;
798   --
799   --
800   begin
801   hr_utility.set_location('Entering:'|| l_proc, 10);
802   --
803   -- Issue a savepoint
804   --
805   savepoint update_sit;
806   --
807   hr_utility.set_location(l_proc, 20);
808   --
809   -- Truncate date, date_from, date_to and program_update_date values,
810   -- effectively removing time element.
811   --
812   l_date_from                 := trunc(p_date_from);
813   l_date_to                   := trunc(p_date_to);
814   l_program_update_date       := trunc(p_program_update_date);
815   l_object_version_number     := p_pea_object_version_number;
816   --
817   if l_analysis_criteria_id is not null
818   then
819      l_null_ind := 1;
820      open c1;
821         fetch c1 into l_segment1,
822                       l_segment2,
823                       l_segment3,
824                       l_segment4,
825                       l_segment5,
826                       l_segment6,
827                       l_segment7,
828                       l_segment8,
829                       l_segment9,
830                       l_segment10,
831                       l_segment11,
832                       l_segment12,
833                       l_segment13,
834                       l_segment14,
835                       l_segment15,
836                       l_segment16,
837                       l_segment17,
838                       l_segment18,
839                       l_segment19,
840                       l_segment20,
841                       l_segment21,
842                       l_segment22,
843                       l_segment23,
844                       l_segment24,
845                       l_segment25,
846                       l_segment26,
847                       l_segment27,
848                       l_segment28,
849                       l_segment29,
850                       l_segment30;
851      close c1;
852   END IF;
853   --
854   -- Call Before Process User Hook
855   --
856   begin
857     hr_sit_bk2.update_sit_b
858       (p_person_analysis_id        => p_person_analysis_id
859       ,p_pea_object_version_number => p_pea_object_version_number
860       ,p_comments                  => p_comments
861       ,p_date_from                 => l_date_from
862       ,p_date_to                   => l_date_to
863       ,p_request_id                => p_request_id
864       ,p_program_application_id    => p_program_application_id
865       ,p_program_id                => p_program_id
866       ,p_program_update_date       => l_program_update_date
867       ,p_attribute_category        => p_attribute_category
868       ,p_attribute1                => p_attribute1
869       ,p_attribute2                => p_attribute2
870       ,p_attribute3                => p_attribute3
871       ,p_attribute4                => p_attribute4
872       ,p_attribute5                => p_attribute5
873       ,p_attribute6                => p_attribute6
874       ,p_attribute7                => p_attribute7
875       ,p_attribute8                => p_attribute8
876       ,p_attribute9                => p_attribute9
877       ,p_attribute10               => p_attribute10
878       ,p_attribute11               => p_attribute11
879       ,p_attribute12               => p_attribute12
880       ,p_attribute13               => p_attribute13
881       ,p_attribute14               => p_attribute14
882       ,p_attribute15               => p_attribute15
883       ,p_attribute16               => p_attribute16
884       ,p_attribute17               => p_attribute17
885       ,p_attribute18               => p_attribute18
886       ,p_attribute19               => p_attribute19
887       ,p_attribute20               => p_attribute20
888       ,p_segment1                  => l_segment1
889       ,p_segment2                  => l_segment2
890       ,p_segment3                  => l_segment3
891       ,p_segment4                  => l_segment4
892       ,p_segment5                  => l_segment5
893       ,p_segment6                  => l_segment6
894       ,p_segment7                  => l_segment7
895       ,p_segment8                  => l_segment8
896       ,p_segment9                  => l_segment9
897       ,p_segment10                 => l_segment10
898       ,p_segment11                 => l_segment11
899       ,p_segment12                 => l_segment12
900       ,p_segment13                 => l_segment13
901       ,p_segment14                 => l_segment14
902       ,p_segment15                 => l_segment15
903       ,p_segment16                 => l_segment16
904       ,p_segment17                 => l_segment17
905       ,p_segment18                 => l_segment18
906       ,p_segment19                 => l_segment19
907       ,p_segment20                 => l_segment20
908       ,p_segment21                 => l_segment21
909       ,p_segment22                 => l_segment22
910       ,p_segment23                 => l_segment23
911       ,p_segment24                 => l_segment24
912       ,p_segment25                 => l_segment25
913       ,p_segment26                 => l_segment26
914       ,p_segment27                 => l_segment27
915       ,p_segment28                 => l_segment28
916       ,p_segment29                 => l_segment29
917       ,p_segment30                 => l_segment30
918       ,p_concat_segments           => p_concat_segments
919       );
920   exception
921     when hr_api.cannot_find_prog_unit then
922       hr_api.cannot_find_prog_unit_error
923         (p_module_name => 'UPDATE_SIT'
924         ,p_hook_type   => 'BP'
925         );
926     --
927     -- End of API User Hook for the before hook of update_position
928     --
929   end;
930   --
931   open c2;
932     fetch c2 into l_id_flex_num;
933     if c2%NOTFOUND then
934       --
935       close c2;
936       -- the row is not enabled in PER_SPECIAL_INFO_TYPES
937       --
938       hr_utility.set_message(800, 'PER_52508_PEA_INV_FLEX');
939       hr_utility.raise_error;
940       --
941     end if;
942   close c2;
943   --
944   hr_utility.set_location(l_proc, 30);
945   --
946   --
947   -- Retrieve Current person analysis Details from person_analyses
948   --
949   l_api_updating := per_pea_shd.api_updating
950     (p_person_analysis_id    => p_person_analysis_id
951     ,p_object_version_number => p_pea_object_version_number);
952   --
953   hr_utility.set_location(l_proc, 40);
954   --
955   if not l_api_updating then
956      hr_utility.set_location(l_proc, 50);
957      --
958      -- As this an updating API, the person_analysis_id must exist.
959      --
960      hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
961      hr_utility.raise_error;
962   else
963      hr_utility.set_location(l_proc, 60);
964      l_id_flex_num            := per_pea_shd.g_old_rec.id_flex_num;
965      l_business_group_id      := per_pea_shd.g_old_rec.business_group_id;
966   end if;
967   --
968   hr_utility.set_location(l_proc, 70);
969   --
970   -- update analysis criteria in PER_ANALYSIS_CRITERIA
971   --
972   --  Determine the position defintion by calling upd_or_sel
973   --
974   if l_analysis_criteria_id is null
975   then
976      --
977      l_analysis_criteria_id := per_pea_shd.g_old_rec.analysis_criteria_id;
978      --
979      hr_kflex_utility.upd_or_sel_keyflex_comb
980        (p_appl_short_name       => 'PER'
981        ,p_flex_code             => 'PEA'
982        ,p_flex_num              => l_id_flex_num
983        ,p_segment1              => l_segment1
984        ,p_segment2              => l_segment2
985        ,p_segment3              => l_segment3
986        ,p_segment4              => l_segment4
987        ,p_segment5              => l_segment5
988        ,p_segment6              => l_segment6
989        ,p_segment7              => l_segment7
990        ,p_segment8              => l_segment8
991        ,p_segment9              => l_segment9
992        ,p_segment10             => l_segment10
993        ,p_segment11             => l_segment11
994        ,p_segment12             => l_segment12
995        ,p_segment13             => l_segment13
996        ,p_segment14             => l_segment14
997        ,p_segment15             => l_segment15
998        ,p_segment16             => l_segment16
999        ,p_segment17             => l_segment17
1000        ,p_segment18             => l_segment18
1001        ,p_segment19             => l_segment19
1002        ,p_segment20             => l_segment20
1003        ,p_segment21             => l_segment21
1004        ,p_segment22             => l_segment22
1005        ,p_segment23             => l_segment23
1006        ,p_segment24             => l_segment24
1007        ,p_segment25             => l_segment25
1008        ,p_segment26             => l_segment26
1009        ,p_segment27             => l_segment27
1010        ,p_segment28             => l_segment28
1011        ,p_segment29             => l_segment29
1012        ,p_segment30             => l_segment30
1013        ,p_concat_segments_in    => p_concat_segments
1014        ,p_ccid                  => l_analysis_criteria_id
1015        ,p_concat_segments_out   => l_name
1016        );
1017   END IF;
1018   --
1019   hr_utility.set_location(l_proc, 80);
1020   --
1021   -- update person_analyses into PER_PERSON_ANALYSES
1022   --
1023   per_pea_upd.upd
1024      (p_person_analysis_id         => p_person_analysis_id
1025      ,p_analysis_criteria_id       => l_analysis_criteria_id
1026      ,p_id_flex_num                => l_id_flex_num
1027      ,p_comments                   => p_comments
1028      ,p_date_from                  => l_date_from
1029      ,p_date_to                    => l_date_to
1030      ,p_request_id                 => p_request_id
1031      ,p_program_application_id     => p_program_application_id
1032      ,p_program_id                 => p_program_id
1033      ,p_program_update_date        => l_program_update_date
1034      ,p_attribute_category         => p_attribute_category
1035      ,p_attribute1                 => p_attribute1
1036      ,p_attribute2                 => p_attribute2
1037      ,p_attribute3                 => p_attribute3
1038      ,p_attribute4                 => p_attribute4
1039      ,p_attribute5                 => p_attribute5
1040      ,p_attribute6                 => p_attribute6
1041      ,p_attribute7                 => p_attribute7
1042      ,p_attribute8                 => p_attribute8
1043      ,p_attribute9                 => p_attribute9
1044      ,p_attribute10                => p_attribute10
1045      ,p_attribute11                => p_attribute11
1046      ,p_attribute12                => p_attribute12
1047      ,p_attribute13                => p_attribute13
1048      ,p_attribute14                => p_attribute14
1049      ,p_attribute15                => p_attribute15
1050      ,p_attribute16                => p_attribute16
1051      ,p_attribute17                => p_attribute17
1052      ,p_attribute18                => p_attribute18
1053      ,p_attribute19                => p_attribute19
1054      ,p_attribute20                => p_attribute20
1055      ,p_object_version_number      => l_object_version_number
1056      );
1057   --
1058   hr_utility.set_location(l_proc, 90);
1059   --
1060   begin
1061     --
1062     -- Start of API User Hook for the after hook of update_sit
1063     --
1064     hr_sit_bk2.update_sit_a
1065       (p_person_analysis_id            => p_person_analysis_id
1066       ,p_pea_object_version_number     => l_object_version_number
1067       ,p_comments                      => p_comments
1068       ,p_date_from                     => l_date_from
1069       ,p_date_to                       => l_date_to
1070       ,p_request_id                    => p_request_id
1071       ,p_program_application_id        => p_program_application_id
1072       ,p_program_id                    => p_program_id
1073       ,p_program_update_date           => l_program_update_date
1074       ,p_attribute_category            => p_attribute_category
1075       ,p_attribute1                    => p_attribute1
1076       ,p_attribute2                    => p_attribute2
1077       ,p_attribute3                    => p_attribute3
1078       ,p_attribute4                    => p_attribute4
1079       ,p_attribute5                    => p_attribute5
1080       ,p_attribute6                    => p_attribute6
1081       ,p_attribute7                    => p_attribute7
1082       ,p_attribute8                    => p_attribute8
1083       ,p_attribute9                    => p_attribute9
1084       ,p_attribute10                   => p_attribute10
1085       ,p_attribute11                   => p_attribute11
1086       ,p_attribute12                   => p_attribute12
1087       ,p_attribute13                   => p_attribute13
1088       ,p_attribute14                   => p_attribute14
1089       ,p_attribute15                   => p_attribute15
1090       ,p_attribute16                   => p_attribute16
1091       ,p_attribute17                   => p_attribute17
1092       ,p_attribute18                   => p_attribute18
1093       ,p_attribute19                   => p_attribute19
1094       ,p_attribute20                   => p_attribute20
1095       ,p_segment1                      => l_segment1
1096       ,p_segment2                      => l_segment2
1097       ,p_segment3                      => l_segment3
1098       ,p_segment4                      => l_segment4
1099       ,p_segment5                      => l_segment5
1100       ,p_segment6                      => l_segment6
1101       ,p_segment7                      => l_segment7
1102       ,p_segment8                      => l_segment8
1103       ,p_segment9                      => l_segment9
1104       ,p_segment10                     => l_segment10
1105       ,p_segment11                     => l_segment11
1106       ,p_segment12                     => l_segment12
1107       ,p_segment13                     => l_segment13
1108       ,p_segment14                     => l_segment14
1109       ,p_segment15                     => l_segment15
1110       ,p_segment16                     => l_segment16
1111       ,p_segment17                     => l_segment17
1112       ,p_segment18                     => l_segment18
1113       ,p_segment19                     => l_segment19
1114       ,p_segment20                     => l_segment20
1115       ,p_segment21                     => l_segment21
1116       ,p_segment22                     => l_segment22
1117       ,p_segment23                     => l_segment23
1118       ,p_segment24                     => l_segment24
1119       ,p_segment25                     => l_segment25
1120       ,p_segment26                     => l_segment26
1121       ,p_segment27                     => l_segment27
1122       ,p_segment28                     => l_segment28
1123       ,p_segment29                     => l_segment29
1124       ,p_segment30                     => l_segment30
1125       ,p_concat_segments               => p_concat_segments
1126       ,p_analysis_criteria_id          => l_analysis_criteria_id
1127       );
1128   exception
1129     when hr_api.cannot_find_prog_unit then
1130       hr_api.cannot_find_prog_unit_error
1131         (p_module_name => 'UPDATE_SIT'
1132         ,p_hook_type   => 'AP'
1133         );
1134     --
1135     -- End of API User Hook for the after hook of update_sit
1136     --
1137   end;
1138   --
1139   if p_validate then
1140     raise hr_api.validate_enabled;
1141   end if;
1142   --
1143   hr_utility.set_location(l_proc, 95);
1144   --
1145   --Set OUT parameters
1146   --
1147   if l_null_ind = 1
1148   then
1149      p_pea_object_version_number := l_object_version_number;
1150   else
1151      p_analysis_criteria_id      := l_analysis_criteria_id;
1152      p_pea_object_version_number := l_object_version_number;
1153   end if;
1154   --
1155   hr_utility.set_location(' Leaving:'||l_proc, 100);
1156   --
1157 exception
1158   --
1159   when hr_api.validate_enabled then
1160     --
1161     -- As the Validate_Enabled exception has been raised
1162     -- we must rollback to the savepoint
1163     --
1164     ROLLBACK TO update_sit;
1165     --
1166     -- Only set output warning arguments
1167     -- (any key or derived arguments must be set to null
1168     -- when validation only mode is being used.)
1169     --
1170     --
1171     if l_null_ind = 0
1172     then
1173        p_analysis_criteria_id    := null;
1174     end if;
1175   --
1176   hr_utility.set_location(' Leaving:' ||l_proc, 110);
1177   --
1178   when others then
1179   --
1180   -- A validation or unexpected error has occured
1181   --
1182   -- Added as part of the fix to bug 632479
1183   --
1184   p_pea_object_version_number := l_pea_object_version_number;
1185   p_analysis_criteria_id    := l_analysis_criteria_id;
1186    ROLLBACK TO update_sit;
1187   --
1188   hr_utility.set_location(' Leaving:'||l_proc, 120);
1189   --
1190   raise;
1191   --
1192 end update_sit;
1193 --
1194 -- ----------------------------------------------------------------------------
1195 -- |----------------------------<  delete_sit  >------------------------------|
1196 -- ----------------------------------------------------------------------------
1197 -- {Start Of Comments}
1198 --
1199 -- Description:
1200 --   This Special Information type business process deletes a special
1201 --   information type record from the table PER_PERSON_ANALYSES.  Note
1202 --   it does not alter the key flex codes combination table
1203 --   PER_ANALYSIS_CRITERIA, since a single code combination could
1204 --   be used by more than one special information type record on
1205 --   PER_PERSON_ANALYSES
1206 --
1207 -- Prerequisites:
1208 --   The SIT specified by p_person_analysis_id and p_object_version_number
1209 --   must exist.
1210 --
1211 -- In Parameters:
1212 --   Name                           Reqd Type     Description
1213 --   p_validate                      N   boolean  If true, the database
1214 --                                                remains unchanged. If false
1215 --                                                then the employee will be
1216 --                                                deleted from the database.
1217 --   p_person_analysis_id            Y   number   ID of PER_PERSON_ANALYSES
1218 --                                                record for delete.
1219 --   p_pea_object_version_number     Y   number   Version number of the PPA
1220 --                                                record
1221 
1222 -- Post Success:
1223 --   The API deletes the SIT record in PER_PERSON_ANALYSES, but leaves
1224 --   the code combination unchanged.
1225 --
1226 -- Post Failure:
1227 --   The API does not delete the special infomration type record and raises
1228 --   an error.
1229 --
1230 -- Access Status:
1231 --   Public.
1232 --
1233 -- {End Of Comments}
1234 --
1235 --
1236 procedure delete_sit
1237   (p_validate                       in     boolean  default false
1238   ,p_person_analysis_id             in     number
1239   ,p_pea_object_version_number      in     number
1240   ) IS
1241 --
1242 l_proc                  varchar2(72) := g_package||'delete_sit';
1243 --
1244 BEGIN
1245    --
1246    hr_utility.set_location('Entering:'|| l_proc,10);
1247    --
1248    -- Issue a savepoint
1249    --
1250    savepoint delete_sit;
1251    --
1252    hr_utility.set_location('Entering:'|| l_proc,20);
1253    --
1254    -- Insert Before delete user hook
1255    --
1256    begin
1257     hr_sit_bk3.delete_sit_b
1258       (p_person_analysis_id        => p_person_analysis_id
1259       ,p_pea_object_version_number => p_pea_object_version_number
1260       );
1261    exception
1262      when hr_api.cannot_find_prog_unit then
1263        hr_api.cannot_find_prog_unit_error
1264          (p_module_name => 'DELETE_SIT'
1265          ,p_hook_type   => 'BP'
1266          );
1267      --
1268      -- End of API User Hook for the before hook of delete SIT
1269      --
1270    end;
1271    --
1272    --
1273    --
1274    per_pea_del.del(p_person_analysis_id => p_person_analysis_id,
1275                    p_object_version_number => p_pea_object_version_number,
1276                    p_validate => false);
1277    --
1278    hr_utility.set_location('Entering:'|| l_proc,20);
1279    --
1280    -- Insert After delete user hook
1281    --
1282    begin
1283     hr_sit_bk3.delete_sit_a
1284       (p_person_analysis_id        => p_person_analysis_id
1285       ,p_pea_object_version_number => p_pea_object_version_number
1286       );
1287    exception
1288      when hr_api.cannot_find_prog_unit then
1289        hr_api.cannot_find_prog_unit_error
1290          (p_module_name => 'DELETE_SIT'
1291          ,p_hook_type   => 'AP'
1292          );
1293      --
1294      -- End of API User Hook for the before hook of delete SIT
1295      --
1296    end;
1297    --
1298    --
1299    -- If in validate mode, raise the API validation exception
1300    --
1301    if p_validate then
1302       raise hr_api.validate_enabled;
1303    end if;
1304 --
1305 EXCEPTION
1306   WHEN hr_api.validate_enabled THEN
1307     --
1308     -- As the Validate_Enabled exception has been raised
1309     -- we must rollback to the savepoint
1310     --
1311     ROLLBACK TO delete_sit;
1312     --
1313     --
1314   when others then
1315     --
1316     -- A validation or unexpected error has occurred
1317     --
1318      ROLLBACK TO delete_sit;
1319     raise;
1320 --
1321 END delete_sit;
1322 -- ----------------------------------------------------------------------------
1323 -- |-------------------------------< lck >------------------------------------|
1324 -- ----------------------------------------------------------------------------
1325 --
1326 procedure lck
1327   (
1328    p_person_analysis_id                   in     number
1329   ,p_pea_object_version_number          in     number
1330   ) is
1331   --
1332   --
1333   -- Declare cursors and local variables
1334   --
1335   l_proc varchar2(72) := g_package||' lck';
1336   --
1337 begin
1338   --
1339   hr_utility.set_location('Entering:'|| l_proc, 10);
1340   --
1341   per_pea_shd.lck
1342     (
1343       p_person_analysis_id                 => p_person_analysis_id
1344      ,p_object_version_number      => p_pea_object_version_number
1345     );
1346   --
1347   hr_utility.set_location(' Leaving:'||l_proc, 70);
1348   --
1349 end lck;
1350 end hr_sit_api;