DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_ITEM_EXPLOSION_PROP_PKG

Source


1 PACKAGE BODY GR_ITEM_EXPLOSION_PROP_PKG AS
2 /*$Header: GRHIEPB.pls 120.0 2005/07/08 11:03:55 methomas noship $*/
3 PROCEDURE Insert_Row
4 	   			 (p_commit IN VARCHAR2,
5 				  p_called_by_form IN VARCHAR2,
6 				  p_ingredient_flag IN VARCHAR2,
7 				  p_explode_ingredient_flag IN VARCHAR2,
8 				  p_organization_id IN NUMBER,
9 				  p_inventory_item_id IN NUMBER,
10 				  p_actual_hazard IN NUMBER,
11 				  p_created_by IN NUMBER,
12 				  p_creation_date IN DATE,
13 				  p_last_updated_by IN NUMBER,
14 				  p_last_update_date IN DATE,
15 				  p_last_update_login IN NUMBER,
16 				  x_rowid OUT NOCOPY VARCHAR2,
17 				  x_return_status OUT NOCOPY VARCHAR2,
18 				  x_oracle_error OUT NOCOPY NUMBER,
19 				  x_msg_data OUT NOCOPY VARCHAR2)
20 	IS
21 /*   Alpha Variables */
22 
23 L_RETURN_STATUS VARCHAR2(1) := 'S';
24 L_KEY_EXISTS 	VARCHAR2(1);
25 L_MSG_DATA 		VARCHAR2(2000);
26 L_ROWID 		VARCHAR2(18);
27 
28 /*   Number Variables */
29 
30 L_ORACLE_ERROR	  NUMBER;
31 
32 /*   Exceptions */
33 
34 FOREIGN_KEY_ERROR EXCEPTION;
35 ITEM_EXISTS_ERROR EXCEPTION;
36 ROW_MISSING_ERROR EXCEPTION;
37 
38 /* Declare cursors */
39 
40 
41 BEGIN
42 
43 /*     Initialization Routine */
44 
45    SAVEPOINT Insert_Row;
46    x_return_status := 'S';
47    x_oracle_error := 0;
48    x_msg_data := NULL;
49 
50 /*	  Now call the check foreign key procedure */
51 
52    Check_Foreign_Keys
53 			         (p_ingredient_flag,
54 			          p_explode_ingredient_flag,
55 				  p_organization_id,
56 				  p_inventory_item_id,
57 				  p_actual_hazard,
58 				  l_return_status,
59 				  l_oracle_error,
60 				  l_msg_data);
61    IF l_return_status <> 'S' THEN
62       RAISE Foreign_Key_Error;
63    END IF;
64 
65 /* 	   Now check the primary key doesn't already exist */
66 
67    Check_Primary_Key
68    	   	   		 (p_organization_id,
69 				  p_inventory_item_id,
70 				  'F',
71 				  l_rowid,
72 				  l_key_exists);
73 
74    IF FND_API.To_Boolean(l_key_exists) THEN
75    	  RAISE Item_Exists_Error;
76    END IF;
77 
78    INSERT INTO gr_item_explosion_properties
79    		  	     (organization_id,
80 				  inventory_item_id,
81 				  ingredient_flag,
82 				  explode_ingredient_flag,
83 				  actual_hazard,
84 				  created_by,
85 				  creation_date,
86 				  last_updated_by,
87 				  last_update_date,
88 				  last_update_login)
89           VALUES
90 		         (p_organization_id,
91 				  p_inventory_item_id,
92 				  p_ingredient_flag,
93 				  p_explode_ingredient_flag,
94 				  p_actual_hazard,
95 				  p_created_by,
96 				  p_creation_date,
97 				  p_last_updated_by,
98 				  p_last_update_date,
99 				  p_last_update_login);
100 
101 /*   Now get the row id of the inserted record */
102 
103    Check_Primary_Key
104    	   	   		 (p_organization_id,
105 				  p_inventory_item_id,
106 				  'F',
107 				  l_rowid,
108 				  l_key_exists);
109 
110    IF FND_API.To_Boolean(l_key_exists) THEN
111    	  x_rowid := l_rowid;
112    ELSE
113    	  RAISE Row_Missing_Error;
114    END IF;
115 
116 /*   Check the commit flag and if set, then commit the work. */
117 
118    IF FND_API.To_Boolean(p_commit) THEN
119       COMMIT WORK;
120    END IF;
121 
122 EXCEPTION
123 
124    WHEN Foreign_Key_Error THEN
125       ROLLBACK TO SAVEPOINT Insert_Row;
126 	  x_return_status := l_return_status;
127 	  x_oracle_error := l_oracle_error;
128       FND_MESSAGE.SET_NAME('GR',
129                            'GR_FOREIGN_KEY_ERROR');
130       FND_MESSAGE.SET_TOKEN('TEXT',
131          		            l_msg_data,
132             			    FALSE);
133       IF FND_API.To_Boolean(p_called_by_form) THEN
134 	     APP_EXCEPTION.Raise_Exception;
135 	  ELSE
136          x_msg_data := FND_MESSAGE.Get;
137 	  END IF;
138 
139    WHEN Item_Exists_Error THEN
140       ROLLBACK TO SAVEPOINT Insert_Row;
141 	  x_return_status := 'E';
142 	  x_oracle_error := APP_EXCEPTION.Get_Code;
143       FND_MESSAGE.SET_NAME('GR',
144                            'GR_RECORD_EXISTS');
145       FND_MESSAGE.SET_TOKEN('CODE',
146          		            p_inventory_item_id,
147             			    FALSE);
148       IF FND_API.To_Boolean(p_called_by_form) THEN
149 	     APP_EXCEPTION.Raise_Exception;
150 	  ELSE
151          x_msg_data := FND_MESSAGE.Get;
152 	  END IF;
153 
154    WHEN Row_Missing_Error THEN
155       ROLLBACK TO SAVEPOINT Insert_Row;
156 	  x_return_status := 'E';
157 	  x_oracle_error := APP_EXCEPTION.Get_Code;
158       FND_MESSAGE.SET_NAME('GR',
159                            'GR_NO_RECORD_INSERTED');
160       FND_MESSAGE.SET_TOKEN('CODE',
161          		            p_inventory_item_id,
162             			    FALSE);
163       IF FND_API.To_Boolean(p_called_by_form) THEN
164 	     APP_EXCEPTION.Raise_Exception;
165 	  ELSE
166          x_msg_data := FND_MESSAGE.Get;
167 	  END IF;
168 
169    WHEN OTHERS THEN
170       ROLLBACK TO SAVEPOINT Insert_Row;
171 	  x_return_status := 'U';
172 	  x_oracle_error := APP_EXCEPTION.Get_Code;
173 	  l_msg_data := APP_EXCEPTION.Get_Text;
174 	  FND_MESSAGE.SET_NAME('GR',
175 	                       'GR_UNEXPECTED_ERROR');
176 	  FND_MESSAGE.SET_TOKEN('TEXT',
177 	                        l_msg_data,
178 	                        FALSE);
179       IF FND_API.To_Boolean(p_called_by_form) THEN
180 	     APP_EXCEPTION.Raise_Exception;
181 	  ELSE
182          x_msg_data := FND_MESSAGE.Get;
183 	  END IF;
184 
185 END Insert_Row;
186 
187 PROCEDURE Update_Row
188 	   			 (p_commit IN VARCHAR2,
189 				  p_called_by_form IN VARCHAR2,
190 				  p_rowid IN VARCHAR2,
191 				  p_ingredient_flag IN VARCHAR2,
192 				  p_explode_ingredient_flag IN VARCHAR2,
193 				  p_organization_id IN NUMBER,
194 				  p_inventory_item_id IN NUMBER,
195 				  p_actual_hazard IN NUMBER,
196 				  p_created_by IN NUMBER,
197 				  p_creation_date IN DATE,
198 				  p_last_updated_by IN NUMBER,
199 				  p_last_update_date IN DATE,
200 				  p_last_update_login IN NUMBER,
201 				  x_return_status OUT NOCOPY VARCHAR2,
202 				  x_oracle_error OUT NOCOPY NUMBER,
203 				  x_msg_data OUT NOCOPY VARCHAR2)
204    IS
205 
206 /*   Alpha Variables */
207 
208 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
209 L_MSG_DATA		  VARCHAR2(2000);
210 
211 /*   Number Variables */
212 
213 L_ORACLE_ERROR	  NUMBER;
214 
215 /*   Exceptions */
216 
217 FOREIGN_KEY_ERROR EXCEPTION;
218 ROW_MISSING_ERROR EXCEPTION;
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 
228 /*	  Now call the check foreign key procedure */
229 
230    Check_Foreign_Keys
231 			     (p_ingredient_flag,
232 				  p_explode_ingredient_flag,
233 				  p_organization_id,
234 				  p_inventory_item_id,
235 				  p_actual_hazard,
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_item_explosion_properties
244 	  SET	 organization_id                 = p_organization_id,
245 	         inventory_item_id 	 	 = p_inventory_item_id,
246 		 ingredient_flag		 = p_ingredient_flag,
247 		 explode_ingredient_flag	 = p_explode_ingredient_flag,
248 		 actual_hazard			 = p_actual_hazard,
249 		 created_by			 = p_created_by,
250 		 creation_date			 = p_creation_date,
251 		 last_updated_by		 = p_last_updated_by,
252 		 last_update_date		 = p_last_update_date,
253 		 last_update_login		 = p_last_update_login
254 	  WHERE  rowid = p_rowid;
255 	  IF SQL%NOTFOUND THEN
256 	     RAISE Row_Missing_Error;
257 	  END IF;
258    END IF;
259 
260 /*   Check the commit flag and if set, then commit the work. */
261 
262    IF FND_API.To_Boolean(p_commit) THEN
263       COMMIT WORK;
264    END IF;
265 
266 EXCEPTION
267 
268    WHEN Foreign_Key_Error THEN
269       ROLLBACK TO SAVEPOINT Update_Row;
270 	  x_return_status := l_return_status;
271 	  x_oracle_error := l_oracle_error;
272       FND_MESSAGE.SET_NAME('GR',
273                            'GR_FOREIGN_KEY_ERROR');
274       FND_MESSAGE.SET_TOKEN('TEXT',
275          		            l_msg_data,
276             			    FALSE);
277       IF FND_API.To_Boolean(p_called_by_form) THEN
278 	     APP_EXCEPTION.Raise_Exception;
279 	  ELSE
280          x_msg_data := FND_MESSAGE.Get;
281 	  END IF;
282 
283    WHEN Row_Missing_Error THEN
284       ROLLBACK TO SAVEPOINT Update_Row;
285 	  x_return_status := 'E';
286 	  x_oracle_error := APP_EXCEPTION.Get_Code;
287       FND_MESSAGE.SET_NAME('GR',
288                            'GR_NO_RECORD_INSERTED');
289       FND_MESSAGE.SET_TOKEN('CODE',
290          		            p_inventory_item_id,
291             			    FALSE);
292       IF FND_API.To_Boolean(p_called_by_form) THEN
293 	     APP_EXCEPTION.Raise_Exception;
294 	  ELSE
295          x_msg_data := FND_MESSAGE.Get;
296 	  END IF;
297 
298    WHEN OTHERS THEN
299       ROLLBACK TO SAVEPOINT Update_Row;
300 	  x_return_status := 'U';
301 	  x_oracle_error := APP_EXCEPTION.Get_Code;
302 	  l_msg_data := APP_EXCEPTION.Get_Text;
303 	  FND_MESSAGE.SET_NAME('GR',
304 	                       'GR_UNEXPECTED_ERROR');
305 	  FND_MESSAGE.SET_TOKEN('TEXT',
306 	                        l_msg_data,
307 	                        FALSE);
308       IF FND_API.To_Boolean(p_called_by_form) THEN
309 	     APP_EXCEPTION.Raise_Exception;
310 	  ELSE
311          x_msg_data := FND_MESSAGE.Get;
312 	  END IF;
313 
314 END Update_Row;
315 
316 PROCEDURE Lock_Row
317 	   			 (p_commit IN VARCHAR2,
318 				  p_called_by_form IN VARCHAR2,
319 				  p_rowid IN VARCHAR2,
320 				  p_ingredient_flag IN VARCHAR2,
321 				  p_explode_ingredient_flag IN VARCHAR2,
322 				  p_organization_id IN NUMBER,
323 				  p_inventory_item_id IN NUMBER,
324 				  p_actual_hazard IN NUMBER,
325 				  p_created_by IN NUMBER,
326 				  p_creation_date IN DATE,
327 				  p_last_updated_by IN NUMBER,
328 				  p_last_update_date IN DATE,
329 				  p_last_update_login IN NUMBER,
330 				  x_return_status OUT NOCOPY VARCHAR2,
331 				  x_oracle_error OUT NOCOPY NUMBER,
332 				  x_msg_data OUT NOCOPY VARCHAR2)
333    IS
334 
335 /*  Alpha Variables */
336 
337 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
338 L_MSG_DATA		  VARCHAR2(2000);
339 
340 /*  Number Variables */
341 
342 L_ORACLE_ERROR	  NUMBER;
343 
344 /*   Exceptions */
345 
346 NO_DATA_FOUND_ERROR 		EXCEPTION;
347 ROW_ALREADY_LOCKED_ERROR 	EXCEPTION;
348 PRAGMA EXCEPTION_INIT(ROW_ALREADY_LOCKED_ERROR,-54);
349 
350 /*   Define the cursors */
351 
352 CURSOR c_lock_item
353  IS
354    SELECT	*
355    FROM		gr_item_explosion_properties
356    WHERE	rowid = p_rowid
357    FOR UPDATE NOWAIT;
358 LockItemRcd	  c_lock_item%ROWTYPE;
359 BEGIN
360 
361 /*      Initialization Routine */
362 
363    SAVEPOINT Lock_Row;
364    x_return_status := 'S';
365    x_oracle_error := 0;
366    x_msg_data := NULL;
367 
368 /*	   Now lock the record */
369 
370    OPEN c_lock_item;
371    FETCH c_lock_item INTO LockItemRcd;
372    IF c_lock_item%NOTFOUND THEN
373 	  CLOSE c_lock_item;
374 	  RAISE No_Data_Found_Error;
375    END IF;
376    CLOSE c_lock_item;
377 
378    IF FND_API.To_Boolean(p_commit) THEN
379       COMMIT WORK;
380    END IF;
381 
382 EXCEPTION
383 
384    WHEN No_Data_Found_Error THEN
385       ROLLBACK TO SAVEPOINT Lock_Row;
386 	  x_return_status := 'E';
387 	  FND_MESSAGE.SET_NAME('GR',
388 	                       'GR_RECORD_NOT_FOUND');
389 	  FND_MESSAGE.SET_TOKEN('CODE',
390 	                        p_inventory_item_id,
391 							FALSE);
392       IF FND_API.To_Boolean(p_called_by_form) THEN
393 	     APP_EXCEPTION.Raise_Exception;
394 	  ELSE
395          x_msg_data := FND_MESSAGE.Get;
396 	  END IF;
397 
398    WHEN Row_Already_Locked_Error THEN
399       ROLLBACK TO SAVEPOINT Lock_Row;
400 	  x_return_status := 'E';
401 	  x_oracle_error := APP_EXCEPTION.Get_Code;
402 	  FND_MESSAGE.SET_NAME('GR',
403 	                       'GR_ROW_IS_LOCKED');
404       IF FND_API.To_Boolean(p_called_by_form) THEN
405 	     APP_EXCEPTION.Raise_Exception;
406 	  ELSE
407          x_msg_data := FND_MESSAGE.Get;
408 	  END IF;
409 
410    WHEN OTHERS THEN
411       ROLLBACK TO SAVEPOINT Lock_Row;
412 	  x_return_status := 'U';
413 	  x_oracle_error := APP_EXCEPTION.Get_Code;
414 	  l_msg_data := APP_EXCEPTION.Get_Text;
415 	  FND_MESSAGE.SET_NAME('GR',
416 	                       'GR_UNEXPECTED_ERROR');
417 	  FND_MESSAGE.SET_TOKEN('TEXT',
418 	                        l_msg_data,
419 	                        FALSE);
420       IF FND_API.To_Boolean(p_called_by_form) THEN
421 	     APP_EXCEPTION.Raise_Exception;
422 	  ELSE
423          x_msg_data := FND_MESSAGE.Get;
424 	  END IF;
425 
426 END Lock_Row;
427 
428 PROCEDURE Delete_Row
429 	   			 (p_commit IN VARCHAR2,
430 				  p_called_by_form IN VARCHAR2,
431 				  p_rowid IN VARCHAR2,
432 				  p_ingredient_flag IN VARCHAR2,
433 				  p_explode_ingredient_flag IN VARCHAR2,
434 				  p_organization_id IN NUMBER,
435 				  p_inventory_item_id IN NUMBER,
436 				  p_actual_hazard IN NUMBER,
440 				  p_last_update_date IN DATE,
437 				  p_created_by IN NUMBER,
438 				  p_creation_date IN DATE,
439 				  p_last_updated_by IN NUMBER,
441 				  p_last_update_login IN NUMBER,
442 				  x_return_status OUT NOCOPY VARCHAR2,
443 				  x_oracle_error OUT NOCOPY NUMBER,
444 				  x_msg_data OUT NOCOPY VARCHAR2)
445    IS
446 
447 /*   Alpha Variables */
448 
449 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
450 L_MSG_DATA		  VARCHAR2(2000);
451 L_CALLED_BY_FORM  VARCHAR2(1);
452 
453 /*   Number Variables */
454 
455 L_ORACLE_ERROR	  NUMBER;
456 
457 /*   Exceptions */
458 
459 CHECK_INTEGRITY_ERROR EXCEPTION;
460 ROW_MISSING_ERROR	  EXCEPTION;
461 PRAGMA EXCEPTION_INIT(Row_Missing_Error,100);
462 
463 BEGIN
464 
465 /*   Initialization Routine */
466 
467    SAVEPOINT Delete_Row;
468    x_return_status := 'S';
469    l_called_by_form := 'F';
470    x_oracle_error := 0;
471    x_msg_data := NULL;
472 
473 /*  Now call the check integrity procedure */
474 
475    Check_Integrity
476 			     (l_called_by_form,
477 				  p_ingredient_flag,
478 				  p_explode_ingredient_flag,
479 				  p_organization_id,
480 				  p_inventory_item_id,
481 				  p_actual_hazard,
482 				  l_return_status,
483 				  l_oracle_error,
484 				  l_msg_data);
485 
486    IF l_return_status <> 'S' THEN
487       RAISE Check_Integrity_Error;
488    END IF;
489 
490    DELETE FROM gr_item_general
491    WHERE  	   rowid = p_rowid;
492 
493 /*   Check the commit flag and if set, then commit the work. */
494 
495    IF FND_API.TO_Boolean(p_commit) THEN
496       COMMIT WORK;
497    END IF;
498 
499 EXCEPTION
500 
501    WHEN Check_Integrity_Error THEN
502       ROLLBACK TO SAVEPOINT Delete_Row;
503 	  x_return_status := l_return_status;
504 	  x_oracle_error := l_oracle_error;
505       IF FND_API.To_Boolean(p_called_by_form) THEN
506 	     APP_EXCEPTION.Raise_Exception;
507 	  ELSE
508          x_msg_data := FND_MESSAGE.Get;
509 	  END IF;
510 
511    WHEN Row_Missing_Error THEN
512       ROLLBACK TO SAVEPOINT Delete_Row;
513 	  x_return_status := 'E';
514 	  x_oracle_error := APP_EXCEPTION.Get_Code;
515       FND_MESSAGE.SET_NAME('GR',
516                            'GR_RECORD_NOT_FOUND');
517       FND_MESSAGE.SET_TOKEN('CODE',
518          		            p_inventory_item_id,
519             			    FALSE);
520       IF FND_API.To_Boolean(p_called_by_form) THEN
521 	     APP_EXCEPTION.Raise_Exception;
522 	  ELSE
523          x_msg_data := FND_MESSAGE.Get;
524 	  END IF;
525 
526    WHEN OTHERS THEN
527       ROLLBACK TO SAVEPOINT Delete_Row;
528 	  x_return_status := 'U';
529 	  x_oracle_error := APP_EXCEPTION.Get_Code;
530 	  l_msg_data := APP_EXCEPTION.Get_Text;
531 	  l_msg_data := APP_EXCEPTION.Get_Text;
532 	  FND_MESSAGE.SET_NAME('GR',
533 	                       'GR_UNEXPECTED_ERROR');
534 	  FND_MESSAGE.SET_TOKEN('TEXT',
535 	                        l_msg_data,
536 	                        FALSE);
537       IF FND_API.To_Boolean(p_called_by_form) THEN
538 	     APP_EXCEPTION.Raise_Exception;
539 	  ELSE
540          x_msg_data := FND_MESSAGE.Get;
541 	  END IF;
542 
543 END Delete_Row;
544 
545 PROCEDURE Check_Foreign_Keys
546 	   			 (p_ingredient_flag IN VARCHAR2,
547 				  p_explode_ingredient_flag IN VARCHAR2,
548 				  p_organization_id IN NUMBER,
549 				  p_inventory_item_id IN NUMBER,
550 				  p_actual_hazard IN NUMBER,
551 				  x_return_status OUT NOCOPY VARCHAR2,
552 				  x_oracle_error OUT NOCOPY NUMBER,
553 				  x_msg_data OUT NOCOPY VARCHAR2)
554    IS
555 
556 /*   Alpha Variables */
557 
558 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
559 L_MSG_DATA		  VARCHAR2(2000);
560 
561 /*   Number Variables */
562 
563 L_ORACLE_ERROR	  NUMBER;
564 
565 /*   Define the cursors */
566 
567 BEGIN
568 
569 /*   Initialization Routine */
570 
571    SAVEPOINT Check_Foreign_Keys;
572    x_return_status := 'S';
573    x_oracle_error := 0;
574    x_msg_data := NULL;
575 
576 EXCEPTION
577 
578    WHEN OTHERS THEN
579       ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
580 	  x_return_status := 'U';
581 	  x_oracle_error := APP_EXCEPTION.Get_Code;
582 	  l_msg_data := APP_EXCEPTION.Get_Text;
583 	  FND_MESSAGE.SET_NAME('GR',
584 	                       'GR_UNEXPECTED_ERROR');
585 	  FND_MESSAGE.SET_TOKEN('TEXT',
586 	                        l_msg_data,
587 	                        FALSE);
588 	  x_msg_data := FND_MESSAGE.Get;
589 
590 END Check_Foreign_Keys;
591 
592 PROCEDURE Check_Integrity
593 	   			 (p_called_by_form IN VARCHAR2,
594 				  p_ingredient_flag IN VARCHAR2,
595 				  p_explode_ingredient_flag IN VARCHAR2,
596 				  p_organization_id IN NUMBER,
597 				  p_inventory_item_id IN NUMBER,
598 				  p_actual_hazard IN NUMBER,
599 				  x_return_status OUT NOCOPY VARCHAR2,
600 				  x_oracle_error OUT NOCOPY NUMBER,
601 				  x_msg_data OUT NOCOPY VARCHAR2)
602    IS
603 
604 /*   Alpha Variables */
605 
606 L_RETURN_STATUS	  VARCHAR2(1) := 'S';
607 L_MSG_DATA		  VARCHAR2(2000);
608 L_CODE_BLOCK	  VARCHAR2(2000);
609 
610 /*   Number Variables */
611 
612 L_ORACLE_ERROR	  NUMBER;
613 L_RECORD_COUNT	  NUMBER;
614 
615 /*   Exceptions  */
616 INTEGRITY_ERROR 	EXCEPTION;
617 
618 /*	 Define the Cursors */
619 
620 /*   Item Properties */
621 
625    FROM	  gr_inv_item_properties ip
622 CURSOR c_get_item_properties
623  IS
624    SELECT COUNT(*)
626    WHERE  ip.organization_id   = p_organization_id
627    AND    ip.inventory_item_id = p_inventory_item_id;
628 
629 BEGIN
630 
631 /*     Initialization Routine */
632 
633    SAVEPOINT Check_Integrity;
634    x_return_status := 'S';
635    x_oracle_error := 0;
636    x_msg_data := NULL;
637 
638 /* 	Now read the cursors to make sure the item code isn't used. */
639 
640 /*   Item Properties */
641 
642    l_record_count := 0;
643    l_code_block := 'c_get_item_properties';
644    OPEN c_get_item_properties;
645    FETCH c_get_item_properties INTO l_record_count;
646    IF l_record_count <> 0 THEN
647       l_return_status := 'E';
648 	  l_msg_data := l_msg_data || 'gr_inv_item_properties, ';
649    END IF;
650    CLOSE c_get_item_properties;
651 
652 /*	 Now sort out the error messaging */
653 
654    IF l_return_status <> 'S' THEN
655      RAISE INTEGRITY_ERROR;
656    END IF;
657 
658 EXCEPTION
659 
660    WHEN INTEGRITY_ERROR THEN
661       x_return_status := 'E';
662       FND_MESSAGE.SET_NAME('GR',
663                            'GR_INTEGRITY_HEADER');
664       FND_MESSAGE.SET_TOKEN('CODE',
665 	                    p_inventory_item_id,
666 	                    FALSE);
667       FND_MESSAGE.SET_TOKEN('TABLES',
668 	                    SUBSTR(l_msg_data,1,LENGTH(l_msg_data)-1),
669 	                    FALSE);
670       IF FND_API.To_Boolean(p_called_by_form) THEN
671          APP_EXCEPTION.Raise_Exception;
672       ELSE
673         x_msg_data := FND_MESSAGE.Get;
674       END IF;
675    WHEN OTHERS THEN
676       ROLLBACK TO SAVEPOINT Check_Integrity;
677       x_return_status := 'U';
678       x_oracle_error := APP_EXCEPTION.Get_Code;
679       l_msg_data := APP_EXCEPTION.Get_Text;
680       FND_MESSAGE.SET_NAME('GR',
681                           'GR_UNEXPECTED_ERROR');
682       FND_MESSAGE.SET_TOKEN('TEXT',
683                             l_msg_data,
684                             FALSE);
685       IF FND_API.To_Boolean(p_called_by_form) THEN
686         APP_EXCEPTION.Raise_Exception;
687       ELSE
688         x_msg_data := FND_MESSAGE.Get;
689       END IF;
690 
691 END Check_Integrity;
692 
693 PROCEDURE Check_Primary_Key
694 /*		  p_inventory_item_id is the item code to check.
695 **		  p_called_by_form is 'T' if called by a form or 'F' if not.
696 **		  x_rowid is the row id of the record if found.
697 **		  x_key_exists is 'T' is the record is found, 'F' if not.
698 */
699 		  		 	(p_organization_id IN NUMBER,
700 				     p_inventory_item_id IN NUMBER,
701 					 p_called_by_form IN VARCHAR2,
702 					 x_rowid OUT NOCOPY VARCHAR2,
703 					 x_key_exists OUT NOCOPY VARCHAR2)
704   IS
705 /*	Alphanumeric variables	 */
706 
707 L_MSG_DATA VARCHAR2(80);
708 
709 /*		Declare any variables and the cursor */
710 
711 
712 CURSOR c_get_item_rowid
713  IS
714    SELECT ig.rowid
715    FROM	  gr_item_explosion_properties ig
716    WHERE  ig.organization_id   = p_organization_id
717    AND    ig.inventory_item_id = p_inventory_item_id;
718 ItemRecord			   c_get_item_rowid%ROWTYPE;
719 
720 BEGIN
721 
722    l_msg_data := p_inventory_item_id;
723    x_key_exists := 'F';
724 
725    OPEN c_get_item_rowid;
726    FETCH c_get_item_rowid INTO ItemRecord;
727    IF c_get_item_rowid%FOUND THEN
728       x_key_exists := 'T';
729 	  x_rowid := ItemRecord.rowid;
730    ELSE
731       x_key_exists := 'F';
732    END IF;
733    CLOSE c_get_item_rowid;
734 
735 EXCEPTION
736 
737 	WHEN Others THEN
738 	  l_msg_data := APP_EXCEPTION.Get_Text;
739 	  FND_MESSAGE.SET_NAME('GR',
740 	                       'GR_UNEXPECTED_ERROR');
741 	  FND_MESSAGE.SET_TOKEN('TEXT',
742 	                        l_msg_data,
743 	                        FALSE);
744       IF FND_API.To_Boolean(p_called_by_form) THEN
745 	     APP_EXCEPTION.Raise_Exception;
746 	  END IF;
747 
748 END Check_Primary_Key;
749 
750 END GR_ITEM_EXPLOSION_PROP_PKG;