[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