DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_ITEM_SUBSTITUTION_HDR_PKG

Source


1 PACKAGE BODY GMD_ITEM_SUBSTITUTION_HDR_PKG as
2 /* $Header: GMDITSHB.pls 120.1 2005/07/15 06:08:50 kkillams noship $ */
3 PROCEDURE INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_SUBSTITUTION_ID in NUMBER,
6   X_SUBSTITUTION_NAME in VARCHAR2,
7   X_SUBSTITUTION_VERSION in NUMBER,
8   X_SUBSTITUTION_STATUS in VARCHAR2,
9   X_ORIGINAL_INVENTORY_ITEM_ID in NUMBER,
10   X_ORIGINAL_UOM in VARCHAR2,
11   X_ORIGINAL_QTY in NUMBER,
12   X_PREFERENCE in NUMBER,
13   X_START_DATE in DATE,
14   X_END_DATE in DATE,
15   X_OWNER_ORGANIZATION_ID in NUMBER,
16   X_REPLACEMENT_UOM_TYPE in NUMBER,
17   X_ATTRIBUTE_CATEGORY in VARCHAR2,
18   X_ATTRIBUTE1 in VARCHAR2,
19   X_ATTRIBUTE2 in VARCHAR2,
20   X_ATTRIBUTE3 in VARCHAR2,
21   X_ATTRIBUTE4 in VARCHAR2,
22   X_ATTRIBUTE5 in VARCHAR2,
23   X_ATTRIBUTE6 in VARCHAR2,
24   X_ATTRIBUTE7 in VARCHAR2,
25   X_ATTRIBUTE8 in VARCHAR2,
26   X_ATTRIBUTE9 in VARCHAR2,
27   X_ATTRIBUTE10 in VARCHAR2,
28   X_ATTRIBUTE11 in VARCHAR2,
29   X_ATTRIBUTE12 in VARCHAR2,
30   X_ATTRIBUTE13 in VARCHAR2,
31   X_ATTRIBUTE14 in VARCHAR2,
32   X_ATTRIBUTE15 in VARCHAR2,
33   X_ATTRIBUTE16 in VARCHAR2,
34   X_ATTRIBUTE17 in VARCHAR2,
35   X_ATTRIBUTE18 in VARCHAR2,
36   X_ATTRIBUTE19 in VARCHAR2,
37   X_ATTRIBUTE20 in VARCHAR2,
38   X_ATTRIBUTE21 in VARCHAR2,
39   X_ATTRIBUTE22 in VARCHAR2,
40   X_ATTRIBUTE23 in VARCHAR2,
41   X_ATTRIBUTE24 in VARCHAR2,
42   X_ATTRIBUTE25 in VARCHAR2,
43   X_ATTRIBUTE26 in VARCHAR2,
44   X_ATTRIBUTE27 in VARCHAR2,
45   X_ATTRIBUTE28 in VARCHAR2,
46   X_ATTRIBUTE29 in VARCHAR2,
47   X_ATTRIBUTE30 in VARCHAR2,
48   X_SUBSTITUTION_DESCRIPTION in VARCHAR2,
49   X_CREATION_DATE in DATE,
50   X_CREATED_BY in NUMBER,
51   X_LAST_UPDATE_DATE in DATE,
52   X_LAST_UPDATED_BY in NUMBER,
53   X_LAST_UPDATE_LOGIN in NUMBER
54 ) IS
55   CURSOR C IS SELECT ROWID FROM GMD_ITEM_SUBSTITUTION_HDR_B
56     WHERE SUBSTITUTION_ID = X_SUBSTITUTION_ID
57     ;
58 BEGIN
59   INSERT INTO GMD_ITEM_SUBSTITUTION_HDR_B (
60     SUBSTITUTION_ID,
61     SUBSTITUTION_NAME,
62     SUBSTITUTION_VERSION,
63     SUBSTITUTION_STATUS,
64     ORIGINAL_INVENTORY_ITEM_ID,
65     ORIGINAL_UOM,
66     ORIGINAL_QTY,
67     PREFERENCE,
68     START_DATE,
69     END_DATE,
70     OWNER_ORGANIZATION_ID,
71     REPLACEMENT_UOM_TYPE,
72     ATTRIBUTE_CATEGORY,
73     ATTRIBUTE1,
74     ATTRIBUTE2,
75     ATTRIBUTE3,
76     ATTRIBUTE4,
77     ATTRIBUTE5,
78     ATTRIBUTE6,
79     ATTRIBUTE7,
80     ATTRIBUTE8,
81     ATTRIBUTE9,
82     ATTRIBUTE10,
83     ATTRIBUTE11,
84     ATTRIBUTE12,
85     ATTRIBUTE13,
86     ATTRIBUTE14,
87     ATTRIBUTE15,
88     ATTRIBUTE16,
89     ATTRIBUTE17,
90     ATTRIBUTE18,
91     ATTRIBUTE19,
92     ATTRIBUTE20,
93     ATTRIBUTE21,
94     ATTRIBUTE22,
95     ATTRIBUTE23,
96     ATTRIBUTE24,
97     ATTRIBUTE25,
98     ATTRIBUTE26,
99     ATTRIBUTE27,
100     ATTRIBUTE28,
101     ATTRIBUTE29,
102     ATTRIBUTE30,
103     CREATION_DATE,
104     CREATED_BY,
105     LAST_UPDATE_DATE,
106     LAST_UPDATED_BY,
107     LAST_UPDATE_LOGIN
108   ) VALUES (
109     X_SUBSTITUTION_ID,
110     X_SUBSTITUTION_NAME,
111     X_SUBSTITUTION_VERSION,
112     X_SUBSTITUTION_STATUS,
113     X_ORIGINAL_INVENTORY_ITEM_ID,
114     X_ORIGINAL_UOM,
115     X_ORIGINAL_QTY,
116     X_PREFERENCE,
117     X_START_DATE,
118     X_END_DATE,
119     X_OWNER_ORGANIZATION_ID,
120     X_REPLACEMENT_UOM_TYPE,
121     X_ATTRIBUTE_CATEGORY,
122     X_ATTRIBUTE1,
123     X_ATTRIBUTE2,
124     X_ATTRIBUTE3,
125     X_ATTRIBUTE4,
126     X_ATTRIBUTE5,
127     X_ATTRIBUTE6,
128     X_ATTRIBUTE7,
129     X_ATTRIBUTE8,
130     X_ATTRIBUTE9,
131     X_ATTRIBUTE10,
132     X_ATTRIBUTE11,
133     X_ATTRIBUTE12,
134     X_ATTRIBUTE13,
135     X_ATTRIBUTE14,
136     X_ATTRIBUTE15,
137     X_ATTRIBUTE16,
138     X_ATTRIBUTE17,
139     X_ATTRIBUTE18,
140     X_ATTRIBUTE19,
141     X_ATTRIBUTE20,
142     X_ATTRIBUTE21,
143     X_ATTRIBUTE22,
144     X_ATTRIBUTE23,
145     X_ATTRIBUTE24,
146     X_ATTRIBUTE25,
147     X_ATTRIBUTE26,
148     X_ATTRIBUTE27,
149     X_ATTRIBUTE28,
150     X_ATTRIBUTE29,
151     X_ATTRIBUTE30,
152     X_CREATION_DATE,
153     X_CREATED_BY,
154     X_LAST_UPDATE_DATE,
155     X_LAST_UPDATED_BY,
156     X_LAST_UPDATE_LOGIN
157   );
158 
159   insert into GMD_ITEM_SUBSTITUTION_HDR_TL (
160     LAST_UPDATE_LOGIN,
161     LAST_UPDATE_DATE,
162     LAST_UPDATED_BY,
163     CREATED_BY,
164     CREATION_DATE,
165     SUBSTITUTION_ID,
166     SUBSTITUTION_DESCRIPTION,
167     LANGUAGE,
168     SOURCE_LANG
169   ) select
170     X_LAST_UPDATE_LOGIN,
171     X_LAST_UPDATE_DATE,
172     X_LAST_UPDATED_BY,
173     X_CREATED_BY,
174     X_CREATION_DATE,
175     X_SUBSTITUTION_ID,
176     X_SUBSTITUTION_DESCRIPTION,
177     L.LANGUAGE_CODE,
178     userenv('LANG')
179   from FND_LANGUAGES L
180   where L.INSTALLED_FLAG in ('I', 'B')
181   and not exists
182     (select NULL
183     from GMD_ITEM_SUBSTITUTION_HDR_TL T
184     where T.SUBSTITUTION_ID = X_SUBSTITUTION_ID
185     and T.LANGUAGE = L.LANGUAGE_CODE);
186 
187   open c;
188   fetch c into X_ROWID;
189   if (c%notfound) then
190     close c;
191     raise no_data_found;
192   end if;
193   close c;
194 
195 end INSERT_ROW;
196 
197 procedure LOCK_ROW (
198   X_SUBSTITUTION_ID in NUMBER,
199   X_SUBSTITUTION_NAME in VARCHAR2,
200   X_SUBSTITUTION_VERSION in NUMBER,
201   X_SUBSTITUTION_STATUS in VARCHAR2,
202   X_ORIGINAL_INVENTORY_ITEM_ID in NUMBER,
203   X_ORIGINAL_UOM in VARCHAR2,
204   X_ORIGINAL_QTY in NUMBER,
205   X_PREFERENCE in NUMBER,
206   X_START_DATE in DATE,
207   X_END_DATE in DATE,
208   X_OWNER_ORGANIZATION_ID in NUMBER,
209   X_REPLACEMENT_UOM_TYPE in NUMBER,
210   X_ATTRIBUTE_CATEGORY in VARCHAR2,
211   X_ATTRIBUTE1 in VARCHAR2,
212   X_ATTRIBUTE2 in VARCHAR2,
213   X_ATTRIBUTE3 in VARCHAR2,
214   X_ATTRIBUTE4 in VARCHAR2,
215   X_ATTRIBUTE5 in VARCHAR2,
216   X_ATTRIBUTE6 in VARCHAR2,
217   X_ATTRIBUTE7 in VARCHAR2,
218   X_ATTRIBUTE8 in VARCHAR2,
219   X_ATTRIBUTE9 in VARCHAR2,
220   X_ATTRIBUTE10 in VARCHAR2,
221   X_ATTRIBUTE11 in VARCHAR2,
222   X_ATTRIBUTE12 in VARCHAR2,
223   X_ATTRIBUTE13 in VARCHAR2,
224   X_ATTRIBUTE14 in VARCHAR2,
225   X_ATTRIBUTE15 in VARCHAR2,
226   X_ATTRIBUTE16 in VARCHAR2,
227   X_ATTRIBUTE17 in VARCHAR2,
228   X_ATTRIBUTE18 in VARCHAR2,
229   X_ATTRIBUTE19 in VARCHAR2,
230   X_ATTRIBUTE20 in VARCHAR2,
231   X_ATTRIBUTE21 in VARCHAR2,
232   X_ATTRIBUTE22 in VARCHAR2,
233   X_ATTRIBUTE23 in VARCHAR2,
234   X_ATTRIBUTE24 in VARCHAR2,
235   X_ATTRIBUTE25 in VARCHAR2,
236   X_ATTRIBUTE26 in VARCHAR2,
237   X_ATTRIBUTE27 in VARCHAR2,
238   X_ATTRIBUTE28 in VARCHAR2,
239   X_ATTRIBUTE29 in VARCHAR2,
240   X_ATTRIBUTE30 in VARCHAR2,
241   X_SUBSTITUTION_DESCRIPTION in VARCHAR2
242 ) is
243   cursor c is select
244       SUBSTITUTION_NAME,
245       SUBSTITUTION_VERSION,
246       SUBSTITUTION_STATUS,
247       ORIGINAL_INVENTORY_ITEM_ID,
248       ORIGINAL_UOM,
249       ORIGINAL_QTY,
250       PREFERENCE,
251       START_DATE,
252       END_DATE,
253       OWNER_ORGANIZATION_ID,
254       REPLACEMENT_UOM_TYPE,
255       ATTRIBUTE_CATEGORY,
256       ATTRIBUTE1,
257       ATTRIBUTE2,
258       ATTRIBUTE3,
259       ATTRIBUTE4,
260       ATTRIBUTE5,
261       ATTRIBUTE6,
262       ATTRIBUTE7,
263       ATTRIBUTE8,
264       ATTRIBUTE9,
265       ATTRIBUTE10,
266       ATTRIBUTE11,
267       ATTRIBUTE12,
268       ATTRIBUTE13,
269       ATTRIBUTE14,
270       ATTRIBUTE15,
271       ATTRIBUTE16,
272       ATTRIBUTE17,
273       ATTRIBUTE18,
274       ATTRIBUTE19,
275       ATTRIBUTE20,
276       ATTRIBUTE21,
277       ATTRIBUTE22,
278       ATTRIBUTE23,
279       ATTRIBUTE24,
280       ATTRIBUTE25,
281       ATTRIBUTE26,
282       ATTRIBUTE27,
283       ATTRIBUTE28,
284       ATTRIBUTE29,
285       ATTRIBUTE30
286     from GMD_ITEM_SUBSTITUTION_HDR_B
287     where SUBSTITUTION_ID = X_SUBSTITUTION_ID
288     for update of SUBSTITUTION_ID nowait;
289   recinfo c%rowtype;
290 
291   cursor c1 is select
292       SUBSTITUTION_DESCRIPTION,
293       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
294     from GMD_ITEM_SUBSTITUTION_HDR_TL
295     where SUBSTITUTION_ID = X_SUBSTITUTION_ID
296     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
297     for update of SUBSTITUTION_ID nowait;
298 begin
299   open c;
300   fetch c into recinfo;
301   if (c%notfound) then
302     close c;
303     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
304     app_exception.raise_exception;
305   end if;
306   close c;
307   if (    (recinfo.SUBSTITUTION_NAME = X_SUBSTITUTION_NAME)
308       AND (recinfo.SUBSTITUTION_VERSION = X_SUBSTITUTION_VERSION)
309       AND (recinfo.SUBSTITUTION_STATUS = X_SUBSTITUTION_STATUS)
310       AND (recinfo.ORIGINAL_INVENTORY_ITEM_ID = X_ORIGINAL_INVENTORY_ITEM_ID)
311       AND (recinfo.ORIGINAL_UOM = X_ORIGINAL_UOM)
312       AND (recinfo.ORIGINAL_QTY = X_ORIGINAL_QTY)
313       AND (recinfo.PREFERENCE = X_PREFERENCE)
314       AND (recinfo.START_DATE = X_START_DATE)
315       AND ((recinfo.END_DATE = X_END_DATE)
316            OR ((recinfo.END_DATE is null) AND (X_END_DATE is null)))
317       AND ((recinfo.OWNER_ORGANIZATION_ID = X_OWNER_ORGANIZATION_ID)
318            OR ((recinfo.OWNER_ORGANIZATION_ID is null) AND (X_OWNER_ORGANIZATION_ID is null)))
319       AND ((recinfo.REPLACEMENT_UOM_TYPE = X_REPLACEMENT_UOM_TYPE)
320            OR ((recinfo.REPLACEMENT_UOM_TYPE is null) AND (X_REPLACEMENT_UOM_TYPE is null)))
321       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
322            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
323       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
324            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
325       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
326            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
327       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
328            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
329       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
330            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
331       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
332            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
333       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
334            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
335       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
336            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
337       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
338            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
339       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
340            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
341       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
342            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
343       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
344            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
345       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
346            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
347       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
348            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
349       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
350            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
351       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
352            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
353       AND ((recinfo.ATTRIBUTE16 = X_ATTRIBUTE16)
354            OR ((recinfo.ATTRIBUTE16 is null) AND (X_ATTRIBUTE16 is null)))
355       AND ((recinfo.ATTRIBUTE17 = X_ATTRIBUTE17)
356            OR ((recinfo.ATTRIBUTE17 is null) AND (X_ATTRIBUTE17 is null)))
357       AND ((recinfo.ATTRIBUTE18 = X_ATTRIBUTE18)
358            OR ((recinfo.ATTRIBUTE18 is null) AND (X_ATTRIBUTE18 is null)))
359       AND ((recinfo.ATTRIBUTE19 = X_ATTRIBUTE19)
360            OR ((recinfo.ATTRIBUTE19 is null) AND (X_ATTRIBUTE19 is null)))
361       AND ((recinfo.ATTRIBUTE20 = X_ATTRIBUTE20)
362            OR ((recinfo.ATTRIBUTE20 is null) AND (X_ATTRIBUTE20 is null)))
363       AND ((recinfo.ATTRIBUTE21 = X_ATTRIBUTE21)
364            OR ((recinfo.ATTRIBUTE21 is null) AND (X_ATTRIBUTE21 is null)))
365       AND ((recinfo.ATTRIBUTE22 = X_ATTRIBUTE22)
366            OR ((recinfo.ATTRIBUTE22 is null) AND (X_ATTRIBUTE22 is null)))
367       AND ((recinfo.ATTRIBUTE23 = X_ATTRIBUTE23)
368            OR ((recinfo.ATTRIBUTE23 is null) AND (X_ATTRIBUTE23 is null)))
369       AND ((recinfo.ATTRIBUTE24 = X_ATTRIBUTE24)
370            OR ((recinfo.ATTRIBUTE24 is null) AND (X_ATTRIBUTE24 is null)))
371       AND ((recinfo.ATTRIBUTE25 = X_ATTRIBUTE25)
372            OR ((recinfo.ATTRIBUTE25 is null) AND (X_ATTRIBUTE25 is null)))
373       AND ((recinfo.ATTRIBUTE26 = X_ATTRIBUTE26)
374            OR ((recinfo.ATTRIBUTE26 is null) AND (X_ATTRIBUTE26 is null)))
375       AND ((recinfo.ATTRIBUTE27 = X_ATTRIBUTE27)
376            OR ((recinfo.ATTRIBUTE27 is null) AND (X_ATTRIBUTE27 is null)))
377       AND ((recinfo.ATTRIBUTE28 = X_ATTRIBUTE28)
378            OR ((recinfo.ATTRIBUTE28 is null) AND (X_ATTRIBUTE28 is null)))
379       AND ((recinfo.ATTRIBUTE29 = X_ATTRIBUTE29)
380            OR ((recinfo.ATTRIBUTE29 is null) AND (X_ATTRIBUTE29 is null)))
381       AND ((recinfo.ATTRIBUTE30 = X_ATTRIBUTE30)
382            OR ((recinfo.ATTRIBUTE30 is null) AND (X_ATTRIBUTE30 is null)))
383   ) then
384     null;
385   else
386     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
387     app_exception.raise_exception;
388   end if;
389 
390   for tlinfo in c1 loop
391     if (tlinfo.BASELANG = 'Y') then
392       if (    (tlinfo.SUBSTITUTION_DESCRIPTION = X_SUBSTITUTION_DESCRIPTION)
393       ) then
394         null;
395       else
396         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
397         app_exception.raise_exception;
398       end if;
399     end if;
400   end loop;
401   return;
402 end LOCK_ROW;
403 
404 procedure UPDATE_ROW (
405   X_SUBSTITUTION_ID in NUMBER,
406   X_SUBSTITUTION_NAME in VARCHAR2,
407   X_SUBSTITUTION_VERSION in NUMBER,
408   X_SUBSTITUTION_STATUS in VARCHAR2,
409   X_ORIGINAL_INVENTORY_ITEM_ID in NUMBER,
410   X_ORIGINAL_UOM in VARCHAR2,
411   X_ORIGINAL_QTY in NUMBER,
415   X_OWNER_ORGANIZATION_ID in NUMBER,
412   X_PREFERENCE in NUMBER,
413   X_START_DATE in DATE,
414   X_END_DATE in DATE,
416   X_REPLACEMENT_UOM_TYPE in NUMBER,
417   X_ATTRIBUTE_CATEGORY in VARCHAR2,
418   X_ATTRIBUTE1 in VARCHAR2,
419   X_ATTRIBUTE2 in VARCHAR2,
420   X_ATTRIBUTE3 in VARCHAR2,
421   X_ATTRIBUTE4 in VARCHAR2,
422   X_ATTRIBUTE5 in VARCHAR2,
423   X_ATTRIBUTE6 in VARCHAR2,
424   X_ATTRIBUTE7 in VARCHAR2,
425   X_ATTRIBUTE8 in VARCHAR2,
426   X_ATTRIBUTE9 in VARCHAR2,
427   X_ATTRIBUTE10 in VARCHAR2,
428   X_ATTRIBUTE11 in VARCHAR2,
429   X_ATTRIBUTE12 in VARCHAR2,
430   X_ATTRIBUTE13 in VARCHAR2,
431   X_ATTRIBUTE14 in VARCHAR2,
432   X_ATTRIBUTE15 in VARCHAR2,
433   X_ATTRIBUTE16 in VARCHAR2,
434   X_ATTRIBUTE17 in VARCHAR2,
435   X_ATTRIBUTE18 in VARCHAR2,
436   X_ATTRIBUTE19 in VARCHAR2,
437   X_ATTRIBUTE20 in VARCHAR2,
438   X_ATTRIBUTE21 in VARCHAR2,
439   X_ATTRIBUTE22 in VARCHAR2,
440   X_ATTRIBUTE23 in VARCHAR2,
441   X_ATTRIBUTE24 in VARCHAR2,
442   X_ATTRIBUTE25 in VARCHAR2,
443   X_ATTRIBUTE26 in VARCHAR2,
444   X_ATTRIBUTE27 in VARCHAR2,
445   X_ATTRIBUTE28 in VARCHAR2,
446   X_ATTRIBUTE29 in VARCHAR2,
447   X_ATTRIBUTE30 in VARCHAR2,
448   X_SUBSTITUTION_DESCRIPTION in VARCHAR2,
449   X_LAST_UPDATE_DATE in DATE,
450   X_LAST_UPDATED_BY in NUMBER,
451   X_LAST_UPDATE_LOGIN in NUMBER
452 ) is
453 begin
454   update GMD_ITEM_SUBSTITUTION_HDR_B set
455     SUBSTITUTION_NAME = X_SUBSTITUTION_NAME,
456     SUBSTITUTION_VERSION = X_SUBSTITUTION_VERSION,
457     SUBSTITUTION_STATUS = X_SUBSTITUTION_STATUS,
458     ORIGINAL_INVENTORY_ITEM_ID = X_ORIGINAL_INVENTORY_ITEM_ID,
459     ORIGINAL_UOM = X_ORIGINAL_UOM,
460     ORIGINAL_QTY = X_ORIGINAL_QTY,
461     PREFERENCE = X_PREFERENCE,
462     START_DATE = X_START_DATE,
463     END_DATE = X_END_DATE,
464     OWNER_ORGANIZATION_ID = X_OWNER_ORGANIZATION_ID,
465     REPLACEMENT_UOM_TYPE = X_REPLACEMENT_UOM_TYPE,
466     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
467     ATTRIBUTE1 = X_ATTRIBUTE1,
468     ATTRIBUTE2 = X_ATTRIBUTE2,
469     ATTRIBUTE3 = X_ATTRIBUTE3,
470     ATTRIBUTE4 = X_ATTRIBUTE4,
471     ATTRIBUTE5 = X_ATTRIBUTE5,
472     ATTRIBUTE6 = X_ATTRIBUTE6,
473     ATTRIBUTE7 = X_ATTRIBUTE7,
474     ATTRIBUTE8 = X_ATTRIBUTE8,
475     ATTRIBUTE9 = X_ATTRIBUTE9,
476     ATTRIBUTE10 = X_ATTRIBUTE10,
477     ATTRIBUTE11 = X_ATTRIBUTE11,
478     ATTRIBUTE12 = X_ATTRIBUTE12,
479     ATTRIBUTE13 = X_ATTRIBUTE13,
480     ATTRIBUTE14 = X_ATTRIBUTE14,
481     ATTRIBUTE15 = X_ATTRIBUTE15,
482     ATTRIBUTE16 = X_ATTRIBUTE16,
483     ATTRIBUTE17 = X_ATTRIBUTE17,
484     ATTRIBUTE18 = X_ATTRIBUTE18,
485     ATTRIBUTE19 = X_ATTRIBUTE19,
486     ATTRIBUTE20 = X_ATTRIBUTE20,
487     ATTRIBUTE21 = X_ATTRIBUTE21,
488     ATTRIBUTE22 = X_ATTRIBUTE22,
489     ATTRIBUTE23 = X_ATTRIBUTE23,
490     ATTRIBUTE24 = X_ATTRIBUTE24,
491     ATTRIBUTE25 = X_ATTRIBUTE25,
492     ATTRIBUTE26 = X_ATTRIBUTE26,
493     ATTRIBUTE27 = X_ATTRIBUTE27,
494     ATTRIBUTE28 = X_ATTRIBUTE28,
495     ATTRIBUTE29 = X_ATTRIBUTE29,
496     ATTRIBUTE30 = X_ATTRIBUTE30,
497     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
498     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
499     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
500   where SUBSTITUTION_ID = X_SUBSTITUTION_ID;
501 
502   if (sql%notfound) then
503     raise no_data_found;
504   end if;
505 
506   update GMD_ITEM_SUBSTITUTION_HDR_TL set
507     SUBSTITUTION_DESCRIPTION = X_SUBSTITUTION_DESCRIPTION,
508     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
509     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
510     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
511     SOURCE_LANG = userenv('LANG')
512   where SUBSTITUTION_ID = X_SUBSTITUTION_ID
513   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
514 
515   if (sql%notfound) then
516     raise no_data_found;
517   end if;
518 end UPDATE_ROW;
519 
520 procedure DELETE_ROW (
521   X_SUBSTITUTION_ID in NUMBER
522 ) is
523 begin
524   delete from GMD_ITEM_SUBSTITUTION_HDR_TL
525   where SUBSTITUTION_ID = X_SUBSTITUTION_ID;
526 
527   if (sql%notfound) then
528     raise no_data_found;
529   end if;
530 
531   delete from GMD_ITEM_SUBSTITUTION_HDR_B
532   where SUBSTITUTION_ID = X_SUBSTITUTION_ID;
533 
534   if (sql%notfound) then
535     raise no_data_found;
536   end if;
537 end DELETE_ROW;
538 
539 procedure ADD_LANGUAGE
540 is
541 begin
542   delete from GMD_ITEM_SUBSTITUTION_HDR_TL T
543   where not exists
544     (select NULL
545     from GMD_ITEM_SUBSTITUTION_HDR_B B
546     where B.SUBSTITUTION_ID = T.SUBSTITUTION_ID
547     );
548 
549   update GMD_ITEM_SUBSTITUTION_HDR_TL T set (
550       SUBSTITUTION_DESCRIPTION
551     ) = (select
552       B.SUBSTITUTION_DESCRIPTION
553     from GMD_ITEM_SUBSTITUTION_HDR_TL B
554     where B.SUBSTITUTION_ID = T.SUBSTITUTION_ID
555     and B.LANGUAGE = T.SOURCE_LANG)
556   where (
557       T.SUBSTITUTION_ID,
558       T.LANGUAGE
559   ) in (select
560       SUBT.SUBSTITUTION_ID,
561       SUBT.LANGUAGE
562     from GMD_ITEM_SUBSTITUTION_HDR_TL SUBB, GMD_ITEM_SUBSTITUTION_HDR_TL SUBT
563     where SUBB.SUBSTITUTION_ID = SUBT.SUBSTITUTION_ID
564     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
565     and (SUBB.SUBSTITUTION_DESCRIPTION <> SUBT.SUBSTITUTION_DESCRIPTION
566   ));
567 
568   insert into GMD_ITEM_SUBSTITUTION_HDR_TL (
569     LAST_UPDATE_LOGIN,
570     LAST_UPDATE_DATE,
571     LAST_UPDATED_BY,
572     CREATED_BY,
573     CREATION_DATE,
574     SUBSTITUTION_ID,
575     SUBSTITUTION_DESCRIPTION,
576     LANGUAGE,
577     SOURCE_LANG
578   ) select /*+ ORDERED */
579     B.LAST_UPDATE_LOGIN,
580     B.LAST_UPDATE_DATE,
581     B.LAST_UPDATED_BY,
582     B.CREATED_BY,
583     B.CREATION_DATE,
584     B.SUBSTITUTION_ID,
585     B.SUBSTITUTION_DESCRIPTION,
586     L.LANGUAGE_CODE,
587     B.SOURCE_LANG
588   from GMD_ITEM_SUBSTITUTION_HDR_TL B, FND_LANGUAGES L
589   where L.INSTALLED_FLAG in ('I', 'B')
590   and B.LANGUAGE = userenv('LANG')
591   and not exists
592     (select NULL
593     from GMD_ITEM_SUBSTITUTION_HDR_TL T
594     where T.SUBSTITUTION_ID = B.SUBSTITUTION_ID
595     and T.LANGUAGE = L.LANGUAGE_CODE);
596 end ADD_LANGUAGE;
597 
598 end GMD_ITEM_SUBSTITUTION_HDR_PKG;