[Home] [Help]
PACKAGE BODY: APPS.AS_OPP_CONTACT_PVT
Source
1 PACKAGE BODY AS_OPP_CONTACT_PVT as
2 /* $Header: asxvlcnb.pls 120.4 2006/08/10 11:29:18 mohali noship $ */
3 -- Start of Comments
4 -- Package name : AS_OPP_CONTACT_PVT
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AS_OPP_CONTACT_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asxvop3b.pls';
13
14 -- Hint: Primary key needs to be returned.
15 PROCEDURE Create_opp_contacts(
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_Check_Access_Flag IN VARCHAR2 := FND_API.G_FALSE,
21 P_Admin_Flag IN VARCHAR2 := FND_API.G_FALSE,
22 P_Admin_Group_Id IN NUMBER,
23 P_Identity_Salesforce_Id IN VARCHAR2 := FND_API.G_FALSE,
24 P_profile_tbl IN AS_UTILITY_PUB.PROFILE_TBL_TYPE,
25 P_Partner_Cont_Party_id IN NUMBER := FND_API.G_MISS_NUM,
26 P_Contact_Tbl IN AS_OPPORTUNITY_PUB.Contact_Tbl_Type :=
27 AS_OPPORTUNITY_PUB.G_MISS_Contact_Tbl,
28 X_contact_out_tbl OUT NOCOPY AS_OPPORTUNITY_PUB.contact_out_tbl_type,
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_opp_contacts';
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_CONTACT_Rec AS_OPPORTUNITY_PUB.CONTACT_Rec_Type;
40 l_LEAD_CONTACT_ID NUMBER;
41 l_line_count CONSTANT NUMBER := P_CONTACT_Tbl.count;
42 l_update_access_flag VARCHAR2(1);
43 l_access_profile_rec AS_ACCESS_PUB.Access_Profile_Rec_Type;
44 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
45 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Create_opp_contacts';
46
47 Cursor C_Get_Primary_Contact ( c_LEAD_ID NUMBER ) IS
48 SELECT lead_contact_id
49 FROM as_lead_contacts
50 WHERE lead_id = c_LEAD_ID
51 --and enabled_flag = 'Y' fix for 5285071
52 and primary_contact_flag = 'Y';
53
54 BEGIN
55 -- Standard Start of API savepoint
56 SAVEPOINT CREATE_OPP_CONTACTS_PVT;
57
58 -- Standard call to check for call compatibility.
59 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
60 p_api_version_number,
61 l_api_name,
62 G_PKG_NAME)
63 THEN
64 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
65 END IF;
66
67
68 -- Initialize message list if p_init_msg_list is set to TRUE.
69 IF FND_API.to_Boolean( p_init_msg_list )
70 THEN
71 FND_MSG_PUB.initialize;
72 END IF;
73
74
75 -- Debug Message
76 IF l_debug THEN
77 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
78 'Private API: ' || l_api_name || ' start');
79 END IF;
80
81 -- Initialize API return status to SUCCESS
82 x_return_status := FND_API.G_RET_STS_SUCCESS;
83
84 --
85 -- API body
86 --
87
88 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
89 /*
90 -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
91 -- invoked for customization purpose
92 IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
93 THEN
94 AS_CALLOUT_PKG.Create_opp_contacts_BC(
95 p_api_version_number => 2.0,
96 p_init_msg_list => FND_API.G_FALSE,
97 p_commit => FND_API.G_FALSE,
98 p_validation_level => p_validation_level,
99 P_Contact_Rec => P_Contact_Rec,
100 -- Hint: Add detail tables as parameter lists if it's master-detail
101 -- relationship.
102 x_return_status => x_return_status,
103 x_msg_count => x_msg_count,
104 x_msg_data => x_msg_data);
105 END IF;
106 */
107
108
109 -- ******************************************************************
110 -- Validate Environment
111 -- ******************************************************************
112 IF FND_GLOBAL.User_Id IS NULL
113 THEN
114 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
115 THEN
116 FND_MESSAGE.Set_Name(' + appShortName +',
117 'UT_CANNOT_GET_PROFILE_VALUE');
118 FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
119 FND_MSG_PUB.ADD;
120 END IF;
121 RAISE FND_API.G_EXC_ERROR;
122 END IF;
123
124 IF(P_Check_Access_Flag = 'Y') THEN
125 AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
126 p_api_version_number => 2.0
127 ,p_init_msg_list => p_init_msg_list
128 ,p_salesforce_id => p_identity_salesforce_id
129 ,p_admin_group_id => p_admin_group_id
130 ,x_return_status => x_return_status
131 ,x_msg_count => x_msg_count
132 ,x_msg_data => x_msg_data
133 ,x_sales_member_rec => l_identity_sales_member_rec);
134
135 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
136 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
137 IF l_debug THEN
138 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
139 'Private API: Get_CurrentUser fail');
140 END IF;
141 END IF;
142 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
143 END IF;
144
145
146 -- Call Get_Access_Profiles to get access_profile_rec
147 AS_OPPORTUNITY_PUB.Get_Access_Profiles(
148 p_profile_tbl => p_profile_tbl,
149 x_access_profile_rec => l_access_profile_rec);
150
151 AS_ACCESS_PUB.has_updateOpportunityAccess
152 ( p_api_version_number => 2.0
153 ,p_init_msg_list => p_init_msg_list
154 ,p_validation_level => p_validation_level
155 ,p_access_profile_rec => l_access_profile_rec
156 ,p_admin_flag => p_admin_flag
157 ,p_admin_group_id => p_admin_group_id
158 ,p_person_id => l_identity_sales_member_rec.employee_person_id
159 ,p_opportunity_id => p_contact_tbl(1).LEAD_ID
160 ,p_check_access_flag => p_check_access_flag
161 ,p_identity_salesforce_id => p_identity_salesforce_id
162 ,p_partner_cont_party_id => p_partner_cont_party_id
163 ,x_return_status => x_return_status
164 ,x_msg_count => x_msg_count
165 ,x_msg_data => x_msg_data
166 ,x_update_access_flag => l_update_access_flag );
167
168 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
169 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
170 IF l_debug THEN
171 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
172 'has_updateOpportunityAccess fail');
173 END IF;
174 END IF;
175 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
176 END IF;
177
178 IF (l_update_access_flag <> 'Y') THEN
179 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
180 FND_MESSAGE.Set_Name('AS', 'API_NO_UPDATE_PRIVILEGE');
181 FND_MESSAGE.Set_Token('INFO', 'CUSTOMER_ID,OPPORTUNITY_ID,SALESFORCE_ID', FALSE);
182 FND_MSG_PUB.ADD;
183 END IF;
184 RAISE FND_API.G_EXC_ERROR;
185 END IF;
186 END IF;
187
188 FOR l_curr_row IN 1..l_line_count LOOP
189 X_Contact_out_tbl(l_curr_row).return_status:=FND_API.G_RET_STS_SUCCESS;
190
191 -- Progress Message
192 --
193 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
194 THEN
195 FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
196 FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_CONTACT', TRUE);
197 FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
198 FND_MSG_PUB.Add;
199 END IF;
200
201 l_Contact_rec := P_Contact_Tbl(l_curr_row);
202
203 -- Bug 3571569
204 -- Initialize flag to 'N' if null
205 IF(l_Contact_rec.PRIMARY_CONTACT_FLAG is NULL OR
206 l_Contact_rec.PRIMARY_CONTACT_FLAG = FND_API.G_MISS_CHAR )
207 THEN
208 l_Contact_rec.PRIMARY_CONTACT_FLAG := 'N';
209 END IF;
210
211 -- Debug message
212 IF l_debug THEN
213 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
214 'Private API: Validate_opp_contact');
215 END IF;
216
217 -- Invoke validation procedures
218 Validate_opp_contact(
219 p_init_msg_list => FND_API.G_FALSE,
220 p_validation_level => p_validation_level,
221 p_validation_mode => AS_UTILITY_PVT.G_CREATE,
222 P_Contact_Rec => l_Contact_Rec,
223 x_return_status => x_return_status,
224 x_msg_count => x_msg_count,
225 x_msg_data => x_msg_data);
226
227
228 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
229 -- Debug message
230 IF l_debug THEN
231 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
232 'Private API: Validate_opp_Contact fail');
233 END IF;
234 RAISE FND_API.G_EXC_ERROR;
235 END IF;
236
237
238 -- Debug Message
239 IF l_debug THEN
240 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
241 'Private API: Calling create table handler');
242 END IF;
243 -- the following condition and updation added for Bug#4641320
244 IF l_Contact_rec.PRIMARY_CONTACT_FLAG = 'Y'
245 THEN
246 OPEN C_Get_Primary_Contact(l_Contact_rec.LEAD_ID);
247 FETCH C_Get_Primary_Contact into l_lead_contact_id;
248
249 IF C_Get_Primary_Contact%FOUND THEN
250 UPDATE AS_LEAD_CONTACTS
251 SET primary_contact_flag = 'N'
252 WHERE lead_contact_id = l_lead_contact_id;
253 END IF;
254 CLOSE C_Get_Primary_Contact;
255 END IF;
256
257 l_LEAD_CONTACT_ID := l_Contact_rec.LEAD_CONTACT_ID;
258
259 -- Invoke table handler(AS_LEAD_CONTACTS_PKG.Insert_Row)
260 AS_LEAD_CONTACTS_PKG.Insert_Row(
261 px_LEAD_CONTACT_ID => l_LEAD_CONTACT_ID,
262 p_LEAD_ID => l_Contact_rec.LEAD_ID,
263 p_CONTACT_ID => l_Contact_rec.CONTACT_ID,
264 p_LAST_UPDATE_DATE => SYSDATE,
265 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
266 p_CREATION_DATE => SYSDATE,
267 p_CREATED_BY => FND_GLOBAL.USER_ID,
268 p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID,
269 p_REQUEST_ID => l_Contact_rec.REQUEST_ID,
270 p_PROGRAM_APPLICATION_ID => l_Contact_rec.PROGRAM_APPLICATION_ID,
271 p_PROGRAM_ID => l_Contact_rec.PROGRAM_ID,
272 p_PROGRAM_UPDATE_DATE => l_Contact_rec.PROGRAM_UPDATE_DATE,
273 p_ENABLED_FLAG => l_Contact_rec.ENABLED_FLAG,
274 p_CUSTOMER_ID => l_Contact_rec.CUSTOMER_ID,
275 p_ADDRESS_ID => l_Contact_rec.ADDRESS_ID,
276 p_RANK => l_Contact_rec.RANK,
277 p_PHONE_ID => l_Contact_rec.PHONE_ID,
278 p_ATTRIBUTE_CATEGORY => l_Contact_rec.ATTRIBUTE_CATEGORY,
279 p_ATTRIBUTE1 => l_Contact_rec.ATTRIBUTE1,
280 p_ATTRIBUTE2 => l_Contact_rec.ATTRIBUTE2,
281 p_ATTRIBUTE3 => l_Contact_rec.ATTRIBUTE3,
282 p_ATTRIBUTE4 => l_Contact_rec.ATTRIBUTE4,
283 p_ATTRIBUTE5 => l_Contact_rec.ATTRIBUTE5,
284 p_ATTRIBUTE6 => l_Contact_rec.ATTRIBUTE6,
285 p_ATTRIBUTE7 => l_Contact_rec.ATTRIBUTE7,
286 p_ATTRIBUTE8 => l_Contact_rec.ATTRIBUTE8,
287 p_ATTRIBUTE9 => l_Contact_rec.ATTRIBUTE9,
288 p_ATTRIBUTE10 => l_Contact_rec.ATTRIBUTE10,
289 p_ATTRIBUTE11 => l_Contact_rec.ATTRIBUTE11,
290 p_ATTRIBUTE12 => l_Contact_rec.ATTRIBUTE12,
291 p_ATTRIBUTE13 => l_Contact_rec.ATTRIBUTE13,
292 p_ATTRIBUTE14 => l_Contact_rec.ATTRIBUTE14,
293 p_ATTRIBUTE15 => l_Contact_rec.ATTRIBUTE15,
294 p_ORG_ID => l_Contact_rec.ORG_ID,
295 p_PRIMARY_CONTACT_FLAG => l_Contact_rec.PRIMARY_CONTACT_FLAG,
296 p_ROLE => l_Contact_rec.ROLE,
297 p_CONTACT_PARTY_ID => l_Contact_rec.CONTACT_PARTY_ID);
298
299 X_Contact_out_tbl(l_curr_row).LEAD_CONTACT_ID := l_LEAD_CONTACT_ID;
300 X_Contact_out_tbl(l_curr_row).return_status := x_return_status;
301
302 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
303 RAISE FND_API.G_EXC_ERROR;
304 END IF;
305
306 IF l_debug THEN
307 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
308 'Private API: Created lead_contact_id = ' || l_LEAD_CONTACT_ID);
309 END IF;
310
311 END LOOP;
312 --
313 -- End of API body
314 --
315
316 -- Standard check for p_commit
317 IF FND_API.to_Boolean( p_commit )
318 THEN
319 COMMIT WORK;
320 END IF;
321
322
323 -- Debug Message
324 IF l_debug THEN
325 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
326 'Private API: ' || l_api_name || ' end');
327
328 END IF;
329 -- Standard call to get message count and if count is 1, get message info.
330 FND_MSG_PUB.Count_And_Get
331 ( p_count => x_msg_count,
332 p_data => x_msg_data
333 );
334
335 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
336 /*
337 -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
338 -- invoked for customization purpose
339 IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
340 THEN
341 AS_CALLOUT_PKG.Create_opp_contacts_AC(
342 p_api_version_number => 2.0,
343 p_init_msg_list => FND_API.G_FALSE,
344 p_commit => FND_API.G_FALSE,
345 p_validation_level => p_validation_level,
346 P_Contact_Rec => P_Contact_Rec,
347 -- Hint: Add detail tables as parameter lists if it's master-detail
348 -- relationship.
349 x_return_status => x_return_status,
350 x_msg_count => x_msg_count,
351 x_msg_data => x_msg_data);
352 END IF;
353 */
354
355 EXCEPTION
356 WHEN FND_API.G_EXC_ERROR THEN
357 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
358 P_MODULE => l_module
359 ,P_API_NAME => L_API_NAME
360 ,P_PKG_NAME => G_PKG_NAME
361 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
362 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
363 ,X_MSG_COUNT => X_MSG_COUNT
364 ,X_MSG_DATA => X_MSG_DATA
365 ,X_RETURN_STATUS => X_RETURN_STATUS);
366
367 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
368 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
369 P_MODULE => l_module
370 ,P_API_NAME => L_API_NAME
371 ,P_PKG_NAME => G_PKG_NAME
372 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
373 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
374 ,X_MSG_COUNT => X_MSG_COUNT
375 ,X_MSG_DATA => X_MSG_DATA
376 ,X_RETURN_STATUS => X_RETURN_STATUS);
377
378 WHEN OTHERS THEN
379 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
380 P_MODULE => l_module
381 ,P_API_NAME => L_API_NAME
382 ,P_PKG_NAME => G_PKG_NAME
383 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
384 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
385 ,X_MSG_COUNT => X_MSG_COUNT
386 ,X_MSG_DATA => X_MSG_DATA
387 ,X_RETURN_STATUS => X_RETURN_STATUS);
388 End Create_opp_contacts;
389
390
391 -- Hint: Add corresponding update detail table procedures if it's master-detail
392 -- relationship.
393 PROCEDURE Update_opp_contacts(
394 P_Api_Version_Number IN NUMBER,
395 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
396 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
397 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
398 P_Check_Access_Flag IN VARCHAR2 := FND_API.G_FALSE,
399 P_Admin_Flag IN VARCHAR2 := FND_API.G_FALSE,
400 P_Admin_Group_Id IN NUMBER,
401 P_Identity_Salesforce_Id IN NUMBER,
402 P_profile_tbl IN AS_UTILITY_PUB.PROFILE_TBL_TYPE,
403 P_Partner_Cont_Party_id IN NUMBER := FND_API.G_MISS_NUM,
404 P_Contact_Tbl IN AS_OPPORTUNITY_PUB.Contact_Tbl_Type,
405 X_contact_out_tbl OUT NOCOPY AS_OPPORTUNITY_PUB.contact_out_tbl_type,
406 X_Return_Status OUT NOCOPY VARCHAR2,
407 X_Msg_Count OUT NOCOPY NUMBER,
408 X_Msg_Data OUT NOCOPY VARCHAR2
409 )
410
411 IS
412 Cursor C_Get_opp_contact(c_LEAD_CONTACT_ID Number) IS
413 Select LAST_UPDATE_DATE
414 From AS_LEAD_CONTACTS
415 WHERE LEAD_CONTACT_ID = c_LEAD_CONTACT_ID
416 For Update NOWAIT;
417 l_api_name CONSTANT VARCHAR2(30) := 'Update_opp_contacts';
418 l_api_version_number CONSTANT NUMBER := 2.0;
419 -- Local Variables
420 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
421 --l_ref_Contact_rec AS_OPPORTUNITY_PUB.Contact_Rec_Type;
422 l_rowid ROWID;
423 l_Contact_Rec AS_OPPORTUNITY_PUB.Contact_Rec_Type;
424 l_line_count CONSTANT NUMBER := P_Contact_Tbl.count;
425 l_last_update_date DATE;
426 l_update_access_flag VARCHAR2(1);
427 l_access_profile_rec AS_ACCESS_PUB.Access_Profile_Rec_Type;
428 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
429 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Update_opp_contacts';
430
431 BEGIN
432 -- Standard Start of API savepoint
433 SAVEPOINT UPDATE_OPP_CONTACTS_PVT;
434
435 -- Standard call to check for call compatibility.
436 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
437 p_api_version_number,
438 l_api_name,
439 G_PKG_NAME)
440 THEN
441 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
442 END IF;
443
444
445 -- Initialize message list if p_init_msg_list is set to TRUE.
446 IF FND_API.to_Boolean( p_init_msg_list )
447 THEN
448 FND_MSG_PUB.initialize;
449 END IF;
450
451
452 -- Debug Message
453 IF l_debug THEN
454 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
455 'Private API: ' || l_api_name || ' start');
456 END IF;
457
458
459 -- Initialize API return status to SUCCESS
460 x_return_status := FND_API.G_RET_STS_SUCCESS;
461
462 --
463 -- Api body
464 --
465 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
466 /*
467 -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
468 -- invoked for customization purpose
469 IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
470 THEN
471 AS_CALLOUT_PKG.Update_opp_contacts_BU(
472 p_api_version_number => 2.0,
473 p_init_msg_list => FND_API.G_FALSE,
474 p_commit => FND_API.G_FALSE,
475 p_validation_level => p_validation_level,
476 p_identity_salesforce_id => p_identity_salesforce_id,
477 P_Contact_Rec => P_Contact_Rec,
478 -- Hint: Add detail tables as parameter lists if it's master-detail
479 -- relationship.
480 x_return_status => x_return_status,
481 x_msg_count => x_msg_count,
482 x_msg_data => x_msg_data);
483 END IF;
484 */
485
486 IF(P_Check_Access_Flag = 'Y') THEN
487 AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
488 p_api_version_number => 2.0
489 ,p_init_msg_list => p_init_msg_list
490 ,p_salesforce_id => p_identity_salesforce_id
491 ,p_admin_group_id => p_admin_group_id
492 ,x_return_status => x_return_status
493 ,x_msg_count => x_msg_count
494 ,x_msg_data => x_msg_data
495 ,x_sales_member_rec => l_identity_sales_member_rec);
496
497 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
498 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
499 IF l_debug THEN
500 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
501 'Private API: Get_CurrentUser fail');
502 END IF;
503 END IF;
504 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
505 END IF;
506
507
508 -- Call Get_Access_Profiles to get access_profile_rec
509 AS_OPPORTUNITY_PUB.Get_Access_Profiles(
510 p_profile_tbl => p_profile_tbl,
511 x_access_profile_rec => l_access_profile_rec);
512
513 AS_ACCESS_PUB.has_updateOpportunityAccess
514 ( p_api_version_number => 2.0
515 ,p_init_msg_list => p_init_msg_list
516 ,p_validation_level => p_validation_level
517 ,p_access_profile_rec => l_access_profile_rec
518 ,p_admin_flag => p_admin_flag
519 ,p_admin_group_id => p_admin_group_id
520 ,p_person_id => l_identity_sales_member_rec.employee_person_id
521 ,p_opportunity_id => p_contact_tbl(1).LEAD_ID
522 ,p_check_access_flag => p_check_access_flag
523 ,p_identity_salesforce_id => p_identity_salesforce_id
524 ,p_partner_cont_party_id => p_partner_cont_party_id
525 ,x_return_status => x_return_status
526 ,x_msg_count => x_msg_count
527 ,x_msg_data => x_msg_data
528 ,x_update_access_flag => l_update_access_flag );
529
530 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
531 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
532 IF l_debug THEN
533 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
534 'has_updateOpportunityAccess fail');
535 END IF;
536 END IF;
537 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
538 END IF;
539
540 IF (l_update_access_flag <> 'Y') THEN
541 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
542 FND_MESSAGE.Set_Name('AS', 'API_NO_UPDATE_PRIVILEGE');
543 FND_MESSAGE.Set_Token('INFO', 'CUSTOMER_ID,OPPORTUNITY_ID,SALESFORCE_ID', FALSE);
544 FND_MSG_PUB.ADD;
545 END IF;
546 RAISE FND_API.G_EXC_ERROR;
547 END IF;
548 END IF;
549
550
551 FOR l_curr_row IN 1..l_line_count LOOP
552 X_Contact_out_tbl(l_curr_row).return_status:=FND_API.G_RET_STS_SUCCESS;
553
554 -- Progress Message
555 --
556 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
557 THEN
558 FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
559 FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_CONTACT', TRUE);
560 FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
561 FND_MSG_PUB.Add;
562 END IF;
563
564 l_Contact_rec := P_Contact_Tbl(l_curr_row);
565
566 -- Bug 3571569
567 -- Initialize flag to 'N' if null
568 IF(l_Contact_rec.PRIMARY_CONTACT_FLAG is NULL OR
569 l_Contact_rec.PRIMARY_CONTACT_FLAG = FND_API.G_MISS_CHAR )
570 THEN
571 l_Contact_rec.PRIMARY_CONTACT_FLAG := 'N';
572 END IF;
573
574 -- Debug Message
575 IF l_debug THEN
576 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
577 'Private API: - Open Cursor to Select');
578
579 END IF;
580
581 Open C_Get_opp_contact( l_Contact_rec.LEAD_CONTACT_ID);
582
583 Fetch C_Get_opp_contact into l_last_update_date;
584
585 If ( C_Get_opp_contact%NOTFOUND) Then
586 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
587 THEN
588 FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
589 FND_MESSAGE.Set_Token ('INFO', 'opp_contact', FALSE);
590 FND_MSG_PUB.Add;
591 END IF;
592 raise FND_API.G_EXC_ERROR;
593 END IF;
594
595 -- Debug Message
596 IF l_debug THEN
597 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
598 'Private API: - Close Cursor');
599 END IF;
600
601 Close C_Get_opp_contact;
602
603 If (l_Contact_rec.last_update_date is NULL or
604 l_Contact_rec.last_update_date = FND_API.G_MISS_Date ) Then
605 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
606 THEN
607 FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
608 FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
609 FND_MSG_PUB.ADD;
610 END IF;
611 raise FND_API.G_EXC_ERROR;
612 End if;
613 -- Check Whether record has been changed by someone else
614 If (l_Contact_rec.last_update_date <> l_last_update_date) Then
615 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
616 THEN
617 FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
618 FND_MESSAGE.Set_Token('INFO', 'opp_contact', FALSE);
619 FND_MSG_PUB.ADD;
620 END IF;
621 raise FND_API.G_EXC_ERROR;
622 End if;
623
624 -- Debug message
625 IF l_debug THEN
626 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
627 'Private API: Validate_opp_contact');
628
629 END IF;
630 -- Invoke validation procedures
631 Validate_opp_contact(
632 p_init_msg_list => FND_API.G_FALSE,
633 p_validation_level => p_validation_level,
634 p_validation_mode => AS_UTILITY_PVT.G_UPDATE,
635 P_Contact_Rec => l_Contact_Rec,
636 x_return_status => x_return_status,
637 x_msg_count => x_msg_count,
638 x_msg_data => x_msg_data);
639
640 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
641 -- Debug message
642 IF l_debug THEN
643 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
644 'Private API: Validate_opp_Contact fail');
645 END IF;
646 RAISE FND_API.G_EXC_ERROR;
647 END IF;
648
649 -- Debug Message
650 IF l_debug THEN
651 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
652 'Private API: Calling update table handler');
653
654 END IF;
655 -- Invoke table handler(AS_LEAD_CONTACTS_PKG.Update_Row)
656 AS_LEAD_CONTACTS_PKG.Update_Row(
657 p_LEAD_CONTACT_ID => l_Contact_rec.LEAD_CONTACT_ID,
658 p_LEAD_ID => l_Contact_rec.LEAD_ID,
659 p_CONTACT_ID => l_Contact_rec.CONTACT_ID,
660 p_LAST_UPDATE_DATE => SYSDATE,
661 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
662 p_CREATION_DATE => SYSDATE,
663 p_CREATED_BY => FND_GLOBAL.USER_ID,
664 p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID,
665 p_REQUEST_ID => l_Contact_rec.REQUEST_ID,
666 p_PROGRAM_APPLICATION_ID => l_Contact_rec.PROGRAM_APPLICATION_ID,
667 p_PROGRAM_ID => l_Contact_rec.PROGRAM_ID,
668 p_PROGRAM_UPDATE_DATE => l_Contact_rec.PROGRAM_UPDATE_DATE,
669 p_ENABLED_FLAG => l_Contact_rec.ENABLED_FLAG,
670 p_CUSTOMER_ID => l_Contact_rec.CUSTOMER_ID,
671 p_ADDRESS_ID => l_Contact_rec.ADDRESS_ID,
672 p_RANK => l_Contact_rec.RANK,
673 p_PHONE_ID => l_Contact_rec.PHONE_ID,
674 p_ATTRIBUTE_CATEGORY => l_Contact_rec.ATTRIBUTE_CATEGORY,
675 p_ATTRIBUTE1 => l_Contact_rec.ATTRIBUTE1,
676 p_ATTRIBUTE2 => l_Contact_rec.ATTRIBUTE2,
677 p_ATTRIBUTE3 => l_Contact_rec.ATTRIBUTE3,
678 p_ATTRIBUTE4 => l_Contact_rec.ATTRIBUTE4,
679 p_ATTRIBUTE5 => l_Contact_rec.ATTRIBUTE5,
680 p_ATTRIBUTE6 => l_Contact_rec.ATTRIBUTE6,
681 p_ATTRIBUTE7 => l_Contact_rec.ATTRIBUTE7,
682 p_ATTRIBUTE8 => l_Contact_rec.ATTRIBUTE8,
683 p_ATTRIBUTE9 => l_Contact_rec.ATTRIBUTE9,
684 p_ATTRIBUTE10 => l_Contact_rec.ATTRIBUTE10,
685 p_ATTRIBUTE11 => l_Contact_rec.ATTRIBUTE11,
686 p_ATTRIBUTE12 => l_Contact_rec.ATTRIBUTE12,
687 p_ATTRIBUTE13 => l_Contact_rec.ATTRIBUTE13,
688 p_ATTRIBUTE14 => l_Contact_rec.ATTRIBUTE14,
689 p_ATTRIBUTE15 => l_Contact_rec.ATTRIBUTE15,
690 p_ORG_ID => l_Contact_rec.ORG_ID,
691 p_PRIMARY_CONTACT_FLAG => l_Contact_rec.PRIMARY_CONTACT_FLAG,
692 p_ROLE => l_Contact_rec.ROLE,
693 p_CONTACT_PARTY_ID => l_Contact_rec.CONTACT_PARTY_ID);
694
695 X_Contact_out_tbl(l_curr_row).LEAD_CONTACT_ID :=
696 l_Contact_rec.LEAD_CONTACT_ID;
697 X_Contact_out_tbl(l_curr_row).return_status := x_return_status;
698
699 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
700 RAISE FND_API.G_EXC_ERROR;
701 END IF;
702
703 IF l_debug THEN
704 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
705 'Private API: Updated lead_contact_id = ' ||l_Contact_rec.LEAD_CONTACT_ID );
706 END IF;
707 END LOOP;
708
709 --
710 -- End of API body.
711 --
712
713 -- Standard check for p_commit
714 IF FND_API.to_Boolean( p_commit )
715 THEN
716 COMMIT WORK;
717 END IF;
718
719
720 -- Debug Message
721 IF l_debug THEN
722 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
723 'Private API: ' || l_api_name || ' end');
724 END IF;
725
726
727 -- Standard call to get message count and if count is 1, get message info.
728 FND_MSG_PUB.Count_And_Get
729 ( p_count => x_msg_count,
730 p_data => x_msg_data
731 );
732
733 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
734 /*
735 -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
736 -- invoked for customization purpose
737 IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
738 THEN
739 AS_CALLOUT_PKG.Update_opp_contacts_AU(
740 p_api_version_number => 2.0,
741 p_init_msg_list => FND_API.G_FALSE,
742 p_commit => FND_API.G_FALSE,
743 p_validation_level => p_validation_level,
744 p_identity_salesforce_id => p_identity_salesforce_id,
745 P_Contact_Rec => P_Contact_Rec,
746 -- Hint: Add detail tables as parameter lists if it's master-detail
747 -- relationship.
748 x_return_status => x_return_status,
749 x_msg_count => x_msg_count,
750 x_msg_data => x_msg_data);
751 END IF;
752 */
753 EXCEPTION
754 WHEN FND_API.G_EXC_ERROR THEN
755 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
756 P_MODULE => l_module
757 ,P_API_NAME => L_API_NAME
758 ,P_PKG_NAME => G_PKG_NAME
759 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
760 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
761 ,X_MSG_COUNT => X_MSG_COUNT
762 ,X_MSG_DATA => X_MSG_DATA
763 ,X_RETURN_STATUS => X_RETURN_STATUS);
764
765 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
766 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
767 P_MODULE => l_module
768 ,P_API_NAME => L_API_NAME
769 ,P_PKG_NAME => G_PKG_NAME
770 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
771 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
772 ,X_MSG_COUNT => X_MSG_COUNT
773 ,X_MSG_DATA => X_MSG_DATA
774 ,X_RETURN_STATUS => X_RETURN_STATUS);
775
776 WHEN OTHERS THEN
777 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
778 P_MODULE => l_module
779 ,P_API_NAME => L_API_NAME
780 ,P_PKG_NAME => G_PKG_NAME
781 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
782 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
783 ,X_MSG_COUNT => X_MSG_COUNT
784 ,X_MSG_DATA => X_MSG_DATA
785 ,X_RETURN_STATUS => X_RETURN_STATUS);
786 End Update_opp_contacts;
787
788
789 PROCEDURE Delete_opp_contacts(
790 P_Api_Version_Number IN NUMBER,
791 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
792 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
793 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
794 P_Check_Access_Flag IN VARCHAR2 := FND_API.G_FALSE,
795 P_Admin_Flag IN VARCHAR2 := FND_API.G_FALSE,
796 P_Admin_Group_Id IN NUMBER,
797 P_identity_salesforce_id IN NUMBER := NULL,
798 P_profile_tbl IN AS_UTILITY_PUB.PROFILE_TBL_TYPE,
799 P_Partner_Cont_Party_id IN NUMBER := FND_API.G_MISS_NUM,
800 P_Contact_Tbl IN AS_OPPORTUNITY_PUB.Contact_Tbl_Type,
801 X_contact_out_tbl OUT NOCOPY AS_OPPORTUNITY_PUB.contact_out_tbl_type,
802 X_Return_Status OUT NOCOPY VARCHAR2,
803 X_Msg_Count OUT NOCOPY NUMBER,
804 X_Msg_Data OUT NOCOPY VARCHAR2
805 )
806
807 IS
808 l_api_name CONSTANT VARCHAR2(30) := 'Delete_opp_contacts';
809 l_api_version_number CONSTANT NUMBER := 2.0;
810 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
811 l_Contact_Rec AS_OPPORTUNITY_PUB.Contact_Rec_Type;
812 l_line_count CONSTANT NUMBER := P_Contact_Tbl.count;
813 l_update_access_flag VARCHAR2(1);
814 l_access_profile_rec AS_ACCESS_PUB.Access_Profile_Rec_Type;
815 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
816 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Delete_opp_contacts';
817 BEGIN
818 -- Standard Start of API savepoint
819 SAVEPOINT DELETE_OPP_CONTACTS_PVT;
820
821 -- Standard call to check for call compatibility.
822 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
823 p_api_version_number,
824 l_api_name,
825 G_PKG_NAME)
826 THEN
827 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
828 END IF;
829
830
831 -- Initialize message list if p_init_msg_list is set to TRUE.
832 IF FND_API.to_Boolean( p_init_msg_list )
833 THEN
834 FND_MSG_PUB.initialize;
835 END IF;
836
837
838 -- Debug Message
839 IF l_debug THEN
840 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
841 'Private API: ' || l_api_name || ' start');
842 END IF;
843
844
845 -- Initialize API return status to SUCCESS
846 x_return_status := FND_API.G_RET_STS_SUCCESS;
847
848 --
849 -- Api body
850 --
851 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
852 /*
853 -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
854 -- invoked for customization purpose
855 IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
856 THEN
857 AS_CALLOUT_PKG.Delete_opp_contacts_BD(
858 p_api_version_number => 2.0,
859 p_init_msg_list => FND_API.G_FALSE,
860 p_commit => FND_API.G_FALSE,
861 p_validation_level => p_validation_level,
862 p_identity_salesforce_id => p_identity_salesforce_id,
863 P_Contact_Rec => P_Contact_Rec,
864 -- Hint: Add detail tables as parameter lists if it's master-detail
865 -- relationship.
866 x_return_status => x_return_status,
867 x_msg_count => x_msg_count,
868 x_msg_data => x_msg_data);
869 END IF;
870 */
871
872 IF(P_Check_Access_Flag = 'Y') THEN
873 AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
874 p_api_version_number => 2.0
875 ,p_init_msg_list => p_init_msg_list
876 ,p_salesforce_id => p_identity_salesforce_id
877 ,p_admin_group_id => p_admin_group_id
878 ,x_return_status => x_return_status
879 ,x_msg_count => x_msg_count
880 ,x_msg_data => x_msg_data
881 ,x_sales_member_rec => l_identity_sales_member_rec);
882
883 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
884 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
885 IF l_debug THEN
886 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
887 'Private API: Get_CurrentUser fail');
888 END IF;
889 END IF;
890 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
891 END IF;
892
893
894 -- Call Get_Access_Profiles to get access_profile_rec
895 AS_OPPORTUNITY_PUB.Get_Access_Profiles(
896 p_profile_tbl => p_profile_tbl,
897 x_access_profile_rec => l_access_profile_rec);
898
899 AS_ACCESS_PUB.has_updateOpportunityAccess
900 ( p_api_version_number => 2.0
901 ,p_init_msg_list => p_init_msg_list
902 ,p_validation_level => p_validation_level
903 ,p_access_profile_rec => l_access_profile_rec
904 ,p_admin_flag => p_admin_flag
905 ,p_admin_group_id => p_admin_group_id
906 ,p_person_id => l_identity_sales_member_rec.employee_person_id
907 ,p_opportunity_id => p_contact_tbl(1).LEAD_ID
908 ,p_check_access_flag => p_check_access_flag
909 ,p_identity_salesforce_id => p_identity_salesforce_id
910 ,p_partner_cont_party_id => p_partner_cont_party_id
911 ,x_return_status => x_return_status
912 ,x_msg_count => x_msg_count
913 ,x_msg_data => x_msg_data
914 ,x_update_access_flag => l_update_access_flag );
915
916 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
917 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
918 IF l_debug THEN
919 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
920 'has_updateOpportunityAccess fail');
921 END IF;
922 END IF;
923 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
924 END IF;
925
926 IF (l_update_access_flag <> 'Y') THEN
927 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
928 FND_MESSAGE.Set_Name('AS', 'API_NO_UPDATE_PRIVILEGE');
929 FND_MESSAGE.Set_Token('INFO', 'CUSTOMER_ID,OPPORTUNITY_ID,SALESFORCE_ID', FALSE);
930 FND_MSG_PUB.ADD;
931 END IF;
932 RAISE FND_API.G_EXC_ERROR;
933 END IF;
934 END IF;
935
936
937 FOR l_curr_row IN 1..l_line_count LOOP
938 X_Contact_out_tbl(l_curr_row).return_status:=FND_API.G_RET_STS_SUCCESS;
939
940 -- Progress Message
941 --
942 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
943 THEN
944 FND_MESSAGE.Set_Name ('AS', 'API_PROCESSING_ROW');
945 FND_MESSAGE.Set_Token ('ROW', 'AS_LEAD_CONTACT', TRUE);
946 FND_MESSAGE.Set_Token ('RECORD_NUM', to_char(l_curr_row), FALSE);
947 FND_MSG_PUB.Add;
948 END IF;
949
950 l_Contact_rec := P_Contact_Tbl(l_curr_row);
951
952
953 -- Debug Message
954 IF l_debug THEN
955 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
956 'Private API: Calling delete table handler');
957
958 END IF;
959 -- Invoke table handler(AS_LEAD_CONTACTS_PKG.Delete_Row)
960 AS_LEAD_CONTACTS_PKG.Delete_Row(
961 p_LEAD_CONTACT_ID => l_Contact_rec.LEAD_CONTACT_ID);
962
963 X_Contact_out_tbl(l_curr_row).LEAD_CONTACT_ID :=
964 l_Contact_rec.LEAD_CONTACT_ID;
965 X_Contact_out_tbl(l_curr_row).return_status := x_return_status;
966
967 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
968 RAISE FND_API.G_EXC_ERROR;
969 END IF;
970
971 END LOOP;
972
973 --
974 -- End of API body
975 --
976
977 -- Standard check for p_commit
978 IF FND_API.to_Boolean( p_commit )
979 THEN
980 COMMIT WORK;
981 END IF;
982
983
984 -- Debug Message
985 IF l_debug THEN
986 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
987 'Private API: ' || l_api_name || ' end');
988 END IF;
989
990 -- Standard call to get message count and if count is 1, get message info.
991 FND_MSG_PUB.Count_And_Get
992 ( p_count => x_msg_count,
993 p_data => x_msg_data
994 );
995
996 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
997 /*
998 -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
999 -- invoked for customization purpose
1000 IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
1001 THEN
1002 AS_CALLOUT_PKG.Delete_opp_contacts_AD(
1003 p_api_version_number => 2.0,
1004 p_init_msg_list => FND_API.G_FALSE,
1005 p_commit => FND_API.G_FALSE,
1006 p_validation_level => p_validation_level,
1007 p_identity_salesforce_id => p_identity_salesforce_id,
1008 P_Contact_Rec => P_Contact_Rec,
1009 -- Hint: Add detail tables as parameter lists if it's master-detail
1010 -- relationship.
1011 x_return_status => x_return_status,
1012 x_msg_count => x_msg_count,
1013 x_msg_data => x_msg_data);
1014 END IF;
1015 */
1016 EXCEPTION
1017 WHEN FND_API.G_EXC_ERROR THEN
1018 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1019 P_MODULE => l_module
1020 ,P_API_NAME => L_API_NAME
1021 ,P_PKG_NAME => G_PKG_NAME
1022 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1023 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1024 ,X_MSG_COUNT => X_MSG_COUNT
1025 ,X_MSG_DATA => X_MSG_DATA
1026 ,X_RETURN_STATUS => X_RETURN_STATUS);
1027
1028 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1029 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1030 P_MODULE => l_module
1031 ,P_API_NAME => L_API_NAME
1032 ,P_PKG_NAME => G_PKG_NAME
1033 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1034 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1035 ,X_MSG_COUNT => X_MSG_COUNT
1036 ,X_MSG_DATA => X_MSG_DATA
1037 ,X_RETURN_STATUS => X_RETURN_STATUS);
1038
1039 WHEN OTHERS THEN
1040 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1041 P_MODULE => l_module
1042 ,P_API_NAME => L_API_NAME
1043 ,P_PKG_NAME => G_PKG_NAME
1044 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1045 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1046 ,X_MSG_COUNT => X_MSG_COUNT
1047 ,X_MSG_DATA => X_MSG_DATA
1048 ,X_RETURN_STATUS => X_RETURN_STATUS);
1049 End Delete_opp_contacts;
1050
1051
1052
1053 -- Item-level validation procedures
1054 PROCEDURE Validate_LEAD_CONTACT_ID (
1055 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1056 P_Validation_mode IN VARCHAR2,
1057 P_LEAD_CONTACT_ID IN NUMBER,
1058 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1059 X_Return_Status OUT NOCOPY VARCHAR2,
1060 X_Msg_Count OUT NOCOPY NUMBER,
1061 X_Msg_Data OUT NOCOPY VARCHAR2
1062 )
1063 IS
1064
1065
1066 CURSOR C_Lead_Contact_Id_Exists (c_Lead_Contact_Id NUMBER) IS
1067 SELECT 'X'
1068 FROM as_lead_contacts
1069 WHERE lead_contact_id = c_Lead_Contact_Id;
1070
1071 l_val VARCHAR2(1);
1072 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1073 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_LEAD_CONTACT_ID';
1074
1075 BEGIN
1076
1077 -- Initialize message list if p_init_msg_list is set to TRUE.
1078 IF FND_API.to_Boolean( p_init_msg_list )
1079 THEN
1080 FND_MSG_PUB.initialize;
1081 END IF;
1082
1083
1084 -- Initialize API return status to SUCCESS
1085 x_return_status := FND_API.G_RET_STS_SUCCESS;
1086
1087
1088 -- Calling from Create API
1089 IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1090 THEN
1091 IF (p_LEAD_CONTACT_ID is NOT NULL) and (p_LEAD_CONTACT_ID <> FND_API.G_MISS_NUM)
1092 THEN
1093 OPEN C_Lead_Contact_Id_Exists (p_Lead_Contact_Id);
1094 FETCH C_Lead_Contact_Id_Exists into l_val;
1095 IF C_Lead_Contact_Id_Exists%FOUND THEN
1096 IF l_debug THEN
1097 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1098 'Private API: LEAD_CONTACT_ID exist');
1099 END IF;
1100
1101 AS_UTILITY_PVT.Set_Message(
1102 p_module => l_module,
1103 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1104 p_msg_name => 'AS_INVALID_ID',
1105 p_token1 => 'FIELD_ID',
1106 p_token1_value => 'LEAD_CONTACT_ID');
1107
1108 x_return_status := FND_API.G_RET_STS_ERROR;
1109 END IF;
1110 CLOSE C_Lead_Contact_Id_Exists;
1111 END IF;
1112
1113 -- Calling from Update API
1114 ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1115 THEN
1116 -- validate NOT NULL column
1117 IF (p_LEAD_CONTACT_ID is NULL) or (p_LEAD_CONTACT_ID = FND_API.G_MISS_NUM)
1118 THEN
1119 IF l_debug THEN
1120 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1121 'Private API: Violate NOT NULL constraint(LEAD_CONTACT_ID)');
1122 END IF;
1123
1124 AS_UTILITY_PVT.Set_Message(
1125 p_module => l_module,
1126 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1127 p_msg_name => 'AS_INVALID_ID',
1128 p_token1 => 'FIELD_ID',
1129 p_token1_value => 'LEAD_CONTACT_ID');
1130
1131 x_return_status := FND_API.G_RET_STS_ERROR;
1132 ELSE
1133 OPEN C_Lead_Contact_Id_Exists (p_Lead_Contact_Id);
1134 FETCH C_Lead_Contact_Id_Exists into l_val;
1135 IF C_Lead_Contact_Id_Exists%NOTFOUND
1136 THEN
1137 IF l_debug THEN
1138 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1139 'Private API: LEAD_CONTACT_ID is not valid');
1140 END IF;
1141
1142 AS_UTILITY_PVT.Set_Message(
1143 p_module => l_module,
1144 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1145 p_msg_name => 'AS_INVALID_ID',
1146 p_token1 => 'FIELD_ID',
1147 p_token1_value => 'LEAD_CONTACT_ID');
1148
1149 x_return_status := FND_API.G_RET_STS_ERROR;
1150 END IF;
1151 CLOSE C_Lead_Contact_Id_Exists;
1152 END IF;
1153
1154 END IF;
1155
1156 -- Standard call to get message count and if count is 1, get message info.
1157 FND_MSG_PUB.Count_And_Get
1158 ( p_count => x_msg_count,
1159 p_data => x_msg_data
1160 );
1161
1162 END Validate_LEAD_CONTACT_ID;
1163
1164
1165 PROCEDURE Validate_LEAD_ID (
1166 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1167 P_Validation_mode IN VARCHAR2,
1168 P_LEAD_ID IN NUMBER,
1169 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1170 X_Return_Status OUT NOCOPY VARCHAR2,
1171 X_Msg_Count OUT NOCOPY NUMBER,
1172 X_Msg_Data OUT NOCOPY VARCHAR2
1173 )
1174 IS
1175 CURSOR C_Lead_Id_Exists (c_Lead_Id NUMBER) IS
1176 SELECT 'X'
1177 FROM as_leads
1178 WHERE lead_id = c_Lead_Id
1179 AND nvl(DELETED_FLAG, 'N') <> 'Y';
1180
1181 l_val VARCHAR2(1);
1182 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1183 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_LEAD_ID';
1184 BEGIN
1185
1186 -- Initialize message list if p_init_msg_list is set to TRUE.
1187 IF FND_API.to_Boolean( p_init_msg_list )
1188 THEN
1189 FND_MSG_PUB.initialize;
1190 END IF;
1191
1192
1193 -- Initialize API return status to SUCCESS
1194 x_return_status := FND_API.G_RET_STS_SUCCESS;
1195
1196
1197 IF (p_LEAD_ID is NULL) or (p_LEAD_ID = FND_API.G_MISS_NUM)
1198 THEN
1199 IF l_debug THEN
1200 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1201 'Private API: Violate NOT NULL constraint(LEAD_ID)');
1202 END IF;
1203
1204 AS_UTILITY_PVT.Set_Message(
1205 p_module => l_module,
1206 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1207 p_msg_name => 'AS_INVALID_ID',
1208 p_token1 => 'FIELD_ID',
1209 p_token1_value => 'LEAD_ID');
1210
1211 x_return_status := FND_API.G_RET_STS_ERROR;
1212 ELSE
1213 OPEN C_Lead_Id_Exists (p_Lead_Id);
1214 FETCH C_Lead_Id_Exists into l_val;
1215 IF C_Lead_Id_Exists%NOTFOUND
1216 THEN
1217 IF l_debug THEN
1218 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1219 'Private API: LEAD_ID is not valid');
1220 END IF;
1221
1222 AS_UTILITY_PVT.Set_Message(
1223 p_module => l_module,
1224 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1225 p_msg_name => 'AS_INVALID_ID',
1226 p_token1 => 'FIELD_ID',
1227 p_token1_value => 'LEAD_ID');
1228
1229 x_return_status := FND_API.G_RET_STS_ERROR;
1230 END IF;
1231 CLOSE C_Lead_Id_Exists;
1232 END IF;
1233
1234 -- Standard call to get message count and if count is 1, get message info.
1235 FND_MSG_PUB.Count_And_Get
1236 ( p_count => x_msg_count,
1237 p_data => x_msg_data
1238 );
1239
1240 END Validate_LEAD_ID;
1241
1242
1243 PROCEDURE Validate_CONTACT_ID (
1244 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1245 P_Validation_mode IN VARCHAR2,
1246 P_CUSTOMER_ID IN NUMBER,
1247 P_CONTACT_ID IN NUMBER,
1248 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1249 X_Return_Status OUT NOCOPY VARCHAR2,
1250 X_Msg_Count OUT NOCOPY NUMBER,
1251 X_Msg_Data OUT NOCOPY VARCHAR2
1252 )
1253 IS
1254
1255 CURSOR C_CONTACT_ID_Exists(c_contact_id NUMBER) IS
1256 SELECT 'X'
1257 FROM AS_PARTY_ORG_CONTACTS_V
1258 WHERE contact_id = c_contact_id
1259 AND customer_id = P_CUSTOMER_ID;
1260
1261 l_val VARCHAR2(1);
1262 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1263 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_CONTACT_ID';
1264 BEGIN
1265
1266 -- Initialize message list if p_init_msg_list is set to TRUE.
1267 IF FND_API.to_Boolean( p_init_msg_list )
1268 THEN
1269 FND_MSG_PUB.initialize;
1270 END IF;
1271
1272
1273 -- Initialize API return status to SUCCESS
1274 x_return_status := FND_API.G_RET_STS_SUCCESS;
1275
1276 IF (p_CONTACT_ID is NOT NULL) and
1277 (p_CONTACT_ID <> FND_API.G_MISS_NUM)
1278 THEN
1279 OPEN C_CONTACT_ID_Exists (p_CONTACT_ID);
1280 FETCH C_CONTACT_ID_Exists into l_val;
1281 IF C_CONTACT_ID_Exists%NOTFOUND THEN
1282 IF l_debug THEN
1283 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1284 'Private API: CONTACT_ID is invalid');
1285 END IF;
1286
1287 AS_UTILITY_PVT.Set_Message(
1288 p_module => l_module,
1289 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1290 p_msg_name => 'AS_INVALID_ID',
1291 p_token1 => 'FIELD_ID',
1292 p_token1_value => 'CONTACT_ID');
1293
1294 x_return_status := FND_API.G_RET_STS_ERROR;
1295 END IF;
1296 CLOSE C_CONTACT_ID_Exists;
1297 END IF;
1298
1299 -- Standard call to get message count and if count is 1, get message info.
1300 FND_MSG_PUB.Count_And_Get
1301 ( p_count => x_msg_count,
1302 p_data => x_msg_data
1303 );
1304
1305 END Validate_CONTACT_ID;
1306
1307
1308 PROCEDURE Validate_ENABLED_FLAG (
1309 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1310 P_Validation_mode IN VARCHAR2,
1311 P_ENABLED_FLAG IN VARCHAR2,
1312 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1313 X_Return_Status OUT NOCOPY VARCHAR2,
1314 X_Msg_Count OUT NOCOPY NUMBER,
1315 X_Msg_Data OUT NOCOPY VARCHAR2
1316 )
1317 IS
1318 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1319 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_ENABLED_FLAG';
1320 BEGIN
1321
1322 -- Initialize message list if p_init_msg_list is set to TRUE.
1323 IF FND_API.to_Boolean( p_init_msg_list )
1324 THEN
1325 FND_MSG_PUB.initialize;
1326 END IF;
1327
1328
1329 -- Initialize API return status to SUCCESS
1330 x_return_status := FND_API.G_RET_STS_SUCCESS;
1331
1332 -- validate NOT NULL column
1333 IF(p_ENABLED_FLAG is NULL OR
1334 p_ENABLED_FLAG = FND_API.G_MISS_CHAR )
1335 THEN
1336 --The following code commented by SUBABU for Bug#3537692(ASN)
1337 /*IF l_debug THEN
1338 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
1339 'Private API: Violate NOT NULL constraint(ENABLED_FLAG)');
1340 END IF;
1341 x_return_status := FND_API.G_RET_STS_ERROR;*/
1342 NULL;
1343 ELSE
1344 IF (UPPER(p_ENABLED_FLAG) <> 'Y') and
1345 (UPPER(p_ENABLED_FLAG) <> 'N')
1346 THEN
1347 IF l_debug THEN
1348 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1349 'Private API: ENABLED_FLAG is invalid');
1350
1351 END IF;
1352
1353 AS_UTILITY_PVT.Set_Message(
1354 p_module => l_module,
1355 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1356 p_msg_name => 'AS_INVALID_ID',
1357 p_token1 => 'FIELD_ID',
1358 p_token1_value => 'ENABLED_FLAG');
1359
1360 x_return_status := FND_API.G_RET_STS_ERROR;
1361 END IF;
1362 END IF;
1363
1364 -- Standard call to get message count and if count is 1, get message info.
1365 FND_MSG_PUB.Count_And_Get
1366 ( p_count => x_msg_count,
1367 p_data => x_msg_data
1368 );
1369
1370 END Validate_ENABLED_FLAG;
1371
1372
1373 PROCEDURE Validate_CUSTOMER_ID (
1374 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1375 P_Validation_mode IN VARCHAR2,
1376 P_CUSTOMER_ID IN NUMBER,
1377 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1378 X_Return_Status OUT NOCOPY VARCHAR2,
1379 X_Msg_Count OUT NOCOPY NUMBER,
1380 X_Msg_Data OUT NOCOPY VARCHAR2
1381 )
1382 IS
1383 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1384 CURSOR C_Customer_Id_Exists (c_Customer_Id NUMBER) IS
1385 SELECT 'X'
1386 FROM AS_PARTY_CUSTOMERS_V
1387 WHERE customer_id = c_Customer_Id;
1388
1389 l_val VARCHAR2(1);
1390 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_CUSTOMER_ID';
1391
1392 BEGIN
1393
1394 -- Initialize message list if p_init_msg_list is set to TRUE.
1395 IF FND_API.to_Boolean( p_init_msg_list )
1396 THEN
1397 FND_MSG_PUB.initialize;
1398 END IF;
1399
1400
1401 -- Initialize API return status to SUCCESS
1402 x_return_status := FND_API.G_RET_STS_SUCCESS;
1403
1404
1405 IF (p_CUSTOMER_ID is NULL) or (p_CUSTOMER_ID = FND_API.G_MISS_NUM)
1406 THEN
1407 IF l_debug THEN
1408 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1409 'Private API: Violate NOT NULL constraint(CUSTOMER_ID)');
1410 END IF;
1411
1412 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1413 p_module => l_module,
1414 p_msg_name => 'AS_INVALID_ID',
1415 p_token1 => 'FIELD_ID',
1416 p_token1_value => 'CUSTOMER_ID');
1417
1418 x_return_status := FND_API.G_RET_STS_ERROR;
1419 ELSE
1420 OPEN C_Customer_Id_Exists (p_Customer_Id);
1421 FETCH C_Customer_Id_Exists into l_val;
1422 IF C_Customer_Id_Exists%NOTFOUND
1423 THEN
1424 IF l_debug THEN
1425 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1426 'Private API: CUSTOMER_ID is not valid');
1427 END IF;
1428
1429 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1430 p_module => l_module,
1431 p_msg_name => 'AS_INVALID_ID',
1432 p_token1 => 'FIELD_ID',
1433 p_token1_value => 'CUSTOMER_ID');
1434
1435 x_return_status := FND_API.G_RET_STS_ERROR;
1436 END IF;
1437 CLOSE C_Customer_Id_Exists;
1438 END IF;
1439
1440 -- Standard call to get message count and if count is 1, get message info.
1441 FND_MSG_PUB.Count_And_Get
1442 ( p_count => x_msg_count,
1443 p_data => x_msg_data
1444 );
1445
1446 END Validate_CUSTOMER_ID;
1447
1448
1449 PROCEDURE Validate_ADDRESS_ID (
1450 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1451 P_Validation_mode IN VARCHAR2,
1452 P_CUSTOMER_ID IN NUMBER,
1453 P_ADDRESS_ID IN NUMBER,
1454 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1455 X_Return_Status OUT NOCOPY VARCHAR2,
1456 X_Msg_Count OUT NOCOPY NUMBER,
1457 X_Msg_Data OUT NOCOPY VARCHAR2
1458 )
1459 IS
1460
1461 CURSOR C_ADDRESS_ID_Exists(c_address_id NUMBER) IS
1462 SELECT 'X'
1463 FROM AS_PARTY_ADDRESSES_V
1464 WHERE address_id = c_address_id
1465 AND customer_id = P_CUSTOMER_ID;
1466
1467 l_val VARCHAR2(1);
1468 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1469 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_ADDRESS_ID';
1470 BEGIN
1471
1472 -- Initialize message list if p_init_msg_list is set to TRUE.
1473 IF FND_API.to_Boolean( p_init_msg_list )
1474 THEN
1475 FND_MSG_PUB.initialize;
1476 END IF;
1477
1478
1479 -- Initialize API return status to SUCCESS
1480 x_return_status := FND_API.G_RET_STS_SUCCESS;
1481
1482 IF (p_ADDRESS_ID is NOT NULL) and
1483 (p_ADDRESS_ID <> FND_API.G_MISS_NUM)
1484 THEN
1485 OPEN C_ADDRESS_ID_Exists (p_ADDRESS_ID);
1486 FETCH C_ADDRESS_ID_Exists into l_val;
1487 IF C_ADDRESS_ID_Exists%NOTFOUND THEN
1488 IF l_debug THEN
1489 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1490 'Private API: ADDRESS_ID is invalid');
1491 END IF;
1492
1493 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1494 p_module => l_module,
1495 p_msg_name => 'AS_INVALID_ID',
1496 p_token1 => 'FIELD_ID',
1497 p_token1_value => 'ADDRESS_ID');
1498
1499 x_return_status := FND_API.G_RET_STS_ERROR;
1500 END IF;
1501 CLOSE C_ADDRESS_ID_Exists;
1502 END IF;
1503
1504 -- Standard call to get message count and if count is 1, get message info.
1505 FND_MSG_PUB.Count_And_Get
1506 ( p_count => x_msg_count,
1507 p_data => x_msg_data
1508 );
1509
1510 END Validate_ADDRESS_ID;
1511
1512
1513 PROCEDURE Validate_RANK (
1514 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1515 P_Validation_mode IN VARCHAR2,
1516 P_RANK IN VARCHAR2,
1517 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1518 X_Return_Status OUT NOCOPY VARCHAR2,
1519 X_Msg_Count OUT NOCOPY NUMBER,
1520 X_Msg_Data OUT NOCOPY VARCHAR2
1521 )
1522 IS
1523
1524 CURSOR C_RANK_Exists (c_RANK VARCHAR2) IS
1525 SELECT 'X'
1526 FROM as_lookups
1527 WHERE lookup_type = 'CONTACT_RANK_ON_OPPORTUNITY'
1528 and lookup_code = c_RANK
1529 and enabled_flag = 'Y';
1530
1531 l_val VARCHAR2(1);
1532 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1533 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_RANK';
1534 BEGIN
1535
1536 -- Initialize message list if p_init_msg_list is set to TRUE.
1537 IF FND_API.to_Boolean( p_init_msg_list )
1538 THEN
1539 FND_MSG_PUB.initialize;
1540 END IF;
1541
1542
1543 -- Initialize API return status to SUCCESS
1544 x_return_status := FND_API.G_RET_STS_SUCCESS;
1545
1546 IF (p_RANK is NOT NULL) and
1547 (p_RANK <> FND_API.G_MISS_CHAR)
1548 THEN
1549 -- RANK should exist in as_lookups
1550 OPEN C_RANK_Exists ( p_RANK);
1551 FETCH C_RANK_Exists into l_val;
1552 IF C_RANK_Exists%NOTFOUND THEN
1553 IF l_debug THEN
1554 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1555 'Private API: RANK is invalid');
1556 END IF;
1557
1558 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1559 p_module => l_module,
1560 p_msg_name => 'AS_INVALID_ID',
1561 p_token1 => 'FIELD_ID',
1562 p_token1_value => 'RANK');
1563
1564 x_return_status := FND_API.G_RET_STS_ERROR;
1565 END IF;
1566 CLOSE C_RANK_Exists;
1567 END IF;
1568
1569 -- Standard call to get message count and if count is 1, get message info.
1570 FND_MSG_PUB.Count_And_Get
1571 ( p_count => x_msg_count,
1572 p_data => x_msg_data
1573 );
1574
1575 END Validate_RANK;
1576
1577
1578 PROCEDURE Validate_PHONE_ID (
1579 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1580 P_Validation_mode IN VARCHAR2,
1581 P_CONTACT_ID IN NUMBER,
1582 P_CONTACT_PARTY_ID IN NUMBER,
1583 P_PHONE_ID IN NUMBER,
1584 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1585 X_Return_Status OUT NOCOPY VARCHAR2,
1586 X_Msg_Count OUT NOCOPY NUMBER,
1587 X_Msg_Data OUT NOCOPY VARCHAR2
1588 )
1589 IS
1590
1591 CURSOR C_PHONE_ID_Exists(c_phone_id NUMBER) IS
1592 SELECT 'X'
1593 FROM AS_PARTY_PHONES_V
1594 WHERE phone_id = c_phone_id
1595 AND owner_table_name = 'HZ_PARTIES'
1596 AND owner_table_id = P_CONTACT_PARTY_ID;
1597
1598 l_val VARCHAR2(1);
1599 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1600 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_PHONE_ID';
1601 BEGIN
1602
1603 -- Initialize message list if p_init_msg_list is set to TRUE.
1604 IF FND_API.to_Boolean( p_init_msg_list )
1605 THEN
1606 FND_MSG_PUB.initialize;
1607 END IF;
1608
1609
1610 -- Initialize API return status to SUCCESS
1611 x_return_status := FND_API.G_RET_STS_SUCCESS;
1612
1613 IF (p_PHONE_ID is NOT NULL) and
1614 (p_PHONE_ID <> FND_API.G_MISS_NUM)
1615 THEN
1616 OPEN C_PHONE_ID_Exists (p_PHONE_ID);
1617 FETCH C_PHONE_ID_Exists into l_val;
1618 IF C_PHONE_ID_Exists%NOTFOUND THEN
1619 IF l_debug THEN
1620 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1621 'Private API: PHONE_ID is invalid');
1622 END IF;
1623
1624 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1625 p_module => l_module,
1626 p_msg_name => 'AS_INVALID_ID',
1627 p_token1 => 'FIELD_ID',
1628 p_token1_value => 'PHONE_ID');
1629
1630 x_return_status := FND_API.G_RET_STS_ERROR;
1631 END IF;
1632 CLOSE C_PHONE_ID_Exists;
1633 END IF;
1634
1635 -- Standard call to get message count and if count is 1, get message info.
1636 FND_MSG_PUB.Count_And_Get
1637 ( p_count => x_msg_count,
1638 p_data => x_msg_data
1639 );
1640
1641 END Validate_PHONE_ID;
1642
1643
1644 PROCEDURE Validate_PRIMARY_CONTACT_FLAG (
1645 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1646 P_Validation_mode IN VARCHAR2,
1647 P_PRIMARY_CONTACT_FLAG IN VARCHAR2,
1648 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1649 X_Return_Status OUT NOCOPY VARCHAR2,
1650 X_Msg_Count OUT NOCOPY NUMBER,
1651 X_Msg_Data OUT NOCOPY VARCHAR2
1652 )
1653 IS
1654 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1655 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_PRIMARY_CONTACT_FLAG';
1656 BEGIN
1657 -- Initialize message list if p_init_msg_list is set to TRUE.
1658 IF FND_API.to_Boolean( p_init_msg_list )
1659 THEN
1660 FND_MSG_PUB.initialize;
1661 END IF;
1662
1663
1664 -- Initialize API return status to SUCCESS
1665 x_return_status := FND_API.G_RET_STS_SUCCESS;
1666
1667 -- validate NOT NULL column
1668 IF(p_PRIMARY_CONTACT_FLAG is NULL OR
1669 p_PRIMARY_CONTACT_FLAG = FND_API.G_MISS_CHAR )
1670 THEN
1671 NULL;
1672 /* Not required item
1673 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
1674 'Private API: Violate NOT NULL constraint(PRIMARY_CONTACT_FLAG)');
1675 x_return_status := FND_API.G_RET_STS_ERROR;
1676 */
1677 ELSE
1678 IF (UPPER(p_PRIMARY_CONTACT_FLAG) <> 'Y') and
1679 (UPPER(p_PRIMARY_CONTACT_FLAG) <> 'N')
1680 THEN
1681 IF l_debug THEN
1682 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1683 'Private API: PRIMARY_CONTACT_FLAG is invalid');
1684
1685 END IF;
1686
1687 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1688 p_module => l_module,
1689 p_msg_name => 'AS_INVALID_ID',
1690 p_token1 => 'FIELD_ID',
1691 p_token1_value => 'PRIMARY_CONTACT_FLAG');
1692
1693 x_return_status := FND_API.G_RET_STS_ERROR;
1694 END IF;
1695 END IF;
1696
1697 -- Standard call to get message count and if count is 1, get message info.
1698 FND_MSG_PUB.Count_And_Get
1699 ( p_count => x_msg_count,
1700 p_data => x_msg_data
1701 );
1702
1703 END Validate_PRIMARY_CONTACT_FLAG;
1704
1705
1706 PROCEDURE Validate_CONTACT_PARTY_ID (
1707 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1708 P_Validation_mode IN VARCHAR2,
1709 P_CUSTOMER_ID IN NUMBER,
1710 p_LEAD_ID IN NUMBER, -- change for 5285071
1711 P_CONTACT_PARTY_ID IN NUMBER,
1712 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1713 X_Return_Status OUT NOCOPY VARCHAR2,
1714 X_Msg_Count OUT NOCOPY NUMBER,
1715 X_Msg_Data OUT NOCOPY VARCHAR2
1716 )
1717 IS
1718 CURSOR C_CONTACT_PARTY_ID_Exists (c_CONTACT_PARTY_ID NUMBER) IS
1719 SELECT 'X'
1720 FROM HZ_RELATIONSHIPS
1721 WHERE object_id = P_CUSTOMER_ID
1722 AND party_id = c_CONTACT_PARTY_ID
1723 AND OBJECT_TABLE_NAME = 'HZ_PARTIES'
1724 AND SUBJECT_TABLE_NAME = 'HZ_PARTIES'
1725 AND STATUS in ('A', 'I');
1726
1727 -- Cursor to check for duplicate contacts , bug 5285071
1728 CURSOR C_Contact_party_id_dup( c_lead_id NUMBER, c_contact_party_id NUMBER) IS
1729 SELECT contact_party_id
1730 from as_lead_contacts
1731 where lead_id = c_lead_id
1732 and contact_party_id = c_contact_party_id;
1733
1734
1735
1736
1737 l_dup NUMBER;
1738 l_val VARCHAR2(1);
1739 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1740 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_CONTACT_PARTY_ID';
1741 BEGIN
1742
1743 -- Initialize message list if p_init_msg_list is set to TRUE.
1744 IF FND_API.to_Boolean( p_init_msg_list )
1745 THEN
1746 FND_MSG_PUB.initialize;
1747 END IF;
1748
1749
1750 -- Initialize API return status to SUCCESS
1751 x_return_status := FND_API.G_RET_STS_SUCCESS;
1752
1753 IF (p_CONTACT_PARTY_ID is NULL) OR (p_CONTACT_PARTY_ID = FND_API.G_MISS_NUM)
1754 THEN
1755 IF l_debug THEN
1756 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1757 'Private API: Violate NOT NULL CONTACT_PARTY_ID');
1758 END IF;
1759
1760 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1761 p_module => l_module,
1762 p_msg_name => 'AS_INVALID_ID',
1763 p_token1 => 'FIELD_ID',
1764 p_token1_value => 'CONTACT_PARTY_ID');
1765
1766 x_return_status := FND_API.G_RET_STS_ERROR;
1767 END IF;
1768
1769 IF (p_CONTACT_PARTY_ID is not NULL) and (p_CONTACT_PARTY_ID <> FND_API.G_MISS_NUM)
1770 THEN
1771 OPEN C_CONTACT_PARTY_ID_Exists (p_CONTACT_PARTY_ID);
1772 FETCH C_CONTACT_PARTY_ID_Exists into l_val;
1773 IF C_CONTACT_PARTY_ID_Exists%NOTFOUND
1774 THEN
1775 IF l_debug THEN
1776 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1777 'Private API: CONTACT_PARTY_ID is not valid');
1778 END IF;
1779
1780 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1781 p_module => l_module,
1782 p_msg_name => 'AS_INVALID_ID',
1783 p_token1 => 'FIELD_ID',
1784 p_token1_value => 'CONTACT_PARTY_ID');
1785
1786 x_return_status := FND_API.G_RET_STS_ERROR;
1787 END IF;
1788 CLOSE C_CONTACT_PARTY_ID_Exists;
1789
1790 -- mohali changes for bug 5285071
1791 OPEN C_contact_party_id_dup(p_lead_id, p_contact_party_id);
1792 FETCH C_contact_party_id_dup into l_dup;
1793 IF C_contact_party_id_dup%FOUND and P_Validation_mode = AS_UTILITY_PVT.G_CREATE THEN
1794 IF l_debug THEN
1795 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1796 'Private API: CONTACT_PARTY_ID is Duplicate');
1797 END IF;
1798
1799 AS_UTILITY_PVT.Set_Message(p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1800 p_module => l_module,
1801 p_msg_name => 'API_POSSIBLE_DUP_CONTACT',
1802 p_token1 => 'CONTACT_ID',
1803 p_token1_value => p_CONTACT_PARTY_ID,
1804 p_token2 => 'CONTACT_NAME',
1805 p_token2_value => '');
1806
1807 x_return_status := FND_API.G_RET_STS_ERROR;
1808 END IF;
1809 CLOSE C_contact_party_id_dup;
1810 -- end of changes for 5285071
1811
1812 END IF;
1813
1814 -- Standard call to get message count and if count is 1, get message info.
1815 FND_MSG_PUB.Count_And_Get
1816 ( p_count => x_msg_count,
1817 p_data => x_msg_data
1818 );
1819
1820 END Validate_CONTACT_PARTY_ID;
1821
1822
1823 -- Hint: inter-field level validation can be added here.
1824 -- Hint: If p_validation_mode = AS_UTILITY_PVT.G_VALIDATE_UPDATE, we should use
1825 -- cursor to get old values for all fields used in inter-field validation
1826 -- and set all G_MISS_XXX fields to original value stored in database
1827 -- table.
1828 PROCEDURE Validate_Contact_rec(
1829 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1830 P_Validation_mode IN VARCHAR2,
1831 P_Contact_Rec IN AS_OPPORTUNITY_PUB.Contact_Rec_Type,
1832 X_Return_Status OUT NOCOPY VARCHAR2,
1833 X_Msg_Count OUT NOCOPY NUMBER,
1834 X_Msg_Data OUT NOCOPY VARCHAR2
1835 )
1836 IS
1837 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1838 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_Contact_rec';
1839 BEGIN
1840
1841 -- Initialize message list if p_init_msg_list is set to TRUE.
1842 IF FND_API.to_Boolean( p_init_msg_list )
1843 THEN
1844 FND_MSG_PUB.initialize;
1845 END IF;
1846
1847
1848 -- Initialize API return status to SUCCESS
1849 x_return_status := FND_API.G_RET_STS_SUCCESS;
1850
1851 -- Hint: Validate data
1852 -- If data not valid
1853 -- THEN
1854 -- x_return_status := FND_API.G_RET_STS_ERROR;
1855
1856 -- Debug Message
1857 IF l_debug THEN
1858 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1859 'Private API: Validated Record');
1860 END IF;
1861 -- Standard call to get message count and if count is 1, get message info.
1862 FND_MSG_PUB.Count_And_Get
1863 ( p_count => x_msg_count,
1864 p_data => x_msg_data
1865 );
1866
1867 END Validate_Contact_Rec;
1868
1869 PROCEDURE Validate_opp_contact(
1870 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1871 P_Validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1872 P_Validation_mode IN VARCHAR2,
1873 P_Contact_Rec IN AS_OPPORTUNITY_PUB.Contact_Rec_Type,
1874 X_Return_Status OUT NOCOPY VARCHAR2,
1875 X_Msg_Count OUT NOCOPY NUMBER,
1876 X_Msg_Data OUT NOCOPY VARCHAR2
1877 )
1878 IS
1879 l_api_name CONSTANT VARCHAR2(30) := 'Validate_opp_contact';
1880 X_Item_Property_Rec AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE;
1881 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1882 l_module CONSTANT VARCHAR2(255) := 'as.plsql.lcnpv.Validate_opp_contact';
1883 BEGIN
1884
1885 -- Debug Message
1886 IF l_debug THEN
1887 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1888 'Private API: ' || l_api_name || ' start');
1889 END IF;
1890
1891 -- Initialize API return status to SUCCESS
1892 x_return_status := FND_API.G_RET_STS_SUCCESS;
1893
1894 IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM) THEN
1895 -- Hint: We provide validation procedure for every column. Developer
1896 -- should delete unnecessary validation procedures.
1897 IF l_debug THEN
1898 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1899 'Private API: Validate items start');
1900
1901 END IF;
1902
1903 Validate_LEAD_CONTACT_ID(
1904 p_init_msg_list => FND_API.G_FALSE,
1905 p_validation_mode => p_validation_mode,
1906 p_LEAD_CONTACT_ID => P_Contact_Rec.LEAD_CONTACT_ID,
1907 x_item_property_rec => x_item_property_rec,
1908 x_return_status => x_return_status,
1909 x_msg_count => x_msg_count,
1910 x_msg_data => x_msg_data);
1911 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1912 raise FND_API.G_EXC_ERROR;
1913 END IF;
1914 IF l_debug THEN
1915 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1916 'Private API: Validated LEAD_CONTACT_ID ');
1917
1918 END IF;
1919
1920 Validate_LEAD_ID(
1921 p_init_msg_list => FND_API.G_FALSE,
1922 p_validation_mode => p_validation_mode,
1923 p_LEAD_ID => P_Contact_Rec.LEAD_ID,
1924 x_item_property_rec => x_item_property_rec,
1925 x_return_status => x_return_status,
1926 x_msg_count => x_msg_count,
1927 x_msg_data => x_msg_data);
1928 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1929 raise FND_API.G_EXC_ERROR;
1930 END IF;
1931 IF l_debug THEN
1932 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1933 'Private API: Validated LEAD_ID ');
1934
1935 END IF;
1936
1937 Validate_CUSTOMER_ID(
1938 p_init_msg_list => FND_API.G_FALSE,
1939 p_validation_mode => p_validation_mode,
1940 p_CUSTOMER_ID => P_Contact_Rec.CUSTOMER_ID,
1941 x_item_property_rec => x_item_property_rec,
1942 x_return_status => x_return_status,
1943 x_msg_count => x_msg_count,
1944 x_msg_data => x_msg_data);
1945 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1946 raise FND_API.G_EXC_ERROR;
1947 END IF;
1948 IF l_debug THEN
1949 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1950 'Private API: Validated CUSTOMER_ID ');
1951 END IF;
1952
1953
1954 Validate_ADDRESS_ID(
1955 p_init_msg_list => FND_API.G_FALSE,
1956 p_validation_mode => p_validation_mode,
1957 p_CUSTOMER_ID => P_Contact_Rec.CUSTOMER_ID,
1958 p_ADDRESS_ID => P_Contact_Rec.ADDRESS_ID,
1959 x_item_property_rec => x_item_property_rec,
1960 x_return_status => x_return_status,
1961 x_msg_count => x_msg_count,
1962 x_msg_data => x_msg_data);
1963 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1964 raise FND_API.G_EXC_ERROR;
1965 END IF;
1966 IF l_debug THEN
1967 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1968 'Private API: Validated ADDRESS_ID ');
1969 END IF;
1970
1971 Validate_CONTACT_PARTY_ID(
1972 p_init_msg_list => FND_API.G_FALSE,
1973 p_validation_mode => p_validation_mode,
1974 p_CUSTOMER_ID => P_Contact_Rec.CUSTOMER_ID,
1975 p_LEAD_ID => P_Contact_Rec.Lead_ID,
1976 p_CONTACT_PARTY_ID => P_Contact_Rec.CONTACT_PARTY_ID,
1977 x_item_property_rec => x_item_property_rec,
1978 x_return_status => x_return_status,
1979 x_msg_count => x_msg_count,
1980 x_msg_data => x_msg_data);
1981 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1982 raise FND_API.G_EXC_ERROR;
1983 END IF;
1984 IF l_debug THEN
1985 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1986 'Private API: Validated CONTACT_PARTY_ID');
1987
1988 END IF;
1989
1990 Validate_CONTACT_ID(
1991 p_init_msg_list => FND_API.G_FALSE,
1992 p_validation_mode => p_validation_mode,
1993 p_CUSTOMER_ID => P_Contact_Rec.CUSTOMER_ID,
1994 p_CONTACT_ID => P_Contact_Rec.CONTACT_ID,
1995 x_item_property_rec => x_item_property_rec,
1996 x_return_status => x_return_status,
1997 x_msg_count => x_msg_count,
1998 x_msg_data => x_msg_data);
1999 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2000 raise FND_API.G_EXC_ERROR;
2001 END IF;
2002 IF l_debug THEN
2003 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2004 'Private API: Validated CONTACT_ID ');
2005
2006 END IF;
2007
2008 Validate_PHONE_ID(
2009 p_init_msg_list => FND_API.G_FALSE,
2010 p_validation_mode => p_validation_mode,
2011 p_CONTACT_ID => P_Contact_Rec.CONTACT_ID,
2012 p_CONTACT_PARTY_ID => P_Contact_Rec.CONTACT_PARTY_ID,
2013 p_PHONE_ID => P_Contact_Rec.PHONE_ID,
2014 x_item_property_rec => x_item_property_rec,
2015 x_return_status => x_return_status,
2016 x_msg_count => x_msg_count,
2017 x_msg_data => x_msg_data);
2018 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2019 raise FND_API.G_EXC_ERROR;
2020 END IF;
2021 IF l_debug THEN
2022 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2023 'Private API: Validated PHONE_ID ');
2024
2025 END IF;
2026
2027 Validate_RANK(
2028 p_init_msg_list => FND_API.G_FALSE,
2029 p_validation_mode => p_validation_mode,
2030 p_RANK => P_Contact_Rec.RANK_CODE,
2031 x_item_property_rec => x_item_property_rec,
2032 x_return_status => x_return_status,
2033 x_msg_count => x_msg_count,
2034 x_msg_data => x_msg_data);
2035 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2036 raise FND_API.G_EXC_ERROR;
2037 END IF;
2038 IF l_debug THEN
2039 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2040 'Private API: Validated RANK ');
2041
2042 END IF;
2043
2044 Validate_ENABLED_FLAG(
2045 p_init_msg_list => FND_API.G_FALSE,
2046 p_validation_mode => p_validation_mode,
2047 p_ENABLED_FLAG => P_Contact_Rec.ENABLED_FLAG,
2048 x_item_property_rec => x_item_property_rec,
2049 x_return_status => x_return_status,
2050 x_msg_count => x_msg_count,
2051 x_msg_data => x_msg_data);
2052 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2053 raise FND_API.G_EXC_ERROR;
2054 END IF;
2055 IF l_debug THEN
2056 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2057 'Private API: Validated ENABLED_FLAG ');
2058
2059 END IF;
2060
2061 Validate_PRIMARY_CONTACT_FLAG(
2062 p_init_msg_list => FND_API.G_FALSE,
2063 p_validation_mode => p_validation_mode,
2064 p_PRIMARY_CONTACT_FLAG => P_Contact_Rec.PRIMARY_CONTACT_FLAG,
2065 x_item_property_rec => x_item_property_rec,
2066 x_return_status => x_return_status,
2067 x_msg_count => x_msg_count,
2068 x_msg_data => x_msg_data);
2069 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2070 raise FND_API.G_EXC_ERROR;
2071 END IF;
2072 IF l_debug THEN
2073 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2074 'Private API: Validated PRIMARY_CONTACT_FLAG ');
2075
2076 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2077 'Private API: Validate items end');
2078 END IF;
2079
2080 END IF;
2081
2082 IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD) THEN
2083 -- Hint: Inter-field level validation can be added here
2084 -- invoke record level validation procedures
2085 Validate_Contact_Rec(
2086 p_init_msg_list => FND_API.G_FALSE,
2087 p_validation_mode => p_validation_mode,
2088 P_Contact_Rec => P_Contact_Rec,
2089 x_return_status => x_return_status,
2090 x_msg_count => x_msg_count,
2091 x_msg_data => x_msg_data);
2092
2093 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2094 raise FND_API.G_EXC_ERROR;
2095 END IF;
2096 END IF;
2097
2098 IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_RECORD) THEN
2099 -- invoke inter-record level validation procedures
2100 NULL;
2101 END IF;
2102
2103 IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_ENTITY) THEN
2104 -- invoke inter-entity level validation procedures
2105 NULL;
2106 END IF;
2107
2108
2109 -- Debug Message
2110 IF l_debug THEN
2111 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2112 'Private API: ' || l_api_name || ' end');
2113 END IF;
2114 END Validate_opp_contact;
2115
2116
2117 End AS_OPP_CONTACT_PVT;