[Home] [Help]
PACKAGE BODY: APPS.AS_SALES_LEADS_PVT
Source
1 PACKAGE BODY AS_SALES_LEADS_PVT as
2 /* $Header: asxvslmb.pls 120.1 2006/03/25 04:27:46 savadhan noship $ */
3 -- Start of Comments
4 -- Package name : AS_SALES_LEADS_PVT
5 -- Purpose : Sales Leads Management
6 -- NOTE :
7 -- History :
8 -- 06/05/2000 FFANG Created.
9 -- 06/06/2000 FFANG ModIFied according data schema changes.
10 -- 08/30/2000 FFANG Add assign_to_salesforce_id to AS_SALES_LEADS
11 -- 08/31/2000 FFANG Add assign_to_salesforce_id to AS_SALES_LEADS_LOG
12 -- 09/20/2000 FFANG For bug 1406777, add different logics to
13 -- validate_sales_lead_id when calling from create or
14 -- update
15 -- 09/20/2000 FFANG For bug 1406761, add different logics to
16 -- validate_contact_party_id when calling from create or
17 -- update
18 -- 09/20/2000 FFANG For bug 1400244, add a procedure: set_default_values
19 -- to set currency_code as user default value, if
20 -- budget_amount is entered but not currency_code
21 -- 09/21/2000 FFANG For bug 1400264, add two lines to others exception
22 -- handling to meet the coding standard
23 -- 09/26/2000 FFANG Correct procedure 'Validate_PRM_IND_CLS_CODE':
24 -- lookup_type should be 'PRM_IND_CLASSIFICATION_TYPE'
25 -- 09/27/2000 FFANG Use AS_INTEREST_PVT.Validate_Interest_Fields instead
26 -- of Validate_Intrst_Type_Sec_CODE
27 -- 09/28/2000 FFANG Modify validate_phone_id
28 -- 09/28/2000 FFANG Fix some minor bugs
29 -- 10/02/2000 FFANG For bug 1416170, do auto-qualify only when keep_flag
30 -- <> 'Y'
31 -- 10/02/2000 FFANG For bug 1417373, l_qualified length set to 30.
32 -- 10/09/2000 FFANG For bug 1448995, use two new error messages instead
33 -- of API_INVALID_ID in "Link_Lead_To_Opportunity"
34 -- 10/12/2000 FFANG 1. For bug 1449308, in Link_Lead_To_Opportunity,
35 -- Should not use sales_lead_line_id as lead_line_id to
36 -- create an opportunity line.
37 -- 2. For bug 1449308, in Link_Lead_To_Opportunity,
38 -- l_Lead_Opp_Line_Id should be initialized.
39 -- 10/26/2000 FFANG for BUG 1478517, in create_opportunity_for_lead,
40 -- pass budget_amount to opportunity's customer_budget
41 -- instead of total_amount, since
42 -- create_opp_lines will update total_amount according
43 -- to lines' total amount
44 -- 10/27/2000 FFANG for bug 1478517, in Link_Lead_To_Opportunity and
45 -- create_opportunity_for_lead, copy sales lead contacts
46 -- information to opportunity contact table
47 -- 10/30/2000 FFANG for bug 1475407, when checking if do auto-qualify,
48 -- also need to check if keep_flag is null
49 -- 10/30/2000 FFANG for bug 1479671, in Link_Lead_To_Opportunity and
50 -- create_opportunity_for_lead, copy source_promotion_id
51 -- and offer_id in sales lead lines to opportunity lines
52 -- 10/31/2000 FFANG when creating opportunity for sales leads, some
53 -- columns are missing to be copied. Added them.
54 -- 11/06/2000 FFANG For bug 1423478:
55 -- 1. Add procedure CALL_WF_TO_ASSIGN to kick off
56 -- sales lead assignment workflow
57 -- 2. In Update_Sales_Lead, call CALL_WF_TO_ASSIGN after
58 -- calling update table handler
59 -- 11/17/2000 FFANG Workflow will call update_sales_lead, if we kick-off
60 -- workflow within update_sales_lead, it will cause
61 -- infinite recursive calls. => Take out calling
62 -- CALL_WF_TO_ASSIGN from Update_Sales_Lead.
63 -- 11/19/2000 FFANG For bug 1501336, check profile option
64 -- AS_CUSTOMER_ADDRESS_REQUIRED to see if address_id is
65 -- required or not
66 -- 11/19/2000 FFANG for bug 1475568, if status is changed to 'DECLINED',
67 -- don't do auto-qualify
68 -- 11/29/2000 FFANG for bug 1518684, if JTF assignment manager got no
69 -- resource_id back, don't error out, put error message
70 -- but return status remains 'S'
71 -- 12/09/2000 FFANG for bug 1504040, when creating a sales lead, only
72 -- when status is "New" or "Unqualified" then launch
73 -- auto-qualification
74 -- 12/11/2000 FFANG for bug 1504040, when updating a sales lead, only
75 -- when orginal status is "New" or "Unqualified" then
76 -- launch auto-qualification
77 -- 12/12/2000 FFANG For bug 1529866, add one parameter P_OPP_STATUS in
78 -- create_opportunity_for_lead to get opportunity status
79 -- when creating opportunity
80 -- 12/19/2000 SOLIN For bug 1530383, tune C_Get_Sales_Lead in
81 -- Assign_Sales_Lead API and add creation_date and
82 -- source_promotion_id in the cursor.
83 -- 12/19/2000 SOLIN For bug 1514981, set default values for accept_flag,
84 -- keep_flag, urgent_flag,import_flag, deleted_flag,
85 -- currency_code.
86 -- 01/03/2001 SOLIN For bug 1568056, Validate_address_id shouldn't raise
87 -- exception when address_id is g_miss in update_sales_
88 -- lead.
89 -- 01/05/2001 SOLIN Changed Assign_Sales_Lead because l_assignresources_tbl
90 -- may start from 1.
91 -- 01/08/2001 SOLIN For bug 1558460, only customer_id is required to get
92 -- potential opportunities.
93 -- 01/08/2001 SOLIN For bug 1570991, change validation procedure to
94 -- assign_to_person_id, assign_to_salesforce_id
95 -- 01/13/2001 FFANG For bug 1582747, when calling Get_CurrentUser,
96 -- pass p_identity_salesforce_id into p_salesforce_id
97 -- instead of passing NULL
98 -- 02/02/2001 FFANG Instead of using views, use base tables.
99 -- But as_sf_ptr_v and as_opportunity_details_v haven't
100 -- been replaced yet.
101 -- 02/06/2001 FFANG For bug 1628894, check if opp contact has already
102 -- existed before calling create_opp_contacts
103 -- 12/17/2002 SOLIN Populate column lead_rank_ind:
104 -- 'U': lead is upgraded.
105 -- 'D': lead is downgraded.
106 -- 'N': none of above.
107 -- Set as_sales_leads_log.manual_rank_flag:
108 -- 'Y': user manually sets rank
109 -- 'N': rating engine sets rank
110 -- null: rank is not updated
111 -- 11/08/2004 BMUTHUKR Modified validate_status_close_reason procedure to fix bug 3931489.
112 --
113 -- END of Comments
114
115
116 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AS_SALES_LEADS_PVT';
117 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asxvslmb.pls';
118
119
120 -- ffang 092000 for bug 1400244
121 -- solin 122000 for bug 1514981
122 AS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
123 AS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
124 AS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
125 AS_DEBUG_ERROR_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_ERROR);
126
127 PROCEDURE Set_default_values (
128 p_mode IN VARCHAR2,
129 px_SALES_LEAD_rec IN OUT NOCOPY AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type
130 )
131 IS
132 BEGIN
133
134
135 -- for 11.5.8 HP enhancement, removing channel_code as mandatory from UI.
136 -- If no channel code is passed / null, then also let it be as is.
137 -- Channel selection engine will assign an appropriate channel
138
139 /* IF (px_SALES_LEAD_rec.channel_code IS NULL) OR
140 (px_SALES_LEAD_rec.channel_code = FND_API.G_MISS_CHAR
141 AND p_mode = AS_UTILITY_PVT.G_CREATE)
142 THEN
143 px_SALES_LEAD_rec.channel_code := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_CHANNEL');
144 END IF; */
145
146 IF (px_SALES_LEAD_rec.status_code IS NULL) OR
147 (px_SALES_LEAD_rec.status_code = FND_API.G_MISS_CHAR
148 AND p_mode = AS_UTILITY_PVT.G_CREATE)
149 THEN
150 px_SALES_LEAD_rec.status_code := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_STATUS');
151 END IF;
152
153
154 IF (px_SALES_LEAD_rec.vehicle_response_code IS NULL) OR
155 (px_SALES_LEAD_rec.vehicle_response_code = FND_API.G_MISS_CHAR
156 AND p_mode = AS_UTILITY_PVT.G_CREATE)
157 THEN
158 px_SALES_LEAD_rec.vehicle_response_code := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_VEHICLE_RESPONSE_CODE');
159 END IF;
160
161
162 IF (px_SALES_LEAD_rec.budget_status_code IS NULL) OR
163 (px_SALES_LEAD_rec.budget_status_code = FND_API.G_MISS_CHAR
164 AND p_mode = AS_UTILITY_PVT.G_CREATE)
165 THEN
166 px_SALES_LEAD_rec.budget_status_code := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_BUDGET_STATUS');
167 END IF;
168
169
170
171 IF (px_SALES_LEAD_rec.decision_timeframe_code IS NULL) OR
172 (px_SALES_LEAD_rec.decision_timeframe_code = FND_API.G_MISS_CHAR
173 AND p_mode = AS_UTILITY_PVT.G_CREATE)
174 THEN
175 px_SALES_LEAD_rec.decision_timeframe_code := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_DECISION_TIMEFRAME');
176 END IF;
177
178
179
180
181
182 IF (px_SALES_LEAD_rec.auto_assignment_type IS NULL) OR
183 (px_SALES_LEAD_rec.auto_assignment_type = FND_API.G_MISS_CHAR
184 AND p_mode = AS_UTILITY_PVT.G_CREATE)
185 THEN
186 px_SALES_LEAD_rec.auto_assignment_type := 'TAP';
187 END IF;
188
189 IF (px_SALES_LEAD_rec.prm_assignment_type IS NULL) OR
190 (px_SALES_LEAD_rec.prm_assignment_type = FND_API.G_MISS_CHAR
191 AND p_mode = AS_UTILITY_PVT.G_CREATE)
192 THEN
193 px_SALES_LEAD_rec.prm_assignment_type := 'UNASSIGNED';
194 END IF;
195
196
197
198
199 IF (px_SALES_LEAD_rec.ACCEPT_FLAG IS NULL) OR
200 (px_SALES_LEAD_rec.ACCEPT_FLAG = FND_API.G_MISS_CHAR
201 AND p_mode = AS_UTILITY_PVT.G_CREATE)
202 THEN
203 px_SALES_LEAD_rec.ACCEPT_FLAG := 'N';
204 END IF;
205
206 IF (px_SALES_LEAD_rec.KEEP_FLAG IS NULL) OR
207 (px_SALES_LEAD_rec.KEEP_FLAG = FND_API.G_MISS_CHAR
208 AND p_mode = AS_UTILITY_PVT.G_CREATE)
209 THEN
210 px_SALES_LEAD_rec.KEEP_FLAG := 'N';
211 END IF;
212
213 IF (px_SALES_LEAD_rec.URGENT_FLAG IS NULL) OR
214 (px_SALES_LEAD_rec.URGENT_FLAG = FND_API.G_MISS_CHAR
215 AND p_mode = AS_UTILITY_PVT.G_CREATE)
216 THEN
217 px_SALES_LEAD_rec.URGENT_FLAG := 'N';
218 END IF;
219
220 IF (px_SALES_LEAD_rec.IMPORT_FLAG IS NULL) OR
221 (px_SALES_LEAD_rec.IMPORT_FLAG = FND_API.G_MISS_CHAR
222 AND p_mode = AS_UTILITY_PVT.G_CREATE)
223 THEN
224 px_SALES_LEAD_rec.IMPORT_FLAG := 'N';
225 END IF;
226
227 IF (px_SALES_LEAD_rec.DELETED_FLAG IS NULL) OR
228 (px_SALES_LEAD_rec.DELETED_FLAG = FND_API.G_MISS_CHAR
229 AND p_mode = AS_UTILITY_PVT.G_CREATE)
230 THEN
231 px_SALES_LEAD_rec.DELETED_FLAG := 'N';
232 END IF;
233
234
235 IF (px_SALES_LEAD_rec.QUALIFIED_FLAG IS NULL) OR
236 (px_SALES_LEAD_rec.QUALIFIED_FLAG = FND_API.G_MISS_CHAR
237 AND p_mode = AS_UTILITY_PVT.G_CREATE)
238 THEN
239 px_SALES_LEAD_rec.QUALIFIED_FLAG := 'N';
240 END IF;
241 IF (px_SALES_LEAD_rec.LEAD_RANK_IND IS NULL) OR
242 (px_SALES_LEAD_rec.LEAD_RANK_IND = FND_API.G_MISS_CHAR
243 AND p_mode = AS_UTILITY_PVT.G_CREATE)
244 THEN
245 px_SALES_LEAD_rec.LEAD_RANK_IND := 'N';
246 END IF;
247
248
249 --IF (px_SALES_LEAD_rec.budget_amount is not NULL) and
250 -- (px_SALES_LEAD_rec.budget_amount <> FND_API.G_MISS_NUM)
251 --THEN
252 If (px_SALES_LEAD_rec.currency_code IS NULL) or
253 (px_SALES_LEAD_rec.currency_code = FND_API.G_MISS_CHAR
254 and p_mode = AS_UTILITY_PVT.G_CREATE)
255 THEN
256 px_SALES_LEAD_rec.currency_code :=
257 FND_PROFILE.VALUE('JTF_PROFILE_DEFAULT_CURRENCY');
258 End If;
259 --END IF;
260
261 End Set_default_values;
262 --end ffang 092000 for bug 1400244
263 -- end solin 122000 for bug 1514981
264
265
266
267 -- *************************
268 -- Validation Procedures
269 -- *************************
270 --
271 -- Item level validation procedures
272 --
273
274 /* Since this column is not required, this validation procedure
275 is not needed any more. ffang 05/15/00
276 PROCEDURE Validate_LEAD_NUMBER (
277 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
278 P_Validation_mode IN VARCHAR2,
279 P_LEAD_NUMBER IN VARCHAR2,
280 X_Return_Status OUT NOCOPY VARCHAR2,
281 X_Msg_Count OUT NOCOPY NUMBER,
282 X_Msg_Data OUT NOCOPY VARCHAR2
283 )
284 IS
285 BEGIN
286 -- Initialize message list IF p_init_msg_list is set to TRUE.
287 IF FND_API.to_Boolean( p_init_msg_list )
288 THEN
289 FND_MSG_PUB.initialize;
290 END IF;
291
292 -- Initialize API return status to SUCCESS
293 x_return_status := FND_API.G_RET_STS_SUCCESS;
294
295 -- Validate Lead Number
296 IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE) THEN
297 IF (p_LEAD_NUMBER is NULL OR p_LEAD_NUMBER = FND_API.G_MISS_CHAR) THEN
298 x_return_status := FND_API.G_RET_STS_ERROR;
299 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
300 THEN
301 FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
302 FND_MESSAGE.Set_Token('COLUMN', 'LEAD_NUMBER', FALSE);
303 FND_MSG_PUB.ADD;
304 END IF;
305 END IF;
306 ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE) THEN
307 IF p_LEAD_NUMBER IS NULL THEN
308 x_return_status := FND_API.G_RET_STS_ERROR;
309 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
310 THEN
311 FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
312 FND_MESSAGE.Set_Token('COLUMN', 'LEAD_NUMBER', FALSE);
313 FND_MSG_PUB.ADD;
314 END IF;
315 END IF;
316 END IF;
317
318 -- Standard call to get message count and IF count is 1, get message info.
319 FND_MSG_PUB.Count_And_Get
320 ( p_count => x_msg_count,
321 p_data => x_msg_data );
322 END Validate_LEAD_NUMBER;
323 */
324
325
326 PROCEDURE Validate_SALES_LEAD_ID (
327 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
328 P_Validation_mode IN VARCHAR2,
329 P_Sales_Lead_Id IN NUMBER,
330 X_Return_Status OUT NOCOPY VARCHAR2,
331 X_Msg_Count OUT NOCOPY NUMBER,
332 X_Msg_Data OUT NOCOPY VARCHAR2
333 )
334 IS
335 CURSOR C_Sales_Lead_Id_Exists (X_Sales_Lead_Id NUMBER) IS
336 SELECT 'X'
337 FROM as_sales_leads
338 WHERE sales_lead_id = X_Sales_Lead_Id;
339
340 l_val VARCHAR2(1);
341
342 BEGIN
343 -- Initialize message list IF p_init_msg_list is set to TRUE.
344 IF FND_API.to_Boolean( p_init_msg_list )
345 THEN
346 FND_MSG_PUB.initialize;
347 END IF;
348
349 -- Initialize API return status to SUCCESS
350 x_return_status := FND_API.G_RET_STS_SUCCESS;
351
352 -- Debug Message
353 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
354 -- 'Validate Sales Lead Id'); END IF;
355
356 -- ffang 092000 for bug 1406777
357 -- Calling from Create API
358 IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
359 THEN
360 IF (p_SALES_LEAD_ID is NOT NULL) and
361 (p_SALES_LEAD_ID <> FND_API.G_MISS_NUM)
362 THEN
363 OPEN C_Sales_Lead_Id_Exists (p_Sales_Lead_Id);
364 FETCH C_Sales_Lead_Id_Exists into l_val;
365
366 IF C_Sales_Lead_Id_Exists%NOTFOUND
367 THEN
368 AS_UTILITY_PVT.Set_Message(
369 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
370 p_msg_name => 'API_INVALID_ID',
371 p_token1 => 'SALES_LEAD_ID',
372 p_token1_value => p_Sales_Lead_Id);
373
374 x_return_status := FND_API.G_RET_STS_ERROR;
375 END IF;
376 CLOSE C_Sales_Lead_Id_Exists ;
377 END IF;
378
379 -- Calling from Update API
380 ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
381 THEN
382 -- validate NOT NULL column
383 IF (p_sales_lead_id is NULL) or (p_sales_lead_id = FND_API.G_MISS_NUM)
384 THEN
385 AS_UTILITY_PVT.Set_Message(
386 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
387 p_msg_name => 'API_MISSING_LEAD_ID');
388
389 x_return_status := FND_API.G_RET_STS_ERROR;
390 ELSE
391 OPEN C_Sales_Lead_Id_Exists (p_sales_lead_id);
392 FETCH C_Sales_Lead_Id_Exists into l_val;
393
394 IF C_Sales_Lead_Id_Exists%NOTFOUND
395 THEN
396 AS_UTILITY_PVT.Set_Message(
397 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
398 p_msg_name => 'API_INVALID_LEAD_ID',
399 p_token1 => 'VALUE',
400 p_token1_value => p_sales_lead_id );
401
402 x_return_status := FND_API.G_RET_STS_ERROR;
403 END IF;
404
405 CLOSE C_Sales_Lead_Id_Exists;
406 END IF;
407 END IF;
408 -- end ffang 092000 for bug 1306777
409
410 -- Standard call to get message count and IF count is 1, get message info.
411 FND_MSG_PUB.Count_And_Get
412 ( p_count => x_msg_count,
413 p_data => x_msg_data );
414
415 END Validate_SALES_LEAD_ID;
416
417
418
419 PROCEDURE Validate_Sales_Methodology_ID (
420 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
421 P_Validation_mode IN VARCHAR2,
422 P_Sales_Methodology_ID IN NUMBER,
423 X_Return_Status OUT NOCOPY VARCHAR2,
424 X_Msg_Count OUT NOCOPY NUMBER,
425 X_Msg_Data OUT NOCOPY VARCHAR2
426 )
427 IS
428
429 -- 11.5.10 ckapoor
430 -- This cursor validates if the sales methodology passed in
431 -- corresponds to an active sales methodology with an active sales stage associated with it
432
433 CURSOR C_Methodology_Exists (X_Sales_Methodology_ID NUMBER) IS
434 select 'X'
435 from as_sales_methodology_b asmb
436 --, as_sales_methodology_tl asmt
437 where trunc(nvl(asmb.start_date_active, sysdate)) <= trunc(sysdate)
438 and trunc(nvl(asmb.end_date_active, sysdate)) >= trunc(sysdate)
439 --and asmb.sales_methodology_id = asmt.sales_methodology_id
440 --and asmt.language = userenv('LANG')
441 and asmb.sales_methodology_id = X_Sales_Methodology_ID;
442
443 -- ckapoor 05/11/04 bug 3621389 - change validation sql for sales methodology id
444
445 --and exists (select 1 from as_sales_meth_stage_map b, as_sales_stages_all_b c
446 -- where asmb.sales_methodology_id = b.sales_methodology_id
447 -- and b.sales_stage_id = c.sales_stage_id
448 -- and c.applicability in ('LEAD', 'BOTH')
449 -- and c.enabled_flag = 'Y'
450 -- and trunc(nvl(c.start_date_active, sysdate)) <= trunc(sysdate)
451 -- and trunc(nvl(c.end_date_active, sysdate)) >= trunc(sysdate)
452 -- and rownum = 1);
453
454
455
456 l_val VARCHAR2(1);
457 BEGIN
458 -- Initialize message list IF p_init_msg_list is set to TRUE.
459 IF FND_API.to_Boolean( p_init_msg_list )
460 THEN
461 FND_MSG_PUB.initialize;
462 END IF;
463
464 -- Initialize API return status to SUCCESS
465 x_return_status := FND_API.G_RET_STS_SUCCESS;
466
467 -- Debug Message
468 IF (AS_DEBUG_LOW_ON) THEN
469 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
470 'Validate SALES methodology id'); END IF;
471
472 IF (p_validation_mode=AS_UTILITY_PVT.G_CREATE and (P_Sales_Methodology_ID IS NOT NULL) and
473 (P_Sales_Methodology_ID <> FND_API.G_MISS_NUM))
474 -- OR
475 -- (p_validation_mode=AS_UTILITY_PVT.G_UPDATE)
476 THEN
477 OPEN C_Methodology_Exists ( p_Sales_Methodology_ID);
478 FETCH C_Methodology_Exists into l_val;
479 IF C_Methodology_Exists%NOTFOUND
480 THEN
481 AS_UTILITY_PVT.Set_Message(
482 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
483 p_msg_name => 'API_INVALID_ID',
484 p_token1 => 'COLUMN',
485 p_token1_value => 'SALES METHODOLOGY',
486 p_token2 => 'VALUE',
487 p_token2_value => p_Sales_Methodology_ID );
488
489 x_return_status := FND_API.G_RET_STS_ERROR;
490 END IF;
491 CLOSE C_Methodology_Exists;
492 END IF;
493
494
495 -- Standard call to get message count and IF count is 1, get message info.
496 FND_MSG_PUB.Count_And_Get
497 ( p_count => x_msg_count,
498 p_data => x_msg_data );
499 END Validate_Sales_Methodology_ID;
500
501
502
503 PROCEDURE Validate_Sales_Stage_ID (
504 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
505 P_Validation_mode IN VARCHAR2,
506 P_Sales_Methodology_ID IN NUMBER,
507 P_Sales_Stage_ID IN NUMBER,
508 X_Return_Status OUT NOCOPY VARCHAR2,
509 X_Msg_Count OUT NOCOPY NUMBER,
510 X_Msg_Data OUT NOCOPY VARCHAR2
511 )
512 IS
513
514 -- 11.5.10 ckapoor
515 -- This cursor validates if the sales stage corresponds to the sales meth id passed in
516
517 CURSOR C_Sales_Stage_Exists(X_Sales_Methodology_ID NUMBER, X_Sales_Stage_ID NUMBER) IS
518 SELECT 'X'
519 FROM AS_SALES_METH_STAGE_MAP asms
520 , AS_SALES_STAGES_ALL_B assa
521 WHERE asms.sales_stage_id = assa.sales_stage_id
522 AND TRUNC(NVL(assa.start_date_active, SYSDATE)) <= TRUNC(SYSDATE)
523 AND TRUNC(NVL(assa.end_date_active, SYSDATE)) >= TRUNC(SYSDATE)
524 AND sales_methodology_id = X_Sales_Methodology_ID
525 AND assa.applicability IN ('LEAD', 'BOTH')
526 -- ckapoor 05/11/04 bug 3621389 -
527 -- adding new additional condition as per AUYU
528 AND assa.enabled_flag = 'Y'
529 -- end ckapoor
530 AND asms.sales_stage_id = X_Sales_Stage_ID
531
532 ;
533 -- ORDER BY asms.stage_sequence
534
535
536
537 l_val VARCHAR2(1);
538
539 BEGIN
540 -- Initialize message list IF p_init_msg_list is set to TRUE.
541 IF FND_API.to_Boolean( p_init_msg_list )
542 THEN
543 FND_MSG_PUB.initialize;
544 END IF;
545
546 -- Initialize API return status to SUCCESS
547 x_return_status := FND_API.G_RET_STS_SUCCESS;
548
549 -- Debug Message
550 IF (AS_DEBUG_LOW_ON) THEN
551 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
552 'Validate SALES Stage id');
553
554 END IF;
555
556 IF (p_validation_mode=AS_UTILITY_PVT.G_CREATE and (P_Sales_Stage_ID IS NOT NULL) and
557 (P_Sales_Stage_ID <> FND_API.G_MISS_NUM))
558 -- OR
559 -- (p_validation_mode=AS_UTILITY_PVT.G_UPDATE)
560 THEN
561 OPEN C_Sales_Stage_Exists ( p_Sales_Methodology_ID, p_Sales_Stage_ID);
562 FETCH C_Sales_Stage_Exists into l_val;
563 IF C_Sales_Stage_Exists%NOTFOUND
564 THEN
565 AS_UTILITY_PVT.Set_Message(
566 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
567 p_msg_name => 'API_INVALID_ID',
568 p_token1 => 'COLUMN',
569 p_token1_value => 'SALES STAGE',
570 p_token2 => 'VALUE',
571 p_token2_value => p_Sales_Stage_ID );
572
573 x_return_status := FND_API.G_RET_STS_ERROR;
574 END IF;
575 CLOSE C_Sales_Stage_Exists;
576 END IF;
577
578
579 -- Standard call to get message count and IF count is 1, get message info.
580 FND_MSG_PUB.Count_And_Get
581 ( p_count => x_msg_count,
582 p_data => x_msg_data );
583 END Validate_Sales_Stage_ID;
584
585
586
587
588
589 PROCEDURE Validate_CUSTOMER_ID (
590 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
591 P_Validation_mode IN VARCHAR2,
592 P_CUSTOMER_ID IN NUMBER,
593 X_Return_Status OUT NOCOPY VARCHAR2,
594 X_Msg_Count OUT NOCOPY NUMBER,
595 X_Msg_Data OUT NOCOPY VARCHAR2
596 )
597 IS
598 -- solin, 02/01/2001, replace view AS_PARTY_CUSTOMERS_V with table HZ_PARTIES
599 CURSOR C_Customer_Id_Exists (c_Customer_Id NUMBER) IS
600 SELECT 'X'
601 FROM HZ_PARTIES
602 WHERE PARTY_TYPE IN ('PERSON', 'ORGANIZATION')
603 AND PARTY_ID = c_Customer_Id;
604
605 CURSOR C_Customer_is_active(c_Customer_Id NUMBER) IS
606 SELECT status
607 FROM hz_parties
608 WHERE PARTY_TYPE IN ('PERSON', 'ORGANIZATION')
609 AND PARTY_ID = c_Customer_Id;
610
611 l_val VARCHAR2(1);
612 l_status VARCHAR2(1);
613 BEGIN
614 -- Initialize message list if p_init_msg_list is set to TRUE.
615 IF FND_API.to_Boolean( p_init_msg_list )
616 THEN
617 FND_MSG_PUB.initialize;
618 END IF;
619
620 -- Initialize API return status to SUCCESS
621 x_return_status := FND_API.G_RET_STS_SUCCESS;
622
623 IF ((p_CUSTOMER_ID is NULL) or (p_CUSTOMER_ID = FND_API.G_MISS_NUM)
624 AND p_validation_mode = AS_UTILITY_PVT.G_CREATE)
625 OR
626 (p_CUSTOMER_ID is NULL AND p_validation_mode=AS_UTILITY_PVT.G_UPDATE)
627 THEN
628 IF (AS_DEBUG_LOW_ON) THEN
629
630 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
631 'Private API: Violate NOT NULL constraint(CUSTOMER_ID)');
632 END IF;
633
634 AS_UTILITY_PVT.Set_Message(
635 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
636 p_msg_name => 'API_MISSING_ID',
637 p_token1 => 'COLUMN',
638 p_token1_value => 'CUSTOMER_ID');
639
640 x_return_status := FND_API.G_RET_STS_ERROR;
641 ELSIF(p_CUSTOMER_ID is not NULL) AND (p_CUSTOMER_ID <> FND_API.G_MISS_NUM)
642 THEN
643 OPEN C_Customer_Id_Exists (p_Customer_Id);
644 FETCH C_Customer_Id_Exists into l_val;
645 IF C_Customer_Id_Exists%NOTFOUND
646 THEN
647 IF (AS_DEBUG_LOW_ON) THEN
648
649 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
650 'Private API: CUSTOMER_ID is not valid:' ||
651 p_Customer_Id);
652 END IF;
653
654 AS_UTILITY_PVT.Set_Message(
655 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
656 p_msg_name => 'API_INVALID_CUSTOMER_ID',
657 p_token1 => 'COLUMN',
658 p_token1_value => 'CUSTOMER_ID',
659 p_token2 => 'VALUE',
660 p_token2_value => p_CUSTOMER_ID );
661
662 x_return_status := FND_API.G_RET_STS_ERROR;
663 END IF;
664 CLOSE C_Customer_Id_Exists;
665
666 -- do the customer is inactive check only at time of create. allow updates.
667 IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE) THEN
668 OPEN C_Customer_is_active (p_Customer_Id);
669 FETCH C_Customer_is_active into l_status;
670 --IF (l_status = 'I')
671 IF (l_status <> 'A') -- take care of party merge
672 THEN
673 IF (AS_DEBUG_LOW_ON) THEN
674
675 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
676 'Private API: CUSTOMER_ID is not active:' ||
677 p_Customer_Id);
678 END IF;
679
680 AS_UTILITY_PVT.Set_Message(
681 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
682 p_msg_name => 'API_INACTIVE_CUSTOMER_ID');
683
684
685 x_return_status := FND_API.G_RET_STS_ERROR;
686 END IF;
687 CLOSE C_Customer_is_active;
688 END IF;
689
690
691 END IF;
692
693 -- Standard call to get message count and if count is 1, get message info.
694 FND_MSG_PUB.Count_And_Get
695 ( p_count => x_msg_count,
696 p_data => x_msg_data
697 );
698
699 END Validate_CUSTOMER_ID;
700
701
702
703 PROCEDURE Validate_ADDRESS_ID (
704 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
705 P_Validation_mode IN VARCHAR2,
706 P_CUSTOMER_ID IN NUMBER,
707 P_ADDRESS_ID IN NUMBER,
708 X_Return_Status OUT NOCOPY VARCHAR2,
709 X_Msg_Count OUT NOCOPY NUMBER,
710 X_Msg_Data OUT NOCOPY VARCHAR2
711 )
712 IS
713 l_check_address VARCHAR2(1);
714
715 BEGIN
716 -- Initialize message list if p_init_msg_list is set to TRUE.
717 IF FND_API.to_Boolean( p_init_msg_list )
718 THEN
719 FND_MSG_PUB.initialize;
720 END IF;
721
722 -- Initialize API return status to SUCCESS
723 x_return_status := FND_API.G_RET_STS_SUCCESS;
724
725 IF (p_ADDRESS_ID is not NULL) and (p_ADDRESS_ID <> FND_API.G_MISS_NUM)
726 THEN
727 IF (p_CUSTOMER_ID is NULL) or (p_CUSTOMER_ID = FND_API.G_MISS_NUM)
728 THEN
729 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
730 -- 'Private API: Violate NOT NULL(CUSTOMER_ID)'); END IF;
731
732 AS_UTILITY_PVT.Set_Message(
733 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
734 p_msg_name => 'API_MISSING_ID',
735 p_token1 => 'COLUMN',
736 p_token1_value => 'CUSTOMER_ID');
737
738 x_return_status := FND_API.G_RET_STS_ERROR;
739 ELSE
740 AS_TCA_PVT.validate_party_site_id(
741 p_init_msg_list => FND_API.G_FALSE,
742 p_party_id => P_CUSTOMER_ID,
743 p_party_site_id => P_ADDRESS_ID,
744 x_return_status => x_return_status,
745 x_msg_count => x_msg_count,
746 x_msg_data => x_msg_data);
747
748 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
749 IF (AS_DEBUG_LOW_ON) THEN
750
751 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
752 'Private API: ADDRESS_ID is invalid');
753 END IF;
754
755 AS_UTILITY_PVT.Set_Message(
756 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
757 p_msg_name => 'API_INVALID_ID',
758 p_token1 => 'COLUMN',
759 p_token1_value => 'ADDRESS_ID',
760 p_token2 => 'VALUE',
761 p_token2_value => p_ADDRESS_ID );
762 END IF;
763 END IF;
764 -- For bug 1544448
765 ELSIF p_ADDRESS_ID = FND_API.G_MISS_NUM AND
766 p_validation_mode = AS_UTILITY_PVT.G_UPDATE
767 THEN
768 NULL;
769 ELSE -- address_id is NULL or g_miss_num
770 -- For bug 1501336, check profile option AS_CUSTOMER_ADDRESS_REQUIRED
771 -- to check if address_id is required or not
772 -- AS_CUSTOMER_ADDRESS_REQUIRED is obsoleted. Use AS_LEAD_ADDRESS_REQUIRED
773 IF (AS_DEBUG_LOW_ON) THEN
774
775 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
776 'ADDRESS_ID is not entered');
777 END IF;
778 IF (AS_DEBUG_LOW_ON) THEN
779
780 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
781 'ADDRESS_REQUIRED: ' || FND_PROFILE.Value('AS_LEAD_ADDRESS_REQUIRED'));
782 --FND_PROFILE.Value('AS_CUSTOMER_ADDRESS_REQUIRED'));
783 END IF;
784
785 l_check_address :=
786 --nvl(FND_PROFILE.Value('AS_CUSTOMER_ADDRESS_REQUIRED'),'Y');
787 nvl(FND_PROFILE.Value('AS_LEAD_ADDRESS_REQUIRED'),'Y');
788 IF (l_check_address = 'Y')
789 THEN
790 AS_UTILITY_PVT.Set_Message(
791 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
792 p_msg_name => 'API_MISSING_ADDRESS_ID');
793
794
795 x_return_status := FND_API.G_RET_STS_ERROR;
796 END IF;
797 END IF;
798
799 -- Standard call to get message count and if count is 1, get message info.
800 FND_MSG_PUB.Count_And_Get
801 ( p_count => x_msg_count,
802 p_data => x_msg_data
803 );
804
805 END Validate_ADDRESS_ID;
806
807
808 PROCEDURE Validate_STATUS_CODE (
809 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
810 P_Validation_mode IN VARCHAR2,
811 P_STATUS_CODE IN VARCHAR2,
812 P_Sales_Lead_Id IN NUMBER,
813 X_Return_Status OUT NOCOPY VARCHAR2,
814 X_Msg_Count OUT NOCOPY NUMBER,
815 X_Msg_Data OUT NOCOPY VARCHAR2
816 )
817 IS
818 CURSOR C_Status_Exists (X_Lookup_Code VARCHAR2) IS
819 SELECT 'X'
820 FROM as_statuses_b
821 WHERE lead_flag = 'Y' and enabled_flag = 'Y'
822 and status_code = X_Lookup_Code;
823 -- ffang 012501, add more criteria
824 -- sync up with validation used in status dropdown
825 --and usage_indicator in ('ALL', 'OS', 'PRM');
826
827 CURSOR C_Opp_Exists (X_Sales_Lead_Id NUMBER) IS
828 SELECT 'X'
829 FROM as_sales_lead_opportunity
830 WHERE sales_lead_id = X_Sales_Lead_Id;
831
832 Cursor C_GET_STATUS_CODE (c_sales_lead_id NUMBER) IS
833 SELECT status_code
834 FROM as_sales_leads
835 WHERE sales_lead_id = c_sales_lead_id;
836
837
838 l_val VARCHAR2(1);
839 l_status_code VARCHAR2(30);
840
841 l_newStateTransition VARCHAR2(1);
842 l_linkStatus VARCHAR2(30);
843 BEGIN
844 -- Initialize message list IF p_init_msg_list is set to TRUE.
845 IF FND_API.to_Boolean( p_init_msg_list )
846 THEN
847 FND_MSG_PUB.initialize;
848 END IF;
849
850 -- Initialize API return status to SUCCESS
851 x_return_status := FND_API.G_RET_STS_SUCCESS;
852
853 -- Debug Message
854 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
855 -- 'Validate status code'); END IF;
856 -- Validate status code
857 IF ((p_status_code is NULL or p_status_code = FND_API.G_MISS_CHAR)
858 AND p_validation_mode=AS_UTILITY_PVT.G_CREATE)
859 OR
860 (p_status_code IS NULL AND p_validation_mode=AS_UTILITY_PVT.G_UPDATE)
861 THEN
862 AS_UTILITY_PVT.Set_Message(
863 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
864 p_msg_name => 'API_MISSING_ID',
865 p_token1 => 'COLUMN',
866 p_token1_value => 'STATUS_CODE' );
867
868 x_return_status := FND_API.G_RET_STS_ERROR;
869
870 ELSIF (p_status_code <> FND_API.G_MISS_CHAR)
871 THEN
872 OPEN C_Status_Exists ( p_status_code);
873 FETCH C_Status_Exists into l_val;
874
875 IF C_Status_Exists%NOTFOUND
876 THEN
877 AS_UTILITY_PVT.Set_Message(
878 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
879 p_msg_name => 'API_INVALID_ID',
880 p_token1 => 'COLUMN',
881 p_token1_value => 'STATUS_CODE',
882 p_token2 => 'VALUE',
883 p_token2_value => p_STATUS_CODE );
884
885 x_return_status := FND_API.G_RET_STS_ERROR;
886 END IF;
887 CLOSE C_Status_Exists ;
888 END IF;
889
890 -- 11.5.9 additional validation.If the user is changing status to
891 -- OS: Lead Link Status profile (e.g Converted to Opportunity) then
892 -- first check lead link table to make sure an opportunity exists
893 -- This check will be dependent on a profile.
894 --l_val := 'N';
895 l_newStateTransition := FND_PROFILE.VALUE('AS_LEAD_STATE_TRANSITION');
896 l_linkStatus := FND_PROFILE.VALUE('AS_LEAD_LINK_STATUS');
897
898 OPEN C_GET_STATUS_CODE (p_sales_lead_id);
899 FETCH C_GET_STATUS_CODE INTO l_status_code;
900 CLOSE C_GET_STATUS_CODE;
901
902
903 if p_status_code <> FND_API.G_MISS_CHAR and l_status_code <> p_status_code and p_validation_mode = AS_UTILITY_PVT.G_update and l_newStateTransition = 'Y' and l_linkStatus = l_status_code
904 then
905 AS_UTILITY_PVT.Set_Message(
906 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
907 p_msg_name => 'AS_INVALID_STATUS_TRANSITION'
908 );
909
910 x_return_status := FND_API.G_RET_STS_ERROR;
911
912 end if;
913
914
915 -- ckapoor Lead state transition fixes for 11.5.10
916
917 if ((l_newStateTransition = 'Y') AND (p_validation_mode = AS_UTILITY_PVT.G_CREATE)
918 AND (p_status_code = l_linkStatus) )
919 then
920 AS_UTILITY_PVT.Set_Message(
921 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
922 p_msg_name => 'AS_NO_LEAD_CREATE_STATUS'
923 );
924
925 x_return_status := FND_API.G_RET_STS_ERROR;
926
927 end if;
928
929 -- end ckapoor
930
931
932
933
934 /* if (l_newStateTransition = 'Y') then
935
936 if (p_validation_mode = AS_UTILITY_PVT.G_CREATE) then
937
938 if (p_status_code = l_linkStatus) then
939
940 AS_UTILITY_PVT.Set_Message(
941 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
942 p_msg_name => 'AS_NO_LEAD_CREATE_STATUS'
943 );
944
945 x_return_status := FND_API.G_RET_STS_ERROR;
946
947 end if;
948
949 elsif (p_validation_mode=AS_UTILITY_PVT.G_UPDATE) then
950
951 if (p_status_code = l_linkStatus) then
952
953 OPEN C_opp_exists (p_sales_lead_id);
954 FETCH C_opp_exists into l_val;
955
956 IF C_opp_exists%NOTFOUND
957 THEN
958 AS_UTILITY_PVT.Set_Message(
959 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
960 p_msg_name => 'AS_NO_LEAD_UPDATE_NO_OPP'
961 );
962
963 x_return_status := FND_API.G_RET_STS_ERROR;
964 END IF;
965 CLOSE C_opp_exists ;
966
967 end if;
968
969
970
971 end if;
972
973
974 end if; */
975
976
977
978 -- Standard call to get message count and IF count is 1, get message info.
979 FND_MSG_PUB.Count_And_Get
980 ( p_count => x_msg_count,
981 p_data => x_msg_data );
982 END Validate_STATUS_CODE;
983
984 PROCEDURE Validate_SOURCE_PROMOTION_ID (
985 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
986 P_Validation_mode IN VARCHAR2,
987 P_SOURCE_PROMOTION_ID IN NUMBER,
988 X_Return_Status OUT NOCOPY VARCHAR2,
989 X_Msg_Count OUT NOCOPY NUMBER,
990 X_Msg_Data OUT NOCOPY VARCHAR2
991 )
992 IS
993
994 CURSOR C_Promotion_Exists (X_Promotion_Id NUMBER) IS
995 SELECT 'X'
996 FROM ams_p_source_codes_v
997 WHERE source_code_id = X_promotion_id
998 and source_type in ('CAMP','CSCH','EONE', 'EVEH','EVEO')
999 and status in ('ACTIVE','ONHOLD', 'COMPLETED');
1000
1001
1002 --SELECT 'X'
1003 -- FROM ams_source_codes
1004 -- WHERE source_code_id = X_promotion_id
1005 -- and active_flag = 'Y';
1006
1007 l_val VARCHAR2(1);
1008 l_source_promotion_id VARCHAR2(1);
1009 BEGIN
1010 -- Initialize message list IF p_init_msg_list is set to TRUE.
1011 IF FND_API.to_Boolean( p_init_msg_list )
1012 THEN
1013 FND_MSG_PUB.initialize;
1014 END IF;
1015
1016 -- Initialize API return status to SUCCESS
1017 x_return_status := FND_API.G_RET_STS_SUCCESS;
1018
1019 -- Debug Message
1020 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1021 -- 'Validate source promotion id'); END IF;
1022
1023 IF (AS_DEBUG_LOW_ON) THEN
1024
1025
1026
1027 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1028 'SOURCE CODE REQUIRED: ' ||
1029 FND_PROFILE.Value('AS_SOURCE_CODE_MANDATORY_LEADS'));
1030
1031 END IF;
1032
1033 l_source_promotion_id :=
1034 nvl(FND_PROFILE.Value('AS_SOURCE_CODE_MANDATORY_LEADS'),'Y');
1035
1036
1037 -- validate SOURCE_PROMOTION_ID (NOT NULL column)
1038 IF (l_source_promotion_id='Y' AND ( p_source_promotion_id is NULL or
1039 p_source_promotion_id =FND_API.G_MISS_NUM)
1040 AND p_validation_mode=AS_UTILITY_PVT.G_CREATE)
1041 OR
1042 (l_source_promotion_id='Y' AND p_source_promotion_id IS NULL
1043 AND p_validation_mode=AS_UTILITY_PVT.G_UPDATE)
1044 THEN
1045 AS_UTILITY_PVT.Set_Message(
1046 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1047 p_msg_name => 'API_MISSING_ID',
1048 p_token1 => 'COLUMN',
1049 p_token1_value => 'SOURCE NAME');
1050
1051 x_return_status := FND_API.G_RET_STS_ERROR;
1052
1053 ELSIF (p_source_promotion_id <> FND_API.G_MISS_NUM)
1054 and (p_validation_mode <> AS_UTILITY_PVT.G_UPDATE) -- added by bmuthukr for fixing bug 3817333. val not reqd during updates.
1055 --IF ((p_source_promotion_id is NOT NULL AND
1056 -- p_source_promotion_id <> FND_API.G_MISS_NUM))
1057 THEN
1058 OPEN C_Promotion_Exists ( p_source_promotion_id);
1059 FETCH C_Promotion_Exists into l_val;
1060 IF C_Promotion_Exists%NOTFOUND
1061 THEN
1062 AS_UTILITY_PVT.Set_Message(
1063 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1064 p_msg_name => 'API_INVALID_ID',
1065 p_token1 => 'COLUMN',
1066 p_token1_value => 'SOURCE PROMOTION',
1067 p_token2 => 'VALUE',
1068 p_token2_value => p_SOURCE_PROMOTION_ID );
1069
1070 x_return_status := FND_API.G_RET_STS_ERROR;
1071 END IF;
1072 CLOSE C_Promotion_Exists;
1073 END IF;
1074
1075
1076 -- Standard call to get message count and IF count is 1, get message info.
1077 FND_MSG_PUB.Count_And_Get
1078 ( p_count => x_msg_count,
1079 p_data => x_msg_data );
1080 END Validate_SOURCE_PROMOTION_ID;
1081
1082
1083 PROCEDURE Validate_CHANNEL_CODE (
1084 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1085 P_Validation_mode IN VARCHAR2,
1086 P_CHANNEL_CODE IN VARCHAR2,
1087 X_Return_Status OUT NOCOPY VARCHAR2,
1088 X_Msg_Count OUT NOCOPY NUMBER,
1089 X_Msg_Data OUT NOCOPY VARCHAR2
1090 )
1091 IS
1092 CURSOR C_Aso_Channel_Exists (X_Lookup_Code VARCHAR2) IS
1093 SELECT 'X'
1094 FROM aso_i_sales_channels_v
1095 WHERE sales_channel_code = X_Lookup_Code
1096 -- ffang 012501, add more criteria
1097 and nvl(start_date_active, sysdate) <= sysdate
1098 and nvl(end_date_active, sysdate) >= sysdate
1099 and enabled_flag = 'Y';
1100
1101 l_val VARCHAR2(1);
1102 BEGIN
1103 -- Initialize message list IF p_init_msg_list is set to TRUE.
1104 IF FND_API.to_Boolean( p_init_msg_list )
1105 THEN
1106 FND_MSG_PUB.initialize;
1107 END IF;
1108
1109 -- Initialize API return status to SUCCESS
1110 x_return_status := FND_API.G_RET_STS_SUCCESS;
1111
1112 -- Debug Message
1113 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1114 -- 'Validate channel code'); END IF;
1115
1116 -- Validate channel code
1117 IF (p_channel_code is NOT NULL
1118 AND p_channel_code <> FND_API.G_MISS_CHAR)
1119 THEN
1120 OPEN C_Aso_Channel_Exists (p_channel_code);
1121 FETCH C_Aso_Channel_Exists into l_val;
1122 IF C_Aso_Channel_Exists%NOTFOUND
1123 THEN
1124 AS_UTILITY_PVT.Set_Message(
1125 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1126 p_msg_name => 'API_INVALID_ID',
1127 p_token1 => 'COLUMN',
1128 p_token1_value => 'LEAD CHANNEL',
1129 p_token2 => 'VALUE',
1130 p_token2_value => p_CHANNEL_CODE );
1131
1132 x_return_status := FND_API.G_RET_STS_ERROR;
1133 END IF;
1134 CLOSE C_Aso_Channel_Exists;
1135 END IF;
1136
1137 -- Standard call to get message count and IF count is 1, get message info.
1138 FND_MSG_PUB.Count_And_Get
1139 ( p_count => x_msg_count,
1140 p_data => x_msg_data );
1141 END Validate_CHANNEL_CODE;
1142
1143
1144 PROCEDURE Validate_CURRENCY_CODE (
1145 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1146 P_Validation_mode IN VARCHAR2,
1147 P_CURRENCY_CODE IN VARCHAR2,
1148 X_Return_Status OUT NOCOPY VARCHAR2,
1149 X_Msg_Count OUT NOCOPY NUMBER,
1150 X_Msg_Data OUT NOCOPY VARCHAR2
1151 )
1152 IS
1153 CURSOR C_Currency_Exists (X_Currency_Code VARCHAR2) IS
1154 SELECT 'X'
1155 FROM FND_LOOKUP_VALUES
1156 WHERE lookup_code = X_Currency_Code
1157 and LOOKUP_TYPE = 'REPORTING_CURRENCY'
1158 and VIEW_APPLICATION_ID = 279
1159 -- ffang 012501
1160 and nvl(start_date_active, sysdate) <= sysdate
1161 and nvl(end_date_active, sysdate) >= sysdate
1162 and enabled_flag = 'Y';
1163
1164 l_val VARCHAR2(1);
1165 BEGIN
1166 -- Initialize message list IF p_init_msg_list is set to TRUE.
1167 IF FND_API.to_Boolean( p_init_msg_list )
1168 THEN
1169 FND_MSG_PUB.initialize;
1170 END IF;
1171
1172 -- Initialize API return status to SUCCESS
1173 x_return_status := FND_API.G_RET_STS_SUCCESS;
1174
1175 -- Debug Message
1176 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1177 -- 'Validate currency code'); END IF;
1178
1179 -- Validate Currency Code
1180 IF (p_currency_code is NOT NULL
1181 AND p_currency_code <> FND_API.G_MISS_CHAR)
1182 THEN
1183 OPEN C_Currency_Exists ( p_currency_code );
1184 FETCH C_Currency_Exists into l_val;
1185 IF C_Currency_Exists%NOTFOUND THEN
1186 AS_UTILITY_PVT.Set_Message(
1187 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1188 p_msg_name => 'API_INVALID_ID',
1189 p_token1 => 'COLUMN',
1190 p_token1_value => 'CURRENCY',
1191 p_token2 => 'VALUE',
1192 p_token2_value => p_CURRENCY_CODE );
1193
1194 x_return_status := FND_API.G_RET_STS_ERROR;
1195 END IF;
1196 CLOSE C_Currency_Exists;
1197 END IF;
1198
1199 -- Standard call to get message count and IF count is 1, get message info.
1200 FND_MSG_PUB.Count_And_Get
1201 ( p_count => x_msg_count,
1202 p_data => x_msg_data );
1203 END Validate_CURRENCY_CODE;
1204
1205
1206 PROCEDURE Validate_DECN_TIMEFRAME_CODE (
1207 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1208 P_Validation_mode IN VARCHAR2,
1209 P_DECISION_TIMEFRAME_CODE IN VARCHAR2,
1210 X_Return_Status OUT NOCOPY VARCHAR2,
1211 X_Msg_Count OUT NOCOPY NUMBER,
1212 X_Msg_Data OUT NOCOPY VARCHAR2
1213 )
1214 IS
1215 CURSOR C_Lookup_Exists (X_Lookup_Code VARCHAR2, X_Lookup_Type VARCHAR2) IS
1216 SELECT 'X'
1217 FROM as_lookups
1218 WHERE lookup_type = X_Lookup_Type
1219 and lookup_code = X_Lookup_Code
1220 -- ffang 012501
1221 and enabled_flag = 'Y';
1222
1223 l_val VARCHAR2(1);
1224 BEGIN
1225
1226 -- Initialize message list IF p_init_msg_list is set to TRUE.
1227 IF FND_API.to_Boolean( p_init_msg_list )
1228 THEN
1229 FND_MSG_PUB.initialize;
1230 END IF;
1231
1232 -- Initialize API return status to SUCCESS
1233 x_return_status := FND_API.G_RET_STS_SUCCESS;
1234
1235 -- Debug Message
1236 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1237 -- 'Validate decision tf code'); END IF;
1238
1239 -- Validate decision timeframe code
1240 IF (p_decision_timeframe_code is NOT NULL
1241 AND p_decision_timeframe_code <> FND_API.G_MISS_CHAR) THEN
1242 OPEN C_Lookup_Exists ( p_decision_timeframe_code, 'DECISION_TIMEFRAME');
1243 FETCH C_Lookup_Exists into l_val;
1244
1245 IF C_Lookup_Exists%NOTFOUND
1246 THEN
1247 AS_UTILITY_PVT.Set_Message(
1248 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1249 p_msg_name => 'API_INVALID_ID',
1250 p_token1 => 'COLUMN',
1251 p_token1_value => 'DECISION TIMEFRAME_CODE',
1252 p_token2 => 'VALUE',
1253 p_token2_value => p_DECISION_TIMEFRAME_CODE );
1254
1255 x_return_status := FND_API.G_RET_STS_ERROR;
1256 END IF;
1257 CLOSE C_Lookup_Exists;
1258 END IF;
1259
1260 FND_MSG_PUB.Count_And_Get
1261 ( p_count => x_msg_count,
1262 p_data => x_msg_data );
1263 END Validate_DECN_TIMEFRAME_CODE;
1264
1265
1266 PROCEDURE Validate_CLOSE_REASON (
1267 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1268 P_Validation_mode IN VARCHAR2,
1269 P_CLOSE_REASON IN VARCHAR2,
1270 X_Return_Status OUT NOCOPY VARCHAR2,
1271 X_Msg_Count OUT NOCOPY NUMBER,
1272 X_Msg_Data OUT NOCOPY VARCHAR2
1273 )
1274 IS
1275 CURSOR C_Lookup_Exists (X_Lookup_Code VARCHAR2, X_Lookup_Type VARCHAR2) IS
1276 SELECT 'X'
1277 FROM as_lookups
1278 WHERE lookup_type = X_Lookup_Type
1279 and lookup_code = X_Lookup_Code
1280 -- ffang 012501
1281 and enabled_flag = 'Y';
1282
1283 l_val VARCHAR2(1);
1284 BEGIN
1285 -- Initialize message list IF p_init_msg_list is set to TRUE.
1286 IF FND_API.to_Boolean( p_init_msg_list )
1287 THEN
1288 FND_MSG_PUB.initialize;
1289 END IF;
1290
1291 -- Initialize API return status to SUCCESS
1292 x_return_status := FND_API.G_RET_STS_SUCCESS;
1293
1294 -- Debug Message
1295 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1296 -- 'Validate close reason'); END IF;
1297
1298 -- Validate Close Reason
1299 IF (p_close_reason is NOT NULL AND p_close_reason <> FND_API.G_MISS_CHAR)
1300 THEN
1301 OPEN C_Lookup_Exists ( p_close_reason, 'CLOSE_REASON' );
1302 FETCH C_Lookup_Exists into l_val;
1303
1304 IF C_Lookup_Exists%NOTFOUND
1305 THEN
1306 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1307 THEN
1308 AS_UTILITY_PVT.Set_Message(
1309 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1310 p_msg_name => 'API_INVALID_ID',
1311 p_token1 => 'COLUMN',
1312 p_token1_value => 'CLOSE REASON',
1313 p_token2 => 'VALUE',
1314 p_token2_value => p_CLOSE_REASON );
1315 END IF;
1316 x_return_status := FND_API.G_RET_STS_ERROR;
1317 END IF;
1318 CLOSE C_Lookup_Exists;
1319 END IF;
1320 -- Standard call to get message count and IF count is 1, get message info.
1321 FND_MSG_PUB.Count_And_Get
1322 ( p_count => x_msg_count,
1323 p_data => x_msg_data );
1324 END Validate_CLOSE_REASON;
1325
1326
1327 PROCEDURE Validate_LEAD_RANK_ID (
1328 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1329 P_Validation_mode IN VARCHAR2,
1330 P_LEAD_RANK_ID IN NUMBER,
1331 X_Return_Status OUT NOCOPY VARCHAR2,
1332 X_Msg_Count OUT NOCOPY NUMBER,
1333 X_Msg_Data OUT NOCOPY VARCHAR2
1334 )
1335 IS
1336 CURSOR C_Rank_Exists (X_Rank_id NUMBER) IS
1337 SELECT 'X'
1338 FROM as_sales_lead_ranks_b
1339 WHERE rank_id = X_Rank_id
1340 and enabled_flag = 'Y';
1341 l_val VARCHAR2(1);
1342 BEGIN
1343 -- Initialize message list IF p_init_msg_list is set to TRUE.
1344 IF FND_API.to_Boolean( p_init_msg_list )
1345 THEN
1346 FND_MSG_PUB.initialize;
1347 END IF;
1348
1349 -- Initialize API return status to SUCCESS
1350 x_return_status := FND_API.G_RET_STS_SUCCESS;
1351
1352 -- Debug Message
1353 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1354 -- 'Validate rank id'); END IF;
1355
1356 -- Validate rank id
1357 IF (p_LEAD_RANK_ID is NOT NULL
1358 AND p_LEAD_RANK_ID <> FND_API.G_MISS_NUM)
1359 THEN
1360 OPEN C_Rank_Exists ( p_LEAD_RANK_ID );
1361 FETCH C_Rank_Exists into l_val;
1362
1363 IF C_Rank_Exists%NOTFOUND
1364 THEN
1365 AS_UTILITY_PVT.Set_Message(
1366 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1367 p_msg_name => 'API_INVALID_ID',
1368 p_token1 => 'COLUMN',
1369 p_token1_value => 'LEAD_RANK_ID',
1370 p_token2 => 'VALUE',
1371 p_token2_value => p_LEAD_RANK_ID );
1372 x_return_status := FND_API.G_RET_STS_ERROR;
1373 END IF;
1374 CLOSE C_Rank_Exists;
1375 END IF;
1376
1377 FND_MSG_PUB.Count_And_Get
1378 ( p_count => x_msg_count,
1379 p_data => x_msg_data );
1380 END Validate_LEAD_RANK_ID;
1381
1382 -- FFANG 08-30-00 For bug#1391034
1383 -- Assign_to_person_id keep person_id; should be validated against
1384 -- per_all_people_f
1385 PROCEDURE Validate_ASSIGN_TO_PERSON_ID (
1386 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1387 P_Validation_mode IN VARCHAR2,
1388 P_ASSIGN_TO_PERSON_ID IN NUMBER,
1389 X_Return_Status OUT NOCOPY VARCHAR2,
1390 X_Msg_Count OUT NOCOPY NUMBER,
1391 X_Msg_Data OUT NOCOPY VARCHAR2
1392 )
1393 IS
1394 -- solin, bug 1570991, change to consider effective start and end date
1395 Cursor C_Check_Assign_Person (X_person_id NUMBER) IS
1396 SELECT 'X'
1397 FROM per_all_people_f per,
1398 jtf_rs_resource_extns res
1399 WHERE per.person_id = X_person_id
1400 AND TRUNC(SYSDATE) BETWEEN per.effective_start_date
1401 AND per.effective_end_date
1402 AND res.category = 'EMPLOYEE'
1403 AND res.source_id = per.person_id;
1404
1405 l_val VARCHAR2(1);
1406 BEGIN
1407 -- Initialize message list IF p_init_msg_list is set to TRUE.
1408 IF FND_API.to_Boolean( p_init_msg_list )
1409 THEN
1410 FND_MSG_PUB.initialize;
1411 END IF;
1412
1413 -- Initialize API return status to SUCCESS
1414 x_return_status := FND_API.G_RET_STS_SUCCESS;
1415
1416 -- Debug Message
1417 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1418 -- 'Validate assign to person id'); END IF;
1419
1420 -- Validate ASSIGN_TO_PERSON_ID
1421 IF (p_assign_to_person_id IS NOT NULL
1422 AND p_assign_to_person_id <> FND_API.G_MISS_NUM)
1423 THEN
1424 OPEN C_Check_Assign_Person (p_assign_to_person_id);
1425 FETCH C_Check_Assign_Person INTO l_val;
1426 IF (C_Check_Assign_Person%NOTFOUND)
1427 THEN
1428 AS_UTILITY_PVT.Set_Message(
1429 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1430 p_msg_name => 'API_INVALID_ID',
1431 p_token1 => 'COLUMN',
1432 p_token1_value => 'ASSIGN_TO_PERSON_ID',
1433 p_token2 => 'VALUE',
1434 p_token2_value => p_ASSIGN_TO_PERSON_ID );
1435
1436 x_return_status := FND_API.G_RET_STS_ERROR;
1437 END IF;
1438 CLOSE C_Check_Assign_Person;
1439 END IF;
1440
1441 FND_MSG_PUB.Count_And_Get
1442 ( p_count => x_msg_count,
1443 p_data => x_msg_data );
1444 END Validate_ASSIGN_TO_PERSON_ID;
1445
1446
1447 -- FFANG 08-30-00 For bug#1391034
1448 -- Assign_to_salesforce_id keep salesforce_id (resource_id); should be validated
1449 -- against jtf_rs_resource_extns
1450 PROCEDURE Validate_ASSIGN_TO_SF_ID (
1451 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1452 P_Validation_mode IN VARCHAR2,
1453 P_ASSIGN_TO_SALESFORCE_ID IN NUMBER,
1454 X_Return_Status OUT NOCOPY VARCHAR2,
1455 X_Msg_Count OUT NOCOPY NUMBER,
1456 X_Msg_Data OUT NOCOPY VARCHAR2
1457 )
1458 IS
1459 -- solin, bug 1570991, change to consider category
1460 Cursor C_Check_Assign_Salesforce (X_Assign_Id NUMBER) IS
1461 SELECT 'X'
1462 FROM per_all_people_f per,
1463 jtf_rs_resource_extns res,
1464 jtf_rs_role_relations rrel,
1465 jtf_rs_roles_b role
1466 WHERE TRUNC(SYSDATE) BETWEEN per.effective_start_date
1467 AND per.effective_end_date
1468 AND res.resource_id = rrel.role_resource_id
1469 AND rrel.role_resource_type = 'RS_INDIVIDUAL'
1470 AND rrel.role_id = role.role_id
1471 AND role.role_type_code IN ('SALES', 'TELESALES', 'FIELDSALES', 'PRM')
1472 --changing for bug 2877597 ckapoor adding nvl since the role table contains
1473 -- Y/N and null
1474 AND nvl(role.admin_flag, 'N') = 'N'
1475 AND res.source_id = per.person_id
1476 AND res.resource_id = X_Assign_Id
1477 -- ffang 012501
1478 AND res.category = 'EMPLOYEE';
1479
1480
1481 l_val VARCHAR2(1);
1482 BEGIN
1483 -- Initialize message list IF p_init_msg_list is set to TRUE.
1484 IF FND_API.to_Boolean( p_init_msg_list )
1485 THEN
1486 FND_MSG_PUB.initialize;
1487 END IF;
1488
1489 -- Initialize API return status to SUCCESS
1490 x_return_status := FND_API.G_RET_STS_SUCCESS;
1491
1492 -- Debug Message
1493 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1494 -- 'Validate assign to salesforce id'); END IF;
1495
1496 -- Validate ASSIGN_TO_SALESFORCE_ID
1497 IF (p_assign_to_salesforce_id IS NOT NULL
1498 AND p_assign_to_salesforce_id <> FND_API.G_MISS_NUM)
1499 THEN
1500 OPEN C_Check_Assign_Salesforce (p_assign_to_salesforce_id);
1501 FETCH C_Check_Assign_Salesforce INTO l_val;
1502 IF (C_Check_Assign_Salesforce%NOTFOUND)
1503 THEN
1504 AS_UTILITY_PVT.Set_Message(
1505 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1506 p_msg_name => 'API_INVALID_ID',
1507 p_token1 => 'COLUMN',
1508 p_token1_value => 'ASSIGN_TO_SALESFORCE_ID',
1509 p_token2 => 'VALUE',
1510 p_token2_value => p_ASSIGN_TO_SALESFORCE_ID );
1511
1512 x_return_status := FND_API.G_RET_STS_ERROR;
1513 END IF;
1514 CLOSE C_Check_Assign_Salesforce;
1515 END IF;
1516
1517 FND_MSG_PUB.Count_And_Get
1518 ( p_count => x_msg_count,
1519 p_data => x_msg_data );
1520 END Validate_ASSIGN_TO_SF_ID;
1521
1522
1523 PROCEDURE Validate_BUDGET_STATUS_CODE (
1524 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1525 P_Validation_mode IN VARCHAR2,
1526 P_BUDGET_STATUS_CODE IN VARCHAR2,
1527 X_Return_Status OUT NOCOPY VARCHAR2,
1528 X_Msg_Count OUT NOCOPY NUMBER,
1529 X_Msg_Data OUT NOCOPY VARCHAR2
1530 )
1531 IS
1532 CURSOR C_Lookup_Exists (X_Lookup_Code VARCHAR2, X_Lookup_Type VARCHAR2) IS
1533 SELECT 'X'
1534 FROM as_lookups
1535 WHERE lookup_type = X_Lookup_Type
1536 and lookup_code = X_Lookup_Code
1537 -- ffang 012501
1538 and enabled_flag = 'Y';
1539
1540 l_val VARCHAR2(1);
1541 BEGIN
1542 -- Initialize message list IF p_init_msg_list is set to TRUE.
1543 IF FND_API.to_Boolean( p_init_msg_list )
1544 THEN
1545 FND_MSG_PUB.initialize;
1546 END IF;
1547
1548 -- Initialize API return status to SUCCESS
1549 x_return_status := FND_API.G_RET_STS_SUCCESS;
1550
1551 -- Debug Message
1552 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1553 -- 'Validate budget status code'); END IF;
1554
1555 -- Validate budget status code
1556 IF (p_budget_status_code is NOT NULL
1557 AND p_budget_status_code <> FND_API.G_MISS_CHAR)
1558 THEN
1559 OPEN C_Lookup_Exists ( p_budget_status_code, 'BUDGET_STATUS');
1560 FETCH C_Lookup_Exists into l_val;
1561
1562 IF C_Lookup_Exists%NOTFOUND
1563 THEN
1564 AS_UTILITY_PVT.Set_Message(
1565 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1566 p_msg_name => 'API_INVALID_ID',
1567 p_token1 => 'COLUMN',
1568 p_token1_value => 'BUDGET_STATUS_CODE',
1569 p_token2 => 'VALUE',
1570 p_token2_value => p_BUDGET_STATUS_CODE );
1571 x_return_status := FND_API.G_RET_STS_ERROR;
1572 END IF;
1573 CLOSE C_Lookup_Exists;
1574 END IF;
1575
1576 -- Standard call to get message count and IF count is 1, get message info.
1577 FND_MSG_PUB.Count_And_Get
1578 ( p_count => x_msg_count,
1579 p_data => x_msg_data );
1580 END Validate_BUDGET_STATUS_CODE;
1581
1582
1583 PROCEDURE Validate_VEHICLE_RESPONSE_CODE (
1584 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1585 P_Validation_mode IN VARCHAR2,
1586 P_VEHICLE_RESPONSE_CODE IN VARCHAR2,
1587 X_Return_Status OUT NOCOPY VARCHAR2,
1588 X_Msg_Count OUT NOCOPY NUMBER,
1589 X_Msg_Data OUT NOCOPY VARCHAR2
1590 )
1591 IS
1592 CURSOR C_Lookup_Exists (X_Lookup_Code VARCHAR2, X_Lookup_Type VARCHAR2) IS
1593 SELECT 'X'
1594 FROM as_lookups
1595 WHERE lookup_type = X_Lookup_Type
1596 and lookup_code = X_Lookup_Code
1597 -- ffang 012501
1598 and enabled_flag = 'Y';
1599
1600 l_val VARCHAR2(1);
1601 BEGIN
1602 -- Initialize message list IF p_init_msg_list is set to TRUE.
1603 IF FND_API.to_Boolean( p_init_msg_list )
1604 THEN
1605 FND_MSG_PUB.initialize;
1606 END IF;
1607
1608 -- Initialize API return status to SUCCESS
1609 x_return_status := FND_API.G_RET_STS_SUCCESS;
1610
1611 -- Debug Message
1612 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1613 -- 'Validate Vehicle Response Code'); END IF;
1614
1615 -- Validate Vehicle Response Code
1616 IF (P_VEHICLE_RESPONSE_CODE is NOT NULL
1617 AND P_VEHICLE_RESPONSE_CODE <> FND_API.G_MISS_CHAR)
1618 THEN
1619 OPEN C_Lookup_Exists (P_VEHICLE_RESPONSE_CODE, 'VEHICLE_RESPONSE_CODE');
1620 FETCH C_Lookup_Exists into l_val;
1621 IF C_Lookup_Exists%NOTFOUND
1622 THEN
1623 AS_UTILITY_PVT.Set_Message(
1624 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1625 p_msg_name => 'API_INVALID_ID',
1626 p_token1 => 'COLUMN',
1627 p_token1_value => 'VEHICLE_RESPONSE_CODE',
1628 p_token2 => 'VALUE',
1629 p_token2_value => p_VEHICLE_RESPONSE_CODE );
1630
1631 x_return_status := FND_API.G_RET_STS_ERROR;
1632 END IF;
1633 CLOSE C_Lookup_Exists;
1634 END IF;
1635
1636 -- Standard call to get message count and IF count is 1, get message info.
1637 FND_MSG_PUB.Count_And_Get
1638 ( p_count => x_msg_count,
1639 p_data => x_msg_data );
1640 END Validate_VEHICLE_RESPONSE_CODE;
1641
1642
1643 PROCEDURE Validate_REJECT_REASON_CODE (
1644 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1645 P_Validation_mode IN VARCHAR2,
1646 P_REJECT_REASON_CODE IN VARCHAR2,
1647 X_Return_Status OUT NOCOPY VARCHAR2,
1648 X_Msg_Count OUT NOCOPY NUMBER,
1649 X_Msg_Data OUT NOCOPY VARCHAR2
1650 )
1651 IS
1652 CURSOR C_Lookup_Exists (X_Lookup_Code VARCHAR2, X_Lookup_Type VARCHAR2) IS
1653 SELECT 'X'
1654 FROM as_lookups
1655 WHERE lookup_type = X_Lookup_Type
1656 and lookup_code = X_Lookup_Code
1657 -- ffang 012501
1658 and enabled_flag = 'Y';
1659
1660 l_val VARCHAR2(1);
1661 BEGIN
1662 -- Initialize message list IF p_init_msg_list is set to TRUE.
1663 IF FND_API.to_Boolean( p_init_msg_list )
1664 THEN
1665 FND_MSG_PUB.initialize;
1666 END IF;
1667
1668 -- Initialize API return status to SUCCESS
1669 x_return_status := FND_API.G_RET_STS_SUCCESS;
1670
1671 -- Debug Message
1672 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1673 -- 'Validate reject reason Code'); END IF;
1674
1675 -- Validate Reject Reason Code
1676 IF (P_REJECT_REASON_CODE is NOT NULL
1677 AND P_REJECT_REASON_CODE <> FND_API.G_MISS_CHAR)
1678 THEN
1679 OPEN C_Lookup_Exists ( P_REJECT_REASON_CODE, 'REJECT_REASON_CODE');
1680 FETCH C_Lookup_Exists into l_val;
1681 IF C_Lookup_Exists%NOTFOUND
1682 THEN
1683 AS_UTILITY_PVT.Set_Message(
1684 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1685 p_msg_name => 'API_INVALID_ID',
1686 p_token1 => 'COLUMN',
1687 p_token1_value => 'REJECT_REASON_CODE',
1688 p_token2 => 'VALUE',
1689 p_token2_value => p_REJECT_REASON_CODE );
1690
1691 x_return_status := FND_API.G_RET_STS_ERROR;
1692 END IF;
1693 CLOSE C_Lookup_Exists;
1694 END IF;
1695
1696 -- Standard call to get message count and IF count is 1, get message info.
1697 FND_MSG_PUB.Count_And_Get
1698 ( p_count => x_msg_count,
1699 p_data => x_msg_data );
1700 END Validate_REJECT_REASON_CODE;
1701
1702
1703 PROCEDURE Validate_Flags (
1704 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1705 P_Validation_mode IN VARCHAR2,
1706 P_Flag_Value IN VARCHAR2,
1707 P_Flag_Type IN VARCHAR2,
1708 X_Return_Status OUT NOCOPY VARCHAR2,
1709 X_Msg_Count OUT NOCOPY NUMBER,
1710 X_Msg_Data OUT NOCOPY VARCHAR2
1711 )
1712 IS
1713 BEGIN
1714 -- Initialize message list IF p_init_msg_list is set to TRUE.
1715 IF FND_API.to_Boolean( p_init_msg_list )
1716 THEN
1717 FND_MSG_PUB.initialize;
1718 END IF;
1719
1720 -- Initialize API return status to SUCCESS
1721 x_return_status := FND_API.G_RET_STS_SUCCESS;
1722
1723 -- Debug Message
1724 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1725 -- 'Validate ' || p_flag_type); END IF;
1726
1727 -- Validate IF the flag value is 'Y' or 'N'
1728 IF (P_FLAG_VALUE is NOT NULL
1729 AND P_FLAG_VALUE <> FND_API.G_MISS_CHAR)
1730 THEN
1731 IF (P_FLAG_VALUE <>'Y' AND P_FLAG_VALUE <> 'N')
1732 THEN
1733 AS_UTILITY_PVT.Set_Message(
1734 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1735 p_msg_name => 'API_INVALID_ID',
1736 p_token1 => 'COLUMN',
1737 p_token1_value => P_FLAG_TYPE,
1738 p_token2 => 'VALUE',
1739 p_token2_value => p_FLAG_VALUE );
1740 x_return_status := FND_API.G_RET_STS_ERROR;
1741 END IF;
1742 END IF;
1743
1744 -- Standard call to get message count and IF count is 1, get message info.
1745 FND_MSG_PUB.Count_And_Get
1746 ( p_count => x_msg_count,
1747 p_data => x_msg_data );
1748 END Validate_FLAGS;
1749
1750
1751
1752 PROCEDURE Validate_ACCEPT_REJECT_REASON (
1753 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1754 P_Validation_mode IN VARCHAR2,
1755 P_Accept_Flag IN VARCHAR2,
1756 P_Reject_Reason_Code IN VARCHAR2,
1757 X_Return_Status OUT NOCOPY VARCHAR2,
1758 X_Msg_Count OUT NOCOPY NUMBER,
1759 X_Msg_Data OUT NOCOPY VARCHAR2
1760 )
1761 IS
1762 BEGIN
1763 -- Initialize message list IF p_init_msg_list is set to TRUE.
1764 IF FND_API.to_Boolean( p_init_msg_list )
1765 THEN
1766 FND_MSG_PUB.initialize;
1767 END IF;
1768
1769 -- Initialize API return status to SUCCESS
1770 x_return_status := FND_API.G_RET_STS_SUCCESS;
1771
1772 -- Debug Message
1773 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1774 -- 'Validate accept flag reject reason'); END IF;
1775
1776 -- Validate if ACCEPT_FLAG = 'Y' then REJECT_REASON_CODE should be null
1777 -- if REJECT_REASON_CODE is NOT NULL then ACCEPT_FLAG should not be 'Y'
1778
1779 IF (P_ACCEPT_FLAG = 'Y')
1780 THEN
1781 IF (P_REJECT_REASON_CODE IS NOT NULL AND
1782 P_REJECT_REASON_CODE <> FND_API.G_MISS_CHAR )
1783 THEN
1784 AS_UTILITY_PVT.Set_Message(
1785 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1786 p_msg_name => 'AS_ACCEPT_FLAG_REJECT_REASON'
1787 );
1788 x_return_status := FND_API.G_RET_STS_ERROR;
1789 END IF;
1790 END IF;
1791
1792 -- Standard call to get message count and IF count is 1, get message info.
1793 FND_MSG_PUB.Count_And_Get
1794 ( p_count => x_msg_count,
1795 p_data => x_msg_data );
1796 END Validate_ACCEPT_REJECT_REASON;
1797
1798
1799
1800 PROCEDURE Validate_STATUS_CLOSE_REASON (
1801 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1802 P_Validation_mode IN VARCHAR2,
1803 P_STATUS_CODE IN VARCHAR2,
1804 P_CLOSE_REASON_CODE IN OUT NOCOPY VARCHAR2,
1805 X_Return_Status OUT NOCOPY VARCHAR2,
1806 X_Msg_Count OUT NOCOPY NUMBER,
1807 X_Msg_Data OUT NOCOPY VARCHAR2
1808 )
1809 IS
1810 CURSOR C_Status_Exists (X_Lookup_Code VARCHAR2) IS
1811 SELECT opp_open_status_flag
1812 FROM as_statuses_b
1813 WHERE lead_flag = 'Y' and enabled_flag = 'Y'
1814 and status_code = X_Lookup_Code;
1815 l_val VARCHAR2(1);
1816 l_profile_opp_lead_link VARCHAR2(200);
1817 l_profile_def_close_reason VARCHAR2(200);
1818 BEGIN
1819 -- Initialize message list IF p_init_msg_list is set to TRUE.
1820 IF FND_API.to_Boolean( p_init_msg_list )
1821 THEN
1822 FND_MSG_PUB.initialize;
1823 END IF;
1824
1825 -- Initialize API return status to SUCCESS
1826 x_return_status := FND_API.G_RET_STS_SUCCESS;
1827
1828 -- Debug Message
1829 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1830 -- 'Validate status close reason'); END IF;
1831
1832 -- IF opp_open_status_flag = 'N' (closed status) then close_reason_code
1833 -- can not be NULL
1834 OPEN C_Status_Exists ( p_status_code);
1835 FETCH C_Status_Exists into l_val;
1836
1837
1838 l_profile_opp_lead_link := FND_PROFILE.Value('AS_LEAD_LINK_STATUS');
1839 IF (AS_DEBUG_LOW_ON) THEN
1840
1841 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1842 'l_profile_opp_lead_link: ' || l_profile_opp_lead_link);
1843 END IF;
1844
1845
1846 IF l_val = 'N' and (P_CLOSE_REASON_CODE is NULL or P_CLOSE_REASON_CODE = fnd_api.G_MISS_CHAR)
1847 THEN
1848 IF (AS_DEBUG_LOW_ON) THEN
1849
1850 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1851 'close check');
1852 END IF;
1853
1854 IF l_profile_opp_lead_link <> P_STATUS_CODE
1855 THEN
1856 IF (AS_DEBUG_LOW_ON) THEN
1857
1858 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1859 'not lead link');
1860 END IF;
1861 AS_UTILITY_PVT.Set_Message(
1862 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1863 p_msg_name => 'API_MISSING_ID',
1864 p_token1 => 'COLUMN',
1865 p_token1_value => 'CLOSE_REASON');
1866 x_return_status := FND_API.G_RET_STS_ERROR;
1867 ELSE
1868 IF (AS_DEBUG_LOW_ON) THEN
1869
1870 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1871 'yes lead link');
1872 END IF;
1873 l_profile_def_close_reason := FND_PROFILE.Value('AS_DEFAULT_LEAD_CLOSE_REASON');
1874 IF (AS_DEBUG_LOW_ON) THEN
1875
1876 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1877 'def_close: ' || l_profile_def_close_reason);
1878 END IF;
1879 --bmuthukr modified the if condition to include g_miss_char to fix bug 3931489.
1880 --if P_CLOSE_REASON_CODE is NULL then
1881 if ((P_CLOSE_REASON_CODE is NULL) or (P_CLOSE_REASON_CODE = fnd_api.G_MISS_CHAR)) then
1882 P_CLOSE_REASON_CODE := l_profile_def_close_reason;
1883 end if;
1884 end IF;
1885 END IF;
1886
1887 IF (l_val = 'Y' and P_CLOSE_REASON_CODE is NOT NULL and P_CLOSE_REASON_CODE <> FND_API.G_MISS_CHAR)
1888 THEN
1889
1890 IF l_profile_opp_lead_link <> P_STATUS_CODE
1891 THEN
1892 AS_UTILITY_PVT.Set_Message(
1893 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1894 p_msg_name => 'AS_NO_CLOSE_REASON'
1895 );
1896 x_return_status := FND_API.G_RET_STS_ERROR;
1897 ELSE
1898 P_CLOSE_REASON_CODE := null;
1899 END IF;
1900 END IF;
1901 CLOSE C_Status_Exists ;
1902
1903
1904
1905 -- Standard call to get message count and IF count is 1, get message info.
1906 FND_MSG_PUB.Count_And_Get
1907 ( p_count => x_msg_count,
1908 p_data => x_msg_data );
1909 END Validate_STATUS_CLOSE_REASON;
1910
1911
1912 PROCEDURE Validate_REF_BY_REF_TYPE (
1913 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1914 P_Validation_mode IN VARCHAR2,
1915 P_REF_BY_ID IN NUMBER,
1916 P_REF_TYPE_CODE IN VARCHAR2,
1917 P_OLD_REF_BY_ID IN NUMBER,
1918 P_OLD_REF_TYPE_CODE IN VARCHAR2,
1919 X_Return_Status OUT NOCOPY VARCHAR2,
1920 X_Msg_Count OUT NOCOPY NUMBER,
1921 X_Msg_Data OUT NOCOPY VARCHAR2
1922 )
1923 IS
1924 l_val VARCHAR2(1);
1925 BEGIN
1926 -- Initialize message list IF p_init_msg_list is set to TRUE.
1927 IF FND_API.to_Boolean( p_init_msg_list )
1928 THEN
1929 FND_MSG_PUB.initialize;
1930 END IF;
1931
1932 -- Initialize API return status to SUCCESS
1933 x_return_status := FND_API.G_RET_STS_SUCCESS;
1934
1935 -- Debug Message
1936 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1937 -- 'Validate status close reason'); END IF;
1938
1939 IF p_validation_mode = AS_UTILITY_PVT.G_CREATE
1940 THEN
1941
1942 IF (P_REF_BY_ID IS NULL or P_REF_BY_ID = FND_API.G_MISS_NUM) and (P_REF_TYPE_CODE IS NOT NULL and P_REF_TYPE_CODE <> FND_API.G_MISS_NUM)
1943 THEN
1944 AS_UTILITY_PVT.Set_Message(
1945 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1946 p_msg_name => 'AS_REF_TYPE_REF_BY');
1947
1948 x_return_status := FND_API.G_RET_STS_ERROR;
1949 END IF;
1950
1951
1952 IF (P_REF_TYPE_CODE IS NULL or P_REF_TYPE_CODE = FND_API.G_MISS_NUM) and (P_REF_BY_ID IS NOT NULL and P_REF_BY_ID <> FND_API.G_MISS_NUM)
1953 THEN
1954 AS_UTILITY_PVT.Set_Message(
1955 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1956 p_msg_name => 'AS_REF_TYPE_REF_BY');
1957
1958 x_return_status := FND_API.G_RET_STS_ERROR;
1959 END IF;
1960
1961 ELSIF p_validation_mode = AS_UTILITY_PVT.G_UPDATE
1962 THEN
1963
1964 IF (P_REF_TYPE_CODE IS NULL and P_REF_BY_ID IS NOT NULL) or
1965 (P_REF_TYPE_CODE IS NOT NULL and P_REF_BY_ID IS NULL) or
1966 (P_REF_TYPE_CODE = FND_API.G_MISS_CHAR and P_REF_BY_ID IS NOT NULL and P_OLD_REF_TYPE_CODE IS NULL) or
1967 (P_REF_BY_ID = FND_API.G_MISS_NUM and P_REF_TYPE_CODE IS NOT NULL and P_OLD_REF_BY_ID IS NULL) or
1968 (P_REF_BY_ID IS NULL and P_REF_TYPE_CODE = FND_API.G_MISS_CHAR and P_OLD_REF_TYPE_CODE IS NOT NULL) or
1969 (P_REF_BY_ID = FND_API.G_MISS_NUM and P_REF_TYPE_CODE IS NULL and P_OLD_REF_BY_ID IS NOT NULL)
1970
1971 THEN
1972
1973 AS_UTILITY_PVT.Set_Message(
1974 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1975 p_msg_name => 'AS_REF_TYPE_REF_BY');
1976
1977 x_return_status := FND_API.G_RET_STS_ERROR;
1978
1979 END IF;
1980
1981
1982
1983 END IF;
1984
1985 -- Standard call to get message count and IF count is 1, get message info.
1986 FND_MSG_PUB.Count_And_Get
1987 ( p_count => x_msg_count,
1988 p_data => x_msg_data );
1989 END Validate_REF_BY_REF_TYPE;
1990
1991
1992 PROCEDURE Validate_OFFER_ID (
1993 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1994 P_Validation_mode IN VARCHAR2,
1995 P_SOURCE_PROMOTION_ID IN NUMBER,
1996 P_OFFER_ID IN NUMBER,
1997 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
1998 X_Return_Status OUT NOCOPY VARCHAR2,
1999 X_Msg_Count OUT NOCOPY NUMBER,
2000 X_Msg_Data OUT NOCOPY VARCHAR2
2001 )
2002 IS
2003 CURSOR C_OFFER_ID_Exists (c_OFFER_ID NUMBER) IS
2004 -- the validation logic for offer_id has changed. Bug # 1915617
2005 SELECT 'X'
2006 FROM ams_source_codes
2007 WHERE source_code_id = c_offer_id
2008 and ARC_SOURCE_CODE_FOR = 'OFFR';
2009
2010 --SELECT 'X'
2011 --FROM ams_act_offers
2012 --WHERE activity_offer_id = c_offer_id
2013 -- and nvl(start_date, sysdate) <= sysdate
2014 -- and nvl(end_date, sysdate) >= sysdate
2015 -- ffang 012501
2016 -- and ARC_ACT_OFFER_USED_BY = 'CAMP'
2017 -- and ACT_OFFER_USED_BY_ID =
2018 -- (SELECT CAMPAIGN_ID
2019 -- FROM AMS_CAMPAIGNS_VL c, AMS_SOURCE_CODES s
2020 -- WHERE c.SOURCE_CODE = s.SOURCE_CODE
2021 -- AND s.SOURCE_CODE_ID = P_SOURCE_PROMOTION_ID);
2022
2023
2024 l_val VARCHAR2(1);
2025
2026 BEGIN
2027
2028 -- Initialize message list IF p_init_msg_list is set to TRUE.
2029 IF FND_API.to_Boolean( p_init_msg_list )
2030 THEN
2031 FND_MSG_PUB.initialize;
2032 END IF;
2033
2034 -- Initialize API return status to SUCCESS
2035 x_return_status := FND_API.G_RET_STS_SUCCESS;
2036
2037 -- Debug Message
2038 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2039 -- 'Validate offer id'); END IF;
2040
2041 IF (p_OFFER_ID is NOT NULL) and (p_OFFER_ID <> FND_API.G_MISS_NUM)
2042 THEN
2043 -- OFFER_ID should exist in ams_act_offers
2044 OPEN C_OFFER_ID_Exists (p_OFFER_ID);
2045 FETCH C_OFFER_ID_Exists into l_val;
2046
2047 IF C_OFFER_ID_Exists%NOTFOUND THEN
2048 IF (AS_DEBUG_LOW_ON) THEN
2049
2050 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2051 'Private API: OFFER_ID is invalid');
2052 END IF;
2053 AS_UTILITY_PVT.Set_Message(
2054 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2055 p_msg_name => 'API_INVALID_ID',
2056 p_token1 => 'COLUMN',
2057 p_token1_value => 'OFFER',
2058 p_token2 => 'VALUE',
2059 p_token2_value => p_OFFER_ID );
2060
2061 x_return_status := FND_API.G_RET_STS_ERROR;
2062 END IF;
2063 CLOSE C_OFFER_ID_Exists;
2064 END IF;
2065
2066 -- Standard call to get message count and IF count is 1, get message info.
2067 FND_MSG_PUB.Count_And_Get
2068 ( p_count => x_msg_count,
2069 p_data => x_msg_data
2070 );
2071
2072 END Validate_OFFER_ID;
2073
2074
2075 PROCEDURE Validate_INC_PARTNER_PARTY_ID (
2076 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2077 P_Validation_mode IN VARCHAR2,
2078 P_INC_PARTNER_PARTY_ID IN NUMBER,
2079 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2080 X_Return_Status OUT NOCOPY VARCHAR2,
2081 X_Msg_Count OUT NOCOPY NUMBER,
2082 X_Msg_Data OUT NOCOPY VARCHAR2
2083 )
2084 IS
2085 CURSOR C_INC_PRTN_PARTY_ID_Exist (c_inc_parn_party_id NUMBER) IS
2086 SELECT 'X'
2087 FROM as_sf_ptr_v
2088 WHERE partner_customer_id = c_inc_parn_party_id;
2089 l_val VARCHAR2(1);
2090
2091 BEGIN
2092
2093 -- Initialize message list if p_init_msg_list is set to TRUE.
2094 IF FND_API.to_Boolean( p_init_msg_list )
2095 THEN
2096 FND_MSG_PUB.initialize;
2097 END IF;
2098
2099
2100 -- Initialize API return status to SUCCESS
2101 x_return_status := FND_API.G_RET_STS_SUCCESS;
2102
2103 IF (P_INC_PARTNER_PARTY_ID is NOT NULL) and
2104 (P_INC_PARTNER_PARTY_ID <> FND_API.G_MISS_NUM)
2105 THEN
2106 OPEN C_INC_PRTN_PARTY_ID_Exist (P_INC_PARTNER_PARTY_ID);
2107 FETCH C_INC_PRTN_PARTY_ID_Exist into l_val;
2108
2109 IF C_INC_PRTN_PARTY_ID_Exist%NOTFOUND THEN
2110 IF (AS_DEBUG_LOW_ON) THEN
2111
2112 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2113 'Private API: INCUMBENT_PARTNER_PARTY_ID is invalid');
2114 END IF;
2115
2116 AS_UTILITY_PVT.Set_Message(
2117 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2118 p_msg_name => 'API_INVALID_ID',
2119 p_token1 => 'COLUMN',
2120 p_token1_value => 'INCUMBENT_PARTNER_PARTY_ID',
2121 p_token2 => 'VALUE',
2122 p_token2_value => p_INC_PARTNER_PARTY_ID );
2123 END IF;
2124
2125 -- ffang 092800: Forgot to close cursor?
2126 CLOSE C_INC_PRTN_PARTY_ID_Exist;
2127 -- end ffang 092800
2128 END IF;
2129
2130 -- Standard call to get message count and if count is 1, get message info.
2131 FND_MSG_PUB.Count_And_Get
2132 ( p_count => x_msg_count,
2133 p_data => x_msg_data
2134 );
2135
2136 END Validate_INC_PARTNER_PARTY_ID;
2137
2138
2139 PROCEDURE Validate_INC_PRTNR_RESOURCE_ID (
2140 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2141 P_Validation_mode IN VARCHAR2,
2142 P_INC_PARTNER_RESOURCE_ID IN NUMBER,
2143 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2144 X_Return_Status OUT NOCOPY VARCHAR2,
2145 X_Msg_Count OUT NOCOPY NUMBER,
2146 X_Msg_Data OUT NOCOPY VARCHAR2
2147 )
2148 IS
2149
2150 CURSOR C_RESOURCE_ID_Exists (c_INC_PARTNER_RESOURCE_ID VARCHAR2) IS
2151 SELECT 'X'
2152 FROM as_sf_ptr_v
2153 WHERE SALESFORCE_ID = c_INC_PARTNER_RESOURCE_ID;
2154 --FROM jtf_rs_resource_extns
2155 --WHERE RESOURCE_ID = c_INC_PARTNER_RESOURCE_ID;
2156 l_val VARCHAR2(1);
2157
2158 BEGIN
2159 -- Initialize message list if p_init_msg_list is set to TRUE.
2160 IF FND_API.to_Boolean( p_init_msg_list )
2161 THEN
2162 FND_MSG_PUB.initialize;
2163 END IF;
2164
2165 -- Initialize API return status to SUCCESS
2166 x_return_status := FND_API.G_RET_STS_SUCCESS;
2167
2168 IF (p_INC_PARTNER_RESOURCE_ID is NOT NULL) and
2169 (p_INC_PARTNER_RESOURCE_ID <> FND_API.G_MISS_NUM)
2170 THEN
2171 -- INCUMBENT_PARTNER_RESOURCE_ID should exist in as_sf_ptr_v
2172 OPEN C_RESOURCE_ID_Exists (p_INC_PARTNER_RESOURCE_ID);
2173 FETCH C_RESOURCE_ID_Exists into l_val;
2174
2175 IF C_RESOURCE_ID_Exists%NOTFOUND THEN
2176 IF (AS_DEBUG_LOW_ON) THEN
2177
2178 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2179 'Private API: INCUMBENT_PARTNER_RESOURCE_ID is invalid');
2180 END IF;
2181
2182 AS_UTILITY_PVT.Set_Message(
2183 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2184 p_msg_name => 'API_INVALID_ID',
2185 p_token1 => 'COLUMN',
2186 p_token1_value => 'INCUMBENT_PARTNER_RESOURCE_ID',
2187 p_token2 => 'VALUE',
2188 p_token2_value => p_INC_PARTNER_RESOURCE_ID );
2189
2190 x_return_status := FND_API.G_RET_STS_ERROR;
2191 END IF;
2192
2193 CLOSE C_RESOURCE_ID_Exists;
2194 END IF;
2195
2196 -- Standard call to get message count and if count is 1, get message info.
2197 FND_MSG_PUB.Count_And_Get
2198 ( p_count => x_msg_count,
2199 p_data => x_msg_data
2200 );
2201
2202 END Validate_INC_PRTNR_RESOURCE_ID;
2203
2204
2205 PROCEDURE Validate_PRM_EXEC_SPONSOR_FLAG (
2206 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2207 P_Validation_mode IN VARCHAR2,
2208 P_PRM_EXEC_SPONSOR_FLAG IN VARCHAR2,
2209 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2210 X_Return_Status OUT NOCOPY VARCHAR2,
2211 X_Msg_Count OUT NOCOPY NUMBER,
2212 X_Msg_Data OUT NOCOPY VARCHAR2
2213 )
2214 IS
2215 BEGIN
2216 -- Initialize message list IF p_init_msg_list is set to TRUE.
2217 IF FND_API.to_Boolean( p_init_msg_list )
2218 THEN
2219 FND_MSG_PUB.initialize;
2220 END IF;
2221
2222 -- Initialize API return status to SUCCESS
2223 x_return_status := FND_API.G_RET_STS_SUCCESS;
2224
2225 -- Debug Message
2226 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2227 -- 'Validate PRM_EXEC_SPONSOR_FLAG'); END IF;
2228
2229 IF (p_PRM_EXEC_SPONSOR_FLAG is NOT NULL) and
2230 (p_PRM_EXEC_SPONSOR_FLAG <> FND_API.G_MISS_CHAR)
2231 THEN
2232 IF (UPPER(p_PRM_EXEC_SPONSOR_FLAG) <> 'Y') and
2233 (UPPER(p_PRM_EXEC_SPONSOR_FLAG) <> 'N')
2234 THEN
2235 IF (AS_DEBUG_LOW_ON) THEN
2236
2237 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2238 'Private API: PRM_EXEC_SPONSOR_FLAG is invalid');
2239 END IF;
2240
2241 AS_UTILITY_PVT.Set_Message(
2242 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2243 p_msg_name => 'API_INVALID_ID',
2244 p_token1 => 'COLUMN',
2245 p_token1_value => 'PRM_EXEC_SPONSOR_FLAG',
2246 p_token2 => 'VALUE',
2247 p_token2_value => p_PRM_EXEC_SPONSOR_FLAG );
2248
2249 x_return_status := FND_API.G_RET_STS_ERROR;
2250 END IF;
2251 END IF;
2252
2253 -- Standard call to get message count and IF count is 1, get message info.
2254 FND_MSG_PUB.Count_And_Get
2255 ( p_count => x_msg_count,
2256 p_data => x_msg_data
2257 );
2258
2259 END Validate_PRM_EXEC_SPONSOR_FLAG;
2260
2261
2262 PROCEDURE Validate_PRM_PRJ_LDINPLE_FLAG (
2263 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2264 P_Validation_mode IN VARCHAR2,
2265 P_PRM_PRJ_LEAD_IN_PLACE_FLAG IN VARCHAR2,
2266 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2267 X_Return_Status OUT NOCOPY VARCHAR2,
2268 X_Msg_Count OUT NOCOPY NUMBER,
2269 X_Msg_Data OUT NOCOPY VARCHAR2
2270 )
2271 IS
2272 BEGIN
2273 -- Initialize message list IF p_init_msg_list is set to TRUE.
2274 IF FND_API.to_Boolean( p_init_msg_list )
2275 THEN
2276 FND_MSG_PUB.initialize;
2277 END IF;
2278
2279 -- Initialize API return status to SUCCESS
2280 x_return_status := FND_API.G_RET_STS_SUCCESS;
2281
2282 -- Debug Message
2283 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2284 -- 'Validate PRM_PRJ_LDINPLE_FLAG'); END IF;
2285
2286 IF (p_PRM_PRJ_LEAD_IN_PLACE_FLAG is NOT NULL) and
2287 (p_PRM_PRJ_LEAD_IN_PLACE_FLAG <> FND_API.G_MISS_CHAR)
2288 THEN
2289 IF (UPPER(p_PRM_PRJ_LEAD_IN_PLACE_FLAG) <> 'Y') and
2290 (UPPER(p_PRM_PRJ_LEAD_IN_PLACE_FLAG) <> 'N')
2291 THEN
2292 IF (AS_DEBUG_LOW_ON) THEN
2293
2294 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2295 'Private API: PRM_PRJ_LEAD_IN_PLACE_FLAG is invalid');
2296 END IF;
2297
2298 AS_UTILITY_PVT.Set_Message(
2299 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2300 p_msg_name => 'API_INVALID_ID',
2301 p_token1 => 'COLUMN',
2302 p_token1_value => 'PRM_PRJ_LEAD_IN_PLACE_FLAG',
2303 p_token2 => 'VALUE',
2304 p_token2_value => p_PRM_PRJ_LEAD_IN_PLACE_FLAG );
2305
2306 x_return_status := FND_API.G_RET_STS_ERROR;
2307 END IF;
2308 END IF;
2309
2310 -- Standard call to get message count and IF count is 1, get message info.
2311 FND_MSG_PUB.Count_And_Get
2312 ( p_count => x_msg_count,
2313 p_data => x_msg_data
2314 );
2315
2316 END Validate_PRM_PRJ_LDINPLE_FLAG;
2317
2318
2319 PROCEDURE Validate_PRM_LEAD_TYPE (
2320 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2321 P_Validation_mode IN VARCHAR2,
2322 P_PRM_LEAD_TYPE IN VARCHAR2,
2323 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2324 X_Return_Status OUT NOCOPY VARCHAR2,
2325 X_Msg_Count OUT NOCOPY NUMBER,
2326 X_Msg_Data OUT NOCOPY VARCHAR2
2327 )
2328 IS
2329 CURSOR C_PRM_LEAD_TYPE_Exists (c_Lookup_Code VARCHAR2) IS
2330 SELECT 'X'
2331 FROM as_lookups
2332 WHERE lookup_type = 'PRM_LEAD_TYPE'
2333 and lookup_code = c_Lookup_Code;
2334 l_val VARCHAR2(1);
2335
2336 BEGIN
2337
2338 -- Initialize message list IF p_init_msg_list is set to TRUE.
2339 IF FND_API.to_Boolean( p_init_msg_list )
2340 THEN
2341 FND_MSG_PUB.initialize;
2342 END IF;
2343
2344
2345 -- Initialize API return status to SUCCESS
2346 x_return_status := FND_API.G_RET_STS_SUCCESS;
2347
2348 -- Debug Message
2349 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2350 -- 'Validate PRM_LEAD_TYPE'); END IF;
2351
2352 IF (p_PRM_LEAD_TYPE is NOT NULL) and
2353 (p_PRM_LEAD_TYPE <> FND_API.G_MISS_CHAR)
2354 THEN
2355 -- PRM_LEAD_TYPE should exist in as_lookups
2356 OPEN C_PRM_LEAD_TYPE_Exists (p_PRM_LEAD_TYPE);
2357 FETCH C_PRM_LEAD_TYPE_Exists into l_val;
2358
2359 IF C_PRM_LEAD_TYPE_Exists%NOTFOUND THEN
2360 IF (AS_DEBUG_LOW_ON) THEN
2361
2362 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2363 'Private API: PRM_LEAD_TYPE is invalid');
2364 END IF;
2365 AS_UTILITY_PVT.Set_Message(
2366 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2367 p_msg_name => 'API_INVALID_ID',
2368 p_token1 => 'COLUMN',
2369 p_token1_value => 'PRM_LEAD_TYPE',
2370 p_token2 => 'VALUE',
2371 p_token2_value => p_PRM_LEAD_TYPE );
2372 x_return_status := FND_API.G_RET_STS_ERROR;
2373 END IF;
2374 CLOSE C_PRM_LEAD_TYPE_Exists;
2375 END IF;
2376
2377 -- Standard call to get message count and IF count is 1, get message info.
2378 FND_MSG_PUB.Count_And_Get
2379 ( p_count => x_msg_count,
2380 p_data => x_msg_data
2381 );
2382
2383 END Validate_PRM_LEAD_TYPE;
2384
2385
2386 PROCEDURE Validate_PRM_IND_CLS_CODE (
2387 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2388 P_Validation_mode IN VARCHAR2,
2389 P_PRM_IND_CLASSIFICATION_CODE IN VARCHAR2,
2390 x_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2391 X_Return_Status OUT NOCOPY VARCHAR2,
2392 X_Msg_Count OUT NOCOPY NUMBER,
2393 X_Msg_Data OUT NOCOPY VARCHAR2
2394 )
2395 IS
2396 CURSOR C_PRM_IND_CLS_CODE_Exists (c_Lookup_Code VARCHAR2) IS
2397 SELECT 'X'
2398 FROM as_lookups
2399 WHERE lookup_type = 'PRM_IND_CLASSIFICATION_TYPE'
2400 and lookup_code = c_Lookup_Code;
2401 l_val VARCHAR2(1);
2402
2403 BEGIN
2404
2405 -- Initialize message list IF p_init_msg_list is set to TRUE.
2406 IF FND_API.to_Boolean( p_init_msg_list )
2407 THEN
2408 FND_MSG_PUB.initialize;
2409 END IF;
2410
2411
2412 -- Initialize API return status to SUCCESS
2413 x_return_status := FND_API.G_RET_STS_SUCCESS;
2414
2415 -- Debug Message
2416 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2417 -- 'Validate PRM_IND_CLS_CODE'); END IF;
2418
2419 IF (p_PRM_IND_CLASSIFICATION_CODE is NOT NULL) and
2420 (p_PRM_IND_CLASSIFICATION_CODE <> FND_API.G_MISS_CHAR)
2421 THEN
2422 -- PRM_IND_CLASSIFICATION_CODE should exist in as_lookups
2423 OPEN C_PRM_IND_CLS_CODE_Exists (p_PRM_IND_CLASSIFICATION_CODE);
2424 FETCH C_PRM_IND_CLS_CODE_Exists into l_val;
2425
2426 IF C_PRM_IND_CLS_CODE_Exists%NOTFOUND THEN
2427 IF (AS_DEBUG_LOW_ON) THEN
2428
2429 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2430 'Private API: PRM_IND_CLASSIFICATION_CODE is invalid');
2431 END IF;
2432 AS_UTILITY_PVT.Set_Message(
2433 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2434 p_msg_name => 'API_INVALID_ID',
2435 p_token1 => 'COLUMN',
2436 p_token1_value => 'PRM_IND_CLASSIFICATION_CODE',
2437 p_token2 => 'VALUE',
2438 p_token2_value => p_PRM_IND_CLASSIFICATION_CODE );
2439 x_return_status := FND_API.G_RET_STS_ERROR;
2440 END IF;
2441 CLOSE C_PRM_IND_CLS_CODE_Exists;
2442 END IF;
2443
2444 -- Standard call to get message count and IF count is 1, get message info.
2445 FND_MSG_PUB.Count_And_Get
2446 ( p_count => x_msg_count,
2447 p_data => x_msg_data
2448 );
2449
2450 END Validate_PRM_IND_CLS_CODE;
2451
2452
2453
2454 PROCEDURE Validate_AUTO_ASSIGNMENT_TYPE (
2455 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2456 P_Validation_mode IN VARCHAR2,
2457 P_AUTO_ASSIGNMENT_TYPE IN VARCHAR2,
2458 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2459 X_Return_Status OUT NOCOPY VARCHAR2,
2460 X_Msg_Count OUT NOCOPY NUMBER,
2461 X_Msg_Data OUT NOCOPY VARCHAR2
2462 )
2463 IS
2464 CURSOR C_AUTO_ASGN_TYPE_Exists (c_lookup_type VARCHAR2,
2465 c_Lookup_Code VARCHAR2) IS
2466 SELECT 'X'
2467 FROM as_lookups
2468 WHERE lookup_type = c_lookup_type
2469 and lookup_code = c_Lookup_Code;
2470 l_val VARCHAR2(1);
2471
2472 BEGIN
2473
2474 -- Initialize message list if p_init_msg_list is set to TRUE.
2475 IF FND_API.to_Boolean( p_init_msg_list )
2476 THEN
2477 FND_MSG_PUB.initialize;
2478 END IF;
2479
2480
2481 -- Initialize API return status to SUCCESS
2482 x_return_status := FND_API.G_RET_STS_SUCCESS;
2483
2484 IF (p_AUTO_ASSIGNMENT_TYPE is NOT NULL) and
2485 (p_AUTO_ASSIGNMENT_TYPE <> FND_API.G_MISS_CHAR)
2486 THEN
2487 -- AUTO_ASSIGNMENT_TYPE should exist in as_lookups
2488 OPEN C_AUTO_ASGN_TYPE_Exists ('AUTO_ASSIGNMENT_TYPE',
2489 p_AUTO_ASSIGNMENT_TYPE);
2490 FETCH C_AUTO_ASGN_TYPE_Exists into l_val;
2491
2492 IF C_AUTO_ASGN_TYPE_Exists%NOTFOUND THEN
2493 -- IF (AS_DEBUG_ERROR_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
2494 -- 'Private API: AUTO_ASSIGNMENT_TYPE is invalid'); END IF;
2495
2496 AS_UTILITY_PVT.Set_Message(
2497 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2498 p_msg_name => 'API_INVALID_AUTO_ASGN_TYPE',
2499 p_token1 => 'VALUE',
2500 p_token1_value => p_AUTO_ASSIGNMENT_TYPE );
2501
2502 x_return_status := FND_API.G_RET_STS_ERROR;
2503 END IF;
2504
2505 CLOSE C_AUTO_ASGN_TYPE_Exists;
2506 END IF;
2507
2508 -- Standard call to get message count and if count is 1, get message info.
2509 FND_MSG_PUB.Count_And_Get
2510 ( p_count => x_msg_count,
2511 p_data => x_msg_data
2512 );
2513
2514 END Validate_AUTO_ASSIGNMENT_TYPE;
2515
2516
2517 PROCEDURE Validate_PRM_ASSIGNMENT_TYPE (
2518 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2519 P_Validation_mode IN VARCHAR2,
2520 P_PRM_ASSIGNMENT_TYPE IN VARCHAR2,
2521 X_Item_Property_Rec OUT NOCOPY AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2522 X_Return_Status OUT NOCOPY VARCHAR2,
2523 X_Msg_Count OUT NOCOPY NUMBER,
2524 X_Msg_Data OUT NOCOPY VARCHAR2
2525 )
2526 IS
2527 CURSOR C_PRM_ASGN_TYPE_Exists (c_lookup_type VARCHAR2,
2528 c_Lookup_Code VARCHAR2) IS
2529 SELECT 'X'
2530 FROM as_lookups
2531 WHERE lookup_type = c_lookup_type
2532 and lookup_code = c_Lookup_Code;
2533 l_val VARCHAR2(1);
2534
2535 BEGIN
2536 -- Initialize message list if p_init_msg_list is set to TRUE.
2537 IF FND_API.to_Boolean( p_init_msg_list )
2538 THEN
2539 FND_MSG_PUB.initialize;
2540 END IF;
2541
2542 -- Initialize API return status to SUCCESS
2543 x_return_status := FND_API.G_RET_STS_SUCCESS;
2544
2545 IF (p_PRM_ASSIGNMENT_TYPE is NOT NULL) and
2546 (p_PRM_ASSIGNMENT_TYPE <> FND_API.G_MISS_CHAR)
2547 THEN
2548 -- PRM_ASSIGNMENT_TYPE should exist in as_lookups
2549 OPEN C_PRM_ASGN_TYPE_Exists ('PRM_ASSIGNMENT_TYPE',
2550 p_PRM_ASSIGNMENT_TYPE);
2551 FETCH C_PRM_ASGN_TYPE_Exists into l_val;
2552
2553 IF C_PRM_ASGN_TYPE_Exists%NOTFOUND THEN
2554 -- IF (AS_DEBUG_ERROR_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
2555 -- 'Private API: PRM_ASSIGNMENT_TYPE is invalid'); END IF;
2556
2557 AS_UTILITY_PVT.Set_Message(
2558 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2559 p_msg_name => 'API_INVALID_PRM_ASGN_TYPE',
2560 p_token1 => 'VALUE',
2561 p_token1_value => p_PRM_ASSIGNMENT_TYPE );
2562
2563 x_return_status := FND_API.G_RET_STS_ERROR;
2564 END IF;
2565
2566 CLOSE C_PRM_ASGN_TYPE_Exists;
2567 END IF;
2568
2569 -- Standard call to get message count and if count is 1, get message info.
2570 FND_MSG_PUB.Count_And_Get
2571 ( p_count => x_msg_count,
2572 p_data => x_msg_data
2573 );
2574
2575 END Validate_PRM_ASSIGNMENT_TYPE;
2576
2577
2578 --
2579 -- Record Level Validation
2580 --
2581
2582
2583 --
2584 -- Inter-record level validation
2585 --
2586
2587 PROCEDURE Validate_Budget_Amounts(
2588 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2589 P_Validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2590 P_Validation_mode IN VARCHAR2,
2591 P_SALES_LEAD_ID IN NUMBER,
2592 X_Return_Status OUT NOCOPY VARCHAR2,
2593 X_Msg_Count OUT NOCOPY NUMBER,
2594 X_Msg_Data OUT NOCOPY VARCHAR2
2595 )
2596 IS
2597 CURSOR C_Header_Amount (X_Sales_Lead_ID NUMBER) IS
2598 SELECT budget_amount
2599 FROM as_sales_leads
2600 where sales_lead_id = X_Sales_Lead_ID;
2601
2602 CURSOR C_Lines_Amounts (X_Sales_Lead_ID NUMBER) IS
2603 SELECT sum (budget_amount)
2604 FROM as_sales_lead_lines
2605 where sales_lead_id = X_Sales_Lead_ID;
2606
2607 l_header_amount NUMBER;
2608 l_lines_amounts NUMBER;
2609 BEGIN
2610 -- Initialize message list IF p_init_msg_list is set to TRUE.
2611 IF FND_API.to_Boolean( p_init_msg_list )
2612 THEN
2613 FND_MSG_PUB.initialize;
2614 END IF;
2615
2616 -- Initialize API return status to SUCCESS
2617 x_return_status := FND_API.G_RET_STS_SUCCESS;
2618
2619 -- Debug Message
2620 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2621 -- 'Validate budget amount'); END IF;
2622
2623 -- The summary of lines' budget_amount should be equal to header's
2624 -- budget_amount
2625 OPEN C_Header_Amount (P_SALES_LEAD_ID);
2626 FETCH C_Header_Amount into l_header_amount;
2627 CLOSE C_Header_Amount;
2628
2629 OPEN C_Lines_Amounts (P_SALES_LEAD_ID);
2630 FETCH C_Lines_Amounts into l_lines_amounts;
2631 CLOSE C_Lines_Amounts;
2632
2633 IF l_header_amount <> l_lines_amounts
2634 THEN
2635 AS_UTILITY_PVT.Set_Message(
2636 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
2637 p_msg_name => 'AS_BUDGET_AMOUNT_NOT_MATCH');
2638 x_return_status := FND_API.G_RET_STS_ERROR;
2639 END IF;
2640
2641 -- Standard call to get message count and IF count is 1, get message info.
2642 FND_MSG_PUB.Count_And_Get
2643 ( p_count => x_msg_count,
2644 p_data => x_msg_data );
2645 END Validate_Budget_Amounts;
2646
2647
2648 -- validation procedures
2649
2650 PROCEDURE Validate_sales_lead(
2651 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2652 P_Validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2653 P_Validation_mode IN VARCHAR2,
2654 P_SALES_LEAD_Rec IN OUT NOCOPY AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type,
2655 P_Referral_Type IN VARCHAR2,
2656 P_Referred_By IN NUMBER,
2657 X_Return_Status OUT NOCOPY VARCHAR2,
2658 X_Msg_Count OUT NOCOPY NUMBER,
2659 X_Msg_Data OUT NOCOPY VARCHAR2
2660 )
2661 IS
2662 l_api_name CONSTANT VARCHAR2(30) := 'Validate_sales_lead';
2663 l_item_property_rec AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE;
2664 l_return_status VARCHAR2(1);
2665 l_close_reason_code VARCHAR2(50);
2666
2667 BEGIN
2668 -- Initialize message list IF p_init_msg_list is set to TRUE.
2669 IF FND_API.to_Boolean( p_init_msg_list )
2670 THEN
2671 FND_MSG_PUB.initialize;
2672 END IF;
2673
2674 -- Debug Message
2675 IF (AS_DEBUG_LOW_ON) THEN
2676
2677 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2678 'PVT:' || l_api_name || ' Start');
2679 END IF;
2680
2681 -- Initialize API return status to SUCCESS
2682 x_return_status := FND_API.G_RET_STS_SUCCESS;
2683 l_return_status := FND_API.G_RET_STS_SUCCESS;
2684
2685 IF ( P_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM)
2686 THEN
2687 -- Perform item level validation
2688 Validate_CUSTOMER_ID(
2689 p_init_msg_list => FND_API.G_FALSE,
2690 p_validation_mode => p_validation_mode,
2691 p_CUSTOMER_ID => P_SALES_LEAD_Rec.CUSTOMER_ID,
2692 x_return_status => x_return_status,
2693 x_msg_count => x_msg_count,
2694 x_msg_data => x_msg_data);
2695 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2696 l_return_status := FND_API.G_RET_STS_ERROR;
2697 -- raise FND_API.G_EXC_ERROR;
2698 END IF;
2699
2700 Validate_ADDRESS_ID(
2701 p_init_msg_list => FND_API.G_FALSE,
2702 p_validation_mode => p_validation_mode,
2703 p_CUSTOMER_ID => P_SALES_LEAD_Rec.CUSTOMER_ID,
2704 p_ADDRESS_ID => P_SALES_LEAD_Rec.ADDRESS_ID,
2705 x_return_status => x_return_status,
2706 x_msg_count => x_msg_count,
2707 x_msg_data => x_msg_data);
2708 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2709 l_return_status := FND_API.G_RET_STS_ERROR;
2710 -- raise FND_API.G_EXC_ERROR;
2711 END IF;
2712
2713 /* This column is not required anymore
2714 Validate_LEAD_NUMBER(
2715 p_init_msg_list => FND_API.G_FALSE,
2716 p_validation_mode => p_validation_mode,
2717 p_LEAD_NUMBER => P_SALES_LEAD_Rec.LEAD_NUMBER,
2718 x_return_status => x_return_status,
2719 x_msg_count => x_msg_count,
2720 x_msg_data => x_msg_data);
2721 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2722 l_return_status := FND_API.G_RET_STS_ERROR;
2723 -- raise FND_API.G_EXC_ERROR;
2724 END IF;
2725 */
2726
2727 Validate_STATUS_CODE(
2728 p_init_msg_list => FND_API.G_FALSE,
2729 p_validation_mode => p_validation_mode,
2730 p_STATUS_CODE => P_SALES_LEAD_Rec.STATUS_CODE,
2731 p_sales_lead_id =>P_SALES_LEAD_Rec.SALES_LEAD_ID,
2732 x_return_status => x_return_status,
2733 x_msg_count => x_msg_count,
2734 x_msg_data => x_msg_data);
2735 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2736 l_return_status := FND_API.G_RET_STS_ERROR;
2737 -- raise FND_API.G_EXC_ERROR;
2738 END IF;
2739
2740 Validate_SOURCE_PROMOTION_ID(
2741 p_init_msg_list => FND_API.G_FALSE,
2742 p_validation_mode => p_validation_mode,
2743 p_SOURCE_PROMOTION_ID => P_SALES_LEAD_Rec.SOURCE_PROMOTION_ID,
2744 x_return_status => x_return_status,
2745 x_msg_count => x_msg_count,
2746 x_msg_data => x_msg_data);
2747 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2748 l_return_status := FND_API.G_RET_STS_ERROR;
2749 -- raise FND_API.G_EXC_ERROR;
2750 END IF;
2751
2752 -- 11.5.10 ckapoor Adding validation for sales methodology ID
2753
2754 Validate_Sales_Methodology_ID(
2755 p_init_msg_list => FND_API.G_FALSE,
2756 p_validation_mode => p_validation_mode,
2757 p_Sales_Methodology_ID => P_SALES_LEAD_Rec.SALES_METHODOLOGY_ID,
2758 x_return_status => x_return_status,
2759 x_msg_count => x_msg_count,
2760 x_msg_data => x_msg_data);
2761 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2762 l_return_status := FND_API.G_RET_STS_ERROR;
2763 -- raise FND_API.G_EXC_ERROR;
2764 END IF;
2765
2766
2767
2768 Validate_Sales_Stage_ID(
2769 p_init_msg_list => FND_API.G_FALSE,
2770 p_validation_mode => p_validation_mode,
2771 p_Sales_Methodology_ID => P_SALES_LEAD_Rec.SALES_METHODOLOGY_ID,
2772 p_Sales_Stage_ID => p_sales_lead_rec.SALES_STAGE_ID,
2773 x_return_status => x_return_status,
2774 x_msg_count => x_msg_count,
2775 x_msg_data => x_msg_data);
2776 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2777 l_return_status := FND_API.G_RET_STS_ERROR;
2778 -- raise FND_API.G_EXC_ERROR;
2779 END IF;
2780
2781
2782
2783 /* This column is obsoleted in 11i
2784 Validate_CONTACT_ROLE_CODE(
2785 p_init_msg_list => FND_API.G_FALSE,
2786 p_validation_mode => p_validation_mode,
2787 p_CONTACT_ROLE_CODE => P_SALES_LEAD_Rec.CONTACT_ROLE_CODE,
2788 x_return_status => x_return_status,
2789 x_msg_count => x_msg_count,
2790 x_msg_data => x_msg_data);
2791 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2792 l_return_status := FND_API.G_RET_STS_ERROR;
2793 -- raise FND_API.G_EXC_ERROR;
2794 END IF;
2795 */
2796
2797 Validate_CHANNEL_CODE(
2798 p_init_msg_list => FND_API.G_FALSE,
2799 p_validation_mode => p_validation_mode,
2800 p_CHANNEL_CODE => P_SALES_LEAD_Rec.CHANNEL_CODE,
2801 x_return_status => x_return_status,
2802 x_msg_count => x_msg_count,
2803 x_msg_data => x_msg_data);
2804 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2805 l_return_status := FND_API.G_RET_STS_ERROR;
2806 -- raise FND_API.G_EXC_ERROR;
2807 END IF;
2808
2809 Validate_CURRENCY_CODE(
2810 p_init_msg_list => FND_API.G_FALSE,
2811 p_validation_mode => p_validation_mode,
2812 p_CURRENCY_CODE => P_SALES_LEAD_Rec.CURRENCY_CODE,
2813 x_return_status => x_return_status,
2814 x_msg_count => x_msg_count,
2815 x_msg_data => x_msg_data);
2816 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2817 l_return_status := FND_API.G_RET_STS_ERROR;
2818 -- raise FND_API.G_EXC_ERROR;
2819 END IF;
2820
2821 Validate_DECN_TIMEFRAME_CODE(
2822 p_init_msg_list => FND_API.G_FALSE,
2823 p_validation_mode => p_validation_mode,
2824 p_DECISION_TIMEFRAME_CODE
2825 => P_SALES_LEAD_Rec.DECISION_TIMEFRAME_CODE,
2826 x_return_status => x_return_status,
2827 x_msg_count => x_msg_count,
2828 x_msg_data => x_msg_data);
2829 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2830 l_return_status := FND_API.G_RET_STS_ERROR;
2831 -- raise FND_API.G_EXC_ERROR;
2832 END IF;
2833
2834 Validate_CLOSE_REASON(
2835 p_init_msg_list => FND_API.G_FALSE,
2836 p_validation_mode => p_validation_mode,
2837 p_CLOSE_REASON => P_SALES_LEAD_Rec.CLOSE_REASON,
2838 x_return_status => x_return_status,
2839 x_msg_count => x_msg_count,
2840 x_msg_data => x_msg_data);
2841 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2842 l_return_status := FND_API.G_RET_STS_ERROR;
2843 -- raise FND_API.G_EXC_ERROR;
2844 END IF;
2845
2846 Validate_LEAD_RANK_ID(
2847 p_init_msg_list => FND_API.G_FALSE,
2848 p_validation_mode => p_validation_mode,
2849 p_LEAD_RANK_ID => P_SALES_LEAD_Rec.LEAD_RANK_ID,
2850 x_return_status => x_return_status,
2851 x_msg_count => x_msg_count,
2852 x_msg_data => x_msg_data);
2853 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2854 l_return_status := FND_API.G_RET_STS_ERROR;
2855 -- raise FND_API.G_EXC_ERROR;
2856 END IF;
2857
2858 Validate_ASSIGN_TO_PERSON_ID(
2859 p_init_msg_list => FND_API.G_FALSE,
2860 p_validation_mode => p_validation_mode,
2861 p_ASSIGN_TO_PERSON_ID => P_SALES_LEAD_Rec.ASSIGN_TO_PERSON_ID,
2862 x_return_status => x_return_status,
2863 x_msg_count => x_msg_count,
2864 x_msg_data => x_msg_data);
2865 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2866 l_return_status := FND_API.G_RET_STS_ERROR;
2867 -- raise FND_API.G_EXC_ERROR;
2868 END IF;
2869
2870 Validate_ASSIGN_TO_SF_ID(
2871 p_init_msg_list => FND_API.G_FALSE,
2872 p_validation_mode => p_validation_mode,
2873 p_ASSIGN_TO_SALESFORCE_ID =>
2874 P_SALES_LEAD_Rec.ASSIGN_TO_SALESFORCE_ID,
2875 x_return_status => x_return_status,
2876 x_msg_count => x_msg_count,
2877 x_msg_data => x_msg_data);
2878 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2879 l_return_status := FND_API.G_RET_STS_ERROR;
2880 -- raise FND_API.G_EXC_ERROR;
2881 END IF;
2882
2883 Validate_BUDGET_STATUS_CODE(
2884 p_init_msg_list => FND_API.G_FALSE,
2885 p_validation_mode => p_validation_mode,
2886 p_BUDGET_STATUS_CODE => P_SALES_LEAD_Rec.BUDGET_STATUS_CODE,
2887 x_return_status => x_return_status,
2888 x_msg_count => x_msg_count,
2889 x_msg_data => x_msg_data);
2890 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2891 l_return_status := FND_API.G_RET_STS_ERROR;
2892 -- raise FND_API.G_EXC_ERROR;
2893 END IF;
2894
2895 Validate_VEHICLE_RESPONSE_CODE(
2896 p_init_msg_list => FND_API.G_FALSE,
2897 p_validation_mode => p_validation_mode,
2898 p_VEHICLE_RESPONSE_CODE => P_SALES_LEAD_Rec.VEHICLE_RESPONSE_CODE,
2899 x_return_status => x_return_status,
2900 x_msg_count => x_msg_count,
2901 x_msg_data => x_msg_data);
2902 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2903 l_return_status := FND_API.G_RET_STS_ERROR;
2904 -- raise FND_API.G_EXC_ERROR;
2905 END IF;
2906
2907 Validate_REJECT_REASON_CODE(
2908 p_init_msg_list => FND_API.G_FALSE,
2909 p_validation_mode => p_validation_mode,
2910 p_REJECT_REASON_CODE => P_SALES_LEAD_Rec.REJECT_REASON_CODE,
2911 x_return_status => x_return_status,
2912 x_msg_count => x_msg_count,
2913 x_msg_data => x_msg_data);
2914 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2915 l_return_status := FND_API.G_RET_STS_ERROR;
2916 -- raise FND_API.G_EXC_ERROR;
2917 END IF;
2918
2919 Validate_OFFER_ID(
2920 p_init_msg_list => FND_API.G_FALSE,
2921 p_validation_mode => p_validation_mode,
2922 P_SOURCE_PROMOTION_ID => P_SALES_LEAD_Rec.source_promotion_id,
2923 p_OFFER_ID => P_SALES_LEAD_Rec.OFFER_ID,
2924 x_item_property_rec => l_item_property_rec,
2925 x_return_status => x_return_status,
2926 x_msg_count => x_msg_count,
2927 x_msg_data => x_msg_data);
2928 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2929 l_return_status := FND_API.G_RET_STS_ERROR;
2930 --
2931 raise FND_API.G_EXC_ERROR;
2932 END IF;
2933
2934
2935
2936 Validate_INC_PARTNER_PARTY_ID(
2937 p_init_msg_list => FND_API.G_FALSE,
2938 p_validation_mode => p_validation_mode,
2939 p_INC_PARTNER_PARTY_ID =>
2940 P_SALES_LEAD_Rec.INCUMBENT_PARTNER_PARTY_ID,
2941 x_item_property_rec => l_item_property_rec,
2942 x_return_status => x_return_status,
2943 x_msg_count => x_msg_count,
2944 x_msg_data => x_msg_data);
2945 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2946 l_return_status := FND_API.G_RET_STS_ERROR;
2947 -- raise FND_API.G_EXC_ERROR;
2948 END IF;
2949
2950 Validate_INC_PRTNR_RESOURCE_ID(
2951 p_init_msg_list => FND_API.G_FALSE,
2952 p_validation_mode => p_validation_mode,
2953 p_INC_PARTNER_RESOURCE_ID =>
2954 P_SALES_LEAD_Rec.INCUMBENT_PARTNER_RESOURCE_ID,
2955 x_item_property_rec => l_item_property_rec,
2956 x_return_status => x_return_status,
2957 x_msg_count => x_msg_count,
2958 x_msg_data => x_msg_data);
2959 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2960 l_return_status := FND_API.G_RET_STS_ERROR;
2961 -- raise FND_API.G_EXC_ERROR;
2962 END IF;
2963
2964 Validate_PRM_EXEC_SPONSOR_FLAG(
2965 p_init_msg_list => FND_API.G_FALSE,
2966 p_validation_mode => p_validation_mode,
2967 p_PRM_EXEC_SPONSOR_FLAG => P_SALES_LEAD_Rec.PRM_EXEC_SPONSOR_FLAG,
2968 x_item_property_rec => l_item_property_rec,
2969 x_return_status => x_return_status,
2970 x_msg_count => x_msg_count,
2971 x_msg_data => x_msg_data);
2972 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2973 l_return_status := FND_API.G_RET_STS_ERROR;
2974 -- raise FND_API.G_EXC_ERROR;
2975 END IF;
2976
2977 Validate_PRM_PRJ_LDINPLE_FLAG(
2978 p_init_msg_list => FND_API.G_FALSE,
2979 p_validation_mode => p_validation_mode,
2980 p_PRM_PRJ_LEAD_IN_PLACE_FLAG =>
2981 P_SALES_LEAD_Rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
2982 x_item_property_rec => l_item_property_rec,
2983 x_return_status => x_return_status,
2984 x_msg_count => x_msg_count,
2985 x_msg_data => x_msg_data);
2986 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2987 l_return_status := FND_API.G_RET_STS_ERROR;
2988 -- raise FND_API.G_EXC_ERROR;
2989 END IF;
2990
2991 Validate_PRM_LEAD_TYPE(
2992 p_init_msg_list => FND_API.G_FALSE,
2993 p_validation_mode => p_validation_mode,
2994 p_PRM_LEAD_TYPE => P_SALES_LEAD_Rec.Prm_Sales_Lead_Type,
2995 x_item_property_rec => l_item_property_rec,
2996 x_return_status => x_return_status,
2997 x_msg_count => x_msg_count,
2998 x_msg_data => x_msg_data);
2999 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3000 l_return_status := FND_API.G_RET_STS_ERROR;
3001 -- raise FND_API.G_EXC_ERROR;
3002 END IF;
3003
3004 Validate_PRM_IND_CLS_CODE(
3005 p_init_msg_list => FND_API.G_FALSE,
3006 p_validation_mode => p_validation_mode,
3007 p_PRM_IND_CLASSIFICATION_CODE =>
3008 P_SALES_LEAD_Rec.PRM_IND_CLASSIFICATION_CODE,
3009 x_item_property_rec => l_item_property_rec,
3010 x_return_status => x_return_status,
3011 x_msg_count => x_msg_count,
3012 x_msg_data => x_msg_data);
3013 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3014 l_return_status := FND_API.G_RET_STS_ERROR;
3015 -- raise FND_API.G_EXC_ERROR;
3016 END IF;
3017
3018 Validate_PRM_ASSIGNMENT_TYPE(
3019 p_init_msg_list => FND_API.G_FALSE,
3020 p_validation_mode => p_validation_mode,
3021 p_PRM_ASSIGNMENT_TYPE =>
3022 P_SALES_LEAD_Rec.PRM_ASSIGNMENT_TYPE,
3023 x_item_property_rec => l_item_property_rec,
3024 x_return_status => x_return_status,
3025 x_msg_count => x_msg_count,
3026 x_msg_data => x_msg_data);
3027 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3028 l_return_status := FND_API.G_RET_STS_ERROR;
3029 -- raise FND_API.G_EXC_ERROR;
3030 END IF;
3031
3032
3033 Validate_AUTO_ASSIGNMENT_TYPE(
3034 p_init_msg_list => FND_API.G_FALSE,
3035 p_validation_mode => p_validation_mode,
3036 p_AUTO_ASSIGNMENT_TYPE =>
3037 P_SALES_LEAD_Rec.AUTO_ASSIGNMENT_TYPE,
3038 x_item_property_rec => l_item_property_rec,
3039 x_return_status => x_return_status,
3040 x_msg_count => x_msg_count,
3041 x_msg_data => x_msg_data);
3042 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3043 l_return_status := FND_API.G_RET_STS_ERROR;
3044 -- raise FND_API.G_EXC_ERROR;
3045 END IF;
3046
3047
3048 Validate_FLAGS(
3049 p_init_msg_list => FND_API.G_FALSE,
3050 p_validation_mode => p_validation_mode,
3051 p_Flag_Value => P_SALES_LEAD_Rec.ACCEPT_FLAG,
3052 p_Flag_Type => 'ACCEPT_FLAG',
3053 x_return_status => x_return_status,
3054 x_msg_count => x_msg_count,
3055 x_msg_data => x_msg_data);
3056 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3057 l_return_status := FND_API.G_RET_STS_ERROR;
3058 -- raise FND_API.G_EXC_ERROR;
3059 END IF;
3060
3061 Validate_FLAGS(
3062 p_init_msg_list => FND_API.G_FALSE,
3063 p_validation_mode => p_validation_mode,
3064 p_Flag_Value => P_SALES_LEAD_Rec.KEEP_FLAG,
3065 p_Flag_Type => 'KEEP_FLAG',
3066 x_return_status => x_return_status,
3067 x_msg_count => x_msg_count,
3068 x_msg_data => x_msg_data);
3069 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3070 l_return_status := FND_API.G_RET_STS_ERROR;
3071 -- raise FND_API.G_EXC_ERROR;
3072 END IF;
3073
3074 Validate_FLAGS(
3075 p_init_msg_list => FND_API.G_FALSE,
3076 p_validation_mode => p_validation_mode,
3077 p_Flag_Value => P_SALES_LEAD_Rec.URGENT_FLAG,
3078 p_Flag_Type => 'URGENT_FLAG',
3079 x_return_status => x_return_status,
3080 x_msg_count => x_msg_count,
3081 x_msg_data => x_msg_data);
3082 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3083 l_return_status := FND_API.G_RET_STS_ERROR;
3084 -- raise FND_API.G_EXC_ERROR;
3085 END IF;
3086
3087 Validate_FLAGS(
3088 p_init_msg_list => FND_API.G_FALSE,
3089 p_validation_mode => p_validation_mode,
3090 p_Flag_Value => P_SALES_LEAD_Rec.IMPORT_FLAG,
3091 p_Flag_Type => 'IMPORT_FLAG',
3092 x_return_status => x_return_status,
3093 x_msg_count => x_msg_count,
3094 x_msg_data => x_msg_data);
3095 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3096 l_return_status := FND_API.G_RET_STS_ERROR;
3097 -- raise FND_API.G_EXC_ERROR;
3098 END IF;
3099
3100 Validate_FLAGS(
3101 p_init_msg_list => FND_API.G_FALSE,
3102 p_validation_mode => p_validation_mode,
3103 p_Flag_Value => P_SALES_LEAD_Rec.QUALIFIED_FLAG,
3104 p_Flag_Type => 'QUALIFIED_FLAG',
3105 x_return_status => x_return_status,
3106 x_msg_count => x_msg_count,
3107 x_msg_data => x_msg_data);
3108 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3109 l_return_status := FND_API.G_RET_STS_ERROR;
3110 -- raise FND_API.G_EXC_ERROR;
3111 END IF;
3112
3113
3114 END IF;
3115
3116 -- Requirement has changed. Close reason is associated with lead.
3117 -- Close reason is for opportunity. We don't have to validate it.
3118 l_close_reason_code := P_SALES_LEAD_Rec.CLOSE_REASON;
3119 IF ( P_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD)
3120 THEN
3121 -- Perform record level validation
3122 Validate_STATUS_CLOSE_REASON (
3123 P_Init_Msg_List => FND_API.G_FALSE,
3124 P_Validation_mode => p_validation_mode,
3125 P_STATUS_CODE => P_SALES_LEAD_Rec.STATUS_CODE,
3126 P_CLOSE_REASON_CODE => l_close_reason_code,
3127 X_Return_Status => x_return_status,
3128 X_Msg_Count => x_msg_count,
3129 X_Msg_Data => x_msg_data);
3130 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3131 l_return_status := FND_API.G_RET_STS_ERROR;
3132 -- raise FND_API.G_EXC_ERROR;
3133 END IF;
3134
3135
3136 P_SALES_LEAD_Rec.CLOSE_REASON := l_close_reason_code;
3137
3138
3139 -- referral type and referred by columns are related for CAPRI
3140 /*Validate_REF_BY_REF_TYPE (
3141 P_Init_Msg_List => FND_API.G_FALSE,
3142 P_Validation_mode => p_validation_mode,
3143 P_REF_BY_ID => P_SALES_LEAD_Rec.REFERRED_BY,
3144 P_REF_TYPE_CODE => P_SALES_LEAD_Rec.REFERRAL_TYPE,
3145 P_OLD_REF_BY_ID => P_REFERRED_BY,
3146 P_OLD_REF_TYPE_CODE => P_REFERRAL_TYPE,
3147 X_Return_Status => x_return_status,
3148 X_Msg_Count => x_msg_count,
3149 X_Msg_Data => x_msg_data);
3150 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3151 l_return_status := FND_API.G_RET_STS_ERROR;
3152 -- raise FND_API.G_EXC_ERROR;
3153 END IF;*/
3154
3155
3156 END IF;
3157
3158 -- Accept flag is related to decline reason Bug # 1953469
3159 /* IF ( P_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD)
3160 THEN
3161 -- Perform record level validation
3162 Validate_ACCEPT_REJECT_REASON (
3163 P_Init_Msg_List => FND_API.G_FALSE,
3164 P_Validation_mode => p_validation_mode,
3165 P_ACCEPT_FLAG => P_SALES_LEAD_Rec.ACCEPT_FLAG,
3166 P_REJECT_REASON_CODE => P_SALES_LEAD_Rec.REJECT_REASON_CODE,
3167 X_Return_Status => x_return_status,
3168 X_Msg_Count => x_msg_count,
3169 X_Msg_Data => x_msg_data);
3170 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3171 l_return_status := FND_API.G_RET_STS_ERROR;
3172 -- raise FND_API.G_EXC_ERROR;
3173 END IF;
3174 END IF;*/
3175
3176
3177
3178 -- FFANG 112700 For bug 1512008, instead of erroring out once a invalid
3179 -- column was found, raise the exception after all validation procedures
3180 -- have been gone through.
3181 x_return_status := l_return_status;
3182 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3183 raise FND_API.G_EXC_ERROR;
3184 END IF;
3185 -- END FFANG 112700
3186
3187 -- Debug Message
3188 IF (AS_DEBUG_LOW_ON) THEN
3189
3190 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3191 'PVT: ' || l_api_name || ' End');
3192 END IF;
3193 END Validate_sales_lead;
3194
3195
3196
3197
3198 -- **************************
3199 -- Sales Lead Header APIs
3200 -- **************************
3201
3202 PROCEDURE Create_sales_lead(
3203 P_Api_Version_Number IN NUMBER,
3204 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3205 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3206 P_Validation_Level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3207 P_Check_Access_Flag IN VARCHAR2 := FND_API.G_MISS_CHAR,
3208 P_Admin_Flag IN VARCHAR2 := FND_API.G_MISS_CHAR,
3209 P_Admin_Group_Id IN NUMBER := FND_API.G_MISS_NUM,
3210 P_Identity_Salesforce_Id IN NUMBER := FND_API.G_MISS_NUM,
3211 P_Sales_Lead_Profile_Tbl IN AS_UTILITY_PUB.Profile_Tbl_Type
3212 := AS_UTILITY_PUB.G_MISS_PROFILE_TBL,
3213 P_SALES_LEAD_Rec IN AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type
3214 := AS_SALES_LEADS_PUB.G_MISS_SALES_LEAD_REC,
3215 P_SALES_LEAD_LINE_Tbl IN AS_SALES_LEADS_PUB.SALES_LEAD_LINE_Tbl_type
3216 := AS_SALES_LEADS_PUB.G_MISS_SALES_LEAD_LINE_Tbl,
3217 P_SALES_LEAD_CONTACT_Tbl IN AS_SALES_LEADS_PUB.SALES_LEAD_CONTACT_Tbl_Type
3218 := AS_SALES_LEADS_PUB.G_MISS_SALES_LEAD_CONTACT_Tbl,
3219 X_SALES_LEAD_ID OUT NOCOPY NUMBER,
3220 X_SALES_LEAD_LINE_OUT_Tbl OUT
3221 AS_SALES_LEADS_PUB.SALES_LEAD_LINE_OUT_Tbl_type,
3222 X_SALES_LEAD_CNT_OUT_Tbl OUT
3223 AS_SALES_LEADS_PUB.SALES_LEAD_CNT_OUT_Tbl_Type,
3224 X_Return_Status OUT NOCOPY VARCHAR2,
3225 X_Msg_Count OUT NOCOPY NUMBER,
3226 X_Msg_Data OUT NOCOPY VARCHAR2
3227 )
3228
3229 IS
3230
3231 CURSOR C_Lines_Amounts (X_Sales_Lead_ID NUMBER) IS
3232 SELECT sum (budget_amount)
3233 FROM as_sales_lead_lines
3234 where sales_lead_id = X_Sales_Lead_ID;
3235
3236 l_api_name CONSTANT VARCHAR2(30) := 'Create_sales_lead';
3237 l_api_version_number CONSTANT NUMBER := 2.0;
3238 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
3239 l_SALES_LEAD_ID NUMBER;
3240 l_sales_lead_line_id NUMBER;
3241 l_lead_contact_id NUMBER;
3242 l_SALES_LEAD_Rec AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type
3243 := p_sales_lead_rec;
3244 p_sales_lead_line_rec AS_SALES_LEADS_PUB.SALES_LEAD_LINE_Rec_Type;
3245 p_sales_lead_contact_rec AS_SALES_LEADS_PUB.SALES_LEAD_CONTACT_Rec_Type;
3246 l_Sales_Team_Rec AS_ACCESS_PUB.Sales_Team_Rec_Type;
3247 l_access_profile_rec AS_ACCESS_PUB.Access_Profile_Rec_Type;
3248 l_Sales_Lead_Log_ID NUMBER;
3249 l_access_id NUMBER;
3250 l_access_flag VARCHAR2(1);
3251 l_member_role VARCHAR2(5);
3252 l_member_access VARCHAR2(5);
3253 l_line_count NUMBER := p_sales_lead_line_tbl.count;
3254 l_contact_count NUMBER := p_sales_lead_contact_tbl.count;
3255 l_lines_amount NUMBER := 0;
3256 l_isQualified VARCHAR2(1);
3257 l_qualified VARCHAR2(30);
3258
3259 l_accept_flag VARCHAR2(1);
3260 l_keep_flag VARCHAR2(1);
3261 l_urgent_flag VARCHAR2(1);
3262 l_import_flag VARCHAR2(1);
3263 l_deleted_flag VARCHAR2(1);
3264 l_auto_qualify_profile VARCHAR2(1);
3265 l_referral_status_profile VARCHAR2(30);
3266 l_exp_date DATE;
3267 l_timeframe_days NUMBER;
3268 l_manual_rank_flag VARCHAR2(1);
3269 l_status_open_flag VARCHAR2(1);
3270 l_lead_rank_score NUMBER;
3271
3272 l_country_code VARCHAR2(60);
3273
3274
3275 -- 11.5.10 ckapoor Lead name rivendell change
3276
3277 l_default_lead_name VARCHAR2(2000);
3278 l_default_sales_stage NUMBER;
3279
3280 l_default_address_profile VARCHAR2(1) := FND_PROFILE.VALUE ('AS_DEFAULT_LEAD_ADDRESS');
3281
3282 -- Bug 3385646 - MKTU3R10:COUNTRY IS NOT POPULATED WHEN THE LEAD IS CREATED THROUGH HTML
3283 CURSOR c_get_country_code (X_CUSTOMER_ID NUMBER, X_ADDRESS_ID NUMBER) IS
3284 select LOC.COUNTRY
3285 FROM HZ_PARTY_SITES SITE,HZ_LOCATIONS LOC
3286 WHERE SITE.PARTY_ID = X_CUSTOMER_ID
3287 AND SITE.PARTY_SITE_ID = X_ADDRESS_ID
3288 AND SITE.STATUS IN ('A','I')
3289 AND SITE.LOCATION_ID = LOC.LOCATION_ID;
3290
3291
3292 CURSOR C_timeframe_days (X_DECISION_TIMEFRAME_CODE VARCHAR2) IS
3293 SELECT timeframe_days
3294 FROM aml_sales_lead_timeframes
3295 where decision_timeframe_code = X_DECISION_TIMEFRAME_CODE
3296 and enabled_flag='Y';
3297
3298
3299 CURSOR C_Get_Status_open_flag(X_Lookup_Code VARCHAR2) IS
3300 SELECT opp_open_status_flag
3301 FROM as_statuses_b
3302 WHERE lead_flag = 'Y' and enabled_flag = 'Y'
3303 and status_code = X_Lookup_Code;
3304
3305
3306
3307 CURSOR C_Get_Lead_Rank_Score (X_Rank_ID NUMBER) IS
3308 SELECT min_score
3309 FROM as_sales_lead_ranks_b
3310 WHERE rank_id = X_Rank_ID;
3311
3312
3313 -- 11.5.10 ckapoor Lead Name changes for Rivendell
3314
3315 CURSOR C_get_primary_contact_name(X_sales_lead_id NUMBER) IS
3316 SELECT hzp.party_name
3317 FROM hz_parties hzp, as_sales_leads sl
3318 WHERE hzp.party_id = sl.primary_cnt_person_party_id
3319 and sl.sales_lead_id = X_sales_lead_id;
3320 -- this works since contacts API would have already updated the
3321 -- primary contacts party id information in as_sales_leads.
3322
3323
3324 CURSOR C_get_customer_name (X_party_id NUMBER) IS
3325 SELECT party_name
3326 FROM hz_parties
3327 WHERE party_id = X_party_id;
3328
3329 ---- bug 2533638 - TST1158.7:MSTR:ORG. ADDRESS IS NOT PICKED WHEN CREATING LEAD FROM PARTNER DETAIL
3330
3331 CURSOR primary_address ( p_customer_id NUMBER) IS
3332 select party_site_id
3333 from hz_party_sites
3334 where party_id = p_customer_id
3335 and IDENTIFYING_ADDRESS_FLAG = 'Y';
3336 ----
3337
3338
3339 CURSOR C_default_sales_stage(X_Sales_Meth_ID NUMBER) IS
3340
3341 SELECT sales_stage_id
3342 FROM (
3343 SELECT asms.sales_stage_id
3344 FROM AS_SALES_METH_STAGE_MAP asms
3345 , AS_SALES_STAGES_ALL_B assa
3346 WHERE asms.sales_stage_id = assa.sales_stage_id
3347 AND TRUNC(NVL(assa.start_date_active, SYSDATE)) <= TRUNC(SYSDATE)
3348 AND TRUNC(NVL(assa.end_date_active, SYSDATE)) >= TRUNC(SYSDATE)
3349 AND sales_methodology_id = X_Sales_Meth_ID
3350 AND assa.applicability IN ('LEAD', 'BOTH')
3351 -- ckapoor 05/11/04 bug 3621389 -
3352 -- adding new additional condition as per AUYU
3353 AND assa.enabled_flag = 'Y'
3354 -- end ckapoor
3355 ORDER BY asms.stage_sequence
3356 )
3357 WHERE ROWNUM = 1 ;
3358
3359
3360
3361 -- 11.5.10 end ckapoor Rivendell changes
3362
3363
3364
3365
3366
3367
3368
3369 BEGIN
3370 -- Standard Start of API savepoint
3371 SAVEPOINT CREATE_SALES_LEAD_PVT;
3372
3373 -- Standard call to check for call compatibility.
3374 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
3375 p_api_version_number,
3376 l_api_name,
3377 G_PKG_NAME )
3378 THEN
3379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3380 END IF;
3381
3382 -- Initialize message list IF p_init_msg_list is set to TRUE.
3383 IF FND_API.to_Boolean( p_init_msg_list )
3384 THEN
3385 FND_MSG_PUB.initialize;
3386 END IF;
3387
3388
3389 -- Debug Message
3390 IF (AS_DEBUG_LOW_ON) THEN
3391
3392 AS_UTILITY_PVT.Debug_Message( FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3393 'PVT: ' || l_api_name || ' Start');
3394 END IF;
3395
3396 -- Initialize API return status to SUCCESS
3397 x_return_status := FND_API.G_RET_STS_SUCCESS;
3398
3399 --
3400 -- API body
3401 --
3402
3403 -- ******************************************************************
3404 -- Validate Environment
3405 -- ******************************************************************
3406 IF FND_GLOBAL.User_Id IS NULL
3407 THEN
3408 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
3409 THEN
3410 AS_UTILITY_PVT.Set_Message(
3411 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
3412 p_msg_name => 'UT_CANNOT_GET_PROFILE_VALUE',
3413 p_token1 => 'PROFILE',
3414 p_token1_value => 'USER_ID');
3415
3416 END IF;
3417 RAISE FND_API.G_EXC_ERROR;
3418 END IF;
3419
3420 IF (p_validation_level = fnd_api.g_valid_level_full)
3421 THEN
3422 AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
3423 p_api_version_number => 2.0
3424 ,p_init_msg_list => p_init_msg_list
3425 ,p_salesforce_id => P_Identity_Salesforce_Id
3426 ,p_admin_group_id => p_admin_group_id
3427 ,x_return_status => x_return_status
3428 ,x_msg_count => x_msg_count
3429 ,x_msg_data => x_msg_data
3430 ,x_sales_member_rec => l_identity_sales_member_rec);
3431 END IF;
3432
3433 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3434 RAISE FND_API.G_EXC_ERROR;
3435 END IF;
3436
3437 -- Set default value to accept_flag, keep_flag, urgent_flag,
3438 -- import_flag, deleted_flag, and currency_code as profile values.
3439 If (l_SALES_LEAD_rec.ACCEPT_FLAG IS NULL) or
3440 (l_SALES_LEAD_rec.ACCEPT_FLAG= FND_API.G_MISS_CHAR) or
3441 (l_SALES_LEAD_rec.KEEP_FLAG IS NULL) or
3442 (l_SALES_LEAD_rec.KEEP_FLAG = FND_API.G_MISS_CHAR) or
3443 (l_SALES_LEAD_rec.URGENT_FLAG IS NULL) or
3444 (l_SALES_LEAD_rec.URGENT_FLAG = FND_API.G_MISS_CHAR) or
3445 (l_SALES_LEAD_rec.IMPORT_FLAG IS NULL) or
3446 (l_SALES_LEAD_rec.IMPORT_FLAG = FND_API.G_MISS_CHAR) or
3447 (l_SALES_LEAD_rec.DELETED_FLAG IS NULL) or
3448 (l_SALES_LEAD_rec.DELETED_FLAG = FND_API.G_MISS_CHAR) or
3449 (l_SALES_LEAD_rec.currency_code IS NULL) or
3450 (l_SALES_LEAD_rec.currency_code = FND_API.G_MISS_CHAR)
3451 THEN
3452 IF (AS_DEBUG_LOW_ON) THEN
3453
3454 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3455 'Calling Set_default_values');
3456 END IF;
3457
3458 Set_default_values(
3459 p_mode => AS_UTILITY_PVT.G_CREATE,
3460 px_SALES_LEAD_rec => l_SALES_LEAD_Rec);
3461
3462 End If;
3463
3464 -----
3465 -- Default the customer address to primary address if necessary
3466 IF nvl(l_default_address_profile, 'N') = 'Y' AND
3467 ((l_SALES_LEAD_rec.address_id IS NULL) OR
3468 (l_SALES_LEAD_rec.address_id = FND_API.G_MISS_NUM))
3469 THEN
3470 open primary_address(l_SALES_LEAD_rec.customer_id );
3471 fetch primary_address into l_SALES_LEAD_rec.address_id;
3472 close primary_address;
3473
3474 If (l_SALES_LEAD_rec.address_id IS NULL OR
3475 l_SALES_LEAD_rec.address_id = FND_API.G_MISS_NUM )
3476 THEN
3477 IF (AS_DEBUG_LOW_ON) THEN
3478 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3479 'No primary address for customer');
3480 END IF;
3481
3482 END IF;
3483 END IF;
3484
3485 -----
3486
3487
3488 -- Debug message
3489 IF (AS_DEBUG_LOW_ON) THEN
3490
3491 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3492 'Calling Validate_sales_lead');
3493 END IF;
3494
3495 -- Invoke validation procedures
3496 Validate_sales_lead(
3497 p_init_msg_list => FND_API.G_FALSE,
3498 p_validation_level => p_validation_level,
3499 p_validation_mode => AS_UTILITY_PVT.G_CREATE,
3500 P_SALES_LEAD_Rec => l_SALES_LEAD_Rec,
3501 p_referral_type => FND_API.G_MISS_CHAR,
3502 p_referred_by => FND_API.G_MISS_NUM,
3503 x_return_status => x_return_status,
3504 x_msg_count => x_msg_count,
3505 x_msg_data => x_msg_data);
3506
3507 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3508 RAISE FND_API.G_EXC_ERROR;
3509 END IF;
3510
3511 IF(P_Check_Access_Flag = 'Y') THEN
3512 -- Call Get_Access_Profiles to get access_profile_rec
3513 IF (AS_DEBUG_LOW_ON) THEN
3514
3515 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3516 'Calling Get_Access_Profiles');
3517 END IF;
3518
3519 AS_SALES_LEADS_PUB.Get_Access_Profiles(
3520 p_profile_tbl => p_sales_lead_profile_tbl,
3521 x_access_profile_rec => l_access_profile_rec);
3522
3523 IF (AS_DEBUG_LOW_ON) THEN
3524
3525
3526
3527 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3528 'Calling Has_viewCustomerAccess');
3529
3530 END IF;
3531
3532 AS_ACCESS_PUB.Has_viewCustomerAccess(
3533 p_api_version_number => 2.0,
3534 p_init_msg_list => p_init_msg_list,
3535 p_validation_level => p_validation_level,
3536 p_access_profile_rec => l_access_profile_rec,
3537 p_admin_flag => p_admin_flag,
3538 p_admin_group_id => p_admin_group_id,
3539 p_person_id =>
3540 l_identity_sales_member_rec.employee_person_id,
3541 p_customer_id => l_sales_lead_rec.customer_id,
3542 p_check_access_flag => 'Y',
3543 p_identity_salesforce_id => p_identity_salesforce_id,
3544 p_partner_cont_party_id => NULL,
3545 x_return_status => x_return_status,
3546 x_msg_count => x_msg_count,
3547 x_msg_data => x_msg_data,
3548 x_view_access_flag => l_access_flag);
3549
3550 IF l_access_flag <> 'Y' THEN
3551 IF (AS_DEBUG_ERROR_ON) THEN
3552
3553 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3554 'API_NO_CREATE_PRIVILEGE');
3555 END IF;
3556 RAISE FND_API.G_EXC_ERROR;
3557 END IF;
3558
3559 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3560 RAISE FND_API.G_EXC_ERROR;
3561 END IF;
3562
3563 END IF;
3564
3565 -- Debug Message
3566 IF (AS_DEBUG_LOW_ON) THEN
3567
3568 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3569 'Calling Sales_Lead_Insert_Row');
3570 END IF;
3571
3572 -- auto qualify lead
3573
3574 -- ffang 120900, for bug 1504040
3575 -- only when the status is "New" or "Unqualified" then launch
3576 -- auto-qualification.
3577
3578 -- ffang 100200: for bug 1416170
3579 -- Do auto-qualify only when keep_flag <> 'Y' or keep_flag is NULL
3580 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3581 -- 'keep_flag : ' || l_sales_lead_rec.keep_flag); END IF;
3582 -- IF (l_sales_lead_rec.keep_flag <> 'Y') or
3583 -- (l_sales_lead_rec.keep_flag is NULL)
3584
3585
3586
3587 /*
3588 l_auto_qualify_profile := nvl(FND_PROFILE.Value('AS_AUTO_QUALIFY'),'N');
3589 IF(l_sales_lead_rec.qualified_flag = 'N' and
3590 l_auto_qualify_profile = 'Y')
3591
3592 --IF (l_sales_lead_rec.status_code = 'NEW' or
3593 -- l_sales_lead_rec.status_code = 'UNQUALIFIED')
3594 THEN
3595 -- Launch auto-qualification
3596 if P_SALES_LEAD_CONTACT_Tbl.exists(1) then
3597 l_isQualified := IS_LEAD_QUALIFIED(l_SALES_LEAD_Rec,
3598 P_SALES_LEAD_CONTACT_Tbl(1).phone_id ,
3599 P_SALES_LEAD_CONTACT_Tbl(1).contact_role_code);
3600 else
3601 l_isQualified := IS_LEAD_QUALIFIED(l_SALES_LEAD_Rec, null,null);
3602 end if;
3603
3604 --if l_isQualified = 'Y' then
3605 -- l_qualified := 'QUALIFIED';
3606 --else
3607 -- -- ffang 120900, for bug 1504040
3608 -- -- If the lead fails qualification, at anytime the status
3609 -- -- should be "Unqualified".
3610 -- -- l_qualified := l_sales_lead_rec.STATUS_CODE;
3611 -- l_qualified := 'UNQUALIFIED';
3612 --end if;
3613 l_qualified := l_isQualified;
3614 ELSE
3615 -- Qualification does not affect status 11.5.4.09
3616 --l_qualified := l_sales_lead_rec.STATUS_CODE;
3617 l_qualified := l_sales_lead_rec.QUALIFIED_FLAG;
3618 END IF; */
3619 -- end ffang 100200
3620
3621 l_qualified := l_sales_lead_rec.QUALIFIED_FLAG;
3622
3623 -- do check on referral type. If a non null referral type is being passed in,
3624 -- then make sure referral status is set to the profile of REF_STATUS_FOR_NEW_LEAD
3625 -- of course use the profile for setting referral status only if referral status is not being manually passed in
3626
3627 if ((l_SALES_LEAD_rec.REFERRAL_STATUS is null or l_SALES_LEAD_rec.REFERRAL_STATUS = FND_API.G_MISS_CHAR )
3628 and l_SALES_LEAD_rec.REFERRAL_TYPE is not null and l_sales_lead_rec.REFERRAL_TYPE <> FND_API.G_MISS_CHAR)
3629 then
3630 l_referral_status_profile := FND_PROFILE.Value('REF_STATUS_FOR_NEW_LEAD');
3631 else
3632 l_referral_status_profile := l_sales_lead_rec.REFERRAL_STATUS;
3633 end if;
3634
3635 if (l_SALES_LEAD_rec.LEAD_DATE is null) then
3636 l_SALES_LEAD_rec.LEAD_DATE := SYSDATE;
3637 end if;
3638
3639 if (l_SALES_LEAD_rec.SOURCE_SYSTEM is null) then
3640 l_SALES_LEAD_rec.SOURCE_SYSTEM := 'USER';
3641 end if;
3642
3643
3644 -- expiration date is calculated as creation_date + time frame days (for a smart timeframe)
3645 -- if no smart timeframe, then exp date is null.
3646
3647 l_exp_date := null;
3648 l_timeframe_days := 0;
3649
3650
3651 OPEN C_timeframe_days (l_sales_lead_rec.DECISION_TIMEFRAME_CODE);
3652 FETCH C_timeframe_days into l_timeframe_days;
3653
3654 IF C_timeframe_days%NOTFOUND
3655 THEN
3656 l_exp_date := null;
3657
3658 ELSE
3659 l_exp_date := sysdate + l_timeframe_days;
3660 END IF;
3661
3662
3663 CLOSE C_timeframe_days ;
3664
3665
3666
3667 --Denorm fix 04/30/03 ckapoor
3668 --Get the open status flag for status
3669
3670 OPEN C_Get_Status_open_flag ( l_sales_lead_rec.STATUS_CODE);
3671 FETCH C_Get_Status_open_flag into l_status_open_flag;
3672 Close C_Get_Status_open_flag;
3673
3674 -- now this open status flag will be logged in the sales lead table.
3675
3676 -- Bug 3385646 - MKTU3R10:COUNTRY IS NOT POPULATED WHEN THE LEAD IS CREATED THROUGH HTML
3677
3678 OPEN c_get_country_code ( l_sales_lead_rec.customer_id, l_sales_lead_rec.address_id);
3679 FETCH c_get_country_code into l_country_code;
3680 Close c_get_country_code;
3681
3682 --Get the score for the rank
3683
3684 OPEN C_Get_Lead_Rank_Score ( l_sales_lead_rec.LEAD_RANK_ID);
3685 FETCH C_Get_Lead_Rank_Score into l_lead_rank_score;
3686 Close C_Get_Lead_Rank_Score;
3687
3688 -- now this lead rank score will be logged in the sales lead table.
3689 IF (AS_DEBUG_LOW_ON) THEN
3690
3691 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3692 'lead_rank_score : ' || l_lead_rank_score);
3693
3694 END IF;
3695
3696 if (l_sales_lead_rec.lead_rank_id is null)
3697 then
3698 l_lead_rank_score :=0;
3699 end if;
3700
3701
3702 -- End Denorm fix
3703
3704
3705
3706 -- 11.5.10 ckapoor sales methodology fix
3707 -- if sales methodology is not null and not g_miss, and if sales stage is missing
3708 -- then default sales stage
3709
3710 l_default_sales_stage := null;
3711
3712 IF (AS_DEBUG_LOW_ON) THEN
3713
3714 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3715 'sales meth'|| l_sales_lead_rec.SALES_METHODOLOGY_ID);
3716 END IF;
3717
3718 IF (AS_DEBUG_LOW_ON) THEN
3719
3720 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3721 'sales stage'|| l_sales_lead_rec.SALES_STAGE_ID);
3722 END IF;
3723
3724
3725
3726 if ( ((l_sales_lead_rec.sales_methodology_id is not null) and (l_sales_lead_rec.sales_methodology_id <> FND_API.G_MISS_NUM))
3727 and ((l_sales_lead_rec.SALES_STAGE_ID is null) or (l_sales_lead_rec.sales_stage_id = FND_API.G_MISS_NUM)))
3728 then
3729
3730
3731 IF (AS_DEBUG_LOW_ON) THEN
3732
3733
3734 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3735 'CK:: defaulting sales stage');
3736
3737 end if;
3738
3739 OPEN C_default_sales_stage (l_sales_lead_rec.sales_methodology_id);
3740 FETCH C_default_sales_stage into l_default_sales_stage;
3741
3742 if (C_default_sales_stage%NOTFOUND) then
3743 l_default_sales_stage := l_sales_lead_rec.sales_stage_id;
3744 end if;
3745
3746
3747 CLOSE C_default_sales_stage ;
3748 else
3749 l_default_sales_stage := l_sales_lead_rec.sales_stage_id;
3750
3751 end if;
3752
3753
3754
3755
3756
3757
3758 -- Invoke table handler(Sales_Lead_Insert_Row)
3759 x_SALES_LEAD_ID := l_SALES_LEAD_rec.SALES_LEAD_ID;
3760
3761 AS_SALES_LEADS_PKG.Sales_Lead_Insert_Row(
3762 px_SALES_LEAD_ID => x_SALES_LEAD_ID,
3763 p_LAST_UPDATE_DATE => SYSDATE,
3764 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
3765 p_CREATION_DATE => SYSDATE,
3766 p_CREATED_BY => FND_GLOBAL.USER_ID,
3767 p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID,
3768 p_REQUEST_ID => FND_GLOBAL.Conc_Request_Id,
3769 p_PROGRAM_APPLICATION_ID => FND_GLOBAL.Prog_Appl_Id,
3770 p_PROGRAM_ID => FND_GLOBAL.Conc_Program_Id,
3771 p_PROGRAM_UPDATE_DATE => SYSDATE,
3772 p_LEAD_NUMBER => x_SALES_LEAD_ID,
3773 --p_STATUS_CODE => l_qualified,
3774 p_STATUS_CODE => l_SALES_LEAD_rec.STATUS_CODE,
3775 p_CUSTOMER_ID => l_SALES_LEAD_rec.CUSTOMER_ID,
3776 p_ADDRESS_ID => l_SALES_LEAD_rec.ADDRESS_ID,
3777 p_SOURCE_PROMOTION_ID => l_SALES_LEAD_rec.SOURCE_PROMOTION_ID,
3778 p_INITIATING_CONTACT_ID => l_SALES_LEAD_rec.INITIATING_CONTACT_ID,
3779 p_ORIG_SYSTEM_REFERENCE => l_SALES_LEAD_rec.ORIG_SYSTEM_REFERENCE,
3780 p_CONTACT_ROLE_CODE => l_SALES_LEAD_rec.CONTACT_ROLE_CODE,
3781 p_CHANNEL_CODE => l_SALES_LEAD_rec.CHANNEL_CODE,
3782 p_BUDGET_AMOUNT => l_SALES_LEAD_rec.BUDGET_AMOUNT,
3783 p_CURRENCY_CODE => l_SALES_LEAD_rec.CURRENCY_CODE,
3784 p_DECISION_TIMEFRAME_CODE => l_SALES_LEAD_rec.DECISION_TIMEFRAME_CODE,
3785 p_CLOSE_REASON => l_SALES_LEAD_rec.CLOSE_REASON,
3786 p_LEAD_RANK_ID => l_SALES_LEAD_rec.LEAD_RANK_ID,
3787 p_LEAD_RANK_CODE => l_SALES_LEAD_rec.LEAD_RANK_CODE,
3788 p_PARENT_PROJECT => l_SALES_LEAD_rec.PARENT_PROJECT,
3789 p_DESCRIPTION => l_SALES_LEAD_rec.DESCRIPTION,
3790 p_ATTRIBUTE_CATEGORY => l_SALES_LEAD_rec.ATTRIBUTE_CATEGORY,
3791 p_ATTRIBUTE1 => l_SALES_LEAD_rec.ATTRIBUTE1,
3792 p_ATTRIBUTE2 => l_SALES_LEAD_rec.ATTRIBUTE2,
3793 p_ATTRIBUTE3 => l_SALES_LEAD_rec.ATTRIBUTE3,
3794 p_ATTRIBUTE4 => l_SALES_LEAD_rec.ATTRIBUTE4,
3795 p_ATTRIBUTE5 => l_SALES_LEAD_rec.ATTRIBUTE5,
3796 p_ATTRIBUTE6 => l_SALES_LEAD_rec.ATTRIBUTE6,
3797 p_ATTRIBUTE7 => l_SALES_LEAD_rec.ATTRIBUTE7,
3798 p_ATTRIBUTE8 => l_SALES_LEAD_rec.ATTRIBUTE8,
3799 p_ATTRIBUTE9 => l_SALES_LEAD_rec.ATTRIBUTE9,
3800 p_ATTRIBUTE10 => l_SALES_LEAD_rec.ATTRIBUTE10,
3801 p_ATTRIBUTE11 => l_SALES_LEAD_rec.ATTRIBUTE11,
3802 p_ATTRIBUTE12 => l_SALES_LEAD_rec.ATTRIBUTE12,
3803 p_ATTRIBUTE13 => l_SALES_LEAD_rec.ATTRIBUTE13,
3804 p_ATTRIBUTE14 => l_SALES_LEAD_rec.ATTRIBUTE14,
3805 p_ATTRIBUTE15 => l_SALES_LEAD_rec.ATTRIBUTE15,
3806 p_ASSIGN_TO_PERSON_ID => l_SALES_LEAD_rec.ASSIGN_TO_PERSON_ID,
3807 p_ASSIGN_TO_SALESFORCE_ID => l_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID,
3808 p_ASSIGN_SALES_GROUP_ID => l_SALES_LEAD_rec.ASSIGN_SALES_GROUP_ID,
3809 --p_ASSIGN_DATE => l_SALES_LEAD_rec.ASSIGN_DATE,
3810 p_ASSIGN_DATE => SYSDATE,
3811 p_BUDGET_STATUS_CODE => l_SALES_LEAD_rec.BUDGET_STATUS_CODE,
3812 p_ACCEPT_FLAG => l_SALES_LEAD_rec.ACCEPT_FLAG,
3813 p_VEHICLE_RESPONSE_CODE => l_SALES_LEAD_rec.VEHICLE_RESPONSE_CODE,
3814 p_TOTAL_SCORE => l_SALES_LEAD_rec.TOTAL_SCORE,
3815 p_SCORECARD_ID => l_SALES_LEAD_rec.SCORECARD_ID,
3816 p_KEEP_FLAG => l_SALES_LEAD_rec.KEEP_FLAG,
3817 p_URGENT_FLAG => l_SALES_LEAD_rec.URGENT_FLAG,
3818 p_IMPORT_FLAG => l_SALES_LEAD_rec.IMPORT_FLAG,
3819 p_REJECT_REASON_CODE => l_SALES_LEAD_rec.REJECT_REASON_CODE,
3820 p_DELETED_FLAG => l_SALES_LEAD_rec.DELETED_FLAG,
3821 p_OFFER_ID => l_SALES_LEAD_rec.OFFER_ID,
3822 --p_QUALIFIED_FLAG => l_SALES_LEAD_rec.QUALIFIED_FLAG,
3823 p_QUALIFIED_FLAG => l_qualified,
3824 p_ORIG_SYSTEM_CODE => l_SALES_LEAD_rec.ORIG_SYSTEM_CODE,
3825 -- p_SECURITY_GROUP_ID => l_SALES_LEAD_rec.SECURITY_GROUP_ID,
3826 p_INC_PARTNER_PARTY_ID => l_SALES_LEAD_rec.INCUMBENT_PARTNER_PARTY_ID,
3827 p_INC_PARTNER_RESOURCE_ID =>
3828 l_SALES_LEAD_rec.INCUMBENT_PARTNER_RESOURCE_ID,
3829 p_PRM_EXEC_SPONSOR_FLAG => l_SALES_LEAD_rec.PRM_EXEC_SPONSOR_FLAG,
3830 p_PRM_PRJ_LEAD_IN_PLACE_FLAG =>
3831 l_SALES_LEAD_rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
3832 p_PRM_SALES_LEAD_TYPE => l_SALES_LEAD_rec.PRM_SALES_LEAD_TYPE,
3833 p_PRM_IND_CLASSIFICATION_CODE =>
3834 l_SALES_LEAD_rec.PRM_IND_CLASSIFICATION_CODE,
3835 p_PRM_ASSIGNMENT_TYPE => l_SALES_LEAD_rec.PRM_ASSIGNMENT_TYPE,
3836 p_AUTO_ASSIGNMENT_TYPE => l_SALEs_LEAD_rec.AUTO_ASSIGNMENT_TYPE,
3837 p_PRIMARY_CONTACT_PARTY_ID => l_SALES_LEAD_rec.PRIMARY_CONTACT_PARTY_ID,
3838 p_PRIMARY_CNT_PERSON_PARTY_ID => l_SALES_LEAD_rec.PRIMARY_CNT_PERSON_PARTY_ID,
3839 p_PRIMARY_CONTACT_PHONE_ID => l_SALES_LEAD_rec.PRIMARY_CONTACT_PHONE_ID,
3840 -- new columns for CAPRI lead referral
3841
3842 p_REFERRED_BY => l_SALES_LEAD_rec.REFERRED_BY,
3843 p_REFERRAL_TYPE => l_SALES_LEAD_rec.REFERRAL_TYPE,
3844 p_REFERRAL_STATUS => l_referral_status_profile,
3845 p_REF_DECLINE_REASON => l_SALES_LEAD_rec.REF_DECLINE_REASON,
3846 p_REF_COMM_LTR_STATUS => l_SALES_LEAD_rec.REF_COMM_LTR_STATUS,
3847 p_REF_ORDER_NUMBER => l_SALES_LEAD_rec.REF_ORDER_NUMBER,
3848 p_REF_ORDER_AMT => l_SALES_LEAD_rec.REF_ORDER_AMT,
3849 p_REF_COMM_AMT => l_SALES_LEAD_rec.REF_COMM_AMT,
3850
3851 p_LEAD_DATE => l_SALES_LEAD_rec.LEAD_DATE,
3852 p_SOURCE_SYSTEM => l_SALES_LEAD_rec.SOURCE_SYSTEM,
3853
3854 -- Bug 3385646 - MKTU3R10:COUNTRY IS NOT POPULATED WHEN THE LEAD IS CREATED THROUGH HTML
3855
3856 p_COUNTRY => l_country_code, --l_SALES_LEAD_rec.COUNTRY,
3857
3858 p_TOTAL_AMOUNT => l_SALES_LEAD_rec.TOTAL_AMOUNT,
3859 p_EXPIRATION_DATE => l_exp_date, --l_SALES_LEAD_rec.EXPIRATION_DATE,
3860
3861 p_LEAD_RANK_IND => l_SALES_LEAD_rec.LEAD_RANK_IND,
3862 p_LEAD_ENGINE_RUN_DATE => l_SALES_LEAD_rec.LEAD_ENGINE_RUN_DATE,
3863
3864 p_CURRENT_REROUTES => l_SALES_LEAD_rec.CURRENT_REROUTES
3865
3866 -- new columns for appsperf CRMAP denorm project bug 2928041
3867
3868 ,p_STATUS_OPEN_FLAG => l_status_open_flag
3869 --FND_API.G_MISS_CHAR
3870 ,p_LEAD_RANK_SCORE => l_lead_rank_score
3871 --FND_API.G_MISS_NUM
3872
3873
3874 -- ckapoor 11.5.10 New columns
3875
3876 , p_MARKETING_SCORE => l_SALES_LEAD_rec.MARKETING_SCORE
3877 , p_INTERACTION_SCORE => l_SALES_LEAD_rec.INTERACTION_SCORE
3878 , p_SOURCE_PRIMARY_REFERENCE => l_SALES_LEAD_rec.SOURCE_PRIMARY_REFERENCE
3879 , p_SOURCE_SECONDARY_REFERENCE => l_SALES_LEAD_rec.SOURCE_SECONDARY_REFERENCE
3880 , p_SALES_METHODOLOGY_ID => l_SALES_LEAD_rec.SALES_METHODOLOGY_ID
3881 , p_SALES_STAGE_ID => l_default_sales_stage
3882 --l_SALES_LEAD_rec.SALES_STAGE_ID
3883
3884 );
3885
3886 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3887 RAISE FND_API.G_EXC_ERROR;
3888 END IF;
3889
3890 l_SALES_LEAD_ID := x_SALES_LEAD_ID;
3891
3892 IF l_SALES_LEAD_rec.LEAD_RANK_ID IS NOT NULL
3893 THEN
3894 l_manual_rank_flag := 'Y';
3895 END IF;
3896
3897 IF (AS_DEBUG_LOW_ON) THEN
3898
3899 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3900 'xSalesLeadID is '||l_sales_lead_id);
3901
3902 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3903 'Calling AS_SALES_LEADS_LOG_PKG.Insert_Row');
3904 END IF;
3905
3906 -- Call API to create log entry
3907
3908 AS_SALES_LEADS_LOG_PKG.Insert_Row(
3909 px_log_id => l_sales_lead_log_id ,
3910 p_sales_lead_id => l_sales_lead_id,
3911 p_created_by => fnd_global.user_id,
3912 p_creation_date => sysdate,
3913 p_last_updated_by => fnd_global.user_id,
3914 p_last_update_date => sysdate,
3915 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
3916 -- using standard parameters for program who columns
3917 p_request_id => FND_GLOBAL.Conc_Request_Id,
3918 p_program_application_id => FND_GLOBAL.Prog_Appl_Id,
3919 p_program_id => FND_GLOBAL.Conc_Program_Id,
3920 p_program_update_date => sysdate,
3921 p_status_code => l_sales_lead_rec.status_code,
3922 p_assign_to_person_id => l_sales_lead_rec.assign_to_person_id,
3923 p_assign_to_salesforce_id=>l_sales_lead_rec.assign_to_salesforce_id,
3924 p_reject_reason_code => l_sales_lead_rec.reject_reason_code,
3925 p_assign_sales_group_id => l_sales_lead_rec.assign_sales_group_id,
3926 p_lead_rank_id => l_sales_lead_rec.lead_rank_id,
3927 p_qualified_flag => l_qualified,
3928 p_category => fnd_api.g_miss_char,
3929 p_manual_rank_flag => l_manual_rank_flag
3930 );
3931
3932 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3933 RAISE FND_API.G_EXC_ERROR;
3934 END IF;
3935
3936
3937 -- For referral leads, create another entry in the logs table so that it is tracked as a referral lead also
3938
3939 if ( l_SALES_LEAD_rec.REFERRAL_TYPE is not null and l_sales_lead_rec.REFERRAL_TYPE <> FND_API.G_MISS_CHAR) then
3940
3941 l_sales_lead_log_id := null;
3942
3943 AS_SALES_LEADS_LOG_PKG.Insert_Row(
3944 px_log_id => l_sales_lead_log_id ,
3945 p_sales_lead_id => l_sales_lead_id,
3946 p_created_by => fnd_global.user_id,
3947 p_creation_date => sysdate,
3948 p_last_updated_by => fnd_global.user_id,
3949 p_last_update_date => sysdate,
3950 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
3951 -- using standard parameters for program who columns
3952 p_request_id => FND_GLOBAL.Conc_Request_Id,
3953 p_program_application_id => FND_GLOBAL.Prog_Appl_Id,
3954 p_program_id => FND_GLOBAL.Conc_Program_Id,
3955 p_program_update_date => sysdate,
3956 p_status_code => l_referral_status_profile, -- for referral log, we use referral status
3957 p_assign_to_person_id => l_sales_lead_rec.assign_to_person_id,
3958 p_assign_to_salesforce_id=>l_sales_lead_rec.assign_to_salesforce_id,
3959 p_reject_reason_code => l_sales_lead_rec.reject_reason_code,
3960 p_assign_sales_group_id => l_sales_lead_rec.assign_sales_group_id,
3961 p_lead_rank_id => l_sales_lead_rec.lead_rank_id,
3962 p_qualified_flag => l_qualified,
3963 p_category => 'REFERRAL'
3964 );
3965
3966
3967 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3968 RAISE FND_API.G_EXC_ERROR;
3969 END IF;
3970
3971 /* IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3972 'Before notify party'); END IF;
3973
3974 AS_SALES_LEAD_REFERRAL.Notify_Party (
3975 p_api_version => 1.0 ,
3976 p_init_msg_list => FND_API.g_false ,
3977 p_commit => FND_API.g_false ,
3978 p_validation_level => FND_API.g_valid_level_full ,
3979 p_lead_id => l_sales_lead_id ,
3980 p_lead_status => l_referral_status_profile ,
3981 p_salesforce_id => P_identity_salesforce_id ,
3982 p_overriding_usernames => AS_SALES_LEAD_REFERRAL.G_MISS_OVER_USERNAMES_TBL ,
3983 x_Msg_Count => x_msg_count,
3984 x_Msg_Data => x_msg_data ,
3985 x_Return_Status => x_return_status
3986 );
3987
3988 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3989 IF (AS_DEBUG_LOW_ON) THEN
3990
3991 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
3992 'Private API: Notification for creating referral lead failed');
3993 END IF;
3994 END IF;
3995
3996 IF (AS_DEBUG_LOW_ON) THEN
3997
3998
3999
4000 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4001 'After notify party');
4002
4003 END IF; */
4004 end if;
4005
4006
4007
4008 -- Create access record
4009 IF l_sales_lead_rec.assign_to_salesforce_id IS NOT NULL AND
4010 l_sales_lead_rec.assign_to_salesforce_id <> FND_API.G_MISS_NUM THEN
4011 -- Create access security in as_accesses_all
4012 -- l_Sales_Team_Rec.access_id := FND_API.G_MISS_NUM;
4013 l_Sales_Team_Rec.last_update_date := SYSDATE;
4014 l_Sales_Team_Rec.last_updated_by := FND_GLOBAL.USER_ID;
4015 l_Sales_Team_Rec.creation_date := SYSDATE;
4016 l_Sales_Team_Rec.created_by := FND_GLOBAL.USER_ID;
4017 l_Sales_Team_Rec.last_update_login := FND_GLOBAL.CONC_LOGIN_ID;
4018 -- l_Sales_Team_Rec.team_leader_flag := FND_API.G_MISS_CHAR;
4019 l_Sales_Team_Rec.customer_id := l_SALES_LEAD_rec.Customer_Id;
4020 l_Sales_Team_Rec.address_id := l_SALES_LEAD_rec.Address_Id;
4021 l_Sales_Team_Rec.salesforce_id :=
4022 l_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID;
4023 l_Sales_Team_Rec.person_id :=
4024 l_SALES_LEAD_rec.ASSIGN_TO_PERSON_ID;
4025 l_Sales_Team_Rec.sales_group_id :=
4026 l_SALES_LEAD_rec.ASSIGN_SALES_GROUP_ID;
4027 l_Sales_Team_Rec.sales_lead_id := x_sales_lead_id;
4028
4029 l_Sales_Team_Rec.team_leader_flag := 'Y';
4030
4031 l_Sales_Team_Rec.owner_flag := 'Y';
4032 l_Sales_Team_Rec.freeze_flag := 'Y';
4033
4034
4035 l_Sales_Team_Rec.created_by_TAP_flag := 'N';
4036
4037
4038 -- Debug Message
4039 IF (AS_DEBUG_LOW_ON) THEN
4040
4041 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4042 'Calling Create_SalesTeam');
4043 END IF;
4044
4045 AS_ACCESS_PUB.Create_SalesTeam (
4046 p_api_version_number => 2.0
4047 ,p_init_msg_list => FND_API.G_FALSE
4048 ,p_commit => FND_API.G_FALSE
4049 ,p_validation_level => p_Validation_Level
4050 ,p_access_profile_rec => l_access_profile_rec
4051 ,p_check_access_flag => 'N'
4052 ,p_admin_flag => P_Admin_Flag
4053 ,p_admin_group_id => P_Admin_Group_Id
4054 ,p_identity_salesforce_id => P_Identity_Salesforce_Id
4055 ,p_sales_team_rec => l_Sales_Team_Rec
4056 ,X_Return_Status => x_Return_Status
4057 ,X_Msg_Count => X_Msg_Count
4058 ,X_Msg_Data => X_Msg_Data
4059 ,x_access_id => l_Access_Id
4060 );
4061
4062 -- Debug Message
4063
4064 IF (AS_DEBUG_LOW_ON) THEN
4065
4066
4067
4068 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4069 'access_id : ' || l_Access_Id);
4070
4071 END IF;
4072 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4073 RAISE FND_API.G_EXC_ERROR;
4074 END IF;
4075 END IF;
4076
4077 -- Create Sales Lead Lines
4078 IF p_SALES_LEAD_LINE_tbl.COUNT >= 1 THEN
4079 -- Debug Message
4080 IF (AS_DEBUG_LOW_ON) THEN
4081
4082 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4083 'Calling Create_sales_lead_lines');
4084 END IF;
4085
4086 -- ffang020201, if sales lead isn't assigned, access record hasn't been
4087 -- created. P_check_access_flag should pass 'N' to avoid checking
4088 -- has_updateLeadAccess
4089 AS_SALES_LEAD_LINES_PVT.Create_sales_lead_lines(
4090 P_Api_Version_Number => 2.0 ,
4091 P_Init_Msg_List => FND_API.G_FALSE,
4092 P_Commit => FND_API.G_FALSE,
4093 p_validation_level => P_Validation_Level,
4094 P_Check_Access_Flag => 'N',
4095 -- P_Check_Access_Flag => P_Check_Access_Flag,
4096 P_Admin_Flag => P_Admin_Flag,
4097 P_Admin_Group_Id => P_Admin_Group_Id,
4098 P_identity_salesforce_id => P_identity_salesforce_id,
4099 P_Sales_Lead_Profile_Tbl => P_Sales_Lead_Profile_Tbl,
4100 P_SALES_LEAD_LINE_Tbl => p_SALES_LEAD_LINE_Tbl,
4101 P_SALES_LEAD_ID => x_SALES_LEAD_ID,
4102 X_SALES_LEAD_LINE_OUT_Tbl => x_SALES_LEAD_LINE_OUT_Tbl,
4103 X_Return_Status => x_Return_Status,
4104 X_Msg_Count => X_Msg_Count,
4105 X_Msg_Data => X_Msg_Data
4106 );
4107
4108 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4109 RAISE FND_API.G_EXC_ERROR;
4110 END IF;
4111 END IF;
4112
4113 -- OPEN C_Lines_Amounts (X_SALES_LEAD_ID);
4114 -- FETCH C_Lines_Amounts into l_lines_amount;
4115 -- CLOSE C_Lines_Amounts;
4116
4117 -- IF l_SALES_LEAD_rec.BUDGET_AMOUNT <> l_lines_amount
4118 -- THEN
4119 -- AS_UTILITY_PVT.Set_Message(
4120 -- p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
4121 -- p_msg_name => 'AS_BUDGET_AMOUNT_NOT_MATCH');
4122 -- RAISE FND_API.G_EXC_ERROR;
4123 -- END IF;
4124
4125 -- Create sales lead contacts
4126 IF p_SALES_LEAD_CONTACT_tbl.COUNT >= 1 THEN
4127 -- Debug Message
4128 IF (AS_DEBUG_LOW_ON) THEN
4129
4130 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4131 'Calling Create_sales_lead_contacts');
4132 END IF;
4133
4134 -- ffang020201, if sales lead isn't assigned, access record hasn't been
4135 -- created. P_check_access_flag should pass 'N' to avoid checking
4136 -- has_updateLeadAccess
4137 AS_SALES_LEAD_CONTACTS_PVT.Create_sales_lead_contacts(
4138 P_Api_Version_Number => 2.0,
4139 P_Init_Msg_List => FND_API.G_FALSE,
4140 P_Commit => FND_API.G_FALSE,
4141 p_validation_level => P_Validation_Level,
4142 P_Check_Access_Flag => 'N',
4143 -- P_Check_Access_Flag => P_Check_Access_Flag,
4144 P_Admin_Flag => P_Admin_Flag,
4145 P_Admin_Group_Id => P_Admin_Group_Id,
4146 P_identity_salesforce_id => P_identity_salesforce_id,
4147 P_Sales_Lead_Profile_Tbl => P_Sales_Lead_Profile_Tbl,
4148 P_SALES_LEAD_CONTACT_Tbl => P_SALES_LEAD_CONTACT_Tbl,
4149 P_SALES_LEAD_ID => l_SALES_LEAD_ID,
4150 X_SALES_LEAD_CNT_OUT_Tbl => x_SALES_LEAD_CNT_OUT_Tbl,
4151 X_Return_Status => x_Return_Status,
4152 X_Msg_Count => X_Msg_Count,
4153 X_Msg_Data => X_Msg_Data );
4154
4155 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4156 RAISE FND_API.G_EXC_ERROR;
4157 END IF;
4158 END IF;
4159
4160 -- Debug Message
4161 IF (AS_DEBUG_LOW_ON) THEN
4162
4163 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4164 'Calling Check_primary_contact');
4165 END IF;
4166
4167 -- Check IF there is only one primary contact
4168 AS_SALES_LEAD_CONTACTS_PVT.Check_primary_contact (
4169 P_Api_Version_Number => 2.0
4170 ,P_Init_Msg_List => FND_API.G_FALSE
4171 ,P_Commit => FND_API.G_FALSE
4172 ,p_validation_level => P_Validation_Level
4173 -- ,P_Check_Access_Flag => P_Check_Access_Flag
4174 ,P_Check_Access_Flag => 'N'
4175 ,P_Admin_Flag => P_Admin_Flag
4176 ,P_Admin_Group_Id => P_Admin_Group_Id
4177 ,P_identity_salesforce_id => P_identity_salesforce_id
4178 ,P_Sales_Lead_Profile_Tbl => P_Sales_Lead_Profile_Tbl
4179 ,P_SALES_LEAD_ID => l_SALES_LEAD_ID
4180 ,X_Return_Status => x_Return_Status
4181 ,X_Msg_Count => X_Msg_Count
4182 ,X_Msg_Data => X_Msg_Data
4183 );
4184
4185 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4186 RAISE FND_API.G_EXC_ERROR;
4187 END IF;
4188
4189
4190 -- 11.5.10 ckapoor Rivendell lead name changes
4191
4192 if ( l_sales_lead_rec.description is null OR l_sales_lead_rec.description=FND_API.G_MISS_CHAR) then
4193
4194 IF (AS_DEBUG_LOW_ON) THEN
4195
4196 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4197 'CK:Desc null');
4198 END IF;
4199
4200 OPEN C_get_primary_contact_name(l_sales_lead_id);
4201 FETCH C_get_primary_contact_name into l_default_lead_name;
4202
4203 IF C_get_primary_contact_name%NOTFOUND THEN
4204
4205 OPEN C_get_customer_name(l_sales_lead_rec.customer_id) ;
4206
4207 FETCH C_get_customer_name into l_default_lead_name;
4208
4209 CLOSE C_get_customer_name;
4210
4211 END IF;
4212
4213 CLOSE C_get_primary_contact_name ;
4214
4215 IF (AS_DEBUG_LOW_ON) THEN
4216
4217 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4218 'CK:def name:'||l_default_lead_name);
4219 END IF;
4220
4221 update as_sales_leads set description = l_default_lead_name where sales_lead_id =
4222 l_SALES_LEAD_ID;
4223
4224 end if ;
4225
4226
4227 -- 11.5.10 ckapoor
4228
4229
4230
4231 --
4232 -- END of API body
4233 --
4234
4235 -- Standard check for p_commit
4236 IF FND_API.to_Boolean( p_commit )
4237 THEN
4238 COMMIT WORK;
4239 END IF;
4240
4241 -- Debug Message
4242 IF (AS_DEBUG_LOW_ON) THEN
4243
4244 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4245 'PVT: ' || l_api_name || ' End');
4246 END IF;
4247
4248 -- Standard call to get message count and IF count is 1, get message info.
4249 FND_MSG_PUB.Count_And_Get
4250 ( p_count => x_msg_count,
4251 p_data => x_msg_data );
4252
4253 EXCEPTION
4254 WHEN FND_API.G_EXC_ERROR THEN
4255 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
4256 P_API_NAME => L_API_NAME
4257 ,P_PKG_NAME => G_PKG_NAME
4258 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
4259 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
4260 ,X_MSG_COUNT => X_MSG_COUNT
4261 ,X_MSG_DATA => X_MSG_DATA
4262 ,X_RETURN_STATUS => X_RETURN_STATUS);
4263
4264 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4265 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
4266 P_API_NAME => L_API_NAME
4267 ,P_PKG_NAME => G_PKG_NAME
4268 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4269 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
4270 ,X_MSG_COUNT => X_MSG_COUNT
4271 ,X_MSG_DATA => X_MSG_DATA
4272 ,X_RETURN_STATUS => X_RETURN_STATUS);
4273
4274 WHEN OTHERS THEN
4275 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
4276 P_API_NAME => L_API_NAME
4277 ,P_PKG_NAME => G_PKG_NAME
4278 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
4279 ,P_SQLCODE => SQLCODE
4280 ,P_SQLERRM => SQLERRM
4281 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
4282 ,X_MSG_COUNT => X_MSG_COUNT
4283 ,X_MSG_DATA => X_MSG_DATA
4284 ,X_RETURN_STATUS => X_RETURN_STATUS);
4285
4286 END Create_sales_lead;
4287
4288
4289 PROCEDURE Update_sales_lead(
4290 P_Api_Version_Number IN NUMBER,
4291 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4292 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4293 P_Validation_Level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4294 P_Check_Access_Flag IN VARCHAR2 := FND_API.G_MISS_CHAR,
4295 P_Admin_Flag IN VARCHAR2 := FND_API.G_MISS_CHAR,
4296 P_Admin_Group_Id IN NUMBER := FND_API.G_MISS_NUM,
4297 P_Identity_Salesforce_Id IN NUMBER := FND_API.G_MISS_NUM,
4298 P_Sales_Lead_Profile_Tbl IN AS_UTILITY_PUB.Profile_Tbl_Type
4299 := AS_UTILITY_PUB.G_MISS_PROFILE_TBL,
4300 P_SALES_LEAD_Rec IN AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type,
4301 -- P_Calling_From_WF_Flag IN VARCHAR2 := 'N',
4302 X_Return_Status OUT NOCOPY VARCHAR2,
4303 X_Msg_Count OUT NOCOPY NUMBER,
4304 X_Msg_Data OUT NOCOPY VARCHAR2
4305 )
4306 IS
4307 Cursor C_Get_Access (X_Sales_Lead_Id NUMBER , c_salesforce_id NUMBER, c_sales_group_id NUMBER) IS
4308 Select
4309 access_id
4310 ,last_update_date
4311 ,last_updated_by
4312 ,creation_date
4313 ,created_by
4314 ,last_update_login
4315 ,freeze_flag
4316 ,reassign_flag
4317 ,team_leader_flag
4318 ,customer_id
4319 ,address_id
4320 ,salesforce_id
4321 ,person_id
4322 ,partner_customer_id
4323 ,partner_address_id
4324 ,created_person_id
4325 ,lead_id
4326 ,freeze_date
4327 ,reassign_reason
4328 ,downloadable_flag
4329 ,attribute_category
4330 ,attribute1
4331 ,attribute2
4332 ,attribute3
4333 ,attribute4
4334 ,attribute5
4335 ,attribute6
4336 ,attribute7
4337 ,attribute8
4338 ,attribute9
4339 ,attribute10
4340 ,attribute11
4341 ,attribute12
4342 ,attribute13
4343 ,attribute14
4344 ,attribute15
4345 ,salesforce_role_code
4346 ,salesforce_relationship_code
4347 ,sales_group_id
4348 -- ,reassign_requested_person_id
4349 -- ,reassign_request_date
4350 -- ,internal_update_access
4351 ,sales_lead_id
4352 From as_accesses_all
4353 Where sales_lead_id = X_Sales_Lead_Id
4354 and salesforce_id = c_salesforce_id
4355 and nvl(sales_group_id, -99) = nvl(c_sales_group_id, -99);
4356
4357 Cursor C_Get_sales_leads(P_SALES_LEAD_ID Number) IS
4358 Select last_update_date,
4359 customer_id,
4360 assign_to_salesforce_id,
4361 assign_sales_group_id,
4362 assign_to_person_id,
4363 status_code,
4364 reject_reason_code,
4365 qualified_flag,
4366 lead_rank_id,
4367 referral_type,
4368 referred_by,
4369 referral_status,
4370 accept_flag,
4371 decision_timeframe_code,
4372 creation_date
4373 From AS_SALES_LEADS
4374 Where SALES_LEAD_ID = p_Sales_Lead_ID
4375 For Update NOWAIT;
4376 -- Denorm fix 2928041
4377
4378 CURSOR C_Get_Status_open_flag(X_Lookup_Code VARCHAR2) IS
4379 SELECT opp_open_status_flag
4380 FROM as_statuses_b
4381 WHERE lead_flag = 'Y' and enabled_flag = 'Y'
4382 and status_code = X_Lookup_Code;
4383
4384 CURSOR C_Get_Lead_Rank_Score (X_Rank_ID NUMBER) IS
4385 SELECT min_score
4386 FROM as_sales_lead_ranks_b
4387 WHERE rank_id = X_Rank_ID;
4388
4389 -- End denorm fix 2928041
4390
4391
4392
4393 -- added for auto qualification of sales_lead
4394 -- changing query
4395 --CURSOR C_PHONE_ID_Exists(c_sales_lead_id NUMBER) IS
4396 -- SELECT hz.contact_point_id
4397 -- FROM AS_SALES_LEADS SL, HZ_CONTACT_POINTS HZ
4398 -- WHERE hz.owner_table_id = sl.customer_id
4399 -- AND hz.owner_table_name = 'HZ_PARTIES'
4400 -- AND hz.contact_point_type = 'PHONE'
4401 -- AND hz.primary_flag = 'Y'
4402 -- AND sl.sales_lead_id = c_sales_lead_id;
4403
4404 CURSOR C_PHONE_ID_Exists(c_sales_lead_id NUMBER) IS
4405 SELECT phone_id
4406 FROM AS_SALES_LEAD_CONTACTS
4407 WHERE sales_lead_id = c_sales_lead_id;
4408
4409 CURSOR C_CONTACT_ROLE_Exists(c_sales_lead_id NUMBER) IS
4410 SELECT contact_role_code
4411 FROM AS_SALES_LEAD_CONTACTS
4412 WHERE sales_lead_id = c_sales_lead_id ;
4413 -- Cursor C_Get_Keep_Flag (c_sales_lead_id NUMBER) IS
4414 -- SELECT keep_flag
4415 -- FROM as_sales_leads
4416 -- WHERE sales_lead_id = c_sales_lead_id;
4417
4418 -- ffang 121100, for bug 1504040, auto-qualification has nothing to do with
4419 -- keep_flag but previous status_code
4420 Cursor C_GET_STATUS_CODE (c_sales_lead_id NUMBER) IS
4421 SELECT status_code
4422 FROM as_sales_leads
4423 WHERE sales_lead_id = c_sales_lead_id;
4424
4425 CURSOR c_get_person_id(x_resource_id NUMBER) IS
4426 SELECT source_id
4427 FROM jtf_rs_resource_extns
4428 WHERE category = 'EMPLOYEE'
4429 and resource_id = x_resource_id;
4430
4431 CURSOR c_check_owner(c_sales_lead_id NUMBER , c_identity_salesforce_id NUMBER) IS
4432 select 'Y'
4433 from as_accesses_all a
4434 where a.sales_lead_id = c_sales_lead_id
4435 and a.owner_flag = 'Y'
4436 and a.salesforce_id = c_identity_salesforce_id;
4437
4438
4439 -- Bug 3385646 - MKTU3R10:COUNTRY IS NOT POPULATED WHEN THE LEAD IS CREATED THROUGH HTML
4440 CURSOR c_get_country_code (X_CUSTOMER_ID NUMBER, X_ADDRESS_ID NUMBER) IS
4441 select LOC.COUNTRY
4442 FROM HZ_PARTY_SITES SITE,HZ_LOCATIONS LOC
4443 WHERE SITE.PARTY_ID = X_CUSTOMER_ID
4444 AND SITE.PARTY_SITE_ID = X_ADDRESS_ID
4445 AND SITE.STATUS IN ('A','I')
4446 AND SITE.LOCATION_ID = LOC.LOCATION_ID;
4447
4448
4449 CURSOR c_check_salesteam(c_sales_lead_id NUMBER , c_salesforce_id NUMBER, c_sales_group_id NUMBER) IS
4450 select 'Y'
4451 from as_accesses_all a
4452 where a.sales_lead_id = c_sales_lead_id
4453 and a.salesforce_id = c_salesforce_id
4454 and nvl(a.sales_group_id, -99) = nvl(c_sales_group_id,-99);
4455
4456
4457 CURSOR C_timeframe_days (X_DECISION_TIMEFRAME_CODE VARCHAR2) IS
4458 SELECT timeframe_days
4459 FROM aml_sales_lead_timeframes
4460 where decision_timeframe_code = X_DECISION_TIMEFRAME_CODE and enabled_flag = 'Y';
4461
4462 CURSOR C_get_last_system_rank (c_sales_lead_id NUMBER) IS
4463 SELECT lead_rank_id
4464 FROM as_sales_leads_log
4465 WHERE sales_lead_id = c_sales_lead_id
4466 AND manual_rank_flag = 'N'
4467 ORDER BY log_id DESC;
4468
4469 CURSOR C_get_rank_score (c_lead_rank_id NUMBER) IS
4470 SELECT min_score
4471 FROM as_sales_lead_ranks_b
4472 WHERE rank_id = c_lead_rank_id;
4473
4474 -- ckapoor 11.5.10 bug 3225643 cursor to find salesgroup id given the salesforce id
4475
4476 CURSOR c_get_group_id (c_resource_id NUMBER, c_rs_group_member
4477 VARCHAR2, c_sales VARCHAR2, c_telesales VARCHAR2, c_fieldsales VARCHAR2, c_prm VARCHAR2, c_y
4478 VARCHAR2)
4479 IS
4480 SELECT grp.group_id
4481 FROM JTF_RS_GROUP_MEMBERS mem,
4482 JTF_RS_ROLE_RELATIONS rrel,
4483 JTF_RS_ROLES_B role,
4484 JTF_RS_GROUP_USAGES u,
4485 JTF_RS_GROUPS_B grp
4486 WHERE mem.group_member_id = rrel.role_resource_id
4487 AND rrel.role_resource_type = c_rs_group_member --'RS_GROUP_MEMBER'
4488 AND rrel.role_id = role.role_id
4489 AND role.role_type_code in (c_sales, c_telesales, c_fieldsales,
4490 c_prm) --'SALES','TELESALES','FIELDSALES','PRM')
4491 AND mem.delete_flag <> c_y --'Y'
4492 AND rrel.delete_flag <> c_y --'Y'
4493 AND SYSDATE BETWEEN rrel.start_date_active AND
4494 NVL(rrel.end_date_active,SYSDATE)
4495 AND mem.resource_id = c_resource_id
4496 AND mem.group_id = u.group_id
4497 AND u.usage = c_sales --'SALES'
4498 AND mem.group_id = grp.group_id
4499 AND SYSDATE BETWEEN grp.start_date_active AND
4500 NVL(grp.end_date_active,SYSDATE)
4501 AND ROWNUM < 2;
4502
4503 -- end ckapoor
4504
4505
4506 l_api_name CONSTANT VARCHAR2(30) := 'Update_sales_lead';
4507 l_api_version_number CONSTANT NUMBER := 2.0;
4508 -- Local Variables
4509 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
4510 l_tar_SALES_LEAD_rec AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type
4511 := P_SALES_LEAD_Rec;
4512 l_rowid ROWID;
4513 l_Sales_Team_Rec AS_ACCESS_PUB.Sales_Team_Rec_Type;
4514 l_access_profile_rec AS_ACCESS_PUB.Access_Profile_Rec_Type;
4515 l_customer_id NUMBER;
4516 l_last_update_date DATE;
4517 l_assign_to_salesforce_id NUMBER;
4518 l_assign_sales_group_id NUMBER;
4519 l_assign_to_person_id NUMBER;
4520 l_Sales_Lead_Log_ID NUMBER;
4521 l_access_id NUMBER;
4522 l_update_access_flag VARCHAR2(1);
4523 l_member_role VARCHAR2(5);
4524 l_member_access VARCHAR2(5);
4525 l_isQualified VARCHAR2(1);
4526 l_qualified VARCHAR2(30);
4527 l_auto_qualify_profile VARCHAR2(1);
4528 l_phone_id NUMBER := NULL;
4529 l_contact_role VARCHAR2(30);
4530 l_keep_flag VARCHAR2(1);
4531 l_status_code VARCHAR2(30);
4532 l_old_status_code VARCHAR2(30);
4533 l_qualified_flag VARCHAR2(1);
4534 l_lead_rank_id NUMBER;
4535 l_reject_reason_code VARCHAR2(30);
4536
4537 l_Return_Status VARCHAR2(10) := FND_API.G_RET_STS_SUCCESS;
4538 l_Msg_Count NUMBER := 0;
4539 l_Msg_Data VARCHAR2(4000);
4540 l_check_owner VARCHAR2(1);
4541 l_lead_owner_privilege VARCHAR2(1);
4542 l_check_salesteam VARCHAR2(1);
4543 l_referral_type VARCHAR2(30);
4544 l_referred_by NUMBER;
4545 l_referral_status_profile VARCHAR2(30);
4546 l_current_ref_status VARCHAR2(30);
4547 l_log_status_code VARCHAR2(30);
4548 l_log_lead_rank_id NUMBER ;
4549 l_log_assign_to_sf_id NUMBER;
4550 l_log_assign_sg_id NUMBER;
4551 l_log_assign_to_person_id NUMBER;
4552 l_log_reject_reason_code VARCHAR2(30);
4553 l_log_qualified VARCHAR2(1);
4554 l_accept_flag VARCHAR2(1);
4555 l_decision_timeframe_code VARCHAR2(30);
4556 l_timeframe_code VARCHAR2(30);
4557
4558 l_creation_date DATE;
4559 l_exp_date DATE;
4560 l_timeframe_days NUMBER;
4561
4562 -- SOLIN
4563 l_manual_rank_flag VARCHAR2(1);
4564 l_lead_rank_ind VARCHAR2(1);
4565 l_last_system_rank_id NUMBER;
4566 l_current_score NUMBER;
4567 l_last_score NUMBER;
4568 -- SOLIN end
4569
4570 l_old_status_flag VARCHAR2(1);
4571 l_new_status_flag VARCHAR2(1);
4572 l_old_lead_rank_score NUMBER;
4573 l_new_lead_rank_score NUMBER;
4574
4575
4576 -- ckapoor 11.5.10
4577 l_login_user_sg_id NUMBER;
4578 l_login_user_in_st VARCHAR2(1);
4579 l_login_salesteam_rec AS_ACCESS_PUB.Sales_Team_Rec_Type;
4580 l_login_access_id NUMBER;
4581 l_login_user_person_id NUMBER;
4582
4583
4584 -- end ckapoor
4585
4586 --l_country_code VARCHAR2(60);
4587 l_country_code VARCHAR2(60) := FND_API.G_MISS_CHAR; --Default value added by bmuthukr for bug 3675566
4588
4589
4590 BEGIN
4591 -- Standard Start of API savepoint
4592 SAVEPOINT UPDATE_SALES_LEAD_PVT;
4593
4594 -- Standard call to check for call compatibility.
4595 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4596 p_api_version_number,
4597 l_api_name,
4598 G_PKG_NAME)
4599 THEN
4600 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4601 END IF;
4602
4603 -- Initialize message list IF p_init_msg_list is set to TRUE.
4604 IF FND_API.to_Boolean( p_init_msg_list )
4605 THEN
4606 FND_MSG_PUB.initialize;
4607 END IF;
4608
4609 -- Debug Message
4610 IF (AS_DEBUG_LOW_ON) THEN
4611
4612 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4613 'PVT: ' || l_api_name || ' Start');
4614 END IF;
4615
4616 -- Initialize API return status to SUCCESS
4617 x_return_status := FND_API.G_RET_STS_SUCCESS;
4618
4619 --
4620 -- Api body
4621 --
4622
4623 IF (p_validation_level = fnd_api.g_valid_level_full)
4624 THEN
4625 AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
4626 p_api_version_number => 2.0
4627 ,p_init_msg_list => p_init_msg_list
4628 ,p_salesforce_id => p_identity_salesforce_id
4629 ,p_admin_group_id => p_admin_group_id
4630 ,x_return_status => x_return_status
4631 ,x_msg_count => x_msg_count
4632 ,x_msg_data => x_msg_data
4633 ,x_sales_member_rec => l_identity_sales_member_rec);
4634 END IF;
4635 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4636 RAISE FND_API.G_EXC_ERROR;
4637 END IF;
4638
4639 -- Debug Message
4640 IF (AS_DEBUG_LOW_ON) THEN
4641
4642 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4643 'Open Cursor C_Get_sales_leads');
4644 END IF;
4645
4646 Open C_Get_sales_leads( l_tar_SALES_LEAD_rec.SALES_LEAD_ID);
4647
4648 Fetch C_Get_sales_leads into l_last_update_date,
4649 l_customer_id,
4650 l_assign_to_salesforce_id,
4651 l_assign_sales_group_id,
4652 l_assign_to_person_id,
4653 l_old_status_code,
4654 l_reject_reason_code,
4655 l_qualified_flag,
4656 l_lead_rank_id,
4657 l_referral_type,
4658 l_referred_by,
4659 l_current_ref_status,
4660 l_accept_flag,
4661 l_decision_timeframe_code,
4662 l_creation_date;
4663
4664 IF ( C_Get_sales_leads%NOTFOUND) THEN
4665 Close C_Get_sales_leads;
4666
4667 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4668 THEN
4669 FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
4670 FND_MESSAGE.Set_Token ('INFO', 'SALES_LEAD', FALSE);
4671 FND_MSG_PUB.Add;
4672 END IF;
4673 raise FND_API.G_EXC_ERROR;
4674 END IF;
4675
4676 -- Debug Message
4677 IF (AS_DEBUG_LOW_ON) THEN
4678
4679 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4680 'Close Cursor C_Get_sales_leads');
4681 END IF;
4682 Close C_Get_sales_leads;
4683
4684 -- Check Whether record has been changed by someone else
4685 IF (l_tar_SALES_LEAD_rec.last_update_date is NULL or
4686 l_tar_SALES_LEAD_rec.last_update_date = FND_API.G_MISS_Date )
4687 THEN
4688 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4689 THEN
4690 FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
4691 FND_MESSAGE.Set_Token('COLUMN', 'LAST_UPDATE_DATE', FALSE);
4692 FND_MSG_PUB.ADD;
4693 END IF;
4694 raise FND_API.G_EXC_ERROR;
4695 END IF;
4696
4697 IF (l_tar_SALES_LEAD_rec.last_update_date <> l_last_update_date)
4698 THEN
4699 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4700 THEN
4701 FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
4702 FND_MESSAGE.Set_Token('INFO', 'SALES_LEAD', FALSE);
4703 FND_MSG_PUB.ADD;
4704 END IF;
4705 raise FND_API.G_EXC_ERROR;
4706 END IF;
4707
4708 -- Bug 1514981
4709 -- Set default value to accept_flag, keep_flag, urgent_flag,
4710 -- import_flag, deleted_flag, and currency_code as profile values.
4711 If (l_tar_SALES_LEAD_rec.ACCEPT_FLAG IS NULL) or
4712 (l_tar_SALES_LEAD_rec.KEEP_FLAG IS NULL) or
4713 (l_tar_SALES_LEAD_rec.URGENT_FLAG IS NULL) or
4714 (l_tar_SALES_LEAD_rec.IMPORT_FLAG IS NULL) or
4715 (l_tar_SALES_LEAD_rec.DELETED_FLAG IS NULL) or
4716 (l_tar_SALES_LEAD_rec.currency_code IS NULL)or
4717 (l_tar_SALES_LEAD_rec.lead_rank_ind is NULL)
4718 THEN
4719 IF (AS_DEBUG_LOW_ON) THEN
4720
4721 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4722 'Calling Set_default_values');
4723 END IF;
4724
4725 Set_default_values(
4726 p_mode => AS_UTILITY_PVT.G_UPDATE,
4727 px_SALES_LEAD_rec => l_tar_SALES_LEAD_Rec);
4728
4729 End If;
4730
4731 -- Debug message
4732 IF (AS_DEBUG_LOW_ON) THEN
4733
4734 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4735 'Calling Validate_sales_lead');
4736 END IF;
4737
4738 -- Invoke validation procedures
4739 Validate_sales_lead(
4740 p_init_msg_list => FND_API.G_FALSE,
4741 p_validation_level => p_validation_level,
4742 p_validation_mode => AS_UTILITY_PVT.G_UPDATE,
4743 P_SALES_LEAD_Rec => l_tar_SALES_LEAD_Rec,
4744 p_referral_type => l_referral_type,
4745 p_referred_by => l_referred_by,
4746 x_return_status => x_return_status,
4747 x_msg_count => x_msg_count,
4748 x_msg_data => x_msg_data);
4749
4750 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4751 RAISE FND_API.G_EXC_ERROR;
4752 END IF;
4753
4754
4755 -- Call Get_Access_Profiles to get access_profile_rec
4756 IF (AS_DEBUG_LOW_ON) THEN
4757
4758 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4759 'Calling Get_Access_Profiles');
4760 END IF;
4761
4762 AS_SALES_LEADS_PUB.Get_Access_Profiles(
4763 p_profile_tbl => p_sales_lead_profile_tbl,
4764 x_access_profile_rec => l_access_profile_rec);
4765
4766
4767
4768 IF(P_Check_Access_Flag = 'Y') THEN
4769
4770 IF (AS_DEBUG_LOW_ON) THEN
4771
4772
4773
4774 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4775 'Calling Has_updateLeadAccess');
4776
4777 END IF;
4778
4779 AS_ACCESS_PUB.Has_updateLeadAccess(
4780 p_api_version_number => 2.0
4781 ,p_init_msg_list => FND_API.G_FALSE
4782 ,p_validation_level => p_validation_level
4783 ,p_access_profile_rec => l_access_profile_rec
4784 ,p_admin_flag => p_admin_flag
4785 ,p_admin_group_id => p_admin_group_id
4786 ,p_person_id =>
4787 l_identity_sales_member_rec.employee_person_id
4788 ,p_sales_lead_id => p_sales_lead_rec.sales_lead_id
4789 -- ffang 012501, p_check_access_flag should always be 'Y'
4790 ,p_check_access_flag => p_check_access_flag -- 'Y'
4791 ,p_identity_salesforce_id => p_identity_salesforce_id
4792 ,p_partner_cont_party_id => NULL
4793 ,x_return_status => x_return_status
4794 ,x_msg_count => x_msg_count
4795 ,x_msg_data => x_msg_data
4796 ,x_update_access_flag => l_update_access_flag);
4797
4798 IF l_update_access_flag <> 'Y' THEN
4799 IF (AS_DEBUG_ERROR_ON) THEN
4800
4801 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4802 'API_NO_UPDATE_PRIVILEGE');
4803 END IF;
4804 RAISE FND_API.G_EXC_ERROR;
4805 END IF;
4806
4807 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4808
4809 RAISE FND_API.G_EXC_ERROR;
4810 END IF;
4811
4812
4813
4814 END IF; -- end of P_Check_Access = 'Y'
4815
4816
4817 -- moving check owner code outside p_check_access loop. OTS does not pass p_check_access as 'Y'
4818 -- but they still need check owner code to be called. OTS calls update lead access code themselves.
4819
4820 -- check for whether the current user is owner or not
4821
4822 -- in the pre 11.5.8 scenario, all leads had to have an owner. Now it might happen that
4823 -- a lead has no owner. The creator will be on salesteam so he should be able to update the lead
4824 -- based on access. We can skip the change owner access check in that case.
4825
4826
4827 if (l_assign_to_salesforce_id is not null)
4828 then
4829
4830
4831 l_check_owner := 'N';
4832 --Open c_check_owner(p_sales_lead_rec.sales_lead_id, p_identity_salesforce_id );
4833
4834 --Fetch c_check_owner into l_check_owner;
4835 --Close c_check_owner;
4836 IF (AS_DEBUG_LOW_ON) THEN
4837
4838 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4839 'Calling Has_leadOwnerAccess');
4840 END IF;
4841 AS_ACCESS_PVT.has_leadOwnerAccess(
4842 p_api_version_number => 2.0
4843 ,p_init_msg_list => FND_API.G_FALSE
4844 ,p_validation_level => p_validation_level
4845 ,p_access_profile_rec => l_access_profile_rec
4846 ,p_admin_flag => p_admin_flag
4847 ,p_admin_group_id => p_admin_group_id
4848 ,p_person_id =>
4849 l_identity_sales_member_rec.employee_person_id
4850 ,p_sales_lead_id => p_sales_lead_rec.sales_lead_id
4851 -- ffang 012501, p_check_access_flag should always be 'Y'
4852 ,p_check_access_flag => p_check_access_flag -- 'Y'
4853 ,p_identity_salesforce_id => p_identity_salesforce_id
4854 ,p_partner_cont_party_id => NULL
4855 ,x_return_status => x_return_status
4856 ,x_msg_count => x_msg_count
4857 ,x_msg_data => x_msg_data
4858 ,x_update_access_flag => l_check_owner);
4859
4860
4861 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4862
4863 RAISE FND_API.G_EXC_ERROR;
4864 END IF;
4865
4866
4867
4868
4869 l_lead_owner_privilege := fnd_profile.value('AS_ALLOW_CHANGE_LEAD_OWNER');
4870 IF l_check_owner <> 'Y'
4871 AND ((l_assign_to_salesforce_id <> p_sales_lead_rec.assign_to_salesforce_id) OR
4872 (p_sales_lead_rec.assign_to_salesforce_id is null))
4873 AND l_lead_owner_privilege <> 'Y' -- exception made, even if not owner but if profile is set then lets you
4874 -- change owner. Update access checking in security API
4875 THEN
4876 IF (AS_DEBUG_ERROR_ON) THEN
4877
4878 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4879 'API_NO_LEAD_UPDATE_PRIVILEGE');
4880 END IF;
4881 RAISE FND_API.G_EXC_ERROR;
4882 END IF;
4883
4884 end if; -- if current owner is not null
4885
4886 -- else if current owner is null, u can skip the owner check
4887
4888 -- if user is declining , then if not owner AND profile not set then throw error
4889 IF (AS_DEBUG_LOW_ON) THEN
4890
4891 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4892 'l_check_owner is'|| l_check_owner);
4893 END IF;
4894
4895 IF (AS_DEBUG_LOW_ON) THEN
4896
4897
4898
4899 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4900 'l_lead_owner_privilege is'|| l_lead_owner_privilege);
4901
4902 END IF;
4903
4904
4905 IF (l_tar_SALES_LEAD_Rec.reject_reason_code is not null AND l_tar_SALES_LEAD_Rec.reject_reason_code <> FND_API.G_MISS_CHAR)
4906 AND l_check_owner <> 'Y'
4907 AND l_lead_owner_privilege <> 'Y' -- exception made, even if not owner but if profile is set then lets you
4908 -- change owner. Update access checking in security API
4909 THEN
4910 IF (AS_DEBUG_ERROR_ON) THEN
4911
4912 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4913 'API_NO_DECLINE_PRIVILEGE');
4914 END IF;
4915 RAISE FND_API.G_EXC_ERROR;
4916 END IF;
4917
4918
4919 IF (l_tar_SALES_LEAD_Rec.accept_flag <> l_accept_flag) AND (l_tar_SALES_LEAD_rec.accept_flag <> FND_API.G_MISS_CHAR)
4920 AND l_check_owner <> 'Y'
4921 AND l_lead_owner_privilege <> 'Y' -- exception made, even if not owner but if profile is set then lets you
4922 -- change owner. Update access checking in security API
4923 THEN
4924 IF (AS_DEBUG_ERROR_ON) THEN
4925
4926 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4927 'API_NO_ACCEPT_PRIVILEGE');
4928 END IF;
4929 RAISE FND_API.G_EXC_ERROR;
4930 END IF;
4931
4932
4933 -- auto qualify lead
4934
4935 -- ffang 121100, for bug 1504040
4936 -- when original stauts_code is 'NEW' or 'UNQUALIFIED' and UI didn't
4937 -- pass in any status_code, then launch auto-qulification.
4938
4939 -- ffang 100200: for bug 1416170
4940 -- Do auto-qualify only when keep_flag <> 'Y' or keep_flag is NULL
4941
4942 -- IF (P_SALES_LEAD_Rec.keep_flag = FND_API.G_MISS_CHAR)
4943 -- THEN
4944 -- OPEN C_Get_Keep_Flag (P_SALES_LEAD_Rec.sales_lead_id);
4945 -- FETCH C_Get_Keep_Flag into l_keep_flag;
4946 -- CLOSE C_Get_Keep_Flag;
4947 -- ELSE
4948 -- l_keep_flag := P_SALES_LEAD_Rec.keep_flag;
4949 -- END IF;
4950
4951 -- IF ((l_keep_flag <> 'Y') or (l_keep_flag is NULL))
4952 -- 111900 FFANG for bug 1475568, if status is changed to 'DECLINED',
4953 -- don't do auto-qualify
4954 -- and (P_SALES_LEAD_Rec.status_code <> 'DECLINED')
4955
4956 OPEN C_GET_STATUS_CODE (P_SALES_LEAD_Rec.sales_lead_id);
4957 FETCH C_GET_STATUS_CODE INTO l_status_code;
4958 CLOSE C_GET_STATUS_CODE;
4959
4960
4961 /* l_auto_qualify_profile := nvl(FND_PROFILE.Value('AS_AUTO_QUALIFY'),'N');
4962
4963 IF (AS_DEBUG_LOW_ON) THEN
4964
4965
4966
4967 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4968 'l_auto_qualify_profile is '|| l_auto_qualify_profile);
4969
4970 END IF;
4971
4972 IF(P_SALES_LEAD_Rec.qualified_flag = 'N' and
4973 l_auto_qualify_profile = 'Y')
4974 --IF (l_status_code = 'NEW' or l_status_code = 'UNQUALIFIED')
4975 -- and (P_SALES_LEAD_Rec.status_code is null
4976 -- or P_SALES_LEAD_Rec.status_code = FND_API.G_MISS_CHAR)
4977 THEN
4978 -- Launch auto-qualification
4979 IF (AS_DEBUG_LOW_ON) THEN
4980
4981 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4982 'Launch auto-qualification');
4983 END IF;
4984
4985 OPEN C_PHONE_ID_Exists (P_SALES_LEAD_Rec.sales_lead_id);
4986 FETCH C_PHONE_ID_Exists into l_phone_id;
4987
4988 -- ffang 092800: Forgot to close cursor?
4989 CLOSE C_PHONE_ID_Exists;
4990 -- end ffang 092800
4991
4992 OPEN C_CONTACT_ROLE_Exists (P_SALES_LEAD_Rec.sales_lead_id);
4993 FETCH C_CONTACT_ROLE_Exists into l_contact_role;
4994
4995 -- ffang 092800: Forgot to close cursor?
4996 CLOSE C_CONTACT_ROLE_Exists;
4997
4998
4999 l_isQualified := IS_LEAD_QUALIFIED(P_SALES_LEAD_Rec, l_phone_id, l_contact_role);
5000
5001 -- compute the qualified flag and assign to l_qualified
5002 --if l_isQualified = 'Y' then
5003 -- l_qualified := 'QUALIFIED';
5004 --else
5005 -- -- l_qualified := p_sales_lead_rec.STATUS_CODE;
5006 -- l_qualified := 'UNQUALIFIED';
5007 --end if;
5008 l_qualified := l_isQualified;
5009 ELSE
5010 IF (AS_DEBUG_LOW_ON) THEN
5011
5012 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5013 'Doing manual qualification');
5014 END IF;
5015
5016
5017 -- now status code independent of qualified flag
5018 --l_qualified := p_sales_lead_rec.STATUS_CODE;
5019 l_qualified := p_sales_lead_rec.QUALIFIED_FLAG;
5020 END IF;*/
5021 -- end ffang 100200
5022
5023 l_qualified := p_sales_lead_rec.QUALIFIED_FLAG;
5024
5025 OPEN c_get_person_id(l_tar_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID);
5026 FETCH c_get_person_id INTO l_tar_SALES_LEAD_rec.ASSIGN_TO_PERSON_ID;
5027 CLOSE c_get_person_id;
5028
5029 -- Debug Message
5030 IF (AS_DEBUG_LOW_ON) THEN
5031
5032 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5033 'Calling Sales_Lead_Update_Row');
5034 END IF;
5035
5036 IF (AS_DEBUG_LOW_ON) THEN
5037
5038
5039
5040 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5041 'p_sf_id:'||p_sales_lead_rec.assign_to_salesforce_id);
5042
5043 END IF;
5044 IF (AS_DEBUG_LOW_ON) THEN
5045
5046 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5047 'sf_id:'||l_tar_SALES_LEAD_rec.assign_to_salesforce_id);
5048 END IF;
5049
5050
5051 -- if decline reason code is not null i.e user is declining lead
5052 -- then clear accept flag and make sure assign to doesnt get changed
5053 -- even if user has changed it while declining
5054
5055 if l_tar_SALES_LEAD_rec.REJECT_REASON_CODE IS NOT NULL AND
5056 l_tar_SALES_LEAD_rec.REJECT_REASON_CODE <> FND_API.G_MISS_CHAR
5057 THEN
5058 l_tar_SALES_LEAD_rec.accept_flag := 'N';
5059
5060 IF (l_assign_to_salesforce_id IS NOT NULL AND
5061 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5062 FND_API.G_MISS_NUM AND
5063 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5064 l_assign_to_salesforce_id)
5065 OR
5066 (l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NULL)
5067
5068 THEN
5069 l_tar_SALES_LEAD_rec.assign_to_salesforce_id := l_assign_to_salesforce_id;
5070 l_tar_SALES_LEAD_rec.assign_to_person_id := l_assign_to_person_id;
5071 l_tar_SALES_LEAD_rec.assign_sales_group_id := l_assign_sales_group_id;
5072 END IF;
5073
5074 END IF;
5075
5076 -- this code is ok since noone else modifies assign_date
5077 l_tar_SALES_LEAD_rec.assign_date := FND_API.G_MISS_DATE;
5078
5079 -- If assign_to_salesforce_id is being set to someone else (manual routing)
5080 -- then, the status should be set from profile and accept_flag = 'N'
5081
5082 IF l_assign_to_salesforce_id IS NOT NULL AND
5083 l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NOT NULL AND
5084 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5085 FND_API.G_MISS_NUM AND
5086 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5087 l_assign_to_salesforce_id
5088 THEN
5089
5090 -- as per bug 2238553 routing shud not change status of lead hence commenting out the next line.
5091 --l_tar_SALES_LEAD_rec.status_code := fnd_profile.value('AS_LEAD_ROUTING_STATUS');
5092 l_tar_SALES_LEAD_rec.accept_flag := 'N';
5093 l_tar_SALES_LEAD_rec.assign_date := SYSDATE;
5094
5095 END IF;
5096
5097 -- do check on referral type. If a non null referral type is being passed in,
5098 -- then make sure referral status is set to the profile of REF_STATUS_FOR_NEW_LEAD
5099
5100 l_referral_status_profile := l_tar_SALES_LEAD_rec.REFERRAL_STATUS;
5101
5102 if (l_tar_SALES_LEAD_rec.REFERRAL_STATUS is null or l_tar_SALES_LEAD_rec.REFERRAL_STATUS = FND_API.G_MISS_CHAR)
5103 then
5104 if (l_tar_SALES_LEAD_rec.REFERRAL_TYPE is not null and l_tar_sales_lead_rec.REFERRAL_TYPE <> FND_API.G_MISS_CHAR)
5105 -- if referral type lead and the current referral status in database is null then need to do something.
5106 then
5107 if (l_current_ref_status is null) then
5108 l_referral_status_profile := FND_PROFILE.Value('REF_STATUS_FOR_NEW_LEAD');
5109 else
5110 l_referral_status_profile := FND_API.G_MISS_CHAR; -- you dont want to change the non null referral status
5111 end if ; -- if l_current_ref_status is null
5112 end if; -- if a referral type lead
5113 end if; -- if incoming referral status is null/G_MISS
5114
5115
5116 --bmuthukr modified the following code to fix bug 3675566.
5117 /*IF (l_tar_SALES_LEAD_rec.address_id is not NULL) and
5118 (l_tar_SALES_LEAD_rec.address_id <> FND_API.G_MISS_NUM)
5119 THEN
5120 OPEN c_get_country_code ( l_customer_id, l_tar_SALES_LEAD_rec.address_id);
5121 FETCH c_get_country_code into l_country_code;
5122 Close c_get_country_code;
5123 ELSE
5124 l_country_code := null;
5125 END If;*/
5126 IF (nvl(l_tar_SALES_LEAD_rec.address_id,0) <> FND_API.G_MISS_NUM) THEN
5127 IF (l_tar_SALES_LEAD_rec.address_id is not NULL) THEN
5128 OPEN c_get_country_code ( l_customer_id, l_tar_SALES_LEAD_rec.address_id);
5129 FETCH c_get_country_code into l_country_code;
5130 Close c_get_country_code;
5131 ELSE
5132 l_country_code := null;
5133 END If;
5134 END IF;
5135 --Ends changes for bug 3675566
5136
5137 -- Moving code here, since we need common code for logging into as_sales_leads (status_open_flag
5138 -- and lead_rank_score)
5139
5140 --Denorm fix 04/30/03 ckapoor
5141 --Get the open status flag for both old status and new status
5142
5143 OPEN C_Get_Status_open_flag ( l_old_status_code);
5144 FETCH C_Get_Status_open_flag into l_old_status_flag;
5145 Close C_Get_Status_open_flag;
5146
5147 -- by default the new status flag shud be same as old status flag
5148
5149 l_new_status_flag := l_old_status_flag;
5150
5151 -- if status is null (shud not happen since status is non null alwiz), we
5152 -- dont want to fix the status flag
5153 -- if status is g_miss , means anyways the status is not changing so flag is not changing.
5154
5155 if (l_tar_sales_lead_rec.STATUS_CODE IS NOT NULL AND l_tar_sales_lead_rec.STATUS_CODE <> FND_API.G_MISS_CHAR ) THEN
5156
5157 OPEN C_Get_Status_open_flag ( l_tar_SALES_LEAD_rec.STATUS_CODE);
5158 FETCH C_Get_Status_open_flag into l_new_status_flag;
5159 Close C_Get_Status_open_flag;
5160
5161 END IF;
5162
5163
5164 -- We can simply log the l_new_status_flag into the STATUS_OPEN_FLAG field.
5165 -- These values l_new/old_status_open_flag will be used later in API to update AS_ACCESSES_ALL
5166
5167
5168 -- Update lead_rank_score as well.
5169
5170
5171 OPEN C_Get_Lead_Rank_Score ( l_lead_rank_id);
5172 FETCH C_Get_Lead_Rank_Score into l_old_lead_rank_score;
5173 Close C_Get_Lead_Rank_Score;
5174
5175 -- by default the new score is g_miss i.e do not change the old score in db.
5176
5177 l_new_lead_rank_score := FND_API.G_MISS_NUM;
5178
5179 -- if new rank is null, we want to fix the score since old might have been non null.
5180 -- if new rank is g_miss , means anyways the rank is not changing so score is not changing.
5181
5182 if ( l_tar_sales_lead_rec.LEAD_RANK_ID <> FND_API.G_MISS_NUM ) THEN
5183
5184 OPEN C_Get_Lead_Rank_Score ( l_tar_SALES_LEAD_rec.LEAD_RANK_ID);
5185 FETCH C_Get_Lead_Rank_Score into l_new_lead_rank_score;
5186 Close C_Get_Lead_Rank_Score;
5187
5188 END IF;
5189
5190 IF (AS_DEBUG_LOW_ON) THEN
5191
5192 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5193 'lead_rank_score : ' || l_new_lead_rank_score);
5194 END IF;
5195
5196 -- if new rank score is null, make it 0
5197 if ( l_tar_sales_lead_rec.lead_rank_id is NULL) then
5198 l_new_lead_rank_score := 0;
5199 end if;
5200 -- We can simply log the l_new_lead_rank_score into the LEAD_RANK_SCORE field.
5201
5202 -- End Denorm fix.
5203
5204
5205
5206
5207
5208
5209 IF (AS_DEBUG_LOW_ON) THEN
5210
5211
5212 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5213 'Just before AS_SALES_LEADS_PKG.Sales_Lead_Update_Row');
5214
5215
5216 END IF;
5217
5218
5219 -- what should the new expiration date be.
5220
5221 if (l_tar_sales_lead_rec.DECISION_TIMEFRAME_CODE = FND_API.G_MISS_CHAR) then
5222 l_timeframe_code := l_decision_timeframe_code; -- same as the db value
5223 else
5224 l_timeframe_code := l_tar_sales_lead_rec.DECISION_TIMEFRAME_CODE; -- same as the target value
5225
5226 end if;
5227
5228 -- expiration date is calculated as creation_date + time frame days (for a smart timeframe)
5229 -- if no smart timeframe, then exp date is null.
5230
5231 l_exp_date := null;
5232 l_timeframe_days := 0;
5233
5234
5235 OPEN C_timeframe_days (l_timeframe_code);
5236 FETCH C_timeframe_days into l_timeframe_days;
5237
5238 IF C_timeframe_days%NOTFOUND
5239 THEN
5240 l_exp_date := null;
5241
5242 ELSE
5243 l_exp_date := l_creation_date + l_timeframe_days;
5244 END IF;
5245
5246
5247 CLOSE C_timeframe_days ;
5248
5249 -- SOLIN, 12/17/2002, populate column lead_rank_ind
5250 -- 'U': lead is upgraded.
5251 -- 'D': lead is downgraded.
5252 -- 'N': none of above.
5253 IF l_tar_sales_lead_rec.lead_rank_id <> l_lead_rank_id AND
5254 l_tar_sales_lead_rec.lead_rank_id <> FND_API.G_MISS_NUM
5255 THEN
5256 l_manual_rank_flag := 'Y';
5257 OPEN C_get_last_system_rank(l_tar_SALES_LEAD_rec.SALES_LEAD_ID);
5258 FETCH C_get_last_system_rank INTO l_last_system_rank_id;
5259 CLOSE C_get_last_system_rank;
5260
5261 OPEN c_get_rank_score(l_tar_sales_lead_rec.lead_rank_id);
5262 FETCH c_get_rank_score INTO l_current_score;
5263 CLOSE c_get_rank_score;
5264
5265 OPEN c_get_rank_score(l_last_system_rank_id);
5266 FETCH c_get_rank_score INTO l_last_score;
5267 CLOSE c_get_rank_score;
5268
5269 IF (AS_DEBUG_LOW_ON) THEN
5270 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5271 'current_score=' || l_current_score);
5272 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5273 'last_score=' || l_last_score);
5274 END IF;
5275 IF l_current_score > l_last_score
5276 THEN
5277 l_lead_rank_ind := 'U';
5278 ELSIF l_current_score < l_last_score
5279 THEN
5280 l_lead_rank_ind := 'D';
5281 ELSE
5282 l_lead_rank_ind := 'N';
5283 END IF;
5284 ELSE
5285 --l_lead_rank_ind := FND_API.G_MISS_CHAR;
5286 l_lead_rank_ind := l_tar_SALES_LEAD_rec.LEAD_RANK_IND;
5287 END IF;
5288 -- SOLIN, end
5289
5290 -- Invoke table handler(Sales_Lead_Update_Row)
5291 AS_SALES_LEADS_PKG.Sales_Lead_Update_Row(
5292 p_SALES_LEAD_ID => l_tar_SALES_LEAD_rec.SALES_LEAD_ID,
5293 p_LAST_UPDATE_DATE => SYSDATE,
5294 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
5295 p_CREATION_DATE => l_tar_SALES_LEAD_rec.CREATION_DATE,
5296 p_CREATED_BY => l_tar_SALES_LEAD_rec.CREATED_BY,
5297 p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID,
5298 p_REQUEST_ID => FND_GLOBAL.Conc_Request_Id,
5299 p_PROGRAM_APPLICATION_ID => FND_GLOBAL.Prog_Appl_Id,
5300 p_PROGRAM_ID => FND_GLOBAL.Conc_Program_Id,
5301 p_PROGRAM_UPDATE_DATE => SYSDATE,
5302 p_LEAD_NUMBER => l_tar_SALES_LEAD_rec.LEAD_NUMBER,
5303 --p_STATUS_CODE => l_qualified,
5304 p_STATUS_CODE => l_tar_SALES_LEAD_rec.STATUS_CODE,
5305 p_CUSTOMER_ID => l_tar_SALES_LEAD_rec.CUSTOMER_ID,
5306 p_ADDRESS_ID => l_tar_SALES_LEAD_rec.ADDRESS_ID,
5307 p_SOURCE_PROMOTION_ID => l_tar_SALES_LEAD_rec.SOURCE_PROMOTION_ID,
5308 p_INITIATING_CONTACT_ID => l_tar_SALES_LEAD_rec.INITIATING_CONTACT_ID,
5309 p_ORIG_SYSTEM_REFERENCE => l_tar_SALES_LEAD_rec.ORIG_SYSTEM_REFERENCE,
5310 p_CONTACT_ROLE_CODE => l_tar_SALES_LEAD_rec.CONTACT_ROLE_CODE,
5311 p_CHANNEL_CODE => l_tar_SALES_LEAD_rec.CHANNEL_CODE,
5312 p_BUDGET_AMOUNT => l_tar_SALES_LEAD_rec.BUDGET_AMOUNT,
5313 p_CURRENCY_CODE => l_tar_SALES_LEAD_rec.CURRENCY_CODE,
5314 p_DECISION_TIMEFRAME_CODE =>
5315 l_tar_SALES_LEAD_rec.DECISION_TIMEFRAME_CODE,
5316 p_CLOSE_REASON => l_tar_SALES_LEAD_rec.CLOSE_REASON,
5317 p_LEAD_RANK_ID => l_tar_SALES_LEAD_rec.LEAD_RANK_ID,
5318 p_LEAD_RANK_CODE => l_tar_SALES_LEAD_rec.LEAD_RANK_CODE,
5319 p_PARENT_PROJECT => l_tar_SALES_LEAD_rec.PARENT_PROJECT,
5320 p_DESCRIPTION => l_tar_SALES_LEAD_rec.DESCRIPTION,
5321 p_ATTRIBUTE_CATEGORY => l_tar_SALES_LEAD_rec.ATTRIBUTE_CATEGORY,
5322 p_ATTRIBUTE1 => l_tar_SALES_LEAD_rec.ATTRIBUTE1,
5323 p_ATTRIBUTE2 => l_tar_SALES_LEAD_rec.ATTRIBUTE2,
5324 p_ATTRIBUTE3 => l_tar_SALES_LEAD_rec.ATTRIBUTE3,
5325 p_ATTRIBUTE4 => l_tar_SALES_LEAD_rec.ATTRIBUTE4,
5326 p_ATTRIBUTE5 => l_tar_SALES_LEAD_rec.ATTRIBUTE5,
5327 p_ATTRIBUTE6 => l_tar_SALES_LEAD_rec.ATTRIBUTE6,
5328 p_ATTRIBUTE7 => l_tar_SALES_LEAD_rec.ATTRIBUTE7,
5329 p_ATTRIBUTE8 => l_tar_SALES_LEAD_rec.ATTRIBUTE8,
5330 p_ATTRIBUTE9 => l_tar_SALES_LEAD_rec.ATTRIBUTE9,
5331 p_ATTRIBUTE10 => l_tar_SALES_LEAD_rec.ATTRIBUTE10,
5332 p_ATTRIBUTE11 => l_tar_SALES_LEAD_rec.ATTRIBUTE11,
5333 p_ATTRIBUTE12 => l_tar_SALES_LEAD_rec.ATTRIBUTE12,
5334 p_ATTRIBUTE13 => l_tar_SALES_LEAD_rec.ATTRIBUTE13,
5335 p_ATTRIBUTE14 => l_tar_SALES_LEAD_rec.ATTRIBUTE14,
5336 p_ATTRIBUTE15 => l_tar_SALES_LEAD_rec.ATTRIBUTE15,
5337 p_ASSIGN_TO_PERSON_ID => l_tar_SALES_LEAD_rec.ASSIGN_TO_PERSON_ID,
5338 p_ASSIGN_TO_SALESFORCE_ID =>
5339 l_tar_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID,
5340 p_ASSIGN_SALES_GROUP_ID => l_tar_SALES_LEAD_rec.ASSIGN_SALES_GROUP_ID,
5341 --p_ASSIGN_DATE => l_tar_SALES_LEAD_rec.ASSIGN_DATE,
5342 p_ASSIGN_DATE => l_tar_SALES_LEAD_rec.ASSIGN_DATE,--SYSDATE
5343 p_BUDGET_STATUS_CODE => l_tar_SALES_LEAD_rec.BUDGET_STATUS_CODE,
5344 p_ACCEPT_FLAG => NVL(l_tar_SALES_LEAD_rec.ACCEPT_FLAG, 'N'),
5345 p_VEHICLE_RESPONSE_CODE => l_tar_SALES_LEAD_rec.VEHICLE_RESPONSE_CODE,
5346 p_TOTAL_SCORE => l_tar_SALES_LEAD_rec.TOTAL_SCORE,
5347 p_SCORECARD_ID => l_tar_SALES_LEAD_rec.SCORECARD_ID,
5348 p_KEEP_FLAG => NVL(l_tar_SALES_LEAD_rec.KEEP_FLAG, 'N'),
5349 p_URGENT_FLAG => NVL(l_tar_SALES_LEAD_rec.URGENT_FLAG, 'N'),
5350 p_IMPORT_FLAG => NVL(l_tar_SALES_LEAD_rec.IMPORT_FLAG, 'N'),
5351 p_REJECT_REASON_CODE => l_tar_SALES_LEAD_rec.REJECT_REASON_CODE,
5352 p_DELETED_FLAG => NVL(l_tar_SALES_LEAD_rec.DELETED_FLAG, 'N'),
5353 p_OFFER_ID => p_SALES_LEAD_rec.OFFER_ID,
5354 --p_QUALIFIED_FLAG => p_SALES_LEAD_rec.QUALIFIED_FLAG,
5355 p_QUALIFIED_FLAG => l_qualified,
5356 p_ORIG_SYSTEM_CODE => p_SALES_LEAD_rec.ORIG_SYSTEM_CODE,
5357 -- p_SECURITY_GROUP_ID => p_SALES_LEAD_rec.SECURITY_GROUP_ID,
5358 p_INC_PARTNER_PARTY_ID => p_SALES_LEAD_rec.INCUMBENT_PARTNER_PARTY_ID,
5359 p_INC_PARTNER_RESOURCE_ID =>
5360 p_SALES_LEAD_rec.INCUMBENT_PARTNER_RESOURCE_ID,
5361 p_PRM_EXEC_SPONSOR_FLAG => p_SALES_LEAD_rec.PRM_EXEC_SPONSOR_FLAG,
5362 p_PRM_PRJ_LEAD_IN_PLACE_FLAG =>
5363 p_SALES_LEAD_rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
5364 p_PRM_SALES_LEAD_TYPE => p_SALES_LEAD_rec.PRM_SALES_LEAD_TYPE,
5365 p_PRM_IND_CLASSIFICATION_CODE =>
5366 p_SALES_LEAD_rec.PRM_IND_CLASSIFICATION_CODE,
5367 p_PRM_ASSIGNMENT_TYPE => p_SALES_LEAD_rec.PRM_ASSIGNMENT_TYPE,
5368 p_AUTO_ASSIGNMENT_TYPE => p_SALES_LEAD_rec.AUTO_ASSIGNMENT_TYPE,
5369 p_PRIMARY_CONTACT_PARTY_ID => p_SALES_LEAD_rec.PRIMARY_CONTACT_PARTY_ID,
5370 p_PRIMARY_CNT_PERSON_PARTY_ID => p_SALES_LEAD_rec.PRIMARY_CNT_PERSON_PARTY_ID,
5371 p_PRIMARY_CONTACT_PHONE_ID => p_SALES_LEAD_rec.PRIMARY_CONTACT_PHONE_ID,
5372
5373 -- new columns for CAPRI lead referral
5374 p_REFERRED_BY => p_SALES_LEAD_rec.REFERRED_BY,
5375 p_REFERRAL_TYPE => p_SALES_LEAD_rec.REFERRAL_TYPE,
5376 p_REFERRAL_STATUS => l_referral_status_profile,
5377 p_REF_DECLINE_REASON => p_SALES_LEAD_rec.REF_DECLINE_REASON,
5378 p_REF_COMM_LTR_STATUS => p_SALES_LEAD_rec.REF_COMM_LTR_STATUS,
5379 p_REF_ORDER_NUMBER => p_SALES_LEAD_rec.REF_ORDER_NUMBER,
5380 p_REF_ORDER_AMT => p_SALES_LEAD_rec.REF_ORDER_AMT,
5381 p_REF_COMM_AMT => p_SALES_LEAD_rec.REF_COMM_AMT,
5382
5383 p_LEAD_DATE => p_SALES_LEAD_rec.LEAD_DATE,
5384 p_SOURCE_SYSTEM => p_SALES_LEAD_rec.SOURCE_SYSTEM,
5385 p_COUNTRY => l_country_code,
5386
5387 p_TOTAL_AMOUNT => p_SALES_LEAD_rec.TOTAL_AMOUNT,
5388 p_EXPIRATION_DATE => l_exp_date, -- p_SALES_LEAD_rec.EXPIRATION_DATE,
5389 p_LEAD_RANK_IND => l_lead_rank_ind,
5390 p_LEAD_ENGINE_RUN_DATE => FND_API.G_MISS_DATE, --p_SALES_LEAD_rec.LEAD_ENGINE_RUN_DATE,
5391 p_CURRENT_REROUTES => p_SALES_LEAD_rec.CURRENT_REROUTES
5392
5393 -- new columns for appsperf CRMAP denorm project bug 2928041
5394
5395 ,p_STATUS_OPEN_FLAG => l_new_status_flag
5396 --FND_API.G_MISS_CHAR
5397 ,p_LEAD_RANK_SCORE => l_new_lead_rank_score
5398 --FND_API.G_MISS_NUM
5399
5400 -- ckapoor 11.5.10 New columns
5401
5402 , p_MARKETING_SCORE => l_tar_SALES_LEAD_rec.MARKETING_SCORE
5403 , p_INTERACTION_SCORE => l_tar_SALES_LEAD_rec.INTERACTION_SCORE
5404 , p_SOURCE_PRIMARY_REFERENCE => l_tar_SALES_LEAD_rec.SOURCE_PRIMARY_REFERENCE
5405 , p_SOURCE_SECONDARY_REFERENCE => l_tar_SALES_LEAD_rec.SOURCE_SECONDARY_REFERENCE
5406 , p_SALES_METHODOLOGY_ID => l_tar_SALES_LEAD_rec.SALES_METHODOLOGY_ID
5407 , p_SALES_STAGE_ID => l_tar_SALES_LEAD_rec.SALES_STAGE_ID
5408
5409
5410
5411
5412 );
5413
5414 /*
5415 -- Workflow will call update_sales_lead, if we kick-off workflow within
5416 -- update_sales_lead, it will cause infinite recursive calls
5417
5418 -- Kick off Lead Assignment Workflow
5419 CALL_WF_TO_ASSIGN (
5420 P_Api_Version_Number => 2.0,
5421 P_Init_Msg_List => FND_API.G_FALSE,
5422 P_Sales_Lead_Id => l_tar_SALES_LEAD_rec.SALES_LEAD_ID,
5423 P_assigned_resource_id => l_tar_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID,
5424 X_Return_Status => l_Return_Status,
5425 X_Msg_Count => l_Msg_Count,
5426 X_Msg_Data => l_Msg_Data
5427 );
5428
5429 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5430 IF (AS_DEBUG_ERROR_ON) THEN
5431
5432 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5433 'AS_LEAD_ASSIGN_FAIL');
5434 END IF;
5435 RAISE FND_API.G_EXC_ERROR;
5436 END IF;
5437 */
5438
5439
5440
5441
5442
5443
5444 /* IF ((l_tar_sales_lead_rec.status_code<> FND_API.G_MISS_CHAR) AND (l_tar_sales_lead_rec.status_code <> l_old_status_code)) OR
5445 ((l_tar_sales_lead_rec.assign_to_salesforce_id <> FND_API.G_MISS_NUM) AND (l_tar_sales_lead_rec.assign_to_salesforce_id <> l_assign_to_salesforce_id)) OR
5446 ((l_tar_sales_lead_rec.assign_sales_group_id <> FND_API.G_MISS_NUM) AND (l_tar_sales_lead_rec.assign_sales_group_id <> l_assign_sales_group_id)) OR
5447 ((l_tar_sales_lead_rec.assign_to_person_id <> FND_API.G_MISS_NUM) AND (l_tar_sales_lead_rec.assign_to_person_id <> l_assign_to_person_id)) OR
5448 ((l_tar_sales_lead_rec.lead_rank_id <> FND_API.G_MISS_NUM) AND (l_tar_sales_lead_rec.lead_rank_id <> l_lead_rank_id)) OR
5449 ((l_tar_sales_lead_rec.qualified_flag <> FND_API.G_MISS_CHAR) AND (l_tar_sales_lead_rec.qualified_flag <> l_qualified_flag))
5450 */
5451
5452 IF (AS_DEBUG_LOW_ON) THEN
5453
5454
5455
5456 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5457 'Just after AS_SALES_LEADS_PKG.Sales_Lead_Update_Row');
5458
5459 END IF;
5460
5461
5462 l_log_status_code := l_tar_sales_lead_rec.status_code;
5463 l_log_assign_to_sf_id := l_tar_sales_lead_rec.assign_to_salesforce_id;
5464 l_log_assign_sg_id := l_tar_sales_lead_rec.assign_sales_group_id;
5465 l_log_assign_to_person_id := l_tar_sales_lead_rec.assign_to_person_id;
5466 l_log_lead_rank_id := l_tar_sales_lead_rec.lead_rank_id;
5467 l_log_reject_reason_code := l_tar_sales_lead_rec.reject_reason_code;
5468 l_log_qualified := l_qualified;
5469
5470
5471
5472 /*IF (
5473 (
5474 (l_tar_sales_lead_rec.status_code <> FND_API.G_MISS_CHAR)
5475 OR (l_tar_sales_lead_rec.assign_to_salesforce_id <> FND_API.G_MISS_NUM)
5476 OR (l_tar_sales_lead_rec.assign_sales_group_id <> FND_API.G_MISS_NUM)
5477 OR (l_tar_sales_lead_rec.assign_to_person_id <> FND_API.G_MISS_NUM)
5478 OR (l_tar_sales_lead_rec.lead_rank_id <> FND_API.G_MISS_NUM)
5479 OR (l_tar_sales_lead_rec.qualified_flag <> FND_API.G_MISS_CHAR)
5480 OR (l_tar_sales_lead_rec.reject_reason_code <> FND_API.G_MISS_CHAR)
5481 )
5482 AND
5483 (
5484 (l_tar_sales_lead_rec.status_code <> l_old_status_code)
5485 OR (l_tar_sales_lead_rec.assign_to_salesforce_id <> l_assign_to_salesforce_id)
5486 OR (l_tar_sales_lead_rec.assign_sales_group_id <> l_assign_sales_group_id)
5487 OR (l_tar_sales_lead_rec.assign_to_person_id <> l_assign_to_person_id)
5488 OR (l_tar_sales_lead_rec.lead_rank_id <> l_lead_rank_id)
5489 OR (l_tar_sales_lead_rec.qualified_flag <> l_qualified_flag)
5490 OR (l_tar_sales_lead_rec.reject_reason_code <> l_reject_reason_code)
5491 )
5492 )
5493
5494 THEN */
5495
5496 IF
5497 (
5498 ( (l_tar_sales_lead_rec.status_code = l_old_status_code)
5499 or (l_tar_sales_lead_rec.status_code is null and l_old_status_code is null)
5500 or (l_tar_sales_lead_rec.status_code = FND_API.G_MISS_CHAR) )
5501 AND ( (l_tar_sales_lead_rec.assign_to_salesforce_id = l_assign_to_salesforce_id)
5502 or (l_tar_sales_lead_rec.assign_to_salesforce_id is null and l_assign_to_salesforce_id is null)
5503 or (l_tar_sales_lead_rec.assign_to_salesforce_id = FND_API.G_MISS_NUM) )
5504 AND ( (l_tar_sales_lead_rec.assign_sales_group_id = l_assign_sales_group_id)
5505 or (l_tar_sales_lead_rec.assign_sales_group_id is null and l_assign_sales_group_id is null)
5506 or (l_tar_sales_lead_rec.assign_sales_group_id = FND_API.G_MISS_NUM))
5507 AND ( (l_tar_sales_lead_rec.assign_to_person_id = l_assign_to_person_id)
5508 or (l_tar_sales_lead_rec.assign_to_person_id is null and l_assign_to_person_id is null)
5509 or (l_tar_sales_lead_rec.assign_to_person_id = FND_API.G_MISS_NUM))
5510 AND ( (l_tar_sales_lead_rec.lead_rank_id = l_lead_rank_id)
5511 or ( l_tar_sales_lead_rec.lead_rank_id is null and l_lead_rank_id is null)
5512 or (l_tar_sales_lead_rec.lead_rank_id = FND_API.G_MISS_NUM))
5513 AND ( (l_tar_sales_lead_rec.qualified_flag = l_qualified_flag)
5514 or (l_tar_sales_lead_rec.qualified_flag is null and l_qualified_flag is null )
5515 or (l_tar_sales_lead_rec.qualified_flag = FND_API.G_MISS_CHAR))
5516
5517 AND ( (l_tar_sales_lead_rec.reject_reason_code = l_reject_reason_code)
5518 or (l_tar_sales_lead_rec.reject_reason_code is null and l_reject_reason_code is null)
5519 or (l_tar_sales_lead_rec.reject_reason_code = FND_API.G_MISS_CHAR))
5520 )
5521
5522 THEN
5523 IF (AS_DEBUG_LOW_ON) THEN
5524
5525 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5526 'Nothing to log ');
5527 END IF;
5528
5529 ELSE
5530 IF (AS_DEBUG_LOW_ON) THEN
5531
5532 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5533 'Just after AS_SALES_LEADS_PKG.Sales_Lead_Update_Row');
5534 END IF;
5535
5536
5537 if (l_tar_sales_lead_rec.status_code = FND_API.G_MISS_CHAR) then
5538 l_log_status_code := l_old_status_code;
5539 end if;
5540
5541
5542 --IF (AS_DEBUG_LOW_ON) THENAS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5543 -- 'marker 1');END IF;
5544
5545 if (l_tar_sales_lead_rec.assign_to_salesforce_id = FND_API.G_MISS_NUM) then
5546 l_log_assign_to_sf_id := l_assign_to_salesforce_id;
5547 end if;
5548
5549 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5550 -- 'marker 2'); END IF;
5551
5552 if (l_tar_sales_lead_rec.assign_sales_group_id = FND_API.G_MISS_NUM) then
5553 l_log_assign_sg_id := l_assign_sales_group_id;
5554 end if;
5555
5556 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5557 -- 'marker 3'); END IF;
5558
5559 if (l_tar_sales_lead_rec.assign_to_person_id = FND_API.G_MISS_NUM) then
5560 l_log_assign_to_person_id := l_assign_to_person_id;
5561 end if;
5562 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5563 -- 'marker 4'); END IF;
5564
5565
5566 if (l_tar_sales_lead_rec.lead_rank_id = FND_API.G_MISS_NUM) then
5567 l_log_lead_rank_id := l_lead_rank_id;
5568 end if;
5569
5570 -- IF (AS_DEBUG_LOW_ON) THEN AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5571 -- 'marker 5'); END IF;
5572
5573 if (l_tar_sales_lead_rec.reject_reason_code = FND_API.G_MISS_CHAR) then
5574 l_log_reject_reason_code := l_reject_reason_code;
5575 end if;
5576
5577 if (l_qualified = FND_API.G_MISS_CHAR) then
5578 l_log_qualified := l_qualified_flag;
5579 end if;
5580
5581
5582 -- Debug Message
5583 IF (AS_DEBUG_LOW_ON) THEN
5584
5585 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5586 'Calling AS_SALES_LEADS_LOG_PKG.Insert_Row');
5587 END IF;
5588
5589 -- Call API to create log entry
5590 AS_SALES_LEADS_LOG_PKG.Insert_Row(
5591 px_log_id => l_sales_lead_log_id ,
5592 p_sales_lead_id => l_tar_sales_lead_rec.sales_lead_id,
5593 p_created_by => fnd_global.user_id,
5594 p_creation_date => sysdate,
5595 p_last_updated_by => fnd_global.user_id,
5596 p_last_update_date => sysdate,
5597 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
5598 -- using standard parameters for program who columns
5599 p_request_id => FND_GLOBAL.Conc_Request_Id,
5600 p_program_application_id => FND_GLOBAL.Prog_Appl_Id,
5601 p_program_id => FND_GLOBAL.Conc_Program_Id,
5602 p_program_update_date => sysdate,
5603 p_status_code =>
5604 --l_tar_sales_lead_rec.status_code,
5605 l_log_status_code,
5606 p_assign_to_person_id =>
5607 --l_tar_sales_lead_rec.assign_to_person_id,
5608 l_log_assign_to_person_id,
5609 p_assign_to_salesforce_id =>
5610 --l_tar_sales_lead_rec.assign_to_salesforce_id,
5611 l_log_assign_to_sf_id,
5612 p_reject_reason_code =>
5613 --l_tar_sales_lead_rec.reject_reason_code,
5614 l_log_reject_reason_code,
5615 p_assign_sales_group_id =>
5616 --l_tar_sales_lead_rec.assign_sales_group_id,
5617 l_log_assign_sg_id,
5618 p_lead_rank_id =>
5619 --l_tar_sales_lead_rec.lead_rank_id,
5620 l_log_lead_rank_id,
5621 p_qualified_flag => l_log_qualified,
5622 p_category => fnd_api.g_miss_char,
5623 p_manual_rank_flag => l_manual_rank_flag
5624
5625 );
5626
5627 /* ELSE
5628
5629 -- Debug Message
5630 IF (AS_DEBUG_LOW_ON) THEN
5631
5632 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5633 'Not Calling AS_SALES_LEADS_LOG_PKG.Insert_Row');
5634 END IF;
5635
5636 */
5637 END IF;
5638
5639
5640
5641 -- For referral leads, create another entry in the logs table so that it is tracked as a referral lead also
5642 -- This is to be done only for the first time, the referral type is updated from null to non null.
5643
5644 if ( l_tar_SALES_LEAD_rec.REFERRAL_TYPE is not null and l_tar_sales_lead_rec.REFERRAL_TYPE <> FND_API.G_MISS_CHAR
5645 and l_referral_type is null )
5646
5647 then
5648
5649 l_sales_lead_log_id := null;
5650
5651 AS_SALES_LEADS_LOG_PKG.Insert_Row(
5652 px_log_id => l_sales_lead_log_id ,
5653 p_sales_lead_id => l_tar_sales_lead_rec.sales_lead_id,
5654 p_created_by => fnd_global.user_id,
5655 p_creation_date => sysdate,
5656 p_last_updated_by => fnd_global.user_id,
5657 p_last_update_date => sysdate,
5658 p_last_update_login => FND_GLOBAL.CONC_LOGIN_ID,
5659 -- using standard parameters for program who columns
5660 p_request_id => FND_GLOBAL.Conc_Request_Id,
5661 p_program_application_id => FND_GLOBAL.Prog_Appl_Id,
5662 p_program_id => FND_GLOBAL.Conc_Program_Id,
5663 p_program_update_date => sysdate,
5664 p_status_code => l_referral_status_profile, -- for referral log, we use referral status
5665 p_assign_to_person_id =>
5666 --l_tar_sales_lead_rec.assign_to_person_id,
5667 l_log_assign_to_person_id,
5668
5669 p_assign_to_salesforce_id=>
5670 --l_tar_sales_lead_rec.assign_to_salesforce_id,
5671 l_log_assign_to_sf_id,
5672 p_reject_reason_code =>
5673 --l_tar_sales_lead_rec.reject_reason_code,
5674 l_log_reject_reason_code,
5675
5676 p_assign_sales_group_id =>
5677 --l_tar_sales_lead_rec.assign_sales_group_id,
5678 l_log_assign_sg_id,
5679
5680 p_lead_rank_id =>
5681 --l_tar_sales_lead_rec.lead_rank_id,
5682 l_log_lead_rank_id,
5683 p_qualified_flag => l_log_qualified,
5684 p_category => 'REFERRAL'
5685 );
5686
5687
5688 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5689 RAISE FND_API.G_EXC_ERROR;
5690 END IF;
5691
5692 end if;
5693
5694
5695
5696
5697
5698 IF (AS_DEBUG_LOW_ON) THEN
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5711 'x_return_status: '|| x_return_status);
5712
5713
5714
5715
5716
5717 END IF;
5718
5719 IF (AS_DEBUG_LOW_ON) THEN
5720
5721
5722
5723 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5724 'l_assign_sf_id:' ||l_assign_to_salesforce_id);
5725
5726 END IF;
5727 IF (AS_DEBUG_LOW_ON) THEN
5728
5729 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5730 'l_tar.assign_sf_id:' || l_tar_SALES_LEAD_rec.assign_to_salesforce_id);
5731 END IF;
5732
5733 -- Call Create, Update or Delete Sales Team
5734 IF l_assign_to_salesforce_id IS NULL AND
5735 l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NOT NULL AND
5736 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <> FND_API.G_MISS_NUM
5737 THEN
5738 -- Create access security in as_accesses_all
5739 -- l_Sales_Team_Rec.access_id := FND_API.G_MISS_NUM;
5740 l_Sales_Team_Rec.last_update_date := SYSDATE;
5741 l_Sales_Team_Rec.last_updated_by := FND_GLOBAL.USER_ID;
5742 l_Sales_Team_Rec.creation_date := SYSDATE;
5743 l_Sales_Team_Rec.created_by := FND_GLOBAL.USER_ID;
5744 l_Sales_Team_Rec.last_update_login := FND_GLOBAL.CONC_LOGIN_ID;
5745
5746 -- l_Sales_Team_Rec.team_leader_flag := FND_API.G_MISS_CHAR;
5747 l_Sales_Team_Rec.customer_id := l_tar_SALES_LEAD_rec.Customer_Id;
5748 l_Sales_Team_Rec.address_id := l_tar_SALES_LEAD_rec.Address_Id;
5749 l_Sales_Team_Rec.salesforce_id :=
5750 l_tar_SALES_LEAD_rec.ASSIGN_TO_SALESFORCE_ID;
5751 l_Sales_Team_Rec.person_id :=
5752 l_tar_SALES_LEAD_rec.ASSIGN_TO_PERSON_ID;
5753 l_Sales_Team_Rec.sales_group_id :=
5754 l_tar_SALES_LEAD_rec.ASSIGN_SALES_GROUP_ID;
5755 l_Sales_Team_Rec.sales_lead_id :=
5756 l_tar_SALES_LEAD_rec.Sales_Lead_Id;
5757
5758 l_Sales_Team_Rec.owner_flag := 'Y';
5759 l_Sales_Team_Rec.freeze_flag := 'Y';
5760
5761
5762 l_Sales_Team_Rec.team_leader_flag := 'Y';
5763
5764 -- Change since update_sales_lead is not called from workflow any longer.
5765 --IF (P_Calling_From_WF_flag = 'Y')
5766 --THEN
5767 -- l_Sales_Team_Rec.created_by_TAP_flag := 'Y';
5768 --ELSE
5769
5770 l_Sales_Team_Rec.created_by_TAP_flag := 'N';
5771
5772 --END IF;
5773
5774
5775 -- Debug Message
5776 IF (AS_DEBUG_LOW_ON) THEN
5777
5778 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5779 'Calling Create_SalesTeam');
5780 END IF;
5781
5782 AS_ACCESS_PUB.Create_SalesTeam (
5783 p_api_version_number => 2.0
5784 ,p_init_msg_list => FND_API.G_FALSE
5785 ,p_commit => FND_API.G_FALSE
5786 ,p_validation_level => p_Validation_Level
5787 ,p_access_profile_rec => l_access_profile_rec
5788 ,p_check_access_flag => P_Check_Access_flag
5789 ,p_admin_flag => P_Admin_Flag
5790 ,p_admin_group_id => P_Admin_Group_Id
5791 ,p_identity_salesforce_id => P_Identity_Salesforce_Id
5792 ,p_sales_team_rec => l_Sales_Team_Rec
5793 ,X_Return_Status => x_Return_Status
5794 ,X_Msg_Count => X_Msg_Count
5795 ,X_Msg_Data => X_Msg_Data
5796 ,x_access_id => l_Access_Id
5797 );
5798
5799 -- Debug Message
5800 IF (AS_DEBUG_LOW_ON) THEN
5801
5802 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5803 'Create_SalesTeam:x_access_id > ' ||
5804 l_access_id);
5805 END IF;
5806
5807 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5808 RAISE FND_API.G_EXC_ERROR;
5809 END IF;
5810
5811 ELSIF l_assign_to_salesforce_id IS NOT NULL -- AND
5812 -- l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NOT NULL AND
5813 -- l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5814 -- FND_API.G_MISS_NUM AND
5815 -- l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
5816 -- l_assign_to_salesforce_id
5817 THEN
5818 -- Get access record in as_accesses_all by sales_lead_id
5819
5820 -- if the assign to is being cleared, then the cursor will not work if use null
5821 -- use the old assign to (database value) instead.
5822
5823 IF (l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NOT NULL and l_tar_SALES_LEAD_rec.assign_to_salesforce_id <> FND_API.G_MISS_NUM) THEN
5824
5825 OPEN C_Get_Access (l_tar_SALES_LEAD_rec.Sales_Lead_Id, l_tar_SALES_LEAD_rec.assign_to_salesforce_id, l_tar_SALES_LEAD_rec.assign_sales_group_id);
5826
5827 ELSE
5828
5829 OPEN C_Get_Access (l_tar_SALES_LEAD_rec.Sales_Lead_Id, l_assign_to_salesforce_id, l_assign_sales_group_id);
5830
5831 END IF;
5832
5833 FETCH C_Get_Access Into
5834 l_Sales_Team_Rec.access_id
5835 ,l_Sales_Team_Rec.last_update_date
5836 ,l_Sales_Team_Rec.last_updated_by
5837 ,l_Sales_Team_Rec.creation_date
5838 ,l_Sales_Team_Rec.created_by
5839 ,l_Sales_Team_Rec.last_update_login
5840 ,l_Sales_Team_Rec.freeze_flag
5841 ,l_Sales_Team_Rec.reassign_flag
5842 ,l_Sales_Team_Rec.team_leader_flag
5843 ,l_Sales_Team_Rec.customer_id
5844 ,l_Sales_Team_Rec.address_id
5845 ,l_Sales_Team_Rec.salesforce_id
5846 ,l_Sales_Team_Rec.person_id
5847 ,l_Sales_Team_Rec.partner_customer_id
5848 ,l_Sales_Team_Rec.partner_address_id
5849 ,l_Sales_Team_Rec.created_person_id
5850 ,l_Sales_Team_Rec.lead_id
5851 ,l_Sales_Team_Rec.freeze_date
5852 ,l_Sales_Team_Rec.reassign_reason
5853 ,l_Sales_Team_Rec.downloadable_flag
5854 ,l_Sales_Team_Rec.attribute_category
5855 ,l_Sales_Team_Rec.attribute1
5856 ,l_Sales_Team_Rec.attribute2
5857 ,l_Sales_Team_Rec.attribute3
5858 ,l_Sales_Team_Rec.attribute4
5859 ,l_Sales_Team_Rec.attribute5
5860 ,l_Sales_Team_Rec.attribute6
5861 ,l_Sales_Team_Rec.attribute7
5862 ,l_Sales_Team_Rec.attribute8
5863 ,l_Sales_Team_Rec.attribute9
5864 ,l_Sales_Team_Rec.attribute10
5865 ,l_Sales_Team_Rec.attribute11
5866 ,l_Sales_Team_Rec.attribute12
5867 ,l_Sales_Team_Rec.attribute13
5868 ,l_Sales_Team_Rec.attribute14
5869 ,l_Sales_Team_Rec.attribute15
5870 ,l_Sales_Team_Rec.salesforce_role_code
5871 ,l_Sales_Team_Rec.salesforce_relationship_code
5872 ,l_Sales_Team_Rec.sales_group_id
5873 -- ,l_Sales_Team_Rec.reassign_requested_person_id
5874 -- ,l_Sales_Team_Rec.reassign_request_date
5875 -- ,l_Sales_Team_Rec.internal_update_access
5876 ,l_Sales_Team_Rec.sales_lead_id;
5877
5878 CLOSE C_Get_Access;
5879
5880
5881 -- ckapoor 11.5.10 - bug 3225643 - change keep flag for logged in user not the owner
5882
5883 if (l_tar_SALES_LEAD_rec.accept_flag = 'Y' and l_accept_flag = 'N') then
5884 -- earlier we were changing the owner's keep flag .now for bug 3225643 , we have to change
5885 -- keep flag for logged in user
5886 -- l_Sales_Team_Rec.freeze_flag := 'Y';
5887
5888 -- first determine if the logged in user is already present in the sales team or not
5889
5890
5891 IF (AS_DEBUG_LOW_ON) THEN
5892
5893 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5894 'CK:bef grp');
5895 END IF;
5896
5897
5898 Open c_get_group_id (p_identity_salesforce_id, 'RS_GROUP_MEMBER' , 'SALES','TELESALES','FIELDSALES','PRM','Y');
5899 Fetch c_get_group_id into l_login_user_sg_id;
5900 Close c_get_group_id;
5901
5902 IF (AS_DEBUG_LOW_ON) THEN
5903
5904 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5905 'CK:usgid:'||l_login_user_sg_id);
5906 END IF;
5907
5908
5909
5910 Open c_get_person_id(p_identity_salesforce_id);
5911 Fetch c_get_person_id into l_login_user_person_id;
5912 Close c_get_person_id;
5913
5914
5915 IF (AS_DEBUG_LOW_ON) THEN
5916
5917 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5918 'CK:uspid:'||l_login_user_person_id);
5919 END IF;
5920
5921
5922
5923 OPEN C_Get_Access (l_tar_SALES_LEAD_rec.Sales_Lead_Id, p_identity_salesforce_id, l_login_user_sg_id);
5924
5925 FETCH C_Get_Access Into
5926 l_login_salesteam_rec.access_id
5927 ,l_login_salesteam_rec.last_update_date
5928 ,l_login_salesteam_rec.last_updated_by
5929 ,l_login_salesteam_rec.creation_date
5930 ,l_login_salesteam_rec.created_by
5931 ,l_login_salesteam_rec.last_update_login
5932 ,l_login_salesteam_rec.freeze_flag
5933 ,l_login_salesteam_rec.reassign_flag
5934 ,l_login_salesteam_rec.team_leader_flag
5935 ,l_login_salesteam_rec.customer_id
5936 ,l_login_salesteam_rec.address_id
5937 ,l_login_salesteam_rec.salesforce_id
5938 ,l_login_salesteam_rec.person_id
5939 ,l_login_salesteam_rec.partner_customer_id
5940 ,l_login_salesteam_rec.partner_address_id
5941 ,l_login_salesteam_rec.created_person_id
5942 ,l_login_salesteam_rec.lead_id
5943 ,l_login_salesteam_rec.freeze_date
5944 ,l_login_salesteam_rec.reassign_reason
5945 ,l_login_salesteam_rec.downloadable_flag
5946 ,l_login_salesteam_rec.attribute_category
5947 ,l_login_salesteam_rec.attribute1
5948 ,l_login_salesteam_rec.attribute2
5949 ,l_login_salesteam_rec.attribute3
5950 ,l_login_salesteam_rec.attribute4
5951 ,l_login_salesteam_rec.attribute5
5952 ,l_login_salesteam_rec.attribute6
5953 ,l_login_salesteam_rec.attribute7
5954 ,l_login_salesteam_rec.attribute8
5955 ,l_login_salesteam_rec.attribute9
5956 ,l_login_salesteam_rec.attribute10
5957 ,l_login_salesteam_rec.attribute11
5958 ,l_login_salesteam_rec.attribute12
5959 ,l_login_salesteam_rec.attribute13
5960 ,l_login_salesteam_rec.attribute14
5961 ,l_login_salesteam_rec.attribute15
5962 ,l_login_salesteam_rec.salesforce_role_code
5963 ,l_login_salesteam_rec.salesforce_relationship_code
5964 ,l_login_salesteam_rec.sales_group_id
5965 -- ,l_Sales_Team_Rec.reassign_requested_person_id
5966 -- ,l_Sales_Team_Rec.reassign_request_date
5967 -- ,l_Sales_Team_Rec.internal_update_access
5968 ,l_login_salesteam_rec.sales_lead_id;
5969
5970 CLOSE C_Get_Access;
5971
5972
5973
5974 -- now check if the logged in user is already in the salesteam or not.
5975 -- If already there, call update_sales_team otherwise call create_sales_team
5976
5977 --l_login_salesteam_rec.last_update_date := SYSDATE;
5978 l_login_salesteam_rec.last_updated_by := FND_GLOBAL.USER_ID;
5979 --l_login_salesteam_rec.creation_date := SYSDATE;
5980 --l_login_salesteam_rec.created_by := FND_GLOBAL.USER_ID;
5981 l_login_salesteam_rec.last_update_login := FND_GLOBAL.CONC_LOGIN_ID;
5982
5983 -- l_Sales_Team_Rec.team_leader_flag := FND_API.G_MISS_CHAR;
5984 l_login_salesteam_rec.salesforce_id :=
5985 p_identity_salesforce_id;
5986
5987 l_login_salesteam_rec.sales_group_id :=
5988 l_login_user_sg_id;
5989
5990 l_login_salesteam_rec.sales_lead_id :=
5991 l_tar_SALES_LEAD_rec.Sales_Lead_Id;
5992
5993 l_login_salesteam_rec.person_id := l_login_user_person_id;
5994
5995
5996 --l_login_salesteam_rec.owner_flag := 'Y';
5997
5998 -- THIS IS THE IMPORTANT STEP OF MAKING SURE THAT THE LOGIN USER IS FROZEN
5999
6000 l_login_salesteam_rec.freeze_flag := 'Y';
6001
6002 --l_login_salesteam_rec.team_leader_flag := 'Y';
6003 --l_login_salesteam_rec.created_by_TAP_flag := 'N';
6004
6005
6006 l_login_user_in_st := 'N';
6007 Open c_check_salesteam(l_Sales_Team_Rec.sales_lead_id, p_identity_salesforce_id , l_login_user_sg_id);
6008 Fetch c_check_salesteam into l_login_user_in_st;
6009 Close c_check_salesteam;
6010
6011 IF (l_login_user_in_st = 'Y' ) THEN
6012
6013 -- Debug Message
6014 IF (AS_DEBUG_LOW_ON) THEN
6015
6016 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6017 'CK:Calling Update_SalesTeam');
6018 END IF;
6019
6020 AS_ACCESS_PUB.Update_SalesTeam (
6021 p_api_version_number => 2.0
6022 ,p_init_msg_list => FND_API.G_FALSE
6023 ,p_commit => FND_API.G_FALSE
6024 ,p_validation_level => P_Validation_Level
6025 ,p_check_access_flag => p_check_access_flag -- 'Y'
6026 ,p_access_profile_rec => l_access_profile_rec
6027 ,p_admin_flag => p_admin_flag
6028 ,p_admin_group_id => p_admin_group_id
6029 ,p_identity_salesforce_id => p_identity_salesforce_id
6030 ,p_sales_team_rec => l_login_salesteam_rec
6031 ,X_Return_Status => x_Return_Status
6032 ,X_Msg_Count => X_Msg_Count
6033 ,X_Msg_Data => X_Msg_Data
6034 ,x_access_id => l_login_Access_Id
6035 );
6036 ELSE
6037
6038
6039 -- Debug Message
6040 IF (AS_DEBUG_LOW_ON) THEN
6041
6042 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6043 'CK:Calling Create_SalesTeam');
6044 END IF;
6045
6046 l_login_salesteam_rec.last_update_date := SYSDATE;
6047 l_login_salesteam_rec.creation_date := SYSDATE;
6048 l_login_salesteam_rec.created_by := FND_GLOBAL.USER_ID;
6049 l_login_salesteam_rec.created_by_TAP_flag := 'N';
6050 l_login_salesteam_rec.customer_id := l_customer_id ; --l_tar_SALES_LEAD_rec.Customer_Id;
6051 l_login_salesteam_rec.address_id := l_tar_SALES_LEAD_rec.Address_Id;
6052 l_login_salesteam_rec.person_id := l_login_user_person_id;
6053
6054
6055 AS_ACCESS_PUB.Create_SalesTeam (
6056 p_api_version_number => 2.0
6057 ,p_init_msg_list => FND_API.G_FALSE
6058 ,p_commit => FND_API.G_FALSE
6059 ,p_validation_level => p_Validation_Level
6060 ,p_access_profile_rec => l_access_profile_rec
6061 ,p_check_access_flag => P_Check_Access_flag
6062 ,p_admin_flag => P_Admin_Flag
6063 ,p_admin_group_id => P_Admin_Group_Id
6064 ,p_identity_salesforce_id => P_Identity_Salesforce_Id
6065 ,p_sales_team_rec => l_login_salesteam_rec
6066 ,X_Return_Status => x_Return_Status
6067 ,X_Msg_Count => X_Msg_Count
6068 ,X_Msg_Data => X_Msg_Data
6069 ,x_access_id => l_login_Access_Id
6070 );
6071
6072 -- Debug Message
6073 IF (AS_DEBUG_LOW_ON) THEN
6074
6075 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6076 'CK:Create_SalesTeam:x_access_id > ' ||
6077 l_login_Access_Id);
6078 END IF;
6079 END IF;
6080
6081
6082
6083
6084 end if;
6085
6086 -- END ckapoor 11.5.10 - bug 3225643 - change keep flag for logged in user not the owner
6087
6088
6089 -- ffang 012501, if blank out the assign_to_salesforce_id, access
6090 -- record should be deleted
6091 IF l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NULL or
6092 l_tar_SALES_LEAD_rec.assign_to_salesforce_id = FND_API.G_MISS_NUM
6093 THEN
6094 -- Call update_salesteam to update the owner
6095
6096 l_Sales_Team_Rec.last_updated_by := FND_GLOBAL.USER_ID;
6097 l_Sales_Team_Rec.last_update_login := FND_GLOBAL.CONC_LOGIN_ID;
6098 --l_Sales_Team_Rec.last_update_date := SYSDATE;
6099 -- l_Sales_Team_Rec.team_leader_flag := FND_API.G_MISS_CHAR;
6100 l_Sales_Team_Rec.customer_id := l_Customer_Id;
6101 l_Sales_Team_Rec.address_id := l_tar_SALES_LEAD_rec.Address_Id;
6102 -- only need to update the owner flag for the existing entry (owner)
6103 l_Sales_Team_Rec.salesforce_id :=
6104 l_assign_to_salesforce_id;
6105 l_Sales_Team_Rec.sales_group_id :=
6106 l_assign_sales_group_id;
6107 l_Sales_Team_Rec.sales_lead_id :=
6108 l_tar_SALES_LEAD_rec.SALES_LEAD_ID;
6109 l_Sales_Team_Rec.owner_flag := 'N';
6110 -- l_Sales_Team_Rec.created_by_TAP_flag := 'N';
6111
6112 IF (AS_DEBUG_LOW_ON) THEN
6113
6114
6115
6116 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6117 'Access id is'|| l_sales_team_rec.access_id);
6118
6119 END IF;
6120
6121
6122 -- Debug Message
6123 IF (AS_DEBUG_LOW_ON) THEN
6124
6125 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6126 'Calling Update_SalesTeam');
6127 END IF;
6128
6129 AS_ACCESS_PUB.Update_SalesTeam (
6130 p_api_version_number => 2.0
6131 ,p_init_msg_list => FND_API.G_FALSE
6132 ,p_commit => FND_API.G_FALSE
6133 ,p_validation_level => P_Validation_Level
6134 ,p_check_access_flag => p_check_access_flag -- 'Y'
6135 ,p_access_profile_rec => l_access_profile_rec
6136 ,p_admin_flag => p_admin_flag
6137 ,p_admin_group_id => p_admin_group_id
6138 ,p_identity_salesforce_id => p_identity_salesforce_id
6139 ,p_sales_team_rec => l_Sales_Team_Rec
6140 ,X_Return_Status => x_Return_Status
6141 ,X_Msg_Count => X_Msg_Count
6142 ,X_Msg_Data => X_Msg_Data
6143 ,x_access_id => l_Access_Id
6144 );
6145
6146
6147 -- Call Delete_SalesTeam to delete access record
6148 /* AS_ACCESS_PUB.Delete_SalesTeam(
6149 p_api_version_number => 2.0,
6150 p_init_msg_list => FND_API.G_FALSE,
6151 p_commit => FND_API.G_FALSE,
6152 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
6153 p_access_profile_rec => l_access_profile_rec,
6154 p_check_access_flag => 'Y',
6155 p_admin_flag => p_admin_flag,
6156 p_admin_group_id => p_admin_group_id,
6157 p_identity_salesforce_id => p_identity_salesforce_id,
6158 p_sales_team_rec => l_sales_team_rec,
6159 x_return_status => x_return_status,
6160 x_msg_count => x_msg_count,
6161 x_msg_data => x_msg_data
6162 ); */
6163
6164 IF (AS_DEBUG_LOW_ON) THEN
6165
6166
6167
6168 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6169 'Delete_SalesTeam:x_access_id > ' || l_access_id);
6170
6171 END IF;
6172
6173 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6174 RAISE FND_API.G_EXC_ERROR;
6175 END IF;
6176
6177 ELSIF l_tar_SALES_LEAD_rec.assign_to_salesforce_id IS NOT NULL AND
6178 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
6179 FND_API.G_MISS_NUM AND
6180 l_tar_SALES_LEAD_rec.assign_to_salesforce_id <>
6181 l_assign_to_salesforce_id
6182 THEN
6183
6184 l_Sales_Team_Rec.last_updated_by := FND_GLOBAL.USER_ID;
6185 l_Sales_Team_Rec.last_update_login := FND_GLOBAL.CONC_LOGIN_ID;
6186 --l_Sales_Team_Rec.last_update_date := SYSDATE;
6187 -- l_Sales_Team_Rec.team_leader_flag := FND_API.G_MISS_CHAR;
6188 l_Sales_Team_Rec.customer_id := l_Customer_Id;
6189 l_Sales_Team_Rec.address_id := l_tar_SALES_LEAD_rec.Address_Id;
6190
6191 -- only need to update the owner flag for the existing entry (owner)
6192
6193 l_Sales_Team_Rec.salesforce_id :=
6194 l_assign_to_salesforce_id;
6195
6196 l_Sales_Team_Rec.sales_group_id :=
6197 l_assign_sales_group_id;
6198
6199 l_Sales_Team_Rec.sales_lead_id :=
6200 l_tar_SALES_LEAD_rec.SALES_LEAD_ID;
6201
6202 /*AS_ACCESS_PUB.Update_SalesTeam (
6203 p_api_version_number => 2.0
6204 ,p_init_msg_list => FND_API.G_FALSE
6205 ,p_commit => FND_API.G_FALSE
6206 ,p_validation_level => P_Validation_Level
6207 ,p_check_access_flag => p_check_access_flag -- 'Y'
6208 ,p_access_profile_rec => l_access_profile_rec
6209 ,p_admin_flag => p_admin_flag
6210 ,p_admin_group_id => p_admin_group_id
6211 ,p_identity_salesforce_id => p_identity_salesforce_id
6212 ,p_sales_team_rec => l_Sales_Team_Rec
6213 ,X_Return_Status => x_Return_Status
6214 ,X_Msg_Count => X_Msg_Count
6215 ,X_Msg_Data => X_Msg_Data
6216 ,x_access_id => l_Access_Id
6217 );
6218
6219 IF (AS_DEBUG_LOW_ON) THEN
6220
6221
6222
6223 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6224 'Update_SalesTeam:x_access_id > ' || l_access_id);
6225
6226 END IF;
6227
6228 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6229 RAISE FND_API.G_EXC_ERROR;
6230 END IF;
6231
6232 */
6233
6234
6235 -- Create another entry in the as_accesses_all for the new owner
6236 -- use some of the fields from those already set in the record.
6237
6238 -- this needs to be done only is doing new create_sales_team
6239 --l_Sales_Team_Rec.last_update_date := SYSDATE;
6240
6241
6242 l_Sales_Team_Rec.salesforce_id :=
6243 l_tar_SALES_LEAD_rec.assign_to_salesforce_id;
6244
6245 l_Sales_Team_Rec.sales_group_id :=
6246 l_tar_SALES_LEAD_rec.assign_sales_group_id;
6247
6248 l_Sales_Team_Rec.person_id :=
6249 l_tar_SALES_LEAD_rec.assign_to_person_id;
6250
6251 l_Sales_Team_Rec.owner_flag := 'Y';
6252 l_Sales_Team_Rec.freeze_flag := 'Y';
6253
6254
6255
6256 --l_Sales_Team_Rec.created_by_TAP_flag := 'N';
6257
6258 l_Sales_Team_Rec.team_leader_flag := 'Y';
6259
6260 -- Call duplicate check API to make sure that the new assign to is
6261 -- not already present in the accesses table. If already there, call
6262 -- update_sales_team otherwise call create_sales_team
6263
6264 -- check for whether the current user is owner or not
6265 l_check_salesteam := 'N';
6266 Open c_check_salesteam(l_Sales_Team_Rec.sales_lead_id, l_Sales_Team_Rec.salesforce_id , l_Sales_Team_Rec.sales_group_id );
6267
6268 Fetch c_check_salesteam into l_check_salesteam;
6269 Close c_check_salesteam;
6270
6271 IF (l_check_salesteam = 'Y' ) THEN
6272
6273 -- Debug Message
6274 IF (AS_DEBUG_LOW_ON) THEN
6275
6276 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6277 'Calling Update_SalesTeam');
6278 END IF;
6279
6280 AS_ACCESS_PUB.Update_SalesTeam (
6281 p_api_version_number => 2.0
6282 ,p_init_msg_list => FND_API.G_FALSE
6283 ,p_commit => FND_API.G_FALSE
6284 ,p_validation_level => P_Validation_Level
6285 ,p_check_access_flag => p_check_access_flag -- 'Y'
6286 ,p_access_profile_rec => l_access_profile_rec
6287 ,p_admin_flag => p_admin_flag
6288 ,p_admin_group_id => p_admin_group_id
6289 ,p_identity_salesforce_id => p_identity_salesforce_id
6290 ,p_sales_team_rec => l_Sales_Team_Rec
6291 ,X_Return_Status => x_Return_Status
6292 ,X_Msg_Count => X_Msg_Count
6293 ,X_Msg_Data => X_Msg_Data
6294 ,x_access_id => l_Access_Id
6295 );
6296 ELSE
6297
6298
6299 -- Debug Message
6300 IF (AS_DEBUG_LOW_ON) THEN
6301
6302 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6303 'Calling Create_SalesTeam');
6304 END IF;
6305
6306 l_Sales_Team_Rec.last_update_date := SYSDATE;
6307 l_Sales_Team_Rec.creation_date := SYSDATE;
6308 l_Sales_Team_Rec.created_by := FND_GLOBAL.USER_ID;
6309 l_Sales_Team_Rec.created_by_TAP_flag := 'N';
6310
6311 AS_ACCESS_PUB.Create_SalesTeam (
6312 p_api_version_number => 2.0
6313 ,p_init_msg_list => FND_API.G_FALSE
6314 ,p_commit => FND_API.G_FALSE
6315 ,p_validation_level => p_Validation_Level
6316 ,p_access_profile_rec => l_access_profile_rec
6317 ,p_check_access_flag => P_Check_Access_flag
6318 ,p_admin_flag => P_Admin_Flag
6319 ,p_admin_group_id => P_Admin_Group_Id
6320 ,p_identity_salesforce_id => P_Identity_Salesforce_Id
6321 ,p_sales_team_rec => l_Sales_Team_Rec
6322 ,X_Return_Status => x_Return_Status
6323 ,X_Msg_Count => X_Msg_Count
6324 ,X_Msg_Data => X_Msg_Data
6325 ,x_access_id => l_Access_Id
6326 );
6327
6328 -- Debug Message
6329 IF (AS_DEBUG_LOW_ON) THEN
6330
6331 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6332 'Create_SalesTeam:x_access_id > ' ||
6333 l_access_id);
6334 END IF;
6335 END IF;
6336
6337 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6338 RAISE FND_API.G_EXC_ERROR;
6339 END IF;
6340
6341
6342 END IF;
6343 END IF;
6344
6345
6346
6347
6348
6349
6350 -- if we are changing status from open to closed or closed to open,
6351 -- then the denormed flag in as_accesses_all needs to change for all
6352 -- records for this sales_lead_id
6353
6354 if (l_old_status_flag = 'Y' AND l_new_status_flag = 'N') then
6355
6356 update as_accesses_all
6357 set open_flag = null , last_update_date = sysdate,
6358 last_updated_by = fnd_global.user_id,
6359 last_update_login = fnd_global.conc_login_id
6360 where sales_lead_id = l_tar_SALES_LEAD_rec.SALES_LEAD_ID;
6361
6362 elsif ( l_old_status_flag = 'N' AND l_new_status_flag = 'Y') then
6363
6364 update as_accesses_all
6365 set open_flag = 'Y', last_update_date = sysdate,
6366 last_updated_by = fnd_global.user_id,
6367 last_update_login = fnd_global.conc_login_id
6368 where sales_lead_id = l_tar_SALES_LEAD_rec.SALES_LEAD_ID;
6369
6370 end if;
6371
6372
6373 -- Update lead_rank_score as well.
6374
6375
6376
6377 -- fixing problem found during testing that if u updated lead e.g from Cold Lead to
6378 -- null rank, then lead_rank_score in as_accesses_all was not getting updated.
6379
6380
6381 -- if new rank is null, we want to fix the score since old might have been non null.
6382 -- if new rank is g_miss , means anyways the rank is not changing so score is not changing.
6383 -- since we are re-using code from denorming for as_sales_leads, if l_new_lead_rank_score
6384 -- is g_miss then dont update as_accesses_all, basically simulate table handler
6385
6386 if ( l_new_lead_rank_score <> FND_API.G_MISS_NUM ) THEN
6387 -- update the as_accesses_all.lead_rank_score if the rank has been changed i.e not g_miss
6388 update as_accesses_all
6389 set lead_rank_score = l_new_lead_rank_score , last_update_date = sysdate,
6390 last_updated_by = fnd_global.user_id,
6391 last_update_login = fnd_global.conc_login_id
6392 where sales_lead_id = l_tar_SALES_LEAD_rec.SALES_LEAD_ID;
6393
6394 END IF;
6395
6396 -- End denorm fix
6397
6398
6399 /*
6400 -- Debug Message
6401 IF (AS_DEBUG_LOW_ON) THEN
6402
6403 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6404 'Validate BUDGET_AMOUNT');
6405 END IF;
6406
6407 Validate_BUDGET_AMOUNTS(
6408 p_init_msg_list => FND_API.G_FALSE,
6409 p_validation_mode => AS_UTILITY_PVT.G_CREATE,
6410 p_SALES_LEAD_ID => l_tar_SALES_LEAD_rec.Sales_Lead_Id,
6411 x_return_status => x_return_status,
6412 x_msg_count => x_msg_count,
6413 x_msg_data => x_msg_data);
6414
6415 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6416 raise FND_API.G_EXC_ERROR;
6417 END IF;
6418 */
6419
6420 --
6421 -- END of API body.
6422 --
6423
6424 -- Standard check for p_commit
6425 IF FND_API.to_Boolean( p_commit )
6426 THEN
6427 COMMIT WORK;
6428 END IF;
6429
6430 -- Debug Message
6431 IF (AS_DEBUG_LOW_ON) THEN
6432
6433 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6434 'PVT: ' || l_api_name || ' End');
6435 END IF;
6436
6437 -- Standard call to get message count and IF count is 1, get message info.
6438 FND_MSG_PUB.Count_And_Get
6439 ( p_count => x_msg_count,
6440 p_data => x_msg_data );
6441
6442 EXCEPTION
6443 WHEN FND_API.G_EXC_ERROR THEN
6444 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
6445 P_API_NAME => L_API_NAME
6446 ,P_PKG_NAME => G_PKG_NAME
6447 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
6448 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
6449 ,X_MSG_COUNT => X_MSG_COUNT
6450 ,X_MSG_DATA => X_MSG_DATA
6451 ,X_RETURN_STATUS => X_RETURN_STATUS);
6452
6453 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6454 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
6455 P_API_NAME => L_API_NAME
6456 ,P_PKG_NAME => G_PKG_NAME
6457 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6458 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
6459 ,X_MSG_COUNT => X_MSG_COUNT
6460 ,X_MSG_DATA => X_MSG_DATA
6461 ,X_RETURN_STATUS => X_RETURN_STATUS);
6462
6463 WHEN OTHERS THEN
6464 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
6465 P_API_NAME => L_API_NAME
6466 ,P_PKG_NAME => G_PKG_NAME
6467 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
6468 ,P_SQLCODE => SQLCODE
6469 ,P_SQLERRM => SQLERRM
6470 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
6471 ,X_MSG_COUNT => X_MSG_COUNT
6472 ,X_MSG_DATA => X_MSG_DATA
6473 ,X_RETURN_STATUS => X_RETURN_STATUS);
6474 END Update_sales_lead;
6475
6476
6477 /*
6478 This function is decomissioned
6479 -- function determines whether the Sales_Lead Is Qualified Or NOT.
6480 FUNCTION IS_LEAD_QUALIFIED(
6481 P_Sales_lead_rec IN AS_SALES_LEADS_PUB.SALES_LEAD_Rec_Type
6482 := AS_SALES_LEADS_PUB.G_MISS_SALES_LEAD_REC,
6483 p_phone_id IN NUMBER := FND_API.G_MISS_NUM,
6484 p_contact_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
6485 ) RETURN VARCHAR
6486 IS
6487 l_api_name CONSTANT VARCHAR2(30) := 'Is_Lead_Qualified';
6488 l_project_name_req varchar2(1);
6489 l_channel_req varchar2(1);
6490 l_time_frame_req varchar2(1);
6491 l_total_budget_req varchar2(1);
6492 l_contact_phone_req varchar2(1);
6493 l_contact_role_req varchar2(1);
6494 l_budget_status_req varchar2(1);
6495 l_campaign_code_req varchar2(1);
6496 l_isQualified varchar2(1) := 'Y';
6497 begin
6498
6499 IF (AS_DEBUG_LOW_ON) THEN
6500
6501
6502
6503 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6504 'p_phone_id is '||p_phone_id);
6505
6506 END IF;
6507 IF (AS_DEBUG_LOW_ON) THEN
6508
6509 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6510 'p_contact_role_code is '||p_contact_role_code);
6511 END IF;
6512
6513 -- get all of the required variables for a Lead to be qualified
6514 l_project_name_req := fnd_profile.value('AS_SALES_LEAD_PROJECT_NAME_REQ');
6515 l_channel_req := fnd_profile.value('AS_SALES_LEAD_CHANNEL_REQ');
6516 l_time_frame_req := fnd_profile.value('AS_SALES_LEAD_TIME_FRAME_REQ');
6517 l_total_budget_req := fnd_profile.value('AS_SALES_LEAD_TOTAL_BUDGET_REQ');
6518 l_contact_phone_req := fnd_profile.value('AS_SALES_LEAD_CONTACT_PHONE_REQ');
6519 l_contact_role_req := fnd_profile.value('AS_SALES_LEAD_CONTACT_ROLE_REQ');
6520 l_budget_status_req := fnd_profile.value('AS_SALES_LEAD_BUDGET_STATUS_REQ');
6521 l_campaign_code_req := fnd_profile.value('AS_SALES_LEAD_CAMPAIGN_CODE_REQ');
6522
6523
6524 IF (AS_DEBUG_LOW_ON) THEN
6525
6526
6527
6528
6529
6530 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6531 'profile - parent_project'||l_project_name_req);
6532
6533
6534 END IF;
6535
6536 IF (AS_DEBUG_LOW_ON) THEN
6537
6538
6539
6540 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6541 'profile - channel'||l_channel_req);
6542
6543 END IF;
6544
6545 IF (AS_DEBUG_LOW_ON) THEN
6546
6547
6548
6549 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6550 'profile - time frame'||l_time_frame_req);
6551
6552 END IF;
6553
6554 IF (AS_DEBUG_LOW_ON) THEN
6555
6556
6557
6558 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6559 'profile - total budget'||l_total_budget_req);
6560
6561 END IF;
6562
6563 IF (AS_DEBUG_LOW_ON) THEN
6564
6565
6566
6567 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6568 'profile - contact phone'||l_contact_phone_req);
6569
6570 END IF;
6571
6572 IF (AS_DEBUG_LOW_ON) THEN
6573
6574
6575
6576 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6577 'profile - contact role'||l_contact_role_req);
6578
6579 END IF;
6580
6581 IF (AS_DEBUG_LOW_ON) THEN
6582
6583
6584
6585 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6586 'profile - budget_status'||l_budget_status_req);
6587
6588 END IF;
6589
6590 IF (AS_DEBUG_LOW_ON) THEN
6591
6592
6593
6594 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6595 'profile - campaign code'||l_campaign_code_req);
6596
6597 END IF;
6598
6599
6600
6601 if l_project_name_req = 'Y' then
6602 if (p_sales_lead_rec.parent_project is null) or
6603 (p_sales_lead_rec.parent_project = FND_API.G_MISS_CHAR) then
6604 IF (AS_DEBUG_LOW_ON) THEN
6605
6606 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6607 'Qualification - parent_project');
6608 END IF;
6609 l_isQualified := 'N';
6610 return l_isQualified;
6611 end if;
6612 end if;
6613
6614 if l_channel_req = 'Y' then
6615 if (P_Sales_lead_rec.CHANNEL_CODE is null) or
6616 (p_sales_lead_rec.CHANNEL_CODE = FND_API.G_MISS_CHAR) then
6617 IF (AS_DEBUG_LOW_ON) THEN
6618
6619 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6620 'Qualification - CHANNEL_CODE');
6621 END IF;
6622 l_isQualified := 'N';
6623 return l_isQualified;
6624 end if;
6625 end if;
6626
6627 if l_time_frame_req = 'Y' then
6628 if (P_Sales_lead_rec.DECISION_TIMEFRAME_CODE is null) or
6629 (p_sales_lead_rec.DECISION_TIMEFRAME_CODE = FND_API.G_MISS_CHAR) then
6630 IF (AS_DEBUG_LOW_ON) THEN
6631
6632 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6633 'Qualification - DECISION_TIMEFRAME_CODE');
6634 END IF;
6635 l_isQualified := 'N';
6636 return l_isQualified;
6637 end if;
6638 end if;
6639
6640 if l_total_budget_req = 'Y' then
6641 if (P_Sales_lead_rec.BUDGET_AMOUNT is null) or
6642 (p_sales_lead_rec.BUDGET_AMOUNT = FND_API.G_MISS_NUM) then
6643 IF (AS_DEBUG_LOW_ON) THEN
6644
6645 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6646 'Qualification - BUDGET_AMOUNT');
6647 END IF;
6648 l_isQualified := 'N';
6649 return l_isQualified;
6650 end if;
6651 end if;
6652
6653 if l_contact_phone_req = 'Y' then
6654 if (p_phone_id is null) or
6655 (p_phone_id = FND_API.G_MISS_NUM) then
6656 IF (AS_DEBUG_LOW_ON) THEN
6657
6658 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6659 'Qualification - p_phone_id');
6660 END IF;
6661 l_isQualified := 'N';
6662 return l_isQualified;
6663 end if;
6664 end if;
6665
6666 -- change this to make sure contact role from as_sales_leads_contacts table is used
6667 if l_contact_role_req = 'Y' then
6668 if (p_contact_role_code is null) or
6669 (p_contact_role_code = FND_API.G_MISS_CHAR) then
6670 IF (AS_DEBUG_LOW_ON) THEN
6671
6672 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6673 'Qualification - CONTACT_ROLE_CODE');
6674 END IF;
6675 l_isQualified := 'N';
6676 return l_isQualified;
6677 end if;
6678 end if;
6679
6680 if l_budget_status_req = 'Y' then
6681 if (P_Sales_lead_rec.BUDGET_STATUS_CODE is null) or
6682 (p_sales_lead_rec.BUDGET_STATUS_CODE = FND_API.G_MISS_CHAR) then
6683 IF (AS_DEBUG_LOW_ON) THEN
6684
6685 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6686 'Qualification - BUDGET_STATUS_CODE');
6687 END IF;
6688 l_isQualified := 'N';
6689 return l_isQualified;
6690 end if;
6691 end if;
6692
6693 if l_campaign_code_req = 'Y' then
6694 if (P_Sales_lead_rec.SOURCE_PROMOTION_ID is null) or
6695 (p_sales_lead_rec.SOURCE_PROMOTION_ID = FND_API.G_MISS_NUM) then
6696 IF (AS_DEBUG_LOW_ON) THEN
6697
6698 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6699 'Qualification - SOURCE_PROMOTION_ID');
6700 END IF;
6701 l_isQualified := 'N';
6702 return l_isQualified;
6703 end if;
6704 end if;
6705
6706 -- if we get this far we're qualified!
6707 return l_isQualified;
6708
6709 IF (AS_DEBUG_LOW_ON) THEN
6710
6711
6712
6713 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6714 'PVT: ' || l_api_name || ' End');
6715
6716 END IF;
6717
6718 END IS_LEAD_QUALIFIED;
6719
6720
6721 */
6722
6723 END AS_SALES_LEADS_PVT;