69: --+==========================================================================+
70: -- Api end of comments
71: PROCEDURE Create_item
72: ( p_api_version IN NUMBER
73: , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
74: , p_commit IN VARCHAR2 :=FND_API.G_FALSE
75: , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
76: , p_item_rec IN item_rec_typ
77: , x_return_status OUT NOCOPY VARCHAR2
70: -- Api end of comments
71: PROCEDURE Create_item
72: ( p_api_version IN NUMBER
73: , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
74: , p_commit IN VARCHAR2 :=FND_API.G_FALSE
75: , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
76: , p_item_rec IN item_rec_typ
77: , x_return_status OUT NOCOPY VARCHAR2
78: , x_msg_count OUT NOCOPY NUMBER
71: PROCEDURE Create_item
72: ( p_api_version IN NUMBER
73: , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
74: , p_commit IN VARCHAR2 :=FND_API.G_FALSE
75: , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
76: , p_item_rec IN item_rec_typ
77: , x_return_status OUT NOCOPY VARCHAR2
78: , x_msg_count OUT NOCOPY NUMBER
79: , x_msg_data OUT NOCOPY VARCHAR2
106:
107: -- Standard Start OF API savepoint
108: SAVEPOINT Create_Item;
109: -- Standard call to check for call compatibility.
110: IF NOT FND_API.Compatible_API_CALL ( l_api_version
111: , p_api_version
112: , l_api_name
113: , G_PKG_NAME
114: )
112: , l_api_name
113: , G_PKG_NAME
114: )
115: THEN
116: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
117: END IF;
118: -- Initialize message list if p_int_msg_list is set TRUE.
119: IF FND_API.to_boolean(p_init_msg_list)
120: THEN
115: THEN
116: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
117: END IF;
118: -- Initialize message list if p_int_msg_list is set TRUE.
119: IF FND_API.to_boolean(p_init_msg_list)
120: THEN
121: FND_MSG_PUB.Initialize;
122: END IF;
123: -- Initialize API return status to sucess
120: THEN
121: FND_MSG_PUB.Initialize;
122: END IF;
123: -- Initialize API return status to sucess
124: x_return_status := FND_API.G_RET_STS_SUCCESS;
125:
126: -- Populate WHO columns
127: GMA_GLOBAL_GRP.Get_who( p_user_name => p_item_rec.user_name
128: , x_user_id => l_user_id
131: THEN
132: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_USER_NAME');
133: FND_MESSAGE.SET_TOKEN('USER_NAME',l_user_name);
134: FND_MSG_PUB.Add;
135: RAISE FND_API.G_EXC_ERROR;
136: END IF;
137:
138: -- Get required system constants
139: IC$DEFAULT_LOT := FND_PROFILE.Value_Specific( name => 'IC$DEFAULT_LOT'
143: THEN
144: FND_MESSAGE.SET_NAME('GMI','IC_API_UNABLE_TO_GET_CONSTANT');
145: FND_MESSAGE.SET_TOKEN('CONSTANT_NAME','IC$DEFAULT_LOT');
146: FND_MSG_PUB.Add;
147: RAISE FND_API.G_EXC_ERROR;
148: END IF;
149:
150:
151: l_qcitem_no := UPPER(p_item_rec.qcitem_no);
160:
161:
162: -- Perform Validation
163: GMI_ITEM_PUB.Validate_Item ( p_api_version => 2.0
164: , p_init_msg_list => FND_API.G_FALSE
165: , p_item_rec =>p_item_rec
166: , x_return_status =>l_return_status
167: , x_msg_count =>l_msg_count
168: , x_msg_data =>l_msg_data
168: , x_msg_data =>l_msg_data
169: );
170:
171: -- If errors were found then raise exception
172: IF (l_return_status = FND_API.G_RET_STS_ERROR)
173: THEN
174: RAISE FND_API.G_EXC_ERROR;
175: END IF;
176: -- If no errors were found then proceed with the item create
170:
171: -- If errors were found then raise exception
172: IF (l_return_status = FND_API.G_RET_STS_ERROR)
173: THEN
174: RAISE FND_API.G_EXC_ERROR;
175: END IF;
176: -- If no errors were found then proceed with the item create
177:
178: -- First get the surrogate key (item_id) for the item
181: THEN
182: FND_MESSAGE.SET_NAME('GMI','IC_API_UNABLE_TO_GET_SURROGATE');
183: FND_MESSAGE.SET_TOKEN('SKEY','item_id');
184: FND_MSG_PUB.Add;
185: RAISE FND_API.G_EXC_ERROR;
186: END IF;
187:
188: -- Get item_id of warehouse item and QC reference item if required
189: l_qcitem_id := GMI_VALID_GRP.Validate_item_existance(l_qcitem_no);
371: -- dbms_output.put_line('seq_dpnd_class '||'!'||UPPER(p_item_rec.seq_dpnd_class)||'!');
372: -- dbms_output.put_line('commodity_code '||'!'||p_item_rec.commodity_code||'!');
373: IF NOT GMI_ITEM_PVT.insert_ic_item_mst(l_ic_item_mst_rec)
374: THEN
375: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
376: END IF;
377:
378: -- Set up PL/SQL record and insert item into ic_item_cpg
379:
391: --processing time
392:
393: -- IF NOT GMI_ITEM_PVT.insert_ic_item_cpg(l_ic_item_cpg_rec)
394: -- THEN
395: -- RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
396: -- END IF;
397: --B1231196 End
398:
399: -- Set up PL/SQL record and call lot create API
416:
417: -- Call lot create API
418:
419: GMI_LOTS_PUB.create_lot ( p_api_version => 2.0
420: , p_commit => FND_API.G_FALSE
421: , p_init_msg_list => FND_API.G_FALSE
422: , x_return_status => l_return_status
423: , x_msg_count => l_msg_count
424: , x_msg_data => l_msg_data
417: -- Call lot create API
418:
419: GMI_LOTS_PUB.create_lot ( p_api_version => 2.0
420: , p_commit => FND_API.G_FALSE
421: , p_init_msg_list => FND_API.G_FALSE
422: , x_return_status => l_return_status
423: , x_msg_count => l_msg_count
424: , x_msg_data => l_msg_data
425: , p_lot_rec => l_lot_rec
425: , p_lot_rec => l_lot_rec
426: );
427:
428: -- If errors were found then raise exception
429: IF (l_return_status = FND_API.G_RET_STS_ERROR)
430: THEN
431: RAISE FND_API.G_EXC_ERROR;
432: ELSIF
433: l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
427:
428: -- If errors were found then raise exception
429: IF (l_return_status = FND_API.G_RET_STS_ERROR)
430: THEN
431: RAISE FND_API.G_EXC_ERROR;
432: ELSIF
433: l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
434: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435: END IF;
429: IF (l_return_status = FND_API.G_RET_STS_ERROR)
430: THEN
431: RAISE FND_API.G_EXC_ERROR;
432: ELSIF
433: l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
434: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435: END IF;
436:
437: -- END of API Body
430: THEN
431: RAISE FND_API.G_EXC_ERROR;
432: ELSIF
433: l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
434: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435: END IF;
436:
437: -- END of API Body
438:
436:
437: -- END of API Body
438:
439: -- Standard Check of p_commit.
440: IF FND_API.to_boolean(p_commit)
441: THEN
442: COMMIT WORK;
443: END IF;
444: -- Success message
452: , p_data => x_msg_data
453: );
454:
455: EXCEPTION
456: WHEN FND_API.G_EXC_ERROR THEN
457: ROLLBACK TO Create_Item;
458: x_return_status := FND_API.G_RET_STS_ERROR;
459: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
460: , p_data => x_msg_data
454:
455: EXCEPTION
456: WHEN FND_API.G_EXC_ERROR THEN
457: ROLLBACK TO Create_Item;
458: x_return_status := FND_API.G_RET_STS_ERROR;
459: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
460: , p_data => x_msg_data
461: );
462:
459: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
460: , p_data => x_msg_data
461: );
462:
463: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
464: ROLLBACK TO Create_Item;
465: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
466: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
467: , p_data => x_msg_data
461: );
462:
463: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
464: ROLLBACK TO Create_Item;
465: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
466: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
467: , p_data => x_msg_data
468: );
469: WHEN OTHERS THEN
467: , p_data => x_msg_data
468: );
469: WHEN OTHERS THEN
470: ROLLBACK TO Create_Item;
471: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
472: -- IF FND_MSG_PUB.check_msg_level
473: -- (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
474: -- THEN
475:
519: -- Api end of comments
520: PROCEDURE Validate_Item
521:
522: ( p_api_version IN NUMBER
523: , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
524: , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
525: , p_item_rec IN item_rec_typ
526: , x_return_status OUT NOCOPY VARCHAR2
527: , x_msg_count OUT NOCOPY NUMBER
520: PROCEDURE Validate_Item
521:
522: ( p_api_version IN NUMBER
523: , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
524: , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
525: , p_item_rec IN item_rec_typ
526: , x_return_status OUT NOCOPY VARCHAR2
527: , x_msg_count OUT NOCOPY NUMBER
528: , x_msg_data OUT NOCOPY VARCHAR2
551: BEGIN
552:
553:
554: -- Standard call to check for call compatibility.
555: IF NOT FND_API.Compatible_API_CALL ( l_api_version
556: , p_api_version
557: , l_api_name
558: , G_PKG_NAME
559: )
557: , l_api_name
558: , G_PKG_NAME
559: )
560: THEN
561: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
562: END IF;
563:
564: -- Initialize message list if p_int_msg_list is set TRUE.
565: IF FND_API.to_boolean(p_init_msg_list)
561: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
562: END IF;
563:
564: -- Initialize message list if p_int_msg_list is set TRUE.
565: IF FND_API.to_boolean(p_init_msg_list)
566:
567: THEN
568: FND_MSG_PUB.Initialize;
569: END IF;
567: THEN
568: FND_MSG_PUB.Initialize;
569: END IF;
570: -- Initialize API return status to sucess
571: x_return_status := FND_API.G_RET_STS_SUCCESS;
572:
573: -- Ensure Upper-case columns are converted
574:
575: l_item_no := UPPER(p_item_rec.item_no);
583: THEN
584: FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_ALREADY_EXISTS');
585: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
586: FND_MSG_PUB.Add;
587: RAISE FND_API.G_EXC_ERROR;
588: END IF;
589:
590: -- Check description
591: IF (p_item_rec.item_desc1 = ' ' OR p_item_rec.item_desc1 IS NULL)
593: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_ITEM_DESC1');
594:
595: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
596: FND_MSG_PUB.Add;
597: RAISE FND_API.G_EXC_ERROR;
598: END IF;
599:
600:
601: -- Primary Unit of Measure
604: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_UOM');
605: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
606: FND_MESSAGE.SET_TOKEN('UOM',l_item_um);
607: FND_MSG_PUB.Add;
608: RAISE FND_API.G_EXC_ERROR;
609: END IF;
610:
611: -- Dual unit of measure indicator
612: IF NOT GMI_VALID_GRP.Validate_dualum_ind(p_item_rec.dualum_ind)
613: THEN
614: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_DUALUM_IND');
615: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
616: FND_MSG_PUB.Add;
617: RAISE FND_API.G_EXC_ERROR;
618: END IF;
619:
620: -- Secondary Unit of Measure
621:
624: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_UOM');
625: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
626: FND_MESSAGE.SET_TOKEN('UOM',l_item_um2);
627: FND_MSG_PUB.Add;
628: RAISE FND_API.G_EXC_ERROR;
629: END IF;
630:
631: -- Deviation factor lo
632: IF NOT GMI_VALID_GRP.Validate_deviation ( p_item_rec.dualum_ind
636: THEN
637: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_DEVIATION');
638: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
639: FND_MSG_PUB.Add;
640: RAISE FND_API.G_EXC_ERROR;
641: END IF;
642:
643: -- Deviation factor hi
644: IF NOT GMI_VALID_GRP.Validate_deviation ( p_item_rec.dualum_ind
648: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_DEVIATION');
649:
650: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
651: FND_MSG_PUB.Add;
652: RAISE FND_API.G_EXC_ERROR;
653: END IF;
654:
655: -- lot control flag
656: IF NOT GMI_VALID_GRP.Validate_lot_ctl(p_item_rec.lot_ctl)
657: THEN
658: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_CTL');
659: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
660: FND_MSG_PUB.Add;
661: RAISE FND_API.G_EXC_ERROR;
662: END IF;
663:
664:
665: -- lot indivisible flag
669: THEN
670: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_INDIVISIBLE');
671: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
672: FND_MSG_PUB.Add;
673: RAISE FND_API.G_EXC_ERROR;
674: END IF;
675:
676: -- Sublot control flag
677:
681: THEN
682: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_SUBLOT_CTL');
683: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
684: FND_MSG_PUB.Add;
685: RAISE FND_API.G_EXC_ERROR;
686: END IF;
687:
688: -- Location control flag
689: IF NOT GMI_VALID_GRP.Validate_loct_ctl(p_item_rec.loct_ctl)
691:
692: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOCT_CTL');
693: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
694: FND_MSG_PUB.Add;
695: RAISE FND_API.G_EXC_ERROR;
696: END IF;
697:
698: -- Non-inventory flag
699: IF NOT GMI_VALID_GRP.Validate_noninv_ind ( p_item_rec.noninv_ind
703: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_NONINV_IND');
704: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
705:
706: FND_MSG_PUB.Add;
707: RAISE FND_API.G_EXC_ERROR;
708: END IF;
709:
710: -- Match type
711: -- IF NOT GMI_VALID_GRP.Validate_Type( 'MATCH_TYPE'
713: -- THEN
714: -- FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_MATCH_TYPE');
715: -- FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
716: --FND_MSG_PUB.Add;
717: -- RAISE FND_API.G_EXC_ERROR;
718: -- END IF;
719:
720:
721: -- Inactive indicator
723: THEN
724: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_INACTIVE_IND');
725: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
726: FND_MSG_PUB.Add;
727: RAISE FND_API.G_EXC_ERROR;
728: END IF;
729:
730: -- Inventory Type
731: IF (p_item_rec.inv_type <> ' ' AND p_item_rec.inv_type IS NOT NULL)
735: THEN
736: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_INV_TYPE');
737: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
738: FND_MSG_PUB.Add;
739: RAISE FND_API.G_EXC_ERROR;
740: END IF;
741: END IF;
742:
743: -- Shelf Life
748: THEN
749: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_SHELF_LIFE');
750: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
751: FND_MSG_PUB.Add;
752: RAISE FND_API.G_EXC_ERROR;
753: END IF;
754:
755: -- Retest Interval
756: IF NOT GMI_VALID_GRP.Validate_retest_interval ( p_item_rec.retest_interval
760: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_RETEST_INTERVAL');
761:
762: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
763: FND_MSG_PUB.Add;
764: RAISE FND_API.G_EXC_ERROR;
765: END IF;
766:
767: -- GL class
768:
773: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_GL_CLASS');
774: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
775:
776: FND_MSG_PUB.Add;
777: RAISE FND_API.G_EXC_ERROR;
778: END IF;
779: END IF;
780:
781: -- Inventory class
787: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_INV_CLASS');
788: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
789:
790: FND_MSG_PUB.Add;
791: RAISE FND_API.G_EXC_ERROR;
792: END IF;
793: END IF;
794:
795: -- Sales class
801: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_SALES_CLASS');
802: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
803:
804: FND_MSG_PUB.Add;
805: RAISE FND_API.G_EXC_ERROR;
806: END IF;
807: END IF;
808:
809: -- Ship class
815: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_SHIP_CLASS');
816: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
817:
818: FND_MSG_PUB.Add;
819: RAISE FND_API.G_EXC_ERROR;
820: END IF;
821: END IF;
822:
823: -- Freight class
829: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_FRT_CLASS');
830: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
831:
832: FND_MSG_PUB.Add;
833: RAISE FND_API.G_EXC_ERROR;
834: END IF;
835: END IF;
836:
837: -- Price class
843: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_PRICE_CLASS');
844: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
845:
846: FND_MSG_PUB.Add;
847: RAISE FND_API.G_EXC_ERROR;
848: END IF;
849: END IF;
850:
851: -- Storage class
857: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_STORAGE_CLASS');
858: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
859:
860: FND_MSG_PUB.Add;
861: RAISE FND_API.G_EXC_ERROR;
862: END IF;
863: END IF;
864:
865: -- Purchase class
871: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_PURCH_CLASS');
872: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
873:
874: FND_MSG_PUB.Add;
875: RAISE FND_API.G_EXC_ERROR;
876: END IF;
877: END IF;
878:
879: -- Tax class
885: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_TAX_CLASS');
886: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
887:
888: FND_MSG_PUB.Add;
889: RAISE FND_API.G_EXC_ERROR;
890: END IF;
891: END IF;
892:
893: -- Customs class
899: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_CUSTOMS_CLASS');
900: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
901:
902: FND_MSG_PUB.Add;
903: RAISE FND_API.G_EXC_ERROR;
904: END IF;
905: END IF;
906:
907: -- Allocation class
913: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_ALLOC_CLASS');
914: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
915:
916: FND_MSG_PUB.Add;
917: RAISE FND_API.G_EXC_ERROR;
918: END IF;
919: END IF;
920:
921: -- Planning class
928: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_PLANNING_CLASS');
929:
930: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
931: FND_MSG_PUB.Add;
932: RAISE FND_API.G_EXC_ERROR;
933: END IF;
934: END IF;
935:
936: -- item Cost class
942: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_ITEMCOST_CLASS');
943:
944: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
945: FND_MSG_PUB.Add;
946: RAISE FND_API.G_EXC_ERROR;
947: END IF;
948: END IF;
949:
950: -- Cost Method Code
956: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_COST_MTHD_CODE');
957:
958: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
959: FND_MSG_PUB.Add;
960: RAISE FND_API.G_EXC_ERROR;
961: END IF;
962: END IF;
963:
964: -- Grade control
969: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_GRADE_CTL');
970: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
971:
972: FND_MSG_PUB.Add;
973: RAISE FND_API.G_EXC_ERROR;
974: END IF;
975:
976: -- lot status control
977: IF NOT GMI_VALID_GRP.Validate_status_ctl ( p_item_rec.status_ctl
980: THEN
981: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_STATUS_CTL');
982: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
983: FND_MSG_PUB.Add;
984: RAISE FND_API.G_EXC_ERROR;
985:
986: END IF;
987:
988: -- QC Grade
1001: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_QC_GRADE');
1002: FND_MESSAGE.SET_TOKEN('QC_GRADE',p_item_rec.qc_grade);
1003: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1004: FND_MSG_PUB.Add;
1005: RAISE FND_API.G_EXC_ERROR;
1006: END IF;
1007:
1008:
1009: -- lot Status
1024: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_STATUS');
1025: FND_MESSAGE.SET_TOKEN('LOT_STATUS',p_item_rec.lot_status);
1026: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1027: FND_MSG_PUB.Add;
1028: RAISE FND_API.G_EXC_ERROR;
1029: END IF;
1030:
1031:
1032: -- QC reference item
1036: THEN
1037: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_QCITEM_NO');
1038: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1039: FND_MSG_PUB.Add;
1040: RAISE FND_API.G_EXC_ERROR;
1041: ELSIF (p_item_rec.qcitem_no <> ' ' AND p_item_rec.qcitem_no IS NOT NULL)
1042: THEN
1043: GMI_GLOBAL_GRP.Get_Item ( p_item_no => p_item_rec.qcitem_no
1044: , x_ic_item_mst => l_ic_item_mst_rec
1046: , x_ic_item_cpg => l_ic_item_cpg_rec
1047: );
1048: IF (l_ic_item_mst_rec.item_id < 0)
1049: THEN
1050: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1051: ELSIF (l_ic_item_mst_rec.item_id = 0) OR
1052: (l_ic_item_mst_rec.delete_mark = 1)
1053: THEN
1054: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_QCITEM_NO');
1053: THEN
1054: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_QCITEM_NO');
1055: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1056: FND_MSG_PUB.Add;
1057: RAISE FND_API.G_EXC_ERROR;
1058: ELSIF (l_ic_item_mst_rec.noninv_ind = 1)
1059:
1060: THEN
1061: FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
1060: THEN
1061: FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
1062: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1063: FND_MSG_PUB.Add;
1064: RAISE FND_API.G_EXC_ERROR;
1065: ELSIF (l_ic_item_mst_rec.inactive_ind = 1)
1066: THEN
1067: FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
1068: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1066: THEN
1067: FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
1068: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1069: FND_MSG_PUB.Add;
1070: RAISE FND_API.G_EXC_ERROR;
1071: END IF;
1072: END IF;
1073:
1074:
1077: -- p_item_rec.qc_grade) THEN
1078: -- FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_QCHOLD_RES_CODE');
1079: -- FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1080: -- FND_MSG_PUB.Add;
1081: -- RAISE FND_API.G_EXC_ERROR;
1082: -- END IF;
1083:
1084: -- Expiry Action Code
1085: IF (p_item_rec.expaction_code <> ' ' AND
1092: THEN
1093: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_EXPACTION_CODE');
1094: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1095: FND_MSG_PUB.Add;
1096: RAISE FND_API.G_EXC_ERROR;
1097: END IF;
1098: END IF;
1099:
1100: -- Expiry Action Interval
1107: THEN
1108: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_EXPACTION_CODE');
1109: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1110: FND_MSG_PUB.Add;
1111: RAISE FND_API.G_EXC_ERROR;
1112: END IF;
1113:
1114: -- Warehouse item no.
1115:
1121: , x_ic_item_cpg => l_ic_item_cpg_rec
1122: );
1123: IF (l_ic_item_mst_rec.item_id < 0)
1124: THEN
1125: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1126: ELSIF (l_ic_item_mst_rec.item_id = 0) OR
1127: (l_ic_item_mst_rec.delete_mark = 1)
1128: THEN
1129:
1129:
1130: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_WHSE_ITEM_NO');
1131: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1132: FND_MSG_PUB.Add;
1133: RAISE FND_API.G_EXC_ERROR;
1134: ELSIF (l_ic_item_mst_rec.noninv_ind = 1)
1135: THEN
1136: FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
1137: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1135: THEN
1136: FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
1137: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1138: FND_MSG_PUB.Add;
1139: RAISE FND_API.G_EXC_ERROR;
1140: ELSIF (l_ic_item_mst_rec.inactive_ind = 1)
1141: THEN
1142: FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
1143:
1142: FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
1143:
1144: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1145: FND_MSG_PUB.Add;
1146: RAISE FND_API.G_EXC_ERROR;
1147: END IF;
1148: END IF;
1149:
1150: -- Experimental Indicator
1152: THEN
1153: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_EXPERIMENTAL');
1154: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1155: FND_MSG_PUB.Add;
1156: RAISE FND_API.G_EXC_ERROR;
1157:
1158: END IF;
1159:
1160: -- Sequence Dependent class
1166: THEN
1167: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_SEQ_DPND_CLASS');
1168: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1169: FND_MSG_PUB.Add;
1170: RAISE FND_API.G_EXC_ERROR;
1171:
1172: END IF;
1173: END IF;
1174:
1178: THEN
1179: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_MATR_DAYS');
1180: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1181: FND_MSG_PUB.Add;
1182: RAISE FND_API.G_EXC_ERROR;
1183: END IF;
1184:
1185: -- Hold release days (CPG)
1186: IF (NOT GMI_VALID_GRP.Validate_ic_hold_days(p_item_rec.ic_hold_days) OR
1189:
1190: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_HOLD_DAYS');
1191: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_no);
1192: FND_MSG_PUB.Add;
1193: RAISE FND_API.G_EXC_ERROR;
1194: END IF;
1195:
1196: EXCEPTION
1197: WHEN FND_API.G_EXC_ERROR THEN
1193: RAISE FND_API.G_EXC_ERROR;
1194: END IF;
1195:
1196: EXCEPTION
1197: WHEN FND_API.G_EXC_ERROR THEN
1198: x_return_status := FND_API.G_RET_STS_ERROR;
1199: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1200: , p_data => x_msg_data
1201: );
1194: END IF;
1195:
1196: EXCEPTION
1197: WHEN FND_API.G_EXC_ERROR THEN
1198: x_return_status := FND_API.G_RET_STS_ERROR;
1199: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1200: , p_data => x_msg_data
1201: );
1202: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1198: x_return_status := FND_API.G_RET_STS_ERROR;
1199: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1200: , p_data => x_msg_data
1201: );
1202: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1203:
1204: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1205: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1206: , p_data => x_msg_data
1200: , p_data => x_msg_data
1201: );
1202: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1203:
1204: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1205: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1206: , p_data => x_msg_data
1207: );
1208: WHEN OTHERS THEN
1205: FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
1206: , p_data => x_msg_data
1207: );
1208: WHEN OTHERS THEN
1209: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1210: -- IF FND_MSG_PUB.check_msg_level
1211: -- (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1212: -- THEN
1213: