DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_PARTNER_ACCESSES_PVT

Source


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