[Home] [Help]
PACKAGE BODY: APPS.AHL_RM_OPERATION_PUB
Source
1 PACKAGE BODY AHL_RM_OPERATION_PUB AS
2 /* $Header: AHLPOPEB.pls 120.4 2008/03/13 13:48:42 amsriniv ship $ */
3
4
5
6 PROCEDURE Create_Operation
7 (
8 -- standard IN params
9 p_api_version IN NUMBER,
10 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
11 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
12 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
13 p_default IN VARCHAR2 :=FND_API.G_FALSE,
14 p_module_type IN VARCHAR2 :=NULL,
15 -- standard OUT params
16 x_return_status OUT NOCOPY VARCHAR2,
17 x_msg_count OUT NOCOPY NUMBER,
18 x_msg_data OUT NOCOPY VARCHAR2,
19 -- procedure params
20 p_x_oper_rec IN OUT NOCOPY AHL_RM_OPERATION_PVT.operation_rec_type,
21 p_x_oper_doc_tbl IN OUT NOCOPY AHL_RM_ASSO_DOCASO_PVT.doc_association_tbl,
22 p_x_oper_resource_tbl IN OUT NOCOPY AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_resource_tbl_type,
23 p_x_oper_material_tbl IN OUT NOCOPY AHL_RM_MATERIAL_AS_PVT.material_req_tbl_type,
24 p_x_oper_panel_tbl IN OUT NOCOPY AHL_RM_RT_OPER_PANEL_PVT.rt_oper_panel_tbl_type
25 )
26 IS
27 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OPERATION';
28 l_api_version CONSTANT NUMBER := 2.0;
29 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
30 l_x_rt_oper_cost_rec AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_cost_rec_type;
31
32 BEGIN
33
34 -- Initialize API return status to success
35 x_return_status := FND_API.G_RET_STS_SUCCESS;
36
37 -- Standard Start of API savepoint
38 SAVEPOINT create_operation_pub;
39
40 -- Standard call to check for call compatibility.
41 IF NOT FND_API.compatible_api_call
42 (
43 l_api_version,
44 p_api_version,
45 l_api_name,
46 G_PKG_NAME
47 )
48 THEN
49 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
50 END IF;
51
52 -- Initialize message list if p_init_msg_list is set to TRUE.
53 IF FND_API.to_boolean( p_init_msg_list ) THEN
54 FND_MSG_PUB.initialize;
55 END IF;
56
57 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
58 fnd_log.string
59 (
60 fnd_log.level_procedure,
61 l_debug_module ||'.begin',
62 'At the start of PLSQL procedure'
63 );
64 END IF;
65
66 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
67
68 fnd_log.string
69 (
70 fnd_log.level_statement,
71 l_debug_module ,
72 'Before calling the private API AHL_RM_OPERATION_PVT.process_operation.....'
73 );
74
75 END IF;
76
77 -- PRITHWI: discuss with Shailaja whether to default to 'C' or to throw error if there is no Defaul
78 IF p_x_oper_rec.DML_OPERATION = 'C'
79 THEN
80
81 AHL_RM_OPERATION_PVT.process_operation
82 (
83 p_api_version => 1.0,
84 p_init_msg_list => FND_API.G_FALSE,
85 p_commit => FND_API.G_FALSE,
86 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
87 p_default => p_default,
88 p_module_type => p_module_type,
89 x_return_status => x_return_status,
90 x_msg_count => x_msg_count,
91 x_msg_data => x_msg_data,
92 p_x_operation_rec => p_x_oper_rec
93 );
94
95 -- to raise errors from AHL_RM_OPERATION_PVT.process_operation
96 x_msg_count := FND_MSG_PUB.count_msg;
97
98 IF x_msg_count > 0 THEN
99 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
100 RAISE FND_API.G_EXC_ERROR;
101 END IF;
102 -- if the OPERATION ID returned is null then throw error
103 IF p_x_oper_rec.OPERATION_ID IS NULL THEN
104 -- if not id has been created then throw unexpected error
105 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
106
107 END IF;
108
109 ElSE
110 -- If the DML operation is not Cretae then its invalid
111 FND_MESSAGE.SET_NAME('AHL','AHL_COM_INVALID_DML_FLAG');
112 FND_MSG_PUB.ADD;
113 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
114 fnd_log.string
115 (
116 fnd_log.level_error,
117 l_debug_module ,
118 'Invalid DML Operation is specified....DML Operation should be create'
119 );
120 END IF;
121 RAISE FND_API.G_EXC_ERROR;
122 END IF;
123
124
125 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
126
127 fnd_log.string
128 (
129 fnd_log.level_statement,
130 l_debug_module ,
131 'Operation Id of the Operation created .....' || p_x_oper_rec.OPERATION_ID
132 );
133
134 END IF;
135
136
137
138 -- populate the record attributes that are necessary for the API
139
140 -- Attach documents
141 IF p_x_oper_doc_tbl.count > 0 THEN
142
143 FOR i in p_x_oper_doc_tbl.FIRST .. p_x_oper_doc_tbl.LAST
144 LOOP
145 p_x_oper_doc_tbl(i).OBJECT_TYPE_CODE := 'OPERATION';
146 p_x_oper_doc_tbl(i).OBJECT_ID := p_x_oper_rec.OPERATION_ID;
147 p_x_oper_doc_tbl(i).DML_OPERATION := 'C';
148
149 END LOOP;
150
151 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
152
153 fnd_log.string
154 (
155 fnd_log.level_statement,
156 l_debug_module,
157 'Before calling the private API AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION.....'
158 );
159
160 END IF;
161
162 AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION
163 (
164
165 p_api_version => 1.0,
166 p_init_msg_list => FND_API.G_FALSE,
167 p_commit => FND_API.G_FALSE,
168 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
169 p_default => p_default,
170 p_module_type => p_module_type,
171 x_return_status => x_return_status,
172 x_msg_count => x_msg_count,
173 x_msg_data => x_msg_data,
174 p_x_association_tbl => p_x_oper_doc_tbl
175 );
176
177 -- to raise errors from AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION
178 x_msg_count := FND_MSG_PUB.count_msg;
179
180 IF x_msg_count > 0 THEN
181 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
182 RAISE FND_API.G_EXC_ERROR;
183 END IF;
184
185 END IF;
186
187 -- Attach Resources
188 IF p_x_oper_resource_tbl.count > 0 THEN
189
190 FOR i in p_x_oper_resource_tbl.FIRST .. p_x_oper_resource_tbl.LAST
191 LOOP
192
193 p_x_oper_resource_tbl(i).DML_OPERATION := 'C';
194
195 END LOOP;
196
197 AHL_RM_RT_OPER_RESOURCE_PVT.process_rt_oper_resource
198 (
199 p_api_version => 1.0,
200 p_init_msg_list => FND_API.G_FALSE,
201 p_commit => FND_API.G_FALSE,
202 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
203 p_default => p_default,
204 p_module_type => p_module_type,
205 x_return_status => x_return_status,
206 x_msg_count => x_msg_count,
207 x_msg_data => x_msg_data,
208 p_x_rt_oper_resource_tbl => p_x_oper_resource_tbl,
209 p_association_type_code => 'OPERATION',
210 p_object_id => p_x_oper_rec.OPERATION_ID
211 );
212
213 -- to raise errors from AHL_RM_RT_OPER_RESOURCE_PVT.process_rt_oper_resource
214 x_msg_count := FND_MSG_PUB.count_msg;
215
216 IF x_msg_count > 0 THEN
217 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
218 RAISE FND_API.G_EXC_ERROR;
219 END IF;
220
221 -- populate the cost rec from the resource rec and call the cost api to add costing info
222 -- per resource rec
223 FOR i IN 1..p_x_oper_resource_tbl.count LOOP
224
225 l_x_rt_oper_cost_rec.RT_OPER_RESOURCE_ID := p_x_oper_resource_tbl(i).RT_OPER_RESOURCE_ID ;
226 l_x_rt_oper_cost_rec.OBJECT_VERSION_NUMBER := p_x_oper_resource_tbl(i).OBJECT_VERSION_NUMBER;
227 l_x_rt_oper_cost_rec.ACTIVITY_ID := p_x_oper_resource_tbl(i).ACTIVITY_ID;
228 l_x_rt_oper_cost_rec.ACTIVITY := p_x_oper_resource_tbl(i).ACTIVITY;
229 l_x_rt_oper_cost_rec.COST_BASIS_ID := p_x_oper_resource_tbl(i).COST_BASIS_ID;
230 l_x_rt_oper_cost_rec.COST_BASIS := p_x_oper_resource_tbl(i).COST_BASIS;
231 l_x_rt_oper_cost_rec.SCHEDULED_TYPE_ID := p_x_oper_resource_tbl(i).SCHEDULED_TYPE_ID;
232 l_x_rt_oper_cost_rec.SCHEDULED_TYPE := p_x_oper_resource_tbl(i).SCHEDULED_TYPE;
233 l_x_rt_oper_cost_rec.AUTOCHARGE_TYPE_ID := p_x_oper_resource_tbl(i).AUTOCHARGE_TYPE_ID;
234 l_x_rt_oper_cost_rec.AUTOCHARGE_TYPE := p_x_oper_resource_tbl(i).AUTOCHARGE_TYPE;
235 l_x_rt_oper_cost_rec.STANDARD_RATE_FLAG := p_x_oper_resource_tbl(i).STANDARD_RATE_FLAG;
236 l_x_rt_oper_cost_rec.STANDARD_RATE := p_x_oper_resource_tbl(i).STANDARD_RATE;
237
238 AHL_RM_RT_OPER_RESOURCE_PVT.define_cost_parameter
239 (
240 p_api_version => 1.0,
241 p_init_msg_list => FND_API.G_FALSE,
242 p_commit => FND_API.G_FALSE,
243 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
244 p_default => FND_API.G_FALSE,
245 p_module_type => NULL,
246 x_return_status => x_return_status,
247 x_msg_count => x_msg_count,
248 x_msg_data => x_msg_data,
249 p_x_rt_oper_cost_rec => l_x_rt_oper_cost_rec
250 );
251
252 x_msg_count := FND_MSG_PUB.count_msg;
253
254 IF x_msg_count > 0 THEN
255 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
256 RAISE FND_API.G_EXC_ERROR;
257 END IF;
258
259 END LOOP;
260 END IF;
261
262
263 --Attach Material Requirements
264 IF p_x_oper_material_tbl.count > 0 THEN
265
266 FOR i in p_x_oper_material_tbl.FIRST .. p_x_oper_material_tbl.LAST
267 LOOP
268
269 p_x_oper_material_tbl(i).DML_OPERATION := 'C';
270
271 END LOOP;
272
273 AHL_RM_MATERIAL_AS_PVT.process_material_req
274 (
275 p_api_version => 1.0,
276 p_init_msg_list => FND_API.G_FALSE,
277 p_commit => FND_API.G_FALSE,
278 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
279 p_default => p_default,
280 p_module_type => p_module_type,
281 x_return_status => x_return_status,
282 x_msg_count => x_msg_count,
283 x_msg_data => x_msg_data,
284 p_x_material_req_tbl => p_x_oper_material_tbl,
285 p_object_id => p_x_oper_rec.OPERATION_ID,
286 p_association_type => 'OPERATION'
287 );
288 -- to raise errors from AHL_RM_MATERIAL_AS_PVT.process_material_req
289 x_msg_count := FND_MSG_PUB.count_msg;
290
291 IF x_msg_count > 0 THEN
292 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
293 RAISE FND_API.G_EXC_ERROR;
294 END IF;
295
296 END IF;
297
298 --Adithya added for Access Panels ER# 6143687.
299 --Attach Access Panels
300 IF p_x_oper_panel_tbl.count > 0 THEN
301
302 FOR i in p_x_oper_panel_tbl.FIRST .. p_x_oper_panel_tbl.LAST
303 LOOP
304 p_x_oper_panel_tbl(i).DML_OPERATION := 'C';
305 END LOOP;
306
307 AHL_RM_RT_OPER_PANEL_PVT.process_rt_oper_panel
308 (
309 p_api_version => 1.0,
310 p_init_msg_list => FND_API.G_FALSE,
311 p_commit => FND_API.G_FALSE,
312 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
313 p_default => p_default,
314 p_module_type => p_module_type,
315 x_return_status => x_return_status,
316 x_msg_count => x_msg_count,
317 x_msg_data => x_msg_data,
318 p_x_rt_oper_panel_tbl => p_x_oper_panel_tbl,
319 p_association_type_code => 'OPERATION',
320 p_object_id => p_x_oper_rec.OPERATION_ID
321 );
322 -- to raise errors from AHL_RM_RT_OPER_PANEL_PVT.process_rt_oper_panel
323 x_msg_count := FND_MSG_PUB.count_msg;
324
325 IF x_msg_count > 0 THEN
326 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
327 RAISE FND_API.G_EXC_ERROR;
328 END IF;
329
330 END IF;
331
332 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
333 fnd_log.string
334 (
335 fnd_log.level_procedure,
336 l_debug_module ||'.End',
337 'At the end of PLSQL procedure...'
338 );
339 END IF;
340
341 -- Check Error Message stack.
342 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
343 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
344 fnd_log.string
345 (
346 fnd_log.level_error,
347 l_debug_module,
348 'Private API raised expected error....'
349 );
350 END IF;
351 RAISE FND_API.G_EXC_ERROR;
352 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
353 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
354 fnd_log.string
355 (
356 fnd_log.level_error,
357 l_debug_module,
358 'Private API raised unexpected error....'
359 );
360 END IF;
361 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
362 END IF;
363
364 -- Standard check of p_commit
365 IF FND_API.To_Boolean(p_commit) THEN
366 COMMIT WORK;
367 END IF;
368
369 --
370 EXCEPTION
371 WHEN FND_API.G_EXC_ERROR THEN
372 x_return_status := FND_API.G_RET_STS_ERROR;
373 Rollback to create_operation_pub;
374 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
375 p_data => x_msg_data,
376 p_encoded => fnd_api.g_false);
377
378
379 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
380 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
381 Rollback to create_operation_pub;
382 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
383 p_data => x_msg_data,
384 p_encoded => fnd_api.g_false);
385
386 WHEN OTHERS THEN
387 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
388 Rollback to create_operation_pub;
389 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
390 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
391 p_procedure_name => 'CREATE_OPERATION',
392 p_error_text => SQLERRM);
393 END IF;
394 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
395 p_data => x_msg_data,
396 p_encoded => fnd_api.g_false);
397
398 END Create_Operation;
399
400 -- Overloaded procedure retained for backaward compatibility (pre 12.0.4).
401 -- This procedure will call the above procedure with api_version = 2.
402 PROCEDURE Create_Operation
403 (
404 -- standard IN params
405 p_api_version IN NUMBER,
406 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
407 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
408 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
409 p_default IN VARCHAR2 :=FND_API.G_FALSE,
410 p_module_type IN VARCHAR2 :=NULL,
411 -- standard OUT params
412 x_return_status OUT NOCOPY VARCHAR2,
413 x_msg_count OUT NOCOPY NUMBER,
414 x_msg_data OUT NOCOPY VARCHAR2,
415 -- procedure params
416 p_x_oper_rec IN OUT NOCOPY AHL_RM_OPERATION_PVT.operation_rec_type,
417 p_x_oper_doc_tbl IN OUT NOCOPY AHL_RM_ASSO_DOCASO_PVT.doc_association_tbl,
418 p_x_oper_resource_tbl IN OUT NOCOPY AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_resource_tbl_type,
419 p_x_oper_material_tbl IN OUT NOCOPY AHL_RM_MATERIAL_AS_PVT.material_req_tbl_type
420 )
421 IS
422
423 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OPERATION';
424 l_api_version CONSTANT NUMBER := 1.0;
425
426 l_x_oper_panel_tbl AHL_RM_RT_OPER_PANEL_PVT.rt_oper_panel_tbl_type;
427
428 BEGIN
429
430 -- Initialize API return status to success
431 x_return_status := FND_API.G_RET_STS_SUCCESS;
432
433 -- Standard call to check for call compatibility.
434 IF NOT FND_API.compatible_api_call
435 (
436 l_api_version,
437 p_api_version,
438 l_api_name,
439 G_PKG_NAME
440 )
441 THEN
442 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
443 END IF;
444
445 AHL_RM_OPERATION_PUB.Create_Operation
446 (
447 -- standard IN params
448 p_api_version => 2.0,
449 p_init_msg_list => p_init_msg_list,
450 p_commit => p_commit,
451 p_validation_level => p_validation_level,
452 p_default => p_default,
453 p_module_type => p_module_type,
454 -- standard OUT params
455 x_return_status => x_return_status,
456 x_msg_count => x_msg_count,
457 x_msg_data => x_msg_data,
458 -- procedure params
459 p_x_oper_rec => p_x_oper_rec,
460 p_x_oper_doc_tbl => p_x_oper_doc_tbl,
461 p_x_oper_resource_tbl => p_x_oper_resource_tbl,
462 p_x_oper_material_tbl => p_x_oper_material_tbl,
463 p_x_oper_panel_tbl => l_x_oper_panel_tbl);
464
465 --
466 EXCEPTION
467 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
468 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
469 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
470 p_data => x_msg_data,
471 p_encoded => fnd_api.g_false);
472
473 WHEN OTHERS THEN
474 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
475 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
476 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
477 p_procedure_name => 'CREATE_OPERATION',
478 p_error_text => SQLERRM);
479 END IF;
480 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
481 p_data => x_msg_data,
482 p_encoded => fnd_api.g_false);
483
484 END Create_Operation;
485
486
487
488 PROCEDURE Modify_Operation
489 (
490 -- standard IN params
491 p_api_version IN NUMBER,
492 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
493 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
494 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
495 p_default IN VARCHAR2 :=FND_API.G_FALSE,
496 p_module_type IN VARCHAR2 :=NULL,
497 -- standard OUT params
498 x_return_status OUT NOCOPY VARCHAR2,
499 x_msg_count OUT NOCOPY NUMBER,
500 x_msg_data OUT NOCOPY VARCHAR2,
501 -- procedure params
502 p_oper_rec IN AHL_RM_OPERATION_PVT.operation_rec_type,
503 p_x_oper_doc_tbl IN OUT NOCOPY AHL_RM_ASSO_DOCASO_PVT.doc_association_tbl,
504 p_x_oper_resource_tbl IN OUT NOCOPY AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_resource_tbl_type,
505 p_x_oper_material_tbl IN OUT NOCOPY AHL_RM_MATERIAL_AS_PVT.material_req_tbl_type,
506 p_x_oper_panel_tbl IN OUT NOCOPY AHL_RM_RT_OPER_PANEL_PVT.rt_oper_panel_tbl_type
507 )
508 IS
509 l_api_name CONSTANT VARCHAR2(30) := 'MODIFY_OPERATION';
510 l_api_version CONSTANT NUMBER := 2.0;
511 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
512 l_oper_id NUMBER;
513 l_oper_rec AHL_RM_OPERATION_PVT.operation_rec_type;
514 l_x_rt_oper_cost_rec AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_cost_rec_type;
515
516 BEGIN
517
518 -- Initialize API return status to success
519 x_return_status := FND_API.G_RET_STS_SUCCESS;
520
521 -- Standard Start of API savepoint
522 SAVEPOINT modify_operation_pub;
523
524 -- Standard call to check for call compatibility.
525 IF NOT FND_API.compatible_api_call
526 (
527 l_api_version,
528 p_api_version,
529 l_api_name,
530 G_PKG_NAME
531 )
532 THEN
533 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
534 END IF;
535
536 -- Initialize message list if p_init_msg_list is set to TRUE.
537 IF FND_API.to_boolean( p_init_msg_list ) THEN
538 FND_MSG_PUB.initialize;
539 END IF;
540
541 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
542 fnd_log.string
543 (
544 fnd_log.level_procedure,
545 l_debug_module ||'.begin',
546 'At the start of PLSQL procedure'
547 );
548 END IF;
549
550 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
551
552 fnd_log.string
553 (
554 fnd_log.level_statement,
555 l_debug_module,
556 'Before calling the private API AHL_RM_OPERATION_PVT.process_operation.....'
557 );
558
559 END IF;
560
561 l_oper_id := p_oper_rec.operation_id;
562
563 -- If Id is null derive Operation id from Operation Number and revision
564 IF l_oper_id IS NULL THEN
565
566 -- Function to convert Operation number, operation revision to id
567
568 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
569 (
570 p_operation_number => p_oper_rec.concatenated_segments,
571 p_operation_revision => p_oper_rec.revision_number,
572 x_operation_id => l_oper_id,
573 x_return_status => x_return_status
574 );
575
576 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
577 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
578 fnd_log.string
579 (
580 fnd_log.level_error,
581 l_debug_module,
582 'Error in AHL_RM_ROUTE_UTIL.Operation_Number_To_Id API'
583 );
584 END IF;
585 RAISE FND_API.G_EXC_ERROR;
586 END IF;
587 END IF;
588
589 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
590
591 fnd_log.string
592 (
593 fnd_log.level_statement,
594 l_debug_module,
595 'Operation Id of the Operation that is being updated .....' || l_oper_id
596 );
597
598 END IF;
599
600
601
602 -- if DML is 'U' then the operation has to be updated
603 -- no check on OBJ VER NO as PVT already does it.
604 IF p_oper_rec.DML_OPERATION = 'U'
605 THEN
606
607 l_oper_rec := p_oper_rec;
608
609 AHL_RM_OPERATION_PVT.process_operation
610 (
611 p_api_version => 1.0,
612 p_init_msg_list => FND_API.G_FALSE,
613 p_commit => FND_API.G_FALSE,
614 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
615 p_default => p_default,
616 p_module_type => p_module_type,
617 x_return_status => x_return_status,
618 x_msg_count => x_msg_count,
619 x_msg_data => x_msg_data,
620 p_x_operation_rec => l_oper_rec
621 );
622 -- to raise errors from AHL_RM_OPERATION_PVT.process_operation
623 x_msg_count := FND_MSG_PUB.count_msg;
624
625
626 IF x_msg_count > 0 THEN
627 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
628 RAISE FND_API.G_EXC_ERROR;
629 END IF;
630
631 ElSIF p_oper_rec.DML_OPERATION IS NOT NULL THEN
632 -- If the DML operation is not 'U' and is also not NULL, then throw an error
633 FND_MESSAGE.SET_NAME('AHL','AHL_COM_INVALID_DML_FLAG');
634 FND_MSG_PUB.ADD;
635 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
636 fnd_log.string
637 (
638 fnd_log.level_error,
639 l_debug_module,
640 'Invalid DML Operation is specified....DML Operation should be Update'
641 );
642 END IF;
643 RAISE FND_API.G_EXC_ERROR;
644 END IF;
645
646
647
648
649 -- populate the record attributes that are necessary for the API
650
651
652 -- Attach documents
653 IF p_x_oper_doc_tbl.count > 0 THEN
654
655 FOR i in p_x_oper_doc_tbl.FIRST .. p_x_oper_doc_tbl.LAST
656 LOOP
657
658 p_x_oper_doc_tbl(i).OBJECT_TYPE_CODE := 'OPERATION';
659 p_x_oper_doc_tbl(i).OBJECT_ID := l_oper_id;
660 --p_x_oper_doc_tbl(i).DML_OPERATION := 'C'; amsriniv. Bug 6032272
661
662 END LOOP;
663
664 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
665
666 fnd_log.string
667 (
668 fnd_log.level_statement,
669 l_debug_module,
670 'Before calling the private API AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION.....'
671 );
672
673 END IF;
674
675 AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION
676 (
677
678 p_api_version => 1.0,
679 p_init_msg_list => FND_API.G_FALSE,
680 p_commit => FND_API.G_FALSE,
681 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
682 p_default => p_default,
683 p_module_type => p_module_type,
684 x_return_status => x_return_status,
685 x_msg_count => x_msg_count,
686 x_msg_data => x_msg_data,
687 p_x_association_tbl => p_x_oper_doc_tbl
688 );
689
690 -- to raise errors from AHL_RM_ASSO_DOCASO_PVT.PROCESS_ASSOCIATION
691 x_msg_count := FND_MSG_PUB.count_msg;
692
693 IF x_msg_count > 0 THEN
694 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
695 RAISE FND_API.G_EXC_ERROR;
696 END IF;
697
698 END IF;
699
700 -- Attach Resources
701 IF p_x_oper_resource_tbl.count > 0 THEN
702
703 AHL_RM_RT_OPER_RESOURCE_PVT.process_rt_oper_resource
704 (
705 p_api_version => 1.0,
706 p_init_msg_list => FND_API.G_FALSE,
707 p_commit => FND_API.G_FALSE,
708 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
709 p_default => p_default,
710 p_module_type => p_module_type,
711 x_return_status => x_return_status,
712 x_msg_count => x_msg_count,
713 x_msg_data => x_msg_data,
714 p_x_rt_oper_resource_tbl => p_x_oper_resource_tbl,
715 p_association_type_code => 'OPERATION',
716 p_object_id => l_oper_id
717 );
718
719 -- to raise errors from AHL_RM_RT_OPER_RESOURCE_PVT.process_rt_oper_resource
720 x_msg_count := FND_MSG_PUB.count_msg;
721
722 IF x_msg_count > 0 THEN
723 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
724 RAISE FND_API.G_EXC_ERROR;
725 END IF;
726
727 -- populate the cost rec from the resource rec and call the cost api to add costing info
728 -- per resource rec
729 FOR i IN 1..p_x_oper_resource_tbl.count LOOP
730 --pdoki added condition to check if the DML operation is Delete for Bug# 6435925
731 IF ( p_x_oper_resource_tbl(i).dml_operation <> 'D' ) THEN
732
733 l_x_rt_oper_cost_rec.RT_OPER_RESOURCE_ID := p_x_oper_resource_tbl(i).RT_OPER_RESOURCE_ID ;
734 l_x_rt_oper_cost_rec.OBJECT_VERSION_NUMBER := p_x_oper_resource_tbl(i).OBJECT_VERSION_NUMBER;
735 l_x_rt_oper_cost_rec.ACTIVITY_ID := p_x_oper_resource_tbl(i).ACTIVITY_ID;
736 l_x_rt_oper_cost_rec.ACTIVITY := p_x_oper_resource_tbl(i).ACTIVITY;
737 l_x_rt_oper_cost_rec.COST_BASIS_ID := p_x_oper_resource_tbl(i).COST_BASIS_ID;
738 l_x_rt_oper_cost_rec.COST_BASIS := p_x_oper_resource_tbl(i).COST_BASIS;
739 l_x_rt_oper_cost_rec.SCHEDULED_TYPE_ID := p_x_oper_resource_tbl(i).SCHEDULED_TYPE_ID;
740 l_x_rt_oper_cost_rec.SCHEDULED_TYPE := p_x_oper_resource_tbl(i).SCHEDULED_TYPE;
741 l_x_rt_oper_cost_rec.AUTOCHARGE_TYPE_ID := p_x_oper_resource_tbl(i).AUTOCHARGE_TYPE_ID;
742 l_x_rt_oper_cost_rec.AUTOCHARGE_TYPE := p_x_oper_resource_tbl(i).AUTOCHARGE_TYPE;
743 l_x_rt_oper_cost_rec.STANDARD_RATE_FLAG := p_x_oper_resource_tbl(i).STANDARD_RATE_FLAG;
744 l_x_rt_oper_cost_rec.STANDARD_RATE := p_x_oper_resource_tbl(i).STANDARD_RATE;
745
746 AHL_RM_RT_OPER_RESOURCE_PVT.define_cost_parameter
747 (
748 p_api_version => 1.0,
749 p_init_msg_list => FND_API.G_FALSE,
750 p_commit => FND_API.G_FALSE,
751 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
752 p_default => FND_API.G_FALSE,
753 p_module_type => NULL,
754 x_return_status => x_return_status,
755 x_msg_count => x_msg_count,
756 x_msg_data => x_msg_data,
757 p_x_rt_oper_cost_rec => l_x_rt_oper_cost_rec
758 );
759
760 IF x_msg_count > 0 THEN
761 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
762 RAISE FND_API.G_EXC_ERROR;
763 END IF;
764 END IF;
765
766 END LOOP;
767
768 /*
769
770 YPE rt_oper_resource_rec_type IS RECORD
771 (
772 RT_OPER_RESOURCE_ID NUMBER,
773 OBJECT_VERSION_NUMBER NUMBER,
774 LAST_UPDATE_DATE DATE,
775 LAST_UPDATED_BY NUMBER(15),
776 CREATION_DATE DATE,
777 CREATED_BY NUMBER(15),
778 LAST_UPDATE_LOGIN NUMBER(15),
779 ASO_RESOURCE_ID NUMBER,
780 ASO_RESOURCE_NAME VARCHAR2(30),
781 RESOURCE_TYPE_ID NUMBER,
782 RESOURCE_TYPE VARCHAR2(80),
783 QUANTITY NUMBER,
784 DURATION NUMBER,
785 ACTIVITY_ID NUMBER,
786 ACTIVITY VARCHAR2(10),
787 COST_BASIS_ID NUMBER,
788 COST_BASIS VARCHAR2(80),
789 SCHEDULED_TYPE_ID NUMBER,
790 SCHEDULED_TYPE VARCHAR2(80),
791 AUTOCHARGE_TYPE_ID NUMBER,
792 AUTOCHARGE_TYPE VARCHAR2(80),
793 STANDARD_RATE_FLAG NUMBER,
794 STANDARD_RATE VARCHAR2(80),
795 ATTRIBUTE_CATEGORY VARCHAR2(30),
796 ATTRIBUTE1 VARCHAR2(150),
797 ATTRIBUTE2 VARCHAR2(150),
798 ATTRIBUTE3 VARCHAR2(150),
799 ATTRIBUTE4 VARCHAR2(150),
800 ATTRIBUTE5 VARCHAR2(150),
801 ATTRIBUTE6 VARCHAR2(150),
802 ATTRIBUTE7 VARCHAR2(150),
803 ATTRIBUTE8 VARCHAR2(150),
804 ATTRIBUTE9 VARCHAR2(150),
805 ATTRIBUTE10 VARCHAR2(150),
806 ATTRIBUTE11 VARCHAR2(150),
807 ATTRIBUTE12 VARCHAR2(150),
808 ATTRIBUTE13 VARCHAR2(150),
809 ATTRIBUTE14 VARCHAR2(150),
810 ATTRIBUTE15 VARCHAR2(150),
811 DML_OPERATION VARCHAR2(1)
812 );
813 PROCEDURE define_cost_parameter
814 (
815 p_api_version IN NUMBER := 1.0,
816 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
817 p_commit IN VARCHAR2 := FND_API.G_FALSE,
818 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
819 p_default IN VARCHAR2 := FND_API.G_FALSE,
820 p_module_type IN VARCHAR2 := NULL,
821 x_return_status OUT NOCOPY VARCHAR2,
822 x_msg_count OUT NOCOPY NUMBER,
823 x_msg_data OUT NOCOPY VARCHAR2,
824 p_x_rt_oper_cost_rec IN OUT NOCOPY rt_oper_cost_rec_type
825 );
826 TYPE rt_oper_cost_rec_type IS RECORD
827 (
828 RT_OPER_RESOURCE_ID NUMBER,
829 OBJECT_VERSION_NUMBER NUMBER,
830 ACTIVITY_ID NUMBER,
831 ACTIVITY VARCHAR2(10),
832 COST_BASIS_ID NUMBER,
833 COST_BASIS VARCHAR2(80),
834 SCHEDULED_TYPE_ID NUMBER,
835 SCHEDULED_TYPE VARCHAR2(80),
836 AUTOCHARGE_TYPE_ID NUMBER,
837 AUTOCHARGE_TYPE VARCHAR2(80),
838 STANDARD_RATE_FLAG NUMBER,
839 STANDARD_RATE VARCHAR2(80)
840 );*/
841
842
843 END IF;
844
845
846 --Attach Material Requirements
847 IF p_x_oper_material_tbl.count > 0 THEN
848
849
850 AHL_RM_MATERIAL_AS_PVT.process_material_req
851 (
852 p_api_version => 1.0,
853 p_init_msg_list => FND_API.G_FALSE,
854 p_commit => FND_API.G_FALSE,
855 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
856 p_default => p_default,
857 p_module_type => p_module_type,
858 x_return_status => x_return_status,
859 x_msg_count => x_msg_count,
860 x_msg_data => x_msg_data,
861 p_x_material_req_tbl => p_x_oper_material_tbl,
862 p_object_id => l_oper_id,
863 p_association_type => 'OPERATION'
864 );
865
866 -- to raise errors from AHL_RM_MATERIAL_AS_PVT.process_material_req
867 x_msg_count := FND_MSG_PUB.count_msg;
868
869 IF x_msg_count > 0 THEN
870 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
871 RAISE FND_API.G_EXC_ERROR;
872 END IF;
873
874 END IF;
875
876 --Adithya added for Access Panels ER# 6143687.
877 --Attach Access Panels
878 IF p_x_oper_panel_tbl.count > 0 THEN
879
880
881 AHL_RM_RT_OPER_PANEL_PVT.process_rt_oper_panel
882 (
883 p_api_version => 1.0,
884 p_init_msg_list => FND_API.G_FALSE,
885 p_commit => FND_API.G_FALSE,
886 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
887 p_default => p_default,
888 p_module_type => p_module_type,
889 x_return_status => x_return_status,
890 x_msg_count => x_msg_count,
891 x_msg_data => x_msg_data,
892 p_x_rt_oper_panel_tbl => p_x_oper_panel_tbl,
893 p_association_type_code => 'OPERATION',
894 p_object_id => l_oper_id
895 );
896
897 -- to raise errors from AHL_RM_RT_OPER_PANEL_PVT.process_rt_oper_panel
898 x_msg_count := FND_MSG_PUB.count_msg;
899
900 IF x_msg_count > 0 THEN
901 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
902 RAISE FND_API.G_EXC_ERROR;
903 END IF;
904
905 END IF;
906
907 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
908 fnd_log.string
909 (
910 fnd_log.level_procedure,
911 l_debug_module ||'.End',
912 'At the end of PLSQL procedure...'
913 );
914 END IF;
915
916 -- Check Error Message stack.
917 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
918 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
919 fnd_log.string
920 (
921 fnd_log.level_error,
922 l_debug_module,
923 'Private API raised expected error....'
924 );
925 END IF;
926 RAISE FND_API.G_EXC_ERROR;
927 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
928 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
929 fnd_log.string
930 (
931 fnd_log.level_error,
932 l_debug_module,
933 'Private API raised unexpected error....'
934 );
935 END IF;
936 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
937 END IF;
938
939 -- Standard check of p_commit
940 IF FND_API.To_Boolean(p_commit) THEN
941 COMMIT WORK;
942 END IF;
943
944 --
945 EXCEPTION
946 WHEN FND_API.G_EXC_ERROR THEN
947 x_return_status := FND_API.G_RET_STS_ERROR;
948 Rollback to modify_operation_pub;
949 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
950 p_data => x_msg_data,
951 p_encoded => fnd_api.g_false);
952
953
954 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
955 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
956 Rollback to modify_operation_pub;
957 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
958 p_data => x_msg_data,
959 p_encoded => fnd_api.g_false);
960
961 WHEN OTHERS THEN
962 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
963 Rollback to modify_operation_pub;
964 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
965 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
966 p_procedure_name => 'MODIFY_OPERATION',
967 p_error_text => SQLERRM);
968 END IF;
969 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
970 p_data => x_msg_data,
971 p_encoded => fnd_api.g_false);
972
973 END Modify_Operation;
974
975
976 -- Overloaded procedure retained for backaward compatibility.
977 -- This procedure will call the above procedure with api_version = 2.
978 PROCEDURE Modify_Operation
979 (
980 -- standard IN params
981 p_api_version IN NUMBER,
982 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
983 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
984 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
985 p_default IN VARCHAR2 :=FND_API.G_FALSE,
986 p_module_type IN VARCHAR2 :=NULL,
987 -- standard OUT params
988 x_return_status OUT NOCOPY VARCHAR2,
989 x_msg_count OUT NOCOPY NUMBER,
990 x_msg_data OUT NOCOPY VARCHAR2,
991 -- procedure params
992 p_oper_rec IN AHL_RM_OPERATION_PVT.operation_rec_type,
993 p_x_oper_doc_tbl IN OUT NOCOPY AHL_RM_ASSO_DOCASO_PVT.doc_association_tbl,
994 p_x_oper_resource_tbl IN OUT NOCOPY AHL_RM_RT_OPER_RESOURCE_PVT.rt_oper_resource_tbl_type,
995 p_x_oper_material_tbl IN OUT NOCOPY AHL_RM_MATERIAL_AS_PVT.material_req_tbl_type
996 )
997 IS
998
999 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OPERATION';
1000 l_api_version CONSTANT NUMBER := 1.0;
1001
1002 l_x_oper_panel_tbl AHL_RM_RT_OPER_PANEL_PVT.rt_oper_panel_tbl_type;
1003
1004 BEGIN
1005
1006 -- Initialize API return status to success
1007 x_return_status := FND_API.G_RET_STS_SUCCESS;
1008
1009 -- Standard call to check for call compatibility.
1010 IF NOT FND_API.compatible_api_call
1011 (
1012 l_api_version,
1013 p_api_version,
1014 l_api_name,
1015 G_PKG_NAME
1016 )
1017 THEN
1018 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1019 END IF;
1020
1021 AHL_RM_OPERATION_PUB.Modify_Operation
1022 (
1023 -- standard IN params
1024 p_api_version => 2.0,
1025 p_init_msg_list => p_init_msg_list,
1026 p_commit => p_commit,
1027 p_validation_level => p_validation_level,
1028 p_default => p_default,
1029 p_module_type => p_module_type,
1030 -- standard OUT params
1031 x_return_status => x_return_status,
1032 x_msg_count => x_msg_count,
1033 x_msg_data => x_msg_data,
1034 -- procedure params
1035 p_oper_rec => p_oper_rec,
1036 p_x_oper_doc_tbl => p_x_oper_doc_tbl,
1037 p_x_oper_resource_tbl => p_x_oper_resource_tbl,
1038 p_x_oper_material_tbl => p_x_oper_material_tbl,
1039 p_x_oper_panel_tbl => l_x_oper_panel_tbl
1040 );
1041
1042 --
1043 EXCEPTION
1044 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1045 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1046 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1047 p_data => x_msg_data,
1048 p_encoded => fnd_api.g_false);
1049
1050 WHEN OTHERS THEN
1051 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1052 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1053 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1054 p_procedure_name => 'MODIFY_OPERATION',
1055 p_error_text => SQLERRM);
1056 END IF;
1057 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1058 p_data => x_msg_data,
1059 p_encoded => fnd_api.g_false);
1060
1061 END Modify_Operation;
1062
1063
1064 PROCEDURE Delete_Operation
1065 (
1066 -- standard IN params
1067 p_api_version IN NUMBER,
1068 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1069 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1070 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1071 p_default IN VARCHAR2 :=FND_API.G_FALSE,
1072 p_module_type IN VARCHAR2 :=NULL,
1073 -- standard OUT params
1074 x_return_status OUT NOCOPY VARCHAR2,
1075 x_msg_count OUT NOCOPY NUMBER,
1076 x_msg_data OUT NOCOPY VARCHAR2,
1077 -- procedure params
1078 p_oper_id IN NUMBER,
1079 p_oper_number IN VARCHAR2,
1080 p_oper_revision IN NUMBER,
1081 p_oper_object_version IN NUMBER
1082 )
1083 IS
1084 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_OPERATION';
1085 l_api_version CONSTANT NUMBER := 1.0;
1086 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
1087 l_oper_id NUMBER;
1088
1089 BEGIN
1090
1091 -- Initialize API return status to success
1092 x_return_status := FND_API.G_RET_STS_SUCCESS;
1093
1094 -- Standard Start of API savepoint
1095 SAVEPOINT delete_operation_pub;
1096
1097 -- Standard call to check for call compatibility.
1098 IF NOT FND_API.compatible_api_call
1099 (
1100 l_api_version,
1101 p_api_version,
1102 l_api_name,
1103 G_PKG_NAME
1104 )
1105 THEN
1106 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107 END IF;
1108
1109 -- Initialize message list if p_init_msg_list is set to TRUE.
1110 IF FND_API.to_boolean( p_init_msg_list ) THEN
1111 FND_MSG_PUB.initialize;
1112 END IF;
1113
1114 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1115 fnd_log.string
1116 (
1117 fnd_log.level_procedure,
1118 l_debug_module ||'.begin',
1119 'At the start of PLSQL procedure'
1120 );
1121 END IF;
1122
1123 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1124
1125 fnd_log.string
1126 (
1127 fnd_log.level_statement,
1128 l_debug_module,
1129 'Before calling the private API AHL_RM_OPERATION_PVT.delete_operation.....'
1130 );
1131
1132 END IF;
1133
1134 l_oper_id := p_oper_id;
1135 -- If Id is null derive Operation id from Operation Number and revision
1136 IF l_oper_id IS NULL THEN
1137
1138 -- Function to convert Operation number, operation revision to id
1139 -- PRITHWI : CODE ERROR
1140 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
1141 (
1142 p_operation_number => p_oper_number,
1143 p_operation_revision => p_oper_revision,
1144 x_operation_id => l_oper_id,
1145 x_return_status => x_return_status
1146 );
1147
1148 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1149 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1150 fnd_log.string
1151 (
1152 fnd_log.level_error,
1153 l_debug_module,
1154 'Error in AHL_RM_ROUTE_UTIL.Operation_Number_To_Id API'
1155 );
1156 END IF;
1157 RAISE FND_API.G_EXC_ERROR;
1158 END IF;
1159 END IF;
1160
1161 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1162
1163 fnd_log.string
1164 (
1165 fnd_log.level_statement,
1166 l_debug_module,
1167 'Operation Id of the Operation that is being deleted .....' || l_oper_id
1168 );
1169
1170 END IF;
1171
1172
1173 AHL_RM_OPERATION_PVT.delete_operation
1174 (
1175 p_api_version => 1.0,
1176 p_init_msg_list => FND_API.G_FALSE,
1177 p_commit => FND_API.G_FALSE,
1178 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1179 p_default => p_default,
1180 p_module_type => p_module_type,
1181 x_return_status => x_return_status,
1182 x_msg_count => x_msg_count,
1183 x_msg_data => x_msg_data,
1184 p_operation_id => l_oper_id ,
1185 p_object_version_number => p_oper_object_version
1186 );
1187 -- to raise errors from AHL_RM_OPERATION_PVT.process_operation
1188 x_msg_count := FND_MSG_PUB.count_msg;
1189
1190 IF x_msg_count > 0 THEN
1191 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1192 RAISE FND_API.G_EXC_ERROR;
1193 END IF;
1194
1195 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1196 fnd_log.string
1197 (
1198 fnd_log.level_procedure,
1199 l_debug_module ||'.End',
1200 'At the end of PLSQL procedure...'
1201 );
1202 END IF;
1203
1204 -- Check Error Message stack.
1205 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1206 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
1207 fnd_log.string
1208 (
1209 fnd_log.level_error,
1210 l_debug_module,
1211 'Private API raised expected error....'
1212 );
1213 END IF;
1214 RAISE FND_API.G_EXC_ERROR;
1215 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1216 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1217 fnd_log.string
1218 (
1219 fnd_log.level_error,
1220 l_debug_module,
1221 'Private API raised unexpected error....'
1222 );
1223 END IF;
1224 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1225 END IF;
1226
1227 -- Standard check of p_commit
1228 IF FND_API.To_Boolean(p_commit) THEN
1229 COMMIT WORK;
1230 END IF;
1231
1232 --
1233 EXCEPTION
1234 WHEN FND_API.G_EXC_ERROR THEN
1235 x_return_status := FND_API.G_RET_STS_ERROR;
1236 Rollback to delete_operation_pub;
1237 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1238 p_data => x_msg_data,
1239 p_encoded => fnd_api.g_false);
1240
1241
1242 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1243 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1244 Rollback to delete_operation_pub;
1245 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1246 p_data => x_msg_data,
1247 p_encoded => fnd_api.g_false);
1248
1249 WHEN OTHERS THEN
1250 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1251 Rollback to delete_operation_pub;
1252 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1253 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1254 p_procedure_name => 'DELETE_OPERATION',
1255 p_error_text => SQLERRM);
1256 END IF;
1257 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1258 p_data => x_msg_data,
1259 p_encoded => fnd_api.g_false);
1260
1261 END Delete_Operation;
1262
1263
1264 PROCEDURE Process_Oper_Alt_Resources
1265 (
1266 -- standard IN params
1267 p_api_version IN NUMBER,
1268 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1269 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1270 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1271 p_default IN VARCHAR2 :=FND_API.G_FALSE,
1272 p_module_type IN VARCHAR2 :=NULL,
1273 -- standard OUT params
1274 x_return_status OUT NOCOPY VARCHAR2,
1275 x_msg_count OUT NOCOPY NUMBER,
1276 x_msg_data OUT NOCOPY VARCHAR2,
1277 -- procedure params
1278 p_operation_number IN VARCHAR2,
1279 p_operation_revision IN NUMBER,
1280 p_operation_id IN NUMBER,
1281 p_resource_id IN NUMBER,
1282 p_resource_name IN VARCHAR2,
1283 p_x_alt_resource_tbl IN OUT NOCOPY AHL_RM_RT_OPER_RESOURCE_PVT.alt_resource_tbl_type
1284 )
1285 IS
1286
1287 -- cursor to fetch the resource Id if the resource name is known
1288 CURSOR get_res_id( c_resource_name IN VARCHAR2)
1289 IS
1290 SELECT RESOURCE_ID
1291 from AHL_RESOURCES
1292 where name = c_resource_name;
1293
1294
1295 -- cursor to get the resource association id given the operation and the resource details
1296 CURSOR get_rt_oper_resource (c_operation_id IN NUMBER, c_resource_id IN NUMBER )
1297 IS
1298 SELECT rt_oper_resource_id
1299 from AHL_RT_OPER_RESOURCES
1300 where
1301 object_ID = c_operation_id
1302 and aso_resource_id = c_resource_id;
1303
1304
1305
1306 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_OPER_ALT_RESOURCES';
1307 l_api_version CONSTANT NUMBER := 1.0;
1308 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
1309 l_rt_oper_resource_id NUMBER;
1310 l_resource_id NUMBER;
1311 l_operation_id NUMBER;
1312
1313 BEGIN
1314
1315 -- Initialize API return status to success
1316 x_return_status := FND_API.G_RET_STS_SUCCESS;
1317
1318 -- Standard Start of API savepoint
1319 SAVEPOINT Process_Alt_Resources;
1320
1321 -- Standard call to check for call compatibility.
1322 IF NOT FND_API.compatible_api_call
1323 (
1324 l_api_version,
1325 p_api_version,
1326 l_api_name,
1327 G_PKG_NAME
1328 )
1329 THEN
1330 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1331 END IF;
1332
1333 -- Initialize message list if p_init_msg_list is set to TRUE.
1334 IF FND_API.to_boolean( p_init_msg_list ) THEN
1335 FND_MSG_PUB.initialize;
1336 END IF;
1337
1338 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1339 fnd_log.string
1340 (
1341 fnd_log.level_procedure,
1342 l_debug_module ||'.begin',
1343 'At the start of PLSQL procedure'
1344 );
1345 END IF;
1346
1347 l_operation_id := p_operation_id;
1348 -- If Id is null derive Operation id from Operation Number and revision
1349 IF l_operation_id IS NULL THEN
1350
1351 -- Function to convert Operation number, operation revision to id
1352 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
1353 (
1354 p_operation_number => p_operation_number,
1355 p_operation_revision => p_operation_revision,
1356 x_operation_id => l_operation_id,
1357 x_return_status => x_return_status
1358 );
1359 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1360 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1361 fnd_log.string
1362 (
1363 fnd_log.level_error,
1364 l_debug_module,
1365 'Error in AHL_RM_ROUTE_UTIL.Operation_Number_To_Id API'
1366 );
1367 END IF;
1368 RAISE FND_API.G_EXC_ERROR;
1369 END IF;
1370 END IF;
1371
1372 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1373
1374 fnd_log.string
1375 (
1376 fnd_log.level_statement,
1377 l_debug_module,
1378 'Operation Id of the Operation that is being updated .....' || l_operation_id
1379 );
1380 END IF;
1381
1382 -- if Id is null derive Resource Id from Resource name
1383 -- if resource Id cannot be found then throw error
1384 l_resource_id := p_resource_id;
1385 IF l_resource_id IS NULL THEN
1386
1387 OPEN get_res_id(p_resource_name );
1388 FETCH get_res_id INTO l_resource_id;
1389
1390 IF get_res_id%NOTFOUND THEN
1391 -- PRITHWI : please run this message and check what it displays.
1392 FND_MESSAGE.set_name( 'AHL','AHL_RM_INVALID_ASO_RES_ID' );
1393 FND_MESSAGE.set_token( 'RECORD', p_resource_name );
1394 FND_MSG_PUB.add;
1395 RAISE FND_API.G_EXC_ERROR;
1396 END IF;
1397
1398 CLOSE get_res_id;
1399
1400 END IF;
1401
1402 -- check whether the association ID between Operation and resource exists.
1403 OPEN get_rt_oper_resource (l_operation_id , l_resource_id);
1404 FETCH get_rt_oper_resource INTO l_rt_oper_resource_id;
1405 IF get_rt_oper_resource%NOTFOUND THEN
1406 -- PRITHWI : please run this message and check what it displays.
1407 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_INVALID_OBJECT' );
1408 FND_MSG_PUB.add;
1409 RAISE FND_API.G_EXC_ERROR;
1410 END IF;
1411
1412 CLOSE get_rt_oper_resource;
1413
1414 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1415
1416 fnd_log.string
1417 (
1418 fnd_log.level_statement,
1419 l_debug_module,
1420 'Before calling Private API AHL_RM_RT_OPER_RESOURCE_PVT.process_alternate_resource'
1421 );
1422 END IF;
1423
1424 AHL_RM_RT_OPER_RESOURCE_PVT.process_alternate_resource
1425 (
1426 p_api_version => 1.0 ,
1427 p_init_msg_list => p_init_msg_list,
1428 p_commit => p_commit,
1429 p_validation_level => p_validation_level,
1430 p_default => p_default,
1431 p_module_type => p_module_type,
1432 x_return_status => x_return_status,
1433 x_msg_count => x_msg_count,
1434 x_msg_data => x_msg_data,
1435 p_rt_oper_resource_id => l_rt_oper_resource_id,
1436 p_x_alt_resource_tbl => p_x_alt_resource_tbl
1437 );
1438
1439 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1440
1441 fnd_log.string
1442 (
1443 fnd_log.level_statement,
1444 l_debug_module,
1445 'After calling Private API AHL_RM_RT_OPER_RESOURCE_PVT.process_alternate_resource'
1446 );
1447 END IF;
1448
1449
1450 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1451 fnd_log.string
1452 (
1453 fnd_log.level_procedure,
1454 l_debug_module ||'.End',
1455 'At the end of PLSQL procedure...'
1456 );
1457 END IF;
1458
1459 -- Check Error Message stack.
1460 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1461 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
1462 fnd_log.string
1463 (
1464 fnd_log.level_error,
1465 l_debug_module,
1466 'Public API raised expected error....'
1467 );
1468 END IF;
1469 RAISE FND_API.G_EXC_ERROR;
1470 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1471 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1472 fnd_log.string
1473 (
1474 fnd_log.level_error,
1475 l_debug_module,
1476 'Public API raised unexpected error....'
1477 );
1478 END IF;
1479 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1480 END IF;
1481
1482 -- Standard check of p_commit
1483 IF FND_API.To_Boolean(p_commit) THEN
1484 COMMIT WORK;
1485 END IF;
1486
1487 --
1488 EXCEPTION
1489 WHEN FND_API.G_EXC_ERROR THEN
1490 x_return_status := FND_API.G_RET_STS_ERROR;
1491 Rollback to Process_Alt_Resources;
1492 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1493 p_data => x_msg_data,
1494 p_encoded => fnd_api.g_false);
1495
1496
1497 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1498 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1499 Rollback to Process_Alt_Resources;
1500 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1501 p_data => x_msg_data,
1502 p_encoded => fnd_api.g_false);
1503
1504 WHEN OTHERS THEN
1505 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1506 Rollback to Process_Alt_Resources;
1507 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1508 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1509 p_procedure_name => 'Process_Oper_Alt_Resources',
1510 p_error_text => SQLERRM);
1511 END IF;
1512 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1513 p_data => x_msg_data,
1514 p_encoded => fnd_api.g_false);
1515
1516 END Process_Oper_Alt_Resources;
1517
1518
1519
1520 PROCEDURE Create_Oper_Revision
1521 (
1522 -- standard IN params
1523 p_api_version IN NUMBER,
1524 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1525 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1526 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1527 p_default IN VARCHAR2 :=FND_API.G_FALSE,
1528 p_module_type IN VARCHAR2 :=NULL,
1529 -- standard OUT params
1530 x_return_status OUT NOCOPY VARCHAR2,
1531 x_msg_count OUT NOCOPY NUMBER,
1532 x_msg_data OUT NOCOPY VARCHAR2,
1533 -- procedure params
1534 p_oper_id IN NUMBER,
1535 p_oper_number IN VARCHAR2,
1536 p_oper_revision IN NUMBER,
1537 p_oper_object_version IN NUMBER,
1538 x_new_oper_id OUT NOCOPY NUMBER
1539 )
1540 IS
1541
1542 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OPER_REVISION';
1543 l_api_version CONSTANT NUMBER := 1.0;
1544 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
1545 l_operation_id NUMBER;
1546
1547 BEGIN
1548
1549 -- Initialize API return status to success
1550 x_return_status := FND_API.G_RET_STS_SUCCESS;
1551
1552 -- Standard Start of API savepoint
1553 SAVEPOINT create_oper_revision_pub;
1554
1555 -- Standard call to check for call compatibility.
1556 IF NOT FND_API.compatible_api_call
1557 (
1558 l_api_version,
1559 p_api_version,
1560 l_api_name,
1561 G_PKG_NAME
1562 )
1563 THEN
1564 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1565 END IF;
1566
1567 -- Initialize message list if p_init_msg_list is set to TRUE.
1568 IF FND_API.to_boolean( p_init_msg_list ) THEN
1569 FND_MSG_PUB.initialize;
1570 END IF;
1571
1572 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1573 fnd_log.string
1574 (
1575 fnd_log.level_procedure,
1576 l_debug_module ||'.begin',
1577 'At the start of PLSQL procedure'
1578 );
1579 END IF;
1580
1581 -- If Id is null derive Operation id from Operation Number and revision
1582 l_operation_id := p_oper_id;
1583 IF ( p_oper_id IS NULL OR
1584 p_oper_id = FND_API.G_MISS_NUM )
1585 THEN
1586 -- Function to convert Operation number, operation revision to id
1587 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
1588 (
1589 p_operation_number => p_oper_number,
1590 p_operation_revision => p_oper_revision,
1591 x_operation_id => l_operation_id,
1592 x_return_status => x_return_status
1593 );
1594 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1595 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1596 fnd_log.string
1597 (
1598 fnd_log.level_error,
1599 l_debug_module,
1600 'Error in AHL_RM_ROUTE_UTIL.Operation_Number_To_Id API'
1601 );
1602 END IF;
1603 RAISE FND_API.G_EXC_ERROR;
1604 END IF;
1605 END IF;
1606
1607 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1608 fnd_log.string
1609 (
1610 fnd_log.level_statement,
1611 l_debug_module,
1612 'Before calling the private API.....'
1613 );
1614 END IF;
1615
1616 -- Call the private API
1617
1618
1619 AHL_RM_OPERATION_PVT.create_oper_revision
1620 (
1621 p_api_version => 1.0,
1622 p_init_msg_list => FND_API.G_FALSE,
1623 p_commit => FND_API.G_FALSE,
1624 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1625 p_default => p_default,
1626 p_module_type => p_module_type,
1627 x_return_status => x_return_status,
1628 x_msg_count => x_msg_count,
1629 x_msg_data => x_msg_data,
1630 p_operation_id => l_operation_id,
1631 p_object_version_number => p_oper_object_version,
1632 x_operation_id => x_new_oper_id
1633 );
1634
1635
1636 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1637 fnd_log.string
1638 (
1639 fnd_log.level_procedure,
1640 l_debug_module ||'.End',
1641 'At the end of PLSQL procedure...'
1642 );
1643 END IF;
1644
1645 -- Check Error Message stack.
1646 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1647 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1648 fnd_log.string
1649 (
1650 fnd_log.level_error,
1651 l_debug_module ,
1652 'Private API raised expected error....'
1653 );
1654 END IF;
1655 RAISE FND_API.G_EXC_ERROR;
1656 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1657 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1658 fnd_log.string
1659 (
1660 fnd_log.level_error,
1661 l_debug_module ,
1662 'Private API raised unexpected error....'
1663 );
1664 END IF;
1665 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1666 END IF;
1667
1668 -- Standard check of p_commit
1669 IF FND_API.To_Boolean(p_commit) THEN
1670 COMMIT WORK;
1671 END IF;
1672
1673 --
1674 EXCEPTION
1675 WHEN FND_API.G_EXC_ERROR THEN
1676 x_return_status := FND_API.G_RET_STS_ERROR;
1677 Rollback to create_oper_revision_pub;
1678 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1679 p_data => x_msg_data,
1680 p_encoded => fnd_api.g_false);
1681
1682
1683 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1684 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1685 Rollback to create_oper_revision_pub;
1686 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1687 p_data => x_msg_data,
1688 p_encoded => fnd_api.g_false);
1689
1690 WHEN OTHERS THEN
1691 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1692 Rollback to create_oper_revision_pub;
1693 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1694 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1695 p_procedure_name => 'create_oper_revision',
1696 p_error_text => SQLERRM);
1697 END IF;
1698 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1699 p_data => x_msg_data,
1700 p_encoded => fnd_api.g_false);
1701
1702 END Create_Oper_Revision;
1703
1704
1705 PROCEDURE Initiate_Oper_Approval
1706 (
1707 -- standard IN params
1708 p_api_version IN NUMBER,
1709 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1710 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1711 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1712 p_default IN VARCHAR2 :=FND_API.G_FALSE,
1713 p_module_type IN VARCHAR2 :=NULL,
1714 -- standard OUT params
1715 x_return_status OUT NOCOPY VARCHAR2,
1716 x_msg_count OUT NOCOPY NUMBER,
1717 x_msg_data OUT NOCOPY VARCHAR2,
1718 -- procedure params
1719 p_oper_id IN NUMBER,
1720 p_oper_number IN VARCHAR2,
1721 p_oper_revision IN NUMBER,
1722 p_oper_object_version IN NUMBER,
1723 p_apprv_type IN VARCHAR2 :='COMPLETE'
1724 )
1725 IS
1726 l_api_version CONSTANT NUMBER := 1.0;
1727 l_api_name CONSTANT VARCHAR2(30) := 'INITIATE_OPER_APPROVAL';
1728 l_debug_module CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name||'.'||l_api_name;
1729 l_source_operation_id NUMBER;
1730
1731 BEGIN
1732
1733 -- Initialize API return status to success
1734 x_return_status := FND_API.G_RET_STS_SUCCESS;
1735
1736 -- Standard Start of API savepoint
1737 SAVEPOINT initiate_oper_approval_pub;
1738
1739 -- Standard call to check for call compatibility.
1740 IF NOT FND_API.compatible_api_call
1741 (
1742 l_api_version,
1743 p_api_version,
1744 l_api_name,
1745 G_PKG_NAME
1746 )
1747 THEN
1748 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1749 END IF;
1750
1751 -- Initialize message list if p_init_msg_list is set to TRUE.
1752 IF FND_API.to_boolean( p_init_msg_list ) THEN
1753 FND_MSG_PUB.initialize;
1754 END IF;
1755
1756 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1757 fnd_log.string
1758 (
1759 fnd_log.level_procedure,
1760 l_debug_module || '.begin',
1761 'At the start of PLSQL procedure'
1762 );
1763 END IF;
1764
1765 -- If Id is null derive Operation id from Operation Number and revision
1766 l_source_operation_id := p_oper_id;
1767 IF ( p_oper_id IS NULL OR
1768 p_oper_id = FND_API.G_MISS_NUM )
1769 THEN
1770 -- Function to convert Operation number, operation revision to id
1771 AHL_RM_ROUTE_UTIL.Operation_Number_To_Id
1772 (
1773 p_operation_number => p_oper_number,
1774 p_operation_revision => p_oper_revision,
1775 x_operation_id => l_source_operation_id,
1776 x_return_status => x_return_status
1777 );
1778 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1779 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1780 fnd_log.string
1781 (
1782 fnd_log.level_statement,
1783 l_debug_module ,
1784 'Error in AHL_RM_ROUTE_UTIL.Operation_Number_To_Id API'
1785 );
1786 END IF;
1787 RAISE FND_API.G_EXC_ERROR;
1788 END IF;
1789 END IF;
1790
1791 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1792 fnd_log.string
1793 (
1794 fnd_log.level_statement,
1795 l_debug_module,
1796 'Before calling the private API.....'
1797 );
1798 END IF;
1799
1800
1801 -- Call the private API
1802 AHL_RM_APPROVAL_PVT.INITIATE_OPER_APPROVAL
1803 (
1804 p_api_version => 1.0,
1805 p_init_msg_list => FND_API.G_FALSE,
1806 p_commit => FND_API.G_FALSE,
1807 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1808 p_default => p_default,
1809 p_module_type => p_module_type,
1810 x_return_status => x_return_status,
1811 x_msg_count => x_msg_count,
1812 x_msg_data => x_msg_data,
1813 p_source_operation_id => l_source_operation_id,
1814 p_object_Version_number => p_oper_object_version,
1815 p_apprvl_type => p_apprv_type
1816 );
1817
1818 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1819 fnd_log.string
1820 (
1821 fnd_log.level_procedure,
1822 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||'.begin',
1823 'At the end of PLSQL procedure...'
1824 );
1825 END IF;
1826
1827 -- Check Error Message stack.
1828 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1829 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1830 fnd_log.string
1831 (
1832 fnd_log.level_error,
1833 l_debug_module,
1834 'Private API raised expected error....'
1835 );
1836 END IF;
1837 RAISE FND_API.G_EXC_ERROR;
1838 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1839 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level)THEN
1840 fnd_log.string
1841 (
1842 fnd_log.level_error,
1843 l_debug_module,
1844 'Private API raised unexpected error....'
1845 );
1846 END IF;
1847 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1848 END IF;
1849
1850 -- Standard check of p_commit
1851 IF FND_API.To_Boolean(p_commit) THEN
1852 COMMIT WORK;
1853 END IF;
1854
1855 -- Standard call to get message count and if count is 1, get message
1856 FND_MSG_PUB.Count_And_Get
1857 ( p_count => x_msg_count,
1858 p_data => x_msg_data,
1859 p_encoded => fnd_api.g_false);
1860
1861 --
1862 EXCEPTION
1863 WHEN FND_API.G_EXC_ERROR THEN
1864 x_return_status := FND_API.G_RET_STS_ERROR;
1865 Rollback to initiate_oper_approval_pub;
1866 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1867 p_data => x_msg_data,
1868 p_encoded => fnd_api.g_false);
1869
1870
1871 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1872 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1873 Rollback to initiate_oper_approval_pub;
1874 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1875 p_data => x_msg_data,
1876 p_encoded => fnd_api.g_false);
1877
1878 WHEN OTHERS THEN
1879 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1880 Rollback to initiate_oper_approval_pub;
1881 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1882 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1883 p_procedure_name => 'INITIATE_OPER_APPROVAL',
1884 p_error_text => SQLERRM);
1885 END IF;
1886 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1887 p_data => x_msg_data,
1888 p_encoded => fnd_api.g_false);
1889
1890 END Initiate_Oper_Approval;
1891
1892 END AHL_RM_OPERATION_PUB;
1893