DBA Data[Home] [Help]

PACKAGE BODY: APPS.AS_OPP_HEADER_PVT

Source


1 PACKAGE BODY AS_OPP_HEADER_PVT as
2 /* $Header: asxvldhb.pls 120.10 2006/01/16 01:38:20 subabu ship $ */
3 -- Start of Comments
4 -- Package name     : AS_OPP_HEADER_PVT
5 -- Purpose          :
6 -- History          :
7 --    06-30-00 XDING  Created by using API Generator
8 --    06-30-00 FFANG  Modified it as compile-able
9 --    07-27-00 FFANG  1. Add item level validation procedures
10 --                    2. Add record level validation procedures
11 --                    3. Add security checking
12 --                    4. Modifiy error messages
13 --    08-01-00 FFANG  Add: create notes in update_opp_header
14 --    08-02-00 FFANG  1. Remove lead_number validation
15 --                    2. pass in g_miss_char for lead_number when calling
16 --                       update_row
17 --    08-14-00 FFANG  Call as_access_pub.create_salesteam in create_opp_header
18 --    08-15-00 FFANG  CLOSE_REASON_TYPE -> CLOSE_REASON
19 --    08-18-00 FFANG  Add: Validate_BudgetAmt_Currency
20 --    08-21-00 FFANG  Add: set default currency code
21 --    08-22-00 FFANG  Remove: Validate_Status_DecisionDate
22 --    08-23-00 FFANG  Add Set_opp_default_values to update_opp_header
23 --    08-24-00 FFANG  Modify OTHERS exception hanlder calling arguments.
24 --    08-30-00 FFANG  Use AS_SF_PTR_V instead of pv_partners_v when validating
25 --                    incumbent_partner_party_id and
26 --                    incumbent_partner_resource_id
27 --    09-08-00 FFANG  For bug 1397389, checking profile
28 --                    AS_CUSTOMER_ADDRESS_REQUIRED to see if address_id is
29 --                    mandatory or not
30 --    09-11-00 FFANG  For bug 1401095, create_opp_header add a parameter:
31 --                    p_salesgroup_id to accept sales group id for creating
32 --                    sales team.
33 --    09-12-00 FFANG  For bug 1403865, using start_date_active and
34 --                    end_date_active instead of enabled_flag on validating
35 --                    sales_stage_id, channel_code, currency_code, and
36 --                    win_probability
37 --    09-12-00 FFANG  For bug 1402449, validate whether description is NULL
38 --    09-14-00 FFANG  For bug 1407007,
39 --                    1. add default value ('TAP') to auto_assignment_type
40 --                       if it is NULL or G_MISS_CHAR (when creating)
41 --                    2. add parameter p_mode to Set_opp_default_values to
42 --                       tell if calling by create or update
43 --    01-11-01 SOLIN  For bug 1554330,
44 --                    Add freeze_flag in as_leads_all and do relevant change.
45 --    03-sep-03 NKAMBLE Validate_DecisionDate procedure added as an enhancement# 3125485
46 --    12-sep-03 NKAMBLE FOR Bug#3133993, changed VALIDATE_SOURCE_PROMOTION_ID procedure cursor
47 --                        c_source_promotion_id_exists
48 -- NOTE             :
49 -- End of Comments
50 --
51 
52 
53 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AS_OPP_HEADER_PVT';
54 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asxvldhb.pls';
55 
56 FUNCTION Is_Employee ( p_salesforce_id IN NUMBER) return boolean IS
57 
58 CURSOR category IS
59 	select category
60 	from jtf_rs_resource_extns
61 	where resource_id = p_salesForce_id;
62 
63 l_category 	JTF_RS_RESOURCE_EXTNS.Category%Type;
64 BEGIN
65 	open category;
66 	fetch category into l_category;
67 	close category;
68 
69 	IF nvl(l_category, 'PARTNER') = 'EMPLOYEE' THEN
70 	  return TRUE;
71 	ELSE
72 	  return FALSE;
73 	END IF;
74 EXCEPTION
75 	WHEN OTHERS THEN
76 	  return FALSE;
77 END Is_Employee;
78 
79 
80 -- ffang 091400, Add p_mode and checking g_miss_xxx
81 PROCEDURE Set_opp_default_values (
82     p_mode                IN       VARCHAR2,
83     p_opp_rec             IN       AS_OPPORTUNITY_PUB.Header_Rec_Type,
84     x_opp_rec             OUT NOCOPY      AS_OPPORTUNITY_PUB.Header_Rec_Type
85     )
86 
87  IS
88    l_opp_rec    AS_OPPORTUNITY_PUB.Header_Rec_Type := p_opp_rec;
89 
90 BEGIN
91      IF nvl(fnd_profile.value('AS_ACTIVATE_SALES_INTEROP'), 'N') <> 'Y'  THEN -- Added for ASNB
92        If (l_opp_rec.sales_stage_id IS NULL) or
93           (l_opp_rec.sales_stage_id = FND_API.G_MISS_NUM
94            and p_mode = AS_UTILITY_PVT.G_CREATE)
95        THEN
96           l_opp_rec.sales_stage_id :=
97                to_number(FND_PROFILE.VALUE ('AS_OPP_SALES_STAGE'));
98        End If;
99      END IF;
100 
101      If (l_opp_rec.win_probability IS NULL) or
102         (l_opp_rec.win_probability = FND_API.G_MISS_NUM
103          and p_mode = AS_UTILITY_PVT.G_CREATE)
104      THEN
105         l_opp_rec.win_probability :=
106              to_number(FND_PROFILE.VALUE ('AS_OPP_WIN_PROBABILITY'));
107      End If;
108 
109      If (l_opp_rec.channel_code IS NULL) or
110         (l_opp_rec.channel_code = FND_API.G_MISS_CHAR
111          and p_mode = AS_UTILITY_PVT.G_CREATE)
112      THEN
113         l_opp_rec.channel_code := FND_PROFILE.VALUE ('AS_OPP_SALES_CHANNEL');
114      End If;
115 
116      If (l_opp_rec.status_code IS NULL) or
117         (l_opp_rec.status_code = FND_API.G_MISS_CHAR
118          and p_mode = AS_UTILITY_PVT.G_CREATE)
119      THEN
120         l_opp_rec.status_code := FND_PROFILE.VALUE ('AS_OPP_STATUS');
121      End If;
122 
123      If (l_opp_rec.decision_date IS NULL) or
124         (l_opp_rec.decision_date = FND_API.G_MISS_DATE
125          and p_mode = AS_UTILITY_PVT.G_CREATE)
126      THEN
127         l_opp_rec.decision_date :=
128              trunc(sysdate) + to_number(FND_PROFILE.VALUE('AS_OPP_CLOSING_DATE_DAYS'));
129      End If;
130 
131      If (l_opp_rec.currency_code IS NULL) or
132         (l_opp_rec.currency_code = FND_API.G_MISS_CHAR
133          and p_mode = AS_UTILITY_PVT.G_CREATE)
134      THEN
135         l_opp_rec.currency_code :=
136 				 FND_PROFILE.VALUE('JTF_PROFILE_DEFAULT_CURRENCY');
137      End If;
138 
139      -- ffang 091400 for bug 1407007
140      If (l_opp_rec.auto_assignment_type IS NULL) or
141         (l_opp_rec.auto_assignment_type = FND_API.G_MISS_CHAR
142          and p_mode = AS_UTILITY_PVT.G_CREATE)
143      THEN
144         l_opp_rec.auto_assignment_type := 'TAP';
145      End If;
146      -- end ffang 091400
147 
148      If (l_opp_rec.prm_assignment_type IS NULL) or
149         (l_opp_rec.prm_assignment_type = FND_API.G_MISS_CHAR
150          and p_mode = AS_UTILITY_PVT.G_CREATE)
151      THEN
152         l_opp_rec.prm_assignment_type := 'UNASSIGNED';
153      End If;
154 
155      -- Default delete_flag bug 1512162
156      If (l_opp_rec.deleted_flag IS NULL or
157          l_opp_rec.deleted_flag = FND_API.G_MISS_CHAR ) AND
158          p_mode = AS_UTILITY_PVT.G_CREATE
159      then
160 	l_opp_rec.deleted_flag := 'N';
161      end if;
162 
163      -- solin, default freeze_flag for bug 1554330
164      IF (l_opp_rec.freeze_flag IS NULL) or
165         (l_opp_rec.freeze_flag = FND_API.G_MISS_CHAR AND
166          p_mode = AS_UTILITY_PVT.G_CREATE)
167      THEN
168          l_opp_rec.freeze_flag := 'N';
169      END IF;
170      -- solin
171 
172      x_opp_rec := l_opp_rec;
173 
174 End Set_opp_default_values;
175 
176 
177 PROCEDURE HEADER_CREATE_NOTE(
178     p_validation_level IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
179     p_header_rec       IN  AS_OPPORTUNITY_PUB.Header_Rec_Type,
180     p_lead_number      IN  VARCHAR2,
181     p_win_prob         IN  NUMBER,
182     p_status           IN  VARCHAR2,
183     p_sales_stage_id   IN  NUMBER,
184     p_decision_date    IN  DATE,
185     x_note_id          OUT NOCOPY NUMBER,
186     x_return_status    OUT NOCOPY VARCHAR2,
187     x_msg_count        OUT NOCOPY NUMBER,
188     x_msg_data         OUT NOCOPY VARCHAR2
189     )
190  IS
191 
192 CURSOR status_name(c_status_code VARCHAR2) IS
193 	select meaning
194 	from as_statuses_vl
195 	where STATUS_CODE = c_status_code;
196 
197 CURSOR stage_name(c_sales_stage_id NUMBER) IS
198  	SELECT name
199 	from as_sales_stages_all_vl
200 	where sales_stage_id = c_sales_stage_id;
201 
202 Note_Message            VARCHAR2(2000);
203 l_status_name		VARCHAR2(240);
204 l_old_status_name	VARCHAR2(240);
205 l_stage_name 		VARCHAR2(60);
206 l_old_stage_name	VARCHAR2(60);
207 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
208 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.HEADER_CREATE_NOTE';
209 
210  BEGIN
211       -- Initialize API return status to SUCCESS
212       x_return_status := FND_API.G_RET_STS_SUCCESS;
213 
214       --
215       -- If status has been changed; then generate a note to show the change
216       --
217       IF (p_header_rec.status_code <> p_status)
218       THEN
219    	   open status_name(p_status);
220 	   fetch status_name into l_old_status_name;
221 	   close status_name;
222 
223 	   open status_name(p_header_rec.status_code);
224 	   fetch status_name into l_status_name;
225 	   close status_name;
226 
227 
228            FND_MESSAGE.Set_Name('AS', 'AS_NOTE_OPP_STATUS_CHANGED');
229            FND_MESSAGE.Set_Token('STATUS',l_status_name , FALSE);
230            FND_MESSAGE.Set_Token('OLD_STATUS', l_old_status_name, FALSE);
231            FND_MESSAGE.Set_Token('LEAD_NUM', p_lead_number, FALSE);
232            Note_Message := FND_MESSAGE.Get;
233 
234            IF l_debug THEN
235 	           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
236                                         Note_Message);
237 	   END IF;
238 
239            JTF_NOTES_PUB.Create_note (
240                p_api_version          =>  1.0,
241                p_init_msg_list        =>  FND_API.G_FALSE,
242                p_commit               =>  FND_API.G_FALSE,
243                p_validation_level     =>  p_validation_level,
244                x_return_status        =>  x_return_status,
245                x_msg_count            =>  x_msg_count,
246                x_msg_data             =>  x_msg_data,
247                p_source_object_id     =>  p_header_rec.lead_id,
248                p_source_object_code   =>  'OPPORTUNITY',
249                p_notes                =>  Note_Message,
250                p_note_status          =>  'E',
251                p_note_type	      =>  'AS_SYSTEM',
252                p_entered_by           =>  FND_GLOBAL.USER_ID,
253                p_entered_date         =>  SYSDATE,
254                x_jtf_note_id          =>  x_note_id,
255                p_last_update_date     =>  SYSDATE,
256                p_last_updated_by      =>  FND_GLOBAL.USER_ID,
257                p_creation_date        =>  SYSDATE,
258                p_created_by           =>  FND_GLOBAL.USER_ID,
259                p_last_update_login    =>  FND_GLOBAL.LOGIN_ID
260            );
261       END IF;
262 
263       --
264       -- If sales stage has been changed; then generate a note for it.
265       --
266       IF (p_header_rec.sales_stage_id <> p_sales_stage_id)
267       THEN
268 
269 	   OPEN stage_name(p_header_rec.sales_stage_id);
270 	   fetch stage_name into l_stage_name;
271 	   close stage_name;
272 
273        	   open stage_name(p_sales_stage_id);
274 	   fetch stage_name into l_old_stage_name;
275 	   close stage_name;
276 
277            FND_MESSAGE.Set_Name('AS', 'AS_NOTE_OPP_STAGE_CHANGED');
278            FND_MESSAGE.Set_Token('STAGE',l_stage_name , FALSE);
279            FND_MESSAGE.Set_Token('OLD_STAGE', l_old_stage_name, FALSE);
280            FND_MESSAGE.Set_Token('LEAD_NUM', p_lead_number, FALSE);
281            Note_Message := FND_MESSAGE.Get;
282 
283            IF l_debug THEN
284            AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
285                                         Note_Message);
286 	   END IF;
287 
288            JTF_NOTES_PUB.Create_note (
289                p_api_version          =>  1.0,
290                p_init_msg_list        =>  FND_API.G_FALSE,
291                p_commit               =>  FND_API.G_FALSE,
292                p_validation_level     =>  p_validation_level,
293                x_return_status        =>  x_return_status,
294                x_msg_count            =>  x_msg_count,
295                x_msg_data             =>  x_msg_data,
296                p_source_object_id     =>  p_header_rec.lead_id,
297                p_source_object_code   =>  'OPPORTUNITY',
298                p_notes                =>  Note_Message,
299                p_note_status          =>  'E',
300                p_note_type	      =>  'AS_SYSTEM',
301                p_entered_by           =>  FND_GLOBAL.USER_ID,
302                p_entered_date         =>  SYSDATE,
303                x_jtf_note_id          =>  x_note_id,
304                p_last_update_date     =>  SYSDATE,
305                p_last_updated_by      =>  FND_GLOBAL.USER_ID,
306                p_creation_date        =>  SYSDATE,
307                p_created_by           =>  FND_GLOBAL.USER_ID,
308                p_last_update_login    =>  FND_GLOBAL.LOGIN_ID
309            );
310       END IF;
311 
312       --
313       -- If win probability has been changed; then generate a note for it.
314       --
315       IF (p_header_rec.win_probability <> p_win_prob)
316       THEN
317            FND_MESSAGE.Set_Name('AS', 'AS_NOTE_OPP_PROB_CHANGED');
318            FND_MESSAGE.Set_Token('PROBABILITY', p_header_rec.win_probability,
319                                  FALSE);
320            FND_MESSAGE.Set_Token('OLD_PROBABILITY', p_win_prob, FALSE);
321            FND_MESSAGE.Set_Token('LEAD_NUM', p_lead_number, FALSE);
322            Note_Message := FND_MESSAGE.Get;
323 
324            IF l_debug THEN
325            AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
326                                         Note_Message);
327 	   END IF;
328 
329 
330            JTF_NOTES_PUB.Create_note (
331                p_api_version          =>  1.0,
332                p_init_msg_list        =>  FND_API.G_FALSE,
333                p_commit               =>  FND_API.G_FALSE,
334                p_validation_level     =>  p_validation_level,
335                x_return_status        =>  x_return_status,
336                x_msg_count            =>  x_msg_count,
337                x_msg_data             =>  x_msg_data,
338                p_source_object_id     =>  p_header_rec.lead_id,
339                p_source_object_code   =>  'OPPORTUNITY',
340                p_notes                =>  Note_Message,
341                p_note_status          =>  'E',
342                p_note_type	      =>  'AS_SYSTEM',
343                p_entered_by           =>  FND_GLOBAL.USER_ID,
344                p_entered_date         =>  SYSDATE,
345                x_jtf_note_id          =>  x_note_id,
346                p_last_update_date     =>  SYSDATE,
347                p_last_updated_by      =>  FND_GLOBAL.USER_ID,
348                p_creation_date        =>  SYSDATE,
349                p_created_by           =>  FND_GLOBAL.USER_ID,
350                p_last_update_login    =>  FND_GLOBAL.LOGIN_ID
351            );
352       END IF;
353 
354       --
355       -- If decision date has been changed; then generate a note for it.
356       --
357       IF (p_header_rec.decision_date <> p_decision_date)
358       THEN
359            FND_MESSAGE.Set_Name('AS', 'AS_NOTE_OPP_DATE_CHANGED');
360            FND_MESSAGE.Set_Token('DATE', p_header_rec.decision_date, FALSE);
361            FND_MESSAGE.Set_Token('OLD_DATE', p_decision_date, FALSE);
362            FND_MESSAGE.Set_Token('LEAD_NUM', p_lead_number, FALSE);
363            Note_Message := FND_MESSAGE.Get;
364 
365            IF l_debug THEN
366            AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
367                                         Note_Message);
368 	   END IF;
369 
370            JTF_NOTES_PUB.Create_note (
371                p_api_version          =>  1.0,
372                p_init_msg_list        =>  FND_API.G_FALSE,
373                p_commit               =>  FND_API.G_FALSE,
374                p_validation_level     =>  p_validation_level,
375                x_return_status        =>  x_return_status,
376                x_msg_count            =>  x_msg_count,
377                x_msg_data             =>  x_msg_data,
378                p_source_object_id     =>  p_header_rec.lead_id,
379                p_source_object_code   =>  'OPPORTUNITY',
380                p_notes                =>  Note_Message,
381                p_note_status          =>  'E',
382                p_note_type	      =>  'AS_SYSTEM',
383                p_entered_by           =>  FND_GLOBAL.USER_ID,
384                p_entered_date         =>  SYSDATE,
385                x_jtf_note_id          =>  x_note_id,
386                p_last_update_date     =>  SYSDATE,
387                p_last_updated_by      =>  FND_GLOBAL.USER_ID,
388                p_creation_date        =>  SYSDATE,
389                p_created_by           =>  FND_GLOBAL.USER_ID,
390                p_last_update_login    =>  FND_GLOBAL.LOGIN_ID
391            );
392       END IF;
393 
394 END HEADER_CREATE_NOTE;
395 
396 -- Local procedure
397 
398 PROCEDURE Recreate_tasks(
399     p_LEAD_ID			IN  NUMBER,
400     p_RESOURCE_ID		IN  NUMBER,
401     p_OLD_SALES_METHODOLOGY_ID	IN  NUMBER,
402     p_OLD_SALES_STAGE_ID	IN  NUMBER,
403     p_SALES_METHODOLOGY_ID	IN  NUMBER,
404     p_SALES_STAGE_ID		IN  NUMBER,
405     x_return_status 		OUT NOCOPY VARCHAR2,
406     x_msg_count                 OUT NOCOPY NUMBER,
407     x_msg_data                  OUT NOCOPY VARCHAR2,
408     X_Warning_Message		OUT NOCOPY VARCHAR2 )
409 IS
410 
411 CURSOR template ( c_sales_methodology_id number, c_sales_stage_id number) IS
412     select TASK_TEMPLATE_GROUP_ID
413     from as_sales_meth_stage_map
414     where SALES_METHODOLOGY_ID = c_sales_methodology_id
415     and SALES_STAGE_ID = c_sales_stage_id;
416 
417 l_tmplate_group_id NUMBER;
418 
419 l_return_status varchar2(10);
420 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
421 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Recreate_tasks';
422 
423 BEGIN
424       x_return_status := FND_API.G_RET_STS_SUCCESS;
425       X_Warning_Message	:= NULL;
426 
427       IF l_debug THEN
428       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
429             'LEAD_ID/RS_ID: '||p_LEAD_ID || ',' ||p_RESOURCE_ID );
430       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
431             'OLD_SM/SS_ID: '|| p_OLD_SALES_METHODOLOGY_ID||',' || p_OLD_SALES_STAGE_ID);
432       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
433             'SM/SS_ID: ' || p_SALES_METHODOLOGY_ID ||',' || p_SALES_STAGE_ID  );
434       END IF;
435 
436       IF (p_SALES_METHODOLOGY_ID IS NOT NULL) AND
437 	 (p_SALES_METHODOLOGY_ID <> FND_API.G_MISS_NUM ) THEN
438 
439 	  IF ((nvl(p_OLD_SALES_METHODOLOGY_ID, -99) <> p_SALES_METHODOLOGY_ID) OR
440               (nvl(p_OLD_SALES_STAGE_ID, -99) <> p_SALES_STAGE_ID) ) AND
441 	     nvl(FND_PROFILE.VALUE ('AS_SM_CREATE_TASKS'), 'N') = 'Y' THEN
442 
443 		open template(p_sales_methodology_id, p_sales_stage_id);
444 	  	fetch template into l_tmplate_group_id ;
445 		close template;
446 
447 		IF(l_tmplate_group_id IS NOT NULL) THEN
448       			IF l_debug THEN
449       			AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
450                 	               'Lunching workflow for autotask creation');
451 			END IF;
452 	        -- lunch workflow
453 		as_sales_meth_wf.start_methodology(
454  			P_SOURCE_OBJECT_TYPE_CODE 	=> 'OPPORTUNITY',
455  			P_SOURCE_OBJECT_ID		=> p_lead_id,
456  			P_SOURCE_OBJECT_NAME           	=> to_char(p_lead_id),
457  			P_OWNER_ID                     	=> p_resource_id,
458  			P_OWNER_TYPE_CODE              	=> 'RS_EMPLOYEE',
459  			P_OBJECT_TYPE_CODE             	=> 'SALES_STAGE',
460  			P_CURRENT_STAGE_ID             	=> p_OLD_SALES_STAGE_ID,
461  			P_NEXT_STAGE_ID                	=> p_SALES_STAGE_ID,
462  			P_TEMPLATE_GROUP_ID            	=> to_char(l_tmplate_group_id),
463  			ITEM_TYPE                      	=> 'SAL_MET3',
464  			WORKFLOW_PROCESS               	=> 'SAL_MET3',
465  			X_RETURN_STATUS                	=> l_return_status,
466                   	X_Msg_Count                     => X_Msg_Count,
467                 	X_Msg_Data                      => X_Msg_Data,
468 			X_Warning_Message		=> X_Warning_Message);
469 
470 		END IF;
471 
472           END IF;
473       END IF;
474 
475       if (l_return_status is not null) then
476           x_return_status := substr(l_return_status, 1, 1);
477       end if;
478 
479       IF l_debug THEN
480       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'x_return_status: ' || x_return_status );
481       END IF;
482 
483 EXCEPTION
484       WHEN OTHERS
485       THEN
486         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
487         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
488 
489 END Recreate_tasks;
490 
491 
492 PROCEDURE Update_Competitor_Products(
493     p_LEAD_ID			IN  NUMBER,
494     p_STATUS_CODE		IN VARCHAR2,
495     x_return_status 		OUT NOCOPY VARCHAR2)
496 IS
497 
498 CURSOR c_WIN_LOSS_INDICATOR(c_STATUS_CODE VARCHAR2) IS
499 	select WIN_LOSS_INDICATOR
500 	from as_statuses_b
501 	where status_code = c_STATUS_CODE;
502 
503 l_indicator  varchar2(1);
504 
505 BEGIN
506       x_return_status := FND_API.G_RET_STS_SUCCESS;
507 
508       open c_WIN_LOSS_INDICATOR( p_STATUS_CODE);
509       fetch c_WIN_LOSS_INDICATOR into l_indicator;
510       close c_WIN_LOSS_INDICATOR;
511 
512       IF ( nvl(l_indicator, 'L') = 'W') THEN
513 	  UPDATE AS_LEAD_COMP_PRODUCTS
514 	  SET object_version_number =  nvl(object_version_number,0) + 1, WIN_LOSS_STATUS = 'LOST'
515 	  WHERE LEAD_ID = p_LEAD_ID;
516       END IF;
517 
518 
519 EXCEPTION
520       WHEN no_data_found THEN NULL;
521 
522       WHEN OTHERS THEN
523         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
524         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
525 
526 END Update_Competitor_Products;
527 
528 
529 /*
530 
531 PROCEDURE Create_lead_competitor(
532     p_api_version_number    IN     NUMBER,
533     p_init_msg_list         IN     VARCHAR2 := FND_API.G_FALSE,
534     p_commit                IN     VARCHAR2 := FND_API.G_FALSE,
535     p_validation_level      IN     NUMBER   := 0,
536     p_check_access_flag     IN 	   VARCHAR2,
537     p_admin_flag	    IN 	   VARCHAR2,
538     p_admin_group_id	    IN	   NUMBER,
539     p_identity_salesforce_id IN    NUMBER   := NULL,
540     p_partner_cont_party_id   IN     NUMBER,
541     p_profile_tbl	    IN     AS_UTILITY_PUB.Profile_Tbl_Type
542 				   :=AS_UTILITY_PUB.G_MISS_PROFILE_TBL,
543     p_LEAD_ID		    IN     NUMBER,
544     p_COMPETITOR_ID	    IN     NUMBER,
545     x_return_status         OUT NOCOPY    VARCHAR2,
546     x_msg_count             OUT NOCOPY    NUMBER,
547     x_msg_data              OUT NOCOPY    VARCHAR2)
548 IS
549 
550 CURSOR  competitor_exist IS
551 	select 'Y'
552 	from as_lead_competitors
553 	where lead_id = p_lead_id
554 	and competitor_id = p_competitor_id;
555 
556 l_competitor_exist  VARCHAR2(1);
557 
558 l_competitor_rec	AS_OPPORTUNITY_PUB.Competitor_rec_Type;
559 l_competitor_tbl        AS_OPPORTUNITY_PUB.Competitor_tbl_Type;
560 x_competitor_out_tbl    AS_OPPORTUNITY_PUB.Competitor_Out_Tbl_Type;
561 
562 BEGIN
563 
564     -- Initialize API return status to SUCCESS
565     x_return_status := FND_API.G_RET_STS_SUCCESS;
566 
567     open competitor_exist;
568     fetch competitor_exist into l_competitor_exist;
569     close competitor_exist;
570     IF l_competitor_exist is null THEN
571 
572         l_Competitor_rec.last_update_date 	:= SYSDATE;
573         l_Competitor_rec.last_updated_by        := FND_GLOBAL.USER_ID;
574         l_Competitor_rec.creation_Date 	        := SYSDATE;
575         l_Competitor_rec.created_by 		:= FND_GLOBAL.USER_ID;
576         l_Competitor_rec.last_update_login 	:= FND_GLOBAL.CONC_LOGIN_ID;
577 	l_Competitor_rec.LEAD_ID                := p_lead_id;
578 	l_Competitor_rec.COMPETITOR_ID          := p_competitor_id;
579 
580 	l_competitor_tbl(1) := l_Competitor_rec;
581 
582         AS_OPP_competitor_PVT.Create_competitors(
583         	P_Api_Version_Number         => 2.0,
584         	P_Init_Msg_List              => FND_API.G_FALSE,
585         	P_Commit                     => p_commit,
586         	P_Validation_Level           => P_Validation_Level,
587         	P_Check_Access_Flag          => p_check_access_flag,
588         	P_Admin_Flag                 => P_Admin_Flag,
589         	P_Admin_Group_Id             => P_Admin_Group_Id,
590         	P_Identity_Salesforce_Id     => P_Identity_Salesforce_Id,
591         	P_Partner_Cont_Party_Id	     => p_partner_cont_party_id,
592         	P_Profile_Tbl                => P_Profile_tbl,
593         	P_Competitor_Tbl             => l_competitor_tbl,
594         	X_Competitor_Out_Tbl         => x_competitor_out_tbl,
595         	X_Return_Status              => x_return_status,
596         	X_Msg_Count                  => x_msg_count,
597         	X_Msg_Data                   => x_msg_data);
598     END IF;
599 
600 END Create_lead_competitor;
601 */
602 
603 PROCEDURE Set_Owner( p_access_id NUMBER)
604 IS
605 
606 CURSOR c_acc IS
607 	select lead_id, salesforce_id, sales_group_id
608 	from as_accesses_all
609 	where access_id = p_access_id;
610 
611 BEGIN
612     FOR acr IN c_acc LOOP
613 
614 	UPDATE AS_ACCESSES_ALL
615 	SET object_version_number =  nvl(object_version_number,0) + 1, OWNER_FLAG = 'Y'
616 	WHERE ACCESS_ID = p_access_id;
617 
618 	UPDATE AS_LEADS_ALL
619 	SET object_version_number =  nvl(object_version_number,0) + 1, owner_salesforce_id = acr.salesforce_id,
620 	    owner_sales_group_id = acr.sales_group_id
621 	WHERE lead_id = acr.lead_id;
622 
623     END LOOP;
624 
625 END Set_Owner;
626 
627 
628 
629 
630 PROCEDURE Create_opp_header(
631     P_Api_Version_Number       IN   NUMBER,
632     P_Init_Msg_List            IN   VARCHAR2     := FND_API.G_FALSE,
633     P_Commit                   IN   VARCHAR2     := FND_API.G_FALSE,
634     p_validation_level         IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
635     P_Check_Access_Flag        IN   VARCHAR2     := FND_API.G_FALSE,
636     P_Admin_Flag               IN   VARCHAR2     := FND_API.G_FALSE,
637     P_Admin_Group_Id           IN   NUMBER,
638     P_Identity_Salesforce_Id   IN   NUMBER       := NULL,
639     P_salesgroup_id            IN   NUMBER       := NULL,
640     P_profile_tbl              IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
641     P_Partner_Cont_Party_id    IN   NUMBER       := FND_API.G_MISS_NUM,
642     P_Header_Rec               IN   AS_OPPORTUNITY_PUB.Header_Rec_Type
643                                       := AS_OPPORTUNITY_PUB.G_MISS_Header_REC,
644     X_LEAD_ID                  OUT NOCOPY  NUMBER,
645     X_Return_Status            OUT NOCOPY  VARCHAR2,
646     X_Msg_Count                OUT NOCOPY  NUMBER,
647     X_Msg_Data                 OUT NOCOPY  VARCHAR2
648     )
649 
650  IS
651 l_api_name                CONSTANT VARCHAR2(30) := 'Create_opp_header';
652 l_api_version_number      CONSTANT NUMBER   := 2.0;
653 l_return_status_full      VARCHAR2(1);
654 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
655 l_LEAD_ID                 NUMBER;
656 l_header_rec              AS_OPPORTUNITY_PUB.Header_Rec_Type
657 						:= P_Header_Rec;
658 l_header_rec1             AS_OPPORTUNITY_PUB.Header_Rec_Type;
659 
660 l_access_profile_rec      AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
661 l_access_flag             VARCHAR2(1);
662 l_access_id               NUMBER;
663 l_Sales_Team_Rec          AS_ACCESS_PUB.Sales_Team_Rec_Type
664                               := AS_ACCESS_PUB.G_MISS_SALES_TEAM_REC;
665 
666 l_old_sales_methodology_id NUMBER := null;
667 l_old_sales_stage_id NUMBER := null;
668 
669 l_is_owner	VARCHAR2(1) := 'N';
670 
671 l_warning_msg 		VARCHAR2(2000) := '';
672 l_winprob_warning_msg 	VARCHAR2(2000) := '';
673 
674 l_default_address_profile	VARCHAR2(1) := FND_PROFILE.VALUE ('AS_OPP_DEFAULT_ADDRESS');
675 
676 CURSOR get_person_id_csr(c_salesforce_id NUMBER) is
677      select employee_person_id
678      from as_salesforce_v
679      where salesforce_id = c_salesforce_id;
680 
681 /* ffang 091100 for bug 1401095
682 CURSOR c_salesgroup_id(p_resource_id number) IS
683      SELECT group_id
684      FROM JTF_RS_GROUP_MEMBERS
685      WHERE resource_id = p_resource_id
686      ORDER BY GROUP_ID;
687 l_salesgroup_id Number:=Null;
688 */
689 l_salesgroup_id Number := p_salesgroup_id;
690 l_person_id 		NUMBER;
691 
692 
693 CURSOR primary_address ( p_customer_id NUMBER) IS
694 	select party_site_id
695 	from hz_party_sites
696 	where party_id = p_customer_id
697 	and IDENTIFYING_ADDRESS_FLAG = 'Y';
698 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
699 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Create_opp_header';
700 
701  BEGIN
702       -- Standard Start of API savepoint
703       SAVEPOINT CREATE_OPP_HEADER_PVT;
704 
705       -- Standard call to check for call compatibility.
706       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
707                          	             p_api_version_number,
708                                            l_api_name,
709                                            G_PKG_NAME)
710       THEN
711           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
712       END IF;
713 
714 
715       -- Initialize message list if p_init_msg_list is set to TRUE.
716       IF FND_API.to_Boolean( p_init_msg_list )
717       THEN
718           FND_MSG_PUB.initialize;
719       END IF;
720 
721 
722       -- Debug Message
723       IF l_debug THEN
724       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
725                                    'Private API: ' || l_api_name || ' start');
726       END IF;
727 
728 
729       -- Initialize API return status to SUCCESS
730       x_return_status := FND_API.G_RET_STS_SUCCESS;
731 
732       --
733       -- API body
734       --
735 
736 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
737 /*
738       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y',
739       -- callout procedure is invoked for customization purpose
740       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
741       THEN
742           AS_CALLOUT_PKG.Create_opp_header_BC(
743                   p_api_version_number   =>  2.0,
744                   p_init_msg_list        =>  FND_API.G_FALSE,
745                   p_commit               =>  FND_API.G_FALSE,
746                   p_validation_level     =>  p_validation_level,
747                   P_Header_Rec           =>  l_Header_Rec,
748           -- Hint: Add detail tables as parameter lists if it's master-detail
749           -- relationship.
750                   x_return_status        =>  x_return_status,
751                   x_msg_count            =>  x_msg_count,
752                   x_msg_data             =>  x_msg_data);
753       END IF;
754 */
755 
756       -- ******************************************************************
757       -- Validate Environment
758       -- ******************************************************************
759       IF FND_GLOBAL.User_Id IS NULL
760       THEN
761           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
762           THEN
763               -- FND_MESSAGE.Set_Name(' + appShortName +',
764               --                   'UT_CANNOT_GET_PROFILE_VALUE');
765               -- FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
766               -- FND_MSG_PUB.ADD;
767 
768               AS_UTILITY_PVT.Set_Message(
769                   p_module        => l_module,
770                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
771                   p_msg_name      => 'UT_CANNOT_GET_PROFILE_VALUE',
772                   p_token1        => 'PROFILE',
773                   p_token1_value  => 'USER_ID');
774 
775           END IF;
776           RAISE FND_API.G_EXC_ERROR;
777       END IF;
778 
779       IF l_debug THEN
780       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
781                                    'Before Get_CurrentUser '|| x_return_status);
782       END IF;
783 
784       IF (p_validation_level = fnd_api.g_valid_level_full)
785       THEN
786           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
787               p_api_version_number => 2.0
788              ,p_init_msg_list      => p_init_msg_list
789              ,p_salesforce_id      => P_Identity_Salesforce_Id
790              ,p_admin_group_id     => p_admin_group_id
791              ,x_return_status      => x_return_status
792              ,x_msg_count          => x_msg_count
793              ,x_msg_data           => x_msg_data
794              ,x_sales_member_rec   => l_identity_sales_member_rec);
795       END IF;
796 
797       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
798           RAISE FND_API.G_EXC_ERROR;
799       END IF;
800 
801       IF l_debug THEN
802 	      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'After Get_CurrentUser '|| x_return_status);
803       END IF;
804 
805       -- Set default value to decision_date, channel_code, status_code,
806       -- sales_stage_id, win_probability, freeze_flag, and currency_code
807       -- as profile values.
808       If (l_Header_Rec.decision_date IS NULL) or
809          (l_Header_Rec.decision_date = FND_API.G_MISS_DATE) or
810          (l_Header_Rec.channel_code IS NULL) or
811          (l_Header_Rec.channel_code = FND_API.G_MISS_CHAR) or
812          (l_Header_Rec.STATUS_CODE IS NULL) or
813          (l_Header_Rec.STATUS_CODE = FND_API.G_MISS_CHAR) or
814          (l_Header_Rec.sales_stage_id IS NULL) or
815          (l_Header_Rec.sales_stage_id = FND_API.G_MISS_NUM) or
816          (l_Header_Rec.win_probability IS NULL) or
817          (l_Header_Rec.win_probability = FND_API.G_MISS_NUM) or
818          (l_Header_Rec.currency_code IS NULL) or
819          (l_Header_Rec.currency_code = FND_API.G_MISS_CHAR) or
820          (l_Header_Rec.deleted_flag IS NULL) or
821          (l_Header_Rec.deleted_flag = FND_API.G_MISS_CHAR) or
822          (l_Header_Rec.auto_assignment_type IS NULL) or  -- acng, bug 2044908
823          (l_Header_Rec.auto_assignment_type = FND_API.G_MISS_CHAR) or
824          (l_Header_Rec.prm_assignment_type IS NULL) or   -- acng, bug 2044908
825          (l_Header_Rec.prm_assignment_type = FND_API.G_MISS_CHAR) or
826          (l_Header_Rec.freeze_flag IS NULL) or            -- solin, bug 1554330
827          (l_Header_Rec.freeze_flag = FND_API.G_MISS_CHAR) -- solin, bug 1554330
828       THEN
829           IF l_debug THEN
830           	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
831                                        	'Calling Set_opp_default_values');
832 	  END IF;
833 
834 	  l_header_rec1 := l_header_rec;
835           Set_opp_default_values(
836                 p_mode       => AS_UTILITY_PVT.G_CREATE,
837                 p_opp_rec    => l_Header_Rec1,
838                 x_opp_rec    => l_Header_Rec );
839 
840       End If;
841 
842       -- Deafult the customer address to primary address if necessary
843       IF nvl(l_default_address_profile, 'N') = 'Y' AND
844          ((l_Header_Rec.address_id IS NULL) OR
845           (l_Header_Rec.address_id = FND_API.G_MISS_NUM))
846       THEN
847 	  open primary_address(l_Header_Rec.customer_id );
848 	  fetch  primary_address into l_Header_Rec.address_id;
849 	  close  primary_address;
850 
851 	  If (l_Header_Rec.address_id IS NULL OR
852 	      l_Header_Rec.address_id = FND_API.G_MISS_NUM )
853 	  THEN
854 	      IF l_debug THEN
855 	      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
856                    'No primary address for customer');
857 	      END IF;
858 
859 	  END IF;
860       END IF;
861 
862       -- Trunc desidion date
863       l_Header_Rec.decision_date := trunc(l_Header_Rec.decision_date);
864 
865       -- Debug message
866       IF l_debug THEN
867       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
868                                    'Private API: Validate_opp_header');
869       END IF;
870 
871 
872       -- Invoke validation procedures
873       Validate_opp_header(
874           p_init_msg_list    => FND_API.G_FALSE,
875           p_validation_level => p_validation_level,
876           p_validation_mode  => AS_UTILITY_PVT.G_CREATE,
877           P_Header_Rec       => l_Header_Rec,
878           x_return_status    => x_return_status,
879           x_msg_count        => x_msg_count,
880           x_msg_data         => x_msg_data);
881 
882       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
883           RAISE FND_API.G_EXC_ERROR;
884       END IF;
885 
886       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
887           l_winprob_warning_msg := x_msg_data;
888       END IF;
889 
890 
891 
892 
893       -- Access checking
894       IF p_check_access_flag = 'Y'
895       THEN
896           -- Call Get_Access_Profiles to get access_profile_rec
897           IF l_debug THEN
898           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
899                                        'Calling Get_Access_Profiles');
900 	  END IF;
901 
902           AS_OPPORTUNITY_PUB.Get_Access_Profiles(
903               p_profile_tbl         => p_profile_tbl,
904               x_access_profile_rec  => l_access_profile_rec);
905 
906           IF l_debug THEN
907           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
908                                        'Calling Has_viewCustomerAccess');
909 	  END IF;
910 
911           AS_ACCESS_PUB.Has_viewCustomerAccess(
912               p_api_version_number     => 2.0,
913               p_init_msg_list          => p_init_msg_list,
914               p_validation_level       => p_validation_level,
915               p_access_profile_rec     => l_access_profile_rec,
916               p_admin_flag             => p_admin_flag,
917               p_admin_group_id         => p_admin_group_id,
918               p_person_id              =>
919                                 l_identity_sales_member_rec.employee_person_id,
920               p_customer_id            => P_Header_Rec.customer_id,
921               p_check_access_flag      => 'Y',
922               p_identity_salesforce_id => p_identity_salesforce_id,
923               p_partner_cont_party_id  => NULL,
924               x_return_status          => x_return_status,
925               x_msg_count              => x_msg_count,
926               x_msg_data               => x_msg_data,
927               x_view_access_flag       => l_access_flag);
928 
929           IF l_access_flag <> 'Y' THEN
930               AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
931                                            'API_NO_CREATE_PRIVILEGE');
932           END IF;
933 
934           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
935               RAISE FND_API.G_EXC_ERROR;
936           END IF;
937 
938 
939 
940       END IF;
941 
942 
943       -- Hint: Add corresponding Master-Detail business logic here if necessary.
944 
945       -- Debug Message
946       IF l_debug THEN
947       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
948                                    'Private API: Calling create table handler');
949       END IF;
950 
951 
952       l_LEAD_ID := l_Header_Rec.LEAD_ID;
953 
954 	 IF l_debug THEN
955 	 	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'OFFER_ID: ' || p_header_rec.OFFER_ID);
956 	 END IF;
957 
958       -- Hardcoding to NULL for R12 since it will be filled in when
959       -- Lines are created
960       l_header_rec.TOTAL_REVENUE_OPP_FORECAST_AMT := NULL;
961 
962       -- Invoke table handler(AS_LEADS_PKG.Insert_Row)
963       AS_LEADS_PKG.Insert_Row(
964           px_LEAD_ID  => l_LEAD_ID,
965           p_LAST_UPDATE_DATE  => SYSDATE,
966           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
967           p_CREATION_DATE  => SYSDATE,
968           p_CREATED_BY  => FND_GLOBAL.USER_ID,
969           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
970           p_REQUEST_ID  => l_Header_Rec.REQUEST_ID,
971           p_PROGRAM_APPLICATION_ID  => l_Header_Rec.PROGRAM_APPLICATION_ID,
972           p_PROGRAM_ID  => l_Header_Rec.PROGRAM_ID,
973           p_PROGRAM_UPDATE_DATE  => l_Header_Rec.PROGRAM_UPDATE_DATE,
974           p_LEAD_NUMBER  => l_Header_Rec.LEAD_NUMBER,
975           p_STATUS  => l_Header_Rec.STATUS_CODE,
976           p_CUSTOMER_ID  => l_Header_Rec.CUSTOMER_ID,
977           p_ADDRESS_ID  => l_Header_Rec.ADDRESS_ID,
978           p_SALES_STAGE_ID  => l_header_rec.SALES_STAGE_ID,
979           p_INITIATING_CONTACT_ID  => l_header_rec.INITIATING_CONTACT_ID,
980           p_CHANNEL_CODE  => l_header_rec.CHANNEL_CODE,
981           p_TOTAL_AMOUNT  => l_header_rec.TOTAL_AMOUNT,
982           p_CURRENCY_CODE  => l_header_rec.CURRENCY_CODE,
983           p_DECISION_DATE  => l_header_rec.DECISION_DATE,
984           p_WIN_PROBABILITY  => l_header_rec.WIN_PROBABILITY,
985           p_CLOSE_REASON  => l_header_rec.CLOSE_REASON,
986           p_CLOSE_COMPETITOR_CODE  => l_header_rec.CLOSE_COMPETITOR_CODE,
987           p_CLOSE_COMPETITOR  => l_header_rec.CLOSE_COMPETITOR,
988           p_CLOSE_COMMENT  => l_header_rec.CLOSE_COMMENT,
989           p_DESCRIPTION  => l_header_rec.DESCRIPTION,
990           p_RANK  => l_header_rec.RANK,
991           p_SOURCE_PROMOTION_ID  => l_header_rec.SOURCE_PROMOTION_ID,
992           p_END_USER_CUSTOMER_ID  => l_header_rec.END_USER_CUSTOMER_ID,
993           p_END_USER_ADDRESS_ID  => l_header_rec.END_USER_ADDRESS_ID,
994           p_OWNER_SALESFORCE_ID  => l_header_rec.OWNER_SALESFORCE_ID,
995           p_OWNER_SALES_GROUP_ID => l_header_rec.OWNER_SALES_GROUP_ID,
996           --p_OWNER_ASSIGN_DATE  => l_header_rec.OWNER_ASSIGN_DATE,
997           p_ORG_ID  => l_header_rec.ORG_ID,
998           p_NO_OPP_ALLOWED_FLAG  => l_header_rec.NO_OPP_ALLOWED_FLAG,
999           p_DELETE_ALLOWED_FLAG  => l_header_rec.DELETE_ALLOWED_FLAG,
1000           p_ATTRIBUTE_CATEGORY  => l_header_rec.ATTRIBUTE_CATEGORY,
1001           p_ATTRIBUTE1  => l_header_rec.ATTRIBUTE1,
1002           p_ATTRIBUTE2  => l_header_rec.ATTRIBUTE2,
1003           p_ATTRIBUTE3  => l_header_rec.ATTRIBUTE3,
1004           p_ATTRIBUTE4  => l_header_rec.ATTRIBUTE4,
1005           p_ATTRIBUTE5  => l_header_rec.ATTRIBUTE5,
1006           p_ATTRIBUTE6  => l_header_rec.ATTRIBUTE6,
1007           p_ATTRIBUTE7  => l_header_rec.ATTRIBUTE7,
1008           p_ATTRIBUTE8  => l_header_rec.ATTRIBUTE8,
1009           p_ATTRIBUTE9  => l_header_rec.ATTRIBUTE9,
1010           p_ATTRIBUTE10  => l_header_rec.ATTRIBUTE10,
1011           p_ATTRIBUTE11  => l_header_rec.ATTRIBUTE11,
1012           p_ATTRIBUTE12  => l_header_rec.ATTRIBUTE12,
1013           p_ATTRIBUTE13  => l_header_rec.ATTRIBUTE13,
1014           p_ATTRIBUTE14  => l_header_rec.ATTRIBUTE14,
1015           p_ATTRIBUTE15  => l_header_rec.ATTRIBUTE15,
1016           p_PARENT_PROJECT  => l_header_rec.PARENT_PROJECT,
1017           p_LEAD_SOURCE_CODE  => l_header_rec.LEAD_SOURCE_CODE,
1018           p_ORIG_SYSTEM_REFERENCE  => l_header_rec.ORIG_SYSTEM_REFERENCE,
1019           p_CLOSE_COMPETITOR_ID  => l_header_rec.CLOSE_COMPETITOR_ID,
1020           p_END_USER_CUSTOMER_NAME  => l_header_rec.END_USER_CUSTOMER_NAME,
1021           p_PRICE_LIST_ID  => l_header_rec.PRICE_LIST_ID,
1022           p_DELETED_FLAG  => l_header_rec.DELETED_FLAG,
1023           p_AUTO_ASSIGNMENT_TYPE  => l_header_rec.AUTO_ASSIGNMENT_TYPE,
1024           p_PRM_ASSIGNMENT_TYPE  => l_header_rec.PRM_ASSIGNMENT_TYPE,
1025           p_CUSTOMER_BUDGET  => l_header_rec.CUSTOMER_BUDGET,
1026           p_METHODOLOGY_CODE  => l_header_rec.METHODOLOGY_CODE,
1027           p_SALES_METHODOLOGY_ID  => l_header_rec.SALES_METHODOLOGY_ID,
1028           p_ORIGINAL_LEAD_ID  => l_header_rec.ORIGINAL_LEAD_ID,
1029           p_DECISION_TIMEFRAME_CODE  => l_header_rec.DECISION_TIMEFRAME_CODE,
1030           p_INC_PARTNER_RESOURCE_ID=>l_header_rec.INCUMBENT_PARTNER_RESOURCE_ID,
1031           p_INC_PARTNER_PARTY_ID  => l_header_rec.INCUMBENT_PARTNER_PARTY_ID,
1032           p_OFFER_ID  => l_header_rec.OFFER_ID,
1033           p_VEHICLE_RESPONSE_CODE  => l_header_rec.VEHICLE_RESPONSE_CODE,
1034           p_BUDGET_STATUS_CODE  => l_header_rec.BUDGET_STATUS_CODE,
1035           p_FOLLOWUP_DATE  => l_header_rec.FOLLOWUP_DATE,
1036           p_PRM_EXEC_SPONSOR_FLAG  => l_header_rec.PRM_EXEC_SPONSOR_FLAG,
1037           p_PRM_PRJ_LEAD_IN_PLACE_FLAG=>l_header_rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
1038           p_PRM_IND_CLASSIFICATION_CODE =>
1039                                   l_header_rec.PRM_IND_CLASSIFICATION_CODE,
1040           p_PRM_LEAD_TYPE => l_header_rec.PRM_LEAD_TYPE,
1041           p_FREEZE_FLAG => l_header_rec.FREEZE_FLAG,
1042           p_PRM_REFERRAL_CODE => l_header_rec.PRM_REFERRAL_CODE,
1043           p_TOT_REVENUE_OPP_FORECAST_AMT => l_header_rec.TOTAL_REVENUE_OPP_FORECAST_AMT); -- Added for ASNB
1044 
1045       x_LEAD_ID := l_LEAD_ID;
1046 
1047       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1048           RAISE FND_API.G_EXC_ERROR;
1049       END IF;
1050 
1051       /* ffang 091100 for bug 1401095
1052       -- Get the salesgroup_id
1053       l_salesgroup_id := null;
1054       OPEN c_salesgroup_id(P_Identity_Salesforce_Id);
1055         FETCH c_salesgroup_id INTO l_salesgroup_id;
1056       CLOSE c_salesgroup_id;
1057       */
1058 
1059       l_Sales_Team_Rec.last_update_date      := SYSDATE;
1060       l_Sales_Team_Rec.last_updated_by       := FND_GLOBAL.USER_ID;
1061       l_Sales_Team_Rec.creation_date         := SYSDATE;
1062       l_Sales_Team_Rec.created_by            := FND_GLOBAL.USER_ID;
1063       l_Sales_Team_Rec.last_update_login     := FND_GLOBAL.CONC_LOGIN_ID;
1064       l_Sales_Team_Rec.team_leader_flag      := FND_API.G_MISS_CHAR;
1065       l_Sales_Team_Rec.customer_id           := l_header_rec.Customer_Id;
1066       l_Sales_Team_Rec.address_id            := l_header_rec.Address_Id;
1067       l_Sales_Team_Rec.salesforce_id         := P_Identity_Salesforce_Id;
1068       --l_Sales_Team_Rec.partner_cont_party_id := p_partner_cont_party_id;
1069       l_Sales_Team_Rec.lead_id               := x_lead_id;
1070       l_Sales_Team_Rec.team_leader_flag      := 'Y';
1071       l_Sales_Team_Rec.reassign_flag         := 'N';
1072       l_Sales_Team_Rec.freeze_flag           :=
1073                          nvl(FND_PROFILE.Value('AS_DEFAULT_FREEZE_FLAG'), 'Y');
1074 
1075       l_sales_team_rec.sales_group_id        := l_salesgroup_id;
1076       l_sales_team_rec.salesforce_role_code  := FND_PROFILE.Value('AS_DEF_OPP_ST_ROLE');
1077 
1078       OPEN get_person_id_csr(P_Identity_Salesforce_Id);
1079       FETCH get_person_id_csr into l_Sales_Team_Rec.person_id;
1080 
1081       IF (get_person_id_csr%NOTFOUND)
1082       THEN
1083           l_Sales_Team_Rec.person_id := NULL;
1084       END IF;
1085       CLOSE get_person_id_csr;
1086 
1087       -- Debug Message
1088       IF l_debug THEN
1089       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1090                    'owner_sf_id: '||l_header_rec.owner_salesforce_id );
1091       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1092                    'owner_sg_id: '||l_header_rec.owner_sales_group_id );
1093       END IF;
1094 
1095 
1096       -- If owner = creater = employee then set the owner_flag for the salesteam record.
1097       IF (l_header_rec.owner_salesforce_id IS NOT NULL) AND
1098 	 (l_header_rec.owner_sales_group_id IS NOT NULL) AND
1099 	 (l_header_rec.owner_salesforce_id = P_Identity_Salesforce_Id ) AND
1100 	 (l_header_rec.owner_sales_group_id = l_salesgroup_id ) AND
1101 	 Is_Employee(l_header_rec.owner_salesforce_id)
1102       THEN
1103 	  --l_sales_team_rec.owner_flag := 'Y';
1104           l_Sales_Team_Rec.freeze_flag := 'Y';
1105 	  l_is_owner := 'Y';
1106       END IF;
1107 
1108       -- If owner is not selected and creator is employee
1109       -- then set the owner_flag for the creater salesteam record.
1110       IF (l_header_rec.owner_salesforce_id IS NULL OR
1111 	  l_header_rec.owner_salesforce_id = FND_API.G_MISS_NUM ) AND
1112 	 (l_header_rec.owner_sales_group_id IS NULL OR
1113 	  l_header_rec.owner_sales_group_id = FND_API.G_MISS_NUM ) AND
1114  	 Is_Employee(P_Identity_Salesforce_Id)
1115       THEN
1116 	  --l_sales_team_rec.owner_flag := 'Y';
1117           --l_Sales_Team_Rec.freeze_flag := 'Y';
1118 	  l_Sales_Team_Rec.freeze_flag := nvl(FND_PROFILE.Value('AS_DEFAULT_FREEZE_FLAG'), 'Y');
1119 	  l_is_owner := 'Y';
1120       END IF;
1121 
1122       -- Debug Message
1123       IF l_debug THEN
1124       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1125                                    'Calling Create_SalesTeam');
1126       END IF;
1127 
1128       AS_ACCESS_PUB.Create_SalesTeam (
1129          p_api_version_number         => 2.0
1130         ,p_init_msg_list              => FND_API.G_FALSE
1131         ,p_commit                     => FND_API.G_FALSE
1132         ,p_validation_level           => p_Validation_Level
1133         ,p_access_profile_rec         => l_access_profile_rec
1134         ,p_check_access_flag          => 'O' -- P_Check_Access_flag
1135         ,p_admin_flag                 => P_Admin_Flag
1136         ,p_admin_group_id             => P_Admin_Group_Id
1137         ,p_identity_salesforce_id     => P_Identity_Salesforce_Id
1138         ,p_sales_team_rec             => l_Sales_Team_Rec
1139         ,X_Return_Status              => x_Return_Status
1140         ,X_Msg_Count                  => X_Msg_Count
1141         ,X_Msg_Data                   => X_Msg_Data
1142         ,x_access_id                  => l_Access_Id
1143       );
1144 
1145       -- Debug Message
1146       IF l_debug THEN
1147       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1148                            'Create_SalesTeam:l_access_id = ' || l_access_id);
1149       END IF;
1150 
1151 
1152 
1153       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1154            RAISE FND_API.G_EXC_ERROR;
1155       END IF;
1156 
1157       IF ( l_is_owner = 'Y' ) THEN
1158 	  Set_owner(l_access_id );
1159       END IF;
1160 
1161       -- Create salesteam record for owner if different from creater
1162       IF (l_header_rec.owner_salesforce_id IS NOT NULL) AND
1163  	 (l_header_rec.owner_salesforce_id <> FND_API.G_MISS_NUM ) AND
1164 	 (l_header_rec.owner_salesforce_id <> P_Identity_Salesforce_Id OR
1165 	  l_header_rec.owner_sales_group_id <>l_salesgroup_id )
1166       THEN
1167 	  l_Sales_Team_Rec.salesforce_id  := l_header_rec.owner_salesforce_id;
1168 	  l_sales_team_rec.sales_group_id := l_header_rec.owner_sales_group_id;
1169 
1170       	  OPEN get_person_id_csr(l_header_rec.owner_salesforce_id);
1171       	  FETCH get_person_id_csr into l_Sales_Team_Rec.person_id;
1172       	  CLOSE get_person_id_csr;
1173 
1174 	  --l_sales_team_rec.owner_flag := 'Y';
1175           l_Sales_Team_Rec.freeze_flag := 'Y';
1176 	  l_is_owner := 'Y';
1177 
1178       	  -- Debug Message
1179       	  IF l_debug THEN
1180       	  AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1181                                    'Calling Create_SalesTeam for owner');
1182 	  END IF;
1183 
1184       	  AS_ACCESS_PUB.Create_SalesTeam (
1185          	p_api_version_number         => 2.0
1186         	,p_init_msg_list              => FND_API.G_FALSE
1187          	,p_commit                     => FND_API.G_FALSE
1188         	,p_validation_level           => p_Validation_Level
1189         	,p_access_profile_rec         => l_access_profile_rec
1190         	,p_check_access_flag          => 'O' -- P_Check_Access_flag
1191         	,p_admin_flag                 => P_Admin_Flag
1192         	,p_admin_group_id             => P_Admin_Group_Id
1193         	,p_identity_salesforce_id     => P_Identity_Salesforce_Id
1194         	,p_sales_team_rec             => l_Sales_Team_Rec
1195         	,X_Return_Status              => x_Return_Status
1196         	,X_Msg_Count                  => X_Msg_Count
1197         	,X_Msg_Data                   => X_Msg_Data
1198         	,x_access_id                  => l_Access_Id
1199     	  );
1200 
1201       	  -- Debug Message
1202       	  IF l_debug THEN
1203       	  	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Create_Owner_ST:l_access_id = ' || l_access_id);
1204       	  END IF;
1205 
1206 
1207 
1208       	  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1209            	RAISE FND_API.G_EXC_ERROR;
1210       	  END IF;
1211 
1212     	  IF ( l_is_owner = 'Y' ) THEN
1213 	      Set_owner(l_access_id );
1214       	  END IF;
1215 
1216       END IF;
1217 
1218       -- Assign/Reassign the territory resources for the opportunity
1219       -- Debug Message
1220       IF l_debug THEN
1221       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Calling Opportunity Real Time API');
1222       END IF;
1223 
1224 
1225       AS_RTTAP_OPPTY.RTTAP_WRAPPER(
1226     	  P_Api_Version_Number         => 1.0,
1227     	  P_Init_Msg_List              => FND_API.G_FALSE,
1228     	  P_Commit                     => FND_API.G_FALSE,
1229     	  p_lead_id		       => l_lead_id,
1230      	  X_Return_Status              => x_return_status,
1231     	  X_Msg_Count                  => x_msg_count,
1232     	  X_Msg_Data                   => x_msg_data
1233     	);
1234 
1235       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1236             IF l_debug THEN
1237             	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Opportunity Real Time API fail');
1238 	    END IF;
1239             RAISE FND_API.G_EXC_ERROR;
1240       END IF;
1241 
1242 
1243       -- Debug Message
1244       IF l_debug THEN
1245       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Calling Recreate_tasks');
1246       END IF;
1247 
1248       Recreate_tasks(
1249     		p_LEAD_ID		 	=> l_lead_id,
1250     		p_RESOURCE_ID			=> p_identity_salesforce_id,
1251     		p_OLD_SALES_METHODOLOGY_ID	=> l_old_sales_methodology_id,
1252     		p_OLD_SALES_STAGE_ID		=> l_old_sales_stage_id,
1253     		p_SALES_METHODOLOGY_ID		=> l_header_rec.SALES_METHODOLOGY_ID,
1254     		p_SALES_STAGE_ID		=> l_header_rec.SALES_STAGE_ID,
1255     		x_return_status 		=> x_return_status,
1256                 X_Msg_Count                     => X_Msg_Count,
1257                 X_Msg_Data                      => X_Msg_Data,
1258 		X_Warning_Message		=> l_warning_msg );
1259 
1260       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1261             IF l_debug THEN
1262             	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Recreate_tasks fail');
1263 	    END IF;
1264 
1265             RAISE FND_API.G_EXC_ERROR;
1266       END IF;
1267 
1268 
1269 /*
1270       -- Create lead competitor
1271       IF (l_header_rec.CLOSE_COMPETITOR_ID  IS NOT NULL) AND
1272 	 (l_header_rec.CLOSE_COMPETITOR_ID  <> FND_API.G_MISS_NUM ) THEN
1273 
1274           Create_lead_competitor(
1275       		P_Api_Version_Number         => 2.0,
1276       		P_Init_Msg_List              => FND_API.G_FALSE,
1277       		P_Commit                     => p_commit,
1278       		P_Validation_Level           => P_Validation_Level,
1279       		P_Check_Access_Flag          => p_check_access_flag,
1280       		P_Admin_Flag                 => P_Admin_Flag,
1281       		P_Admin_Group_Id             => P_Admin_Group_Id,
1282       		P_Identity_Salesforce_Id     => P_Identity_Salesforce_Id,
1283       		P_Partner_Cont_Party_Id	     => p_partner_cont_party_id,
1284       		P_Profile_Tbl                => P_Profile_tbl,
1285     		p_LEAD_ID		     => l_lead_id,
1286 		p_COMPETITOR_ID		     => l_header_rec.CLOSE_COMPETITOR_ID,
1287       		X_Return_Status              => x_return_status,
1288       		X_Msg_Count                  => x_msg_count,
1289       		X_Msg_Data                   => x_msg_data);
1290 
1291           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1292                 IF l_debug THEN
1293                 	AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Create lead competitor fail');
1294 		END IF;
1295 
1296                 RAISE FND_API.G_EXC_ERROR;
1297           END IF;
1298       END IF;
1299 */
1300 
1301       -- Update competitor Products for the win/loss status
1302       IF (l_lead_id IS NOT NULL)AND
1303          (l_header_rec.STATUS_CODE IS NOT NULL) AND
1304 	 (l_header_rec.STATUS_CODE <> FND_API.G_MISS_CHAR ) THEN
1305 
1306 	  Update_Competitor_Products(
1307     		p_LEAD_ID		=> l_lead_id,
1308     		p_STATUS_CODE		=> l_header_rec.STATUS_CODE,
1309     		x_return_status 	=> x_return_status);
1310 
1311           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1312                 IF l_debug THEN
1313                 	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Update competitor Products  fail');
1314                 END IF;
1315                 RAISE FND_API.G_EXC_ERROR;
1316           END IF;
1317 
1318       END IF;
1319 
1320 
1321       --
1322       -- End of API body
1323       --
1324 
1325       -- Standard check for p_commit
1326       IF FND_API.to_Boolean( p_commit )
1327       THEN
1328           COMMIT WORK;
1329       END IF;
1330 
1331 
1332       -- Debug Message
1333       IF l_debug THEN
1334       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: ' || l_api_name || ' end');
1335       END IF;
1336 
1337 
1338 
1339       -- Standard call to get message count and if count is 1, get message info.
1340       FND_MSG_PUB.Count_And_Get
1341       (  p_count          =>   x_msg_count,
1342          p_data           =>   x_msg_data
1343       );
1344 
1345       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1346         x_msg_data := l_winprob_warning_msg || '#####'|| l_warning_msg;
1347 	--x_msg_data := l_warning_msg;
1348       END IF;
1349 
1350 
1351 
1352 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
1353 /*
1354       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
1355       -- invoked for customization purpose
1356       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
1357       THEN
1358           AS_CALLOUT_PKG.Create_opp_header_AC(
1359                   p_api_version_number   =>  2.0,
1360                   p_init_msg_list        =>  FND_API.G_FALSE,
1361                   p_commit               =>  FND_API.G_FALSE,
1362                   p_validation_level     =>  p_validation_level,
1363                   P_Header_Rec           =>  l_Header_Rec,
1364           -- Hint: Add detail tables as parameter lists if it's master-detail
1365           -- relationship.
1366                   x_return_status        =>  x_return_status,
1367                   x_msg_count            =>  x_msg_count,
1368                   x_msg_data             =>  x_msg_data);
1369       END IF;
1370 */
1371       EXCEPTION
1372           WHEN FND_API.G_EXC_ERROR THEN
1373               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1374                    P_MODULE => l_module
1375                   ,P_API_NAME => L_API_NAME
1376                   ,P_PKG_NAME => G_PKG_NAME
1377                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1378                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1379                   ,X_MSG_COUNT => X_MSG_COUNT
1380                   ,X_MSG_DATA => X_MSG_DATA
1381                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1382 
1383           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1384               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1385                    P_MODULE => l_module
1386                   ,P_API_NAME => L_API_NAME
1387                   ,P_PKG_NAME => G_PKG_NAME
1388                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1389                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1390                   ,X_MSG_COUNT => X_MSG_COUNT
1391                   ,X_MSG_DATA => X_MSG_DATA
1392                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1393 
1394           WHEN OTHERS THEN
1395               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1396                    P_MODULE => l_module
1397                   ,P_API_NAME => L_API_NAME
1398                   ,P_PKG_NAME => G_PKG_NAME
1399                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1400                   ,P_SQLCODE => SQLCODE
1401                   ,P_SQLERRM => SQLERRM
1402                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1403                   ,X_MSG_COUNT => X_MSG_COUNT
1404                   ,X_MSG_DATA => X_MSG_DATA
1405                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1406 End Create_opp_header;
1407 
1408 
1409 PROCEDURE Update_opp_header(
1410     P_Api_Version_Number         IN  NUMBER,
1411     P_Init_Msg_List              IN  VARCHAR2     := FND_API.G_FALSE,
1412     P_Commit                     IN  VARCHAR2     := FND_API.G_FALSE,
1413     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
1414     P_Check_Access_Flag          IN  VARCHAR2     := FND_API.G_FALSE,
1415     P_Admin_Flag                 IN  VARCHAR2     := FND_API.G_FALSE,
1416     P_Admin_Group_Id             IN  NUMBER,
1417     P_Identity_Salesforce_Id     IN  NUMBER       := NULL,
1418     P_profile_tbl                IN  AS_UTILITY_PUB.PROFILE_TBL_TYPE,
1419     P_Partner_Cont_Party_id      IN  NUMBER       := FND_API.G_MISS_NUM,
1420     P_Header_Rec                 IN  AS_OPPORTUNITY_PUB.Header_Rec_Type,
1421     X_Return_Status              OUT NOCOPY  VARCHAR2,
1422     X_Msg_Count                  OUT NOCOPY  NUMBER,
1423     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1424     )
1425 
1426  IS
1427 Cursor C_Get_opp_header(c_LEAD_ID Number) IS
1428     Select LAST_UPDATE_DATE, DELETED_FLAG,
1429            WIN_PROBABILITY, nvl(TOTAL_REVENUE_OPP_FORECAST_AMT, 0), STATUS,
1430            SALES_STAGE_ID, DECISION_DATE, LEAD_NUMBER, FREEZE_FLAG,
1431            sales_methodology_id, sales_stage_id, customer_id, address_id,
1432            owner_salesforce_id, owner_sales_group_id
1433     FROM AS_LEADS_ALL
1434     WHERE LEAD_ID = c_LEAD_ID
1435     For Update NOWAIT;
1436 
1437 cursor c_close_reason(p_lead_id NUMBER) IS
1438  	select close_reason
1439 	from as_leads_all
1440 	where lead_id = p_lead_id;
1441 
1442 cursor close_competitor_exist(p_lead_id NUMBER) IS
1443 	select 'Y'
1444 	from as_leads_all
1445 	where lead_id = p_lead_id
1446 	and close_competitor_id is not null;
1447 
1448 cursor comp_required ( p_status_profile VARCHAR2, p_lead_id NUMBER) IS
1449 	select 'Y'
1450 	from 	as_leads_all ld,
1451 		as_statuses_b st
1452 	where 	ld.status = st.status_code
1453 	and     ld.lead_id = p_lead_id
1454 	and 	(( p_status_profile = 'BOTH' and
1455 			( st.OPP_OPEN_STATUS_FLAG <> 'Y' or st.FORECAST_ROLLUP_FLAG = 'Y')) OR
1456 		 ( p_status_profile = 'CLOSED' and st.OPP_OPEN_STATUS_FLAG <> 'Y') OR
1457 		 ( p_status_profile = 'FORECASTED' and st.OPP_OPEN_STATUS_FLAG <> 'Y') );
1458 
1459 CURSOR get_person_id_csr(c_salesforce_id NUMBER) is
1460      select employee_person_id
1461      from as_salesforce_v
1462      where salesforce_id = c_salesforce_id;
1463 
1464 CURSOR c_sales_credit_amount (p_lead_id as_leads_all.lead_id%type) IS
1465 	Select sales_credit_id, credit_type_id,credit_amount
1466 	From as_sales_credits
1467 	Where lead_id = p_lead_id;
1468 
1469 CURSOR c_get_status_flags (p_status_code VARCHAR2) IS
1470     Select status.win_loss_indicator,
1471            status.forecast_rollup_flag
1472     From as_statuses_vl status
1473     Where status.status_code = p_status_code;
1474 
1475 l_api_name                CONSTANT VARCHAR2(30) := 'Update_opp_header';
1476 l_api_version_number      CONSTANT NUMBER   := 2.0;
1477 -- Local Variables
1478 l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
1479 --l_tar_Header_rec        AS_OPPORTUNITY_PUB.Header_Rec_Type := P_Header_Rec;
1480 l_access_profile_rec      AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
1481 l_access_flag             VARCHAR2(1);
1482 l_deleted_flag            VARCHAR2(1);
1483 l_access_id               NUMBER;
1484 l_last_update_date        DATE;
1485 l_win_prob                NUMBER;
1486 l_status                  VARCHAR2(30);
1487 l_sales_stage_id          NUMBER;
1488 l_decision_date           DATE;
1489 l_lead_number             VARCHAR2(30);
1490 l_freeze_flag             VARCHAR2(1); -- solin, bug 1554330
1491 l_note_id                 NUMBER;
1492 l_header_rec              AS_OPPORTUNITY_PUB.Header_Rec_Type := P_Header_Rec;
1493 l_header_rec1             AS_OPPORTUNITY_PUB.Header_Rec_Type;
1494 l_allow_flag              VARCHAR2(1); -- solin, bug 1554330
1495 
1496 l_old_sales_methodology_id 	NUMBER := null;
1497 l_old_sales_stage_id 		NUMBER := null;
1498 l_new_SALES_METHODOLOGY_ID 		NUMBER := null;
1499 l_new_SALES_STAGE_ID 		NUMBER := null;
1500 
1501 l_comp_required_profile		VARCHAR2(1) := FND_PROFILE.VALUE ('AS_COMPETITOR_REQUIRED');
1502 
1503 l_warning_msg 		VARCHAR2(2000) := '';
1504 l_winprob_warning_msg 	VARCHAR2(2000) := '';
1505 
1506 -- for owner update
1507 l_customer_id		NUMBER;
1508 l_address_id		NUMBER;
1509 l_owner_salesforce_id   NUMBER;
1510 l_owner_sales_group_id	NUMBER;
1511 l_Sales_Team_Rec        AS_ACCESS_PUB.Sales_Team_Rec_Type
1512                               := AS_ACCESS_PUB.G_MISS_SALES_TEAM_REC;
1513 l_opp_worst_forecast_amount NUMBER;
1514 l_opp_forecast_amount       NUMBER;
1515 l_opp_best_forecast_amount  NUMBER;
1516 l_win_probability       NUMBER;
1517 l_win_loss_indicator    as_statuses_b.win_loss_indicator%Type;
1518 l_forecast_rollup_flag  as_statuses_b.forecast_rollup_flag%Type;
1519 l_old_win_probability       NUMBER;
1520 l_old_win_loss_indicator    as_statuses_b.win_loss_indicator%Type;
1521 l_old_forecast_rollup_flag  as_statuses_b.forecast_rollup_flag%Type;
1522 l_old_tot_rev_opp_forecast_amt NUMBER; -- Added for ASNB
1523 l_tot_rev_opp_forecast_amt NUMBER; -- Added for R12
1524 l_update_count             NUMBER;
1525 l_count NUMBER;
1526 l_forecast_credit_type_id CONSTANT NUMBER := FND_PROFILE.VALUE('AS_FORECAST_CREDIT_TYPE_ID');
1527 l_temp_bool     BOOLEAN;
1528 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
1529 x_lead_id		NUMBER;
1530 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Update_opp_header';
1531 
1532  BEGIN
1533       -- Standard Start of API savepoint
1534       SAVEPOINT UPDATE_OPP_HEADER_PVT;
1535 
1536       -- Standard call to check for call compatibility.
1537       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1538                          	             p_api_version_number,
1539                                            l_api_name,
1540                                            G_PKG_NAME)
1541       THEN
1542           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1543       END IF;
1544 
1545 
1546       -- Initialize message list if p_init_msg_list is set to TRUE.
1547       IF FND_API.to_Boolean( p_init_msg_list )
1548       THEN
1549           FND_MSG_PUB.initialize;
1550       END IF;
1551 
1552 
1553       -- Debug Message
1554       IF l_debug THEN
1555       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: ' || l_api_name || ' start');
1556       END IF;
1557 
1558 
1559       -- Initialize API return status to SUCCESS
1560       x_return_status := FND_API.G_RET_STS_SUCCESS;
1561 
1562       --
1563       -- Api body
1564       --
1565 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
1566 /*
1567       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
1568       -- invoked for customization purpose
1569       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
1570       THEN
1571           AS_CALLOUT_PKG.Update_opp_header_BU(
1572                   p_api_version_number   =>  2.0,
1573                   p_init_msg_list        =>  FND_API.G_FALSE,
1574                   p_commit               =>  FND_API.G_FALSE,
1575                   p_validation_level     =>  p_validation_level,
1576                   p_identity_salesforce_id => p_identity_salesforce_id,
1577                   P_Header_Rec      =>  l_Header_Rec,
1578           -- Hint: Add detail tables as parameter lists if it's master-detail
1579           -- relationship.
1580                   x_return_status        =>  x_return_status,
1581                   x_msg_count            =>  x_msg_count,
1582                   x_msg_data             =>  x_msg_data);
1583       END IF;
1584 */
1585 
1586       IF (p_validation_level = fnd_api.g_valid_level_full)
1587       THEN
1588           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
1589               p_api_version_number => 2.0
1590              ,p_init_msg_list      => p_init_msg_list
1591              ,p_salesforce_id => p_identity_salesforce_id
1592              ,p_admin_group_id => p_admin_group_id
1593              ,x_return_status => x_return_status
1594              ,x_msg_count => x_msg_count
1595              ,x_msg_data => x_msg_data
1596              ,x_sales_member_rec => l_identity_sales_member_rec);
1597       END IF;
1598 
1599       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1600           RAISE FND_API.G_EXC_ERROR;
1601       END IF;
1602 
1603       -- Debug Message
1604       IF l_debug THEN
1605       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Open Cursor to Select');
1606       END IF;
1607 
1608 
1609       Open C_Get_opp_header( l_Header_rec.LEAD_ID);
1610       Fetch C_Get_opp_header into l_last_update_date, l_deleted_flag,
1611         l_win_prob, l_old_tot_rev_opp_forecast_amt, l_status,
1612         l_sales_stage_id, l_decision_date, l_lead_number, l_freeze_flag,
1613 		l_old_sales_methodology_id, l_old_sales_stage_id,
1614 		l_customer_id, l_address_id,
1615 		l_owner_salesforce_id, l_owner_sales_group_id;
1616 
1617       -- Basic info for forecast defaulting, includes l_old_tot_rev_opp_forecast_amt and l_status from
1618       -- above cursor
1619       l_old_win_probability := l_win_prob;
1620 
1621       -- If deleted_flag is 'Y', this opportunity header has been soft deleted.
1622       IF (UPPER(l_deleted_flag) = 'Y')
1623       THEN
1624           AS_UTILITY_PVT.Set_Message(
1625               p_module        => l_module,
1626               p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1627               p_msg_name      => 'API_DELETED_OPP_HEADER');
1628 
1629           raise FND_API.G_EXC_ERROR;
1630       END IF;
1631 
1632       -- Moved the following section for bug 2407000
1633       -- solin, for bug 1554330
1634       IF l_freeze_flag = 'Y'
1635       THEN
1636           l_allow_flag := NVL(FND_PROFILE.VALUE('AS_ALLOW_UPDATE_FROZEN_OPP'),'Y');
1637           IF l_allow_flag <> 'Y' THEN
1638               AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1639                                            'API_OPP_FROZEN');
1640               RAISE FND_API.G_EXC_ERROR;
1641           END IF;
1642       END IF;
1643       -- end 1554330
1644 
1645       IF ( C_Get_opp_header%NOTFOUND)
1646       THEN
1647           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1648           THEN
1649               -- FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
1650               -- FND_MESSAGE.Set_Token ('INFO', 'opp_header', FALSE);
1651               -- FND_MSG_PUB.Add;
1652 
1653               AS_UTILITY_PVT.Set_Message(
1654                   p_module        => l_module,
1655                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1656                   p_msg_name      => 'API_MISSING_OPP_HEADER_UPDATE');
1657 
1658           END IF;
1659           raise FND_API.G_EXC_ERROR;
1660       END IF;
1661 
1662       -- Debug Message
1663       IF l_debug THEN
1664       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
1665       END IF;
1666       close     C_Get_opp_header;
1667 
1668       If (l_Header_rec.last_update_date is NULL or
1669           l_Header_rec.last_update_date = FND_API.G_MISS_Date ) Then
1670           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1671           THEN
1672               -- FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
1673               -- FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
1674               -- FND_MSG_PUB.ADD;
1675 
1676               AS_UTILITY_PVT.Set_Message(
1677                   p_module        => l_module,
1678                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1679                   p_msg_name      => 'API_MISSING_LAST_UPDATE_DATE');
1680 
1681           END IF;
1682           raise FND_API.G_EXC_ERROR;
1683       End if;
1684       -- Check Whether record has been changed by someone else
1685       If (l_Header_rec.last_update_date <> l_last_update_date) Then
1686           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1687           THEN
1688               -- FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
1689               -- FND_MESSAGE.Set_Token('INFO', 'opp_header', FALSE);
1690               -- FND_MSG_PUB.ADD;
1691 
1692               AS_UTILITY_PVT.Set_Message(
1693                   p_module        => l_module,
1694                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1695                   p_msg_name      => 'API_OPP_HEADER_CHANGED');
1696 
1697           END IF;
1698           raise FND_API.G_EXC_ERROR;
1699       End if;
1700 
1701       -- Set default value to decision_date, channel_code, status_code,
1702       -- sales_stage_id, win_probability, freeze_flag, and currency_code as
1703       -- profile values.
1704       If (l_Header_Rec.decision_date IS NULL) or
1705          (l_Header_Rec.channel_code IS NULL) or
1706          (l_Header_Rec.STATUS_CODE IS NULL) or
1707          (l_Header_Rec.sales_stage_id IS NULL) or
1708          (l_Header_Rec.win_probability IS NULL) or
1709          (l_Header_Rec.currency_code IS NULL) or
1710          (l_Header_Rec.freeze_flag IS NULL) or -- solin for B1554330
1711          (l_Header_Rec.auto_assignment_type IS NULL) or --ffang 091500 for B1407007
1712          (l_Header_Rec.prm_assignment_type IS NULL) --ffang 091500 for B1407007
1713       THEN
1714           IF l_debug THEN
1715           	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Calling Set_opp_default_values');
1716           END IF;
1717 
1718 	  l_header_rec1 := l_header_rec;
1719           Set_opp_default_values(
1720                 p_mode       => AS_UTILITY_PVT.G_UPDATE,
1721                 p_opp_rec    => l_Header_Rec1,
1722                 x_opp_rec    => l_Header_Rec );
1723 
1724       End If;
1725 
1726       -- Trunc desidion date
1727       l_Header_Rec.decision_date := trunc(l_Header_Rec.decision_date);
1728 
1729 
1730       If(l_Header_Rec.close_reason = FND_API.G_MISS_CHAR) THEN
1731 	open c_close_reason(l_Header_Rec.lead_id);
1732 	fetch c_close_reason into l_Header_Rec.close_reason;
1733 	close c_close_reason;
1734       END IF;
1735 
1736       -- Debug message
1737       IF l_debug THEN
1738       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_opp_header');
1739       END IF;
1740 
1741 
1742       -- Invoke validation procedures
1743       Validate_opp_header(
1744           p_init_msg_list    => FND_API.G_FALSE,
1745           p_validation_level => p_validation_level,
1746           p_validation_mode  => AS_UTILITY_PVT.G_UPDATE,
1747           P_Header_Rec       => l_Header_Rec,
1748           x_return_status    => x_return_status,
1749           x_msg_count        => x_msg_count,
1750           x_msg_data         => x_msg_data);
1751 
1752       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1753           RAISE FND_API.G_EXC_ERROR;
1754       END IF;
1755 
1756       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1757                 l_winprob_warning_msg := x_msg_data;
1758       END IF;
1759 
1760 /*
1761       -- Validate required close_competitor_id
1762       IF nvl(l_comp_required_profile, 'N') = 'Y' THEN
1763           open close_competitor_exist(l_Header_Rec.lead_id);
1764           fetch close_competitor_exist into l_close_competitor_exist;
1765           close close_competitor_exist;
1766 
1767           IF (nvl(l_close_competitor_exist, 'N') = 'N' AND
1768 	     l_Header_Rec.CLOSE_COMPETITOR_ID = FND_API.G_MISS_NUM ) OR
1769 	     l_Header_Rec.CLOSE_COMPETITOR_ID IS NULL
1770           THEN
1771 	      open comp_required(l_comp_required_status, l_Header_Rec.lead_id);
1772 	      fetch comp_required into l_comp_required;
1773 	      close comp_required;
1774 
1775 	      IF l_Header_Rec.win_probability >= to_number ( nvl(l_comp_required_prob, '101')) THEN
1776 	 	l_comp_required := 'Y';
1777 	      END IF;
1778 
1779 	      IF nvl(l_comp_required, 'N') = 'Y' THEN
1780 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1781           	THEN
1782               	    AS_UTILITY_PVT.Set_Message(
1783                   	p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
1784                   	p_msg_name      => 'API_CLOSE_COMPETITOR_REQUIRED');
1785           	END IF;
1786           	raise FND_API.G_EXC_ERROR;
1787 	      END IF;
1788           END IF;
1789       END IF;
1790 
1791 */
1792       -- Call Get_Access_Profiles to get access_profile_rec
1793       AS_OPPORTUNITY_PUB.Get_Access_Profiles(
1794           p_profile_tbl         => p_profile_tbl,
1795           x_access_profile_rec  => l_access_profile_rec);
1796 
1797 
1798       -- Access checking
1799       IF p_check_access_flag = 'Y'
1800       THEN
1801           -- Please un-comment here and complete it
1802           AS_ACCESS_PUB.Has_updateOpportunityAccess(
1803               p_api_version_number     => 2.0,
1804               p_init_msg_list          => p_init_msg_list,
1805               p_validation_level       => p_validation_level,
1806               p_access_profile_rec     => l_access_profile_rec,
1807               p_admin_flag             => p_admin_flag,
1808               p_admin_group_id         => p_admin_group_id,
1809               p_person_id              =>
1810                                 l_identity_sales_member_rec.employee_person_id,
1811               p_opportunity_id         => l_Header_Rec.lead_id,
1812               p_check_access_flag      => 'Y',
1813               p_identity_salesforce_id => p_identity_salesforce_id,
1814               p_partner_cont_party_id  => NULL,
1815               x_return_status          => x_return_status,
1816               x_msg_count              => x_msg_count,
1817               x_msg_data               => x_msg_data,
1818               x_update_access_flag       => l_access_flag);
1819 
1820           IF l_access_flag <> 'Y' THEN
1821               AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
1822                                            'API_NO_UPDATE_PRIVILEGE');
1823               RAISE FND_API.G_EXC_ERROR;
1824           END IF;
1825 
1826           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1827               RAISE FND_API.G_EXC_ERROR;
1828           END IF;
1829 
1830       END IF;
1831 
1832       -- Create notes
1833 
1834       -- if profile AS_OPPTY_GENERATE_NOTES is Y;
1835       -- when status, decision_date, sales_stage_id, or win prob. changes,
1836       -- note will be created automatically.
1837 
1838       IF NVL(FND_PROFILE.Value('AS_OPPTY_GENERATE_NOTES'),'N') = 'Y'
1839       THEN
1840 
1841 	  IF l_header_rec.status_code = FND_API.G_MISS_CHAR THEN
1842 	      l_header_rec.status_code := l_status;
1843 	  END IF;
1844 	  IF l_header_rec.decision_date = FND_API.G_MISS_DATE THEN
1845 	      l_header_rec.decision_date := l_decision_date;
1846 	  END IF;
1847 	  IF l_header_rec.sales_stage_id = FND_API.G_MISS_NUM THEN
1848 	      l_header_rec.sales_stage_id := l_sales_stage_id;
1849 	  END IF;
1850    	  IF l_header_rec.win_probability = FND_API.G_MISS_NUM THEN
1851 	      l_header_rec.win_probability := l_win_prob;
1852 	  END IF;
1853 
1854           IF (l_header_rec.status_code <> l_status) or
1855              (l_header_rec.decision_date <> l_decision_date) or
1856              (l_header_rec.sales_stage_id <> l_sales_stage_id) or
1857              (l_header_rec.win_probability <> l_win_prob)
1858           THEN
1859               -- Debug message
1860               IF l_debug THEN
1861               	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Create notes');
1862               END IF;
1863 
1864               IF (l_header_rec.lead_number is NOT NULL) and
1865                  (l_header_rec.lead_number <> FND_API.G_MISS_CHAR)
1866               THEN
1867                   l_lead_number := l_header_rec.lead_number;
1868               END IF;
1869 
1870               HEADER_CREATE_NOTE(
1871                   p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1872                   p_header_rec       => l_header_rec,
1873                   p_lead_number      => l_lead_number,
1874                   p_win_prob         => l_win_prob,
1875                   p_status           => l_status,
1876                   p_sales_stage_id   => l_sales_stage_id,
1877                   p_decision_date    => l_decision_date,
1878                   x_note_id          => l_note_id,
1879                   x_return_status    => x_return_status,
1880                   x_msg_count        => x_msg_count,
1881                   x_msg_data         => x_msg_data
1882               );
1883 
1884               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1885                   RAISE FND_API.G_EXC_ERROR;
1886               ELSE
1887                   IF l_debug THEN
1888                   	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Notes created. note_id=' || l_note_id);
1889                   END IF;
1890               END IF;
1891           END IF;
1892       END IF;
1893 
1894       -- check the priviledge to change owner.
1895 
1896       IF ( nvl(l_header_rec.owner_salesforce_id, -99) <> FND_API.G_MISS_NUM AND
1897            nvl(l_header_rec.owner_salesforce_id, -99) <> nvl(l_owner_salesforce_id, -99)) OR
1898 	 ( nvl(l_header_rec.owner_sales_group_id, -99) <> FND_API.G_MISS_NUM AND
1899 	   nvl(l_header_rec.owner_sales_group_id, -99) <> nvl(l_owner_sales_group_id, -99))
1900       THEN
1901  	  -- check priviledge
1902       	  AS_ACCESS_PVT.has_oppOwnerAccess
1903 	  (    p_api_version_number     => 2.0
1904 	      ,p_init_msg_list          => p_init_msg_list
1905 	      ,p_validation_level       => p_validation_level
1906 	      ,p_access_profile_rec     => l_access_profile_rec
1907 	      ,p_admin_flag             => p_admin_flag
1908 	      ,p_admin_group_id         => p_admin_group_id
1909 	      ,p_person_id              => l_identity_sales_member_rec.employee_person_id
1910 	      ,p_lead_id         	=> l_Header_Rec.lead_id
1911 	      ,p_check_access_flag      => 'Y'
1912 	      ,p_identity_salesforce_id => p_identity_salesforce_id
1913 	      ,p_partner_cont_party_id  => Null
1914 	      ,x_return_status          => x_return_status
1915 	      ,x_msg_count              => x_msg_count
1916 	      ,x_msg_data               => x_msg_data
1917 	      ,x_update_access_flag     => l_access_flag
1918    	  );
1919 
1920 	  IF (l_access_flag <> 'Y') THEN
1921                 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1922 		    FND_MESSAGE.Set_Name('AS', 'API_NO_OPP_OWNER_PRIVILEGE');
1923 		    FND_MSG_PUB.ADD;
1924 		END IF;
1925 		RAISE FND_API.G_EXC_ERROR;
1926 	  END IF;
1927 
1928 	  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1929 	        IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
1930 		    AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'has_oppOwnerAccess fail');
1931 		END IF;
1932                 RAISE FND_API.G_EXC_ERROR;
1933 	  END IF;
1934       END IF;
1935 
1936 
1937 
1938       -- Hint: Add corresponding Master-Detail business logic here if necessary.
1939 
1940       -- Debug Message
1941       IF l_debug THEN
1942       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
1943                                    'Private API: Calling update table handler');
1944 
1945       END IF;
1946 
1947       -- Begin get old and new values for forecast defaulting
1948       Open c_get_status_flags(l_status);
1949       Fetch c_get_status_flags Into l_old_win_loss_indicator, l_old_forecast_rollup_flag;
1950       IF c_get_status_flags%NOTFOUND THEN
1951           l_old_win_loss_indicator := NULL;
1952           l_old_forecast_rollup_flag := NULL;
1953       END IF;
1954       Close c_get_status_flags;
1955 
1956       l_win_probability := l_header_rec.WIN_PROBABILITY;
1957       IF l_win_probability = FND_API.G_MISS_NUM THEN
1958         l_win_probability := l_old_win_probability;
1959       END IF;
1960 
1961       IF l_status = l_header_rec.STATUS_CODE OR l_header_rec.STATUS_CODE = FND_API.G_MISS_CHAR THEN
1962         l_win_loss_indicator := l_old_win_loss_indicator;
1963         l_forecast_rollup_flag := l_old_forecast_rollup_flag;
1964       ELSE
1965         Open c_get_status_flags(l_header_rec.STATUS_CODE);
1966         Fetch c_get_status_flags Into l_win_loss_indicator, l_forecast_rollup_flag;
1967         IF c_get_status_flags%NOTFOUND THEN
1968             l_win_loss_indicator := NULL;
1969             l_forecast_rollup_flag := NULL;
1970         END IF;
1971         Close c_get_status_flags;
1972       END IF;
1973 
1974       l_tot_rev_opp_forecast_amt :=
1975         nvl(l_header_rec.TOTAL_REVENUE_OPP_FORECAST_AMT, FND_API.G_MISS_NUM);
1976 
1977       IF nvl(l_forecast_rollup_flag, 'N') <> 'Y' THEN
1978         l_tot_rev_opp_forecast_amt := FND_API.G_MISS_NUM;
1979       END IF;
1980       -- End get old and new values for forecast defaulting
1981 
1982       -- Invoke table handler(AS_LEADS_PKG.Update_Row)
1983       AS_LEADS_PKG.Update_Row(
1984           p_LEAD_ID  => l_Header_rec.LEAD_ID,
1985           p_LAST_UPDATE_DATE  => SYSDATE,
1986           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
1987           p_CREATION_DATE  => FND_API.G_MISS_DATE,
1988           p_CREATED_BY  => FND_API.G_MISS_NUM,
1989           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
1990           p_REQUEST_ID  => l_Header_rec.REQUEST_ID,
1991           p_PROGRAM_APPLICATION_ID  => l_Header_rec.PROGRAM_APPLICATION_ID,
1992           p_PROGRAM_ID  => l_Header_rec.PROGRAM_ID,
1993           p_PROGRAM_UPDATE_DATE  => l_Header_rec.PROGRAM_UPDATE_DATE,
1994           p_LEAD_NUMBER  => FND_API.G_MISS_CHAR,  -- l_Header_rec.LEAD_NUMBER,
1995           p_STATUS  => l_HEADER_REC.STATUS_CODE,
1996           p_CUSTOMER_ID  => l_Header_rec.CUSTOMER_ID,
1997           p_ADDRESS_ID  => l_Header_rec.ADDRESS_ID,
1998           p_SALES_STAGE_ID  => l_Header_rec.SALES_STAGE_ID,
1999           p_INITIATING_CONTACT_ID  => l_Header_rec.INITIATING_CONTACT_ID,
2000           p_CHANNEL_CODE  => l_Header_rec.CHANNEL_CODE,
2001           p_TOTAL_AMOUNT  => l_Header_rec.TOTAL_AMOUNT,
2002           p_CURRENCY_CODE  => l_Header_rec.CURRENCY_CODE,
2003           p_DECISION_DATE  => l_Header_rec.DECISION_DATE,
2004           p_WIN_PROBABILITY  => l_Header_rec.WIN_PROBABILITY,
2005           p_CLOSE_REASON  => l_Header_rec.CLOSE_REASON,
2006           p_CLOSE_COMPETITOR_CODE  => l_Header_rec.CLOSE_COMPETITOR_CODE,
2007           p_CLOSE_COMPETITOR  => l_Header_rec.CLOSE_COMPETITOR,
2008           p_CLOSE_COMMENT  => l_Header_rec.CLOSE_COMMENT,
2009           p_DESCRIPTION  => l_Header_rec.DESCRIPTION,
2010           p_RANK  => l_Header_rec.RANK,
2011           p_SOURCE_PROMOTION_ID  => l_Header_rec.SOURCE_PROMOTION_ID,
2012           p_END_USER_CUSTOMER_ID  => l_Header_rec.END_USER_CUSTOMER_ID,
2013           p_END_USER_ADDRESS_ID  => l_Header_rec.END_USER_ADDRESS_ID,
2014           p_OWNER_SALESFORCE_ID  => l_header_rec.OWNER_SALESFORCE_ID,
2015           p_OWNER_SALES_GROUP_ID => l_header_rec.OWNER_SALES_GROUP_ID,
2016           --p_OWNER_ASSIGN_DATE  => l_header_rec.OWNER_ASSIGN_DATE,
2017           p_ORG_ID  => l_Header_rec.ORG_ID,
2018           p_NO_OPP_ALLOWED_FLAG  => l_Header_rec.NO_OPP_ALLOWED_FLAG,
2019           p_DELETE_ALLOWED_FLAG  => l_Header_rec.DELETE_ALLOWED_FLAG,
2020           p_ATTRIBUTE_CATEGORY  => l_Header_rec.ATTRIBUTE_CATEGORY,
2021           p_ATTRIBUTE1  => l_Header_rec.ATTRIBUTE1,
2022           p_ATTRIBUTE2  => l_Header_rec.ATTRIBUTE2,
2023           p_ATTRIBUTE3  => l_Header_rec.ATTRIBUTE3,
2024           p_ATTRIBUTE4  => l_Header_rec.ATTRIBUTE4,
2025           p_ATTRIBUTE5  => l_Header_rec.ATTRIBUTE5,
2026           p_ATTRIBUTE6  => l_Header_rec.ATTRIBUTE6,
2027           p_ATTRIBUTE7  => l_Header_rec.ATTRIBUTE7,
2028           p_ATTRIBUTE8  => l_Header_rec.ATTRIBUTE8,
2029           p_ATTRIBUTE9  => l_Header_rec.ATTRIBUTE9,
2030           p_ATTRIBUTE10  => l_Header_rec.ATTRIBUTE10,
2031           p_ATTRIBUTE11  => l_Header_rec.ATTRIBUTE11,
2032           p_ATTRIBUTE12  => l_Header_rec.ATTRIBUTE12,
2033           p_ATTRIBUTE13  => l_Header_rec.ATTRIBUTE13,
2034           p_ATTRIBUTE14  => l_Header_rec.ATTRIBUTE14,
2035           p_ATTRIBUTE15  => l_Header_rec.ATTRIBUTE15,
2036           p_PARENT_PROJECT  => l_Header_rec.PARENT_PROJECT,
2037           p_LEAD_SOURCE_CODE  => l_Header_rec.LEAD_SOURCE_CODE,
2038           p_ORIG_SYSTEM_REFERENCE  => l_Header_rec.ORIG_SYSTEM_REFERENCE,
2039           p_CLOSE_COMPETITOR_ID  => l_Header_rec.CLOSE_COMPETITOR_ID,
2040           p_END_USER_CUSTOMER_NAME  => l_Header_rec.END_USER_CUSTOMER_NAME,
2041           p_PRICE_LIST_ID  => l_Header_rec.PRICE_LIST_ID,
2042           p_DELETED_FLAG  => l_Header_rec.DELETED_FLAG,
2043           p_AUTO_ASSIGNMENT_TYPE  => l_Header_rec.AUTO_ASSIGNMENT_TYPE,
2044           p_PRM_ASSIGNMENT_TYPE  => l_Header_rec.PRM_ASSIGNMENT_TYPE,
2045           p_CUSTOMER_BUDGET  => l_Header_rec.CUSTOMER_BUDGET,
2046           p_METHODOLOGY_CODE  => l_Header_rec.METHODOLOGY_CODE,
2047           p_SALES_METHODOLOGY_ID  => l_header_rec.SALES_METHODOLOGY_ID,
2048           p_ORIGINAL_LEAD_ID  => l_Header_rec.ORIGINAL_LEAD_ID,
2049           p_DECISION_TIMEFRAME_CODE  => l_Header_rec.DECISION_TIMEFRAME_CODE,
2050           p_INC_PARTNER_RESOURCE_ID=>l_Header_rec.INCUMBENT_PARTNER_RESOURCE_ID,
2051           p_INC_PARTNER_PARTY_ID  => l_Header_rec.INCUMBENT_PARTNER_PARTY_ID,
2052           p_OFFER_ID  => l_Header_rec.OFFER_ID,
2053           p_VEHICLE_RESPONSE_CODE  => l_Header_rec.VEHICLE_RESPONSE_CODE,
2054           p_BUDGET_STATUS_CODE  => l_Header_rec.BUDGET_STATUS_CODE,
2055           p_FOLLOWUP_DATE  => l_Header_rec.FOLLOWUP_DATE,
2056           p_PRM_EXEC_SPONSOR_FLAG  => l_Header_rec.PRM_EXEC_SPONSOR_FLAG,
2057           p_PRM_PRJ_LEAD_IN_PLACE_FLAG=>l_Header_rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
2058           p_PRM_IND_CLASSIFICATION_CODE  =>
2059                                       l_Header_rec.PRM_IND_CLASSIFICATION_CODE,
2060           p_PRM_LEAD_TYPE  => l_Header_rec.PRM_LEAD_TYPE,
2061           p_FREEZE_FLAG => l_Header_rec.FREEZE_FLAG,
2062           p_PRM_REFERRAL_CODE => l_Header_rec.PRM_REFERRAL_CODE);
2063 
2064       -- If decision_date changed Synchronize the forecast_date in purchase lines
2065       -- with decision_date in the header if the rolloing_forecast_flag = 'Y';
2066 
2067       IF l_Header_rec.DECISION_DATE <> FND_API.G_MISS_DATE AND
2068 	  trunc(l_Header_rec.DECISION_DATE) <> trunc(l_decision_date)
2069       THEN
2070        	  UPDATE AS_LEAD_LINES_ALL
2071       	  SET object_version_number =  nvl(object_version_number,0) + 1, FORECAST_DATE = l_Header_rec.DECISION_DATE
2072 	  --last_update_date = SYSDATE,
2073           --last_updated_by = FND_GLOBAL.USER_ID,
2074           --last_update_login = FND_GLOBAL.CONC_LOGIN_ID
2075       	  WHERE lead_id = l_Header_rec.lead_id
2076       	  AND rolling_forecast_flag = 'Y';
2077       END IF;
2078 
2079       Select lead.win_probability, status.win_loss_indicator,
2080              status.forecast_rollup_flag
2081       Into   l_win_probability, l_win_loss_indicator,
2082              l_forecast_rollup_flag
2083       From as_leads_all lead, as_statuses_vl status
2084       Where lead_id = l_Header_rec.LEAD_ID
2085       And lead.status = status.status_code(+);
2086 
2087       IF AS_OPP_SALES_CREDIT_PVT.Apply_Forecast_Defaults(
2088           l_old_win_probability, l_old_win_loss_indicator,
2089           l_old_forecast_rollup_flag, 0, l_win_probability,
2090           l_win_loss_indicator, l_forecast_rollup_flag, 0, 'ON-UPDATE',
2091           l_opp_worst_forecast_amount, l_opp_forecast_amount,
2092           l_opp_best_forecast_amount)
2093       THEN
2094         l_tot_rev_opp_forecast_amt := 0;
2095         FOR curr_rec_sc_amt IN c_sales_credit_amount (l_Header_rec.LEAD_ID) LOOP
2096             l_temp_bool := AS_OPP_SALES_CREDIT_PVT.Apply_Forecast_Defaults(
2097                 l_old_win_probability, l_old_win_loss_indicator,
2098                 l_old_forecast_rollup_flag, curr_rec_sc_amt.credit_amount,
2099                 l_win_probability, l_win_loss_indicator, l_forecast_rollup_flag,
2100                 curr_rec_sc_amt.credit_amount, 'ON-UPDATE',
2101                 l_opp_worst_forecast_amount, l_opp_forecast_amount,
2102                 l_opp_best_forecast_amount);
2103             Update as_sales_credits
2104             Set object_version_number = nvl(object_version_number, 0) + 1,
2105                 opp_worst_forecast_amount = l_opp_worst_forecast_amount,
2106                 opp_forecast_amount = l_opp_forecast_amount,
2107                 opp_best_forecast_amount = l_opp_best_forecast_amount
2108             Where sales_credit_id = curr_rec_sc_amt.sales_credit_id;
2109             -- The following condition added for ASNB
2110             IF curr_rec_sc_amt.credit_type_id= l_forecast_credit_type_id THEN
2111                 l_tot_rev_opp_forecast_amt := nvl(l_tot_rev_opp_forecast_amt,0) + nvl(l_opp_forecast_amount,0);
2112             END IF;
2113         END LOOP;
2114         -- The following update added for ASNB
2115         UPDATE AS_LEADS_ALL
2116         SET TOTAL_REVENUE_OPP_FORECAST_AMT = nvl(l_tot_rev_opp_forecast_amt,0)
2117         WHERE lead_id = l_Header_rec.lead_id;
2118       ELSIF nvl(l_tot_rev_opp_forecast_amt, 0) <> FND_API.G_MISS_NUM THEN
2119         l_update_count := 0;
2120         -- Trickle down supplied TOTAL_REVENUE_OPP_FORECAST_AMT to
2121         -- sales credits/lines
2122         IF l_old_tot_rev_opp_forecast_amt = 0 THEN
2123             Select count(*) into l_count from as_sales_credits
2124             where lead_id = l_Header_rec.LEAD_ID and
2125                   credit_type_id = l_forecast_credit_type_id;
2126             IF l_count > 0 THEN -- Equally distribute
2127                 l_opp_forecast_amount := nvl(l_tot_rev_opp_forecast_amt, 0)/l_count;
2128                 Update as_sales_credits set opp_forecast_amount = l_opp_forecast_amount
2129                 where lead_id = l_Header_rec.LEAD_ID AND
2130                       credit_type_id = l_forecast_credit_type_id;
2131                 l_update_count := SQL%ROWCOUNT;
2132             END IF;
2133         ELSE
2134             Update as_sales_credits
2135             Set opp_forecast_amount =
2136                 nvl(l_tot_rev_opp_forecast_amt, 0) * (nvl(opp_forecast_amount, 0)/l_old_tot_rev_opp_forecast_amt)
2137             where lead_id = l_Header_rec.LEAD_ID AND
2138                   credit_type_id = l_forecast_credit_type_id;
2139             l_update_count := SQL%ROWCOUNT;
2140         END IF;
2141 
2142         IF l_update_count = 0 THEN
2143             l_tot_rev_opp_forecast_amt := NULL;
2144         END IF;
2145 
2146         UPDATE AS_LEADS_ALL
2147       	SET TOTAL_REVENUE_OPP_FORECAST_AMT = l_tot_rev_opp_forecast_amt
2148       	WHERE lead_id = l_Header_rec.lead_id;
2149       END IF;
2150 
2151       -- Reset the owner in the sales team
2152       -- Debug Message
2153       IF l_debug THEN
2154       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2155                    'owner_sf_id: '||l_header_rec.owner_salesforce_id );
2156       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2157                    'owner_sg_id: '||l_header_rec.owner_sales_group_id );
2158 
2159       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2160                    'l_owner_sf_id: '||l_owner_salesforce_id );
2161       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2162                    'l_owner_sg_id: '||l_owner_sales_group_id );
2163       END IF;
2164 
2165 
2166       IF (l_header_rec.owner_salesforce_id IS NOT NULL) AND
2167 	 (l_header_rec.owner_salesforce_id <> FND_API.G_MISS_NUM ) AND
2168 	 (l_header_rec.owner_sales_group_id IS NOT NULL) AND
2169 	 (l_header_rec.owner_sales_group_id <> FND_API.G_MISS_NUM )
2170       THEN
2171 	  update as_accesses_all
2172 	  set object_version_number =  nvl(object_version_number,0) + 1, owner_flag = null,
2173               last_update_date = SYSDATE,
2174               last_updated_by = FND_GLOBAL.USER_ID,
2175               last_update_login = FND_GLOBAL.CONC_LOGIN_ID
2176 	  where lead_id = l_Header_rec.lead_id;
2177 
2178 	  update as_accesses_all
2179 	  set object_version_number =  nvl(object_version_number,0) + 1, owner_flag = 'Y',
2180 	      freeze_flag = 'Y',
2181 	      team_leader_flag = 'Y', -- Fix for bug# 4196657
2182               last_update_date = SYSDATE,
2183               last_updated_by = FND_GLOBAL.USER_ID,
2184               last_update_login = FND_GLOBAL.CONC_LOGIN_ID
2185 	  where access_id in
2186 		( select min(access_id)
2187 		  from as_accesses_all
2188 		  where lead_id = l_Header_rec.lead_id
2189 		  and sales_group_id = l_header_rec.owner_sales_group_id
2190 		  and salesforce_id = l_header_rec.owner_salesforce_id );
2191 
2192 	  IF (SQL%NOTFOUND) THEN
2193 
2194 	        -- create a salesteam for the new owner
2195       		l_Sales_Team_Rec.last_update_date      := SYSDATE;
2196       		l_Sales_Team_Rec.last_updated_by       := FND_GLOBAL.USER_ID;
2197       		l_Sales_Team_Rec.creation_date         := SYSDATE;
2198       		l_Sales_Team_Rec.created_by            := FND_GLOBAL.USER_ID;
2199       		l_Sales_Team_Rec.last_update_login     := FND_GLOBAL.CONC_LOGIN_ID;
2200       		l_Sales_Team_Rec.customer_id           := l_Customer_Id;
2201       		l_Sales_Team_Rec.address_id            := l_Address_Id;
2202      		l_Sales_Team_Rec.lead_id               := l_header_rec.lead_id;
2203       		l_Sales_Team_Rec.salesforce_id         := l_header_rec.owner_salesforce_id;
2204       		l_sales_team_rec.sales_group_id        := l_header_rec.owner_sales_group_id;
2205       		l_sales_team_rec.salesforce_role_code  := FND_PROFILE.Value('AS_DEF_OPP_ST_ROLE');
2206       		l_Sales_Team_Rec.team_leader_flag      := 'Y';
2207       		l_Sales_Team_Rec.reassign_flag         := 'N';
2208       		l_Sales_Team_Rec.freeze_flag           := 'Y';
2209 		--l_Sales_Team_Rec.owner_flag            := 'Y';
2210 
2211 	     	OPEN get_person_id_csr(l_header_rec.owner_salesforce_id);
2212       	  	FETCH get_person_id_csr into l_Sales_Team_Rec.person_id;
2213       	  	CLOSE get_person_id_csr;
2214 
2215       		-- Debug Message
2216       		IF l_debug THEN
2217       		AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2218                                    'Calling Create_SalesTeam');
2219 
2220       		END IF;
2221 
2222       		AS_ACCESS_PUB.Create_SalesTeam (
2223          		p_api_version_number         => 2.0
2224         		,p_init_msg_list              => FND_API.G_FALSE
2225         		,p_commit                     => FND_API.G_FALSE
2226         		,p_validation_level           => p_Validation_Level
2227         		,p_access_profile_rec         => l_access_profile_rec
2228         		,p_check_access_flag          => 'N' -- P_Check_Access_flag
2229         		,p_admin_flag                 => P_Admin_Flag
2230         		,p_admin_group_id             => P_Admin_Group_Id
2231         		,p_identity_salesforce_id     => P_Identity_Salesforce_Id
2232         		,p_sales_team_rec             => l_Sales_Team_Rec
2233         		,X_Return_Status              => x_Return_Status
2234         		,X_Msg_Count                  => X_Msg_Count
2235         		,X_Msg_Data                   => X_Msg_Data
2236         		,x_access_id                  => l_Access_Id
2237       		);
2238 
2239       		-- Debug Message
2240       		IF l_debug THEN
2241       		AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2242                            'Create_owner_ST :l_access_id = ' || l_access_id);
2243 		END IF;
2244 
2245 
2246       		IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2247            		RAISE FND_API.G_EXC_ERROR;
2248       		END IF;
2249 
2250 		UPDATE AS_ACCESSES_ALL
2251 		SET object_version_number =  nvl(object_version_number,0) + 1, OWNER_FLAG = 'Y'
2252 		WHERE access_id = l_access_id;
2253 
2254 	  END IF; -- NOTFOUND
2255 
2256       ELSIF (l_header_rec.owner_salesforce_id IS NULL) AND
2257 	    (l_header_rec.owner_sales_group_id IS NULL) THEN
2258 
2259 	  update as_accesses_all
2260 	  set object_version_number =  nvl(object_version_number,0) + 1, owner_flag = null,
2261               last_update_date = SYSDATE,
2262               last_updated_by = FND_GLOBAL.USER_ID,
2263               last_update_login = FND_GLOBAL.CONC_LOGIN_ID
2264 	  where lead_id = l_Header_rec.lead_id;
2265 
2266       END IF;
2267 
2268       -- Assign/Reassign the territory resources for the opportunity
2269 
2270       -- Debug Message
2271       IF l_debug THEN
2272 	      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Calling Opportunity Real Time API');
2273       END IF;
2274 
2275       AS_RTTAP_OPPTY.RTTAP_WRAPPER(
2276     	  P_Api_Version_Number         => 1.0,
2277     	  P_Init_Msg_List              => FND_API.G_FALSE,
2278     	  P_Commit                     => FND_API.G_FALSE,
2279     	  p_lead_id		       => l_header_rec.lead_id,
2280      	  X_Return_Status              => x_return_status,
2281     	  X_Msg_Count                  => x_msg_count,
2282     	  X_Msg_Data                   => x_msg_data
2283     	);
2284 
2285         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2286             IF l_debug THEN
2287             	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Opportunity Real Time API fail');
2288             END IF;
2289             RAISE FND_API.G_EXC_ERROR;
2290         END IF;
2291 
2292 
2293       -- Debug Message
2294       IF l_debug THEN
2295       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Calling Recreate_tasks');
2296       END IF;
2297 
2298 
2299       l_new_SALES_METHODOLOGY_ID := l_header_rec.SALES_METHODOLOGY_ID;
2300       l_new_SALES_STAGE_ID := l_header_rec.SALES_STAGE_ID;
2301 
2302       IF l_new_SALES_METHODOLOGY_ID = FND_API.G_MISS_NUM THEN
2303 	 l_new_SALES_METHODOLOGY_ID := l_old_sales_methodology_id;
2304       END IF;
2305       IF l_new_SALES_STAGE_ID = FND_API.G_MISS_NUM THEN
2306 	 l_new_SALES_STAGE_ID := l_old_sales_stage_id;
2307       END IF;
2308 
2309       IF l_old_sales_methodology_id IS NOT NULL AND
2310 	 nvl(l_new_SALES_METHODOLOGY_ID, -99) <> l_old_sales_methodology_id THEN
2311 
2312 	    IF l_debug THEN
2313 	    AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2314                       'Should not change Sales methodology');
2315 	    END IF;
2316 
2317             AS_UTILITY_PVT.Set_Message(
2318                   p_module        => l_module,
2319                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2320                   p_msg_name      => 'API_NO_UPDATE_SALES_METHODOLOGY');
2321 
2322 
2323             RAISE FND_API.G_EXC_ERROR;
2324       END IF;
2325 
2326       Recreate_tasks(
2327     		p_LEAD_ID		 	=> l_header_rec.lead_id,
2328     		p_RESOURCE_ID			=> p_identity_salesforce_id,
2329     		p_OLD_SALES_METHODOLOGY_ID	=> l_old_sales_methodology_id,
2330     		p_OLD_SALES_STAGE_ID		=> l_old_sales_stage_id,
2331     		p_SALES_METHODOLOGY_ID		=> l_new_SALES_METHODOLOGY_ID,
2332     		p_SALES_STAGE_ID		=> l_new_SALES_STAGE_ID,
2333     		x_return_status 		=> x_return_status,
2334                 X_Msg_Count                     => X_Msg_Count,
2335                 X_Msg_Data                      => X_Msg_Data,
2336 		X_Warning_Message		=> l_warning_msg );
2337 
2338       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2339             IF l_debug THEN
2340             AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2341                   'Recreate_tasks fail');
2342 	    END IF;
2343 
2344             RAISE FND_API.G_EXC_ERROR;
2345       END IF;
2346 /*
2347       -- Create lead competitor
2348       IF (l_header_rec.CLOSE_COMPETITOR_ID  IS NOT NULL) AND
2349 	 (l_header_rec.CLOSE_COMPETITOR_ID  <> FND_API.G_MISS_NUM ) THEN
2350 
2351           Create_lead_competitor(
2352       		P_Api_Version_Number         => 2.0,
2353       		P_Init_Msg_List              => FND_API.G_FALSE,
2354       		P_Commit                     => p_commit,
2355       		P_Validation_Level           => P_Validation_Level,
2356       		P_Check_Access_Flag          => p_check_access_flag,
2357       		P_Admin_Flag                 => P_Admin_Flag,
2358       		P_Admin_Group_Id             => P_Admin_Group_Id,
2359       		P_Identity_Salesforce_Id     => P_Identity_Salesforce_Id,
2360       		P_Partner_Cont_Party_Id	     => p_partner_cont_party_id,
2361       		P_Profile_Tbl                => P_Profile_tbl,
2362     		p_LEAD_ID		     => l_header_rec.lead_id,
2363 		p_COMPETITOR_ID		     => l_header_rec.CLOSE_COMPETITOR_ID,
2364       		X_Return_Status              => x_return_status,
2365       		X_Msg_Count                  => x_msg_count,
2366       		X_Msg_Data                   => x_msg_data);
2367 
2368           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2369                 IF l_debug THEN
2370                 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2371                       'Create lead competitor fail');
2372                 END IF;
2373 
2374                 RAISE FND_API.G_EXC_ERROR;
2375           END IF;
2376 
2377       END IF;
2378 */
2379 
2380       -- Update competitor Products for the win/loss status
2381       IF (l_header_rec.lead_id IS NOT NULL)AND
2382          (l_header_rec.STATUS_CODE IS NOT NULL) AND
2383 	 (l_header_rec.STATUS_CODE <> FND_API.G_MISS_CHAR ) THEN
2384 
2385 	  Update_Competitor_Products(
2386     		p_LEAD_ID		=> l_header_rec.LEAD_ID,
2387     		p_STATUS_CODE		=> l_header_rec.STATUS_CODE,
2388     		x_return_status 	=> x_return_status);
2389 
2390           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2391                 IF l_debug THEN
2392                 AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2393                       'Update competitor Products  fail');
2394                 END IF;
2395                 RAISE FND_API.G_EXC_ERROR;
2396           END IF;
2397       END IF;
2398 
2399 
2400 
2401       --
2402       -- End of API body.
2403       --
2404 
2405       -- Standard check for p_commit
2406       IF FND_API.to_Boolean( p_commit )
2407       THEN
2408           COMMIT WORK;
2409       END IF;
2410 
2411 
2412       -- Debug Message
2413       IF l_debug THEN
2414       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2415                                    'Private API: ' || l_api_name || ' end');
2416       END IF;
2417 
2418 
2419       -- Standard call to get message count and if count is 1, get message info.
2420       FND_MSG_PUB.Count_And_Get
2421       (  p_count          =>   x_msg_count,
2422          p_data           =>   x_msg_data
2423       );
2424 
2425       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2426         x_msg_data := l_winprob_warning_msg || '#####'|| l_warning_msg;
2427 	--x_msg_data := l_warning_msg;
2428       END IF;
2429 
2430 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
2431 /*
2432       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
2433       -- invoked for customization purpose
2434       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
2435       THEN
2436           AS_CALLOUT_PKG.Update_opp_header_AU(
2437                   p_api_version_number   =>  2.0,
2438                   p_init_msg_list        =>  FND_API.G_FALSE,
2439                   p_commit               =>  FND_API.G_FALSE,
2440                   p_validation_level     =>  p_validation_level,
2441                   p_identity_salesforce_id => p_identity_salesforce_id,
2442                   P_Header_Rec      =>  l_Header_Rec,
2443           -- Hint: Add detail tables as parameter lists if it's master-detail
2444           --       relationship.
2445                   x_return_status        =>  x_return_status,
2446                   x_msg_count            =>  x_msg_count,
2447                   x_msg_data             =>  x_msg_data);
2448       END IF;
2449 */
2450       EXCEPTION
2451           WHEN FND_API.G_EXC_ERROR THEN
2452               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2453                    P_MODULE => l_module
2454                   ,P_API_NAME => L_API_NAME
2455                   ,P_PKG_NAME => G_PKG_NAME
2456                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
2457                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2458                   ,X_MSG_COUNT => X_MSG_COUNT
2459                   ,X_MSG_DATA => X_MSG_DATA
2460                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2461 
2462           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2463               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2464                    P_MODULE => l_module
2465                   ,P_API_NAME => L_API_NAME
2466                   ,P_PKG_NAME => G_PKG_NAME
2467                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2468                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2469                   ,X_MSG_COUNT => X_MSG_COUNT
2470                   ,X_MSG_DATA => X_MSG_DATA
2471                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2472 
2473           WHEN OTHERS THEN
2474               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2475                    P_MODULE => l_module
2476                   ,P_API_NAME => L_API_NAME
2477                   ,P_PKG_NAME => G_PKG_NAME
2478                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
2479                   ,P_SQLCODE => SQLCODE
2480                   ,P_SQLERRM => SQLERRM
2481                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2482                   ,X_MSG_COUNT => X_MSG_COUNT
2483                   ,X_MSG_DATA => X_MSG_DATA
2484                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2485 End Update_opp_header;
2486 
2487 
2488 PROCEDURE Delete_opp_header(
2489     P_Api_Version_Number         IN   NUMBER,
2490     P_Init_Msg_List              IN   VARCHAR2    := FND_API.G_FALSE,
2491     P_Commit                     IN   VARCHAR2    := FND_API.G_FALSE,
2492     p_validation_level           IN   NUMBER      := FND_API.G_VALID_LEVEL_FULL,
2493     P_Check_Access_Flag          IN   VARCHAR2    := FND_API.G_FALSE,
2494     P_Admin_Flag                 IN   VARCHAR2    := FND_API.G_FALSE,
2495     P_Admin_Group_Id             IN   NUMBER,
2496     P_Identity_Salesforce_Id     IN   NUMBER      := NULL,
2497     P_profile_tbl                IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
2498     P_Partner_Cont_Party_id      IN   NUMBER      := FND_API.G_MISS_NUM,
2499     P_lead_id                    IN   NUMBER,
2500     X_Return_Status              OUT NOCOPY  VARCHAR2,
2501     X_Msg_Count                  OUT NOCOPY  NUMBER,
2502     X_Msg_Data                   OUT NOCOPY  VARCHAR2
2503     )
2504 
2505  IS
2506 Cursor C_Get_opp_header(c_LEAD_ID Number) IS
2507     Select LAST_UPDATE_DATE, FREEZE_FLAG
2508     FROM AS_LEADS
2509     WHERE LEAD_ID = c_LEAD_ID
2510     For Update NOWAIT;
2511 
2512 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_opp_header';
2513 l_api_version_number      CONSTANT NUMBER   := 2.0;
2514 -- Local Variables
2515 l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
2516 l_last_update_date      DATE;
2517 l_freeze_flag             VARCHAR2(1) := 'N'; -- solin, for bug 1554330
2518 l_allow_flag              VARCHAR2(1);        -- solin, for bug 1554330
2519 l_access_profile_rec      AS_ACCESS_PUB.ACCESS_PROFILE_REC_TYPE;
2520 l_access_flag             VARCHAR2(1);
2521 l_val                     VARCHAR2(1);
2522 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
2523 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Delete_opp_header';
2524 
2525  BEGIN
2526       -- Standard Start of API savepoint
2527       SAVEPOINT DELETE_OPP_HEADER_PVT;
2528 
2529       -- Standard call to check for call compatibility.
2530       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2531                          	             p_api_version_number,
2532                                            l_api_name,
2533                                            G_PKG_NAME)
2534       THEN
2535           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2536       END IF;
2537 
2538 
2539       -- Initialize message list if p_init_msg_list is set to TRUE.
2540       IF FND_API.to_Boolean( p_init_msg_list )
2541       THEN
2542           FND_MSG_PUB.initialize;
2543       END IF;
2544 
2545 
2546       -- Debug Message
2547       IF l_debug THEN
2548       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2549                                    'Private API: ' || l_api_name || ' start');
2550       END IF;
2551 
2552 
2553       -- Initialize API return status to SUCCESS
2554       x_return_status := FND_API.G_RET_STS_SUCCESS;
2555 
2556       --
2557       -- Api body
2558       --
2559 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
2560 /*
2561       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is
2562       -- invoked for customization purpose
2563       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
2564       THEN
2565           AS_CALLOUT_PKG.Delete_opp_header_BU(
2566                   p_api_version_number   =>  2.0,
2567                   p_init_msg_list        =>  FND_API.G_FALSE,
2568                   p_commit               =>  FND_API.G_FALSE,
2569                   p_validation_level     =>  p_validation_level,
2570                   p_identity_salesforce_id => p_identity_salesforce_id,
2571                   P_Header_Rec      =>  p_Header_Rec,
2572           -- Hint: Add detail tables as parameter lists if it's master-detail
2573           -- relationship.
2574                   x_return_status        =>  x_return_status,
2575                   x_msg_count            =>  x_msg_count,
2576                   x_msg_data             =>  x_msg_data);
2577       END IF;
2578 */
2579 
2580       IF (p_validation_level = fnd_api.g_valid_level_full)
2581       THEN
2582           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
2583               p_api_version_number => 2.0
2584              ,p_init_msg_list      => p_init_msg_list
2585              ,p_salesforce_id => p_identity_salesforce_id
2586              ,p_admin_group_id => p_admin_group_id
2587              ,x_return_status => x_return_status
2588              ,x_msg_count => x_msg_count
2589              ,x_msg_data => x_msg_data
2590              ,x_sales_member_rec => l_identity_sales_member_rec);
2591       END IF;
2592 
2593       -- Debug Message
2594       IF l_debug THEN
2595       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Open Cursor to Select');
2596       END IF;
2597 
2598       Open C_Get_opp_header( p_LEAD_ID);
2599       Fetch C_Get_opp_header into l_last_update_date, l_freeze_flag;
2600 
2601       If ( C_Get_opp_header%NOTFOUND) Then
2602           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2603           THEN
2604               -- FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
2605               -- FND_MESSAGE.Set_Token ('INFO', 'opp_header', FALSE);
2606               -- FND_MSG_PUB.Add;
2607 
2608               AS_UTILITY_PVT.Set_Message(
2609                   p_module        => l_module,
2610                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2611                   p_msg_name      => 'API_MISSING_OPP_HEADER_UPDATE');
2612 
2613           END IF;
2614           raise FND_API.G_EXC_ERROR;
2615       END IF;
2616 
2617       -- Debug Message
2618       IF l_debug THEN
2619       	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
2620       END IF;
2621       close     C_Get_opp_header;
2622 
2623 /*
2624       If (p_Header_rec.last_update_date is NULL or
2625           p_Header_rec.last_update_date = FND_API.G_MISS_Date ) Then
2626           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2627           THEN
2628               -- FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
2629               -- FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
2630               -- FND_MSG_PUB.ADD;
2631 
2632               AS_UTILITY_PVT.Set_Message(
2633                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2634                   p_msg_name      => 'API_MISSING_LAST_UPDATE_DATE');
2635 
2636           END IF;
2637           raise FND_API.G_EXC_ERROR;
2638       End if;
2639       -- Check Whether record has been changed by someone else
2640       If (p_Header_rec.last_update_date <> l_last_update_date) Then
2641           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2642           THEN
2643               -- FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
2644               -- FND_MESSAGE.Set_Token('INFO', 'opp_header', FALSE);
2645               -- FND_MSG_PUB.ADD;
2646 
2647               AS_UTILITY_PVT.Set_Message(
2648                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2649                   p_msg_name      => 'API_OPP_HEADER_CHANGED');
2650 
2651           END IF;
2652           raise FND_API.G_EXC_ERROR;
2653       End if;
2654 */
2655 
2656 
2657 /*
2658       -- Debug message
2659       IF l_debug THEN
2660       	AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_opp_header');
2661       END IF;
2662 
2663       -- Invoke validation procedures
2664       Validate_opp_header(
2665           p_init_msg_list    => FND_API.G_FALSE,
2666           p_validation_level => p_validation_level,
2667           p_validation_mode  => AS_UTILITY_PVT.G_UPDATE,
2668           P_Header_Rec       => p_Header_Rec,
2669           x_return_status    => x_return_status,
2670           x_msg_count        => x_msg_count,
2671           x_msg_data         => x_msg_data);
2672 
2673       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2674           RAISE FND_API.G_EXC_ERROR;
2675       END IF;
2676 */
2677 
2678 
2679       -- Call Get_Access_Profiles to get access_profile_rec
2680       AS_OPPORTUNITY_PUB.Get_Access_Profiles(
2681           p_profile_tbl         => p_profile_tbl,
2682           x_access_profile_rec  => l_access_profile_rec);
2683 
2684 
2685       -- Access checking
2686       IF p_check_access_flag = 'Y'
2687       THEN
2688           -- Please un-comment here and complete it
2689           AS_ACCESS_PUB.Has_updateOpportunityAccess(
2690               p_api_version_number     => 2.0,
2691               p_init_msg_list          => p_init_msg_list,
2692               p_validation_level       => p_validation_level,
2693               p_access_profile_rec     => l_access_profile_rec,
2694               p_admin_flag             => p_admin_flag,
2695               p_admin_group_id         => p_admin_group_id,
2696               p_person_id              =>
2697                                 l_identity_sales_member_rec.employee_person_id,
2698               p_opportunity_id         => P_lead_id,
2699               p_check_access_flag      => 'Y',
2700               p_identity_salesforce_id => p_identity_salesforce_id,
2701               p_partner_cont_party_id  => NULL,
2702               x_return_status          => x_return_status,
2703               x_msg_count              => x_msg_count,
2704               x_msg_data               => x_msg_data,
2705               x_update_access_flag       => l_access_flag);
2706 
2707           IF l_access_flag <> 'Y' THEN
2708               AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
2709                                            'API_NO_UPDATE_PRIVILEGE');
2710               RAISE FND_API.G_EXC_ERROR;
2711           END IF;
2712 
2713           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2714               RAISE FND_API.G_EXC_ERROR;
2715           END IF;
2716 
2717       END IF;
2718 
2719       -- solin, for bug 1554330
2720       IF l_freeze_flag = 'Y'
2721       THEN
2722           l_allow_flag := NVL(FND_PROFILE.VALUE('AS_ALLOW_UPDATE_FROZEN_OPP'),'Y');
2723           IF l_allow_flag <> 'Y' THEN
2724               AS_UTILITY_PVT.Set_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
2725                                            'API_OPP_FROZEN');
2726               RAISE FND_API.G_EXC_ERROR;
2727           END IF;
2728       END IF;
2729       -- end 1554330
2730 
2731 
2732       -- Hint: Add corresponding Master-Detail business logic here if necessary.
2733 
2734       -- Debug Message
2735       IF l_debug THEN
2736       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2737                                    'Private API: Calling update table handler');
2738 
2739       END IF;
2740 
2741       -- Invoke table handler(AS_LEADS_PKG.Update_Row)
2742       AS_LEADS_PKG.Update_Row(
2743           p_LEAD_ID  => p_LEAD_ID,
2744           p_LAST_UPDATE_DATE  => SYSDATE,
2745           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
2746           p_CREATION_DATE  => FND_API.G_MISS_DATE,
2747           p_CREATED_BY  => FND_API.G_MISS_NUM,
2748           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
2749           p_REQUEST_ID  => FND_API.G_MISS_NUM,
2750           p_PROGRAM_APPLICATION_ID  => FND_API.G_MISS_NUM,
2751           p_PROGRAM_ID  => FND_API.G_MISS_NUM,
2752           p_PROGRAM_UPDATE_DATE  => FND_API.G_MISS_DATE,
2753           p_LEAD_NUMBER  => FND_API.G_MISS_CHAR,
2754           p_STATUS  => FND_API.G_MISS_CHAR,
2755           p_CUSTOMER_ID  => FND_API.G_MISS_NUM,
2756           p_ADDRESS_ID  => FND_API.G_MISS_NUM,
2757           p_SALES_STAGE_ID  => FND_API.G_MISS_NUM,
2758           p_INITIATING_CONTACT_ID  => FND_API.G_MISS_NUM,
2759           p_CHANNEL_CODE  => FND_API.G_MISS_CHAR,
2760           p_TOTAL_AMOUNT  => FND_API.G_MISS_NUM,
2761           p_CURRENCY_CODE  => FND_API.G_MISS_CHAR,
2762           p_DECISION_DATE  => FND_API.G_MISS_DATE,
2763           p_WIN_PROBABILITY  => FND_API.G_MISS_NUM,
2764           p_CLOSE_REASON  => FND_API.G_MISS_CHAR,
2765           p_CLOSE_COMPETITOR_CODE  => FND_API.G_MISS_CHAR,
2766           p_CLOSE_COMPETITOR  => FND_API.G_MISS_CHAR,
2767           p_CLOSE_COMMENT  => FND_API.G_MISS_CHAR,
2768           p_DESCRIPTION  => FND_API.G_MISS_CHAR,
2769           p_RANK  => FND_API.G_MISS_CHAR,
2770           p_SOURCE_PROMOTION_ID  => FND_API.G_MISS_NUM,
2771           p_END_USER_CUSTOMER_ID  => FND_API.G_MISS_NUM,
2772           p_END_USER_ADDRESS_ID  => FND_API.G_MISS_NUM,
2773           p_OWNER_SALESFORCE_ID  => FND_API.G_MISS_NUM,
2774           p_OWNER_SALES_GROUP_ID => FND_API.G_MISS_NUM,
2775           --p_OWNER_ASSIGN_DATE  => FND_API.G_MISS_DATE,
2776           p_ORG_ID  => FND_API.G_MISS_NUM,
2777           p_NO_OPP_ALLOWED_FLAG  => FND_API.G_MISS_CHAR,
2778           p_DELETE_ALLOWED_FLAG  => FND_API.G_MISS_CHAR,
2779           p_ATTRIBUTE_CATEGORY  => FND_API.G_MISS_CHAR,
2780           p_ATTRIBUTE1  => FND_API.G_MISS_CHAR,
2781           p_ATTRIBUTE2  => FND_API.G_MISS_CHAR,
2782           p_ATTRIBUTE3  => FND_API.G_MISS_CHAR,
2783           p_ATTRIBUTE4  => FND_API.G_MISS_CHAR,
2784           p_ATTRIBUTE5  => FND_API.G_MISS_CHAR,
2785           p_ATTRIBUTE6  => FND_API.G_MISS_CHAR,
2786           p_ATTRIBUTE7  => FND_API.G_MISS_CHAR,
2787           p_ATTRIBUTE8  => FND_API.G_MISS_CHAR,
2788           p_ATTRIBUTE9  => FND_API.G_MISS_CHAR,
2789           p_ATTRIBUTE10  => FND_API.G_MISS_CHAR,
2790           p_ATTRIBUTE11  => FND_API.G_MISS_CHAR,
2791           p_ATTRIBUTE12  => FND_API.G_MISS_CHAR,
2792           p_ATTRIBUTE13  => FND_API.G_MISS_CHAR,
2793           p_ATTRIBUTE14  => FND_API.G_MISS_CHAR,
2794           p_ATTRIBUTE15  => FND_API.G_MISS_CHAR,
2795           p_PARENT_PROJECT  => FND_API.G_MISS_CHAR,
2796           p_LEAD_SOURCE_CODE  => FND_API.G_MISS_CHAR,
2797           p_ORIG_SYSTEM_REFERENCE  => FND_API.G_MISS_CHAR,
2798           p_CLOSE_COMPETITOR_ID  => FND_API.G_MISS_NUM,
2799           p_END_USER_CUSTOMER_NAME  => FND_API.G_MISS_CHAR,
2800           p_PRICE_LIST_ID  => FND_API.G_MISS_NUM,
2801           p_DELETED_FLAG  => 'Y',
2802           p_AUTO_ASSIGNMENT_TYPE  => FND_API.G_MISS_CHAR,
2803           p_PRM_ASSIGNMENT_TYPE  => FND_API.G_MISS_CHAR,
2804           p_CUSTOMER_BUDGET  => FND_API.G_MISS_NUM,
2805           p_METHODOLOGY_CODE  => FND_API.G_MISS_CHAR,
2806           p_SALES_METHODOLOGY_ID  => FND_API.G_MISS_NUM,
2807           p_ORIGINAL_LEAD_ID  => FND_API.G_MISS_NUM,
2808           p_DECISION_TIMEFRAME_CODE  => FND_API.G_MISS_CHAR,
2809           p_INC_PARTNER_RESOURCE_ID=>FND_API.G_MISS_NUM,
2810           p_INC_PARTNER_PARTY_ID  => FND_API.G_MISS_NUM,
2811           p_OFFER_ID  => FND_API.G_MISS_NUM,
2812           p_VEHICLE_RESPONSE_CODE  => FND_API.G_MISS_CHAR,
2813           p_BUDGET_STATUS_CODE  => FND_API.G_MISS_CHAR,
2814           p_FOLLOWUP_DATE  => FND_API.G_MISS_DATE,
2815           p_PRM_EXEC_SPONSOR_FLAG  => FND_API.G_MISS_CHAR,
2816           p_PRM_PRJ_LEAD_IN_PLACE_FLAG=>FND_API.G_MISS_CHAR,
2817           p_PRM_IND_CLASSIFICATION_CODE  =>
2818                                       FND_API.G_MISS_CHAR,
2819           p_PRM_LEAD_TYPE  => FND_API.G_MISS_CHAR,
2820           p_FREEZE_FLAG => FND_API.G_MISS_CHAR,
2821           p_PRM_REFERRAL_CODE => FND_API.G_MISS_CHAR);
2822       --
2823       -- End of API body.
2824       --
2825 
2826       -- Standard check for p_commit
2827       IF FND_API.to_Boolean( p_commit )
2828       THEN
2829           COMMIT WORK;
2830       END IF;
2831 
2832 
2833       -- Debug Message
2834       IF l_debug THEN
2835       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
2836                                    'Private API: ' || l_api_name || ' end');
2837       END IF;
2838 
2839 
2840 
2841       -- Standard call to get message count and if count is 1, get message info.
2842       FND_MSG_PUB.Count_And_Get
2843       (  p_count          =>   x_msg_count,
2844          p_data           =>   x_msg_data
2845       );
2846 
2847 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
2848 /*
2849       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is
2850       -- invoked for customization purpose
2851       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
2852       THEN
2853           AS_CALLOUT_PKG.Delete_opp_header_AU(
2854                   p_api_version_number   =>  2.0,
2855                   p_init_msg_list        =>  FND_API.G_FALSE,
2856                   p_commit               =>  FND_API.G_FALSE,
2857                   p_validation_level     =>  p_validation_level,
2858                   p_identity_salesforce_id => p_identity_salesforce_id,
2859                   P_Header_Rec      =>  P_Header_Rec,
2860           -- Hint: Add detail tables as parameter lists if it's master-detail
2861           --       relationship.
2862                   x_return_status        =>  x_return_status,
2863                   x_msg_count            =>  x_msg_count,
2864                   x_msg_data             =>  x_msg_data);
2865       END IF;
2866 */
2867       EXCEPTION
2868           WHEN FND_API.G_EXC_ERROR THEN
2869               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2870                    P_MODULE => l_module
2871                   ,P_API_NAME => L_API_NAME
2872                   ,P_PKG_NAME => G_PKG_NAME
2873                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
2874                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2875                   ,X_MSG_COUNT => X_MSG_COUNT
2876                   ,X_MSG_DATA => X_MSG_DATA
2877                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2878 
2879           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2880               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2881                    P_MODULE => l_module
2882                   ,P_API_NAME => L_API_NAME
2883                   ,P_PKG_NAME => G_PKG_NAME
2884                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2885                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2886                   ,X_MSG_COUNT => X_MSG_COUNT
2887                   ,X_MSG_DATA => X_MSG_DATA
2888                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2889 
2890           WHEN OTHERS THEN
2891               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
2892                    P_MODULE => l_module
2893                   ,P_API_NAME => L_API_NAME
2894                   ,P_PKG_NAME => G_PKG_NAME
2895                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
2896                   ,P_SQLCODE => SQLCODE
2897                   ,P_SQLERRM => SQLERRM
2898                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
2899                   ,X_MSG_COUNT => X_MSG_COUNT
2900                   ,X_MSG_DATA => X_MSG_DATA
2901                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2902 End Delete_opp_header;
2903 
2904 
2905 --
2906 -- Item-level validation procedures
2907 --
2908 
2909 PROCEDURE Validate_LEAD_ID (
2910     P_Init_Msg_List       IN   VARCHAR2     := FND_API.G_FALSE,
2911     P_Validation_mode     IN   VARCHAR2,
2912     P_LEAD_ID             IN   NUMBER,
2913     X_Item_Property_Rec   OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
2914     X_Return_Status       OUT NOCOPY  VARCHAR2,
2915     X_Msg_Count           OUT NOCOPY  NUMBER,
2916     X_Msg_Data            OUT NOCOPY  VARCHAR2
2917     )
2918 IS
2919   CURSOR C_Lead_Id_Exists (c_Lead_Id NUMBER) IS
2920       SELECT 'X'
2921       FROM  as_leads
2922       WHERE lead_id = c_Lead_Id;
2923 
2924   l_val   VARCHAR2(1);
2925   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
2926   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_LEAD_ID';
2927 
2928 BEGIN
2929       -- Initialize message list if p_init_msg_list is set to TRUE.
2930       IF FND_API.to_Boolean( p_init_msg_list )
2931       THEN
2932           FND_MSG_PUB.initialize;
2933       END IF;
2934 
2935       -- Initialize API return status to SUCCESS
2936       x_return_status := FND_API.G_RET_STS_SUCCESS;
2937 
2938       -- Calling from Create API
2939       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
2940       THEN
2941           IF (p_LEAD_ID is NOT NULL) and (p_LEAD_ID <> FND_API.G_MISS_NUM)
2942           THEN
2943               OPEN  C_Lead_Id_Exists (p_Lead_Id);
2944               FETCH C_Lead_Id_Exists into l_val;
2945 
2946               IF C_Lead_Id_Exists%FOUND THEN
2947                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
2948                   --                           'Private API: LEAD_ID exist');
2949 
2950                   AS_UTILITY_PVT.Set_Message(
2951                       p_module        => l_module,
2952                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2953                       p_msg_name      => 'API_DUPLICATE_LEAD_ID',
2954                       p_token1        => 'VALUE',
2955                       p_token1_value  => p_LEAD_ID );
2956 
2957                   x_return_status := FND_API.G_RET_STS_ERROR;
2958               END IF;
2959 
2960               CLOSE C_Lead_Id_Exists;
2961           END IF;
2962 
2963       -- Calling from Update API
2964       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
2965       THEN
2966           -- validate NOT NULL column
2967           IF (p_LEAD_ID is NULL) or (p_LEAD_ID = FND_API.G_MISS_NUM)
2968           THEN
2969               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
2970               --          'Private API: Violate NOT NULL constraint(LEAD_ID)');
2971 
2972               AS_UTILITY_PVT.Set_Message(
2973                   p_module        => l_module,
2974                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2975                   p_msg_name      => 'API_MISSING_LEAD_ID');
2976 
2977               x_return_status := FND_API.G_RET_STS_ERROR;
2978           ELSE
2979               OPEN  C_Lead_Id_Exists (p_Lead_Id);
2980               FETCH C_Lead_Id_Exists into l_val;
2981 
2982               IF C_Lead_Id_Exists%NOTFOUND
2983               THEN
2984                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
2985                   --                     'Private API: LEAD_ID is not valid');
2986 
2987                   AS_UTILITY_PVT.Set_Message(
2988                       p_module        => l_module,
2989                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
2990                       p_msg_name      => 'API_INVALID_LEAD_ID',
2991                       p_token1        => 'VALUE',
2992                       p_token1_value  => p_LEAD_ID );
2993 
2994                   x_return_status := FND_API.G_RET_STS_ERROR;
2995               END IF;
2996 
2997               CLOSE C_Lead_Id_Exists;
2998           END IF;
2999       END IF;
3000 
3001       -- Standard call to get message count and if count is 1, get message info.
3002       FND_MSG_PUB.Count_And_Get
3003       (  p_count          =>   x_msg_count,
3004          p_data           =>   x_msg_data
3005       );
3006 
3007 END Validate_LEAD_ID;
3008 
3009 
3010 /*
3011 PROCEDURE Validate_LEAD_NUMBER (
3012     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3013     P_Validation_mode    IN   VARCHAR2,
3014     P_LEAD_NUMBER        IN   VARCHAR2,
3015     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3016     X_Return_Status      OUT NOCOPY  VARCHAR2,
3017     X_Msg_Count          OUT NOCOPY  NUMBER,
3018     X_Msg_Data           OUT NOCOPY  VARCHAR2
3019     )
3020 IS
3021   CURSOR C_LEAD_NUMBER_Exists (c_LEAD_NUMBER CHAR) IS
3022       SELECT 'X'
3023       FROM  as_leads
3024       WHERE lead_number = c_lead_number;
3025 
3026   l_val   VARCHAR2(1);
3027   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3028 
3029 BEGIN
3030 
3031       -- Initialize message list if p_init_msg_list is set to TRUE.
3032       IF FND_API.to_Boolean( p_init_msg_list )
3033       THEN
3034           FND_MSG_PUB.initialize;
3035       END IF;
3036 
3037 
3038       -- Initialize API return status to SUCCESS
3039       x_return_status := FND_API.G_RET_STS_SUCCESS;
3040 
3041       IF(p_LEAD_NUMBER is NULL)
3042       THEN
3043           -- validate NOT NULL column
3044           -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3045           --          'Private API: Violate NOT NULL constraint(LEAD_NUMBER)');
3046 
3047           AS_UTILITY_PVT.Set_Message(
3048               p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3049               p_msg_name      => 'API_MISSING_LEAD_NUMBER');
3050 
3051           x_return_status := FND_API.G_RET_STS_ERROR;
3052       ELSE
3053           -- Calling from Create API, LEAD_NUMBER can not be G_MISS_CHAR
3054           IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE) and
3055              (p_LEAD_NUMBER = FND_API.G_MISS_CHAR)
3056           THEN
3057               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3058               --                           'Private API: missing LEAD_NUMBER');
3059 
3060               AS_UTILITY_PVT.Set_Message(
3061                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3062                   p_msg_name      => 'API_MISSING_LEAD_NUMBER');
3063 
3064           END IF;
3065 
3066           -- LEAD_NUMBER should be unique
3067           IF (p_LEAD_NUMBER <> FND_API.G_MISS_CHAR)
3068           THEN
3069               OPEN  C_LEAD_NUMBER_Exists (p_LEAD_NUMBER);
3070               FETCH C_LEAD_NUMBER_Exists into l_val;
3071 
3072               IF C_LEAD_NUMBER_Exists%FOUND THEN
3073                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3074                   --                       'Private API: LEAD_NUMBER exist');
3075 
3076                   AS_UTILITY_PVT.Set_Message(
3077                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3078                       p_msg_name      => 'API_DUPLICATE_LEAD_NUMBER',
3079                       p_token1        => 'VALUE',
3080                       p_token1_value  => p_LEAD_NUMBER );
3081 
3082                   x_return_status := FND_API.G_RET_STS_ERROR;
3083               END IF;
3084 
3085               CLOSE C_LEAD_NUMBER_Exists;
3086           END IF;
3087       END IF;
3088 
3089       -- Standard call to get message count and if count is 1, get message info.
3090       FND_MSG_PUB.Count_And_Get
3091       (  p_count          =>   x_msg_count,
3092          p_data           =>   x_msg_data
3093       );
3094 
3095 END Validate_LEAD_NUMBER;
3096 */
3097 
3098 
3099 PROCEDURE Validate_STATUS (
3100     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3101     P_Validation_mode    IN   VARCHAR2,
3102     P_STATUS             IN   VARCHAR2,
3103     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3104     X_Return_Status      OUT NOCOPY  VARCHAR2,
3105     X_Msg_Count          OUT NOCOPY  NUMBER,
3106     X_Msg_Data           OUT NOCOPY  VARCHAR2
3107     )
3108 IS
3109   CURSOR C_STATUS_Exists (c_status CHAR) IS
3110       SELECT 'X'
3111       FROM  as_statuses_b
3112       WHERE status_code = c_status
3113             and enabled_flag = 'Y'
3114             and opp_flag = 'Y';
3115 
3116   l_val   VARCHAR2(1);
3117   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3118   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_STATUS';
3119 
3120 BEGIN
3121 
3122       -- Initialize message list if p_init_msg_list is set to TRUE.
3123       IF FND_API.to_Boolean( p_init_msg_list )
3124       THEN
3125           FND_MSG_PUB.initialize;
3126       END IF;
3127 
3128 
3129       -- Initialize API return status to SUCCESS
3130       x_return_status := FND_API.G_RET_STS_SUCCESS;
3131 
3132       -- validate NOT NULL column
3133       IF(p_STATUS is NULL)
3134       THEN
3135           -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3136           --                'Private API: Violate NOT NULL constraint(STATUS)');
3137 
3138           AS_UTILITY_PVT.Set_Message(
3139               p_module        => l_module,
3140               p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3141               p_msg_name      => 'API_MISSING_STATUS');
3142 
3143           x_return_status := FND_API.G_RET_STS_ERROR;
3144       ELSE
3145           -- Calling from Create API, STATUS can not be G_MISS_CHAR
3146           IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE) and
3147              (p_STATUS = FND_API.G_MISS_CHAR)
3148           THEN
3149               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3150               --            'Private API: STATUS is missing');
3151 
3152               AS_UTILITY_PVT.Set_Message(
3153                   p_module        => l_module,
3154                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3155                   p_msg_name      => 'API_MISSING_STATUS');
3156 
3157               x_return_status := FND_API.G_RET_STS_ERROR;
3158 
3159           -- STATUS should exist in as_statuses_b
3160           ELSIF(p_STATUS <> FND_API.G_MISS_CHAR)
3161           THEN
3162               OPEN  C_STATUS_Exists (p_STATUS);
3163               FETCH C_STATUS_Exists into l_val;
3164 
3165               IF C_STATUS_Exists%NOTFOUND THEN
3166                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3167                   --                          'Private API: STATUS is invalid');
3168 
3169                   AS_UTILITY_PVT.Set_Message(
3170                       p_module        => l_module,
3171                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3172                       p_msg_name      => 'API_INVALID_OPP_STATUS',
3173                       p_token1        => 'VALUE',
3174                       p_token1_value  => p_STATUS );
3175 
3176                   x_return_status := FND_API.G_RET_STS_ERROR;
3177               END IF;
3178 
3179               CLOSE C_STATUS_Exists;
3180           END IF;
3181       END IF;
3182 
3183       -- Standard call to get message count and if count is 1, get message info.
3184       FND_MSG_PUB.Count_And_Get
3185       (  p_count          =>   x_msg_count,
3186          p_data           =>   x_msg_data
3187       );
3188 
3189 END Validate_STATUS;
3190 
3191 
3192 -- Added for MOAC
3193 PROCEDURE Validate_ORG_ID (
3194     P_Init_Msg_List      IN   VARCHAR2 := FND_API.G_FALSE,
3195     P_Validation_mode    IN   VARCHAR2,
3196     P_ORG_ID             IN   NUMBER,
3197     X_Return_Status      OUT NOCOPY  VARCHAR2,
3198     X_Msg_Count          OUT NOCOPY  NUMBER,
3199     X_Msg_Data           OUT NOCOPY  VARCHAR2
3200     )
3201 IS
3202   CURSOR C_ORG_ID_Exists (c_ORG_ID NUMBER) IS
3203       SELECT 'X'
3204       FROM hr_operating_units hr
3205       WHERE hr.organization_id= P_ORG_ID
3206             and mo_global.check_access(hr.organization_id) = 'Y';
3207 
3208   l_val   VARCHAR2(1);
3209   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_ORG_ID';
3210 
3211 BEGIN
3212 
3213       -- Initialize message list if p_init_msg_list is set to TRUE.
3214       IF FND_API.to_Boolean( p_init_msg_list )
3215       THEN
3216           FND_MSG_PUB.initialize;
3217       END IF;
3218 
3219 
3220       -- Initialize API return status to SUCCESS
3221       x_return_status := FND_API.G_RET_STS_SUCCESS;
3222 
3223       IF p_validation_mode = AS_UTILITY_PVT.G_CREATE THEN
3224           OPEN  C_ORG_ID_Exists (p_ORG_ID);
3225           FETCH C_ORG_ID_Exists into l_val;
3226 
3227           IF C_ORG_ID_Exists%NOTFOUND THEN
3228 
3229               AS_UTILITY_PVT.Set_Message(
3230                   p_module        => l_module,
3231                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3232                   p_msg_name      => 'AS_ORG_NULL_OR_INVALID');
3233 
3234               x_return_status := FND_API.G_RET_STS_ERROR;
3235           END IF;
3236 
3237           CLOSE C_ORG_ID_Exists;
3238       END IF;
3239 
3240       -- Standard call to get message count and if count is 1, get message info.
3241       FND_MSG_PUB.Count_And_Get
3242       (  p_count          =>   x_msg_count,
3243          p_data           =>   x_msg_data
3244       );
3245 
3246 END Validate_ORG_ID;
3247 
3248 
3249 PROCEDURE Validate_SALES_STAGE_ID (
3250     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3251     P_Validation_mode    IN   VARCHAR2,
3252     P_SALES_STAGE_ID     IN   NUMBER,
3253     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3254     X_Return_Status      OUT NOCOPY  VARCHAR2,
3255     X_Msg_Count          OUT NOCOPY  NUMBER,
3256     X_Msg_Data           OUT NOCOPY  VARCHAR2
3257     )
3258 IS
3259   CURSOR C_SALES_STAGE_ID_Exists (c_SALES_STAGE_ID NUMBER) IS
3260       SELECT 'X'
3261       FROM  as_sales_stages_all_b
3262       WHERE sales_stage_id = c_sales_stage_id
3263             -- ffang 091200 for bug 1403865
3264             and nvl(start_date_active, sysdate) <= sysdate
3265             and nvl(end_date_active, sysdate) >= sysdate
3266             and enabled_flag = 'Y';
3267             -- end ffang 091200
3268 
3269   l_val   VARCHAR2(1);
3270   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3271   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_SALES_STAGE_ID';
3272 
3273 BEGIN
3274 
3275       -- Initialize message list if p_init_msg_list is set to TRUE.
3276       IF FND_API.to_Boolean( p_init_msg_list )
3277       THEN
3278           FND_MSG_PUB.initialize;
3279       END IF;
3280 
3281 
3282       -- Initialize API return status to SUCCESS
3283       x_return_status := FND_API.G_RET_STS_SUCCESS;
3284 
3285       IF (p_SALES_STAGE_ID is NOT NULL) and
3286          (p_SALES_STAGE_ID <> FND_API.G_MISS_NUM)
3287       THEN
3288           -- SALES_STAGE_ID should exist in as_sales_stages_all_b
3289           OPEN  C_SALES_STAGE_ID_Exists (p_SALES_STAGE_ID);
3290           FETCH C_SALES_STAGE_ID_Exists into l_val;
3291 
3292           IF C_SALES_STAGE_ID_Exists%NOTFOUND THEN
3293               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3294               --                     'Private API: SALES_STAGE_ID is invalid');
3295 
3296               AS_UTILITY_PVT.Set_Message(
3297                   p_module        => l_module,
3298                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3299                   p_msg_name      => 'API_INVALID_SALES_STAGE_ID',
3300                   p_token1        => 'VALUE',
3301                   p_token1_value  => p_SALES_STAGE_ID );
3302 
3303               x_return_status := FND_API.G_RET_STS_ERROR;
3304           END IF;
3305 
3306           CLOSE C_SALES_STAGE_ID_Exists;
3307       END IF;
3308 
3309       -- Standard call to get message count and if count is 1, get message info.
3310       FND_MSG_PUB.Count_And_Get
3311       (  p_count          =>   x_msg_count,
3312          p_data           =>   x_msg_data
3313       );
3314 
3315 END Validate_SALES_STAGE_ID;
3316 
3317 
3318 PROCEDURE Validate_CHANNEL_CODE (
3319     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3320     P_Validation_mode    IN   VARCHAR2,
3321     P_CHANNEL_CODE       IN   VARCHAR2,
3322     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3323     X_Return_Status      OUT NOCOPY  VARCHAR2,
3324     X_Msg_Count          OUT NOCOPY  NUMBER,
3325     X_Msg_Data           OUT NOCOPY  VARCHAR2
3326     )
3327 IS
3328   CURSOR C_CHANNEL_CODE_Exists (c_CHANNEL_CODE CHAR) IS
3329 	SELECT 'X'
3330 	FROM OE_LOOKUPS
3331 	WHERE lookup_code = c_channel_code
3332 	AND   lookup_type = 'SALES_CHANNEL'
3333 	AND   nvl(start_date_active, sysdate) <= sysdate
3334 	AND   nvl(end_date_active, sysdate) >= sysdate
3335 	AND   enabled_flag = 'Y';
3336 
3337   l_val   VARCHAR2(1);
3338   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3339   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_CHANNEL_CODE';
3340 
3341 BEGIN
3342 
3343       -- Initialize message list if p_init_msg_list is set to TRUE.
3344       IF FND_API.to_Boolean( p_init_msg_list )
3345       THEN
3346           FND_MSG_PUB.initialize;
3347       END IF;
3348 
3349 
3350       -- Initialize API return status to SUCCESS
3351       x_return_status := FND_API.G_RET_STS_SUCCESS;
3352 
3353       IF (p_CHANNEL_CODE is NOT NULL) and
3354          (p_CHANNEL_CODE <> FND_API.G_MISS_CHAR)
3355       THEN
3356           -- CHANNEL_CODE should exist in OE_LOOKUPS
3357           OPEN  C_CHANNEL_CODE_Exists (p_CHANNEL_CODE);
3358           FETCH C_CHANNEL_CODE_Exists into l_val;
3359 
3360           IF C_CHANNEL_CODE_Exists%NOTFOUND THEN
3361               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3362               --                     'Private API: CHANNEL_CODE is invalid');
3363 
3364               AS_UTILITY_PVT.Set_Message(
3365                   p_module        => l_module,
3366                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3367                   p_msg_name      => 'API_INVALID_CHANNEL_CODE',
3368                   p_token1        => 'VALUE',
3369                   p_token1_value  => p_CHANNEL_CODE );
3370 
3371               x_return_status := FND_API.G_RET_STS_ERROR;
3372           END IF;
3373 
3374           CLOSE C_CHANNEL_CODE_Exists;
3375       END IF;
3376 
3377       -- Standard call to get message count and if count is 1, get message info.
3378       FND_MSG_PUB.Count_And_Get
3379       (  p_count          =>   x_msg_count,
3380          p_data           =>   x_msg_data
3381       );
3382 
3383 END Validate_CHANNEL_CODE;
3384 
3385 
3386 PROCEDURE Validate_CURRENCY_CODE (
3387     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3388     P_Validation_mode    IN   VARCHAR2,
3389     P_CURRENCY_CODE      IN   VARCHAR2,
3390     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3391     X_Return_Status      OUT NOCOPY  VARCHAR2,
3392     X_Msg_Count          OUT NOCOPY  NUMBER,
3393     X_Msg_Data           OUT NOCOPY  VARCHAR2
3394     )
3395 IS
3396   CURSOR C_Currency_Exists (c_currency_code VARCHAR2) IS
3397     SELECT  'X'
3398     FROM  fnd_currencies
3399     WHERE currency_code = c_currency_code
3400           -- ffang 091200 for bug 1403865
3401           and nvl(start_date_active, sysdate) <= sysdate
3402           and nvl(end_date_active, sysdate) >= sysdate
3403           and enabled_flag = 'Y';
3404           -- end ffang 091200
3405 
3406   l_val VARCHAR2(1);
3407   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3408   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_CURRENCY_CODE';
3409 
3410 BEGIN
3411 
3412       -- Initialize message list if p_init_msg_list is set to TRUE.
3413       IF FND_API.to_Boolean( p_init_msg_list )
3414       THEN
3415           FND_MSG_PUB.initialize;
3416       END IF;
3417 
3418 
3419       -- Initialize API return status to SUCCESS
3420       x_return_status := FND_API.G_RET_STS_SUCCESS;
3421 
3422       IF (p_CURRENCY_CODE is NOT NULL) and
3423          (p_CURRENCY_CODE <> FND_API.G_MISS_CHAR)
3424       THEN
3425           -- CURRENCY_CODE should exist in fnd_currencies_vl
3426           OPEN  C_Currency_Exists (p_CURRENCY_CODE);
3427           FETCH C_Currency_Exists into l_val;
3428 
3429           IF C_Currency_Exists%NOTFOUND THEN
3430               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3431               --                     'Private API: CURRENCY_CODE is invalid');
3432 
3433               AS_UTILITY_PVT.Set_Message(
3434                   p_module        => l_module,
3435                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3436                   p_msg_name      => 'API_INVALID_CURRENCY_CODE',
3437                   p_token1        => 'VALUE',
3438                   p_token1_value  => p_CURRENCY_CODE );
3439 
3440               x_return_status := FND_API.G_RET_STS_ERROR;
3441           END IF;
3442 
3443           CLOSE C_Currency_Exists;
3444       END IF;
3445 
3446       -- Standard call to get message count and if count is 1, get message info.
3447       FND_MSG_PUB.Count_And_Get
3448       (  p_count          =>   x_msg_count,
3449          p_data           =>   x_msg_data
3450       );
3451 
3452 END Validate_CURRENCY_CODE;
3453 
3454 
3455 PROCEDURE Validate_WIN_PROBABILITY (
3456     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3457     P_Validation_mode    IN   VARCHAR2,
3458     P_WIN_PROBABILITY    IN   NUMBER,
3459     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3460     X_Return_Status      OUT NOCOPY  VARCHAR2,
3461     X_Msg_Count          OUT NOCOPY  NUMBER,
3462     X_Msg_Data           OUT NOCOPY  VARCHAR2
3463     )
3464 IS
3465   CURSOR C_Win_Prob_Exists (c_Win_Prob NUMBER) IS
3466      SELECT  'X'
3467      FROM  as_forecast_prob
3468      WHERE probability_value = c_Win_Prob
3469            -- ffang 091200 for bug 1403865
3470            and nvl(start_date_active, sysdate) <= sysdate
3471            and nvl(end_date_active, sysdate) >= sysdate
3472            and enabled_flag = 'Y';
3473            -- end ffang 091200
3474 
3475   l_val VARCHAR2(1);
3476   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3477   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_WIN_PROBABILITY';
3478 
3479 BEGIN
3480 
3481       -- Initialize message list if p_init_msg_list is set to TRUE.
3482       IF FND_API.to_Boolean( p_init_msg_list )
3483       THEN
3484           FND_MSG_PUB.initialize;
3485       END IF;
3486 
3487 
3488       -- Initialize API return status to SUCCESS
3489       x_return_status := FND_API.G_RET_STS_SUCCESS;
3490 
3491       IF (p_WIN_PROBABILITY is NOT NULL) and
3492          (p_WIN_PROBABILITY <> FND_API.G_MISS_NUM)
3493       THEN
3494           -- WIN_PROBABILITY should exist in as_forecast_prob
3495           OPEN  C_Win_Prob_Exists (p_WIN_PROBABILITY);
3496           FETCH C_Win_Prob_Exists into l_val;
3497 
3498           IF C_Win_Prob_Exists%NOTFOUND THEN
3499               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3500               --                     'Private API: WIN_PROBABILITY is invalid');
3501 
3502               AS_UTILITY_PVT.Set_Message(
3503                   p_module        => l_module,
3504                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3505                   p_msg_name      => 'API_INVALID_WIN_PROB',
3506                   p_token1        => 'VALUE',
3507                   p_token1_value  => p_WIN_PROBABILITY );
3508 
3509               x_return_status := FND_API.G_RET_STS_ERROR;
3510           END IF;
3511 
3512           CLOSE C_Win_Prob_Exists;
3513       END IF;
3514 
3515       -- Standard call to get message count and if count is 1, get message info.
3516       FND_MSG_PUB.Count_And_Get
3517       (  p_count          =>   x_msg_count,
3518          p_data           =>   x_msg_data
3519       );
3520 
3521 END Validate_WIN_PROBABILITY;
3522 
3523 
3524 PROCEDURE Validate_CLOSE_REASON (
3525     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
3526     P_Validation_mode    IN   VARCHAR2,
3527     P_CLOSE_REASON       IN   VARCHAR2,
3528     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3529     X_Return_Status      OUT NOCOPY  VARCHAR2,
3530     X_Msg_Count          OUT NOCOPY  NUMBER,
3531     X_Msg_Data           OUT NOCOPY  VARCHAR2
3532     )
3533 IS
3534   CURSOR C_CLOSE_REASON_Exists (c_lookup_type VARCHAR2,
3535                                 c_CLOSE_REASON VARCHAR2) IS
3536      SELECT  'X'
3537      FROM  as_lookups
3538      WHERE lookup_type = c_lookup_type
3539            and lookup_code = c_CLOSE_REASON;
3540            -- and enabled_flag = 'Y';
3541 
3542   l_val VARCHAR2(1);
3543   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3544   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_CLOSE_REASON';
3545 BEGIN
3546 
3547       -- Initialize message list if p_init_msg_list is set to TRUE.
3548       IF FND_API.to_Boolean( p_init_msg_list )
3549       THEN
3550           FND_MSG_PUB.initialize;
3551       END IF;
3552 
3553 
3554       -- Initialize API return status to SUCCESS
3555       x_return_status := FND_API.G_RET_STS_SUCCESS;
3556 
3557       IF (p_CLOSE_REASON is NOT NULL) and
3558          (p_CLOSE_REASON <> FND_API.G_MISS_CHAR)
3559       THEN
3560           -- CLOSE_REASON should exist in as_lookups
3561           OPEN  C_CLOSE_REASON_Exists ('CLOSE_REASON', p_CLOSE_REASON);
3562           FETCH C_CLOSE_REASON_Exists into l_val;
3563 
3564           IF C_CLOSE_REASON_Exists%NOTFOUND THEN
3565               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3566               --                     'Private API: CLOSE_REASON is invalid');
3567 
3568               AS_UTILITY_PVT.Set_Message(
3569                   p_module        => l_module,
3570                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3571                   p_msg_name      => 'API_INVALID_CLOSE_REASON',
3572                   p_token1        => 'VALUE',
3573                   p_token1_value  => p_CLOSE_REASON );
3574 
3575               x_return_status := FND_API.G_RET_STS_ERROR;
3576           END IF;
3577 
3578           CLOSE C_CLOSE_REASON_Exists;
3579       END IF;
3580 
3581       -- Standard call to get message count and if count is 1, get message info.
3582       FND_MSG_PUB.Count_And_Get
3583       (  p_count          =>   x_msg_count,
3584          p_data           =>   x_msg_data
3585       );
3586 
3587 END Validate_CLOSE_REASON;
3588 
3589 
3590 PROCEDURE Validate_SOURCE_PROMOTION_ID (
3591     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3592     P_Validation_mode            IN   VARCHAR2,
3593     P_SOURCE_PROMOTION_ID        IN   NUMBER,
3594     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3595     X_Return_Status              OUT NOCOPY  VARCHAR2,
3596     X_Msg_Count                  OUT NOCOPY  NUMBER,
3597     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3598     )
3599 IS
3600   CURSOR C_SOURCE_PROMOTION_ID_Exists (c_Source_Code_ID VARCHAR2) IS
3601      SELECT  'X'
3602      FROM  ams_source_codes
3603      WHERE source_code_id = c_Source_Code_ID
3604            -- and active_flag = 'Y'
3605 	   and ARC_SOURCE_CODE_FOR <> 'OFFR';
3606 	   -- nkamble commented below line and put OFFR condition for bug#3133993
3607 	   --in ('CAMP', 'CSCH', 'EVEO', 'EVEH');
3608 
3609   l_source_code_required VARCHAR2(1) := FND_PROFILE.value('AS_OPP_SOURCE_CODE_REQUIRED');
3610 
3611   l_val VARCHAR2(1);
3612   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3613   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_SOURCE_PROMOTION_ID';
3614 BEGIN
3615 
3616       -- Initialize message list if p_init_msg_list is set to TRUE.
3617       IF FND_API.to_Boolean( p_init_msg_list )
3618       THEN
3619           FND_MSG_PUB.initialize;
3620       END IF;
3621 
3622 
3623       -- Initialize API return status to SUCCESS
3624       x_return_status := FND_API.G_RET_STS_SUCCESS;
3625 
3626       IF ( p_SOURCE_PROMOTION_ID is NULL OR
3627 	   ( p_validation_mode = AS_UTILITY_PVT.G_CREATE AND
3628              p_SOURCE_PROMOTION_ID = FND_API.G_MISS_NUM     )  ) AND
3629          nvl(l_source_code_required, 'N') = 'Y' THEN
3630                   AS_UTILITY_PVT.Set_Message(
3631                      p_module        => l_module,
3632                      p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3633                      p_msg_name      => 'API_MISSING_SOURCE_PROM_ID');
3634 
3635                   x_return_status := FND_API.G_RET_STS_ERROR;
3636       END IF;
3637 
3638       IF (p_SOURCE_PROMOTION_ID is NOT NULL )AND
3639          (p_SOURCE_PROMOTION_ID <> FND_API.G_MISS_NUM)
3640       THEN
3641           -- SOURCE_PROMOTION_ID should exist in ams_source_codes
3642           OPEN  C_SOURCE_PROMOTION_ID_Exists (p_SOURCE_PROMOTION_ID);
3643           FETCH C_SOURCE_PROMOTION_ID_Exists into l_val;
3644 
3645           IF C_SOURCE_PROMOTION_ID_Exists%NOTFOUND THEN
3646               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3647               --               'Private API: SOURCE_PROMOTION_ID is invalid');
3648 
3649               AS_UTILITY_PVT.Set_Message(
3650                   p_module        => l_module,
3651                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3652                   p_msg_name      => 'API_INVALID_SOURCE_PROM_ID',
3653                   p_token1        => 'VALUE',
3654                   p_token1_value  => p_SOURCE_PROMOTION_ID );
3655 
3656               x_return_status := FND_API.G_RET_STS_ERROR;
3657           END IF;
3658 
3659           CLOSE C_SOURCE_PROMOTION_ID_Exists;
3660       END IF;
3661 
3662       -- Standard call to get message count and if count is 1, get message info.
3663       FND_MSG_PUB.Count_And_Get
3664       (  p_count          =>   x_msg_count,
3665          p_data           =>   x_msg_data
3666       );
3667 
3668 END Validate_SOURCE_PROMOTION_ID;
3669 
3670 
3671 PROCEDURE Validate_NO_OPP_ALLOWED_FLAG (
3672     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3673     P_Validation_mode            IN   VARCHAR2,
3674     P_NO_OPP_ALLOWED_FLAG        IN   VARCHAR2,
3675     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3676     X_Return_Status              OUT NOCOPY  VARCHAR2,
3677     X_Msg_Count                  OUT NOCOPY  NUMBER,
3678     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3679     )
3680 IS
3681 
3682 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3683 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_NO_OPP_ALLOWED_FLAG';
3684 BEGIN
3685 
3686       -- Initialize message list if p_init_msg_list is set to TRUE.
3687       IF FND_API.to_Boolean( p_init_msg_list )
3688       THEN
3689           FND_MSG_PUB.initialize;
3690       END IF;
3691 
3692 
3693       -- Initialize API return status to SUCCESS
3694       x_return_status := FND_API.G_RET_STS_SUCCESS;
3695 
3696       IF (p_NO_OPP_ALLOWED_FLAG is NOT NULL) and
3697          (p_NO_OPP_ALLOWED_FLAG <> FND_API.G_MISS_CHAR)
3698       THEN
3699           IF (UPPER(p_NO_OPP_ALLOWED_FLAG) <> 'Y') and
3700              (UPPER(p_NO_OPP_ALLOWED_FLAG) <> 'N')
3701           THEN
3702               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3703               --               'Private API: NO_OPP_ALLOWED_FLAG is invalid');
3704 
3705               AS_UTILITY_PVT.Set_Message(
3706                   p_module        => l_module,
3707                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3708                   p_msg_name      => 'API_INVALID_NO_OPP_ALLOWED_FLG',
3709                   p_token1        => 'VALUE',
3710                   p_token1_value  => p_NO_OPP_ALLOWED_FLAG );
3711 
3712               x_return_status := FND_API.G_RET_STS_ERROR;
3713           END IF;
3714       END IF;
3715 
3716       -- Standard call to get message count and if count is 1, get message info.
3717       FND_MSG_PUB.Count_And_Get
3718       (  p_count          =>   x_msg_count,
3719          p_data           =>   x_msg_data
3720       );
3721 
3722 END Validate_NO_OPP_ALLOWED_FLAG;
3723 
3724 
3725 PROCEDURE Validate_DELETE_ALLOWED_FLAG (
3726     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3727     P_Validation_mode            IN   VARCHAR2,
3728     P_DELETE_ALLOWED_FLAG        IN   VARCHAR2,
3729     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3730     X_Return_Status              OUT NOCOPY  VARCHAR2,
3731     X_Msg_Count                  OUT NOCOPY  NUMBER,
3732     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3733     )
3734 IS
3735 	l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3736     l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_DELETE_ALLOWED_FLAG';
3737 BEGIN
3738       -- Initialize message list if p_init_msg_list is set to TRUE.
3739       IF FND_API.to_Boolean( p_init_msg_list )
3740       THEN
3741           FND_MSG_PUB.initialize;
3742       END IF;
3743 
3744       -- Initialize API return status to SUCCESS
3745       x_return_status := FND_API.G_RET_STS_SUCCESS;
3746 
3747       IF (p_DELETE_ALLOWED_FLAG is NOT NULL) and
3748          (p_DELETE_ALLOWED_FLAG <> FND_API.G_MISS_CHAR)
3749       THEN
3750           IF (UPPER(p_DELETE_ALLOWED_FLAG) <> 'Y') and
3751              (UPPER(p_DELETE_ALLOWED_FLAG) <> 'N')
3752           THEN
3753               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3754               --               'Private API: DELETE_ALLOWED_FLAG is invalid');
3755 
3756               AS_UTILITY_PVT.Set_Message(
3757                   p_module        => l_module,
3758                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3759                   p_msg_name      => 'API_INVALID_DEL_ALLOWED_FLAG',
3760                   p_token1        => 'VALUE',
3761                   p_token1_value  => p_DELETE_ALLOWED_FLAG );
3762 
3763               x_return_status := FND_API.G_RET_STS_ERROR;
3764           END IF;
3765       END IF;
3766 
3767       -- Standard call to get message count and if count is 1, get message info.
3768       FND_MSG_PUB.Count_And_Get
3769       (  p_count          =>   x_msg_count,
3770          p_data           =>   x_msg_data
3771       );
3772 
3773 END Validate_DELETE_ALLOWED_FLAG;
3774 
3775 
3776 PROCEDURE Validate_LEAD_SOURCE_CODE (
3777     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3778     P_Validation_mode            IN   VARCHAR2,
3779     P_LEAD_SOURCE_CODE           IN   VARCHAR2,
3780     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3781     X_Return_Status              OUT NOCOPY  VARCHAR2,
3782     X_Msg_Count                  OUT NOCOPY  NUMBER,
3783     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3784     )
3785 IS
3786   CURSOR C_LEAD_SOURCE_CODE_Exists (c_lookup_type VARCHAR2,
3787                                     c_LEAD_SOURCE_CODE VARCHAR2) IS
3788      SELECT  'X'
3789      FROM  as_lookups
3790      WHERE lookup_type = c_lookup_type
3791            and lookup_code = c_LEAD_SOURCE_CODE
3792            and enabled_flag = 'Y';
3793 
3794   l_val VARCHAR2(1);
3795   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3796   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_LEAD_SOURCE_CODE';
3797 BEGIN
3798       -- Initialize message list if p_init_msg_list is set to TRUE.
3799       IF FND_API.to_Boolean( p_init_msg_list )
3800       THEN
3801           FND_MSG_PUB.initialize;
3802       END IF;
3803 
3804       -- Initialize API return status to SUCCESS
3805       x_return_status := FND_API.G_RET_STS_SUCCESS;
3806 
3807       IF (p_LEAD_SOURCE_CODE is NOT NULL) and
3808          (p_LEAD_SOURCE_CODE <> FND_API.G_MISS_CHAR)
3809       THEN
3810           -- LEAD_SOURCE_CODE should exist in as_lookups
3811           OPEN  C_LEAD_SOURCE_CODE_Exists ('LEAD_SOURCE', p_LEAD_SOURCE_CODE);
3812           FETCH C_LEAD_SOURCE_CODE_Exists into l_val;
3813 
3814           IF C_LEAD_SOURCE_CODE_Exists%NOTFOUND THEN
3815               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3816               --                  'Private API: LEAD_SOURCE_CODE is invalid');
3817 
3818               AS_UTILITY_PVT.Set_Message(
3819                   p_module        => l_module,
3820                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3821                   p_msg_name      => 'API_INVALID_LEAD_SOURCE_CODE',
3822                   p_token1        => 'VALUE',
3823                   p_token1_value  => p_LEAD_SOURCE_CODE );
3824 
3825               x_return_status := FND_API.G_RET_STS_ERROR;
3826           END IF;
3827 
3828           CLOSE C_LEAD_SOURCE_CODE_Exists;
3829       END IF;
3830 
3831       -- Standard call to get message count and if count is 1, get message info.
3832       FND_MSG_PUB.Count_And_Get
3833       (  p_count          =>   x_msg_count,
3834          p_data           =>   x_msg_data
3835       );
3836 
3837 END Validate_LEAD_SOURCE_CODE;
3838 
3839 
3840 PROCEDURE Validate_PRICE_LIST_ID (
3841     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3842     P_Validation_mode            IN   VARCHAR2,
3843     P_PRICE_LIST_ID              IN   NUMBER,
3844     P_CURRENCY_CODE              IN   VARCHAR2,
3845     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3846     X_Return_Status              OUT NOCOPY  VARCHAR2,
3847     X_Msg_Count                  OUT NOCOPY  NUMBER,
3848     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3849     )
3850 IS
3851   CURSOR C_Price_List_Exists (c_Price_List_Id NUMBER,
3852                               c_Currency_Code VARCHAR2) IS
3853       SELECT  'X'
3854       FROM  qp_price_lists_v
3855       WHERE price_list_id = c_Price_List_Id
3856       and currency_code = c_Currency_Code
3857       and nvl(start_date_active, sysdate) <= sysdate
3858       and nvl(end_date_active, sysdate) >= sysdate;
3859 
3860   l_val VARCHAR2(1);
3861   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3862   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRICE_LIST_ID';
3863 BEGIN
3864       -- Initialize message list if p_init_msg_list is set to TRUE.
3865       IF FND_API.to_Boolean( p_init_msg_list )
3866       THEN
3867           FND_MSG_PUB.initialize;
3868       END IF;
3869 
3870       -- Initialize API return status to SUCCESS
3871       x_return_status := FND_API.G_RET_STS_SUCCESS;
3872 
3873       IF (p_PRICE_LIST_ID is NOT NULL) and
3874          (p_PRICE_LIST_ID <> FND_API.G_MISS_NUM)
3875       THEN
3876           -- PRICE_LIST_ID should exist in qp_price_lists_v
3877           OPEN  C_Price_List_Exists (p_PRICE_LIST_ID, p_CURRENCY_CODE);
3878           FETCH C_Price_List_Exists into l_val;
3879 
3880           IF C_Price_List_Exists%NOTFOUND THEN
3881               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3882               --                  'Private API: PRICE_LIST_ID is invalid');
3883 
3884               AS_UTILITY_PVT.Set_Message(
3885                   p_module        => l_module,
3886                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3887                   p_msg_name      => 'API_INVALID_PRICE_LIST_ID',
3888                   p_token1        => 'VALUE',
3889                   p_token1_value  => p_PRICE_LIST_ID );
3890 
3891               x_return_status := FND_API.G_RET_STS_ERROR;
3892           END IF;
3893 
3894           CLOSE C_Price_List_Exists;
3895       END IF;
3896 
3897       -- Standard call to get message count and if count is 1, get message info.
3898       FND_MSG_PUB.Count_And_Get
3899       (  p_count          =>   x_msg_count,
3900          p_data           =>   x_msg_data
3901       );
3902 
3903 END Validate_PRICE_LIST_ID;
3904 
3905 
3906 PROCEDURE Validate_DELETED_FLAG (
3907     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3908     P_Validation_mode            IN   VARCHAR2,
3909     P_DELETED_FLAG               IN   VARCHAR2,
3910     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3911     X_Return_Status              OUT NOCOPY  VARCHAR2,
3912     X_Msg_Count                  OUT NOCOPY  NUMBER,
3913     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3914     )
3915 IS
3916 
3917 	l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3918     l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_DELETED_FLAG';
3919 BEGIN
3920 
3921       -- Initialize message list if p_init_msg_list is set to TRUE.
3922       IF FND_API.to_Boolean( p_init_msg_list )
3923       THEN
3924           FND_MSG_PUB.initialize;
3925       END IF;
3926 
3927 
3928       -- Initialize API return status to SUCCESS
3929       x_return_status := FND_API.G_RET_STS_SUCCESS;
3930 
3931       IF (p_DELETED_FLAG is NOT NULL) and
3932          (p_DELETED_FLAG <> FND_API.G_MISS_CHAR)
3933       THEN
3934           IF (p_DELETED_FLAG <> 'Y') and (p_DELETED_FLAG <> 'N')
3935           THEN
3936               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
3937               --               'Private API: DELETED_FLAG is invalid');
3938 
3939               AS_UTILITY_PVT.Set_Message(
3940                   p_module        => l_module,
3941                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
3942                   p_msg_name      => 'API_INVALID_DELETED_FLAG',
3943                   p_token1        => 'VALUE',
3944                   p_token1_value  => p_DELETED_FLAG );
3945 
3946               x_return_status := FND_API.G_RET_STS_ERROR;
3947           END IF;
3948       END IF;
3949 
3950       -- Standard call to get message count and if count is 1, get message info.
3951       FND_MSG_PUB.Count_And_Get
3952       (  p_count          =>   x_msg_count,
3953          p_data           =>   x_msg_data
3954       );
3955 
3956 END Validate_DELETED_FLAG;
3957 
3958 
3959 PROCEDURE Validate_METHODOLOGY_CODE (
3960     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3961     P_Validation_mode            IN   VARCHAR2,
3962     P_METHODOLOGY_CODE           IN   VARCHAR2,
3963     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
3964     X_Return_Status              OUT NOCOPY  VARCHAR2,
3965     X_Msg_Count                  OUT NOCOPY  NUMBER,
3966     X_Msg_Data                   OUT NOCOPY  VARCHAR2
3967     )
3968 IS
3969   CURSOR C_METHODOLOGY_CODE_Exists (c_lookup_type VARCHAR2,
3970                                     c_METHODOLOGY_CODE VARCHAR2) IS
3971      SELECT  'X'
3972      FROM  as_lookups
3973      WHERE lookup_type = c_lookup_type
3974            and lookup_code = c_METHODOLOGY_CODE
3975            and enabled_flag = 'Y';
3976 
3977   l_val VARCHAR2(1);
3978   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
3979   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_METHODOLOGY_CODE';
3980 
3981 BEGIN
3982 
3983       -- Initialize message list if p_init_msg_list is set to TRUE.
3984       IF FND_API.to_Boolean( p_init_msg_list )
3985       THEN
3986           FND_MSG_PUB.initialize;
3987       END IF;
3988 
3989 
3990       -- Initialize API return status to SUCCESS
3991       x_return_status := FND_API.G_RET_STS_SUCCESS;
3992 
3993       IF (p_METHODOLOGY_CODE is NOT NULL) and
3994          (p_METHODOLOGY_CODE <> FND_API.G_MISS_CHAR)
3995       THEN
3996           -- METHODOLOGY_CODE should exist in as_lookups
3997           OPEN  C_METHODOLOGY_CODE_Exists ('METHODOLOGY_TYPE',
3998                                            p_METHODOLOGY_CODE);
3999           FETCH C_METHODOLOGY_CODE_Exists into l_val;
4000 
4001           IF C_METHODOLOGY_CODE_Exists%NOTFOUND THEN
4002               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4003               --                  'Private API: METHODOLOGY_CODE is invalid');
4004 
4005               AS_UTILITY_PVT.Set_Message(
4006                   p_module        => l_module,
4007                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4008                   p_msg_name      => 'API_INVALID_METHODOLOGY_CODE',
4009                   p_token1        => 'VALUE',
4010                   p_token1_value  => p_METHODOLOGY_CODE );
4011 
4012               x_return_status := FND_API.G_RET_STS_ERROR;
4013           END IF;
4014 
4015           CLOSE C_METHODOLOGY_CODE_Exists;
4016       END IF;
4017 
4018       -- Standard call to get message count and if count is 1, get message info.
4019       FND_MSG_PUB.Count_And_Get
4020       (  p_count          =>   x_msg_count,
4021          p_data           =>   x_msg_data
4022       );
4023 
4024 END Validate_METHODOLOGY_CODE;
4025 
4026 
4027 PROCEDURE Validate_ORIGINAL_LEAD_ID (
4028     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4029     P_Validation_mode            IN   VARCHAR2,
4030     P_ORIGINAL_LEAD_ID           IN   NUMBER,
4031     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4032     X_Return_Status              OUT NOCOPY  VARCHAR2,
4033     X_Msg_Count                  OUT NOCOPY  NUMBER,
4034     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4035     )
4036 IS
4037   CURSOR C_ORIGINAL_LEAD_ID_Exists (c_ORIGINAL_LEAD_ID VARCHAR2) IS
4038      SELECT  'X'
4039      FROM  as_leads_all
4040      WHERE lead_id = c_original_lead_id;
4041 
4042   l_val VARCHAR2(1);
4043   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_ORIGINAL_LEAD_ID';
4044 
4045 
4046 BEGIN
4047 
4048       -- Initialize message list if p_init_msg_list is set to TRUE.
4049       IF FND_API.to_Boolean( p_init_msg_list )
4050       THEN
4051           FND_MSG_PUB.initialize;
4052       END IF;
4053 
4054 
4055       -- Initialize API return status to SUCCESS
4056       x_return_status := FND_API.G_RET_STS_SUCCESS;
4057 
4058       IF (p_ORIGINAL_LEAD_ID is NOT NULL) and
4059          (p_ORIGINAL_LEAD_ID <> FND_API.G_MISS_NUM)
4060       THEN
4061           -- METHODOLOGY_CODE should exist in as_leads_all
4062           OPEN  C_ORIGINAL_LEAD_ID_Exists (p_ORIGINAL_LEAD_ID);
4063           FETCH C_ORIGINAL_LEAD_ID_Exists into l_val;
4064 
4065           IF C_ORIGINAL_LEAD_ID_Exists%NOTFOUND THEN
4066               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4067               --                  'Private API: ORIGINAL_LEAD_ID is invalid');
4068 
4069               AS_UTILITY_PVT.Set_Message(
4070                   p_module        => l_module,
4071                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4072                   p_msg_name      => 'API_INVALID_ORIG_LEAD_ID',
4073                   p_token1        => 'VALUE',
4074                   p_token1_value  => p_ORIGINAL_LEAD_ID );
4075 
4076               x_return_status := FND_API.G_RET_STS_ERROR;
4077           END IF;
4078 
4079           CLOSE C_ORIGINAL_LEAD_ID_Exists;
4080       END IF;
4081 
4082       -- Standard call to get message count and if count is 1, get message info.
4083       FND_MSG_PUB.Count_And_Get
4084       (  p_count          =>   x_msg_count,
4085          p_data           =>   x_msg_data
4086       );
4087 
4088 END Validate_ORIGINAL_LEAD_ID;
4089 
4090 
4091 PROCEDURE Validate_DECN_TIMEFRAME_CODE (
4092     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4093     P_Validation_mode            IN   VARCHAR2,
4094     P_DECISION_TIMEFRAME_CODE    IN   VARCHAR2,
4095     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4096     X_Return_Status              OUT NOCOPY  VARCHAR2,
4097     X_Msg_Count                  OUT NOCOPY  NUMBER,
4098     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4099     )
4100 IS
4101   CURSOR C_DECN_TIMEFRAME_Exists (c_lookup_type VARCHAR2,
4102                                   c_DECISION_TIMEFRAME_CODE VARCHAR2) IS
4103      SELECT  'X'
4104      FROM  as_lookups
4105      WHERE lookup_type = c_lookup_type
4106            and lookup_code = c_DECISION_TIMEFRAME_CODE
4107            and enabled_flag = 'Y';
4108 
4109   l_val VARCHAR2(1);
4110   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_DECN_TIMEFRAME_CODE';
4111 
4112 BEGIN
4113 
4114       -- Initialize message list if p_init_msg_list is set to TRUE.
4115       IF FND_API.to_Boolean( p_init_msg_list )
4116       THEN
4117           FND_MSG_PUB.initialize;
4118       END IF;
4119 
4120 
4121       -- Initialize API return status to SUCCESS
4122       x_return_status := FND_API.G_RET_STS_SUCCESS;
4123 
4124       IF (p_DECISION_TIMEFRAME_CODE is NOT NULL) and
4125          (p_DECISION_TIMEFRAME_CODE <> FND_API.G_MISS_CHAR)
4126       THEN
4127           -- DECISION_TIMEFRAME_CODE should exist in as_lookups
4128           OPEN  C_DECN_TIMEFRAME_Exists ('DECISION_TIMEFRAME',
4129                                          p_DECISION_TIMEFRAME_CODE);
4130           FETCH C_DECN_TIMEFRAME_Exists into l_val;
4131 
4132           IF C_DECN_TIMEFRAME_Exists%NOTFOUND THEN
4133               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4134               --           'Private API: DECISION_TIMEFRAME_CODE is invalid');
4135 
4136               AS_UTILITY_PVT.Set_Message(
4137                   p_module        => l_module,
4138                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4139                   p_msg_name      => 'API_INVALID_DCN_TIMEFRAME_CODE',
4140                   p_token1        => 'VALUE',
4141                   p_token1_value  => p_DECISION_TIMEFRAME_CODE );
4142 
4143               x_return_status := FND_API.G_RET_STS_ERROR;
4144           END IF;
4145 
4146           CLOSE C_DECN_TIMEFRAME_Exists;
4147       END IF;
4148 
4149       -- Standard call to get message count and if count is 1, get message info.
4150       FND_MSG_PUB.Count_And_Get
4151       (  p_count          =>   x_msg_count,
4152          p_data           =>   x_msg_data
4153       );
4154 
4155 END Validate_DECN_TIMEFRAME_CODE;
4156 
4157 
4158 PROCEDURE Validate_OFFER_ID (
4159     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4160     P_Validation_mode            IN   VARCHAR2,
4161     P_SOURCE_PROMOTION_ID        IN   NUMBER,
4162     P_OFFER_ID                   IN   NUMBER,
4163     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4164     X_Return_Status              OUT NOCOPY  VARCHAR2,
4165     X_Msg_Count                  OUT NOCOPY  NUMBER,
4166     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4167     )
4168 IS
4169 
4170 CURSOR C_OFFER_ID_Exists (c_OFFER_ID NUMBER) IS
4171      SELECT  'X'
4172      FROM  ams_source_codes
4173      WHERE source_code_id = c_offer_id
4174      and   ARC_SOURCE_CODE_FOR = 'OFFR';
4175 
4176 --
4177 --           and nvl(start_date, sysdate) <= sysdate
4178 --           and nvl(end_date, sysdate) >= sysdate
4179            -- ffang 012501
4180 --           and ARC_ACT_OFFER_USED_BY = 'CAMP'
4181 --           and ACT_OFFER_USED_BY_ID =
4182 --	                  (SELECT CAMPAIGN_ID
4183 --	                   FROM AMS_CAMPAIGNS_VL c, AMS_SOURCE_CODES s
4184 --	                   WHERE c.SOURCE_CODE = s.SOURCE_CODE
4185 --                      AND s.SOURCE_CODE_ID = P_SOURCE_PROMOTION_ID);
4186 
4187   l_val VARCHAR2(1);
4188   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
4189   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_OFFER_ID';
4190 BEGIN
4191 
4192       -- Initialize message list IF p_init_msg_list is set to TRUE.
4193       IF FND_API.to_Boolean( p_init_msg_list )
4194       THEN
4195           FND_MSG_PUB.initialize;
4196       END IF;
4197 
4198       -- Initialize API return status to SUCCESS
4199       x_return_status := FND_API.G_RET_STS_SUCCESS;
4200 
4201       -- Debug Message
4202       -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4203                                    -- 'Validate offer id');
4204 
4205       IF (p_OFFER_ID is NOT NULL) and (p_OFFER_ID <> FND_API.G_MISS_NUM)
4206       THEN
4207           -- OFFER_ID should exist in ams_act_offers
4208           OPEN  C_OFFER_ID_Exists (p_OFFER_ID);
4209           FETCH C_OFFER_ID_Exists into l_val;
4210 
4211           IF C_OFFER_ID_Exists%NOTFOUND THEN
4212               IF l_debug THEN
4213               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4214                                            'Private API: OFFER_ID is invalid');
4215               END IF;
4216               AS_UTILITY_PVT.Set_Message(
4217                   p_module        => l_module,
4218                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4219                   p_msg_name      => 'API_INVALID_ID',
4220                   p_token1        => 'COLUMN',
4221                   p_token1_value  => 'OFFER',
4222                   p_token2        => 'VALUE',
4223                   p_token2_value  => p_OFFER_ID );
4224 
4225               x_return_status := FND_API.G_RET_STS_ERROR;
4226           END IF;
4227           CLOSE C_OFFER_ID_Exists;
4228       END IF;
4229 
4230       -- Standard call to get message count and IF count is 1, get message info.
4231       FND_MSG_PUB.Count_And_Get
4232       (  p_count          =>   x_msg_count,
4233          p_data           =>   x_msg_data
4234       );
4235 
4236 END Validate_OFFER_ID;
4237 
4238 
4239 PROCEDURE Validate_VEHICLE_RESPONSE_CODE (
4240     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4241     P_Validation_mode            IN   VARCHAR2,
4242     P_VEHICLE_RESPONSE_CODE      IN   VARCHAR2,
4243     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4244     X_Return_Status              OUT NOCOPY  VARCHAR2,
4245     X_Msg_Count                  OUT NOCOPY  NUMBER,
4246     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4247     )
4248 IS
4249   CURSOR C_VEHICLE_RESPONSE_Exists (c_lookup_type VARCHAR2,
4250                                     c_Lookup_Code VARCHAR2) IS
4251       SELECT  'X'
4252       FROM  fnd_lookup_values
4253       WHERE lookup_type = c_lookup_type
4254         and lookup_code = c_Lookup_Code
4255 	and enabled_flag = 'Y'
4256 	and (end_date_active > SYSDATE OR end_date_active IS NULL);
4257 
4258   l_val VARCHAR2(1);
4259   l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
4260   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_VEHICLE_RESPONSE_CODE';
4261 BEGIN
4262 
4263       -- Initialize message list if p_init_msg_list is set to TRUE.
4264       IF FND_API.to_Boolean( p_init_msg_list )
4265       THEN
4266           FND_MSG_PUB.initialize;
4267       END IF;
4268 
4269 
4270       -- Initialize API return status to SUCCESS
4271       x_return_status := FND_API.G_RET_STS_SUCCESS;
4272 
4273       IF (p_VEHICLE_RESPONSE_CODE is NOT NULL) and
4274          (p_VEHICLE_RESPONSE_CODE <> FND_API.G_MISS_CHAR)
4275       THEN
4276           -- VEHICLE_RESPONSE_CODE should exist in as_lookups
4277           OPEN  C_VEHICLE_RESPONSE_Exists ('VEHICLE_RESPONSE_CODE',
4278                                            p_VEHICLE_RESPONSE_CODE);
4279           FETCH C_VEHICLE_RESPONSE_Exists into l_val;
4280 
4281           IF C_VEHICLE_RESPONSE_Exists%NOTFOUND THEN
4282               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4283               --             'Private API: VEHICLE_RESPONSE_CODE is invalid');
4284 
4285               AS_UTILITY_PVT.Set_Message(
4286                   p_module        => l_module,
4287                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4288                   p_msg_name      => 'API_INVALID_VEHICLE_RESP_CODE',
4289                   p_token1        => 'VALUE',
4290                   p_token1_value  => p_VEHICLE_RESPONSE_CODE );
4291 
4292               x_return_status := FND_API.G_RET_STS_ERROR;
4293           END IF;
4294 
4295           CLOSE C_VEHICLE_RESPONSE_Exists;
4296       END IF;
4297 
4298       -- Standard call to get message count and if count is 1, get message info.
4299       FND_MSG_PUB.Count_And_Get
4300       (  p_count          =>   x_msg_count,
4301          p_data           =>   x_msg_data
4302       );
4303 
4304 END Validate_VEHICLE_RESPONSE_CODE;
4305 
4306 
4307 PROCEDURE Validate_BUDGET_STATUS_CODE (
4308     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4309     P_Validation_mode            IN   VARCHAR2,
4310     P_BUDGET_STATUS_CODE         IN   VARCHAR2,
4311     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4312     X_Return_Status              OUT NOCOPY  VARCHAR2,
4313     X_Msg_Count                  OUT NOCOPY  NUMBER,
4314     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4315     )
4316 IS
4317   CURSOR C_BUDGET_STATUS_Exists (c_lookup_type VARCHAR2,
4318                                  c_Lookup_Code VARCHAR2) IS
4319       SELECT  'X'
4320       FROM  as_lookups
4321       WHERE lookup_type = c_lookup_type
4322             and lookup_code = c_Lookup_Code;
4323   l_val VARCHAR2(1);
4324   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_BUDGET_STATUS_CODE';
4325 
4326 
4327 BEGIN
4328 
4329       -- Initialize message list if p_init_msg_list is set to TRUE.
4330       IF FND_API.to_Boolean( p_init_msg_list )
4331       THEN
4332           FND_MSG_PUB.initialize;
4333       END IF;
4334 
4335 
4336       -- Initialize API return status to SUCCESS
4337       x_return_status := FND_API.G_RET_STS_SUCCESS;
4338 
4339       IF (p_BUDGET_STATUS_CODE is NOT NULL) and
4340          (p_BUDGET_STATUS_CODE <> FND_API.G_MISS_CHAR)
4341       THEN
4342           -- BUDGET_STATUS_CODE should exist in as_lookups
4343           OPEN  C_BUDGET_STATUS_Exists ('BUDGET_STATUS', p_BUDGET_STATUS_CODE);
4344           FETCH C_BUDGET_STATUS_Exists into l_val;
4345 
4346           IF C_BUDGET_STATUS_Exists%NOTFOUND THEN
4347               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4348               --             'Private API: BUDGET_STATUS_CODE is invalid');
4349 
4350               AS_UTILITY_PVT.Set_Message(
4351                   p_module        => l_module,
4352                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4353                   p_msg_name      => 'API_INVALID_BUDGET_STATUS_CODE',
4354                   p_token1        => 'VALUE',
4355                   p_token1_value  => p_BUDGET_STATUS_CODE );
4356 
4357               x_return_status := FND_API.G_RET_STS_ERROR;
4358           END IF;
4359 
4360           CLOSE C_BUDGET_STATUS_Exists;
4361       END IF;
4362 
4363       -- Standard call to get message count and if count is 1, get message info.
4364       FND_MSG_PUB.Count_And_Get
4365       (  p_count          =>   x_msg_count,
4366          p_data           =>   x_msg_data
4367       );
4368 
4369 END Validate_BUDGET_STATUS_CODE;
4370 
4371 
4372 PROCEDURE Validate_PRM_LEAD_TYPE (
4373     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4374     P_Validation_mode            IN   VARCHAR2,
4375     P_PRM_LEAD_TYPE              IN   VARCHAR2,
4376     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4377     X_Return_Status              OUT NOCOPY  VARCHAR2,
4378     X_Msg_Count                  OUT NOCOPY  NUMBER,
4379     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4380     )
4381 IS
4382   CURSOR C_PRM_LEAD_TYPE_Exists (c_lookup_type VARCHAR2,
4383                                  c_Lookup_Code VARCHAR2) IS
4384       SELECT  'X'
4385       FROM  as_lookups
4386       WHERE lookup_type = c_lookup_type
4387             and lookup_code = c_Lookup_Code;
4388   l_val VARCHAR2(1);
4389   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRM_LEAD_TYPE';
4390 
4391 BEGIN
4392 
4393       -- Initialize message list if p_init_msg_list is set to TRUE.
4394       IF FND_API.to_Boolean( p_init_msg_list )
4395       THEN
4396           FND_MSG_PUB.initialize;
4397       END IF;
4398 
4399 
4400       -- Initialize API return status to SUCCESS
4401       x_return_status := FND_API.G_RET_STS_SUCCESS;
4402 
4403       IF (p_PRM_LEAD_TYPE is NOT NULL) and
4404          (p_PRM_LEAD_TYPE <> FND_API.G_MISS_CHAR)
4405       THEN
4406           -- PRM_LEAD_TYPE should exist in as_lookups
4407           OPEN  C_PRM_LEAD_TYPE_Exists ('PRM_LEAD_TYPE', p_PRM_LEAD_TYPE);
4408           FETCH C_PRM_LEAD_TYPE_Exists into l_val;
4409 
4410           IF C_PRM_LEAD_TYPE_Exists%NOTFOUND THEN
4411               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4412               --                     'Private API: PRM_LEAD_TYPE is invalid');
4413 
4414               AS_UTILITY_PVT.Set_Message(
4415                   p_module        => l_module,
4416                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4417                   p_msg_name      => 'API_INVALID_PRM_LEAD_TYPE',
4418                   p_token1        => 'VALUE',
4419                   p_token1_value  => p_PRM_LEAD_TYPE );
4420 
4421               x_return_status := FND_API.G_RET_STS_ERROR;
4422           END IF;
4423 
4424           CLOSE C_PRM_LEAD_TYPE_Exists;
4425       END IF;
4426 
4427       -- Standard call to get message count and if count is 1, get message info.
4428       FND_MSG_PUB.Count_And_Get
4429       (  p_count          =>   x_msg_count,
4430          p_data           =>   x_msg_data
4431       );
4432 
4433 END Validate_PRM_LEAD_TYPE;
4434 
4435 
4436 PROCEDURE Validate_CUSTOMER_ID (
4437     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
4438     P_Validation_mode    IN   VARCHAR2,
4439     P_CUSTOMER_ID        IN   NUMBER,
4440     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4441     X_Return_Status      OUT NOCOPY  VARCHAR2,
4442     X_Msg_Count          OUT NOCOPY  NUMBER,
4443     X_Msg_Data           OUT NOCOPY  VARCHAR2
4444     )
4445 IS
4446 
4447 CURSOR c_customer_status(p_customer_id number) IS
4448 	select STATUS
4449 	from hz_parties
4450 	where party_id = p_customer_id;
4451 l_status 	VARCHAR2(1);
4452 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_CUSTOMER_ID';
4453 
4454 BEGIN
4455       -- Initialize message list if p_init_msg_list is set to TRUE.
4456       IF FND_API.to_Boolean( p_init_msg_list )
4457       THEN
4458           FND_MSG_PUB.initialize;
4459       END IF;
4460 
4461       -- Initialize API return status to SUCCESS
4462       x_return_status := FND_API.G_RET_STS_SUCCESS;
4463 
4464       -- validate NOT NULL column
4465       IF(p_CUSTOMER_ID is NULL)
4466       THEN
4467           -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4468           --          'Private API: Violate NOT NULL constraint(CUSTOMER_ID)');
4469 
4470           AS_UTILITY_PVT.Set_Message(
4471               p_module        => l_module,
4472               p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4473               p_msg_name      => 'API_MISSING_CUSTOMER_ID');
4474 
4475           x_return_status := FND_API.G_RET_STS_ERROR;
4476       ELSE
4477 	  -- Check customer status in creation mode
4478           IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE) and
4479              (p_CUSTOMER_ID <> FND_API.G_MISS_NUM)
4480           THEN
4481 	      OPEN c_customer_status(P_CUSTOMER_ID);
4482 	      FETCH c_customer_status into l_status;
4483 	      CLOSE c_customer_status;
4484 	      IF l_status = 'I' THEN
4485           	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4486           	  THEN
4487               	      AS_UTILITY_PVT.Set_Message(
4488                   	p_module        => l_module,
4489                   	p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4490                   	p_msg_name      => 'WARN_INACTIVE_CUSTOMER');
4491 
4492           	  END IF;
4493 		  x_return_status := FND_API.G_RET_STS_ERROR;
4494                   raise FND_API.G_EXC_ERROR;
4495 	      END IF;
4496 	  END IF;
4497 
4498           -- Calling from Create APIs, customer_id can not be G_MISS_NUM
4499           IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE) and
4500              (p_CUSTOMER_ID = FND_API.G_MISS_NUM)
4501           THEN
4502               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4503               --                        'Private API: CUSTOMER_ID is missing');
4504 
4505               AS_UTILITY_PVT.Set_Message(
4506                   p_module        => l_module,
4507                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4508                   p_msg_name      => 'API_MISSING_CUSTOMER_ID');
4509 
4510               x_return_status := FND_API.G_RET_STS_ERROR;
4511 
4512           -- If customer_id <> G_MISS_NUM, use TCA validation procedure
4513           ELSIF (p_CUSTOMER_ID <> FND_API.G_MISS_NUM)
4514           THEN
4515               AS_TCA_PVT.validate_party_id(
4516                   p_init_msg_list          => FND_API.G_FALSE,
4517                   p_party_id               => P_CUSTOMER_ID,
4518                   x_return_status          => x_return_status,
4519                   x_msg_count              => x_msg_count,
4520                   x_msg_data               => x_msg_data);
4521 
4522               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4523                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4524                   --                 'Private API: CUSTOMER_ID is invalid');
4525 
4526                   AS_UTILITY_PVT.Set_Message(
4527                       p_module        => l_module,
4528                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4529                       p_msg_name      => 'API_INVALID_CUSTOMER_ID',
4530                       p_token1        => 'VALUE',
4531                       p_token1_value  => p_CUSTOMER_ID );
4532 
4533               END IF;
4534 
4535           END IF;
4536       END IF;
4537 
4538       -- Standard call to get message count and if count is 1, get message info.
4539       FND_MSG_PUB.Count_And_Get
4540       (  p_count          =>   x_msg_count,
4541          p_data           =>   x_msg_data
4542       );
4543 END Validate_CUSTOMER_ID;
4544 
4545 
4546 
4547 PROCEDURE Validate_INC_PARTNER_PARTY_ID (
4548     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4549     P_Validation_mode            IN   VARCHAR2,
4550     P_INC_PARTNER_PARTY_ID       IN   NUMBER,
4551     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4552     X_Return_Status              OUT NOCOPY  VARCHAR2,
4553     X_Msg_Count                  OUT NOCOPY  NUMBER,
4554     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4555     )
4556 IS
4557   CURSOR C_INC_PRTN_PARTY_ID_Exist (c_inc_parn_party_id NUMBER) IS
4558       SELECT  'X'
4559 	 FROM as_sf_ptr_v
4560 	 WHERE partner_customer_id = c_inc_parn_party_id;
4561       -- FROM  pv_partners_v
4562       -- WHERE partner_id = c_inc_parn_party_id;
4563   l_val VARCHAR2(1);
4564   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_INC_PARTNER_PARTY_ID';
4565 
4566 BEGIN
4567 
4568       -- Initialize message list if p_init_msg_list is set to TRUE.
4569       IF FND_API.to_Boolean( p_init_msg_list )
4570       THEN
4571           FND_MSG_PUB.initialize;
4572       END IF;
4573 
4574 
4575       -- Initialize API return status to SUCCESS
4576       x_return_status := FND_API.G_RET_STS_SUCCESS;
4577 
4578       IF (P_INC_PARTNER_PARTY_ID is NOT NULL) and
4579          (P_INC_PARTNER_PARTY_ID <> FND_API.G_MISS_NUM)
4580       THEN
4581           -- AS_TCA_PVT.validate_party_id(
4582           --     p_init_msg_list          => FND_API.G_FALSE,
4583           --     p_party_id               => P_INC_PARTNER_PARTY_ID,
4584           --     x_return_status          => x_return_status,
4585           --     x_msg_count              => x_msg_count,
4586           --     x_msg_data               => x_msg_data);
4587 
4588           -- IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4589           --     -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4590           --     --             'Private API: INC_PARTNER_PARTY_ID is invalid');
4591 
4592 
4593           OPEN  C_INC_PRTN_PARTY_ID_Exist (P_INC_PARTNER_PARTY_ID);
4594           FETCH C_INC_PRTN_PARTY_ID_Exist into l_val;
4595 
4596           IF C_INC_PRTN_PARTY_ID_Exist%NOTFOUND THEN
4597 
4598               AS_UTILITY_PVT.Set_Message(
4599                   p_module        => l_module,
4600                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4601                   p_msg_name      => 'API_INVALID_INC_PTNR_PARTY_ID',
4602                   p_token1        => 'VALUE',
4603                   p_token1_value  => p_INC_PARTNER_PARTY_ID );
4604 
4605           END IF;
4606       END IF;
4607 
4608       -- Standard call to get message count and if count is 1, get message info.
4609       FND_MSG_PUB.Count_And_Get
4610       (  p_count          =>   x_msg_count,
4611          p_data           =>   x_msg_data
4612       );
4613 
4614 END Validate_INC_PARTNER_PARTY_ID;
4615 
4616 
4617 PROCEDURE Validate_CLOSE_COMPETITOR_ID (
4618     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4619     P_Validation_mode            IN   VARCHAR2,
4620     P_CLOSE_COMPETITOR_ID        IN   NUMBER,
4621     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4622     X_Return_Status              OUT NOCOPY  VARCHAR2,
4623     X_Msg_Count                  OUT NOCOPY  NUMBER,
4624     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4625     )
4626 IS
4627 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_CLOSE_COMPETITOR_ID';
4628 BEGIN
4629 
4630       -- Initialize message list if p_init_msg_list is set to TRUE.
4631       IF FND_API.to_Boolean( p_init_msg_list )
4632       THEN
4633           FND_MSG_PUB.initialize;
4634       END IF;
4635 
4636 
4637       -- Initialize API return status to SUCCESS
4638       x_return_status := FND_API.G_RET_STS_SUCCESS;
4639 
4640       IF (p_CLOSE_COMPETITOR_ID is NOT NULL) and
4641          (p_CLOSE_COMPETITOR_ID <> FND_API.G_MISS_NUM)
4642       THEN
4643           AS_TCA_PVT.validate_party_id(
4644               p_init_msg_list          => FND_API.G_FALSE,
4645               p_party_id               => p_CLOSE_COMPETITOR_ID,
4646               x_return_status          => x_return_status,
4647               x_msg_count              => x_msg_count,
4648               x_msg_data               => x_msg_data);
4649 
4650           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4651               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4652               --               'Private API: CLOSE_COMPETITOR_ID is invalid');
4653 
4654               AS_UTILITY_PVT.Set_Message(
4655                   p_module        => l_module,
4656                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4657                   p_msg_name      => 'API_INVALID_CLOSE_COMP_ID',
4658                   p_token1        => 'VALUE',
4659                   p_token1_value  => p_CLOSE_COMPETITOR_ID );
4660 
4661           END IF;
4662       END IF;
4663 
4664       -- Standard call to get message count and if count is 1, get message info.
4665       FND_MSG_PUB.Count_And_Get
4666       (  p_count          =>   x_msg_count,
4667          p_data           =>   x_msg_data
4668       );
4669 
4670 END Validate_CLOSE_COMPETITOR_ID;
4671 
4672 
4673 PROCEDURE Validate_END_USER_CUSTOMER_ID (
4674     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4675     P_Validation_mode            IN   VARCHAR2,
4676     P_END_USER_CUSTOMER_ID       IN   NUMBER,
4677     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4678     X_Return_Status              OUT NOCOPY  VARCHAR2,
4679     X_Msg_Count                  OUT NOCOPY  NUMBER,
4680     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4681     )
4682 IS
4683 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_END_USER_CUSTOMER_ID';
4684 BEGIN
4685 
4686       -- Initialize message list if p_init_msg_list is set to TRUE.
4687       IF FND_API.to_Boolean( p_init_msg_list )
4688       THEN
4689           FND_MSG_PUB.initialize;
4690       END IF;
4691 
4692 
4693       -- Initialize API return status to SUCCESS
4694       x_return_status := FND_API.G_RET_STS_SUCCESS;
4695 
4696       IF (p_END_USER_CUSTOMER_ID is NOT NULL) and
4697          (p_END_USER_CUSTOMER_ID <> FND_API.G_MISS_NUM)
4698       THEN
4699           AS_TCA_PVT.validate_party_id(
4700               p_init_msg_list          => FND_API.G_FALSE,
4701               p_party_id               => p_END_USER_CUSTOMER_ID,
4702               x_return_status          => x_return_status,
4703               x_msg_count              => x_msg_count,
4704               x_msg_data               => x_msg_data);
4705 
4706           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4707               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4708               --               'Private API: END_USER_CUSTOMER_ID is invalid');
4709 
4710               AS_UTILITY_PVT.Set_Message(
4711                   p_module        => l_module,
4712                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4713                   p_msg_name      => 'API_INVALID_END_USER_CUST_ID',
4714                   p_token1        => 'VALUE',
4715                   p_token1_value  => p_END_USER_CUSTOMER_ID );
4716 
4717           END IF;
4718       END IF;
4719 
4720       -- Standard call to get message count and if count is 1, get message info.
4721       FND_MSG_PUB.Count_And_Get
4722       (  p_count          =>   x_msg_count,
4723          p_data           =>   x_msg_data
4724       );
4725 
4726 END Validate_END_USER_CUSTOMER_ID;
4727 
4728 
4729 
4730 PROCEDURE Validate_ADDRESS_ID (
4731     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
4732     P_Validation_mode    IN   VARCHAR2,
4733     P_ADDRESS_ID         IN   NUMBER,
4734     P_CUSTOMER_ID        IN   NUMBER,
4735     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4736     X_Return_Status      OUT NOCOPY  VARCHAR2,
4737     X_Msg_Count          OUT NOCOPY  NUMBER,
4738     X_Msg_Data           OUT NOCOPY  VARCHAR2
4739     )
4740 IS
4741 l_check_address  VARCHAR2(1);
4742 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
4743 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_ADDRESS_ID';
4744 
4745 BEGIN
4746       -- Initialize message list if p_init_msg_list is set to TRUE.
4747       IF FND_API.to_Boolean( p_init_msg_list )
4748       THEN
4749           FND_MSG_PUB.initialize;
4750       END IF;
4751 
4752       -- Initialize API return status to SUCCESS
4753       x_return_status := FND_API.G_RET_STS_SUCCESS;
4754 
4755       IF (p_ADDRESS_ID is not NULL) and (p_ADDRESS_ID <> FND_API.G_MISS_NUM)
4756       THEN
4757           IF (p_CUSTOMER_ID is NULL) or (p_CUSTOMER_ID = FND_API.G_MISS_NUM)
4758           THEN
4759               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4760               --      'Private API: need CUSTOMER_ID to validate ADDRESS_ID');
4761 
4762               AS_UTILITY_PVT.Set_Message(
4763                   p_module        => l_module,
4764                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4765                   p_msg_name      => 'API_MISSING_CUSTOMER_ID');
4766 
4767               x_return_status := FND_API.G_RET_STS_ERROR;
4768 
4769           ELSE
4770               AS_TCA_PVT.validate_party_site_id(
4771                   p_init_msg_list          => FND_API.G_FALSE,
4772                   p_party_id               => P_CUSTOMER_ID,
4773                   p_party_site_id          => P_ADDRESS_ID,
4774                   x_return_status          => x_return_status,
4775                   x_msg_count              => x_msg_count,
4776                   x_msg_data               => x_msg_data);
4777 
4778               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4779                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4780                   --               'Private API: ADDRESS_ID is invalid');
4781 		  FND_MSG_PUB.initialize;
4782                   AS_UTILITY_PVT.Set_Message(
4783                       p_module        => l_module,
4784                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4785                       p_msg_name      => 'AS_INVALID_ADDRESS_ID');
4786 
4787               END IF;
4788           END IF;
4789 
4790       ELSIF p_ADDRESS_ID = FND_API.G_MISS_NUM AND
4791             p_validation_mode = AS_UTILITY_PVT.G_UPDATE THEN
4792  	  NULL;
4793 
4794       ELSE  -- address_id is NULL or g_miss_num in creation mode
4795           IF l_debug THEN
4796           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4797                                        'ADDRESS_ID is not entered');
4798           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
4799                   FND_PROFILE.Value('AS_OPP_ADDRESS_REQUIRED'));
4800 
4801           END IF;
4802 
4803           l_check_address :=
4804                     nvl(FND_PROFILE.Value('AS_OPP_ADDRESS_REQUIRED'),'Y');
4805           IF (l_check_address = 'Y')
4806           THEN
4807               AS_UTILITY_PVT.Set_Message(
4808                   p_module        => l_module,
4809                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4810                   p_msg_name      => 'API_MISSING_ADDRESS_ID');
4811 
4812               x_return_status := FND_API.G_RET_STS_ERROR;
4813           END IF;
4814       END IF;
4815 
4816       -- Standard call to get message count and if count is 1, get message info.
4817       FND_MSG_PUB.Count_And_Get
4818       (  p_count          =>   x_msg_count,
4819          p_data           =>   x_msg_data
4820       );
4821 
4822 END Validate_ADDRESS_ID;
4823 
4824 
4825 PROCEDURE Validate_END_USER_ADDRESS_ID (
4826     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
4827     P_Validation_mode            IN   VARCHAR2,
4828     P_END_USER_ADDRESS_ID        IN   NUMBER,
4829     P_END_USER_CUSTOMER_ID       IN   NUMBER,
4830     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4831     X_Return_Status              OUT NOCOPY  VARCHAR2,
4832     X_Msg_Count                  OUT NOCOPY  NUMBER,
4833     X_Msg_Data                   OUT NOCOPY  VARCHAR2
4834     )
4835 IS
4836 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_END_USER_ADDRESS_ID';
4837 BEGIN
4838 
4839       -- Initialize message list if p_init_msg_list is set to TRUE.
4840       IF FND_API.to_Boolean( p_init_msg_list )
4841       THEN
4842           FND_MSG_PUB.initialize;
4843       END IF;
4844 
4845 
4846       -- Initialize API return status to SUCCESS
4847       x_return_status := FND_API.G_RET_STS_SUCCESS;
4848 
4849       IF (p_END_USER_ADDRESS_ID is not NULL) and
4850          (p_END_USER_ADDRESS_ID <> FND_API.G_MISS_NUM)
4851       THEN
4852           IF (p_END_USER_CUSTOMER_ID is NULL) or
4853              (p_END_USER_CUSTOMER_ID = FND_API.G_MISS_NUM)
4854           THEN
4855               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4856               --       'Private API: need CUSTOMER_ID to validate ADDRESS_ID');
4857 
4858               AS_UTILITY_PVT.Set_Message(
4859                   p_module        => l_module,
4860                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4861                   p_msg_name      => 'API_MISSING_END_USER_CUST_ID');
4862 
4863               x_return_status := FND_API.G_RET_STS_ERROR;
4864 
4865           ELSE
4866               AS_TCA_PVT.validate_party_site_id(
4867                   p_init_msg_list          => FND_API.G_FALSE,
4868                   p_party_id               => P_END_USER_CUSTOMER_ID,
4869                   p_party_site_id          => P_END_USER_ADDRESS_ID,
4870                   x_return_status          => x_return_status,
4871                   x_msg_count              => x_msg_count,
4872                   x_msg_data               => x_msg_data);
4873 
4874               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4875                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
4876                   --           'Private API: END_USER_ADDRESS_ID is invalid');
4877 
4878                   AS_UTILITY_PVT.Set_Message(
4879                       p_module        => l_module,
4880                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4881                       p_msg_name      => 'API_INVALID_END_USER_ADDR_ID',
4882                       p_token1        => 'VALUE',
4883                       p_token1_value  => p_END_USER_ADDRESS_ID );
4884 
4885               END IF;
4886           END IF;
4887       END IF;
4888 
4889       -- Standard call to get message count and if count is 1, get message info.
4890       FND_MSG_PUB.Count_And_Get
4891       (  p_count          =>   x_msg_count,
4892          p_data           =>   x_msg_data
4893       );
4894 
4895 END Validate_END_USER_ADDRESS_ID;
4896 
4897 PROCEDURE Validate_OPP_OWNER (
4898     P_Init_Msg_List          IN   VARCHAR2     := FND_API.G_FALSE,
4899     P_Validation_mode        IN   VARCHAR2,
4900     P_OWNER_SALESFORCE_ID    IN   NUMBER,
4901     P_OWNER_SALES_GROUP_ID   IN   NUMBER,
4902     X_Item_Property_Rec      OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
4903     X_Return_Status          OUT NOCOPY  VARCHAR2,
4904     X_Msg_Count              OUT NOCOPY  NUMBER,
4905     X_Msg_Data               OUT NOCOPY  VARCHAR2
4906     )
4907 IS
4908 
4909 CURSOR VALIDATE_SALESGROUP (p_SALESGROUP_ID NUMBER)
4910 IS
4911       SELECT 'X'
4912       FROM   jtf_rs_groups_b grp
4913       WHERE  NVL(GRP.end_date_active,SYSDATE) >= SYSDATE
4914       AND    grp.group_id = p_SALESGROUP_ID ;
4915 
4916 CURSOR VALIDATE_COMBINATION (p_SALESREP_ID NUMBER, p_SALESGROUP_ID NUMBER)
4917 IS
4918 	SELECT 'X'
4919 	  FROM jtf_rs_group_members GRPMEM
4920 	 WHERE resource_id = p_SALESREP_ID
4921 	   AND group_id = p_SALESGROUP_ID
4922 	   AND delete_flag = 'N'
4923 	   AND EXISTS
4924 		(SELECT 'X'
4925 		   FROM jtf_rs_role_relations REL
4926 		  WHERE role_resource_type = 'RS_GROUP_MEMBER'
4927 		    AND delete_flag = 'N'
4928 		    AND sysdate between REL.start_date_active  and nvl(REL.end_date_active,sysdate)
4929 		    AND REL.role_resource_id = GRPMEM.group_member_id
4930 		    AND role_id IN (SELECT role_id FROM jtf_rs_roles_b WHERE role_type_code IN ('SALES','TELESALES','FIELDSALES','PRM')));
4931 
4932 
4933 CURSOR VALIDATE_SALESREP (P_SALESREP_ID NUMBER)
4934 IS
4935       SELECT 'X'
4936       FROM   jtf_rs_resource_extns res,
4937 	     jtf_rs_role_relations rrel,
4938 	     jtf_rs_roles_b role
4939       WHERE  sysdate between res.start_date_active  and nvl(res.end_date_active,sysdate)
4940       AND    sysdate between rrel.start_date_active and nvl(rrel.end_date_active,sysdate)
4941       AND    res.resource_id = rrel.role_resource_id
4942       AND    rrel.role_resource_type = 'RS_INDIVIDUAL'
4943       AND    rrel.role_id = role.role_id
4944       AND    role.role_type_code IN ('SALES', 'TELESALES', 'FIELDSALES', 'PRM')
4945       AND    role.admin_flag = 'N'
4946       AND    res.resource_id = p_SALESREP_ID
4947       AND    res.category = 'EMPLOYEE';
4948 
4949 l_val   VARCHAR2(1);
4950 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
4951 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_OPP_OWNER';
4952 
4953 BEGIN
4954 
4955       -- Initialize message list if p_init_msg_list is set to TRUE.
4956       IF FND_API.to_Boolean( p_init_msg_list )
4957       THEN
4958           FND_MSG_PUB.initialize;
4959       END IF;
4960 
4961       -- Initialize API return status to SUCCESS
4962       x_return_status := FND_API.G_RET_STS_SUCCESS;
4963 
4964 	  OPEN  VALIDATE_SALESREP (p_owner_salesforce_id);
4965 	  FETCH VALIDATE_SALESREP into l_val;
4966 	  IF VALIDATE_SALESREP%NOTFOUND THEN
4967 	      IF l_debug THEN
4968 	      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
4969 		    'Private API: OWNER_SALESFORCE_ID is not valid');
4970 	      END IF;
4971 		AS_UTILITY_PVT.Set_Message(
4972 		  p_module        => l_module,
4973 		  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4974 		  p_msg_name      => 'API_INVALID_ID',
4975 		  p_token1        => 'COLUMN',
4976 		  p_token1_value  => 'OWNER SALESFORCE_ID',
4977 		  p_token2        => 'VALUE',
4978 		  p_token2_value  => p_owner_salesforce_id );
4979 	      x_return_status := FND_API.G_RET_STS_ERROR;
4980 	  END IF;
4981 	  CLOSE VALIDATE_SALESREP;
4982 
4983 	  OPEN  VALIDATE_SALESGROUP (p_owner_sales_group_id);
4984 	  FETCH VALIDATE_SALESGROUP into l_val;
4985 	  IF VALIDATE_SALESGROUP%NOTFOUND THEN
4986 	      IF l_debug THEN
4987 		      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
4988 			    'Private API: OWNER_SALES_GROUP_ID is not valid');
4989 	      END IF;
4990 		AS_UTILITY_PVT.Set_Message(
4991 		  p_module        => l_module,
4992 		  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
4993 		  p_msg_name      => 'API_INVALID_ID',
4994 		  p_token1        => 'COLUMN',
4995 		  p_token1_value  => 'OWNER SALESGROUP_ID',
4996 		  p_token2        => 'VALUE',
4997 		  p_token2_value  => p_owner_sales_group_id );
4998 	      x_return_status := FND_API.G_RET_STS_ERROR;
4999 	  END IF;
5000 	  CLOSE VALIDATE_SALESGROUP;
5001 
5002 	  OPEN  VALIDATE_COMBINATION (p_owner_salesforce_id,p_owner_sales_group_id);
5003 	  FETCH VALIDATE_COMBINATION into l_val;
5004 	  IF VALIDATE_COMBINATION%NOTFOUND THEN
5005 	      IF l_debug THEN
5006 	      AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_ERROR,
5007 		    'Private API: OWNER_SALES_GROUP_ID is not valid');
5008 	      END IF;
5009 		AS_UTILITY_PVT.Set_Message(
5010 		  p_module        => l_module,
5011 		  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5012 		  p_msg_name      => 'API_INVALID_ID',
5013 		  p_token1        => 'COLUMN',
5014 		  p_token1_value  => 'OWNER SALESFORCE/SALESGROUP COMBINATION',
5015 		  p_token2        => 'VALUE',
5016 		  p_token2_value  => to_char(p_owner_salesforce_id) || '/' || to_char(p_owner_sales_group_id) );
5017 	      x_return_status := FND_API.G_RET_STS_ERROR;
5018 	  END IF;
5019 	  CLOSE VALIDATE_COMBINATION;
5020 
5021       -- Standard call to get message count and if count is 1, get message info.
5022       FND_MSG_PUB.Count_And_Get
5023       (  p_count          =>   x_msg_count,
5024          p_data           =>   x_msg_data
5025       );
5026 
5027 END Validate_OPP_OWNER;
5028 
5029 PROCEDURE Validate_AUTO_ASGN_TYPE (
5030     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5031     P_Validation_mode            IN   VARCHAR2,
5032     P_AUTO_ASSIGNMENT_TYPE       IN   VARCHAR2,
5033     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5034     X_Return_Status              OUT NOCOPY  VARCHAR2,
5035     X_Msg_Count                  OUT NOCOPY  NUMBER,
5036     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5037     )
5038 IS
5039   CURSOR C_AUTO_ASGN_TYPE_Exists (c_lookup_type VARCHAR2,
5040                                   c_Lookup_Code VARCHAR2) IS
5041       SELECT  'X'
5042       FROM  as_lookups
5043       WHERE lookup_type = c_lookup_type
5044             and lookup_code = c_Lookup_Code;
5045   l_val VARCHAR2(1);
5046   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_AUTO_ASGN_TYPE';
5047 
5048 BEGIN
5049 
5050       -- Initialize message list if p_init_msg_list is set to TRUE.
5051       IF FND_API.to_Boolean( p_init_msg_list )
5052       THEN
5053           FND_MSG_PUB.initialize;
5054       END IF;
5055 
5056 
5057       -- Initialize API return status to SUCCESS
5058       x_return_status := FND_API.G_RET_STS_SUCCESS;
5059 
5060       IF (p_AUTO_ASSIGNMENT_TYPE is NOT NULL) and
5061          (p_AUTO_ASSIGNMENT_TYPE <> FND_API.G_MISS_CHAR)
5062       THEN
5063           -- AUTO_ASSIGNMENT_TYPE should exist in as_lookups
5064           OPEN  C_AUTO_ASGN_TYPE_Exists ('AUTO_ASSIGNMENT_TYPE',
5065                                          p_AUTO_ASSIGNMENT_TYPE);
5066           FETCH C_AUTO_ASGN_TYPE_Exists into l_val;
5067 
5068           IF C_AUTO_ASGN_TYPE_Exists%NOTFOUND THEN
5069               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5070               --              'Private API: AUTO_ASSIGNMENT_TYPE is invalid');
5071 
5072               AS_UTILITY_PVT.Set_Message(
5073                   p_module        => l_module,
5074                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5075                   p_msg_name      => 'API_INVALID_AUTO_ASGN_TYPE',
5076                   p_token1        => 'VALUE',
5077                   p_token1_value  => p_AUTO_ASSIGNMENT_TYPE );
5078 
5079               x_return_status := FND_API.G_RET_STS_ERROR;
5080           END IF;
5081 
5082           CLOSE C_AUTO_ASGN_TYPE_Exists;
5083       END IF;
5084 
5085       -- Standard call to get message count and if count is 1, get message info.
5086       FND_MSG_PUB.Count_And_Get
5087       (  p_count          =>   x_msg_count,
5088          p_data           =>   x_msg_data
5089       );
5090 
5091 END Validate_AUTO_ASGN_TYPE;
5092 
5093 
5094 PROCEDURE Validate_PRM_ASGN_TYPE (
5095     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5096     P_Validation_mode            IN   VARCHAR2,
5097     P_PRM_ASSIGNMENT_TYPE        IN   VARCHAR2,
5098     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5099     X_Return_Status              OUT NOCOPY  VARCHAR2,
5100     X_Msg_Count                  OUT NOCOPY  NUMBER,
5101     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5102     )
5103 IS
5104   CURSOR C_PRM_ASGN_TYPE_Exists (c_lookup_type VARCHAR2,
5105                                  c_Lookup_Code VARCHAR2) IS
5106       SELECT  'X'
5107       FROM  as_lookups
5108       WHERE lookup_type = c_lookup_type
5109             and lookup_code = c_Lookup_Code;
5110   l_val VARCHAR2(1);
5111   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRM_ASGN_TYPE';
5112 
5113 BEGIN
5114       -- Initialize message list if p_init_msg_list is set to TRUE.
5115       IF FND_API.to_Boolean( p_init_msg_list )
5116       THEN
5117           FND_MSG_PUB.initialize;
5118       END IF;
5119 
5120       -- Initialize API return status to SUCCESS
5121       x_return_status := FND_API.G_RET_STS_SUCCESS;
5122 
5123       IF (p_PRM_ASSIGNMENT_TYPE is NOT NULL) and
5124          (p_PRM_ASSIGNMENT_TYPE <> FND_API.G_MISS_CHAR)
5125       THEN
5126           -- PRM_ASSIGNMENT_TYPE should exist in as_lookups
5127           OPEN  C_PRM_ASGN_TYPE_Exists ('PRM_ASSIGNMENT_TYPE',
5128                                         p_PRM_ASSIGNMENT_TYPE);
5129           FETCH C_PRM_ASGN_TYPE_Exists into l_val;
5130 
5131           IF C_PRM_ASGN_TYPE_Exists%NOTFOUND THEN
5132               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5133               --              'Private API: PRM_ASSIGNMENT_TYPE is invalid');
5134 
5135               AS_UTILITY_PVT.Set_Message(
5136                   p_module        => l_module,
5137                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5138                   p_msg_name      => 'API_INVALID_PRM_ASGN_TYPE',
5139                   p_token1        => 'VALUE',
5140                   p_token1_value  => p_PRM_ASSIGNMENT_TYPE );
5141 
5142               x_return_status := FND_API.G_RET_STS_ERROR;
5143           END IF;
5144 
5145           CLOSE C_PRM_ASGN_TYPE_Exists;
5146       END IF;
5147 
5148       -- Standard call to get message count and if count is 1, get message info.
5149       FND_MSG_PUB.Count_And_Get
5150       (  p_count          =>   x_msg_count,
5151          p_data           =>   x_msg_data
5152       );
5153 
5154 END Validate_PRM_ASGN_TYPE;
5155 
5156 
5157 PROCEDURE Validate_INC_PRTNR_RESOURCE_ID (
5158     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5159     P_Validation_mode            IN   VARCHAR2,
5160     P_INC_PARTNER_RESOURCE_ID    IN   NUMBER,
5161     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5162     X_Return_Status              OUT NOCOPY  VARCHAR2,
5163     X_Msg_Count                  OUT NOCOPY  NUMBER,
5164     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5165     )
5166 IS
5167   CURSOR C_RESOURCE_ID_Exists (c_INC_PARTNER_RESOURCE_ID VARCHAR2) IS
5168       SELECT  'X'
5169 	 FROM as_sf_ptr_v
5170 	 WHERE SALESFORCE_ID = c_INC_PARTNER_RESOURCE_ID;
5171       --FROM  jtf_rs_resource_extns
5172       --WHERE RESOURCE_ID = c_INC_PARTNER_RESOURCE_ID;
5173   l_val VARCHAR2(1);
5174   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_INC_PRTNR_RESOURCE_ID';
5175 
5176 BEGIN
5177       -- Initialize message list if p_init_msg_list is set to TRUE.
5178       IF FND_API.to_Boolean( p_init_msg_list )
5179       THEN
5180           FND_MSG_PUB.initialize;
5181       END IF;
5182 
5183       -- Initialize API return status to SUCCESS
5184       x_return_status := FND_API.G_RET_STS_SUCCESS;
5185 
5186       IF (p_INC_PARTNER_RESOURCE_ID is NOT NULL) and
5187          (p_INC_PARTNER_RESOURCE_ID <> FND_API.G_MISS_NUM)
5188       THEN
5189           -- INCUMBENT_PARTNER_RESOURCE_ID should exist in jtf_rs_resource_extns
5190           OPEN  C_RESOURCE_ID_Exists (p_INC_PARTNER_RESOURCE_ID);
5191           FETCH C_RESOURCE_ID_Exists into l_val;
5192 
5193           IF C_RESOURCE_ID_Exists%NOTFOUND THEN
5194               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5195               --          'Private API: INC_PARTNER_RESOURCE_ID is invalid');
5196 
5197               AS_UTILITY_PVT.Set_Message(
5198                   p_module        => l_module,
5199                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5200                   p_msg_name      => 'API_INVALID_INC_PRTN_RS_ID',
5201                   p_token1        => 'VALUE',
5202                   p_token1_value  => p_INC_PARTNER_RESOURCE_ID );
5203 
5204               x_return_status := FND_API.G_RET_STS_ERROR;
5205           END IF;
5206 
5207           CLOSE C_RESOURCE_ID_Exists;
5208       END IF;
5209 
5210       -- Standard call to get message count and if count is 1, get message info.
5211       FND_MSG_PUB.Count_And_Get
5212       (  p_count          =>   x_msg_count,
5213          p_data           =>   x_msg_data
5214       );
5215 
5216 END Validate_INC_PRTNR_RESOURCE_ID;
5217 
5218 
5219 PROCEDURE Validate_PRM_IND_CLS_CODE (
5220     P_Init_Msg_List               IN   VARCHAR2     := FND_API.G_FALSE,
5221     P_Validation_mode             IN   VARCHAR2,
5222     P_PRM_IND_CLASSIFICATION_CODE IN   VARCHAR2,
5223     x_Item_Property_Rec           OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5224     X_Return_Status               OUT NOCOPY  VARCHAR2,
5225     X_Msg_Count                   OUT NOCOPY  NUMBER,
5226     X_Msg_Data                    OUT NOCOPY  VARCHAR2
5227     )
5228 IS
5229   CURSOR C_PRM_IND_CLS_CODE_Exists (c_lookup_type VARCHAR2,
5230                                     c_Lookup_Code VARCHAR2) IS
5231       SELECT  'X'
5232       FROM  as_lookups
5233       WHERE lookup_type = c_lookup_type
5234             and lookup_code = c_Lookup_Code;
5235   l_val VARCHAR2(1);
5236   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRM_IND_CLS_CODE';
5237 
5238 BEGIN
5239 
5240       -- Initialize message list if p_init_msg_list is set to TRUE.
5241       IF FND_API.to_Boolean( p_init_msg_list )
5242       THEN
5243           FND_MSG_PUB.initialize;
5244       END IF;
5245 
5246 
5247       -- Initialize API return status to SUCCESS
5248       x_return_status := FND_API.G_RET_STS_SUCCESS;
5249 
5250       IF (p_PRM_IND_CLASSIFICATION_CODE is NOT NULL) and
5251          (p_PRM_IND_CLASSIFICATION_CODE <> FND_API.G_MISS_CHAR)
5252       THEN
5253           -- PRM_IND_CLASSIFICATION_CODE should exist in as_lookups
5254           OPEN  C_PRM_IND_CLS_CODE_Exists ('PRM_IND_CLASSIFICATION_TYPE',
5255                                            p_PRM_IND_CLASSIFICATION_CODE);
5256           FETCH C_PRM_IND_CLS_CODE_Exists into l_val;
5257 
5258           IF C_PRM_IND_CLS_CODE_Exists%NOTFOUND THEN
5259               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5260               --       'Private API: PRM_IND_CLASSIFICATION_CODE is invalid');
5261 
5262               AS_UTILITY_PVT.Set_Message(
5263                   p_module        => l_module,
5264                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5265                   p_msg_name      => 'API_INVALID_PRM_IND_CLS_CODE',
5266                   p_token1        => 'VALUE',
5267                   p_token1_value  => p_PRM_IND_CLASSIFICATION_CODE );
5268 
5269               x_return_status := FND_API.G_RET_STS_ERROR;
5270           END IF;
5271 
5272           CLOSE C_PRM_IND_CLS_CODE_Exists;
5273       END IF;
5274 
5275       -- Standard call to get message count and if count is 1, get message info.
5276       FND_MSG_PUB.Count_And_Get
5277       (  p_count          =>   x_msg_count,
5278          p_data           =>   x_msg_data
5279       );
5280 
5281 END Validate_PRM_IND_CLS_CODE;
5282 
5283 
5284 PROCEDURE Validate_PRM_EXEC_SPONSOR_FLAG (
5285     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5286     P_Validation_mode            IN   VARCHAR2,
5287     P_PRM_EXEC_SPONSOR_FLAG      IN   VARCHAR2,
5288     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5289     X_Return_Status              OUT NOCOPY  VARCHAR2,
5290     X_Msg_Count                  OUT NOCOPY  NUMBER,
5291     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5292     )
5293 IS
5294 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRM_EXEC_SPONSOR_FLAG';
5295 BEGIN
5296       -- Initialize message list if p_init_msg_list is set to TRUE.
5297       IF FND_API.to_Boolean( p_init_msg_list )
5298       THEN
5299           FND_MSG_PUB.initialize;
5300       END IF;
5301 
5302       -- Initialize API return status to SUCCESS
5303       x_return_status := FND_API.G_RET_STS_SUCCESS;
5304 
5305       IF (p_PRM_EXEC_SPONSOR_FLAG is NOT NULL) and
5306          (p_PRM_EXEC_SPONSOR_FLAG <> FND_API.G_MISS_CHAR)
5307       THEN
5308           IF (UPPER(p_PRM_EXEC_SPONSOR_FLAG) <> 'Y') and
5309              (UPPER(p_PRM_EXEC_SPONSOR_FLAG) <> 'N')
5310           THEN
5311               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5312               --        'Private API: PRM_EXEC_SPONSOR_FLAG is invalid');
5313 
5314               AS_UTILITY_PVT.Set_Message(
5315                   p_module        => l_module,
5316                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5317                   p_msg_name      => 'API_INVALID_PRM_EXEC_SPNR_FLAG',
5318                   p_token1        => 'VALUE',
5319                   p_token1_value  => p_PRM_EXEC_SPONSOR_FLAG );
5320 
5321               x_return_status := FND_API.G_RET_STS_ERROR;
5322           END IF;
5323       END IF;
5324 
5325       -- Standard call to get message count and if count is 1, get message info.
5326       FND_MSG_PUB.Count_And_Get
5327       (  p_count          =>   x_msg_count,
5328          p_data           =>   x_msg_data
5329       );
5330 
5331 END Validate_PRM_EXEC_SPONSOR_FLAG;
5332 
5333 
5334 PROCEDURE Validate_PRM_PRJ_LDINPLE_FLAG (
5335     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5336     P_Validation_mode            IN   VARCHAR2,
5337     P_PRM_PRJ_LEAD_IN_PLACE_FLAG IN   VARCHAR2,
5338     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5339     X_Return_Status              OUT NOCOPY  VARCHAR2,
5340     X_Msg_Count                  OUT NOCOPY  NUMBER,
5341     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5342     )
5343 IS
5344 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_PRM_PRJ_LDINPLE_FLAG';
5345 BEGIN
5346       -- Initialize message list if p_init_msg_list is set to TRUE.
5347       IF FND_API.to_Boolean( p_init_msg_list )
5348       THEN
5349           FND_MSG_PUB.initialize;
5350       END IF;
5351 
5352       -- Initialize API return status to SUCCESS
5353       x_return_status := FND_API.G_RET_STS_SUCCESS;
5354 
5355       IF (p_PRM_PRJ_LEAD_IN_PLACE_FLAG is NOT NULL) and
5356          (p_PRM_PRJ_LEAD_IN_PLACE_FLAG <> FND_API.G_MISS_CHAR)
5357       THEN
5358           IF (UPPER(p_PRM_PRJ_LEAD_IN_PLACE_FLAG) <> 'Y') and
5359              (UPPER(p_PRM_PRJ_LEAD_IN_PLACE_FLAG) <> 'N')
5360           THEN
5361               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5362               --        'Private API: PRM_PRJ_LEAD_IN_PLACE_FLAG is invalid');
5363 
5364               AS_UTILITY_PVT.Set_Message(
5365                   p_module        => l_module,
5366                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5367                   p_msg_name      => 'API_INVALID_PRM_PRJ_LDINPL_FLG',
5368                   p_token1        => 'VALUE',
5369                   p_token1_value  => p_PRM_PRJ_LEAD_IN_PLACE_FLAG );
5370 
5371               x_return_status := FND_API.G_RET_STS_ERROR;
5372           END IF;
5373       END IF;
5374 
5375       -- Standard call to get message count and if count is 1, get message info.
5376       FND_MSG_PUB.Count_And_Get
5377       (  p_count          =>   x_msg_count,
5378          p_data           =>   x_msg_data
5379       );
5380 
5381 END Validate_PRM_PRJ_LDINPLE_FLAG;
5382 
5383 
5384 -- 091200 ffang, for bug 1402449, description is a mandatory column
5385 PROCEDURE Validate_Description (
5386     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
5387     P_Validation_mode    IN   VARCHAR2,
5388     P_Description        IN   VARCHAR2,
5389     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5390     X_Return_Status      OUT NOCOPY  VARCHAR2,
5391     X_Msg_Count          OUT NOCOPY  NUMBER,
5392     X_Msg_Data           OUT NOCOPY  VARCHAR2
5393     )
5394 IS
5395 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_Description';
5396 BEGIN
5397 
5398       -- Initialize message list if p_init_msg_list is set to TRUE.
5399       IF FND_API.to_Boolean( p_init_msg_list )
5400       THEN
5401           FND_MSG_PUB.initialize;
5402       END IF;
5403 
5404 
5405       -- Initialize API return status to SUCCESS
5406       x_return_status := FND_API.G_RET_STS_SUCCESS;
5407 
5408       -- validate NOT NULL column
5409       IF(p_Description is NULL)
5410       THEN
5411           AS_UTILITY_PVT.Set_Message(
5412               p_module        => l_module,
5413               p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5414               p_msg_name      => 'API_MISSING_DESCRIPTION');
5415 
5416           x_return_status := FND_API.G_RET_STS_ERROR;
5417       END IF;
5418 END Validate_Description;
5419 -- end 091200 ffang
5420 
5421 
5422 PROCEDURE Validate_FREEZE_FLAG (
5423     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5424     P_Validation_mode            IN   VARCHAR2,
5425     P_FREEZE_FLAG                IN   VARCHAR2,
5426     X_Item_Property_Rec          OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5427     X_Return_Status              OUT NOCOPY  VARCHAR2,
5428     X_Msg_Count                  OUT NOCOPY  NUMBER,
5429     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5430     )
5431 IS
5432 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_FREEZE_FLAG';
5433 BEGIN
5434       -- Initialize message list if p_init_msg_list is set to TRUE.
5435       IF FND_API.to_Boolean( p_init_msg_list )
5436       THEN
5437           FND_MSG_PUB.initialize;
5438       END IF;
5439 
5440       -- Initialize API return status to SUCCESS
5441       x_return_status := FND_API.G_RET_STS_SUCCESS;
5442 
5443       IF (p_FREEZE_FLAG is NOT NULL) and
5444          (p_FREEZE_FLAG <> FND_API.G_MISS_CHAR)
5445       THEN
5446           IF (UPPER(p_FREEZE_FLAG) <> 'Y') and
5447              (UPPER(p_FREEZE_FLAG) <> 'N')
5448           THEN
5449 
5450               AS_UTILITY_PVT.Set_Message(
5451                   p_module        => l_module,
5452                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5453                   p_msg_name      => 'API_INVALID_FREEZE_FLAG',
5454                   p_token1        => 'VALUE',
5455                   p_token1_value  => p_FREEZE_FLAG );
5456 
5457               x_return_status := FND_API.G_RET_STS_ERROR;
5458           END IF;
5459       END IF;
5460 
5461       -- Standard call to get message count and if count is 1, get message info.
5462       FND_MSG_PUB.Count_And_Get
5463       (  p_count          =>   x_msg_count,
5464          p_data           =>   x_msg_data
5465       );
5466 
5467 END Validate_FREEZE_FLAG;
5468 
5469 
5470 
5471 --
5472 -- Record-level validation procedures
5473 --
5474 
5475 PROCEDURE Validate_WinPorb_StageID (
5476     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
5477     P_Validation_mode    IN   VARCHAR2,
5478     P_Sales_Methodology_ID IN NUMBER,
5479     P_SALES_STAGE_ID     IN   NUMBER,
5480     P_WIN_PROBABILITY    IN   NUMBER,
5481     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5482     X_Return_Status      OUT NOCOPY  VARCHAR2,
5483     X_Msg_Count          OUT NOCOPY  NUMBER,
5484     X_Msg_Data           OUT NOCOPY  VARCHAR2
5485     )
5486 IS
5487   CURSOR C_Get_Stage_Info (c_SALES_STAGE_ID NUMBER) IS
5488       SELECT  nvl(min_win_probability, 0), nvl(max_win_probability, 100)
5489       FROM  as_sales_stages_all_b
5490       WHERE sales_stage_id = c_Sales_Stage_Id;
5491 
5492   CURSOR c_Win_Prob_Limit(c_SALES_METHODOLOGY_ID NUMBER, c_SALES_STAGE_ID NUMBER) IS
5493       SELECT  nvl(min_win_probability, 0), nvl(max_win_probability, 100)
5494       FROM as_sales_meth_stage_map
5495       WHERE sales_methodology_id = c_SALES_METHODOLOGY_ID
5496       AND   sales_stage_id = c_SALES_STAGE_ID;
5497 
5498 
5499   l_min_winprob   NUMBER;
5500   l_max_winprob   NUMBER;
5501   l_warning_msg   VARCHAR2(2000) := '';
5502 
5503   l_prob_ss_link  VARCHAR2(10) :=
5504         NVL(FND_PROFILE.Value('AS_OPPTY_PROB_SS_LINK'), 'WARNING');
5505 
5506   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_WinPorb_StageID';
5507 
5508 BEGIN
5509 
5510       -- Initialize message list if p_init_msg_list is set to TRUE.
5511       IF FND_API.to_Boolean( p_init_msg_list )
5512       THEN
5513           FND_MSG_PUB.initialize;
5514       END IF;
5515 
5516 
5517       -- Initialize API return status to SUCCESS
5518       x_return_status := FND_API.G_RET_STS_SUCCESS;
5519 
5520    IF(p_SALES_METHODOLOGY_ID is NOT NULL) and
5521      (p_SALES_METHODOLOGY_ID <> FND_API.G_MISS_NUM) THEN
5522 
5523       IF (p_SALES_STAGE_ID is NOT NULL) and
5524          (p_SALES_STAGE_ID <> FND_API.G_MISS_NUM) and
5525          (P_WIN_PROBABILITY is NOT NULL) and
5526          (P_WIN_PROBABILITY  <> FND_API.G_MISS_NUM)
5527       THEN
5528           -- get Sales Stage information
5529           OPEN  c_Win_Prob_Limit (p_SALES_METHODOLOGY_ID, p_SALES_STAGE_ID);
5530           FETCH c_Win_Prob_Limit into l_min_winprob, l_max_winprob;
5531 
5532           IF c_Win_Prob_Limit%NOTFOUND THEN
5533               AS_UTILITY_PVT.Set_Message(
5534                   p_module        => l_module,
5535                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5536                   p_msg_name      => 'API_INVALID_SALES_STAGE_ID',
5537                   p_token1        => 'VALUE',
5538                   p_token1_value  => p_SALES_STAGE_ID );
5539 
5540               x_return_status := FND_API.G_RET_STS_ERROR;
5541 
5542           -- Validate the win probability/sales stage link
5543           ELSIF l_min_winprob > p_win_probability or
5544               l_max_winprob < p_win_probability
5545           THEN
5546               IF l_prob_ss_link = 'WARNING'
5547               THEN
5548                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
5549                   THEN
5550 
5551 			NULL; -- bug 2437635
5552 			--FND_MESSAGE.Set_Name('AS', 'API_WARN_PROB_SS_LINK');
5553                         --FND_MSG_PUB.ADD;
5554                         --FND_MSG_PUB.G_MSG_LVL_ERROR
5555 
5556               		--AS_UTILITY_PVT.Set_Message(
5557                   	--p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5558                   	--p_msg_name      =>  'API_WARN_PROB_SS_LINK');
5559 
5560 		  	 l_warning_msg := FND_MESSAGE.GET_STRING('AS','API_WARN_PROB_SS_LINK');
5561                   -- x_return_status := FND_API.G_RET_STS_ERROR;
5562 
5563 
5564                   END IF;
5565 
5566               ELSIF l_prob_ss_link = 'ERROR'
5567               THEN
5568                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
5569                   THEN
5570                       -- FND_MESSAGE.Set_Name('AS', 'API_ERROR_PROB_SS_LINK');
5571                       -- FND_MSG_PUB.ADD;
5572 
5573               		AS_UTILITY_PVT.Set_Message(
5574                   	p_module        => l_module,
5575                   	p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5576                   	p_msg_name      =>  'API_ERROR_PROB_SS_LINK');
5577 
5578                   END IF;
5579 
5580                   x_return_status := FND_API.G_RET_STS_ERROR;
5581 
5582               END IF;
5583           END IF;
5584 
5585           CLOSE c_Win_Prob_Limit;
5586       END IF;
5587 
5588    ELSE
5589 
5590       IF (p_SALES_STAGE_ID is NOT NULL) and
5591          (p_SALES_STAGE_ID <> FND_API.G_MISS_NUM) and
5592          (P_WIN_PROBABILITY is NOT NULL) and
5593          (P_WIN_PROBABILITY  <> FND_API.G_MISS_NUM)
5594       THEN
5595           -- get Sales Stage information
5596           OPEN  C_Get_Stage_Info (p_SALES_STAGE_ID);
5597           FETCH C_Get_Stage_Info into l_min_winprob, l_max_winprob;
5598 
5599           IF C_Get_Stage_Info%NOTFOUND THEN
5600               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5601               --                     'Private API: SALES_STAGE_ID is invalid');
5602 
5603               AS_UTILITY_PVT.Set_Message(
5604                   p_module        => l_module,
5605                   p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5606                   p_msg_name      => 'API_INVALID_SALES_STAGE_ID',
5607                   p_token1        => 'VALUE',
5608                   p_token1_value  => p_SALES_STAGE_ID );
5609 
5610               x_return_status := FND_API.G_RET_STS_ERROR;
5611 
5612           -- Validate the win probability/sales stage link
5613           ELSIF l_min_winprob > p_win_probability or
5614               l_max_winprob < p_win_probability
5615           THEN
5616               IF l_prob_ss_link = 'WARNING'
5617               THEN
5618                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
5619                   THEN
5620                        --FND_MESSAGE.Set_Name('AS', 'API_WARN_PROB_SS_LINK');
5621                        --FND_MSG_PUB.ADD;
5622 
5623               		--AS_UTILITY_PVT.Set_Message(
5624                   	--p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5625                   	--p_msg_name      =>  'API_WARN_PROB_SS_LINK');
5626 		  l_warning_msg := FND_MESSAGE.GET_STRING('AS','API_WARN_PROB_SS_LINK');
5627                   -- x_return_status := FND_API.G_RET_STS_ERROR;
5628 
5629 
5630                   END IF;
5631 
5632               ELSIF l_prob_ss_link = 'ERROR'
5633               THEN
5634                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
5635                   THEN
5636                       -- FND_MESSAGE.Set_Name('AS', 'API_ERROR_PROB_SS_LINK');
5637                       -- FND_MSG_PUB.ADD;
5638 
5639               		AS_UTILITY_PVT.Set_Message(
5640                   	p_module        => l_module,
5641                   	p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5642                   	p_msg_name      =>  'API_ERROR_PROB_SS_LINK');
5643 
5644                   END IF;
5645 
5646                   x_return_status := FND_API.G_RET_STS_ERROR;
5647 
5648               END IF;
5649           END IF;
5650 
5651           CLOSE C_Get_Stage_Info;
5652       END IF;
5653 
5654    END IF;
5655 
5656       -- Standard call to get message count and if count is 1, get message info.
5657       FND_MSG_PUB.Count_And_Get
5658       (  p_count          =>   x_msg_count,
5659          p_data           =>   x_msg_data
5660       );
5661 
5662        IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
5663        		x_msg_data := l_warning_msg;
5664        END IF;
5665 
5666 END Validate_WinPorb_StageID;
5667 
5668 
5669 PROCEDURE Validate_Status_CloseReason (
5670     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
5671     P_Validation_mode    IN   VARCHAR2,
5672     P_STATUS             IN   VARCHAR2,
5673     P_CLOSE_REASON       IN   VARCHAR2,
5674     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5675     X_Return_Status      OUT NOCOPY  VARCHAR2,
5676     X_Msg_Count          OUT NOCOPY  NUMBER,
5677     X_Msg_Data           OUT NOCOPY  VARCHAR2
5678     )
5679 IS
5680   CURSOR C_Get_OppOpenStatusFlag (c_STATUS_CODE VARCHAR2) IS
5681       SELECT  opp_open_status_flag
5682       FROM  as_statuses_b
5683       WHERE STATUS_CODE = c_STATUS_CODE
5684 		  and opp_flag = 'Y'
5685             and ENABLED_FLAG = 'Y';
5686   l_val VARCHAR2(1);
5687   l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_Status_CloseReason';
5688 
5689 BEGIN
5690 
5691       -- Initialize message list if p_init_msg_list is set to TRUE.
5692       IF FND_API.to_Boolean( p_init_msg_list )
5693       THEN
5694           FND_MSG_PUB.initialize;
5695       END IF;
5696 
5697 
5698       -- Initialize API return status to SUCCESS
5699       x_return_status := FND_API.G_RET_STS_SUCCESS;
5700 
5701 	 IF (p_STATUS is NOT NULL) and (p_STATUS <> FND_API.G_MISS_CHAR)
5702 	 THEN
5703           IF (P_CLOSE_REASON is NULL) or (P_CLOSE_REASON = FND_API.G_MISS_CHAR)
5704           THEN
5705               -- get opp_open_status_flag
5706               OPEN  C_Get_OppOpenStatusFlag (p_STATUS);
5707               FETCH C_Get_OppOpenStatusFlag into l_val;
5708 
5709               IF C_Get_OppOpenStatusFlag%NOTFOUND THEN
5710               -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5711               --                     'Private API: STATUS is invalid');
5712 
5713                   AS_UTILITY_PVT.Set_Message(
5714                       p_module        => l_module,
5715                       p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5716                       p_msg_name      => 'API_INVALID_OPP_STATUS',
5717                       p_token1        => 'VALUE',
5718                       p_token1_value  => p_STATUS );
5719 
5720                   x_return_status := FND_API.G_RET_STS_ERROR;
5721 
5722               -- If opp_open_status_flag = 'N' (closed status),
5723               -- then close_reason should exist
5724               ELSIF l_val = 'N'
5725               THEN
5726                   -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
5727                   --     'Private API: CLOSE_REASON is missing');
5728 
5729                   AS_UTILITY_PVT.Set_Message(
5730                      p_module        => l_module,
5731                      p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5732                      p_msg_name      => 'API_MISSING_CLOSE_REASON');
5733 
5734                   x_return_status := FND_API.G_RET_STS_ERROR;
5735 
5736               END IF;
5737 
5738               CLOSE C_Get_OppOpenStatusFlag;
5739           END IF;
5740       END IF;
5741 
5742       -- Standard call to get message count and if count is 1, get message info.
5743       FND_MSG_PUB.Count_And_Get
5744       (  p_count          =>   x_msg_count,
5745          p_data           =>   x_msg_data
5746       );
5747 
5748 END Validate_Status_CloseReason;
5749 
5750 
5751 
5752 
5753 PROCEDURE Validate_DecisionDate (
5754     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
5755     P_Validation_mode    IN   VARCHAR2,
5756     P_DECISION_DATE      IN   DATE,
5757     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5758     X_Return_Status      OUT NOCOPY  VARCHAR2,
5759     X_Msg_Count          OUT NOCOPY  NUMBER,
5760     X_Msg_Data           OUT NOCOPY  VARCHAR2
5761     )
5762 IS
5763 
5764 l_max_date DATE;
5765 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_DecisionDate';
5766 
5767 BEGIN
5768 
5769       -- Initialize message list if p_init_msg_list is set to TRUE.
5770       IF FND_API.to_Boolean( p_init_msg_list )
5771       THEN
5772           FND_MSG_PUB.initialize;
5773       END IF;
5774 
5775 
5776       -- Initialize API return status to SUCCESS
5777       x_return_status := FND_API.G_RET_STS_SUCCESS;
5778 
5779 
5780       IF FND_PROFILE.value('AS_MAX_DAY_CLOSE_OPPORTUNITY') IS NOT NULL THEN
5781       l_max_date := TRUNC(SYSDATE)+ to_number(FND_PROFILE.value('AS_MAX_DAY_CLOSE_OPPORTUNITY'));
5782              IF TRUNC(P_DECISION_DATE) > l_max_date THEN
5783       		--DBMS_OUTPUT.PUT_LINE('rAISE ERROR');
5784       		x_return_status := FND_API.G_RET_STS_ERROR;
5785               	AS_UTILITY_PVT.Set_Message(
5786               	         p_module        => l_module,
5787               	         p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5788               	         p_msg_name      => 'AS_CLOSE_DATE_VALIDATION',
5789               	         p_token1        => 'DATE',
5790                          p_token1_value  =>  TO_CHAR(l_max_date));
5791              END IF;
5792       END IF;
5793 
5794 
5795       -- Standard call to get message count and if count is 1, get message info.
5796       FND_MSG_PUB.Count_And_Get
5797       (  p_count          =>   x_msg_count,
5798          p_data           =>   x_msg_data
5799       );
5800 
5801 EXCEPTION
5802       WHEN VALUE_ERROR THEN
5803       	--DBMS_OUTPUT.PUT_LINE('In VALUE_ERROR exception');
5804       	x_return_status := FND_API.G_RET_STS_ERROR;
5805       	AS_UTILITY_PVT.Set_Message(
5806                        p_module        => l_module,
5807                        p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5808                        p_msg_name      => 'AS_MAX_DAY_ERROR');
5809 
5810 END Validate_DecisionDate;
5811 
5812 
5813 PROCEDURE Validate_BudgetAmt_Currency (
5814     P_Init_Msg_List      IN   VARCHAR2     := FND_API.G_FALSE,
5815     P_Validation_mode    IN   VARCHAR2,
5816     P_TOTAL_AMOUNT       IN   NUMBER,
5817     P_CURRENCY_CODE      IN   VARCHAR2,
5818     X_Item_Property_Rec  OUT NOCOPY  AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE,
5819     X_Return_Status      OUT NOCOPY  VARCHAR2,
5820     X_Msg_Count          OUT NOCOPY  NUMBER,
5821     X_Msg_Data           OUT NOCOPY  VARCHAR2
5822     )
5823 IS
5824 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_BudgetAmt_Currency';
5825 
5826 BEGIN
5827 
5828       -- Initialize message list if p_init_msg_list is set to TRUE.
5829       IF FND_API.to_Boolean( p_init_msg_list )
5830       THEN
5831           FND_MSG_PUB.initialize;
5832       END IF;
5833 
5834 
5835       -- Initialize API return status to SUCCESS
5836       x_return_status := FND_API.G_RET_STS_SUCCESS;
5837 
5838       -- If budget amount is entered
5839       -- then currency_code should exist
5840       IF (P_TOTAL_AMOUNT is NOT NULL) and
5841          (P_TOTAL_AMOUNT <> FND_API.G_MISS_NUM)
5842       THEN
5843           IF (p_CURRENCY_CODE is NULL) or
5844              (p_CURRENCY_CODE = FND_API.G_MISS_CHAR)
5845           THEN
5846               AS_UTILITY_PVT.Set_Message(
5847                  p_module        => l_module,
5848                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
5849                  p_msg_name      => 'API_MISSING_CURRENCY_CODE');
5850 
5851               x_return_status := FND_API.G_RET_STS_ERROR;
5852           END IF;
5853       END IF;
5854 
5855       -- Standard call to get message count and if count is 1, get message info.
5856       FND_MSG_PUB.Count_And_Get
5857       (  p_count          =>   x_msg_count,
5858          p_data           =>   x_msg_data
5859       );
5860 
5861 
5862 END Validate_BudgetAmt_Currency;
5863 
5864 
5865 
5866 PROCEDURE Validate_opp_header(
5867     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
5868     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
5869     P_Validation_mode            IN   VARCHAR2,
5870     P_Header_Rec                 IN   AS_OPPORTUNITY_PUB.Header_Rec_Type,
5871     X_Return_Status              OUT NOCOPY  VARCHAR2,
5872     X_Msg_Count                  OUT NOCOPY  NUMBER,
5873     X_Msg_Data                   OUT NOCOPY  VARCHAR2
5874 
5875     )
5876 IS
5877 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_opp_header';
5878 l_Item_Property_Rec   AS_UTILITY_PUB.ITEM_PROPERTY_REC_TYPE;
5879 l_debug BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
5880 l_Win_prob_warning_msg VARCHAR2(2000) := '';
5881 l_module CONSTANT VARCHAR2(255) := 'as.plsql.ldhpv.Validate_opp_header';
5882  BEGIN
5883 
5884       -- Debug Message
5885       IF l_debug THEN
5886       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5887                                    'Private API: ' || l_api_name || ' start');
5888       END IF;
5889 
5890 
5891       -- Initialize API return status to SUCCESS
5892       x_return_status := FND_API.G_RET_STS_SUCCESS;
5893 
5894       -- Added for MOAC
5895       Validate_ORG_ID(
5896           p_init_msg_list          => FND_API.G_FALSE,
5897           p_validation_mode        => p_validation_mode,
5898           p_ORG_ID                 => P_Header_Rec.ORG_ID,
5899           x_return_status          => x_return_status,
5900           x_msg_count              => x_msg_count,
5901           x_msg_data               => x_msg_data);
5902       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5903           raise FND_API.G_EXC_ERROR;
5904       END IF;
5905 
5906       -- Calling item level validation procedures
5907       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM)
5908       THEN
5909               IF l_debug THEN
5910               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5911                                            'Validate_LEAD_ID');
5912               END IF;
5913 
5914               Validate_LEAD_ID(
5915                   p_init_msg_list          => FND_API.G_FALSE,
5916                   p_validation_mode        => p_validation_mode,
5917                   p_LEAD_ID                => P_Header_Rec.LEAD_ID,
5918                   x_item_property_rec      => l_item_property_rec,
5919                   x_return_status          => x_return_status,
5920                   x_msg_count              => x_msg_count,
5921                   x_msg_data               => x_msg_data);
5922               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5923                   raise FND_API.G_EXC_ERROR;
5924               END IF;
5925 
5926 
5927 
5928               IF l_debug THEN
5929               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5930                                            'Validate_STATUS');
5931 	      END IF;
5932 
5933               Validate_STATUS(
5934                   p_init_msg_list          => FND_API.G_FALSE,
5935                   p_validation_mode        => p_validation_mode,
5936                   p_STATUS                 => P_HEADER_REC.STATUS_CODE,
5937                   x_item_property_rec      => l_item_property_rec,
5938                   x_return_status          => x_return_status,
5939                   x_msg_count              => x_msg_count,
5940                   x_msg_data               => x_msg_data);
5941               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5942                   raise FND_API.G_EXC_ERROR;
5943               END IF;
5944 
5945               IF l_debug THEN
5946               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5947                                            'Validate_SALES_STAGE_ID');
5948 	      END IF;
5949 
5950               Validate_SALES_STAGE_ID(
5951                   p_init_msg_list          => FND_API.G_FALSE,
5952                   p_validation_mode        => p_validation_mode,
5953                   p_SALES_STAGE_ID         => P_Header_Rec.SALES_STAGE_ID,
5954                   x_item_property_rec      => l_item_property_rec,
5955                   x_return_status          => x_return_status,
5956                   x_msg_count              => x_msg_count,
5957                   x_msg_data               => x_msg_data);
5958               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5959                   raise FND_API.G_EXC_ERROR;
5960               END IF;
5961 
5962               IF l_debug THEN
5963               	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Validate_CHANNEL_CODE');
5964               END IF;
5965 
5966               Validate_CHANNEL_CODE(
5967                   p_init_msg_list          => FND_API.G_FALSE,
5968                   p_validation_mode        => p_validation_mode,
5969                   p_CHANNEL_CODE           => P_Header_Rec.CHANNEL_CODE,
5970                   x_item_property_rec      => l_item_property_rec,
5971                   x_return_status          => x_return_status,
5972                   x_msg_count              => x_msg_count,
5973                   x_msg_data               => x_msg_data);
5974               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5975                   raise FND_API.G_EXC_ERROR;
5976               END IF;
5977 
5978               IF l_debug THEN
5979               	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Validate_CURRENCY_CODE');
5980               END IF;
5981 
5982               Validate_CURRENCY_CODE(
5983                   p_init_msg_list          => FND_API.G_FALSE,
5984                   p_validation_mode        => p_validation_mode,
5985                   p_CURRENCY_CODE          => P_Header_Rec.CURRENCY_CODE,
5986                   x_item_property_rec      => l_item_property_rec,
5987                   x_return_status          => x_return_status,
5988                   x_msg_count              => x_msg_count,
5989                   x_msg_data               => x_msg_data);
5990               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5991                   raise FND_API.G_EXC_ERROR;
5992               END IF;
5993 
5994 	      IF l_debug THEN
5995 	            AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
5996 	                                         'Validate_DecisionDate');
5997 	      END IF;
5998 	  	Validate_DecisionDate(
5999 	                p_init_msg_list          => FND_API.G_FALSE,
6000 	                p_validation_mode        => p_validation_mode,
6001 	                P_DECISION_DATE          => P_Header_Rec.DECISION_DATE,
6002 	                x_item_property_rec      => l_item_property_rec,
6003 	                x_return_status          => x_return_status,
6004 	                x_msg_count              => x_msg_count,
6005 	                x_msg_data               => x_msg_data);
6006 	        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6007 	                raise FND_API.G_EXC_ERROR;
6008 	        END IF;
6009 
6010           	IF l_debug THEN
6011           	AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6012                                        'Validate_BudgetAmt_Currency');
6013 
6014           	END IF;
6015 
6016               IF l_debug THEN
6017               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6018                                            'Validate_WIN_PROBABILITY');
6019 
6020               END IF;
6021 
6022               Validate_WIN_PROBABILITY(
6023                   p_init_msg_list          => FND_API.G_FALSE,
6024                   p_validation_mode        => p_validation_mode,
6025                   p_WIN_PROBABILITY        => P_Header_Rec.WIN_PROBABILITY,
6026                   x_item_property_rec      => l_item_property_rec,
6027                   x_return_status          => x_return_status,
6028                       x_msg_count              => x_msg_count,
6029                   x_msg_data               => x_msg_data);
6030                   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6031                   raise FND_API.G_EXC_ERROR;
6032               END IF;
6033 
6034               IF l_debug THEN
6035               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6036                                            'Validate_CLOSE_REASON');
6037 	      END IF;
6038 
6039               Validate_CLOSE_REASON(
6040                   p_init_msg_list          => FND_API.G_FALSE,
6041                   p_validation_mode        => p_validation_mode,
6042                   p_CLOSE_REASON           => P_Header_Rec.CLOSE_REASON,
6043                   x_item_property_rec      => l_item_property_rec,
6044                   x_return_status          => x_return_status,
6045                   x_msg_count              => x_msg_count,
6046                   x_msg_data               => x_msg_data);
6047               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6048                   raise FND_API.G_EXC_ERROR;
6049               END IF;
6050 
6051               IF l_debug THEN
6052               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6053                                        'Validate_SOURCE_PROMOTION_ID');
6054 		END IF;
6055 
6056               Validate_SOURCE_PROMOTION_ID(
6057                   p_init_msg_list          => FND_API.G_FALSE,
6058                   p_validation_mode        => p_validation_mode,
6059                   p_SOURCE_PROMOTION_ID    => P_Header_Rec.SOURCE_PROMOTION_ID,
6060                   x_item_property_rec      => l_item_property_rec,
6061                   x_return_status          => x_return_status,
6062                   x_msg_count              => x_msg_count,
6063                   x_msg_data               => x_msg_data);
6064               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6065                   raise FND_API.G_EXC_ERROR;
6066               END IF;
6067 
6068               IF l_debug THEN
6069               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6070                                            'Validate_NO_OPP_ALLOWED_FLAG');
6071               END IF;
6072 
6073               Validate_NO_OPP_ALLOWED_FLAG(
6074                   p_init_msg_list          => FND_API.G_FALSE,
6075                   p_validation_mode        => p_validation_mode,
6076                   p_NO_OPP_ALLOWED_FLAG    => P_Header_Rec.NO_OPP_ALLOWED_FLAG,
6077                   x_item_property_rec      => l_item_property_rec,
6078                   x_return_status          => x_return_status,
6079                   x_msg_count              => x_msg_count,
6080                   x_msg_data               => x_msg_data);
6081               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6082                   raise FND_API.G_EXC_ERROR;
6083               END IF;
6084 
6085               IF l_debug THEN
6086               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6087                                            'Validate_DELETE_ALLOWED_FLAG');
6088               END IF;
6089 
6090               Validate_DELETE_ALLOWED_FLAG(
6091                   p_init_msg_list          => FND_API.G_FALSE,
6092                   p_validation_mode        => p_validation_mode,
6093                   p_DELETE_ALLOWED_FLAG    => P_Header_Rec.DELETE_ALLOWED_FLAG,
6094                   x_item_property_rec      => l_item_property_rec,
6095                   x_return_status          => x_return_status,
6096                   x_msg_count              => x_msg_count,
6097                   x_msg_data               => x_msg_data);
6098               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6099                   raise FND_API.G_EXC_ERROR;
6100               END IF;
6101 
6102               IF l_debug THEN
6103               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6104                                            'Validate_LEAD_SOURCE_CODE');
6105               END IF;
6106 
6107               Validate_LEAD_SOURCE_CODE(
6108                   p_init_msg_list          => FND_API.G_FALSE,
6109                   p_validation_mode        => p_validation_mode,
6110                   p_LEAD_SOURCE_CODE       => P_Header_Rec.LEAD_SOURCE_CODE,
6111                   x_item_property_rec      => l_item_property_rec,
6112                   x_return_status          => x_return_status,
6113                   x_msg_count              => x_msg_count,
6114                   x_msg_data               => x_msg_data);
6115               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6116                   raise FND_API.G_EXC_ERROR;
6117               END IF;
6118 
6119               IF l_debug THEN
6120               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6121                                            'Validate_PRICE_LIST_ID');
6122               END IF;
6123 
6124               Validate_PRICE_LIST_ID(
6125                   p_init_msg_list          => FND_API.G_FALSE,
6126                   p_validation_mode        => p_validation_mode,
6127                   p_PRICE_LIST_ID          => P_Header_Rec.PRICE_LIST_ID,
6128                   p_CURRENCY_CODE          => P_Header_Rec.CURRENCY_CODE,
6129                   x_item_property_rec      => l_item_property_rec,
6130                   x_return_status          => x_return_status,
6131                   x_msg_count              => x_msg_count,
6132                   x_msg_data               => x_msg_data);
6133               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6134                   raise FND_API.G_EXC_ERROR;
6135               END IF;
6136 
6137               IF l_debug THEN
6138               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6139                                            'Validate_DELETED_FLAG');
6140               END IF;
6141 
6142               Validate_DELETED_FLAG(
6143                   p_init_msg_list          => FND_API.G_FALSE,
6144                   p_validation_mode        => p_validation_mode,
6145                   p_DELETED_FLAG           => P_Header_Rec.DELETED_FLAG,
6146                   x_item_property_rec      => l_item_property_rec,
6147                   x_return_status          => x_return_status,
6148                   x_msg_count              => x_msg_count,
6149                   x_msg_data               => x_msg_data);
6150               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6151                   raise FND_API.G_EXC_ERROR;
6152               END IF;
6153 
6154               IF l_debug THEN
6155               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6156                                            'Validate_METHODOLOGY_CODE');
6157               END IF;
6158 
6159               Validate_METHODOLOGY_CODE(
6160                   p_init_msg_list          => FND_API.G_FALSE,
6161                   p_validation_mode        => p_validation_mode,
6162                   p_METHODOLOGY_CODE       => P_Header_Rec.METHODOLOGY_CODE,
6163                   x_item_property_rec      => l_item_property_rec,
6164                   x_return_status          => x_return_status,
6165                   x_msg_count              => x_msg_count,
6166                   x_msg_data               => x_msg_data);
6167               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6168                   raise FND_API.G_EXC_ERROR;
6169               END IF;
6170 
6171               IF l_debug THEN
6172               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6173                                            'Validate_ORIGINAL_LEAD_ID');
6174               END IF;
6175 
6176               Validate_ORIGINAL_LEAD_ID(
6177                   p_init_msg_list          => FND_API.G_FALSE,
6178                   p_validation_mode        => p_validation_mode,
6179                   p_ORIGINAL_LEAD_ID       => P_Header_Rec.ORIGINAL_LEAD_ID,
6180                   x_item_property_rec      => l_item_property_rec,
6181                   x_return_status          => x_return_status,
6182                   x_msg_count              => x_msg_count,
6183                   x_msg_data               => x_msg_data);
6184               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6185                   raise FND_API.G_EXC_ERROR;
6186               END IF;
6187 
6188               IF l_debug THEN
6189               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6190                                            'Validate_DECN_TIMEFRAME_CODE');
6191               END IF;
6192 
6193               Validate_DECN_TIMEFRAME_CODE(
6194                   p_init_msg_list          => FND_API.G_FALSE,
6195                   p_validation_mode        => p_validation_mode,
6196                   p_DECISION_TIMEFRAME_CODE
6197                                        => P_Header_Rec.DECISION_TIMEFRAME_CODE,
6198                   x_item_property_rec      => l_item_property_rec,
6199                   x_return_status          => x_return_status,
6200                   x_msg_count              => x_msg_count,
6201                   x_msg_data               => x_msg_data);
6202               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6203                   raise FND_API.G_EXC_ERROR;
6204               END IF;
6205 
6206               IF l_debug THEN
6207               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6208                                            'Validate_OFFER_ID');
6209               END IF;
6210 
6211               Validate_OFFER_ID(
6212                   p_init_msg_list          => FND_API.G_FALSE,
6213                   p_validation_mode        => p_validation_mode,
6214 		  p_SOURCE_PROMOTION_ID    => P_Header_Rec.SOURCE_PROMOTION_ID,
6215                   p_OFFER_ID               => P_Header_Rec.OFFER_ID,
6216                   x_item_property_rec      => l_item_property_rec,
6217                   x_return_status          => x_return_status,
6218                   x_msg_count              => x_msg_count,
6219                   x_msg_data               => x_msg_data);
6220               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6221                   raise FND_API.G_EXC_ERROR;
6222               END IF;
6223 
6224               IF l_debug THEN
6225               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6226                                            'Validate_VEHICLE_RESPONSE_CODE');
6227               END IF;
6228 
6229               Validate_VEHICLE_RESPONSE_CODE(
6230                   p_init_msg_list          => FND_API.G_FALSE,
6231                   p_validation_mode        => p_validation_mode,
6232                   p_VEHICLE_RESPONSE_CODE => P_Header_Rec.VEHICLE_RESPONSE_CODE,
6233                   x_item_property_rec      => l_item_property_rec,
6234                   x_return_status          => x_return_status,
6235                   x_msg_count              => x_msg_count,
6236                   x_msg_data               => x_msg_data);
6237               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6238                   raise FND_API.G_EXC_ERROR;
6239               END IF;
6240 
6241               IF l_debug THEN
6242               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6243                                            'Validate_BUDGET_STATUS_CODE');
6244               END IF;
6245 
6246               Validate_BUDGET_STATUS_CODE(
6247                   p_init_msg_list          => FND_API.G_FALSE,
6248                   p_validation_mode        => p_validation_mode,
6249                   p_BUDGET_STATUS_CODE   => P_Header_Rec.BUDGET_STATUS_CODE,
6250                   x_item_property_rec      => l_item_property_rec,
6251                   x_return_status          => x_return_status,
6252                   x_msg_count              => x_msg_count,
6253                   x_msg_data               => x_msg_data);
6254               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6255                   raise FND_API.G_EXC_ERROR;
6256               END IF;
6257 
6258               IF l_debug THEN
6259               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6260                                            'Validate_PRM_LEAD_TYPE');
6261               END IF;
6262 
6263               Validate_PRM_LEAD_TYPE(
6264                   p_init_msg_list          => FND_API.G_FALSE,
6265                   p_validation_mode        => p_validation_mode,
6266                   P_PRM_LEAD_TYPE          => P_Header_Rec.PRM_LEAD_TYPE,
6267                   x_item_property_rec      => l_item_property_rec,
6268                   x_return_status          => x_return_status,
6269                   x_msg_count              => x_msg_count,
6270                   x_msg_data               => x_msg_data);
6271               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6272                   raise FND_API.G_EXC_ERROR;
6273               END IF;
6274 
6275               IF l_debug THEN
6276               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6277                                        'Validate_CUSTOMER_ID');
6278               END IF;
6279 
6280               Validate_CUSTOMER_ID(
6281                   p_init_msg_list          => FND_API.G_FALSE,
6282                   p_validation_mode        => p_validation_mode,
6283                   p_CUSTOMER_ID            => P_Header_Rec.CUSTOMER_ID,
6284                   x_item_property_rec      => l_item_property_rec,
6285                   x_return_status          => x_return_status,
6286                   x_msg_count              => x_msg_count,
6287                   x_msg_data               => x_msg_data);
6288               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6289                   raise FND_API.G_EXC_ERROR;
6290               END IF;
6291 
6292               IF l_debug THEN
6293               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6294                                            'Validate_INC_PARTNER_PARTY_ID');
6295               END IF;
6296 
6297               Validate_INC_PARTNER_PARTY_ID(
6298                   p_init_msg_list          => FND_API.G_FALSE,
6299                   p_validation_mode        => p_validation_mode,
6300                   P_INC_PARTNER_PARTY_ID   =>
6301                                       P_Header_Rec.INCUMBENT_PARTNER_PARTY_ID,
6302                   x_item_property_rec      => l_item_property_rec,
6303                   x_return_status          => x_return_status,
6304                   x_msg_count              => x_msg_count,
6305                   x_msg_data               => x_msg_data);
6306               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6307                   raise FND_API.G_EXC_ERROR;
6308               END IF;
6309 
6310               IF l_debug THEN
6311               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6312                                            'Validate_CLOSE_COMPETITOR_ID');
6313               END IF;
6314 
6315               Validate_CLOSE_COMPETITOR_ID(
6316                   p_init_msg_list          => FND_API.G_FALSE,
6317                   p_validation_mode        => p_validation_mode,
6318                   p_CLOSE_COMPETITOR_ID    => P_Header_Rec.CLOSE_COMPETITOR_ID,
6319                   x_item_property_rec      => l_item_property_rec,
6320                   x_return_status          => x_return_status,
6321                   x_msg_count              => x_msg_count,
6322                   x_msg_data               => x_msg_data);
6323               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6324                   raise FND_API.G_EXC_ERROR;
6325               END IF;
6326 
6327               IF l_debug THEN
6328               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6329                                        'Validate_END_USER_CUSTOMER_ID');
6330               END IF;
6331 
6332               Validate_END_USER_CUSTOMER_ID(
6333                   p_init_msg_list          => FND_API.G_FALSE,
6334                   p_validation_mode        => p_validation_mode,
6335                   p_END_USER_CUSTOMER_ID   => P_Header_Rec.END_USER_CUSTOMER_ID,
6336                   x_item_property_rec      => l_item_property_rec,
6337                   x_return_status          => x_return_status,
6338                   x_msg_count              => x_msg_count,
6339                   x_msg_data               => x_msg_data);
6340               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6341                   raise FND_API.G_EXC_ERROR;
6342               END IF;
6343 
6344               IF l_debug THEN
6345               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6346                                            'Validate_ADDRESS_ID');
6347               END IF;
6348 
6349               Validate_ADDRESS_ID(
6350                   p_init_msg_list          => FND_API.G_FALSE,
6351                   p_validation_mode        => p_validation_mode,
6352                   p_ADDRESS_ID             => P_Header_Rec.ADDRESS_ID,
6353                   p_CUSTOMER_ID            => P_Header_Rec.CUSTOMER_ID,
6354                   x_item_property_rec      => l_item_property_rec,
6355                   x_return_status          => x_return_status,
6356                   x_msg_count              => x_msg_count,
6357                   x_msg_data               => x_msg_data);
6358               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6359                   raise FND_API.G_EXC_ERROR;
6360               END IF;
6361 
6362               IF l_debug THEN
6363               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6364                                            'Validate_END_USER_ADDRESS_ID');
6365               END IF;
6366 
6367               Validate_END_USER_ADDRESS_ID(
6368                   p_init_msg_list          => FND_API.G_FALSE,
6369                   p_validation_mode        => p_validation_mode,
6370                   p_END_USER_ADDRESS_ID    => P_Header_Rec.END_USER_ADDRESS_ID,
6371                   P_END_USER_CUSTOMER_ID   => P_Header_Rec.END_USER_CUSTOMER_ID,
6372                   x_item_property_rec      => l_item_property_rec,
6373                   x_return_status          => x_return_status,
6374                   x_msg_count              => x_msg_count,
6375                   x_msg_data               => x_msg_data);
6376               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6377                   raise FND_API.G_EXC_ERROR;
6378               END IF;
6379 
6380               IF l_debug THEN
6381               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6382                                            'Validate_AUTO_ASGN_TYPE');
6383               END IF;
6384 
6385               Validate_AUTO_ASGN_TYPE(
6386                   p_init_msg_list          => FND_API.G_FALSE,
6387                   p_validation_mode        => p_validation_mode,
6388                   p_AUTO_ASSIGNMENT_TYPE   => P_Header_Rec.AUTO_ASSIGNMENT_TYPE,
6389                   x_item_property_rec      => l_item_property_rec,
6390                   x_return_status          => x_return_status,
6391                   x_msg_count              => x_msg_count,
6392                   x_msg_data               => x_msg_data);
6393               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6394                   raise FND_API.G_EXC_ERROR;
6395               END IF;
6396 
6397               IF l_debug THEN
6398               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6399                                            'Validate_PRM_ASGN_TYPE');
6400               END IF;
6401 
6402               Validate_PRM_ASGN_TYPE(
6403                   p_init_msg_list          => FND_API.G_FALSE,
6404                   p_validation_mode        => p_validation_mode,
6405                   p_PRM_ASSIGNMENT_TYPE    => P_Header_Rec.PRM_ASSIGNMENT_TYPE,
6406                   x_item_property_rec      => l_item_property_rec,
6407                   x_return_status          => x_return_status,
6408                   x_msg_count              => x_msg_count,
6409                   x_msg_data               => x_msg_data);
6410               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6411                   raise FND_API.G_EXC_ERROR;
6412               END IF;
6413 
6414               IF l_debug THEN
6415               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6416                                            'Validate_INC_PRTNR_RESOURCE_ID');
6417               END IF;
6418 
6419               Validate_INC_PRTNR_RESOURCE_ID(
6420                   p_init_msg_list          => FND_API.G_FALSE,
6421                   p_validation_mode        => p_validation_mode,
6422                   P_INC_PARTNER_RESOURCE_ID   =>
6423                                     P_Header_Rec.INCUMBENT_PARTNER_RESOURCE_ID,
6424                   x_item_property_rec      => l_item_property_rec,
6425                   x_return_status          => x_return_status,
6426                   x_msg_count              => x_msg_count,
6427                   x_msg_data               => x_msg_data);
6428               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6429                   raise FND_API.G_EXC_ERROR;
6430               END IF;
6431 
6432               IF l_debug THEN
6433               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6434                                            'Validate_PRM_IND_CLS_CODE');
6435               END IF;
6436 
6437               Validate_PRM_IND_CLS_CODE(
6438                   p_init_msg_list          => FND_API.G_FALSE,
6439                   p_validation_mode        => p_validation_mode,
6440                   p_PRM_IND_CLASSIFICATION_CODE   =>
6441                                       P_Header_Rec.PRM_IND_CLASSIFICATION_CODE,
6442                   x_item_property_rec      => l_item_property_rec,
6443                   x_return_status          => x_return_status,
6444                   x_msg_count              => x_msg_count,
6445                   x_msg_data               => x_msg_data);
6446               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6447                   raise FND_API.G_EXC_ERROR;
6448               END IF;
6449 
6450               IF l_debug THEN
6451               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6452                                            'Validate_PRM_EXEC_SPONSOR_FLAG');
6453               END IF;
6454 
6455               Validate_PRM_EXEC_SPONSOR_FLAG(
6456                   p_init_msg_list          => FND_API.G_FALSE,
6457                   p_validation_mode        => p_validation_mode,
6458                   p_PRM_EXEC_SPONSOR_FLAG => P_Header_Rec.PRM_EXEC_SPONSOR_FLAG,
6459                   x_item_property_rec      => l_item_property_rec,
6460                   x_return_status          => x_return_status,
6461                   x_msg_count              => x_msg_count,
6462                   x_msg_data               => x_msg_data);
6463               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6464                   raise FND_API.G_EXC_ERROR;
6465               END IF;
6466 
6467               IF l_debug THEN
6468               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6469                                            'Validate_PRM_PRJ_LDINPLE_FLAG');
6470               END IF;
6471 
6472               Validate_PRM_PRJ_LDINPLE_FLAG(
6473                   p_init_msg_list          => FND_API.G_FALSE,
6474                   p_validation_mode        => p_validation_mode,
6475                   p_PRM_PRJ_LEAD_IN_PLACE_FLAG   =>
6476                                       P_Header_Rec.PRM_PRJ_LEAD_IN_PLACE_FLAG,
6477                   x_item_property_rec      => l_item_property_rec,
6478                   x_return_status          => x_return_status,
6479                   x_msg_count              => x_msg_count,
6480                   x_msg_data               => x_msg_data);
6481               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6482                   raise FND_API.G_EXC_ERROR;
6483               END IF;
6484 
6485               -- 091200 ffang, for bug 1402449
6486               IF l_debug THEN
6487               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6488                                            'Validate_DESCRIPTION');
6489               END IF;
6490 
6491               Validate_DESCRIPTION(
6492                   p_init_msg_list          => FND_API.G_FALSE,
6493                   p_validation_mode        => p_validation_mode,
6494                   p_DESCRIPTION            => P_Header_Rec.DESCRIPTION,
6495                   x_item_property_rec      => l_item_property_rec,
6496                   x_return_status          => x_return_status,
6497                   x_msg_count              => x_msg_count,
6498                   x_msg_data               => x_msg_data);
6499               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6500                   raise FND_API.G_EXC_ERROR;
6501               END IF;
6502               -- end 091200 ffang
6503 
6504               -- solin, for bug 1554330
6505               IF l_debug THEN
6506               AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6507                                            'Validate_FREEZE_FLAG');
6508               END IF;
6509 
6510               Validate_FREEZE_FLAG(
6511                   p_init_msg_list          => FND_API.G_FALSE,
6512                   p_validation_mode        => p_validation_mode,
6513                   p_FREEZE_FLAG            =>
6514                                       P_Header_Rec.FREEZE_FLAG,
6515                   x_item_property_rec      => l_item_property_rec,
6516                   x_return_status          => x_return_status,
6517                   x_msg_count              => x_msg_count,
6518                   x_msg_data               => x_msg_data);
6519               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6520                   raise FND_API.G_EXC_ERROR;
6521               END IF;
6522               IF (P_Header_Rec.OWNER_SALESFORCE_ID IS NOT NULL AND
6523 	          P_Header_Rec.OWNER_SALESFORCE_ID <> FND_API.G_MISS_NUM)  AND
6524 	          (P_Header_Rec.OWNER_SALES_GROUP_ID IS NOT NULL AND
6525 		   P_Header_Rec.OWNER_SALES_GROUP_ID  <> FND_API.G_MISS_NUM) THEN
6526 		      VALIDATE_OPP_OWNER(
6527 			    P_Init_Msg_List          => FND_API.G_FALSE,
6528 			    P_Validation_mode        => p_validation_mode,
6529 			    P_OWNER_SALESFORCE_ID    => P_Header_Rec.OWNER_SALESFORCE_ID,
6530 			    P_OWNER_SALES_GROUP_ID   => P_Header_Rec.OWNER_SALES_GROUP_ID,
6531 			    x_item_property_rec      => l_item_property_rec,
6532 			    x_return_status          => x_return_status,
6533 			    x_msg_count              => x_msg_count,
6534 			    x_msg_data               => x_msg_data);
6535 		      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6536 			  raise FND_API.G_EXC_ERROR;
6537 		      END IF;
6538 	      END IF;
6539 
6540               -- end solin
6541 
6542       END IF;
6543 
6544       -- Calling record level validation procedures
6545       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD)
6546       THEN
6547           IF l_debug THEN
6548           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6549                                        'Validate_WinPorb_StageID');
6550           END IF;
6551 
6552           Validate_WinPorb_StageID(
6553               p_init_msg_list          => FND_API.G_FALSE,
6554               p_validation_mode        => p_validation_mode,
6555 	      p_SALES_METHODOLOGY_ID   => P_Header_Rec.SALES_METHODOLOGY_ID,
6556               P_SALES_STAGE_ID         => P_Header_Rec.SALES_STAGE_ID,
6557               P_WIN_PROBABILITY        => P_Header_Rec.WIN_PROBABILITY,
6558               x_item_property_rec      => l_item_property_rec,
6559               x_return_status          => x_return_status,
6560               x_msg_count              => x_msg_count,
6561               x_msg_data               => x_msg_data);
6562           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6563               raise FND_API.G_EXC_ERROR;
6564           END IF;
6565 
6566           IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
6567              l_Win_prob_warning_msg := x_msg_data;
6568           END IF;
6569 
6570           IF l_debug THEN
6571           AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6572                                        'Validate_Status_CloseReason');
6573           END IF;
6574 
6575           Validate_Status_CloseReason(
6576               p_init_msg_list          => FND_API.G_FALSE,
6577               p_validation_mode        => p_validation_mode,
6578               P_STATUS                 => P_Header_Rec.STATUS_CODE,
6579               P_CLOSE_REASON           => P_Header_Rec.CLOSE_REASON,
6580               x_item_property_rec      => l_item_property_rec,
6581               x_return_status          => x_return_status,
6582               x_msg_count              => x_msg_count,
6583               x_msg_data               => x_msg_data);
6584           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6585               raise FND_API.G_EXC_ERROR;
6586           END IF;
6587 
6588 
6589 
6590           Validate_BudgetAmt_Currency (
6591               P_Init_Msg_List          => FND_API.G_FALSE,
6592               P_Validation_mode        => p_validation_mode,
6593               P_TOTAL_AMOUNT           => P_Header_Rec.TOTAL_AMOUNT,
6594               P_CURRENCY_CODE          => P_Header_Rec.CURRENCY_CODE,
6595               X_Item_Property_Rec      => l_item_property_rec,
6596               X_Return_Status          => x_return_status,
6597               X_Msg_Count              => x_msg_count,
6598               X_Msg_Data               => x_msg_data);
6599           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6600               raise FND_API.G_EXC_ERROR;
6601           END IF;
6602 
6603       END IF;
6604 
6605       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_RECORD) THEN
6606           -- invoke inter-record level validation procedures
6607           NULL;
6608       END IF;
6609 
6610       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_ENTITY) THEN
6611           -- invoke inter-entity level validation procedures
6612           NULL;
6613       END IF;
6614 
6615 
6616       -- Debug Message
6617       IF l_debug THEN
6618       AS_UTILITY_PVT.Debug_Message(l_module, FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
6619                                    'Private API: ' || l_api_name || ' end');
6620 
6621       END IF;
6622 
6623       -- Standard call to get message count and if count is 1, get message info.
6624       FND_MSG_PUB.Count_And_Get
6625       (  p_count          =>   x_msg_count,
6626          p_data           =>   x_msg_data
6627       );
6628 
6629       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
6630             x_msg_data := l_Win_prob_warning_msg;
6631       END IF;
6632 
6633 END Validate_opp_header;
6634 
6635 
6636 End AS_OPP_HEADER_PVT;