DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_FIELD_NAME_MASKS_TL_PKG

Source


1 PACKAGE BODY GR_FIELD_NAME_MASKS_TL_PKG AS
2 /*$Header: GRHIFMTB.pls 115.6 2003/08/05 18:05:50 gkelly noship $*/
3 
4 
5 
6 /* =====================================================================
7  PROOCEDURE:
8    Insert_Row
9 
10  DESCRIPTION:
11    This PL/SQL procedure is used to insert data into the table
12    GR_FIELD_NAME_MASKS_TL
13 
14  PARAMETERS:
15    p_commit            IN   VARCHAR2,
16    p_called_by_form    IN   VARCHAR2,
17    p_item_code         IN   VARCHAR2,
18    p_disclosure_code   IN   VARCHAR2,
19    p_label_code        IN   VARCHAR2,
20    p_language          IN   VARCHAR2,
21    p_field_name_mask   IN   VARCHAR2,
22    p_source_lang       IN   VARCHAR2,
23    p_created_by        IN   NUMBER,
24    p_creation_date     IN   DATE,
25    p_last_updated_by   IN   NUMBER,
26    p_last_update_date  IN   DATE,
27    p_last_update_login IN   NUMBER,
28    x_rowid             OUT  VARCHAR2,
29    x_return_status     OUT  VARCHAR2,
30    x_oracle_error      OUT  NUMBER,
31    x_msg_data          OUT  VARCHAR2
32 
33  HISTORY
34  ===================================================================== */
35 PROCEDURE Insert_Row
36 	   			 (p_commit IN VARCHAR2,
37 				  p_called_by_form IN VARCHAR2,
38 				  p_item_code IN VARCHAR2,
39 				  p_disclosure_code IN VARCHAR2,
40 				  p_label_code IN VARCHAR2,
41 				  p_language IN VARCHAR2,
42 				  p_field_name_mask IN VARCHAR2,
43 				  p_source_lang IN VARCHAR2,
44 				  p_created_by IN NUMBER,
45 				  p_creation_date IN DATE,
46 				  p_last_updated_by IN NUMBER,
47 				  p_last_update_date IN DATE,
48 				  p_last_update_login IN NUMBER,
49 				  x_rowid OUT NOCOPY VARCHAR2,
50 				  x_return_status OUT NOCOPY VARCHAR2,
51 				  x_oracle_error OUT NOCOPY NUMBER,
52 				  x_msg_data OUT NOCOPY VARCHAR2)
53 	IS
54 
55 /*   Alpha Variables */
56 
57 L_RETURN_STATUS VARCHAR2(1) := 'S';
58 L_KEY_EXISTS VARCHAR2(1);
59 L_MSG_DATA VARCHAR2(2000);
60 L_ROWID VARCHAR2(18);
61 
62 /*   Number Variables */
63 
64 L_ORACLE_ERROR	  NUMBER;
65 
66 /*   Exceptions */
67 
68 FOREIGN_KEY_ERROR EXCEPTION;
69 ITEM_EXISTS_ERROR EXCEPTION;
70 ROW_MISSING_ERROR EXCEPTION;
71 
72 /* Declare cursors */
73 
74 
75 BEGIN
76 /*     Initialization Routine */
77 
78    SAVEPOINT Insert_Row;
79    x_return_status := 'S';
80    x_oracle_error := 0;
81    x_msg_data := NULL;
82 
83 /*	  Now call the check foreign key procedure */
84 
85    Check_Foreign_Keys
86 	   ( p_item_code,
87 	    p_disclosure_code,
88 	    p_label_code,
89 	    p_language,
90 	    p_source_lang,
91 	    l_return_status,
92 	    l_oracle_error,
93 	    l_msg_data);
94 
95    IF l_return_status <> 'S' THEN
96       RAISE Foreign_Key_Error;
97    END IF;
98 
99 /* 	   Now check the primary key doesn't already exist */
100 
101    Check_Primary_Key
102     	 ( p_item_code,
103 	  p_disclosure_code,
104 	  p_label_code,
105     	  p_language,
106 	  'F',
107 	  l_rowid,
108 	  l_key_exists);
109 
110    IF FND_API.To_Boolean(l_key_exists) THEN
111    	  RAISE Item_Exists_Error;
112    END IF;
113 
114    INSERT INTO gr_item_field_name_masks_tl
115   	     (item_code,
116               disclosure_code,
117 	      label_code,
118 	      language,
119 	      field_name_mask,
120   	      source_lang,
121 	      created_by,
122 	      creation_date,
123 	      last_updated_by,
124 	      last_update_date,
125 	      last_update_login)
126           VALUES
127 	     (p_item_code,
128 	      p_disclosure_code,
129 	      p_label_code,
130 	      p_language,
131 	      p_field_name_mask,
132 	      p_source_lang,
133               p_created_by,
134               p_creation_date,
135               p_last_updated_by,
136               p_last_update_date,
137               p_last_update_login);
138 
139 /*   Now get the row id of the inserted record */
140 
141    Check_Primary_Key
142    		 (p_item_code,
143 		  p_disclosure_code,
144 		  p_label_code,
145    		  p_language,
146 		  'F',
147 		  l_rowid,
148 		  l_key_exists);
149 
150    IF FND_API.To_Boolean(l_key_exists) THEN
151       x_rowid := l_rowid;
152    ELSE
153       RAISE Row_Missing_Error;
154    END IF;
155 
156 /*   Check the commit flag and if set, then commit the work. */
157 
158    IF FND_API.To_Boolean(p_commit) THEN
159       COMMIT WORK;
160    END IF;
161 
162 EXCEPTION
163 
164    WHEN Foreign_Key_Error THEN
165       ROLLBACK TO SAVEPOINT Insert_Row;
166       x_return_status := l_return_status;
167       x_oracle_error := l_oracle_error;
168       FND_MESSAGE.SET_NAME('GR',
169                            'GR_FOREIGN_KEY_ERROR');
170       FND_MESSAGE.SET_TOKEN('TEXT',
171     		     		    l_msg_data,
172             			    FALSE);
173       IF FND_API.To_Boolean(p_called_by_form) THEN
174          APP_EXCEPTION.Raise_Exception;
175 	  ELSE
176          x_msg_data := FND_MESSAGE.Get;
177       END IF;
178 
179    WHEN Item_Exists_Error THEN
180       ROLLBACK TO SAVEPOINT Insert_Row;
181       x_return_status := 'E';
182       x_oracle_error := APP_EXCEPTION.Get_Code;
183       FND_MESSAGE.SET_NAME('GR',
184                            'GR_RECORD_EXISTS');
185       FND_MESSAGE.SET_TOKEN('CODE',
186          		     p_item_code,
187             		     FALSE);
188       IF FND_API.To_Boolean(p_called_by_form) THEN
189          APP_EXCEPTION.Raise_Exception;
190       ELSE
191          x_msg_data := FND_MESSAGE.Get;
192       END IF;
193 
194    WHEN Row_Missing_Error THEN
195       ROLLBACK TO SAVEPOINT Insert_Row;
196       x_return_status := 'E';
197       x_oracle_error := APP_EXCEPTION.Get_Code;
198       FND_MESSAGE.SET_NAME('GR',
199                            'GR_NO_RECORD_INSERTED');
200       FND_MESSAGE.SET_TOKEN('CODE',
201          		     p_item_code,
202             		     FALSE);
203       x_msg_data := FND_MESSAGE.Get;
204       IF FND_API.To_Boolean(p_called_by_form) THEN
205 	 	 APP_EXCEPTION.Raise_Exception;
206       ELSE
207          x_msg_data := FND_MESSAGE.Get;
208 	  END IF;
209 
210    WHEN OTHERS THEN
211       ROLLBACK TO SAVEPOINT Insert_Row;
212       x_return_status := 'U';
213       x_oracle_error := SQLCODE;
214       l_msg_data := SUBSTR(SQLERRM, 1, 200);
215 	  FND_MESSAGE.SET_NAME('GR',
216 	                       'GR_UNEXPECTED_ERROR');
217 	  FND_MESSAGE.SET_TOKEN('TEXT',
218 	                        l_msg_data,
219 	                        FALSE);
220       IF FND_API.To_Boolean(p_called_by_form) THEN
221 	     APP_EXCEPTION.Raise_Exception;
222 	  ELSE
223          x_msg_data := FND_MESSAGE.Get;
224 	  END IF;
225 
226 END Insert_Row;
227 
228 
229 /* =====================================================================
230  PROOCEDURE:
231    Update_Row
232 
233  DESCRIPTION:
234    This PL/SQL procedure is used to update data in the table
235    GR_FIELD_NAME_MASKS_TL
236 
237  PARAMETERS:
238    p_commit            IN   VARCHAR2,
239    p_called_by_form    IN   VARCHAR2,
240    p_rowid             IN   VARCHAR2,
241    pitem_code          IN   VARCHAR2,
242    pdisclosure_code    IN   VARCHAR2,
243    p_label_code        IN   VARCHAR2,
244    p_language          IN   VARCHAR2,
245    p_field_name_mask   IN   VARCHAR2,
246    p_source_lang       IN   VARCHAR2,
247    p_created_by        IN   NUMBER,
248    p_creation_date     IN   DATE,
249    p_last_updated_by   IN   NUMBER,
250    p_last_update_date  IN   DATE,
251    p_last_update_login IN   NUMBER,
252    x_return_status     OUT  VARCHAR2,
253    x_oracle_error      OUT  NUMBER,
254    x_msg_data          OUT  VARCHAR2
255 
256  HISTORY
257  ===================================================================== */
258 PROCEDURE Update_Row
259 	   			 (p_commit IN VARCHAR2,
260 				  p_called_by_form IN VARCHAR2,
261 				  p_rowid IN VARCHAR2,
262 				  p_item_code IN VARCHAR2,
263 				  p_disclosure_code IN VARCHAR2,
264 				  p_label_code IN VARCHAR2,
265 				  p_language IN VARCHAR2,
266 				  p_field_name_mask IN VARCHAR2,
267 				  p_source_lang IN VARCHAR2,
268 				  p_created_by IN NUMBER,
269 				  p_creation_date IN DATE,
270 				  p_last_updated_by IN NUMBER,
271 				  p_last_update_date IN DATE,
272 				  p_last_update_login IN NUMBER,
273 				  x_return_status OUT NOCOPY VARCHAR2,
274 				  x_oracle_error OUT NOCOPY NUMBER,
275 				  x_msg_data OUT NOCOPY VARCHAR2)
276  IS
277 
278 /*   Alpha Variables */
279 
280 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
281 L_MSG_DATA		  VARCHAR2(2000);
282 
283 /*   Number Variables */
284 
285 L_ORACLE_ERROR	  NUMBER;
286 
287 /*   Exceptions */
288 
289 FOREIGN_KEY_ERROR EXCEPTION;
290 ROW_MISSING_ERROR EXCEPTION;
291 
292 BEGIN
293 
294 /*       Initialization Routine */
295 
296    SAVEPOINT Update_Row;
297    x_return_status := 'S';
298    x_oracle_error := 0;
299    x_msg_data := NULL;
300 
301 /*	  Now call the check foreign key procedure */
302 
303    Check_Foreign_Keys
304 	   ( p_item_code,
305 	     p_disclosure_code,
306    	     p_label_code,
307 	    p_language,
308 	    p_source_lang,
309 		l_return_status,
310 		l_oracle_error,
311 		l_msg_data);
312 
313    IF l_return_status <> 'S' THEN
314       RAISE Foreign_Key_Error;
315    ELSE
316        UPDATE	gr_item_field_name_masks_tl
317 	  SET	item_code = p_item_code,
318 	        disclosure_code  = p_disclosure_code,
319 	        label_code  = p_label_code,
320 	        language  = p_language,
321 	        field_name_mask = p_field_name_mask,
322 	        source_lang = p_source_lang,
323 		created_by = p_created_by,
324 		creation_date = p_creation_date,
325 		last_updated_by	= p_last_updated_by,
326 		last_update_date = p_last_update_date,
327 		last_update_login = p_last_update_login
328 	 WHERE	rowid = p_rowid;
329 
330       IF SQL%NOTFOUND THEN
331 	     RAISE Row_Missing_Error;
332 	  END IF;
333    END IF;
334 
335 /* 	Check if do the commit */
336 
337    IF FND_API.To_Boolean(p_commit) THEN
338       COMMIT WORK;
339    END IF;
340 
341 EXCEPTION
342 
343    WHEN Foreign_Key_Error THEN
344       ROLLBACK TO SAVEPOINT Update_Row;
345       x_return_status := l_return_status;
346       x_oracle_error := l_oracle_error;
347       FND_MESSAGE.SET_NAME('GR',
348                            'GR_FOREIGN_KEY_ERROR');
349       FND_MESSAGE.SET_TOKEN('TEXT',
350     		     		    l_msg_data,
351             			    FALSE);
352       IF FND_API.To_Boolean(p_called_by_form) THEN
353          APP_EXCEPTION.Raise_Exception;
354 	  ELSE
355          x_msg_data := FND_MESSAGE.Get;
356 	  END IF;
357 
358    WHEN Row_Missing_Error THEN
359       ROLLBACK TO SAVEPOINT Update_Row;
360       x_return_status := 'E';
361       x_oracle_error := APP_EXCEPTION.Get_Code;
362       FND_MESSAGE.SET_NAME('GR',
363                            'GR_NO_RECORD_INSERTED');
364       FND_MESSAGE.SET_TOKEN('CODE',
365          		    		p_item_code,
366             		    	FALSE);
367       IF FND_API.To_Boolean(p_called_by_form) THEN
368 	 	 APP_EXCEPTION.Raise_Exception;
369 	  ELSE
370          x_msg_data := FND_MESSAGE.Get;
371       END IF;
372 
373    WHEN OTHERS THEN
374       ROLLBACK TO SAVEPOINT Update_Row;
375       x_return_status := 'U';
376       x_oracle_error := SQLCODE;
377       l_msg_data := SUBSTR(SQLERRM, 1, 200);
378 	  FND_MESSAGE.SET_NAME('GR',
379 	                       'GR_UNEXPECTED_ERROR');
380 	  FND_MESSAGE.SET_TOKEN('TEXT',
381 	                        l_msg_data,
382 	                        FALSE);
383       IF FND_API.To_Boolean(p_called_by_form) THEN
384 	     APP_EXCEPTION.Raise_Exception;
385 	  ELSE
386          x_msg_data := FND_MESSAGE.Get;
387 	  END IF;
388 
389 END Update_Row;
390 
391 
392 /* =====================================================================
393  PROOCEDURE:
394    Add_Language
395 
396  DESCRIPTION:
397    This PL/SQL procedure is used to add a record to the table
398    GR_FIELD_NAME_MASKS_TL for every installed language
399 
400  PARAMETERS:
401    p_commit            IN   VARCHAR2,
402    p_called_by_form    IN   VARCHAR2,
403    p_rowid             IN   VARCHAR2,
404    p_item_code         IN   VARCHAR2,
405    p_disclosure_code   IN   VARCHAR2,
406    p_label_code        IN   VARCHAR2,
407    p_language          IN   VARCHAR2,
408    x_return_status     OUT  VARCHAR2,
412  HISTORY
409    x_oracle_error      OUT  NUMBER,
410    x_msg_data          OUT  VARCHAR2
411 
413  ===================================================================== */
414 PROCEDURE Add_Language
415              (p_commit IN VARCHAR2,
416               p_called_by_form IN VARCHAR2,
417               p_item_code IN VARCHAR2,
418 		      p_disclosure_code IN VARCHAR2,
419 		      p_label_code IN VARCHAR2,
420 		      p_language IN VARCHAR2,
421 		      x_return_status OUT NOCOPY VARCHAR2,
422 		      x_oracle_error OUT NOCOPY NUMBER,
423 		      x_msg_data OUT NOCOPY VARCHAR2)
424  IS
425 
426 /*   Alpha Variables */
427 
428 L_RETURN_STATUS	  	VARCHAR2(1) := 'S';
429 L_MSG_DATA		  	VARCHAR2(2000);
430 L_MSG_TOKEN		  	VARCHAR2(30);
431 L_BASE_DESC			VARCHAR2(240);
432 L_LANGUAGE		  	VARCHAR2(4);
433 L_CREATION_DATE	 	DATE;
434 L_LAST_UPDATE_DATE	DATE;
435 
436 /*   Number Variables */
437 
438 L_ORACLE_ERROR	  	NUMBER;
439 L_CREATED_BY		NUMBER;
440 L_LAST_UPDATED_BY	NUMBER;
441 L_LAST_UPDATE_LOGIN	NUMBER;
442 
443 /*	Exceptions */
444 
445 LANGUAGE_MISSING_ERROR	EXCEPTION;
446 
447 /*   Cursors */
448 
449 CURSOR c_get_descs
450  IS
451    SELECT	eit.field_name_mask,
452                 eit.created_by,
453 		eit.creation_date,
454 		eit.last_updated_by,
455 		eit.last_update_date,
456 		eit.last_update_login
457    FROM	        gr_item_field_name_masks_tl eit
458    WHERE	eit.item_code = p_item_code
459    AND  	eit.disclosure_code = p_disclosure_code
460    AND  	eit.label_code = p_label_code
461    AND		eit.language = l_language;
462 TypeDesc				c_get_descs%ROWTYPE;
463 
464 CURSOR c_get_installed_languages
465  IS
466    SELECT	lng.language_code
467    FROM	 	fnd_languages lng
468    WHERE	lng.installed_flag IN ('I', 'B');
469 InstLang				c_get_installed_languages%ROWTYPE;
470 
471 BEGIN
472 
473 /*	Initialization Routine */
474 
475    SAVEPOINT Add_Language;
476    x_return_status := 'S';
477    x_oracle_error := 0;
478    x_msg_data := NULL;
479    l_msg_token := p_item_code || ' ' || p_disclosure_code || ' ' || p_label_code || ' ' || p_language;
480 
481 /* Remove translations with no base row */
482 
483   delete from GR_ITEM_FIELD_NAME_MASKS_TL T
484   where not exists
485     (select NULL
486     from GR_ITEM_FIELD_NAME_MASKS_B B
487     where B.ITEM_CODE = T.ITEM_CODE
488     and   B.DISCLOSURE_CODE = T.DISCLOSURE_CODE
489     and   B.LABEL_CODE = T.LABEL_CODE
490     );
491 
492 /* Redefault translations from the source language  */
493 
494     Update gr_item_field_name_masks_tl t set (
495     field_name_mask ) =
496     ( select
497       b.field_name_mask
498       from gr_item_field_name_masks_tl b
499       where b.item_code = t.item_code
500       and   b.disclosure_code = t.disclosure_code
501       and   b.label_code = t.label_code
502       and   b.language = t.source_lang)
503     where (
504           t.item_code,
505           t.disclosure_code,
506           t.label_code,
507           t.language
508     ) in (select
509           subt.item_code,
510           subt.disclosure_code,
511           subt.label_code,
512           subt.language
513           from gr_item_field_name_masks_tl subb, gr_item_field_name_masks_tl subt
514           where  subb.item_code = subt.item_code
515           and    subb.disclosure_code = subt.disclosure_code
516           and    subb.label_code = subt.label_code
517           and    subb.language = subt.source_lang
518           and (subb.field_name_mask <> subt.field_name_mask
519            or (subb.field_name_mask is null and subt.field_name_mask is not null)
520            or (subb.field_name_mask is not null and subt.field_name_mask is null)));
521 /*	Open the language cursor and get the description entered from the
522 **	user environment variable.
523 */
524    l_language := p_language;
525    OPEN c_get_descs;
526    FETCH c_get_descs INTO TypeDesc;
527    IF c_get_descs%NOTFOUND THEN
528       CLOSE c_get_descs;
529       RAISE Language_Missing_Error;
530    ELSE
531           l_base_desc := TypeDesc.field_name_mask;
532 	  l_created_by := TypeDesc.created_by;
533 	  l_creation_date := TypeDesc.creation_date;
534 	  l_last_updated_by := TypeDesc.last_updated_by;
535 	  l_last_update_date := TypeDesc.last_update_date;
536 	  l_last_update_login := TypeDesc.last_update_login;
537       CLOSE c_get_descs;
538    END IF;
539 
540 /*	Read fnd_languages for the installed and base languages.
541 **	For those that are found, read the types tl table.
542 **	If there isn't a record in the table for that language then
543 **	insert it and go on to the next.
544 */
545    OPEN c_get_installed_languages;
546    FETCH c_get_installed_languages INTO InstLang;
547    IF c_get_installed_languages%FOUND THEN
548       WHILE c_get_installed_languages%FOUND LOOP
549 	     IF InstLang.language_code <> p_language THEN
550 		    l_language := InstLang.language_code;
551 			OPEN c_get_descs;
552 			FETCH c_get_descs INTO TypeDesc;
553 			IF c_get_descs%NOTFOUND THEN
557 						 disclosure_code,
554 			   CLOSE c_get_descs;
555 			   INSERT INTO gr_item_field_name_masks_tl
556 						(item_code,
558 						 label_code,
559 						 language,
560 						 field_name_mask,
561 						 source_lang,
562 						 created_by,
563 						 creation_date,
564 						 last_updated_by,
565 						 last_update_date,
566 						 last_update_login)
567 				   VALUES
568 				        (p_item_code,
569 						 p_disclosure_code,
570 						 p_label_code,
571 						 l_language,
572 						 l_base_desc,
573 						 p_language,
574 						 l_created_by,
575 						 l_creation_date,
576 						 l_last_updated_by,
577 						 l_last_update_date,
578 						 l_last_update_login);
579 			ELSE
580 			   CLOSE c_get_descs;
581 			END IF;
582 		 END IF;
583 		 FETCH c_get_installed_languages INTO InstLang;
584 	  END LOOP;
585    END IF;
586    CLOSE c_get_installed_languages;
587 
588    IF FND_API.To_Boolean(p_commit) THEN
589       COMMIT WORK;
590    END IF;
591 
592 EXCEPTION
593 
594    WHEN Language_Missing_Error THEN
595       ROLLBACK TO SAVEPOINT Add_Language;
596 	  x_return_status := 'E';
597 	  x_oracle_error := APP_EXCEPTION.Get_Code;
598 	  FND_MESSAGE.SET_NAME('GR',
599 	                       'GR_RECORD_NOT_FOUND');
600 	  FND_MESSAGE.SET_TOKEN('CODE',
601 	                        l_msg_token,
602 	                        FALSE);
603       IF FND_API.To_Boolean(p_called_by_form) THEN
604 	     APP_EXCEPTION.Raise_Exception;
605 	  ELSE
606          x_msg_data := FND_MESSAGE.Get;
607 	  END IF;
608 
609    WHEN OTHERS THEN
610       ROLLBACK TO SAVEPOINT Add_Language;
611 	  x_return_status := 'U';
612 	  x_oracle_error := SQLCODE;
613 
614 	  FND_MESSAGE.SET_NAME('GR',
615 	                       'GR_UNEXPECTED_ERROR');
616 	  FND_MESSAGE.SET_TOKEN('TEXT',
617 	                        l_msg_token||SQLERRM,
618 	                        FALSE);
619       IF FND_API.To_Boolean(p_called_by_form) THEN
620 	     APP_EXCEPTION.Raise_Exception;
621 	  ELSE
622          x_msg_data := FND_MESSAGE.Get;
623 	  END IF;
624 
625 END Add_Language;
626 
627 
628 /* =====================================================================
629  PROOCEDURE:
630    Lock_Row
631 
632  DESCRIPTION:
633    This PL/SQL procedure is used to lock a row in the table
634    GR_FIELD_NAME_MASKS_TL
635 
636  PARAMETERS:
637    p_commit            IN   VARCHAR2,
638    p_called_by_form    IN   VARCHAR2,
639    p_rowid             IN   VARCHAR2,
640    p_item_code         IN   VARCHAR2,
641    p_disclosure_code   IN   VARCHAR2,
642    p_label_code        IN   VARCHAR2,
643    p_language          IN   VARCHAR2,
644    p_field_name_mask   IN   VARCHAR2,
645    p_source_lang       IN   VARCHAR2,
646    p_created_by        IN   NUMBER,
647    p_creation_date     IN   DATE,
648    p_last_updated_by   IN   NUMBER,
649    p_last_update_date  IN   DATE,
650    p_last_update_login IN   NUMBER,
651    x_return_status     OUT  VARCHAR2,
652    x_oracle_error      OUT  NUMBER,
653    x_msg_data          OUT  VARCHAR2
654 
655  HISTORY
656  ===================================================================== */
657 PROCEDURE Lock_Row
658 	   			 (p_commit IN VARCHAR2,
659 				  p_called_by_form IN VARCHAR2,
660 				  p_rowid IN VARCHAR2,
661 				  p_item_code IN VARCHAR2,
662 				  p_disclosure_code IN VARCHAR2,
663 				  p_label_code IN VARCHAR2,
664 				  p_language IN VARCHAR2,
665 				  p_field_name_mask IN VARCHAR2,
666 				  p_source_lang IN VARCHAR2,
667 				  p_created_by IN NUMBER,
668 				  p_creation_date IN DATE,
669 				  p_last_updated_by IN NUMBER,
670 				  p_last_update_date IN DATE,
671 				  p_last_update_login IN NUMBER,
672 				  x_return_status OUT NOCOPY VARCHAR2,
673 				  x_oracle_error OUT NOCOPY NUMBER,
674 				  x_msg_data OUT NOCOPY VARCHAR2)
675  IS
676 
677 /*  Alpha Variables */
678 
679 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
680 L_MSG_DATA		  VARCHAR2(2000);
681 
682 /*  Number Variables */
683 
684 L_ORACLE_ERROR	  NUMBER;
685 
686 /*   Exceptions */
687 
688 NO_DATA_FOUND_ERROR 		EXCEPTION;
689 RECORD_CHANGED_ERROR	 	EXCEPTION;
690 
691 
692 /*   Define the cursors */
693 
694 CURSOR c_lock_ein_number
695  IS
696    SELECT	last_update_date
697    FROM		gr_item_field_name_masks_tl
698    WHERE	rowid = p_rowid
699    FOR UPDATE NOWAIT;
700 LockEinRcd	  c_lock_ein_number%ROWTYPE;
701 BEGIN
702 
703 /*      Initialization Routine */
704 
705    SAVEPOINT Lock_Row;
706    x_return_status := 'S';
707    x_oracle_error := 0;
708    x_msg_data := NULL;
709 
710 /*	   Now lock the record */
711 
712    OPEN c_lock_ein_number;
713    FETCH c_lock_ein_number INTO LockEinRcd;
714    IF c_lock_ein_number%NOTFOUND THEN
715 	  CLOSE c_lock_ein_number;
716 	  RAISE No_Data_Found_Error;
717    END IF;
718    CLOSE c_lock_ein_number;
719 
723 
720    IF LockEinRcd.last_update_date <> p_last_update_date THEN
721      RAISE RECORD_CHANGED_ERROR;
722    END IF;
724    IF FND_API.To_Boolean(p_commit) THEN
725       COMMIT WORK;
726    END IF;
727 
728 EXCEPTION
729 
730    WHEN No_Data_Found_Error THEN
731       ROLLBACK TO SAVEPOINT Lock_Row;
732 	  x_return_status := 'E';
733 	  FND_MESSAGE.SET_NAME('GR',
734 	                       'GR_RECORD_NOT_FOUND');
735 	  FND_MESSAGE.SET_TOKEN('CODE',
736 	                        p_item_code,
737 							FALSE);
738       IF FND_API.To_Boolean(p_called_by_form) THEN
739 	     APP_EXCEPTION.Raise_Exception;
740 	  ELSE
741          x_msg_data := FND_MESSAGE.Get;
742 	  END IF;
743    WHEN RECORD_CHANGED_ERROR THEN
744      ROLLBACK TO SAVEPOINT Lock_Row;
745      X_return_status := 'E';
746      FND_MESSAGE.SET_NAME('FND',
747 	                  'FORM_RECORD_CHANGED');
748      IF FND_API.To_Boolean(p_called_by_form) THEN
749        APP_EXCEPTION.Raise_Exception;
750      ELSE
751        x_msg_data := FND_MESSAGE.Get;
752      END IF;
753    WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
754       ROLLBACK TO SAVEPOINT Lock_Row;
755 	  x_return_status := 'L';
756 	  x_oracle_error := APP_EXCEPTION.Get_Code;
757           IF NOT (FND_API.To_Boolean(p_called_by_form)) THEN
758             FND_MESSAGE.SET_NAME('GR',
759 	                       'GR_ROW_IS_LOCKED');
760             x_msg_data := FND_MESSAGE.Get;
761           END IF;
762    WHEN OTHERS THEN
763       ROLLBACK TO SAVEPOINT Lock_Row;
764 	  x_return_status := 'U';
765 	  x_oracle_error := SQLCODE;
766 	  l_msg_data := SUBSTR(SQLERRM, 1, 200);
767 	  FND_MESSAGE.SET_NAME('GR',
768 	                       'GR_UNEXPECTED_ERROR');
769 	  FND_MESSAGE.SET_TOKEN('TEXT',
770 	                        l_msg_data,
771 	                        FALSE);
772       IF FND_API.To_Boolean(p_called_by_form) THEN
773 	     APP_EXCEPTION.Raise_Exception;
774 	  ELSE
775          x_msg_data := FND_MESSAGE.Get;
776 	  END IF;
777 
778 END Lock_Row;
779 
780 
781 /* =====================================================================
782  PROOCEDURE:
783    Delete_Row
784 
785  DESCRIPTION:
786    This PL/SQL procedure is used to delete a row in the table
787    GR_FIELD_NAME_MASKS_TL
788 
789  PARAMETERS:
790    p_commit            IN   VARCHAR2,
791    p_called_by_form    IN   VARCHAR2,
792    p_rowid             IN   VARCHAR2,
793    p_item_code         IN   VARCHAR2,
794    p_disclosure_code   IN   VARCHAR2,
795    p_label_code        IN   VARCHAR2,
796    x_return_status     OUT  VARCHAR2,
797    x_oracle_error      OUT  NUMBER,
798    x_msg_data          OUT  VARCHAR2
799 
800  HISTORY
801  ===================================================================== */
802 PROCEDURE Delete_Row
803 	   			 (p_commit IN VARCHAR2,
804 				  p_called_by_form IN VARCHAR2,
805 				  p_rowid IN VARCHAR2,
806 				  p_item_code IN VARCHAR2,
807 				  p_disclosure_code IN VARCHAR2,
808 				  p_label_code IN VARCHAR2,
809 				  p_language IN VARCHAR2,
810 				  x_return_status OUT NOCOPY VARCHAR2,
811 				  x_oracle_error OUT NOCOPY NUMBER,
812 				  x_msg_data OUT NOCOPY VARCHAR2)
813  IS
814 /*   Alpha Variables */
815 
816 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
817 L_MSG_DATA		  VARCHAR2(2000);
818 L_MSG_TOKEN		  VARCHAR2(100);
819 L_CALLED_BY_FORM          VARCHAR2(1);
820 
821 /*   Number Variables */
822 
823 L_ORACLE_ERROR	  NUMBER;
824 
825 /*   Exceptions */
826 
827 CHECK_INTEGRITY_ERROR     EXCEPTION;
828 ROW_MISSING_ERROR	  EXCEPTION;
829 PRAGMA EXCEPTION_INIT(Row_Missing_Error,100);
830 
831 BEGIN
832 
833 /*   Initialization Routine */
834 
835    SAVEPOINT Delete_Row;
836    x_return_status := 'S';
837    x_oracle_error := 0;
838    x_msg_data := NULL;
839    l_msg_token := p_item_code || ' ' || p_disclosure_code || ' ' || p_label_code || ' '|| p_language;
840 
841    DELETE FROM gr_item_field_name_masks_tl
842    WHERE  	   rowid = p_rowid;
843 
844 /*   Check the commit flag and if set, then commit the work. */
845 
846    IF FND_API.TO_Boolean(p_commit) THEN
847       COMMIT WORK;
848    END IF;
849 
850 EXCEPTION
851 
852    WHEN Row_Missing_Error THEN
853       ROLLBACK TO SAVEPOINT Delete_Row;
854 	  x_return_status := 'E';
855 	  x_oracle_error := APP_EXCEPTION.Get_Code;
856       FND_MESSAGE.SET_NAME('GR',
857                            'GR_RECORD_NOT_FOUND');
858       FND_MESSAGE.SET_TOKEN('CODE',
859          		            p_item_code,
860             			    FALSE);
861       IF FND_API.To_Boolean(p_called_by_form) THEN
862 	     APP_EXCEPTION.Raise_Exception;
863 	  ELSE
864          x_msg_data := FND_MESSAGE.Get;
865 	  END IF;
866 
867    WHEN OTHERS THEN
868       ROLLBACK TO SAVEPOINT Delete_Row;
869 	  x_return_status := 'U';
870 	  x_oracle_error := SQLCODE;
871 	  l_msg_data := SUBSTR(SQLERRM, 1, 200);
872 	  FND_MESSAGE.SET_NAME('GR',
873 	                       'GR_UNEXPECTED_ERROR');
877       IF FND_API.To_Boolean(p_called_by_form) THEN
874 	  FND_MESSAGE.SET_TOKEN('TEXT',
875 	                        l_msg_data,
876 	                        FALSE);
878 	     APP_EXCEPTION.Raise_Exception;
879 	  ELSE
880              x_msg_data := FND_MESSAGE.Get;
881 	  END IF;
882 
883 END Delete_Row;
884 
885 /* =====================================================================
886  PROOCEDURE:
887    Delete_Rows
888 
889  DESCRIPTION:
890    This PL/SQL procedure is used to delete all of the rows in the table
891    GR_FIELD_NAME_MASKS_TL for the given item_code
892 
893  PARAMETERS:
894    p_commit            IN   VARCHAR2,
895    p_called_by_form    IN   VARCHAR2,
896    p_item_code         IN   VARCHAR2,
897    p_disclosure_code   IN   VARCHAR2,
898    p_label_code        IN   VARCHAR2,
899    x_return_status     OUT  VARCHAR2,
900    x_oracle_error      OUT  NUMBER,
901    x_msg_data          OUT  VARCHAR2
902 
903  HISTORY
904  ===================================================================== */
905 PROCEDURE Delete_Rows
906 	             (p_commit IN VARCHAR2,
907 				  p_called_by_form IN VARCHAR2,
908 				  p_item_code IN VARCHAR2,
909 				  p_disclosure_code IN VARCHAR2,
910 				  p_label_code IN VARCHAR2,
911 				  x_return_status OUT NOCOPY VARCHAR2,
912 				  x_oracle_error OUT NOCOPY NUMBER,
913 				  x_msg_data OUT NOCOPY VARCHAR2)
914   IS
915 
916 /*   Alpha Variables */
917 
918 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
919 L_MSG_DATA		  VARCHAR2(2000);
920 L_MSG_TOKEN       VARCHAR2(30);
921 
922 /*   Number Variables */
923 
924 L_ORACLE_ERROR	  NUMBER;
925 
926 /*   Define the cursors */
927 
928 BEGIN
929 
930 /*   Initialization Routine */
931 
932    SAVEPOINT Delete_Rows;
933    x_return_status := 'S';
934    x_oracle_error := 0;
935    x_msg_data := NULL;
936    l_msg_token := p_item_code;
937 
938    DELETE FROM gr_item_field_name_masks_tl
939    WHERE       item_code = p_item_code;
940 
941    IF FND_API.To_Boolean(p_commit) THEN
942       COMMIT WORK;
943    END IF;
944 
945 EXCEPTION
946 
947    WHEN OTHERS THEN
948       ROLLBACK TO SAVEPOINT Delete_Rows;
949 	  x_return_status := 'U';
950 	  x_oracle_error := SQLCODE;
951 	  l_msg_data := SUBSTR(SQLERRM, 1, 200);
952 	  FND_MESSAGE.SET_NAME('GR',
953 	                       'GR_UNEXPECTED_ERROR');
954 	  FND_MESSAGE.SET_TOKEN('TEXT',
955 	                        l_msg_token||SQLERRM,
956 	                        FALSE);
957 	  IF FND_API.To_Boolean(p_called_by_form) THEN
958 	     APP_EXCEPTION.Raise_Exception;
959 	  ELSE
960 	     x_msg_data := FND_MESSAGE.Get;
961 	  END IF;
962 
963 END Delete_Rows;
964 
965 
966 /* =====================================================================
967  PROOCEDURE:
968    Check_Foreign_Keys
969 
970  DESCRIPTION:
971    This PL/SQL procedure is used to check foreign key references from
972    GR_FIELD_NAME_MASKS_TL
973 
974  PARAMETERS:
975    p_item_code         IN   VARCHAR2,
976    p_disclosure_code   IN   VARCHAR2,
977    p_label_code        IN   VARCHAR2,
978    p_language          IN   VARCHAR2,
979    p_source_lang       IN   VARCHAR2,
980    x_return_status     OUT  VARCHAR2,
981    x_oracle_error      OUT  NUMBER,
982    x_msg_data          OUT  VARCHAR2
983 
984  HISTORY
985  ===================================================================== */
986 PROCEDURE Check_Foreign_Keys
987 	   			 (p_item_code IN VARCHAR2,
988 				  p_disclosure_code IN VARCHAR2,
989 				  p_label_code IN VARCHAR2,
990 	   			  p_language IN VARCHAR2,
991 	   			  p_source_lang IN VARCHAR2,
992 				  x_return_status OUT NOCOPY VARCHAR2,
993 				  x_oracle_error OUT NOCOPY NUMBER,
994 				  x_msg_data OUT NOCOPY VARCHAR2)
995    IS
996 
997 /*   Alpha Variables */
998 
999 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
1000 L_MSG_DATA		  VARCHAR2(2000);
1001 L_ROWID			  VARCHAR2(18);
1002 L_KEY_EXISTS	  VARCHAR2(1);
1003 L_MSG_TOKEN       VARCHAR2(30);
1004 L_LANGUAGE_CODE	  VARCHAR2(4);
1005 
1006 /*   Number Variables */
1007 
1008 L_ORACLE_ERROR	  NUMBER;
1009 
1010 /* Cursors   */
1011 CURSOR c_get_language
1012  IS
1013    SELECT 	lng.language_code
1014    FROM		fnd_languages lng
1015    WHERE	lng.language_code = l_language_code;
1016 LangRecord			c_get_language%ROWTYPE;
1017 
1018 BEGIN
1019 
1020 /*   Initialization Routine */
1021 
1022    SAVEPOINT Check_Foreign_Keys;
1023    x_return_status := 'S';
1024    x_oracle_error := 0;
1025    x_msg_data := NULL;
1026 
1027    l_msg_token := p_item_code || ' ' || p_disclosure_code || ' ' || p_label_code || ' ' || p_language;
1028 
1029 /*   Check the language codes */
1030 
1031    l_language_code := p_language;
1032    OPEN c_get_language;
1033    FETCH c_get_language INTO LangRecord;
1034    IF c_get_language%NOTFOUND THEN
1035 	  l_msg_token := l_language_code;
1036 	  x_return_status := 'E';
1040       FND_MESSAGE.SET_TOKEN('CODE',
1037 	  x_oracle_error := APP_EXCEPTION.Get_Code;
1038       FND_MESSAGE.SET_NAME('GR',
1039                            'GR_RECORD_NOT_FOUND');
1041          		            l_msg_token,
1042             			    FALSE);
1043 	  l_msg_data := FND_MESSAGE.Get;
1044    END IF;
1045    CLOSE c_get_language;
1046 
1047    l_language_code := p_source_lang;
1048    OPEN c_get_language;
1049    FETCH c_get_language INTO LangRecord;
1050    IF c_get_language%NOTFOUND THEN
1051 	  l_msg_token := l_language_code;
1052 	  x_return_status := 'E';
1053 	  x_oracle_error := APP_EXCEPTION.Get_Code;
1054       FND_MESSAGE.SET_NAME('GR',
1055                            'GR_RECORD_NOT_FOUND');
1056       FND_MESSAGE.SET_TOKEN('CODE',
1057          		            l_msg_token,
1058             			    FALSE);
1059 	  l_msg_data := FND_MESSAGE.Get;
1060    END IF;
1061    CLOSE c_get_language;
1062 
1063    IF x_return_status <> 'S' THEN
1064       x_msg_data := l_msg_data;
1065    END IF;
1066 
1067 
1068 EXCEPTION
1069 
1070    WHEN OTHERS THEN
1071       ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
1072 	  x_return_status := 'U';
1073 	  x_oracle_error := SQLCODE;
1074 	  l_msg_data := SUBSTR(SQLERRM, 1, 200);
1075 	  FND_MESSAGE.SET_NAME('GR',
1076 	                       'GR_UNEXPECTED_ERROR');
1077 	  FND_MESSAGE.SET_TOKEN('TEXT',
1078 	                        l_msg_data,
1079 	                        FALSE);
1080 	  x_msg_data := FND_MESSAGE.Get;
1081 
1082 END Check_Foreign_Keys;
1083 
1084 
1085 /* =====================================================================
1086  PROOCEDURE:
1087    Check_Primary_Key
1088 
1089  DESCRIPTION:
1090    This PL/SQL procedure is used to check if the record already exists in
1091    GR_FIELD_NAME_MASKS_TL
1092 
1093  PARAMETERS:
1094    p_item_code         IN   VARCHAR2   item code to check.
1095    p_disclosure_code   IN   VARCHAR2   disclosure code to check
1096    p_label_code        IN   VARCHAR2   label code to check
1097    p_language          IN   VARCHAR2   language to check
1098    p_called_by_form    IN   VARCHAR2   'T' if called by a form or 'F' if not
1099    x_row_id            OUT  VARCHAR2   row id of the record if found
1100    x_key_exists        OUT  VARCHAR2   'T' is the record is found, 'F' if not
1101 
1102  HISTORY
1103  ===================================================================== */
1104 PROCEDURE Check_Primary_Key
1105 			 (p_item_code IN VARCHAR2,
1106 			  p_disclosure_code IN VARCHAR2,
1107 			  p_label_code IN VARCHAR2,
1108 			  p_language IN VARCHAR2,
1109 			  p_called_by_form IN VARCHAR2,
1110                           x_rowid OUT NOCOPY VARCHAR2,
1111 			  x_key_exists OUT NOCOPY VARCHAR2)
1112  IS
1113 /*		Declare any variables and the cursor */
1114 
1115 L_MSG_DATA VARCHAR2(2000);
1116 
1117 CURSOR c_get_ein_rowid
1118  IS
1119    SELECT ein.rowid
1120    FROM	  gr_item_field_name_masks_tl ein
1121    WHERE  ein.item_code = p_item_code
1122    AND    ein.disclosure_code = p_disclosure_code
1123    AND    ein.label_code = p_label_code
1124    AND	  ein.language = p_language;
1125 EinRecord			   c_get_ein_rowid%ROWTYPE;
1126 
1127 BEGIN
1128 
1129    x_key_exists := 'F';
1130    OPEN c_get_ein_rowid;
1131    FETCH c_get_ein_rowid INTO EinRecord;
1132    IF c_get_ein_rowid%FOUND THEN
1133       x_key_exists := 'T';
1134       x_rowid := EinRecord.rowid;
1135    ELSE
1136       x_key_exists := 'F';
1137    END IF;
1138    CLOSE c_get_ein_rowid;
1139 
1140 EXCEPTION
1141 
1142    WHEN Others THEN
1143 	  l_msg_data := sqlerrm;
1144 	  FND_MESSAGE.SET_NAME('GR',
1145 	                       'GR_UNEXPECTED_ERROR');
1146 	  FND_MESSAGE.SET_TOKEN('TEXT',
1147 	                        l_msg_data,
1148 	                        FALSE);
1149       IF FND_API.To_Boolean(p_called_by_form) THEN
1150 	     APP_EXCEPTION.Raise_Exception;
1151 	  END IF;
1152 
1153 END Check_Primary_Key;
1154 
1155 
1156 /* =====================================================================
1157  PROOCEDURE:
1158    translate_row
1159 
1160  DESCRIPTION:
1161    This PL/SQL procedure is used to translate a row in
1162    GR_FIELD_NAME_MASKS_TL
1163 
1164  PARAMETERS:
1165    p_item_code         IN   VARCHAR2,
1166    p_disclosure_code   IN   VARCHAR2,
1167    p_label_code        IN   VARCHAR2,
1168    p_language          IN   VARCHAR2,
1169    p_field_name_mask   IN   VARCHAR2,
1170    p_source_lang       IN   VARCHAR2,
1171 
1172  HISTORY
1173  ===================================================================== */
1174 PROCEDURE translate_row (
1175 	X_ITEM_CODE IN VARCHAR2
1176 	,X_DISCLOSURE_CODE IN VARCHAR2
1177 	,X_LABEL_CODE IN VARCHAR2
1178 	,X_LANGUAGE IN VARCHAR2
1179 	,X_FIELD_NAME_MASK IN VARCHAR2
1180 	,X_SOURCE_LANG IN VARCHAR2
1181 ) IS
1182 BEGIN
1183 	UPDATE GR_ITEM_FIELD_NAME_MASKS_TL SET
1184 		FIELD_NAME_MASK = X_FIELD_NAME_MASK,
1185 		SOURCE_LANG = USERENV('LANG'),
1186 		LAST_UPDATE_DATE = sysdate,
1187 		LAST_UPDATED_BY = 0,
1188 		LAST_UPDATE_LOGIN = 0
1189 	WHERE (ITEM_CODE = X_ITEM_CODE)
1193 END TRANSLATE_ROW;
1190 	AND   (DISCLOSURE_CODE = X_DISCLOSURE_CODE)
1191 	AND   (LABEL_CODE = X_LABEL_CODE)
1192 	AND   (USERENV('LANG') IN (LANGUAGE, SOURCE_LANG));
1194 
1195 
1196 /* =====================================================================
1197  PROOCEDURE:
1198    load_row
1199 
1200  DESCRIPTION:
1201    This PL/SQL procedure is used to update or insert a row into
1202    GR_FIELD_NAME_MASKS_TL
1203 
1204  PARAMETERS:
1205    p_item_code         IN   VARCHAR2,
1206    p_disclosure_code   IN   VARCHAR2,
1207    p_label_code        IN   VARCHAR2,
1208    p_language          IN   VARCHAR2,
1209    p_field_name_mask   IN   VARCHAR2,
1210    p_source_lang       IN   VARCHAR2,
1211 
1212  HISTORY
1213  ===================================================================== */
1214 PROCEDURE load_row (
1215 	X_ITEM_CODE IN VARCHAR2
1216 	,X_DISCLOSURE_CODE IN VARCHAR2
1217 	,X_LABEL_CODE IN VARCHAR2
1218 	,X_LANGUAGE IN VARCHAR2
1219 	,X_FIELD_NAME_MASK IN VARCHAR2
1220 	,X_SOURCE_LANG IN VARCHAR2
1221 ) IS
1222 	CURSOR Cur_rowid IS
1223 		SELECT rowid
1224 		FROM GR_ITEM_FIELD_NAME_MASKS_TL
1225 		WHERE (ITEM_CODE = X_ITEM_CODE)
1226 		AND   (DISCLOSURE_CODE = X_DISCLOSURE_CODE)
1227 		AND   (LABEL_CODE = X_LABEL_CODE)
1228 		AND   (LANGUAGE = X_LANGUAGE);
1229 
1230 	l_user_id	NUMBER	DEFAULT 1;
1231 	l_row_id	VARCHAR2(64);
1232 	l_return_status	VARCHAR2(1);
1233 	l_oracle_error	NUMBER;
1234 	l_msg_data	VARCHAR2(2000);
1235 BEGIN
1236 	OPEN Cur_rowid;
1237 	FETCH Cur_rowid INTO l_row_id;
1238 	IF Cur_rowid%FOUND THEN
1239 		GR_FIELD_NAME_MASKS_TL_PKG.UPDATE_ROW(
1240 			P_COMMIT => 'T'
1241 			,P_CALLED_BY_FORM => 'F'
1242 			,P_ROWID => l_row_id
1243 			,P_ITEM_CODE => X_ITEM_CODE
1244 			,P_DISCLOSURE_CODE => X_DISCLOSURE_CODE
1245 			,P_LABEL_CODE => X_LABEL_CODE
1246 			,P_LANGUAGE => X_LANGUAGE
1247 			,P_FIELD_NAME_MASK => X_FIELD_NAME_MASK
1248 			,P_SOURCE_LANG => X_SOURCE_LANG
1249 			,P_CREATED_BY => l_user_id
1250 			,P_CREATION_DATE => sysdate
1251 			,P_LAST_UPDATED_BY => l_user_id
1252 			,P_LAST_UPDATE_DATE => sysdate
1253 			,P_LAST_UPDATE_LOGIN => 0
1254 			,X_RETURN_STATUS => l_return_status
1255 			,X_ORACLE_ERROR => l_oracle_error
1256 			,X_MSG_DATA => l_msg_data);
1257 	ELSE
1258 		GR_FIELD_NAME_MASKS_TL_PKG.INSERT_ROW(
1259 			P_COMMIT => 'T'
1260 			,P_CALLED_BY_FORM => 'F'
1261 			,P_ITEM_CODE => X_ITEM_CODE
1262 			,P_DISCLOSURE_CODE => X_DISCLOSURE_CODE
1263 			,P_LABEL_CODE => X_LABEL_CODE
1264 			,P_LANGUAGE => X_LANGUAGE
1265 			,P_FIELD_NAME_MASK => X_FIELD_NAME_MASK
1266 			,P_SOURCE_LANG => X_SOURCE_LANG
1267 			,P_CREATED_BY => l_user_id
1268 			,P_CREATION_DATE => sysdate
1269 			,P_LAST_UPDATED_BY => l_user_id
1270 			,P_LAST_UPDATE_DATE => sysdate
1271 			,P_LAST_UPDATE_LOGIN => 0
1272 			,X_ROWID => l_row_id
1273 			,X_RETURN_STATUS => l_return_status
1274 			,X_ORACLE_ERROR => l_oracle_error
1275 			,X_MSG_DATA => l_msg_data);
1276 	END IF;
1277 	CLOSE Cur_rowid;
1278 END LOAD_ROW;
1279 
1280 /* =====================================================================
1281  PROOCEDURE:
1282    New_Language
1283 
1284  DESCRIPTION:
1285    This PL/SQL procedure is used to add a new language
1286    GR_FIELD_NAME_MASKS_TL
1287 
1288 
1289  HISTORY
1290  04-Aug-2003 GK Bug 2961127 - Added in procedure new language for populating the tables.
1291  ===================================================================== */
1292 PROCEDURE NEW_LANGUAGE
1293 is
1294 begin
1295   DELETE FROM GR_ITEM_FIELD_NAME_MASKS_TL T
1296   WHERE not exists
1297     (SELECT NULL
1298     FROM GR_ITEM_FIELD_NAME_MASKS_B B
1299     WHERE B.ITEM_CODE = T.ITEM_CODE
1300     AND B.DISCLOSURE_CODE = T.DISCLOSURE_CODE
1301     AND B.LABEL_CODE = T.LABEL_CODE
1302     );
1303 
1304   UPDATE GR_ITEM_FIELD_NAME_MASKS_TL T SET (
1305       FIELD_NAME_MASK
1306     ) = (SELECT
1307       B.FIELD_NAME_MASK
1308     FROM GR_ITEM_FIELD_NAME_MASKS_TL B
1309     WHERE B.ITEM_CODE = T.ITEM_CODE
1310     AND B.LANGUAGE = T.SOURCE_LANG
1311     AND B.DISCLOSURE_CODE = T.DISCLOSURE_CODE
1312     AND B.LABEL_CODE = T.LABEL_CODE)
1313   WHERE (
1314       T.ITEM_CODE,
1315       T.LANGUAGE,
1316       T.DISCLOSURE_CODE,
1317       T.LABEL_CODE
1318   ) in (SELECT
1319       SUBT.ITEM_CODE,
1320       SUBT.LANGUAGE,
1321       SUBT.DISCLOSURE_CODE,
1322       SUBT.LABEL_CODE
1323     FROM GR_ITEM_FIELD_NAME_MASKS_TL SUBB, GR_ITEM_FIELD_NAME_MASKS_TL SUBT
1324     WHERE SUBB.ITEM_CODE = SUBT.ITEM_CODE
1325     AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
1326     AND SUBB.DISCLOSURE_CODE = SUBT.DISCLOSURE_CODE
1327     AND SUBB.LABEL_CODE = SUBT.LABEL_CODE
1328     AND (SUBB.FIELD_NAME_MASK <> SUBT.FIELD_NAME_MASK
1329   ));
1330 
1331   INSERT into GR_ITEM_FIELD_NAME_MASKS_TL (
1332     ITEM_CODE,
1333     DISCLOSURE_CODE,
1334     LABEL_CODE,
1335     FIELD_NAME_MASK,
1336     CREATED_BY,
1337     CREATION_DATE,
1338     LAST_UPDATED_BY,
1339     LAST_UPDATE_DATE,
1340     LAST_UPDATE_LOGIN,
1341     LANGUAGE,
1342     SOURCE_LANG
1343   ) SELECT
1344     B.ITEM_CODE,
1345     B.DISCLOSURE_CODE,
1346     B.LABEL_CODE,
1347     B.FIELD_NAME_MASK,
1348     B.CREATED_BY,
1349     B.CREATION_DATE,
1350     B.LAST_UPDATED_BY,
1351     B.LAST_UPDATE_DATE,
1352     B.LAST_UPDATE_LOGIN,
1353     L.LANGUAGE_CODE,
1354     B.SOURCE_LANG
1355   FROM GR_ITEM_FIELD_NAME_MASKS_TL B, FND_LANGUAGES L
1356   WHERE L.INSTALLED_FLAG in ('I', 'B')
1357   AND B.LANGUAGE = userenv('LANG')
1358   AND not exists
1359     (SELECT NULL
1360     FROM GR_ITEM_FIELD_NAME_MASKS_TL T
1361     WHERE T.ITEM_CODE = B.ITEM_CODE
1362     AND T.DISCLOSURE_CODE = B.DISCLOSURE_CODE
1363     AND T.LABEL_CODE = B.LABEL_CODE
1364     AND T.LANGUAGE = L.LANGUAGE_CODE);
1365 
1366 END NEW_LANGUAGE;
1367 
1368 
1369 END GR_FIELD_NAME_MASKS_TL_PKG;