DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_PC_ASSOCIATION_PUB

Source


1 PACKAGE BODY AHL_PC_ASSOCIATION_PUB AS
2 /* $Header: AHLPPCAB.pls 120.1 2006/02/20 02:49:04 sathapli noship $ */
3 
4 	G_DML_CREATE	CONSTANT	VARCHAR2(1)	:= 'C';
5 	G_DML_UPDATE	CONSTANT	VARCHAR2(1)	:= 'U';
6 	G_DML_DELETE	CONSTANT	VARCHAR2(1)	:= 'D';
7 	G_DML_COPY	CONSTANT	VARCHAR2(1)	:= 'X';
8 	G_DML_ASSIGN	CONSTANT	VARCHAR2(1)	:= 'A';
9 	G_DML_LINK	CONSTANT	VARCHAR2(1)	:= 'L';
10 
11 	G_UNIT		CONSTANT	VARCHAR2(1)	:= 'U';
12 	G_PART		CONSTANT	VARCHAR2(1)	:= 'I';
13 
14 	--G_DEBUG VARCHAR2(1):=FND_PROFILE.VALUE('AHL_API_FILE_DEBUG_ON');
15       G_DEBUG                VARCHAR2(1)   := AHL_DEBUG_PUB.is_log_enabled;
16 
17 	-----------------------------
18 	-- CONVERT UNIT NAME TO ID --
19 	-----------------------------
20 	PROCEDURE CONVERT_UNIT_NAME_TO_ID ( p_x_assos_rec IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_REC )
21 	IS
22 
23 	l_unit_id NUMBER;
24 
25 	CURSOR get_id_for_name (p_pc_unit_name IN VARCHAR2)
26 	IS
27                 -- SATHAPLI :: Change for fix of Bug# 4913757 --
28                 /*
29 		select unit_config_header_id
30 		FROM ahl_unit_header_details_v
31 		where name = p_pc_unit_name;
32                 */
33                 SELECT unit_config_header_id
34                 FROM   ahl_unit_config_headers
35                 WHERE  name = p_pc_unit_name;
36 
37 	BEGIN
38 		IF (p_x_assos_rec.unit_item_id IS NULL)
39 		THEN
40 			OPEN get_id_for_name (p_x_assos_rec.unit_item_name);
41 			FETCH get_id_for_name INTO l_unit_id;
42 			IF (get_id_for_name%NOTFOUND)
43 			THEN
44 				FND_MESSAGE.Set_Name('AHL','AHL_PC_UNIT_NOT_FOUND');
45 				FND_MSG_PUB.ADD;
46 				RAISE FND_API.G_EXC_ERROR;
47 			ELSE
48 				p_x_assos_rec.unit_item_id := l_unit_id;
49 			END IF;
50 			CLOSE get_id_for_name;
51 		END IF;
52 
53 	END CONVERT_UNIT_NAME_TO_ID;
54 
55 	-----------------------------
56 	-- CONVERT UNIT NAME TO ID --
57 	-----------------------------
58 	PROCEDURE CONVERT_PART_NAME_TO_ID ( p_x_assos_rec IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_REC )
59 	IS
60 
61 	l_part_id NUMBER;
62 
63 	CURSOR get_id_for_name (p_pc_part_name IN VARCHAR2)
64 	IS
65 		select inventory_item_id
66 		FROM mtl_system_items_kfv
67 		where concatenated_segments = p_pc_part_name;
68 
69 	BEGIN
70 		IF (p_x_assos_rec.unit_item_id IS NULL)
71 		THEN
72 			OPEN get_id_for_name (p_x_assos_rec.unit_item_name);
73 			FETCH get_id_for_name INTO l_part_id;
74 			IF (get_id_for_name%NOTFOUND)
75 			THEN
76 				FND_MESSAGE.Set_Name('AHL','AHL_PC_ITEM_NOT_FOUND');
77 				FND_MSG_PUB.ADD;
78 				RAISE FND_API.G_EXC_ERROR;
79 			ELSE
80 				p_x_assos_rec.unit_item_id := l_part_id;
81 			END IF;
82 			CLOSE get_id_for_name;
83 		END IF;
84 
85 	END CONVERT_PART_NAME_TO_ID;
86 
87 	------------------------
88 	-- Declare Procedures --
89 	------------------------
90 	PROCEDURE PROCESS_ASSOCIATIONS (
91 		p_api_version         IN            NUMBER,
92 		p_init_msg_list       IN            VARCHAR2  := FND_API.G_TRUE,
93 		p_commit              IN            VARCHAR2  := FND_API.G_FALSE,
94 		p_validation_level    IN            NUMBER    := FND_API.G_VALID_LEVEL_FULL,
95 		p_module_type         IN            VARCHAR2  := NULL,
96     		p_x_assos_tbl         IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_TBL,
97 		x_return_status       OUT  NOCOPY         VARCHAR2,
98 		x_msg_count           OUT  NOCOPY         NUMBER,
99 		x_msg_data            OUT  NOCOPY         VARCHAR2
100 	) IS
101 
102 	l_api_name			CONSTANT	VARCHAR2(30)	:= 'PROCESS_ASSOCIATIONS';
103 	l_api_version			CONSTANT	NUMBER		:= 1.0;
104 	l_return_status			VARCHAR2(1);
105 
106 	BEGIN
107 		-- Standard start of API savepoint
108   		SAVEPOINT PROCESS_ASSOCIATION_PUB;
109 
110   		-- Standard call to check for call compatibility
111 		IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
112 		THEN
113 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
114 		END IF;
115 
116 		-- Initialize message list if p_init_msg_list is set to TRUE
117 		IF FND_API.To_Boolean(p_init_msg_list)
118 		THEN
119 			FND_MSG_PUB.Initialize;
120 		END IF;
121 
122 		-- Initialize API return status to success
123   		x_return_status := FND_API.G_RET_STS_SUCCESS;
124 
125 		IF G_DEBUG='Y' THEN
126 		  AHL_DEBUG_PUB.ENABLE_DEBUG;
127               	END IF;
128 
129 		IF (p_x_assos_tbl.COUNT > 0)
130 		THEN
131 			FOR i IN p_x_assos_tbl.FIRST..p_x_assos_tbl.LAST
132 			LOOP
133 				-- Call PVT APIs
134 				IF (p_x_assos_tbl(i).operation_flag = G_DML_CREATE OR p_x_assos_tbl(i).operation_flag = G_DML_ASSIGN)
135 				THEN
136 					IF (p_x_assos_tbl(i).pc_association_id IS NULL)
137 					THEN
138 						p_x_assos_tbl(i).object_version_number := 1;
139 					END IF;
140 
141 					p_x_assos_tbl(i).unit_item_name := TRIM(p_x_assos_tbl(i).unit_item_name);
142 
143 					IF (p_x_assos_tbl(i).association_type_flag = G_UNIT)
144 					THEN
145 						IF p_module_type IS NULL OR p_module_type = 'JSP'
146 						THEN
147 							p_x_assos_tbl(i).unit_item_id := NULL;
148 							CONVERT_UNIT_NAME_TO_ID(p_x_assos_tbl(i));
149 						END IF;
150 
151 						IF G_DEBUG='Y' THEN
152 		  				   AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling ATTACH_UNIT for p_x_assos_tbl('||i||').unit_id'||p_x_assos_tbl(i).unit_item_id);
153               					END IF;
154 
155 						AHL_PC_ASSOCIATION_PVT.ATTACH_UNIT
156 						(
157 							p_api_version           => l_api_version,
158 							p_init_msg_list		=> FND_API.G_FALSE,
159 							p_commit		=> FND_API.G_FALSE,
160 							p_validation_level 	=> p_validation_level,
161 							p_x_assos_rec		=> p_x_assos_tbl(i),
162 							x_return_status         => x_return_status,
163 							x_msg_count             => x_msg_count,
164 							x_msg_data              => x_msg_data
165 						);
166 					ELSIF (p_x_assos_tbl(i).association_type_flag = G_PART)
167 					THEN
168 						IF p_module_type IS NULL OR p_module_type = 'JSP'
169 						THEN
170 							p_x_assos_tbl(i).unit_item_id := NULL;
171 							CONVERT_PART_NAME_TO_ID(p_x_assos_tbl(i));
172 						END IF;
173 
174 						IF G_DEBUG='Y' THEN
175 		  					AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling ATTACH_PART for p_x_assos_tbl('||i||').item_id'||p_x_assos_tbl(i).unit_item_id);
176               					END IF;
177 
178 						AHL_PC_ASSOCIATION_PVT.ATTACH_ITEM
179 						(
180 							p_api_version           => l_api_version,
181 							p_init_msg_list		=> FND_API.G_FALSE,
182 							p_commit		=> FND_API.G_FALSE,
183 							p_validation_level 	=> p_validation_level,
184 							p_x_assos_rec		=> p_x_assos_tbl(i),
185 							x_return_status         => x_return_status,
186 							x_msg_count             => x_msg_count,
187 							x_msg_data              => x_msg_data
188 						);
189 					END IF;
190 				ELSIF (p_x_assos_tbl(i).operation_flag = G_DML_DELETE)
191 				THEN
192 					IF (p_x_assos_tbl(i).association_type_flag = G_UNIT)
193 					THEN
194 						IF p_module_type IS NULL OR p_module_type = 'JSP'
195 						THEN
196 							p_x_assos_tbl(i).unit_item_id := NULL;
197 							CONVERT_UNIT_NAME_TO_ID(p_x_assos_tbl(i));
198 						END IF;
199 
200 						IF G_DEBUG='Y' THEN
201 		  					AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling DETACH_UNIT for p_x_assos_tbl('||i||').unit_id'||p_x_assos_tbl(i).unit_item_id);
202               					END IF;
203 
204 						AHL_PC_ASSOCIATION_PVT.DETACH_UNIT
205 						(
206 							p_api_version           => l_api_version,
207 							p_init_msg_list		=> FND_API.G_FALSE,
208 							p_commit		=> FND_API.G_FALSE,
209 							p_validation_level 	=> p_validation_level,
210 							p_x_assos_rec		=> p_x_assos_tbl(i),
211 							x_return_status         => x_return_status,
212 							x_msg_count             => x_msg_count,
213 							x_msg_data              => x_msg_data
214 						);
215 					ELSIF (p_x_assos_tbl(i).association_type_flag = G_PART)
216 					THEN
217 						IF p_module_type IS NULL OR p_module_type = 'JSP'
218 						THEN
219 							p_x_assos_tbl(i).unit_item_id := NULL;
220 							CONVERT_PART_NAME_TO_ID(p_x_assos_tbl(i));
221 						END IF;
222 
223 						IF G_DEBUG='Y' THEN
224 		  					AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling DETACH_PART for p_x_assos_tbl('||i||').item_id'||p_x_assos_tbl(i).unit_item_id);
225               					END IF;
226 
227 						AHL_PC_ASSOCIATION_PVT.DETACH_ITEM
228 						(
229 							p_api_version           => l_api_version,
230 							p_init_msg_list		=> FND_API.G_FALSE,
231 							p_commit		=> FND_API.G_FALSE,
232 							p_validation_level 	=> p_validation_level,
233 							p_x_assos_rec		=> p_x_assos_tbl(i),
234 							x_return_status         => x_return_status,
235 							x_msg_count             => x_msg_count,
236 							x_msg_data              => x_msg_data
237 						);
238 					END IF;
239 				END IF;
240 			END LOOP;
241 		END IF;
242 
243     		-- Check Error Message stack.
244 		x_msg_count := FND_MSG_PUB.count_msg;
245 		IF x_msg_count > 0 THEN
246 			RAISE FND_API.G_EXC_ERROR;
247   		END IF;
248 
249 		-- Standard check for p_commit
250     		IF FND_API.To_Boolean (p_commit)
251     		THEN
252     			COMMIT WORK;
253     		END IF;
254 
255 		-- Standard call to get message count and if count is 1, get message info
256 		FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
257 		      			    p_data  => x_msg_data,
258       					    p_encoded => fnd_api.g_false );
259 
260 	EXCEPTION
261 		WHEN FND_API.G_EXC_ERROR THEN
262 	   		x_return_status := FND_API.G_RET_STS_ERROR;
263 	   		Rollback to PROCESS_ASSOCIATION_PUB;
264 	   		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
265 				      		   p_data  => x_msg_data,
266 				       		   p_encoded => fnd_api.g_false );
267 
268 	 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
269 	   		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
270 	   		Rollback to PROCESS_ASSOCIATION_PUB;
271 	   		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
272 				      		   p_data  => x_msg_data,
273 				      		   p_encoded => fnd_api.g_false );
274 
275 	 	WHEN OTHERS THEN
276 	    		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
277 	    		Rollback to PROCESS_ASSOCIATION_PUB;
278 	    		IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
279 	    		THEN
280 	       			fnd_msg_pub.add_exc_msg( p_pkg_name       => G_PKG_NAME,
281 				       			 p_procedure_name => 'PROCESS_ASSOCIATIONS',
282 				       			 p_error_text     => SUBSTR(SQLERRM,1,240) );
283 	    		END IF;
284 	    		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
285 				        	   p_data  => x_msg_data,
286 				       	  	   p_encoded => fnd_api.g_false );
287 
288 	END PROCESS_ASSOCIATIONS;
289 
290 	PROCEDURE PROCESS_DOCUMENT (
291 		p_api_version         IN            NUMBER,
292 		p_init_msg_list       IN            VARCHAR2  := FND_API.G_FALSE,
293 		p_commit              IN            VARCHAR2  := FND_API.G_FALSE,
294 		p_validation_level    IN            NUMBER    := FND_API.G_VALID_LEVEL_FULL,
295 		p_module_type	      IN            VARCHAR2  := NULL,
296 		p_x_assos_tbl         IN OUT NOCOPY AHL_DI_ASSO_DOC_GEN_PUB.association_tbl,
297 		x_return_status       OUT    NOCOPY       VARCHAR2,
298 		x_msg_count           OUT    NOCOPY       NUMBER,
299 		x_msg_data            OUT    NOCOPY       VARCHAR2
300 	)
301 	IS
302 
303 	l_api_name			CONSTANT	VARCHAR2(30)	:= 'PROCESS_DOCUMENT';
304 	l_api_version			CONSTANT	NUMBER		:= 1.0;
305 	l_return_status			VARCHAR2(1);
306 
307 	BEGIN
308 		-- Standard start of API savepoint
309   		SAVEPOINT PROCESS_DOCUMENT_PUB;
310 
311   		-- Standard call to check for call compatibility
312 		IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
313 		THEN
314 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315 		END IF;
316 
317 		-- Initialize message list if p_init_msg_list is set to TRUE
318 		IF FND_API.To_Boolean(p_init_msg_list)
319 		THEN
320 			FND_MSG_PUB.Initialize;
321 		END IF;
322 
323 		-- Initialize API return status to success
324   		x_return_status := FND_API.G_RET_STS_SUCCESS;
325 
326 		IF G_DEBUG='Y' THEN
327 		  AHL_DEBUG_PUB.ENABLE_DEBUG;
328               	END IF;
329 
330 		AHL_PC_ASSOCIATION_PVT.PROCESS_DOCUMENT
331 		(
332 			p_api_version           => l_api_version,
333 			p_init_msg_list		=> FND_API.G_FALSE,
334 			p_commit		=> FND_API.G_FALSE,
335 			p_validation_level 	=> p_validation_level,
336 			p_module_type		=> p_module_type,
337 			p_x_assos_tbl		=> p_x_assos_tbl,
338 			x_return_status         => x_return_status,
339 			x_msg_count             => x_msg_count,
340 			x_msg_data              => x_msg_data
341 		);
342 
343     		-- Check Error Message stack.
344 		x_msg_count := FND_MSG_PUB.count_msg;
345 		IF x_msg_count > 0 THEN
346 			RAISE FND_API.G_EXC_ERROR;
347   		END IF;
348 
349 		-- Standard check for p_commit
350     		IF FND_API.To_Boolean (p_commit)
351     		THEN
352     			COMMIT WORK;
353     		END IF;
354 
355 		-- Standard call to get message count and if count is 1, get message info
356 		FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
357 		      			    p_data  => x_msg_data,
358       					    p_encoded => fnd_api.g_false );
359 
360 	EXCEPTION
361 		WHEN FND_API.G_EXC_ERROR THEN
362 			x_return_status := FND_API.G_RET_STS_ERROR;
363 			Rollback to PROCESS_DOCUMENT_PUB;
364 			FND_MSG_PUB.count_and_get( p_count => x_msg_count,
365 						   p_data  => x_msg_data,
366 						   p_encoded => fnd_api.g_false );
367 
368 		WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
369 			x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
370 			Rollback to PROCESS_DOCUMENT_PUB;
371 			FND_MSG_PUB.count_and_get( p_count => x_msg_count,
372 						   p_data  => x_msg_data,
373 						   p_encoded => fnd_api.g_false );
374 
375 		WHEN OTHERS THEN
376 			x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
377 			Rollback to PROCESS_DOCUMENT_PUB;
378 			IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
379 			THEN
380 				fnd_msg_pub.add_exc_msg(p_pkg_name       => G_PKG_NAME,
381 							 p_procedure_name => 'PROCESS_DOCUMENT',
382 							 p_error_text     => SUBSTR(SQLERRM, 1, 240));
383 			END IF;
384 			FND_MSG_PUB.count_and_get( p_count => x_msg_count,
385 						   p_data  => x_msg_data,
386 					   	   p_encoded => fnd_api.g_false );
387 
388 	END PROCESS_DOCUMENT;
389 
390 END AHL_PC_ASSOCIATION_PUB;