DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_SAFETY_PHRASES_TL_PKG

Source


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