DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_TAP_ACCESS_TERRS_PVT

Source


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