DBA Data[Home] [Help]

PACKAGE BODY: APPS.BEN_WARNINGS

Source


1 package body ben_warnings as
2 /* $Header: benwarng.pkb 120.2 2006/11/23 13:57:40 gsehgal noship $ */
3 --
4 g_package   varchar2(80) := 'ben_warnings';
5 ----------------------------------------------------------------------------
6 --  exist_warning -- bug 4120426
7 --  exist_warning checks for duplicate message for the same person
8 ----------------------------------------------------------------------------
9 Function exist_warning
10    ( p_application_short_name   in varchar2,
11      p_message_name             in varchar2,
12      p_parm1     in number   default null,
13      p_parm2     in number   default null,
14      p_parma     in varchar2 default null,
15      p_parmb     in varchar2 default null,
16      p_parmc     in varchar2 default null,
17      p_person_id in number   default null) return boolean is
18 
19    l_package varchar2(80) :=g_package||'.exist_warning';
20  BEGIN
21    hr_utility.set_location ('Entering '||l_package,10);
22     --
23     if (g_oab_warnings.first) is not null then
24       --
25       for i in g_oab_warnings.first..g_oab_warnings.last loop
26           --
27 	  if ( g_oab_warnings(i).application_short_name          = p_application_short_name) and
28 	     ( g_oab_warnings(i).message_name                    = p_message_name) and
29 	     ( nvl( g_oab_warnings(i).parm1,hr_api.g_number)     = nvl(p_parm1,hr_api.g_number) ) and
30 	     ( nvl( g_oab_warnings(i).parm2,hr_api.g_number)     = nvl(p_parm2,hr_api.g_number) ) and
31 	     ( nvl( g_oab_warnings(i).parma,hr_api.g_varchar2)   = nvl( p_parma,hr_api.g_varchar2) ) and
32 	     ( nvl( g_oab_warnings(i).parmb,hr_api.g_varchar2)   = nvl( p_parmb,hr_api.g_varchar2) ) and
33 	     ( nvl( g_oab_warnings(i).parmc,hr_api.g_varchar2)   = nvl( p_parmc,hr_api.g_varchar2) ) and
34 	     ( nvl( g_oab_warnings(i).person_id,hr_api.g_number) = nvl(p_person_id,hr_api.g_number) )
35 	   then
36 	       	  return true;
37            end if;
38 	  --
39       end loop;
40       --
41     end if;
42     --
43    hr_utility.set_location ('Leaving '||l_package,20);
44    return false;
45  END exist_warning;
46 
47 
48 ----------------------------------------------------------------------------
49 --  load_warning
50 ----------------------------------------------------------------------------
51 PROCEDURE load_warning
52     (p_application_short_name  in varchar2,
53      p_message_name            in varchar2,
54      p_parm1     in number default null,
55      p_parm2     in number default null,
56      p_parma     in varchar2 default null,
57      p_parmb     in varchar2 default null,
58      p_parmc     in varchar2 default null, --bug 4120426
59      p_person_id in number   default null) is
60 
61   l_package varchar2(80) := g_package||'.load_warning';
62   l_oab_warnings_index number;
63 BEGIN
64   hr_utility.set_location ('Entering '||l_package,10);
65 
66   l_oab_warnings_index := nvl(g_oab_warnings.count,0) + 1;
67 
68   if not exist_warning
69        ( p_application_short_name => p_application_short_name,
70          p_message_name           => p_message_name,
71          p_parm1                  => p_parm1,
72 	 p_parm2                  => p_parm2,
73 	 p_parma                  => p_parma,
74 	 p_parmb                  => p_parmb,
75 	 p_parmc                  => p_parmc,
76          p_person_id              => p_person_id
77        )then
78   g_oab_warnings(l_oab_warnings_index).application_short_name :=
79            p_application_short_name;
80   g_oab_warnings(l_oab_warnings_index).message_name := p_message_name;
81   g_oab_warnings(l_oab_warnings_index).parm1 := p_parm1;
82   g_oab_warnings(l_oab_warnings_index).parm2 := p_parm2;
83   g_oab_warnings(l_oab_warnings_index).parma := p_parma;
84   g_oab_warnings(l_oab_warnings_index).parmb := p_parmb;
85   g_oab_warnings(l_oab_warnings_index).parmc := p_parmc;
86   g_oab_warnings(l_oab_warnings_index).person_id := p_person_id;
87 
88   end if;
89 
90   hr_utility.set_location ('Leaving '||l_package,10);
91 
92 END load_warning;
93 ----------------------------------------------------------------------------
94 --  trim_warnings
95 ----------------------------------------------------------------------------
96 PROCEDURE trim_warnings(p_trim in number) is
97   l_package varchar2(80) := g_package||'.trim_warnings';
98   l_trim_begin number;
99   l_trim_end   number;
100 begin
101   hr_utility.set_location ('Entering '||l_package,10);
102 
103   -- 'p_trim' indicates the number of records that we want to delete from
104   -- the end of the table.
105 
106   l_trim_begin := p_trim - 1;
107   l_trim_end := g_oab_warnings.count;
108 
109   g_oab_warnings.delete(l_trim_begin,l_trim_end);
110 
111   hr_utility.set_location ('Leaving '||l_package,10);
112 
113 end trim_warnings;
114 
115 ----------------------------------------------------------------------------
116 --  empty_warnings
117 ----------------------------------------------------------------------------
118 PROCEDURE empty_warnings is
119 
120   l_package varchar2(80) := g_package||'.empty_warnings';
121 BEGIN
122   hr_utility.set_location ('Entering '||l_package,10);
123 
124   g_oab_warnings.delete;
125 
126   hr_utility.set_location ('Leaving '||l_package,10);
127 
128 END empty_warnings;
129 ----------------------------------------------------------------------------
130 --  set_warning
131 ----------------------------------------------------------------------------
132 PROCEDURE set_warning
133     (p_index number) is
134 
135   l_package varchar2(80) := g_package||'.set_warning';
136 BEGIN
137   hr_utility.set_location ('Entering '||l_package,10);
138 
139     fnd_message.set_name(g_oab_warnings(p_index).application_short_name
140                         ,g_oab_warnings(p_index).message_name);
141 
142     if g_oab_warnings(p_index).parm1 is not null then
143        fnd_message.set_token('PARM1',g_oab_warnings(p_index).parm1);
144        if g_oab_warnings(p_index).parm2 is not null then
145           fnd_message.set_token('PARM2',g_oab_warnings(p_index).parm2);
146        end if;
147     end if;
148     if g_oab_warnings(p_index).parma is not null then
149        fnd_message.set_token('PARMA',g_oab_warnings(p_index).parma);
150        if g_oab_warnings(p_index).parmb is not null then
151           fnd_message.set_token('PARMB',g_oab_warnings(p_index).parmb);
152 	  if g_oab_warnings(p_index).parmc is not null then
153              fnd_message.set_token('PARMC',g_oab_warnings(p_index).parmc);
154 	  end if;
155        end if;
156     end if;
157 
158   hr_utility.set_location ('Leaving '||l_package,10);
159 
160 END set_warning;
161 ----------------------------------------------------------------------------
162 --  write_warnings_batch
163 ----------------------------------------------------------------------------
164 PROCEDURE write_warnings_batch is
165 
166   l_package varchar2(80) := g_package||'.write_warnings_batch';
167 
168 BEGIN
169   hr_utility.set_location ('Entering '||l_package,10);
170 
171  if (g_oab_warnings.first) is not null then
172    for i in g_oab_warnings.first..g_oab_warnings.last loop
173       if g_oab_warnings(i).message_name <>  'BEN_93964_ENRO_DT_LT_LE_OCD_DT' --Bug#5030958 and Bug#5079314
174        and  g_oab_warnings(i).message_name <> 'BEN_94464_ENROL_ED_DT_RANGE'
175         and g_oab_warnings(i).message_name <> 'BEN_94441_ENROL_ST_DT_RANGE' then
176       set_warning(p_index=> i);
177       g_warning_rec.rep_typ_cd          := 'WARNING';
178       g_warning_rec.error_message_code  := g_oab_warnings(i).message_name;
179       g_warning_rec.text                := fnd_message.get;
180       g_warning_rec.person_id           := g_oab_warnings(i).person_id;
181       benutils.write(p_rec => g_warning_rec);
182      end if;
183     end loop;
184   end if;
185   empty_warnings;
186   hr_utility.set_location ('Leaving '||l_package,10);
187 
188 END write_warnings_batch;
189 ----------------------------------------------------------------------------
190 --  write_warnings_online
191 ----------------------------------------------------------------------------
192 PROCEDURE write_warnings_online (p_session_id in number) is
193 
194   l_package varchar2(80) := g_package||'.write_warnings_online';
195   l_button number;
196 BEGIN
197   hr_utility.set_location ('Entering '||l_package,10);
198 
199   if (g_oab_warnings.first) is not null then
200     for i in g_oab_warnings.first..g_oab_warnings.last loop
201       set_warning(p_index=> i);
202         Insert into ben_online_warnings(session_id, message_text)
203              values (p_session_id, fnd_message.get);
204     end loop;
205   end if;
206   empty_warnings;
207 
208   hr_utility.set_location ('Leaving '||l_package,10);
209 
210 END write_warnings_online;
211 ----------------------------------------------------------------------------
212 --  delete_warnings
213 /*
214 This procedure is used to delete the warnings. warnings are deleted
215 based on the paramters passed.
216 */
217 ----------------------------------------------------------------------------
218 
219 PROCEDURE delete_warnings (
220    p_application_short_name   IN   VARCHAR2,
221    p_message_name             IN   VARCHAR2,
222    p_parm1                    IN   NUMBER DEFAULT NULL,
223    p_parm2                    IN   NUMBER DEFAULT NULL,
224    p_parma                    IN   VARCHAR2 DEFAULT NULL,
225    p_parmb                    IN   VARCHAR2 DEFAULT NULL,
226    p_parmc                    IN   VARCHAR2 DEFAULT NULL,
227    p_person_id                IN   NUMBER DEFAULT NULL
228 )
229 IS
230    curr_index      NUMBER;
231    next_index      NUMBER;
232    l_package       VARCHAR2 (80)         := g_package || '.delete_warnings';
233 BEGIN
234    hr_utility.set_location ('Entering: ' || l_package, 10);
235    hr_utility.set_location (p_application_short_name, 10);
236    hr_utility.set_location (p_message_name, 10);
237    hr_utility.set_location (p_parm1, 10);
238    hr_utility.set_location (p_parm2, 10);
239    hr_utility.set_location (p_parma, 10);
240    hr_utility.set_location (p_parmb, 10);
241    hr_utility.set_location (p_parmc, 10);
242    hr_utility.set_location (p_person_id, 10);
243 
244    IF g_oab_warnings.COUNT > 0
245    THEN
246       hr_utility.set_location ('warnings exist ' || g_oab_warnings.COUNT, 20);
247       next_index := g_oab_warnings.FIRST;
248 
249       LOOP
250          curr_index := next_index;
251          next_index := g_oab_warnings.NEXT (next_index);
252 
253          IF     g_oab_warnings (curr_index).application_short_name = p_application_short_name
254             AND g_oab_warnings (curr_index).message_name = p_message_name
255             AND NVL (g_oab_warnings (curr_index).person_id, -1) = NVL (p_person_id,-1)
256             AND NVL (g_oab_warnings (curr_index).parma, '-1') = NVL (p_parma, '-1')
257             AND NVL (g_oab_warnings (curr_index).parmb, '-1') = NVL (p_parmb, '-1')
258             AND NVL (g_oab_warnings (curr_index).parmc, '-1') = NVL (p_parmc, '-1')
259             AND NVL (g_oab_warnings (curr_index).parm1, '-1') = NVL (p_parm1, '-1')
260             AND NVL (g_oab_warnings (curr_index).parm2, '-1') = NVL (p_parm2, '-1')
261          THEN
262             hr_utility.set_location ('Deleting warning ' || curr_index, 40);
263             g_oab_warnings.DELETE (curr_index);
264          END IF;
265 
266          IF next_index IS NULL
267          THEN
268             EXIT;
269          END IF;
270       END LOOP;
271    END IF;
272 
273    hr_utility.set_location (' Leaving: ' || l_package, 10);
274 END delete_warnings;
275 -----
276 end ben_warnings;