[Home] [Help]
PACKAGE BODY: APPS.AMS_MET_TPL_DTL_PVT
Source
1 PACKAGE BODY Ams_Met_Tpl_Dtl_Pvt AS
2 /* $Header: amsvmtdb.pls 115.8 2003/10/25 00:21:35 choang ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- AMS_Met_Tpl_Dtl_PVT
7 -- Purpose
8 --
9 -- History
10 -- 03/05/2002 dmvincen Created.
11 -- 30/01/2003 sunkumar restricted updation for seeded metrics apart from the enable flag.
12 -- 24-oct-2003 choang added FORMULA for enh 3130095
13 --
14 -- NOTE
15 --
16 -- End of Comments
17 -- ===============================================================
18
19
20 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_Met_Tpl_Dtl_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvmtdb.pls';
22
23 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
24 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
25 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
26
27 PROCEDURE Complete_met_tpl_dtl_Rec (
28 p_ref_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
29 x_tar_met_tpl_dtl_rec IN OUT NOCOPY met_tpl_dtl_rec_type);
30
31 -- Hint: Primary key needs to be returned.
32 PROCEDURE Create_Met_Tpl_Dtl(
33 p_api_version_number IN NUMBER,
34 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
35 p_commit IN VARCHAR2 := FND_API.G_FALSE,
36 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
37
38 x_return_status OUT NOCOPY VARCHAR2,
39 x_msg_count OUT NOCOPY NUMBER,
40 x_msg_data OUT NOCOPY VARCHAR2,
41
42 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type := g_miss_met_tpl_dtl_rec,
43 x_metric_template_detail_id OUT NOCOPY NUMBER
44 )
45
46 IS
47 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Met_Tpl_Dtl';
48 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
49 l_return_status_full VARCHAR2(1);
50 l_object_version_number NUMBER := 1;
51 l_org_id NUMBER := FND_API.G_MISS_NUM;
52 l_METRIC_TEMPLATE_DETAIL_ID NUMBER;
53 l_dummy NUMBER;
54
55 CURSOR c_id IS
56 SELECT AMS_MET_TPL_DETAILS_s.NEXTVAL
57 FROM dual;
58
59 CURSOR c_id_exists (l_id IN NUMBER) IS
60 SELECT 1
61 FROM AMS_MET_TPL_DETAILS
62 WHERE METRIC_TEMPLATE_DETAIL_ID = l_id;
63
64 l_met_tpl_dtl_rec met_tpl_dtl_rec_type := p_met_tpl_dtl_rec;
65
66 BEGIN
67 -- Standard Start of API savepoint
68 SAVEPOINT CREATE_Met_Tpl_Dtl_PVT;
69
70 -- Standard call to check for call compatibility.
71 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
72 p_api_version_number,
73 l_api_name,
74 G_PKG_NAME)
75 THEN
76 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
77 END IF;
78
79 -- Initialize message list if p_init_msg_list is set to TRUE.
80 IF FND_API.to_Boolean( p_init_msg_list )
81 THEN
82 FND_MSG_PUB.initialize;
83 END IF;
84
85 -- Debug Message
86 IF (AMS_DEBUG_HIGH_ON) THEN
87
88 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': start');
89 END IF;
90
91 --sunkumar 30/01/2003
92 --check if the template is a seeded one
93 /* IF p_met_tpl_dtl_rec.metric_tpl_header_id < 10000 THEN
94 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
95 THEN
96 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_METR_TPL_SEEDED');
97 END IF;
98
99 RAISE FND_API.G_EXC_ERROR;
100 END IF; */
101
102
103 -- Initialize API return status to SUCCESS
104 x_return_status := FND_API.G_RET_STS_SUCCESS;
105
106 -- Local variable initialization
107
108 IF l_met_tpl_dtl_rec.METRIC_TEMPLATE_DETAIL_ID IS NULL OR
109 l_met_tpl_dtl_rec.METRIC_TEMPLATE_DETAIL_ID = FND_API.g_miss_num THEN
110 LOOP
111 l_dummy := NULL;
112 OPEN c_id;
113 FETCH c_id INTO l_METRIC_TEMPLATE_DETAIL_ID;
114 CLOSE c_id;
115
116 OPEN c_id_exists(l_METRIC_TEMPLATE_DETAIL_ID);
117 FETCH c_id_exists INTO l_dummy;
118 CLOSE c_id_exists;
119 EXIT WHEN l_dummy IS NULL;
120 END LOOP;
121 l_met_tpl_dtl_rec.metric_template_detail_id := l_metric_template_detail_id;
122 END IF;
123
124 -- =========================================================================
125 -- Validate Environment
126 -- =========================================================================
127
128 IF FND_GLOBAL.User_Id IS NULL
129 THEN
130 Ams_Utility_Pvt.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
131 RAISE FND_API.G_EXC_ERROR;
132 END IF;
133
134 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
135 THEN
136 -- Debug message
137 IF (AMS_DEBUG_HIGH_ON) THEN
138
139 Ams_Utility_Pvt.debug_message('Private API: Validate_Met_Tpl_Dtl');
140 END IF;
141
142 -- Invoke validation procedures
143 Validate_met_tpl_dtl(
144 p_api_version_number => 1.0,
145 p_init_msg_list => FND_API.G_FALSE,
146 p_validation_level => p_validation_level,
147 p_validation_mode => JTF_PLSQL_API.g_create,
148 p_met_tpl_dtl_rec => l_met_tpl_dtl_rec,
149 x_return_status => x_return_status,
150 x_msg_count => x_msg_count,
151 x_msg_data => x_msg_data);
152 END IF;
153
154 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
155 RAISE FND_API.G_EXC_ERROR;
156 END IF;
157
158
159 -- Debug Message
160 IF (AMS_DEBUG_HIGH_ON) THEN
161
162 Ams_Utility_Pvt.debug_message( 'Private API: Calling create table handler');
163 END IF;
164
165 -- Invoke table handler(AMS_MET_TPL_DETAILS_PKG.Insert_Row)
166 Ams_Met_Tpl_Details_Pkg.Insert_Row(
167 px_metric_template_detail_id => l_metric_template_detail_id,
168 p_last_update_date => SYSDATE,
169 p_last_updated_by => FND_GLOBAL.USER_ID,
170 p_creation_date => SYSDATE,
171 p_created_by => FND_GLOBAL.USER_ID,
172 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
173 px_object_version_number => l_object_version_number,
174 p_metric_tpl_header_id => p_met_tpl_dtl_rec.metric_tpl_header_id,
175 p_metric_id => p_met_tpl_dtl_rec.metric_id,
176 p_enabled_flag => p_met_tpl_dtl_rec.enabled_flag);
177
178 x_metric_template_detail_id := l_metric_template_detail_id;
179 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
180 RAISE FND_API.G_EXC_ERROR;
181 END IF;
182 --
183 -- End of API body
184 --
185
186 -- Standard check for p_commit
187 IF FND_API.to_Boolean( p_commit )
188 THEN
189 COMMIT WORK;
190 END IF;
191
192
193 -- Debug Message
194 IF (AMS_DEBUG_HIGH_ON) THEN
195
196 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': end');
197 END IF;
198
199 -- Standard call to get message count and if count is 1, get message info.
200 FND_MSG_PUB.Count_And_Get
201 (p_count => x_msg_count,
202 p_data => x_msg_data
203 );
204 EXCEPTION
205
206 WHEN Ams_Utility_Pvt.resource_locked THEN
207 x_return_status := FND_API.g_ret_sts_error;
208 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
209
210 WHEN FND_API.G_EXC_ERROR THEN
211 ROLLBACK TO CREATE_Met_Tpl_Dtl_PVT;
212 x_return_status := FND_API.G_RET_STS_ERROR;
213 -- Standard call to get message count and if count=1, get the message
214 FND_MSG_PUB.Count_And_Get (
215 p_encoded => FND_API.G_FALSE,
216 p_count => x_msg_count,
217 p_data => x_msg_data
218 );
219
220 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
221 ROLLBACK TO CREATE_Met_Tpl_Dtl_PVT;
222 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
223 -- Standard call to get message count and if count=1, get the message
224 FND_MSG_PUB.Count_And_Get (
225 p_encoded => FND_API.G_FALSE,
226 p_count => x_msg_count,
227 p_data => x_msg_data
228 );
229
230 WHEN OTHERS THEN
231 ROLLBACK TO CREATE_Met_Tpl_Dtl_PVT;
232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
233 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
234 THEN
235 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
236 END IF;
237 -- Standard call to get message count and if count=1, get the message
238 FND_MSG_PUB.Count_And_Get (
239 p_encoded => FND_API.G_FALSE,
240 p_count => x_msg_count,
241 p_data => x_msg_data
242 );
243 END Create_Met_Tpl_Dtl;
244
245
246 PROCEDURE Update_Met_Tpl_Dtl(
247 p_api_version_number IN NUMBER,
248 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
249 p_commit IN VARCHAR2 := FND_API.G_FALSE,
250 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
251
252 x_return_status OUT NOCOPY VARCHAR2,
253 x_msg_count OUT NOCOPY NUMBER,
254 x_msg_data OUT NOCOPY VARCHAR2,
255
256 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
257 x_object_version_number OUT NOCOPY NUMBER
258 )
259
260 IS
261 CURSOR c_get_met_tpl_dtl(l_metric_template_detail_id NUMBER) IS
262 SELECT METRIC_TEMPLATE_DETAIL_ID,
263 LAST_UPDATE_DATE,
264 LAST_UPDATED_BY,
265 CREATION_DATE,
266 CREATED_BY,
267 LAST_UPDATE_LOGIN,
268 OBJECT_VERSION_NUMBER,
269 METRIC_TPL_HEADER_ID,
270 METRIC_ID,
271 ENABLED_FLAG
272 FROM AMS_MET_TPL_DETAILS
273 WHERE METRIC_TEMPLATE_DETAIL_ID = l_metric_template_detail_id;
274
275 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Met_Tpl_Dtl';
276 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
277 -- Local Variables
278 l_object_version_number NUMBER;
279 l_METRIC_TEMPLATE_DETAIL_ID NUMBER;
280 l_ref_met_tpl_dtl_rec met_tpl_dtl_rec_type ;
281 l_tar_met_tpl_dtl_rec met_tpl_dtl_rec_type := p_met_tpl_dtl_rec;
282 l_rowid ROWID;
283
284 BEGIN
285 -- Standard Start of API savepoint
286 SAVEPOINT UPDATE_Met_Tpl_Dtl_PVT;
287
288 -- Standard call to check for call compatibility.
289 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
290 p_api_version_number,
291 l_api_name,
292 G_PKG_NAME)
293 THEN
294 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
295 END IF;
296
297 -- Initialize message list if p_init_msg_list is set to TRUE.
298 IF FND_API.to_Boolean( p_init_msg_list )
299 THEN
300 FND_MSG_PUB.initialize;
301 END IF;
302
303 -- Debug Message
304 IF (AMS_DEBUG_HIGH_ON) THEN
305
306 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': start');
307 END IF;
308
309
310 -- Initialize API return status to SUCCESS
311 x_return_status := FND_API.G_RET_STS_SUCCESS;
312
313 -- Debug Message
314 IF (AMS_DEBUG_HIGH_ON) THEN
315
316 Ams_Utility_Pvt.debug_message('Private API: - Open Cursor to Select');
317 END IF;
318
319 OPEN c_get_Met_Tpl_Dtl( l_tar_met_tpl_dtl_rec.metric_template_detail_id);
320
321 FETCH c_get_Met_Tpl_Dtl INTO l_ref_met_tpl_dtl_rec;
322
323 IF ( c_get_Met_Tpl_Dtl%NOTFOUND) THEN
324 CLOSE c_get_Met_Tpl_Dtl;
325 Ams_Utility_Pvt.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
326 p_token_name => 'INFO',
327 p_token_value => 'Met_Tpl_Dtl');
328 RAISE FND_API.G_EXC_ERROR;
329 END IF;
330
331 -- Debug Message
332 IF (AMS_DEBUG_HIGH_ON) THEN
333
334 Ams_Utility_Pvt.debug_message('Private API: - Close Cursor');
335 END IF;
336 CLOSE c_get_Met_Tpl_Dtl;
337
338 Complete_met_tpl_dtl_rec(l_ref_met_tpl_dtl_rec, l_tar_met_tpl_dtl_rec);
339
340 IF (l_tar_met_tpl_dtl_rec.object_version_number IS NULL OR
341 l_tar_met_tpl_dtl_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
342 Ams_Utility_Pvt.Error_Message(p_message_name => 'API_VERSION_MISSING',
343 p_token_name => 'COLUMN',
344 p_token_value => 'Last_Update_Date');
345 RAISE FND_API.G_EXC_ERROR;
346 END IF;
347
348 -- Check Whether record has been changed by someone else
349 IF (l_tar_met_tpl_dtl_rec.object_version_number <> l_ref_met_tpl_dtl_rec.object_version_number) THEN
350 Ams_Utility_Pvt.Error_Message(p_message_name => 'API_RECORD_CHANGED',
351 p_token_name => 'INFO',
352 p_token_value => 'Met_Tpl_Dtl');
353 RAISE FND_API.G_EXC_ERROR;
354 END IF;
355
356
357 --sunkumar 30/01/2003
358 --check if we are trying to update a seeded metric template
359 IF p_met_tpl_dtl_rec.metric_tpl_header_id < 10000 THEN
360 IF (( (l_tar_met_tpl_dtl_rec.metric_template_detail_id <>l_ref_met_tpl_dtl_rec.metric_template_detail_id )
361 OR (l_tar_met_tpl_dtl_rec.metric_id <>l_ref_met_tpl_dtl_rec.metric_id)
362 OR (l_tar_met_tpl_dtl_rec.metric_tpl_header_id <>l_ref_met_tpl_dtl_rec.metric_tpl_header_id))
363 AND (l_tar_met_tpl_dtl_rec.enabled_flag=l_ref_met_tpl_dtl_rec.enabled_flag)) THEN
364 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
365 THEN
366 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_METR_TPL_SEEDED_MOD');
367 END IF;
368
369
370 RAISE FND_API.G_EXC_ERROR;
371 END IF;
372 END IF;
373
374
375
376
377 IF ( p_validation_level >= FND_API.G_VALID_LEVEL_FULL)
378 THEN
379 -- Debug message
380 IF (AMS_DEBUG_HIGH_ON) THEN
381
382 Ams_Utility_Pvt.debug_message('Private API: Validate_Met_Tpl_Dtl');
383 END IF;
384
385 -- Invoke validation procedures
386 Validate_met_tpl_dtl(
387 p_api_version_number => 1.0,
388 p_init_msg_list => FND_API.G_FALSE,
389 p_validation_level => p_validation_level,
390 p_validation_mode => JTF_PLSQL_API.g_update,
391 p_met_tpl_dtl_rec => l_tar_met_tpl_dtl_rec,
392 x_return_status => x_return_status,
393 x_msg_count => x_msg_count,
394 x_msg_data => x_msg_data);
395 -- Debug message
396 IF (AMS_DEBUG_HIGH_ON) THEN
397
398 Ams_Utility_Pvt.debug_message('Private API: Validate_Met_Tpl_Dtl: return status='||x_return_status);
399 END IF;
400 END IF;
401
402 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
403 RAISE FND_API.G_EXC_ERROR;
404 END IF;
405
406 l_object_version_number :=
407 l_ref_met_tpl_dtl_rec.object_version_number + 1;
408
409 -- Debug Message
410 IF (AMS_DEBUG_HIGH_ON) THEN
411
412 Ams_Utility_Pvt.debug_message('Private API: Calling update table handler');
413 END IF;
414
415 -- Invoke table handler(AMS_MET_TPL_DETAILS_PKG.Update_Row)
416 Ams_Met_Tpl_Details_Pkg.Update_Row(
417 p_metric_template_detail_id => p_met_tpl_dtl_rec.metric_template_detail_id,
418 p_last_update_date => SYSDATE,
419 p_last_updated_by => FND_GLOBAL.USER_ID,
420 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
421 p_object_version_number => l_object_version_number,
422 p_metric_tpl_header_id => p_met_tpl_dtl_rec.metric_tpl_header_id,
423 p_metric_id => p_met_tpl_dtl_rec.metric_id,
424 p_enabled_flag => p_met_tpl_dtl_rec.enabled_flag);
425
426 --
427 -- End of API body.
428 --
429
430 -- Standard check for p_commit
431 IF FND_API.to_Boolean( p_commit )
432 THEN
433 COMMIT WORK;
434 END IF;
435
436
437 -- Debug Message
438 IF (AMS_DEBUG_HIGH_ON) THEN
439
440 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': end');
441 END IF;
442
443 -- Standard call to get message count and if count is 1, get message info.
444 FND_MSG_PUB.Count_And_Get
445 (p_count => x_msg_count,
446 p_data => x_msg_data
447 );
448 EXCEPTION
449
450 WHEN Ams_Utility_Pvt.resource_locked THEN
451 x_return_status := FND_API.g_ret_sts_error;
452 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
453
454 WHEN FND_API.G_EXC_ERROR THEN
455 ROLLBACK TO UPDATE_Met_Tpl_Dtl_PVT;
456 x_return_status := FND_API.G_RET_STS_ERROR;
457 -- Standard call to get message count and if count=1, get the message
458 FND_MSG_PUB.Count_And_Get (
459 p_encoded => FND_API.G_FALSE,
460 p_count => x_msg_count,
461 p_data => x_msg_data
462 );
463
464 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
465 ROLLBACK TO UPDATE_Met_Tpl_Dtl_PVT;
466 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
467 -- Standard call to get message count and if count=1, get the message
468 FND_MSG_PUB.Count_And_Get (
469 p_encoded => FND_API.G_FALSE,
470 p_count => x_msg_count,
471 p_data => x_msg_data
472 );
473
474 WHEN OTHERS THEN
475 ROLLBACK TO UPDATE_Met_Tpl_Dtl_PVT;
476 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
477 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
478 THEN
479 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
480 END IF;
481 -- Standard call to get message count and if count=1, get the message
482 FND_MSG_PUB.Count_And_Get (
483 p_encoded => FND_API.G_FALSE,
484 p_count => x_msg_count,
485 p_data => x_msg_data
486 );
487 END Update_Met_Tpl_Dtl;
488
489
490 PROCEDURE Delete_Met_Tpl_Dtl(
491 p_api_version_number 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 x_return_status OUT NOCOPY VARCHAR2,
496 x_msg_count OUT NOCOPY NUMBER,
497 x_msg_data OUT NOCOPY VARCHAR2,
498 p_metric_template_detail_id IN NUMBER,
499 p_object_version_number IN NUMBER
500 )
501
502 IS
503 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Met_Tpl_Dtl';
504 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
505 l_object_version_number NUMBER;
506
507 BEGIN
508 -- Standard Start of API savepoint
509 SAVEPOINT DELETE_Met_Tpl_Dtl_PVT;
510
511 -- Standard call to check for call compatibility.
512 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
513 p_api_version_number,
514 l_api_name,
515 G_PKG_NAME)
516 THEN
517 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
518 END IF;
519
520 -- Initialize message list if p_init_msg_list is set to TRUE.
521 IF FND_API.to_Boolean( p_init_msg_list )
522 THEN
523 FND_MSG_PUB.initialize;
524 END IF;
525
526 -- Debug Message
527 IF (AMS_DEBUG_HIGH_ON) THEN
528
529 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': start');
530 END IF;
531
532 --sunkumar 30/01/2003
533 --check if the template is a seeded one
534 IF p_metric_template_detail_id < 10000 THEN
535 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
536 THEN
537 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_METR_TPL_SEEDED');
538 END IF;
539
540 RAISE FND_API.G_EXC_ERROR;
541 END IF;
542
543 -- Initialize API return status to SUCCESS
544 x_return_status := FND_API.G_RET_STS_SUCCESS;
545
546 --
547 -- Api body
548 --
549 -- Debug Message
550 IF (AMS_DEBUG_HIGH_ON) THEN
551
552 Ams_Utility_Pvt.debug_message( 'Private API: Calling delete table handler');
553 END IF;
554
555 -- Invoke table handler(AMS_MET_TPL_DETAILS_PKG.Delete_Row)
556 Ams_Met_Tpl_Details_Pkg.Delete_Row(
557 p_METRIC_TEMPLATE_DETAIL_ID => p_METRIC_TEMPLATE_DETAIL_ID);
558 --
559 -- End of API body
560 --
561
562 -- Standard check for p_commit
563 IF FND_API.to_Boolean( p_commit )
564 THEN
565 COMMIT WORK;
566 END IF;
567
568
569 -- Debug Message
570 IF (AMS_DEBUG_HIGH_ON) THEN
571
572 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': end');
573 END IF;
574
575 -- Standard call to get message count and if count is 1, get message info.
576 FND_MSG_PUB.Count_And_Get
577 (p_count => x_msg_count,
578 p_data => x_msg_data
579 );
580 EXCEPTION
581
582 WHEN Ams_Utility_Pvt.resource_locked THEN
583 x_return_status := FND_API.g_ret_sts_error;
584 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
585
586 WHEN FND_API.G_EXC_ERROR THEN
587 ROLLBACK TO DELETE_Met_Tpl_Dtl_PVT;
588 x_return_status := FND_API.G_RET_STS_ERROR;
589 -- Standard call to get message count and if count=1, get the message
590 FND_MSG_PUB.Count_And_Get (
591 p_encoded => FND_API.G_FALSE,
592 p_count => x_msg_count,
593 p_data => x_msg_data
594 );
595
596 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
597 ROLLBACK TO DELETE_Met_Tpl_Dtl_PVT;
598 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
599 -- Standard call to get message count and if count=1, get the message
600 FND_MSG_PUB.Count_And_Get (
601 p_encoded => FND_API.G_FALSE,
602 p_count => x_msg_count,
603 p_data => x_msg_data
604 );
605
606 WHEN OTHERS THEN
607 ROLLBACK TO DELETE_Met_Tpl_Dtl_PVT;
608 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
609 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
610 THEN
611 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
612 END IF;
613 -- Standard call to get message count and if count=1, get the message
614 FND_MSG_PUB.Count_And_Get (
615 p_encoded => FND_API.G_FALSE,
616 p_count => x_msg_count,
617 p_data => x_msg_data
618 );
619 END Delete_Met_Tpl_Dtl;
620
621
622
623 -- Hint: Primary key needs to be returned.
624 PROCEDURE Lock_Met_Tpl_Dtl(
625 p_api_version_number IN NUMBER,
626 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
627
628 x_return_status OUT NOCOPY VARCHAR2,
629 x_msg_count OUT NOCOPY NUMBER,
630 x_msg_data OUT NOCOPY VARCHAR2,
631
632 p_metric_template_detail_id IN NUMBER,
633 p_object_version IN NUMBER
634 )
635
636 IS
637 L_API_NAME CONSTANT VARCHAR2(30) := 'Lock_Met_Tpl_Dtl';
638 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
639 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
640 l_METRIC_TEMPLATE_DETAIL_ID NUMBER;
641
642 CURSOR c_Met_Tpl_Dtl IS
643 SELECT METRIC_TEMPLATE_DETAIL_ID
644 FROM AMS_MET_TPL_DETAILS
645 WHERE METRIC_TEMPLATE_DETAIL_ID = p_METRIC_TEMPLATE_DETAIL_ID
646 AND object_version_number = p_object_version
647 FOR UPDATE NOWAIT;
648
649 BEGIN
650
651 -- Debug Message
652 IF (AMS_DEBUG_HIGH_ON) THEN
653
654 Ams_Utility_Pvt.debug_message('Private API: ' || l_api_name || ': start');
655 END IF;
656
657 -- Initialize message list if p_init_msg_list is set to TRUE.
658 IF FND_API.to_Boolean( p_init_msg_list )
659 THEN
660 FND_MSG_PUB.initialize;
661 END IF;
662
663 -- Standard call to check for call compatibility.
664 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
665 p_api_version_number,
666 l_api_name,
667 G_PKG_NAME)
668 THEN
669 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
670 END IF;
671
672
673 -- Initialize API return status to SUCCESS
674 x_return_status := FND_API.G_RET_STS_SUCCESS;
675
676
677 ------------------------ lock -------------------------
678
679 IF (AMS_DEBUG_HIGH_ON) THEN
680
681
682
683 Ams_Utility_Pvt.debug_message(l_full_name||': start');
684
685 END IF;
686 OPEN c_Met_Tpl_Dtl;
687
688 FETCH c_Met_Tpl_Dtl INTO l_METRIC_TEMPLATE_DETAIL_ID;
689
690 IF (c_Met_Tpl_Dtl%NOTFOUND) THEN
691 CLOSE c_Met_Tpl_Dtl;
692 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
693 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
694 FND_MSG_PUB.ADD;
695 END IF;
696 RAISE FND_API.g_exc_error;
697 END IF;
698
699 CLOSE c_Met_Tpl_Dtl;
700
701 -------------------- finish --------------------------
702 FND_MSG_PUB.count_and_get(
703 p_encoded => FND_API.g_false,
704 p_count => x_msg_count,
705 p_data => x_msg_data);
706 IF (AMS_DEBUG_HIGH_ON) THEN
707
708 Ams_Utility_Pvt.debug_message(l_full_name ||': end');
709 END IF;
710 EXCEPTION
711
712 WHEN Ams_Utility_Pvt.resource_locked THEN
713 x_return_status := FND_API.g_ret_sts_error;
714 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
715
716 WHEN FND_API.G_EXC_ERROR THEN
717 ROLLBACK TO LOCK_Met_Tpl_Dtl_PVT;
718 x_return_status := FND_API.G_RET_STS_ERROR;
719 -- Standard call to get message count and if count=1, get the message
720 FND_MSG_PUB.Count_And_Get (
721 p_encoded => FND_API.G_FALSE,
722 p_count => x_msg_count,
723 p_data => x_msg_data
724 );
725
726 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
727 ROLLBACK TO LOCK_Met_Tpl_Dtl_PVT;
728 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
729 -- Standard call to get message count and if count=1, get the message
730 FND_MSG_PUB.Count_And_Get (
731 p_encoded => FND_API.G_FALSE,
732 p_count => x_msg_count,
733 p_data => x_msg_data
734 );
735
736 WHEN OTHERS THEN
737 ROLLBACK TO LOCK_Met_Tpl_Dtl_PVT;
738 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
739 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
740 THEN
741 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
742 END IF;
743 -- Standard call to get message count and if count=1, get the message
744 FND_MSG_PUB.Count_And_Get (
745 p_encoded => FND_API.G_FALSE,
746 p_count => x_msg_count,
747 p_data => x_msg_data
748 );
749 END Lock_Met_Tpl_Dtl;
750
751
752 PROCEDURE check_met_tpl_dtl_uk_items(
753 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
754 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
755 x_return_status OUT NOCOPY VARCHAR2)
756 IS
757 l_valid_flag VARCHAR2(1);
758 l_dummy NUMBER;
759
760 CURSOR c_check_duplicate(p_METRIC_ID NUMBER, p_METRIC_TPL_HEADER_ID NUMBER) IS
761 SELECT 1 FROM AMS_MET_TPL_DETAILS
762 WHERE METRIC_TPL_HEADER_ID = p_METRIC_TPL_HEADER_ID
763 AND METRIC_ID = p_METRIC_ID;
764
765 BEGIN
766 x_return_status := FND_API.g_ret_sts_success;
767 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
768 l_valid_flag := Ams_Utility_Pvt.check_uniqueness(
769 'AMS_MET_TPL_DETAILS',
770 'METRIC_TEMPLATE_DETAIL_ID = ' || p_met_tpl_dtl_rec.METRIC_TEMPLATE_DETAIL_ID
771 );
772 END IF;
773
774 IF l_valid_flag = FND_API.g_false THEN
775 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_MTD_ID_DUP');
776 x_return_status := FND_API.g_ret_sts_error;
777 RETURN;
778 END IF;
779
780 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
781 OPEN c_check_duplicate(p_met_tpl_dtl_rec.metric_id, p_met_tpl_dtl_rec.metric_tpl_header_id);
782 FETCH c_check_duplicate INTO l_dummy;
783 IF c_check_duplicate%FOUND THEN
784 Ams_Utility_Pvt.error_message(p_message_name => 'AMS_MTD_DUP_METRIC_ID');
785 x_return_status := FND_API.g_ret_sts_error;
786 END IF;
787 CLOSE c_check_duplicate;
788 END IF;
789
790 END check_met_tpl_dtl_uk_items;
791
792 PROCEDURE check_met_tpl_dtl_req_items(
793 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
794 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
795 x_return_status OUT NOCOPY VARCHAR2
796 )
797 IS
798 BEGIN
799 x_return_status := FND_API.g_ret_sts_success;
800
801 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
802
803 IF p_met_tpl_dtl_rec.metric_template_detail_id = FND_API.g_miss_num OR p_met_tpl_dtl_rec.metric_template_detail_id IS NULL THEN
804 FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
805 FND_MESSAGE.set_token('MISS_FIELD','METRIC_TEMPLATE_DETAIL_ID');
806 x_return_status := FND_API.g_ret_sts_error;
807 RETURN;
808 END IF;
809
810 IF p_met_tpl_dtl_rec.metric_tpl_header_id = FND_API.g_miss_num OR p_met_tpl_dtl_rec.metric_tpl_header_id IS NULL THEN
811 FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
812 FND_MESSAGE.set_token('MISS_FIELD','METRIC_TPL_HEADER_ID');
813 x_return_status := FND_API.g_ret_sts_error;
814 RETURN;
815 END IF;
816
817 IF p_met_tpl_dtl_rec.metric_id = FND_API.g_miss_num OR p_met_tpl_dtl_rec.metric_id IS NULL THEN
818 FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
819 FND_MESSAGE.set_token('MISS_FIELD','METRIC_ID');
820 x_return_status := FND_API.g_ret_sts_error;
821 RETURN;
822 END IF;
823
824 IF p_met_tpl_dtl_rec.enabled_flag = FND_API.g_miss_char OR p_met_tpl_dtl_rec.enabled_flag IS NULL THEN
825 FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
826 FND_MESSAGE.set_token('MISS_FIELD','ENABLED_FLAG');
827 x_return_status := FND_API.g_ret_sts_error;
828 RETURN;
829 END IF;
830
831 ELSE -- Update
832
833 IF p_met_tpl_dtl_rec.metric_template_detail_id IS NULL THEN
834 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_MTD_NO_MET_TPL_DTL_ID');
835 x_return_status := FND_API.g_ret_sts_error;
836 RETURN;
837 END IF;
838
839 IF p_met_tpl_dtl_rec.metric_tpl_header_id IS NULL THEN
840 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_MTD_NO_METRIC_TPL_HEADER_ID');
841 x_return_status := FND_API.g_ret_sts_error;
842 RETURN;
843 END IF;
844
845
846 IF p_met_tpl_dtl_rec.metric_id IS NULL THEN
847 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_MTD_NO_METRIC_ID');
848 x_return_status := FND_API.g_ret_sts_error;
849 RETURN;
850 END IF;
851
852
853 IF p_met_tpl_dtl_rec.enabled_flag IS NULL THEN
854 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_MTD_NO_ENABLED_FLAG');
855 x_return_status := FND_API.g_ret_sts_error;
856 RETURN;
857 END IF;
858 END IF;
859
860 END check_met_tpl_dtl_req_items;
861
862 PROCEDURE check_met_tpl_dtl_FK_items(
863 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
864 x_return_status OUT NOCOPY VARCHAR2
865 )
866 IS
867 CURSOR c_check_header_id(p_METRIC_TPL_HEADER_ID NUMBER) IS
868 SELECT 1 FROM AMS_MET_TPL_HEADERS_VL
869 WHERE METRIC_TPL_HEADER_ID = p_METRIC_TPL_HEADER_ID;
870
871 -- choang - 24-oct-2003
872 -- added FORMULA for enh 3130095
873 CURSOR c_check_metric(p_metric_id NUMBER) IS
874 SELECT 1 FROM ams_metrics_all_b
875 WHERE metric_id = p_metric_id
876 AND metric_calculation_type IN ('FUNCTION', 'MANUAL', 'FORMULA');
877
878 l_dummy NUMBER;
879 BEGIN
880 x_return_status := FND_API.g_ret_sts_success;
881
882 -- Enter custom code here
883
884 -- Validate metric_tpl_header_id exists.
885 OPEN c_check_header_id(p_met_tpl_dtl_rec.metric_tpl_header_id);
886 FETCH c_check_header_id INTO l_dummy;
887 IF c_check_header_id%NOTFOUND THEN
888 Ams_Utility_Pvt.error_message(p_message_name => 'AMS_MTD_BAD_HEADER_ID');
889 x_return_status := FND_API.g_ret_sts_error;
890 END IF;
891 CLOSE c_check_header_id;
892
893 -- Validate the metric_id exists and is FUNCTION or MANUAL
894 OPEN c_check_metric(p_met_tpl_dtl_rec.metric_id);
895 FETCH c_check_metric INTO l_dummy;
896 IF c_check_metric%NOTFOUND THEN
897 Ams_Utility_Pvt.error_message(p_message_name => 'AMS_MTD_BAD_METRIC_ID');
898 x_return_status := FND_API.g_ret_sts_error;
899 END IF;
900 CLOSE c_check_metric;
901
902 END check_met_tpl_dtl_FK_items;
903
904 PROCEDURE check_met_tpl_dtl_Lookup_items(
905 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
906 x_return_status OUT NOCOPY VARCHAR2
907 )
908 IS
909 BEGIN
910 x_return_status := FND_API.g_ret_sts_success;
911
912 -- Enter custom code here
913 IF Ams_Utility_Pvt.is_y_or_n(p_met_tpl_dtl_rec.enabled_flag) = FND_API.G_FALSE THEN
914 Ams_Utility_Pvt.error_message(p_message_name => 'AMS_MTD_BAD_ENABLED_FLAG');
915 x_return_status := FND_API.g_ret_sts_error;
916 END IF;
917
918 END check_met_tpl_dtl_Lookup_items;
919
920 PROCEDURE Check_met_tpl_dtl_Items (
921 P_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
922 p_validation_mode IN VARCHAR2,
923 x_return_status OUT NOCOPY VARCHAR2
924 )
925 IS
926 BEGIN
927
928 -- Check Items Uniqueness API calls
929
930 check_met_tpl_dtl_uk_items(
931 p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
932 p_validation_mode => p_validation_mode,
933 x_return_status => x_return_status);
934 IF x_return_status <> FND_API.g_ret_sts_success THEN
935 RETURN;
936 END IF;
937
938 -- Check Items Required/NOT NULL API calls
939
940 check_met_tpl_dtl_req_items(
941 p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
942 p_validation_mode => p_validation_mode,
943 x_return_status => x_return_status);
944 IF x_return_status <> FND_API.g_ret_sts_success THEN
945 RETURN;
946 END IF;
947 -- Check Items Foreign Keys API calls
948
949 check_met_tpl_dtl_FK_items(
950 p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
951 x_return_status => x_return_status);
952 IF x_return_status <> FND_API.g_ret_sts_success THEN
953 RETURN;
954 END IF;
955 -- Check Items Lookups
956
957 check_met_tpl_dtl_Lookup_items(
958 p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
959 x_return_status => x_return_status);
960 IF x_return_status <> FND_API.g_ret_sts_success THEN
961 RETURN;
962 END IF;
963
964 END Check_met_tpl_dtl_Items;
965
966
967
968 PROCEDURE Complete_met_tpl_dtl_Rec (
969 p_ref_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
970 x_tar_met_tpl_dtl_rec IN OUT NOCOPY met_tpl_dtl_rec_type)
971 IS
972 -- l_return_status VARCHAR2(1);
973
974 -- CURSOR c_complete IS
975 -- SELECT *
976 -- FROM ams_met_tpl_details
977 -- WHERE metric_template_detail_id = p_met_tpl_dtl_rec.metric_template_detail_id;
978 -- l_met_tpl_dtl_rec c_complete%ROWTYPE;
979 BEGIN
980 -- x_complete_rec := p_met_tpl_dtl_rec;
981
982 -- OPEN c_complete;
983 -- FETCH c_complete INTO l_met_tpl_dtl_rec;
984 -- CLOSE c_complete;
985
986 -- metric_template_detail_id
987 -- IF p_met_tpl_dtl_rec.metric_template_detail_id = FND_API.g_miss_num THEN
988 -- x_complete_rec.metric_template_detail_id := l_met_tpl_dtl_rec.metric_template_detail_id;
989 -- END IF;
990
991 -- last_update_date
992 -- IF p_met_tpl_dtl_rec.last_update_date = FND_API.g_miss_date THEN
993 -- x_complete_rec.last_update_date := l_met_tpl_dtl_rec.last_update_date;
994 -- END IF;
995
996 -- last_updated_by
997 -- IF p_met_tpl_dtl_rec.last_updated_by = FND_API.g_miss_num THEN
998 -- x_complete_rec.last_updated_by := l_met_tpl_dtl_rec.last_updated_by;
999 -- END IF;
1000
1001 -- creation_date
1002 -- IF p_met_tpl_dtl_rec.creation_date = FND_API.g_miss_date THEN
1003 -- x_complete_rec.creation_date := l_met_tpl_dtl_rec.creation_date;
1004 -- END IF;
1005
1006 -- created_by
1007 -- IF p_met_tpl_dtl_rec.created_by = FND_API.g_miss_num THEN
1008 -- x_complete_rec.created_by := l_met_tpl_dtl_rec.created_by;
1009 -- END IF;
1010
1011 -- last_update_login
1012 -- IF p_met_tpl_dtl_rec.last_update_login = FND_API.g_miss_num THEN
1013 -- x_complete_rec.last_update_login := l_met_tpl_dtl_rec.last_update_login;
1014 -- END IF;
1015
1016 -- object_version_number
1017 -- IF p_met_tpl_dtl_rec.object_version_number = FND_API.g_miss_num THEN
1018 -- x_complete_rec.object_version_number := l_met_tpl_dtl_rec.object_version_number;
1019 -- END IF;
1020
1021 -- metric_tpl_header_id
1022 IF x_tar_met_tpl_dtl_rec.metric_tpl_header_id = FND_API.g_miss_num THEN
1023 x_tar_met_tpl_dtl_rec.metric_tpl_header_id := p_ref_met_tpl_dtl_rec.metric_tpl_header_id;
1024 END IF;
1025
1026 -- metric_id
1027 IF x_tar_met_tpl_dtl_rec.metric_id = FND_API.g_miss_num THEN
1028 x_tar_met_tpl_dtl_rec.metric_id := p_ref_met_tpl_dtl_rec.metric_id;
1029 END IF;
1030
1031 -- enabled_flag
1032 IF x_tar_met_tpl_dtl_rec.enabled_flag = FND_API.g_miss_char THEN
1033 x_tar_met_tpl_dtl_rec.enabled_flag := p_ref_met_tpl_dtl_rec.enabled_flag;
1034 END IF;
1035
1036 -- Note: Developers need to modify the procedure
1037 -- to handle any business specific requirements.
1038 END Complete_met_tpl_dtl_Rec;
1039
1040
1041 PROCEDURE Validate_met_tpl_dtl(
1042 p_api_version_number IN NUMBER,
1043 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1044 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1045 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type,
1046 p_validation_mode IN VARCHAR2,
1047 x_return_status OUT NOCOPY VARCHAR2,
1048 x_msg_count OUT NOCOPY NUMBER,
1049 x_msg_data OUT NOCOPY VARCHAR2
1050 )
1051 IS
1052 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Met_Tpl_Dtl';
1053 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1054 l_object_version_number NUMBER;
1055 l_met_tpl_dtl_rec Ams_Met_Tpl_Dtl_Pvt.met_tpl_dtl_rec_type;
1056
1057 BEGIN
1058 -- Standard Start of API savepoint
1059 SAVEPOINT VALIDATE_Met_Tpl_Dtl_;
1060
1061 -- Standard call to check for call compatibility.
1062 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1063 p_api_version_number,
1064 l_api_name,
1065 G_PKG_NAME)
1066 THEN
1067 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1068 END IF;
1069
1070 -- Initialize message list if p_init_msg_list is set to TRUE.
1071 IF FND_API.to_Boolean( p_init_msg_list )
1072 THEN
1073 FND_MSG_PUB.initialize;
1074 END IF;
1075 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1076 Check_met_tpl_dtl_Items(
1077 p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
1078 p_validation_mode => p_validation_mode,
1079 x_return_status => x_return_status
1080 );
1081
1082 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1083 RAISE FND_API.G_EXC_ERROR;
1084 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1085 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1086 END IF;
1087 END IF;
1088
1089 -- Complete_met_tpl_dtl_Rec(
1090 -- p_met_tpl_dtl_rec => p_met_tpl_dtl_rec,
1091 -- x_complete_rec => l_met_tpl_dtl_rec
1092 -- );
1093
1094 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1095 Validate_met_tpl_dtl_Rec(
1096 p_api_version_number => 1.0,
1097 p_init_msg_list => FND_API.G_FALSE,
1098 x_return_status => x_return_status,
1099 x_msg_count => x_msg_count,
1100 x_msg_data => x_msg_data,
1101 p_met_tpl_dtl_rec => l_met_tpl_dtl_rec);
1102
1103 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1104 RAISE FND_API.G_EXC_ERROR;
1105 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1106 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107 END IF;
1108 END IF;
1109
1110
1111 -- Debug Message
1112 IF (AMS_DEBUG_HIGH_ON) THEN
1113
1114 Ams_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || ': START');
1115 END IF;
1116
1117
1118 -- Initialize API return status to SUCCESS
1119 x_return_status := FND_API.G_RET_STS_SUCCESS;
1120
1121
1122 -- Debug Message
1123 IF (AMS_DEBUG_HIGH_ON) THEN
1124
1125 Ams_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || ': END');
1126 END IF;
1127
1128 -- Standard call to get message count and if count is 1, get message info.
1129 FND_MSG_PUB.Count_And_Get
1130 (p_count => x_msg_count,
1131 p_data => x_msg_data
1132 );
1133 EXCEPTION
1134
1135 WHEN Ams_Utility_Pvt.resource_locked THEN
1136 x_return_status := FND_API.g_ret_sts_error;
1137 Ams_Utility_Pvt.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1138
1139 WHEN FND_API.G_EXC_ERROR THEN
1140 ROLLBACK TO VALIDATE_Met_Tpl_Dtl_;
1141 x_return_status := FND_API.G_RET_STS_ERROR;
1142 -- Standard call to get message count and if count=1, get the message
1143 FND_MSG_PUB.Count_And_Get (
1144 p_encoded => FND_API.G_FALSE,
1145 p_count => x_msg_count,
1146 p_data => x_msg_data
1147 );
1148
1149 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1150 ROLLBACK TO VALIDATE_Met_Tpl_Dtl_;
1151 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1152 -- Standard call to get message count and if count=1, get the message
1153 FND_MSG_PUB.Count_And_Get (
1154 p_encoded => FND_API.G_FALSE,
1155 p_count => x_msg_count,
1156 p_data => x_msg_data
1157 );
1158
1159 WHEN OTHERS THEN
1160 ROLLBACK TO VALIDATE_Met_Tpl_Dtl_;
1161 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1162 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1163 THEN
1164 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1165 END IF;
1166 -- Standard call to get message count and if count=1, get the message
1167 FND_MSG_PUB.Count_And_Get (
1168 p_encoded => FND_API.G_FALSE,
1169 p_count => x_msg_count,
1170 p_data => x_msg_data
1171 );
1172 END Validate_Met_Tpl_Dtl;
1173
1174
1175 PROCEDURE Validate_met_tpl_dtl_rec(
1176 p_api_version_number IN NUMBER,
1177 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1178 x_return_status OUT NOCOPY VARCHAR2,
1179 x_msg_count OUT NOCOPY NUMBER,
1180 x_msg_data OUT NOCOPY VARCHAR2,
1181 p_met_tpl_dtl_rec IN met_tpl_dtl_rec_type
1182 )
1183 IS
1184 BEGIN
1185 -- Initialize message list if p_init_msg_list is set to TRUE.
1186 IF FND_API.to_Boolean( p_init_msg_list )
1187 THEN
1188 FND_MSG_PUB.initialize;
1189 END IF;
1190
1191 -- Initialize API return status to SUCCESS
1192 x_return_status := FND_API.G_RET_STS_SUCCESS;
1193
1194 -- Hint: Validate data
1195 -- If data not valid
1196 -- THEN
1197 -- x_return_status := FND_API.G_RET_STS_ERROR;
1198
1199 -- Debug Message
1200 IF (AMS_DEBUG_HIGH_ON) THEN
1201
1202 Ams_Utility_Pvt.debug_message('PRIVATE API: Validate_met_tpl_dtl_rec');
1203 END IF;
1204 -- Standard call to get message count and if count is 1, get message info.
1205 FND_MSG_PUB.Count_And_Get
1206 (p_count => x_msg_count,
1207 p_data => x_msg_data
1208 );
1209 END Validate_met_tpl_dtl_Rec;
1210
1211 END Ams_Met_Tpl_Dtl_Pvt;