[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.0 2005/05/26 02:01:22 appldev noship $ */
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 BEGIN
102
103
104 -- Standard call to check for call compatibility.
105 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
106 p_api_version,
107 l_api_name,G_PKG_NAME)
108 THEN
109 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
110 END IF;
111
112 -- Standard Start of API savepoint
113 SAVEPOINT process_association;
114
115 -- Check if API is called in debug mode. If yes, enable debug.
116
117 IF G_DEBUG='Y' THEN
118 AHL_DEBUG_PUB.enable_debug;
119 END IF;
120
121 -- Debug info.
122
123 IF G_DEBUG='Y' THEN
124 AHL_DEBUG_PUB.debug( 'enter ahl_rm_asso_doc_aso_pub.Process Association');
125 END IF;
126
127 -- Initialize message list if p_init_msg_list is set to TRUE.
128 IF FND_API.to_boolean(p_init_msg_list)
129 THEN
130 FND_MSG_PUB.initialize;
131 END IF;
132
133 -- Initialize API return status to success
134
135 x_return_status:=FND_API.G_RET_STS_SUCCESS ;
136
137 IF p_x_association_tbl.count >0 THEN
138 FOR i in p_x_association_tbl.FIRST .. p_x_association_tbl.LAST
139 LOOP
140 AHL_RM_ROUTE_UTIL.validate_lookup(
141 x_return_status => x_return_status,
142 x_msg_data => x_msg_data,
143 p_lookup_type => 'AHL_OBJECT_TYPE',
144 p_lookup_meaning => p_x_association_tbl(i).object_type_desc,
145 p_x_lookup_code => p_x_association_tbl(i).object_type_code
146 );
147 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
148 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
149 fnd_log.string
150 (
151 fnd_log.level_statement,
152 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
153 'Error -- Invalid lookup specified'
154 );
155 END IF;
156 RAISE FND_API.G_EXC_ERROR;
157 END IF;
158
159 -- If Id is null derive object id from object Number and revision
160 -- 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
161 IF p_x_association_tbl(i).object_id IS NULL THEN
162 IF p_x_association_tbl(i).object_type_code = 'ROUTE' THEN
163 -- Function to convert Operation number, operation revision to id
164 AHL_RM_ROUTE_UTIL.Route_Number_To_Id
165 (
166 p_route_number => p_x_association_tbl(i).object_number,
167 p_route_revision => p_x_association_tbl(i).object_revision,
168 x_route_id => p_x_association_tbl(i).object_id,
169 x_return_status => x_return_status
170 );
171 ELSIF p_x_association_tbl(i).object_type_code = 'OPERATION' THEN
172 -- Function to convert Operation number, operation revision to id
173 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
174 (
175 p_operation_number => p_x_association_tbl(i).object_number,
176 p_operation_revision => p_x_association_tbl(i).object_revision,
177 x_operation_id => p_x_association_tbl(i).object_id,
178 x_return_status => x_return_status
179 );
180 END IF;
181 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
182 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
183 fnd_log.string
184 (
185 fnd_log.level_statement,
186 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||':',
187 'Error in converting Object Number, Object Revision to ID'
188 );
189 END IF;
190 RAISE FND_API.G_EXC_ERROR;
191 END IF;
192 END IF;
193 END LOOP;
194 END IF;
195
196 --l_x_association_tbl := p_x_association_tbl ;
197
198 --This is to be added before calling AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION ()
199 -- Validate Application Usage
200 IF (p_x_association_tbl(1).object_type_code = 'ROUTE')
201 THEN
202 AHL_RM_ROUTE_UTIL.validate_ApplnUsage
203 (
204 p_object_id => p_x_association_tbl(1).OBJECT_ID,
205 p_association_type => p_x_association_tbl(1).OBJECT_TYPE_CODE,
206 x_return_status => x_return_status,
207 x_msg_data => x_msg_data
208 );
209
210 -- If any severe error occurs, then, abort API.
211 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
212 RAISE FND_API.G_EXC_ERROR;
213 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
214 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
215 END IF;
216 END IF;
217
218 -- Populate doc table from RM table info. procedure added in 11.5.10
219 populate_doc_tbl(
220 p_x_association_tbl => p_x_association_tbl,
221 p_x_doc_assos_tbl => l_x_doc_assos_tbl
222 );
223
224
225 AHL_DEBUG_PUB.debug( 'before call on AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION');
226
227 AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION
228 (
229 p_api_version => p_api_version ,
230 p_init_msg_list => p_init_msg_list ,
231 p_commit => FND_API.G_FALSE ,
232 p_validation_level => p_validation_level ,
233 p_validate_only => p_validate_only ,
234 p_module_type => p_module_type ,
235 x_return_status => x_return_status ,
236 x_msg_count => x_msg_count ,
237 x_msg_data => x_msg_data ,
238 p_x_association_tbl => l_x_doc_assos_tbl
239 ) ;
240
241 l_msg_count := FND_MSG_PUB.count_msg;
242
243 IF l_msg_count > 0 THEN
244 X_msg_count := l_msg_count;
245 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
246 RAISE FND_API.G_EXC_ERROR;
247 END IF;
248
249 -- 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.
250 FOR i IN l_x_doc_assos_tbl.FIRST..l_x_doc_assos_tbl.LAST
251 LOOP
252 p_x_association_tbl(i).DOC_TITLE_ASSO_ID := l_x_doc_assos_tbl(i).DOC_TITLE_ASSO_ID;
253 p_x_association_tbl(i).OBJECT_VERSION_NUMBER := l_x_doc_assos_tbl(i).OBJECT_VERSION_NUMBER;
254 END LOOP;
255
256 IF G_DEBUG='Y' THEN
257 AHL_DEBUG_PUB.debug( 'AHL_DI_ASSO_DOC_GEN_PUB.PROCESS_ASSOCIATION is called');
258 AHL_DEBUG_PUB.debug( 'PRITHWI the aso object type code is '|| p_x_association_tbl(1).object_type_code );
259 END IF;
260
261 IF ( p_x_association_tbl(1).object_type_code = 'OPERATION')
262 THEN
263 IF G_DEBUG='Y' THEN
264 AHL_DEBUG_PUB.debug( 'aso_object_type_code = OPERATION');
265 END IF;
266
267 -- Check if the Route is existing and in Draft status
268 AHL_RM_ROUTE_UTIL.validate_operation_status
269 (
270 p_x_association_tbl(1).OBJECT_ID,
271 l_msg_data,
272 l_return_status
273 );
274
275 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
276 FND_MESSAGE.SET_NAME('AHL',l_msg_data);
277 FND_MSG_PUB.ADD;
278 x_return_status := l_return_status;
279 RETURN;
280 END IF;
281
282 -- Update route status from APPROVAL_REJECTED to DRAFT
283 OPEN get_oper_status (p_x_association_tbl(1).OBJECT_ID);
284 FETCH get_oper_status INTO l_obj_status;
285 IF (get_oper_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
286 THEN
287 UPDATE ahl_operations_b
288 SET revision_status_code = 'DRAFT'
289 WHERE operation_id = p_x_association_tbl(1).OBJECT_ID;
290 END IF;
291 CLOSE get_oper_status;
292
293
294 ELSIF ( p_x_association_tbl(1).object_type_code = 'ROUTE')
295 THEN
296 IF G_DEBUG='Y' THEN
297 AHL_DEBUG_PUB.debug( 'aso_object_type_code = ROUTE');
298 END IF;
299
300 -- Check if the Route is existing and in Draft status
301 AHL_RM_ROUTE_UTIL.validate_route_status
302 (
303 p_x_association_tbl(1).OBJECT_ID,
304 l_msg_data,
305 l_return_status
306 );
307
308 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
309 FND_MESSAGE.SET_NAME('AHL',l_msg_data);
310 FND_MSG_PUB.ADD;
311 x_return_status := l_return_status;
312 RETURN;
313 END IF;
314
315 -- Update route status from APPROVAL_REJECTED to DRAFT
316 OPEN get_route_status (p_x_association_tbl(1).OBJECT_ID);
317 FETCH get_route_status INTO l_obj_status;
318 IF (get_route_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
319 THEN
320 UPDATE ahl_routes_b
321 SET revision_status_code = 'DRAFT'
322 WHERE route_id = p_x_association_tbl(1).OBJECT_ID;
323 END IF;
324 CLOSE get_route_status;
325
326 END IF ;
327
328 l_msg_count := FND_MSG_PUB.count_msg;
329
330 IF l_msg_count > 0 THEN
331 X_msg_count := l_msg_count;
332 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
333 RAISE FND_API.G_EXC_ERROR;
334 END IF;
335
336 IF FND_API.TO_BOOLEAN(p_commit) THEN
337 COMMIT;
338 END IF;
339
340 -- Check if API is called in debug mode. If yes, disable debug.
341
342 IF G_DEBUG='Y' THEN
343 AHL_DEBUG_PUB.disable_debug;
344 END IF;
345
346 EXCEPTION
347 WHEN FND_API.G_EXC_ERROR THEN
348 ROLLBACK TO process_association;
349 x_return_status := FND_API.G_RET_STS_ERROR;
350 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
351 p_count => x_msg_count,
352 p_data => X_msg_data);
353 -- Debug info.
354 IF G_DEBUG='Y' THEN
355 AHL_DEBUG_PUB.log_app_messages (x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
356 AHL_DEBUG_PUB.debug( 'ahl_rm_asso_doc_aso_pub.Process Association');
357 AHL_DEBUG_PUB.disable_debug;
358 END IF;
359
360 WHEN OTHERS THEN
361 ROLLBACK TO process_association;
362 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
363 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
364 THEN
365 fnd_msg_pub.add_exc_msg(p_pkg_name =>G_PKG_NAME ,
366 p_procedure_name => 'PROCESS_ASSOCIATION',
367 p_error_text => SUBSTR(SQLERRM,1,240));
368 END IF;
369 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
370 p_count => x_msg_count,
371 p_data => X_msg_data);
372
373
374
375 END process_association;
376
377 END AHL_RM_ASSO_DOCASO_PVT;