DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_USER_RULES_PKG

Source


1 package body EGO_USER_RULES_PKG as
2 /* $Header: EGOVUSRB.pls 120.1 2007/07/31 10:55:23 rgadiyar noship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in out nocopy VARCHAR2,
6   X_RULE_ID in NUMBER,
7   X_RULESET_ID in NUMBER,
8   X_SEQUENCE in NUMBER,
9   X_RULE_NAME in VARCHAR2,
10   X_ATTR_GROUP_TYPE in VARCHAR2,
11   X_ATTR_GROUP_NAME in VARCHAR2,
12   X_ATTR_NAME in VARCHAR2,
13   X_SEVERITY in VARCHAR2,
14   X_RULE_XML in CLOB,
15   X_DESCRIPTION in VARCHAR2,
16   X_USER_EXPLANATION_MESSAGE in VARCHAR2,
17   X_CREATION_DATE in DATE,
18   X_CREATED_BY in NUMBER,
19   X_LAST_UPDATE_DATE in DATE,
20   X_LAST_UPDATED_BY in NUMBER,
21   X_LAST_UPDATE_LOGIN in NUMBER
22 ) is
23   cursor C is select ROWID from EGO_USER_RULES_B
24     where RULE_ID = X_RULE_ID
25     ;
26 begin
27   insert into EGO_USER_RULES_B (
28     RULE_ID,
29     RULESET_ID,
30     SEQUENCE,
31     RULE_NAME,
32     ATTR_GROUP_TYPE,
33     ATTR_GROUP_NAME,
34     ATTR_NAME,
35     SEVERITY,
36     RULE_XML,
37     CREATION_DATE,
38     CREATED_BY,
39     LAST_UPDATE_DATE,
40     LAST_UPDATED_BY,
41     LAST_UPDATE_LOGIN
42   ) values (
43     X_RULE_ID,
44     X_RULESET_ID,
45     X_SEQUENCE,
46     X_RULE_NAME,
47     X_ATTR_GROUP_TYPE,
48     X_ATTR_GROUP_NAME,
49     X_ATTR_NAME,
50     X_SEVERITY,
51     X_RULE_XML,
52     X_CREATION_DATE,
53     X_CREATED_BY,
54     X_LAST_UPDATE_DATE,
55     X_LAST_UPDATED_BY,
56     X_LAST_UPDATE_LOGIN
57   );
58 
59   insert into EGO_USER_RULES_TL (
60     RULE_ID,
61     DESCRIPTION,
62     USER_EXPLANATION_MESSAGE,
63     LAST_UPDATE_DATE,
64     LAST_UPDATED_BY,
65     CREATION_DATE,
66     CREATED_BY,
67     LAST_UPDATE_LOGIN,
68     LANGUAGE,
69     SOURCE_LANG
70   ) select
71     X_RULE_ID,
72     X_DESCRIPTION,
73     X_USER_EXPLANATION_MESSAGE,
74     X_LAST_UPDATE_DATE,
75     X_LAST_UPDATED_BY,
76     X_CREATION_DATE,
77     X_CREATED_BY,
78     X_LAST_UPDATE_LOGIN,
79     L.LANGUAGE_CODE,
80     userenv('LANG')
81   from FND_LANGUAGES L
82   where L.INSTALLED_FLAG in ('I', 'B')
83   and not exists
84     (select NULL
85     from EGO_USER_RULES_TL T
86     where T.RULE_ID = X_RULE_ID
87     and T.LANGUAGE = L.LANGUAGE_CODE);
88 
89   open c;
90   fetch c into X_ROWID;
91   if (c%notfound) then
92     close c;
93     raise no_data_found;
94   end if;
95   close c;
96 
97 end INSERT_ROW;
98 
99 procedure LOCK_ROW (
100   X_RULE_ID in NUMBER,
101   X_RULESET_ID in NUMBER,
102   X_SEQUENCE in NUMBER,
103   X_RULE_NAME in VARCHAR2,
104   X_ATTR_GROUP_TYPE in VARCHAR2,
105   X_ATTR_GROUP_NAME in VARCHAR2,
106   X_ATTR_NAME in VARCHAR2,
107   X_SEVERITY in VARCHAR2,
108   X_RULE_XML in CLOB,
109   X_DESCRIPTION in VARCHAR2,
110   X_USER_EXPLANATION_MESSAGE in VARCHAR2
111 ) is
112   cursor c is select
113       RULESET_ID,
114       SEQUENCE,
115       RULE_NAME,
116       ATTR_GROUP_TYPE,
117       ATTR_GROUP_NAME,
118       ATTR_NAME,
119       SEVERITY,
120       RULE_XML
121     from EGO_USER_RULES_B
122     where RULE_ID = X_RULE_ID
123     for update of RULE_ID nowait;
124   recinfo c%rowtype;
125 
126   cursor c1 is select
127       DESCRIPTION,
128       USER_EXPLANATION_MESSAGE,
129       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
130     from EGO_USER_RULES_TL
131     where RULE_ID = X_RULE_ID
132     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
133     for update of RULE_ID nowait;
134 begin
135   open c;
136   fetch c into recinfo;
137   if (c%notfound) then
138     close c;
139     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
140     app_exception.raise_exception;
141   end if;
142   close c;
143   if (    (recinfo.RULESET_ID = X_RULESET_ID)
144       AND (recinfo.SEQUENCE = X_SEQUENCE)
145       AND (recinfo.RULE_NAME = X_RULE_NAME)
146       AND ((recinfo.ATTR_GROUP_TYPE = X_ATTR_GROUP_TYPE)
147            OR ((recinfo.ATTR_GROUP_TYPE is null) AND (X_ATTR_GROUP_TYPE is null)))
148       AND ((recinfo.ATTR_GROUP_NAME = X_ATTR_GROUP_NAME)
149            OR ((recinfo.ATTR_GROUP_NAME is null) AND (X_ATTR_GROUP_NAME is null)))
150       AND ((recinfo.ATTR_NAME = X_ATTR_NAME)
151            OR ((recinfo.ATTR_NAME is null) AND (X_ATTR_NAME is null)))
152       AND ((recinfo.SEVERITY = X_SEVERITY)
153            OR ((recinfo.SEVERITY is null) AND (X_SEVERITY is null)))
154       AND (recinfo.RULE_XML = X_RULE_XML)
155   ) then
156     null;
157   else
158     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
159     app_exception.raise_exception;
160   end if;
161 
162   for tlinfo in c1 loop
163     if (tlinfo.BASELANG = 'Y') then
164       if (    ((tlinfo.DESCRIPTION = X_DESCRIPTION)
165                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
166           AND ((tlinfo.USER_EXPLANATION_MESSAGE = X_USER_EXPLANATION_MESSAGE)
167                OR ((tlinfo.USER_EXPLANATION_MESSAGE is null) AND (X_USER_EXPLANATION_MESSAGE is null)))
168       ) then
169         null;
170       else
171         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
172         app_exception.raise_exception;
173       end if;
174     end if;
175   end loop;
176   return;
177 end LOCK_ROW;
178 
179 procedure UPDATE_ROW (
180   X_RULE_ID in NUMBER,
181   X_RULESET_ID in NUMBER,
182   X_SEQUENCE in NUMBER,
183   X_RULE_NAME in VARCHAR2,
184   X_ATTR_GROUP_TYPE in VARCHAR2,
185   X_ATTR_GROUP_NAME in VARCHAR2,
186   X_ATTR_NAME in VARCHAR2,
187   X_SEVERITY in VARCHAR2,
188   X_RULE_XML in CLOB,
189   X_DESCRIPTION in VARCHAR2,
190   X_USER_EXPLANATION_MESSAGE in VARCHAR2,
191   X_LAST_UPDATE_DATE in DATE,
192   X_LAST_UPDATED_BY in NUMBER,
193   X_LAST_UPDATE_LOGIN in NUMBER
194 ) is
195 begin
196   update EGO_USER_RULES_B set
197     RULESET_ID = X_RULESET_ID,
198     SEQUENCE = X_SEQUENCE,
199     RULE_NAME = X_RULE_NAME,
200     ATTR_GROUP_TYPE = X_ATTR_GROUP_TYPE,
201     ATTR_GROUP_NAME = X_ATTR_GROUP_NAME,
202     ATTR_NAME = X_ATTR_NAME,
203     SEVERITY = X_SEVERITY,
204     RULE_XML = X_RULE_XML,
205     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
206     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
207     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
208   where RULE_ID = X_RULE_ID;
209 
210   if (sql%notfound) then
211     raise no_data_found;
212   end if;
213 
214   update EGO_USER_RULES_TL set
215     DESCRIPTION = X_DESCRIPTION,
216     USER_EXPLANATION_MESSAGE = X_USER_EXPLANATION_MESSAGE,
217     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
218     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
219     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
220     SOURCE_LANG = userenv('LANG')
221   where RULE_ID = X_RULE_ID
222   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
223 
224   if (sql%notfound) then
225     raise no_data_found;
226   end if;
227 end UPDATE_ROW;
228 
229 procedure DELETE_ROW (
230   X_RULE_ID in NUMBER
231 ) is
232 begin
233   delete from EGO_USER_RULES_TL
234   where RULE_ID = X_RULE_ID;
235 
236   if (sql%notfound) then
237     raise no_data_found;
238   end if;
239 
240   delete from EGO_USER_RULES_B
241   where RULE_ID = X_RULE_ID;
242 
243   if (sql%notfound) then
244     raise no_data_found;
245   end if;
246 end DELETE_ROW;
247 
248 procedure ADD_LANGUAGE
249 is
250 begin
251   delete from EGO_USER_RULES_TL T
252   where not exists
253     (select NULL
254     from EGO_USER_RULES_B B
255     where B.RULE_ID = T.RULE_ID
256     );
257 
258   update EGO_USER_RULES_TL T set (
259       DESCRIPTION,
260       USER_EXPLANATION_MESSAGE
261     ) = (select
262       B.DESCRIPTION,
263       B.USER_EXPLANATION_MESSAGE
264     from EGO_USER_RULES_TL B
265     where B.RULE_ID = T.RULE_ID
266     and B.LANGUAGE = T.SOURCE_LANG)
267   where (
268       T.RULE_ID,
269       T.LANGUAGE
270   ) in (select
271       SUBT.RULE_ID,
272       SUBT.LANGUAGE
273     from EGO_USER_RULES_TL SUBB, EGO_USER_RULES_TL SUBT
274     where SUBB.RULE_ID = SUBT.RULE_ID
275     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
276     and (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
277       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
278       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
279       or SUBB.USER_EXPLANATION_MESSAGE <> SUBT.USER_EXPLANATION_MESSAGE
280       or (SUBB.USER_EXPLANATION_MESSAGE is null and SUBT.USER_EXPLANATION_MESSAGE is not null)
281       or (SUBB.USER_EXPLANATION_MESSAGE is not null and SUBT.USER_EXPLANATION_MESSAGE is null)
282   ));
283 
284   insert into EGO_USER_RULES_TL (
285     RULE_ID,
286     DESCRIPTION,
287     USER_EXPLANATION_MESSAGE,
288     LAST_UPDATE_DATE,
289     LAST_UPDATED_BY,
290     CREATION_DATE,
291     CREATED_BY,
292     LAST_UPDATE_LOGIN,
293     LANGUAGE,
294     SOURCE_LANG
295   ) select /*+ ORDERED */
296     B.RULE_ID,
297     B.DESCRIPTION,
298     B.USER_EXPLANATION_MESSAGE,
299     B.LAST_UPDATE_DATE,
300     B.LAST_UPDATED_BY,
301     B.CREATION_DATE,
302     B.CREATED_BY,
303     B.LAST_UPDATE_LOGIN,
304     L.LANGUAGE_CODE,
305     B.SOURCE_LANG
306   from EGO_USER_RULES_TL B, FND_LANGUAGES L
307   where L.INSTALLED_FLAG in ('I', 'B')
308   and B.LANGUAGE = userenv('LANG')
309   and not exists
310     (select NULL
311     from EGO_USER_RULES_TL T
312     where T.RULE_ID = B.RULE_ID
313     and T.LANGUAGE = L.LANGUAGE_CODE);
314 end ADD_LANGUAGE;
315 
316 procedure TRANSLATE_ROW (
317   X_RULE_ID in NUMBER,
318   X_USER_EXPLANATION_MESSAGE in VARCHAR2,
319   X_DESCRIPTION in VARCHAR2,
320   X_OWNER in VARCHAR2
321  ) is
322 begin
323  update EGO_USER_RULES_TL set
324    USER_EXPLANATION_MESSAGE = X_USER_EXPLANATION_MESSAGE,
325    DESCRIPTION = X_DESCRIPTION,
326    LAST_UPDATE_DATE = sysdate,
327    LAST_UPDATED_BY = decode(x_owner, 'ORACLE', 1, 0),
328    LAST_UPDATE_LOGIN = 0,
329    SOURCE_LANG = userenv('LANG')
330  where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
331  and RULE_ID = X_RULE_ID;
332 end TRANSLATE_ROW;
333 
334 procedure LOAD_ROW (
335   X_ROWID in out nocopy VARCHAR2,
336   X_RULE_ID in NUMBER,
337   X_RULESET_ID in NUMBER,
338   X_SEQUENCE in NUMBER,
339   X_RULE_NAME in VARCHAR2,
340   X_ATTR_GROUP_TYPE in VARCHAR2,
341   X_ATTR_GROUP_NAME in VARCHAR2,
342   X_ATTR_NAME in VARCHAR2,
343   X_SEVERITY in VARCHAR2,
344   X_RULE_XML in CLOB,
345   X_DESCRIPTION in VARCHAR2,
346   X_USER_EXPLANATION_MESSAGE in VARCHAR2,
347   X_CREATED_BY in NUMBER,
348   X_LAST_UPDATE_DATE in DATE,
349   X_LAST_UPDATED_BY in NUMBER,
350   X_LAST_UPDATE_LOGIN in NUMBER
351 ) is
352 begin
353    declare
354      l_rule_id number := 0;
355    begin
356 
357      EGO_USER_RULES_PKG.UPDATE_ROW(
358        X_RULE_ID		=>	X_RULE_ID,
359        X_RULESET_ID		=>	X_RULESET_ID,
360        X_SEQUENCE		=>	X_SEQUENCE,
361        X_RULE_NAME		=>	X_RULE_NAME,
362        X_ATTR_GROUP_TYPE	=>	X_ATTR_GROUP_TYPE,
363        X_ATTR_GROUP_NAME	=>	X_ATTR_GROUP_NAME,
364        X_ATTR_NAME		=>	X_ATTR_NAME,
365        X_SEVERITY		=>	X_SEVERITY,
366        X_RULE_XML		=>	X_RULE_XML,
367        X_DESCRIPTION		=>	X_DESCRIPTION,
368        X_USER_EXPLANATION_MESSAGE	=>	X_USER_EXPLANATION_MESSAGE,
369        X_LAST_UPDATE_DATE	=>	SYSDATE,
370        X_LAST_UPDATED_BY	=>	X_LAST_UPDATED_BY,
371        X_LAST_UPDATE_LOGIN	=>	X_LAST_UPDATE_LOGIN
372      );
373 
374    exception
375      when NO_DATA_FOUND then
376        select EGO_USER_RULES_S.nextval into l_rule_id from dual;
377 
378        EGO_USER_RULES_PKG.INSERT_ROW(
379          X_ROWID		=>	X_ROWID,
380 	 X_RULE_ID		=>	l_rule_id,
381 	 X_RULESET_ID		=>	X_RULESET_ID,
382 	 X_SEQUENCE		=>	X_SEQUENCE,
383 	 X_RULE_NAME		=>	X_RULE_NAME,
384 	 X_ATTR_GROUP_TYPE	=>	X_ATTR_GROUP_TYPE,
385 	 X_ATTR_GROUP_NAME	=>	X_ATTR_GROUP_NAME,
386 	 X_ATTR_NAME		=>	X_ATTR_NAME,
387 	 X_SEVERITY		=>	X_SEVERITY,
388 	 X_RULE_XML		=>	X_RULE_XML,
389 	 X_DESCRIPTION		=>	X_DESCRIPTION,
390 	 X_USER_EXPLANATION_MESSAGE	=>	X_USER_EXPLANATION_MESSAGE,
391 	 X_CREATION_DATE	=>	sysdate,
392 	 X_CREATED_BY		=>	X_CREATED_BY,
393 	 X_LAST_UPDATE_DATE	=>	sysdate,
394 	 X_LAST_UPDATED_BY	=>	X_LAST_UPDATED_BY,
395 	 X_LAST_UPDATE_LOGIN	=>	X_LAST_UPDATE_LOGIN
396        );
397    end;
398 
399 end LOAD_ROW;
400 
401 end EGO_USER_RULES_PKG;