40: *********************************************************************/
41: PROCEDURE Validate_Structure
42: (
43: p_api_version IN NUMBER,
44: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
45: p_commit IN VARCHAR2 := FND_API.G_FALSE,
46: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
47:
48: p_work_object_id IN NUMBER,
41: PROCEDURE Validate_Structure
42: (
43: p_api_version IN NUMBER,
44: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
45: p_commit IN VARCHAR2 := FND_API.G_FALSE,
46: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
47:
48: p_work_object_id IN NUMBER,
49: p_work_object_type_id IN NUMBER,
42: (
43: p_api_version IN NUMBER,
44: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
45: p_commit IN VARCHAR2 := FND_API.G_FALSE,
46: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
47:
48: p_work_object_id IN NUMBER,
49: p_work_object_type_id IN NUMBER,
50: p_exception_logging IN VARCHAR2 := 'N',
105: BEGIN
106: -- Standard Start of API savepoint
107: SAVEPOINT EAM_WO_NETWORK_VALIDATE_PVT;
108: -- Standard call to check for call compatibility.
109: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
110: p_api_version ,
111: l_api_name ,
112: G_PKG_NAME )
113: THEN
110: p_api_version ,
111: l_api_name ,
112: G_PKG_NAME )
113: THEN
114: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
115: END IF;
116: -- Initialize message list if p_init_msg_list is set to TRUE.
117: IF FND_API.to_Boolean( p_init_msg_list ) THEN
118: FND_MSG_PUB.initialize;
113: THEN
114: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
115: END IF;
116: -- Initialize message list if p_init_msg_list is set to TRUE.
117: IF FND_API.to_Boolean( p_init_msg_list ) THEN
118: FND_MSG_PUB.initialize;
119: END IF;
120: -- Initialize API return status to success
121: x_return_status := FND_API.G_RET_STS_SUCCESS;
117: IF FND_API.to_Boolean( p_init_msg_list ) THEN
118: FND_MSG_PUB.initialize;
119: END IF;
120: -- Initialize API return status to success
121: x_return_status := FND_API.G_RET_STS_SUCCESS;
122: -- API body
123:
124: /* Initialize the local variables */
125: l_stmt_num := 10;
148: l_top_level_object_id := l_work_object_id;
149: l_top_level_object_type_id := l_work_object_type_id;
150: --dbms_output.put_line ('TOP = '||l_top_level_object_id);
151: WHEN OTHERS THEN
152: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
153: END;
154:
155:
156:
239:
240:
241: IF (l_released_rowcount > 0 ) THEN
242: -- Error between two released work orders
243: x_return_status := FND_API.G_RET_STS_ERROR;
244:
245: END IF;
246: END IF;
247:
260: x_msg_data => l_msg_data
261: --x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
262: );
263:
264: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
265: x_return_status := FND_API.G_RET_STS_ERROR;
266:
267: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
268: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
261: --x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
262: );
263:
264: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
265: x_return_status := FND_API.G_RET_STS_ERROR;
266:
267: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
268: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
269:
263:
264: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
265: x_return_status := FND_API.G_RET_STS_ERROR;
266:
267: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
268: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
269:
270: END IF;
271:
264: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
265: x_return_status := FND_API.G_RET_STS_ERROR;
266:
267: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
268: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
269:
270: END IF;
271:
272:
276: p_work_object_type_id => p_work_object_type_id,
277: x_return_status => l_return_status
278: );
279:
280: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
281: x_return_status := l_return_status;
282: END IF;
283: ELSE
284: -- Added for Detailed Scheduling
286: p_work_object_type_id => l_top_level_object_type_id,
287: p_wo_relationship_exc_tbl => l_wo_relationship_exc_tbl
288: );
289: IF (l_wo_relationship_exc_tbl.count >0 ) THEN
290: x_return_status := FND_API.G_RET_STS_ERROR;
291: END IF;
292:
293: l_stmt_num := 70;
294:
439: FND_MSG_PUB.Add_Exc_Msg
440: ( G_PKG_NAME,
441: l_api_name||'('||l_stmt_num||')'
442: );
443: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
444: END;
445:
446: l_exception_msg := NULL;
447: FND_MESSAGE.CLEAR;
522: FND_MSG_PUB.Add_Exc_Msg
523: ( G_PKG_NAME,
524: l_api_name||'('||l_stmt_num||')'
525: );
526: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
527: END;
528:
529: l_exception_msg := NULL;
530: FND_MESSAGE.CLEAR;
552:
553:
554: -- End of API body.
555: -- Standard check of p_commit.
556: IF FND_API.To_Boolean( p_commit ) THEN
557: --dbms_output.put_line('committing');
558: COMMIT WORK;
559: END IF;
560: -- Standard call to get message count and if count is 1, get message info.
561: x_msg_count := FND_MSG_PUB.Count_Msg;
562: x_wo_relationship_exc_tbl := l_wo_relationship_exc_tbl;
563:
564: EXCEPTION
565: WHEN FND_API.G_EXC_ERROR THEN
566: x_return_status := FND_API.G_RET_STS_ERROR ;
567: FND_MSG_PUB.Count_And_Get
568: ( p_count => x_msg_count ,
569: p_data => x_msg_data
562: x_wo_relationship_exc_tbl := l_wo_relationship_exc_tbl;
563:
564: EXCEPTION
565: WHEN FND_API.G_EXC_ERROR THEN
566: x_return_status := FND_API.G_RET_STS_ERROR ;
567: FND_MSG_PUB.Count_And_Get
568: ( p_count => x_msg_count ,
569: p_data => x_msg_data
570: );
579: SET EWR.RELATIONSHIP_STATUS = 0
580: WHERE EWR.TOP_LEVEL_OBJECT_TYPE_ID = l_top_level_object_type_id
581: AND EWR.TOP_LEVEL_OBJECT_ID = l_top_level_object_id;
582:
583: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
584: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
585: FND_MSG_PUB.Count_And_Get
586: (
587: p_count => x_msg_count,
580: WHERE EWR.TOP_LEVEL_OBJECT_TYPE_ID = l_top_level_object_type_id
581: AND EWR.TOP_LEVEL_OBJECT_ID = l_top_level_object_id;
582:
583: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
584: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
585: FND_MSG_PUB.Count_And_Get
586: (
587: p_count => x_msg_count,
588: p_data => x_msg_data
599: WHERE EWR.TOP_LEVEL_OBJECT_TYPE_ID = l_top_level_object_type_id
600: AND EWR.TOP_LEVEL_OBJECT_ID = l_top_level_object_id;
601:
602: WHEN OTHERS THEN
603: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
604: IF FND_MSG_PUB.Check_Msg_Level
605: (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
606: THEN
607: FND_MSG_PUB.Add_Exc_Msg
645:
646: PROCEDURE Check_Constrained_Children
647: (
648: p_api_version IN NUMBER,
649: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
650: p_commit IN VARCHAR2 := FND_API.G_FALSE,
651: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
652:
653: p_parent_object_id IN NUMBER,
646: PROCEDURE Check_Constrained_Children
647: (
648: p_api_version IN NUMBER,
649: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
650: p_commit IN VARCHAR2 := FND_API.G_FALSE,
651: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
652:
653: p_parent_object_id IN NUMBER,
654: p_parent_object_type_id IN NUMBER,
647: (
648: p_api_version IN NUMBER,
649: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
650: p_commit IN VARCHAR2 := FND_API.G_FALSE,
651: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
652:
653: p_parent_object_id IN NUMBER,
654: p_parent_object_type_id IN NUMBER,
655:
685: BEGIN
686: -- Standard Start of API savepoint
687:
688: -- Standard call to check for call compatibility.
689: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
690: p_api_version ,
691: l_api_name ,
692: G_PKG_NAME )
693: THEN
690: p_api_version ,
691: l_api_name ,
692: G_PKG_NAME )
693: THEN
694: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
695: END IF;
696: -- Initialize message list if p_init_msg_list is set to TRUE.
697: IF FND_API.to_Boolean( p_init_msg_list ) THEN
698: FND_MSG_PUB.initialize;
693: THEN
694: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
695: END IF;
696: -- Initialize message list if p_init_msg_list is set to TRUE.
697: IF FND_API.to_Boolean( p_init_msg_list ) THEN
698: FND_MSG_PUB.initialize;
699: END IF;
700: -- Initialize API return status to success
701: x_return_status := FND_API.G_RET_STS_SUCCESS;
697: IF FND_API.to_Boolean( p_init_msg_list ) THEN
698: FND_MSG_PUB.initialize;
699: END IF;
700: -- Initialize API return status to success
701: x_return_status := FND_API.G_RET_STS_SUCCESS;
702: -- API body
703:
704: /* Initialize the local variables */
705: l_stmt_num := 10;
800:
801:
802: IF (l_released_rowcount > 0 ) THEN
803: -- Error between two released work orders
804: x_return_status := FND_API.G_RET_STS_ERROR;
805:
806: END IF;
807:
808: END IF;
818: x_msg_count => l_msg_count,
819: x_msg_data => l_msg_data
820: );
821:
822: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
823: x_return_status := FND_API.G_RET_STS_ERROR;
824:
825: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
826: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
819: x_msg_data => l_msg_data
820: );
821:
822: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
823: x_return_status := FND_API.G_RET_STS_ERROR;
824:
825: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
826: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
827:
821:
822: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
823: x_return_status := FND_API.G_RET_STS_ERROR;
824:
825: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
826: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
827:
828: END IF;
829:
822: IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
823: x_return_status := FND_API.G_RET_STS_ERROR;
824:
825: ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
826: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
827:
828: END IF;
829:
830:
831: END LOOP;
832:
833: -- End of API body.
834: -- Standard check of p_commit.
835: IF FND_API.To_Boolean( p_commit ) THEN
836: --dbms_output.put_line('committing');
837: COMMIT WORK;
838: END IF;
839: -- Standard call to get message count and if count is 1, get message info.
841: ( p_count => x_msg_count ,
842: p_data => x_msg_data
843: );
844: EXCEPTION
845: WHEN FND_API.G_EXC_ERROR THEN
846: x_return_status := FND_API.G_RET_STS_ERROR ;
847: FND_MSG_PUB.Count_And_Get
848: ( p_count => x_msg_count ,
849: p_data => x_msg_data
842: p_data => x_msg_data
843: );
844: EXCEPTION
845: WHEN FND_API.G_EXC_ERROR THEN
846: x_return_status := FND_API.G_RET_STS_ERROR ;
847: FND_MSG_PUB.Count_And_Get
848: ( p_count => x_msg_count ,
849: p_data => x_msg_data
850: );
849: p_data => x_msg_data
850: );
851:
852: RETURN;
853: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
854:
855: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
856: FND_MSG_PUB.Count_And_Get
857: (
851:
852: RETURN;
853: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
854:
855: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
856: FND_MSG_PUB.Count_And_Get
857: (
858: p_count => x_msg_count,
859: p_data => x_msg_data
860: );
861:
862: RETURN;
863: WHEN OTHERS THEN
864: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
865: IF FND_MSG_PUB.Check_Msg_Level
866: (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
867: THEN
868: FND_MSG_PUB.Add_Exc_Msg
906: l_pending_flag VARCHAR2(1);
907: l_user_defined_status NUMBER;
908:
909: BEGIN
910: x_return_status := FND_API.G_RET_STS_SUCCESS;
911:
912: --Bug #5350181 :Changed the query to capture pending flag and user defined status
913:
914: SELECT wdj.status_type,ewod.user_defined_status_id,ewod.pending_flag
939: OR ((l_parent_status IN (4,5,12,14,15)) and (l_wo_status NOT IN (4,5,12,14,15,7)))
940: -- Bug #5350181: A child work order can't be sent for release approval when is parent is not in released status.
941: OR ((l_parent_status NOT IN (3,6))and (l_user_defined_status IN(3) and l_pending_flag='Y'))
942: ) THEN
943: x_return_status:=FND_API.G_RET_STS_ERROR;
944: END IF;
945: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('after parent status validation :'||x_return_status); END IF;
946:
947: EXCEPTION
1003: AND wdj.status_type NOT IN (4,5,12,14,15,7);
1004: END IF;
1005:
1006: IF(l_invalid_child<>0) THEN
1007: x_return_status:=FND_API.G_RET_STS_ERROR;
1008: END IF;
1009:
1010: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('after child status validation :'||x_return_status); END IF;
1011: END Validate_Status;
1043: WHERE ewod.wip_entity_id = p_work_object_id
1044: AND ewod.user_defined_status_id = ewsv.status_id;
1045: BEGIN
1046:
1047: x_return_status := FND_API.G_RET_STS_SUCCESS;
1048:
1049: OPEN get_status(p_work_object_id);
1050: FETCH get_status INTO l_wo_status_meaning ;
1051: CLOSE get_status;
1142: END LOOP;
1143:
1144: IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
1145: IF p_wo_relationship_exc_tbl.count >0 THEN
1146: x_return_status:=FND_API.G_RET_STS_ERROR;
1147: END IF;
1148: EAM_ERROR_MESSAGE_PVT.Write_Debug('after Validate_Network_Status status validation :'||x_return_status);
1149: END IF;
1150: