DBA Data[Home] [Help]

PACKAGE BODY: APPS.BEN_PRTT_ENRT_ACTN_API

Source


1 Package Body ben_PRTT_ENRT_ACTN_api as
2 /* $Header: bepeaapi.pkb 120.4.12010000.2 2008/08/05 15:08:19 ubhat ship $ */
3 --
4 -- Package Variables
5 --
6 g_package  varchar2(33) := '  ben_PRTT_ENRT_ACTN_api.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |---------------------------< suspend_rslt  >----------------------------|
10 -- ----------------------------------------------------------------------------
11 --
12 procedure suspend_rslt
13   (p_prtt_enrt_rslt_id          in     number
14   ,p_effective_date             in     date
15   ,p_post_rslt_flag             in     varchar2
16   ,p_business_group_id          in     number
17   ,p_rslt_object_version_number in out nocopy number
18   ,p_validate                   in     boolean  default false
19   ,p_datetrack_mode             in     varchar2 default hr_api.g_correction)
20 is
21   --
22   -- check if a suspend action done already. If not suspend enrollment now.
23   --
24   l_package     varchar2(80) := g_package||'.suspend_rslt';
25   --
26   cursor c_suspend_enrl
27   is
28   select sspndd_flag
29     from ben_prtt_enrt_rslt_f perslt
30    where perslt.prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
31      and perslt.prtt_enrt_rslt_stat_cd is null
32      and perslt.business_group_id = p_business_group_id
33      and p_effective_date between perslt.effective_start_date
34                               and perslt.effective_end_date;
35   --
36   l_suspend_enrl c_suspend_enrl%rowtype;
37 --
38 begin
39 --
40   hr_utility.set_location ('Entering '||l_package,10);
41   --
42   -- Check if the enrollment result is already suspended.
43   --
44   open c_suspend_enrl;
45   fetch c_suspend_enrl into l_suspend_enrl;
46   close c_suspend_enrl;
47   --
48   -- Bug#2151619 bypass suspend enrollment in backout process
49   if -- l_suspend_enrl.sspndd_flag <> 'Y' and --CFW
50      ben_back_out_life_event.g_backout_flag is null then
51     --
52     -- Not already suspended... so suspend enrt rslt.
53     --
54     ben_sspndd_enrollment.suspend_enrollment
55       (p_prtt_enrt_rslt_id     => p_prtt_enrt_rslt_id
56       ,p_effective_date        => p_effective_date
57       ,p_post_rslt_flag        => p_post_rslt_flag
58       ,p_business_group_id     => p_business_group_id
59       ,p_object_version_number => p_rslt_object_version_number
60       ,p_datetrack_mode        => p_datetrack_mode);
61     --
62   end if;
63   --
64   hr_utility.set_location ('Leaving ' ||l_package,10);
65 --
66 end suspend_rslt;
67 --
68 -- ----------------------------------------------------------------------------
69 -- |---------------------------< unsuspend_rslt  >----------------------------|
70 -- ----------------------------------------------------------------------------
71 --
72 procedure unsuspend_rslt
73   (p_prtt_enrt_rslt_id          in     number
74   ,p_effective_date             in     date
75   ,p_post_rslt_flag             in     varchar2
76   ,p_business_group_id          in     number
77   ,p_rslt_object_version_number in out nocopy number
78   ,p_validate                   in     boolean  default false
79   ,p_datetrack_mode             in     varchar2 default hr_api.g_correction
80   ,p_cmpltd_dt                  in     date default null )
81 is
82   --
83   -- check if possible to unsuspend action items for this participant.
84   -- ie. there should be no open action items with a rqd_flag = 'Y'.
85   --
86   l_package     varchar2(80) := g_package||'.unsuspend_rslt';
87   --
88   cursor c_suspend_enrl
89   is
90   select sspndd_flag
91     from ben_prtt_enrt_rslt_f perslt
92    where perslt.prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
93      and perslt.prtt_enrt_rslt_stat_cd is null
94      and perslt.business_group_id = p_business_group_id
95      and p_effective_date between perslt.effective_start_date
96                               and perslt.effective_end_date;
97   --
98   l_suspend_enrl c_suspend_enrl%rowtype;
99   --
100   --bug#5621152
101   cursor c_cmpltd_actn
102   is
103   select 'X'
104     from ben_prtt_enrt_actn_f act,
105          ben_per_in_ler pil
106    where act.prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
107      and act.per_in_ler_id = pil.per_in_ler_id
108      and pil.per_in_ler_stat_cd not in ('VOIDD', 'BCKDT')
109      and act.rqd_flag = 'Y'
110      and act.cmpltd_dt IS NULL
111      and act.business_group_id = p_business_group_id
112      and p_effective_date between act.effective_start_date
113                               and act.effective_end_date;
114   --
115   l_cmpltd_actn c_cmpltd_actn%rowtype;
116 --
117 begin
118 --
119   hr_utility.set_location ('Entering '||l_package,10);
120   --
121   open c_suspend_enrl;
122   fetch c_suspend_enrl into l_suspend_enrl;
123   close c_suspend_enrl;
124   --
125   if l_suspend_enrl.sspndd_flag = 'Y' then
126     --
127     -- enrollment suspended, now check for the existance of any required
128     -- action items that are not yet complete
129     --
130     open c_cmpltd_actn;
131     fetch c_cmpltd_actn into l_cmpltd_actn;
132     --
133     if c_cmpltd_actn%notfound then
134       -- No open required action items exist. Ok to unsuspend enrollment.
135       close c_cmpltd_actn;
136       --
137       ben_sspndd_enrollment.unsuspend_enrollment
138         (p_prtt_enrt_rslt_id     => p_prtt_enrt_rslt_id
139         ,p_effective_date        => p_effective_date
140         ,p_post_rslt_flag        => p_post_rslt_flag
141         ,p_business_group_id     => p_business_group_id
142         ,p_object_version_number => p_rslt_object_version_number
143         ,p_datetrack_mode        => p_datetrack_mode
144         ,p_cmpltd_dt             => p_cmpltd_dt );
145       --
146     else
147       --
148       -- Open required action items exist. Cannot unsuspend enrollment result.
149       --
150       close c_cmpltd_actn;
151       --
152     end if;
153     --
154   else
155     NULL; -- Enrollment already unsuspended.
156   end if;
157   --
158   hr_utility.set_location ('Leaving ' ||l_package,10);
159   --
160 end unsuspend_rslt;
161 --
162 -- ----------------------------------------------------------------------------
163 -- |--------------------------< create_PRTT_ENRT_ACTN >-----------------------|
164 -- ----------------------------------------------------------------------------
165 --
166 -- THIS PROCEDURE WAS DUPLICATED.  ONE HAS PER-IN-LER-ID THE OTHER DOESN'T.
167 -- CHANGE BOTH PROCEDURES IF MAKING A CHANGE.
168 --
169 procedure create_PRTT_ENRT_ACTN
170   (p_validate                       in     boolean   default false
171   ,p_effective_date                 in     date
172   ,p_post_rslt_flag                 in     varchar2  default 'N'
173   ,p_cmpltd_dt                      in     date      default null
174   ,p_due_dt                         in     date      default null
175   ,p_rqd_flag                       in     varchar2  default 'Y'
176   ,p_prtt_enrt_rslt_id              in     number    default null
177   ,p_per_in_ler_id              in     number
178   ,p_rslt_object_version_number     in out nocopy number
179   ,p_actn_typ_id                    in     number    default null
180   ,p_elig_cvrd_dpnt_id              in     number    default null
181   ,p_pl_bnf_id                      in     number    default null
182   ,p_business_group_id              in     number    default null
183   ,p_pea_attribute_category         in     varchar2  default null
184   ,p_pea_attribute1                 in     varchar2  default null
185   ,p_pea_attribute2                 in     varchar2  default null
186   ,p_pea_attribute3                 in     varchar2  default null
187   ,p_pea_attribute4                 in     varchar2  default null
188   ,p_pea_attribute5                 in     varchar2  default null
189   ,p_pea_attribute6                 in     varchar2  default null
190   ,p_pea_attribute7                 in     varchar2  default null
191   ,p_pea_attribute8                 in     varchar2  default null
192   ,p_pea_attribute9                 in     varchar2  default null
193   ,p_pea_attribute10                in     varchar2  default null
194   ,p_pea_attribute11                in     varchar2  default null
195   ,p_pea_attribute12                in     varchar2  default null
196   ,p_pea_attribute13                in     varchar2  default null
197   ,p_pea_attribute14                in     varchar2  default null
198   ,p_pea_attribute15                in     varchar2  default null
199   ,p_pea_attribute16                in     varchar2  default null
200   ,p_pea_attribute17                in     varchar2  default null
201   ,p_pea_attribute18                in     varchar2  default null
202   ,p_pea_attribute19                in     varchar2  default null
203   ,p_pea_attribute20                in     varchar2  default null
204   ,p_pea_attribute21                in     varchar2  default null
205   ,p_pea_attribute22                in     varchar2  default null
206   ,p_pea_attribute23                in     varchar2  default null
207   ,p_pea_attribute24                in     varchar2  default null
208   ,p_pea_attribute25                in     varchar2  default null
209   ,p_pea_attribute26                in     varchar2  default null
210   ,p_pea_attribute27                in     varchar2  default null
211   ,p_pea_attribute28                in     varchar2  default null
212   ,p_pea_attribute29                in     varchar2  default null
213   ,p_pea_attribute30                in     varchar2  default null
214   ,p_gnrt_cm                        in     boolean   default true
215   ,p_object_version_number             out nocopy number
216   ,p_prtt_enrt_actn_id                 out nocopy number
217   ,p_effective_start_date              out nocopy date
218   ,p_effective_end_date                out nocopy date
219   )
220 is
221   --
222   -- Declare cursors and local variables
223   --
224   cursor c_prtt_enrt_rslt is
225     select person_id
226           ,ler_id
227           ,pgm_id
228           ,pl_id
229           ,pl_typ_id
230     from ben_prtt_enrt_rslt_f
231     where prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
232     and   prtt_enrt_rslt_stat_cd is null
233     and p_effective_date between
234     effective_start_date and effective_end_date;
235   --
236   l_person_id     ben_prtt_enrt_rslt_f.person_id%TYPE;
237   l_ler_id        ben_prtt_enrt_rslt_f.ler_id%TYPE;
238   l_pl_id         ben_prtt_enrt_rslt_f.pl_id%TYPE;
239   l_pl_typ_id     ben_prtt_enrt_rslt_f.pl_typ_id%TYPE;
240   l_pgm_id        ben_prtt_enrt_rslt_f.pgm_id%TYPE;
241   l_prtt_enrt_actn_id ben_prtt_enrt_actn_f.prtt_enrt_actn_id%TYPE;
242   l_effective_start_date ben_prtt_enrt_actn_f.effective_start_date%TYPE;
243   l_effective_end_date ben_prtt_enrt_actn_f.effective_end_date%TYPE;
244   l_proc varchar2(72) := g_package||'create_PRTT_ENRT_ACTN';
245   l_object_version_number ben_prtt_enrt_actn_f.object_version_number%TYPE;
246   --
247 begin
248   --
249   hr_utility.set_location('Entering:'|| l_proc, 10);
250   --
251   -- Issue a savepoint if operating in validation only mode
252   --
253   savepoint create_PRTT_ENRT_ACTN;
254   --
255   hr_utility.set_location(l_proc, 20);
256   --
257   -- Process Logic
258   --
259   begin
260     --
261     -- Start of API User Hook for the before hook of create_PRTT_ENRT_ACTN
262     --
263     ben_PRTT_ENRT_ACTN_bk1.create_PRTT_ENRT_ACTN_b
264       (p_cmpltd_dt                      =>  p_cmpltd_dt
265       ,p_due_dt                         =>  p_due_dt
266       ,p_rqd_flag                       =>  p_rqd_flag
267       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
268       ,p_per_in_ler_id              =>  p_per_in_ler_id
269       ,p_actn_typ_id                    =>  p_actn_typ_id
270       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
271       ,p_pl_bnf_id                      =>  p_pl_bnf_id
272       ,p_pea_attribute_category         =>  p_pea_attribute_category
273       ,p_business_group_id              =>  p_business_group_id
274       ,p_pea_attribute1                 =>  p_pea_attribute1
275       ,p_pea_attribute2                 =>  p_pea_attribute2
276       ,p_pea_attribute3                 =>  p_pea_attribute3
277       ,p_pea_attribute4                 =>  p_pea_attribute4
278       ,p_pea_attribute5                 =>  p_pea_attribute5
279       ,p_pea_attribute6                 =>  p_pea_attribute6
280       ,p_pea_attribute7                 =>  p_pea_attribute7
281       ,p_pea_attribute8                 =>  p_pea_attribute8
282       ,p_pea_attribute9                 =>  p_pea_attribute9
283       ,p_pea_attribute10                =>  p_pea_attribute10
284       ,p_pea_attribute11                =>  p_pea_attribute11
285       ,p_pea_attribute12                =>  p_pea_attribute12
286       ,p_pea_attribute13                =>  p_pea_attribute13
287       ,p_pea_attribute14                =>  p_pea_attribute14
288       ,p_pea_attribute15                =>  p_pea_attribute15
289       ,p_pea_attribute16                =>  p_pea_attribute16
290       ,p_pea_attribute17                =>  p_pea_attribute17
291       ,p_pea_attribute18                =>  p_pea_attribute18
292       ,p_pea_attribute19                =>  p_pea_attribute19
293       ,p_pea_attribute20                =>  p_pea_attribute20
294       ,p_pea_attribute21                =>  p_pea_attribute21
295       ,p_pea_attribute22                =>  p_pea_attribute22
296       ,p_pea_attribute23                =>  p_pea_attribute23
297       ,p_pea_attribute24                =>  p_pea_attribute24
298       ,p_pea_attribute25                =>  p_pea_attribute25
299       ,p_pea_attribute26                =>  p_pea_attribute26
300       ,p_pea_attribute27                =>  p_pea_attribute27
301       ,p_pea_attribute28                =>  p_pea_attribute28
302       ,p_pea_attribute29                =>  p_pea_attribute29
303       ,p_pea_attribute30                =>  p_pea_attribute30
304       ,p_effective_date                 => trunc(p_effective_date)
305       );
306   exception
307     when hr_api.cannot_find_prog_unit then
308       hr_api.cannot_find_prog_unit_error
309         (
310          p_module_name => 'CREATE_PRTT_ENRT_ACTN'
311         ,p_hook_type   => 'BP'
312         );
313     --
314     -- End of API User Hook for the before hook of create_PRTT_ENRT_ACTN
315     --
316   end;
317   --
318   ben_pea_ins.ins
319     (
320      p_prtt_enrt_actn_id             => l_prtt_enrt_actn_id
321     ,p_effective_start_date          => l_effective_start_date
322     ,p_effective_end_date            => l_effective_end_date
323     ,p_cmpltd_dt                     => p_cmpltd_dt
324     ,p_due_dt                        => p_due_dt
325     ,p_rqd_flag                      => p_rqd_flag
326     ,p_prtt_enrt_rslt_id             => p_prtt_enrt_rslt_id
327     ,p_per_in_ler_id             => p_per_in_ler_id
328     ,p_actn_typ_id                   => p_actn_typ_id
329     ,p_elig_cvrd_dpnt_id             => p_elig_cvrd_dpnt_id
330     ,p_pl_bnf_id                     => p_pl_bnf_id
331     ,p_business_group_id             => p_business_group_id
332     ,p_pea_attribute_category        => p_pea_attribute_category
333     ,p_pea_attribute1                => p_pea_attribute1
334     ,p_pea_attribute2                => p_pea_attribute2
335     ,p_pea_attribute3                => p_pea_attribute3
336     ,p_pea_attribute4                => p_pea_attribute4
337     ,p_pea_attribute5                => p_pea_attribute5
338     ,p_pea_attribute6                => p_pea_attribute6
339     ,p_pea_attribute7                => p_pea_attribute7
340     ,p_pea_attribute8                => p_pea_attribute8
341     ,p_pea_attribute9                => p_pea_attribute9
342     ,p_pea_attribute10               => p_pea_attribute10
343     ,p_pea_attribute11               => p_pea_attribute11
344     ,p_pea_attribute12               => p_pea_attribute12
345     ,p_pea_attribute13               => p_pea_attribute13
346     ,p_pea_attribute14               => p_pea_attribute14
347     ,p_pea_attribute15               => p_pea_attribute15
348     ,p_pea_attribute16               => p_pea_attribute16
349     ,p_pea_attribute17               => p_pea_attribute17
350     ,p_pea_attribute18               => p_pea_attribute18
351     ,p_pea_attribute19               => p_pea_attribute19
352     ,p_pea_attribute20               => p_pea_attribute20
353     ,p_pea_attribute21               => p_pea_attribute21
354     ,p_pea_attribute22               => p_pea_attribute22
355     ,p_pea_attribute23               => p_pea_attribute23
356     ,p_pea_attribute24               => p_pea_attribute24
357     ,p_pea_attribute25               => p_pea_attribute25
358     ,p_pea_attribute26               => p_pea_attribute26
359     ,p_pea_attribute27               => p_pea_attribute27
360     ,p_pea_attribute28               => p_pea_attribute28
361     ,p_pea_attribute29               => p_pea_attribute29
362     ,p_pea_attribute30               => p_pea_attribute30
363     ,p_object_version_number         => l_object_version_number
364     ,p_effective_date                => trunc(p_effective_date)
365     );
366   --
367   begin
368     --
369     -- Start of API User Hook for the after hook of create_PRTT_ENRT_ACTN
370     --
371     ben_PRTT_ENRT_ACTN_bk1.create_PRTT_ENRT_ACTN_a
372       (
373        p_prtt_enrt_actn_id              =>  l_prtt_enrt_actn_id
374       ,p_effective_start_date           =>  l_effective_start_date
375       ,p_effective_end_date             =>  l_effective_end_date
376       ,p_cmpltd_dt                      =>  p_cmpltd_dt
377       ,p_due_dt                         =>  p_due_dt
378       ,p_rqd_flag                       =>  p_rqd_flag
379       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
380       ,p_per_in_ler_id              =>  p_per_in_ler_id
381       ,p_actn_typ_id                    =>  p_actn_typ_id
382       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
383       ,p_pl_bnf_id                      =>  p_pl_bnf_id
384       ,p_business_group_id              =>  p_business_group_id
385       ,p_pea_attribute_category         =>  p_pea_attribute_category
386       ,p_pea_attribute1                 =>  p_pea_attribute1
387       ,p_pea_attribute2                 =>  p_pea_attribute2
388       ,p_pea_attribute3                 =>  p_pea_attribute3
389       ,p_pea_attribute4                 =>  p_pea_attribute4
390       ,p_pea_attribute5                 =>  p_pea_attribute5
391       ,p_pea_attribute6                 =>  p_pea_attribute6
392       ,p_pea_attribute7                 =>  p_pea_attribute7
393       ,p_pea_attribute8                 =>  p_pea_attribute8
394       ,p_pea_attribute9                 =>  p_pea_attribute9
395       ,p_pea_attribute10                =>  p_pea_attribute10
396       ,p_pea_attribute11                =>  p_pea_attribute11
397       ,p_pea_attribute12                =>  p_pea_attribute12
398       ,p_pea_attribute13                =>  p_pea_attribute13
399       ,p_pea_attribute14                =>  p_pea_attribute14
400       ,p_pea_attribute15                =>  p_pea_attribute15
401       ,p_pea_attribute16                =>  p_pea_attribute16
402       ,p_pea_attribute17                =>  p_pea_attribute17
403       ,p_pea_attribute18                =>  p_pea_attribute18
404       ,p_pea_attribute19                =>  p_pea_attribute19
405       ,p_pea_attribute20                =>  p_pea_attribute20
406       ,p_pea_attribute21                =>  p_pea_attribute21
407       ,p_pea_attribute22                =>  p_pea_attribute22
408       ,p_pea_attribute23                =>  p_pea_attribute23
409       ,p_pea_attribute24                =>  p_pea_attribute24
410       ,p_pea_attribute25                =>  p_pea_attribute25
411       ,p_pea_attribute26                =>  p_pea_attribute26
412       ,p_pea_attribute27                =>  p_pea_attribute27
413       ,p_pea_attribute28                =>  p_pea_attribute28
414       ,p_pea_attribute29                =>  p_pea_attribute29
415       ,p_pea_attribute30                =>  p_pea_attribute30
416       ,p_object_version_number          =>  l_object_version_number
417       ,p_effective_date                 => trunc(p_effective_date)
418       );
419   exception
420     when hr_api.cannot_find_prog_unit then
421       hr_api.cannot_find_prog_unit_error
422         (p_module_name => 'CREATE_PRTT_ENRT_ACTN'
423         ,p_hook_type   => 'AP'
424         );
425     --
426     -- End of API User Hook for the after hook of create_PRTT_ENRT_ACTN
427     --
428   end;
429   --
430   hr_utility.set_location(l_proc, 60);
431   --
432   p_prtt_enrt_actn_id := l_prtt_enrt_actn_id;
433   p_effective_start_date := l_effective_start_date;
434   p_effective_end_date := l_effective_end_date;
435   p_object_version_number := l_object_version_number;
436   --
437   -- if action item is required, suspend the enrollment
438   -- if setting cmpltd_dt to NULL try to unsuspend if
439   -- cmpltd_dt is getting a value
440   --
441   if p_rqd_flag = 'Y' then
442     if p_cmpltd_dt is NULL then
443       suspend_rslt
444         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
445         ,p_post_rslt_flag             => p_post_rslt_flag
446         ,p_effective_date             => p_effective_date
447         ,p_business_group_id          => p_business_group_id
448         ,p_rslt_object_version_number => p_rslt_object_version_number
449         ,p_validate                   => p_validate
450         ,p_datetrack_mode             => hr_api.g_correction);
451       --
452     else
453       --
454       unsuspend_rslt
455         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
456         ,p_post_rslt_flag             => p_post_rslt_flag
457         ,p_effective_date             => p_effective_date
458         ,p_business_group_id          => p_business_group_id
459         ,p_rslt_object_version_number => p_rslt_object_version_number
460         ,p_validate                   => p_validate
461         ,p_datetrack_mode             => hr_api.g_correction
462         ,p_cmpltd_dt                  => p_cmpltd_dt );
463     --
464     end if;
465   end if;
466   --
467   if p_gnrt_cm then
468     open c_prtt_enrt_rslt;
469     fetch c_prtt_enrt_rslt into l_person_id
470                                ,l_ler_id
471                                ,l_pgm_id
472                                ,l_pl_id
473                                ,l_pl_typ_id;
474     if c_prtt_enrt_rslt%notfound then
475       close c_prtt_enrt_rslt;
476       fnd_message.set_name('BEN','BEN_91916_ENRT_TABLE_NOT_FOUND');
477       fnd_message.set_token('TABLE','BEN_PRTT_ENRT_RSLT_F');
478       fnd_message.raise_error;
479     end if;
480     close c_prtt_enrt_rslt;
481     --
482     --  Generate Communications
483     --
484     ben_generate_communications.main
485       (p_person_id             => l_person_id
486       ,p_ler_id                => l_ler_id
487       -- CWB Changes.
488       ,p_per_in_ler_id         => p_per_in_ler_id
489       ,p_prtt_enrt_actn_id     => l_prtt_enrt_actn_id
490       ,p_pgm_id                => l_pgm_id
491       ,p_pl_id                 => l_pl_id
492       ,p_pl_typ_id             => l_pl_typ_id
493       ,p_actn_typ_id           => p_actn_typ_id
494       ,p_business_group_id     => p_business_group_id
495       ,p_proc_cd1              => 'ACTNCREATED'
496       ,p_effective_date        => p_effective_date);
497   end if;
498   --
499   -- When in validation only mode raise the Validate_Enabled exception
500   --
501   if p_validate then
502     raise hr_api.validate_enabled;
503   end if;
504   --
505   -- Set all output arguments
506   --
507   hr_utility.set_location(' Leaving:'||l_proc, 70);
508   --
509 exception
510   --
511   when hr_api.validate_enabled
512   then
513     --
514     -- As the Validate_Enabled exception has been raised
515     -- we must rollback to the savepoint
516     --
517     ROLLBACK TO create_PRTT_ENRT_ACTN;
518     --
519     -- Only set output warning arguments
520     -- (Any key or derived arguments must be set to null
521     -- when validation only mode is being used.)
522     --
523     p_prtt_enrt_actn_id := null;
524     p_effective_start_date := null;
525     p_effective_end_date := null;
526     p_object_version_number  := null;
527     hr_utility.set_location(' Leaving:'||l_proc, 80);
528     --
529   when others then
530     --
531     -- A validation or unexpected error has occured
532     --
533     ROLLBACK TO create_PRTT_ENRT_ACTN;
534     raise;
535     --
536 end create_PRTT_ENRT_ACTN;
537 --
538 -- ----------------------------------------------------------------------------
539 -- |--------------------------< create_PRTT_ENRT_ACTN >-----------------------|
540 -- ----------------------------------------------------------------------------
541 --
542 --
543 -- THIS PROCEDURE WAS DUPLICATED.  ONE HAS PER-IN-LER-ID THE OTHER DOESN'T.
544 -- CHANGE BOTH PROCEDURES IF MAKING A CHANGE.
545 --
546 procedure create_PRTT_ENRT_ACTN
547   (p_validate                       in     boolean   default false
548   ,p_effective_date                 in     date
549   ,p_post_rslt_flag                 in     varchar2  default 'N'
550   ,p_cmpltd_dt                      in     date      default null
551   ,p_due_dt                         in     date      default null
552   ,p_rqd_flag                       in     varchar2  default 'Y'
553   ,p_prtt_enrt_rslt_id              in     number    default null
554   ,p_rslt_object_version_number     in out nocopy number
555   ,p_actn_typ_id                    in     number    default null
556   ,p_elig_cvrd_dpnt_id              in     number    default null
557   ,p_pl_bnf_id                      in     number    default null
558   ,p_business_group_id              in     number    default null
559   ,p_pea_attribute_category         in     varchar2  default null
560   ,p_pea_attribute1                 in     varchar2  default null
561   ,p_pea_attribute2                 in     varchar2  default null
562   ,p_pea_attribute3                 in     varchar2  default null
563   ,p_pea_attribute4                 in     varchar2  default null
564   ,p_pea_attribute5                 in     varchar2  default null
565   ,p_pea_attribute6                 in     varchar2  default null
566   ,p_pea_attribute7                 in     varchar2  default null
567   ,p_pea_attribute8                 in     varchar2  default null
568   ,p_pea_attribute9                 in     varchar2  default null
569   ,p_pea_attribute10                in     varchar2  default null
570   ,p_pea_attribute11                in     varchar2  default null
571   ,p_pea_attribute12                in     varchar2  default null
572   ,p_pea_attribute13                in     varchar2  default null
573   ,p_pea_attribute14                in     varchar2  default null
574   ,p_pea_attribute15                in     varchar2  default null
575   ,p_pea_attribute16                in     varchar2  default null
576   ,p_pea_attribute17                in     varchar2  default null
577   ,p_pea_attribute18                in     varchar2  default null
578   ,p_pea_attribute19                in     varchar2  default null
579   ,p_pea_attribute20                in     varchar2  default null
580   ,p_pea_attribute21                in     varchar2  default null
581   ,p_pea_attribute22                in     varchar2  default null
582   ,p_pea_attribute23                in     varchar2  default null
583   ,p_pea_attribute24                in     varchar2  default null
584   ,p_pea_attribute25                in     varchar2  default null
585   ,p_pea_attribute26                in     varchar2  default null
586   ,p_pea_attribute27                in     varchar2  default null
587   ,p_pea_attribute28                in     varchar2  default null
588   ,p_pea_attribute29                in     varchar2  default null
589   ,p_pea_attribute30                in     varchar2  default null
590   ,p_gnrt_cm                        in     boolean   default true
591   ,p_object_version_number             out nocopy number
592   ,p_prtt_enrt_actn_id                 out nocopy number
593   ,p_effective_start_date              out nocopy date
594   ,p_effective_end_date                out nocopy date
595   )
596 is
597   --
598   -- Declare cursors and local variables
599   --
600   cursor c_prtt_enrt_rslt is
601     select person_id
602           ,ler_id
603           ,pgm_id
604           ,pl_id
605           ,pl_typ_id
606           ,per_in_ler_id
607     from ben_prtt_enrt_rslt_f
608     where prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
609     and   prtt_enrt_rslt_stat_cd is null
610     and p_effective_date between
611     effective_start_date and effective_end_date;
612   --
613   l_person_id     ben_prtt_enrt_rslt_f.person_id%TYPE;
614   l_ler_id        ben_prtt_enrt_rslt_f.ler_id%TYPE;
615   l_pl_id         ben_prtt_enrt_rslt_f.pl_id%TYPE;
616   l_pl_typ_id     ben_prtt_enrt_rslt_f.pl_typ_id%TYPE;
617   l_pgm_id        ben_prtt_enrt_rslt_f.pgm_id%TYPE;
618   l_prtt_enrt_actn_id ben_prtt_enrt_actn_f.prtt_enrt_actn_id%TYPE;
619   l_effective_start_date ben_prtt_enrt_actn_f.effective_start_date%TYPE;
620   l_effective_end_date ben_prtt_enrt_actn_f.effective_end_date%TYPE;
621   l_proc varchar2(72) := g_package||'create_PRTT_ENRT_ACTN';
622   l_object_version_number ben_prtt_enrt_actn_f.object_version_number%TYPE;
623   l_per_in_ler_id number;
624   --
625 begin
626   --
627   hr_utility.set_location('Entering:'|| l_proc, 10);
628   --
629   -- Issue a savepoint if operating in validation only mode
630   --
631   savepoint create_PRTT_ENRT_ACTN;
632   --
633   hr_utility.set_location(l_proc, 20);
634   --
635   -- Process Logic
636   --
637   begin
638     open c_prtt_enrt_rslt;
639     fetch c_prtt_enrt_rslt into l_person_id
640                                ,l_ler_id
641                                ,l_pgm_id
642                                ,l_pl_id
643                                ,l_pl_typ_id
644                                ,l_per_in_ler_id;
645     if c_prtt_enrt_rslt%notfound then
646       close c_prtt_enrt_rslt;
647       fnd_message.set_name('BEN','BEN_91916_ENRT_TABLE_NOT_FOUND');
648       fnd_message.set_token('TABLE','BEN_PRTT_ENRT_RSLT_F');
649       fnd_message.raise_error;
650     end if;
651     close c_prtt_enrt_rslt;
652     --
653     -- Start of API User Hook for the before hook of create_PRTT_ENRT_ACTN
654     --
655     ben_PRTT_ENRT_ACTN_bk1.create_PRTT_ENRT_ACTN_b
656       (p_cmpltd_dt                      =>  p_cmpltd_dt
657       ,p_due_dt                         =>  p_due_dt
658       ,p_rqd_flag                       =>  p_rqd_flag
659       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
660       ,p_per_in_ler_id              =>  l_per_in_ler_id
661       ,p_actn_typ_id                    =>  p_actn_typ_id
662       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
663       ,p_pl_bnf_id                      =>  p_pl_bnf_id
664       ,p_pea_attribute_category         =>  p_pea_attribute_category
665       ,p_business_group_id              =>  p_business_group_id
666       ,p_pea_attribute1                 =>  p_pea_attribute1
667       ,p_pea_attribute2                 =>  p_pea_attribute2
668       ,p_pea_attribute3                 =>  p_pea_attribute3
669       ,p_pea_attribute4                 =>  p_pea_attribute4
670       ,p_pea_attribute5                 =>  p_pea_attribute5
671       ,p_pea_attribute6                 =>  p_pea_attribute6
672       ,p_pea_attribute7                 =>  p_pea_attribute7
673       ,p_pea_attribute8                 =>  p_pea_attribute8
674       ,p_pea_attribute9                 =>  p_pea_attribute9
675       ,p_pea_attribute10                =>  p_pea_attribute10
676       ,p_pea_attribute11                =>  p_pea_attribute11
677       ,p_pea_attribute12                =>  p_pea_attribute12
678       ,p_pea_attribute13                =>  p_pea_attribute13
679       ,p_pea_attribute14                =>  p_pea_attribute14
680       ,p_pea_attribute15                =>  p_pea_attribute15
681       ,p_pea_attribute16                =>  p_pea_attribute16
682       ,p_pea_attribute17                =>  p_pea_attribute17
683       ,p_pea_attribute18                =>  p_pea_attribute18
684       ,p_pea_attribute19                =>  p_pea_attribute19
685       ,p_pea_attribute20                =>  p_pea_attribute20
686       ,p_pea_attribute21                =>  p_pea_attribute21
687       ,p_pea_attribute22                =>  p_pea_attribute22
688       ,p_pea_attribute23                =>  p_pea_attribute23
689       ,p_pea_attribute24                =>  p_pea_attribute24
690       ,p_pea_attribute25                =>  p_pea_attribute25
691       ,p_pea_attribute26                =>  p_pea_attribute26
692       ,p_pea_attribute27                =>  p_pea_attribute27
693       ,p_pea_attribute28                =>  p_pea_attribute28
694       ,p_pea_attribute29                =>  p_pea_attribute29
695       ,p_pea_attribute30                =>  p_pea_attribute30
696       ,p_effective_date                 => trunc(p_effective_date)
697       );
698   exception
699     when hr_api.cannot_find_prog_unit then
700       hr_api.cannot_find_prog_unit_error
701         (
702          p_module_name => 'CREATE_PRTT_ENRT_ACTN'
703         ,p_hook_type   => 'BP'
704         );
705     --
706     -- End of API User Hook for the before hook of create_PRTT_ENRT_ACTN
707     --
708   end;
709   --
710   ben_pea_ins.ins
711     (
712      p_prtt_enrt_actn_id             => l_prtt_enrt_actn_id
713     ,p_effective_start_date          => l_effective_start_date
714     ,p_effective_end_date            => l_effective_end_date
715     ,p_cmpltd_dt                     => p_cmpltd_dt
716     ,p_due_dt                        => p_due_dt
717     ,p_rqd_flag                      => p_rqd_flag
718     ,p_prtt_enrt_rslt_id             => p_prtt_enrt_rslt_id
719     ,p_per_in_ler_id             => l_per_in_ler_id
720     ,p_actn_typ_id                   => p_actn_typ_id
721     ,p_elig_cvrd_dpnt_id             => p_elig_cvrd_dpnt_id
722     ,p_pl_bnf_id                     => p_pl_bnf_id
723     ,p_business_group_id             => p_business_group_id
724     ,p_pea_attribute_category        => p_pea_attribute_category
725     ,p_pea_attribute1                => p_pea_attribute1
726     ,p_pea_attribute2                => p_pea_attribute2
727     ,p_pea_attribute3                => p_pea_attribute3
728     ,p_pea_attribute4                => p_pea_attribute4
729     ,p_pea_attribute5                => p_pea_attribute5
730     ,p_pea_attribute6                => p_pea_attribute6
731     ,p_pea_attribute7                => p_pea_attribute7
732     ,p_pea_attribute8                => p_pea_attribute8
733     ,p_pea_attribute9                => p_pea_attribute9
734     ,p_pea_attribute10               => p_pea_attribute10
735     ,p_pea_attribute11               => p_pea_attribute11
736     ,p_pea_attribute12               => p_pea_attribute12
737     ,p_pea_attribute13               => p_pea_attribute13
738     ,p_pea_attribute14               => p_pea_attribute14
739     ,p_pea_attribute15               => p_pea_attribute15
740     ,p_pea_attribute16               => p_pea_attribute16
741     ,p_pea_attribute17               => p_pea_attribute17
742     ,p_pea_attribute18               => p_pea_attribute18
743     ,p_pea_attribute19               => p_pea_attribute19
744     ,p_pea_attribute20               => p_pea_attribute20
745     ,p_pea_attribute21               => p_pea_attribute21
746     ,p_pea_attribute22               => p_pea_attribute22
747     ,p_pea_attribute23               => p_pea_attribute23
748     ,p_pea_attribute24               => p_pea_attribute24
749     ,p_pea_attribute25               => p_pea_attribute25
750     ,p_pea_attribute26               => p_pea_attribute26
751     ,p_pea_attribute27               => p_pea_attribute27
752     ,p_pea_attribute28               => p_pea_attribute28
753     ,p_pea_attribute29               => p_pea_attribute29
754     ,p_pea_attribute30               => p_pea_attribute30
755     ,p_object_version_number         => l_object_version_number
756     ,p_effective_date                => trunc(p_effective_date)
757     );
758   --
759   begin
760     --
761     -- Start of API User Hook for the after hook of create_PRTT_ENRT_ACTN
762     --
763     ben_PRTT_ENRT_ACTN_bk1.create_PRTT_ENRT_ACTN_a
764       (
765        p_prtt_enrt_actn_id              =>  l_prtt_enrt_actn_id
766       ,p_effective_start_date           =>  l_effective_start_date
767       ,p_effective_end_date             =>  l_effective_end_date
768       ,p_cmpltd_dt                      =>  p_cmpltd_dt
769       ,p_due_dt                         =>  p_due_dt
770       ,p_rqd_flag                       =>  p_rqd_flag
771       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
772       ,p_per_in_ler_id              =>  l_per_in_ler_id
773       ,p_actn_typ_id                    =>  p_actn_typ_id
774       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
775       ,p_pl_bnf_id                      =>  p_pl_bnf_id
776       ,p_business_group_id              =>  p_business_group_id
777       ,p_pea_attribute_category         =>  p_pea_attribute_category
778       ,p_pea_attribute1                 =>  p_pea_attribute1
779       ,p_pea_attribute2                 =>  p_pea_attribute2
780       ,p_pea_attribute3                 =>  p_pea_attribute3
781       ,p_pea_attribute4                 =>  p_pea_attribute4
782       ,p_pea_attribute5                 =>  p_pea_attribute5
783       ,p_pea_attribute6                 =>  p_pea_attribute6
784       ,p_pea_attribute7                 =>  p_pea_attribute7
785       ,p_pea_attribute8                 =>  p_pea_attribute8
786       ,p_pea_attribute9                 =>  p_pea_attribute9
787       ,p_pea_attribute10                =>  p_pea_attribute10
788       ,p_pea_attribute11                =>  p_pea_attribute11
789       ,p_pea_attribute12                =>  p_pea_attribute12
790       ,p_pea_attribute13                =>  p_pea_attribute13
791       ,p_pea_attribute14                =>  p_pea_attribute14
792       ,p_pea_attribute15                =>  p_pea_attribute15
793       ,p_pea_attribute16                =>  p_pea_attribute16
794       ,p_pea_attribute17                =>  p_pea_attribute17
795       ,p_pea_attribute18                =>  p_pea_attribute18
796       ,p_pea_attribute19                =>  p_pea_attribute19
797       ,p_pea_attribute20                =>  p_pea_attribute20
798       ,p_pea_attribute21                =>  p_pea_attribute21
799       ,p_pea_attribute22                =>  p_pea_attribute22
800       ,p_pea_attribute23                =>  p_pea_attribute23
801       ,p_pea_attribute24                =>  p_pea_attribute24
802       ,p_pea_attribute25                =>  p_pea_attribute25
803       ,p_pea_attribute26                =>  p_pea_attribute26
804       ,p_pea_attribute27                =>  p_pea_attribute27
805       ,p_pea_attribute28                =>  p_pea_attribute28
806       ,p_pea_attribute29                =>  p_pea_attribute29
807       ,p_pea_attribute30                =>  p_pea_attribute30
808       ,p_object_version_number          =>  l_object_version_number
809       ,p_effective_date                 => trunc(p_effective_date)
810       );
811   exception
812     when hr_api.cannot_find_prog_unit then
813       hr_api.cannot_find_prog_unit_error
814         (p_module_name => 'CREATE_PRTT_ENRT_ACTN'
815         ,p_hook_type   => 'AP'
816         );
817     --
818     -- End of API User Hook for the after hook of create_PRTT_ENRT_ACTN
819     --
820   end;
821   --
822   hr_utility.set_location(l_proc, 60);
823   --
824   p_prtt_enrt_actn_id := l_prtt_enrt_actn_id;
825   p_effective_start_date := l_effective_start_date;
826   p_effective_end_date := l_effective_end_date;
827   p_object_version_number := l_object_version_number;
828   --
829   -- if action item is required, suspend the enrollment
830   -- if setting cmpltd_dt to NULL try to unsuspend if
831   -- cmpltd_dt is getting a value
832   --
833   if p_rqd_flag = 'Y' then
834     if p_cmpltd_dt is NULL then
835       suspend_rslt
836         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
837         ,p_post_rslt_flag             => p_post_rslt_flag
838         ,p_effective_date             => p_effective_date
839         ,p_business_group_id          => p_business_group_id
840         ,p_rslt_object_version_number => p_rslt_object_version_number
841         ,p_validate                   => p_validate
842         ,p_datetrack_mode             => hr_api.g_correction);
843       --
844     else
845       --
846       unsuspend_rslt
847         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
848         ,p_post_rslt_flag             => p_post_rslt_flag
849         ,p_effective_date             => p_effective_date
850         ,p_business_group_id          => p_business_group_id
851         ,p_rslt_object_version_number => p_rslt_object_version_number
852         ,p_validate                   => p_validate
853         ,p_datetrack_mode             => hr_api.g_correction
854         ,p_cmpltd_dt                  => p_cmpltd_dt);
855     --
856     end if;
857   end if;
858   --
859   if p_gnrt_cm then
860     --
861     --  Generate Communications
862     --
863     ben_generate_communications.main
864       (p_person_id             => l_person_id
865       ,p_ler_id                => l_ler_id
866       -- CWB Changes.
867       ,p_per_in_ler_id         => l_per_in_ler_id
868       ,p_prtt_enrt_actn_id     => l_prtt_enrt_actn_id
869       ,p_pgm_id                => l_pgm_id
870       ,p_pl_id                 => l_pl_id
871       ,p_pl_typ_id             => l_pl_typ_id
872       ,p_actn_typ_id           => p_actn_typ_id
873       ,p_business_group_id     => p_business_group_id
874       ,p_proc_cd1              => 'ACTNCREATED'
875       ,p_effective_date        => p_effective_date);
876   end if;
877   --
878   -- When in validation only mode raise the Validate_Enabled exception
879   --
880   if p_validate then
881     raise hr_api.validate_enabled;
882   end if;
883   --
884   -- Set all output arguments
885   --
886   hr_utility.set_location(' Leaving:'||l_proc, 70);
887   --
888 exception
889   --
890   when hr_api.validate_enabled
891   then
892     --
893     -- As the Validate_Enabled exception has been raised
894     -- we must rollback to the savepoint
895     --
896     ROLLBACK TO create_PRTT_ENRT_ACTN;
897     --
898     -- Only set output warning arguments
899     -- (Any key or derived arguments must be set to null
900     -- when validation only mode is being used.)
901     --
902     p_prtt_enrt_actn_id := null;
903     p_effective_start_date := null;
904     p_effective_end_date := null;
905     p_object_version_number  := null;
906     hr_utility.set_location(' Leaving:'||l_proc, 80);
907     --
908   when others then
909     --
910     -- A validation or unexpected error has occured
911     --
912     ROLLBACK TO create_PRTT_ENRT_ACTN;
913     raise;
914     --
915 end create_PRTT_ENRT_ACTN;
916 --
917 -- ----------------------------------------------------------------------------
918 -- |--------------------------< update_PRTT_ENRT_ACTN >-----------------------|
919 -- ----------------------------------------------------------------------------
920 --
921 --
922 -- THIS PROCEDURE WAS DUPLICATED.  ONE HAS PER-IN-LER-ID THE OTHER DOESN'T.
923 -- CHANGE BOTH PROCEDURES IF MAKING A CHANGE.
924 --
925 procedure update_PRTT_ENRT_ACTN
926   (p_validate                       in  boolean   default false
927   ,p_post_rslt_flag                 in  varchar2  default 'N'
928   ,p_prtt_enrt_actn_id              in  number
929   ,p_effective_start_date           out nocopy date
930   ,p_effective_end_date             out nocopy date
931   ,p_cmpltd_dt                      in  date      default hr_api.g_date
932   ,p_due_dt                         in  date      default hr_api.g_date
933   ,p_rqd_flag                       in  varchar2  default hr_api.g_varchar2
934   ,p_prtt_enrt_rslt_id              in  number    default hr_api.g_number
935   ,p_per_in_ler_id                  in  number
936   ,p_rslt_object_version_number     in out nocopy number
937   ,p_actn_typ_id                    in  number    default hr_api.g_number
938   ,p_elig_cvrd_dpnt_id              in  number    default hr_api.g_number
939   ,p_pl_bnf_id                      in  number    default hr_api.g_number
940   ,p_business_group_id              in  number    default hr_api.g_number
941   ,p_pea_attribute_category         in  varchar2  default hr_api.g_varchar2
942   ,p_pea_attribute1                 in  varchar2  default hr_api.g_varchar2
943   ,p_pea_attribute2                 in  varchar2  default hr_api.g_varchar2
944   ,p_pea_attribute3                 in  varchar2  default hr_api.g_varchar2
945   ,p_pea_attribute4                 in  varchar2  default hr_api.g_varchar2
946   ,p_pea_attribute5                 in  varchar2  default hr_api.g_varchar2
947   ,p_pea_attribute6                 in  varchar2  default hr_api.g_varchar2
948   ,p_pea_attribute7                 in  varchar2  default hr_api.g_varchar2
949   ,p_pea_attribute8                 in  varchar2  default hr_api.g_varchar2
950   ,p_pea_attribute9                 in  varchar2  default hr_api.g_varchar2
951   ,p_pea_attribute10                in  varchar2  default hr_api.g_varchar2
952   ,p_pea_attribute11                in  varchar2  default hr_api.g_varchar2
953   ,p_pea_attribute12                in  varchar2  default hr_api.g_varchar2
954   ,p_pea_attribute13                in  varchar2  default hr_api.g_varchar2
955   ,p_pea_attribute14                in  varchar2  default hr_api.g_varchar2
956   ,p_pea_attribute15                in  varchar2  default hr_api.g_varchar2
957   ,p_pea_attribute16                in  varchar2  default hr_api.g_varchar2
958   ,p_pea_attribute17                in  varchar2  default hr_api.g_varchar2
959   ,p_pea_attribute18                in  varchar2  default hr_api.g_varchar2
960   ,p_pea_attribute19                in  varchar2  default hr_api.g_varchar2
961   ,p_pea_attribute20                in  varchar2  default hr_api.g_varchar2
962   ,p_pea_attribute21                in  varchar2  default hr_api.g_varchar2
963   ,p_pea_attribute22                in  varchar2  default hr_api.g_varchar2
964   ,p_pea_attribute23                in  varchar2  default hr_api.g_varchar2
965   ,p_pea_attribute24                in  varchar2  default hr_api.g_varchar2
966   ,p_pea_attribute25                in  varchar2  default hr_api.g_varchar2
967   ,p_pea_attribute26                in  varchar2  default hr_api.g_varchar2
968   ,p_pea_attribute27                in  varchar2  default hr_api.g_varchar2
969   ,p_pea_attribute28                in  varchar2  default hr_api.g_varchar2
970   ,p_pea_attribute29                in  varchar2  default hr_api.g_varchar2
971   ,p_pea_attribute30                in  varchar2  default hr_api.g_varchar2
972   ,p_gnrt_cm                        in  boolean   default true
973   ,p_object_version_number          in out nocopy number
974   ,p_effective_date                 in  date
975   ,p_datetrack_mode                 in  varchar2
976   ) is
977   --
978   -- Declare cursors and local variables
979   --
980   cursor c_pea is
981      select pea.effective_start_date,
982             pea.cmpltd_dt
983      from   ben_prtt_enrt_actn_f pea
984      where  pea.prtt_enrt_actn_id = p_prtt_enrt_actn_id
985      and    pea.business_group_id = p_business_group_id
986      and    p_effective_date between
987             pea.effective_start_date and pea.effective_end_date;
988   --
989   l_pea          c_pea%rowtype;
990   --
991   cursor c_pcm is
992      select pcm.per_cm_id,
993             pcm.object_version_number
994      from   ben_per_cm_f pcm
995      where  pcm.prtt_enrt_actn_id = p_prtt_enrt_actn_id
996      and    pcm.business_group_id = p_business_group_id
997      and    p_effective_date between
998             pcm.effective_start_date and pcm.effective_end_date;
999   --
1000   cursor c_prtt_enrt_rslt is
1001     select person_id
1002           ,ler_id
1003           ,pgm_id
1004           ,pl_id
1005           ,pl_typ_id
1006     from ben_prtt_enrt_rslt_f
1007     where prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
1008     and   prtt_enrt_rslt_stat_cd is null
1009     and p_effective_date between
1010     effective_start_date and effective_end_date;
1011   --
1012   l_person_id     ben_prtt_enrt_rslt_f.person_id%TYPE;
1013   l_ler_id        ben_prtt_enrt_rslt_f.ler_id%TYPE;
1014   l_pl_id         ben_prtt_enrt_rslt_f.pl_id%TYPE;
1015   l_pl_typ_id     ben_prtt_enrt_rslt_f.pl_typ_id%TYPE;
1016   l_pgm_id        ben_prtt_enrt_rslt_f.pgm_id%TYPE;
1017   --
1018   l_proc varchar2(72) := g_package||'update_PRTT_ENRT_ACTN';
1019   l_object_version_number ben_prtt_enrt_actn_f.object_version_number%TYPE;
1020   l_effective_start_date ben_prtt_enrt_actn_f.effective_start_date%TYPE;
1021   l_effective_end_date ben_prtt_enrt_actn_f.effective_end_date%TYPE;
1022   l_pcm_effective_start_date date;
1023   l_pcm_effective_end_date   date;
1024   --
1025 begin
1026   --
1027   hr_utility.set_location('Entering:'|| l_proc, 10);
1028   --
1029   -- Issue a savepoint if operating in validation only mode
1030   --
1031   savepoint update_PRTT_ENRT_ACTN;
1032   --
1033   hr_utility.set_location(l_proc, 20);
1034   --
1035   -- Get the completed date and effective start date before the update.
1036   --
1037   open  c_pea;
1038   fetch c_pea into l_pea;
1039   close c_pea;
1040   --
1041   -- Process Logic
1042   --
1043   l_object_version_number := p_object_version_number;
1044   --
1045   begin
1046     --
1047     -- Start of API User Hook for the before hook of update_PRTT_ENRT_ACTN
1048     --
1049     ben_PRTT_ENRT_ACTN_bk2.update_PRTT_ENRT_ACTN_b
1050       (
1051        p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1052       ,p_cmpltd_dt                      =>  p_cmpltd_dt
1053       ,p_due_dt                         =>  p_due_dt
1054       ,p_rqd_flag                       =>  p_rqd_flag
1055       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
1056       ,p_per_in_ler_id                  =>  p_per_in_ler_id
1057       ,p_actn_typ_id                    =>  p_actn_typ_id
1058       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
1059       ,p_pl_bnf_id                      =>  p_pl_bnf_id
1060       ,p_business_group_id              =>  p_business_group_id
1061       ,p_pea_attribute_category         =>  p_pea_attribute_category
1062       ,p_pea_attribute1                 =>  p_pea_attribute1
1063       ,p_pea_attribute2                 =>  p_pea_attribute2
1064       ,p_pea_attribute3                 =>  p_pea_attribute3
1065       ,p_pea_attribute4                 =>  p_pea_attribute4
1066       ,p_pea_attribute5                 =>  p_pea_attribute5
1067       ,p_pea_attribute6                 =>  p_pea_attribute6
1068       ,p_pea_attribute7                 =>  p_pea_attribute7
1069       ,p_pea_attribute8                 =>  p_pea_attribute8
1070       ,p_pea_attribute9                 =>  p_pea_attribute9
1071       ,p_pea_attribute10                =>  p_pea_attribute10
1072       ,p_pea_attribute11                =>  p_pea_attribute11
1073       ,p_pea_attribute12                =>  p_pea_attribute12
1074       ,p_pea_attribute13                =>  p_pea_attribute13
1075       ,p_pea_attribute14                =>  p_pea_attribute14
1076       ,p_pea_attribute15                =>  p_pea_attribute15
1077       ,p_pea_attribute16                =>  p_pea_attribute16
1078       ,p_pea_attribute17                =>  p_pea_attribute17
1079       ,p_pea_attribute18                =>  p_pea_attribute18
1080       ,p_pea_attribute19                =>  p_pea_attribute19
1081       ,p_pea_attribute20                =>  p_pea_attribute20
1082       ,p_pea_attribute21                =>  p_pea_attribute21
1083       ,p_pea_attribute22                =>  p_pea_attribute22
1084       ,p_pea_attribute23                =>  p_pea_attribute23
1085       ,p_pea_attribute24                =>  p_pea_attribute24
1086       ,p_pea_attribute25                =>  p_pea_attribute25
1087       ,p_pea_attribute26                =>  p_pea_attribute26
1088       ,p_pea_attribute27                =>  p_pea_attribute27
1089       ,p_pea_attribute28                =>  p_pea_attribute28
1090       ,p_pea_attribute29                =>  p_pea_attribute29
1091       ,p_pea_attribute30                =>  p_pea_attribute30
1092       ,p_object_version_number          =>  p_object_version_number
1093     ,p_effective_date                      => trunc(p_effective_date)
1094     ,p_datetrack_mode                      => p_datetrack_mode
1095       );
1096   exception
1097     when hr_api.cannot_find_prog_unit then
1098       hr_api.cannot_find_prog_unit_error
1099         (p_module_name => 'UPDATE_PRTT_ENRT_ACTN'
1100         ,p_hook_type   => 'BP'
1101         );
1102     --
1103     -- End of API User Hook for the before hook of update_PRTT_ENRT_ACTN
1104     --
1105   end;
1106   --
1107   ben_pea_upd.upd
1108     (
1109      p_prtt_enrt_actn_id             => p_prtt_enrt_actn_id
1110     ,p_effective_start_date          => l_effective_start_date
1111     ,p_effective_end_date            => l_effective_end_date
1112     ,p_cmpltd_dt                     => p_cmpltd_dt
1113     ,p_due_dt                        => p_due_dt
1114     ,p_rqd_flag                      => p_rqd_flag
1115     ,p_prtt_enrt_rslt_id             => p_prtt_enrt_rslt_id
1116     ,p_per_in_ler_id                 => p_per_in_ler_id
1117     ,p_actn_typ_id                   => p_actn_typ_id
1118     ,p_elig_cvrd_dpnt_id             => p_elig_cvrd_dpnt_id
1119     ,p_pl_bnf_id                     => p_pl_bnf_id
1120     ,p_business_group_id             => p_business_group_id
1121     ,p_pea_attribute_category        => p_pea_attribute_category
1122     ,p_pea_attribute1                => p_pea_attribute1
1123     ,p_pea_attribute2                => p_pea_attribute2
1124     ,p_pea_attribute3                => p_pea_attribute3
1125     ,p_pea_attribute4                => p_pea_attribute4
1126     ,p_pea_attribute5                => p_pea_attribute5
1127     ,p_pea_attribute6                => p_pea_attribute6
1128     ,p_pea_attribute7                => p_pea_attribute7
1129     ,p_pea_attribute8                => p_pea_attribute8
1130     ,p_pea_attribute9                => p_pea_attribute9
1131     ,p_pea_attribute10               => p_pea_attribute10
1132     ,p_pea_attribute11               => p_pea_attribute11
1133     ,p_pea_attribute12               => p_pea_attribute12
1134     ,p_pea_attribute13               => p_pea_attribute13
1135     ,p_pea_attribute14               => p_pea_attribute14
1136     ,p_pea_attribute15               => p_pea_attribute15
1137     ,p_pea_attribute16               => p_pea_attribute16
1138     ,p_pea_attribute17               => p_pea_attribute17
1139     ,p_pea_attribute18               => p_pea_attribute18
1140     ,p_pea_attribute19               => p_pea_attribute19
1141     ,p_pea_attribute20               => p_pea_attribute20
1142     ,p_pea_attribute21               => p_pea_attribute21
1143     ,p_pea_attribute22               => p_pea_attribute22
1144     ,p_pea_attribute23               => p_pea_attribute23
1145     ,p_pea_attribute24               => p_pea_attribute24
1146     ,p_pea_attribute25               => p_pea_attribute25
1147     ,p_pea_attribute26               => p_pea_attribute26
1148     ,p_pea_attribute27               => p_pea_attribute27
1149     ,p_pea_attribute28               => p_pea_attribute28
1150     ,p_pea_attribute29               => p_pea_attribute29
1151     ,p_pea_attribute30               => p_pea_attribute30
1152     ,p_object_version_number         => l_object_version_number
1153     ,p_effective_date                => trunc(p_effective_date)
1154     ,p_datetrack_mode                => p_datetrack_mode
1155     );
1156   --
1157   begin
1158     --
1159     -- Start of API User Hook for the after hook of update_PRTT_ENRT_ACTN
1160     --
1161     ben_PRTT_ENRT_ACTN_bk2.update_PRTT_ENRT_ACTN_a
1162       (
1163        p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1164       ,p_effective_start_date           =>  l_effective_start_date
1165       ,p_effective_end_date             =>  l_effective_end_date
1166       ,p_cmpltd_dt                      =>  p_cmpltd_dt
1167       ,p_due_dt                         =>  p_due_dt
1168       ,p_rqd_flag                       =>  p_rqd_flag
1169       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
1170       ,p_per_in_ler_id                  =>  p_per_in_ler_id
1171       ,p_actn_typ_id                    =>  p_actn_typ_id
1172       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
1173       ,p_pl_bnf_id                      =>  p_pl_bnf_id
1174       ,p_business_group_id              =>  p_business_group_id
1175       ,p_pea_attribute_category         =>  p_pea_attribute_category
1176       ,p_pea_attribute1                 =>  p_pea_attribute1
1177       ,p_pea_attribute2                 =>  p_pea_attribute2
1178       ,p_pea_attribute3                 =>  p_pea_attribute3
1179       ,p_pea_attribute4                 =>  p_pea_attribute4
1180       ,p_pea_attribute5                 =>  p_pea_attribute5
1181       ,p_pea_attribute6                 =>  p_pea_attribute6
1182       ,p_pea_attribute7                 =>  p_pea_attribute7
1183       ,p_pea_attribute8                 =>  p_pea_attribute8
1184       ,p_pea_attribute9                 =>  p_pea_attribute9
1185       ,p_pea_attribute10                =>  p_pea_attribute10
1186       ,p_pea_attribute11                =>  p_pea_attribute11
1187       ,p_pea_attribute12                =>  p_pea_attribute12
1188       ,p_pea_attribute13                =>  p_pea_attribute13
1189       ,p_pea_attribute14                =>  p_pea_attribute14
1190       ,p_pea_attribute15                =>  p_pea_attribute15
1191       ,p_pea_attribute16                =>  p_pea_attribute16
1192       ,p_pea_attribute17                =>  p_pea_attribute17
1193       ,p_pea_attribute18                =>  p_pea_attribute18
1194       ,p_pea_attribute19                =>  p_pea_attribute19
1195       ,p_pea_attribute20                =>  p_pea_attribute20
1196       ,p_pea_attribute21                =>  p_pea_attribute21
1197       ,p_pea_attribute22                =>  p_pea_attribute22
1198       ,p_pea_attribute23                =>  p_pea_attribute23
1199       ,p_pea_attribute24                =>  p_pea_attribute24
1200       ,p_pea_attribute25                =>  p_pea_attribute25
1201       ,p_pea_attribute26                =>  p_pea_attribute26
1202       ,p_pea_attribute27                =>  p_pea_attribute27
1203       ,p_pea_attribute28                =>  p_pea_attribute28
1204       ,p_pea_attribute29                =>  p_pea_attribute29
1205       ,p_pea_attribute30                =>  p_pea_attribute30
1206       ,p_object_version_number          =>  l_object_version_number
1207       ,p_effective_date                     => trunc(p_effective_date)
1208       ,p_datetrack_mode                     => p_datetrack_mode
1209       );
1210   exception
1211     when hr_api.cannot_find_prog_unit then
1212       hr_api.cannot_find_prog_unit_error
1213         (p_module_name => 'UPDATE_PRTT_ENRT_ACTN'
1214         ,p_hook_type   => 'AP'
1215         );
1216     --
1217     -- End of API User Hook for the after hook of update_PRTT_ENRT_ACTN
1218     --
1219   end;
1220   --
1221   hr_utility.set_location(l_proc, 60);
1222   --
1223   -- Set all output arguments
1224   --
1225   p_object_version_number := l_object_version_number;
1226   p_effective_start_date := l_effective_start_date;
1227   p_effective_end_date := l_effective_end_date;
1228   --
1229   -- suspend the enrollment if setting cmpltd_dt to NULL
1230   -- do not suspend if cmpltd_dt is getting a value
1231   -- instead if cmpltd_dt not null check if all others are also
1232   -- completed and if allcmpltd_dt for this participant are not null
1233   -- then unsuspend the enrollment
1234   --
1235   if p_rqd_flag = 'Y' then
1236     if p_cmpltd_dt is NULL then
1237     --
1238       suspend_rslt
1239         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
1240         ,p_post_rslt_flag             => p_post_rslt_flag
1241         ,p_effective_date             => p_effective_date
1242         ,p_business_group_id          => p_business_group_id
1243         ,p_rslt_object_version_number => p_rslt_object_version_number
1244         ,p_validate                   => p_validate
1245         ,p_datetrack_mode             => p_datetrack_mode);
1246     --
1247     else
1248     --
1249       unsuspend_rslt
1250         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
1251         ,p_post_rslt_flag             => p_post_rslt_flag
1252         ,p_effective_date             => p_effective_date
1253         ,p_business_group_id          => p_business_group_id
1254         ,p_rslt_object_version_number => p_rslt_object_version_number
1255         ,p_validate                   => p_validate
1256         ,p_datetrack_mode             => p_datetrack_mode
1257         ,p_cmpltd_dt                  => p_cmpltd_dt );
1258     --
1259     end if;
1260    end if;
1261   --
1262   if p_gnrt_cm then
1263     if p_cmpltd_dt is not null then
1264       --
1265       if l_pea.cmpltd_dt is null and
1266          l_pea.effective_start_date = p_effective_date then
1267          --
1268          -- Action Item completed and started on the same day.
1269          --
1270          -- Delete communications for the action item as the action item just
1271          -- started and ended. The communications got generated due to the
1272          -- way we handle action items.
1273          --
1274          for l_pcm in c_pcm loop
1275             --
1276             ben_per_cm_api.delete_per_cm
1277                  (p_per_cm_id             => l_pcm.per_cm_id,
1278                   p_effective_start_date  => l_pcm_effective_start_date,
1279                   p_effective_end_date    => l_pcm_effective_end_date,
1280                   p_object_version_number => l_pcm.object_version_number,
1281                   p_effective_date        => p_effective_date,
1282                   p_datetrack_mode        => hr_api.g_zap);
1283             --
1284          end loop;
1285          --
1286       else
1287          --
1288          open c_prtt_enrt_rslt;
1289          fetch c_prtt_enrt_rslt into l_person_id
1290                                     ,l_ler_id
1291                                     ,l_pgm_id
1292                                     ,l_pl_id
1293                                     ,l_pl_typ_id;
1294          if c_prtt_enrt_rslt%notfound then
1295            close c_prtt_enrt_rslt;
1296            fnd_message.set_name('BEN','BEN_91916_ENRT_TABLE_NOT_FOUND');
1297            fnd_message.set_token('TABLE','BEN_PRTT_ENRT_RSLT_F');
1298            fnd_message.raise_error;
1299          end if;
1300          close c_prtt_enrt_rslt;
1301          --
1302          --  Generate Communications
1303          --
1304          ben_generate_communications.main
1305            (p_person_id             => l_person_id
1306            ,p_ler_id                => l_ler_id
1307            -- CWB Changes
1308            ,p_per_in_ler_id         => p_per_in_ler_id
1309            ,p_prtt_enrt_actn_id     => p_prtt_enrt_actn_id
1310            ,p_pgm_id                => l_pgm_id
1311            ,p_pl_id                 => l_pl_id
1312            ,p_pl_typ_id             => l_pl_typ_id
1313            ,p_actn_typ_id           => p_actn_typ_id
1314            ,p_business_group_id     => p_business_group_id
1315            ,p_proc_cd1              => 'ACTNCMPL'
1316            ,p_effective_date        => p_effective_date);
1317          --
1318       end if;
1319       --
1320     end if;
1321     --
1322   end if;
1323   --
1324   -- When in validation only mode raise the Validate_Enabled exception
1325   --
1326   if p_validate then
1327     raise hr_api.validate_enabled;
1328   end if;
1329   --
1330   hr_utility.set_location(' Leaving:'||l_proc, 70);
1331   --
1332 exception
1333   --
1334   when hr_api.validate_enabled then
1335     --
1336     -- As the Validate_Enabled exception has been raised
1337     -- we must rollback to the savepoint
1338     --
1339     ROLLBACK TO update_PRTT_ENRT_ACTN;
1340     --
1341     -- Only set output warning arguments
1342     -- (Any key or derived arguments must be set to null
1343     -- when validation only mode is being used.)
1344     --
1345     p_effective_start_date := null;
1346     p_effective_end_date := null;
1347     hr_utility.set_location(' Leaving:'||l_proc, 80);
1348     --
1349   when others then
1350     --
1351     -- A validation or unexpected error has occured
1352     --
1353     ROLLBACK TO update_PRTT_ENRT_ACTN;
1354     p_object_version_number := l_object_version_number;
1355     p_effective_start_date := null;
1356     p_effective_end_date := null;
1357 
1358     raise;
1359     --
1360 end update_PRTT_ENRT_ACTN;
1361 --
1362 -- ----------------------------------------------------------------------------
1363 -- |--------------------------< update_PRTT_ENRT_ACTN >-----------------------|
1364 -- ----------------------------------------------------------------------------
1365 --
1366 --
1367 -- THIS PROCEDURE WAS DUPLICATED.  ONE HAS PER-IN-LER-ID THE OTHER DOESN'T.
1368 -- CHANGE BOTH PROCEDURES IF MAKING A CHANGE.
1369 --
1370 procedure update_PRTT_ENRT_ACTN
1371   (p_validate                       in  boolean   default false
1372   ,p_post_rslt_flag                 in  varchar2  default 'N'
1373   ,p_prtt_enrt_actn_id              in  number
1374   ,p_effective_start_date           out nocopy date
1375   ,p_effective_end_date             out nocopy date
1376   ,p_cmpltd_dt                      in  date      default hr_api.g_date
1377   ,p_due_dt                         in  date      default hr_api.g_date
1378   ,p_rqd_flag                       in  varchar2  default hr_api.g_varchar2
1379   ,p_prtt_enrt_rslt_id              in  number    default hr_api.g_number
1380   ,p_rslt_object_version_number     in out nocopy number
1381   ,p_actn_typ_id                    in  number    default hr_api.g_number
1382   ,p_elig_cvrd_dpnt_id              in  number    default hr_api.g_number
1383   ,p_pl_bnf_id                      in  number    default hr_api.g_number
1384   ,p_business_group_id              in  number    default hr_api.g_number
1385   ,p_pea_attribute_category         in  varchar2  default hr_api.g_varchar2
1386   ,p_pea_attribute1                 in  varchar2  default hr_api.g_varchar2
1387   ,p_pea_attribute2                 in  varchar2  default hr_api.g_varchar2
1388   ,p_pea_attribute3                 in  varchar2  default hr_api.g_varchar2
1389   ,p_pea_attribute4                 in  varchar2  default hr_api.g_varchar2
1390   ,p_pea_attribute5                 in  varchar2  default hr_api.g_varchar2
1391   ,p_pea_attribute6                 in  varchar2  default hr_api.g_varchar2
1392   ,p_pea_attribute7                 in  varchar2  default hr_api.g_varchar2
1393   ,p_pea_attribute8                 in  varchar2  default hr_api.g_varchar2
1394   ,p_pea_attribute9                 in  varchar2  default hr_api.g_varchar2
1395   ,p_pea_attribute10                in  varchar2  default hr_api.g_varchar2
1396   ,p_pea_attribute11                in  varchar2  default hr_api.g_varchar2
1397   ,p_pea_attribute12                in  varchar2  default hr_api.g_varchar2
1398   ,p_pea_attribute13                in  varchar2  default hr_api.g_varchar2
1399   ,p_pea_attribute14                in  varchar2  default hr_api.g_varchar2
1400   ,p_pea_attribute15                in  varchar2  default hr_api.g_varchar2
1401   ,p_pea_attribute16                in  varchar2  default hr_api.g_varchar2
1402   ,p_pea_attribute17                in  varchar2  default hr_api.g_varchar2
1403   ,p_pea_attribute18                in  varchar2  default hr_api.g_varchar2
1404   ,p_pea_attribute19                in  varchar2  default hr_api.g_varchar2
1405   ,p_pea_attribute20                in  varchar2  default hr_api.g_varchar2
1406   ,p_pea_attribute21                in  varchar2  default hr_api.g_varchar2
1407   ,p_pea_attribute22                in  varchar2  default hr_api.g_varchar2
1408   ,p_pea_attribute23                in  varchar2  default hr_api.g_varchar2
1409   ,p_pea_attribute24                in  varchar2  default hr_api.g_varchar2
1410   ,p_pea_attribute25                in  varchar2  default hr_api.g_varchar2
1411   ,p_pea_attribute26                in  varchar2  default hr_api.g_varchar2
1412   ,p_pea_attribute27                in  varchar2  default hr_api.g_varchar2
1413   ,p_pea_attribute28                in  varchar2  default hr_api.g_varchar2
1414   ,p_pea_attribute29                in  varchar2  default hr_api.g_varchar2
1415   ,p_pea_attribute30                in  varchar2  default hr_api.g_varchar2
1416   ,p_gnrt_cm                        in  boolean   default true
1417   ,p_object_version_number          in out nocopy number
1418   ,p_effective_date                 in  date
1419   ,p_datetrack_mode                 in  varchar2
1420   ) is
1421   --
1422   -- Declare cursors and local variables
1423   --
1424   cursor c_pea is
1425      select pea.effective_start_date,
1426             pea.cmpltd_dt
1427      from   ben_prtt_enrt_actn_f pea
1428      where  pea.prtt_enrt_actn_id = p_prtt_enrt_actn_id
1429      and    pea.business_group_id = p_business_group_id
1430      and    p_effective_date between
1431             pea.effective_start_date and pea.effective_end_date;
1432   --
1433   l_pea          c_pea%rowtype;
1434   --
1435   cursor c_pcm is
1436      select pcm.per_cm_id,
1437             pcm.object_version_number
1438      from   ben_per_cm_f pcm
1439      where  pcm.prtt_enrt_actn_id = p_prtt_enrt_actn_id
1440      and    pcm.business_group_id = p_business_group_id
1441      and    p_effective_date between
1442             pcm.effective_start_date and pcm.effective_end_date;
1443   --
1444   cursor c_prtt_enrt_rslt is
1445     select person_id
1446           ,ler_id
1447           ,pgm_id
1448           ,pl_id
1449           ,pl_typ_id
1450           ,per_in_ler_id
1451     from ben_prtt_enrt_rslt_f
1452     where prtt_enrt_rslt_id = p_prtt_enrt_rslt_id
1453     and   prtt_enrt_rslt_stat_cd is null
1454     and p_effective_date between
1455     effective_start_date and effective_end_date;
1456   --
1457   l_person_id     ben_prtt_enrt_rslt_f.person_id%TYPE;
1458   l_ler_id        ben_prtt_enrt_rslt_f.ler_id%TYPE;
1459   l_pl_id         ben_prtt_enrt_rslt_f.pl_id%TYPE;
1460   l_pl_typ_id     ben_prtt_enrt_rslt_f.pl_typ_id%TYPE;
1461   l_pgm_id        ben_prtt_enrt_rslt_f.pgm_id%TYPE;
1462   l_per_in_ler_id ben_prtt_enrt_rslt_f.per_in_ler_id%TYPE;
1463   --
1464   l_proc varchar2(72) := g_package||'update_PRTT_ENRT_ACTN';
1465   l_object_version_number ben_prtt_enrt_actn_f.object_version_number%TYPE;
1466   l_effective_start_date ben_prtt_enrt_actn_f.effective_start_date%TYPE;
1467   l_effective_end_date ben_prtt_enrt_actn_f.effective_end_date%TYPE;
1468   l_pcm_effective_start_date date;
1469   l_pcm_effective_end_date   date;
1470   --
1471 begin
1472   --
1473   hr_utility.set_location('Entering:'|| l_proc, 10);
1474   --
1475   -- Issue a savepoint if operating in validation only mode
1476   --
1477   savepoint update_PRTT_ENRT_ACTN;
1478   --
1479   hr_utility.set_location(l_proc, 20);
1480   --
1481   -- Get the completed date and effective start date before the update.
1482   --
1483   open  c_pea;
1484   fetch c_pea into l_pea;
1485   close c_pea;
1486   --
1487   -- Process Logic
1488   --
1489   l_object_version_number := p_object_version_number;
1490   --
1491   begin
1492     open c_prtt_enrt_rslt;
1493     fetch c_prtt_enrt_rslt into l_person_id
1494                                ,l_ler_id
1495                                ,l_pgm_id
1496                                ,l_pl_id
1497                                ,l_pl_typ_id
1498                                ,l_per_in_ler_id;
1499     if c_prtt_enrt_rslt%notfound then
1500       close c_prtt_enrt_rslt;
1501       fnd_message.set_name('BEN','BEN_91916_ENRT_TABLE_NOT_FOUND');
1502       fnd_message.set_token('TABLE','BEN_PRTT_ENRT_RSLT_F');
1503       fnd_message.raise_error;
1504     end if;
1505     close c_prtt_enrt_rslt;
1506     --
1507     -- Start of API User Hook for the before hook of update_PRTT_ENRT_ACTN
1508     --
1509     ben_PRTT_ENRT_ACTN_bk2.update_PRTT_ENRT_ACTN_b
1510       (
1511        p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1512       ,p_cmpltd_dt                      =>  p_cmpltd_dt
1513       ,p_due_dt                         =>  p_due_dt
1514       ,p_rqd_flag                       =>  p_rqd_flag
1515       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
1516       ,p_per_in_ler_id              =>  l_per_in_ler_id
1517       ,p_actn_typ_id                    =>  p_actn_typ_id
1518       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
1519       ,p_pl_bnf_id                      =>  p_pl_bnf_id
1520       ,p_business_group_id              =>  p_business_group_id
1521       ,p_pea_attribute_category         =>  p_pea_attribute_category
1522       ,p_pea_attribute1                 =>  p_pea_attribute1
1523       ,p_pea_attribute2                 =>  p_pea_attribute2
1524       ,p_pea_attribute3                 =>  p_pea_attribute3
1525       ,p_pea_attribute4                 =>  p_pea_attribute4
1526       ,p_pea_attribute5                 =>  p_pea_attribute5
1527       ,p_pea_attribute6                 =>  p_pea_attribute6
1528       ,p_pea_attribute7                 =>  p_pea_attribute7
1529       ,p_pea_attribute8                 =>  p_pea_attribute8
1530       ,p_pea_attribute9                 =>  p_pea_attribute9
1531       ,p_pea_attribute10                =>  p_pea_attribute10
1532       ,p_pea_attribute11                =>  p_pea_attribute11
1533       ,p_pea_attribute12                =>  p_pea_attribute12
1534       ,p_pea_attribute13                =>  p_pea_attribute13
1535       ,p_pea_attribute14                =>  p_pea_attribute14
1536       ,p_pea_attribute15                =>  p_pea_attribute15
1537       ,p_pea_attribute16                =>  p_pea_attribute16
1538       ,p_pea_attribute17                =>  p_pea_attribute17
1539       ,p_pea_attribute18                =>  p_pea_attribute18
1540       ,p_pea_attribute19                =>  p_pea_attribute19
1541       ,p_pea_attribute20                =>  p_pea_attribute20
1542       ,p_pea_attribute21                =>  p_pea_attribute21
1543       ,p_pea_attribute22                =>  p_pea_attribute22
1544       ,p_pea_attribute23                =>  p_pea_attribute23
1545       ,p_pea_attribute24                =>  p_pea_attribute24
1546       ,p_pea_attribute25                =>  p_pea_attribute25
1547       ,p_pea_attribute26                =>  p_pea_attribute26
1548       ,p_pea_attribute27                =>  p_pea_attribute27
1549       ,p_pea_attribute28                =>  p_pea_attribute28
1550       ,p_pea_attribute29                =>  p_pea_attribute29
1551       ,p_pea_attribute30                =>  p_pea_attribute30
1552       ,p_object_version_number          =>  p_object_version_number
1553     ,p_effective_date                      => trunc(p_effective_date)
1554     ,p_datetrack_mode                      => p_datetrack_mode
1555       );
1556   exception
1557     when hr_api.cannot_find_prog_unit then
1558       hr_api.cannot_find_prog_unit_error
1559         (p_module_name => 'UPDATE_PRTT_ENRT_ACTN'
1560         ,p_hook_type   => 'BP'
1561         );
1562     --
1563     -- End of API User Hook for the before hook of update_PRTT_ENRT_ACTN
1564     --
1565   end;
1566   --
1567   ben_pea_upd.upd
1568     (
1569      p_prtt_enrt_actn_id             => p_prtt_enrt_actn_id
1570     ,p_effective_start_date          => l_effective_start_date
1571     ,p_effective_end_date            => l_effective_end_date
1572     ,p_cmpltd_dt                     => p_cmpltd_dt
1573     ,p_due_dt                        => p_due_dt
1574     ,p_rqd_flag                      => p_rqd_flag
1575     ,p_prtt_enrt_rslt_id             => p_prtt_enrt_rslt_id
1576     ,p_per_in_ler_id             => l_per_in_ler_id
1577     ,p_actn_typ_id                   => p_actn_typ_id
1578     ,p_elig_cvrd_dpnt_id             => p_elig_cvrd_dpnt_id
1579     ,p_pl_bnf_id                     => p_pl_bnf_id
1580     ,p_business_group_id             => p_business_group_id
1581     ,p_pea_attribute_category        => p_pea_attribute_category
1582     ,p_pea_attribute1                => p_pea_attribute1
1583     ,p_pea_attribute2                => p_pea_attribute2
1584     ,p_pea_attribute3                => p_pea_attribute3
1585     ,p_pea_attribute4                => p_pea_attribute4
1586     ,p_pea_attribute5                => p_pea_attribute5
1587     ,p_pea_attribute6                => p_pea_attribute6
1588     ,p_pea_attribute7                => p_pea_attribute7
1589     ,p_pea_attribute8                => p_pea_attribute8
1590     ,p_pea_attribute9                => p_pea_attribute9
1591     ,p_pea_attribute10               => p_pea_attribute10
1592     ,p_pea_attribute11               => p_pea_attribute11
1593     ,p_pea_attribute12               => p_pea_attribute12
1594     ,p_pea_attribute13               => p_pea_attribute13
1595     ,p_pea_attribute14               => p_pea_attribute14
1596     ,p_pea_attribute15               => p_pea_attribute15
1597     ,p_pea_attribute16               => p_pea_attribute16
1598     ,p_pea_attribute17               => p_pea_attribute17
1599     ,p_pea_attribute18               => p_pea_attribute18
1600     ,p_pea_attribute19               => p_pea_attribute19
1601     ,p_pea_attribute20               => p_pea_attribute20
1602     ,p_pea_attribute21               => p_pea_attribute21
1603     ,p_pea_attribute22               => p_pea_attribute22
1604     ,p_pea_attribute23               => p_pea_attribute23
1605     ,p_pea_attribute24               => p_pea_attribute24
1606     ,p_pea_attribute25               => p_pea_attribute25
1607     ,p_pea_attribute26               => p_pea_attribute26
1608     ,p_pea_attribute27               => p_pea_attribute27
1609     ,p_pea_attribute28               => p_pea_attribute28
1610     ,p_pea_attribute29               => p_pea_attribute29
1611     ,p_pea_attribute30               => p_pea_attribute30
1612     ,p_object_version_number         => l_object_version_number
1613     ,p_effective_date                => trunc(p_effective_date)
1614     ,p_datetrack_mode                => p_datetrack_mode
1615     );
1616   --
1617   begin
1618     --
1619     -- Start of API User Hook for the after hook of update_PRTT_ENRT_ACTN
1620     --
1621     ben_PRTT_ENRT_ACTN_bk2.update_PRTT_ENRT_ACTN_a
1622       (
1623        p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1624       ,p_effective_start_date           =>  l_effective_start_date
1625       ,p_effective_end_date             =>  l_effective_end_date
1626       ,p_cmpltd_dt                      =>  p_cmpltd_dt
1627       ,p_due_dt                         =>  p_due_dt
1628       ,p_rqd_flag                       =>  p_rqd_flag
1629       ,p_prtt_enrt_rslt_id              =>  p_prtt_enrt_rslt_id
1630       ,p_per_in_ler_id              =>  l_per_in_ler_id
1631       ,p_actn_typ_id                    =>  p_actn_typ_id
1632       ,p_elig_cvrd_dpnt_id              =>  p_elig_cvrd_dpnt_id
1633       ,p_pl_bnf_id                      =>  p_pl_bnf_id
1634       ,p_business_group_id              =>  p_business_group_id
1635       ,p_pea_attribute_category         =>  p_pea_attribute_category
1636       ,p_pea_attribute1                 =>  p_pea_attribute1
1637       ,p_pea_attribute2                 =>  p_pea_attribute2
1638       ,p_pea_attribute3                 =>  p_pea_attribute3
1639       ,p_pea_attribute4                 =>  p_pea_attribute4
1640       ,p_pea_attribute5                 =>  p_pea_attribute5
1641       ,p_pea_attribute6                 =>  p_pea_attribute6
1642       ,p_pea_attribute7                 =>  p_pea_attribute7
1643       ,p_pea_attribute8                 =>  p_pea_attribute8
1644       ,p_pea_attribute9                 =>  p_pea_attribute9
1645       ,p_pea_attribute10                =>  p_pea_attribute10
1646       ,p_pea_attribute11                =>  p_pea_attribute11
1647       ,p_pea_attribute12                =>  p_pea_attribute12
1648       ,p_pea_attribute13                =>  p_pea_attribute13
1649       ,p_pea_attribute14                =>  p_pea_attribute14
1650       ,p_pea_attribute15                =>  p_pea_attribute15
1651       ,p_pea_attribute16                =>  p_pea_attribute16
1652       ,p_pea_attribute17                =>  p_pea_attribute17
1653       ,p_pea_attribute18                =>  p_pea_attribute18
1654       ,p_pea_attribute19                =>  p_pea_attribute19
1655       ,p_pea_attribute20                =>  p_pea_attribute20
1656       ,p_pea_attribute21                =>  p_pea_attribute21
1657       ,p_pea_attribute22                =>  p_pea_attribute22
1658       ,p_pea_attribute23                =>  p_pea_attribute23
1659       ,p_pea_attribute24                =>  p_pea_attribute24
1660       ,p_pea_attribute25                =>  p_pea_attribute25
1661       ,p_pea_attribute26                =>  p_pea_attribute26
1662       ,p_pea_attribute27                =>  p_pea_attribute27
1663       ,p_pea_attribute28                =>  p_pea_attribute28
1664       ,p_pea_attribute29                =>  p_pea_attribute29
1665       ,p_pea_attribute30                =>  p_pea_attribute30
1666       ,p_object_version_number          =>  l_object_version_number
1667       ,p_effective_date                     => trunc(p_effective_date)
1668       ,p_datetrack_mode                     => p_datetrack_mode
1669       );
1670   exception
1671     when hr_api.cannot_find_prog_unit then
1672       hr_api.cannot_find_prog_unit_error
1673         (p_module_name => 'UPDATE_PRTT_ENRT_ACTN'
1674         ,p_hook_type   => 'AP'
1675         );
1676     --
1677     -- End of API User Hook for the after hook of update_PRTT_ENRT_ACTN
1678     --
1679   end;
1680   --
1681   hr_utility.set_location(l_proc, 60);
1682   --
1683   -- Set all output arguments
1684   --
1685   p_object_version_number := l_object_version_number;
1686   p_effective_start_date := l_effective_start_date;
1687   p_effective_end_date := l_effective_end_date;
1688   --
1689   -- suspend the enrollment if setting cmpltd_dt to NULL
1690   -- do not suspend if cmpltd_dt is getting a value
1691   -- instead if cmpltd_dt not null check if all others are also
1692   -- completed and if allcmpltd_dt for this participant are not null
1693   -- then unsuspend the enrollment
1694   --
1695   if p_rqd_flag = 'Y' then
1696     if p_cmpltd_dt is NULL then
1697     --
1698       suspend_rslt
1699         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
1700         ,p_post_rslt_flag             => p_post_rslt_flag
1701         ,p_effective_date             => p_effective_date
1702         ,p_business_group_id          => p_business_group_id
1703         ,p_rslt_object_version_number => p_rslt_object_version_number
1704         ,p_validate                   => p_validate
1705         ,p_datetrack_mode             => p_datetrack_mode);
1706     --
1707     else
1708     --
1709       unsuspend_rslt
1710         (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
1711         ,p_post_rslt_flag             => p_post_rslt_flag
1712         ,p_effective_date             => p_effective_date
1713         ,p_business_group_id          => p_business_group_id
1714         ,p_rslt_object_version_number => p_rslt_object_version_number
1715         ,p_validate                   => p_validate
1716         ,p_datetrack_mode             => p_datetrack_mode
1717         ,p_cmpltd_dt                  => p_cmpltd_dt );
1718     --
1719     end if;
1720    end if;
1721   --
1722   if p_gnrt_cm then
1723     if p_cmpltd_dt is not null then
1724       --
1725       if l_pea.cmpltd_dt is null and
1726          l_pea.effective_start_date = p_effective_date then
1727          --
1728          -- Action Item completed and started on the same day.
1729          --
1730          -- Delete communications for the action item as the action item just
1731          -- started and ended. The communications got generated due to the
1732          -- way we handle action items.
1733          --
1734          for l_pcm in c_pcm loop
1735             --
1736             ben_per_cm_api.delete_per_cm
1737                  (p_per_cm_id             => l_pcm.per_cm_id,
1738                   p_effective_start_date  => l_pcm_effective_start_date,
1739                   p_effective_end_date    => l_pcm_effective_end_date,
1740                   p_object_version_number => l_pcm.object_version_number,
1741                   p_effective_date        => p_effective_date,
1742                   p_datetrack_mode        => hr_api.g_zap);
1743             --
1744          end loop;
1745          --
1746       else
1747          --
1748          --  Generate Communications
1749          --
1750          ben_generate_communications.main
1751            (p_person_id             => l_person_id
1752            ,p_ler_id                => l_ler_id
1753            -- CWB Changes
1754            ,p_per_in_ler_id         => l_per_in_ler_id
1755            ,p_prtt_enrt_actn_id     => p_prtt_enrt_actn_id
1756            ,p_pgm_id                => l_pgm_id
1757            ,p_pl_id                 => l_pl_id
1758            ,p_pl_typ_id             => l_pl_typ_id
1759            ,p_actn_typ_id           => p_actn_typ_id
1760            ,p_business_group_id     => p_business_group_id
1761            ,p_proc_cd1              => 'ACTNCMPL'
1762            ,p_effective_date        => p_effective_date);
1763          --
1764       end if;
1765       --
1766     end if;
1767     --
1768   end if;
1769   --
1770   -- When in validation only mode raise the Validate_Enabled exception
1771   --
1772   if p_validate then
1773     raise hr_api.validate_enabled;
1774   end if;
1775   --
1776   hr_utility.set_location(' Leaving:'||l_proc, 70);
1777   --
1778 exception
1779   --
1780   when hr_api.validate_enabled then
1781     --
1782     -- As the Validate_Enabled exception has been raised
1783     -- we must rollback to the savepoint
1784     --
1785     ROLLBACK TO update_PRTT_ENRT_ACTN;
1786     --
1787     -- Only set output warning arguments
1788     -- (Any key or derived arguments must be set to null
1789     -- when validation only mode is being used.)
1790     --
1791     p_effective_start_date := null;
1792     p_effective_end_date := null;
1793     hr_utility.set_location(' Leaving:'||l_proc, 80);
1794     --
1795   when others then
1796     --
1797     -- A validation or unexpected error has occured
1798     --
1799     ROLLBACK TO update_PRTT_ENRT_ACTN;
1800     p_object_version_number := l_object_version_number;
1801     p_effective_start_date := null;
1802     p_effective_end_date := null;
1803 
1804     raise;
1805     --
1806 end update_PRTT_ENRT_ACTN;
1807 -- ----------------------------------------------------------------------------
1808 -- |------------------------< delete_PRTT_ENRT_ACTN >----------------------|
1809 -- ----------------------------------------------------------------------------
1810 --
1811 procedure delete_PRTT_ENRT_ACTN
1812   (p_validate                       in     boolean  default false
1813   ,p_prtt_enrt_actn_id              in     number
1814   ,p_business_group_id              in     number
1815   ,p_effective_date                 in     date
1816   ,p_datetrack_mode                 in     varchar2
1817   ,p_object_version_number          in out nocopy number
1818   ,p_prtt_enrt_rslt_id              in     number
1819   ,p_rslt_object_version_number     in out nocopy number
1820   ,p_post_rslt_flag                 in     varchar2 default 'N'
1821   ,p_unsuspend_enrt_flag            in     varchar2 default 'Y'
1822   ,p_gnrt_cm                        in     boolean default true
1823   ,p_effective_start_date              out nocopy date
1824   ,p_effective_end_date                out nocopy date
1825   )
1826 is
1827   --
1828   -- Declare cursors and local variables
1829   --
1830   -- Cursor to find dpnt ctfns.
1831   --
1832   cursor c_dpnt_ctfns
1833   is
1834   select cvrd_dpnt_ctfn_prvdd_id,
1835          object_version_number,
1836          effective_start_date,
1837          effective_end_date
1838     from ben_cvrd_dpnt_ctfn_prvdd_f
1839    where prtt_enrt_actn_id = p_prtt_enrt_actn_id
1840      and business_group_id = p_business_group_id
1841      and p_effective_date between effective_start_date
1842                               and effective_end_date;
1843   --
1844   -- Cursor to find bnf ctfns.
1845   --
1846   cursor c_bnf_ctfns
1847   is
1848   select pl_bnf_ctfn_prvdd_id,
1849          object_version_number,
1850          effective_start_date,
1851          effective_end_date
1852     from ben_pl_bnf_ctfn_prvdd_f
1853    where prtt_enrt_actn_id = p_prtt_enrt_actn_id
1854      and business_group_id = p_business_group_id
1855      and p_effective_date between effective_start_date
1856                               and effective_end_date;
1857   --
1858   -- Cursor to find enrt ctfns.
1859   --
1860   cursor c_enrt_ctfns
1861   is
1862   select prtt_enrt_ctfn_prvdd_id,
1863          object_version_number,
1864          effective_start_date,
1865          effective_end_date
1866     from ben_prtt_enrt_ctfn_prvdd_f
1867    where prtt_enrt_actn_id = p_prtt_enrt_actn_id
1868      and business_group_id = p_business_group_id
1869      and p_effective_date between effective_start_date
1870                               and effective_end_date;
1871   --
1872   -- Cursor to find person communications.
1873   --
1874   cursor c_per_cm
1875   is
1876   select per_cm_id,
1877          object_version_number,
1878          effective_start_date,
1879          effective_end_date
1880     from ben_per_cm_f
1881    where prtt_enrt_actn_id = p_prtt_enrt_actn_id
1882      and business_group_id = p_business_group_id
1883      and p_effective_date between effective_start_date
1884                               and effective_end_date;
1885   --
1886   --
1887   l_proc varchar2(72) := g_package||'delete_PRTT_ENRT_ACTN';
1888   l_object_version_number ben_prtt_enrt_actn_f.object_version_number%TYPE;
1889   l_effective_start_date ben_prtt_enrt_actn_f.effective_start_date%TYPE;
1890   l_effective_end_date ben_prtt_enrt_actn_f.effective_end_date%TYPE;
1891   --
1892 begin
1893   --
1894   hr_utility.set_location('Entering:'|| l_proc, 10);
1895   --
1896 
1897   -- Issue a savepoint if operating in validation only mode
1898   --
1899   savepoint delete_PRTT_ENRT_ACTN;
1900   --
1901   hr_utility.set_location(l_proc, 20);
1902   --
1903   -- Process Logic
1904   --
1905   l_object_version_number := p_object_version_number;
1906   --
1907   --
1908   begin
1909     --
1910     -- Start of API User Hook for the before hook of delete_PRTT_ENRT_ACTN
1911     --
1912     ben_PRTT_ENRT_ACTN_bk3.delete_PRTT_ENRT_ACTN_b
1913       (p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1914       ,p_object_version_number          =>  p_object_version_number
1915       ,p_effective_date                 => trunc(p_effective_date)
1916       ,p_datetrack_mode                 => p_datetrack_mode);
1917     --
1918   exception
1919     --
1920     when hr_api.cannot_find_prog_unit then
1921       hr_api.cannot_find_prog_unit_error
1922         (p_module_name => 'DELETE_PRTT_ENRT_ACTN'
1923         ,p_hook_type   => 'BP');
1924     --
1925     -- End of API User Hook for the before hook of delete_PRTT_ENRT_ACTN
1926     --
1927   end;
1928   --
1929   --Bug 5693086
1930   if p_datetrack_mode = hr_api.g_delete_next_change or p_datetrack_mode = hr_api.g_future_change then
1931   --
1932   ben_pea_del.del
1933     (p_prtt_enrt_actn_id             => p_prtt_enrt_actn_id
1934     ,p_effective_start_date          => l_effective_start_date
1935     ,p_effective_end_date            => l_effective_end_date
1936     ,p_object_version_number         => l_object_version_number
1937     ,p_effective_date                => p_effective_date
1938     ,p_datetrack_mode                => p_datetrack_mode);
1939   --
1940   begin
1941     --
1942     -- Start of API User Hook for the after hook of delete_PRTT_ENRT_ACTN
1943     --
1944     ben_PRTT_ENRT_ACTN_bk3.delete_PRTT_ENRT_ACTN_a
1945       (p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
1946       ,p_effective_start_date           =>  l_effective_start_date
1947       ,p_effective_end_date             =>  l_effective_end_date
1948       ,p_object_version_number          =>  l_object_version_number
1949       ,p_effective_date                 => trunc(p_effective_date)
1950       ,p_datetrack_mode                 => p_datetrack_mode);
1951     --
1952   exception
1953     --
1954     when hr_api.cannot_find_prog_unit then
1955       hr_api.cannot_find_prog_unit_error
1956         (p_module_name => 'DELETE_PRTT_ENRT_ACTN'
1957         ,p_hook_type   => 'AP');
1958     --
1959     -- End of API User Hook for the after hook of delete_PRTT_ENRT_ACTN
1960     --
1961   end;
1962    --
1963   end if;
1964   --Bug 5693086
1965 
1966   -- First delete all the children of the action item being deleted.
1967   --
1968   -- Delete dpnt ctfns.
1969   --
1970   for l_rec in c_dpnt_ctfns loop
1971     --
1972     -- Do not datetrack delete the row, if it is already end-dated.
1973     --
1974     if (p_datetrack_mode = hr_api.g_delete and
1975         l_rec.effective_end_date > p_effective_date) or
1976         p_datetrack_mode <> hr_api.g_delete then
1977       --
1978       ben_cvrd_dpnt_ctfn_prvdd_api.delete_cvrd_dpnt_ctfn_prvdd
1979         (p_validate                => FALSE
1980         ,p_cvrd_dpnt_ctfn_prvdd_id => l_rec.cvrd_dpnt_ctfn_prvdd_id
1981         ,p_effective_start_date    => l_rec.effective_start_date
1982         ,p_effective_end_date      => l_rec.effective_end_date
1983         ,p_object_version_number   => l_rec.object_version_number
1984         ,p_business_group_id       => p_business_group_id
1985         ,p_effective_date          => p_effective_date
1986         ,p_datetrack_mode          => p_datetrack_mode
1987         ,p_check_actions           => 'N'
1988         ,p_called_from             => 'bepeaapi' );
1989       --
1990     end if;
1991     --
1992   end loop;
1993   --
1994   -- Delete bnf ctfns.
1995   --
1996   for l_rec in c_bnf_ctfns loop
1997     --
1998     -- Do not datetrack delete the row, if it is already end-dated.
1999     --
2000     if (p_datetrack_mode = hr_api.g_delete and
2001         l_rec.effective_end_date > p_effective_date) or
2002         p_datetrack_mode <> hr_api.g_delete then
2003       --
2004       ben_pl_bnf_ctfn_prvdd_api.delete_pl_bnf_ctfn_prvdd
2005         (p_validate                => FALSE
2006         ,p_pl_bnf_ctfn_prvdd_id    => l_rec.pl_bnf_ctfn_prvdd_id
2007         ,p_effective_start_date    => l_rec.effective_start_date
2008         ,p_effective_end_date      => l_rec.effective_end_date
2009         ,p_object_version_number   => l_rec.object_version_number
2010         ,p_business_group_id       => p_business_group_id
2011         ,p_effective_date          => p_effective_date
2012         ,p_datetrack_mode          => p_datetrack_mode
2013         ,p_check_actions           => 'N');
2014       --
2015     end if;
2016     --
2017   end loop;
2018   --
2019   -- Delete enrt ctfns.
2020   --
2021   for l_rec in c_enrt_ctfns loop
2022     --
2023     -- Do not datetrack delete the row, if it is already end-dated.
2024     --
2025     if (p_datetrack_mode = hr_api.g_delete and
2026         l_rec.effective_end_date > p_effective_date) or
2027         p_datetrack_mode <> hr_api.g_delete then
2028       --
2029       ben_prtt_enrt_ctfn_prvdd_api.delete_prtt_enrt_ctfn_prvdd
2030         (p_validate                => FALSE
2031         ,p_prtt_enrt_ctfn_prvdd_id => l_rec.prtt_enrt_ctfn_prvdd_id
2032         ,p_effective_start_date    => l_rec.effective_start_date
2033         ,p_effective_end_date      => l_rec.effective_end_date
2034         ,p_object_version_number   => l_rec.object_version_number
2035         ,p_effective_date          => p_effective_date
2036         ,p_datetrack_mode          => p_datetrack_mode
2037         ,p_check_actions           => 'N');
2038       --
2039     end if;
2040     --
2041   end loop;
2042   --
2043   -- Delete person communications.
2044   --
2045   for l_rec in c_per_cm loop
2046     --
2047     -- 5040268 : Do not datetrack delete PER_CM% rows, if already deleted.
2048     if (p_datetrack_mode = hr_api.g_delete and
2049         l_rec.effective_end_date > p_effective_date) or
2050         p_datetrack_mode <> hr_api.g_delete then
2051         --
2052         ben_per_cm_api.delete_per_cm
2053           (p_validate              => FALSE
2054           ,p_per_cm_id             => l_rec.per_cm_id
2055           ,p_effective_start_date  => l_rec.effective_start_date
2056           ,p_effective_end_date    => l_rec.effective_end_date
2057           ,p_object_version_number => l_rec.object_version_number
2058           ,p_effective_date        => p_effective_date
2059           ,p_datetrack_mode        => p_datetrack_mode);
2060           --
2061     end if;
2062     --
2063   end loop;
2064   --
2065   -- Call the action item row handler to delete the row.
2066   --
2067   --Bug 5693086
2068   if p_datetrack_mode <> hr_api.g_delete_next_change and p_datetrack_mode <> hr_api.g_future_change then
2069   --
2070   ben_pea_del.del
2071     (p_prtt_enrt_actn_id             => p_prtt_enrt_actn_id
2072     ,p_effective_start_date          => l_effective_start_date
2073     ,p_effective_end_date            => l_effective_end_date
2074     ,p_object_version_number         => l_object_version_number
2075     ,p_effective_date                => p_effective_date
2076     ,p_datetrack_mode                => p_datetrack_mode);
2077   --
2078   begin
2079     --
2080     -- Start of API User Hook for the after hook of delete_PRTT_ENRT_ACTN
2081     --
2082     ben_PRTT_ENRT_ACTN_bk3.delete_PRTT_ENRT_ACTN_a
2083       (p_prtt_enrt_actn_id              =>  p_prtt_enrt_actn_id
2084       ,p_effective_start_date           =>  l_effective_start_date
2085       ,p_effective_end_date             =>  l_effective_end_date
2086       ,p_object_version_number          =>  l_object_version_number
2087       ,p_effective_date                 => trunc(p_effective_date)
2088       ,p_datetrack_mode                 => p_datetrack_mode);
2089     --
2090   exception
2091     --
2092     when hr_api.cannot_find_prog_unit then
2093       hr_api.cannot_find_prog_unit_error
2094         (p_module_name => 'DELETE_PRTT_ENRT_ACTN'
2095         ,p_hook_type   => 'AP');
2096     --
2097     -- End of API User Hook for the after hook of delete_PRTT_ENRT_ACTN
2098     --
2099   end;
2100   --
2101   end if;
2102   --
2103   --Bug 5693086
2104   hr_utility.set_location(l_proc, 60);
2105   --
2106   -- If the calling procedure requests that the enrollment result be unsuspended
2107   -- then unsuspend the enrollment result.
2108   --
2109   if p_unsuspend_enrt_flag = 'Y' then
2110     --
2111     unsuspend_rslt
2112       (p_prtt_enrt_rslt_id          => p_prtt_enrt_rslt_id
2113       ,p_post_rslt_flag             => p_post_rslt_flag
2114       ,p_effective_date             => p_effective_date
2115       ,p_business_group_id          => p_business_group_id
2116       ,p_rslt_object_version_number => p_rslt_object_version_number
2117       ,p_validate                   => p_validate
2118       ,p_datetrack_mode             => p_datetrack_mode);
2119     --
2120   end if;
2121   --
2122   -- When in validation only mode raise the Validate_Enabled exception
2123   --
2124   if p_validate then
2125     raise hr_api.validate_enabled;
2126   end if;
2127   --
2128   hr_utility.set_location(' Leaving:'||l_proc, 70);
2129   --
2130 exception
2131   --
2132   when hr_api.validate_enabled then
2133     --
2134     -- As the Validate_Enabled exception has been raised
2135     -- we must rollback to the savepoint
2136     --
2137     ROLLBACK TO delete_PRTT_ENRT_ACTN;
2138     --
2139     -- Only set output warning arguments
2140     -- (Any key or derived arguments must be set to null
2141     -- when validation only mode is being used.)
2142     --
2143     --
2144   when others then
2145     --
2146     -- A validation or unexpected error has occured
2147     --
2148     ROLLBACK TO delete_PRTT_ENRT_ACTN;
2149     p_object_version_number := l_object_version_number;
2150     p_effective_start_date := null;
2151     p_effective_end_date := null;
2152 
2153     raise;
2154     --
2155 end delete_PRTT_ENRT_ACTN;
2156 --
2157 -- ----------------------------------------------------------------------------
2158 -- |-------------------------------< lck >------------------------------------|
2159 -- ----------------------------------------------------------------------------
2160 --
2161 procedure lck
2162   (
2163    p_prtt_enrt_actn_id                   in     number
2164   ,p_object_version_number          in     number
2165   ,p_effective_date                 in     date
2166   ,p_datetrack_mode                 in     varchar2
2167   ,p_validation_start_date          out nocopy    date
2168   ,p_validation_end_date            out nocopy    date
2169   ) is
2170   --
2171   --
2172   -- Declare cursors and local variables
2173   --
2174   l_proc varchar2(72) := g_package||'lck';
2175   l_validation_start_date date;
2176   l_validation_end_date date;
2177   --
2178 begin
2179   --
2180   hr_utility.set_location('Entering:'|| l_proc, 10);
2181   --
2182   ben_pea_shd.lck
2183     (
2184       p_prtt_enrt_actn_id                 => p_prtt_enrt_actn_id
2185      ,p_validation_start_date      => l_validation_start_date
2186      ,p_validation_end_date        => l_validation_end_date
2187      ,p_object_version_number      => p_object_version_number
2188      ,p_effective_date             => p_effective_date
2189      ,p_datetrack_mode             => p_datetrack_mode
2190     );
2191   --
2192   hr_utility.set_location(' Leaving:'||l_proc, 70);
2193   --
2194 end lck;
2195 --
2196 end ben_PRTT_ENRT_ACTN_api;