DBA Data[Home] [Help]

PACKAGE BODY: APPS.AS_OPP_COMPETITOR_PVT

Source


1 PACKAGE BODY AS_OPP_COMPETITOR_PVT as
2 /* $Header: asxvcmpb.pls 120.1 2005/06/14 02:59:58 appldev  $ */
3 -- Start of Comments
4 -- Package name     : AS_OPP_COMPETITOR_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AS_OPP_COMPETITOR_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asxvop5b.pls';
13 
14 -- Hint: Primary key needs to be returned.
15 PROCEDURE Create_competitors(
16      P_Api_Version_Number      IN   NUMBER,
17 	P_Init_Msg_List           IN   VARCHAR2    := FND_API.G_FALSE,
18 	P_Commit                  IN   VARCHAR2    := FND_API.G_FALSE,
19 	p_validation_level        IN   NUMBER      := FND_API.G_VALID_LEVEL_FULL,
20 	P_Admin_Group_Id          IN   NUMBER,
21 	P_profile_tbl             IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
22 	P_Competitor_Tbl          IN   AS_OPPORTUNITY_PUB.Competitor_Tbl_Type :=
23 						 AS_OPPORTUNITY_PUB.G_MISS_Competitor_Tbl,
24 	X_competitor_out_tbl      OUT NOCOPY  AS_OPPORTUNITY_PUB.competitor_out_tbl_type,
25 	P_Check_Access_Flag       IN   VARCHAR2    := FND_API.G_FALSE,
26 	P_Admin_Flag              IN   VARCHAR2    := FND_API.G_FALSE,
27 	P_Identity_Salesforce_Id  IN   NUMBER      := NULL,
28 	P_Partner_Cont_Party_id   IN   NUMBER      := FND_API.G_MISS_NUM,
29 	X_Return_Status           OUT NOCOPY  VARCHAR2,
30 	X_Msg_Count               OUT NOCOPY  NUMBER,
31 	X_Msg_Data                OUT NOCOPY  VARCHAR2
32 )
33 
34  IS
35     L_Api_Name                  CONSTANT VARCHAR2(30) := 'Create_Competitors';
36     L_Api_Version_Number        CONSTANT NUMBER   := 2.0;
37     L_Return_Status_Full        VARCHAR2(1);
38     L_Identity_Sales_Member_Rec AS_SALES_MEMBER_PUB.Sales_Member_Rec_Type;
39     L_Competitor_Rec            AS_OPPORTUNITY_PUB.Competitor_Rec_Type;
40     L_LEAD_COMPETITOR_ID        NUMBER;
41     L_LEAD_COMPETITOR           VARCHAR2(225);
42     L_Line_Count                CONSTANT NUMBER := P_Competitor_Tbl.count;
43     L_Access_Profile_Rec        AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
44     L_Item_Property_Rec         AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE;
45     L_Access_Flag               VARCHAR2(1);
46     l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
47     l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Create_competitors';
48 
49  BEGIN
50       -- Standard Start of API savepoint
51       SAVEPOINT CREATE_COMPETITORS_PVT;
52 
53       -- Standard call to check for call compatibility.
54       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
55                          	             p_api_version_number,
56                                            l_api_name,
57                                            G_PKG_NAME)
58       THEN
59           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
60       END IF;
61 
62 
63       -- Initialize message list if p_init_msg_list is set to TRUE.
64       IF FND_API.to_Boolean( p_init_msg_list )
65       THEN
66           FND_MSG_PUB.initialize;
67       END IF;
68 
69 
70       -- Debug Message
71       IF l_debug THEN
72       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
73                                    'Private API: ' || l_api_name || ' start');
74       END IF;
75 
76 
77 
78       -- Initialize API return status to SUCCESS
79       x_return_status := FND_API.G_RET_STS_SUCCESS;
80 
81       --
82       -- API body
83       --
84 
85 /*
86       -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
87       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
88       -- invoked for customization purpose
89       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
90       THEN
91           AS_CALLOUT_PKG.Create_competitors_BC(
92                   p_api_version_number   =>  2.0,
93                   p_init_msg_list        =>  FND_API.G_FALSE,
94                   p_commit               =>  FND_API.G_FALSE,
95                   p_validation_level     =>  p_validation_level,
96                   P_Competitor_Rec      =>  P_Competitor_Rec,
97           -- Hint: Add detail tables as parameter lists if it's master-detail
98           --       relationship.
99                   x_return_status        =>  x_return_status,
100                   x_msg_count            =>  x_msg_count,
101                   x_msg_data             =>  x_msg_data);
102       END IF;
103 */
104 
105 
106       -- ******************************************************************
107       -- Validate Environment
108       -- ******************************************************************
109       IF FND_GLOBAL.User_Id IS NULL
110       THEN
111           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
112           THEN
113               FND_MESSAGE.Set_Name(' + appShortName +',
114                                    'UT_CANNOT_GET_PROFILE_VALUE');
115               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
116               FND_MSG_PUB.ADD;
117           END IF;
118           RAISE FND_API.G_EXC_ERROR;
119       END IF;
120 
121       IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
122           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
123               p_api_version_number => 2.0
124              ,p_init_msg_list      => p_init_msg_list
125              ,p_salesforce_id => p_identity_salesforce_id
126              ,p_admin_group_id => p_admin_group_id
127              ,x_return_status => x_return_status
128              ,x_msg_count => x_msg_count
129              ,x_msg_data => x_msg_data
130              ,x_sales_member_rec => l_identity_sales_member_rec);
131 	 END IF;
132 
133       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
134 		RAISE FND_API.G_EXC_ERROR;
135       END IF;
136 
137       -- Call Get_Access_Profiles to get access_profile_rec
138       AS_OPPORTUNITY_PUB.Get_Access_Profiles(
139           p_profile_tbl         => p_profile_tbl,
140           x_access_profile_rec  => l_access_profile_rec);
141 
142 	 -- Access checking
143       IF ( p_check_access_flag = 'Y' )
144 	 THEN
145           AS_ACCESS_PUB.Has_updateOpportunityAccess(
146               p_api_version_number     => 2.0,
147               p_init_msg_list          => p_init_msg_list,
148               p_validation_level       => p_validation_level,
149               p_access_profile_rec     => l_access_profile_rec,
150               p_admin_flag             => p_admin_flag,
151               p_admin_group_id         => p_admin_group_id,
152               p_person_id              =>
153                                 l_identity_sales_member_rec.employee_person_id,
154               p_opportunity_id         => l_Competitor_rec.LEAD_ID,
155               p_check_access_flag      => 'Y',
156               p_identity_salesforce_id => p_identity_salesforce_id,
157               p_partner_cont_party_id  => NULL,
158               x_return_status          => x_return_status,
159               x_msg_count              => x_msg_count,
160               x_msg_data               => x_msg_data,
161               x_update_access_flag       => l_access_flag);
162       END IF;
163 
164 	 IF l_access_flag <> 'Y' THEN
165           AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
166           'API_NO_UPDATE_PRIVILEGE');
167       END IF;
168 
169       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
170           RAISE FND_API.G_EXC_ERROR;
171       END IF;
172 
173       FOR l_curr_row IN 1..l_line_count LOOP
174          X_competitor_out_tbl(l_curr_row).return_status :=
175                                                    FND_API.G_RET_STS_SUCCESS ;
176 
177          -- Progress Message
178          --
179          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
180          THEN
181              FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
182              FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_COMPETITOR', TRUE);
183              FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
184              FND_MSG_PUB.Add;
185          END IF;
186 
187          l_competitor_rec := P_Competitor_Tbl(l_curr_row);
188 
189          IF ( p_validation_level >= FND_API.G_VALID_LEVEL_FULL )
190          THEN
191             -- Debug message
192             IF l_debug THEN
193             AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
194                                          'Private API: Validate_competitor');
195 	    END IF;
196 
197 
198             -- Invoke validation procedures
199             Validate_competitor(
200                 P_Init_Msg_List    => FND_API.G_FALSE,
201                 P_Validation_Level => p_validation_level,
202                 P_Validation_Mode  => AS_UTILITY_PVT.G_CREATE,
203 			 P_Competitor_Rec   => l_Competitor_Rec,
204                 x_return_status    => x_return_status,
205                 x_msg_count        => x_msg_count,
206                 x_msg_data         => x_msg_data
207 			 );
208          END IF;
209 
210          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
211              RAISE FND_API.G_EXC_ERROR;
212          END IF;
213 
214          -- Debug Message
215          IF l_debug THEN
216          AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
217                                    'Private API: Calling create table handler');
218 
219          END IF;
220 
221          l_LEAD_COMPETITOR_ID := l_Competitor_rec.LEAD_COMPETITOR_ID;
222 
223          -- Invoke table handler(AS_LEAD_COMPETITORS_PKG.Insert_Row)
224          AS_LEAD_COMPETITORS_PKG.Insert_Row(
225              px_LEAD_COMPETITOR_ID  => l_LEAD_COMPETITOR_ID,
226              p_LAST_UPDATE_DATE  => SYSDATE,
227              p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
228              p_CREATION_DATE  => SYSDATE,
229              p_CREATED_BY  => FND_GLOBAL.USER_ID,
230              p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
231              p_REQUEST_ID  => l_Competitor_rec.REQUEST_ID,
232              p_PROGRAM_APPLICATION_ID =>l_Competitor_rec.PROGRAM_APPLICATION_ID,
233              p_PROGRAM_ID  => l_Competitor_rec.PROGRAM_ID,
234              p_PROGRAM_UPDATE_DATE  => l_Competitor_rec.PROGRAM_UPDATE_DATE,
235              p_LEAD_ID  => l_Competitor_rec.LEAD_ID,
236              p_COMPETITOR_CODE  => l_Competitor_rec.COMPETITOR_CODE,
237              p_COMPETITOR  => l_Competitor_rec.COMPETITOR,
238              p_PRODUCTS  => l_Competitor_rec.PRODUCTS,
239              p_COMMENTS  => l_Competitor_rec.COMMENTS,
240              p_ATTRIBUTE_CATEGORY  => l_Competitor_rec.ATTRIBUTE_CATEGORY,
241              p_ATTRIBUTE1  => l_Competitor_rec.ATTRIBUTE1,
242              p_ATTRIBUTE2  => l_Competitor_rec.ATTRIBUTE2,
243              p_ATTRIBUTE3  => l_Competitor_rec.ATTRIBUTE3,
244              p_ATTRIBUTE4  => l_Competitor_rec.ATTRIBUTE4,
245              p_ATTRIBUTE5  => l_Competitor_rec.ATTRIBUTE5,
246              p_ATTRIBUTE6  => l_Competitor_rec.ATTRIBUTE6,
247              p_ATTRIBUTE7  => l_Competitor_rec.ATTRIBUTE7,
248              p_ATTRIBUTE8  => l_Competitor_rec.ATTRIBUTE8,
249              p_ATTRIBUTE9  => l_Competitor_rec.ATTRIBUTE9,
250              p_ATTRIBUTE10  => l_Competitor_rec.ATTRIBUTE10,
251              p_ATTRIBUTE11  => l_Competitor_rec.ATTRIBUTE11,
252              p_ATTRIBUTE12  => l_Competitor_rec.ATTRIBUTE12,
253              p_ATTRIBUTE13  => l_Competitor_rec.ATTRIBUTE13,
254              p_ATTRIBUTE14      => l_Competitor_rec.ATTRIBUTE14,
255              p_ATTRIBUTE15      => l_Competitor_rec.ATTRIBUTE15,
256              p_WIN_LOSS_STATUS  => l_Competitor_rec.WIN_LOSS_STATUS,
257              p_COMPETITOR_RANK  => l_Competitor_rec.COMPETITOR_RANK,
258 	     p_RELATIONSHIP_PARTY_ID => l_Competitor_rec.RELATIONSHIP_PARTY_ID,
259              p_COMPETITOR_ID    => l_Competitor_rec.COMPETITOR_ID);
260 
261          X_competitor_out_tbl(l_curr_row).LEAD_COMPETITOR_ID :=
262                                                         l_LEAD_COMPETITOR_ID;
263          X_competitor_out_tbl(l_curr_row).return_status := x_return_status;
264 
265          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
266              RAISE FND_API.G_EXC_ERROR;
267          END IF;
268 
269       END LOOP;
270       --
271       -- End of API body
272       --
273 
274       -- Standard check for p_commit
275       IF FND_API.to_Boolean( p_commit )
276       THEN
277           COMMIT WORK;
278       END IF;
279 
280 
281       -- Debug Message
282       IF l_debug THEN
283       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
284                                    'Private API: ' || l_api_name || ' end');
285       END IF;
286 
287 
288 
289       -- Standard call to get message count and if count is 1, get message info.
290       FND_MSG_PUB.Count_And_Get
291       (  p_count          =>   x_msg_count,
292          p_data           =>   x_msg_data
293       );
294 
295 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
296 /*
297       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
298       -- invoked for customization purpose
299       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
300       THEN
301           AS_CALLOUT_PKG.Create_competitors_AC(
302                   p_api_version_number   =>  2.0,
303                   p_init_msg_list        =>  FND_API.G_FALSE,
304                   p_commit               =>  FND_API.G_FALSE,
305                   p_validation_level     =>  p_validation_level,
306                   P_Competitor_Rec      =>  P_Competitor_Rec,
307           -- Hint: Add detail tables as parameter lists if it's master-detail
308           --       relationship.
309                   x_return_status        =>  x_return_status,
310                   x_msg_count            =>  x_msg_count,
311                   x_msg_data             =>  x_msg_data);
312       END IF;
313 */
314       EXCEPTION
315           WHEN FND_API.G_EXC_ERROR THEN
316               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
317                    P_MODULE => l_module
318                   ,P_API_NAME => L_API_NAME
319                   ,P_PKG_NAME => G_PKG_NAME
320                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
321                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
322                   ,X_MSG_COUNT => X_MSG_COUNT
323                   ,X_MSG_DATA => X_MSG_DATA
324                   ,X_RETURN_STATUS => X_RETURN_STATUS);
325 
326           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
327               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
328                    P_MODULE => l_module
329                   ,P_API_NAME => L_API_NAME
330                   ,P_PKG_NAME => G_PKG_NAME
331                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
332                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
333                   ,X_MSG_COUNT => X_MSG_COUNT
334                   ,X_MSG_DATA => X_MSG_DATA
335                   ,X_RETURN_STATUS => X_RETURN_STATUS);
336 
337           WHEN OTHERS THEN
338               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
339                    P_MODULE => l_module
340                   ,P_API_NAME => L_API_NAME
341                   ,P_PKG_NAME => G_PKG_NAME
342                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
343                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
344                   ,X_MSG_COUNT => X_MSG_COUNT
345                   ,X_MSG_DATA => X_MSG_DATA
346                   ,X_RETURN_STATUS => X_RETURN_STATUS);
347 End Create_competitors;
348 
349 
350 PROCEDURE Update_competitors(
351 	P_Api_Version_Number      IN   NUMBER,
352 	P_Init_Msg_List           IN   VARCHAR2    := FND_API.G_FALSE,
353 	P_Commit                  IN   VARCHAR2    := FND_API.G_FALSE,
354 	p_validation_level        IN   NUMBER      := FND_API.G_VALID_LEVEL_FULL,
355 	P_Check_Access_Flag       IN   VARCHAR2    := FND_API.G_FALSE,
356 	P_Admin_Flag              IN   VARCHAR2    := FND_API.G_FALSE,
357 	P_Admin_Group_Id          IN   NUMBER,
361 	P_Competitor_Tbl          IN   AS_OPPORTUNITY_PUB.Competitor_Tbl_Type,
358 	P_Identity_Salesforce_Id  IN   NUMBER,
359 	P_profile_tbl             IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
360 	P_Partner_Cont_Party_id   IN   NUMBER      := FND_API.G_MISS_NUM,
362 	X_competitor_out_tbl      OUT NOCOPY  AS_OPPORTUNITY_PUB.competitor_out_tbl_type,
363 	X_Return_Status           OUT NOCOPY  VARCHAR2,
364 	X_Msg_Count               OUT NOCOPY  NUMBER,
365 	X_Msg_Data                OUT NOCOPY  VARCHAR2
366 )
367 
368  IS
369     Cursor C_Get_competitor(c_LEAD_COMPETITOR_ID Number) IS
370         Select LAST_UPDATE_DATE
371         From  AS_LEAD_COMPETITORS
372         WHERE LEAD_COMPETITOR_ID = c_LEAD_COMPETITOR_ID
373         For Update NOWAIT;
374 
375     L_Api_Name                  CONSTANT VARCHAR2(30) := 'Update_competitors';
376     L_Api_Version_Number        CONSTANT NUMBER   := 2.0;
377     L_Identity_Sales_Member_Rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
378     L_Ref_Competitor_Rec        AS_OPPORTUNITY_PUB.Competitor_Rec_Type;
379     L_Rowid                     ROWID;
380     L_Competitor_Rec            AS_OPPORTUNITY_PUB.Competitor_Rec_Type;
381     L_Line_Count                CONSTANT NUMBER := P_Competitor_Tbl.count;
382     L_Access_Profile_Rec        AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
383     L_Last_Update_Date          DATE;
384     L_Access_Flag               VARCHAR2(1);
385     l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
386     l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Update_competitors';
387 
388  BEGIN
389       -- Standard Start of API savepoint
390       SAVEPOINT UPDATE_COMPETITORS_PVT;
391 
392       -- Standard call to check for call compatibility.
393       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
394                          	             p_api_version_number,
395                                            l_api_name,
396                                            G_PKG_NAME)
397       THEN
398           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
399       END IF;
400 
401 
402       -- Initialize message list if p_init_msg_list is set to TRUE.
403       IF FND_API.to_Boolean( p_init_msg_list )
404       THEN
405           FND_MSG_PUB.initialize;
406       END IF;
407 
408 
409       -- Debug Message
410       IF l_debug THEN
411       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
412                                    'Private API: ' || l_api_name || ' start');
413       END IF;
414 
415 
416 
417       -- Initialize API return status to SUCCESS
418       x_return_status := FND_API.G_RET_STS_SUCCESS;
419 
420       --
421       -- Api body
422       --
423 /*
424       -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
425       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
426       -- invoked for customization purpose
427       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
428       THEN
429           AS_CALLOUT_PKG.Update_competitors_BU(
430                   p_api_version_number   =>  2.0,
431                   p_init_msg_list        =>  FND_API.G_FALSE,
432                   p_commit               =>  FND_API.G_FALSE,
433                   p_validation_level     =>  p_validation_level,
434                   p_identity_salesforce_id => p_identity_salesforce_id,
435                   P_Competitor_Rec      =>  P_Competitor_Rec,
436           -- Hint: Add detail tables as parameter lists if it's master-detail
437           --       relationship.
438                   x_return_status        =>  x_return_status,
439                   x_msg_count            =>  x_msg_count,
440                   x_msg_data             =>  x_msg_data);
441       END IF;
442 */
443 
444 
445 
446       IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL )
447 	 THEN
448           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
449               p_api_version_number => 2.0
450              ,p_init_msg_list      => p_init_msg_list
451              ,p_salesforce_id => p_identity_salesforce_id
452              ,p_admin_group_id => p_admin_group_id
453              ,x_return_status => x_return_status
454              ,x_msg_count => x_msg_count
455              ,x_msg_data => x_msg_data
456              ,x_sales_member_rec => l_identity_sales_member_rec);
457       END IF;
458 
459       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
460           RAISE FND_API.G_EXC_ERROR;
461       END IF;
462 
463       -- Call Get_Access_Profiles to get access_profile_rec
464       AS_OPPORTUNITY_PUB.Get_Access_Profiles(
465           p_profile_tbl         => p_profile_tbl,
466           x_access_profile_rec  => l_access_profile_rec);
467 
468 	 -- Access checking
469       IF ( p_check_access_flag = 'Y' )
470 	 THEN
471           AS_ACCESS_PUB.Has_updateOpportunityAccess(
472               p_api_version_number     => 2.0,
473               p_init_msg_list          => p_init_msg_list,
474               p_validation_level       => p_validation_level,
475               p_access_profile_rec     => l_access_profile_rec,
476               p_admin_flag             => p_admin_flag,
477               p_admin_group_id         => p_admin_group_id,
478               p_person_id              =>
479                                 l_identity_sales_member_rec.employee_person_id,
483               p_partner_cont_party_id  => NULL,
480               p_opportunity_id         => l_Competitor_rec.LEAD_ID,
481               p_check_access_flag      => 'Y',
482               p_identity_salesforce_id => p_identity_salesforce_id,
484               x_return_status          => x_return_status,
485               x_msg_count              => x_msg_count,
486               x_msg_data               => x_msg_data,
487               x_update_access_flag       => l_access_flag);
488       END IF;
489 
490 	 IF l_access_flag <> 'Y' THEN
491           AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
492           'API_NO_UPDATE_PRIVILEGE');
493       END IF;
494 
495       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
496           RAISE FND_API.G_EXC_ERROR;
497       END IF;
498 
499       FOR l_curr_row IN 1..l_line_count LOOP
500          X_competitor_out_tbl(l_curr_row).return_status :=
501                                                    FND_API.G_RET_STS_SUCCESS ;
502 
503          -- Progress Message
504          --
505          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
506          THEN
507              FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
508              FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_COMPETITOR', TRUE);
509              FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
510              FND_MSG_PUB.Add;
511          END IF;
512 
513          l_competitor_rec := P_Competitor_Tbl(l_curr_row);
514 
515          -- Debug Message
516          IF l_debug THEN
517          AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
518                                       'Private API: - Open Cursor to Select');
519 	 END IF;
520 
521 
522          Open C_Get_competitor( l_Competitor_rec.LEAD_COMPETITOR_ID);
523 
524          Fetch C_Get_competitor into l_last_update_date;
525 
526          If ( C_Get_competitor%NOTFOUND) Then
527            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
528            THEN
529                FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
530                FND_MESSAGE.Set_Token ('INFO', 'competitor', FALSE);
531                FND_MSG_PUB.Add;
532            END IF;
533            raise FND_API.G_EXC_ERROR;
534          END IF;
535          -- Debug Message
536          IF l_debug THEN
537          AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
538                                       'Private API: - Close Cursor');
539 	 END IF;
540 
541          Close     C_Get_competitor;
542 
543          If (l_Competitor_rec.last_update_date is NULL or
544              l_Competitor_rec.last_update_date = FND_API.G_MISS_Date ) Then
545              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
546              THEN
547                  FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
548                  FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
549                  FND_MSG_PUB.ADD;
550              END IF;
551              raise FND_API.G_EXC_ERROR;
552          End if;
553          -- Check Whether record has been changed by someone else
554          If (l_Competitor_rec.last_update_date <> l_last_update_date) Then
555              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
556              THEN
557                  FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
558                  FND_MESSAGE.Set_Token('INFO', 'competitor', FALSE);
559                  FND_MSG_PUB.ADD;
560              END IF;
561              raise FND_API.G_EXC_ERROR;
562          End if;
563 
564          IF ( p_validation_level >= FND_API.G_VALID_LEVEL_FULL )
565          THEN
566              -- Debug message
567              IF l_debug THEN
568              AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
569                                           'Private API: Validate_competitor');
570 	     END IF;
571 
572 
573              -- Invoke validation procedures
574              Validate_competitor(
575                  p_init_msg_list    => FND_API.G_FALSE,
576                  p_validation_level => p_validation_level,
577                  p_validation_mode  => AS_UTILITY_PVT.G_UPDATE,
578                  P_Competitor_Rec  =>  l_Competitor_Rec,
579                  x_return_status    => x_return_status,
580                  x_msg_count        => x_msg_count,
581                  x_msg_data         => x_msg_data);
582          END IF;
583 
584          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
585              RAISE FND_API.G_EXC_ERROR;
586          END IF;
587 
588          -- Debug Message
589          IF l_debug THEN
590          AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
591                                    'Private API: Calling update table handler');
592 	 END IF;
593 
594 
595          -- Invoke table handler(AS_LEAD_COMPETITORS_PKG.Update_Row)
596          AS_LEAD_COMPETITORS_PKG.Update_Row(
597              p_LEAD_COMPETITOR_ID  => l_Competitor_rec.LEAD_COMPETITOR_ID,
598              p_LAST_UPDATE_DATE  => SYSDATE,
599              p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
600              p_CREATION_DATE  => SYSDATE,
601              p_CREATED_BY  => FND_GLOBAL.USER_ID,
602              p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
606              p_PROGRAM_UPDATE_DATE  => l_Competitor_rec.PROGRAM_UPDATE_DATE,
603              p_REQUEST_ID  => l_Competitor_rec.REQUEST_ID,
604              p_PROGRAM_APPLICATION_ID =>l_Competitor_rec.PROGRAM_APPLICATION_ID,
605              p_PROGRAM_ID  => l_Competitor_rec.PROGRAM_ID,
607              p_LEAD_ID  => l_Competitor_rec.LEAD_ID,
608              p_COMPETITOR_CODE  => l_Competitor_rec.COMPETITOR_CODE,
609              p_COMPETITOR  => l_Competitor_rec.COMPETITOR,
610              p_PRODUCTS  => l_Competitor_rec.PRODUCTS,
611              p_COMMENTS  => l_Competitor_rec.COMMENTS,
612              p_ATTRIBUTE_CATEGORY  => l_Competitor_rec.ATTRIBUTE_CATEGORY,
613              p_ATTRIBUTE1  => l_Competitor_rec.ATTRIBUTE1,
614              p_ATTRIBUTE2  => l_Competitor_rec.ATTRIBUTE2,
615              p_ATTRIBUTE3  => l_Competitor_rec.ATTRIBUTE3,
616              p_ATTRIBUTE4  => l_Competitor_rec.ATTRIBUTE4,
617              p_ATTRIBUTE5  => l_Competitor_rec.ATTRIBUTE5,
618              p_ATTRIBUTE6  => l_Competitor_rec.ATTRIBUTE6,
619              p_ATTRIBUTE7  => l_Competitor_rec.ATTRIBUTE7,
620              p_ATTRIBUTE8  => l_Competitor_rec.ATTRIBUTE8,
621              p_ATTRIBUTE9  => l_Competitor_rec.ATTRIBUTE9,
622              p_ATTRIBUTE10  => l_Competitor_rec.ATTRIBUTE10,
623              p_ATTRIBUTE11  => l_Competitor_rec.ATTRIBUTE11,
624              p_ATTRIBUTE12  => l_Competitor_rec.ATTRIBUTE12,
625              p_ATTRIBUTE13  => l_Competitor_rec.ATTRIBUTE13,
626              p_ATTRIBUTE14  => l_Competitor_rec.ATTRIBUTE14,
627              p_ATTRIBUTE15      => l_Competitor_rec.ATTRIBUTE15,
628              p_WIN_LOSS_STATUS  => l_Competitor_rec.WIN_LOSS_STATUS,
629              p_COMPETITOR_RANK  => l_Competitor_rec.COMPETITOR_RANK,
630 	     p_RELATIONSHIP_PARTY_ID => l_Competitor_rec.RELATIONSHIP_PARTY_ID,
631              p_COMPETITOR_ID    => l_Competitor_rec.COMPETITOR_ID);
632 
633          X_competitor_out_tbl(l_curr_row).LEAD_COMPETITOR_ID :=
634                                        l_Competitor_rec.LEAD_COMPETITOR_ID;
635          X_competitor_out_tbl(l_curr_row).return_status := x_return_status;
636 
637          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
638              RAISE FND_API.G_EXC_ERROR;
639          END IF;
640 
641       END LOOP;
642 
643       --
644       -- End of API body.
645       --
646 
647       -- Standard check for p_commit
648       IF FND_API.to_Boolean( p_commit )
649       THEN
650           COMMIT WORK;
651       END IF;
652 
653 
654       -- Debug Message
655       IF l_debug THEN
656       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
657                                    'Private API: ' || l_api_name || ' end');
658       END IF;
659 
660 
661 
662       -- Standard call to get message count and if count is 1, get message info.
663       FND_MSG_PUB.Count_And_Get
664       (  p_count          =>   x_msg_count,
665          p_data           =>   x_msg_data
666       );
667 
668 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
669 /*
670       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
671       -- invoked for customization purpose
672       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
673       THEN
674           AS_CALLOUT_PKG.Update_competitors_AU(
675                   p_api_version_number   =>  2.0,
676                   p_init_msg_list        =>  FND_API.G_FALSE,
677                   p_commit               =>  FND_API.G_FALSE,
678                   p_validation_level     =>  p_validation_level,
679                   p_identity_salesforce_id => p_identity_salesforce_id,
680                   P_Competitor_Rec      =>  P_Competitor_Rec,
681           -- Hint: Add detail tables as parameter lists if it's master-detail
682           --       relationship.
683                   x_return_status        =>  x_return_status,
684                   x_msg_count            =>  x_msg_count,
685                   x_msg_data             =>  x_msg_data);
686       END IF;
687 */
688       EXCEPTION
689           WHEN FND_API.G_EXC_ERROR THEN
690               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
691                    P_MODULE => l_module
692                   ,P_API_NAME => L_API_NAME
693                   ,P_PKG_NAME => G_PKG_NAME
694                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
695                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
696                   ,X_MSG_COUNT => X_MSG_COUNT
697                   ,X_MSG_DATA => X_MSG_DATA
698                   ,X_RETURN_STATUS => X_RETURN_STATUS);
699 
700           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
701               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
702                    P_MODULE => l_module
703                   ,P_API_NAME => L_API_NAME
704                   ,P_PKG_NAME => G_PKG_NAME
705                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
706                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
707                   ,X_MSG_COUNT => X_MSG_COUNT
708                   ,X_MSG_DATA => X_MSG_DATA
709                   ,X_RETURN_STATUS => X_RETURN_STATUS);
710 
711           WHEN OTHERS THEN
712               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
713                    P_MODULE => l_module
714                   ,P_API_NAME => L_API_NAME
715                   ,P_PKG_NAME => G_PKG_NAME
716                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
720                   ,X_RETURN_STATUS => X_RETURN_STATUS);
717                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
718                   ,X_MSG_COUNT => X_MSG_COUNT
719                   ,X_MSG_DATA => X_MSG_DATA
721 End Update_competitors;
722 
723 
724 -- Hint: Add corresponding delete detail table procedures if it's master-detail
725 --       relationship.
726 --       The Master delete procedure may not be needed depends on different
727 --       business requirements.
728 PROCEDURE Delete_competitors(
729 	P_Api_Version_Number      IN   NUMBER,
730 	P_Init_Msg_List           IN   VARCHAR2    := FND_API.G_FALSE,
731 	P_Commit                  IN   VARCHAR2    := FND_API.G_FALSE,
732 	p_validation_level        IN   NUMBER      := FND_API.G_VALID_LEVEL_FULL,
733 	P_Check_Access_Flag       IN   VARCHAR2    := FND_API.G_FALSE,
734 	P_Admin_Flag              IN   VARCHAR2    := FND_API.G_FALSE,
735 	P_Admin_Group_Id          IN   NUMBER,
736 	P_Identity_Salesforce_Id  IN   NUMBER,
737 	P_profile_tbl             IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
738 	P_Partner_Cont_Party_id   IN   NUMBER      := FND_API.G_MISS_NUM,
739 	P_Competitor_Tbl          IN   AS_OPPORTUNITY_PUB.Competitor_Tbl_Type,
740 	X_competitor_out_tbl      OUT NOCOPY  AS_OPPORTUNITY_PUB.competitor_out_tbl_type,
741 	X_Return_Status           OUT NOCOPY  VARCHAR2,
742 	X_Msg_Count               OUT NOCOPY  NUMBER,
743 	X_Msg_Data                OUT NOCOPY  VARCHAR2
744 	)
745 
746  IS
747 
748     L_Api_Name                  CONSTANT VARCHAR2(30) := 'Delete_competitors';
749     L_Api_Version_Number        CONSTANT NUMBER   := 2.0;
750     L_Identity_Sales_Member_Rec AS_SALES_MEMBER_PUB.Sales_Member_Rec_Type;
751     L_Competitor_Rec            AS_OPPORTUNITY_PUB.Competitor_Rec_Type;
752     L_Lead_Competitor_Id        NUMBER;
753     L_Line_Count                CONSTANT NUMBER := P_Competitor_Tbl.count;
754     L_Access_Profile_Rec        AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
755     L_Access_Flag               VARCHAR2(1);
756     l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
757     l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Delete_competitors';
758 
759  BEGIN
760       -- Standard Start of API savepoint
761       SAVEPOINT DELETE_COMPETITORS_PVT;
762 
763       -- Standard call to check for call compatibility.
764       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
765                          	             p_api_version_number,
766                                            l_api_name,
767                                            G_PKG_NAME)
768       THEN
769           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
770       END IF;
771 
772 
773       -- Initialize message list if p_init_msg_list is set to TRUE.
774       IF FND_API.to_Boolean( p_init_msg_list )
775       THEN
776           FND_MSG_PUB.initialize;
777       END IF;
778 
779 
780       -- Debug Message
781       IF l_debug THEN
782       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
783                                    'Private API: ' || l_api_name || ' start');
784       END IF;
785 
786 
787 
788       -- Initialize API return status to SUCCESS
789       x_return_status := FND_API.G_RET_STS_SUCCESS;
790 
791       --
792       -- Api body
793       --
794 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
795 /*
796       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
797       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
798       THEN
799           AS_CALLOUT_PKG.Delete_competitors_BD(
800                   p_api_version_number   =>  2.0,
801                   p_init_msg_list        =>  FND_API.G_FALSE,
802                   p_commit               =>  FND_API.G_FALSE,
803                   p_validation_level     =>  p_validation_level,
804                   p_identity_salesforce_id => p_identity_salesforce_id,
805                   P_Competitor_Rec      =>  P_Competitor_Rec,
806           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
807                   x_return_status        =>  x_return_status,
808                   x_msg_count            =>  x_msg_count,
809                   x_msg_data             =>  x_msg_data);
810       END IF;
811 */
812 
813       IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL )
814 	 THEN
815           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
816               p_api_version_number => 2.0
817              ,p_init_msg_list      => p_init_msg_list
818              ,p_salesforce_id => p_identity_salesforce_id
819              ,p_admin_group_id => p_admin_group_id
820              ,x_return_status => x_return_status
821              ,x_msg_count => x_msg_count
822              ,x_msg_data => x_msg_data
823              ,x_sales_member_rec => l_identity_sales_member_rec);
824       END IF;
825 
826       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
827           RAISE FND_API.G_EXC_ERROR;
828       END IF;
829 
830       -- Call Get_Access_Profiles to get access_profile_rec
831       AS_OPPORTUNITY_PUB.Get_Access_Profiles(
832           p_profile_tbl         => p_profile_tbl,
833           x_access_profile_rec  => l_access_profile_rec);
834 
835 	 -- Access checking
836       IF ( p_check_access_flag = 'Y' )
837 	 THEN
838           AS_ACCESS_PUB.Has_updateOpportunityAccess(
842               p_access_profile_rec     => l_access_profile_rec,
839               p_api_version_number     => 2.0,
840               p_init_msg_list          => p_init_msg_list,
841               p_validation_level       => p_validation_level,
843               p_admin_flag             => p_admin_flag,
844               p_admin_group_id         => p_admin_group_id,
845               p_person_id              =>
846                                 l_identity_sales_member_rec.employee_person_id,
847               p_opportunity_id         => l_Competitor_rec.LEAD_ID,
848               p_check_access_flag      => 'Y',
849               p_identity_salesforce_id => p_identity_salesforce_id,
850               p_partner_cont_party_id  => NULL,
851               x_return_status          => x_return_status,
852               x_msg_count              => x_msg_count,
853               x_msg_data               => x_msg_data,
854               x_update_access_flag       => l_access_flag);
855       END IF;
856 
857 	 IF l_access_flag <> 'Y' THEN
858           AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
859           'API_NO_UPDATE_PRIVILEGE');
860       END IF;
861 
862       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
863           RAISE FND_API.G_EXC_ERROR;
864       END IF;
865 
866       FOR l_curr_row IN 1..l_line_count LOOP
867          X_competitor_out_tbl(l_curr_row).return_status :=
868                                                    FND_API.G_RET_STS_SUCCESS ;
869 
870          -- Progress Message
871          --
872          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
873          THEN
874              FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
875              FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_COMPETITOR', TRUE);
876              FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
877              FND_MSG_PUB.Add;
878          END IF;
879 
880          l_competitor_rec := P_Competitor_Tbl(l_curr_row);
881 
882          -- Debug Message
883          IF l_debug THEN
884          AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
885                                    'Private API: Calling delete table handler');
886 	 END IF;
887 
888 
889              -- Invoke table handler(AS_LEAD_COMPETITORS_PKG.Delete_Row)
890              AS_LEAD_COMPETITORS_PKG.Delete_Row(
891                  p_LEAD_COMPETITOR_ID  => l_Competitor_rec.LEAD_COMPETITOR_ID);
892 
893          X_competitor_out_tbl(l_curr_row).LEAD_COMPETITOR_ID :=
894                                                         l_LEAD_COMPETITOR_ID;
895          X_competitor_out_tbl(l_curr_row).return_status := x_return_status;
896 
897          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
898              RAISE FND_API.G_EXC_ERROR;
899          END IF;
900 
901       END LOOP;
902 
903       --
904       -- End of API body
905       --
906 
907       -- Standard check for p_commit
908       IF FND_API.to_Boolean( p_commit )
909       THEN
910           COMMIT WORK;
911       END IF;
912 
913 
914       -- Debug Message
915       IF l_debug THEN
916       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
917                                    'Private API: ' || l_api_name || ' end');
918       END IF;
919 
920 
921 
922       -- Standard call to get message count and if count is 1, get message info.
923       FND_MSG_PUB.Count_And_Get
924       (  p_count          =>   x_msg_count,
925          p_data           =>   x_msg_data
926       );
927 
928 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
929 /*
930       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
931       -- invoked for customization purpose
932       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
933       THEN
934           AS_CALLOUT_PKG.Delete_competitors_AD(
935                   p_api_version_number   =>  2.0,
936                   p_init_msg_list        =>  FND_API.G_FALSE,
937                   p_commit               =>  FND_API.G_FALSE,
938                   p_validation_level     =>  p_validation_level,
939                   p_identity_salesforce_id => p_identity_salesforce_id,
940                   P_Competitor_Rec      =>  P_Competitor_Rec,
941           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
942                   x_return_status        =>  x_return_status,
943                   x_msg_count            =>  x_msg_count,
944                   x_msg_data             =>  x_msg_data);
945       END IF;
946 */
947       EXCEPTION
948           WHEN FND_API.G_EXC_ERROR THEN
949               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
950                    P_MODULE => l_module
951                   ,P_API_NAME => L_API_NAME
952                   ,P_PKG_NAME => G_PKG_NAME
953                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
954                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
955                   ,X_MSG_COUNT => X_MSG_COUNT
956                   ,X_MSG_DATA => X_MSG_DATA
957                   ,X_RETURN_STATUS => X_RETURN_STATUS);
958 
959           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
960               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
961                    P_MODULE => l_module
962                   ,P_API_NAME => L_API_NAME
966                   ,X_MSG_COUNT => X_MSG_COUNT
963                   ,P_PKG_NAME => G_PKG_NAME
964                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
965                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
967                   ,X_MSG_DATA => X_MSG_DATA
968                   ,X_RETURN_STATUS => X_RETURN_STATUS);
969 
970           WHEN OTHERS THEN
971               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
972                    P_MODULE => l_module
973                   ,P_API_NAME => L_API_NAME
974                   ,P_PKG_NAME => G_PKG_NAME
975                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
976                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
977                   ,X_MSG_COUNT => X_MSG_COUNT
978                   ,X_MSG_DATA => X_MSG_DATA
979                   ,X_RETURN_STATUS => X_RETURN_STATUS);
980 End Delete_competitors;
981 
982 
983 -- Item-level validation procedures
984 PROCEDURE Validate_LEAD_COMPETITOR_ID (
985     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
986     P_Validation_mode            IN   VARCHAR2,
987     P_LEAD_COMPETITOR_ID         IN   NUMBER,
988     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
989     X_Return_Status              OUT NOCOPY  VARCHAR2,
990     X_Msg_Count                  OUT NOCOPY  NUMBER,
991     X_Msg_Data                   OUT NOCOPY  VARCHAR2
992     )
993 IS
994   CURSOR C_Lead_Competitor_Id_Exists (c_Lead_Competitor_Id NUMBER) IS
995 	 SELECT 'X'
996 	 FROM as_lead_competitors
997 	 WHERE lead_competitor_id = c_Lead_Competitor_Id;
998 
999   l_val   VARCHAR2(1);
1000   l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Validate_LEAD_COMPETITOR_ID';
1001 
1002 BEGIN
1003       -- Initialize message list if p_init_msg_list is set to TRUE.
1004       IF FND_API.to_Boolean( p_init_msg_list )
1005       THEN
1006           FND_MSG_PUB.initialize;
1007       END IF;
1008 
1009 
1010       -- Initialize API return status to SUCCESS
1011       x_return_status := FND_API.G_RET_STS_SUCCESS;
1012 
1013       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1014       THEN
1015 
1016           IF (p_LEAD_COMPETITOR_ID is not NULL) and (p_LEAD_COMPETITOR_ID <> FND_API.G_MISS_NUM)
1017 		THEN
1018 		    OPEN C_Lead_Competitor_Id_Exists (p_Lead_Competitor_Id);
1019 		    FETCH C_Lead_Competitor_Id_Exists into l_val;
1020 
1021 		    IF C_Lead_Competitor_Id_Exists%FOUND THEN
1022 			   AS_UTILITY_PVT.Set_Message(
1023 			       p_module        => l_module,
1024 			       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1025 			       p_msg_name      => 'API_DUPLICATE_LEAD_COMPETITOR_ID');
1026 
1027 			   x_return_status := FND_API.G_RET_STS_ERROR;
1028 		    END IF;
1029 
1030               CLOSE C_Lead_Competitor_Id_Exists;
1031 		END IF;
1032 
1033       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1034       THEN
1035 
1036           IF (p_LEAD_COMPETITOR_ID is NULL) or (p_LEAD_COMPETITOR_ID = FND_API.G_MISS_NUM)
1037 		THEN
1038 		    AS_UTILITY_PVT.Set_Message(
1039 			   p_module        => l_module,
1040 			   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1041                   p_msg_name      => 'API_MISSING_LEAD_COMPETITOR_ID');
1042 
1043               x_return_status := FND_API.G_RET_STS_ERROR;
1044           ELSE
1045 		    OPEN  C_Lead_Competitor_Id_Exists (p_Lead_Competitor_Id);
1046 		    FETCH C_Lead_Competitor_Id_Exists into l_val;
1047 
1048 		    IF C_Lead_Competitor_Id_Exists%NOTFOUND
1049 		    THEN
1050 		        AS_UTILITY_PVT.Set_Message(
1051 			       p_module        => l_module,
1052 			       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1053 			       p_msg_name      => 'API_INVALID_LEAD_COMPETITOR_ID',
1054 			       p_token1        => 'VALUE',
1055 			       p_token1_value  => p_LEAD_COMPETITOR_ID );
1056 
1057                   x_return_status := FND_API.G_RET_STS_ERROR;
1058 		    END IF;
1059 
1060 		    CLOSE C_Lead_Competitor_Id_Exists;
1061 		END IF;
1062 
1063       END IF;
1064 
1065       -- Standard call to get message count and if count is 1, get message info.
1066       FND_MSG_PUB.Count_And_Get
1067       (  p_count          =>   x_msg_count,
1068          p_data           =>   x_msg_data
1069       );
1070 
1071 END Validate_LEAD_COMPETITOR_ID;
1072 
1073 
1074 
1075 PROCEDURE Validate_LEAD_ID (
1076     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1077     P_Validation_mode            IN   VARCHAR2,
1078     P_LEAD_ID                    IN   NUMBER,
1079     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1080     X_Return_Status              OUT NOCOPY  VARCHAR2,
1081     X_Msg_Count                  OUT NOCOPY  NUMBER,
1082     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1083     )
1084 IS
1085   CURSOR C_Lead_Id_Exists (c_Lead_Id NUMBER) IS
1086 	 SELECT 'X'
1087 	 FROM as_leads_all
1088 	 WHERE lead_id = c_Lead_Id;
1089 
1090   l_val   VARCHAR2(1);
1091   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1092   l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Validate_LEAD_ID';
1093 
1094 BEGIN
1095 
1096       -- Initialize message list if p_init_msg_list is set to TRUE.
1097       IF FND_API.to_Boolean( p_init_msg_list )
1098       THEN
1099           FND_MSG_PUB.initialize;
1100       END IF;
1101 
1105 
1102 
1103       -- Initialize API return status to SUCCESS
1104       x_return_status := FND_API.G_RET_STS_SUCCESS;
1106       -- validate NOT NULL column
1107       IF(p_LEAD_ID is NULL)
1108       THEN
1109           IF l_debug THEN
1110           AS_UTILITY_PVT.Debug_Message(l_module, 'ERROR',
1111                'Private API: Violate NOT NULL constraint(LEAD_ID)');
1112           END IF;
1113 
1114           x_return_status := FND_API.G_RET_STS_ERROR;
1115       END IF;
1116 
1117       IF (p_LEAD_ID is NULL) or (p_LEAD_ID = FND_API.G_MISS_NUM)
1118       THEN
1119 		AS_UTILITY_PVT.Set_Message(
1120 		    p_module        => l_module,
1121 		    p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1122 		    p_msg_name      => 'API_MISSING_LEAD_ID');
1123 
1124 		x_return_status := FND_API.G_RET_STS_ERROR;
1125       ELSE
1126 		OPEN  C_Lead_Id_Exists (p_Lead_Id);
1127 		FETCH C_Lead_Id_Exists into l_val;
1128 
1129 		IF C_Lead_Id_Exists%NOTFOUND
1130 		THEN
1131 		    AS_UTILITY_PVT.Set_Message(
1132 		        p_module        => l_module,
1133 		        p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1134 		        p_msg_name      => 'API_INVALID_LEAD_ID',
1135 		        p_token1        => 'VALUE',
1136 		        p_token1_value  => p_LEAD_ID );
1137 
1138               x_return_status := FND_API.G_RET_STS_ERROR;
1139           END IF;
1140 
1141 		CLOSE C_Lead_Id_Exists;
1142       END IF;
1143 
1144       -- Standard call to get message count and if count is 1, get message info.
1145       FND_MSG_PUB.Count_And_Get
1146       (  p_count          =>   x_msg_count,
1147          p_data           =>   x_msg_data
1148       );
1149 
1150 END Validate_LEAD_ID;
1151 
1152 
1153 
1154 PROCEDURE Validate_COMPETITOR_ID (
1155     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1156     P_Validation_mode            IN   VARCHAR2,
1157     P_COMPETITOR_ID              IN   NUMBER,
1158     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1159     X_Return_Status              OUT NOCOPY  VARCHAR2,
1160     X_Msg_Count                  OUT NOCOPY  NUMBER,
1161     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1162     )
1163 IS
1164 
1165   CURSOR C_COMPETITOR_Id_Exists (c_cmp_Id NUMBER) IS
1166 	 SELECT 'X'
1167 	 FROM HZ_PARTIES
1168 	 WHERE party_id = c_cmp_Id
1169 	 AND STATUS in ('A', 'I');
1170 
1171   l_val   VARCHAR2(1);
1172   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1173   l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Validate_COMPETITOR_ID';
1174 
1175 BEGIN
1176 
1177       -- Initialize message list if p_init_msg_list is set to TRUE.
1178       IF FND_API.to_Boolean( p_init_msg_list )
1179       THEN
1180           FND_MSG_PUB.initialize;
1181       END IF;
1182 
1183 
1184       -- Initialize API return status to SUCCESS
1185       x_return_status := FND_API.G_RET_STS_SUCCESS;
1186 
1187       IF(p_COMPETITOR_ID is NULL)
1188       THEN
1189           IF l_debug THEN
1190           AS_UTILITY_PVT.Debug_Message(l_module, 'ERROR',
1191                'Private API: Violate NOT NULL constraint(COMPETITOR_ID)');
1192 	  END IF;
1193 
1194           x_return_status := FND_API.G_RET_STS_ERROR;
1195       END IF;
1196 
1197       IF (p_COMPETITOR_ID is NOT NULL) and (p_COMPETITOR_ID <> FND_API.G_MISS_NUM)
1198       THEN
1199 
1200 	  OPEN  C_COMPETITOR_Id_Exists (p_COMPETITOR_Id);
1201 	  FETCH C_COMPETITOR_Id_Exists into l_val;
1202 
1203 	  IF C_COMPETITOR_Id_Exists%NOTFOUND
1204 	  THEN
1205 
1206 	       AS_UTILITY_PVT.Set_Message(
1207 			   p_module        => l_module,
1208 			   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1209 			   p_msg_name      => 'API_INVALID_COMP_ID',
1210 			   p_token1        => 'VALUE',
1211 			   p_token1_value  => p_COMPETITOR_ID );
1212 
1213           END IF;
1214       END IF;
1215 
1216       -- Standard call to get message count and if count is 1, get message info.
1217       FND_MSG_PUB.Count_And_Get
1218       (  p_count          =>   x_msg_count,
1219          p_data           =>   x_msg_data
1220       );
1221 
1222 END Validate_COMPETITOR_ID;
1223 
1224 -- Hint: inter-field level validation can be added here.
1225 -- Hint: If p_validation_mode = AS_UTILITY_PVT.G_VALIDATE_UPDATE, we should use
1226 --       cursor to get old values for all fields used in inter-field validation
1227 --       and set all G_MISS_XXX fields to original value stored in database
1228 --       table.
1229 PROCEDURE Validate_Competitor_rec(
1230     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1231     P_Validation_mode            IN   VARCHAR2,
1232     P_Competitor_Rec             IN   AS_OPPORTUNITY_PUB.Competitor_Rec_Type,
1233     X_Return_Status              OUT NOCOPY  VARCHAR2,
1234     X_Msg_Count                  OUT NOCOPY  NUMBER,
1235     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1236     )
1237 IS
1238 	l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1239     l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Validate_Competitor_rec';
1240 BEGIN
1241 
1242       -- Initialize message list if p_init_msg_list is set to TRUE.
1243       IF FND_API.to_Boolean( p_init_msg_list )
1244       THEN
1245           FND_MSG_PUB.initialize;
1246       END IF;
1247 
1248 
1252       -- Hint: Validate data
1249       -- Initialize API return status to SUCCESS
1250       x_return_status := FND_API.G_RET_STS_SUCCESS;
1251 
1253       -- If data not valid
1254       -- THEN
1255       -- x_return_status := FND_API.G_RET_STS_ERROR;
1256 
1257       -- Debug Message
1258       IF l_debug THEN
1259       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1260                                    'API_INVALID_RECORD');
1261       END IF;
1262 
1263 
1264       -- Standard call to get message count and if count is 1, get message info.
1265       FND_MSG_PUB.Count_And_Get
1266       (  p_count          =>   x_msg_count,
1267          p_data           =>   x_msg_data
1268       );
1269 
1270 END Validate_Competitor_Rec;
1271 
1272 
1273 PROCEDURE Validate_competitor(
1274 	P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1275 	P_Validation_Level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1276 	P_Validation_mode            IN   VARCHAR2,
1277 	P_Competitor_Rec             IN   AS_OPPORTUNITY_PUB.Competitor_Rec_Type,
1278 	X_Return_Status              OUT NOCOPY  VARCHAR2,
1279 	X_Msg_Count                  OUT NOCOPY  NUMBER,
1280 	X_Msg_Data                   OUT NOCOPY  VARCHAR2
1281 	)
1282 IS
1283 
1284 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_competitor';
1285 l_Item_Property_Rec   AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE;
1286 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1287 l_module CONSTANT VARCHAR2(255) := 'as.plsql.cmppv.Validate_competitor';
1288  BEGIN
1289 
1290       -- Debug Message
1291       IF l_debug THEN
1292       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1293                                    'Private API: ' || l_api_name || ' start');
1294       END IF;
1295 
1296       -- Initialize API return status to SUCCESS
1297       x_return_status := FND_API.G_RET_STS_SUCCESS;
1298 
1299       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM) THEN
1300           -- Hint: We provide validation procedure for every column. Developer
1301           --       should delete unnecessary validation procedures.
1302 
1303           Validate_LEAD_COMPETITOR_ID(
1304               p_init_msg_list          => FND_API.G_FALSE,
1305               p_validation_mode        => p_validation_mode,
1306               p_LEAD_COMPETITOR_ID     => P_Competitor_Rec.LEAD_COMPETITOR_ID,
1307               x_item_property_rec      => l_item_property_rec,
1308               x_return_status          => x_return_status,
1309               x_msg_count              => x_msg_count,
1310               x_msg_data               => x_msg_data);
1311 
1312           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1313               raise FND_API.G_EXC_ERROR;
1314           END IF;
1315 
1316 
1317           Validate_LEAD_ID(
1318               p_init_msg_list          => FND_API.G_FALSE,
1319               p_validation_mode        => p_validation_mode,
1320               p_LEAD_ID                => P_Competitor_Rec.LEAD_ID,
1321               x_item_property_rec      => l_item_property_rec,
1322               x_return_status          => x_return_status,
1323               x_msg_count              => x_msg_count,
1324               x_msg_data               => x_msg_data);
1325 
1326           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1327               raise FND_API.G_EXC_ERROR;
1328           END IF;
1329 
1330 
1331           Validate_COMPETITOR_ID(
1332               p_init_msg_list          => FND_API.G_FALSE,
1333               p_validation_mode        => p_validation_mode,
1334               p_COMPETITOR_ID          => P_Competitor_Rec.COMPETITOR_ID,
1335               x_item_property_rec      => l_item_property_rec,
1336               x_return_status          => x_return_status,
1337               x_msg_count              => x_msg_count,
1338               x_msg_data               => x_msg_data);
1339 
1340           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1341               raise FND_API.G_EXC_ERROR;
1342           END IF;
1343 
1344       END IF;
1345 
1346 	 /*
1347       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD) THEN
1348           -- Hint: Inter-field level validation can be added here
1349           -- invoke record level validation procedures
1350           Validate_Competitor_Rec(
1351               p_init_msg_list          => FND_API.G_FALSE,
1352               p_validation_mode        => p_validation_mode,
1353               P_Competitor_Rec         => P_Competitor_Rec,
1354               x_return_status          => x_return_status,
1355               x_msg_count              => x_msg_count,
1356               x_msg_data               => x_msg_data);
1357 
1358           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1359               raise FND_API.G_EXC_ERROR;
1360           END IF;
1361       END IF;
1362 	 */
1363 
1364 	 /*
1365       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_RECORD) THEN
1366           -- invoke inter-record level validation procedures
1367           NULL;
1368       END IF;
1369 	 */
1370 
1371 	 /*
1372       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_ENTITY) THEN
1373           -- invoke inter-entity level validation procedures
1374           NULL;
1375       END IF;
1376 	 */
1377 
1378 
1379       -- Debug Message
1380       IF l_debug THEN
1381       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1382 							'Private API: ' || l_api_name || ' end');
1383       END IF;
1384 
1385 END Validate_competitor;
1386 
1387 End AS_OPP_COMPETITOR_PVT;