DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_AS_ACCESS_VHUK

Source


1 package body PV_AS_ACCESS_VHUK as
2 /* $Header: pvxvacsb.pls 120.0 2005/05/27 15:39:07 appldev noship $ */
3 
4 
5 G_PKG_NAME    CONSTANT VARCHAR2(30):='PV_AS_ACCESS_VHUK';
6 G_FILE_NAME   CONSTANT VARCHAR2(12):='pvxvacsb.pls';
7 
8 
9 procedure Validate_Salesteam (
10                 p_api_version_number  IN  NUMBER,
11                 p_init_msg_list       IN  VARCHAR2 := FND_API.G_FALSE,
12                 p_commit              IN  VARCHAR2 := FND_API.G_FALSE,
13                 p_validation_level    IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
14                 p_access_id           IN  NUMBER,
15                 p_lead_id             IN  NUMBER,
16                 p_salesforce_id       IN  NUMBER,
17                 p_mode	 	      IN  VARCHAR2,     -- The mode can be CREATE, UPDATE, DELETE
18                 x_return_status       OUT NOCOPY  VARCHAR2,
19                 x_msg_count           OUT NOCOPY  NUMBER,
20                 x_msg_data            OUT NOCOPY  VARCHAR2) is
21 
22 
23     l_api_name            CONSTANT  VARCHAR2(30) := 'Validate_Salesteam';
24     l_api_version_number  CONSTANT  NUMBER       := 2.0;
25 
26     l_lead_id                       NUMBER := p_lead_id; --p_sales_team_rec.salesforce_id;
27     l_salesforce_id                 NUMBER := p_salesforce_id; --p_sales_team_rec.salesforce_id;
28 
29 
30     l_party_id                      NUMBER;
31     l_relationship_type             VARCHAR2(300);
32     l_prm_keep_flag                 VARCHAR2(10);
33 
34     -- Required by getWorkflowID
35     l_entity		VARCHAR2(200)  := 'OPPORTUNITY';
36     l_itemType      VARCHAR2(300);
37     l_itemKey       VARCHAR2(300);
38     l_routing_status      varchar2(300);
39     l_wf_status		VARCHAR2(200);
40 
41 
42 
43 -- new query to support directional flag
44 CURSOR lc_get_rel_type(pc_salesforce_id number) is
45 SELECT
46   PTORG.relationship_code
47 FROM
48   hz_relationships CONTACT,
49   hz_relationships PTORG,
50   pv_partner_profiles PVPP,
51   jtf_rs_resource_extns EXTN
52 WHERE EXTN.resource_id =  pc_salesforce_id
53 AND   EXTN.source_id = CONTACT.party_id
54 AND   EXTN.category  = 'PARTY'
55 AND   CONTACT.subject_table_name = 'HZ_PARTIES'
56 AND   CONTACT.object_table_name  = 'HZ_PARTIES'
57 AND   CONTACT.RELATIONSHIP_TYPE  = 'EMPLOYMENT'
58 AND   CONTACT.RELATIONSHIP_CODE  = 'EMPLOYEE_OF'
59 AND   CONTACT.directional_flag   = 'F'
60 AND   CONTACT.STATUS       =  'A'
61 AND   CONTACT.start_date <= SYSDATE
62 AND   nvl(CONTACT.end_date, SYSDATE) >= SYSDATE
63 AND   PTORG.subject_id   =  CONTACT.object_id
64 AND   PTORG.subject_table_name = 'HZ_PARTIES'
65 AND   PTORG.object_table_name = 'HZ_PARTIES'
66 AND   PTORG.RELATIONSHIP_TYPE = 'PARTNER'
67 AND   PTORG.STATUS       =  'A'
68 AND   PTORG.start_date <= SYSDATE
69 AND   nvl(PTORG.end_date, SYSDATE) >= SYSDATE
70 AND   PVPP.partner_party_id = PTORG.object_id
71 AND   PVPP.partner_id = PTORG.party_id
72 AND   PVPP.SALES_PARTNER_FLAG   = 'Y'
73 AND   PVPP.status = 'A'
74 ORDER BY PTORG.relationship_code desc;
75 
76 
77 CURSOR lc_get_prm_flag(pc_access_id number) is
78     SELECT  prm_keep_flag
79     FROM    as_accesses_all
80     WHERE   access_id = pc_access_id;
81 
82 l_get_upd_del_check_perm                 VARCHAR2(1) := 'N';
83 
84 CURSOR lc_get_upd_del_check_perm(pc_lead_id number, pc_access_id number) is
85 
86 SELECT
87 1 from as_accesses_all acc ,  hz_relationships hzpp , hz_parties ptorg,
88  fnd_user fndu, jtf_rs_resource_extns jtfre,
89  hz_parties ptorg1 ,hz_relationships hzpp1
90  WHERE
91  acc.partner_cont_party_id = hzpp.party_id and
92  hzpp.object_id = ptorg.party_id and
93  ptorg.party_type = 'ORGANIZATION' and
94  --acc.salesforce_id = pc_sales_force_id and
95  acc.access_id = pc_access_id and
96   fndu.user_id = fnd_global.user_id and
97  jtfre.user_id = fndu.user_id  and
98  jtfre.source_id = hzpp1.party_id and
99  hzpp1.object_id = ptorg1.party_id and
100  ptorg1.party_type = 'ORGANIZATION' and
101  acc.lead_id = pc_lead_id and
102  ptorg1.party_id=ptorg.party_id
103  ;
104 
105  CURSOR lc_is_partner_user is
106 
107  SELECT    'PARTNER_OF'
108    FROM
109       hz_relationships CONTACT,
110       pv_partner_profiles PVPP,
111       jtf_rs_resource_extns EXTN,
112       fnd_user fndu
113    WHERE fndu.user_id = fnd_global.user_id
114    AND EXTN.user_id = fndu.user_id
115    AND CONTACT.party_id = EXTN.source_id
116    AND   CONTACT.subject_table_name = 'HZ_PARTIES'
117    AND   CONTACT.object_table_name  = 'HZ_PARTIES'
118    AND   CONTACT.RELATIONSHIP_TYPE  = 'EMPLOYMENT'
119    AND   CONTACT.RELATIONSHIP_CODE  = 'EMPLOYEE_OF'
120    AND   CONTACT.directional_flag   = 'F'
121    AND   CONTACT.STATUS       =  'A'
122    AND   CONTACT.start_date <= SYSDATE
123    AND   nvl(CONTACT.end_date, SYSDATE) >= SYSDATE
124    AND   PVPP.partner_party_id   =  CONTACT.object_id
125    ;
126 
127 l_is_partner_user                 VARCHAR2(1) := 'N';
128 
129 BEGIN
130 --FND_MSG_PUB.G_MSG_LEVEL_THRESHOLD := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
131 
132    -- Standard call to check for call compatibility.
133    IF NOT FND_API.Compatible_API_Call(l_api_version_number,
134                                       p_api_version_number,
135                                       l_api_name,
136                                       G_PKG_NAME)
137    THEN
138       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
139    END IF;
140 
141    -- Initialize message list if p_init_msg_list is set to TRUE.
142    IF FND_API.to_Boolean( p_init_msg_list ) THEN
143       fnd_msg_pub.initialize;
144    END IF;
145 
146    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
147       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
148       fnd_message.Set_Token('TEXT', 'In ' || l_api_name || ' , access > ' || p_access_id || ',  lead_id > ' || p_lead_id || ',  salesforce > ' || l_salesforce_id || ', api version >  ' || p_api_version_number);
149       fnd_msg_pub.Add;
150    END IF;
151 
152     --  Initialize API return status to success
153     x_return_status := FND_API.G_RET_STS_SUCCESS;
154 
155    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
156       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
157       fnd_message.Set_Token('TEXT', 'before pv_assignment_pvt.GetWorkflowID');
158       fnd_msg_pub.Add;
159    END IF;
160 
161    -- if its a customer, lead_id will be null
162    if p_lead_id is null then
163     return;
164    end if;
165 
166    -- call getWorkflowId to check the Workflow status
167    pv_assign_util_pvt.GetWorkflowID (p_api_version_number  => 1.0,
168                                     p_init_msg_list       => FND_API.G_FALSE,
169                                     p_commit              => FND_API.G_FALSE,
170                                     p_validation_level    => p_validation_level,
171                                     p_lead_id             => l_lead_id,
172                                     p_entity              => l_entity,
173                                     x_itemType            => l_itemType,
174                                     x_itemKey             => l_itemKey,
175                                     x_routing_status      => l_routing_status,
176                                     x_wf_status           => l_wf_status,
177                                     x_return_status       => x_return_status,
178                                     x_msg_count           => x_msg_count,
179                                     x_msg_data            => x_msg_data);
180 
181     IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
182       RAISE FND_API.G_EXC_ERROR;
183     END IF;
184 
185    -- Debug Message
186    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
187       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
188       fnd_message.Set_Token('TEXT', 'After pv_assignment_pvt.GetWorkflowID : wf status  : ' || l_wf_status);
189       fnd_msg_pub.Add;
190    END IF;
191 
192    OPEN    lc_get_rel_type (pc_salesforce_id => l_salesforce_id);
193             FETCH   lc_get_rel_type
194             INTO    l_relationship_type;
195             CLOSE   lc_get_rel_type;
196 
197     IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
198        fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
199        fnd_message.Set_Token('TEXT', 'Relationship Type : ' || l_relationship_type);
200        fnd_msg_pub.Add;
201     END IF;
202 
203     -- wf_status could be OPEN and routing_status ACTIVE in case of Joint
204     IF l_wf_status = g_wf_status_open and l_routing_status <> 'ACTIVE' THEN
205 
206         IF p_mode = 'CREATE' then
207 
208            /* OPEN    lc_get_rel_type (pc_salesforce_id => l_salesforce_id);
209             FETCH   lc_get_rel_type
210             INTO    l_relationship_type;
211             CLOSE   lc_get_rel_type;
212 
213             IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
214                fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
215                fnd_message.Set_Token('TEXT', 'Relationship Type : ' || l_relationship_type);
216                fnd_msg_pub.Add;
217             END IF;
218 	   */
219             IF (l_relationship_type IS NULL) THEN
220                IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
221                   fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
222                   fnd_message.Set_Token('TEXT', 'Resource id: ' || l_salesforce_id || ' is not a partner user. Returning');
223                   fnd_msg_pub.Add;
224                END IF;
225                return;
226             ELSIF l_relationship_type = 'PARTNER_OF'  THEN
227                 fnd_message.SET_NAME('PV', 'PV_ADDSLSTEAM_NOT_ALLOWED'); -- Change message 1 ********************
228                 fnd_msg_pub.ADD;
229                 RAISE FND_API.G_EXC_ERROR;
230             END IF;
231 
232         ELSIF p_mode = 'DELETE' or p_mode = 'UPDATE' then
233 
234             IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
235                fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
236                fnd_message.Set_Token('TEXT', 'In Delete / Update block ');
237                fnd_msg_pub.Add;
238             END IF;
239 
240             OPEN    lc_get_prm_flag(pc_access_id => p_access_id);
241             FETCH   lc_get_prm_flag
242             INTO    l_prm_keep_flag;
243             CLOSE   lc_get_prm_flag;
244 
245             IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
246                fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
247                fnd_message.Set_Token('TEXT', 'After PRM KEEP FLAG check : ' || l_prm_keep_flag);
248                fnd_msg_pub.Add;
249             END IF;
250 
251             IF (l_prm_keep_flag  = 'Y') THEN
252                 fnd_message.SET_NAME('PV', 'PV_UPDSLSTEAM_NOT_ALLOWED'); -- Change message 1 ********************
253                 fnd_msg_pub.ADD;
254                 RAISE FND_API.G_EXC_ERROR;
255             END IF;
256 
257             IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
258                fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
259                fnd_message.Set_Token('TEXT', 'Success ..... ');
260                fnd_msg_pub.Add;
261             END IF;
262 
263         END IF;
264 
265     ELSE
266         -- Workflow is not running. return success mesage and continue with the calling API
267         NULL;
268 
269     END IF; -- Workflow open or not
270 
271 
272 
273     --Checking if user can update or delete sales team.
274     --Logged in user can update or delete sales team if \user belongs to the
275     --organisation of the person he tries to update or delete.
276     --for bug# 3439126
277     -- this condition only applies for partner user
278 
279     IF p_mode = 'DELETE' or p_mode = 'UPDATE' then
280 
281 	    for x in lc_get_upd_del_check_perm(pc_lead_id =>p_lead_id,pc_access_id => p_access_id)
282 	    loop
283 		l_get_upd_del_check_perm := 'Y' ;
284 	    end loop;
285 
286 	    --to find if logged in user is partner user
287 
288 	    for x in lc_is_partner_user
289 	    loop
290 		l_is_partner_user := 'Y' ;
291 	    end loop;
292 
293 
294 
295 	    if(l_get_upd_del_check_perm = 'N' and
296 	       l_is_partner_user = 'Y' )
297 
298 	    then
299 
300 		IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
301 			FND_MESSAGE.Set_Name('PV', 'PV_USER_NOT_UPD_DEL_EXT_SLSTM');
302 			--FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',p_attribute_rec.name );
303 			--FND_MESSAGE.Set_Token('RESPONSIBILITY_LIST',substr(l_being_used_list,2) );
304 			FND_MSG_PUB.Add;
305 		END IF;
306 		RAISE FND_API.G_EXC_ERROR;
307 	    end if;
308     end if;
309 
310 
311 
312      -- Standard call to get message count and if count is 1, get message info.
313     fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
314                                p_count     =>  x_msg_count,
315                                p_data      =>  x_msg_data);
316 
317 EXCEPTION
318 
319   WHEN NO_DATA_FOUND THEN
320       IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
321          fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
322          fnd_message.Set_Token('TEXT', 'NO Data found ..');
323          fnd_msg_pub.Add;
324       END IF;
325 
326    WHEN FND_API.G_EXC_ERROR THEN
327 
328       x_return_status := FND_API.G_RET_STS_ERROR ;
329       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
330                                  p_count     =>  x_msg_count,
331                                  p_data      =>  x_msg_data);
332 
333    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
334 
335       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
336       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
337                                  p_count     =>  x_msg_count,
338                                  p_data      =>  x_msg_data);
339 
340    WHEN OTHERS THEN
341 
342       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
343       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
344       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
345                                  p_count     =>  x_msg_count,
346                                  p_data      =>  x_msg_data);
347 
348 END Validate_Salesteam;
349 
350 
351 procedure Create_Salesteam_Pre (
352                 p_api_version_number  IN  NUMBER,
353                 p_init_msg_list       IN  VARCHAR2 := FND_API.G_FALSE,
354                 p_commit              IN  VARCHAR2 := FND_API.G_FALSE,
355                 p_validation_level    IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
356                 p_lead_id             IN  NUMBER,
357                 p_salesforce_id       IN  NUMBER,
358                 x_return_status       OUT NOCOPY  VARCHAR2,
359                 x_msg_count           OUT NOCOPY  NUMBER,
360                 x_msg_data            OUT NOCOPY  VARCHAR2) is
361 
362     l_api_name            CONSTANT  VARCHAR2(30) := 'Create_Salesteam_Pre';
363     l_api_version_number  CONSTANT  NUMBER       := 2.0;
364 
365     l_mode      CONSTANT  VARCHAR2(20) := 'CREATE';
366 
367 BEGIN
368 --FND_MSG_PUB.G_MSG_LEVEL_THRESHOLD := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
369    -- Standard call to check for call compatibility.
370    IF NOT FND_API.Compatible_API_Call(l_api_version_number,
371                                       p_api_version_number,
372                                       l_api_name,
373                                       G_PKG_NAME)
374    THEN
375       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
376    END IF;
377 
378    -- Initialize message list if p_init_msg_list is set to TRUE.
379    IF FND_API.to_Boolean( p_init_msg_list ) THEN
380       fnd_msg_pub.initialize;
381    END IF;
382 
383    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
384       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
385       fnd_message.Set_Token('TEXT', 'In ' || l_api_name || ' ' || p_lead_id || ' ' || p_salesforce_id || ' ' || p_api_version_number);
386       fnd_msg_pub.Add;
387    END IF;
388 
389     --  Initialize API return status to success
390     x_return_status := FND_API.G_RET_STS_SUCCESS;
391 
392    -- if its a customer, lead_id will be null
393    if p_lead_id is null then
394     return;
395    end if;
396 
397     Validate_Salesteam (
398                 p_api_version_number  => l_api_version_number,
399                 p_init_msg_list       => p_init_msg_list,
400                 p_commit              => p_commit,
401                 p_validation_level    => p_validation_level,
402                 p_access_id           => null,
403                 p_lead_id             => p_lead_id,
404                 p_salesforce_id       => p_salesforce_id,
405                 p_mode	    	     => l_mode,
406                 x_return_status       => x_return_status,
407                 x_msg_count           => x_msg_count,
408                 x_msg_data            => x_msg_data);
409 
410     IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
411       RAISE FND_API.G_EXC_ERROR;
412     END IF;
413 
414     -- Standard call to get message count and if count is 1, get message info.
415     fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
416                                p_count     =>  x_msg_count,
417                                p_data      =>  x_msg_data);
418 
419 EXCEPTION
420 
421    WHEN FND_API.G_EXC_ERROR THEN
422 
423       x_return_status := FND_API.G_RET_STS_ERROR ;
424       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
425                                  p_count     =>  x_msg_count,
426                                  p_data      =>  x_msg_data);
427 
428    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
429 
430       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
431       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
432                                  p_count     =>  x_msg_count,
433                                  p_data      =>  x_msg_data);
434 
435    WHEN OTHERS THEN
436 
437       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
438       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
439       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
440                                  p_count     =>  x_msg_count,
441                                  p_data      =>  x_msg_data);
442 
443 END Create_Salesteam_Pre;
444 
445 procedure Update_Salesteam_Pre (
446                 p_api_version_number  IN  NUMBER,
447                 p_init_msg_list       IN  VARCHAR2 := FND_API.G_FALSE,
448                 p_commit              IN  VARCHAR2 := FND_API.G_FALSE,
449                 p_validation_level    IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
450                 p_access_id           IN  NUMBER,
451                 p_lead_id             IN  NUMBER,
452                 x_return_status       OUT NOCOPY  VARCHAR2,
453                 x_msg_count           OUT NOCOPY  NUMBER,
454                 x_msg_data            OUT NOCOPY  VARCHAR2) is
455 
456     l_api_name            CONSTANT  VARCHAR2(30) := 'Update_Salesteam_Pre';
457     l_api_version_number  CONSTANT  NUMBER       := 2.0;
458 
459     l_mode      CONSTANT  VARCHAR2(20) := 'UPDATE';
460 BEGIN
461    -- Standard call to check for call compatibility.
462    IF NOT FND_API.Compatible_API_Call(l_api_version_number,
463                                       p_api_version_number,
464                                       l_api_name,
465                                       G_PKG_NAME)
466    THEN
467       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
468    END IF;
469 
470    -- Initialize message list if p_init_msg_list is set to TRUE.
471    IF FND_API.to_Boolean( p_init_msg_list ) THEN
472       fnd_msg_pub.initialize;
473    END IF;
474 
475    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
476       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
477       fnd_message.Set_Token('TEXT', 'In ' || l_api_name || ' , access id :  ' || p_access_id );
478       fnd_msg_pub.Add;
479    END IF;
480 
481     --  Initialize API return status to success
482     x_return_status := FND_API.G_RET_STS_SUCCESS;
483 
484      Validate_Salesteam (
485                 p_api_version_number  => l_api_version_number,
486                 p_init_msg_list       => p_init_msg_list,
487                 p_commit              => p_commit,
488                 p_validation_level    => p_validation_level,
489                 p_access_id           => p_access_id,
490                 p_lead_id             => p_lead_id,
491                 p_salesforce_id       => null,
492                 p_mode	 	      => l_mode,
493                 x_return_status       => x_return_status,
494                 x_msg_count           => x_msg_count,
495                 x_msg_data            => x_msg_data);
496 
497 
498     IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
499       RAISE FND_API.G_EXC_ERROR;
500     END IF;
501 
502     -- Standard call to get message count and if count is 1, get message info.
503     fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
504                                p_count     =>  x_msg_count,
505                                p_data      =>  x_msg_data);
506 
507 EXCEPTION
508 
509    WHEN FND_API.G_EXC_ERROR THEN
510 
511       x_return_status := FND_API.G_RET_STS_ERROR ;
512       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
513                                  p_count     =>  x_msg_count,
514                                  p_data      =>  x_msg_data);
515 
516    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
517 
518       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
519       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
520                                  p_count     =>  x_msg_count,
521                                  p_data      =>  x_msg_data);
522 
523    WHEN OTHERS THEN
524 
525       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
526       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
527       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
528                                  p_count     =>  x_msg_count,
529                                  p_data      =>  x_msg_data);
530 
531 END Update_Salesteam_Pre;
532 
533 procedure Delete_Salesteam_Pre (
534                 p_api_version_number  IN  NUMBER,
535                 p_init_msg_list       IN  VARCHAR2 := FND_API.G_FALSE,
536                 p_commit              IN  VARCHAR2 := FND_API.G_FALSE,
537                 p_validation_level    IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
538                 p_access_id           IN  NUMBER,
539                 p_lead_id             IN  NUMBER,
540                 x_return_status       OUT NOCOPY  VARCHAR2,
541                 x_msg_count           OUT NOCOPY  NUMBER,
542                 x_msg_data            OUT NOCOPY  VARCHAR2) is
543 
544     l_api_name            CONSTANT  VARCHAR2(30) := 'Delete_Salesteam_Pre';
545     l_api_version_number  CONSTANT  NUMBER       := 2.0;
546     l_mode      CONSTANT  VARCHAR2(20) := 'DELETE';
547 
548 BEGIN
549 
550  --FND_MSG_PUB.g_msg_level_threshold := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
551 
552    -- Standard call to check for call compatibility.
553    IF NOT FND_API.Compatible_API_Call(l_api_version_number,
554                                       p_api_version_number,
555                                       l_api_name,
556                                       G_PKG_NAME)
557    THEN
558       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
559    END IF;
560 
561    -- Initialize message list if p_init_msg_list is set to TRUE.
562    IF FND_API.to_Boolean( p_init_msg_list ) THEN
563       fnd_msg_pub.initialize;
564    END IF;
565 
566 
567    IF fnd_msg_pub.Check_Msg_Level (fnd_msg_pub.G_MSG_LVL_DEBUG_LOW) THEN
568       fnd_message.Set_Name('PV', 'PV_DEBUG_MESSAGE');
569       fnd_message.Set_Token('TEXT', 'In ' || l_api_name || ' , access id  : ' || p_access_id );
570       fnd_msg_pub.Add;
571    END IF;
572 
573     --  Initialize API return status to success
574     x_return_status := FND_API.G_RET_STS_SUCCESS;
575 
576     Validate_Salesteam (
577                 p_api_version_number  => l_api_version_number,
578                 p_init_msg_list       => p_init_msg_list,
579                 p_commit              => p_commit,
580                 p_validation_level    => p_validation_level,
581                 p_access_id           => p_access_id,
582                 p_lead_id             => p_lead_id,
583                 p_salesforce_id       => null,
584                 p_mode	 	      => l_mode,
585                 x_return_status       => x_return_status,
586                 x_msg_count           => x_msg_count,
587                 x_msg_data            => x_msg_data);
588 
589     IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
590       RAISE FND_API.G_EXC_ERROR;
591     END IF;
592 
593     -- Standard call to get message count and if count is 1, get message info.
594     fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
595                                p_count     =>  x_msg_count,
596                                p_data      =>  x_msg_data);
597 
598 EXCEPTION
599 
600    WHEN FND_API.G_EXC_ERROR THEN
601 
602       x_return_status := FND_API.G_RET_STS_ERROR ;
603       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
604                                  p_count     =>  x_msg_count,
605                                  p_data      =>  x_msg_data);
606 
607    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
608 
609       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
610       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
611                                  p_count     =>  x_msg_count,
612                                  p_data      =>  x_msg_data);
613 
614    WHEN OTHERS THEN
615 
616       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
617       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
618       fnd_msg_pub.Count_And_Get( p_encoded   =>  FND_API.G_TRUE,
619                                  p_count     =>  x_msg_count,
620                                  p_data      =>  x_msg_data);
621 
622 END Delete_Salesteam_Pre;
623 
624 END PV_AS_ACCESS_VHUK;