DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_PC_NODE_PUB

Source


1 PACKAGE BODY AHL_PC_NODE_PUB AS
2 /* $Header: AHLPPCNB.pls 115.7 2003/10/20 19:36:20 sikumar noship $ */
3 
4 	-------------------
5 	-- PROCESS_NODES --
6 	-------------------
7 --G_DEBUG VARCHAR2(1):=FND_PROFILE.VALUE('AHL_API_FILE_DEBUG_ON');
8   G_DEBUG                VARCHAR2(1)   := AHL_DEBUG_PUB.is_log_enabled;
9 
10 	PROCEDURE PROCESS_NODES (
11 		p_api_version         IN            NUMBER,
12 		p_init_msg_list       IN            VARCHAR2  := FND_API.G_TRUE,
13 		p_commit              IN            VARCHAR2  := FND_API.G_FALSE,
14 		p_validation_level    IN            NUMBER    := FND_API.G_VALID_LEVEL_FULL,
15 		p_module_type         IN            VARCHAR2  := NULL,
16     		p_x_nodes_tbl         IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_TBL,
17 		x_return_status       OUT    NOCOPY       VARCHAR2,
18 		x_msg_count           OUT    NOCOPY       NUMBER,
19 		x_msg_data            OUT    NOCOPY       VARCHAR2
20 	) IS
21 
22 	l_api_name	CONSTANT	VARCHAR2(30)	:= 'PROCESS_NODES';
23 	l_api_version	CONSTANT	NUMBER		:= 1.0;
24 	l_return_status			VARCHAR2(1);
25 
26 	BEGIN
27 		-- Standard start of API savepoint
28   		SAVEPOINT PROCESS_NODE_PUB;
29 
30   		-- Standard call to check for call compatibility
31 		IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
32 		THEN
33 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34 		END IF;
35 
36 		-- Initialize message list if p_init_msg_list is set to TRUE
37 		IF FND_API.To_Boolean(p_init_msg_list)
38 		THEN
39 			FND_MSG_PUB.Initialize;
40 		END IF;
41 
42 		-- Initialize API return status to success
43   		x_return_status := FND_API.G_RET_STS_SUCCESS;
44 
45 		IF G_DEBUG='Y' THEN
46 		  AHL_DEBUG_PUB.ENABLE_DEBUG;
47               	END IF;
48 
49 		IF (p_x_nodes_tbl.COUNT > 0)
50 		THEN
51 			FOR i IN p_x_nodes_tbl.FIRST..p_x_nodes_tbl.LAST
52 			LOOP
53 				IF (p_x_nodes_tbl(i).operation_flag <> G_DML_DELETE)
54 				THEN
55 					p_x_nodes_tbl(i).name := TRIM(p_x_nodes_tbl(i).name);
56 					p_x_nodes_tbl(i).description := TRIM(p_x_nodes_tbl(i).description);
57 
58 					-- Node name is mandatory
59 					IF (p_x_nodes_tbl(i).name IS NULL)
60 					THEN
61 						FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_NAME_REQD');
62 						FND_MSG_PUB.ADD;
63 						RAISE FND_API.G_EXC_ERROR;
64 					END IF;
65 
66 					-- Node child count is default 0
67 					IF (p_x_nodes_tbl(i).child_count IS NULL)
68 					THEN
69 						p_x_nodes_tbl(i).child_count := 0;
70 					END IF;
71 
72 					IF (p_x_nodes_tbl(i).pc_node_id IS NULL)
73 					THEN
74 						p_x_nodes_tbl(i).object_version_number := 1;
75 					END IF;
76 				END IF;
77 
78 				-- Call PVT APIs
79 				IF (p_x_nodes_tbl(i).operation_flag = G_DML_CREATE)
80 				THEN
81 					IF G_DEBUG='Y' THEN
82 		  				AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling CREATE_NODE for Name='||p_x_nodes_tbl(i).name);
83               				END IF;
84 
85 					AHL_PC_NODE_PVT.CREATE_NODE(
86 						p_api_version           => l_api_version,
87 						p_init_msg_list		=> FND_API.G_FALSE,
88 						p_commit		=> FND_API.G_FALSE,
89 						p_validation_level 	=> p_validation_level,
90                               			p_x_node_rec		=> p_x_nodes_tbl(i),
91 						x_return_status         => x_return_status,
92 						x_msg_count             => x_msg_count,
93 						x_msg_data              => x_msg_data
94 					);
95 				ELSIF (p_x_nodes_tbl(i).operation_flag = G_DML_UPDATE)
96 				THEN
97 					IF G_DEBUG='Y' THEN
98 		  				AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling UPDATE_NODE for ID='||p_x_nodes_tbl(i).pc_node_id);
99               				END IF;
100 
101 					AHL_PC_NODE_PVT.UPDATE_NODE(
102 						p_api_version           => l_api_version,
103 						p_init_msg_list		=> FND_API.G_FALSE,
104 						p_commit		=> FND_API.G_FALSE,
105 						p_validation_level 	=> p_validation_level,
106                               			p_x_node_rec		=> p_x_nodes_tbl(i),
107 						x_return_status         => x_return_status,
108 						x_msg_count             => x_msg_count,
109 						x_msg_data              => x_msg_data
110 					);
111 				ELSIF (p_x_nodes_tbl(i).operation_flag = G_DML_DELETE)
112 				THEN
113 					IF G_DEBUG='Y' THEN
114 		  				AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling DELETE_NODE for ID='||p_x_nodes_tbl(i).pc_node_id);
115               				END IF;
116 
117 					AHL_PC_NODE_PVT.DELETE_NODES(
118 						p_api_version           => l_api_version,
119 						p_init_msg_list		=> FND_API.G_FALSE,
120 						p_commit		=> FND_API.G_FALSE,
121 						p_validation_level 	=> p_validation_level,
122                               			p_x_node_rec		=> p_x_nodes_tbl(i),
123 						x_return_status         => x_return_status,
124 						x_msg_count             => x_msg_count,
125 						x_msg_data              => x_msg_data
126 					);
127 				END IF;
128 			END LOOP;
129 		END IF;
130 
131     		-- Check Error Message stack.
132 		x_msg_count := FND_MSG_PUB.count_msg;
133 		IF x_msg_count > 0 THEN
134 			RAISE FND_API.G_EXC_ERROR;
135   		END IF;
136 
137 		-- Standard check for p_commit
138     		IF FND_API.To_Boolean (p_commit)
139     		THEN
140     			COMMIT WORK;
141     		END IF;
142 
143 		-- Standard call to get message count and if count is 1, get message info
144 		FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
145 		      			    p_data  => x_msg_data,
146       					    p_encoded => fnd_api.g_false );
147 
148 	EXCEPTION
149 		WHEN FND_API.G_EXC_ERROR THEN
150 	   		x_return_status := FND_API.G_RET_STS_ERROR;
151 	   		Rollback to PROCESS_NODE_PUB;
152 	   		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
153 				      		   p_data  => x_msg_data,
154 				       		   p_encoded => fnd_api.g_false );
155 
156 	 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
157 	   		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
158 	   		Rollback to PROCESS_NODE_PUB;
159 	   		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
160 				      		   p_data  => x_msg_data,
161 				      		   p_encoded => fnd_api.g_false );
162 
163 	 	WHEN OTHERS THEN
164 	    		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
165 	    		Rollback to PROCESS_NODE_PUB;
166 	    		IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
167 	    		THEN
168 	       			fnd_msg_pub.add_exc_msg( p_pkg_name       => G_PKG_NAME,
169 				       			 p_procedure_name => 'PROCESS_NODES',
170 				       			 p_error_text     => SUBSTR(SQLERRM,1,240) );
171 	    		END IF;
172 	    		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
173 				        	   p_data  => x_msg_data,
174 				       	  	   p_encoded => fnd_api.g_false );
175 
176 	END PROCESS_NODES;
177 
178 END AHL_PC_NODE_PUB;