DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_FMP_MR_DOC_ASSO_PVT

Source


1 PACKAGE BODY AHL_FMP_MR_DOC_ASSO_PVT AS
2 /* $Header: AHLVMRDB.pls 120.0 2005/05/26 01:05:23 appldev noship $ */
3 
4 G_PKG_NAME    VARCHAR2(30):= 'AHL_FMP_MR_DOC_ASSO_PVT';
5 G_APPLN_USAGE           VARCHAR2(30):=RTRIM(LTRIM(FND_PROFILE.VALUE('AHL_APPLN_USAGE')));
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).MR_HEADER_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_Doc_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 IS
77 
78 l_api_name                  VARCHAR2(30)   := 'PROCESS_DOC_ASSOCIATION';
79 l_api_version               NUMBER         := 1.0;
80 l_x_doc_assos_tbl           AHL_DI_ASSO_DOC_GEN_PUB.association_tbl;
81 
82 CURSOR mr_details_csr_type(p_mr_header_id  NUMBER)
83 IS
84 SELECT mr_status_code,type_code
85 From AHL_MR_HEADERS_APP_V
86 Where mr_header_id=p_mr_header_id
87 And mr_status_code IN('DRAFT','APPROVAL_REJECTED');
88 
89 l_mr_rec               mr_details_csr_type%rowtype;
90 
91 BEGIN
92         IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
93 		fnd_log.string
94 		(
95 			fnd_log.level_procedure,
96 			'ahl.plsql.'||g_pkg_name||'.'||l_api_name||'.begin',
97 			'At the start of PLSQL procedure'
98 		);
99         END IF;
100 
101 	--  Initialize API return status to success
102 	x_return_status:=FND_API.G_RET_STS_SUCCESS ;
103 
104 	-- Standard Start of API savepoint
105 	SAVEPOINT process_association_pvt;
106 
107 	-- Standard call to check for call compatibility.
108 	IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
109 				       p_api_version,
110 				       l_api_name,G_PKG_NAME)
111 	THEN
112 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
113 	END IF;
114 
115 	-- Initialize message list if p_init_msg_list is set to TRUE.
116 	IF FND_API.to_boolean(p_init_msg_list)
117 	THEN
118 		FND_MSG_PUB.initialize;
119 	END IF;
120 
121 	--Check application usage code is not null
122 	IF g_appln_usage is null
123 	THEN
124 		FND_MESSAGE.SET_NAME('AHL','AHL_COM_APP_PRFL_UNDEF');
125 		FND_MSG_PUB.ADD;
126 		IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
127 		 fnd_log.string
128 		 (
129 		     fnd_log.level_error,
130 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
131 		     'Error -- Application usage code is null'
132 		 );
133 		END IF;
134 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
135 	END IF;
136 
137         IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
138 	         fnd_log.string
139 	         (
140 		     fnd_log.level_statement,
141 	            'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
142 		     'Before doing value to id conversion.....'
143 	         );
144         END IF;
145 
146 	IF p_x_association_tbl.count >0 THEN
147 	    FOR i in p_x_association_tbl.FIRST .. p_x_association_tbl.LAST
148 	    LOOP
149 		 -- Convert(if required) and validate the object_type lookup
150 		 AHL_RM_ROUTE_UTIL.validate_lookup(
151 			x_return_status 	=>	x_return_status,
152 			x_msg_data		=>	x_msg_data,
153 			p_lookup_type		=>	'AHL_OBJECT_TYPE',
154 			p_lookup_meaning	=>	p_x_association_tbl(i).object_type_desc,
155 			p_x_lookup_code		=>	p_x_association_tbl(i).object_type_code
156 		   );
157 		  IF x_return_status = FND_API.G_RET_STS_ERROR THEN
158 		     IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
159 			 fnd_log.string
160 			 (
161 			     fnd_log.level_statement,
162 			    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
163 			     'Error -- Invalid lookup specified'
164 			 );
165 		     END IF;
166 		     RAISE FND_API.G_EXC_ERROR;
167 		  END IF;
168 
169 		IF p_x_association_tbl(i).mr_header_id IS NULL THEN
170 		    -- Function to convert mr_title,mr_version_number to id
171 		    AHL_FMP_COMMON_PVT.mr_title_version_to_id(
172 			    p_mr_title		=>	p_x_association_tbl(i).mr_title,
173 			    p_mr_version_number	=>	p_x_association_tbl(i).mr_version_number,
174 			    x_mr_header_id	=>	p_x_association_tbl(i).mr_header_id,
175 			    x_return_status	=>	x_return_status
176 			    );
177 		    IF x_return_status = FND_API.G_RET_STS_ERROR THEN
178 		       IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
179 			 fnd_log.string
180 			 (
181 			     fnd_log.level_error,
182 			    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
183 			     'Invalid MR Title, Version Number provided'
184 			 );
185 		      END IF;
186 		      RAISE FND_API.G_EXC_ERROR;
187 		   END IF;
188 		END IF;
189 
190 		--App usage code related code
191 		IF p_x_association_tbl(i).mr_header_id IS NOT NULL OR
192 		   p_x_association_tbl(i).mr_header_id <> FND_API.G_MISS_NUM
193 		THEN
194 			OPEN mr_details_csr_type(p_x_association_tbl(i).mr_header_id);
195 
196 			FETCH mr_details_csr_type  into l_mr_rec;
197 
198 			IF mr_details_csr_type%NOTFOUND
199 			THEN
200 				FND_MESSAGE.SET_NAME('AHL','AHL_FMP_EDIT_STATUS_INVALID');
201 				FND_MSG_PUB.ADD;
202 				IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
203 				 fnd_log.string
204 				 (
205 				     fnd_log.level_error,
206 				    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
207 				     'Invalid MR Info..'
208 				 );
209 				END IF;
210 				RAISE FND_API.G_EXC_ERROR;
211 			ELSE
212 			     -- Preventive Maintenance Code
213 			     IF G_APPLN_USAGE='PM'
214 			     THEN
215 				     IF l_mr_rec.type_code='PROGRAM'
216 				     THEN
217 						FND_MESSAGE.SET_NAME('AHL','AHL_FMP_MR_TYPE_CODE_PROGRAM');
218 						FND_MSG_PUB.ADD;
219 						IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
220 						 fnd_log.string
221 						 (
222 						     fnd_log.level_error,
223 						    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
224 						     'Application usage code PM is invalid for MR with program type'||
225 						     l_mr_rec.type_code
226 						 );
227 						END IF;
228 						RAISE FND_API.G_EXC_ERROR;
229 				     END IF;
230 			     END IF;
231 			END IF;
232 			CLOSE mr_details_csr_type;
233 		END IF;
234 
235 	   END LOOP;
236 	END IF;
237 
238         IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
239 	         fnd_log.string
240 	         (
241 		     fnd_log.level_statement,
242 	            'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
243 		     'Before copying mr table of records into doc table of records'
244 	         );
245         END IF;
246 
247 	-- Populate doc table from RM table info. procedure added in 11.5.10
248 	populate_doc_tbl(
249 	p_x_association_tbl	=> p_x_association_tbl,
250 	p_x_doc_assos_tbl	=> l_x_doc_assos_tbl
251 	);
252 
253         IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
254 	         fnd_log.string
255 	         (
256 		     fnd_log.level_statement,
257 	            'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
258 		     'Before calling AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION..'
259 	         );
260         END IF;
261 
262 	-- Call DI Public API for doc association.
263 
264 	AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION
265 	(
266 	 p_api_version               => p_api_version ,
267 	 p_init_msg_list             => p_init_msg_list ,
268 	 p_commit                    => FND_API.G_FALSE ,
269 	 p_validation_level          => p_validation_level ,
270 	 p_validate_only             => p_validate_only ,
271 	 p_module_type               => p_module_type ,
272 	 x_return_status             => x_return_status ,
273 	 x_msg_count                 => x_msg_count ,
274 	 x_msg_data                  => x_msg_data ,
275 	 p_x_association_tbl         => l_x_doc_assos_tbl
276 	) ;
277 
278         IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
279 	         fnd_log.string
280 	         (
281 		     fnd_log.level_statement,
282 	            'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
283 		     'After calling AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION'
284     	         );
285         END IF;
286 
287 	-- If any severe error occurs, then, abort API.
288 	IF x_return_status = FND_API.G_RET_STS_ERROR THEN
289 		IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
290 		 fnd_log.string
291 		 (
292 		     fnd_log.level_statement,
293 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
294 		     'Invalid MR Title, Version Number provided'
295 		 );
296 		END IF;
297 	    	RAISE FND_API.G_EXC_ERROR;
298 	ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
299 		IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
300 		 fnd_log.string
301 		 (
302 		     fnd_log.level_statement,
303 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
304 		     'Invalid MR Title, Version Number provided'
305 		 );
306 		END IF;
307 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
308 	END IF;
309 
310 	-- Standard check for p_commit
311 	IF FND_API.To_Boolean (p_commit)
312 	THEN
313 		COMMIT;
314 	END IF;
315 
316 	IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
317 		fnd_log.string
318 		(
319 			fnd_log.level_procedure,
320 			'ahl.plsql.'||g_pkg_name||'.'||l_api_name||'.end',
321 			'At the end of PLSQL procedure'
322 		);
323   	END IF;
324 
325   EXCEPTION
326 	WHEN FND_API.G_EXC_ERROR THEN
327 		x_return_status := FND_API.G_RET_STS_ERROR;
328 		Rollback to process_association_pvt;
329 		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
330 					p_data  => x_msg_data,
331 					p_encoded => fnd_api.g_false);
332 		IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
333 		 fnd_log.string
334 		 (
335 		     fnd_log.level_statement,
336 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
337 		     'FND_API.G_EXC_ERROR!!'
338 		 );
339 		END IF;
340 
341 
342 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
343 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
344 		Rollback to process_association_pvt;
345 		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
346 					p_data  => x_msg_data,
347 					 p_encoded => fnd_api.g_false);
348 		IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
349 		 fnd_log.string
350 		 (
351 		     fnd_log.level_statement,
352 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
353 		     'FND_API.G_EXC_UNEXPECTED_ERROR!!'
354 		 );
355 		END IF;
356 
357 	WHEN OTHERS THEN
358 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
359 		Rollback to process_association_pvt;
360 		IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
361 		 fnd_msg_pub.add_exc_msg(p_pkg_name       => G_PKG_NAME,
362 					 p_procedure_name => 'Process_Doc_Association',
363 					 p_error_text     => SQLERRM);
364 		END IF;
365 		FND_MSG_PUB.count_and_get( p_count => x_msg_count,
366 					 p_data  => x_msg_data,
367 					  p_encoded => fnd_api.g_false);
368 		IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
369 		 fnd_log.string
370 		 (
371 		     fnd_log.level_statement,
372 		    'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
373 		     'Un expected error(other errors)!!'
374 		 );
375 		END IF;
376 
377 END Process_Doc_Association;
378 
379 END AHL_FMP_MR_DOC_ASSO_PVT;
380