DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_NA_DDN_RULE_PVT

Source


1 PACKAGE BODY OZF_Na_Ddn_Rule_PVT as
2 /* $Header: ozfvdnrb.pls 120.2 2006/02/25 19:23:31 julou noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          OZF_Na_Ddn_Rule_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- Wed Jan 14 2004:1/45 PM RSSHARMA Changed AMS_API_MISSING_FIELD messages to OZF_API_MISSING_FIELD
14 -- Mon Mar 29 2004:5/4 PM RSSHARMA Fixed bug # 3429608. Corrected debug to call local debug_message instead of ozf_utility_pvt.
15 -- Wed Oct 26 2005:2/8 PM RSSHARMA Fixed package hanging. Debug message was calling itself instead of ozf_utility_pvt.debug_message
16 -- End of Comments
17 -- ===============================================================
18 
19 
20 G_PKG_NAME CONSTANT VARCHAR2(30):= 'OZF_Na_Ddn_Rule_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvam.b.pls';
22 OZF_DEBUG_HIGH_ON      CONSTANT BOOLEAN :=  FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
23 OZF_DEBUG_LOW_ON      CONSTANT BOOLEAN :=  FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_low);
24 
25 -- G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
26 -- G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
27 --
28 -- Foreward Procedure Declarations
29 --
30 
31 PROCEDURE Default_Na_Ddn_Rule_Items (
32    p_na_ddn_rule_rec IN  na_ddn_rule_rec_type ,
33    x_na_ddn_rule_rec OUT NOCOPY na_ddn_rule_rec_type
34 ) ;
35 
36 PROCEDURE debug_message(
37                         p_message_text   IN  VARCHAR2
38                         )
39 IS
40 BEGIN
41 IF OZF_DEBUG_HIGH_ON THEN
42     ozf_utility_pvt.debug_message(p_message_text);
43 END IF;
44 END debug_message;
45 
46 
47 -- Hint: Primary key needs to be returned.
48 --   ==============================================================================
49 --    Start of Comments
50 --   ==============================================================================
51 --   API Name
52 --           Create_Na_Ddn_Rule
53 --   Type
54 --           Private
55 --   Pre-Req
56 --
57 --   Parameters
58 --
59 --   IN
60 --       p_api_version_number      IN   NUMBER     Required
61 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
62 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
63 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
64 --       p_na_ddn_rule_rec            IN   na_ddn_rule_rec_type  Required
65 --
66 --   OUT
67 --       x_return_status           OUT  VARCHAR2
68 --       x_msg_count               OUT  NUMBER
69 --       x_msg_data                OUT  VARCHAR2
70 --   Version : Current version 1.0
71 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
72 --         and basic operation, developer must manually add parameters and business logic as necessary.
73 --
74 --   History
75 --
76 --   NOTE
77 --
78 --   End of Comments
79 --   ==============================================================================
80 
81 PROCEDURE Create_Na_Ddn_Rule(
82     p_api_version_number         IN   NUMBER,
83     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
84     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
85     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
86 
87     x_return_status              OUT NOCOPY  VARCHAR2,
88     x_msg_count                  OUT NOCOPY  NUMBER,
89     x_msg_data                   OUT NOCOPY  VARCHAR2,
90 
91     p_na_ddn_rule_rec              IN   na_ddn_rule_rec_type  := g_miss_na_ddn_rule_rec,
92     x_na_deduction_rule_id              OUT NOCOPY  NUMBER
93      )
94 
95  IS
96 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Na_Ddn_Rule';
97 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
98    l_return_status_full        VARCHAR2(1);
99    l_object_version_number     NUMBER := 1;
100    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
101    l_na_deduction_rule_id              NUMBER;
102    l_dummy                     NUMBER;
103    CURSOR c_id IS
104       SELECT ozf_na_deduction_rules_b_s.NEXTVAL
105       FROM dual;
106 
107    CURSOR c_id_exists (l_id IN NUMBER) IS
108       SELECT 1
109       FROM OZF_NA_DEDUCTION_RULES_B
110       WHERE na_deduction_rule_id = l_id;
111 
112 l_na_ddn_rule_rec na_ddn_rule_rec_type;
113 BEGIN
114       -- Standard Start of API savepoint
115       SAVEPOINT create_na_ddn_rule_pvt;
116 
117       -- Standard call to check for call compatibility.
118       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
119                                            p_api_version_number,
120                                            l_api_name,
121                                            G_PKG_NAME)
122       THEN
123           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
124       END IF;
125 
126 
127       -- Initialize message list if p_init_msg_list is set to TRUE.
128       IF FND_API.to_Boolean( p_init_msg_list )
129       THEN
130          FND_MSG_PUB.initialize;
131       END IF;
132 
133 
134 
135       -- Debug Message
136       debug_message('Private API: ' || l_api_name || 'start');
137 
138 
139 
140       -- Initialize API return status to SUCCESS
141       x_return_status := FND_API.G_RET_STS_SUCCESS;
142 
143       -- =========================================================================
144       -- Validate Environment
145       -- =========================================================================
146 
147       IF FND_GLOBAL.USER_ID IS NULL
148       THEN
149          OZF_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
150           RAISE FND_API.G_EXC_ERROR;
151       END IF;
152 
153 
154    IF p_na_ddn_rule_rec.na_deduction_rule_id IS NULL OR p_na_ddn_rule_rec.na_deduction_rule_id = FND_API.g_miss_num THEN
155       LOOP
156          l_dummy := NULL;
157          OPEN c_id;
158          FETCH c_id INTO l_na_deduction_rule_id;
159          CLOSE c_id;
160 
161          OPEN c_id_exists(l_na_deduction_rule_id);
162          FETCH c_id_exists INTO l_dummy;
163          CLOSE c_id_exists;
164          EXIT WHEN l_dummy IS NULL;
165       END LOOP;
166    ELSE
167          l_na_deduction_rule_id := p_na_ddn_rule_rec.na_deduction_rule_id;
168    END IF;
169 
170 
171 l_na_ddn_rule_rec := p_na_ddn_rule_rec;
172 l_na_ddn_rule_rec.na_deduction_rule_id := l_na_deduction_rule_id;
173       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
174       THEN
175           -- Debug message
176           debug_message('Private API: Validate_Na_Ddn_Rule');
177 
178           -- Invoke validation procedures
179           Validate_na_ddn_rule(
180             p_api_version_number     => 1.0,
181             p_init_msg_list    => FND_API.G_FALSE,
182             p_validation_level => p_validation_level,
183             p_validation_mode => JTF_PLSQL_API.g_create,
184             p_na_ddn_rule_rec  =>  l_na_ddn_rule_rec,
185             x_return_status    => x_return_status,
186             x_msg_count        => x_msg_count,
187             x_msg_data         => x_msg_data);
188       END IF;
189 
190       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
191           RAISE FND_API.G_EXC_ERROR;
192       END IF;
193 
194    -- Local variable initialization
195 
196       -- Debug Message
197       debug_message( 'Private API: Calling create table handler');
198 
199       -- Invoke table handler(Ozf_Na_Ddn_Rule_Pkg.Insert_Row)
200       Ozf_Na_Ddn_Rule_Pkg.Insert_Row(
201           px_na_deduction_rule_id  => l_na_deduction_rule_id,
202           p_transaction_source_code  => l_na_ddn_rule_rec.transaction_source_code,
203           p_transaction_type_code  => l_na_ddn_rule_rec.transaction_type_code,
204           p_deduction_identifier_id  => l_na_ddn_rule_rec.deduction_identifier_id,
205           p_deduction_identifier_org_id  => l_na_ddn_rule_rec.deduction_identifier_org_id,
206           px_object_version_number  => l_object_version_number,
207           p_creation_date  => SYSDATE,
208           p_created_by  => FND_GLOBAL.USER_ID,
209           p_last_update_date  => SYSDATE,
210           p_last_updated_by  => FND_GLOBAL.USER_ID,
211           p_last_update_login  => FND_GLOBAL.conc_login_id,
212           p_name  => l_na_ddn_rule_rec.name,
213           p_description  => l_na_ddn_rule_rec.description
214 );
215 
216           x_na_deduction_rule_id := l_na_deduction_rule_id;
217       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
218           RAISE FND_API.G_EXC_ERROR;
219       END IF;
220 --
221 -- End of API body
222 --
223 
224       -- Standard check for p_commit
225       IF FND_API.to_Boolean( p_commit )
226       THEN
227          COMMIT WORK;
228       END IF;
229 
230 
231       -- Debug Message
232       debug_message('Private API: ' || l_api_name || 'end');
233 
234 
235       -- Standard call to get message count and if count is 1, get message info.
236       FND_MSG_PUB.Count_And_Get
237         (p_count          =>   x_msg_count,
238          p_data           =>   x_msg_data
239       );
240 EXCEPTION
241 
242    WHEN OZF_Utility_PVT.resource_locked THEN
243      x_return_status := FND_API.g_ret_sts_error;
244          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
245 
246    WHEN FND_API.G_EXC_ERROR THEN
247      ROLLBACK TO CREATE_Na_Ddn_Rule_PVT;
248      x_return_status := FND_API.G_RET_STS_ERROR;
249      -- Standard call to get message count and if count=1, get the message
250      FND_MSG_PUB.Count_And_Get (
251             p_encoded => FND_API.G_FALSE,
252             p_count   => x_msg_count,
253             p_data    => x_msg_data
254      );
255 
256    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257      ROLLBACK TO CREATE_Na_Ddn_Rule_PVT;
258      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
259      -- Standard call to get message count and if count=1, get the message
260      FND_MSG_PUB.Count_And_Get (
261             p_encoded => FND_API.G_FALSE,
262             p_count => x_msg_count,
263             p_data  => x_msg_data
264      );
265 
266    WHEN OTHERS THEN
267      ROLLBACK TO CREATE_Na_Ddn_Rule_PVT;
268      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
269      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
270      THEN
271         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
272      END IF;
273      -- Standard call to get message count and if count=1, get the message
274      FND_MSG_PUB.Count_And_Get (
275             p_encoded => FND_API.G_FALSE,
276             p_count => x_msg_count,
277             p_data  => x_msg_data
278      );
279 End Create_Na_Ddn_Rule;
280 
281 
282 --   ==============================================================================
283 --    Start of Comments
284 --   ==============================================================================
285 --   API Name
286 --           Update_Na_Ddn_Rule
287 --   Type
288 --           Private
289 --   Pre-Req
290 --
291 --   Parameters
292 --
293 --   IN
294 --       p_api_version_number      IN   NUMBER     Required
295 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
296 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
297 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
298 --       p_na_ddn_rule_rec            IN   na_ddn_rule_rec_type  Required
299 --
300 --   OUT
301 --       x_return_status           OUT  VARCHAR2
302 --       x_msg_count               OUT  NUMBER
303 --       x_msg_data                OUT  VARCHAR2
304 --   Version : Current version 1.0
305 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
306 --         and basic operation, developer must manually add parameters and business logic as necessary.
307 --
308 --   History
309 --
310 --   NOTE
311 --
312 --   End of Comments
313 --   ==============================================================================
314 
315 PROCEDURE Update_Na_Ddn_Rule(
316     p_api_version_number         IN   NUMBER,
317     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
318     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
319     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
320 
321     x_return_status              OUT NOCOPY  VARCHAR2,
322     x_msg_count                  OUT NOCOPY  NUMBER,
323     x_msg_data                   OUT NOCOPY  VARCHAR2,
324 
325     p_na_ddn_rule_rec               IN    na_ddn_rule_rec_type
326     )
327 
328  IS
329 
330 
331 CURSOR c_get_na_ddn_rule(na_deduction_rule_id NUMBER) IS
332     SELECT *
333     FROM  OZF_NA_DEDUCTION_RULES_B
334     WHERE  na_deduction_rule_id = p_na_ddn_rule_rec.na_deduction_rule_id;
335     -- Hint: Developer need to provide Where clause
336 
337 
338 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Na_Ddn_Rule';
339 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
340 -- Local Variables
344 l_tar_na_ddn_rule_rec  na_ddn_rule_rec_type := P_na_ddn_rule_rec;
341 l_object_version_number     NUMBER;
342 l_na_deduction_rule_id    NUMBER;
343 l_ref_na_ddn_rule_rec  c_get_Na_Ddn_Rule%ROWTYPE ;
345 l_rowid  ROWID;
346 
347  BEGIN
348       -- Standard Start of API savepoint
349       SAVEPOINT update_na_ddn_rule_pvt;
350 
351       -- Standard call to check for call compatibility.
352       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
353                                            p_api_version_number,
354                                            l_api_name,
355                                            G_PKG_NAME)
356       THEN
357           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
358       END IF;
359 
360 
361       -- Initialize message list if p_init_msg_list is set to TRUE.
362       IF FND_API.to_Boolean( p_init_msg_list )
363       THEN
364          FND_MSG_PUB.initialize;
365       END IF;
366 
367 
368 
369       -- Debug Message
370       debug_message('Private API: ' || l_api_name || 'start');
371 
372 
373 
374       -- Initialize API return status to SUCCESS
375       x_return_status := FND_API.G_RET_STS_SUCCESS;
376 
377       -- Debug Message
378       debug_message('Private API: - Open Cursor to Select');
379 
380       OPEN c_get_Na_Ddn_Rule( l_tar_na_ddn_rule_rec.na_deduction_rule_id);
381 
382       FETCH c_get_Na_Ddn_Rule INTO l_ref_na_ddn_rule_rec  ;
383 
384        If ( c_get_Na_Ddn_Rule%NOTFOUND) THEN
385   OZF_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
386    p_token_name   => 'INFO',
387  p_token_value  => 'Na_Ddn_Rule') ;
388            RAISE FND_API.G_EXC_ERROR;
389        END IF;
390        -- Debug Message
391        debug_message('Private API: - Close Cursor');
392        CLOSE     c_get_Na_Ddn_Rule;
393 
394 
395       If (l_tar_na_ddn_rule_rec.object_version_number is NULL or
396           l_tar_na_ddn_rule_rec.object_version_number = FND_API.G_MISS_NUM ) Then
397   OZF_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
398    p_token_name   => 'COLUMN',
399  p_token_value  => 'Last_Update_Date') ;
400           raise FND_API.G_EXC_ERROR;
401       End if;
402       -- Check Whether record has been changed by someone else
403       If (l_tar_na_ddn_rule_rec.object_version_number <> l_ref_na_ddn_rule_rec.object_version_number) Then
404   OZF_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
405    p_token_name   => 'INFO',
406  p_token_value  => 'Na_Ddn_Rule') ;
407           raise FND_API.G_EXC_ERROR;
408       End if;
409 
410 
411       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
412       THEN
413           -- Debug message
414           debug_message('Private API: Validate_Na_Ddn_Rule');
415 
416           -- Invoke validation procedures
417           Validate_na_ddn_rule(
418             p_api_version_number     => 1.0,
419             p_init_msg_list    => FND_API.G_FALSE,
420             p_validation_level => p_validation_level,
421             p_validation_mode => JTF_PLSQL_API.g_update,
422             p_na_ddn_rule_rec  =>  p_na_ddn_rule_rec,
423             x_return_status    => x_return_status,
424             x_msg_count        => x_msg_count,
425             x_msg_data         => x_msg_data);
426       END IF;
427 
428       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
429           RAISE FND_API.G_EXC_ERROR;
430       END IF;
431 
432 
433       -- Debug Message
434 --      debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling update table handler');
435 
436       -- Invoke table handler(Ozf_Na_Ddn_Rule_Pkg.Update_Row)
437       Ozf_Na_Ddn_Rule_Pkg.Update_Row(
438           p_na_deduction_rule_id  => p_na_ddn_rule_rec.na_deduction_rule_id,
439           p_transaction_source_code  => p_na_ddn_rule_rec.transaction_source_code,
440           p_transaction_type_code  => p_na_ddn_rule_rec.transaction_type_code,
441           p_deduction_identifier_id  => p_na_ddn_rule_rec.deduction_identifier_id,
442           p_deduction_identifier_org_id  => p_na_ddn_rule_rec.deduction_identifier_org_id,
443           p_object_version_number  => p_na_ddn_rule_rec.object_version_number,
444           p_last_update_date  => SYSDATE,
445           p_last_updated_by  => FND_GLOBAL.USER_ID,
446           p_last_update_login  => FND_GLOBAL.conc_login_id,
447           p_name  => p_na_ddn_rule_rec.name,
448           p_description  => p_na_ddn_rule_rec.description
449 );
450       --
451       -- End of API body.
452       --
453 
454       -- Standard check for p_commit
455       IF FND_API.to_Boolean( p_commit )
456       THEN
457          COMMIT WORK;
458       END IF;
459 
460 
461       -- Debug Message
462       debug_message('Private API: ' || l_api_name || 'end');
463 
464 
465       -- Standard call to get message count and if count is 1, get message info.
466       FND_MSG_PUB.Count_And_Get
467         (p_count          =>   x_msg_count,
468          p_data           =>   x_msg_data
469       );
470 EXCEPTION
471 
472    WHEN OZF_Utility_PVT.resource_locked THEN
473      x_return_status := FND_API.g_ret_sts_error;
477      ROLLBACK TO UPDATE_Na_Ddn_Rule_PVT;
474          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
475 
476    WHEN FND_API.G_EXC_ERROR THEN
478      x_return_status := FND_API.G_RET_STS_ERROR;
479      -- Standard call to get message count and if count=1, get the message
480      FND_MSG_PUB.Count_And_Get (
481             p_encoded => FND_API.G_FALSE,
482             p_count   => x_msg_count,
483             p_data    => x_msg_data
484      );
485 
486    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
487      ROLLBACK TO UPDATE_Na_Ddn_Rule_PVT;
488      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
489      -- Standard call to get message count and if count=1, get the message
490      FND_MSG_PUB.Count_And_Get (
491             p_encoded => FND_API.G_FALSE,
492             p_count => x_msg_count,
493             p_data  => x_msg_data
494      );
495 
496    WHEN OTHERS THEN
497      ROLLBACK TO UPDATE_Na_Ddn_Rule_PVT;
498      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
499      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
500      THEN
501         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
502      END IF;
503      -- Standard call to get message count and if count=1, get the message
504      FND_MSG_PUB.Count_And_Get (
505             p_encoded => FND_API.G_FALSE,
506             p_count => x_msg_count,
507             p_data  => x_msg_data
508      );
509 End Update_Na_Ddn_Rule;
510 
511 
512 --   ==============================================================================
513 --    Start of Comments
514 --   ==============================================================================
515 --   API Name
516 --           Delete_Na_Ddn_Rule
517 --   Type
518 --           Private
519 --   Pre-Req
520 --
521 --   Parameters
522 --
523 --   IN
524 --       p_api_version_number      IN   NUMBER     Required
525 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
526 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
527 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
528 --       p_na_deduction_rule_id                IN   NUMBER
529 --       p_object_version_number   IN   NUMBER     Optional  Default = NULL
530 --
531 --   OUT
532 --       x_return_status           OUT  VARCHAR2
533 --       x_msg_count               OUT  NUMBER
534 --       x_msg_data                OUT  VARCHAR2
535 --   Version : Current version 1.0
536 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
537 --         and basic operation, developer must manually add parameters and business logic as necessary.
538 --
539 --   History
540 --
541 --   NOTE
542 --
543 --   End of Comments
544 --   ==============================================================================
545 
546 PROCEDURE Delete_Na_Ddn_Rule(
547     p_api_version_number         IN   NUMBER,
548     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
549     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
550     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
551     x_return_status              OUT NOCOPY  VARCHAR2,
552     x_msg_count                  OUT NOCOPY  NUMBER,
553     x_msg_data                   OUT NOCOPY  VARCHAR2,
554     p_na_deduction_rule_id                   IN  NUMBER,
555     p_object_version_number      IN   NUMBER
556     )
557 
558  IS
559 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Na_Ddn_Rule';
560 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
561 l_object_version_number     NUMBER;
562 
563  BEGIN
564       -- Standard Start of API savepoint
565       SAVEPOINT delete_na_ddn_rule_pvt;
566 
567       -- Standard call to check for call compatibility.
568       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
569                                            p_api_version_number,
570                                            l_api_name,
571                                            G_PKG_NAME)
572       THEN
573           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
574       END IF;
575 
576 
577       -- Initialize message list if p_init_msg_list is set to TRUE.
578       IF FND_API.to_Boolean( p_init_msg_list )
579       THEN
580          FND_MSG_PUB.initialize;
581       END IF;
582 
583 
584 
585       -- Debug Message
586       debug_message('Private API: ' || l_api_name || 'start');
587 
588 
589 
590       -- Initialize API return status to SUCCESS
591       x_return_status := FND_API.G_RET_STS_SUCCESS;
592 
593       --
594       -- Api body
595       --
596       -- Debug Message
597       debug_message( 'Private API: Calling delete table handler');
598 
599       -- Invoke table handler(Ozf_Na_Ddn_Rule_Pkg.Delete_Row)
600       Ozf_Na_Ddn_Rule_Pkg.Delete_Row(
601           p_na_deduction_rule_id  => p_na_deduction_rule_id,
602           p_object_version_number => p_object_version_number     );
603       --
604       -- End of API body
605       --
606 
607       -- Standard check for p_commit
611       END IF;
608       IF FND_API.to_Boolean( p_commit )
609       THEN
610          COMMIT WORK;
612 
613 
614       -- Debug Message
615       debug_message('Private API: ' || l_api_name || 'end');
616 
617 
618       -- Standard call to get message count and if count is 1, get message info.
619       FND_MSG_PUB.Count_And_Get
620         (p_count          =>   x_msg_count,
621          p_data           =>   x_msg_data
622       );
623 EXCEPTION
624 
625    WHEN OZF_Utility_PVT.resource_locked THEN
626      x_return_status := FND_API.g_ret_sts_error;
627          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
628 
629    WHEN FND_API.G_EXC_ERROR THEN
630      ROLLBACK TO DELETE_Na_Ddn_Rule_PVT;
631      x_return_status := FND_API.G_RET_STS_ERROR;
632      -- Standard call to get message count and if count=1, get the message
633      FND_MSG_PUB.Count_And_Get (
634             p_encoded => FND_API.G_FALSE,
635             p_count   => x_msg_count,
636             p_data    => x_msg_data
637      );
638 
639    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
640      ROLLBACK TO DELETE_Na_Ddn_Rule_PVT;
641      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
642      -- Standard call to get message count and if count=1, get the message
643      FND_MSG_PUB.Count_And_Get (
644             p_encoded => FND_API.G_FALSE,
645             p_count => x_msg_count,
646             p_data  => x_msg_data
647      );
648 
649    WHEN OTHERS THEN
650      ROLLBACK TO DELETE_Na_Ddn_Rule_PVT;
651      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
652      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
653      THEN
654         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
655      END IF;
656      -- Standard call to get message count and if count=1, get the message
657      FND_MSG_PUB.Count_And_Get (
658             p_encoded => FND_API.G_FALSE,
659             p_count => x_msg_count,
660             p_data  => x_msg_data
661      );
662 End Delete_Na_Ddn_Rule;
663 
664 
665 
666 -- Hint: Primary key needs to be returned.
667 --   ==============================================================================
668 --    Start of Comments
669 --   ==============================================================================
670 --   API Name
671 --           Lock_Na_Ddn_Rule
672 --   Type
673 --           Private
674 --   Pre-Req
675 --
676 --   Parameters
677 --
678 --   IN
679 --       p_api_version_number      IN   NUMBER     Required
680 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
681 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
682 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
683 --       p_na_ddn_rule_rec            IN   na_ddn_rule_rec_type  Required
684 --
685 --   OUT
686 --       x_return_status           OUT  VARCHAR2
687 --       x_msg_count               OUT  NUMBER
688 --       x_msg_data                OUT  VARCHAR2
689 --   Version : Current version 1.0
690 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
691 --         and basic operation, developer must manually add parameters and business logic as necessary.
692 --
693 --   History
694 --
695 --   NOTE
696 --
697 --   End of Comments
698 --   ==============================================================================
699 
700 PROCEDURE Lock_Na_Ddn_Rule(
701     p_api_version_number         IN   NUMBER,
702     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
703 
704     x_return_status              OUT NOCOPY  VARCHAR2,
705     x_msg_count                  OUT NOCOPY  NUMBER,
706     x_msg_data                   OUT NOCOPY  VARCHAR2,
707 
708     p_na_deduction_rule_id                   IN  NUMBER,
709     p_object_version             IN  NUMBER
710     )
711 
712  IS
713 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Na_Ddn_Rule';
714 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
715 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
716 l_na_deduction_rule_id                  NUMBER;
717 
718 BEGIN
719 
720       -- Debug Message
721       debug_message('Private API: ' || l_api_name || 'start');
722 
723 
724       -- Initialize message list if p_init_msg_list is set to TRUE.
725       IF FND_API.to_Boolean( p_init_msg_list )
726       THEN
727          FND_MSG_PUB.initialize;
728       END IF;
729 
730 
731 
732       -- Standard call to check for call compatibility.
733       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
734                                            p_api_version_number,
735                                            l_api_name,
736                                            G_PKG_NAME)
737       THEN
738           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
739       END IF;
740 
741 
742 
743       -- Initialize API return status to SUCCESS
744       x_return_status := FND_API.G_RET_STS_SUCCESS;
745 
746 
747 ------------------------ lock -------------------------
748 Ozf_Na_Ddn_Rule_Pkg.Lock_Row(l_na_deduction_rule_id,p_object_version);
749 
750 
751  -------------------- finish --------------------------
752   FND_MSG_PUB.count_and_get(
753     p_encoded => FND_API.g_false,
754     p_count   => x_msg_count,
755     p_data    => x_msg_data);
756   debug_message(l_full_name ||': end');
757 EXCEPTION
758 
759    WHEN OZF_Utility_PVT.resource_locked THEN
760      x_return_status := FND_API.g_ret_sts_error;
761          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
762 
763    WHEN FND_API.G_EXC_ERROR THEN
764      ROLLBACK TO LOCK_Na_Ddn_Rule_PVT;
765      x_return_status := FND_API.G_RET_STS_ERROR;
766      -- Standard call to get message count and if count=1, get the message
767      FND_MSG_PUB.Count_And_Get (
768             p_encoded => FND_API.G_FALSE,
772 
769             p_count   => x_msg_count,
770             p_data    => x_msg_data
771      );
773    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
774      ROLLBACK TO LOCK_Na_Ddn_Rule_PVT;
775      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
776      -- Standard call to get message count and if count=1, get the message
777      FND_MSG_PUB.Count_And_Get (
778             p_encoded => FND_API.G_FALSE,
779             p_count => x_msg_count,
780             p_data  => x_msg_data
781      );
782 
783    WHEN OTHERS THEN
784      ROLLBACK TO LOCK_Na_Ddn_Rule_PVT;
785      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
786      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
787      THEN
788         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
789      END IF;
790      -- Standard call to get message count and if count=1, get the message
791      FND_MSG_PUB.Count_And_Get (
792             p_encoded => FND_API.G_FALSE,
793             p_count => x_msg_count,
794             p_data  => x_msg_data
795      );
796 End Lock_Na_Ddn_Rule;
797 
798 
799 
800 
801 PROCEDURE check_Na_Ddn_Rule_Uk_Items(
802     p_na_ddn_rule_rec               IN   na_ddn_rule_rec_type,
803     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
804     x_return_status              OUT NOCOPY VARCHAR2)
805 IS
806 l_valid_flag  VARCHAR2(1);
807 
808 BEGIN
809       x_return_status := FND_API.g_ret_sts_success;
810       IF p_validation_mode = JTF_PLSQL_API.g_create
811       AND p_na_ddn_rule_rec.na_deduction_rule_id IS NOT NULL
812       THEN
813          l_valid_flag := OZF_Utility_PVT.check_uniqueness(
814          'ozf_na_deduction_rules_b',
815          'na_deduction_rule_id = ''' || p_na_ddn_rule_rec.na_deduction_rule_id ||''''
816          );
817       END IF;
818 
819       IF l_valid_flag = FND_API.g_false THEN
820          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_na_deduction_rule_id_DUPLICATE');
821          x_return_status := FND_API.g_ret_sts_error;
822       END IF;
823 
824 END check_Na_Ddn_Rule_Uk_Items;
825 
826 
827 
828 PROCEDURE check_Na_Ddn_Rule_Req_Items(
829     p_na_ddn_rule_rec               IN  na_ddn_rule_rec_type,
830     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
831     x_return_status	         OUT NOCOPY VARCHAR2
832 )
833 IS
834 BEGIN
835    x_return_status := FND_API.g_ret_sts_success;
836 
837    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
838 
839 
840       IF p_na_ddn_rule_rec.na_deduction_rule_id = FND_API.G_MISS_NUM OR p_na_ddn_rule_rec.na_deduction_rule_id IS NULL THEN
841                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'NA_DEDUCTION_RULE_ID' );
842                x_return_status := FND_API.g_ret_sts_error;
843       END IF;
844 
845 
846       IF p_na_ddn_rule_rec.transaction_source_code = FND_API.g_miss_char OR p_na_ddn_rule_rec.transaction_source_code IS NULL THEN
847                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'TRANSACTION_SOURCE_CODE' );
848                x_return_status := FND_API.g_ret_sts_error;
849       END IF;
850 
851 
852       IF p_na_ddn_rule_rec.transaction_type_code = FND_API.g_miss_char OR p_na_ddn_rule_rec.transaction_type_code IS NULL THEN
853                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'TRANSACTION_TYPE_CODE' );
854                x_return_status := FND_API.g_ret_sts_error;
855       END IF;
856 
857 
858       IF p_na_ddn_rule_rec.deduction_identifier_id = FND_API.G_MISS_CHAR OR p_na_ddn_rule_rec.deduction_identifier_id IS NULL THEN
859                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'DEDUCTION_IDENTIFIER_ID' );
860                x_return_status := FND_API.g_ret_sts_error;
861       END IF;
862 
863       IF p_na_ddn_rule_rec.deduction_identifier_org_id = FND_API.G_MISS_NUM OR p_na_ddn_rule_rec.deduction_identifier_org_id IS NULL THEN
864                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'DEDUCTION_IDENTIFIER_ORG_ID' );
865                x_return_status := FND_API.g_ret_sts_error;
866       END IF;
867 
868 /*      IF p_na_ddn_rule_rec.object_version_number = FND_API.G_MISS_NUM OR p_na_ddn_rule_rec.object_version_number IS NULL THEN
869                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'OBJECT_VERSION_NUMBER' );
870                x_return_status := FND_API.g_ret_sts_error;
871       END IF;
872 
873 
874       IF p_na_ddn_rule_rec.last_update_login = FND_API.G_MISS_NUM OR p_na_ddn_rule_rec.last_update_login IS NULL THEN
875                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'LAST_UPDATE_LOGIN' );
876                x_return_status := FND_API.g_ret_sts_error;
877       END IF;
878 */
879 
880    ELSE
881       IF p_na_ddn_rule_rec.na_deduction_rule_id = FND_API.G_MISS_NUM THEN
882                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'NA_DEDUCTION_RULE_ID' );
883                x_return_status := FND_API.g_ret_sts_error;
884       END IF;
885 
886 
887       IF p_na_ddn_rule_rec.transaction_source_code = FND_API.g_miss_char THEN
888                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'TRANSACTION_SOURCE_CODE' );
889                x_return_status := FND_API.g_ret_sts_error;
890       END IF;
891 
892 
893       IF p_na_ddn_rule_rec.transaction_type_code = FND_API.g_miss_char THEN
894                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'TRANSACTION_TYPE_CODE' );
895                x_return_status := FND_API.g_ret_sts_error;
896       END IF;
897 
898 
899       IF p_na_ddn_rule_rec.deduction_identifier_id = FND_API.G_MISS_CHAR THEN
903 
900                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'DEDUCTION_IDENTIFIER_ID' );
901                x_return_status := FND_API.g_ret_sts_error;
902       END IF;
904       IF p_na_ddn_rule_rec.deduction_identifier_org_id = FND_API.G_MISS_NUM THEN
905                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'DEDUCTION_IDENTIFIER_ORG_ID' );
906                x_return_status := FND_API.g_ret_sts_error;
907       END IF;
908 
909       IF p_na_ddn_rule_rec.object_version_number = FND_API.G_MISS_NUM THEN
910                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'OBJECT_VERSION_NUMBER' );
911                x_return_status := FND_API.g_ret_sts_error;
912       END IF;
913 
914 /*
915       IF p_na_ddn_rule_rec.last_update_login = FND_API.G_MISS_NUM THEN
916                OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'LAST_UPDATE_LOGIN' );
917                x_return_status := FND_API.g_ret_sts_error;
918       END IF;
919    END IF;
920 */
921 END IF;
922 END check_Na_Ddn_Rule_Req_Items;
923 
924 
925 
926 PROCEDURE check_Na_Ddn_Rule_Fk_Items(
927     p_na_ddn_rule_rec IN na_ddn_rule_rec_type,
928     x_return_status OUT NOCOPY VARCHAR2
929 )
930 IS
931 BEGIN
932    x_return_status := FND_API.g_ret_sts_success;
933 
934    -- Enter custom code here
935 
936 END check_Na_Ddn_Rule_Fk_Items;
937 
938 
939 
940 PROCEDURE check_Na_Ddn_Rule_Lookup_Items(
941     p_na_ddn_rule_rec IN na_ddn_rule_rec_type,
942     x_return_status OUT NOCOPY VARCHAR2
943 )
944 IS
945 BEGIN
946    x_return_status := FND_API.g_ret_sts_success;
947 
948    -- Enter custom code here
949 
950 END check_Na_Ddn_Rule_Lookup_Items;
951 
952 
953 
954 PROCEDURE Check_Na_Ddn_Rule_Items (
955     P_na_ddn_rule_rec     IN    na_ddn_rule_rec_type,
956     p_validation_mode  IN    VARCHAR2,
957     x_return_status    OUT NOCOPY   VARCHAR2
958     )
959 IS
960    l_return_status   VARCHAR2(1);
961 BEGIN
962 
963     l_return_status := FND_API.g_ret_sts_success;
964    -- Check Items Uniqueness API calls
965 
966    check_Na_ddn_rule_Uk_Items(
967       p_na_ddn_rule_rec => p_na_ddn_rule_rec,
968       p_validation_mode => p_validation_mode,
969       x_return_status => x_return_status);
970    IF x_return_status <> FND_API.g_ret_sts_success THEN
971       l_return_status := FND_API.g_ret_sts_error;
972    END IF;
973 
974    -- Check Items Required/NOT NULL API calls
975 
976    check_na_ddn_rule_req_items(
977       p_na_ddn_rule_rec => p_na_ddn_rule_rec,
978       p_validation_mode => p_validation_mode,
979       x_return_status => x_return_status);
980    IF x_return_status <> FND_API.g_ret_sts_success THEN
981       l_return_status := FND_API.g_ret_sts_error;
982    END IF;
983    -- Check Items Foreign Keys API calls
984 
985    check_na_ddn_rule_FK_items(
986       p_na_ddn_rule_rec => p_na_ddn_rule_rec,
987       x_return_status => x_return_status);
988    IF x_return_status <> FND_API.g_ret_sts_success THEN
989       l_return_status := FND_API.g_ret_sts_error;
990    END IF;
991    -- Check Items Lookups
992 
993    check_na_ddn_rule_Lookup_items(
994       p_na_ddn_rule_rec => p_na_ddn_rule_rec,
995       x_return_status => x_return_status);
996    IF x_return_status <> FND_API.g_ret_sts_success THEN
997       l_return_status := FND_API.g_ret_sts_error;
998    END IF;
999 
1000    x_return_status := l_return_status;
1001 
1002 END Check_na_ddn_rule_Items;
1003 
1004 
1005 
1006 
1007 
1008 PROCEDURE Complete_Na_Ddn_Rule_Rec (
1009    p_na_ddn_rule_rec IN na_ddn_rule_rec_type,
1010    x_complete_rec OUT NOCOPY na_ddn_rule_rec_type)
1011 IS
1012    l_return_status  VARCHAR2(1);
1013 
1014    CURSOR c_complete IS
1015       SELECT *
1016       FROM ozf_na_deduction_rules_b
1017       WHERE na_deduction_rule_id = p_na_ddn_rule_rec.na_deduction_rule_id;
1018    l_na_ddn_rule_rec c_complete%ROWTYPE;
1019 BEGIN
1020    x_complete_rec := p_na_ddn_rule_rec;
1021 
1022 
1023    OPEN c_complete;
1024    FETCH c_complete INTO l_na_ddn_rule_rec;
1025    CLOSE c_complete;
1026 
1027    -- na_deduction_rule_id
1028    IF p_na_ddn_rule_rec.na_deduction_rule_id IS NULL THEN
1029       x_complete_rec.na_deduction_rule_id := l_na_ddn_rule_rec.na_deduction_rule_id;
1030    END IF;
1031 
1032    -- transaction_source_code
1033    IF p_na_ddn_rule_rec.transaction_source_code IS NULL THEN
1034       x_complete_rec.transaction_source_code := l_na_ddn_rule_rec.transaction_source_code;
1035    END IF;
1036 
1037    -- transaction_type_code
1038    IF p_na_ddn_rule_rec.transaction_type_code IS NULL THEN
1039       x_complete_rec.transaction_type_code := l_na_ddn_rule_rec.transaction_type_code;
1040    END IF;
1041 
1042    -- deduction_identifier_id
1043    IF p_na_ddn_rule_rec.deduction_identifier_id IS NULL THEN
1044       x_complete_rec.deduction_identifier_id := l_na_ddn_rule_rec.deduction_identifier_id;
1045    END IF;
1046 
1047    -- deduction_identifier_org_id
1048    IF p_na_ddn_rule_rec.deduction_identifier_org_id IS NULL THEN
1049       x_complete_rec.deduction_identifier_org_id := l_na_ddn_rule_rec.deduction_identifier_org_id;
1050    END IF;
1051 
1052    -- object_version_number
1053    IF p_na_ddn_rule_rec.object_version_number IS NULL THEN
1054       x_complete_rec.object_version_number := l_na_ddn_rule_rec.object_version_number;
1055    END IF;
1056 
1057    -- creation_date
1058    IF p_na_ddn_rule_rec.creation_date IS NULL THEN
1059       x_complete_rec.creation_date := l_na_ddn_rule_rec.creation_date;
1063    IF p_na_ddn_rule_rec.created_by IS NULL THEN
1060    END IF;
1061 
1062    -- created_by
1064       x_complete_rec.created_by := l_na_ddn_rule_rec.created_by;
1065    END IF;
1066 
1067    -- last_update_date
1068    IF p_na_ddn_rule_rec.last_update_date IS NULL THEN
1069       x_complete_rec.last_update_date := l_na_ddn_rule_rec.last_update_date;
1070    END IF;
1071 
1072    -- last_updated_by
1073    IF p_na_ddn_rule_rec.last_updated_by IS NULL THEN
1074       x_complete_rec.last_updated_by := l_na_ddn_rule_rec.last_updated_by;
1075    END IF;
1076 
1077    -- last_update_login
1078    IF p_na_ddn_rule_rec.last_update_login IS NULL THEN
1079       x_complete_rec.last_update_login := l_na_ddn_rule_rec.last_update_login;
1080    END IF;
1081    -- Note: Developers need to modify the procedure
1082    -- to handle any business specific requirements.
1083 END Complete_Na_Ddn_Rule_Rec;
1084 
1085 
1086 
1087 
1088 PROCEDURE Default_Na_Ddn_Rule_Items ( p_na_ddn_rule_rec IN na_ddn_rule_rec_type ,
1089                                 x_na_ddn_rule_rec OUT NOCOPY na_ddn_rule_rec_type )
1090 IS
1091    l_na_ddn_rule_rec na_ddn_rule_rec_type := p_na_ddn_rule_rec;
1092 BEGIN
1093    -- Developers should put their code to default the record type
1094    -- e.g. IF p_campaign_rec.status_code IS NULL
1095    --      OR p_campaign_rec.status_code = FND_API.G_MISS_CHAR THEN
1096    --         l_campaign_rec.status_code := 'NEW' ;
1097    --      END IF ;
1098    --
1099    NULL ;
1100 END;
1101 
1102 
1103 
1104 
1105 PROCEDURE Validate_Na_Ddn_Rule(
1106     p_api_version_number         IN   NUMBER,
1107     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1108     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1109     p_na_ddn_rule_rec               IN   na_ddn_rule_rec_type,
1110     p_validation_mode            IN    VARCHAR2,
1111     x_return_status              OUT NOCOPY  VARCHAR2,
1112     x_msg_count                  OUT NOCOPY  NUMBER,
1113     x_msg_data                   OUT NOCOPY  VARCHAR2
1114     )
1115  IS
1116 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Na_Ddn_Rule';
1117 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1118 l_object_version_number     NUMBER;
1119 l_na_ddn_rule_rec  na_ddn_rule_rec_type;
1120 
1121  BEGIN
1122       -- Standard Start of API savepoint
1123       SAVEPOINT validate_na_ddn_rule_;
1124 
1125       -- Standard call to check for call compatibility.
1126       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1127                                            p_api_version_number,
1128                                            l_api_name,
1129                                            G_PKG_NAME)
1130       THEN
1131           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1132       END IF;
1133 
1134 
1135       -- Initialize message list if p_init_msg_list is set to TRUE.
1136       IF FND_API.to_Boolean( p_init_msg_list )
1137       THEN
1138          FND_MSG_PUB.initialize;
1139       END IF;
1140 
1141 
1142       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1143               Check_na_ddn_rule_Items(
1144                  p_na_ddn_rule_rec        => p_na_ddn_rule_rec,
1145                  p_validation_mode   => p_validation_mode,
1146                  x_return_status     => x_return_status
1147               );
1148 
1149               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1150                   RAISE FND_API.G_EXC_ERROR;
1151               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1152                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1153               END IF;
1154       END IF;
1155 
1156 
1157 
1158       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
1159          Default_Na_Ddn_Rule_Items (p_na_ddn_rule_rec => p_na_ddn_rule_rec ,
1160                                 x_na_ddn_rule_rec => l_na_ddn_rule_rec) ;
1161       END IF ;
1162 
1163       Complete_na_ddn_rule_Rec(
1164          p_na_ddn_rule_rec        => p_na_ddn_rule_rec,
1165          x_complete_rec        => l_na_ddn_rule_rec
1166       );
1167 
1168 
1169       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1170          Validate_na_ddn_rule_Rec(
1171            p_api_version_number     => 1.0,
1172            p_init_msg_list          => FND_API.G_FALSE,
1173            x_return_status          => x_return_status,
1174            x_msg_count              => x_msg_count,
1175            x_msg_data               => x_msg_data,
1176            p_na_ddn_rule_rec           =>    l_na_ddn_rule_rec);
1177 
1178               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1179                  RAISE FND_API.G_EXC_ERROR;
1180               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1181                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1182               END IF;
1183       END IF;
1184 
1185 
1186       -- Debug Message
1187       debug_message('Private API: ' || l_api_name || 'start');
1188 
1189 
1190 
1191       -- Initialize API return status to SUCCESS
1192       x_return_status := FND_API.G_RET_STS_SUCCESS;
1193 
1194 
1195       -- Debug Message
1196       debug_message('Private API: ' || l_api_name || 'end');
1197 
1198 
1199       -- Standard call to get message count and if count is 1, get message info.
1200       FND_MSG_PUB.Count_And_Get
1201         (p_count          =>   x_msg_count,
1202          p_data           =>   x_msg_data
1203       );
1204 EXCEPTION
1205 
1206    WHEN OZF_Utility_PVT.resource_locked THEN
1207      x_return_status := FND_API.g_ret_sts_error;
1208          OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
1209 
1213      -- Standard call to get message count and if count=1, get the message
1210    WHEN FND_API.G_EXC_ERROR THEN
1211      ROLLBACK TO VALIDATE_Na_Ddn_Rule_;
1212      x_return_status := FND_API.G_RET_STS_ERROR;
1214      FND_MSG_PUB.Count_And_Get (
1215             p_encoded => FND_API.G_FALSE,
1216             p_count   => x_msg_count,
1217             p_data    => x_msg_data
1218      );
1219 
1220    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1221      ROLLBACK TO VALIDATE_Na_Ddn_Rule_;
1222      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1223      -- Standard call to get message count and if count=1, get the message
1224      FND_MSG_PUB.Count_And_Get (
1225             p_encoded => FND_API.G_FALSE,
1226             p_count => x_msg_count,
1227             p_data  => x_msg_data
1228      );
1229 
1230    WHEN OTHERS THEN
1231      ROLLBACK TO VALIDATE_Na_Ddn_Rule_;
1232      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1233      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1234      THEN
1235         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1236      END IF;
1237      -- Standard call to get message count and if count=1, get the message
1238      FND_MSG_PUB.Count_And_Get (
1239             p_encoded => FND_API.G_FALSE,
1240             p_count => x_msg_count,
1241             p_data  => x_msg_data
1242      );
1243 End Validate_Na_Ddn_Rule;
1244 
1245 
1246 PROCEDURE Validate_Na_Ddn_Rule_Rec (
1247     p_api_version_number         IN   NUMBER,
1248     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1249     x_return_status              OUT NOCOPY  VARCHAR2,
1250     x_msg_count                  OUT NOCOPY  NUMBER,
1251     x_msg_data                   OUT NOCOPY  VARCHAR2,
1252     p_na_ddn_rule_rec               IN    na_ddn_rule_rec_type
1253     )
1254 IS
1255 BEGIN
1256       -- Initialize message list if p_init_msg_list is set to TRUE.
1257       IF FND_API.to_Boolean( p_init_msg_list )
1258       THEN
1259          FND_MSG_PUB.initialize;
1260       END IF;
1261 
1262 
1263 
1264       -- Initialize API return status to SUCCESS
1265       x_return_status := FND_API.G_RET_STS_SUCCESS;
1266 
1267       -- Hint: Validate data
1268       -- If data not valid
1269       -- THEN
1270       -- x_return_status := FND_API.G_RET_STS_ERROR;
1271 
1272       -- Debug Message
1273       debug_message('Private API: Validate_dm_model_rec');
1274       -- Standard call to get message count and if count is 1, get message info.
1275       FND_MSG_PUB.Count_And_Get
1276         (p_count          =>   x_msg_count,
1277          p_data           =>   x_msg_data
1278       );
1279 END Validate_na_ddn_rule_Rec;
1280 
1281 END OZF_Na_Ddn_Rule_PVT;