DBA Data[Home] [Help]

PACKAGE BODY: APPS.BEN_CWB_PERSON_GROUPS_API

Source


1 Package Body BEN_CWB_PERSON_GROUPS_API as
2 /* $Header: becpgapi.pkb 120.5.12000000.1 2007/01/19 02:23:07 appldev noship $ */
3 --
4 -- Package Variables
5 --
6 g_package  varchar2(33) := '  BEN_CWB_PERSON_GROUPS_API.';
7 g_debug boolean := hr_utility.debug_enabled;
8 --
9   cursor csr_grps(v_group_per_in_ler_id number
10                  ,v_group_pl_id number
11                  ,v_group_oipl_id number) is
12      select *
13      from ben_cwb_person_groups
14      where group_per_in_ler_id = v_group_per_in_ler_id
15      and   group_pl_id = v_group_pl_id
16      and   group_oipl_id = v_group_oipl_id;
17 --
18 --
19 -- ----------------------------------------------------------------------------
20 -- |--------------------------< create_group_budget >-------------------------|
21 -- ----------------------------------------------------------------------------
22 procedure create_group_budget
23   (p_validate                      in     boolean  default false
24   ,p_group_per_in_ler_id           in     number
25   ,p_group_pl_id                   in     number
26   ,p_group_oipl_id                 in     number
27   ,p_lf_evt_ocrd_dt                in     date
28   ,p_bdgt_pop_cd                   in     varchar2   default null
29   ,p_due_dt                        in     date       default null
30   ,p_access_cd                     in     varchar2   default null
31   ,p_approval_cd                   in     varchar2   default null
32   ,p_approval_date                 in     date       default null
33   ,p_approval_comments             in     varchar2   default null
34   ,p_dist_bdgt_val                 in     number     default null
35   ,p_ws_bdgt_val                   in     number     default null
36   ,p_rsrv_val                      in     number     default null
37   ,p_dist_bdgt_mn_val              in     number     default null
38   ,p_dist_bdgt_mx_val              in     number     default null
39   ,p_dist_bdgt_incr_val            in     number     default null
40   ,p_ws_bdgt_mn_val                in     number     default null
41   ,p_ws_bdgt_mx_val                in     number     default null
42   ,p_ws_bdgt_incr_val              in     number     default null
43   ,p_rsrv_mn_val                   in     number     default null
44   ,p_rsrv_mx_val                   in     number     default null
45   ,p_rsrv_incr_val                 in     number     default null
46   ,p_dist_bdgt_iss_val             in     number     default null
47   ,p_ws_bdgt_iss_val               in     number     default null
48   ,p_dist_bdgt_iss_date            in     date       default null
49   ,p_ws_bdgt_iss_date              in     date       default null
50   ,p_ws_bdgt_val_last_upd_date     in     date       default null
51   ,p_dist_bdgt_val_last_upd_date   in     date       default null
52   ,p_rsrv_val_last_upd_date        in     date       default null
53   ,p_ws_bdgt_val_last_upd_by       in     number     default null
54   ,p_dist_bdgt_val_last_upd_by     in     number     default null
55   ,p_rsrv_val_last_upd_by          in     number     default null
56   ,p_submit_cd                     in     varchar2   default null
57   ,p_submit_date                   in     date       default null
58   ,p_submit_comments               in     varchar2   default null
59   ,p_object_version_number            out nocopy     number
60   ) is
61   --
62   l_object_version_number number;
63   --
64   l_proc                varchar2(72) := g_package||'create_group_budget';
65 begin
66   if g_debug then
67      hr_utility.set_location('Entering:'|| l_proc, 10);
68   end if;
69   --
70   -- Issue a savepoint
71   --
72   savepoint create_group_budget;
73   --
74   -- Call Before Process User Hook
75   --
76   begin
77     ben_cwb_person_groups_bk1.create_group_budget_b
78         (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
79         ,p_group_pl_id                   =>   p_group_pl_id
80         ,p_group_oipl_id                 =>   p_group_oipl_id
81         ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
82         ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
83         ,p_due_dt                        =>   p_due_dt
84         ,p_access_cd                     =>   p_access_cd
85         ,p_approval_cd                   =>   p_approval_cd
86         ,p_approval_date                 =>   p_approval_date
87         ,p_approval_comments             =>   p_approval_comments
88         ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
89         ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
90         ,p_rsrv_val                      =>   p_rsrv_val
91         ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
92         ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
93         ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
94         ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
95         ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
96         ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
97         ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
98         ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
99         ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
100         ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
101         ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
102         ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
103         ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
104         ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
105         ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
106         ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
107         ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
108         ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
109         ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
110         ,p_submit_cd                     =>   p_submit_cd
111         ,p_submit_date                   =>   p_submit_date
112         ,p_submit_comments               =>   p_submit_comments
113         );
114   exception
115     when hr_api.cannot_find_prog_unit then
116       hr_api.cannot_find_prog_unit_error
117         (p_module_name => 'create_group_budget'
118         ,p_hook_type   => 'BP'
119         );
120   end;
121   --
122   -- Validation in addition to Row Handlers
123   --
124   --
125   -- Process Logic
126   --
127   ben_cpg_ins.ins
128          (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
129          ,p_group_pl_id                   =>   p_group_pl_id
130          ,p_group_oipl_id                 =>   p_group_oipl_id
131          ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
132          ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
133          ,p_due_dt                        =>   p_due_dt
134          ,p_access_cd                     =>   p_access_cd
135          ,p_approval_cd                   =>   p_approval_cd
136          ,p_approval_date                 =>   p_approval_date
137          ,p_approval_comments             =>   p_approval_comments
138          ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
139          ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
140          ,p_rsrv_val                      =>   p_rsrv_val
141          ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
142          ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
143          ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
144          ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
145          ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
146          ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
147          ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
148          ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
149          ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
150          ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
151          ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
152          ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
153          ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
154          ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
155          ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
156          ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
157          ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
158          ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
159          ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
160          ,p_submit_cd                     =>   p_submit_cd
161          ,p_submit_date                   =>   p_submit_date
162          ,p_submit_comments               =>   p_submit_comments
163          ,p_object_version_number         =>   l_object_version_number
164          );
165   --
166   -- Call After Process User Hook
167   --
168   begin
169     ben_cwb_person_groups_bk1.create_group_budget_a
170         (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
171         ,p_group_pl_id                   =>   p_group_pl_id
172         ,p_group_oipl_id                 =>   p_group_oipl_id
173         ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
174         ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
175         ,p_due_dt                        =>   p_due_dt
176         ,p_access_cd                     =>   p_access_cd
177         ,p_approval_cd                   =>   p_approval_cd
178         ,p_approval_date                 =>   p_approval_date
179         ,p_approval_comments             =>   p_approval_comments
180         ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
181         ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
182         ,p_rsrv_val                      =>   p_rsrv_val
183         ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
184         ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
185         ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
186         ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
187         ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
188         ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
189         ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
190         ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
191         ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
192         ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
193         ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
194         ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
195         ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
196         ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
197         ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
198         ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
199         ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
200         ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
201         ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
202         ,p_submit_cd                     =>   p_submit_cd
203         ,p_submit_date                   =>   p_submit_date
204         ,p_submit_comments               =>   p_submit_comments
205         ,p_object_version_number         =>   l_object_version_number
206         );
207   exception
208     when hr_api.cannot_find_prog_unit then
209       hr_api.cannot_find_prog_unit_error
210         (p_module_name => 'create_group_budget'
211         ,p_hook_type   => 'AP'
212         );
213   end;
214   --
215   -- When in validation only mode raise the Validate_Enabled exception
216   --
217   if p_validate then
218     raise hr_api.validate_enabled;
219   end if;
220   --
221   -- Set all IN OUT and OUT parameters with out values
222   --
223   p_object_version_number  := l_object_version_number;
224   --
225   if g_debug then
226      hr_utility.set_location(' Leaving:'||l_proc, 70);
227   end if;
228 exception
229   when hr_api.validate_enabled then
230     --
231     -- As the Validate_Enabled exception has been raised
232     -- we must rollback to the savepoint
233     --
234     rollback to create_group_budget;
235     --
236     if g_debug then
237        hr_utility.set_location(' Leaving:'||l_proc, 80);
238     end if;
239   when others then
240     --
241     -- A validation or unexpected error has occured
242     --
243     rollback to create_group_budget;
244     --
245     if g_debug then
246        hr_utility.set_location(' Leaving:'||l_proc, 90);
247     end if;
248     raise;
249 end create_group_budget;
250 --
251 --
252 -- --------------------------------------------------------------------------
253 -- |----------------------------< check_min_max >----------------------------|
254 -- --------------------------------------------------------------------------
255 procedure check_min_max(p_val in number
256                        ,p_iss_val in number
257 		       ,p_min_val in number
258 		       ,p_max_val in number
259 		       ,p_incr_val in number
260 		       ,p_group_per_in_ler_id number)
261 is
262 --
263   l_person_name varchar2(240);
264 --
265   l_proc  varchar2(72) := g_package||'check_min_max';
266 --
267 Begin
268   --
269   if g_debug then
270      hr_utility.set_location('Entering:'||l_proc, 10);
271      hr_utility.set_location('Entering:'||l_proc, 10);
272      hr_utility.set_location('p_val :'||p_val, 10);
273      hr_utility.set_location('p_iss_val :'||p_iss_val,10);
274      hr_utility.set_location('p_min_val :'||p_min_val, 10);
275      hr_utility.set_location('p_max_val :'||p_max_val, 10);
276      hr_utility.set_location('p_incr_val :'||p_incr_val, 10);
277   end if;
278   --
279   select full_name into l_person_name
280   from ben_cwb_person_info
281   where group_per_in_ler_id = p_group_per_in_ler_id;
282   --
283   --
284   if g_debug then
285      hr_utility.set_location(l_proc, 20);
286   end if;
287   --
288   if (p_val is not null and p_val <> hr_api.g_number and
289       p_min_val is not null) then
290     if (p_val < p_min_val) then
291       fnd_message.set_name('BEN','BEN_92984_CWB_VAL_NOT_IN_RANGE');
292       fnd_message.set_token('VAL',p_val);
293       fnd_message.set_token('MIN',p_min_val);
294       fnd_message.set_token('MAX',p_max_val);
295       fnd_message.set_token('PERSON',l_person_name);
296       fnd_message.raise_error;
297     end if;
298   end if;
299   --
300   if g_debug then
301      hr_utility.set_location(l_proc, 30);
302   end if;
303   --
304   if (p_iss_val is not null and p_iss_val <> hr_api.g_number and
305       p_min_val is not null) then
306     if (p_iss_val < p_min_val) then
307       fnd_message.set_name('BEN','BEN_92984_CWB_VAL_NOT_IN_RANGE');
308       fnd_message.set_token('VAL',p_iss_val);
309       fnd_message.set_token('MIN',p_min_val);
310       fnd_message.set_token('MAX',p_max_val);
311       fnd_message.set_token('PERSON',l_person_name);
312       fnd_message.raise_error;
313     end if;
314   end if;
315   --
316   if g_debug then
317      hr_utility.set_location(l_proc, 40);
318   end if;
319   --
320   if (p_val is not null and p_val <> hr_api.g_number and
321       p_max_val is not null) then
322     if (p_val > p_max_val) then
323       fnd_message.set_name('BEN','BEN_92984_CWB_VAL_NOT_IN_RANGE');
324       fnd_message.set_token('VAL',p_val);
325       fnd_message.set_token('MIN',p_min_val);
326       fnd_message.set_token('MAX',p_max_val);
327       fnd_message.set_token('PERSON',l_person_name);
328       fnd_message.raise_error;
329     end if;
330   end if;
331   --
332   if g_debug then
333      hr_utility.set_location(l_proc, 50);
334   end if;
335   --
336   if (p_iss_val is not null and p_iss_val <> hr_api.g_number and
337       p_max_val is not null) then
338     if (p_iss_val > p_max_val) then
339       fnd_message.set_name('BEN','BEN_92984_CWB_VAL_NOT_IN_RANGE');
340       fnd_message.set_token('VAL',p_iss_val);
341       fnd_message.set_token('MIN',p_min_val);
342       fnd_message.set_token('MAX',p_max_val);
343       fnd_message.set_token('PERSON',l_person_name);
344       fnd_message.raise_error;
345     end if;
346   end if;
347   --
348   if g_debug then
349      hr_utility.set_location(l_proc, 60);
350   end if;
351   --
352   if (p_val is not null and p_val <> hr_api.g_number and
353       p_incr_val is not null) then
354     if (mod(p_val,p_incr_val) <> 0) then
355       fnd_message.set_name('BEN','BEN_92985_CWB_VAL_NOT_INCRMNT');
356       fnd_message.set_token('VAL',p_val);
357       fnd_message.set_token('INCREMENT', p_incr_val);
358       fnd_message.set_token('PERSON',l_person_name);
359       fnd_message.raise_error;
360     end if;
361   end if;
362   if g_debug then
363      hr_utility.set_location(l_proc, 70);
364   end if;
365   --
366   if (p_iss_val is not null and p_iss_val <> hr_api.g_number and
367       p_incr_val is not null) then
368     if (mod(p_iss_val,p_incr_val) <> 0) then
369       fnd_message.set_name('BEN','BEN_92985_CWB_VAL_NOT_INCRMNT');
370       fnd_message.set_token('VAL',p_iss_val);
371       fnd_message.set_token('INCREMENT', p_incr_val);
372       fnd_message.set_token('PERSON',l_person_name);
373       fnd_message.raise_error;
374     end if;
375   end if;
376   --
377   if g_debug then
378     hr_utility.set_location(' Leaving:'||l_proc, 90);
379   end if;
380 end check_min_max;
381 --
382 -- --------------------------------------------------------------------------
383 -- |---------------------< update_group_budget_summary >---------------------|
384 -- --------------------------------------------------------------------------
385 -- Description
386 -- This is an internal procedure called only by update_group_budget to
387 -- update the summary table after updating the ben_cwb_person_groups.
388 --
389 procedure update_group_budget_summary
390          (p_grp_bdgt_old csr_grps%rowtype
391          ,p_dist_bdgt_val number
392          ,p_ws_bdgt_val number
393          ,p_dist_bdgt_iss_val number
394          ,p_ws_bdgt_iss_val number) is
395    --cursor to fetch the managers of the person
396    cursor csr_mgr_pil_ids(p_group_per_in_ler_id number) is
397    select mgr_per_in_ler_id
398    from ben_cwb_group_hrchy
399    where emp_per_in_ler_id = p_group_per_in_ler_id
400    and lvl_num  > 0
401    order by lvl_num;
402    --
403    l_prsrv_bdgt_cd varchar2(30);
404    l_uses_bdgt_flag varchar2(30);
405    --
406    l_dist_bdgt_val number;
407    l_ws_bdgt_val number;
408    l_dist_bdgt_iss_val number;
409    l_ws_bdgt_iss_val number;
410    --
411    l_diff_dist_bdgt number;
412    l_diff_ws_bdgt number;
413    l_diff_dist_bdgt_iss number;
414    l_diff_ws_bdgt_iss number;
415    --
416    l_elig_sal_direct number;
417    l_elig_sal_all number;
418    --
419    l_immediate_mgr number;
420 --
421    l_proc     varchar2(72) := g_package||'update_group_budget_summary';
422 --
423 begin
424    --
425    if g_debug then
426       hr_utility.set_location('Entering:'|| l_proc, 10);
427    end if;
428    --
429    select uses_bdgt_flag, prsrv_bdgt_cd
430    into l_uses_bdgt_flag, l_prsrv_bdgt_cd
431    from ben_cwb_pl_dsgn pl
432    where pl.pl_id = p_grp_bdgt_old.group_pl_id
433    and   pl.lf_evt_ocrd_dt = p_grp_bdgt_old.lf_evt_ocrd_dt
434    and   pl.oipl_id = p_grp_bdgt_old.group_oipl_id;
435    --
436    if l_uses_bdgt_flag is null or l_uses_bdgt_flag <> 'Y' then
437      return;
438    end if;
439    --
440    -- set the parameters to old values if they are default values.
441    if p_dist_bdgt_val = hr_api.g_number then
442       l_dist_bdgt_val := p_grp_bdgt_old.dist_bdgt_val;
443    else
444       l_dist_bdgt_val := p_dist_bdgt_val;
445    end if;
446    if p_ws_bdgt_val = hr_api.g_number then
447       l_ws_bdgt_val := p_grp_bdgt_old.ws_bdgt_val;
448    else
449       l_ws_bdgt_val := p_ws_bdgt_val;
450    end if;
451    if p_dist_bdgt_iss_val = hr_api.g_number then
452       l_dist_bdgt_iss_val := p_grp_bdgt_old.dist_bdgt_iss_val;
453    else
454       l_dist_bdgt_iss_val := p_dist_bdgt_iss_val;
455    end if;
456    if p_ws_bdgt_iss_val = hr_api.g_number then
457       l_ws_bdgt_iss_val := p_grp_bdgt_old.ws_bdgt_iss_val;
458    else
459       l_ws_bdgt_iss_val := p_ws_bdgt_iss_val;
460    end if;
461    --
462    if g_debug then
463       hr_utility.set_location(l_proc, 20);
464    end if;
465    --
466    if nvl(p_grp_bdgt_old.dist_bdgt_val,0) <> nvl(l_dist_bdgt_val,0) or
467       nvl(p_grp_bdgt_old.ws_bdgt_val,0) <> nvl(l_ws_bdgt_val,0) or
468       nvl(p_grp_bdgt_old.dist_bdgt_iss_val,0) <> nvl(l_dist_bdgt_iss_val,0) or
469       nvl(p_grp_bdgt_old.ws_bdgt_iss_val,0) <> nvl(l_ws_bdgt_iss_val,0) then
470       --
471       --
472       if g_debug then
473          hr_utility.set_location(l_proc, 30);
474       end if;
475       --
476       if l_prsrv_bdgt_cd = 'A' then
477          --
478          if g_debug then
479             hr_utility.set_location(l_proc, 40);
480          end if;
481          --
482          l_diff_dist_bdgt := ben_cwb_utils.add_number_with_null_check
483                              (l_dist_bdgt_val,
484                               - p_grp_bdgt_old.dist_bdgt_val);
485          l_diff_ws_bdgt := ben_cwb_utils.add_number_with_null_check
486                             (l_ws_bdgt_val,
487                               - p_grp_bdgt_old.ws_bdgt_val);
488          l_diff_dist_bdgt_iss := ben_cwb_utils.add_number_with_null_check
489                                 (l_dist_bdgt_iss_val,
490                                  - p_grp_bdgt_old.dist_bdgt_iss_val);
491          l_diff_ws_bdgt_iss := ben_cwb_utils.add_number_with_null_check
492                                 (l_ws_bdgt_iss_val,
493                                  - p_grp_bdgt_old.ws_bdgt_iss_val);
494          --
495       else
496          --
497          if g_debug then
498             hr_utility.set_location(l_proc, 50);
499          end if;
500          --
501          select sum(elig_sal_val_direct) elig_sal_val_direct
502                ,sum(elig_sal_val_all) elig_sal_val_all
503          into   l_elig_sal_direct
504                ,l_elig_sal_all
505          from ben_cwb_summary
506          where group_per_in_ler_id = p_grp_bdgt_old.group_per_in_ler_id
507          and   group_pl_id = p_grp_bdgt_old.group_pl_id
508          and   group_oipl_id = p_grp_bdgt_old.group_oipl_id;
509          --
510          l_diff_dist_bdgt := ben_cwb_utils.add_number_with_null_check
511                              (l_dist_bdgt_val,
512                             -p_grp_bdgt_old.dist_bdgt_val)*l_elig_sal_all/100;
513          l_diff_ws_bdgt := ben_cwb_utils.add_number_with_null_check
514                             (l_ws_bdgt_val,
515                             -p_grp_bdgt_old.ws_bdgt_val)*l_elig_sal_direct/100;
516          l_diff_dist_bdgt_iss := ben_cwb_utils.add_number_with_null_check
517                                (l_dist_bdgt_iss_val,
518                                 -p_grp_bdgt_old.dist_bdgt_iss_val)*l_elig_sal_all/100;
519          l_diff_ws_bdgt_iss := ben_cwb_utils.add_number_with_null_check
520                                 (l_ws_bdgt_iss_val,
521                                 -p_grp_bdgt_old.ws_bdgt_iss_val)*l_elig_sal_direct/100;
522          --
523       end if;
524       --
525       -- If no distribution budget, then the manager is
526       -- not allowed to budget, so use worksheet budget.
527       --
528       if (l_diff_dist_bdgt is null) then
529          l_diff_dist_bdgt := l_diff_ws_bdgt;
530          l_diff_dist_bdgt_iss := l_diff_ws_bdgt_iss;
531       end if;
532       --
533       if g_debug then
534          hr_utility.set_location(l_proc, 60);
535       end if;
536       --
537       -- The first one will be the immediate manager
538       l_immediate_mgr := 1;
539       for mgr in csr_mgr_pil_ids(p_grp_bdgt_old.group_per_in_ler_id)
540       loop
541          --
542          if g_debug then
543             hr_utility.set_location(l_proc, 70);
544          end if;
545          --
546          ben_cwb_summary_pkg.update_or_insert_pl_sql_tab
547             (p_group_per_in_ler_id    => mgr.mgr_per_in_ler_id
548             ,p_group_pl_id            => p_grp_bdgt_old.group_pl_id
549             ,p_group_oipl_id          => p_grp_bdgt_old.group_oipl_id
550             ,p_ws_bdgt_val_direct     => l_diff_ws_bdgt * l_immediate_mgr
551             ,p_ws_bdgt_val_all        => l_diff_ws_bdgt
552             ,p_ws_bdgt_iss_val_direct => l_diff_ws_bdgt_iss*l_immediate_mgr
553             ,p_ws_bdgt_iss_val_all    => l_diff_ws_bdgt_iss
554             ,p_bdgt_val_direct        => l_diff_dist_bdgt  * l_immediate_mgr
555             ,p_bdgt_iss_val_direct    => l_diff_dist_bdgt_iss*l_immediate_mgr
556             );
557          l_immediate_mgr := 0;
558       end loop;
559    end if; -- of difference in ws or db budget values
560    --
561    if g_debug then
562       hr_utility.set_location(' Leaving:'|| l_proc, 999);
563    end if;
564    --
565 end; -- update_group_budget_summary
566 --
567 --
568 -- -------------------------------------------------------------------------
569 -- |-------------------------< create_audit_record >-----------------------|
570 -- -------------------------------------------------------------------------
571 --
572 -- Description
573 -- This is an internal procedure
574 --
575 procedure create_audit_record
576          (p_grp_bdgt_old          in         csr_grps%rowtype
577          ) is
578    l_grp_bdgt_new csr_grps%rowtype;
579    l_pl_dsgn ben_cwb_pl_dsgn%rowtype;
580    l_cwb_audit_id ben_cwb_audit.cwb_audit_id%type;
581    l_object_version_number ben_cwb_audit.object_version_number%type;
582    l_cd_meaning_old hr_lookups.meaning%type;
583    l_cd_meaning_new hr_lookups.meaning%type;
584    l_proc                varchar2(72) := g_package||'create_audit_record';
585    l_person_id fnd_user.employee_id%type;
586 
587  begin
588 
589   if g_debug then
590      hr_utility.set_location('Entering :'|| l_proc, 100);
591   end if;
592 
593   open  csr_grps(p_grp_bdgt_old.group_per_in_ler_id
594                 ,p_grp_bdgt_old.group_pl_id
595                 ,p_grp_bdgt_old.group_oipl_id);
596   fetch csr_grps into l_grp_bdgt_new;
597   close csr_grps;
598 
599    select * into l_pl_dsgn
600    from ben_cwb_pl_dsgn
601    where pl_id = p_grp_bdgt_old.group_pl_id
602    and lf_evt_ocrd_dt = p_grp_bdgt_old.lf_evt_ocrd_dt
603    and oipl_id = -1;
604 
605    select employee_id into l_person_id
606    from fnd_user
607    where user_id = l_grp_bdgt_new.last_updated_by;
608 
609     if(  ((p_grp_bdgt_old.ws_bdgt_val is null)
610       and (l_grp_bdgt_new.ws_bdgt_val is not null))
611       or ((l_grp_bdgt_new.ws_bdgt_val is null)
612       and (p_grp_bdgt_old.ws_bdgt_val is not null))
613       or (p_grp_bdgt_old.ws_bdgt_val <> l_grp_bdgt_new.ws_bdgt_val) ) then
614 
615    -- if(nvl(p_grp_bdgt_old.ws_bdgt_val,-1)<>nvl(l_grp_bdgt_new.ws_bdgt_val,-1)) then
616     if(l_pl_dsgn.prsrv_bdgt_cd='A') then
617       if(ben_cwb_audit_api.return_lookup_validity('BAD')=true) then
618 
619         if g_debug then
620           hr_utility.set_location('Entering BAD:'||l_proc||p_grp_bdgt_old.ws_bdgt_val||' '||l_grp_bdgt_new.ws_bdgt_val, 101);
621         end if;
622 
623        ben_cwb_audit_api.create_audit_entry
624              (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
625              ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
626              ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
627              ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
628              ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
629              ,p_audit_type_cd            => 'BAD'
630              ,p_old_val_number           => p_grp_bdgt_old.ws_bdgt_val
631              ,p_new_val_number           => l_grp_bdgt_new.ws_bdgt_val
632              ,p_date_stamp               => sysdate
633              ,p_change_made_by_person_id => l_person_id
634              ,p_cwb_audit_id             => l_cwb_audit_id
635              ,p_object_version_number    => l_object_version_number
636              );
637       end if;
638     elsif(l_pl_dsgn.prsrv_bdgt_cd='P') then
639       if(ben_cwb_audit_api.return_lookup_validity('BPD')=true) then
640         if g_debug then
641           hr_utility.set_location('Entering BPD:'||l_proc||p_grp_bdgt_old.ws_bdgt_val||' '||l_grp_bdgt_new.ws_bdgt_val, 102);
642         end if;
643 
644        ben_cwb_audit_api.create_audit_entry
645              (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
646              ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
647              ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
648              ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
649              ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
650              ,p_audit_type_cd            => 'BPD'
651              ,p_old_val_number           => p_grp_bdgt_old.ws_bdgt_val
652              ,p_new_val_number           => l_grp_bdgt_new.ws_bdgt_val
653              ,p_date_stamp               => sysdate
654              ,p_change_made_by_person_id => l_person_id
655              ,p_cwb_audit_id             => l_cwb_audit_id
656              ,p_object_version_number    => l_object_version_number
657              );
658     end if;
659    end if;
660   end if;
661 
662   if(  ((p_grp_bdgt_old.dist_bdgt_val is null)
663     and (l_grp_bdgt_new.dist_bdgt_val is not null))
664     or ((l_grp_bdgt_new.dist_bdgt_val is null)
665     and (p_grp_bdgt_old.dist_bdgt_val is not null))
666      or (p_grp_bdgt_old.dist_bdgt_val <> l_grp_bdgt_new.dist_bdgt_val) ) then
667   --if(nvl(p_grp_bdgt_old.dist_bdgt_val,-1)<>nvl(l_grp_bdgt_new.dist_bdgt_val,-1)) then
668    if(l_pl_dsgn.prsrv_bdgt_cd='A') then
669     if(ben_cwb_audit_api.return_lookup_validity('BAA')=true) then
670         if g_debug then
671           hr_utility.set_location('Entering BAA:'||l_proc||p_grp_bdgt_old.dist_bdgt_val||' '||l_grp_bdgt_new.dist_bdgt_val, 103);
672         end if;
673 
674      ben_cwb_audit_api.create_audit_entry
675               (p_group_per_in_ler_id  => l_grp_bdgt_new.group_per_in_ler_id
676               ,p_group_pl_id          => l_grp_bdgt_new.group_pl_id
677               ,p_lf_evt_ocrd_dt       => l_grp_bdgt_new.lf_evt_ocrd_dt
678               ,p_pl_id                => l_grp_bdgt_new.group_pl_id
679               ,p_group_oipl_id        => l_grp_bdgt_new.group_oipl_id
680               ,p_audit_type_cd        => 'BAA'
681               ,p_old_val_number       => p_grp_bdgt_old.dist_bdgt_val
682               ,p_new_val_number       => l_grp_bdgt_new.dist_bdgt_val
683               ,p_date_stamp           => sysdate
684               ,p_change_made_by_person_id => l_person_id
685               ,p_cwb_audit_id          => l_cwb_audit_id
686               ,p_object_version_number => l_object_version_number
687               );
688       end if;
689     elsif(l_pl_dsgn.prsrv_bdgt_cd='P') then
690       if(ben_cwb_audit_api.return_lookup_validity('BPA')=true) then
691         if g_debug then
692           hr_utility.set_location('Entering BPA:'||l_proc||p_grp_bdgt_old.dist_bdgt_val||' '||l_grp_bdgt_new.dist_bdgt_val, 104);
693         end if;
694 
695        ben_cwb_audit_api.create_audit_entry
696                (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
697                ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
698                ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
699                ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
700                ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
701                ,p_audit_type_cd            => 'BPA'
702                ,p_old_val_number           => p_grp_bdgt_old.dist_bdgt_val
703                ,p_new_val_number           => l_grp_bdgt_new.dist_bdgt_val
704                ,p_date_stamp               => sysdate
705                ,p_change_made_by_person_id => l_person_id
706                ,p_cwb_audit_id             => l_cwb_audit_id
707                ,p_object_version_number    => l_object_version_number
708                );
709     end if;
710    end if;
711   end if;
712 
713   if(  ((p_grp_bdgt_old.bdgt_pop_cd is null)
714     and (l_grp_bdgt_new.bdgt_pop_cd is not null))
715     or ((l_grp_bdgt_new.bdgt_pop_cd is null)
716     and (p_grp_bdgt_old.bdgt_pop_cd is not null))
717      or (p_grp_bdgt_old.bdgt_pop_cd <> l_grp_bdgt_new.bdgt_pop_cd) ) then
718   -- if(nvl(p_grp_bdgt_old.bdgt_pop_cd,-1)<>nvl(l_grp_bdgt_new.bdgt_pop_cd,-1)) then
719    if(ben_cwb_audit_api.return_lookup_validity('BP')=true) then
720 
721         if g_debug then
722           hr_utility.set_location('Entering BP:'||l_proc||p_grp_bdgt_old.bdgt_pop_cd||' '||l_grp_bdgt_new.bdgt_pop_cd, 105);
723         end if;
724 
725        ben_cwb_audit_api.create_audit_entry
726                 (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
727                 ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
728                 ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
729                 ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
730                 ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
731                 ,p_audit_type_cd            => 'BP'
732                 ,p_old_val_varchar          => p_grp_bdgt_old.bdgt_pop_cd
733                 ,p_new_val_varchar          => l_grp_bdgt_new.bdgt_pop_cd
734                 ,p_date_stamp               => sysdate
735                 ,p_change_made_by_person_id => l_person_id
736                 ,p_cwb_audit_id             => l_cwb_audit_id
737                 ,p_object_version_number    => l_object_version_number
738                 );
739    end if;
740   end if;
741   if(  ((p_grp_bdgt_old.due_dt is null)
742     and (l_grp_bdgt_new.due_dt is not null))
743     or ((l_grp_bdgt_new.due_dt is null)
744     and (p_grp_bdgt_old.due_dt is not null))
745      or (p_grp_bdgt_old.due_dt <> l_grp_bdgt_new.due_dt) ) then
746    if(ben_cwb_audit_api.return_lookup_validity('DD')=true) then
747 
748         if g_debug then
749           hr_utility.set_location('Entering DD:'||l_proc||p_grp_bdgt_old.due_dt||' '||l_grp_bdgt_new.due_dt, 106);
750         end if;
751 
752        ben_cwb_audit_api.create_audit_entry
753                 (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
754                 ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
755                 ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
756                 ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
757                 ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
758                 ,p_audit_type_cd            => 'DD'
759                 ,p_old_val_date             => p_grp_bdgt_old.due_dt
760                 ,p_new_val_date             => l_grp_bdgt_new.due_dt
761                 ,p_date_stamp               => sysdate
762                 ,p_change_made_by_person_id => l_person_id
763                 ,p_cwb_audit_id             => l_cwb_audit_id
764                 ,p_object_version_number    => l_object_version_number
765                 );
766    end if;
767   end if;
768   if(  ((p_grp_bdgt_old.submit_date is null)
769     and (l_grp_bdgt_new.submit_date is not null))
770     or ((l_grp_bdgt_new.submit_date is null)
771     and (p_grp_bdgt_old.submit_date is not null))
772      or (p_grp_bdgt_old.submit_date <> l_grp_bdgt_new.submit_date) ) then
773    if(ben_cwb_audit_api.return_lookup_validity('SD')=true) then
774 
775         if g_debug then
776           hr_utility.set_location('Entering SD: '||l_proc||p_grp_bdgt_old.submit_date||' '||l_grp_bdgt_new.submit_date, 107);
777         end if;
778 
779        ben_cwb_audit_api.create_audit_entry
780                 (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
781                 ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
782                 ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
783                 ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
784                 ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
785                 ,p_audit_type_cd            => 'SD'
786                 ,p_old_val_date             => p_grp_bdgt_old.submit_date
787                 ,p_new_val_date             => l_grp_bdgt_new.submit_date
788                 ,p_date_stamp               => sysdate
789                 ,p_change_made_by_person_id => l_person_id
790                 ,p_cwb_audit_id             => l_cwb_audit_id
791                 ,p_object_version_number    => l_object_version_number
792                 );
793    end if;
794   end if;
795   if(  ((p_grp_bdgt_old.submit_cd is null)
796     and (l_grp_bdgt_new.submit_cd is not null))
797     or ((l_grp_bdgt_new.submit_cd is null)
798     and (p_grp_bdgt_old.submit_cd is not null))
799      or (p_grp_bdgt_old.submit_cd <> l_grp_bdgt_new.submit_cd) ) then
800    if(ben_cwb_audit_api.return_lookup_validity('SU')=true) then
801 
802        begin
803         select meaning into l_cd_meaning_old
804         from hr_lookups
805         where lookup_type='BEN_SUBMIT_STAT'
806         and lookup_code=p_grp_bdgt_old.submit_cd;
807        exception
808         when no_data_found then
809         l_cd_meaning_old:=null;
810        end;
811 
812        begin
813         select meaning into l_cd_meaning_new
814         from hr_lookups
815         where lookup_type='BEN_SUBMIT_STAT'
816         and lookup_code=l_grp_bdgt_new.submit_cd;
817        exception
818        when no_data_found then
819        l_cd_meaning_new:=null;
820        end;
821 
822         if g_debug then
823           hr_utility.set_location('Entering BAD:'||l_proc||l_cd_meaning_old||' '||l_cd_meaning_new, 108);
824         end if;
825 
826        ben_cwb_audit_api.create_audit_entry
827                (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
828                ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
829                ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
830                ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
831                ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
832                ,p_audit_type_cd            => 'SU'
833                ,p_old_val_varchar          => l_cd_meaning_old
834                ,p_new_val_varchar          => l_cd_meaning_new
835                ,p_date_stamp               => sysdate
836                ,p_change_made_by_person_id => l_person_id
837                ,p_cwb_audit_id             => l_cwb_audit_id
838                ,p_object_version_number    => l_object_version_number
839                );
840    end if;
841   end if;
842   if(  ((p_grp_bdgt_old.approval_cd is null)
843     and (l_grp_bdgt_new.approval_cd is not null))
844     or ((l_grp_bdgt_new.approval_cd is null)
845     and (p_grp_bdgt_old.approval_cd is not null))
846      or (p_grp_bdgt_old.approval_cd <> l_grp_bdgt_new.approval_cd) ) then
847    if(ben_cwb_audit_api.return_lookup_validity('AS')=true) then
848 
849 
850        begin
851         select meaning into l_cd_meaning_old
852         from hr_lookups
853         where lookup_type='BEN_APPR_STAT'
854         and lookup_code=p_grp_bdgt_old.approval_cd;
855        exception
856         when no_data_found then
857 	l_cd_meaning_old:=null;
858        end;
859 
860        begin
861         select meaning into l_cd_meaning_new
862         from hr_lookups
863         where lookup_type='BEN_APPR_STAT'
864         and lookup_code=l_grp_bdgt_new.approval_cd;
865        exception
866         when no_data_found then
867 	l_cd_meaning_new:=null;
868        end;
869 
870         if g_debug then
871           hr_utility.set_location('Entering AS:'||l_proc||l_cd_meaning_old||' '||l_cd_meaning_new, 109);
872         end if;
873 
874        ben_cwb_audit_api.create_audit_entry
875                (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
876                ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
877                ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
878                ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
879                ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
880                ,p_audit_type_cd            => 'AS'
881                ,p_old_val_varchar          => l_cd_meaning_old
882                ,p_new_val_varchar          => l_cd_meaning_new
883                ,p_date_stamp               => sysdate
884                ,p_change_made_by_person_id => l_person_id
885                ,p_cwb_audit_id             => l_cwb_audit_id
886                ,p_object_version_number    => l_object_version_number
887                );
888    end if;
889   end if;
890   if(  ((p_grp_bdgt_old.approval_date is null)
891     and (l_grp_bdgt_new.approval_date is not null))
892     or ((l_grp_bdgt_new.approval_date is null)
893     and (p_grp_bdgt_old.approval_date is not null))
894      or (p_grp_bdgt_old.approval_date <> l_grp_bdgt_new.approval_date) ) then
895    if(ben_cwb_audit_api.return_lookup_validity('AD')=true) then
896         if g_debug then
897           hr_utility.set_location('Entering AD:'||l_proc||p_grp_bdgt_old.approval_date||' '||l_grp_bdgt_new.approval_date, 110);
898         end if;
899 
900        ben_cwb_audit_api.create_audit_entry
901                 (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
902                 ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
903                 ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
904                 ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
905                 ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
906                 ,p_audit_type_cd            => 'AD'
907                 ,p_old_val_date             => p_grp_bdgt_old.approval_date
908                 ,p_new_val_date             => l_grp_bdgt_new.approval_date
909                 ,p_date_stamp               => sysdate
910                 ,p_change_made_by_person_id => l_person_id
911                 ,p_cwb_audit_id             => l_cwb_audit_id
912                 ,p_object_version_number    => l_object_version_number
913                 );
914    end if;
915   end if;
916   if(  ((p_grp_bdgt_old.rsrv_val is null)
917     and (l_grp_bdgt_new.rsrv_val is not null))
918     or ((l_grp_bdgt_new.rsrv_val is null)
919     and (p_grp_bdgt_old.rsrv_val is not null))
920      or (p_grp_bdgt_old.rsrv_val <> l_grp_bdgt_new.rsrv_val) ) then
921    if(ben_cwb_audit_api.return_lookup_validity('RS')=true) then
922 
923         if g_debug then
924           hr_utility.set_location('Entering RS:'||l_proc||p_grp_bdgt_old.rsrv_val||' '||l_grp_bdgt_new.rsrv_val, 111);
925         end if;
926 
927        ben_cwb_audit_api.create_audit_entry
928                 (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
929                 ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
930                 ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
931                 ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
932                 ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
933                 ,p_audit_type_cd            => 'RS'
934                 ,p_old_val_number           => p_grp_bdgt_old.rsrv_val
935                 ,p_new_val_number           => l_grp_bdgt_new.rsrv_val
936                 ,p_date_stamp               => sysdate
937                 ,p_change_made_by_person_id => l_person_id
938                 ,p_cwb_audit_id             => l_cwb_audit_id
939                 ,p_object_version_number    => l_object_version_number
940                 );
941    end if;
942   end if;
943   if(  ((p_grp_bdgt_old.access_cd is null)
944     and (l_grp_bdgt_new.access_cd is not null))
945     or ((l_grp_bdgt_new.access_cd is null)
946     and (p_grp_bdgt_old.access_cd is not null))
947      or (p_grp_bdgt_old.access_cd <> l_grp_bdgt_new.access_cd) ) then
948    if(ben_cwb_audit_api.return_lookup_validity('AC')=true) then
949 
950       begin
951         select meaning into l_cd_meaning_old
952         from hr_lookups
953         where lookup_type='BEN_WS_ACC'
954         and lookup_code=p_grp_bdgt_old.access_cd;
955        exception
956         when no_data_found then
957 	l_cd_meaning_old:= p_grp_bdgt_old.access_cd;
958        end;
959 
960        begin
961         select meaning into l_cd_meaning_new
962         from hr_lookups
963         where lookup_type='BEN_WS_ACC'
964         and lookup_code=l_grp_bdgt_new.access_cd;
965        exception
966         when no_data_found then
967 	l_cd_meaning_new:= l_grp_bdgt_new.access_cd;
968        end;
969 
970 	if g_debug then
971           hr_utility.set_location('Entering AC:'||l_proc||l_cd_meaning_old||' '||l_cd_meaning_new, 112);
972         end if;
973 
974 
975        ben_cwb_audit_api.create_audit_entry
976                (p_group_per_in_ler_id      => l_grp_bdgt_new.group_per_in_ler_id
977                ,p_group_pl_id              => l_grp_bdgt_new.group_pl_id
978                ,p_lf_evt_ocrd_dt           => l_grp_bdgt_new.lf_evt_ocrd_dt
979                ,p_pl_id                    => l_grp_bdgt_new.group_pl_id
980                ,p_group_oipl_id            => l_grp_bdgt_new.group_oipl_id
981                ,p_audit_type_cd            => 'AC'
982                ,p_old_val_varchar          => l_cd_meaning_old
983                ,p_new_val_varchar          => l_cd_meaning_new
984                ,p_date_stamp               => sysdate
985                ,p_change_made_by_person_id => l_person_id
986                ,p_cwb_audit_id             => l_cwb_audit_id
987                ,p_object_version_number    => l_object_version_number
988                );
989    end if;
990   end if;
991   if g_debug then
992      hr_utility.set_location('Exiting person groups '|| l_proc, 200);
993   end if;
994 
995 end create_audit_record;
996 --
997 -- ----------------------------------------------------------------------------
998 -- |--------------------------< update_group_budget >-------------------------|
999 -- ----------------------------------------------------------------------------
1000 --
1001 procedure update_group_budget
1002   (p_validate                      in     boolean  default false
1003   ,p_group_per_in_ler_id           in     number
1004   ,p_group_pl_id                   in     number
1005   ,p_group_oipl_id                 in     number
1006   ,p_lf_evt_ocrd_dt                in     date       default hr_api.g_date
1007   ,p_bdgt_pop_cd                   in     varchar2   default hr_api.g_varchar2
1008   ,p_due_dt                        in     date       default hr_api.g_date
1009   ,p_access_cd                     in     varchar2   default hr_api.g_varchar2
1010   ,p_approval_cd                   in     varchar2   default hr_api.g_varchar2
1011   ,p_approval_date                 in     date       default hr_api.g_date
1012   ,p_approval_comments             in     varchar2   default hr_api.g_varchar2
1013   ,p_dist_bdgt_val                 in     number     default hr_api.g_number
1014   ,p_ws_bdgt_val                   in     number     default hr_api.g_number
1015   ,p_rsrv_val                      in     number     default hr_api.g_number
1016   ,p_dist_bdgt_mn_val              in     number     default hr_api.g_number
1017   ,p_dist_bdgt_mx_val              in     number     default hr_api.g_number
1018   ,p_dist_bdgt_incr_val            in     number     default hr_api.g_number
1019   ,p_ws_bdgt_mn_val                in     number     default hr_api.g_number
1020   ,p_ws_bdgt_mx_val                in     number     default hr_api.g_number
1021   ,p_ws_bdgt_incr_val              in     number     default hr_api.g_number
1022   ,p_rsrv_mn_val                   in     number     default hr_api.g_number
1023   ,p_rsrv_mx_val                   in     number     default hr_api.g_number
1024   ,p_rsrv_incr_val                 in     number     default hr_api.g_number
1025   ,p_dist_bdgt_iss_val             in     number     default hr_api.g_number
1026   ,p_ws_bdgt_iss_val               in     number     default hr_api.g_number
1027   ,p_dist_bdgt_iss_date            in     date       default hr_api.g_date
1028   ,p_ws_bdgt_iss_date              in     date       default hr_api.g_date
1029   ,p_ws_bdgt_val_last_upd_date     in     date       default hr_api.g_date
1030   ,p_dist_bdgt_val_last_upd_date   in     date       default hr_api.g_date
1031   ,p_rsrv_val_last_upd_date        in     date       default hr_api.g_date
1032   ,p_ws_bdgt_val_last_upd_by       in     number     default hr_api.g_number
1033   ,p_dist_bdgt_val_last_upd_by     in     number     default hr_api.g_number
1034   ,p_rsrv_val_last_upd_by          in     number     default hr_api.g_number
1035   ,p_submit_cd                     in     varchar2   default hr_api.g_varchar2
1036   ,p_submit_date                   in     date       default hr_api.g_date
1037   ,p_submit_comments               in     varchar2   default hr_api.g_varchar2
1038   ,p_perf_min_max_edit             in     varchar2   default 'Y'
1039   ,p_object_version_number         in out nocopy     number
1040   ) is
1041   --
1042   -- Declare cursors and local variables
1043   --
1044   l_object_version_number    number;
1045   l_grp_bdgt_old csr_grps%rowtype;
1046   --
1047   cursor csr_mn_mx_vals is
1048   select dist_bdgt_mn_val
1049         ,dist_bdgt_mx_val
1050 	,dist_bdgt_incr_val
1051 	,ws_bdgt_mn_val
1052 	,ws_bdgt_mx_val
1053 	,ws_bdgt_incr_val
1054 	,rsrv_mn_val
1055 	,rsrv_mx_val
1056 	,rsrv_incr_val
1057         ,group_per_in_ler_id
1058   from ben_cwb_person_groups grp
1059   where group_per_in_ler_id = p_group_per_in_ler_id
1060   and   group_pl_id = p_group_pl_id
1061   and   group_oipl_id = p_group_oipl_id;
1062   --
1063   l_mn_mx_vals csr_mn_mx_vals%rowtype;
1064   --
1065   l_proc                varchar2(72) := g_package||'update_group_budget';
1066 begin
1067   if g_debug then
1068      hr_utility.set_location('Entering:'|| l_proc, 10);
1069   end if;
1070   --
1071   -- Issue a savepoint
1072   --
1073   savepoint update_group_budget;
1074   --
1075   -- select the existing values from table.
1076   open  csr_grps(p_group_per_in_ler_id
1077                 ,p_group_pl_id
1078                 ,p_group_oipl_id);
1079   fetch csr_grps into l_grp_bdgt_old;
1080   close csr_grps;
1081   --
1082   -- Remember IN OUT parameter IN values
1083   --
1084   l_object_version_number := p_object_version_number;
1085   --
1086   -- Call Before Process User Hook
1087   --
1088   begin
1089     ben_cwb_person_groups_bk2.update_group_budget_b
1090       (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
1091         ,p_group_pl_id                   =>   p_group_pl_id
1092         ,p_group_oipl_id                 =>   p_group_oipl_id
1093         ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
1094         ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
1095         ,p_due_dt                        =>   p_due_dt
1096         ,p_access_cd                     =>   p_access_cd
1097         ,p_approval_cd                   =>   p_approval_cd
1098         ,p_approval_date                 =>   p_approval_date
1099         ,p_approval_comments             =>   p_approval_comments
1100         ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
1101         ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
1102         ,p_rsrv_val                      =>   p_rsrv_val
1103         ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
1104         ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
1105         ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
1106         ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
1107         ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
1108         ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
1109         ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
1110         ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
1111         ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
1112         ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
1113         ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
1114         ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
1115         ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
1116         ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
1117         ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
1118         ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
1119         ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
1120         ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
1121         ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
1122         ,p_submit_cd                     =>   p_submit_cd
1123         ,p_submit_date                   =>   p_submit_date
1124         ,p_submit_comments               =>   p_submit_comments
1125         ,p_object_version_number         =>   l_object_version_number
1126       );
1127   exception
1128     when hr_api.cannot_find_prog_unit then
1129       hr_api.cannot_find_prog_unit_error
1130         (p_module_name => 'update_group_budget'
1131         ,p_hook_type   => 'BP'
1132         );
1133   end;
1134   --
1135   -- Validation in addition to Row Handlers
1136   --
1137 
1138   -- Min Max Edits
1139   --
1140   if p_perf_min_max_edit = 'Y' then
1141     --
1142     open csr_mn_mx_vals;
1143     fetch csr_mn_mx_vals into l_mn_mx_vals;
1144     close csr_mn_mx_vals;
1145     --
1146     if (p_dist_bdgt_mx_val is null or
1147         p_dist_bdgt_mx_val <> hr_api.g_number) then
1148        l_mn_mx_vals.dist_bdgt_mx_val := p_dist_bdgt_mx_val;
1149     end if;
1150     --
1151     if (p_dist_bdgt_mn_val is null or
1152         p_dist_bdgt_mn_val <> hr_api.g_number) then
1153       l_mn_mx_vals.dist_bdgt_mn_val := p_dist_bdgt_mn_val;
1154     end if;
1155     --
1156     if (p_dist_bdgt_incr_val is null or
1157         p_dist_bdgt_incr_val <> hr_api.g_number) then
1158       l_mn_mx_vals.dist_bdgt_incr_val := p_dist_bdgt_incr_val;
1159     end if;
1160     --
1161     --
1162     if g_debug then
1163       hr_utility.set_location(l_proc, 30);
1164     end if;
1165     --
1166     if (p_ws_bdgt_mx_val is null or
1167         p_ws_bdgt_mx_val <> hr_api.g_number) then
1168        l_mn_mx_vals.ws_bdgt_mx_val := p_ws_bdgt_mx_val;
1169     end if;
1170     --
1171     if (p_ws_bdgt_mn_val is null or
1172         p_ws_bdgt_mn_val <> hr_api.g_number) then
1173       l_mn_mx_vals.ws_bdgt_mn_val := p_ws_bdgt_mn_val;
1174     end if;
1175     --
1176     if (p_ws_bdgt_incr_val is null or
1177         p_ws_bdgt_incr_val <> hr_api.g_number) then
1178       l_mn_mx_vals.ws_bdgt_incr_val := p_ws_bdgt_incr_val;
1179     end if;
1180     --
1181     if g_debug then
1182       hr_utility.set_location(l_proc, 50);
1183     end if;
1184     --
1185     -- Check Min, Max and Inc for Dist Bdgt Val
1186     --
1187     check_min_max(p_val     => p_dist_bdgt_val
1188                  ,p_iss_val => p_dist_bdgt_iss_val
1189                  ,p_min_val => l_mn_mx_vals.dist_bdgt_mn_val
1190 	         ,p_max_val => l_mn_mx_vals.dist_bdgt_mx_val
1191 	         ,p_incr_val => l_mn_mx_vals.dist_bdgt_incr_val
1192 	         ,p_group_per_in_ler_id => p_group_per_in_ler_id);
1193     --
1194     if g_debug then
1195       hr_utility.set_location(l_proc, 60);
1196     end if;
1197     --
1198     --
1199     -- Check Min, Max and Inc for Ws Bdgt Val
1200     --
1201     check_min_max(p_val     => p_ws_bdgt_val
1202                  ,p_iss_val => p_ws_bdgt_iss_val
1203                  ,p_min_val => l_mn_mx_vals.ws_bdgt_mn_val
1204                  ,p_max_val => l_mn_mx_vals.ws_bdgt_mx_val
1205 	         ,p_incr_val => l_mn_mx_vals.ws_bdgt_incr_val
1206                  ,p_group_per_in_ler_id => p_group_per_in_ler_id);
1207      --
1208      if g_debug then
1209        hr_utility.set_location(l_proc, 70);
1210      end if;
1211      --
1212   end if; -- of p_perf_min_max_edit
1213   --
1214   if p_rsrv_val is not null and
1215      p_rsrv_val <> hr_api.g_number and
1216      p_rsrv_val <> nvl(l_grp_bdgt_old.rsrv_val, hr_api.g_number) then
1217     --
1218     if l_mn_mx_vals.group_per_in_ler_id is null then
1219       open csr_mn_mx_vals;
1220       fetch csr_mn_mx_vals into l_mn_mx_vals;
1221       close csr_mn_mx_vals;
1222     end if;
1223     --
1224     if (p_rsrv_mx_val is null or
1225         p_rsrv_mx_val <> hr_api.g_number) then
1226        l_mn_mx_vals.rsrv_mx_val := p_rsrv_mx_val;
1227     end if;
1228     --
1229     if (p_rsrv_mn_val is null or
1230         p_rsrv_mn_val <> hr_api.g_number) then
1231       l_mn_mx_vals.rsrv_mn_val := p_rsrv_mn_val;
1232     end if;
1233     --
1234     if (p_rsrv_incr_val is null or
1235         p_rsrv_incr_val <> hr_api.g_number) then
1236       l_mn_mx_vals.rsrv_incr_val := p_rsrv_incr_val;
1237     end if;
1238     --
1239     -- Check Min, Max and Inc for Rsrv Val
1240     --
1241     check_min_max(p_val     => p_rsrv_val
1242                  ,p_iss_val => null
1243                  ,p_min_val => l_mn_mx_vals.rsrv_mn_val
1244                  ,p_max_val => l_mn_mx_vals.rsrv_mx_val
1245                  ,p_incr_val => l_mn_mx_vals.rsrv_incr_val
1246                  ,p_group_per_in_ler_id => p_group_per_in_ler_id);
1247     --
1248   end if;
1249   --
1250   -- Process Logic
1251   --
1252   ben_cpg_upd.upd
1253            (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
1254            ,p_group_pl_id                   =>   p_group_pl_id
1255            ,p_group_oipl_id                 =>   p_group_oipl_id
1256            ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
1257            ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
1258            ,p_due_dt                        =>   p_due_dt
1259            ,p_access_cd                     =>   p_access_cd
1260            ,p_approval_cd                   =>   p_approval_cd
1261            ,p_approval_date                 =>   p_approval_date
1262            ,p_approval_comments             =>   p_approval_comments
1263            ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
1264            ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
1265            ,p_rsrv_val                      =>   p_rsrv_val
1266            ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
1267            ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
1268            ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
1269            ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
1270            ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
1271            ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
1272            ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
1273            ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
1274            ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
1275            ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
1276            ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
1277            ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
1278            ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
1279            ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
1280            ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
1281            ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
1282            ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
1283            ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
1284            ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
1285            ,p_submit_cd                     =>   p_submit_cd
1286            ,p_submit_date                   =>   p_submit_date
1287            ,p_submit_comments               =>   p_submit_comments
1288            ,p_object_version_number         =>   l_object_version_number
1289          );
1290   --
1291   -- Call After Process User Hook
1292   --
1293   begin
1294     ben_cwb_person_groups_bk2.update_group_budget_a
1295       (p_group_per_in_ler_id           =>   p_group_per_in_ler_id
1296         ,p_group_pl_id                   =>   p_group_pl_id
1297         ,p_group_oipl_id                 =>   p_group_oipl_id
1298         ,p_lf_evt_ocrd_dt                =>   p_lf_evt_ocrd_dt
1299         ,p_bdgt_pop_cd                   =>   p_bdgt_pop_cd
1300         ,p_due_dt                        =>   p_due_dt
1301         ,p_access_cd                     =>   p_access_cd
1302         ,p_approval_cd                   =>   p_approval_cd
1303         ,p_approval_date                 =>   p_approval_date
1304         ,p_approval_comments             =>   p_approval_comments
1305         ,p_dist_bdgt_val                 =>   p_dist_bdgt_val
1306         ,p_ws_bdgt_val                   =>   p_ws_bdgt_val
1307         ,p_rsrv_val                      =>   p_rsrv_val
1308         ,p_dist_bdgt_mn_val              =>   p_dist_bdgt_mn_val
1309         ,p_dist_bdgt_mx_val              =>   p_dist_bdgt_mx_val
1310         ,p_dist_bdgt_incr_val            =>   p_dist_bdgt_incr_val
1311         ,p_ws_bdgt_mn_val                =>   p_ws_bdgt_mn_val
1312         ,p_ws_bdgt_mx_val                =>   p_ws_bdgt_mx_val
1313         ,p_ws_bdgt_incr_val              =>   p_ws_bdgt_incr_val
1314         ,p_rsrv_mn_val                   =>   p_rsrv_mn_val
1315         ,p_rsrv_mx_val                   =>   p_rsrv_mx_val
1316         ,p_rsrv_incr_val                 =>   p_rsrv_incr_val
1317         ,p_dist_bdgt_iss_val             =>   p_dist_bdgt_iss_val
1318         ,p_ws_bdgt_iss_val               =>   p_ws_bdgt_iss_val
1319         ,p_dist_bdgt_iss_date            =>   p_dist_bdgt_iss_date
1320         ,p_ws_bdgt_iss_date              =>   p_ws_bdgt_iss_date
1321         ,p_ws_bdgt_val_last_upd_date     =>   p_ws_bdgt_val_last_upd_date
1322         ,p_dist_bdgt_val_last_upd_date   =>   p_dist_bdgt_val_last_upd_date
1323         ,p_rsrv_val_last_upd_date        =>   p_rsrv_val_last_upd_date
1324         ,p_ws_bdgt_val_last_upd_by       =>   p_ws_bdgt_val_last_upd_by
1325         ,p_dist_bdgt_val_last_upd_by     =>   p_dist_bdgt_val_last_upd_by
1326         ,p_rsrv_val_last_upd_by          =>   p_rsrv_val_last_upd_by
1327         ,p_submit_cd                     =>   p_submit_cd
1328         ,p_submit_date                   =>   p_submit_date
1329         ,p_submit_comments               =>   p_submit_comments
1330         ,p_object_version_number         =>   l_object_version_number
1331       );
1332   exception
1333     when hr_api.cannot_find_prog_unit then
1334       hr_api.cannot_find_prog_unit_error
1335         (p_module_name => 'update_group_budget'
1336         ,p_hook_type   => 'AP'
1337         );
1338   end;
1339   --
1340   -- When in validation only mode raise the Validate_Enabled exception
1341   --
1342   if p_validate then
1343     raise hr_api.validate_enabled;
1344   end if;
1345   --
1346   -- Update is successful. So call the budget summary update.
1347   update_group_budget_summary
1348    (p_grp_bdgt_old => l_grp_bdgt_old
1349    ,p_dist_bdgt_val => p_dist_bdgt_val
1350    ,p_dist_bdgt_iss_val => p_dist_bdgt_iss_val
1351    ,p_ws_bdgt_val => p_ws_bdgt_val
1352    ,p_ws_bdgt_iss_val => p_ws_bdgt_iss_val);
1353   --
1354   --calling the audit log function to write in the audit log
1355   create_audit_record(l_grp_bdgt_old);
1356   -- Set all IN OUT and OUT parameters with out values
1357   --
1358   p_object_version_number  := l_object_version_number;
1359   --
1360   if g_debug then
1361      hr_utility.set_location(' Leaving:'||l_proc, 80);
1362   end if;
1363 exception
1364   when hr_api.validate_enabled then
1365     --
1366     -- As the Validate_Enabled exception has been raised
1367     -- we must rollback to the savepoint
1368     --
1369     rollback to update_group_budget;
1370     --
1371     -- Reset IN OUT parameters and set OUT parameters
1372     -- (Any key or derived arguments must be set to null
1373     -- when validation only mode is being used.)
1374     --
1375     if g_debug then
1376        hr_utility.set_location(' Leaving:'||l_proc, 90);
1377     end if;
1378   when others then
1379     --
1380     -- A validation or unexpected error has occured
1381     --
1382     rollback to update_group_budget;
1383     --
1384     -- Reset IN OUT parameters and set all
1385     -- OUT parameters, including warnings, to null
1386     --
1387     if g_debug then
1388        hr_utility.set_location(' Leaving:'||l_proc, 99);
1389     end if;
1390     raise;
1391 end update_group_budget;
1392 --
1393 --
1394 -- ----------------------------------------------------------------------------
1395 -- |-------------------------< delete_group_budget >--------------------------|
1396 -- ----------------------------------------------------------------------------
1397 --
1398 procedure delete_group_budget
1399   (p_validate                      in     boolean  default false
1400   ,p_group_per_in_ler_id           in     number
1401   ,p_group_pl_id                   in     number
1402   ,p_group_oipl_id                 in     number
1403   ,p_object_version_number         in out nocopy   number
1404   ,p_update_summary                in     boolean default false
1405   ) is
1406   --
1407   -- Declare cursors and local variables
1408   --
1409   l_object_version_number number;
1410   l_proc                varchar2(72) := g_package||'delete_group_budget';
1411   l_grp_bdgt_old csr_grps%rowtype;
1412 begin
1413   if g_debug then
1414      hr_utility.set_location('Entering:'|| l_proc, 10);
1415   end if;
1416   --
1417   -- Issue a savepoint
1418   --
1419   savepoint delete_group_budget;
1420   --
1421   open  csr_grps(p_group_per_in_ler_id
1422                 ,p_group_pl_id
1423                 ,p_group_oipl_id);
1424   fetch csr_grps into l_grp_bdgt_old;
1425   close csr_grps;
1426   --
1427   -- Remember IN OUT parameter IN values
1428   --
1429   --
1430   l_object_version_number := p_object_version_number;
1431   --
1432   -- Call Before Process User Hook
1433   --
1434   begin
1435     BEN_CWB_PERSON_GROUPS_BK3.delete_group_budget_b
1436       (p_group_per_in_ler_id           =>     p_group_per_in_ler_id
1437       ,p_group_pl_id                   =>     p_group_pl_id
1438       ,p_group_oipl_id                 =>     p_group_oipl_id
1439       ,p_object_version_number         =>     l_object_version_number
1440       );
1441   exception
1442     when hr_api.cannot_find_prog_unit then
1443       hr_api.cannot_find_prog_unit_error
1444         (p_module_name => 'delete_group_budget'
1445         ,p_hook_type   => 'BP'
1446         );
1447   end;
1448   --
1449   -- Validation in addition to Row Handlers
1450   --
1451 
1452   --
1453   -- Process Logic
1454   --
1455   ben_cpg_del.del
1456       (p_group_per_in_ler_id                  =>     p_group_per_in_ler_id
1457       ,p_group_pl_id                          =>     p_group_pl_id
1458       ,p_group_oipl_id                        =>     p_group_oipl_id
1459       ,p_object_version_number                =>     l_object_version_number
1460       );
1461   --
1462   -- Call After Process User Hook
1463   --
1464   begin
1465     ben_cwb_person_groups_bk3.delete_group_budget_a
1466       (p_group_per_in_ler_id           =>     p_group_per_in_ler_id
1467       ,p_group_pl_id                   =>     p_group_pl_id
1468       ,p_group_oipl_id                 =>     p_group_oipl_id
1469       ,p_object_version_number         =>     l_object_version_number
1470       );
1471   exception
1472     when hr_api.cannot_find_prog_unit then
1473       hr_api.cannot_find_prog_unit_error
1474         (p_module_name => 'delete_group_budget'
1475         ,p_hook_type   => 'AP'
1476         );
1477   end;
1478   --
1479   -- When in validation only mode raise the Validate_Enabled exception
1480   --
1481   if p_validate then
1482     raise hr_api.validate_enabled;
1483   end if;
1484   --
1485   -- Delete is successful. So call the budget summary update.
1486   --
1487   if p_update_summary then
1488     update_group_budget_summary
1489      (p_grp_bdgt_old => l_grp_bdgt_old
1490      ,p_dist_bdgt_val => null
1491      ,p_dist_bdgt_iss_val => null
1492      ,p_ws_bdgt_val => null
1493      ,p_ws_bdgt_iss_val => null);
1494   end if;
1495   --
1496   if g_debug then
1497      hr_utility.set_location(' Leaving:'||l_proc, 70);
1498   end if;
1499 exception
1500   when hr_api.validate_enabled then
1501     --
1502     -- As the Validate_Enabled exception has been raised
1503     -- we must rollback to the savepoint
1504     --
1505     rollback to delete_group_budget;
1506     --
1507     if g_debug then
1508        hr_utility.set_location(' Leaving:'||l_proc, 80);
1509     end if;
1510   when others then
1511     --
1512     -- A validation or unexpected error has occured
1513     --
1514     rollback to delete_group_budget;
1515     --
1516     -- Reset IN OUT parameters and set all
1517     -- OUT parameters, including warnings, to null
1518     --
1519     if g_debug then
1520        hr_utility.set_location(' Leaving:'||l_proc, 90);
1521     end if;
1522     raise;
1523 end delete_group_budget;
1524 --
1525 --
1526 end ben_cwb_person_groups_api;