DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_NA_RULE_LINE_PVT

Source


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