10:
11: G_USER_ID NUMBER := FND_GLOBAL.User_Id;
12: G_LOGIN_ID NUMBER := FND_GLOBAL.Conc_Login_Id;
13:
14: G_Miss_Char VARCHAR2(1) := fnd_api.G_MISS_CHAR;
15: G_Miss_Num NUMBER := fnd_api.G_MISS_NUM;
16: G_Miss_Date DATE := fnd_api.G_MISS_DATE;
17:
18: G_Language_Code VARCHAR2(4);
11: G_USER_ID NUMBER := FND_GLOBAL.User_Id;
12: G_LOGIN_ID NUMBER := FND_GLOBAL.Conc_Login_Id;
13:
14: G_Miss_Char VARCHAR2(1) := fnd_api.G_MISS_CHAR;
15: G_Miss_Num NUMBER := fnd_api.G_MISS_NUM;
16: G_Miss_Date DATE := fnd_api.G_MISS_DATE;
17:
18: G_Language_Code VARCHAR2(4);
19: G_Revision_Id NUMBER;
12: G_LOGIN_ID NUMBER := FND_GLOBAL.Conc_Login_Id;
13:
14: G_Miss_Char VARCHAR2(1) := fnd_api.G_MISS_CHAR;
15: G_Miss_Num NUMBER := fnd_api.G_MISS_NUM;
16: G_Miss_Date DATE := fnd_api.G_MISS_DATE;
17:
18: G_Language_Code VARCHAR2(4);
19: G_Revision_Id NUMBER;
20: G_Object_Version_Number NUMBER;
213:
214: BEGIN
215:
216: -- Initialize API return status to success
217: x_return_status := FND_API.g_RET_STS_SUCCESS;
218:
219: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
220: RETURN;
221: END IF;
215:
216: -- Initialize API return status to success
217: x_return_status := FND_API.g_RET_STS_SUCCESS;
218:
219: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
220: RETURN;
221: END IF;
222:
223: v_count := 0;
260: )
261: THEN
262: -- inv_UTILITY_PVT.debug_message(' BAD DATE...... ');
263:
264: x_return_status := FND_API.g_RET_STS_ERROR;
265: Add_Message ('INV', 'INV_ITM_REV_OUT_EFF_DATE');
266:
267: END IF;
268:
273: -- -----------------------------------------------------
274:
275: IF ( p_Item_Revision_rec.effectivity_date > item_rev_rec.effectivity_date )
276: THEN
277: x_return_status := FND_API.g_RET_STS_ERROR;
278: Add_Message ('INV', 'INV_ITM_REV_OUT_EFF_DATE');
279: END IF;
280:
281: END IF; -- v_count > 1
311:
312: -- Effectivity Date must be past the date of the greatest revision
313:
314: IF ( p_Item_Revision_rec.effectivity_date <= v_effectivity_date ) THEN
315: x_return_status := FND_API.g_RET_STS_ERROR;
316: Add_Message ('INV', 'INV_ITM_REV_OUT_EFF_DATE');
317: END IF;
318:
319: ELSE
316: Add_Message ('INV', 'INV_ITM_REV_OUT_EFF_DATE');
317: END IF;
318:
319: ELSE
320: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
321: Add_Message ('INV', 'INV_ITM_INVALID_REVISION_CODE');
322: END IF;
323:
324: END IF; -- NOT rev_place_found AND v_count > 0
330: IF ( Item_Revs_cur%ISOPEN ) THEN
331: CLOSE Item_Revs_cur;
332: END IF;
333:
334: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
335:
336: Add_Message
337: ( p_api_name => l_api_name
338: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
537:
538: PROCEDURE Create_Item_Revision
539: (
540: p_api_version IN NUMBER
541: , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
542: , p_commit IN VARCHAR2 := FND_API.G_FALSE
543: , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
544: , p_process_control IN VARCHAR2 := NULL
545: , x_return_status OUT NOCOPY VARCHAR2
538: PROCEDURE Create_Item_Revision
539: (
540: p_api_version IN NUMBER
541: , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
542: , p_commit IN VARCHAR2 := FND_API.G_FALSE
543: , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
544: , p_process_control IN VARCHAR2 := NULL
545: , x_return_status OUT NOCOPY VARCHAR2
546: , x_msg_count OUT NOCOPY NUMBER
539: (
540: p_api_version IN NUMBER
541: , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
542: , p_commit IN VARCHAR2 := FND_API.G_FALSE
543: , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
544: , p_process_control IN VARCHAR2 := NULL
545: , x_return_status OUT NOCOPY VARCHAR2
546: , x_msg_count OUT NOCOPY NUMBER
547: , x_msg_data OUT NOCOPY VARCHAR2
586: l_sysdate := SYSDATE;
587: END IF;
588:
589: -- Check for call compatibility
590: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
591: l_api_name, G_PKG_NAME)
592: THEN
593: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
594: END IF;
589: -- Check for call compatibility
590: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
591: l_api_name, G_PKG_NAME)
592: THEN
593: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
594: END IF;
595:
596: -- Initialize message list
597: IF G_Message_API = 'FND' THEN
594: END IF;
595:
596: -- Initialize message list
597: IF G_Message_API = 'FND' THEN
598: IF FND_API.To_Boolean (p_init_msg_list) THEN
599: FND_MSG_PUB.Initialize;
600: END IF;
601: END IF;
602:
604: -- Mctx.Package_Name := G_PKG_NAME;
605: -- Mctx.Procedure_Name := l_api_name;
606:
607: -- Initialize API return status to success
608: x_return_status := FND_API.g_RET_STS_SUCCESS;
609:
610: -- Debug Message
611: -- AMS_UTILITY_PVT.debug_message('API: ' || l_api_name || ': start');
612:
615: -- ------------------------------------
616: -- Check for missing or NULL PK values
617: -- ------------------------------------
618:
619: IF ( p_Item_Revision_rec.inventory_item_id = fnd_api.G_MISS_NUM )
620: OR ( p_Item_Revision_rec.inventory_item_id IS NULL )
621: THEN
622: Add_Message ('INV', 'INV_ITM_MISS_ITEM_ID');
623: END IF;
621: THEN
622: Add_Message ('INV', 'INV_ITM_MISS_ITEM_ID');
623: END IF;
624:
625: IF ( p_Item_Revision_rec.organization_id = fnd_api.G_MISS_NUM )
626: OR ( p_Item_Revision_rec.organization_id IS NULL )
627: THEN
628: Add_Message ('INV', 'INV_ITM_MISS_ORG_ID');
629: END IF;
627: THEN
628: Add_Message ('INV', 'INV_ITM_MISS_ORG_ID');
629: END IF;
630:
631: IF ( p_Item_Revision_rec.revision = fnd_api.G_MISS_CHAR )
632: OR ( p_Item_Revision_rec.revision IS NULL )
633: THEN
634: Add_Message ('INV', 'INV_ITM_MISS_REVISION_CODE');
635: END IF;
633: THEN
634: Add_Message ('INV', 'INV_ITM_MISS_REVISION_CODE');
635: END IF;
636:
637: IF ( x_return_status <> fnd_api.G_RET_STS_SUCCESS ) THEN
638: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
639: END IF;
640:
641: -- ------------------------------------------------
634: Add_Message ('INV', 'INV_ITM_MISS_REVISION_CODE');
635: END IF;
636:
637: IF ( x_return_status <> fnd_api.G_RET_STS_SUCCESS ) THEN
638: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
639: END IF;
640:
641: -- ------------------------------------------------
642: -- Validate a part of Revision PK - foreign key to
654:
655: IF ( org_item_exists_cur%NOTFOUND ) THEN
656: CLOSE org_item_exists_cur;
657: Add_Message ('INV', 'INV_ITM_INVALID_ORGITEM_ID');
658: RAISE FND_API.g_EXC_ERROR;
659: END IF;
660:
661: CLOSE org_item_exists_cur;
662:
674:
675: IF ( Item_Revision_Exists_cur%FOUND ) THEN
676: CLOSE Item_Revision_Exists_cur;
677: Add_Message ('INV', 'INV_ITM_DUPLICATE_REVISION');
678: RAISE FND_API.g_EXC_ERROR;
679: END IF;
680:
681: CLOSE Item_Revision_Exists_cur;
682:
684: -- Description is a mandatory attribute for a new revision
685: -- Bug: 3055810 Description is Optional comparing with forms ui.
686: -- --------------------------------------------------------
687:
688: IF ( p_Item_Revision_rec.description = fnd_api.G_MISS_CHAR ) THEN
689:
690: p_Item_Revision_rec.description := NULL;
691: -- x_return_status := FND_API.g_RET_STS_ERROR;
692: -- Add_Message ('INV', 'INV_ITM_REV_MISS_DESCRIPTION');
687:
688: IF ( p_Item_Revision_rec.description = fnd_api.G_MISS_CHAR ) THEN
689:
690: p_Item_Revision_rec.description := NULL;
691: -- x_return_status := FND_API.g_RET_STS_ERROR;
692: -- Add_Message ('INV', 'INV_ITM_REV_MISS_DESCRIPTION');
693: END IF;
694: /* Bug:3055810
695: IF ( p_Item_Revision_rec.description IS NULL ) THEN
692: -- Add_Message ('INV', 'INV_ITM_REV_MISS_DESCRIPTION');
693: END IF;
694: /* Bug:3055810
695: IF ( p_Item_Revision_rec.description IS NULL ) THEN
696: x_return_status := FND_API.g_RET_STS_ERROR;
697: Add_Message ('INV', 'INV_ITM_REV_NULL_DESCRIPTION');
698: END IF;
699: */
700: -- -------------------------------------------------------------
700: -- -------------------------------------------------------------
701: -- Effectivity Date is a mandatory attribute for a new revision
702: -- -------------------------------------------------------------
703:
704: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
705: x_return_status := FND_API.g_RET_STS_ERROR;
706: Add_Message ('INV', 'INV_ITM_REV_MISS_EFF_DATE');
707: END IF;
708:
701: -- Effectivity Date is a mandatory attribute for a new revision
702: -- -------------------------------------------------------------
703:
704: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
705: x_return_status := FND_API.g_RET_STS_ERROR;
706: Add_Message ('INV', 'INV_ITM_REV_MISS_EFF_DATE');
707: END IF;
708:
709: -- New revision Effectivity Date value cannot be NULL
708:
709: -- New revision Effectivity Date value cannot be NULL
710:
711: IF ( p_Item_Revision_rec.effectivity_date IS NULL ) THEN
712: x_return_status := FND_API.g_RET_STS_ERROR;
713: Add_Message ('INV', 'INV_ITM_REV_NULL_EFF_DATE');
714: END IF;
715:
716: -- If the effectivity date is current date, then it is
727:
728: -- New revision Effectivity Date must be past the current date
729:
730: IF ( p_Item_Revision_rec.effectivity_date < l_sysdate ) THEN
731: x_return_status := FND_API.g_RET_STS_ERROR;
732: Add_Message ('INV', 'INV_ITM_REV_OLD_EFF_DATE');
733: END IF;
734: END IF;
735:
732: Add_Message ('INV', 'INV_ITM_REV_OLD_EFF_DATE');
733: END IF;
734: END IF;
735:
736: IF ( x_return_status <> FND_API.g_RET_STS_SUCCESS ) THEN
737: RAISE fnd_api.G_EXC_ERROR;
738: END IF;
739:
740: -- -----------------------------------------------------
733: END IF;
734: END IF;
735:
736: IF ( x_return_status <> FND_API.g_RET_STS_SUCCESS ) THEN
737: RAISE fnd_api.G_EXC_ERROR;
738: END IF;
739:
740: -- -----------------------------------------------------
741: -- Validate all the other Effectivity Date dependencies
748: p_Item_Revision_rec => p_Item_Revision_rec
749: , x_return_status => l_return_status
750: );
751:
752: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
753: RAISE fnd_api.G_EXC_ERROR;
754: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
755: RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
756: END IF;
749: , x_return_status => l_return_status
750: );
751:
752: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
753: RAISE fnd_api.G_EXC_ERROR;
754: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
755: RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
756: END IF;
757:
750: );
751:
752: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
753: RAISE fnd_api.G_EXC_ERROR;
754: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
755: RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
756: END IF;
757:
758: -- ---------------------------
751:
752: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
753: RAISE fnd_api.G_EXC_ERROR;
754: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
755: RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
756: END IF;
757:
758: -- ---------------------------
759: -- Default missing attributes
758: -- ---------------------------
759: -- Default missing attributes
760: -- ---------------------------
761:
762: IF ( p_Item_Revision_rec.change_notice = FND_API.g_MISS_CHAR ) THEN
763: p_Item_Revision_rec.change_notice := NULL;
764: END IF;
765:
766: IF ( p_Item_Revision_rec.ecn_initiation_date = FND_API.g_MISS_DATE ) THEN
762: IF ( p_Item_Revision_rec.change_notice = FND_API.g_MISS_CHAR ) THEN
763: p_Item_Revision_rec.change_notice := NULL;
764: END IF;
765:
766: IF ( p_Item_Revision_rec.ecn_initiation_date = FND_API.g_MISS_DATE ) THEN
767: p_Item_Revision_rec.ecn_initiation_date := NULL;
768: END IF;
769:
770: /*
767: p_Item_Revision_rec.ecn_initiation_date := NULL;
768: END IF;
769:
770: /*
771: IF ( p_Item_Revision_rec.implementation_date = FND_API.g_MISS_DATE ) OR
772: p_Item_Revision_rec.implementation_date IS NULL THEN
773: p_Item_Revision_rec.implementation_date := p_Item_Revision_rec.effectivity_date;
774: END IF;
775: */
781: p_Item_Revision_rec.implementation_date := p_Item_Revision_rec.effectivity_date;
782: END IF;
783:
784:
785: IF ( p_Item_Revision_rec.revised_item_sequence_id = FND_API.g_MISS_NUM ) THEN
786: p_Item_Revision_rec.revised_item_sequence_id := NULL;
787: END IF;
788:
789: --
789: --
790: -- Revision label cannot be null. If the user did not pass any value or the
791: -- value is missing, then revision_label will be same as revision
792: --
793: IF ( p_Item_Revision_rec.revision_label = FND_API.g_MISS_CHAR OR
794: p_Item_Revision_rec.revision_label IS NULL ) THEN
795: p_Item_Revision_rec.revision_label := p_Item_Revision_rec.revision;
796: END IF;
797:
794: p_Item_Revision_rec.revision_label IS NULL ) THEN
795: p_Item_Revision_rec.revision_label := p_Item_Revision_rec.revision;
796: END IF;
797:
798: IF ( p_Item_Revision_rec.revision_reason = FND_API.g_MISS_CHAR ) THEN
799: p_Item_Revision_rec.revision_reason := NULL;
800: END IF;
801:
802: IF ( p_Item_Revision_rec.lifecycle_id = FND_API.g_MISS_NUM ) THEN
798: IF ( p_Item_Revision_rec.revision_reason = FND_API.g_MISS_CHAR ) THEN
799: p_Item_Revision_rec.revision_reason := NULL;
800: END IF;
801:
802: IF ( p_Item_Revision_rec.lifecycle_id = FND_API.g_MISS_NUM ) THEN
803: p_Item_Revision_rec.lifecycle_id := NULL;
804: p_Item_Revision_rec.current_phase_id := NULL;
805: END IF;
806:
803: p_Item_Revision_rec.lifecycle_id := NULL;
804: p_Item_Revision_rec.current_phase_id := NULL;
805: END IF;
806:
807: IF ( p_Item_Revision_rec.current_phase_id = FND_API.g_MISS_NUM ) THEN
808: p_Item_Revision_rec.current_phase_id := NULL;
809: END IF;
810:
811: --
818: INV_EGO_REVISION_VALIDATE.Get_Initial_Lifecycle_Phase (p_Item_Revision_rec.lifecycle_id);
819:
820: IF ( p_Item_Revision_rec.current_phase_id = 0 ) THEN
821: Add_Message ('INV', 'INV_REV_LIFECYCLE_INVALID');
822: RAISE FND_API.g_EXC_ERROR;
823: END IF;
824:
825: END IF;
826:
824:
825: END IF;
826:
827: -- Start :5208102: Supporting template for UDA's at revisions
828: IF p_Item_Revision_rec.template_id = FND_API.g_MISS_NUM THEN
829: p_Item_Revision_rec.template_id := NULL;
830: END IF;
831: IF p_Item_Revision_rec.template_name = FND_API.g_MISS_CHAR THEN
832: p_Item_Revision_rec.template_name := NULL;
827: -- Start :5208102: Supporting template for UDA's at revisions
828: IF p_Item_Revision_rec.template_id = FND_API.g_MISS_NUM THEN
829: p_Item_Revision_rec.template_id := NULL;
830: END IF;
831: IF p_Item_Revision_rec.template_name = FND_API.g_MISS_CHAR THEN
832: p_Item_Revision_rec.template_name := NULL;
833: END IF;
834:
835: IF (p_Item_Revision_rec.template_id IS NOT NULL)
858: END IF;
859:
860: IF l_message_name IS NOT NULL THEN
861: Add_Message ('INV', l_message_name);
862: RAISE FND_API.g_EXC_ERROR;
863: ELSE
864: l_apply_template := TRUE;
865: END IF;
866: END IF;
866: END IF;
867: -- End :5208102: Supporting template for UDA's at revisions
868:
869: --Supporting revision id during revision create.
870: IF ( p_Item_Revision_rec.revision_id = FND_API.g_MISS_NUM ) THEN
871: p_Item_Revision_rec.revision_id := NULL;
872: END IF;
873:
874: IF p_Item_Revision_rec.revision_id IS NOT NULL THEN
876: SELECT mtl_item_revisions_b_s.CURRVAL
877: INTO l_revision_id FROM DUAL;
878: IF p_Item_Revision_rec.revision_id > l_revision_id THEN
879: Add_Message ('INV', 'INV_INVALID_REVISION_ID');
880: RAISE FND_API.g_EXC_ERROR;
881: END IF;
882: EXCEPTION
883: WHEN OTHERS THEN
884: Add_Message ('INV', 'INV_INVALID_REVISION_ID');
881: END IF;
882: EXCEPTION
883: WHEN OTHERS THEN
884: Add_Message ('INV', 'INV_INVALID_REVISION_ID');
885: RAISE FND_API.g_EXC_ERROR;
886: END;
887: END IF;
888:
889: IF p_Item_Revision_rec.revision_id IS NULL THEN
1115: */ /* R12: Business Event Enhancement:
1116: Raise Event if Revision got Created successfully */
1117:
1118: -- Standard check of p_commit
1119: IF FND_API.To_Boolean (p_commit) THEN
1120: --INV_ITEM_MSG.Debug(Mctx, 'before COMMIT WORK');
1121: COMMIT WORK;
1122: END IF;
1123:
1132: );
1133:
1134: /*Bug 6853558 Added to get the message if count is > 1 */
1135: IF( x_msg_count > 1 ) THEN
1136: x_msg_data := fnd_msg_pub.get(x_msg_count, FND_API.G_FALSE );
1137: END IF;
1138: END IF;
1139:
1140: EXCEPTION
1138: END IF;
1139:
1140: EXCEPTION
1141:
1142: WHEN FND_API.g_EXC_ERROR THEN
1143:
1144: ROLLBACK TO Create_Item_Revision_PUB;
1145: x_return_status := FND_API.g_RET_STS_ERROR;
1146:
1141:
1142: WHEN FND_API.g_EXC_ERROR THEN
1143:
1144: ROLLBACK TO Create_Item_Revision_PUB;
1145: x_return_status := FND_API.g_RET_STS_ERROR;
1146:
1147: IF G_Message_API = 'BOM' THEN
1148: x_msg_count := Error_Handler.Get_Message_Count;
1149: ELSE
1152: , p_data => x_msg_data
1153: );
1154: /*Bug 6853558 Added to get the message if count is > 1 */
1155: IF( x_msg_count > 1 ) THEN
1156: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE );
1157: END IF;
1158: END IF;
1159:
1160: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1156: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE );
1157: END IF;
1158: END IF;
1159:
1160: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1161:
1162: ROLLBACK TO Create_Item_Revision_PUB;
1163: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1164:
1159:
1160: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1161:
1162: ROLLBACK TO Create_Item_Revision_PUB;
1163: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1164:
1165: IF G_Message_API = 'BOM' THEN
1166: x_msg_count := Error_Handler.Get_Message_Count;
1167: ELSE
1170: , p_data => x_msg_data
1171: );
1172: /*Bug 6853558 Added to get the message if count is > 1 */
1173: IF( x_msg_count > 1 ) THEN
1174: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1175: END IF;
1176: END IF;
1177:
1178: WHEN others THEN
1177:
1178: WHEN others THEN
1179:
1180: ROLLBACK TO Create_Item_Revision_PUB;
1181: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1182:
1183: Add_Message
1184: ( p_api_name => l_api_name
1185: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
1193: , p_data => x_msg_data
1194: );
1195: /*Bug 6853558 Added to get the message if count is > 1 */
1196: IF( x_msg_count > 1 ) THEN
1197: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1198: END IF;
1199: END IF;
1200:
1201: END Create_Item_Revision;
1207:
1208: PROCEDURE Update_Item_Revision
1209: (
1210: p_api_version IN NUMBER
1211: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
1212: , p_commit IN VARCHAR2 := FND_API.g_FALSE
1213: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
1214: , p_process_control IN VARCHAR2 := NULL
1215: , x_return_status OUT NOCOPY VARCHAR2
1208: PROCEDURE Update_Item_Revision
1209: (
1210: p_api_version IN NUMBER
1211: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
1212: , p_commit IN VARCHAR2 := FND_API.g_FALSE
1213: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
1214: , p_process_control IN VARCHAR2 := NULL
1215: , x_return_status OUT NOCOPY VARCHAR2
1216: , x_msg_count OUT NOCOPY NUMBER
1209: (
1210: p_api_version IN NUMBER
1211: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
1212: , p_commit IN VARCHAR2 := FND_API.g_FALSE
1213: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
1214: , p_process_control IN VARCHAR2 := NULL
1215: , x_return_status OUT NOCOPY VARCHAR2
1216: , x_msg_count OUT NOCOPY NUMBER
1217: , x_msg_data OUT NOCOPY VARCHAR2
1274: l_sysdate := SYSDATE;
1275: END IF;
1276:
1277: -- Check for call compatibility
1278: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1279: l_api_name, G_PKG_NAME)
1280: THEN
1281: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1282: END IF;
1277: -- Check for call compatibility
1278: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1279: l_api_name, G_PKG_NAME)
1280: THEN
1281: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1282: END IF;
1283:
1284: -- Initialize message list
1285: IF G_Message_API = 'FND' THEN
1282: END IF;
1283:
1284: -- Initialize message list
1285: IF G_Message_API = 'FND' THEN
1286: IF FND_API.To_Boolean (p_init_msg_list) THEN
1287: FND_MSG_PUB.Initialize;
1288: END IF;
1289: END IF;
1290:
1292: -- Mctx.Package_Name := G_PKG_NAME;
1293: -- Mctx.Procedure_Name := l_api_name;
1294:
1295: -- Initialize API return status to success
1296: x_return_status := FND_API.g_RET_STS_SUCCESS;
1297:
1298: -- code for req, unique and fk checks
1299:
1300: -- ------------------------------------
1300: -- ------------------------------------
1301: -- Check for missing or NULL PK values
1302: -- ------------------------------------
1303:
1304: IF ( p_Item_Revision_rec.inventory_item_id = FND_API.g_MISS_NUM )
1305: OR ( p_Item_Revision_rec.inventory_item_id IS NULL )
1306: THEN
1307: Add_Message ('INV', 'INV_ITM_MISS_ITEM_ID');
1308: END IF;
1306: THEN
1307: Add_Message ('INV', 'INV_ITM_MISS_ITEM_ID');
1308: END IF;
1309:
1310: IF ( p_Item_Revision_rec.organization_id = FND_API.g_MISS_NUM )
1311: OR ( p_Item_Revision_rec.organization_id IS NULL )
1312: THEN
1313: Add_Message ('INV', 'INV_ITM_MISS_ORG_ID');
1314: END IF;
1312: THEN
1313: Add_Message ('INV', 'INV_ITM_MISS_ORG_ID');
1314: END IF;
1315:
1316: IF ( p_Item_Revision_rec.revision = FND_API.g_MISS_CHAR )
1317: OR ( p_Item_Revision_rec.revision IS NULL )
1318: THEN
1319: Add_Message ('INV', 'INV_ITM_MISS_REVISION_CODE');
1320: END IF;
1319: Add_Message ('INV', 'INV_ITM_MISS_REVISION_CODE');
1320: END IF;
1321:
1322: -- Return with errors accumulated so far
1323: IF ( x_return_status <> FND_API.g_RET_STS_SUCCESS ) THEN
1324: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1325: END IF;
1326:
1327: -- ------------------------------------------------
1320: END IF;
1321:
1322: -- Return with errors accumulated so far
1323: IF ( x_return_status <> FND_API.g_RET_STS_SUCCESS ) THEN
1324: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1325: END IF;
1326:
1327: -- ------------------------------------------------
1328: -- Validate a part of Revision PK - foreign key to
1340:
1341: IF ( org_item_exists_cur%NOTFOUND ) THEN
1342: CLOSE org_item_exists_cur;
1343: Add_Message ('INV', 'INV_ITM_INVALID_ORGITEM_ID');
1344: RAISE FND_API.g_EXC_ERROR;
1345: END IF;
1346:
1347: CLOSE org_item_exists_cur;
1348:
1358: FETCH Item_Revision_Id_Exists_cur INTO l_object_version_number;
1359: IF ( Item_Revision_Id_Exists_cur%NOTFOUND ) THEN
1360: CLOSE Item_Revision_Id_Exists_cur;
1361: Add_Message ('INV', 'INV_ITM_INVALID_REVISION_CODE');
1362: RAISE FND_API.g_EXC_ERROR;
1363: END IF;
1364: CLOSE Item_Revision_Id_Exists_cur;
1365:
1366: --3655522 begin
1371: FETCH Upd_Item_Rev_Exists_cur INTO l_object_version_number;
1372: IF ( Upd_Item_Rev_Exists_cur%FOUND ) THEN
1373: CLOSE Upd_Item_Rev_Exists_cur;
1374: Add_Message ('INV', 'INV_ITM_DUPLICATE_REVISION');
1375: RAISE FND_API.g_EXC_ERROR;
1376: END IF;
1377: CLOSE Upd_Item_Rev_Exists_cur;
1378: --3655522 end
1379:
1385: FETCH Item_Revision_Exists_cur INTO l_object_version_number;
1386: IF ( Item_Revision_Exists_cur%NOTFOUND ) THEN
1387: CLOSE Item_Revision_Exists_cur;
1388: Add_Message ('INV', 'INV_ITM_INVALID_REVISION_CODE');
1389: RAISE FND_API.g_EXC_ERROR;
1390: END IF;
1391: CLOSE Item_Revision_Exists_cur;
1392: END IF;
1393:
1395: -- Description cannot be updated to NULL
1396: -- Bug: 3055810 Description is optional.
1397: -- --------------------------------------
1398: /*
1399: IF ( p_Item_Revision_rec.description = FND_API.g_MISS_CHAR ) THEN
1400: x_return_status := FND_API.g_RET_STS_ERROR;
1401: Add_Message ('INV', 'INV_ITM_REV_NULL_DESCRIPTION');
1402: END IF;
1403: */
1396: -- Bug: 3055810 Description is optional.
1397: -- --------------------------------------
1398: /*
1399: IF ( p_Item_Revision_rec.description = FND_API.g_MISS_CHAR ) THEN
1400: x_return_status := FND_API.g_RET_STS_ERROR;
1401: Add_Message ('INV', 'INV_ITM_REV_NULL_DESCRIPTION');
1402: END IF;
1403: */
1404: -- -------------------------------------------
1406: -- -------------------------------------------
1407:
1408: --Dbms_output.put_line('UPDATE: Checking for missing effectivity date');
1409:
1410: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
1411: x_return_status := FND_API.g_RET_STS_ERROR;
1412: Add_Message ('INV', 'INV_ITM_REV_NULL_EFF_DATE');
1413: END IF;
1414:
1407:
1408: --Dbms_output.put_line('UPDATE: Checking for missing effectivity date');
1409:
1410: IF ( p_Item_Revision_rec.effectivity_date = FND_API.g_MISS_DATE ) THEN
1411: x_return_status := FND_API.g_RET_STS_ERROR;
1412: Add_Message ('INV', 'INV_ITM_REV_NULL_EFF_DATE');
1413: END IF;
1414:
1415: IF x_return_status <> FND_API.g_RET_STS_SUCCESS THEN
1411: x_return_status := FND_API.g_RET_STS_ERROR;
1412: Add_Message ('INV', 'INV_ITM_REV_NULL_EFF_DATE');
1413: END IF;
1414:
1415: IF x_return_status <> FND_API.g_RET_STS_SUCCESS THEN
1416: RAISE FND_API.g_EXC_ERROR;
1417: END IF;
1418:
1419: -- ------------------------------------------------------------------------------
1412: Add_Message ('INV', 'INV_ITM_REV_NULL_EFF_DATE');
1413: END IF;
1414:
1415: IF x_return_status <> FND_API.g_RET_STS_SUCCESS THEN
1416: RAISE FND_API.g_EXC_ERROR;
1417: END IF;
1418:
1419: -- ------------------------------------------------------------------------------
1420: -- Revision is not updateable when Effectivity Date is prior to the current date
1456: IF (( l_orig_effectivity_date < l_sysdate AND
1457: l_orig_implementation_date IS NOT NULL )
1458: OR p_Item_Revision_rec.effectivity_date < l_sysdate ) THEN
1459: --3655522 if rev is not implemented, then we allow changing effectivity date
1460: x_return_status := FND_API.g_RET_STS_ERROR;
1461: Add_Message ('INV','INV_ITM_REV_EFF_DATE_NON_UPD');
1462: RAISE FND_API.g_EXC_ERROR;
1463: END IF;
1464:
1458: OR p_Item_Revision_rec.effectivity_date < l_sysdate ) THEN
1459: --3655522 if rev is not implemented, then we allow changing effectivity date
1460: x_return_status := FND_API.g_RET_STS_ERROR;
1461: Add_Message ('INV','INV_ITM_REV_EFF_DATE_NON_UPD');
1462: RAISE FND_API.g_EXC_ERROR;
1463: END IF;
1464:
1465: END IF;
1466:
1483: p_Item_Revision_rec => p_Item_Revision_rec
1484: , x_return_status => l_return_status
1485: );
1486:
1487: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
1488: RAISE FND_API.g_EXC_ERROR;
1489: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
1490: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1491: END IF;
1484: , x_return_status => l_return_status
1485: );
1486:
1487: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
1488: RAISE FND_API.g_EXC_ERROR;
1489: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
1490: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1491: END IF;
1492:
1485: );
1486:
1487: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
1488: RAISE FND_API.g_EXC_ERROR;
1489: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
1490: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1491: END IF;
1492:
1493: END IF;
1486:
1487: IF ( l_return_status = FND_API.g_RET_STS_ERROR ) THEN
1488: RAISE FND_API.g_EXC_ERROR;
1489: ELSIF ( l_return_status = FND_API.g_RET_STS_UNEXP_ERROR ) THEN
1490: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1491: END IF;
1492:
1493: END IF;
1494:
1501: -- IF l_orig_lifecycle_id IS NOT NULL AND
1502: -- nvl(p_Item_Revision_rec.lifecycle_id,l_orig_lifecycle_id) <> l_orig_lifecycle_id THEN
1503: --
1504: -- Add_Message ('INV', 'INV_CANNOT_CHANGE_LIFECYCLE');
1505: -- RAISE FND_API.g_EXC_ERROR;
1506: -- END IF;
1507: --
1508: --
1509: -- Now either the user tries to update an existing life cycle (can update only the current phase)
1514: --
1515: -- When the lifecycle id is a MISSING value, then assign NULL to both lifecycle and
1516: -- current phase
1517: --
1518: IF l_lifecycle_id = FND_API.g_MISS_NUM THEN
1519:
1520: l_lifecycle_id := NULL;
1521: l_current_phase_id := NULL;
1522:
1536: -- When there is a lifecycle and the current phase id is null or missing, then
1537: -- default it from the database.
1538: -- If the user has passed a valid current phase id, then use that
1539:
1540: ELSIF l_current_phase_id IS NULL OR l_current_phase_id = FND_API.g_MISS_NUM THEN
1541: l_current_phase_id := l_orig_current_phase_id;
1542: END IF;
1543:
1544: ELSIF l_lifecycle_id IS NOT NULL THEN
1547: -- or missing for the current phase, then default the old from the database
1548: --
1549: IF l_orig_lifecycle_id IS NOT NULL THEN
1550:
1551: IF l_current_phase_id IS NULL OR l_current_phase_id = FND_API.g_MISS_NUM THEN
1552: l_current_phase_id := l_orig_current_phase_id;
1553: END IF;
1554:
1555: ELSE
1556: --
1557: -- If the life cycle does not exist, and the user has passed null or missing for
1558: -- the current phase, then derive the current phase id
1559: --
1560: IF l_current_phase_id IS NULL OR l_current_phase_id = FND_API.g_MISS_NUM THEN
1561:
1562: l_current_phase_id :=
1563: INV_EGO_REVISION_VALIDATE.Get_Initial_Lifecycle_Phase (l_lifecycle_id);
1564: IF l_current_phase_id = 0 THEN
1562: l_current_phase_id :=
1563: INV_EGO_REVISION_VALIDATE.Get_Initial_Lifecycle_Phase (l_lifecycle_id);
1564: IF l_current_phase_id = 0 THEN
1565: Add_Message ('INV', 'INV_REV_LIFECYCLE_INVALID');
1566: RAISE FND_API.g_EXC_ERROR;
1567: END IF;
1568:
1569: END IF;
1570:
1574: EXECUTE IMMEDIATE
1575: ' BEGIN '
1576: ||' EGO_INV_ITEM_CATALOG_PVT.VALIDATE_AND_CHANGE_ITEM_LC( '
1577: ||' P_API_VERSION => 1.0 '
1578: ||' ,P_COMMIT => FND_API.G_FALSE '
1579: ||' ,P_INVENTORY_ITEM_ID => :p_Item_Revision_rec.inventory_item_id'
1580: ||' ,P_ORGANIZATION_ID => :p_Item_Revision_rec.organization_id '
1581: ||' ,P_ITEM_REVISION_ID => :p_Item_Revision_rec.revision_id '
1582: ||' ,P_FETCH_CURR_VALUES => FND_API.G_TRUE '
1578: ||' ,P_COMMIT => FND_API.G_FALSE '
1579: ||' ,P_INVENTORY_ITEM_ID => :p_Item_Revision_rec.inventory_item_id'
1580: ||' ,P_ORGANIZATION_ID => :p_Item_Revision_rec.organization_id '
1581: ||' ,P_ITEM_REVISION_ID => :p_Item_Revision_rec.revision_id '
1582: ||' ,P_FETCH_CURR_VALUES => FND_API.G_TRUE '
1583: ||' ,P_CURR_CC_ID => NULL '
1584: ||' ,P_NEW_CC_ID => NULL '
1585: ||' ,P_CURR_LC_ID => NULL '
1586: ||' ,P_NEW_LC_ID => :l_lifecycle_id '
1585: ||' ,P_CURR_LC_ID => NULL '
1586: ||' ,P_NEW_LC_ID => :l_lifecycle_id '
1587: ||' ,P_NEW_LCP_ID => :l_current_phase_id '
1588: ||' ,P_CURR_LCP_ID => NULL '
1589: ||' ,P_IS_NEW_CC_IN_HIER => FND_API.G_TRUE '
1590: ||' ,P_CHANGE_ID => NULL '
1591: ||' ,P_CHANGE_LINE_ID => NULL '
1592: ||' ,X_RETURN_STATUS => :l_return_status '
1593: ||' ,X_MSG_COUNT => :l_msg_count '
1604: OUT l_return_status,
1605: OUT l_msg_count,
1606: OUT l_msg_text;
1607:
1608: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1609: Add_Message (p_message_text => l_msg_text);
1610: RAISE FND_API.g_EXC_ERROR;
1611: END IF;
1612:
1606: OUT l_msg_text;
1607:
1608: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1609: Add_Message (p_message_text => l_msg_text);
1610: RAISE FND_API.g_EXC_ERROR;
1611: END IF;
1612:
1613: --Bug: 3802017 ends
1614:
1612:
1613: --Bug: 3802017 ends
1614:
1615: -- Start :5208102: Supporting template for UDA's at revisions
1616: IF p_Item_Revision_rec.template_id = FND_API.g_MISS_NUM THEN
1617: p_Item_Revision_rec.template_id := NULL;
1618: END IF;
1619: IF p_Item_Revision_rec.template_name = FND_API.g_MISS_CHAR THEN
1620: p_Item_Revision_rec.template_name := NULL;
1615: -- Start :5208102: Supporting template for UDA's at revisions
1616: IF p_Item_Revision_rec.template_id = FND_API.g_MISS_NUM THEN
1617: p_Item_Revision_rec.template_id := NULL;
1618: END IF;
1619: IF p_Item_Revision_rec.template_name = FND_API.g_MISS_CHAR THEN
1620: p_Item_Revision_rec.template_name := NULL;
1621: END IF;
1622:
1623: IF (p_Item_Revision_rec.template_id IS NOT NULL)
1646: END IF;
1647:
1648: IF l_message_name IS NOT NULL THEN
1649: Add_Message ('INV', l_message_name);
1650: RAISE FND_API.g_EXC_ERROR;
1651: ELSE
1652: l_apply_template := TRUE;
1653: END IF;
1654: END IF;
1701: RETURNING revision_id, object_version_number INTO G_revision_id, G_object_version_number;
1702:
1703: IF ( SQL%NOTFOUND ) THEN
1704: Add_Message ('INV', 'INV_ITM_REVISION_REC_CHANGED');
1705: RAISE FND_API.g_EXC_ERROR;
1706: END IF;
1707:
1708:
1709: --
1801: Raise Event if Revision got Updated successfully */
1802:
1803:
1804: -- Standard check of p_commit
1805: IF FND_API.To_Boolean (p_commit) THEN
1806: --INV_ITEM_MSG.Debug(Mctx, 'before COMMIT WORK');
1807: COMMIT WORK;
1808: END IF;
1809:
1817: , p_data => x_msg_data
1818: );
1819: /*Bug 6853558 Added to get the message if count is > 1 */
1820: IF( x_msg_count > 1 ) THEN
1821: x_msg_data := fnd_msg_pub.get( x_msg_count,FND_API.G_FALSE);
1822: END IF;
1823: END IF;
1824:
1825: EXCEPTION
1823: END IF;
1824:
1825: EXCEPTION
1826:
1827: WHEN FND_API.g_EXC_ERROR THEN
1828:
1829: ROLLBACK TO Update_Item_Revision_PUB;
1830: x_return_status := FND_API.g_RET_STS_ERROR;
1831:
1826:
1827: WHEN FND_API.g_EXC_ERROR THEN
1828:
1829: ROLLBACK TO Update_Item_Revision_PUB;
1830: x_return_status := FND_API.g_RET_STS_ERROR;
1831:
1832: IF G_Message_API = 'BOM' THEN
1833: x_msg_count := Error_Handler.Get_Message_Count;
1834: ELSE
1837: , p_data => x_msg_data
1838: );
1839: /*Bug 6853558 Added to get the message if count is > 1 */
1840: IF( x_msg_count > 1 ) THEN
1841: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1842: END IF;
1843: END IF;
1844:
1845: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1841: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1842: END IF;
1843: END IF;
1844:
1845: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1846:
1847: ROLLBACK TO Update_Item_Revision_PUB;
1848: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1849:
1844:
1845: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
1846:
1847: ROLLBACK TO Update_Item_Revision_PUB;
1848: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1849:
1850: IF G_Message_API = 'BOM' THEN
1851: x_msg_count := Error_Handler.Get_Message_Count;
1852: ELSE
1855: , p_data => x_msg_data
1856: );
1857: /*Bug 6853558 Added to get the message if count is > 1 */
1858: IF( x_msg_count > 1 ) THEN
1859: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1860: END IF;
1861: END IF;
1862:
1863: WHEN others THEN
1862:
1863: WHEN others THEN
1864:
1865: ROLLBACK TO Update_Item_Revision_PUB;
1866: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
1867:
1868: Add_Message
1869: ( p_api_name => l_api_name
1870: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
1878: , p_data => x_msg_data
1879: );
1880: /**Bug 6853558 Added to get the message if count is > 1 */
1881: IF( x_msg_count > 1 ) THEN
1882: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1883: END IF;
1884: END IF;
1885:
1886: END Update_Item_Revision;
1892:
1893: PROCEDURE Lock_Item_Revision
1894: (
1895: p_api_version IN NUMBER
1896: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
1897: , x_return_status OUT NOCOPY VARCHAR2
1898: , x_msg_count OUT NOCOPY NUMBER
1899: , x_msg_data OUT NOCOPY VARCHAR2
1900: , p_inventory_item_id IN NUMBER
1928: -- Standard Start of API savepoint
1929: SAVEPOINT Lock_Item_Revision_PUB;
1930:
1931: -- Check for call compatibility
1932: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1933: l_api_name, G_PKG_NAME)
1934: THEN
1935: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1936: END IF;
1931: -- Check for call compatibility
1932: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
1933: l_api_name, G_PKG_NAME)
1934: THEN
1935: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
1936: END IF;
1937:
1938: -- Initialize message list
1939: IF G_Message_API = 'FND' THEN
1936: END IF;
1937:
1938: -- Initialize message list
1939: IF G_Message_API = 'FND' THEN
1940: IF FND_API.To_Boolean (p_init_msg_list) THEN
1941: FND_MSG_PUB.Initialize;
1942: END IF;
1943: END IF;
1944:
1946: -- Mctx.Package_Name := G_PKG_NAME;
1947: -- Mctx.Procedure_Name := l_api_name;
1948:
1949: -- Initialize API return status to success
1950: x_return_status := FND_API.g_RET_STS_SUCCESS;
1951:
1952: -- ----------------------------------------------
1953: -- Check if revision exists, and lock the record
1954: -- ----------------------------------------------
1961:
1962: IF ( Item_Revision_Lock_cur%NOTFOUND ) THEN
1963: CLOSE Item_Revision_Lock_cur;
1964: Add_Message ('INV', 'INV_ITM_REVISION_REC_DELETED');
1965: RAISE FND_API.g_EXC_ERROR;
1966: END IF;
1967:
1968: CLOSE Item_Revision_Lock_cur;
1969:
1972: -- -------------------------------------
1973:
1974: IF ( nvl(l_object_version_number,0) <> nvl(p_object_version_number,0) ) THEN
1975: Add_Message ('INV', 'INV_ITM_REVISION_REC_CHANGED');
1976: RAISE FND_API.g_EXC_ERROR;
1977: END IF;
1978:
1979: -- Standard call to get message count and if count is 1, get message info.
1980:
1986: , p_data => x_msg_data
1987: );
1988: /*Bug 6853558 Added to get the message if count is > 1 */
1989: IF( x_msg_count > 1 ) THEN
1990: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
1991: END IF;
1992: END IF;
1993:
1994: EXCEPTION
1992: END IF;
1993:
1994: EXCEPTION
1995:
1996: WHEN FND_API.g_EXC_ERROR THEN
1997:
1998: ROLLBACK TO Lock_Item_Revision_PUB;
1999: x_return_status := FND_API.g_RET_STS_ERROR;
2000:
1995:
1996: WHEN FND_API.g_EXC_ERROR THEN
1997:
1998: ROLLBACK TO Lock_Item_Revision_PUB;
1999: x_return_status := FND_API.g_RET_STS_ERROR;
2000:
2001: IF G_Message_API = 'BOM' THEN
2002: x_msg_count := Error_Handler.Get_Message_Count;
2003: ELSE
2006: , p_data => x_msg_data
2007: );
2008: /*Bug 6853558 Added to get the message if count is > 1 */
2009: IF( x_msg_count > 1 ) THEN
2010: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2011: END IF;
2012: END IF;
2013:
2014: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2010: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2011: END IF;
2012: END IF;
2013:
2014: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2015:
2016: ROLLBACK TO Lock_Item_Revision_PUB;
2017: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2018:
2013:
2014: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2015:
2016: ROLLBACK TO Lock_Item_Revision_PUB;
2017: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2018:
2019: IF G_Message_API = 'BOM' THEN
2020: x_msg_count := Error_Handler.Get_Message_Count;
2021: ELSE
2024: , p_data => x_msg_data
2025: );
2026: /*Bug 6853558 Added to get the message if count is > 1 */
2027: IF( x_msg_count > 1 ) THEN
2028: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2029: END IF;
2030: END IF;
2031:
2032: WHEN others THEN
2031:
2032: WHEN others THEN
2033:
2034: ROLLBACK TO Lock_Item_Revision_PUB;
2035: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2036:
2037: Add_Message
2038: ( p_api_name => l_api_name
2039: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
2047: , p_data => x_msg_data
2048: );
2049: /*Bug 6853558 Added to get the message if count is > 1 */
2050: IF( x_msg_count > 1 ) THEN
2051: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2052: END IF;
2053: END IF;
2054:
2055: END Lock_Item_Revision;
2061:
2062: PROCEDURE Delete_Item_Revision
2063: (
2064: p_api_version IN NUMBER
2065: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
2066: , p_commit IN VARCHAR2 := FND_API.g_FALSE
2067: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
2068: , x_return_status OUT NOCOPY VARCHAR2
2069: , x_msg_count OUT NOCOPY NUMBER
2062: PROCEDURE Delete_Item_Revision
2063: (
2064: p_api_version IN NUMBER
2065: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
2066: , p_commit IN VARCHAR2 := FND_API.g_FALSE
2067: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
2068: , x_return_status OUT NOCOPY VARCHAR2
2069: , x_msg_count OUT NOCOPY NUMBER
2070: , x_msg_data OUT NOCOPY VARCHAR2
2063: (
2064: p_api_version IN NUMBER
2065: , p_init_msg_list IN VARCHAR2 := FND_API.g_FALSE
2066: , p_commit IN VARCHAR2 := FND_API.g_FALSE
2067: , p_validation_level IN NUMBER := FND_API.g_VALID_LEVEL_FULL
2068: , x_return_status OUT NOCOPY VARCHAR2
2069: , x_msg_count OUT NOCOPY NUMBER
2070: , x_msg_data OUT NOCOPY VARCHAR2
2071: , p_inventory_item_id IN NUMBER
2086: -- Standard Start of API savepoint
2087: SAVEPOINT Delete_Item_Revision_PUB;
2088:
2089: -- Check for call compatibility
2090: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
2091: l_api_name, G_PKG_NAME)
2092: THEN
2093: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
2094: END IF;
2089: -- Check for call compatibility
2090: IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,
2091: l_api_name, G_PKG_NAME)
2092: THEN
2093: RAISE FND_API.g_EXC_UNEXPECTED_ERROR;
2094: END IF;
2095:
2096: -- Initialize message list
2097: IF G_Message_API = 'FND' THEN
2094: END IF;
2095:
2096: -- Initialize message list
2097: IF G_Message_API = 'FND' THEN
2098: IF FND_API.To_Boolean (p_init_msg_list) THEN
2099: FND_MSG_PUB.Initialize;
2100: END IF;
2101: END IF;
2102:
2104: -- Mctx.Package_Name := G_PKG_NAME;
2105: -- Mctx.Procedure_Name := l_api_name;
2106:
2107: -- Initialize API return status to success
2108: x_return_status := FND_API.g_RET_STS_SUCCESS;
2109:
2110: -- -------------------------
2111: -- Check if revision exists
2112: -- -------------------------
2119:
2120: IF ( Item_Revision_Exists_cur%NOTFOUND ) THEN
2121: CLOSE Item_Revision_Exists_cur;
2122: Add_Message ('INV', 'INV_ITM_REVISION_REC_DELETED');
2123: RAISE FND_API.g_EXC_ERROR;
2124: END IF;
2125:
2126: CLOSE Item_Revision_Exists_cur;
2127:
2130: -- -------------------------------------
2131:
2132: IF ( l_object_version_number <> p_object_version_number ) THEN
2133: Add_Message ('INV', 'INV_ITM_REVISION_REC_CHANGED');
2134: RAISE FND_API.g_EXC_ERROR;
2135: END IF;
2136:
2137: --dbms_output.put_line('DELETE FROM mtl_item_revisions; x_return_status = ' || x_return_status);
2138:
2145: RETURNING revision_id, object_version_number INTO G_revision_id, G_object_version_number;
2146:
2147: IF ( SQL%NOTFOUND ) THEN
2148: Add_Message ('INV', 'INV_ITM_REVISION_REC_CHANGED');
2149: RAISE FND_API.g_EXC_ERROR;
2150: END IF;
2151:
2152: --
2153: -- Remove the corresponding TL entries for this revision record
2166:
2167: --dbms_output.put_line('done DELETEing FROM mtl_item_revisions; x_return_status = ' || x_return_status);
2168:
2169: -- Standard check of p_commit
2170: IF FND_API.To_Boolean (p_commit) THEN
2171: --INV_ITEM_MSG.Debug(Mctx, 'before COMMIT WORK');
2172: COMMIT WORK;
2173: END IF;
2174:
2182: , p_data => x_msg_data
2183: );
2184: /*Bug 6853558 Added to get the message if count is > 1 */
2185: IF( x_msg_count > 1 ) THEN
2186: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2187: END IF;
2188: END IF;
2189:
2190: EXCEPTION
2188: END IF;
2189:
2190: EXCEPTION
2191:
2192: WHEN FND_API.g_EXC_ERROR THEN
2193:
2194: ROLLBACK TO Delete_Item_Revision_PUB;
2195: x_return_status := FND_API.g_RET_STS_ERROR;
2196:
2191:
2192: WHEN FND_API.g_EXC_ERROR THEN
2193:
2194: ROLLBACK TO Delete_Item_Revision_PUB;
2195: x_return_status := FND_API.g_RET_STS_ERROR;
2196:
2197: IF G_Message_API = 'BOM' THEN
2198: x_msg_count := Error_Handler.Get_Message_Count;
2199: ELSE
2202: , p_data => x_msg_data
2203: );
2204: /*Bug 6853558 Added to get the message if count is > 1 */
2205: IF( x_msg_count > 1 ) THEN
2206: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2207: END IF;
2208: END IF;
2209:
2210: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2206: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2207: END IF;
2208: END IF;
2209:
2210: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2211:
2212: ROLLBACK TO Delete_Item_Revision_PUB;
2213: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2214:
2209:
2210: WHEN FND_API.g_EXC_UNEXPECTED_ERROR THEN
2211:
2212: ROLLBACK TO Delete_Item_Revision_PUB;
2213: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2214:
2215: IF G_Message_API = 'BOM' THEN
2216: x_msg_count := Error_Handler.Get_Message_Count;
2217: ELSE
2220: , p_data => x_msg_data
2221: );
2222: /*Bug 6853558 Added to get the message if count is > 1 */
2223: IF( x_msg_count > 1 ) THEN
2224: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2225: END IF;
2226: END IF;
2227:
2228: WHEN others THEN
2227:
2228: WHEN others THEN
2229:
2230: ROLLBACK TO Delete_Item_Revision_PUB;
2231: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2232:
2233: Add_Message
2234: ( p_api_name => l_api_name
2235: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
2243: , p_data => x_msg_data
2244: );
2245: /*Bug 6853558 Added to get the message if count is > 1 */
2246: IF( x_msg_count > 1 ) THEN
2247: x_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2248: END IF;
2249: END IF;
2250:
2251: END Delete_Item_Revision;
2286: , p_template_name IN VARCHAR2 := NULL --5208102
2287: , p_language_code IN VARCHAR2 := 'US'
2288: , p_transaction_type IN VARCHAR2
2289: , p_message_api IN VARCHAR2 := 'FND'
2290: , p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
2291: , x_Return_Status OUT NOCOPY VARCHAR2
2292: , x_msg_count OUT NOCOPY NUMBER
2293: , x_revision_id IN OUT NOCOPY NUMBER
2294: , x_object_version_number IN OUT NOCOPY NUMBER
2316: G_Sysdate := SYSDATE;
2317:
2318: -- Initialize message list
2319: IF G_Message_API = 'BOM' THEN
2320: IF FND_API.To_Boolean (p_init_msg_list) THEN
2321: Error_Handler.Initialize;
2322: Error_Handler.Set_BO_Identifier ('INV_ITEM_REVISION');
2323: END IF;
2324: ELSE
2322: Error_Handler.Set_BO_Identifier ('INV_ITEM_REVISION');
2323: END IF;
2324: ELSE
2325: /* G_Message_API = 'FND' THEN */
2326: IF FND_API.To_Boolean (p_init_msg_list) THEN
2327: FND_MSG_PUB.Initialize;
2328: END IF;
2329: END IF;
2330:
2340: , x_return_status => l_debug_return_status
2341: , x_error_mesg => l_debug_error_message
2342: );
2343:
2344: IF l_debug_return_status <> FND_API.g_RET_STS_SUCCESS THEN
2345: -- Debug fail information can be inserted into the error table
2346: Null;
2347: END IF;
2348:
2382: Bom_Globals.G_OPR_UPDATE,
2383: Bom_Globals.G_OPR_DELETE) THEN
2384:
2385: Add_Message ('INV', 'INV_INVALID_TRANS_TYPE');
2386: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2387:
2388: IF G_Message_API = 'BOM' THEN
2389: x_msg_count := Error_Handler.Get_Message_Count;
2390: ELSE
2393: , p_data => l_msg_data
2394: );
2395: /*Bug 6853558 Added to get the message if count is > 1 */
2396: IF( x_msg_count > 1 ) THEN
2397: l_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2398: END IF;
2399: END IF;
2400:
2401: IF Error_Handler.Get_Debug = 'Y' THEN
2444: l_item_revision_rec.revision_label := p_revision_label;
2445: l_item_revision_rec.revision_reason := p_revision_reason;
2446: --35557001
2447: -- lifecycle can be null, for API compatability, change it to MISS_NUM
2448: l_item_revision_rec.lifecycle_id := NVL(p_lifecycle_id,FND_API.G_MISS_NUM);
2449: l_item_revision_rec.current_phase_id := NVL(p_current_phase_id,FND_API.G_MISS_NUM);
2450:
2451: -- 5208102: Supporting template for UDA's at revisions
2452: l_item_revision_rec.template_id := p_template_id;
2445: l_item_revision_rec.revision_reason := p_revision_reason;
2446: --35557001
2447: -- lifecycle can be null, for API compatability, change it to MISS_NUM
2448: l_item_revision_rec.lifecycle_id := NVL(p_lifecycle_id,FND_API.G_MISS_NUM);
2449: l_item_revision_rec.current_phase_id := NVL(p_current_phase_id,FND_API.G_MISS_NUM);
2450:
2451: -- 5208102: Supporting template for UDA's at revisions
2452: l_item_revision_rec.template_id := p_template_id;
2453: l_item_revision_rec.template_name := p_template_name;
2463:
2464: Create_Item_Revision
2465: (
2466: p_api_version => 1.0
2467: , p_init_msg_list => FND_API.G_TRUE
2468: , x_return_status => x_return_status
2469: , x_msg_count => x_msg_count
2470: , x_msg_data => l_msg_data
2471: , p_Item_Revision_rec => l_item_revision_rec
2480:
2481: Update_Item_Revision
2482: (
2483: p_api_version => 1.0
2484: , p_init_msg_list => FND_API.G_TRUE
2485: , x_return_status => x_return_status
2486: , x_msg_count => x_msg_count
2487: , x_msg_data => l_msg_data
2488: , p_Item_Revision_rec => l_item_revision_rec
2495:
2496: Delete_Item_Revision
2497: (
2498: p_api_version => 1.0
2499: , p_init_msg_list => FND_API.G_TRUE
2500: , x_return_status => x_return_status
2501: , x_msg_count => x_msg_count
2502: , x_msg_data => l_msg_data
2503: , p_inventory_item_id => p_inventory_item_id
2517: END IF;
2518:
2519: EXCEPTION WHEN OTHERS THEN
2520:
2521: x_return_status := FND_API.g_RET_STS_UNEXP_ERROR;
2522:
2523: Add_Message
2524: ( p_api_name => l_api_name
2525: , p_message_text => 'UNEXP_ERROR : ' || SQLERRM
2533: , p_data => l_msg_data
2534: );
2535: /*Bug 6853558 Added to get the message if count is > 1 */
2536: IF( x_msg_count > 1 ) THEN
2537: l_msg_data := fnd_msg_pub.get(x_msg_count,FND_API.G_FALSE);
2538: END IF;
2539: END IF;
2540:
2541: IF Error_Handler.Get_Debug = 'Y' THEN