1 package body AMS_WEB_RULES_PKG as
2 /* $Header: amstwrlb.pls 115.2 2003/11/11 20:28:04 musman noship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out nocopy VARCHAR2,
5 X_RULE_ID in NUMBER,
6 X_ACTIVITY_RULE_ID in NUMBER,
7 X_RULE_PRIORITY in NUMBER,
8 X_RELATIONSHIP_CODE in VARCHAR2,
9 X_CONTEXT_TYPE_CODE in VARCHAR2,
10 X_CONTEXT_ID in NUMBER,
11 X_ORGANIZATION_ID in NUMBER,
12 X_OBJECT_VERSION_NUMBER in NUMBER,
13 X_ATTRIBUTE_CATEGORY in VARCHAR2,
14 X_ATTRIBUTE1 in VARCHAR2,
15 X_ATTRIBUTE2 in VARCHAR2,
16 X_ATTRIBUTE3 in VARCHAR2,
17 X_ATTRIBUTE4 in VARCHAR2,
18 X_ATTRIBUTE5 in VARCHAR2,
19 X_ATTRIBUTE6 in VARCHAR2,
20 X_ATTRIBUTE7 in VARCHAR2,
21 X_ATTRIBUTE8 in VARCHAR2,
22 X_ATTRIBUTE9 in VARCHAR2,
23 X_ATTRIBUTE10 in VARCHAR2,
24 X_ATTRIBUTE11 in VARCHAR2,
25 X_ATTRIBUTE12 in VARCHAR2,
26 X_ATTRIBUTE13 in VARCHAR2,
27 X_ATTRIBUTE14 in VARCHAR2,
28 X_ATTRIBUTE15 in VARCHAR2,
29 X_RULE_NAME in VARCHAR2,
30 X_CREATION_DATE in DATE,
31 X_CREATED_BY in NUMBER,
32 X_LAST_UPDATE_DATE in DATE,
33 X_LAST_UPDATED_BY in NUMBER,
34 X_LAST_UPDATE_LOGIN in NUMBER
35 ) is
36 cursor C is select ROWID from AMS_WEB_RULES_B
37 where RULE_ID = X_RULE_ID;
38 begin
39 insert into AMS_WEB_RULES_B (
40 RULE_ID,
41 ACTIVITY_RULE_ID,
42 RULE_PRIORITY,
43 RELATIONSHIP_CODE,
44 CONTEXT_TYPE_CODE,
45 CONTEXT_ID,
46 ORGANIZATION_ID,
47 OBJECT_VERSION_NUMBER,
48 ATTRIBUTE_CATEGORY,
49 ATTRIBUTE1,
50 ATTRIBUTE2,
51 ATTRIBUTE3,
52 ATTRIBUTE4,
53 ATTRIBUTE5,
54 ATTRIBUTE6,
55 ATTRIBUTE7,
56 ATTRIBUTE8,
57 ATTRIBUTE9,
58 ATTRIBUTE10,
59 ATTRIBUTE11,
60 ATTRIBUTE12,
61 ATTRIBUTE13,
62 ATTRIBUTE14,
63 ATTRIBUTE15,
64 CREATION_DATE,
65 CREATED_BY,
66 LAST_UPDATE_DATE,
67 LAST_UPDATED_BY,
68 LAST_UPDATE_LOGIN
69 ) values (
70 X_RULE_ID,
71 X_ACTIVITY_RULE_ID,
72 X_RULE_PRIORITY,
73 X_RELATIONSHIP_CODE,
74 X_CONTEXT_TYPE_CODE,
75 X_CONTEXT_ID,
76 X_ORGANIZATION_ID,
77 X_OBJECT_VERSION_NUMBER,
78 X_ATTRIBUTE_CATEGORY,
79 X_ATTRIBUTE1,
80 X_ATTRIBUTE2,
81 X_ATTRIBUTE3,
82 X_ATTRIBUTE4,
83 X_ATTRIBUTE5,
84 X_ATTRIBUTE6,
85 X_ATTRIBUTE7,
86 X_ATTRIBUTE8,
87 X_ATTRIBUTE9,
88 X_ATTRIBUTE10,
89 X_ATTRIBUTE11,
90 X_ATTRIBUTE12,
91 X_ATTRIBUTE13,
92 X_ATTRIBUTE14,
93 X_ATTRIBUTE15,
94 X_CREATION_DATE,
95 X_CREATED_BY,
96 X_LAST_UPDATE_DATE,
97 X_LAST_UPDATED_BY,
98 X_LAST_UPDATE_LOGIN
99 );
100
101 insert into AMS_WEB_RULES_TL (
102 OBJECT_VERSION_NUMBER,
103 CREATED_BY,
104 CREATION_DATE,
105 LAST_UPDATED_BY,
106 LAST_UPDATE_DATE,
107 LAST_UPDATE_LOGIN,
108 RULE_ID,
109 RULE_NAME,
110 LANGUAGE,
111 SOURCE_LANG
112 ) select
113 X_OBJECT_VERSION_NUMBER,
114 X_CREATED_BY,
115 X_CREATION_DATE,
116 X_LAST_UPDATED_BY,
117 X_LAST_UPDATE_DATE,
118 X_LAST_UPDATE_LOGIN,
119 X_RULE_ID,
120 X_RULE_NAME,
121 L.LANGUAGE_CODE,
122 userenv('LANG')
123 from FND_LANGUAGES L
124 where L.INSTALLED_FLAG in ('I', 'B')
125 and not exists
126 (select NULL
127 from AMS_WEB_RULES_TL T
128 where T.RULE_ID = X_RULE_ID
129 and T.LANGUAGE = L.LANGUAGE_CODE);
130
131 open c;
132 fetch c into X_ROWID;
133 if (c%notfound) then
134 close c;
135 raise no_data_found;
136 end if;
137 close c;
138
139 end INSERT_ROW;
140
141 procedure LOCK_ROW (
142 X_RULE_ID in NUMBER,
143 X_ACTIVITY_RULE_ID in NUMBER,
144 X_RULE_PRIORITY in NUMBER,
145 X_RELATIONSHIP_CODE in VARCHAR2,
146 X_CONTEXT_TYPE_CODE in VARCHAR2,
147 X_CONTEXT_ID in NUMBER,
148 X_ORGANIZATION_ID in NUMBER,
149 X_OBJECT_VERSION_NUMBER in NUMBER,
150 X_ATTRIBUTE_CATEGORY in VARCHAR2,
151 X_ATTRIBUTE1 in VARCHAR2,
152 X_ATTRIBUTE2 in VARCHAR2,
153 X_ATTRIBUTE3 in VARCHAR2,
154 X_ATTRIBUTE4 in VARCHAR2,
155 X_ATTRIBUTE5 in VARCHAR2,
156 X_ATTRIBUTE6 in VARCHAR2,
157 X_ATTRIBUTE7 in VARCHAR2,
158 X_ATTRIBUTE8 in VARCHAR2,
159 X_ATTRIBUTE9 in VARCHAR2,
160 X_ATTRIBUTE10 in VARCHAR2,
161 X_ATTRIBUTE11 in VARCHAR2,
162 X_ATTRIBUTE12 in VARCHAR2,
163 X_ATTRIBUTE13 in VARCHAR2,
164 X_ATTRIBUTE14 in VARCHAR2,
165 X_ATTRIBUTE15 in VARCHAR2,
166 X_RULE_NAME in VARCHAR2
167 ) is
168 cursor c is select
169 ACTIVITY_RULE_ID,
170 RULE_PRIORITY,
171 RELATIONSHIP_CODE,
172 CONTEXT_TYPE_CODE,
173 CONTEXT_ID,
174 ORGANIZATION_ID,
175 OBJECT_VERSION_NUMBER,
176 ATTRIBUTE_CATEGORY,
177 ATTRIBUTE1,
178 ATTRIBUTE2,
179 ATTRIBUTE3,
180 ATTRIBUTE4,
181 ATTRIBUTE5,
182 ATTRIBUTE6,
183 ATTRIBUTE7,
184 ATTRIBUTE8,
185 ATTRIBUTE9,
186 ATTRIBUTE10,
187 ATTRIBUTE11,
188 ATTRIBUTE12,
189 ATTRIBUTE13,
190 ATTRIBUTE14,
191 ATTRIBUTE15
192 from AMS_WEB_RULES_B
193 where RULE_ID = X_RULE_ID
194 for update of RULE_ID nowait;
195 recinfo c%rowtype;
196
197 cursor c1 is select
198 RULE_NAME,
199 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
200 from AMS_WEB_RULES_TL
201 where RULE_ID = X_RULE_ID
202 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
203 for update of RULE_ID nowait;
204 begin
205 open c;
206 fetch c into recinfo;
207 if (c%notfound) then
208 close c;
209 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
210 app_exception.raise_exception;
211 end if;
212 close c;
213 if ( (recinfo.ACTIVITY_RULE_ID = X_ACTIVITY_RULE_ID)
214 AND ((recinfo.RULE_PRIORITY = X_RULE_PRIORITY)
215 OR ((recinfo.RULE_PRIORITY is null) AND (X_RULE_PRIORITY is null)))
216 AND (recinfo.RELATIONSHIP_CODE = X_RELATIONSHIP_CODE)
217 AND (recinfo.CONTEXT_TYPE_CODE = X_CONTEXT_TYPE_CODE)
218 AND ((recinfo.CONTEXT_ID = X_CONTEXT_ID)
219 OR ((recinfo.CONTEXT_ID is null) AND (X_CONTEXT_ID is null)))
220 AND ((recinfo.ORGANIZATION_ID = X_ORGANIZATION_ID)
221 OR ((recinfo.ORGANIZATION_ID is null) AND (X_ORGANIZATION_ID is null)))
222 AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
223 AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
224 OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
225 AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
226 OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
227 AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
228 OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
229 AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
230 OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
231 AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
232 OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
233 AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
234 OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
235 AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
236 OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
237 AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
238 OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
239 AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
240 OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
241 AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
242 OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
243 AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
244 OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
245 AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
246 OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
247 AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
248 OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
249 AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
250 OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
251 AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
252 OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
253 AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
254 OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
255 ) then
256 null;
257 else
258 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
259 app_exception.raise_exception;
260 end if;
261
262 for tlinfo in c1 loop
263 if (tlinfo.BASELANG = 'Y') then
264 if ( ((tlinfo.RULE_NAME = X_RULE_NAME)
265 OR ((tlinfo.RULE_NAME is null) AND (X_RULE_NAME is null)))
266 ) then
267 null;
268 else
269 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
270 app_exception.raise_exception;
271 end if;
272 end if;
273 end loop;
274 return;
275 end LOCK_ROW;
276
277 procedure UPDATE_ROW (
278 X_RULE_ID in NUMBER,
279 X_ACTIVITY_RULE_ID in NUMBER,
280 X_RULE_PRIORITY in NUMBER,
281 X_RELATIONSHIP_CODE in VARCHAR2,
282 X_CONTEXT_TYPE_CODE in VARCHAR2,
283 X_CONTEXT_ID in NUMBER,
284 X_ORGANIZATION_ID in NUMBER,
285 X_OBJECT_VERSION_NUMBER in NUMBER,
286 X_ATTRIBUTE_CATEGORY in VARCHAR2,
287 X_ATTRIBUTE1 in VARCHAR2,
288 X_ATTRIBUTE2 in VARCHAR2,
289 X_ATTRIBUTE3 in VARCHAR2,
290 X_ATTRIBUTE4 in VARCHAR2,
291 X_ATTRIBUTE5 in VARCHAR2,
292 X_ATTRIBUTE6 in VARCHAR2,
293 X_ATTRIBUTE7 in VARCHAR2,
294 X_ATTRIBUTE8 in VARCHAR2,
295 X_ATTRIBUTE9 in VARCHAR2,
296 X_ATTRIBUTE10 in VARCHAR2,
297 X_ATTRIBUTE11 in VARCHAR2,
298 X_ATTRIBUTE12 in VARCHAR2,
299 X_ATTRIBUTE13 in VARCHAR2,
300 X_ATTRIBUTE14 in VARCHAR2,
301 X_ATTRIBUTE15 in VARCHAR2,
302 X_RULE_NAME in VARCHAR2,
303 X_LAST_UPDATE_DATE in DATE,
304 X_LAST_UPDATED_BY in NUMBER,
305 X_LAST_UPDATE_LOGIN in NUMBER
306 ) is
307 begin
308 update AMS_WEB_RULES_B set
309 ACTIVITY_RULE_ID = X_ACTIVITY_RULE_ID,
310 RULE_PRIORITY = X_RULE_PRIORITY,
311 RELATIONSHIP_CODE = X_RELATIONSHIP_CODE,
312 CONTEXT_TYPE_CODE = X_CONTEXT_TYPE_CODE,
313 CONTEXT_ID = X_CONTEXT_ID,
314 ORGANIZATION_ID = X_ORGANIZATION_ID,
315 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
316 ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
317 ATTRIBUTE1 = X_ATTRIBUTE1,
318 ATTRIBUTE2 = X_ATTRIBUTE2,
319 ATTRIBUTE3 = X_ATTRIBUTE3,
320 ATTRIBUTE4 = X_ATTRIBUTE4,
321 ATTRIBUTE5 = X_ATTRIBUTE5,
322 ATTRIBUTE6 = X_ATTRIBUTE6,
323 ATTRIBUTE7 = X_ATTRIBUTE7,
324 ATTRIBUTE8 = X_ATTRIBUTE8,
325 ATTRIBUTE9 = X_ATTRIBUTE9,
326 ATTRIBUTE10 = X_ATTRIBUTE10,
327 ATTRIBUTE11 = X_ATTRIBUTE11,
328 ATTRIBUTE12 = X_ATTRIBUTE12,
329 ATTRIBUTE13 = X_ATTRIBUTE13,
330 ATTRIBUTE14 = X_ATTRIBUTE14,
331 ATTRIBUTE15 = X_ATTRIBUTE15,
332 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
333 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
334 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
335 where RULE_ID = X_RULE_ID;
336
337 if (sql%notfound) then
338 raise no_data_found;
339 end if;
340
341 update AMS_WEB_RULES_TL set
342 RULE_NAME = X_RULE_NAME,
343 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
344 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
345 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
346 SOURCE_LANG = userenv('LANG')
347 where RULE_ID = X_RULE_ID
348 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
349
350 if (sql%notfound) then
351 raise no_data_found;
352 end if;
353 end UPDATE_ROW;
354
355 procedure DELETE_ROW (
356 X_RULE_ID in NUMBER
357 ) is
358 begin
359 delete from AMS_WEB_RULES_TL
360 where RULE_ID = X_RULE_ID;
361
362 if (sql%notfound) then
363 raise no_data_found;
364 end if;
365
366 delete from AMS_WEB_RULES_B
367 where RULE_ID = X_RULE_ID;
368
369 if (sql%notfound) then
370 raise no_data_found;
371 end if;
372 end DELETE_ROW;
373
374 procedure ADD_LANGUAGE
375 is
376 begin
377 delete from AMS_WEB_RULES_TL T
378 where not exists
379 (select NULL
380 from AMS_WEB_RULES_B B
381 where B.RULE_ID = T.RULE_ID
382 );
383
384 update AMS_WEB_RULES_TL T set (
385 RULE_NAME
386 ) = (select
387 B.RULE_NAME
388 from AMS_WEB_RULES_TL B
389 where B.RULE_ID = T.RULE_ID
390 and B.LANGUAGE = T.SOURCE_LANG)
391 where (
392 T.RULE_ID,
393 T.LANGUAGE
394 ) in (select
395 SUBT.RULE_ID,
396 SUBT.LANGUAGE
397 from AMS_WEB_RULES_TL SUBB, AMS_WEB_RULES_TL SUBT
398 where SUBB.RULE_ID = SUBT.RULE_ID
399 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
400 and (SUBB.RULE_NAME <> SUBT.RULE_NAME
401 or (SUBB.RULE_NAME is null and SUBT.RULE_NAME is not null)
402 or (SUBB.RULE_NAME is not null and SUBT.RULE_NAME is null)
403 ));
404
405 insert into AMS_WEB_RULES_TL (
406 OBJECT_VERSION_NUMBER,
407 CREATED_BY,
408 CREATION_DATE,
409 LAST_UPDATED_BY,
410 LAST_UPDATE_DATE,
411 LAST_UPDATE_LOGIN,
412 RULE_ID,
413 RULE_NAME,
414 LANGUAGE,
415 SOURCE_LANG
416 ) select /*+ ORDERED */
417 B.OBJECT_VERSION_NUMBER,
418 B.CREATED_BY,
419 B.CREATION_DATE,
420 B.LAST_UPDATED_BY,
421 B.LAST_UPDATE_DATE,
422 B.LAST_UPDATE_LOGIN,
423 B.RULE_ID,
424 B.RULE_NAME,
425 L.LANGUAGE_CODE,
426 B.SOURCE_LANG
427 from AMS_WEB_RULES_TL B, FND_LANGUAGES L
428 where L.INSTALLED_FLAG in ('I', 'B')
429 and B.LANGUAGE = userenv('LANG')
430 and not exists
431 (select NULL
432 from AMS_WEB_RULES_TL T
433 where T.RULE_ID = B.RULE_ID
434 and T.LANGUAGE = L.LANGUAGE_CODE);
435 end ADD_LANGUAGE;
436
437 end AMS_WEB_RULES_PKG;