DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_VENUE_RATES_PVT

Source


1 PACKAGE BODY AMS_Venue_Rates_PVT as
2 /* $Header: amsvvrtb.pls 115.5 2002/12/24 18:59:46 mukumar ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          AMS_Venue_Rates_PVT
7 -- Purpose
8 --
9 -- History
10 --   10-MAY-2002  GMADANA    Added Rate_code.
11 --
12 -- NOTE
13 --
14 -- End of Comments
15 -- ===============================================================
16 
17 
18 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_Venue_Rates_PVT';
19 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvvrtb.pls';
20 
21 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
22 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
23 
24 -- Hint: Primary key needs to be returned.
25 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
26 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
27 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
28 
29 PROCEDURE Create_Venue_Rates(
30     p_api_version_number         IN   NUMBER,
31     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
32     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
33     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
34 
35     x_return_status              OUT NOCOPY  VARCHAR2,
36     x_msg_count                  OUT NOCOPY  NUMBER,
37     x_msg_data                   OUT NOCOPY  VARCHAR2,
38 
39     p_venue_rates_rec               IN   venue_rates_rec_type  := g_miss_venue_rates_rec,
40     x_rate_id                   OUT NOCOPY  NUMBER
41      )
42 
43  IS
44    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Venue_Rates';
45    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
46    l_return_status_full        VARCHAR2(1);
47    l_object_version_number     NUMBER := 1;
48    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
49    l_RATE_ID                  NUMBER;
50    l_dummy       NUMBER;
51    l_venue_rates_rec  AMS_Venue_Rates_PVT.venue_rates_rec_type := p_venue_rates_rec;
52 
53    CURSOR c_id IS
54       SELECT AMS_VENUE_RATES_B_s.NEXTVAL
55       FROM dual;
56 
57    CURSOR c_id_exists (l_id IN NUMBER) IS
58       SELECT 1
59       FROM AMS_VENUE_RATES_B
60       WHERE RATE_ID = l_id;
61 
62 BEGIN
63       -- Standard Start of API savepoint
64       SAVEPOINT CREATE_Venue_Rates_PVT;
65 
66       -- Standard call to check for call compatibility.
67       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
68                                            p_api_version_number,
69                                            l_api_name,
70                                            G_PKG_NAME)
71       THEN
72           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
73       END IF;
74 
75       -- Initialize message list if p_init_msg_list is set to TRUE.
76       IF FND_API.to_Boolean( p_init_msg_list )
77       THEN
78          FND_MSG_PUB.initialize;
79       END IF;
80 
81       -- Debug Message
82       IF (AMS_DEBUG_HIGH_ON) THEN
83 
84           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
85       END IF;
86 
87 
88       -- Initialize API return status to SUCCESS
89       x_return_status := FND_API.G_RET_STS_SUCCESS;
90 
91    -- Local variable initialization
92 
93    IF p_venue_rates_rec.RATE_ID IS NULL OR p_venue_rates_rec.RATE_ID = FND_API.g_miss_num THEN
94       LOOP
95          l_dummy := NULL;
96          OPEN c_id;
97          FETCH c_id INTO l_RATE_ID;
98          CLOSE c_id;
99 
100          OPEN c_id_exists(l_RATE_ID);
101          FETCH c_id_exists INTO l_dummy;
102          CLOSE c_id_exists;
103          EXIT WHEN l_dummy IS NULL;
104       END LOOP;
105 
106    END IF;
107 
108       -- =========================================================================
109       -- Validate Environment
110       -- =========================================================================
111 
112       IF FND_GLOBAL.User_Id IS NULL
113       THEN
114  AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
115           RAISE FND_API.G_EXC_ERROR;
116       END IF;
117 
118       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
119       THEN
120           -- Debug message
121           IF (AMS_DEBUG_HIGH_ON) THEN
122 
123               AMS_UTILITY_PVT.debug_message('Private API: Validate_Venue_Rates');
124           END IF;
125 
126           -- Invoke validation procedures
127           Validate_venue_rates(
128             p_api_version_number     => 1.0,
129             p_init_msg_list    => FND_API.G_FALSE,
130             p_validation_level => p_validation_level,
131             p_validation_mode => JTF_PLSQL_API.g_create,
132             p_venue_rates_rec  =>  p_venue_rates_rec,
133             x_return_status    => x_return_status,
134             x_msg_count        => x_msg_count,
135             x_msg_data         => x_msg_data);
136       END IF;
137 
138       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
139           RAISE FND_API.G_EXC_ERROR;
140       END IF;
141 
142       -- the code will convert the transaction currency in to
143       -- functional currency.
144 
145       IF l_venue_rates_rec.transactional_value IS NOT NULL THEN
146       AMS_CampaignRules_PVT.Convert_Camp_Currency(
147           p_tc_curr     => p_venue_rates_rec.transactional_currency_code,
148           p_tc_amt      => p_venue_rates_rec.transactional_value,
149           x_fc_curr     => l_venue_rates_rec.functional_currency_code,
150           x_fc_amt      => l_venue_rates_rec.functional_value
151           ) ;
152       END IF ;
153 
154       -- Debug Message
155       IF (AMS_DEBUG_HIGH_ON) THEN
156 
157           AMS_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
158       END IF;
159 
160       -- Invoke table handler(AMS_VENUE_RATES_B_PKG.Insert_Row)
161       AMS_VENUE_RATES_B_PKG.Insert_Row(
162           px_rate_id  => l_rate_id,
163           p_last_update_date  => SYSDATE,
164           p_last_updated_by  => G_USER_ID,
165           p_creation_date  => SYSDATE,
166           p_created_by  => G_USER_ID,
167           p_last_update_login  => G_LOGIN_ID,
168           px_object_version_number  => l_object_version_number,
169           p_active_flag  => p_venue_rates_rec.active_flag,
170           p_venue_id  => p_venue_rates_rec.venue_id,
171           p_metric_id  => p_venue_rates_rec.metric_id,
172           p_transactional_value  => p_venue_rates_rec.transactional_value,
173           p_transactional_currency_code  => p_venue_rates_rec.transactional_currency_code,
174           p_functional_value  => l_venue_rates_rec.functional_value,
175           p_functional_currency_code  => l_venue_rates_rec.functional_currency_code,
176           p_uom_code  => p_venue_rates_rec.uom_code,
177           p_rate_code => p_venue_rates_rec.rate_code,
178           p_attribute_category  => p_venue_rates_rec.attribute_category,
179           p_attribute1  => p_venue_rates_rec.attribute1,
180           p_attribute2  => p_venue_rates_rec.attribute2,
181           p_attribute3  => p_venue_rates_rec.attribute3,
182           p_attribute4  => p_venue_rates_rec.attribute4,
183           p_attribute5  => p_venue_rates_rec.attribute5,
184           p_attribute6  => p_venue_rates_rec.attribute6,
185           p_attribute7  => p_venue_rates_rec.attribute7,
186           p_attribute8  => p_venue_rates_rec.attribute8,
187           p_attribute9  => p_venue_rates_rec.attribute9,
188           p_attribute10  => p_venue_rates_rec.attribute10,
189           p_attribute11  => p_venue_rates_rec.attribute11,
190           p_attribute12  => p_venue_rates_rec.attribute12,
191           p_attribute13  => p_venue_rates_rec.attribute13,
192           p_attribute14  => p_venue_rates_rec.attribute14,
193           p_attribute15  => p_venue_rates_rec.attribute15,
194 	  p_description  => p_venue_rates_rec.description);
195 
196           x_rate_id := l_rate_id;
197       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
198           RAISE FND_API.G_EXC_ERROR;
199       END IF;
200 --
201 -- End of API body
202 --
203 
204       -- Standard check for p_commit
205       IF FND_API.to_Boolean( p_commit )
206       THEN
207          COMMIT WORK;
208       END IF;
209 
210 
211       -- Debug Message
212       IF (AMS_DEBUG_HIGH_ON) THEN
213 
214           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
215       END IF;
216 
217       -- Standard call to get message count and if count is 1, get message info.
218       FND_MSG_PUB.Count_And_Get
219         (p_count          =>   x_msg_count,
220          p_data           =>   x_msg_data
221       );
222 EXCEPTION
223 
224    WHEN AMS_Utility_PVT.resource_locked THEN
225      x_return_status := FND_API.g_ret_sts_error;
226  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
227 
228    WHEN FND_API.G_EXC_ERROR THEN
229      ROLLBACK TO CREATE_Venue_Rates_PVT;
230      x_return_status := FND_API.G_RET_STS_ERROR;
231      -- Standard call to get message count and if count=1, get the message
232      FND_MSG_PUB.Count_And_Get (
233             p_encoded => FND_API.G_FALSE,
234             p_count   => x_msg_count,
235             p_data    => x_msg_data
236      );
237 
238    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
239      ROLLBACK TO CREATE_Venue_Rates_PVT;
240      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
241      -- Standard call to get message count and if count=1, get the message
242      FND_MSG_PUB.Count_And_Get (
243             p_encoded => FND_API.G_FALSE,
244             p_count => x_msg_count,
245             p_data  => x_msg_data
246      );
247 
248    WHEN OTHERS THEN
249      ROLLBACK TO CREATE_Venue_Rates_PVT;
250      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
251      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
252      THEN
253         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
254      END IF;
255      -- Standard call to get message count and if count=1, get the message
256      FND_MSG_PUB.Count_And_Get (
257             p_encoded => FND_API.G_FALSE,
258             p_count => x_msg_count,
259             p_data  => x_msg_data
260      );
261 End Create_Venue_Rates;
262 
263 
264 PROCEDURE Update_Venue_Rates(
265     p_api_version_number         IN   NUMBER,
266     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
267     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
268     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
269 
270     x_return_status              OUT NOCOPY  VARCHAR2,
271     x_msg_count                  OUT NOCOPY  NUMBER,
272     x_msg_data                   OUT NOCOPY  VARCHAR2,
273 
274     p_venue_rates_rec               IN    venue_rates_rec_type,
275     x_object_version_number      OUT NOCOPY  NUMBER
276     )
277 
278  IS
279 
280 CURSOR c_get_venue_rates(rate_id NUMBER) IS
281     SELECT *
282     FROM  AMS_VENUE_RATES_B;
283     -- Hint: Developer need to provide Where clause
284 
285 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Venue_Rates';
286 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
287 -- Local Variables
288 l_object_version_number     NUMBER;
289 l_RATE_ID    NUMBER;
290 l_ref_venue_rates_rec  c_get_Venue_Rates%ROWTYPE ;
291 l_tar_venue_rates_rec  AMS_Venue_Rates_PVT.venue_rates_rec_type := P_venue_rates_rec;
292 l_rowid  ROWID;
293 
294  BEGIN
295       -- Standard Start of API savepoint
296       SAVEPOINT UPDATE_Venue_Rates_PVT;
297 
298       -- Standard call to check for call compatibility.
299       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
300                                            p_api_version_number,
301                                            l_api_name,
302                                            G_PKG_NAME)
303       THEN
304           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
305       END IF;
306 
307       -- Initialize message list if p_init_msg_list is set to TRUE.
308       IF FND_API.to_Boolean( p_init_msg_list )
309       THEN
310          FND_MSG_PUB.initialize;
311       END IF;
312 
313       -- Debug Message
314       IF (AMS_DEBUG_HIGH_ON) THEN
315 
316           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
317       END IF;
318 
319 
320       -- Initialize API return status to SUCCESS
321       x_return_status := FND_API.G_RET_STS_SUCCESS;
322 
323       -- Debug Message
324       IF (AMS_DEBUG_HIGH_ON) THEN
325 
326           AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
327       END IF;
328 
329 /*
330       OPEN c_get_Venue_Rates( l_tar_venue_rates_rec.rate_id);
331 
332       FETCH c_get_Venue_Rates INTO l_ref_venue_rates_rec  ;
333 
334        If ( c_get_Venue_Rates%NOTFOUND) THEN
335   AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
336    p_token_name   => 'INFO',
337  p_token_value  => 'Venue_Rates') ;
338            RAISE FND_API.G_EXC_ERROR;
339        END IF;
340        -- Debug Message
341        IF (AMS_DEBUG_HIGH_ON) THEN
342 
343            AMS_UTILITY_PVT.debug_message('Private API: - Close Cursor');
344        END IF;
345        CLOSE     c_get_Venue_Rates;
346 */
347 
348 
349       If (l_tar_venue_rates_rec.object_version_number is NULL or
350           l_tar_venue_rates_rec.object_version_number = FND_API.G_MISS_NUM ) Then
351   AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
352    p_token_name   => 'COLUMN',
353  p_token_value  => 'Last_Update_Date') ;
354           raise FND_API.G_EXC_ERROR;
355       End if;
356       -- Check Whether record has been changed by someone else
357       If (l_tar_venue_rates_rec.object_version_number <> l_ref_venue_rates_rec.object_version_number) Then
358   AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
359    p_token_name   => 'INFO',
360  p_token_value  => 'Venue_Rates') ;
361           raise FND_API.G_EXC_ERROR;
362       End if;
363       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
364       THEN
365           -- Debug message
366           IF (AMS_DEBUG_HIGH_ON) THEN
367 
368               AMS_UTILITY_PVT.debug_message('Private API: Validate_Venue_Rates');
369           END IF;
370 
371           -- Invoke validation procedures
372           Validate_venue_rates(
373             p_api_version_number     => 1.0,
374             p_init_msg_list    => FND_API.G_FALSE,
375             p_validation_level => p_validation_level,
376             p_validation_mode => JTF_PLSQL_API.g_update,
377             p_venue_rates_rec  =>  p_venue_rates_rec,
378             x_return_status    => x_return_status,
379             x_msg_count        => x_msg_count,
380             x_msg_data         => x_msg_data);
381       END IF;
382 
383       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
384           RAISE FND_API.G_EXC_ERROR;
385       END IF;
386 
387 
388       -- Debug Message
389       IF (AMS_DEBUG_HIGH_ON) THEN
390 
391           AMS_UTILITY_PVT.debug_message('Private API: Calling update table handler');
392       END IF;
393 
394       -- Invoke table handler(AMS_VENUE_RATES_B_PKG.Update_Row)
395       AMS_VENUE_RATES_B_PKG.Update_Row(
396           p_rate_id  => p_venue_rates_rec.rate_id,
397           p_last_update_date  => SYSDATE,
398           p_last_updated_by  => G_USER_ID,
399           p_creation_date  => SYSDATE,
400           p_created_by  => G_USER_ID,
401           p_last_update_login  => G_LOGIN_ID,
402           p_object_version_number  => p_venue_rates_rec.object_version_number,
403           p_active_flag  => p_venue_rates_rec.active_flag,
404           p_venue_id  => p_venue_rates_rec.venue_id,
405           p_metric_id  => p_venue_rates_rec.metric_id,
406           p_transactional_value  => p_venue_rates_rec.transactional_value,
407           p_transactional_currency_code  => p_venue_rates_rec.transactional_currency_code,
408           p_functional_value  => p_venue_rates_rec.functional_value,
409           p_functional_currency_code  => p_venue_rates_rec.functional_currency_code,
410           p_uom_code  => p_venue_rates_rec.uom_code,
411           p_rate_code => p_venue_rates_rec.rate_code,
412           p_attribute_category  => p_venue_rates_rec.attribute_category,
413           p_attribute1  => p_venue_rates_rec.attribute1,
414           p_attribute2  => p_venue_rates_rec.attribute2,
415           p_attribute3  => p_venue_rates_rec.attribute3,
416           p_attribute4  => p_venue_rates_rec.attribute4,
417           p_attribute5  => p_venue_rates_rec.attribute5,
418           p_attribute6  => p_venue_rates_rec.attribute6,
419           p_attribute7  => p_venue_rates_rec.attribute7,
420           p_attribute8  => p_venue_rates_rec.attribute8,
421           p_attribute9  => p_venue_rates_rec.attribute9,
422           p_attribute10  => p_venue_rates_rec.attribute10,
423           p_attribute11  => p_venue_rates_rec.attribute11,
424           p_attribute12  => p_venue_rates_rec.attribute12,
425           p_attribute13  => p_venue_rates_rec.attribute13,
426           p_attribute14  => p_venue_rates_rec.attribute14,
427           p_attribute15  => p_venue_rates_rec.attribute15,
428           p_description  => p_venue_rates_rec.description);
429 
430           x_object_version_number := p_venue_rates_rec.object_version_number + 1;
431 
432       --
433       -- End of API body.
434       --
435 
436       -- Standard check for p_commit
437       IF FND_API.to_Boolean( p_commit )
438       THEN
439          COMMIT WORK;
440       END IF;
441 
442 
443       -- Debug Message
444       IF (AMS_DEBUG_HIGH_ON) THEN
445 
446           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
447       END IF;
448 
449       -- Standard call to get message count and if count is 1, get message info.
450       FND_MSG_PUB.Count_And_Get
451         (p_count          =>   x_msg_count,
452          p_data           =>   x_msg_data
453       );
454 EXCEPTION
455 
456    WHEN AMS_Utility_PVT.resource_locked THEN
457      x_return_status := FND_API.g_ret_sts_error;
458  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
459 
460    WHEN FND_API.G_EXC_ERROR THEN
461      ROLLBACK TO UPDATE_Venue_Rates_PVT;
462      x_return_status := FND_API.G_RET_STS_ERROR;
463      -- Standard call to get message count and if count=1, get the message
464      FND_MSG_PUB.Count_And_Get (
465             p_encoded => FND_API.G_FALSE,
466             p_count   => x_msg_count,
467             p_data    => x_msg_data
468      );
469 
470    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
471      ROLLBACK TO UPDATE_Venue_Rates_PVT;
472      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
473      -- Standard call to get message count and if count=1, get the message
474      FND_MSG_PUB.Count_And_Get (
475             p_encoded => FND_API.G_FALSE,
476             p_count => x_msg_count,
477             p_data  => x_msg_data
478      );
479 
480    WHEN OTHERS THEN
481      ROLLBACK TO UPDATE_Venue_Rates_PVT;
482      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
483      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
484      THEN
485         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
486      END IF;
487      -- Standard call to get message count and if count=1, get the message
488      FND_MSG_PUB.Count_And_Get (
489             p_encoded => FND_API.G_FALSE,
490             p_count => x_msg_count,
491             p_data  => x_msg_data
492      );
493 End Update_Venue_Rates;
494 
495 
496 PROCEDURE Delete_Venue_Rates(
497     p_api_version_number         IN   NUMBER,
498     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
499     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
500     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
501     x_return_status              OUT NOCOPY  VARCHAR2,
502     x_msg_count                  OUT NOCOPY  NUMBER,
503     x_msg_data                   OUT NOCOPY  VARCHAR2,
504     p_rate_id                    IN  NUMBER,
505     p_object_version_number      IN   NUMBER
506     )
507 
508  IS
509 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Venue_Rates';
510 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
511 l_object_version_number     NUMBER;
512 
513  BEGIN
514       -- Standard Start of API savepoint
515       SAVEPOINT DELETE_Venue_Rates_PVT;
516 
517       -- Standard call to check for call compatibility.
518       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
519                                            p_api_version_number,
520                                            l_api_name,
521                                            G_PKG_NAME)
522       THEN
523           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
524       END IF;
525 
526       -- Initialize message list if p_init_msg_list is set to TRUE.
527       IF FND_API.to_Boolean( p_init_msg_list )
528       THEN
529          FND_MSG_PUB.initialize;
530       END IF;
531 
532       -- Debug Message
533       IF (AMS_DEBUG_HIGH_ON) THEN
534 
535           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
536       END IF;
537 
538 
539       -- Initialize API return status to SUCCESS
540       x_return_status := FND_API.G_RET_STS_SUCCESS;
541 
542       --
543       -- Api body
544       --
545       -- Debug Message
546       IF (AMS_DEBUG_HIGH_ON) THEN
547 
548           AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
549       END IF;
550 
551       -- Invoke table handler(AMS_VENUE_RATES_B_PKG.Delete_Row)
552       AMS_VENUE_RATES_B_PKG.Delete_Row(
553           p_RATE_ID  => p_RATE_ID);
554       --
555       -- End of API body
556       --
557 
558       -- Standard check for p_commit
559       IF FND_API.to_Boolean( p_commit )
560       THEN
561          COMMIT WORK;
562       END IF;
563 
564 
565       -- Debug Message
566       IF (AMS_DEBUG_HIGH_ON) THEN
567 
568           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
569       END IF;
570 
571       -- Standard call to get message count and if count is 1, get message info.
572       FND_MSG_PUB.Count_And_Get
573         (p_count          =>   x_msg_count,
574          p_data           =>   x_msg_data
575       );
576 EXCEPTION
577 
578    WHEN AMS_Utility_PVT.resource_locked THEN
579      x_return_status := FND_API.g_ret_sts_error;
580  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
581 
582    WHEN FND_API.G_EXC_ERROR THEN
583      ROLLBACK TO DELETE_Venue_Rates_PVT;
584      x_return_status := FND_API.G_RET_STS_ERROR;
585      -- Standard call to get message count and if count=1, get the message
586      FND_MSG_PUB.Count_And_Get (
587             p_encoded => FND_API.G_FALSE,
588             p_count   => x_msg_count,
589             p_data    => x_msg_data
590      );
591 
592    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
593      ROLLBACK TO DELETE_Venue_Rates_PVT;
594      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
595      -- Standard call to get message count and if count=1, get the message
596      FND_MSG_PUB.Count_And_Get (
597             p_encoded => FND_API.G_FALSE,
598             p_count => x_msg_count,
599             p_data  => x_msg_data
600      );
601 
602    WHEN OTHERS THEN
603      ROLLBACK TO DELETE_Venue_Rates_PVT;
604      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
605      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
606      THEN
607         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
608      END IF;
609      -- Standard call to get message count and if count=1, get the message
610      FND_MSG_PUB.Count_And_Get (
611             p_encoded => FND_API.G_FALSE,
612             p_count => x_msg_count,
613             p_data  => x_msg_data
614      );
615 End Delete_Venue_Rates;
616 
617 
618 
619 -- Hint: Primary key needs to be returned.
620 PROCEDURE Lock_Venue_Rates(
621     p_api_version_number         IN   NUMBER,
622     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
623 
624     x_return_status              OUT NOCOPY  VARCHAR2,
625     x_msg_count                  OUT NOCOPY  NUMBER,
626     x_msg_data                   OUT NOCOPY  VARCHAR2,
627 
628     p_rate_id                   IN  NUMBER,
629     p_object_version             IN  NUMBER
630     )
631 
632  IS
633 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Venue_Rates';
634 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
635 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
636 l_RATE_ID                  NUMBER;
637 
638 CURSOR c_Venue_Rates IS
639    SELECT RATE_ID
640    FROM AMS_VENUE_RATES_B
641    WHERE RATE_ID = p_RATE_ID
642    AND object_version_number = p_object_version
643    FOR UPDATE NOWAIT;
644 
645 BEGIN
646 
647       -- Debug Message
648       IF (AMS_DEBUG_HIGH_ON) THEN
649 
650           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
651       END IF;
652 
653       -- Initialize message list if p_init_msg_list is set to TRUE.
654       IF FND_API.to_Boolean( p_init_msg_list )
655       THEN
656          FND_MSG_PUB.initialize;
657       END IF;
658 
659       -- Standard call to check for call compatibility.
660       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
661                                            p_api_version_number,
662                                            l_api_name,
663                                            G_PKG_NAME)
664       THEN
665           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
666       END IF;
667 
668 
669       -- Initialize API return status to SUCCESS
670       x_return_status := FND_API.G_RET_STS_SUCCESS;
671 
672 
673 ------------------------ lock -------------------------
674 
675   IF (AMS_DEBUG_HIGH_ON) THEN
676 
677 
678 
679       AMS_Utility_PVT.debug_message(l_full_name||': start');
680 
681   END IF;
682   OPEN c_Venue_Rates;
683 
684   FETCH c_Venue_Rates INTO l_RATE_ID;
685 
686   IF (c_Venue_Rates%NOTFOUND) THEN
687     CLOSE c_Venue_Rates;
688     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
689        FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
690        FND_MSG_PUB.add;
691     END IF;
692     RAISE FND_API.g_exc_error;
693   END IF;
694 
695   CLOSE c_Venue_Rates;
696 
697  -------------------- finish --------------------------
698   FND_MSG_PUB.count_and_get(
699     p_encoded => FND_API.g_false,
700     p_count   => x_msg_count,
701     p_data    => x_msg_data);
702   IF (AMS_DEBUG_HIGH_ON) THEN
703 
704       AMS_Utility_PVT.debug_message(l_full_name ||': end');
705   END IF;
706 EXCEPTION
707 
708    WHEN AMS_Utility_PVT.resource_locked THEN
709      x_return_status := FND_API.g_ret_sts_error;
710  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
711 
712    WHEN FND_API.G_EXC_ERROR THEN
713      ROLLBACK TO LOCK_Venue_Rates_PVT;
714      x_return_status := FND_API.G_RET_STS_ERROR;
715      -- Standard call to get message count and if count=1, get the message
716      FND_MSG_PUB.Count_And_Get (
717             p_encoded => FND_API.G_FALSE,
718             p_count   => x_msg_count,
719             p_data    => x_msg_data
720      );
721 
722    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
723      ROLLBACK TO LOCK_Venue_Rates_PVT;
724      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
725      -- Standard call to get message count and if count=1, get the message
726      FND_MSG_PUB.Count_And_Get (
727             p_encoded => FND_API.G_FALSE,
728             p_count => x_msg_count,
729             p_data  => x_msg_data
730      );
731 
732    WHEN OTHERS THEN
733      ROLLBACK TO LOCK_Venue_Rates_PVT;
734      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
735      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
736      THEN
737         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
738      END IF;
739      -- Standard call to get message count and if count=1, get the message
740      FND_MSG_PUB.Count_And_Get (
741             p_encoded => FND_API.G_FALSE,
742             p_count => x_msg_count,
743             p_data  => x_msg_data
744      );
745 End Lock_Venue_Rates;
746 
747 
748 PROCEDURE check_venue_rates_uk_items(
749     p_venue_rates_rec               IN   venue_rates_rec_type,
750     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
751     x_return_status              OUT NOCOPY VARCHAR2)
752 IS
753 l_valid_flag  VARCHAR2(1);
754 
755 BEGIN
756       x_return_status := FND_API.g_ret_sts_success;
757       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
758          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
759          'AMS_VENUE_RATES_B',
760          'RATE_ID = ''' || p_venue_rates_rec.RATE_ID ||''''
761          );
762       ELSE
763          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
764          'AMS_VENUE_RATES_B',
765          'RATE_ID = ''' || p_venue_rates_rec.RATE_ID ||
766          ''' AND RATE_ID <> ' || p_venue_rates_rec.RATE_ID
767          );
768       END IF;
769 
770       IF l_valid_flag = FND_API.g_false THEN
771  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_RATE_ID_DUPLICATE');
772          x_return_status := FND_API.g_ret_sts_error;
773          RETURN;
774       END IF;
775 
776 END check_venue_rates_uk_items;
777 
778 PROCEDURE check_venue_rates_req_items(
779     p_venue_rates_rec               IN  venue_rates_rec_type,
780     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
781     x_return_status	         OUT NOCOPY VARCHAR2
782 )
783 IS
784 BEGIN
785    x_return_status := FND_API.g_ret_sts_success;
786 
787    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
788 
789 /*
790       IF p_venue_rates_rec.rate_id = FND_API.g_miss_num OR p_venue_rates_rec.rate_id IS NULL THEN
791          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
792          FND_MESSAGE.set_token('MISS_FIELD','RATE_ID');
793          FND_MESSAGE.set_name('AMS', 'AMS_MISS_RATE_ID');
794          FND_MSG_PUB.Add;
795 
796          x_return_status := FND_API.g_ret_sts_error;
797          RETURN;
798       END IF;
799 
800 
801       IF p_venue_rates_rec.last_update_date = FND_API.g_miss_date OR p_venue_rates_rec.last_update_date IS NULL THEN
802          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
803          FND_MESSAGE.set_token('MISS_FIELD','LAST_UPDATE_DATE');
804 
805          x_return_status := FND_API.g_ret_sts_error;
806          RETURN;
807       END IF;
808 
809 
810       IF p_venue_rates_rec.last_updated_by = FND_API.g_miss_num OR p_venue_rates_rec.last_updated_by IS NULL THEN
811          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
812          FND_MESSAGE.set_token('MISS_FIELD','LAST_UPDATED_BY');
813          x_return_status := FND_API.g_ret_sts_error;
814          RETURN;
815       END IF;
816 
817 
818       IF p_venue_rates_rec.creation_date = FND_API.g_miss_date OR p_venue_rates_rec.creation_date IS NULL THEN
819          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
820          FND_MESSAGE.set_token('MISS_FIELD','CREATION_DATE');
821          x_return_status := FND_API.g_ret_sts_error;
822          RETURN;
823       END IF;
824 
825 
826       IF p_venue_rates_rec.created_by = FND_API.g_miss_num OR p_venue_rates_rec.created_by IS NULL THEN
827          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
828          FND_MESSAGE.set_token('MISS_FIELD','CREATED_BY');
829          x_return_status := FND_API.g_ret_sts_error;
830          RETURN;
831       END IF;
832 */
833 
834       IF p_venue_rates_rec.venue_id = FND_API.g_miss_num OR p_venue_rates_rec.venue_id IS NULL THEN
835          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
836          FND_MESSAGE.set_token('MISS_FIELD','VENUE_ID');
837          x_return_status := FND_API.g_ret_sts_error;
838          RETURN;
839       END IF;
840 
841   -- Following code is commented by GMADANA
842   /*
843       IF p_venue_rates_rec.metric_id = FND_API.g_miss_num OR p_venue_rates_rec.metric_id IS NULL THEN
844          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
845          FND_MESSAGE.set_token('MISS_FIELD','METRIC_ID');
846          x_return_status := FND_API.g_ret_sts_error;
847          RETURN;
848       END IF;
849    */
850 
851 
852       IF p_venue_rates_rec.transactional_value = FND_API.g_miss_num OR p_venue_rates_rec.transactional_value IS NULL THEN
853          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
854          FND_MESSAGE.set_token('MISS_FIELD','TRANSACTIONAL_VALUE');
855          x_return_status := FND_API.g_ret_sts_error;
856          RETURN;
857       END IF;
858 
859 
860       IF p_venue_rates_rec.transactional_currency_code = FND_API.g_miss_char OR p_venue_rates_rec.transactional_currency_code IS NULL THEN
861          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
862          FND_MESSAGE.set_token('MISS_FIELD','TRANSACTIONAL_CURRENCY_CODE');
863          x_return_status := FND_API.g_ret_sts_error;
864          RETURN;
865       END IF;
866 
867 /*
868       IF p_venue_rates_rec.functional_value = FND_API.g_miss_num OR p_venue_rates_rec.functional_value IS NULL THEN
869          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
870          FND_MESSAGE.set_token('MISS_FIELD','FUNCTIONAL_VALUE');
871          x_return_status := FND_API.g_ret_sts_error;
872          RETURN;
873       END IF;
874 
875 
876       IF p_venue_rates_rec.functional_currency_code = FND_API.g_miss_char OR p_venue_rates_rec.functional_currency_code IS NULL THEN
877          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
878          FND_MESSAGE.set_token('MISS_FIELD','FUNCTIONAL_CURRENCY_CODE');
879          x_return_status := FND_API.g_ret_sts_error;
880          RETURN;
881       END IF;
882 */
883 
884       IF p_venue_rates_rec.uom_code = FND_API.g_miss_char OR p_venue_rates_rec.uom_code IS NULL THEN
885          FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
886          FND_MESSAGE.set_token('MISS_FIELD','UOM_CODE');
887          x_return_status := FND_API.g_ret_sts_error;
888          RETURN;
889       END IF;
890    ELSE
891 
892 
893       IF p_venue_rates_rec.rate_id IS NULL THEN
894  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_rate_id');
895          x_return_status := FND_API.g_ret_sts_error;
896          RETURN;
897       END IF;
898 
899 /*
900       IF p_venue_rates_rec.last_update_date IS NULL THEN
901  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_last_update_date');
902          x_return_status := FND_API.g_ret_sts_error;
903          RETURN;
904       END IF;
905 
906 
907       IF p_venue_rates_rec.last_updated_by IS NULL THEN
908  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_last_updated_by');
909          x_return_status := FND_API.g_ret_sts_error;
910          RETURN;
911       END IF;
912 
913 
914       IF p_venue_rates_rec.creation_date IS NULL THEN
915  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_creation_date');
916          x_return_status := FND_API.g_ret_sts_error;
917          RETURN;
918       END IF;
919 
920 
921       IF p_venue_rates_rec.created_by IS NULL THEN
922  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_created_by');
923          x_return_status := FND_API.g_ret_sts_error;
924          RETURN;
925       END IF;
926 
927 */
928       IF p_venue_rates_rec.venue_id IS NULL THEN
929  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_venue_id');
930          x_return_status := FND_API.g_ret_sts_error;
931          RETURN;
932       END IF;
933 
934 
935       IF p_venue_rates_rec.metric_id IS NULL THEN
936  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_metric_id');
937          x_return_status := FND_API.g_ret_sts_error;
938          RETURN;
939       END IF;
940 
941 
942       IF p_venue_rates_rec.transactional_value IS NULL THEN
943  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_transactional_value');
944          x_return_status := FND_API.g_ret_sts_error;
945          RETURN;
946       END IF;
947 
948 
949       IF p_venue_rates_rec.transactional_currency_code IS NULL THEN
950  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_transactional_currency_code');
951          x_return_status := FND_API.g_ret_sts_error;
952          RETURN;
953       END IF;
954 
955 
956       IF p_venue_rates_rec.functional_value IS NULL THEN
957  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_functional_value');
958          x_return_status := FND_API.g_ret_sts_error;
959          RETURN;
960       END IF;
961 
962 
963       IF p_venue_rates_rec.functional_currency_code IS NULL THEN
964  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_functional_currency_code');
965          x_return_status := FND_API.g_ret_sts_error;
966          RETURN;
967       END IF;
968 
969 
970       IF p_venue_rates_rec.uom_code IS NULL THEN
971  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_venue_rates_NO_uom_code');
972          x_return_status := FND_API.g_ret_sts_error;
973          RETURN;
974       END IF;
975    END IF;
976 
977 END check_venue_rates_req_items;
978 
979 PROCEDURE check_venue_rates_FK_items(
980     p_venue_rates_rec IN venue_rates_rec_type,
981     x_return_status OUT NOCOPY VARCHAR2
982 )
983 IS
984 BEGIN
985    x_return_status := FND_API.g_ret_sts_success;
986 
987    -- Enter custom code here
988 
989 END check_venue_rates_FK_items;
990 
991 PROCEDURE check_venue_rates_Lookup_items(
992     p_venue_rates_rec IN venue_rates_rec_type,
993     x_return_status OUT NOCOPY VARCHAR2
994 )
995 IS
996 BEGIN
997 
998 IF p_venue_rates_rec.rate_code <> FND_API.g_miss_char
999       AND p_venue_rates_rec.rate_code IS NOT NULL
1000    THEN
1001       IF AMS_Utility_PVT.check_lookup_exists(
1002             p_lookup_type => 'AMS_RATE_CODE',
1003             p_lookup_code => p_venue_rates_rec.rate_code
1004          ) = FND_API.g_false
1005       THEN
1006          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1007          THEN
1008            -- FND_MESSAGE.set_name('AMS', 'AMS_BAD_RATE_TYPE');
1009             FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
1010             FND_MESSAGE.set_token('MISS_FIELD','RATE_CODE');
1011             FND_MSG_PUB.add;
1012          END IF;
1013          x_return_status := FND_API.g_ret_sts_error;
1014          RETURN;
1015       END IF;
1016    END IF;
1017 
1018    x_return_status := FND_API.g_ret_sts_success;
1019 
1020 
1021 
1022    -- Enter custom code here
1023 
1024 END check_venue_rates_Lookup_items;
1025 
1026 PROCEDURE Check_venue_rates_Items (
1027     P_venue_rates_rec     IN    venue_rates_rec_type,
1028     p_validation_mode  IN    VARCHAR2,
1029     x_return_status    OUT NOCOPY   VARCHAR2
1030     )
1031 IS
1032 BEGIN
1033 
1034    -- Check Items Uniqueness API calls
1035 
1036    check_venue_rates_uk_items(
1037       p_venue_rates_rec => p_venue_rates_rec,
1038       p_validation_mode => p_validation_mode,
1039       x_return_status => x_return_status);
1040    IF x_return_status <> FND_API.g_ret_sts_success THEN
1041       RETURN;
1042    END IF;
1043 
1044    -- Check Items Required/NOT NULL API calls
1045 
1046    check_venue_rates_req_items(
1047       p_venue_rates_rec => p_venue_rates_rec,
1048       p_validation_mode => p_validation_mode,
1049       x_return_status => x_return_status);
1050    IF x_return_status <> FND_API.g_ret_sts_success THEN
1051       RETURN;
1052    END IF;
1053    -- Check Items Foreign Keys API calls
1054 
1055    check_venue_rates_FK_items(
1056       p_venue_rates_rec => p_venue_rates_rec,
1057       x_return_status => x_return_status);
1058    IF x_return_status <> FND_API.g_ret_sts_success THEN
1059       RETURN;
1060    END IF;
1061    -- Check Items Lookups
1062 
1063    check_venue_rates_Lookup_items(
1064       p_venue_rates_rec => p_venue_rates_rec,
1065       x_return_status => x_return_status);
1066    IF x_return_status <> FND_API.g_ret_sts_success THEN
1067       RETURN;
1068    END IF;
1069 
1070 END Check_venue_rates_Items;
1071 
1072 
1073 
1074 PROCEDURE Complete_venue_rates_Rec (
1075    p_venue_rates_rec IN venue_rates_rec_type,
1076    x_complete_rec OUT NOCOPY venue_rates_rec_type)
1077 IS
1078    l_return_status  VARCHAR2(1);
1079 
1080    CURSOR c_complete IS
1081       SELECT *
1082       FROM ams_venue_rates_b
1083       WHERE rate_id = p_venue_rates_rec.rate_id;
1084    l_venue_rates_rec c_complete%ROWTYPE;
1085 BEGIN
1086    x_complete_rec := p_venue_rates_rec;
1087 
1088 
1089    OPEN c_complete;
1090    FETCH c_complete INTO l_venue_rates_rec;
1091    CLOSE c_complete;
1092 
1093    -- rate_id
1094    IF p_venue_rates_rec.rate_id = FND_API.g_miss_num THEN
1095       x_complete_rec.rate_id := l_venue_rates_rec.rate_id;
1096    END IF;
1097 
1098    -- last_update_date
1099    IF p_venue_rates_rec.last_update_date = FND_API.g_miss_date THEN
1100       x_complete_rec.last_update_date := l_venue_rates_rec.last_update_date;
1101    END IF;
1102 
1103    -- last_updated_by
1104    IF p_venue_rates_rec.last_updated_by = FND_API.g_miss_num THEN
1105       x_complete_rec.last_updated_by := l_venue_rates_rec.last_updated_by;
1106    END IF;
1107 
1108    -- creation_date
1109    IF p_venue_rates_rec.creation_date = FND_API.g_miss_date THEN
1110       x_complete_rec.creation_date := l_venue_rates_rec.creation_date;
1111    END IF;
1112 
1113    -- created_by
1114    IF p_venue_rates_rec.created_by = FND_API.g_miss_num THEN
1115       x_complete_rec.created_by := l_venue_rates_rec.created_by;
1116    END IF;
1117 
1118    -- last_update_login
1119    IF p_venue_rates_rec.last_update_login = FND_API.g_miss_num THEN
1120       x_complete_rec.last_update_login := l_venue_rates_rec.last_update_login;
1121    END IF;
1122 
1123    -- object_version_number
1124    IF p_venue_rates_rec.object_version_number = FND_API.g_miss_num THEN
1125       x_complete_rec.object_version_number := l_venue_rates_rec.object_version_number;
1126    END IF;
1127 
1128    -- active_flag
1129    IF p_venue_rates_rec.active_flag = FND_API.g_miss_char THEN
1130       x_complete_rec.active_flag := l_venue_rates_rec.active_flag;
1131    END IF;
1132 
1133    -- venue_id
1134    IF p_venue_rates_rec.venue_id = FND_API.g_miss_num THEN
1135       x_complete_rec.venue_id := l_venue_rates_rec.venue_id;
1136    END IF;
1137 
1138    -- metric_id
1139    IF p_venue_rates_rec.metric_id = FND_API.g_miss_num THEN
1140       x_complete_rec.metric_id := l_venue_rates_rec.metric_id;
1141    END IF;
1142 
1143    -- transactional_value
1144    IF p_venue_rates_rec.transactional_value = FND_API.g_miss_num THEN
1145       x_complete_rec.transactional_value := l_venue_rates_rec.transactional_value;
1146    END IF;
1147 
1148    -- transactional_currency_code
1149    IF p_venue_rates_rec.transactional_currency_code = FND_API.g_miss_char THEN
1150       x_complete_rec.transactional_currency_code := l_venue_rates_rec.transactional_currency_code;
1151    END IF;
1152 
1153 
1154 
1155    -- functional_value
1156    IF p_venue_rates_rec.functional_value = FND_API.g_miss_num THEN
1157       x_complete_rec.functional_value := l_venue_rates_rec.functional_value;
1158    END IF;
1159 
1160    -- functional_currency_code
1161    IF p_venue_rates_rec.functional_currency_code = FND_API.g_miss_char THEN
1162       x_complete_rec.functional_currency_code := l_venue_rates_rec.functional_currency_code;
1163    END IF;
1164 
1165    -- uom_code
1166    IF p_venue_rates_rec.uom_code = FND_API.g_miss_char THEN
1167       x_complete_rec.uom_code := l_venue_rates_rec.uom_code;
1168    END IF;
1169 
1170  -- rate_code Added by GMADANA
1171    IF p_venue_rates_rec.rate_code = FND_API.g_miss_char THEN
1172       x_complete_rec.rate_code := l_venue_rates_rec.rate_code;
1173    END IF;
1174 
1175    -- attribute_category
1176    IF p_venue_rates_rec.attribute_category = FND_API.g_miss_char THEN
1177       x_complete_rec.attribute_category := l_venue_rates_rec.attribute_category;
1178    END IF;
1179 
1180    -- attribute1
1181    IF p_venue_rates_rec.attribute1 = FND_API.g_miss_char THEN
1182       x_complete_rec.attribute1 := l_venue_rates_rec.attribute1;
1183    END IF;
1184 
1185    -- attribute2
1186    IF p_venue_rates_rec.attribute2 = FND_API.g_miss_char THEN
1187       x_complete_rec.attribute2 := l_venue_rates_rec.attribute2;
1188    END IF;
1189 
1190    -- attribute3
1191    IF p_venue_rates_rec.attribute3 = FND_API.g_miss_char THEN
1192       x_complete_rec.attribute3 := l_venue_rates_rec.attribute3;
1193    END IF;
1194 
1195    -- attribute4
1196    IF p_venue_rates_rec.attribute4 = FND_API.g_miss_char THEN
1197       x_complete_rec.attribute4 := l_venue_rates_rec.attribute4;
1198    END IF;
1199 
1200    -- attribute5
1201    IF p_venue_rates_rec.attribute5 = FND_API.g_miss_char THEN
1202       x_complete_rec.attribute5 := l_venue_rates_rec.attribute5;
1203    END IF;
1204 
1205    -- attribute6
1206    IF p_venue_rates_rec.attribute6 = FND_API.g_miss_char THEN
1207       x_complete_rec.attribute6 := l_venue_rates_rec.attribute6;
1208    END IF;
1209 
1210    -- attribute7
1211    IF p_venue_rates_rec.attribute7 = FND_API.g_miss_char THEN
1212       x_complete_rec.attribute7 := l_venue_rates_rec.attribute7;
1213    END IF;
1214 
1215    -- attribute8
1216    IF p_venue_rates_rec.attribute8 = FND_API.g_miss_char THEN
1217       x_complete_rec.attribute8 := l_venue_rates_rec.attribute8;
1218    END IF;
1219 
1220    -- attribute9
1221    IF p_venue_rates_rec.attribute9 = FND_API.g_miss_char THEN
1222       x_complete_rec.attribute9 := l_venue_rates_rec.attribute9;
1223    END IF;
1224 
1225    -- attribute10
1226    IF p_venue_rates_rec.attribute10 = FND_API.g_miss_char THEN
1227       x_complete_rec.attribute10 := l_venue_rates_rec.attribute10;
1228    END IF;
1229 
1230    -- attribute11
1231    IF p_venue_rates_rec.attribute11 = FND_API.g_miss_char THEN
1232       x_complete_rec.attribute11 := l_venue_rates_rec.attribute11;
1233    END IF;
1234 
1235    -- attribute12
1236    IF p_venue_rates_rec.attribute12 = FND_API.g_miss_char THEN
1237       x_complete_rec.attribute12 := l_venue_rates_rec.attribute12;
1238    END IF;
1239 
1240    -- attribute13
1241    IF p_venue_rates_rec.attribute13 = FND_API.g_miss_char THEN
1242       x_complete_rec.attribute13 := l_venue_rates_rec.attribute13;
1243    END IF;
1244 
1245    -- attribute14
1246    IF p_venue_rates_rec.attribute14 = FND_API.g_miss_char THEN
1247       x_complete_rec.attribute14 := l_venue_rates_rec.attribute14;
1248    END IF;
1249 
1250    -- attribute15
1251    IF p_venue_rates_rec.attribute15 = FND_API.g_miss_char THEN
1252       x_complete_rec.attribute15 := l_venue_rates_rec.attribute15;
1253    END IF;
1254 
1255    -- Note: Developers need to modify the procedure
1256    -- to handle any business specific requirements.
1257 END Complete_venue_rates_Rec;
1258 PROCEDURE Validate_venue_rates(
1259     p_api_version_number         IN   NUMBER,
1260     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1261     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1262     p_venue_rates_rec               IN   venue_rates_rec_type,
1263     p_validation_mode            IN    VARCHAR2,
1264     x_return_status              OUT NOCOPY  VARCHAR2,
1265     x_msg_count                  OUT NOCOPY  NUMBER,
1266     x_msg_data                   OUT NOCOPY  VARCHAR2
1267     )
1268  IS
1269 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Venue_Rates';
1270 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1271 l_object_version_number     NUMBER;
1272 l_venue_rates_rec  AMS_Venue_Rates_PVT.venue_rates_rec_type;
1273 
1274  BEGIN
1275       -- Standard Start of API savepoint
1276       SAVEPOINT VALIDATE_Venue_Rates_;
1277 
1278       -- Standard call to check for call compatibility.
1279       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1280                                            p_api_version_number,
1281                                            l_api_name,
1282                                            G_PKG_NAME)
1283       THEN
1284           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1285       END IF;
1286 
1287       -- Initialize message list if p_init_msg_list is set to TRUE.
1288       IF FND_API.to_Boolean( p_init_msg_list )
1289       THEN
1290          FND_MSG_PUB.initialize;
1291       END IF;
1292       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1293               Check_venue_rates_Items(
1294                  p_venue_rates_rec        => p_venue_rates_rec,
1295                  p_validation_mode   => p_validation_mode,
1296                  x_return_status     => x_return_status
1297               );
1298 
1299               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1300                   RAISE FND_API.G_EXC_ERROR;
1301               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1302                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1303               END IF;
1304       END IF;
1305 
1306       Complete_venue_rates_Rec(
1307          p_venue_rates_rec        => p_venue_rates_rec,
1308          x_complete_rec        => l_venue_rates_rec
1309       );
1310 
1311       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1312          Validate_venue_rates_Rec(
1313            p_api_version_number     => 1.0,
1314            p_init_msg_list          => FND_API.G_FALSE,
1315            x_return_status          => x_return_status,
1316            x_msg_count              => x_msg_count,
1317            x_msg_data               => x_msg_data,
1318            p_venue_rates_rec           =>    l_venue_rates_rec);
1319 
1320               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1321                  RAISE FND_API.G_EXC_ERROR;
1322               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1323                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1324               END IF;
1325       END IF;
1326 
1327 
1328       -- Debug Message
1329       IF (AMS_DEBUG_HIGH_ON) THEN
1330 
1331           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1332       END IF;
1333 
1334 
1335       -- Initialize API return status to SUCCESS
1336       x_return_status := FND_API.G_RET_STS_SUCCESS;
1337 
1338 
1339       -- Debug Message
1340       IF (AMS_DEBUG_HIGH_ON) THEN
1341 
1342           AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1343       END IF;
1344 
1345       -- Standard call to get message count and if count is 1, get message info.
1346       FND_MSG_PUB.Count_And_Get
1347         (p_count          =>   x_msg_count,
1348          p_data           =>   x_msg_data
1349       );
1350 EXCEPTION
1351 
1352    WHEN AMS_Utility_PVT.resource_locked THEN
1353      x_return_status := FND_API.g_ret_sts_error;
1354  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1355 
1356    WHEN FND_API.G_EXC_ERROR THEN
1357      ROLLBACK TO VALIDATE_Venue_Rates_;
1358      x_return_status := FND_API.G_RET_STS_ERROR;
1359      -- Standard call to get message count and if count=1, get the message
1360      FND_MSG_PUB.Count_And_Get (
1361             p_encoded => FND_API.G_FALSE,
1362             p_count   => x_msg_count,
1363             p_data    => x_msg_data
1364      );
1365 
1366    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1367      ROLLBACK TO VALIDATE_Venue_Rates_;
1368      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1369      -- Standard call to get message count and if count=1, get the message
1370      FND_MSG_PUB.Count_And_Get (
1371             p_encoded => FND_API.G_FALSE,
1372             p_count => x_msg_count,
1373             p_data  => x_msg_data
1374      );
1375 
1376    WHEN OTHERS THEN
1377      ROLLBACK TO VALIDATE_Venue_Rates_;
1378      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1379      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1380      THEN
1381         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1382      END IF;
1383      -- Standard call to get message count and if count=1, get the message
1384      FND_MSG_PUB.Count_And_Get (
1385             p_encoded => FND_API.G_FALSE,
1386             p_count => x_msg_count,
1387             p_data  => x_msg_data
1388      );
1389 End Validate_Venue_Rates;
1390 
1391 
1392 PROCEDURE Validate_venue_rates_rec(
1393     p_api_version_number         IN   NUMBER,
1394     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1395     x_return_status              OUT NOCOPY  VARCHAR2,
1396     x_msg_count                  OUT NOCOPY  NUMBER,
1397     x_msg_data                   OUT NOCOPY  VARCHAR2,
1398     p_venue_rates_rec               IN    venue_rates_rec_type
1399     )
1400 IS
1401 BEGIN
1402       -- Initialize message list if p_init_msg_list is set to TRUE.
1403       IF FND_API.to_Boolean( p_init_msg_list )
1404       THEN
1405          FND_MSG_PUB.initialize;
1406       END IF;
1407 
1408       -- Initialize API return status to SUCCESS
1409       x_return_status := FND_API.G_RET_STS_SUCCESS;
1410 
1411       -- Hint: Validate data
1412       -- If data not valid
1413       -- THEN
1414       -- x_return_status := FND_API.G_RET_STS_ERROR;
1415 
1416       -- Debug Message
1417       IF (AMS_DEBUG_HIGH_ON) THEN
1418 
1419           AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1420       END IF;
1421       -- Standard call to get message count and if count is 1, get message info.
1422       FND_MSG_PUB.Count_And_Get
1423         (p_count          =>   x_msg_count,
1424          p_data           =>   x_msg_data
1425       );
1426 END Validate_venue_rates_Rec;
1427 
1428 END AMS_Venue_Rates_PVT;