[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;