DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_RM_ASSO_DOCASO_PVT

Source


1 PACKAGE BODY AHL_RM_ASSO_DOCASO_PVT AS
2 /* $Header: AHLVRODB.pls 120.1.12020000.2 2012/12/07 13:41:23 sareepar ship $ */
3 
4 G_PKG_NAME    VARCHAR2(30):= 'AHL_RM_ASSO_DOCASO_PVT';
5 G_DEBUG  VARCHAR2(1)   := NVL(AHL_DEBUG_PUB.is_log_enabled,'N');
6 
7  -- Populate doc table from RM table info.
8 PROCEDURE Populate_Doc_Tbl(
9 p_x_association_tbl	IN OUT NOCOPY	doc_association_tbl,
10 p_x_doc_assos_tbl	IN OUT NOCOPY 	AHL_DI_ASSO_DOC_GEN_PUB.association_tbl
11 )
12 IS
13 
14 BEGIN
15 
16     IF p_x_association_tbl.count >0 THEN
17       FOR i in p_x_association_tbl.FIRST .. p_x_association_tbl.LAST
18       LOOP
19 	  p_x_doc_assos_tbl(i).DOC_TITLE_ASSO_ID	:= p_x_association_tbl(i).DOC_TITLE_ASSO_ID;
20 	  p_x_doc_assos_tbl(i).DOCUMENT_ID		:= p_x_association_tbl(i).DOCUMENT_ID;
21 	  p_x_doc_assos_tbl(i).DOCUMENT_NO		:= p_x_association_tbl(i).DOCUMENT_NO;
22 	  p_x_doc_assos_tbl(i).DOC_REVISION_ID		:= p_x_association_tbl(i).DOC_REVISION_ID;
23 	  p_x_doc_assos_tbl(i).REVISION_NO		:= p_x_association_tbl(i).REVISION_NO;
24 	  p_x_doc_assos_tbl(i).USE_LATEST_REV_FLAG	:= p_x_association_tbl(i).USE_LATEST_REV_FLAG;
25 	  p_x_doc_assos_tbl(i).ASO_OBJECT_TYPE_CODE	:= p_x_association_tbl(i).OBJECT_TYPE_CODE;
26 	  p_x_doc_assos_tbl(i).ASO_OBJECT_DESC		:= p_x_association_tbl(i).OBJECT_TYPE_DESC;
27 	  p_x_doc_assos_tbl(i).ASO_OBJECT_ID		:= p_x_association_tbl(i).OBJECT_ID;
28 	  p_x_doc_assos_tbl(i).SERIAL_NO		:= p_x_association_tbl(i).SERIAL_NO;
29 	  p_x_doc_assos_tbl(i).SOURCE_LANG		:= p_x_association_tbl(i).SOURCE_LANG;
30 	  p_x_doc_assos_tbl(i).CHAPTER			:= p_x_association_tbl(i).CHAPTER;
31 	  p_x_doc_assos_tbl(i).SECTION			:= p_x_association_tbl(i).SECTION;
32 	  p_x_doc_assos_tbl(i).SUBJECT			:= p_x_association_tbl(i).SUBJECT;
33 	  p_x_doc_assos_tbl(i).PAGE			:= p_x_association_tbl(i).PAGE;
34 	  p_x_doc_assos_tbl(i).FIGURE			:= p_x_association_tbl(i).FIGURE;
35 	  p_x_doc_assos_tbl(i).NOTE			:= p_x_association_tbl(i).NOTE;
36 	  p_x_doc_assos_tbl(i).SOURCE_REF_CODE		:= p_x_association_tbl(i).SOURCE_REF_CODE;
37 	  p_x_doc_assos_tbl(i).SOURCE_REF_MEAN		:= p_x_association_tbl(i).SOURCE_REF_MEAN;
38 	  p_x_doc_assos_tbl(i).OBJECT_VERSION_NUMBER	:= p_x_association_tbl(i).OBJECT_VERSION_NUMBER;
39 	  p_x_doc_assos_tbl(i).ATTRIBUTE_CATEGORY	:= p_x_association_tbl(i).ATTRIBUTE_CATEGORY;
40 	  p_x_doc_assos_tbl(i).ATTRIBUTE1		:= p_x_association_tbl(i).ATTRIBUTE1;
41 	  p_x_doc_assos_tbl(i).ATTRIBUTE2		:= p_x_association_tbl(i).ATTRIBUTE2;
42 	  p_x_doc_assos_tbl(i).ATTRIBUTE3		:= p_x_association_tbl(i).ATTRIBUTE3;
43 	  p_x_doc_assos_tbl(i).ATTRIBUTE4		:= p_x_association_tbl(i).ATTRIBUTE4;
44 	  p_x_doc_assos_tbl(i).ATTRIBUTE5		:= p_x_association_tbl(i).ATTRIBUTE5;
45 	  p_x_doc_assos_tbl(i).ATTRIBUTE6		:= p_x_association_tbl(i).ATTRIBUTE6;
46 	  p_x_doc_assos_tbl(i).ATTRIBUTE7		:= p_x_association_tbl(i).ATTRIBUTE7;
47 	  p_x_doc_assos_tbl(i).ATTRIBUTE8		:= p_x_association_tbl(i).ATTRIBUTE8;
48 	  p_x_doc_assos_tbl(i).ATTRIBUTE9		:= p_x_association_tbl(i).ATTRIBUTE9;
49 	  p_x_doc_assos_tbl(i).ATTRIBUTE10		:= p_x_association_tbl(i).ATTRIBUTE10;
50 	  p_x_doc_assos_tbl(i).ATTRIBUTE11		:= p_x_association_tbl(i).ATTRIBUTE11;
51 	  p_x_doc_assos_tbl(i).ATTRIBUTE12		:= p_x_association_tbl(i).ATTRIBUTE12;
52 	  p_x_doc_assos_tbl(i).ATTRIBUTE13		:= p_x_association_tbl(i).ATTRIBUTE13;
53 	  p_x_doc_assos_tbl(i).ATTRIBUTE14		:= p_x_association_tbl(i).ATTRIBUTE14;
54 	  p_x_doc_assos_tbl(i).ATTRIBUTE15		:= p_x_association_tbl(i).ATTRIBUTE15;
55 	  p_x_doc_assos_tbl(i).DML_OPERATION		:= p_x_association_tbl(i).DML_OPERATION;
56       END LOOP;
57    END IF;
58 
59 END Populate_Doc_Tbl;
60 
61 
62 PROCEDURE PROCESS_ASSOCIATION
63 (
64  p_api_version                  IN  		NUMBER    := 1.0,
65  p_init_msg_list                IN  		VARCHAR2  := FND_API.G_TRUE,
66  p_commit                       IN  		VARCHAR2  := FND_API.G_FALSE,
67  p_validation_level             IN  		NUMBER    := FND_API.G_VALID_LEVEL_FULL,
68  p_validate_only            	IN  		VARCHAR2  := FND_API.G_TRUE,
69  p_default                      IN  		VARCHAR2  := FND_API.G_FALSE,
70  p_module_type                  IN  		VARCHAR2,
71  x_return_status                OUT 		NOCOPY VARCHAR2,
72  x_msg_count                    OUT 		NOCOPY NUMBER,
73  x_msg_data                     OUT 		NOCOPY VARCHAR2,
74  p_x_association_tbl            IN  OUT NOCOPY  doc_association_tbl
75  )
76 
77 IS
78 
79 cursor get_route_status (p_route_id in number)
80 is
81 select revision_status_code
82 from ahl_routes_app_v
83 where route_id = p_route_id;
84 
85 l_obj_status 			VARCHAR2(30);
86 
87 cursor get_oper_status (p_operation_id in number)
88 is
89 select revision_status_code
90 from ahl_operations_b
91 where operation_id = p_operation_id;
92 
93 l_api_name                  VARCHAR2(30)   := 'process_association';
94 l_api_version               NUMBER         := 1.0;
95 l_return_status             VARCHAR2(1);
96 l_msg_count                 NUMBER	       := NULL;
97 l_msg_data			VARCHAR2(2000);
98 l_x_operation_rec           AHL_RM_OPERATION_PVT.operation_rec_type ;
99 l_x_route_rec               AHL_RM_ROUTE_PVT.route_rec_type ;
100 l_x_doc_assos_tbl           AHL_DI_ASSO_DOC_GEN_PUB.association_tbl;
101 l_object_status		   VARCHAR2(30)		:=NULL;
102 BEGIN
103 
104 
105 	-- Standard call to check for call compatibility.
106 	IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
107 				       p_api_version,
108 				       l_api_name,G_PKG_NAME)
109 	THEN
110 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
111 	END IF;
112 
113 	-- Standard Start of API savepoint
114 	SAVEPOINT process_association;
115 
116 	-- Check if API is called in debug mode. If yes, enable debug.
117 
118 	IF G_DEBUG='Y' THEN
119 	AHL_DEBUG_PUB.enable_debug;
120 	END IF;
121 
122 	-- Debug info.
123 
124 	IF G_DEBUG='Y' THEN
125 	AHL_DEBUG_PUB.debug( 'enter ahl_rm_asso_doc_aso_pub.Process Association');
126 	END IF;
127 
128 	-- Initialize message list if p_init_msg_list is set to TRUE.
129 	IF FND_API.to_boolean(p_init_msg_list)
130 	THEN
131 		FND_MSG_PUB.initialize;
132 	END IF;
133 
134 	--  Initialize API return status to success
135 
136 	x_return_status:=FND_API.G_RET_STS_SUCCESS ;
137 
138         IF p_x_association_tbl.count >0 THEN
139          FOR i in p_x_association_tbl.FIRST .. p_x_association_tbl.LAST
140          LOOP
141           AHL_RM_ROUTE_UTIL.validate_lookup(
142 		x_return_status 	=>	x_return_status,
143 		x_msg_data		=>	x_msg_data,
144 		p_lookup_type		=>	'AHL_OBJECT_TYPE',
145 		p_lookup_meaning	=>	p_x_association_tbl(i).object_type_desc,
146 		p_x_lookup_code		=>	p_x_association_tbl(i).object_type_code
147 	   );
148 	  IF x_return_status = FND_API.G_RET_STS_ERROR THEN
149 	     IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
150 		 fnd_log.string
151 		 (
152 		     fnd_log.level_statement,
153 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
154 		     'Error -- Invalid lookup specified'
155 		 );
156 	     END IF;
157 	     RAISE FND_API.G_EXC_ERROR;
158 	  END IF;
159 
160 	  -- If Id is null derive object id from object Number and revision
161 	  -- This will fail if no record are passed to this API or if records with different association types are passed. This needs to be fixed sooner or later. - Balaji
162 	  IF p_x_association_tbl(i).object_id IS NULL THEN
163 		IF p_x_association_tbl(i).object_type_code = 'ROUTE' THEN
164 		  -- Function to convert Operation number, operation revision to id
165 		  AHL_RM_ROUTE_UTIL.Route_Number_To_Id
166 		  (
167 		   p_route_number		=>	p_x_association_tbl(i).object_number,
168 		   p_route_revision		=>	p_x_association_tbl(i).object_revision,
169 		   x_route_id			=>	p_x_association_tbl(i).object_id,
170 		   x_return_status		=>	x_return_status
171 		  );
172 		ELSIF p_x_association_tbl(i).object_type_code = 'OPERATION' THEN
173 		  -- Function to convert Operation number, operation revision to id
174 		  AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
175 		  (
176 		   p_operation_number		=>	p_x_association_tbl(i).object_number,
177 		   p_operation_revision		=>	p_x_association_tbl(i).object_revision,
178 		   x_operation_id		=>	p_x_association_tbl(i).object_id,
179 		   x_return_status		=>	x_return_status
180 		  );
181 		END IF;
182 		IF x_return_status = FND_API.G_RET_STS_ERROR THEN
183 		     IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
184 			 fnd_log.string
185 			 (
186 			     fnd_log.level_statement,
187 			    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
188 			     'Error in converting Object Number, Object Revision to ID'
189 			 );
190 		     END IF;
191 		     RAISE FND_API.G_EXC_ERROR;
192 		END IF;
193 	   END IF;
194 	  END LOOP;
195 	END IF;
196 
197 	--l_x_association_tbl  := p_x_association_tbl  ;
198 
199 	--This is to be added before calling   AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION ()
200 	-- Validate Application Usage
201 	IF (p_x_association_tbl(1).object_type_code = 'ROUTE')
202 	THEN
203 	  AHL_RM_ROUTE_UTIL.validate_ApplnUsage
204 	  (
205 	     p_object_id              => p_x_association_tbl(1).OBJECT_ID,
206 	     p_association_type       => p_x_association_tbl(1).OBJECT_TYPE_CODE,
207 	     x_return_status          => x_return_status,
208 	     x_msg_data               => x_msg_data
209 	  );
210 
211 	-- If any severe error occurs, then, abort API.
212 	  IF x_return_status = FND_API.G_RET_STS_ERROR THEN
213 	    RAISE FND_API.G_EXC_ERROR;
214 	  ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
215 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
216 	  END IF;
217 	END IF;
218 
219 	-- Populate doc table from RM table info. procedure added in 11.5.10
220 	populate_doc_tbl(
221 	p_x_association_tbl	=> p_x_association_tbl,
222 	p_x_doc_assos_tbl	=> l_x_doc_assos_tbl
223 	);
224 
225 
226 	 AHL_DEBUG_PUB.debug( 'before call on AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION');
227 
228 	AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION
229 	(
230 	 p_api_version               => p_api_version ,
231 	 p_init_msg_list             => p_init_msg_list ,
232 	 p_commit                    => FND_API.G_FALSE ,
233 	 p_validation_level          => p_validation_level ,
234 	 p_validate_only             => p_validate_only ,
235 	 p_module_type               => p_module_type ,
236 	 x_return_status             => x_return_status ,
237 	 x_msg_count                 => x_msg_count ,
238 	 x_msg_data                  => x_msg_data ,
239 	 p_x_association_tbl         => l_x_doc_assos_tbl
240 	) ;
241 
242 	l_msg_count := FND_MSG_PUB.count_msg;
243 
244 	IF l_msg_count > 0 THEN
245 	   X_msg_count := l_msg_count;
246 	   X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
247 	   RAISE FND_API.G_EXC_ERROR;
248 	END IF;
249 
250 	-- call is success so copy the DOC_TITLE_ASSO_ID and Object_version_number back into RM record structure. Balaji added in 11510+ as a part of code cleanup.
251 	FOR i IN l_x_doc_assos_tbl.FIRST..l_x_doc_assos_tbl.LAST
252 	LOOP
253 		p_x_association_tbl(i).DOC_TITLE_ASSO_ID := l_x_doc_assos_tbl(i).DOC_TITLE_ASSO_ID;
254 		p_x_association_tbl(i).OBJECT_VERSION_NUMBER := l_x_doc_assos_tbl(i).OBJECT_VERSION_NUMBER;
255 	END LOOP;
256 
257 	IF G_DEBUG='Y' THEN
258 	    AHL_DEBUG_PUB.debug( 'AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION is called');
259 	    AHL_DEBUG_PUB.debug( 'PRITHWI the aso object type code is '||  p_x_association_tbl(1).object_type_code );
260 	END IF;
261 
262 	IF ( p_x_association_tbl(1).object_type_code = 'OPERATION')
263 	THEN
264 		  IF G_DEBUG='Y' THEN
265 			AHL_DEBUG_PUB.debug( 'aso_object_type_code = OPERATION');
266 		  END IF;
267 
268 		-- Check if the Route is existing and in Draft status
269 		--FP #8410484
270 		--AHL_RM_ROUTE_UTIL.validate_operation_status
271 		--(
272 			--p_x_association_tbl(1).OBJECT_ID,
273 			--l_msg_data,
274 			--l_return_status
275 		--);
276 
277 		OPEN get_oper_status( p_x_association_tbl(1).OBJECT_ID);
278 		FETCH get_oper_status INTO l_object_status;
279 		IF get_oper_status%NOTFOUND THEN
280 			l_return_status := FND_API.G_RET_STS_ERROR;
281 			l_msg_data := 'AHL_RM_INVALID_OPERATION';
282 		END IF;
283 		IF ( l_object_status <> 'DRAFT' AND
284 			l_object_status <> 'APPROVAL_REJECTED' AND
285 			l_object_status <> 'COMPLETE') THEN
286 			l_return_status := FND_API.G_RET_STS_ERROR;
287 			l_msg_data := 'AHL_RM_INVALID_OPER_STATUS';
288 		END IF;
289 		CLOSE get_oper_status;
290 		-- End of FP #8410484
291 		IF l_return_status = FND_API.G_RET_STS_ERROR THEN
292 			FND_MESSAGE.SET_NAME('AHL',l_msg_data);
293 			FND_MSG_PUB.ADD;
294 			x_return_status := l_return_status;
295 			RETURN;
296 		END IF;
297 
298 		-- Update route status from APPROVAL_REJECTED to DRAFT
299 		OPEN get_oper_status (p_x_association_tbl(1).OBJECT_ID);
300 		FETCH get_oper_status INTO l_obj_status;
301 		IF (get_oper_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
302 		THEN
303 			UPDATE ahl_operations_b
304 			SET revision_status_code = 'DRAFT'
305 			WHERE operation_id = p_x_association_tbl(1).OBJECT_ID;
306 		END IF;
307 		CLOSE get_oper_status;
308 
309 
310 	ELSIF ( p_x_association_tbl(1).object_type_code = 'ROUTE')
311 	THEN
312 		IF G_DEBUG='Y' THEN
313 			AHL_DEBUG_PUB.debug( 'aso_object_type_code = ROUTE');
314 		END IF;
315 
316 		-- Check if the Route is existing and in Draft status
317 		-- FP #8410484
318 		--AHL_RM_ROUTE_UTIL.validate_route_status
319 		--(
320 			--p_x_association_tbl(1).OBJECT_ID,
321 			--l_msg_data,
322 			--l_return_status
323 		--);
324 		OPEN get_route_status( p_x_association_tbl(1).OBJECT_ID);
325 		FETCH get_route_status INTO l_object_status;
326 		IF get_route_status%NOTFOUND THEN
327 			l_return_status := FND_API.G_RET_STS_ERROR;
328 			l_msg_data := 'AHL_RM_INVALID_ROUTE';
329 		END IF;
330 		IF ( l_object_status <> 'DRAFT' AND
331 			l_object_status <> 'APPROVAL_REJECTED' AND
332 			l_object_status <> 'COMPLETE') THEN
333 			l_return_status := FND_API.G_RET_STS_ERROR;
334 			l_msg_data := 'AHL_RM_INVALID_ROUTE_STATUS';
335 		END IF;
336 		CLOSE get_route_status;
337 		--End of FP #8410484
338 		IF l_return_status = FND_API.G_RET_STS_ERROR THEN
339 			FND_MESSAGE.SET_NAME('AHL',l_msg_data);
340 			FND_MSG_PUB.ADD;
341 			x_return_status := l_return_status;
342 			RETURN;
343 		END IF;
344 
345 		-- Update route status from APPROVAL_REJECTED to DRAFT
346   		OPEN get_route_status (p_x_association_tbl(1).OBJECT_ID);
347 		FETCH get_route_status INTO l_obj_status;
348 		IF (get_route_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
349 		THEN
350 			UPDATE ahl_routes_b
351 			SET revision_status_code = 'DRAFT'
352 			WHERE route_id = p_x_association_tbl(1).OBJECT_ID;
353 		END IF;
354 		CLOSE get_route_status;
355 
356 	END IF ;
357 	l_msg_count := FND_MSG_PUB.count_msg;
358 
359 	IF l_msg_count > 0 THEN
360 	   X_msg_count := l_msg_count;
361 	   X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
362 	   RAISE FND_API.G_EXC_ERROR;
363 	END IF;
364 
365 	 IF FND_API.TO_BOOLEAN(p_commit) THEN
366 	    COMMIT;
367 	 END IF;
368 
369 	-- Check if API is called in debug mode. If yes, disable debug.
370 
371 	IF G_DEBUG='Y' THEN
372 		  AHL_DEBUG_PUB.disable_debug;
373 	END IF;
374 
375 	EXCEPTION
376 	 WHEN FND_API.G_EXC_ERROR THEN
377 	    ROLLBACK TO process_association;
378 	    x_return_status := FND_API.G_RET_STS_ERROR;
379 	    FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
380 				       p_count => x_msg_count,
381 				       p_data  => X_msg_data);
382 		-- Debug info.
383 		IF G_DEBUG='Y' THEN
384 			  AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
385 			  AHL_DEBUG_PUB.debug( 'ahl_rm_asso_doc_aso_pub.Process Association');
386 			  AHL_DEBUG_PUB.disable_debug;
387 		END IF;
388 
389 	 WHEN OTHERS THEN
390 	    ROLLBACK TO process_association;
391 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
392 	    IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
393 	    THEN
394 	    fnd_msg_pub.add_exc_msg(p_pkg_name        =>G_PKG_NAME ,
395 				    p_procedure_name  => 'PROCESS_ASSOCIATION',
396 				    p_error_text      => SUBSTR(SQLERRM,1,240));
397 	    END IF;
398 	    FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
399 				       p_count => x_msg_count,
400 				       p_data  => X_msg_data);
401 
402 
403 
404 END process_association;
405 
406 END AHL_RM_ASSO_DOCASO_PVT;