DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKE_TERMS_PKG

Source


1 package body OKE_TERMS_PKG as
2 /* $Header: OKETERMB.pls 120.1 2005/06/02 12:00:18 appldev  $ */
3 
4 PROCEDURE INSERT_ROW
5 ( X_ROWID             IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6 , X_TERM_CODE         IN     VARCHAR2
7 , X_TERM_TYPE_CODE    IN     VARCHAR2
8 , X_TERM_NAME         IN     VARCHAR2
9 , X_DESCRIPTION       IN     VARCHAR2
10 , X_USER_DEFINED_FLAG IN     VARCHAR2
11 , X_VIEW_APPL_ID      IN     NUMBER
12 , X_LOOKUP_TYPE       IN     VARCHAR2
13 , X_CREATION_DATE     IN     DATE
14 , X_CREATED_BY        IN     NUMBER
15 , X_LAST_UPDATE_DATE  IN     DATE
16 , X_LAST_UPDATED_BY   IN     NUMBER
17 , X_LAST_UPDATE_LOGIN IN     NUMBER
18 ) IS
19 
20   cursor C is
21     select ROWID from OKE_TERMS_B
22     where TERM_CODE = X_TERM_CODE;
23 
24 BEGIN
25 
26   INSERT INTO OKE_TERMS_B
27   ( TERM_CODE
28   , TERM_TYPE_CODE
29   , CREATION_DATE
30   , CREATED_BY
31   , LAST_UPDATE_DATE
32   , LAST_UPDATED_BY
33   , LAST_UPDATE_LOGIN
34   , USER_DEFINED_FLAG
35   , VIEW_APPLICATION_ID
36   , LOOKUP_TYPE
37   ) VALUES
38   ( X_TERM_CODE
39   , X_TERM_TYPE_CODE
40   , X_CREATION_DATE
41   , X_CREATED_BY
42   , X_LAST_UPDATE_DATE
43   , X_LAST_UPDATED_BY
44   , X_LAST_UPDATE_LOGIN
45   , X_USER_DEFINED_FLAG
46   , X_VIEW_APPL_ID
47   , X_LOOKUP_TYPE
48   );
49 
50   INSERT INTO OKE_TERMS_TL
51   ( TERM_CODE
52   , CREATION_DATE
53   , CREATED_BY
54   , LAST_UPDATE_DATE
55   , LAST_UPDATED_BY
56   , LAST_UPDATE_LOGIN
57   , TERM_NAME
58   , DESCRIPTION
59   , LANGUAGE
60   , SOURCE_LANG
61   )
62   SELECT
63     X_TERM_CODE
64   , X_CREATION_DATE
65   , X_CREATED_BY
66   , X_LAST_UPDATE_DATE
67   , X_LAST_UPDATED_BY
68   , X_LAST_UPDATE_LOGIN
69   , X_TERM_NAME
70   , X_DESCRIPTION
71   , L.LANGUAGE_CODE
72   , USERENV('LANG')
73   FROM FND_LANGUAGES L
74   WHERE L.INSTALLED_FLAG IN ('I', 'B')
75   AND NOT EXISTS
76     (SELECT NULL
77      FROM OKE_TERMS_TL T
78      WHERE T.TERM_CODE = X_TERM_CODE
79      AND T.LANGUAGE = L.LANGUAGE_CODE
80   );
81 
82   OPEN c;
83   FETCH c INTO X_ROWID;
84   IF (c%notfound) THEN
85     CLOSE c;
86     RAISE no_data_found;
87   END IF;
88   CLOSE c;
89 
90 END INSERT_ROW;
91 
92 
93 PROCEDURE LOCK_ROW
94 ( X_TERM_CODE      IN VARCHAR2
95 , X_TERM_TYPE_CODE IN VARCHAR2
96 , X_TERM_NAME      IN VARCHAR2
97 , X_DESCRIPTION    IN VARCHAR2
98 , X_USER_DEFINED_FLAG IN VARCHAR2
99 , X_VIEW_APPL_ID      IN NUMBER
100 , X_LOOKUP_TYPE       IN VARCHAR2
101 ) IS
102 
103   CURSOR c IS
104     SELECT TERM_TYPE_CODE
105     ,      USER_DEFINED_FLAG
106     ,      VIEW_APPLICATION_ID
107     ,      LOOKUP_TYPE
108     FROM   OKE_TERMS_B
109     WHERE  TERM_CODE = X_TERM_CODE
110     FOR UPDATE OF TERM_CODE NOWAIT;
111   RecInfo c%rowtype;
112 
113   CURSOR c1 IS
114     SELECT TERM_NAME
115     ,      DESCRIPTION
116     ,      DECODE(LANGUAGE, USERENV('LANG'), 'Y', 'N') BASELANG
117     FROM   OKE_TERMS_TL
118     WHERE  TERM_CODE = X_TERM_CODE
119     AND USERENV('LANG') IN (LANGUAGE, SOURCE_LANG)
120     FOR UPDATE OF TERM_CODE NOWAIT;
121 
122 BEGIN
123 
124   OPEN c;
125   FETCH c INTO RecInfo;
126   IF (c%notfound) THEN
127     CLOSE c;
128     FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_DELETED');
129     APP_EXCEPTION.RAISE_EXCEPTION;
130   END IF;
131   CLOSE c;
132 
133   IF (    ( ( recinfo.TERM_TYPE_CODE = X_TERM_TYPE_CODE )
134            OR ( ( recinfo.TERM_TYPE_CODE is null )
135                AND ( X_TERM_TYPE_CODE is null ) ) )
136       AND ( ( recinfo.VIEW_APPLICATION_ID = X_VIEW_APPL_ID )
137            OR ( ( recinfo.VIEW_APPLICATION_ID is null )
138                AND ( X_VIEW_APPL_ID is null ) ) )
139       AND ( ( recinfo.LOOKUP_TYPE = X_LOOKUP_TYPE )
140            OR ( ( recinfo.LOOKUP_TYPE is null )
141                AND ( X_LOOKUP_TYPE is null ) ) )
142       AND ( ( recinfo.USER_DEFINED_FLAG = X_USER_DEFINED_FLAG )
143            OR ( ( recinfo.USER_DEFINED_FLAG is null )
144                AND ( X_USER_DEFINED_FLAG is null ) ) )
145   )  THEN
146     NULL;
147   ELSE
148     FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_CHANGED');
149     APP_EXCEPTION.RAISE_EXCEPTION;
150   END IF;
151 
152   FOR tlinfo IN c1 LOOP
153     IF (tlinfo.BASELANG = 'Y') then
154       IF (    (tlinfo.TERM_NAME = X_TERM_NAME)
155           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
156                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
157       ) THEN
158         NULL;
159       ELSE
160         FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_CHANGED');
161         APP_EXCEPTION.RAISE_EXCEPTION;
162       END IF;
163     END IF;
164   END LOOP;
165   RETURN;
166 
167 END LOCK_ROW;
168 
169 
170 PROCEDURE UPDATE_ROW
171 ( X_TERM_CODE         IN VARCHAR2
172 , X_TERM_TYPE_CODE    IN VARCHAR2
173 , X_TERM_NAME         IN VARCHAR2
174 , X_DESCRIPTION       IN VARCHAR2
175 , X_USER_DEFINED_FLAG IN VARCHAR2
176 , X_VIEW_APPL_ID      IN NUMBER
177 , X_LOOKUP_TYPE       IN VARCHAR2
178 , X_LAST_UPDATE_DATE  IN DATE
179 , X_LAST_UPDATED_BY   IN NUMBER
180 , X_LAST_UPDATE_LOGIN IN NUMBER
181 ) IS
182 
183 BEGIN
184 
185   UPDATE OKE_TERMS_B
186   SET TERM_TYPE_CODE    = X_TERM_TYPE_CODE
187   ,   USER_DEFINED_FLAG = X_USER_DEFINED_FLAG
188   ,   VIEW_APPLICATION_ID = X_VIEW_APPL_ID
189   ,   LOOKUP_TYPE       = X_LOOKUP_TYPE
190   ,   LAST_UPDATE_DATE  = X_LAST_UPDATE_DATE
191   ,   LAST_UPDATED_BY   = X_LAST_UPDATED_BY
192   ,   LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
193   WHERE TERM_CODE = X_TERM_CODE;
194 
195   IF (sql%notfound) THEN
196     RAISE no_data_found;
197   END IF;
198 
199   UPDATE OKE_TERMS_TL
200   SET TERM_NAME         = X_TERM_NAME
201   ,   DESCRIPTION       = X_DESCRIPTION
202   ,   LAST_UPDATE_DATE  = X_LAST_UPDATE_DATE
203   ,   LAST_UPDATED_BY   = X_LAST_UPDATED_BY
204   ,   LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
205   ,   SOURCE_LANG       = userenv('LANG')
206   WHERE TERM_CODE = X_TERM_CODE
207   AND USERENV('LANG') IN (LANGUAGE, SOURCE_LANG);
208 
209   IF (sql%notfound) THEN
210     RAISE no_data_found;
211   END IF;
212 
213 END UPDATE_ROW;
214 
215 
216 PROCEDURE DELETE_ROW
217 ( X_TERM_CODE IN VARCHAR2
218 ) IS
219 
220 BEGIN
221   DELETE FROM OKE_TERMS_TL
222   WHERE TERM_CODE = X_TERM_CODE;
223 
224   IF (sql%notfound) THEN
225     RAISE no_data_found;
226   END IF;
227 
228   DELETE FROM OKE_TERMS_B
229   WHERE TERM_CODE = X_TERM_CODE;
230 
231   IF (sql%notfound) THEN
232     RAISE no_data_found;
233   END IF;
234 
235 END DELETE_ROW;
236 
237 
238 PROCEDURE ADD_LANGUAGE
239 IS
240 BEGIN
241 
242   DELETE FROM OKE_TERMS_TL T
243   WHERE NOT EXISTS (
244     SELECT NULL
245     FROM OKE_TERMS_B B
246     WHERE B.TERM_CODE = T.TERM_CODE
247   );
248 
249   UPDATE OKE_TERMS_TL T
250   SET ( TERM_NAME , DESCRIPTION ) = (
251     SELECT B.TERM_NAME
252     ,      B.DESCRIPTION
253     FROM   OKE_TERMS_TL B
254     WHERE  B.TERM_CODE = T.TERM_CODE
255     AND    B.LANGUAGE = T.SOURCE_LANG)
256   WHERE ( T.TERM_CODE , T.LANGUAGE ) IN (
257     SELECT SUBT.TERM_CODE
258     ,      SUBT.LANGUAGE
259     FROM   OKE_TERMS_TL SUBB
260     ,      OKE_TERMS_TL SUBT
261     WHERE  SUBB.TERM_CODE = SUBT.TERM_CODE
262     AND    SUBB.LANGUAGE = SUBT.SOURCE_LANG
263     AND    (  SUBB.TERM_NAME <> SUBT.TERM_NAME
264            OR SUBB.DESCRIPTION <> SUBT.DESCRIPTION
265            OR (   SUBB.DESCRIPTION IS NULL
266               AND SUBT.DESCRIPTION IS NOT NULL
267               )
268            OR (   SUBB.DESCRIPTION IS NOT NULL
269               AND SUBT.DESCRIPTION IS NULL)
270            )
271     );
272 
273   INSERT INTO OKE_TERMS_TL
274   ( TERM_CODE
275   , CREATION_DATE
276   , CREATED_BY
277   , LAST_UPDATE_DATE
278   , LAST_UPDATED_BY
279   , LAST_UPDATE_LOGIN
280   , TERM_NAME
281   , DESCRIPTION
282   , LANGUAGE
283   , SOURCE_LANG
284   )
285   SELECT
286     B.TERM_CODE
287   , B.CREATION_DATE
288   , B.CREATED_BY
289   , B.LAST_UPDATE_DATE
290   , B.LAST_UPDATED_BY
291   , B.LAST_UPDATE_LOGIN
292   , B.TERM_NAME
293   , B.DESCRIPTION
294   , L.LANGUAGE_CODE
295   , B.SOURCE_LANG
296   FROM OKE_TERMS_TL B
297   ,    FND_LANGUAGES L
298   WHERE L.INSTALLED_FLAG IN ('I', 'B')
299   AND B.LANGUAGE = USERENV('LANG')
300   AND NOT EXISTS (
301     SELECT NULL
302     FROM   OKE_TERMS_TL T
303     WHERE  T.TERM_CODE = B.TERM_CODE
304     AND    T.LANGUAGE = L.LANGUAGE_CODE
305   );
306 
307 END ADD_LANGUAGE;
308 
309 PROCEDURE LOAD_ROW
310 ( X_TERM_CODE         IN     VARCHAR2
311 , X_OWNER             IN     VARCHAR2
312 , X_LAST_UPDATE_DATE  IN     DATE
313 , X_CUSTOM_MODE       IN     VARCHAR2
314 , X_TERM_TYPE_CODE    IN     VARCHAR2
315 , X_TERM_NAME         IN     VARCHAR2
316 , X_DESCRIPTION       IN     VARCHAR2
317 , X_USER_DEFINED_FLAG IN     VARCHAR2
318 , X_VIEW_APPL_ID      IN     NUMBER
319 , X_LOOKUP_TYPE       IN     VARCHAR2
320 ) IS
321 
322   Row_ID VARCHAR2(30);
323 
324   f_luby    NUMBER;  -- entity owner in file
325 
326 BEGIN
327   --
328   -- Translate owner and last_update_date
329   --
330   f_luby := FND_LOAD_UTIL.Owner_ID(X_OWNER);
331 
332   --
333   -- Load the record
334   --
335   UPDATE OKE_TERMS_B
336   SET    TERM_TYPE_CODE      = NVL(X_TERM_TYPE_CODE , TERM_TYPE_CODE)
337   ,      USER_DEFINED_FLAG   = X_USER_DEFINED_FLAG
338   ,      VIEW_APPLICATION_ID = X_VIEW_APPL_ID
339   ,      LOOKUP_TYPE         = X_LOOKUP_TYPE
340   ,      LAST_UPDATE_DATE    = SYSDATE
341   ,      LAST_UPDATED_BY     = f_luby
342   WHERE  TERM_CODE = X_TERM_CODE;
343 
344   IF ( sql%notfound ) THEN
345 
346     INSERT_ROW
347     ( Row_ID
348     , X_TERM_CODE
349     , X_TERM_TYPE_CODE
350     , X_TERM_NAME
351     , X_DESCRIPTION
352     , X_USER_DEFINED_FLAG
353     , X_VIEW_APPL_ID
354     , X_LOOKUP_TYPE
355     , X_LAST_UPDATE_DATE
356     , f_luby
357     , X_LAST_UPDATE_DATE
358     , f_luby
359     , 0
360     );
361 
362   END IF;
363 
364   UPDATE OKE_TERMS_TL
365   SET    TERM_NAME        = X_TERM_NAME
366   ,      DESCRIPTION      = X_DESCRIPTION
367   ,      LAST_UPDATE_DATE = X_LAST_UPDATE_DATE
368   ,      LAST_UPDATED_BY  = f_luby
369   ,      SOURCE_LANG      = USERENV('LANG')
370   WHERE  TERM_CODE = X_TERM_CODE
371   AND    USERENV('LANG') IN ( LANGUAGE , SOURCE_LANG );
372 
373   IF ( sql%notfound ) THEN
374 
375     INSERT INTO OKE_TERMS_TL
376     ( TERM_CODE
377     , CREATION_DATE
378     , CREATED_BY
379     , LAST_UPDATE_DATE
380     , LAST_UPDATED_BY
381     , LAST_UPDATE_LOGIN
382     , TERM_NAME
383     , DESCRIPTION
384     , LANGUAGE
385     , SOURCE_LANG
386     )
387     SELECT
388       X_TERM_CODE
389     , X_LAST_UPDATE_DATE
390     , f_luby
391     , X_LAST_UPDATE_DATE
392     , f_luby
393     , 0
394     , X_TERM_NAME
395     , X_DESCRIPTION
396     , L.LANGUAGE_CODE
397     , USERENV('LANG')
398     FROM FND_LANGUAGES L
399     WHERE L.INSTALLED_FLAG IN ('I', 'B')
400     AND NOT EXISTS
401       (SELECT NULL
405     );
402        FROM OKE_TERMS_TL T
403        WHERE T.TERM_CODE = X_TERM_CODE
404        AND T.LANGUAGE = L.LANGUAGE_CODE
406 
407   END IF;
408 
409 END LOAD_ROW;
410 
411 
412 PROCEDURE TRANSLATE_ROW
413 ( X_TERM_CODE         IN     VARCHAR2
414 , X_OWNER             IN     VARCHAR2
415 , X_LAST_UPDATE_DATE  IN     DATE
416 , X_TERM_NAME         IN     VARCHAR2
417 , X_DESCRIPTION       IN     VARCHAR2
418 ) IS
419 
420   f_luby   NUMBER;
421 
422 BEGIN
423   --
424   -- Translate owner and last_update_date
425   --
426   f_luby := FND_LOAD_UTIL.Owner_ID(X_OWNER);
427 
428   UPDATE OKE_TERMS_TL
429   SET    TERM_NAME        = X_TERM_NAME
430   ,      DESCRIPTION      = X_DESCRIPTION
431   ,      LAST_UPDATE_DATE = X_LAST_UPDATE_DATE
432   ,      LAST_UPDATED_BY  = f_luby
433   ,      SOURCE_LANG      = USERENV('LANG')
434   WHERE  TERM_CODE = X_TERM_CODE
435   AND    USERENV('LANG') IN ( LANGUAGE , SOURCE_LANG );
436 
437 END TRANSLATE_ROW;
438 
439 END OKE_TERMS_PKG;