DBA Data[Home] [Help]

PACKAGE BODY: APPS.MTL_MVT_STATS_RULE_SETS_PKG

Source


1 PACKAGE BODY MTL_MVT_STATS_RULE_SETS_PKG AS
2 -- $Header: INVGVRSB.pls 115.1 2002/12/03 22:09:25 vma ship $
3 --+=======================================================================+
4 --|            Copyright (c) 1998,1999 Oracle Corporation                 |
5 --|                       Redwood Shores, CA, USA                         |
6 --|                         All rights reserved.                          |
7 --+=======================================================================+
8 --| FILENAME                                                              |
9 --|     INVGVRSB.pls                                                      |
10 --|                                                                       |
11 --| DESCRIPTION                                                           |
12 --|     Use this package to create procedure for inserting rows, updating |
13 --|     rows, locking rows and deleting rows on tables                    |
14 --|     MTL_MVT_STATS_RULE_SETS and MTL_MVT_STATS_RULE_SETS_TL            |
15 --|                                                                       |
16 --| PROCEDURE LIST                                                        |
17 --|      PROCEDURE Insert_Row                                             |
18 --|      PROCEDURE Update_Row                                             |
19 --|      PROCEDURE Lock_Row                                               |
20 --|      PROCEDURE Delete_Row                                             |
21 --|      PROCEDURE Add_Language                                           |
22 --|      PROCEDURE Translate_Row                                          |
23 --|      PROCEDURE Load_Row                                               |
24 --|                                                                       |
25 --| HISTORY                                                               |
26 --|     07/13/00 Komal Saini  Created                                     |
27 --|     11/26/02 Vivian Ma    Added NOCOPY to x_rowid of Insert_Row to    |
28 --|                           comply with new PL/SQL standard for better  |
29 --|                           performance                                 |
30 --|                                                                       |
31 --+======================================================================*/
32 
33 --==================
34 --CONSTANTS
35 --==================
36 G_PKG_NAME CONSTANT VARCHAR2(30) := 'MTL_MVT_STATS_RULE_SETS_PKG';
37 
38 --==================
39 --PUBLIC PROCEDURE
40 --==================
41 --=========================================================================
42 --PRECEDURE : Insert_Row		Public
43 --PARAMETERS: see below
44 --COMMENT   : table handler for inserting data into table mtl_mvt_stats_rule_sets
45 --            _b and table mtl_mvt_stats_rule_sets_tl
46 --==========================================================================
47 PROCEDURE Insert_Row
48 ( x_rowid             IN OUT NOCOPY VARCHAR2
49 , p_rule_set_code         IN     VARCHAR2
50 , p_rule_set_display_name IN     VARCHAR2
51 , p_rule_set_description  IN     VARCHAR2
52 , p_rule_set_type     IN     VARCHAR2
53 , p_category_set_id   IN     NUMBER
54 , p_seeded_flag       IN     VARCHAR2
55 , p_creation_date     IN     DATE
56 , p_created_by        IN     NUMBER
57 , p_last_update_date  IN     DATE
58 , p_last_updated_by   IN     NUMBER
59 , p_last_update_login IN     NUMBER
60 )
61 IS
62 CURSOR c IS
63   SELECT
64     rowid
65   FROM
66     MTL_MVT_STATS_RULE_SETS_B
67   WHERE Rule_Set_code = p_rule_set_code;
68 BEGIN
69   INSERT INTO MTL_MVT_STATS_RULE_SETS_B
70   ( Rule_Set_code
71   , Rule_set_type
72   , Seeded_Flag
73   , Category_Set_Id
74   , creation_date
75   , created_by
76   , last_update_date
77   , last_updated_by
78   , last_update_login
79   )
80   VALUES
81   ( p_rule_set_code
82   , p_Rule_set_type
83   , p_seeded_flag
84   , p_category_set_id
85   , p_creation_date
86   , p_created_by
87   , p_last_update_date
88   , p_last_updated_by
89   , p_last_update_login
90   );
91 
92   INSERT INTO MTL_MVT_STATS_RULE_SETS_TL
93   ( Rule_Set_code
94   , Rule_Set_display_name
95   , Rule_Set_description
96   , created_by
97   , creation_date
98   , last_updated_by
99   , last_update_date
100   , last_update_login
101   , language
102   , source_lang
103   )
104   SELECT
105     p_rule_set_code
106   , p_rule_set_display_name
107   , p_rule_set_description
108   , p_created_by
109   , p_creation_date
110   , p_last_updated_by
111   , p_last_update_date
112   , p_last_update_login
113   , L.language_code
114   , USERENV('LANG')
115   FROM
116     FND_LANGUAGES L
117   WHERE L.installed_flag IN ('I', 'B')
118     AND NOT EXISTS
119        (SELECT
120           NULL
121         FROM
122           MTL_MVT_STATS_RULE_SETS_TL T
123         WHERE T.Rule_Set_code = p_rule_set_code
124           AND T.language = L.language_code);
125 
126   OPEN c;
127   FETCH c INTO x_rowid;
128   IF (c%NOTFOUND)
129   THEN
130     CLOSE c;
131     RAISE NO_DATA_FOUND;
132   END IF;
133   CLOSE c;
134 
135 EXCEPTION
136   WHEN OTHERS THEN
137     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
138     THEN
139       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Insert_Row');
140     END IF;
141     RAISE;
142 
143 END INSERT_ROW;
144 
145 --=========================================================================
146 --PRECEDURE : Lock_Row		        Public
147 --PARAMETERS: see below
148 --COMMENT   : table handler for locking table mtl_mvt_stats_rule_sets_b and
149 --            table mtl_mvt_stats_rule_sets_tl
150 --EXCEPTION : record_changed;
151 --==========================================================================
152 PROCEDURE Lock_Row
153 ( p_rule_set_code          IN VARCHAR2
154 , p_rule_set_display_name  IN VARCHAR2
155 , p_rule_set_description   IN VARCHAR2
156 )
157 IS
158 CURSOR c IS
159   SELECT *
160   FROM
161     MTL_MVT_STATS_RULE_SETS_B
162   WHERE Rule_Set_code = p_rule_set_code
163   FOR UPDATE OF Rule_Set_code NOWAIT;
164 recinfo c%ROWTYPE;
165 
166 CURSOR c1 IS
167   SELECT
168     Rule_Set_display_name
169   , Rule_Set_description
170   , decode(language, USERENV('LANG'), 'Y', 'N') baselang
171   FROM
172     MTL_MVT_STATS_RULE_SETS_TL
173   WHERE Rule_Set_code = p_rule_set_code
174   FOR UPDATE OF Rule_Set_code NOWAIT;
175 
176 record_changed EXCEPTION;
177 
178 BEGIN
179   OPEN c;
180   FETCH C INTO recinfo;
181   IF (c%NOTFOUND)
182   THEN
183     CLOSE c;
184     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
185     APP_EXCEPTION.Raise_Exception;
186   END IF;
187   CLOSE c;
188 
189   FOR tlinfo IN c1
190   LOOP
191     IF (tlinfo.baselang = 'Y')
192     THEN
193       IF NOT (    (tlinfo.Rule_Set_display_name  = p_rule_set_display_name )
194               AND (tlinfo.Rule_Set_description = p_rule_set_description) )
195       THEN
196         RAISE record_changed;
197       END IF;
198     END IF;
199   END LOOP;
200   RETURN;
201 
202 EXCEPTION
203   WHEN record_changed THEN
204     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
205     APP_EXCEPTION.raise_exception;
206   WHEN OTHERS THEN
207     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
208     THEN
209       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Insert_Row');
210     END IF;
211     RAISE;
212 
213 END LOCK_ROW;
214 
215 --=========================================================================
216 --PRECEDURE : Update_Row		Public
217 --PARAMETERS: see below
218 --COMMENT   : table handler for updating data of table mtl_mvt_stats_rule_sets
219 --            _b and table mtl_mvt_stats_rule_sets_tl
220 --==========================================================================
221 PROCEDURE Update_Row
222 ( p_rule_set_code         IN VARCHAR2
223 , p_rule_set_display_name IN VARCHAR2
224 , p_rule_set_description  IN VARCHAR2
225 , p_rule_set_type     IN     VARCHAR2
226 , p_category_set_id   IN NUMBER
227 , p_last_update_date  IN DATE
228 , p_last_updated_by   IN NUMBER
229 , p_last_update_login IN NUMBER
230 )
231 IS
232 BEGIN
233   UPDATE MTL_MVT_STATS_RULE_SETS_B
234   SET
235     last_update_date  = p_last_update_date
236   , last_updated_by  = p_last_updated_by
237   , last_update_login  = p_last_update_login
238   , Rule_Set_type = p_rule_set_type
239   , Category_Set_Id = p_category_set_id
240   WHERE Rule_Set_code = p_rule_set_code;
241 
242   IF (SQL%NOTFOUND)
243   THEN
244     RAISE NO_DATA_FOUND;
245   END IF;
246 
247   UPDATE MTL_MVT_STATS_RULE_SETS_TL
248   SET
249     Rule_Set_display_name  = p_rule_set_display_name
250   , Rule_Set_description = p_rule_set_description
251   , last_update_date  = p_last_update_date
252   , last_updated_by  = p_last_updated_by
253   , last_update_login  = p_last_update_login
254   , source_lang = USERENV('LANG')
255   WHERE Rule_Set_code = p_rule_set_code
256     AND USERENV('LANG') IN (language, source_lang);
257 
258   IF (SQL%NOTFOUND)
259   THEN
260     RAISE NO_DATA_FOUND;
261   END IF;
262 
263 EXCEPTION
264   WHEN OTHERS THEN
265     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
266     THEN
267       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Update_Row');
268     END IF;
269   RAISE;
270 
271 END Update_Row;
272 
273 --=========================================================================
274 --PRECEDURE : Delete_Row	        Public
275 --PARAMETERS: see below
276 --COMMENT   : table handler for deleting data from table mtl_mvt_stats_rule_sets
277 --            _b and table mtl_mvt_stats_rule_sets_tl
278 --==========================================================================
279 PROCEDURE Delete_Row
280 ( p_rule_set_code IN VARCHAR2
281 )
282 IS
283 BEGIN
284   DELETE FROM MTL_MVT_STATS_RULE_SETS_TL
285   WHERE Rule_Set_code = p_rule_set_code;
286 
287   IF (SQL%NOTFOUND)
288   THEN
289     RAISE NO_DATA_FOUND;
290   END IF;
291 
292   DELETE FROM MTL_MVT_STATS_RULE_SETS_B
293   WHERE Rule_Set_code = p_rule_set_code;
294 
295   IF (SQL%NOTFOUND)
296   THEN
297     RAISE NO_DATA_FOUND;
298   END IF;
299 
300 EXCEPTION
301   WHEN OTHERS THEN
302     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
303     THEN
304       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Delete_Row');
305     END IF;
306     RAISE;
307 
308 END DELETE_ROW;
309 
310 --=========================================================================
311 --PRECEDURE : Add_Language		Public
312 --PARAMETERS: none
313 --COMMENT   : called by NLADD script whenever a new language is added or
314 --            after any other operation
315 --==========================================================================
316 PROCEDURE Add_Language
317 IS
318 BEGIN
319   DELETE FROM MTL_MVT_STATS_RULE_SETS_TL T
320   WHERE NOT EXISTS
321     (SELECT
322        NULL
323      FROM
324        MTL_MVT_STATS_RULE_SETS_B B
325      WHERE B.Rule_Set_code = T.Rule_Set_code
326      );
327 
328   UPDATE MTL_MVT_STATS_RULE_SETS_TL T
329   SET (Rule_Set_display_name
330        ,Rule_Set_description ) =
331       (SELECT
332          B.Rule_Set_display_name
333          , B.Rule_Set_description
334        FROM
335          MTL_MVT_STATS_RULE_SETS_TL B
336        WHERE B.Rule_Set_code = T.Rule_Set_code
337          AND B.language = T.source_lang)
338   WHERE (T.Rule_Set_code
339         , T.language
340      )IN (SELECT
341             SUBT.Rule_Set_code
342           , SUBT.language
343           FROM
344             MTL_MVT_STATS_RULE_SETS_TL SUBB
345           , MTL_MVT_STATS_RULE_SETS_TL SUBT
346           WHERE SUBB.Rule_Set_code = SUBT.Rule_Set_code
347             AND SUBB.language = SUBT.source_lang
348             AND (SUBB.Rule_Set_display_name  <> SUBT.Rule_Set_display_name
349                  OR SUBB.Rule_Set_description <> SUBT.Rule_Set_description));
350 
351   INSERT INTO MTL_MVT_STATS_RULE_SETS_TL
352   ( Rule_Set_code
353   , Rule_Set_display_name
354   , Rule_Set_description
355   , created_by
356   , creation_date
357   , last_updated_by
358   , last_update_date
359   , last_update_login
360   , language
361   , source_lang
362   )
363   SELECT
364       B.Rule_Set_code
365     , B.Rule_Set_display_name
366     , B.Rule_Set_description
367     , B.created_by
368     , B.creation_date
369     , B.last_updated_by
370     , B.last_update_date
371     , B.last_update_login
372     , L.language_CODE
373     , B.source_lang
374   FROM
375     MTL_MVT_STATS_RULE_SETS_TL B
376   , FND_LANGUAGES L
377   WHERE L.INSTALLED_FLAG IN ('I', 'B')
378     AND B.language = USERENV('LANG')
379     AND NOT EXISTS
380        (SELECT
381           NULL
382         FROM
383           MTL_MVT_STATS_RULE_SETS_TL T
384         WHERE T.Rule_Set_code = B.Rule_Set_code
385           AND T.language = L.language_CODE);
386 
387 EXCEPTION
388   WHEN OTHERS THEN
389     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
390     THEN
391       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Add_Language');
392     END IF;
393     RAISE;
394 
395 END Add_Language;
396 
397 --========================================================================
398 -- PROCEDURE : Translate_Row       PUBLIC
399 -- PARAMETERS: p_rule_set_code         rule sets code (develper's key)
400 --             p_rule_set_display_name rule sets name
401 --             p_rule_set_description  description
402 --             p_owner             user owning the row (SEED or other)
403 -- COMMENT   : used to upload seed data in NLS mode
404 --========================================================================
405 PROCEDURE Translate_Row
406 ( p_rule_set_code         IN  VARCHAR2
407 , p_rule_set_display_name IN  VARCHAR2
408 , p_rule_set_description  IN  VARCHAR2
409 , p_owner             IN  VARCHAR2
410 )
411 IS
412 BEGIN
413 
414   UPDATE mtl_mvt_stats_rule_sets_tl
415     SET Rule_Set_display_name = p_rule_set_display_name
416       , Rule_Set_description  = p_rule_set_description
417       , last_update_date  = SYSDATE
418       , last_updated_by   = DECODE(p_owner, 'SEED', 1, 0)
419       , last_update_login = 0
420       , source_lang       = userenv('LANG')
421     WHERE Rule_Set_code = p_rule_set_code
422       AND userenv('LANG') IN (language, source_lang);
423 
424 EXCEPTION
425   WHEN OTHERS THEN
426     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
427     THEN
428       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Translate_Row');
429     END IF;
430     RAISE;
431 
432 END Translate_Row;
433 
434 --========================================================================
435 -- PRECEDURE : Load_Row		         PUBLIC
436 -- PARAMETERS: p_rule_set_code         rule sets code (develper's key)
437 --             p_owner             user owning the row (SEED or other)
438 --             p_rule_set_display_name rule sets name
442 PROCEDURE Load_Row
439 --             p_rule_set_description  description
440 -- COMMENT   : used to upload seed data in MLS mode
441 --========================================================================
443 ( p_rule_set_code 	      IN  VARCHAR2
444 , p_owner             IN  VARCHAR2
445 , p_rule_set_display_name IN  VARCHAR2
446 , p_rule_set_description  IN  VARCHAR2
447 , p_Rule_set_type         IN  VARCHAR2
448 , p_category_set_id       IN  NUMBER
449 , p_seeded_flag           IN  VARCHAR2
450 )
451 IS
452 
453 l_row_id  VARCHAR2(20);
454 l_user_id NUMBER;
455 
456 BEGIN
457 
458   -- assign user ID
459   IF (p_owner = 'SEED')
460   THEN
461     l_user_id := 1;
462   ELSE
463     l_user_id := 0;
464   END IF;
465 
466   BEGIN
467     -- update row if present
468     Update_Row
469     ( p_rule_set_code         => p_rule_set_code
470     , p_rule_set_display_name => p_rule_set_display_name
471     , p_rule_set_description  => p_rule_set_description
472     , p_rule_set_type  => p_rule_set_type
473     , p_category_set_id  => p_category_set_id
474     , p_last_update_date  => SYSDATE
475     , p_last_updated_by   => l_user_id
476     , p_last_update_login => 0
477     );
478   EXCEPTION
479     WHEN NO_DATA_FOUND THEN
480       -- insert row
481       Insert_Row
482       ( x_rowid             => l_row_id
483       , p_rule_set_code         => p_rule_set_code
484       , p_rule_set_display_name => p_rule_set_display_name
485       , p_rule_set_description  => p_rule_set_description
486       , p_rule_set_type  => p_rule_set_type
487       , p_category_set_id  => p_category_set_id
488       , p_seeded_flag      => p_seeded_flag
489       , p_creation_date     => SYSDATE
490       , p_created_by        => l_user_id
491       , p_last_update_date  => SYSDATE
492       , p_last_updated_by   => l_user_id
493       , p_last_update_login => 0
494       );
495   END;
496 
497 EXCEPTION
498   WHEN OTHERS THEN
499     IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
500     THEN
501       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, 'Load_Row');
502     END IF;
503     RAISE;
504 
505 END Load_Row;
506 
507 
508 END MTL_MVT_STATS_RULE_SETS_PKG;