DBA Data[Home] [Help]

PACKAGE BODY: APPS.MTL_CROSS_REFERENCES_PKG

Source


1 PACKAGE BODY MTL_CROSS_REFERENCES_PKG AS
2 /* $Header: INVIDXRB.pls 120.0 2005/06/22 23:08:19 lparihar noship $ */
3 
4    PROCEDURE INSERT_ROW (
5          P_SOURCE_SYSTEM_ID       IN NUMBER
6         ,P_START_DATE_ACTIVE      IN DATE
7         ,P_END_DATE_ACTIVE        IN DATE
8         ,P_OBJECT_VERSION_NUMBER  IN NUMBER
9         ,P_UOM_CODE               IN VARCHAR2
10         ,P_REVISION_ID            IN NUMBER
11         ,P_EPC_GTIN_SERIAL        IN NUMBER
12         ,P_INVENTORY_ITEM_ID      IN NUMBER
13         ,P_ORGANIZATION_ID        IN NUMBER
14         ,P_CROSS_REFERENCE_TYPE   IN VARCHAR2
15         ,P_CROSS_REFERENCE        IN VARCHAR2
16         ,P_ORG_INDEPENDENT_FLAG   IN VARCHAR2
17         ,P_REQUEST_ID             IN NUMBER
18         ,P_ATTRIBUTE1             IN VARCHAR2
19         ,P_ATTRIBUTE2             IN VARCHAR2
20         ,P_ATTRIBUTE3             IN VARCHAR2
21         ,P_ATTRIBUTE4             IN VARCHAR2
22         ,P_ATTRIBUTE5             IN VARCHAR2
23         ,P_ATTRIBUTE6             IN VARCHAR2
24         ,P_ATTRIBUTE7             IN VARCHAR2
25         ,P_ATTRIBUTE8             IN VARCHAR2
26         ,P_ATTRIBUTE9             IN VARCHAR2
27         ,P_ATTRIBUTE10            IN VARCHAR2
28         ,P_ATTRIBUTE11            IN VARCHAR2
29         ,P_ATTRIBUTE12            IN VARCHAR2
30         ,P_ATTRIBUTE13            IN VARCHAR2
31         ,P_ATTRIBUTE14            IN VARCHAR2
32         ,P_ATTRIBUTE15            IN VARCHAR2
33         ,P_ATTRIBUTE_CATEGORY     IN VARCHAR2
34         ,P_DESCRIPTION            IN VARCHAR2
35         ,P_CREATION_DATE          IN DATE
36         ,P_CREATED_BY             IN NUMBER
37         ,P_LAST_UPDATE_DATE       IN DATE
38         ,P_LAST_UPDATED_BY        IN NUMBER
39         ,P_LAST_UPDATE_LOGIN      IN NUMBER
40         ,P_PROGRAM_APPLICATION_ID IN NUMBER
41         ,P_PROGRAM_ID             IN NUMBER
42         ,P_PROGRAM_UPDATE_DATE    IN DATE
43         ,X_CROSS_REFERENCE_ID     OUT NOCOPY NUMBER) IS
44 
45     CURSOR C_CHECK_INSERT IS
46        SELECT 'Y'
47        FROM   MTL_CROSS_REFERENCES_B
48        WHERE  CROSS_REFERENCE_ID = X_CROSS_REFERENCE_ID;
49 
50      l_exists VARCHAR2(1);
51 
52    BEGIN
53 
54       INSERT INTO MTL_CROSS_REFERENCES_B (
55              SOURCE_SYSTEM_ID
56             ,START_DATE_ACTIVE
57             ,END_DATE_ACTIVE
58             ,OBJECT_VERSION_NUMBER
59             ,UOM_CODE
60             ,REVISION_ID
61             ,CROSS_REFERENCE_ID
62             ,EPC_GTIN_SERIAL
63             ,INVENTORY_ITEM_ID
64             ,ORGANIZATION_ID
65             ,CROSS_REFERENCE_TYPE
66             ,CROSS_REFERENCE
67             ,ORG_INDEPENDENT_FLAG
68             ,REQUEST_ID
69             ,ATTRIBUTE1
70             ,ATTRIBUTE2
71             ,ATTRIBUTE3
72             ,ATTRIBUTE4
73             ,ATTRIBUTE5
74             ,ATTRIBUTE6
75             ,ATTRIBUTE7
76             ,ATTRIBUTE8
77             ,ATTRIBUTE9
78             ,ATTRIBUTE10
79             ,ATTRIBUTE11
80             ,ATTRIBUTE12
81             ,ATTRIBUTE13
82             ,ATTRIBUTE14
83             ,ATTRIBUTE15
84             ,ATTRIBUTE_CATEGORY
85             ,CREATION_DATE
86             ,CREATED_BY
87             ,LAST_UPDATE_DATE
88             ,LAST_UPDATED_BY
89             ,LAST_UPDATE_LOGIN
90             ,PROGRAM_APPLICATION_ID
91             ,PROGRAM_ID
92             ,PROGRAM_UPDATE_DATE)
93       VALUES(
94              P_SOURCE_SYSTEM_ID
95             ,P_START_DATE_ACTIVE
96             ,P_END_DATE_ACTIVE
97             ,NVL(P_OBJECT_VERSION_NUMBER,1)
98             ,P_UOM_CODE
99             ,P_REVISION_ID
100             ,MTL_CROSS_REFERENCES_B_S.NEXTVAL
101             ,NVL(P_EPC_GTIN_SERIAL,0)
102             ,P_INVENTORY_ITEM_ID
103             ,P_ORGANIZATION_ID
104             ,P_CROSS_REFERENCE_TYPE
105             ,P_CROSS_REFERENCE
106             ,P_ORG_INDEPENDENT_FLAG
107             ,P_REQUEST_ID
108             ,P_ATTRIBUTE1
109             ,P_ATTRIBUTE2
110             ,P_ATTRIBUTE3
111             ,P_ATTRIBUTE4
112             ,P_ATTRIBUTE5
113             ,P_ATTRIBUTE6
114             ,P_ATTRIBUTE7
115             ,P_ATTRIBUTE8
116             ,P_ATTRIBUTE9
117             ,P_ATTRIBUTE10
118             ,P_ATTRIBUTE11
119             ,P_ATTRIBUTE12
120             ,P_ATTRIBUTE13
121             ,P_ATTRIBUTE14
122             ,P_ATTRIBUTE15
123             ,P_ATTRIBUTE_CATEGORY
124             ,NVL(P_CREATION_DATE,SYSDATE)
125             ,NVL(P_CREATED_BY,FND_GLOBAL.USER_ID)
126             ,NVL(P_LAST_UPDATE_DATE,SYSDATE)
127             ,NVL(P_LAST_UPDATED_BY,FND_GLOBAL.USER_ID)
128             ,NVL(P_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID)
129             ,P_PROGRAM_APPLICATION_ID
130             ,P_PROGRAM_ID
131             ,P_PROGRAM_UPDATE_DATE)
132       RETURNING CROSS_REFERENCE_ID INTO X_CROSS_REFERENCE_ID ;
133 
134       INSERT INTO MTL_CROSS_REFERENCES_TL (
135              LAST_UPDATE_LOGIN
136             ,DESCRIPTION
137             ,CREATION_DATE
138             ,CREATED_BY
139             ,LAST_UPDATE_DATE
140             ,LAST_UPDATED_BY
141             ,CROSS_REFERENCE_ID
142             ,LANGUAGE
143             ,SOURCE_LANG)
144       SELECT
145             NVL(P_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
146             P_DESCRIPTION,
147             NVL(P_CREATION_DATE,SYSDATE),
148             NVL(P_CREATED_BY,FND_GLOBAL.USER_ID),
149             NVL(P_LAST_UPDATE_DATE,SYSDATE),
150             NVL(P_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
151             X_CROSS_REFERENCE_ID,
152             L.LANGUAGE_CODE,
153             USERENV('LANG')
154       FROM  FND_LANGUAGES L
155       WHERE L.INSTALLED_FLAG in ('I', 'B')
156       AND   NOT EXISTS  (SELECT NULL
157                          FROM   MTL_CROSS_REFERENCES_TL T
158                         WHERE   T.CROSS_REFERENCE_ID = X_CROSS_REFERENCE_ID
159                         AND     T.LANGUAGE = L.LANGUAGE_CODE);
160 
161       OPEN C_CHECK_INSERT;
162       FETCH C_CHECK_INSERT INTO l_exists;
163       IF (C_CHECK_INSERT%NOTFOUND) THEN
164          CLOSE C_CHECK_INSERT;
165          RAISE NO_DATA_FOUND;
166       END IF;
167       CLOSE C_CHECK_INSERT;
168    END INSERT_ROW;
169 
170    PROCEDURE LOCK_ROW (
171          P_CROSS_REFERENCE_ID     IN NUMBER
172         ,P_SOURCE_SYSTEM_ID       IN NUMBER
173         ,P_START_DATE_ACTIVE      IN DATE
174         ,P_END_DATE_ACTIVE        IN DATE
175         ,P_OBJECT_VERSION_NUMBER  IN NUMBER
176         ,P_UOM_CODE               IN VARCHAR2
177         ,P_REVISION_ID            IN NUMBER
178         ,P_EPC_GTIN_SERIAL        IN NUMBER
179         ,P_INVENTORY_ITEM_ID      IN NUMBER
180         ,P_ORGANIZATION_ID        IN NUMBER
181         ,P_CROSS_REFERENCE_TYPE   IN VARCHAR2
182         ,P_CROSS_REFERENCE        IN VARCHAR2
183         ,P_ORG_INDEPENDENT_FLAG   IN VARCHAR2
184         ,P_ATTRIBUTE1             IN VARCHAR2
185         ,P_ATTRIBUTE2             IN VARCHAR2
186         ,P_ATTRIBUTE3             IN VARCHAR2
187         ,P_ATTRIBUTE4             IN VARCHAR2
188         ,P_ATTRIBUTE5             IN VARCHAR2
189         ,P_ATTRIBUTE6             IN VARCHAR2
190         ,P_ATTRIBUTE7             IN VARCHAR2
191         ,P_ATTRIBUTE8             IN VARCHAR2
192         ,P_ATTRIBUTE9             IN VARCHAR2
193         ,P_ATTRIBUTE10            IN VARCHAR2
194         ,P_ATTRIBUTE11            IN VARCHAR2
195         ,P_ATTRIBUTE12            IN VARCHAR2
196         ,P_ATTRIBUTE13            IN VARCHAR2
197         ,P_ATTRIBUTE14            IN VARCHAR2
198         ,P_ATTRIBUTE15            IN VARCHAR2
199         ,P_ATTRIBUTE_CATEGORY     IN VARCHAR2
200         ,P_DESCRIPTION            IN VARCHAR2) IS
201 
202    CURSOR C_CROSS_REF_B IS
203       SELECT
204           SOURCE_SYSTEM_ID
205          ,START_DATE_ACTIVE
206          ,END_DATE_ACTIVE
207          ,OBJECT_VERSION_NUMBER
208          ,UOM_CODE
209          ,REVISION_ID
210          ,EPC_GTIN_SERIAL
211          ,INVENTORY_ITEM_ID
212          ,ORGANIZATION_ID
213          ,CROSS_REFERENCE_TYPE
214          ,CROSS_REFERENCE
215          ,ORG_INDEPENDENT_FLAG
216          ,REQUEST_ID
217          ,ATTRIBUTE1
218          ,ATTRIBUTE2
219          ,ATTRIBUTE3
220          ,ATTRIBUTE4
221          ,ATTRIBUTE5
222          ,ATTRIBUTE6
223          ,ATTRIBUTE7
224          ,ATTRIBUTE8
225          ,ATTRIBUTE9
226          ,ATTRIBUTE10
227          ,ATTRIBUTE11
228          ,ATTRIBUTE12
229          ,ATTRIBUTE13
230          ,ATTRIBUTE14
231          ,ATTRIBUTE15
232          ,ATTRIBUTE_CATEGORY
233       FROM MTL_CROSS_REFERENCES_B
234       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID
235       FOR UPDATE OF CROSS_REFERENCE_ID NOWAIT;
236 
237    CURSOR C_CROSS_REF_TL IS
238       SELECT
239           DESCRIPTION
240          ,DECODE(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
241       FROM MTL_CROSS_REFERENCES_TL
242       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID
243       AND   USERENV('LANG') IN (LANGUAGE, SOURCE_LANG)
244       FOR UPDATE OF CROSS_REFERENCE_ID NOWAIT;
245 
246       l_recinfo C_CROSS_REF_B%ROWTYPE;
247 
248    BEGIN
249 
250       OPEN C_CROSS_REF_B;
251       FETCH C_CROSS_REF_B INTO l_recinfo;
252       IF (C_CROSS_REF_B%NOTFOUND) THEN
253          CLOSE C_CROSS_REF_B;
254          FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_DELETED');
255          APP_EXCEPTION.RAISE_EXCEPTION;
256       END IF;
257       CLOSE C_CROSS_REF_B;
258 
259       IF (((l_recinfo.SOURCE_SYSTEM_ID = P_SOURCE_SYSTEM_ID)
260            OR ((l_recinfo.SOURCE_SYSTEM_ID is null) AND (P_SOURCE_SYSTEM_ID is null)))
261       AND ((l_recinfo.OBJECT_VERSION_NUMBER = P_OBJECT_VERSION_NUMBER)
262            OR ((l_recinfo.OBJECT_VERSION_NUMBER is null) AND (P_OBJECT_VERSION_NUMBER is null)))
263       AND ((l_recinfo.UOM_CODE = P_UOM_CODE)
264            OR ((l_recinfo.UOM_CODE is null) AND (P_UOM_CODE is null)))
265       AND ((l_recinfo.REVISION_ID = P_REVISION_ID)
266            OR ((l_recinfo.REVISION_ID is null) AND (P_REVISION_ID is null)))
267       AND ((l_recinfo.EPC_GTIN_SERIAL = P_EPC_GTIN_SERIAL)
268            OR ((l_recinfo.EPC_GTIN_SERIAL is null) AND (P_EPC_GTIN_SERIAL is null)))
269       AND (l_recinfo.INVENTORY_ITEM_ID = P_INVENTORY_ITEM_ID)
270       AND ((l_recinfo.ORGANIZATION_ID = P_ORGANIZATION_ID)
271            OR ((l_recinfo.ORGANIZATION_ID is null) AND (P_ORGANIZATION_ID is null)))
272       AND (l_recinfo.CROSS_REFERENCE_TYPE = P_CROSS_REFERENCE_TYPE)
273       AND (l_recinfo.CROSS_REFERENCE = P_CROSS_REFERENCE)
274       AND (l_recinfo.ORG_INDEPENDENT_FLAG = P_ORG_INDEPENDENT_FLAG)
275       AND ((l_recinfo.ATTRIBUTE1 = P_ATTRIBUTE1)
276            OR ((l_recinfo.ATTRIBUTE1 is null) AND (P_ATTRIBUTE1 is null)))
277       AND ((l_recinfo.ATTRIBUTE2 = P_ATTRIBUTE2)
278            OR ((l_recinfo.ATTRIBUTE2 is null) AND (P_ATTRIBUTE2 is null)))
279       AND ((l_recinfo.ATTRIBUTE3 = P_ATTRIBUTE3)
280            OR ((l_recinfo.ATTRIBUTE3 is null) AND (P_ATTRIBUTE3 is null)))
281       AND ((l_recinfo.ATTRIBUTE4 = P_ATTRIBUTE4)
282            OR ((l_recinfo.ATTRIBUTE4 is null) AND (P_ATTRIBUTE4 is null)))
283       AND ((l_recinfo.ATTRIBUTE5 = P_ATTRIBUTE5)
284            OR ((l_recinfo.ATTRIBUTE5 is null) AND (P_ATTRIBUTE5 is null)))
285       AND ((l_recinfo.ATTRIBUTE6 = P_ATTRIBUTE6)
286            OR ((l_recinfo.ATTRIBUTE6 is null) AND (P_ATTRIBUTE6 is null)))
287       AND ((l_recinfo.ATTRIBUTE7 = P_ATTRIBUTE7)
288            OR ((l_recinfo.ATTRIBUTE7 is null) AND (P_ATTRIBUTE7 is null)))
289       AND ((l_recinfo.ATTRIBUTE8 = P_ATTRIBUTE8)
290            OR ((l_recinfo.ATTRIBUTE8 is null) AND (P_ATTRIBUTE8 is null)))
291       AND ((l_recinfo.ATTRIBUTE9 = P_ATTRIBUTE9)
292            OR ((l_recinfo.ATTRIBUTE9 is null) AND (P_ATTRIBUTE9 is null)))
293       AND ((l_recinfo.ATTRIBUTE10 = P_ATTRIBUTE10)
294            OR ((l_recinfo.ATTRIBUTE10 is null) AND (P_ATTRIBUTE10 is null)))
295       AND ((l_recinfo.ATTRIBUTE11 = P_ATTRIBUTE11)
296            OR ((l_recinfo.ATTRIBUTE11 is null) AND (P_ATTRIBUTE11 is null)))
297       AND ((l_recinfo.ATTRIBUTE12 = P_ATTRIBUTE12)
298            OR ((l_recinfo.ATTRIBUTE12 is null) AND (P_ATTRIBUTE12 is null)))
299       AND ((l_recinfo.ATTRIBUTE13 = P_ATTRIBUTE13)
300            OR ((l_recinfo.ATTRIBUTE13 is null) AND (P_ATTRIBUTE13 is null)))
301       AND ((l_recinfo.ATTRIBUTE14 = P_ATTRIBUTE14)
302            OR ((l_recinfo.ATTRIBUTE14 is null) AND (P_ATTRIBUTE14 is null)))
303       AND ((l_recinfo.ATTRIBUTE15 = P_ATTRIBUTE15)
304            OR ((l_recinfo.ATTRIBUTE15 is null) AND (P_ATTRIBUTE15 is null)))
305       AND ((l_recinfo.ATTRIBUTE_CATEGORY = P_ATTRIBUTE_CATEGORY)
306            OR ((l_recinfo.ATTRIBUTE_CATEGORY is null) AND (P_ATTRIBUTE_CATEGORY is null))))
307       THEN
308          NULL;
309       ELSE
310          FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_CHANGED');
311          APP_EXCEPTION.RAISE_EXCEPTION;
312       END IF;
313 
314      FOR cur IN C_CROSS_REF_TL LOOP
315         IF (cur.BASELANG = 'Y') THEN
316            IF (((cur.DESCRIPTION = P_DESCRIPTION)
317                OR ((cur.DESCRIPTION is null) AND (P_DESCRIPTION is null))))
318            THEN
319               NULL;
320            ELSE
321               FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_CHANGED');
322               APP_EXCEPTION.RAISE_EXCEPTION;
323            END IF;
324         END IF;
325      END LOOP;
326 
327    END LOCK_ROW;
328 
329    PROCEDURE UPDATE_ROW (
330          P_CROSS_REFERENCE_ID     IN NUMBER
331         ,P_SOURCE_SYSTEM_ID       IN NUMBER
332         ,P_START_DATE_ACTIVE      IN DATE
333         ,P_END_DATE_ACTIVE        IN DATE
334         ,P_UOM_CODE               IN VARCHAR2
335         ,P_REVISION_ID            IN NUMBER
336         ,P_EPC_GTIN_SERIAL        IN NUMBER
337         ,P_INVENTORY_ITEM_ID      IN NUMBER
338         ,P_ORGANIZATION_ID        IN NUMBER
339         ,P_CROSS_REFERENCE_TYPE   IN VARCHAR2
340         ,P_CROSS_REFERENCE        IN VARCHAR2
341         ,P_ORG_INDEPENDENT_FLAG   IN VARCHAR2
342         ,P_REQUEST_ID             IN NUMBER
343         ,P_ATTRIBUTE1             IN VARCHAR2
344         ,P_ATTRIBUTE2             IN VARCHAR2
345         ,P_ATTRIBUTE3             IN VARCHAR2
346         ,P_ATTRIBUTE4             IN VARCHAR2
347         ,P_ATTRIBUTE5             IN VARCHAR2
348         ,P_ATTRIBUTE6             IN VARCHAR2
349         ,P_ATTRIBUTE7             IN VARCHAR2
350         ,P_ATTRIBUTE8             IN VARCHAR2
351         ,P_ATTRIBUTE9             IN VARCHAR2
352         ,P_ATTRIBUTE10            IN VARCHAR2
353         ,P_ATTRIBUTE11            IN VARCHAR2
354         ,P_ATTRIBUTE12            IN VARCHAR2
355         ,P_ATTRIBUTE13            IN VARCHAR2
356         ,P_ATTRIBUTE14            IN VARCHAR2
357         ,P_ATTRIBUTE15            IN VARCHAR2
358         ,P_ATTRIBUTE_CATEGORY     IN VARCHAR2
359         ,P_DESCRIPTION            IN VARCHAR2
360         ,P_LAST_UPDATE_DATE       IN DATE
361         ,P_LAST_UPDATED_BY        IN NUMBER
362         ,P_LAST_UPDATE_LOGIN      IN NUMBER
363         ,X_OBJECT_VERSION_NUMBER  OUT NOCOPY NUMBER) IS
364    BEGIN
365       UPDATE MTL_CROSS_REFERENCES_B
366       SET
367              SOURCE_SYSTEM_ID      = P_SOURCE_SYSTEM_ID
368             ,START_DATE_ACTIVE     = P_START_DATE_ACTIVE
369             ,END_DATE_ACTIVE       = P_END_DATE_ACTIVE
373             ,EPC_GTIN_SERIAL       = NVL(P_EPC_GTIN_SERIAL,EPC_GTIN_SERIAL)
370             ,OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER+1
371             ,UOM_CODE              = P_UOM_CODE
372             ,REVISION_ID           = P_REVISION_ID
374             ,INVENTORY_ITEM_ID     = P_INVENTORY_ITEM_ID
375             ,ORGANIZATION_ID       = P_ORGANIZATION_ID
376             ,CROSS_REFERENCE_TYPE  = P_CROSS_REFERENCE_TYPE
377             ,CROSS_REFERENCE       = P_CROSS_REFERENCE
378             ,ORG_INDEPENDENT_FLAG  = P_ORG_INDEPENDENT_FLAG
379             ,REQUEST_ID            = P_REQUEST_ID
380             ,ATTRIBUTE1            = P_ATTRIBUTE1
381             ,ATTRIBUTE2            = P_ATTRIBUTE2
382             ,ATTRIBUTE3            = P_ATTRIBUTE3
383             ,ATTRIBUTE4            = P_ATTRIBUTE4
384             ,ATTRIBUTE5            = P_ATTRIBUTE5
385             ,ATTRIBUTE6            = P_ATTRIBUTE6
386             ,ATTRIBUTE7            = P_ATTRIBUTE7
387             ,ATTRIBUTE8            = P_ATTRIBUTE8
388             ,ATTRIBUTE9            = P_ATTRIBUTE9
389             ,ATTRIBUTE10           = P_ATTRIBUTE10
390             ,ATTRIBUTE11           = P_ATTRIBUTE11
391             ,ATTRIBUTE12           = P_ATTRIBUTE12
392             ,ATTRIBUTE13           = P_ATTRIBUTE13
393             ,ATTRIBUTE14           = P_ATTRIBUTE14
394             ,ATTRIBUTE15           = P_ATTRIBUTE15
395             ,ATTRIBUTE_CATEGORY    = P_ATTRIBUTE_CATEGORY
396             ,LAST_UPDATE_DATE      = NVL(P_LAST_UPDATE_DATE,SYSDATE)
397             ,LAST_UPDATED_BY       = NVL(P_LAST_UPDATED_BY,FND_GLOBAL.USER_ID)
398             ,LAST_UPDATE_LOGIN     = NVL(P_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID)
399       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID
400       RETURNING OBJECT_VERSION_NUMBER INTO X_OBJECT_VERSION_NUMBER;
401 
402       IF (SQL%NOTFOUND) THEN
403          RAISE NO_DATA_FOUND;
404       END IF;
405 
406       UPDATE MTL_CROSS_REFERENCES_TL
407       SET    DESCRIPTION       = P_DESCRIPTION,
408              LAST_UPDATE_DATE  = NVL(P_LAST_UPDATE_DATE,SYSDATE),
409              LAST_UPDATED_BY   = NVL(P_LAST_UPDATE_LOGIN,FND_GLOBAL.USER_ID),
410              LAST_UPDATE_LOGIN = NVL(P_LAST_UPDATED_BY,FND_GLOBAL.LOGIN_ID),
411              SOURCE_LANG       = USERENV('LANG')
412       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID
413       AND   USERENV('LANG') IN (LANGUAGE, SOURCE_LANG);
414 
415       IF (SQL%NOTFOUND) THEN
416          RAISE NO_DATA_FOUND;
417       END IF;
418 
419    END UPDATE_ROW;
420 
421    PROCEDURE DELETE_ROW (P_CROSS_REFERENCE_ID IN NUMBER) IS
422    BEGIN
423 
424       DELETE FROM MTL_CROSS_REFERENCES_TL
425       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID;
426 
427       IF (SQL%NOTFOUND) THEN
428          RAISE NO_DATA_FOUND;
429       END IF;
430 
431       DELETE FROM MTL_CROSS_REFERENCES_B
432       WHERE CROSS_REFERENCE_ID = P_CROSS_REFERENCE_ID;
433 
434       IF (SQL%NOTFOUND) THEN
435          RAISE NO_DATA_FOUND;
436       END IF;
437 
438    END DELETE_ROW;
439 
440    PROCEDURE ADD_LANGUAGE IS
441    BEGIN
442       DELETE MTL_CROSS_REFERENCES_TL T
443       WHERE NOT EXISTS (SELECT NULL
444                         FROM   MTL_CROSS_REFERENCES_B B
445                         WHERE  B.CROSS_REFERENCE_ID = T.CROSS_REFERENCE_ID);
446 
447       UPDATE MTL_CROSS_REFERENCES_TL T
448       SET (DESCRIPTION) = (SELECT B.DESCRIPTION
449                            FROM   MTL_CROSS_REFERENCES_TL B
450                            WHERE  B.CROSS_REFERENCE_ID = T.CROSS_REFERENCE_ID
451                            AND    B.LANGUAGE = T.SOURCE_LANG)
452       WHERE (T.CROSS_REFERENCE_ID,T.LANGUAGE) IN
453             (SELECT SUBT.CROSS_REFERENCE_ID
454                    ,SUBT.LANGUAGE
455              FROM MTL_CROSS_REFERENCES_TL SUBB,
456                   MTL_CROSS_REFERENCES_TL SUBT
457              WHERE SUBB.CROSS_REFERENCE_ID = SUBT.CROSS_REFERENCE_ID
458              AND   SUBB.LANGUAGE = SUBT.SOURCE_LANG
459              AND  (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
460                OR (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
461                OR (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)));
462 
463       INSERT INTO MTL_CROSS_REFERENCES_TL (
464              LAST_UPDATE_LOGIN
465             ,DESCRIPTION
466             ,CREATION_DATE
467             ,CREATED_BY
468             ,LAST_UPDATE_DATE
469             ,LAST_UPDATED_BY
470             ,CROSS_REFERENCE_ID
471             ,LANGUAGE
472             ,SOURCE_LANG)
473       SELECT /*+ ORDERED */
474              B.LAST_UPDATE_LOGIN
475             ,B.DESCRIPTION
476             ,B.CREATION_DATE
477             ,B.CREATED_BY
478             ,B.LAST_UPDATE_DATE
479             ,B.LAST_UPDATED_BY
480             ,B.CROSS_REFERENCE_ID
481             ,L.LANGUAGE_CODE
482             ,B.SOURCE_LANG
483       FROM  MTL_CROSS_REFERENCES_TL B,
484             FND_LANGUAGES L
485       WHERE L.INSTALLED_FLAG in ('I', 'B')
486       AND   B.LANGUAGE = USERENV('LANG')
487       AND   NOT EXISTS (SELECT NULL
488                         FROM MTL_CROSS_REFERENCES_TL T
489                         WHERE T.CROSS_REFERENCE_ID = B.CROSS_REFERENCE_ID
490                         AND   T.LANGUAGE = L.LANGUAGE_CODE);
491    END ADD_LANGUAGE;
492 
493 END MTL_CROSS_REFERENCES_PKG;