DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_PEC_RULES_PVT

Source


1 PACKAGE BODY PV_Pec_Rules_PVT as
2 /* $Header: pvxvecrb.pls 120.1 2005/09/06 04:36:22 appldev ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          PV_Pec_Rules_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- This Api is generated with Latest version of
14 -- Rosetta, where g_miss indicates NULL and
15 -- NULL indicates missing value. Rosetta Version 1.55
16 -- End of Comments
17 -- ===============================================================
18 
19 
20 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PV_Pec_Rules_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvxvecrb.pls';
22 
23 -- G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
24 -- G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
25 --
26 -- Foreward Procedure Declarations
27 --
28 
29 PROCEDURE Default_Pec_Rules_Items (
30    p_pec_rules_rec IN  pec_rules_rec_type ,
31    x_pec_rules_rec OUT NOCOPY pec_rules_rec_type
32 ) ;
33 
34 
35 
36 -- Hint: Primary key needs to be returned.
37 --   ==============================================================================
38 --    Start of Comments
39 --   ==============================================================================
40 --   API Name
41 --           Create_Pec_Rules
42 --   Type
43 --           Private
44 --   Pre-Req
45 --
46 --   Parameters
47 --
48 --   IN
49 --       p_api_version_number      IN   NUMBER     Required
50 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
51 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
52 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
53 --       p_pec_rules_rec            IN   pec_rules_rec_type  Required
54 --
55 --   OUT
56 --       x_return_status           OUT  VARCHAR2
57 --       x_msg_count               OUT  NUMBER
58 --       x_msg_data                OUT  VARCHAR2
59 --   Version : Current version 1.0
60 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
61 --         and basic operation, developer must manually add parameters and business logic as necessary.
62 --
63 --   History
64 --
65 --   NOTE
66 --
67 --   End of Comments
68 --   ==============================================================================
69 
70 PV_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
71 PV_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
72 PV_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
73 
74 PROCEDURE Create_Pec_Rules(
75     p_api_version_number         IN   NUMBER,
76     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
77     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
78     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
79 
80     x_return_status              OUT NOCOPY  VARCHAR2,
81     x_msg_count                  OUT NOCOPY  NUMBER,
82     x_msg_data                   OUT NOCOPY  VARCHAR2,
83 
84     p_pec_rules_rec              IN   pec_rules_rec_type  := g_miss_pec_rules_rec,
85     x_enrl_change_rule_id              OUT NOCOPY  NUMBER
86      )
87 
88  IS
89 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Pec_Rules';
90 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
91    l_return_status_full        VARCHAR2(1);
92    l_object_version_number     NUMBER := 1;
93    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
94    l_enrl_change_rule_id              NUMBER;
95    l_dummy                     NUMBER;
96    l_pec_rules_rec       pec_rules_rec_type  := p_pec_rules_rec;
97    l_change_direction_code VARCHAR2(30);
98    l_enrl_change_from_id_rev  NUMBER;
99    l_enrl_change_to_id_rev    NUMBER;
100    l_enrl_change_rule_id_rev              NUMBER;
101    l_value                     NUMBER;
102 
103    CURSOR c_id IS
104       SELECT pv_pg_enrl_change_rules_s.NEXTVAL
105       FROM dual;
106 
107    CURSOR c_id_exists (l_id IN NUMBER) IS
108       SELECT 1
109       FROM PV_PG_ENRL_CHANGE_RULES
110       WHERE enrl_change_rule_id = l_id;
111 
112   /*CURSOR c_program_id_exists (from_id IN NUMBER,to_id IN NUMBER) IS
113       SELECT 1
114       FROM PV_PG_ENRL_CHANGE_RULES
115       WHERE change_from_program_id = from_id
116       AND change_to_program_id = to_id
117       AND NVL(effective_to_date,sysdate) >= SYSDATE
118       AND change_direction_code = 'UPGRADE';
119    */
120    CURSOR c_program_id_exists (from_id IN NUMBER,to_id IN NUMBER,p_direction_code in VARCHAR2) IS
121       SELECT 1
122       FROM PV_PG_ENRL_CHANGE_RULES
123       WHERE change_from_program_id = from_id
124       AND change_to_program_id = to_id
125       AND NVL(effective_to_date,sysdate) >= SYSDATE
126       AND change_direction_code = p_direction_code;
127 BEGIN
128 
129 	IF (PV_DEBUG_HIGH_ON) THEN
130 
131 
132 
133 	PVX_UTILITY_PVT.debug_message('Inside Create Proc ');
134 
135 	END IF;
136 
137       -- Standard Start of API savepoint
138       SAVEPOINT create_pec_rules_pvt;
139 
140 	IF (PV_DEBUG_HIGH_ON) THEN
141 
142 
143 
144 	PVX_UTILITY_PVT.debug_message('Comparing compatibility ');
145 
146 	END IF;
147 
148 
149 
150 
151       -- Standard call to check for call compatibility.
152       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
153                                            p_api_version_number,
154                                            l_api_name,
155                                            G_PKG_NAME)
156       THEN
157           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
158       END IF;
159 
160 		IF (PV_DEBUG_HIGH_ON) THEN
161 
162 
163 
164 		PVX_UTILITY_PVT.debug_message('After Comparing compatibility ');
165 
166 		END IF;
167 
168       -- Initialize message list if p_init_msg_list is set to TRUE.
169       IF FND_API.to_Boolean( p_init_msg_list )
170       THEN
171          FND_MSG_PUB.initialize;
172       END IF;
173 
174 
175       -- Debug Message
176       IF (PV_DEBUG_HIGH_ON) THEN
177 
178       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' start');
179       END IF;
180 
181 
182       -- Initialize API return status to SUCCESS
183       x_return_status := FND_API.G_RET_STS_SUCCESS;
184 
185       l_value := NULL;
186 
187        /*
188        OPEN c_program_id_exists(l_pec_rules_rec.change_from_program_id,l_pec_rules_rec.change_to_program_id,l_pec_rules_rec.change_direction_code );
189         FETCH c_program_id_exists INTO l_value;
190         IF c_program_id_exists%FOUND THEN
191           CLOSE c_program_id_exists;
192           IF l_pec_rules_rec.change_direction_code='UPGRADE' THEN
193             FND_MESSAGE.set_name('PV', 'PV_DENY_CREATE_UPGRADE_RULE');
194             FND_MSG_PUB.add;
195 	    --x_return_status := FND_API.G_RET_STS_ERROR;
196 	  ELSIF l_pec_rules_rec.change_direction_code='PREREQUISITE' THEN
197 	    FND_MESSAGE.set_name('PV', 'PV_DENY_CREATE_PREREQ_RULE');
198             FND_MSG_PUB.add;
199 	  END IF;
200           RAISE FND_API.G_EXC_ERROR;
201         ELSE
202           CLOSE c_program_id_exists;
203         */
204 
205 
206         OPEN c_program_id_exists(l_pec_rules_rec.change_from_program_id,l_pec_rules_rec.change_to_program_id,'UPGRADE' );
207           FETCH c_program_id_exists INTO l_value;
208         IF c_program_id_exists%FOUND THEN
209           CLOSE c_program_id_exists;
210           IF l_pec_rules_rec.change_direction_code='UPGRADE' THEN
211              FND_MESSAGE.set_name('PV', 'PV_DENY_CREATE_UPGRADE_RULE');
212              FND_MSG_PUB.add;
213           ELSIF  l_pec_rules_rec.change_direction_code='PREREQUISITE' THEN
214              FND_MESSAGE.set_name('PV', 'PV_UPGRADE_EXISTS');
215              FND_MSG_PUB.add;
216           END IF;
217           RAISE FND_API.G_EXC_ERROR;
218         ELSE
219           CLOSE c_program_id_exists;
220         END If;
221 
222         OPEN c_program_id_exists(l_pec_rules_rec.change_from_program_id,l_pec_rules_rec.change_to_program_id,'PREREQUISITE' );
223           FETCH c_program_id_exists INTO l_value;
224         IF c_program_id_exists%FOUND THEN
225           CLOSE c_program_id_exists;
226           IF l_pec_rules_rec.change_direction_code='UPGRADE' THEN
227              FND_MESSAGE.set_name('PV', 'PV_PREREQ_EXISTS');
228              FND_MSG_PUB.add;
229           ELSIF  l_pec_rules_rec.change_direction_code='PREREQUISITE' THEN
230              FND_MESSAGE.set_name('PV', 'PV_DENY_CREATE_PREREQ_RULE');
231              FND_MSG_PUB.add;
232           END IF;
233           RAISE FND_API.G_EXC_ERROR;
234         ELSE
235           CLOSE c_program_id_exists;
236         END If;
237 
238 
239 
240      -- Local variable initialization
241 
242    IF p_pec_rules_rec.enrl_change_rule_id IS NULL OR p_pec_rules_rec.enrl_change_rule_id = FND_API.g_miss_num THEN
243       LOOP
244 	 l_dummy := NULL;
245 	 OPEN c_id;
246 	 FETCH c_id INTO l_pec_rules_rec.enrl_change_rule_id;
247 	 CLOSE c_id;
248 
249 	 OPEN c_id_exists(l_pec_rules_rec.enrl_change_rule_id);
250 	 FETCH c_id_exists INTO l_dummy;
251 	 CLOSE c_id_exists;
252 	 EXIT WHEN l_dummy IS NULL;
253       END LOOP;
254    ELSE
255 	 l_pec_rules_rec.enrl_change_rule_id := p_pec_rules_rec.enrl_change_rule_id;
256    END IF;
257 
258 
259       -- =========================================================================
260       -- Validate Environment
261       -- =========================================================================
262 
263       IF FND_GLOBAL.USER_ID IS NULL
264       THEN
265          PVX_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
266           RAISE FND_API.G_EXC_ERROR;
267       END IF;
268 
269      IF (PV_DEBUG_HIGH_ON) THEN
270 
271 
272 
273      PVX_UTILITY_PVT.debug_message('Before Validating ');
274 
275      END IF;
276 
277       IF ( p_validation_level >= FND_API.G_VALID_LEVEL_FULL)
278       THEN
279           -- Debug message
280           IF (PV_DEBUG_HIGH_ON) THEN
281 
282           PVX_UTILITY_PVT.debug_message('Private API: Validate_Pec_Rules');
283           END IF;
284 
285           l_pec_rules_rec.last_update_date := SYSDATE;
286 	  l_pec_rules_rec.last_updated_by := FND_GLOBAL.user_id;
287 	  l_pec_rules_rec.creation_date := SYSDATE;
288 	  l_pec_rules_rec.created_by := FND_GLOBAL.user_id;
289 	  l_pec_rules_rec.last_update_login := FND_GLOBAL.conc_login_id;
290 	  l_pec_rules_rec.object_version_number := l_object_version_number;
291 
292 	  l_pec_rules_rec.effective_from_date := SYSDATE;
293 
294 
295 	  -- Invoke validation procedures
296           Validate_pec_rules(
297             p_api_version_number     => 1.0,
298             p_init_msg_list    => FND_API.G_FALSE,
299             p_validation_level => p_validation_level,
300             p_validation_mode => JTF_PLSQL_API.g_create,
301             p_pec_rules_rec  =>  l_pec_rules_rec,
302             x_return_status    => x_return_status,
303             x_msg_count        => x_msg_count,
304             x_msg_data         => x_msg_data);
305       END IF;
306 
307       IF (PV_DEBUG_HIGH_ON) THEN
308 
309 
310 
311       PVX_UTILITY_PVT.debug_message('After Validating ');
312 
313       END IF;
314 
315 
316       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
317           RAISE FND_API.G_EXC_ERROR;
318       END IF;
319 
320 
321       -- Debug Message
322       IF (PV_DEBUG_HIGH_ON) THEN
323 
324       PVX_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
325       END IF;
326 
327 
328 
329 
330      -- Invoke table handler(Pv_Pec_Rules_Pkg.Insert_Row)
331       Pv_Pec_Rules_Pkg.Insert_Row(
332           px_enrl_change_rule_id  => l_pec_rules_rec.enrl_change_rule_id,
333           px_object_version_number  => l_object_version_number,
334           p_change_from_program_id  => l_pec_rules_rec.change_from_program_id,
335           p_change_to_program_id  => l_pec_rules_rec.change_to_program_id,
336           p_change_direction_code  => l_pec_rules_rec.change_direction_code,
337           p_effective_from_date  => l_pec_rules_rec.effective_from_date,
338           p_effective_to_date  => l_pec_rules_rec.effective_to_date,
339           p_active_flag  => l_pec_rules_rec.active_flag,
340           p_created_by  => FND_GLOBAL.USER_ID,
341           p_creation_date  => SYSDATE,
342           p_last_updated_by  => FND_GLOBAL.USER_ID,
343           p_last_update_date  => SYSDATE,
344           p_last_update_login  => FND_GLOBAL.conc_login_id
345 );
346 
347           x_enrl_change_rule_id := l_enrl_change_rule_id;
348 
349          IF l_pec_rules_rec.change_direction_code='UPGRADE' THEN
350          	  -- Invoke table handler(Pv_Pec_Rules_Pkg.Insert_Row) to insert a second row with reverse Direction Code
351          	  l_change_direction_code   := 'DOWNGRADE';
352          	  l_enrl_change_from_id_rev := l_pec_rules_rec.change_to_program_id;
353          	  l_enrl_change_to_id_rev   := l_pec_rules_rec.change_from_program_id;
354          	  OPEN c_id;
355          	     FETCH c_id INTO l_pec_rules_rec.enrl_change_rule_id;
356          	  CLOSE c_id;
357 
358          	  Pv_Pec_Rules_Pkg.Insert_Row(
359                    px_enrl_change_rule_id  => l_pec_rules_rec.enrl_change_rule_id ,
360                    px_object_version_number  => l_object_version_number,
361                    p_change_from_program_id  => l_enrl_change_from_id_rev,
362                    p_change_to_program_id  => l_enrl_change_to_id_rev,
363                    p_change_direction_code  => l_change_direction_code,
364                    p_effective_from_date  => l_pec_rules_rec.effective_from_date,
365                    p_effective_to_date  => l_pec_rules_rec.effective_to_date,
366                    p_active_flag  => l_pec_rules_rec.active_flag,
367                    p_created_by  => FND_GLOBAL.USER_ID,
368                    p_creation_date  => SYSDATE,
369                    p_last_updated_by  => FND_GLOBAL.USER_ID,
370                    p_last_update_date  => SYSDATE,
371                    p_last_update_login  => FND_GLOBAL.conc_login_id
372                 );
373 
374       	     x_enrl_change_rule_id := l_enrl_change_rule_id;
375           END IF;
376 
377       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
378           RAISE FND_API.G_EXC_ERROR;
379       END IF;
380 --
381 -- End of API body
382 --
383 
384       -- Standard check for p_commit
385       IF FND_API.to_Boolean( p_commit )
386       THEN
387          COMMIT WORK;
388       END IF;
389 
390 
391 
392       -- Debug Message
393       IF (PV_DEBUG_HIGH_ON) THEN
394 
395       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
396       END IF;
397 
398 
399       -- Standard call to get message count and if count is 1, get message info.
400       FND_MSG_PUB.Count_And_Get
401         (p_count          =>   x_msg_count,
402          p_data           =>   x_msg_data
403       );
404 
405 
406 EXCEPTION
407 
408    WHEN PVX_Utility_PVT.resource_locked THEN
409      x_return_status := FND_API.g_ret_sts_error;
410          PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
411 
412    WHEN FND_API.G_EXC_ERROR THEN
413      ROLLBACK TO CREATE_Pec_Rules_PVT;
414      x_return_status := FND_API.G_RET_STS_ERROR;
415      -- Standard call to get message count and if count=1, get the message
416      FND_MSG_PUB.Count_And_Get (
417             p_encoded => FND_API.G_FALSE,
418             p_count   => x_msg_count,
419             p_data    => x_msg_data
420      );
421 
422    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
423      ROLLBACK TO CREATE_Pec_Rules_PVT;
424      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
425      -- Standard call to get message count and if count=1, get the message
426      FND_MSG_PUB.Count_And_Get (
427             p_encoded => FND_API.G_FALSE,
428             p_count => x_msg_count,
429             p_data  => x_msg_data
430      );
431 
432    WHEN OTHERS THEN
433      ROLLBACK TO CREATE_Pec_Rules_PVT;
434      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
435      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
436      THEN
437         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
438      END IF;
439      -- Standard call to get message count and if count=1, get the message
440      FND_MSG_PUB.Count_And_Get (
441             p_encoded => FND_API.G_FALSE,
442             p_count => x_msg_count,
443             p_data  => x_msg_data
444      );
445 End Create_Pec_Rules;
446 
447 
448 --   ==============================================================================
449 --    Start of Comments
450 --   ==============================================================================
451 --   API Name
452 --           Update_Pec_Rules
453 --   Type
454 --           Private
455 --   Pre-Req
456 --
457 --   Parameters
458 --
459 --   IN
460 --       p_api_version_number      IN   NUMBER     Required
461 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
462 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
463 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
464 --       p_pec_rules_rec            IN   pec_rules_rec_type  Required
465 --
466 --   OUT
467 --       x_return_status           OUT  VARCHAR2
468 --       x_msg_count               OUT  NUMBER
469 --       x_msg_data                OUT  VARCHAR2
470 --   Version : Current version 1.0
471 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
472 --         and basic operation, developer must manually add parameters and business logic as necessary.
473 --
474 --   History
475 --
476 --   NOTE
477 --
478 --   End of Comments
479 --   ==============================================================================
480 
481 PROCEDURE Update_Pec_Rules(
482     p_api_version_number         IN   NUMBER,
483     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
484     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
485     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
486 
487     x_return_status              OUT NOCOPY  VARCHAR2,
488     x_msg_count                  OUT NOCOPY  NUMBER,
489     x_msg_data                   OUT NOCOPY  VARCHAR2,
490 
491     p_pec_rules_rec               IN    pec_rules_rec_type,
492     x_object_version_number      OUT NOCOPY  NUMBER
493     )
494 
495  IS
496 
497 
498 CURSOR c_get_pec_rules(enrl_change_rule_id NUMBER) IS
499     SELECT *
500     FROM  PV_PG_ENRL_CHANGE_RULES
501     WHERE  enrl_change_rule_id = p_pec_rules_rec.enrl_change_rule_id;
502     -- Hint: Developer need to provide Where clause
503 
504 CURSOR c_get_pec_rec_down(l_enrl_change_from_id_rev IN NUMBER, l_enrl_change_to_id_rev IN NUMBER ) IS
505     SELECT *
506     FROM  PV_PG_ENRL_CHANGE_RULES
507     WHERE  change_from_program_id = l_enrl_change_from_id_rev
508     AND    change_to_program_id   = l_enrl_change_to_id_rev
509     AND    effective_to_date is null
510     AND    change_direction_code='DOWNGRADE';
511 
512 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Pec_Rules';
513 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
514 -- Local Variables
515 l_object_version_number     NUMBER ;
516 l_enrl_change_rule_id    NUMBER;
517 
518 l_ref_pec_rules_rec  c_get_Pec_Rules%ROWTYPE ;
519 l_tar_pec_rules_rec  pec_rules_rec_type := P_pec_rules_rec;
520 l_ref_pec_rules_rec_down  c_get_pec_rec_down%ROWTYPE ;
521 l_rowid  ROWID;
522 from_id_rev  NUMBER;
523 to_id_rev    NUMBER;
524 
525 
526 
527  BEGIN
528       -- Standard Start of API savepoint
529       SAVEPOINT update_pec_rules_pvt;
530 
531       -- Standard call to check for call compatibility.
532       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
533                                            p_api_version_number,
534                                            l_api_name,
535                                            G_PKG_NAME)
536       THEN
537           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
538       END IF;
539 
540 
541       -- Initialize message list if p_init_msg_list is set to TRUE.
542       IF FND_API.to_Boolean( p_init_msg_list )
543       THEN
544          FND_MSG_PUB.initialize;
545       END IF;
546 
547 
548 
549       -- Debug Message
550       IF (PV_DEBUG_HIGH_ON) THEN
551 
552       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
553       END IF;
554 
555 
556 
557       -- Initialize API return status to SUCCESS
558       x_return_status := FND_API.G_RET_STS_SUCCESS;
559 
560       -- Debug Message
561       IF (PV_DEBUG_HIGH_ON) THEN
562 
563       PVX_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
564       END IF;
565 
566       OPEN c_get_Pec_Rules( l_tar_pec_rules_rec.enrl_change_rule_id);
567 
568       FETCH c_get_Pec_Rules INTO l_ref_pec_rules_rec  ;
569 
570        If ( c_get_Pec_Rules%NOTFOUND) THEN
571   PVX_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
572    p_token_name   => 'INFO',
573  p_token_value  => 'Pec_Rules') ;
574            RAISE FND_API.G_EXC_ERROR;
575        END IF;
576        -- Debug Message
577        IF (PV_DEBUG_HIGH_ON) THEN
578 
579        PVX_UTILITY_PVT.debug_message('Private API: - Close Cursor');
580        END IF;
581        CLOSE     c_get_Pec_Rules;
582 
583 --	l_tar_pec_rules_rec.object_version_number := l_object_version_number;
584 
585 
586       If (l_tar_pec_rules_rec.object_version_number is NULL or
587           l_tar_pec_rules_rec.object_version_number = FND_API.G_MISS_NUM ) Then
588   PVX_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
589    p_token_name   => 'COLUMN',
590  p_token_value  => 'Last_Update_Date') ;
591           raise FND_API.G_EXC_ERROR;
592       End if;
593       -- Check Whether record has been changed by someone else
594       If (l_tar_pec_rules_rec.object_version_number <> l_ref_pec_rules_rec.object_version_number) Then
595   PVX_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
596    p_token_name   => 'INFO',
597  p_token_value  => 'Pec_Rules') ;
598           raise FND_API.G_EXC_ERROR;
599       End if;
600 
601 
602       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
603       THEN
604           -- Debug message
605           IF (PV_DEBUG_HIGH_ON) THEN
606 
607           PVX_UTILITY_PVT.debug_message('Private API: Validate_Pec_Rules');
608           END IF;
609 
610           -- Invoke validation procedures
611           Validate_pec_rules(
612             p_api_version_number     => 1.0,
613             p_init_msg_list    => FND_API.G_FALSE,
614             p_validation_level => p_validation_level,
615             p_validation_mode => JTF_PLSQL_API.g_update,
616             p_pec_rules_rec  =>  p_pec_rules_rec,
617             x_return_status    => x_return_status,
618             x_msg_count        => x_msg_count,
619             x_msg_data         => x_msg_data);
620       END IF;
621 
622       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
623           RAISE FND_API.G_EXC_ERROR;
624       END IF;
625 
626 
627       -- Debug Message
628       --IF (PV_DEBUG_HIGH_ON) THENPVX_UTILITY_PVT.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling update table handler');END IF;
629 
630       l_object_version_number  := p_pec_rules_rec.object_version_number;
631 
632       -- Invoke table handler(Pv_Pec_Rules_Pkg.Update_Row)
633       Pv_Pec_Rules_Pkg.Update_Row(
634           p_enrl_change_rule_id  => p_pec_rules_rec.enrl_change_rule_id,
635           px_object_version_number  => l_object_version_number,
636           p_change_from_program_id  => p_pec_rules_rec.change_from_program_id,
637           p_change_to_program_id  => p_pec_rules_rec.change_to_program_id,
638           p_change_direction_code  => p_pec_rules_rec.change_direction_code,
639           p_effective_from_date  => p_pec_rules_rec.effective_from_date,
640           p_effective_to_date  => p_pec_rules_rec.effective_to_date,
641           p_active_flag  => p_pec_rules_rec.active_flag,
642           p_last_updated_by  => FND_GLOBAL.USER_ID,
643           p_last_update_date  => SYSDATE,
644           p_last_update_login  => FND_GLOBAL.conc_login_id );
645 
646 	 x_object_version_number  := l_object_version_number;
647 
648 
649 	 IF l_ref_pec_rules_rec.change_direction_code='UPGRADE' THEN
650    	   from_id_rev := p_pec_rules_rec.change_to_program_id;
651            to_id_rev   := p_pec_rules_rec.change_from_program_id ;
652 
653       --
654           for downg in c_get_pec_rec_down(from_id_rev, to_id_rev) LOOP
655              Pv_Pec_Rules_Pkg.Update_Row(
656                 p_enrl_change_rule_id  => downg.enrl_change_rule_id,
657                 px_object_version_number  => downg.object_version_number,
658                 p_change_from_program_id  => downg.change_from_program_id,
659                 p_change_to_program_id  => downg.change_to_program_id,
660                 p_change_direction_code  => downg.change_direction_code,
661                 p_effective_from_date  => downg.effective_from_date,
662                 p_effective_to_date  =>  downg.effective_to_date,
663                 p_active_flag  => p_pec_rules_rec.active_flag,
664                 p_last_updated_by  => FND_GLOBAL.USER_ID,
665                 p_last_update_date  => SYSDATE,
666                 p_last_update_login  => FND_GLOBAL.conc_login_id);
667 
668           END LOOP;
669       END IF;
670       -- End of API body.
671       --
672 
673       -- Standard check for p_commit
674       IF FND_API.to_Boolean( p_commit )
675       THEN
676          COMMIT WORK;
677       END IF;
678 
679 
680       -- Debug Message
681       IF (PV_DEBUG_HIGH_ON) THEN
682 
683       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
684       END IF;
685 
686 
687       -- Standard call to get message count and if count is 1, get message info.
688       FND_MSG_PUB.Count_And_Get
689         (p_count          =>   x_msg_count,
690          p_data           =>   x_msg_data
691       );
692 EXCEPTION
693 
694    WHEN PVX_Utility_PVT.resource_locked THEN
695      x_return_status := FND_API.g_ret_sts_error;
696          PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
697 
698    WHEN FND_API.G_EXC_ERROR THEN
699      ROLLBACK TO UPDATE_Pec_Rules_PVT;
700      x_return_status := FND_API.G_RET_STS_ERROR;
701      -- Standard call to get message count and if count=1, get the message
702      FND_MSG_PUB.Count_And_Get (
703             p_encoded => FND_API.G_FALSE,
704             p_count   => x_msg_count,
705             p_data    => x_msg_data
706      );
707 
708    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
709      ROLLBACK TO UPDATE_Pec_Rules_PVT;
710      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
711      -- Standard call to get message count and if count=1, get the message
712      FND_MSG_PUB.Count_And_Get (
713             p_encoded => FND_API.G_FALSE,
714             p_count => x_msg_count,
715             p_data  => x_msg_data
716      );
717 
718    WHEN OTHERS THEN
719      ROLLBACK TO UPDATE_Pec_Rules_PVT;
720      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
721      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
722      THEN
723         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
724      END IF;
725      -- Standard call to get message count and if count=1, get the message
726      FND_MSG_PUB.Count_And_Get (
727             p_encoded => FND_API.G_FALSE,
728             p_count => x_msg_count,
729             p_data  => x_msg_data
730      );
731 End Update_Pec_Rules;
732 
733 
734 --   ==============================================================================
735 --    Start of Comments
736 --   ==============================================================================
737 --   API Name
738 --           Delete_Pec_Rules
739 --   Type
740 --           Private
741 --   Pre-Req
742 --
743 --   Parameters
744 --
745 --   IN
746 --       p_api_version_number      IN   NUMBER     Required
747 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
748 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
749 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
750 --       p_enrl_change_rule_id                IN   NUMBER
751 --       p_object_version_number   IN   NUMBER     Optional  Default = NULL
752 --
753 --   OUT
754 --       x_return_status           OUT  VARCHAR2
755 --       x_msg_count               OUT  NUMBER
756 --       x_msg_data                OUT  VARCHAR2
757 --   Version : Current version 1.0
758 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
759 --         and basic operation, developer must manually add parameters and business logic as necessary.
760 --
761 --   History
762 --
763 --   NOTE
764 --
765 --   End of Comments
766 --   ==============================================================================
767 
768 PROCEDURE Delete_Pec_Rules(
769     p_api_version_number         IN   NUMBER,
770     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
771     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
772     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
773     x_return_status              OUT NOCOPY  VARCHAR2,
774     x_msg_count                  OUT NOCOPY  NUMBER,
775     x_msg_data                   OUT NOCOPY  VARCHAR2,
776     p_enrl_change_rule_id                   IN  NUMBER,
777     p_object_version_number      IN   NUMBER
778     )
779 
780  IS
781 
782 CURSOR c_get_pec_rec IS
783     SELECT *
784     FROM  PV_PG_ENRL_CHANGE_RULES
785     WHERE  enrl_change_rule_id = p_enrl_change_rule_id;
786 
787 CURSOR c_get_pec_rec_down(l_enrl_change_from_id_rev IN NUMBER, l_enrl_change_to_id_rev IN NUMBER ) IS
788     SELECT *
789     FROM  PV_PG_ENRL_CHANGE_RULES
790     WHERE  change_from_program_id = l_enrl_change_from_id_rev
791     AND    change_to_program_id   = l_enrl_change_to_id_rev
792     AND    effective_to_date is null
793     AND    change_direction_code='DOWNGRADE';
794 
795 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Pec_Rules';
796 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
797 l_object_version_number     NUMBER;
798 l_enrl_change_rule_id NUMBER;
799 l_ref_pec_rules_rec  c_get_pec_rec%ROWTYPE ;
800 l_ref_pec_rules_rec_down  c_get_pec_rec_down%ROWTYPE ;
801 from_id_rev  NUMBER;
802 to_id_rev    NUMBER;
803 
804  BEGIN
805       -- Standard Start of API savepoint
806       SAVEPOINT delete_pec_rules_pvt;
807 
808       -- Standard call to check for call compatibility.
809       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
810                                            p_api_version_number,
811                                            l_api_name,
812                                            G_PKG_NAME)
813       THEN
814           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
815       END IF;
816 
817 
818       -- Initialize message list if p_init_msg_list is set to TRUE.
819       IF FND_API.to_Boolean( p_init_msg_list )
820       THEN
821          FND_MSG_PUB.initialize;
822       END IF;
823 
824 
825 
826       -- Debug Message
827       IF (PV_DEBUG_HIGH_ON) THEN
828 
829       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
830       END IF;
831 
832 
833 
834       -- Initialize API return status to SUCCESS
835       x_return_status := FND_API.G_RET_STS_SUCCESS;
836 
837       --
838       -- Api body
839       --
840       -- Debug Message
841       IF (PV_DEBUG_HIGH_ON) THEN
842 
843       PVX_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
844       END IF;
845 
846       -- Invoke table handler(Pv_Pec_Rules_Pkg.Delete_Row)
847       --Pv_Pec_Rules_Pkg.Delete_Row(
848          -- p_enrl_change_rule_id  => p_enrl_change_rule_id,
849          -- p_object_version_number => p_object_version_number     );
850       --
851       -- End of API body
852       --
853       --Pv_Pec_Rules_Pkg.Delete_Row(
854           --p_enrl_change_rule_id  => l_enrl_change_rule_id,
855           --p_object_version_number => p_object_version_number     );
856 
857       -- Debug Message
858       IF (PV_DEBUG_HIGH_ON) THEN
859 
860       PVX_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
861       END IF;
862 
863       OPEN c_get_pec_rec;
864 
865       FETCH c_get_pec_rec INTO l_ref_pec_rules_rec  ;
866 
867        If ( c_get_pec_rec%NOTFOUND) THEN
868 	PVX_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
869 	p_token_name   => 'INFO',
870 	p_token_value  => 'Pec_Rules') ;
871            RAISE FND_API.G_EXC_ERROR;
872        END IF;
873        -- Debug Message
874        IF (PV_DEBUG_HIGH_ON) THEN
875 
876        PVX_UTILITY_PVT.debug_message('Private API: - Close Cursor');
877        END IF;
878        CLOSE     c_get_pec_rec;
879 
880          l_object_version_number := p_object_version_number;
881 
882 	-- Make the record end dated when it is deleted.
883 	-- Invoke table handler(Pv_Pec_Rules_Pkg.Update_Row)
884         Pv_Pec_Rules_Pkg.Update_Row(
885           p_enrl_change_rule_id  => p_enrl_change_rule_id,
886           px_object_version_number  => l_object_version_number,
887           p_change_from_program_id  => l_ref_pec_rules_rec.change_from_program_id,
888           p_change_to_program_id  => l_ref_pec_rules_rec.change_to_program_id,
889           p_change_direction_code  => l_ref_pec_rules_rec.change_direction_code,
890           p_effective_from_date  => l_ref_pec_rules_rec.effective_from_date,
891           p_effective_to_date  => SYSDATE,
892           p_active_flag  => l_ref_pec_rules_rec.active_flag,
893           p_last_updated_by  => FND_GLOBAL.USER_ID,
894           p_last_update_date  => SYSDATE,
895           p_last_update_login  => FND_GLOBAL.conc_login_id);
896 
897 
898 	--  x_object_version_number  => l_object_version_number);
899       --
900       -- End of API body.
901 
902       -- Make the corresponding DOWNGRADE record also end dated when it is deleted.
903 	-- Invoke table handler(Pv_Pec_Rules_Pkg.Update_Row)
904 	IF l_ref_pec_rules_rec.change_direction_code='UPGRADE' THEN
905    	   from_id_rev := l_ref_pec_rules_rec.change_to_program_id;
906            to_id_rev   := l_ref_pec_rules_rec.change_from_program_id ;
907          	-- Debug Message
908            IF (PV_DEBUG_HIGH_ON) THEN
909 
910            PVX_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select DOWNGRADE rule');
911            END IF;
912 
913    	OPEN c_get_pec_rec_down(from_id_rev, to_id_rev);
914 
915          FETCH c_get_pec_rec_down INTO l_ref_pec_rules_rec_down  ;
916 
917           If ( c_get_pec_rec_down%NOTFOUND) THEN
918    	--PVX_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
919    	--p_token_name   => 'INFO',
920    	--p_token_value  => 'Pec_Rules') ;
921    	FND_MESSAGE.set_name('PV', 'PV_MISC_ERROR_GROUP_CREATE');
922    	FND_MESSAGE.set_token('ID',to_char(from_id_rev));
923    	FND_MESSAGE.set_token('ID',to_char(to_id_rev));
924            FND_MSG_PUB.add;
925               RAISE FND_API.G_EXC_ERROR;
926           END IF;
927           -- Debug Message
928           IF (PV_DEBUG_HIGH_ON) THEN
929 
930           PVX_UTILITY_PVT.debug_message('Private API: - Close Cursor');
931           END IF;
932           CLOSE     c_get_pec_rec_down;
933 
934           for downg in c_get_pec_rec_down(from_id_rev, to_id_rev) LOOP
935              Pv_Pec_Rules_Pkg.Update_Row(
936                 p_enrl_change_rule_id  => downg.enrl_change_rule_id,
937                 px_object_version_number  => downg.object_version_number,
938                 p_change_from_program_id  => downg.change_from_program_id,
939                 p_change_to_program_id  => downg.change_to_program_id,
940                 p_change_direction_code  => downg.change_direction_code,
941                 p_effective_from_date  => downg.effective_from_date,
942                 p_effective_to_date  => SYSDATE,
943                 p_active_flag  => downg.active_flag,
944                 p_last_updated_by  => FND_GLOBAL.USER_ID,
945                 p_last_update_date  => SYSDATE,
946                 p_last_update_login  => FND_GLOBAL.conc_login_id);
947 
948           END LOOP;
949       END IF;
950 
951       -- Standard check for p_commit
952       IF FND_API.to_Boolean( p_commit )
953       THEN
954          COMMIT WORK;
955       END IF;
956 
957 
958       -- Debug Message
959       IF (PV_DEBUG_HIGH_ON) THEN
960 
961       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
962       END IF;
963 
964 
965       -- Standard call to get message count and if count is 1, get message info.
966       FND_MSG_PUB.Count_And_Get
967         (p_count          =>   x_msg_count,
968          p_data           =>   x_msg_data
969       );
970 EXCEPTION
971 
972    WHEN PVX_Utility_PVT.resource_locked THEN
973      x_return_status := FND_API.g_ret_sts_error;
974          PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
975 
976    WHEN FND_API.G_EXC_ERROR THEN
977      ROLLBACK TO DELETE_Pec_Rules_PVT;
978      x_return_status := FND_API.G_RET_STS_ERROR;
979      -- Standard call to get message count and if count=1, get the message
980      FND_MSG_PUB.Count_And_Get (
981             p_encoded => FND_API.G_FALSE,
982             p_count   => x_msg_count,
983             p_data    => x_msg_data
984      );
985 
986    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
987      ROLLBACK TO DELETE_Pec_Rules_PVT;
988      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
989      -- Standard call to get message count and if count=1, get the message
990      FND_MSG_PUB.Count_And_Get (
991             p_encoded => FND_API.G_FALSE,
992             p_count => x_msg_count,
993             p_data  => x_msg_data
994      );
995 
996    WHEN OTHERS THEN
997      ROLLBACK TO DELETE_Pec_Rules_PVT;
998      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
999      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1000      THEN
1001         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1002      END IF;
1003      -- Standard call to get message count and if count=1, get the message
1004      FND_MSG_PUB.Count_And_Get (
1005             p_encoded => FND_API.G_FALSE,
1006             p_count => x_msg_count,
1007             p_data  => x_msg_data
1008      );
1009 End Delete_Pec_Rules;
1010 
1011 
1012 
1013 -- Hint: Primary key needs to be returned.
1014 --   ==============================================================================
1015 --    Start of Comments
1016 --   ==============================================================================
1017 --   API Name
1018 --           Lock_Pec_Rules
1019 --   Type
1020 --           Private
1021 --   Pre-Req
1022 --
1023 --   Parameters
1024 --
1025 --   IN
1026 --       p_api_version_number      IN   NUMBER     Required
1027 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
1028 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
1029 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
1030 --       p_pec_rules_rec            IN   pec_rules_rec_type  Required
1031 --
1032 --   OUT
1033 --       x_return_status           OUT  VARCHAR2
1034 --       x_msg_count               OUT  NUMBER
1035 --       x_msg_data                OUT  VARCHAR2
1036 --   Version : Current version 1.0
1037 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
1038 --         and basic operation, developer must manually add parameters and business logic as necessary.
1039 --
1040 --   History
1041 --
1042 --   NOTE
1043 --
1044 --   End of Comments
1045 --   ==============================================================================
1046 
1047 PROCEDURE Lock_Pec_Rules(
1048     p_api_version_number         IN   NUMBER,
1049     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1050 
1051     x_return_status              OUT NOCOPY  VARCHAR2,
1052     x_msg_count                  OUT NOCOPY  NUMBER,
1053     x_msg_data                   OUT NOCOPY  VARCHAR2,
1054 
1055     p_enrl_change_rule_id                   IN  NUMBER,
1056     p_object_version             IN  NUMBER
1057     )
1058 
1059  IS
1060 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Pec_Rules';
1061 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1062 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1063 l_enrl_change_rule_id                  NUMBER;
1064 
1065 BEGIN
1066 
1067       -- Debug Message
1068       IF (PV_DEBUG_HIGH_ON) THEN
1069 
1070       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1071       END IF;
1072 
1073 
1074       -- Initialize message list if p_init_msg_list is set to TRUE.
1075       IF FND_API.to_Boolean( p_init_msg_list )
1076       THEN
1077          FND_MSG_PUB.initialize;
1078       END IF;
1079 
1080 
1081 
1082       -- Standard call to check for call compatibility.
1083       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1084                                            p_api_version_number,
1085                                            l_api_name,
1086                                            G_PKG_NAME)
1087       THEN
1088           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1089       END IF;
1090 
1091 
1092 
1093       -- Initialize API return status to SUCCESS
1094       x_return_status := FND_API.G_RET_STS_SUCCESS;
1095 
1096 
1097 ------------------------ lock -------------------------
1098 Pv_Pec_Rules_Pkg.Lock_Row(l_enrl_change_rule_id,p_object_version);
1099 
1100 
1101  -------------------- finish --------------------------
1102   FND_MSG_PUB.count_and_get(
1103     p_encoded => FND_API.g_false,
1104     p_count   => x_msg_count,
1105     p_data    => x_msg_data);
1106   IF (PV_DEBUG_HIGH_ON) THEN
1107 
1108   PVX_UTIlity_PVT.debug_message(l_full_name ||': end');
1109   END IF;
1110 EXCEPTION
1111 
1112    WHEN PVX_UTIlity_PVT.resource_locked THEN
1113      x_return_status := FND_API.g_ret_sts_error;
1114          PVX_UTIlity_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
1115 
1116    WHEN FND_API.G_EXC_ERROR THEN
1117      ROLLBACK TO LOCK_Pec_Rules_PVT;
1118      x_return_status := FND_API.G_RET_STS_ERROR;
1119      -- Standard call to get message count and if count=1, get the message
1120      FND_MSG_PUB.Count_And_Get (
1121             p_encoded => FND_API.G_FALSE,
1122             p_count   => x_msg_count,
1123             p_data    => x_msg_data
1124      );
1125 
1126    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1127      ROLLBACK TO LOCK_Pec_Rules_PVT;
1128      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1129      -- Standard call to get message count and if count=1, get the message
1130      FND_MSG_PUB.Count_And_Get (
1131             p_encoded => FND_API.G_FALSE,
1132             p_count => x_msg_count,
1133             p_data  => x_msg_data
1134      );
1135 
1136    WHEN OTHERS THEN
1137      ROLLBACK TO LOCK_Pec_Rules_PVT;
1138      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1139      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1140      THEN
1141         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1142      END IF;
1143      -- Standard call to get message count and if count=1, get the message
1144      FND_MSG_PUB.Count_And_Get (
1145             p_encoded => FND_API.G_FALSE,
1146             p_count => x_msg_count,
1147             p_data  => x_msg_data
1148      );
1149 End Lock_Pec_Rules;
1150 
1151 
1152 
1153 
1154 PROCEDURE check_Pec_Rules_Uk_Items(
1155     p_pec_rules_rec               IN   pec_rules_rec_type,
1156     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
1157     x_return_status              OUT NOCOPY VARCHAR2)
1158 IS
1159 l_valid_flag  VARCHAR2(1);
1160 
1161 BEGIN
1162 	IF (PV_DEBUG_HIGH_ON) THEN
1163 
1164 	PVX_UTILITY_PVT.debug_message('Inside check uk 1');
1165 	END IF;
1166 
1167       x_return_status := FND_API.g_ret_sts_success;
1168 
1169 
1170       IF p_validation_mode = JTF_PLSQL_API.g_create
1171       AND p_pec_rules_rec.enrl_change_rule_id IS NOT NULL
1172       THEN
1173          l_valid_flag := PVX_UTIlity_PVT.check_uniqueness(
1174          'PV_PG_ENRL_CHANGE_RULES',
1175          ' enrl_change_rule_id = ''' || p_pec_rules_rec.enrl_change_rule_id ||''''
1176          );
1177       END IF;
1178 
1179 	IF (PV_DEBUG_HIGH_ON) THEN
1180 
1181 
1182 
1183 	PVX_UTILITY_PVT.debug_message('Inside check uk 2' || l_valid_flag);
1184 
1185 	END IF;
1186 
1187       IF l_valid_flag = FND_API.g_false THEN
1188          --PVX_UTIlity_PVT.Error_Message(p_message_name => 'PV_enrl_change_rule_id_DUPLICATE');
1189          x_return_status := FND_API.g_ret_sts_error;
1190 --	x_return_status := FND_API.g_ret_sts_success;
1191       END IF;
1192 
1193       	IF (PV_DEBUG_HIGH_ON) THEN
1194 
1195 
1196 
1197       	PVX_UTILITY_PVT.debug_message('Inside check uk 3' || l_valid_flag);
1198 
1199       	END IF;
1200 
1201 
1202 END check_Pec_Rules_Uk_Items;
1203 
1204 
1205 
1206 PROCEDURE check_Pec_Rules_Req_Items(
1207     p_pec_rules_rec               IN  pec_rules_rec_type,
1208     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
1209     x_return_status	         OUT NOCOPY VARCHAR2
1210 )
1211 IS
1212 BEGIN
1213    x_return_status := FND_API.g_ret_sts_success;
1214 
1215    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
1216 
1217 
1218       IF p_pec_rules_rec.enrl_change_rule_id = FND_API.G_MISS_NUM OR p_pec_rules_rec.enrl_change_rule_id IS NULL THEN
1219                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'ENRL_CHANGE_RULE_ID' );
1220                x_return_status := FND_API.g_ret_sts_error;
1221       END IF;
1222 
1223 
1224       IF p_pec_rules_rec.object_version_number = FND_API.G_MISS_NUM OR p_pec_rules_rec.object_version_number IS NULL THEN
1225                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'OBJECT_VERSION_NUMBER' );
1226                x_return_status := FND_API.g_ret_sts_error;
1227       END IF;
1228 
1229 
1230       IF p_pec_rules_rec.change_from_program_id = FND_API.G_MISS_NUM OR p_pec_rules_rec.change_from_program_id IS NULL THEN
1231                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_FROM_PROGRAM_ID' );
1232                x_return_status := FND_API.g_ret_sts_error;
1233       END IF;
1234 
1235 
1236       IF p_pec_rules_rec.change_to_program_id = FND_API.G_MISS_NUM OR p_pec_rules_rec.change_to_program_id IS NULL THEN
1237                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_TO_PROGRAM_ID' );
1238                x_return_status := FND_API.g_ret_sts_error;
1239       END IF;
1240 
1241 
1242       IF p_pec_rules_rec.change_direction_code = FND_API.g_miss_char OR p_pec_rules_rec.change_direction_code IS NULL THEN
1243                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_DIRECTION_CODE' );
1244                x_return_status := FND_API.g_ret_sts_error;
1245       END IF;
1246 
1247 
1248       IF p_pec_rules_rec.effective_from_date = FND_API.G_MISS_DATE OR p_pec_rules_rec.effective_from_date IS NULL THEN
1249                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'EFFECTIVE_FROM_DATE' );
1250                x_return_status := FND_API.g_ret_sts_error;
1251       END IF;
1252 
1253 
1254       IF p_pec_rules_rec.active_flag = FND_API.g_miss_char OR p_pec_rules_rec.active_flag IS NULL THEN
1255                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'ACTIVE_FLAG' );
1256                x_return_status := FND_API.g_ret_sts_error;
1257       END IF;
1258 
1259 
1260    ELSE
1261 
1262 
1263       IF p_pec_rules_rec.enrl_change_rule_id = FND_API.G_MISS_NUM THEN
1264                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'ENRL_CHANGE_RULE_ID' );
1265                x_return_status := FND_API.g_ret_sts_error;
1266       END IF;
1267 
1268 
1269       IF p_pec_rules_rec.object_version_number = FND_API.G_MISS_NUM THEN
1270                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'OBJECT_VERSION_NUMBER' );
1271                x_return_status := FND_API.g_ret_sts_error;
1272       END IF;
1273 
1274 
1275       IF p_pec_rules_rec.change_from_program_id = FND_API.G_MISS_NUM THEN
1276                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_FROM_PROGRAM_ID' );
1277                x_return_status := FND_API.g_ret_sts_error;
1278       END IF;
1279 
1280 
1281       IF p_pec_rules_rec.change_to_program_id = FND_API.G_MISS_NUM THEN
1282                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_TO_PROGRAM_ID' );
1283                x_return_status := FND_API.g_ret_sts_error;
1284       END IF;
1285 
1286 
1287       IF p_pec_rules_rec.change_direction_code = FND_API.g_miss_char THEN
1288                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'CHANGE_DIRECTION_CODE' );
1289                x_return_status := FND_API.g_ret_sts_error;
1290       END IF;
1291 
1292 
1293       IF p_pec_rules_rec.effective_from_date = FND_API.G_MISS_DATE THEN
1294                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'EFFECTIVE_FROM_DATE' );
1295                x_return_status := FND_API.g_ret_sts_error;
1296       END IF;
1297 
1298 
1299       IF p_pec_rules_rec.active_flag = FND_API.g_miss_char THEN
1300                PVX_UTIlity_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD', 'ACTIVE_FLAG' );
1301                x_return_status := FND_API.g_ret_sts_error;
1302       END IF;
1303    END IF;
1304 
1305 END check_Pec_Rules_Req_Items;
1306 
1307 
1308 
1309 PROCEDURE check_Pec_Rules_Fk_Items(
1310     p_pec_rules_rec IN pec_rules_rec_type,
1311     x_return_status OUT NOCOPY VARCHAR2
1312 )
1313 IS
1314 BEGIN
1315    x_return_status := FND_API.g_ret_sts_success;
1316 
1317    -- Enter custom code here
1318 
1319 END check_Pec_Rules_Fk_Items;
1320 
1321 
1322 
1323 PROCEDURE check_Pec_Rules_Lookup_Items(
1324     p_pec_rules_rec IN pec_rules_rec_type,
1325     x_return_status OUT NOCOPY VARCHAR2
1326 )
1327 IS
1328 BEGIN
1329    x_return_status := FND_API.g_ret_sts_success;
1330 
1331    -- Enter custom code here
1332 
1333 END check_Pec_Rules_Lookup_Items;
1334 
1335 
1336 
1337 PROCEDURE Check_Pec_Rules_Items (
1338     P_pec_rules_rec     IN    pec_rules_rec_type,
1339     p_validation_mode  IN    VARCHAR2,
1340     x_return_status    OUT NOCOPY   VARCHAR2
1341     )
1342 IS
1343    l_return_status   VARCHAR2(1);
1344 BEGIN
1345 
1346 	IF (PV_DEBUG_HIGH_ON) THEN
1347 
1348 
1349 
1350 	PVX_UTILITY_PVT.debug_message('Start  ' );
1351 
1352 	END IF;
1353 
1354     l_return_status := FND_API.g_ret_sts_success;
1355    -- Check Items Uniqueness API calls
1356 
1357    check_Pec_rules_Uk_Items(
1358       p_pec_rules_rec => p_pec_rules_rec,
1359       p_validation_mode => p_validation_mode,
1360       x_return_status => x_return_status);
1361    IF x_return_status <> FND_API.g_ret_sts_success THEN
1362       l_return_status := FND_API.g_ret_sts_error;
1363    END IF;
1364 
1365    -- Check Items Required/NOT NULL API calls
1366 IF (PV_DEBUG_HIGH_ON) THEN
1367 
1368 PVX_UTILITY_PVT.debug_message('Middle 1  ' );
1369 END IF;
1370 
1371    check_pec_rules_req_items(
1372       p_pec_rules_rec => p_pec_rules_rec,
1373       p_validation_mode => p_validation_mode,
1374       x_return_status => x_return_status);
1375    IF x_return_status <> FND_API.g_ret_sts_success THEN
1376       l_return_status := FND_API.g_ret_sts_error;
1377    END IF;
1378    -- Check Items Foreign Keys API calls
1379 
1380 IF (PV_DEBUG_HIGH_ON) THEN
1381 
1382 
1383 
1384 PVX_UTILITY_PVT.debug_message('Middle 2  ' );
1385 
1386 END IF;
1387 
1388    check_pec_rules_FK_items(
1389       p_pec_rules_rec => p_pec_rules_rec,
1390       x_return_status => x_return_status);
1391    IF x_return_status <> FND_API.g_ret_sts_success THEN
1392       l_return_status := FND_API.g_ret_sts_error;
1393    END IF;
1394    -- Check Items Lookups
1395 
1396    IF (PV_DEBUG_HIGH_ON) THEN
1397 
1398 
1399 
1400    PVX_UTILITY_PVT.debug_message('Middle 3  ' );
1401 
1402    END IF;
1403 
1404    check_pec_rules_Lookup_items(
1405       p_pec_rules_rec => p_pec_rules_rec,
1406       x_return_status => x_return_status);
1407    IF x_return_status <> FND_API.g_ret_sts_success THEN
1408       l_return_status := FND_API.g_ret_sts_error;
1409    END IF;
1410 
1411    x_return_status := l_return_status;
1412 
1413    IF (PV_DEBUG_HIGH_ON) THEN
1414 
1415 
1416 
1417    PVX_UTILITY_PVT.debug_message('Error status is  ' || x_return_status);
1418 
1419    END IF;
1420 
1421 END Check_pec_rules_Items;
1422 
1423 
1424 
1425 
1426 
1427 PROCEDURE Complete_Pec_Rules_Rec (
1428    p_pec_rules_rec IN pec_rules_rec_type,
1429    x_complete_rec OUT NOCOPY pec_rules_rec_type)
1430 IS
1431    l_return_status  VARCHAR2(1);
1432 
1433    CURSOR c_complete IS
1434       SELECT *
1435       FROM pv_pg_enrl_change_rules
1436       WHERE enrl_change_rule_id = p_pec_rules_rec.enrl_change_rule_id;
1437    l_pec_rules_rec c_complete%ROWTYPE;
1438 BEGIN
1439    x_complete_rec := p_pec_rules_rec;
1440 
1441 
1442    OPEN c_complete;
1443    FETCH c_complete INTO l_pec_rules_rec;
1444    CLOSE c_complete;
1445 
1446    -- enrl_change_rule_id
1447    IF p_pec_rules_rec.enrl_change_rule_id IS NULL THEN
1448       x_complete_rec.enrl_change_rule_id := l_pec_rules_rec.enrl_change_rule_id;
1449    END IF;
1450 
1451    -- object_version_number
1452    IF p_pec_rules_rec.object_version_number IS NULL THEN
1453       x_complete_rec.object_version_number := l_pec_rules_rec.object_version_number;
1454    END IF;
1455 
1456    -- change_from_program_id
1457    IF p_pec_rules_rec.change_from_program_id IS NULL THEN
1458       x_complete_rec.change_from_program_id := l_pec_rules_rec.change_from_program_id;
1459    END IF;
1460 
1461    -- change_to_program_id
1462    IF p_pec_rules_rec.change_to_program_id IS NULL THEN
1463       x_complete_rec.change_to_program_id := l_pec_rules_rec.change_to_program_id;
1464    END IF;
1465 
1466    -- change_direction_code
1467    IF p_pec_rules_rec.change_direction_code IS NULL THEN
1468       x_complete_rec.change_direction_code := l_pec_rules_rec.change_direction_code;
1469    END IF;
1470 
1471    -- effective_from_date
1472    IF p_pec_rules_rec.effective_from_date IS NULL THEN
1473       x_complete_rec.effective_from_date := l_pec_rules_rec.effective_from_date;
1474    END IF;
1475 
1476    -- effective_to_date
1477    IF p_pec_rules_rec.effective_to_date IS NULL THEN
1478       x_complete_rec.effective_to_date := l_pec_rules_rec.effective_to_date;
1479    END IF;
1480 
1481    -- active_flag
1482    IF p_pec_rules_rec.active_flag IS NULL THEN
1483       x_complete_rec.active_flag := l_pec_rules_rec.active_flag;
1484    END IF;
1485 
1486    -- created_by
1487    IF p_pec_rules_rec.created_by IS NULL THEN
1488       x_complete_rec.created_by := l_pec_rules_rec.created_by;
1489    END IF;
1490 
1491    -- creation_date
1492    IF p_pec_rules_rec.creation_date IS NULL THEN
1493       x_complete_rec.creation_date := l_pec_rules_rec.creation_date;
1494    END IF;
1495 
1496    -- last_updated_by
1497    IF p_pec_rules_rec.last_updated_by IS NULL THEN
1498       x_complete_rec.last_updated_by := l_pec_rules_rec.last_updated_by;
1499    END IF;
1500 
1501    -- last_update_date
1502    IF p_pec_rules_rec.last_update_date IS NULL THEN
1503       x_complete_rec.last_update_date := l_pec_rules_rec.last_update_date;
1504    END IF;
1505 
1506    -- last_update_login
1507    IF p_pec_rules_rec.last_update_login IS NULL THEN
1508       x_complete_rec.last_update_login := l_pec_rules_rec.last_update_login;
1509    END IF;
1510    -- Note: Developers need to modify the procedure
1511    -- to handle any business specific requirements.
1512 END Complete_Pec_Rules_Rec;
1513 
1514 
1515 
1516 
1517 PROCEDURE Default_Pec_Rules_Items ( p_pec_rules_rec IN pec_rules_rec_type ,
1518                                 x_pec_rules_rec OUT NOCOPY pec_rules_rec_type )
1519 IS
1520    l_pec_rules_rec pec_rules_rec_type := p_pec_rules_rec;
1521 BEGIN
1522    -- Developers should put their code to default the record type
1523    -- e.g. IF p_campaign_rec.status_code IS NULL
1524    --      OR p_campaign_rec.status_code = FND_API.G_MISS_CHAR THEN
1525    --         l_campaign_rec.status_code := 'NEW' ;
1526    --      END IF ;
1527    --
1528    -- NULL ;
1529    x_pec_rules_rec := l_pec_rules_rec;
1530 END;
1531 
1532 
1533 
1534 
1535 PROCEDURE Validate_Pec_Rules(
1536     p_api_version_number         IN   NUMBER,
1537     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1538     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1539     p_pec_rules_rec               IN   pec_rules_rec_type,
1540     p_validation_mode            IN    VARCHAR2,
1541     x_return_status              OUT NOCOPY  VARCHAR2,
1542     x_msg_count                  OUT NOCOPY  NUMBER,
1543     x_msg_data                   OUT NOCOPY  VARCHAR2
1544     )
1545  IS
1546 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Pec_Rules';
1547 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1548 l_object_version_number     NUMBER;
1549 l_pec_rules_rec  pec_rules_rec_type;
1550 ld_pec_rules_rec  pec_rules_rec_type;
1551 
1552  BEGIN
1553 
1554       IF (PV_DEBUG_HIGH_ON) THEN
1555 
1556 
1557 
1558       PVX_UTILITY_PVT.debug_message('Inside Validate ');
1559 
1560       END IF;
1561 
1562       -- Standard Start of API savepoint
1563       SAVEPOINT validate_pec_rules_;
1564 
1565       -- Standard call to check for call compatibility.
1566       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1567                                            p_api_version_number,
1568                                            l_api_name,
1569                                            G_PKG_NAME)
1570       THEN
1571           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1572       END IF;
1573 
1574 
1575       -- Initialize message list if p_init_msg_list is set to TRUE.
1576       IF FND_API.to_Boolean( p_init_msg_list )
1577       THEN
1578          FND_MSG_PUB.initialize;
1579       END IF;
1580 
1581      IF (PV_DEBUG_HIGH_ON) THEN
1582 
1583 
1584 
1585      PVX_UTILITY_PVT.debug_message('Before JTF comparison ');
1586 
1587      END IF;
1588 
1589       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1590               Check_pec_rules_Items(
1591                  p_pec_rules_rec        => p_pec_rules_rec,
1592                  p_validation_mode   => p_validation_mode,
1593                  x_return_status     => x_return_status
1594               );
1595 
1596               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1597                   RAISE FND_API.G_EXC_ERROR;
1598               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1599                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1600               END IF;
1601       END IF;
1602 
1603       IF (PV_DEBUG_HIGH_ON) THEN
1604 
1605 
1606 
1607       PVX_UTILITY_PVT.debug_message('Before JTF comparison : 1');
1608 
1609       END IF;
1610 
1611       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
1612          Default_Pec_Rules_Items (p_pec_rules_rec => p_pec_rules_rec ,
1613                                 x_pec_rules_rec => ld_pec_rules_rec) ;
1614       END IF ;
1615 
1616 
1617 	IF (PV_DEBUG_HIGH_ON) THEN
1618 
1619 
1620 
1621 
1622 
1623 	PVX_UTILITY_PVT.debug_message('Before JTF comparison : 2');
1624 
1625 
1626 	END IF;
1627 
1628       Complete_pec_rules_Rec(
1629          p_pec_rules_rec        => ld_pec_rules_rec,
1630          x_complete_rec        => l_pec_rules_rec
1631       );
1632 
1633 	IF (PV_DEBUG_HIGH_ON) THEN
1634 
1635 
1636 
1637 	PVX_UTILITY_PVT.debug_message('Before JTF comparison : 3');
1638 
1639 	END IF;
1640 
1641       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1642          Validate_pec_rules_Rec(
1643            p_api_version_number     => 1.0,
1644            p_init_msg_list          => FND_API.G_FALSE,
1645            x_return_status          => x_return_status,
1646            x_msg_count              => x_msg_count,
1647            x_msg_data               => x_msg_data,
1648            p_pec_rules_rec           =>    l_pec_rules_rec);
1649 
1650               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1651                  RAISE FND_API.G_EXC_ERROR;
1652               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1653                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1654               END IF;
1655       END IF;
1656 
1657 	IF (PV_DEBUG_HIGH_ON) THEN
1658 
1659 
1660 
1661 	PVX_UTILITY_PVT.debug_message('Before JTF comparison : 4');
1662 
1663 	END IF;
1664 
1665 	IF (PV_DEBUG_HIGH_ON) THEN
1666 
1667 
1668 
1669 	PVX_UTILITY_PVT.debug_message('After jtf comparison ');
1670 
1671 	END IF;
1672       -- Debug Message
1673       IF (PV_DEBUG_HIGH_ON) THEN
1674 
1675       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' start');
1676       END IF;
1677 
1678 
1679 
1680       -- Initialize API return status to SUCCESS
1681       x_return_status := FND_API.G_RET_STS_SUCCESS;
1682 
1683 
1684       -- Debug Message
1685       IF (PV_DEBUG_HIGH_ON) THEN
1686 
1687       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1688       END IF;
1689 
1690 
1691       -- Standard call to get message count and if count is 1, get message info.
1692       FND_MSG_PUB.Count_And_Get
1693         (p_count          =>   x_msg_count,
1694          p_data           =>   x_msg_data
1695       );
1696 EXCEPTION
1697 
1698    WHEN PVX_UTIlity_PVT.resource_locked THEN
1699      x_return_status := FND_API.g_ret_sts_error;
1700          PVX_UTIlity_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
1701 
1702    WHEN FND_API.G_EXC_ERROR THEN
1703      ROLLBACK TO VALIDATE_Pec_Rules_;
1704      x_return_status := FND_API.G_RET_STS_ERROR;
1705      -- Standard call to get message count and if count=1, get the message
1706      FND_MSG_PUB.Count_And_Get (
1707             p_encoded => FND_API.G_FALSE,
1708             p_count   => x_msg_count,
1709             p_data    => x_msg_data
1710      );
1711 
1712    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1713      ROLLBACK TO VALIDATE_Pec_Rules_;
1714      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1715      -- Standard call to get message count and if count=1, get the message
1716      FND_MSG_PUB.Count_And_Get (
1717             p_encoded => FND_API.G_FALSE,
1718             p_count => x_msg_count,
1719             p_data  => x_msg_data
1720      );
1721 
1722    WHEN OTHERS THEN
1723      ROLLBACK TO VALIDATE_Pec_Rules_;
1724      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1725      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1726      THEN
1727         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1728      END IF;
1729      -- Standard call to get message count and if count=1, get the message
1730      FND_MSG_PUB.Count_And_Get (
1731             p_encoded => FND_API.G_FALSE,
1732             p_count => x_msg_count,
1733             p_data  => x_msg_data
1734      );
1735 End Validate_Pec_Rules;
1736 
1737 
1738 PROCEDURE Validate_Pec_Rules_Rec (
1739     p_api_version_number         IN   NUMBER,
1740     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1741     x_return_status              OUT NOCOPY  VARCHAR2,
1742     x_msg_count                  OUT NOCOPY  NUMBER,
1743     x_msg_data                   OUT NOCOPY  VARCHAR2,
1744     p_pec_rules_rec               IN    pec_rules_rec_type
1745     )
1746 IS
1747 BEGIN
1748       -- Initialize message list if p_init_msg_list is set to TRUE.
1749       IF FND_API.to_Boolean( p_init_msg_list )
1750       THEN
1751          FND_MSG_PUB.initialize;
1752       END IF;
1753 
1754 
1755 
1756       -- Initialize API return status to SUCCESS
1757       x_return_status := FND_API.G_RET_STS_SUCCESS;
1758 
1759       -- Hint: Validate data
1760       -- If data not valid
1761       -- THEN
1762       -- x_return_status := FND_API.G_RET_STS_ERROR;
1763 
1764       -- Debug Message
1765       IF (PV_DEBUG_HIGH_ON) THEN
1766 
1767       PVX_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1768       END IF;
1769       -- Standard call to get message count and if count is 1, get message info.
1770       FND_MSG_PUB.Count_And_Get
1771         (p_count          =>   x_msg_count,
1772          p_data           =>   x_msg_data
1773       );
1774 END Validate_pec_rules_Rec;
1775 
1776 END PV_Pec_Rules_PVT;