DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_VALIDATE_PVT

Source


1 PACKAGE BODY ASO_VALIDATE_PVT as
2 /* $Header: asovvldb.pls 120.30.12000000.2 2007/01/30 20:20:08 pkoka ship $ */
3 
4 -- Start of Comments
5 -- Package name     : ASO_VALIDATE_PVT
6 -- Purpose          :
7 --
8 -- History          :
9 --				08/01/2002 hyang - 2492841, performance change
10 --				10/18/2002 hyang - 2633507, performance fix
11 -- NOTE             :
12 -- End of Comments
13 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_VALIDATE_PVT';
14 
15 
16 PROCEDURE Validate_NotNULL_NUMBER (
17 	p_init_msg_list		IN	VARCHAR2,
18 	p_column_name		IN	VARCHAR2,
19 	p_notnull_column	IN	NUMBER,
20 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
21         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
22         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
23 IS
24 BEGIN
25     -- Initialize message list if p_init_msg_list is set to TRUE.
26     IF FND_API.to_Boolean( p_init_msg_list ) THEN
27         FND_MSG_PUB.initialize;
28     END IF;
29 
30     --  Initialize API return status to success
31     x_return_status := FND_API.G_RET_STS_SUCCESS;
32 
33     IF (p_notnull_column IS NULL OR p_notnull_column = FND_API.G_MISS_NUM) THEN
34         x_return_status := FND_API.G_RET_STS_ERROR;
35         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
36 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
37             FND_MESSAGE.Set_Token('COLUMN', p_column_name, FALSE);
38             FND_MSG_PUB.ADD;
39 	END IF;
40     END IF;
41 
42     FND_MSG_PUB.Count_And_Get(
43 	p_count	=> x_msg_count,
44 	p_data	=> x_msg_data);
45 
46 END Validate_NotNULL_NUMBER;
47 
48 
49 PROCEDURE Validate_NotNULL_VARCHAR2 (
50 	p_init_msg_list		IN	VARCHAR2,
51 	p_column_name		IN	VARCHAR2,
52 	p_notnull_column	IN	VARCHAR2,
53 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
54         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
55         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
56 IS
57 BEGIN
58     -- Initialize message list if p_init_msg_list is set to TRUE.
59     IF FND_API.to_Boolean( p_init_msg_list ) THEN
60         FND_MSG_PUB.initialize;
61     END IF;
62 
63     --  Initialize API return status to success
64     x_return_status := FND_API.G_RET_STS_SUCCESS;
65 
66     IF (p_notnull_column IS NULL OR p_notnull_column = FND_API.G_MISS_CHAR) THEN
67         x_return_status := FND_API.G_RET_STS_ERROR;
68         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
69 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
70             FND_MESSAGE.Set_Token('COLUMN', p_column_name, FALSE);
71             FND_MSG_PUB.ADD;
72 	END IF;
73     END IF;
74 
75     FND_MSG_PUB.Count_And_Get(
76 	p_count	=> x_msg_count,
77 	p_data	=> x_msg_data);
78 
79 END Validate_NotNULL_VARCHAR2;
80 
81 
82 PROCEDURE Validate_NotNULL_DATE (
83 	p_init_msg_list		IN	VARCHAR2,
84 	p_column_name		IN	VARCHAR2,
85 	p_notnull_column	IN	DATE,
86 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
87         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
88         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
89 IS
90 BEGIN
91     -- Initialize message list if p_init_msg_list is set to TRUE.
92     IF FND_API.to_Boolean( p_init_msg_list ) THEN
93         FND_MSG_PUB.initialize;
94     END IF;
95 
96     --  Initialize API return status to success
97     x_return_status := FND_API.G_RET_STS_SUCCESS;
98 
99     IF (p_notnull_column IS NULL OR p_notnull_column = FND_API.G_MISS_DATE) THEN
100         x_return_status := FND_API.G_RET_STS_ERROR;
101         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
102 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
103             FND_MESSAGE.Set_Token('COLUMN', p_column_name, FALSE);
104             FND_MSG_PUB.ADD;
105 	END IF;
106     END IF;
107 
108     FND_MSG_PUB.Count_And_Get(
109 	p_count	=> x_msg_count,
110 	p_data	=> x_msg_data);
111 
112 END Validate_NotNULL_DATE;
113 
114 
115 PROCEDURE Validate_For_GreaterEndDate (
116 	p_init_msg_list		IN	VARCHAR2,
117 	p_start_date            IN      DATE,
118         p_end_date              IN      DATE,
119 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
120         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
121         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
122 IS
123 BEGIN
124     -- Initialize message list if p_init_msg_list is set to TRUE.
125     IF FND_API.to_Boolean( p_init_msg_list ) THEN
126         FND_MSG_PUB.initialize;
127     END IF;
128 
129     --  Initialize API return status to success
130     x_return_status := FND_API.G_RET_STS_SUCCESS;
131 
132   IF (p_start_date IS NOT NULL AND p_start_date <> FND_API.G_MISS_DATE) AND
133      (p_end_date IS NOT NULL AND p_end_date <> FND_API.G_MISS_DATE) THEN
134 
135     IF (p_end_date < p_start_date ) THEN
136         x_return_status := FND_API.G_RET_STS_ERROR;
137         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
138 	    FND_MESSAGE.Set_Name('ASO', 'INVALID COLUMN');
139             FND_MESSAGE.Set_Token('COLUMN', 'END DATE', FALSE);
140             FND_MSG_PUB.ADD;
141 	END IF;
142     END IF;
143   END IF;
144 
145     FND_MSG_PUB.Count_And_Get(
146 	p_count	=> x_msg_count,
147 	p_data	=> x_msg_data);
148 
149 END Validate_For_GreaterEndDate;
150 
151 
152 PROCEDURE Validate_Party(
153 	p_init_msg_list		IN	VARCHAR2,
154 	p_party_id		IN	NUMBER,
155 	p_party_usage		IN	VARCHAR2,
156 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
157         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
158         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
159 IS
160     CURSOR C_Party IS
161 	SELECT status FROM HZ_PARTIES
162 	WHERE party_id = p_party_id;
163     l_party_status	VARCHAR2(1);
164 
165 BEGIN
166     -- Initialize message list if p_init_msg_list is set to TRUE.
167     IF FND_API.to_Boolean( p_init_msg_list ) THEN
168         FND_MSG_PUB.initialize;
169     END IF;
170 
171     --  Initialize API return status to success
172     x_return_status := FND_API.G_RET_STS_SUCCESS;
173 
174 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
175   aso_debug_pub.add('Validate_Party: Begin: p_party_id: '||p_party_id, 1, 'N');
176   aso_debug_pub.add('Validate_Party: p_party_usage: '||p_party_usage, 1, 'N');
177 END IF;
178 
179     IF (p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM) THEN
180         OPEN C_Party;
181 	FETCH C_Party INTO l_party_status;
182         IF (C_Party%NOTFOUND OR l_party_status <> 'A') THEN
183 	    CLOSE C_Party;
184 	    x_return_status := FND_API.G_RET_STS_ERROR;
185             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
186 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
187                 FND_MESSAGE.Set_Token('COLUMN', p_party_usage, FALSE);
188                 FND_MSG_PUB.ADD;
189 	    END IF;
190         ELSE
191 	    CLOSE C_Party;
192 	END IF;
193     END IF;
194 
195 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
196   aso_debug_pub.add('Validate_Party: x_return_status: '||x_return_status, 1, 'N');
197 END IF;
198 
199     FND_MSG_PUB.Count_And_Get(
200 	p_count	=> x_msg_count,
201 	p_data	=> x_msg_data);
202 
203 END Validate_Party;
204 
205 PROCEDURE Validate_Contact(
206 	p_init_msg_list		IN	VARCHAR2,
207 	p_contact_id		IN	NUMBER,
208 	p_contact_usage		IN	VARCHAR2,
209 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
210         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
211         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
212 IS
213     CURSOR C_Contact IS
214 	SELECT status FROM HZ_ORG_CONTACTS
215 	WHERE org_contact_id = p_contact_id;
216 
217     l_contact_status	VARCHAR2(1);
218 
219 BEGIN
220     -- Initialize message list if p_init_msg_list is set to TRUE.
221     IF FND_API.to_Boolean( p_init_msg_list ) THEN
222         FND_MSG_PUB.initialize;
223     END IF;
224 
225     --  Initialize API return status to success
226     x_return_status := FND_API.G_RET_STS_SUCCESS;
227 
228 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
229   aso_debug_pub.add('Validate_Contact: p_contact_id: '||p_contact_id, 1, 'N');
230   aso_debug_pub.add('Validate_Contact: p_contact_usage: '||p_contact_usage, 1, 'N');
231 END IF;
232 
233     IF (p_contact_id IS NOT NULL AND p_contact_id <> FND_API.G_MISS_NUM) THEN
234         OPEN C_Contact;
235 	FETCH C_Contact INTO l_contact_status;
236         IF (C_Contact%NOTFOUND OR l_contact_status <> 'A') THEN
237 	    CLOSE C_Contact;
238 	    x_return_status := FND_API.G_RET_STS_ERROR;
239             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
240 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
241                 FND_MESSAGE.Set_Token('COLUMN', p_contact_usage, FALSE);
242                 FND_MSG_PUB.ADD;
243 	    END IF;
244         ELSE
245 	    CLOSE C_Contact;
246 	END IF;
247     END IF;
248 
249 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
250   aso_debug_pub.add('Validate_Contact: x_return_status: '||x_return_status, 1, 'N');
251 END IF;
252     FND_MSG_PUB.Count_And_Get(
253 	p_count	=> x_msg_count,
254 	p_data	=> x_msg_data);
255 
256 END Validate_Contact;
257 
258 
259 PROCEDURE Validate_PartySite(
260 	p_init_msg_list		IN	VARCHAR2,
261 	p_party_id		IN	NUMBER,
262 	p_party_site_id		IN	NUMBER,
263 	p_site_usage		IN	VARCHAR2,
264 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
265         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
266         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
267 IS
268     CURSOR C_Party_Site IS
269 	SELECT status -- start_date_active, end_date_active obsolete
270 	FROM HZ_PARTY_SITES
271 	WHERE  party_site_id = p_party_site_id;
272 
273     l_status        VARCHAR2(1);
274 
275 BEGIN
276     -- Initialize message list if p_init_msg_list is set to TRUE.
277     IF FND_API.to_Boolean( p_init_msg_list ) THEN
278         FND_MSG_PUB.initialize;
279     END IF;
280 
281     --  Initialize API return status to success
282     x_return_status := FND_API.G_RET_STS_SUCCESS;
283 
284 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
285   aso_debug_pub.add('Validate_PartySite: p_party_id: '||p_party_id, 1, 'N');
286   aso_debug_pub.add('Validate_PartySite: p_party_site_id: '||p_party_site_id, 1, 'N');
287   aso_debug_pub.add('Validate_PartySite: p_site_usage: '||p_site_usage, 1, 'N');
288 END IF;
289 
290     IF (p_party_site_id IS NOT NULL AND p_party_site_id <> FND_API.G_MISS_NUM) THEN
291         OPEN C_Party_Site;
292 	FETCH C_Party_Site INTO l_status;
293         IF C_Party_Site%NOTFOUND OR
294 		 l_status <> 'A' THEN
295 
296 	    CLOSE C_Party_Site;
297 	    x_return_status := FND_API.G_RET_STS_ERROR;
298             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
299 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
300                 FND_MESSAGE.Set_Token('COLUMN', p_site_usage, FALSE);
301                 FND_MSG_PUB.ADD;
302 	    END IF;
303         ELSE
304 	    CLOSE C_Party_Site;
305 	END IF;
306     END IF;
307 
308 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
309   aso_debug_pub.add('Validate_PartySite: x_return_status: '||x_return_status, 1, 'N');
310 END IF;
311 END Validate_PartySite;
312 
313 PROCEDURE Validate_OrderType(
314 	p_init_msg_list		IN	VARCHAR2,
315 	p_order_type_id		IN	NUMBER,
316 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
317         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
318         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
319 IS
320     CURSOR C_Order_Type IS
321 	SELECT start_date_active, end_date_active FROM ASO_I_ORDER_TYPES_V
322 	WHERE order_type_id = p_order_type_id;
323     l_start_date	DATE;
324     l_end_date		DATE;
325 BEGIN
326     -- Initialize message list if p_init_msg_list is set to TRUE.
327     IF FND_API.to_Boolean( p_init_msg_list ) THEN
328         FND_MSG_PUB.initialize;
329     END IF;
330 
331     --  Initialize API return status to success
332     x_return_status := FND_API.G_RET_STS_SUCCESS;
333 
334 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
335   aso_debug_pub.add('Validate_OrderType: p_order_type_id: '||p_order_type_id, 1, 'N');
336 END IF;
337     IF (p_order_type_id IS NOT NULL AND p_order_type_id <> FND_API.G_MISS_NUM) THEN
338         OPEN C_Order_Type;
339 	FETCH C_Order_Type INTO l_start_date, l_end_date;
340         IF (C_Order_Type%NOTFOUND OR
341 	    (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
342 				 NVL(l_end_date, sysdate))) THEN
343 	    CLOSE C_Order_Type;
344 	    x_return_status := FND_API.G_RET_STS_ERROR;
345             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
346 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
347                 FND_MESSAGE.Set_Token('COLUMN', 'ORDER_TYPE_ID', FALSE);
348 			 FND_MESSAGE.Set_Token ('VALUE' ,to_char(p_order_type_id), FALSE );
349                 FND_MSG_PUB.ADD;
350 	    END IF;
351         ELSE
352 	    CLOSE C_Order_Type;
353 	END IF;
354     END IF;
355 
356 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
357   aso_debug_pub.add('Validate_OrderType: x_return_status: '||x_return_status, 1, 'N');
358 END IF;
359 END Validate_OrderType;
360 
361 
362 
363 PROCEDURE Validate_LineType(
364 	p_init_msg_list		IN	VARCHAR2,
365 	p_order_line_type_id		IN	NUMBER,
366 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
367         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
368         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
369 IS
370     CURSOR C_Order_Line_Type IS
371 	SELECT start_date_active, end_date_active FROM ASO_I_LINE_TYPES_V
372 	WHERE line_type_id = p_order_line_type_id;
373     l_start_date	DATE;
374     l_end_date		DATE;
375 BEGIN
376     -- Initialize message list if p_init_msg_list is set to TRUE.
377     IF FND_API.to_Boolean( p_init_msg_list ) THEN
378         FND_MSG_PUB.initialize;
379     END IF;
380 
381     --  Initialize API return status to success
382     x_return_status := FND_API.G_RET_STS_SUCCESS;
383 
384 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
385   aso_debug_pub.add('Validate_LineType: p_order_line_type_id: '||p_order_line_type_id, 1, 'N');
386 END IF;
387     IF (p_order_line_type_id IS NOT NULL AND p_order_line_type_id <> FND_API.G_MISS_NUM) THEN
388         OPEN C_Order_Line_Type;
389 	FETCH C_Order_Line_Type INTO l_start_date, l_end_date;
390         IF (C_Order_Line_Type%NOTFOUND OR
391 	    (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
392 				 NVL(l_end_date, sysdate))) THEN
393 	    CLOSE C_Order_Line_Type;
394 	    x_return_status := FND_API.G_RET_STS_ERROR;
395             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
396 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
397                 FND_MESSAGE.Set_Token('COLUMN', 'ORDER_LINE_TYPE_ID', FALSE);
398 			 FND_MESSAGE.Set_Token ('VALUE' ,to_char(p_order_line_type_id), FALSE );
399                 FND_MSG_PUB.ADD;
400 	    END IF;
401         ELSE
402 	    CLOSE C_Order_Line_Type;
403 	END IF;
404     END IF;
405 
406 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
407   aso_debug_pub.add('Validate_LineType: x_return_status: '||x_return_status, 1, 'N');
408 END IF;
409 END Validate_LineType;
410 
411 
412 PROCEDURE Validate_PriceList(
413 	p_init_msg_list		IN	VARCHAR2,
414 	p_price_list_id		IN	NUMBER,
415 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
416         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
417         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
418 IS
419     CURSOR C_Price_List IS
420 	SELECT (start_date_active), (end_date_active) FROM QP_PRICELISTS_LOV_V
421 	WHERE price_list_id = p_price_list_id and (orig_org_id = mo_global.get_current_org_id or global_flag ='Y'); --bug5188699
422 	/* Verified with QP this UNION is not necessary dgyawali verified with spgopal 08/12/02*/
423 	/**
424 	UNION
425 		select  qlhv.start_date_active, qlhv.end_date_active
426 			from qp_list_headers_vl qlhv, oe_agreements oa
427 				where oa.price_list_id = qlhv.list_header_id
428 					and qlhv.list_type_code = 'PRL'
429 						and oa.price_list_id = p_price_list_id;
430 	**/
431 
432 
433     l_start_date	DATE;
434     l_end_date		DATE;
435     l_org_id        NUMBER  :=  mo_global.get_current_org_id;
436 BEGIN
437     -- Initialize message list if p_init_msg_list is set to TRUE.
438     IF FND_API.to_Boolean( p_init_msg_list ) THEN
439         FND_MSG_PUB.initialize;
440     END IF;
441 
442     --  Initialize API return status to success
443     x_return_status := FND_API.G_RET_STS_SUCCESS;
444 
445     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
446      aso_debug_pub.add('Validate_PriceList Begin: p_price_list_id: '||p_price_list_id, 1, 'N');
447      aso_debug_pub.add('Validate_PriceList :mo_global.get_current_org_id '||l_org_id, 1, 'N');
448     END IF;
449 
450 
451 
452     IF (p_price_list_id IS NOT NULL AND p_price_list_id <> FND_API.G_MISS_NUM) THEN
453         OPEN C_Price_List;
454 	FETCH C_Price_List INTO l_start_date, l_end_date;
455         IF (C_Price_List%NOTFOUND OR
456 	    (trunc(sysdate) NOT BETWEEN NVL(trunc(l_start_date), trunc(sysdate)) AND
457 				 NVL(trunc(l_end_date), trunc(sysdate)))) THEN
458 	    CLOSE C_Price_List;
459 	    x_return_status := FND_API.G_RET_STS_ERROR;
460             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
461 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
462                 FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
463 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_price_list_id),FALSE);
464                 FND_MSG_PUB.ADD;
465 	    END IF;
466         ELSE
467 	    CLOSE C_Price_List;
468 	END IF;
469     END IF;
470 
471 END Validate_PriceList;
472 
473 PROCEDURE Validate_Quote_Price_Exp(
474 	p_init_msg_list		IN	VARCHAR2,
475 	p_price_list_id		IN	NUMBER,
476         p_quote_expiration_date   IN DATE,
477 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
478         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
479         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
480 IS
481     CURSOR C_Price_List IS
482 	SELECT start_date_active, end_date_active FROM QP_PRICE_LISTS_V
483 	WHERE price_list_id = p_price_list_id;
484      /* Verified with QP this UNION is not necessary dgyawali verified with spgopal 08/12/02*/
485 	/**
486 	UNION
487 		select  qlhv.start_date_active, qlhv.end_date_active
488 			from qp_list_headers_vl qlhv, oe_agreements oa
489 				where oa.price_list_id = qlhv.list_header_id
490 					and qlhv.list_type_code = 'PRL'
491 						and oa.price_list_id = p_price_list_id;
492      **/
493 
494     l_start_date	DATE;
495     l_end_date		DATE;
496     l_quote_expiration_date		DATE;
497 BEGIN
498     -- Initialize message list if p_init_msg_list is set to TRUE.
499     IF FND_API.to_Boolean( p_init_msg_list ) THEN
500         FND_MSG_PUB.initialize;
501     END IF;
502 
503     --  Initialize API return status to success
504     x_return_status := FND_API.G_RET_STS_SUCCESS;
505 
506     IF (p_price_list_id IS NOT NULL AND p_price_list_id <> FND_API.G_MISS_NUM) THEN
507 
508         OPEN C_Price_List;
509      	FETCH C_Price_List INTO l_start_date, l_end_date;
510         IF (C_Price_List%NOTFOUND OR
511 	    (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
512 				 NVL(l_end_date, sysdate))) THEN
513 	    CLOSE C_Price_List;
514 	    x_return_status := FND_API.G_RET_STS_ERROR;
515             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
516 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
517                 FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
518 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_price_list_id),FALSE);
519                 FND_MSG_PUB.ADD;
520       	    END IF;
521     ELSIF l_end_date IS NOT NULL  AND p_quote_expiration_date <> FND_API.G_MISS_DATE AND nvl(trunc(p_quote_expiration_date), trunc(l_end_date)) > trunc(l_end_date) THEN
522        -- ELSIF nvl(p_quote_expiration_date,(sysdate+30))  > l_end_date THEN
523                x_return_status := FND_API.G_RET_STS_ERROR;
524                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
525 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
526                 FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
527 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_price_list_id),FALSE);
528                 FND_MSG_PUB.ADD;
529 	           END IF;
530         --CLOSE C_Price_List;
531 	   END IF;
532      CLOSE C_Price_List;
533     END IF;
534    --END IF;
535 END Validate_Quote_Price_Exp;
536 
537 
538 PROCEDURE Validate_Quote_Exp_date(
539     p_init_msg_list         IN  VARCHAR2,
540     p_quote_expiration_date IN  DATE,
541     x_return_status         OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
542     x_msg_count             OUT NOCOPY /* file.sql.39 change */   NUMBER,
543     x_msg_data              OUT NOCOPY /* file.sql.39 change */   VARCHAR2
544 )
545 IS
546 
547     l_start_date            DATE;
548     l_end_date              DATE;
549     l_quote_expiration_date DATE;
550 
551 BEGIN
552 
553     -- Initialize message list if p_init_msg_list is set to TRUE.
554     IF FND_API.to_Boolean( p_init_msg_list ) THEN
555         FND_MSG_PUB.initialize;
556     END IF;
557 
558     -- Initialize API return status to success
559     x_return_status := FND_API.G_RET_STS_SUCCESS;
560 
561     IF p_quote_expiration_date IS NOT NULL and p_quote_expiration_date <> FND_API.G_MISS_DATE THEN
562         IF (trunc(sysdate) > trunc(p_quote_expiration_date))THEN
563        	    x_return_status := FND_API.G_RET_STS_ERROR;
564         END IF;
565     END IF;
566 
567 END Validate_Quote_Exp_date;
568 
569 
570 
571 -- hyang quote_status
572 PROCEDURE Validate_Quote_Status(
573 	p_init_msg_list		  IN	VARCHAR2,
574 	p_quote_status_id	  IN	NUMBER,
575 	x_return_status		  OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
576   x_msg_count		      OUT NOCOPY /* file.sql.39 change */  	NUMBER,
577   x_msg_data		      OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
578 IS
579 
580   CURSOR c_Quote_Status
581   IS
582 	  SELECT  quote_status_id, enabled_flag
583 	  FROM    ASO_QUOTE_STATUSES_B
584 	  WHERE   quote_status_id = p_quote_status_id;
585 
586 
587   l_quote_status_id   NUMBER;
588   l_enabled_flag      VARCHAR2(1);
589 
590 BEGIN
591     -- Initialize message list if p_init_msg_list is set to TRUE.
592     IF FND_API.to_Boolean( p_init_msg_list ) THEN
593         FND_MSG_PUB.initialize;
594     END IF;
595 
596     --  Initialize API return status to success
597     x_return_status := FND_API.G_RET_STS_SUCCESS;
598 
599     OPEN c_Quote_Status;
600     FETCH c_Quote_Status INTO l_quote_status_id, l_enabled_flag;
601     IF (c_Quote_Status%NOTFOUND) THEN
602       x_return_status := FND_API.G_RET_STS_ERROR;
603       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
604         FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
605         FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_STATUS_ID', FALSE);
606         FND_MSG_PUB.ADD;
607       END IF;
608     ELSIF (l_enabled_flag <> 'Y') THEN
609       x_return_status := FND_API.G_RET_STS_ERROR;
610       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
611         FND_MESSAGE.Set_Name('ASO', 'ASO_DISABLED_STATUS');
612         FND_MSG_PUB.ADD;
613       END IF;
614   	END IF;
615     CLOSE C_Quote_Status;
616 
617 END Validate_Quote_Status;
618 -- end of hyang quote_status
619 
620 
621 PROCEDURE Validate_Inventory_Item(
622 	p_init_msg_list		IN	VARCHAR2,
623 	p_inventory_item_id	IN	NUMBER,
624 	p_organization_id       IN      NUMBER,
625 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
626         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
627         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
628 IS
629 
630 /* 2633507 - hyang: use mtl_system_items_b instead of vl */
631 
632     CURSOR C_Inventory_Item IS
633 	SELECT start_date_active, end_date_active,vendor_warranty_flag,service_item_flag  FROM MTL_SYSTEM_ITEMS_B
634 	WHERE inventory_item_id = p_inventory_item_id
635 	and organization_id = p_organization_id;
636 
637     l_start_date	DATE;
638     l_end_date		DATE;
639     l_war_flag          VARCHAR2(1);
640     l_svr_flag          VARCHAr2(1);
641 BEGIN
642     -- Initialize message list if p_init_msg_list is set to TRUE.
643     IF FND_API.to_Boolean( p_init_msg_list ) THEN
644         FND_MSG_PUB.initialize;
645     END IF;
646 
647     --  Initialize API return status to success
648     x_return_status := FND_API.G_RET_STS_SUCCESS;
649     IF (p_inventory_item_id IS NULL OR p_inventory_item_id = FND_API.G_MISS_NUM) THEN
650     x_return_status := FND_API.G_RET_STS_ERROR;
651            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
652 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
653             FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID', FALSE);
654             FND_MSG_PUB.ADD;
655 	   END IF;
656     ELSE
657         OPEN C_Inventory_Item;
658 	FETCH C_Inventory_Item INTO l_start_date, l_end_date,l_war_flag,l_svr_flag;
659         IF (C_Inventory_Item%NOTFOUND OR
660 	    (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
661 				 NVL(l_end_date, sysdate))) THEN
662 	    CLOSE C_Inventory_Item;
663 	    x_return_status := FND_API.G_RET_STS_ERROR;
664             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
665 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
666                 FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID', FALSE);
667 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_inventory_item_id),FALSE);
668                 FND_MSG_PUB.ADD;
669 	    END IF;
670 	ELSIF l_war_flag ='Y'and l_svr_flag ='Y' THEN
671 		  CLOSE C_Inventory_Item;
672              x_return_status := FND_API.G_RET_STS_ERROR;
673             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
674 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO4');
675                -- FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID', FALSE);
676                 FND_MSG_PUB.ADD;
677 	    END IF;
678         ELSE
679 	    CLOSE C_Inventory_Item;
680 	END IF;
681     END IF;
682 
683 END Validate_Inventory_Item;
684 
685 PROCEDURE Validate_Item_Type_Code(
686 	p_init_msg_list		IN	VARCHAR2,
687 	p_item_type_code	IN	VARCHAR2,
688 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
689         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
690         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
691 IS
692  CURSOR C_item_type_code IS
693  SELECT lookup_code
694  FROM   aso_lookups lk
695  WHERE  lookup_type = 'ASO_ITEM_TYPE'
696  AND    lookup_code = p_item_type_code;
697 
698 /* select item_type_code from aso_i_item_types_v
699    where item_type_code = p_item_type_code; */
700 
701  l_item_type_code   VARCHAR2(30);
702 BEGIN
703 --dbms_output.put_line('beginning of item type code '||p_item_type_code);
704     -- Initialize message list if p_init_msg_list is set to TRUE.
705     IF FND_API.to_Boolean( p_init_msg_list ) THEN
706         FND_MSG_PUB.initialize;
707     END IF;
708 
709     --  Initialize API return status to success
710     x_return_status := FND_API.G_RET_STS_SUCCESS;
711     IF (p_item_type_code IS NOT NULL AND p_item_type_code <> FND_API.G_MISS_CHAR) THEN
712 --        dbms_output.put_line('in item type code '|| x_return_status);
713         OPEN C_item_type_code;
714 	FETCH C_item_type_code INTO l_item_type_code;
715         IF (C_item_type_code%NOTFOUND) THEN
716 	    CLOSE C_item_type_code;
717 	    x_return_status := FND_API.G_RET_STS_ERROR;
718             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
719 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
720                 FND_MESSAGE.Set_Token('COLUMN', 'ITEM_TYPE_CODE', FALSE);
721 			 FND_MESSAGE.Set_Token('VALUE',p_item_type_code,FALSE);
722                 FND_MSG_PUB.ADD;
723 	    END IF;
724         ELSE
725 	    CLOSE C_item_type_code;
726 	END IF;
727     END IF;
728 END Validate_ITEM_TYPE_CODE;
729 
730 
731 
732 
733 PROCEDURE Validate_Marketing_Source_Code(
734 	p_init_msg_list		IN	VARCHAR2,
735 	p_mkting_source_code_id	IN	NUMBER,
736 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
737         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
738         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
739 IS
740  CURSOR C_marketing_code IS
741  select source_code_id from aso_i_mktg_src_codes_v
742  where source_code_id = p_mkting_source_code_id;
743 
744  l_mkting_source_code   NUMBER;
745 BEGIN
746     -- Initialize message list if p_init_msg_list is set to TRUE.
747     IF FND_API.to_Boolean( p_init_msg_list ) THEN
748         FND_MSG_PUB.initialize;
749     END IF;
750 
751     --  Initialize API return status to success
752     x_return_status := FND_API.G_RET_STS_SUCCESS;
753 
754     IF (p_mkting_source_code_id IS NOT NULL AND p_mkting_source_code_id <> FND_API.G_MISS_NUM) THEN
755         OPEN C_marketing_code;
756 	FETCH C_marketing_code INTO l_mkting_source_code;
757         IF (C_marketing_code%NOTFOUND) THEN
758 	    CLOSE C_marketing_code;
759 	    x_return_status := FND_API.G_RET_STS_ERROR;
760             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
761 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
762                 FND_MESSAGE.Set_Token('COLUMN', 'MARKETING_SOURCE_CODE_ID', FALSE);
763 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_mkting_source_code_id),FALSE);
764                 FND_MSG_PUB.ADD;
765 	    END IF;
766         ELSE
767 	    CLOSE C_marketing_code;
768 	END IF;
769     END IF;
770 
771 END Validate_MARKETING_SOURCE_CODE;
772 
773 
774 PROCEDURE Validate_UOM_code(
775 	p_init_msg_list		IN	VARCHAR2,
776 	p_uom_code      	IN	VARCHAR2,
777         p_organization_id       IN      NUMBER,
778         p_inventory_item_id     IN      NUMBER,
779 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
780         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
781         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
782 IS
783  CURSOR C_uom_code IS
784  select uom_code from MTL_ITEM_UOMS_VIEW
785  where uom_code = p_uom_code
786  and inventory_item_id = p_inventory_item_id
787  and organization_id = p_organization_id;
788 
789  l_uom_code   VARCHAR2(30);
790 BEGIN
791     -- Initialize message list if p_init_msg_list is set to TRUE.
792     IF FND_API.to_Boolean( p_init_msg_list ) THEN
793         FND_MSG_PUB.initialize;
794     END IF;
795 
796     --  Initialize API return status to success
797     x_return_status := FND_API.G_RET_STS_SUCCESS;
798 
799     IF (p_uom_code IS NOT NULL AND p_uom_code <> FND_API.G_MISS_CHAR) THEN
800         OPEN C_uom_code;
801 	FETCH C_uom_code INTO l_uom_code;
802         IF (C_uom_code%NOTFOUND) THEN
803 	    CLOSE C_uom_code;
804 	    x_return_status := FND_API.G_RET_STS_ERROR;
805             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
806 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
807                 FND_MESSAGE.Set_Token('COLUMN', 'UOM_CODE', FALSE);
808 			 FND_MESSAGE.Set_Token('VALUE',p_uom_code,FALSE);
809                 FND_MSG_PUB.ADD;
810 	    END IF;
811         ELSE
812 	    CLOSE C_uom_code;
813 	END IF;
814     END IF;
815 
816 END Validate_UOM_CODE;
817 
818 
819 PROCEDURE Validate_Tax_Exemption(
820 	p_init_msg_list		IN	VARCHAR2,
821 	p_tax_exempt_flag	IN	VARCHAR2,
822 	p_tax_exempt_reason_code IN	VARCHAR2,
823 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
824         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
825         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
826 IS
827 BEGIN
828     -- Initialize message list if p_init_msg_list is set to TRUE.
829     IF FND_API.to_Boolean( p_init_msg_list ) THEN
830         FND_MSG_PUB.initialize;
831     END IF;
832 
833     --  Initialize API return status to success
834     x_return_status := FND_API.G_RET_STS_SUCCESS;
835 
836     IF p_tax_exempt_flag = 'E' AND
837 	(p_tax_exempt_reason_code IS NULL OR
838 	 p_tax_exempt_reason_code = FND_API.G_MISS_CHAR) THEN
839         x_return_status := FND_API.G_RET_STS_ERROR;
840         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
841 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
842             FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
843             FND_MSG_PUB.ADD;
844 	END IF;
845     END IF;
846 
847     FND_MSG_PUB.Count_And_Get(
848 	p_count	=> x_msg_count,
849 	p_data	=> x_msg_data);
850 
851 END Validate_Tax_Exemption;
852 
853 
854 -- New procedure added by Bmishra on 01/23/2002 by removing the earlier validate_configuration procedure
855 
856 PROCEDURE Validate_Configuration(
857     p_init_msg_list         IN  VARCHAR2,
858     p_config_header_id      IN  NUMBER,
859     p_config_revision_num   IN  NUMBER,
860     p_config_item_id        IN  NUMBER,
861     --p_component_code      IN  VARCHAR2,
862     x_return_status         OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
863     x_msg_count             OUT NOCOPY /* file.sql.39 change */   NUMBER,
864     x_msg_data              OUT NOCOPY /* file.sql.39 change */   VARCHAR2)
865 IS
866  -- We will add config_item_id when we will implement solution model
867  CURSOR C_configuration IS
868  SELECT component_code
869  FROM cz_config_details_V
870  WHERE CONFIG_HDR_ID = p_config_header_id
871  AND CONFIG_REV_NBR  = p_config_revision_num
872  --AND component_code = p_component_code;
873  AND CONFIG_ITEM_ID  = config_item_id;
874 
875  l_component_code   VARCHAR2(1000);
876 BEGIN
877     -- Initialize message list if p_init_msg_list is set to TRUE.
878     IF FND_API.to_Boolean( p_init_msg_list ) THEN
879         FND_MSG_PUB.initialize;
880     END IF;
881 
882     --  Initialize API return status to success
883     x_return_status := FND_API.G_RET_STS_SUCCESS;
884 
885     OPEN C_configuration;
886     FETCH C_configuration INTO l_component_code;
887     IF (C_configuration%NOTFOUND) THEN
888        CLOSE C_configuration;
889        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
890          aso_debug_pub.add('ASO_VALIDATE_PVT.validate_configuration: Inside C_configuration Not Found condition',1,'N');
891        END IF;
892        x_return_status := FND_API.G_RET_STS_ERROR;
893        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
894            FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_CONFIGURATION');
895            FND_MESSAGE.Set_Token('HDR_ID',p_config_header_id, FALSE);
896            FND_MESSAGE.Set_Token('REV_NO',p_config_revision_num, FALSE);
897            FND_MESSAGE.Set_Token('CONFIG_ITEM_ID',p_config_item_id, FALSE);
898            FND_MSG_PUB.ADD;
899        END IF;
900     ELSE
901        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
902          aso_debug_pub.add('ASO_VALIDATE_PVT.validate_configuration: Inside C_configuration Not Found ELSE condition', 1, 'N');
903        END IF;
904        CLOSE C_configuration;
905     END IF;
906 END Validate_Configuration;
907 
908 -- End Of procedure Bmishra 01/23/2002
909 
910 PROCEDURE Validate_Delayed_Service(
911 	p_init_msg_list		IN	VARCHAR2,
912 	p_service_ref_type_code IN      VARCHAR2,
913         p_service_ref_line_id   IN      NUMBER,
914         p_service_ref_system_id IN      NUMBER,
915 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
916         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
917         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
918 IS
919 /*CURSOR C_servicetypes IS
920   select service_reference_type_code
921   from aso_i_service_types_v
922   where service_reference_type_code = p_service_ref_type_code;*/
923 CURSOR C_servicetypes IS
924   select lookup_code
925   from aso_lookups
926   where lookup_code = p_service_ref_type_code and
927   lookup_type = 'ASO_SERVICE_TYPE';
928 
929 l_service_code VARCHAR2(30);
930 
931 BEGIN
932     -- Initialize message list if p_init_msg_list is set to TRUE.
933     IF FND_API.to_Boolean( p_init_msg_list ) THEN
934         FND_MSG_PUB.initialize;
935     END IF;
936 
937     --  Initialize API return status to success
938     x_return_status := FND_API.G_RET_STS_SUCCESS;
939 
940     IF (p_service_ref_type_code IS NOT NULL AND p_service_ref_type_code <> FND_API.G_MISS_CHAR) THEN
941         OPEN C_servicetypes;
942 	FETCH C_servicetypes INTO l_service_code;
943         IF (C_servicetypes%NOTFOUND) THEN
944 	    CLOSE C_servicetypes;
945 	    x_return_status := FND_API.G_RET_STS_ERROR;
946             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
947 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
948                 FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_TYPE_CODE', FALSE);
949 			 FND_MESSAGE.Set_Token('VALUE',p_service_ref_type_code,FALSE);
950                 FND_MSG_PUB.ADD;
951 	    END IF;
952         ELSE
953 	    CLOSE C_servicetypes;
954               null;
955            -- kchervel check
956            -- IF p_service_ref_type_code = 'CUSTOMER_PRODUCT' THEN
957            -- IF p_service_ref_type_code = 'ORDER' THEN
958 
959 	END IF;
960     END IF;
961 
962 
963 END;
964 
965 
966 PROCEDURE Validate_Service(
967         p_init_msg_list             IN   VARCHAR2,
968         p_inventory_item_id         IN   NUMBER,
969         p_start_date_active         IN   DATE,
970         p_end_date_active           IN   DATE,
971         p_service_duration          IN   NUMBER,
972         p_service_period            IN   VARCHAR2,
973         p_service_coterminate_flag  IN   VARCHAR2,
974         p_organization_id           IN   NUMBER,
975         x_return_status             OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
976         x_msg_count                 OUT NOCOPY /* file.sql.39 change */    NUMBER,
977         x_msg_data                  OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
978 IS
979 
980   CURSOR C_service_item IS
981   SELECT inventory_item_id, service_item_flag
982   FROM mtl_system_items_b
983   WHERE inventory_item_id  =  p_inventory_item_id
984   AND   organization_id    =  p_organization_id;
985 
986   l_inventory_item_id NUMBER;
987   l_service_item_flag VARCHAR(1);
988 
989 BEGIN
990 
991     --Initialize message list if p_init_msg_list is set to TRUE.
992     IF FND_API.to_Boolean( p_init_msg_list ) THEN
993         FND_MSG_PUB.initialize;
994     END IF;
995 
996     --Initialize API return status to success
997     x_return_status := FND_API.G_RET_STS_SUCCESS;
998 
999     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1000       aso_debug_pub.add('ASO_VALIDATE_PVT: Validate_Service: Begin validate_service procedure.');
1001       aso_debug_pub.add('Validate_Service: p_inventory_item_id:        '|| p_inventory_item_id);
1002       aso_debug_pub.add('Validate_Service: p_start_date_active:        '|| p_start_date_active);
1003       aso_debug_pub.add('Validate_Service: p_end_date_active:          '|| p_end_date_active);
1004       aso_debug_pub.add('Validate_Service: p_service_duration:         '|| p_service_duration);
1005       aso_debug_pub.add('Validate_Service: p_service_period:           '|| p_service_period);
1006       aso_debug_pub.add('Validate_Service: p_service_coterminate_flag: '|| p_service_coterminate_flag);
1007       aso_debug_pub.add('Validate_Service: p_organization_id:          '|| p_organization_id);
1008     END IF;
1009 
1010     IF p_inventory_item_id <> FND_API.G_MISS_NUM THEN
1011 
1012         OPEN  C_service_item;
1013 	   FETCH C_service_item INTO l_inventory_item_id, l_service_item_flag;
1014 
1015         IF C_service_item%NOTFOUND THEN
1016 
1017              CLOSE C_service_item;
1018 	        x_return_status := FND_API.G_RET_STS_ERROR;
1019 
1020              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1021 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1022                  FND_MESSAGE.Set_Token('COLUMN', 'Inventory_item_id', FALSE);
1023 			  FND_MESSAGE.Set_Token('VALUE',to_char(p_inventory_item_id),FALSE);
1024                  FND_MSG_PUB.ADD;
1025 	        END IF;
1026 
1027         ELSE
1028              CLOSE C_service_item;
1029 
1030              --if service start date must exist
1031              IF l_service_item_flag = 'Y' THEN
1032 
1033                  IF p_start_date_active IS NULL  OR  p_start_date_active = FND_API.G_MISS_DATE THEN
1034 
1035 	    	           x_return_status := FND_API.G_RET_STS_ERROR;
1036 
1037             	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1038 	                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1039                          FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_START_DATE', FALSE);
1040                          FND_MSG_PUB.ADD;
1041 	                END IF;
1042 
1043                  -- if service we should be able to calc end date
1044                  ELSIF (p_end_date_active IS NULL  OR  p_end_date_active = FND_API.G_MISS_DATE) AND
1045                        (p_service_duration IS NULL OR  p_service_duration = FND_API.G_MISS_NUM) AND
1046                        (p_service_coterminate_flag IS NULL  OR
1047                           p_service_coterminate_flag = FND_API.G_MISS_CHAR) THEN
1048 
1049 
1050 	    	                x_return_status := FND_API.G_RET_STS_ERROR;
1051 
1052             	           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1053 	                         FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1054                               FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_END_DATE', FALSE);
1055                               FND_MSG_PUB.ADD;
1056 	                     END IF;
1057 
1058                  END IF; -- start and end date active
1059 
1060              END IF; -- l_service_item_flag = 'Y'
1061 
1062          END IF; -- C_service_item%NOTFOUND
1063 
1064       END IF; -- p_inventory_item_id <> FND_API.G_MISS_NUM
1065 END;
1066 
1067 
1068 
1069 PROCEDURE Validate_Service_Duration(
1070 	p_init_msg_list		IN	VARCHAR2,
1071         p_service_duration      IN      NUMBER,
1072 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1073         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1074         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1075 IS
1076 BEGIN
1077      -- Initialize message list if p_init_msg_list is set to TRUE.
1078     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1079         FND_MSG_PUB.initialize;
1080     END IF;
1081 
1082     --  Initialize API return status to success
1083     x_return_status := FND_API.G_RET_STS_SUCCESS;
1084 
1085     IF (p_service_duration IS NOT NULL AND p_service_duration <> FND_API.G_MISS_NUM) THEN
1086         IF p_service_duration < 1 THEN
1087            x_return_status := FND_API.G_RET_STS_ERROR;
1088             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1089 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1090                 FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_DURATION', FALSE);
1091 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_service_duration),FALSE);
1092                 FND_MSG_PUB.ADD;
1093 	    END IF;
1094         END IF;
1095     END IF;
1096 
1097 END;
1098 
1099 PROCEDURE Validate_Service_Period(
1100 	p_init_msg_list		IN	VARCHAR2,
1101         p_service_period        IN      VARCHAR2,
1102 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1103         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1104         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1105 IS
1106 BEGIN
1107 null;
1108 END;
1109 
1110 PROCEDURE Validate_Returns(
1111         p_init_msg_list		IN	VARCHAR2,
1112         p_return_ref_type_code  IN      VARCHAR2,
1113         p_return_ref_header_id  IN      NUMBER,
1114         p_return_ref_line_id    IN      NUMBER,
1115         x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1116         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1117         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1118 IS
1119 CURSOR C_returntypes IS
1120   select return_reference_type_code
1121   from aso_i_return_types_v
1122   where return_reference_type_code = p_return_ref_type_code;
1123 
1124 l_return_code VARCHAR2(30);
1125 
1126 BEGIN
1127     -- Initialize message list if p_init_msg_list is set to TRUE.
1128     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1129         FND_MSG_PUB.initialize;
1130     END IF;
1131 
1132     --  Initialize API return status to success
1133     x_return_status := FND_API.G_RET_STS_SUCCESS;
1134 
1135     IF (p_return_ref_type_code IS NOT NULL AND p_return_ref_type_code <> FND_API.G_MISS_CHAR) THEN
1136         OPEN C_returntypes;
1137 	FETCH C_returntypes INTO l_return_code;
1138         IF (C_returntypes%NOTFOUND) THEN
1139 	    CLOSE C_returntypes;
1140 	    x_return_status := FND_API.G_RET_STS_ERROR;
1141             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1142 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1143                 FND_MESSAGE.Set_Token('COLUMN', 'RETURN_TYPE_CODE', FALSE);
1144 			 FND_MESSAGE.Set_Token('VALUE',p_return_ref_type_code,FALSE);
1145                 FND_MSG_PUB.ADD;
1146 	    END IF;
1147         ELSE
1148 	    CLOSE C_returntypes;
1149 	END IF;
1150     END IF;
1151 
1152 
1153 END ;
1154 
1155 
1156 PROCEDURE Validate_EmployPerson(
1157         p_init_msg_list		IN	VARCHAR2,
1158         p_employee_id           IN      NUMBER,
1159 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1160         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1161         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1162 IS
1163 CURSOR C_employperson IS
1164  SELECT start_date_active, end_date_active,status
1165  FROM jtf_rs_srp_vl
1166  WHERE person_id = p_employee_id;
1167 
1168 l_start_date DATE;
1169 l_end_date DATE;
1170 l_status VARCHAR2(1);
1171 BEGIN
1172 
1173    IF FND_API.to_Boolean( p_init_msg_list ) THEN
1174         FND_MSG_PUB.initialize;
1175     END IF;
1176 
1177     --  Initialize API return status to success
1178     x_return_status := FND_API.G_RET_STS_SUCCESS;
1179 
1180     IF p_employee_id IS NOT NULL AND p_employee_id <> FND_API.G_MISS_NUM THEN
1181        Open C_employperson;
1182        FETCH C_employperson into l_start_date, l_end_date,l_status;
1183 
1184        IF (C_employperson%NOTFOUND OR l_status<> 'A') THEN
1185 	    CLOSE C_employperson;
1186 	    x_return_status := FND_API.G_RET_STS_ERROR;
1187             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1188 	        FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SALES_REP');
1189                 FND_MESSAGE.Set_Token('COLUMN','EMPLOYEE_PERSON_ID' , FALSE);
1190                 FND_MSG_PUB.ADD;
1191 	    END IF;
1192         ELSE
1193 	    CLOSE C_employperson;
1194             IF trunc(sysdate) > nvl(trunc(l_end_date), trunc(sysdate)) THEN
1195               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1196 	        FND_MESSAGE.Set_Name('ASO', 'NOT_EFFECTIVE');
1197                 FND_MESSAGE.Set_Token('COLUMN','EMPLOYEE_PERSON_ID' , FALSE);
1198                 FND_MSG_PUB.ADD;
1199 	      END IF;
1200             END IF;
1201 	END IF;
1202       END IF;
1203 END;
1204 
1205 PROCEDURE Validate_CategoryCode(
1206         p_init_msg_list		IN	VARCHAR2,
1207         p_category_code         IN      VARCHAR2,
1208 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1209         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1210         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1211 IS
1212 BEGIN
1213 null;
1214 END;
1215 
1216 
1217 
1218 PROCEDURE Validate_For_Positive(
1219 	p_init_msg_list		IN	VARCHAR2,
1220         p_column_name           IN      VARCHAR2,
1221 	p_value			IN	NUMBER,
1222 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1223         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1224         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1225 IS
1226 BEGIN
1227    -- Initialize message list if p_init_msg_list is set to TRUE.
1228     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1229         FND_MSG_PUB.initialize;
1230     END IF;
1231 
1232     --  Initialize API return status to success
1233     x_return_status := FND_API.G_RET_STS_SUCCESS;
1234 
1235     IF (p_value < 0) THEN
1236         x_return_status := FND_API.G_RET_STS_ERROR;
1237         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1238 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
1239             FND_MESSAGE.Set_Token('COLUMN', p_column_name, FALSE);
1240             FND_MSG_PUB.ADD;
1241 	END IF;
1242     END IF;
1243 
1244     FND_MSG_PUB.Count_And_Get(
1245 	p_count	=> x_msg_count,
1246 	p_data	=> x_msg_data);
1247 
1248 END Validate_For_Positive;
1249 
1250 
1251 PROCEDURE Validate_Salescredit_Type(
1252 	p_init_msg_list		IN	VARCHAR2,
1253 	p_salescredit_type_id	IN	NUMBER,
1254 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1255         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1256         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1257 IS
1258 
1259 /*
1260  * 2633507 - hyang: use oe_sales_credit_types instead of
1261  * aso_i_sales_credit_types_v
1262  */
1263 
1264  CURSOR C_salescredit_type IS
1265  select name from oe_sales_credit_types
1266  where sales_credit_type_id = p_salescredit_type_id;
1267 
1268  l_sc_type VARCHAR2(240);
1269 BEGIN
1270     -- Initialize message list if p_init_msg_list is set to TRUE.
1271     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1272         FND_MSG_PUB.initialize;
1273     END IF;
1274 
1275     --  Initialize API return status to success
1276     x_return_status := FND_API.G_RET_STS_SUCCESS;
1277 
1278     IF (p_salescredit_type_id IS NOT NULL AND p_salescredit_type_id <> FND_API.G_MISS_NUM) THEN
1279         OPEN C_salescredit_type;
1280 	FETCH C_salescredit_type INTO l_sc_type;
1281         IF (C_salescredit_type%NOTFOUND) THEN
1282 	    CLOSE C_salescredit_type;
1283 	    x_return_status := FND_API.G_RET_STS_ERROR;
1284             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1285 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1286                 FND_MESSAGE.Set_Token('COLUMN', 'SALES CREDIT TYPE', FALSE);
1287 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_salescredit_type_id),FALSE);
1288                 FND_MSG_PUB.ADD;
1289 	    END IF;
1290         ELSE
1291 	    CLOSE C_salescredit_type;
1292 	END IF;
1293     END IF;
1294 
1295 END Validate_Salescredit_Type;
1296 
1297 PROCEDURE Validate_Party_Type(
1298 	p_init_msg_list		IN	VARCHAR2,
1299 	p_party_type     	IN	VARCHAR2,
1300 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1301         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1302         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1303 IS
1304 CURSOR C_party_type IS
1305  select 'VALID'
1306  from aso_lookups
1307  where lookup_type = 'ASO_PARTY_TYPE'
1308  and lookup_code = p_party_type;
1309 
1310  l_valid VARCHAR2(240);
1311 BEGIN
1312     -- Initialize message list if p_init_msg_list is set to TRUE.
1313     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1314         FND_MSG_PUB.initialize;
1315     END IF;
1316 
1317     --  Initialize API return status to success
1318     x_return_status := FND_API.G_RET_STS_SUCCESS;
1319 
1320 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1321   aso_debug_pub.add('Validate_PartyType: p_party_type: '||p_party_type, 1, 'N');
1322 END IF;
1323     IF (p_party_type IS NOT NULL AND p_party_type <> FND_API.G_MISS_CHAR) THEN
1324         OPEN C_party_type;
1325 	FETCH C_party_type INTO l_valid;
1326         IF (C_party_type%NOTFOUND) THEN
1327 	    CLOSE C_party_type;
1328 	    x_return_status := FND_API.G_RET_STS_ERROR;
1329             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1330 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1331                 FND_MESSAGE.Set_Token('COLUMN', 'PARTY TYPE', FALSE);
1332 			 FND_MESSAGE.Set_Token('VALUE',p_party_type,FALSE);
1333                 FND_MSG_PUB.ADD;
1334 	    END IF;
1335         ELSE
1336 	    CLOSE C_party_type;
1337 	END IF;
1338     END IF;
1339 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1340   aso_debug_pub.add('Validate_PartyType: x_return_status: '||x_return_status, 1, 'N');
1341 END IF;
1342 END Validate_Party_Type;
1343 
1344 PROCEDURE Validate_Resource_id(
1345     p_init_msg_list     IN      VARCHAR2,
1346     p_resource_id       IN      NUMBER,
1347     x_return_status     OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
1348     x_msg_count	        OUT NOCOPY /* file.sql.39 change */       NUMBER,
1349     x_msg_data	        OUT NOCOPY /* file.sql.39 change */       VARCHAR2
1350 )
1351 IS
1352 
1353     CURSOR C_sales_rep (l_resource_id NUMBER) IS
1354     select 'VALID'
1355     /*  from jtf_rs_srp_vl */  --Commented Code Yogeshwar (MOAC)
1356     from jtf_rs_salesreps_mo_v --New Code Yogeshwar (MOAC)
1357      WHERE trunc(sysdate) BETWEEN trunc(NVL(start_date_active, sysdate))
1358        AND trunc(NVL(end_date_active, sysdate))
1359        --Commentd Code Start Yogeshwar (MOAC)
1360        /*
1361        AND NVL(ORG_ID,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO' ),1,1) , ' ', NULL, SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)) = NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1), ' ', NULL,SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
1362        */
1363        --Commented Code End Yogeshwar (MOAC)
1364        AND resource_id = l_resource_id;
1365 
1366     l_valid VARCHAR2(240);
1367 
1368 BEGIN
1369 
1370     -- Initialize message list if p_init_msg_list is set to TRUE.
1371     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1372         FND_MSG_PUB.initialize;
1373     END IF;
1374 
1375     --  Initialize API return status to success
1376     x_return_status := FND_API.G_RET_STS_SUCCESS;
1377 
1378     IF (p_resource_id IS NOT NULL AND p_resource_id <> FND_API.G_MISS_NUM) THEN
1379         OPEN C_sales_rep(p_resource_id);
1380 	FETCH C_sales_rep INTO l_valid;
1381         IF (C_sales_rep%NOTFOUND) THEN
1382 	    x_return_status := FND_API.G_RET_STS_ERROR;
1383 	END IF;
1384         CLOSE C_sales_rep;
1385     END IF;
1386 
1387 END Validate_Resource_id;
1388 
1389 -- jtf_rs_resource_ext
1390 -- jtf_rs_res_emp_vl
1391 
1392 PROCEDURE Validate_Emp_Res_id(
1393 	p_init_msg_list		IN	VARCHAR2,
1394 	p_resource_id	        IN	NUMBER,
1395 	p_employee_person_id    IN	NUMBER,
1396 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1397         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1398         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1399 IS
1400 CURSOR C_emp_res IS
1401  select person_id
1402  from jtf_rs_srp_vl
1403  where resource_id = p_resource_id
1404  and trunc(sysdate) BETWEEN trunc(NVL(start_date_active, sysdate)) AND
1405 				 trunc(NVL(end_date_active, sysdate));
1406 
1407  l_person_id NUMBER;
1408 BEGIN
1409     -- Initialize message list if p_init_msg_list is set to TRUE.
1410     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1411         FND_MSG_PUB.initialize;
1412     END IF;
1413 
1414     --  Initialize API return status to success
1415     x_return_status := FND_API.G_RET_STS_SUCCESS;
1416 
1417     IF (p_resource_id IS NOT NULL AND p_resource_id <> FND_API.G_MISS_NUM)
1418     AND  (p_employee_person_id IS NOT NULL AND p_employee_person_id <> FND_API.G_MISS_NUM)	 THEN
1419         OPEN  C_emp_res;
1420 	FETCH  C_emp_res  INTO l_person_id;
1421         IF (C_emp_res%NOTFOUND) OR l_person_id IS NULL OR l_person_id =  FND_API.G_MISS_NUM  THEN
1422 	    CLOSE C_emp_res;
1423 	    x_return_status := FND_API.G_RET_STS_ERROR;
1424             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1425 	        FND_MESSAGE.Set_Name('ASO', 'ASO_SALESREP');
1426                 FND_MESSAGE.Set_Token('COLUMN', 'RESOURCE ID', FALSE);
1427                 FND_MSG_PUB.ADD;
1428 	    END IF;
1429         ELSIF l_person_id <> p_employee_person_id THEN
1430 	    CLOSE C_emp_res;
1431               x_return_status := FND_API.G_RET_STS_ERROR;
1432             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1433 	        FND_MESSAGE.Set_Name('ASO', 'ASO_SALESREP');
1434                 FND_MESSAGE.Set_Token('COLUMN', 'RESOURCE ID', FALSE);
1435                 FND_MSG_PUB.ADD;
1436 	    END IF;
1437 	END IF;
1438     END IF;
1439 
1440 END  Validate_Emp_Res_id;
1441 
1442 PROCEDURE Validate_Resource_group_id(
1443 	p_init_msg_list		IN	VARCHAR2,
1444 	p_resource_group_id	IN	NUMBER,
1445 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1446         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1447         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1448 IS
1449 CURSOR C_resource_group IS
1450  select 'VALID'
1451  from jtf_rs_groups_b
1452  where group_id = p_resource_group_id
1453  and trunc(sysdate) BETWEEN trunc(NVL(start_date_active, sysdate)) AND
1454 				 trunc(NVL(end_date_active, sysdate));
1455 
1456  l_valid VARCHAR2(240);
1457 BEGIN
1458     -- Initialize message list if p_init_msg_list is set to TRUE.
1459     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1460         FND_MSG_PUB.initialize;
1461     END IF;
1462 
1463     --  Initialize API return status to success
1464     x_return_status := FND_API.G_RET_STS_SUCCESS;
1465 
1466     IF (p_resource_group_id IS NOT NULL AND p_resource_group_id <> FND_API.G_MISS_NUM) THEN
1467         OPEN C_resource_group;
1468 	FETCH C_resource_group INTO l_valid;
1469         IF (C_resource_group%NOTFOUND) THEN
1470 	    CLOSE C_resource_group;
1471 	    x_return_status := FND_API.G_RET_STS_ERROR;
1472             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1473 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1474                 FND_MESSAGE.Set_Token('COLUMN', 'RESOURCE GROUP', FALSE);
1475 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_resource_group_id),FALSE);
1476                 FND_MSG_PUB.ADD;
1477 	    END IF;
1478         ELSE
1479 	    CLOSE C_resource_group;
1480 	END IF;
1481     END IF;
1482 
1483 END Validate_Resource_group_id;
1484 
1485 PROCEDURE Validate_Party_Object_Type(
1486 	p_init_msg_list		IN	VARCHAR2,
1487 	p_party_object_type     IN	VARCHAR2,
1488 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1489         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1490         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1491 IS
1492 CURSOR C_party_object_type IS
1493  select 'VALID'
1494  from aso_lookups
1495  where lookup_type = 'ASO_PARTY_OBJECT_TYPE'
1496  and lookup_code = p_party_object_type;
1497 
1498  l_valid VARCHAR2(240);
1499 BEGIN
1500     -- Initialize message list if p_init_msg_list is set to TRUE.
1501     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1502         FND_MSG_PUB.initialize;
1503     END IF;
1504 
1505     --  Initialize API return status to success
1506     x_return_status := FND_API.G_RET_STS_SUCCESS;
1507 
1508 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1509   aso_debug_pub.add('Validate_PartyObjType: p_party_object_type: '||p_party_object_type, 1, 'N');
1510 END IF;
1511     IF (p_party_object_type IS NOT NULL AND p_party_object_type <> FND_API.G_MISS_CHAR) THEN
1512         OPEN C_party_object_type;
1513 	FETCH C_party_object_type INTO l_valid;
1514         IF (C_party_object_type%NOTFOUND) THEN
1515 	    CLOSE C_party_object_type;
1516 	    x_return_status := FND_API.G_RET_STS_ERROR;
1517             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1518 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1519                 FND_MESSAGE.Set_Token('COLUMN', 'PARTY OBJECT TYPE', FALSE);
1520 			 FND_MESSAGE.Set_Token('VALUE',p_party_object_type,FALSE);
1521                 FND_MSG_PUB.ADD;
1522 	    END IF;
1523         ELSE
1524 	    CLOSE C_party_object_type;
1525 	END IF;
1526     END IF;
1527 
1528 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1529   aso_debug_pub.add('Validate_PartyObjType: x_return_status: '||x_return_status, 1, 'N');
1530 END IF;
1531 END Validate_Party_Object_Type;
1532 
1533 PROCEDURE Validate_Party_Object_Id(
1534 	p_init_msg_list		IN	VARCHAR2,
1535         p_party_id              IN      NUMBER,
1536 	p_party_object_type     IN	VARCHAR2,
1537         p_party_object_id       IN      NUMBER,
1538 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1539         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1540         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1541 IS
1542 CURSOR C_contact_point IS
1543  select contact_point_type
1544  from aso_i_contact_points_v
1545  where contact_point_id = p_party_object_id;
1546 
1547 l_type varchar(240);
1548 BEGIN
1549      -- Initialize message list if p_init_msg_list is set to TRUE.
1550     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1551         FND_MSG_PUB.initialize;
1552     END IF;
1553 
1554     --  Initialize API return status to success
1555     x_return_status := FND_API.G_RET_STS_SUCCESS;
1556 
1557 
1558 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1559   aso_debug_pub.add('Validate_PartyObjId: p_party_object_type: '||p_party_object_type, 1, 'N');
1560   aso_debug_pub.add('Validate_PartyObjId: p_party_object_id: '||p_party_object_id, 1, 'N');
1561 END IF;
1562    IF p_party_object_type IS NOT NULL  and p_party_object_type <> FND_API.G_MISS_CHAR THEN
1563        IF p_party_object_id is null OR p_party_object_id = FND_API.G_MISS_NUM THEN
1564          x_return_status := FND_API.G_RET_STS_ERROR;
1565         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1566 	    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
1567             FND_MESSAGE.Set_Token('COLUMN', 'PARTY OBJECT ID', FALSE);
1568             FND_MSG_PUB.ADD;
1569 	END IF;
1570       END IF;
1571 
1572   /*  IF (p_party_object_type = 'PARTY_SITE') THEN
1573 
1574         Validate_PartySite(
1575 	p_init_msg_list      => p_init_msg_list,
1576 	p_party_id	     => p_party_id,
1577 	p_party_site_id      => p_party_object_id,
1578 	p_site_usage         => p_party_object_type,
1579 	x_return_status      => x_return_status,
1580         x_msg_count          => x_msg_count,
1581         x_msg_data	     => x_msg_data) ;
1582    */
1583 
1584     IF (p_party_object_type = 'CONTACT_POINT') THEN
1585 
1586         OPEN C_contact_point;
1587 	FETCH C_contact_point INTO l_type;
1588         IF (C_contact_point%NOTFOUND) THEN
1589 	    CLOSE C_contact_point;
1590 	    x_return_status := FND_API.G_RET_STS_ERROR;
1591             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1592 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1593                 FND_MESSAGE.Set_Token('COLUMN', 'CONTACT POINT', FALSE);
1594                 FND_MSG_PUB.ADD;
1595 	    END IF;
1596         ELSE
1597 	    CLOSE C_contact_point;
1598 	END IF;
1599 
1600 
1601     END IF; -- party site.
1602    END IF;
1603 
1604 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1605   aso_debug_pub.add('Validate_PartyObjId: x_return_status: '||x_return_status, 1, 'N');
1606 END IF;
1607 END;
1608 
1609 
1610 -- this procedure is used to make sure that the same quote number is not
1611 -- being used especially when the user calls create quote and passes the
1612 -- quote number
1613 
1614 PROCEDURE Validate_Quote_Number(
1615 	p_init_msg_list		IN	VARCHAR2,
1616 	p_quote_number  	IN	NUMBER,
1617 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1618         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1619         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1620 IS
1621 CURSOR C_quote_number IS
1622  select quote_version
1623  from aso_quote_headers_all
1624  where quote_number = p_quote_number;
1625 
1626 l_version varchar(240);
1627 BEGIN
1628      -- Initialize message list if p_init_msg_list is set to TRUE.
1629     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1630         FND_MSG_PUB.initialize;
1631     END IF;
1632 
1633     --  Initialize API return status to success
1634     x_return_status := FND_API.G_RET_STS_SUCCESS;
1635 
1636     IF p_quote_number is not NULL and p_quote_number <> FND_API.G_MISS_NUM THEN
1637 
1638         OPEN C_quote_number;
1639 	FETCH C_quote_number INTO l_version;
1640         IF (C_quote_number%NOTFOUND) THEN
1641 	    CLOSE C_quote_number;   -- unique quote number
1642         ELSE
1643 	    CLOSE C_quote_number;
1644              x_return_status := FND_API.G_RET_STS_ERROR;
1645              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1646 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1647                 FND_MESSAGE.Set_Token('COLUMN', 'QUOTE NUMBER', FALSE);
1648                 FND_MSG_PUB.ADD;
1649 	    END IF;
1650 	END IF;
1651 
1652      END IF;
1653 END Validate_Quote_Number;
1654 
1655 PROCEDURE Validate_Desc_Flexfield(
1656            p_desc_flex_rec       IN OUT NOCOPY /* file.sql.39 change */    ASO_QUOTE_PUB.attribute_rec_type,
1657            p_desc_flex_name      IN VARCHAR2 ,
1658            p_value_or_id         IN VARCHAR2 := 'I',
1659            x_return_status       OUT NOCOPY /* file.sql.39 change */    varchar2)
1660 IS
1661 
1662 l_flex_name     fnd_descriptive_flexs.descriptive_flexfield_name%type;
1663 l_count         NUMBER;
1664 l_col_name     VARCHAR2(50);
1665 l_flex_exists  VARCHAR2(1);
1666 l_error_msg    VARCHAR2(240);
1667 
1668 CURSOR desc_flex_exists IS
1669   SELECT 'Y'
1670   FROM fnd_descriptive_flexs
1671   WHERE application_id = ASO_QUOTE_PUB.OC_APPL_ID
1672     and descriptive_flexfield_name = p_desc_flex_name;
1673 
1674 
1675 BEGIN
1676 
1677            x_return_status := FND_API.G_RET_STS_SUCCESS;
1678 
1679 
1680            OPEN desc_flex_exists;
1681       	   FETCH desc_flex_exists INTO l_flex_exists;
1682       		IF desc_flex_exists%NOTFOUND THEN
1683        		CLOSE desc_flex_exists;
1684        		x_return_status := FND_API.G_RET_STS_ERROR;
1685        		FND_MESSAGE.SET_NAME('ASO', 'ASO_FLEX_INVALID_NAME');
1686                 FND_MESSAGE.SET_TOKEN('FLEX_NAME',p_desc_flex_name);
1687        		FND_MSG_PUB.ADD ;
1688        		return;
1689       		END IF;
1690       	   CLOSE desc_flex_exists;
1691 
1692 
1693    fnd_flex_descval.set_context_value(p_desc_flex_rec.attribute_category);
1694    fnd_flex_descval.set_column_value('ATTRIBUTE1', p_desc_flex_rec.attribute1);
1695    fnd_flex_descval.set_column_value('ATTRIBUTE2', p_desc_flex_rec.attribute2);
1696    fnd_flex_descval.set_column_value('ATTRIBUTE3', p_desc_flex_rec.attribute3);
1697    fnd_flex_descval.set_column_value('ATTRIBUTE4', p_desc_flex_rec.attribute4);
1698    fnd_flex_descval.set_column_value('ATTRIBUTE5', p_desc_flex_rec.attribute5);
1699    fnd_flex_descval.set_column_value('ATTRIBUTE6', p_desc_flex_rec.attribute6);
1700    fnd_flex_descval.set_column_value('ATTRIBUTE7', p_desc_flex_rec.attribute7);
1701    fnd_flex_descval.set_column_value('ATTRIBUTE8', p_desc_flex_rec.attribute8);
1702    fnd_flex_descval.set_column_value('ATTRIBUTE9', p_desc_flex_rec.attribute9);
1703  fnd_flex_descval.set_column_value('ATTRIBUTE10', p_desc_flex_rec.attribute10);
1704  fnd_flex_descval.set_column_value('ATTRIBUTE11',p_desc_flex_rec.attribute11);
1705  fnd_flex_descval.set_column_value('ATTRIBUTE12', p_desc_flex_rec.attribute12);
1706  fnd_flex_descval.set_column_value('ATTRIBUTE13', p_desc_flex_rec.attribute13);
1707  fnd_flex_descval.set_column_value('ATTRIBUTE14', p_desc_flex_rec.attribute14);
1708  fnd_flex_descval.set_column_value('ATTRIBUTE15', p_desc_flex_rec.attribute15);
1709 
1710     IF ( NOT fnd_flex_descval.validate_desccols('ASO', p_desc_flex_name, p_value_or_id) )
1711      THEN
1712 
1713        FND_MESSAGE.SET_NAME('ASO', 'ASO_DESC_FLEX_INVALID');
1714        FND_MESSAGE.SET_TOKEN('DFF_NAME',p_desc_flex_name);
1715        FND_MSG_PUB.ADD ;
1716        x_return_status := FND_API.G_RET_STS_ERROR;
1717        l_error_msg := FND_FLEX_DESCVAL.error_message;
1718        FND_MESSAGE.SET_NAME('ASO', 'ASO_FLEX_INVALID_MSG');
1719        FND_MESSAGE.SET_TOKEN('MSG_TEXT',l_error_msg);
1720        FND_MSG_PUB.ADD ;
1721     END IF;
1722 
1723       l_count := fnd_flex_descval.segment_count;
1724 
1725       FOR i in 1..l_count LOOP
1726         l_col_name := fnd_flex_descval.segment_column_name(i);
1727 
1728         IF l_col_name = 'ATTRIBUTE1' THEN
1729           p_desc_flex_rec.attribute1 := fnd_flex_descval.segment_value(i);
1730         ELSIF l_col_name = 'ATTRIBUTE_CATEGORY'  THEN
1731        p_desc_flex_rec.attribute_category := fnd_flex_descval.segment_value(i);
1732         ELSIF l_col_name = 'ATTRIBUTE2' THEN
1733           p_desc_flex_rec.attribute2 := fnd_flex_descval.segment_value(i);
1734         ELSIF l_col_name = 'ATTRIBUTE3' THEN
1735           p_desc_flex_rec.attribute3 := fnd_flex_descval.segment_value(i);
1736         ELSIF l_col_name = 'ATTRIBUTE4' THEN
1737           p_desc_flex_rec.attribute4 := fnd_flex_descval.segment_value(i);
1738         ELSIF l_col_name = 'ATTRIBUTE5' THEN
1739           p_desc_flex_rec.attribute5 := fnd_flex_descval.segment_value(i);
1740         ELSIF l_col_name = 'ATTRIBUTE6' THEN
1741           p_desc_flex_rec.attribute6 := fnd_flex_descval.segment_value(i);
1742         ELSIF l_col_name = 'ATTRIBUTE7' THEN
1743           p_desc_flex_rec.attribute7 := fnd_flex_descval.segment_value(i);
1744         ELSIF l_col_name = 'ATTRIBUTE8' THEN
1745           p_desc_flex_rec.attribute8 := fnd_flex_descval.segment_value(i);
1746         ELSIF l_col_name = 'ATTRIBUTE9' THEN
1747           p_desc_flex_rec.attribute9 := fnd_flex_descval.segment_value(i);
1748         ELSIF l_col_name = 'ATTRIBUTE10' THEN
1749           p_desc_flex_rec.attribute10 := fnd_flex_descval.segment_value(i);
1750         ELSIF l_col_name = 'ATTRIBUTE11' THEN
1751           p_desc_flex_rec.attribute11 := fnd_flex_descval.segment_value(i);
1752         ELSIF l_col_name = 'ATTRIBUTE12' THEN
1753           p_desc_flex_rec.attribute12 := fnd_flex_descval.segment_value(i);
1754         ELSIF l_col_name = 'ATTRIBUTE13' THEN
1755           p_desc_flex_rec.attribute13 := fnd_flex_descval.segment_value(i);
1756         ELSIF l_col_name = 'ATTRIBUTE14' THEN
1757           p_desc_flex_rec.attribute14 := fnd_flex_descval.segment_value(i);
1758         ELSIF l_col_name = 'ATTRIBUTE15' THEN
1759           p_desc_flex_rec.attribute15 := fnd_flex_descval.segment_value(i);
1760         END IF;
1761 
1762         IF i > l_count  THEN
1763           EXIT;
1764         END IF;
1765        END LOOP;
1766 
1767 EXCEPTION
1768     WHEN OTHERS THEN
1769 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1770         RETURN;
1771 
1772 END Validate_Desc_Flexfield;
1773 
1774 
1775  -- TCA CHANGES
1776 /*
1777 If specified, should be a valid (i.e. active) cust account.
1778 Should not be null if either the invoice_to_cust_account_id
1779 or the ship_to_cust_account_id is specified
1780 */
1781 PROCEDURE Validate_CustAccount_bsc(
1782 	p_init_msg_list		IN	VARCHAR2,
1783 	p_party_id		    IN	NUMBER,
1784 	p_cust_account_id	IN	NUMBER,
1785     p_inv_cust_account_id	IN	NUMBER,
1786     p_end_cust_account_id	IN	NUMBER,
1787     p_shp_cust_account_id	IN	NUMBER,
1788 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1789     x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1790     x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1791 IS
1792     CURSOR C_Account(l_account_id NUMBER)  IS
1793 	SELECT status, account_activation_date, account_termination_date
1794     FROM HZ_CUST_ACCOUNTS
1795 	WHERE  cust_account_id = l_account_id;
1796 
1797     l_api_name          VARCHAR2(40) := 'Validate_CustAccount_bsc' ;
1798     l_account_status	VARCHAR2(1);
1799     l_activation_date	DATE;
1800     l_termination_date		DATE;
1801 BEGIN
1802    -- SAVEPOINT VALIDATE_CUSTACCOUNT_PVT;
1803     -- Initialize message list if p_init_msg_list is set to TRUE.
1804     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1805         FND_MSG_PUB.initialize;
1806     END IF;
1807 
1808     --  Initialize API return status to success
1809     x_return_status := FND_API.G_RET_STS_SUCCESS;
1810 
1811 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1812   aso_debug_pub.add('Validate_custAcctBsc: p_cust_account_id: '||p_cust_account_id, 1, 'N');
1813 END IF;
1814     IF (p_cust_account_id IS NOT NULL AND p_cust_account_id <> FND_API.G_MISS_NUM) THEN
1815       	OPEN C_Account(p_cust_account_id);
1816     	FETCH C_Account INTO l_account_status, l_activation_date, l_termination_date;
1817         IF (C_Account%NOTFOUND OR
1818 	    (sysdate NOT BETWEEN NVL(l_activation_date, sysdate) AND
1819             				 NVL(l_termination_date, sysdate))OR
1820 		l_account_status <> 'A') THEN
1821 	                x_return_status := FND_API.G_RET_STS_ERROR;
1822                		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1823 	              	FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1824                   	FND_MESSAGE.Set_Token('COLUMN', 'CUST_ACCOUNT', FALSE);
1825 				FND_MESSAGE.Set_Token('VALUE',to_char(p_cust_account_id),FALSE);
1826                   	FND_MSG_PUB.ADD;
1827 	          	    END IF;
1828 
1829      	END IF;
1830         CLOSE C_Account;
1831     END IF;
1832 
1833 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1834   aso_debug_pub.add('p_ship_cust_account_id = ' ||p_shp_cust_account_id,2,'N');
1835   aso_debug_pub.add('p_inv_cust_account = ' || p_inv_cust_account_id , 2, 'N');
1836   aso_debug_pub.add('p_end_cust_account = ' || p_end_cust_account_id , 2, 'N');
1837 END IF;
1838 
1839     IF (p_inv_cust_account_id IS NOT NULL AND
1840         p_inv_cust_account_id <> FND_API.G_MISS_NUM) THEN
1841 
1842             OPEN C_Account(p_inv_cust_account_id);
1843             FETCH C_Account INTO l_account_status, l_activation_date, l_termination_date;
1844         	IF (C_Account%NOTFOUND OR
1845         	    (sysdate NOT BETWEEN NVL(l_activation_date, sysdate) AND
1846 	 			NVL(l_termination_date, sysdate))OR
1847  	            l_account_status <> 'A') THEN
1848 
1849 	         	x_return_status := FND_API.G_RET_STS_ERROR;
1850                		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1851 	              	FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1852                   	FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_CUST_ACCOUNT', FALSE);
1853 				FND_MESSAGE.Set_Token('VALUE',to_char(p_inv_cust_account_id),FALSE);
1854                   	FND_MSG_PUB.ADD;
1855 	       		    END IF;
1856 
1857      		END IF;
1858 	       CLOSE C_Account;
1859     END IF;
1860 
1861     IF (p_end_cust_account_id IS NOT NULL AND
1862         p_end_cust_account_id <> FND_API.G_MISS_NUM) THEN
1863 
1864             OPEN C_Account(p_end_cust_account_id);
1865             FETCH C_Account INTO l_account_status, l_activation_date, l_termination_date;
1866           IF (C_Account%NOTFOUND OR
1867               (sysdate NOT BETWEEN NVL(l_activation_date, sysdate) AND
1868                     NVL(l_termination_date, sysdate))OR
1869                  l_account_status <> 'A') THEN
1870 
1871                x_return_status := FND_API.G_RET_STS_ERROR;
1872                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1873                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1874                     FND_MESSAGE.Set_Token('COLUMN', 'END_CUST_ACCOUNT', FALSE);
1875                     FND_MESSAGE.Set_Token('VALUE',to_char(p_end_cust_account_id),FALSE);
1876                     FND_MSG_PUB.ADD;
1877                         END IF;
1878 
1879                END IF;
1880             CLOSE C_Account;
1881     END IF;
1882 
1883     IF (p_shp_cust_account_id IS NOT NULL AND
1884         p_shp_cust_account_id <> FND_API.G_MISS_NUM) THEN
1885 
1886         OPEN C_Account(p_shp_cust_account_id);
1887 	    FETCH C_Account INTO l_account_status, l_activation_date, l_termination_date;
1888        	IF (C_Account%NOTFOUND OR
1889            (sysdate NOT BETWEEN NVL(l_activation_date, sysdate) AND
1890            NVL(l_termination_date, sysdate))OR
1891            l_account_status <> 'A') THEN
1892 
1893 	         	x_return_status := FND_API.G_RET_STS_ERROR;
1894            		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1895 	              	FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1896                   	FND_MESSAGE.Set_Token('COLUMN', 'SHIP_CUST_ACCOUNT', FALSE);
1897 				FND_MESSAGE.Set_Token('VALUE',to_char(p_shp_cust_account_id),FALSE);
1898                   	FND_MSG_PUB.ADD;
1899 	       		END IF;
1900 
1901      		END IF;
1902 	 CLOSE C_Account;
1903     END IF;
1904 	   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1905 	     aso_debug_pub.add('after validate cust ' || x_return_status , 2, 'N');
1906 	   END IF;
1907 
1908 END Validate_CustAccount_bsc;
1909 
1910 /* If specified, should be a valid org_contact_id, where
1911 party in the subject of the  relationship is of type person*/
1912 PROCEDURE Validate_org_contact_bsc(
1913 	p_init_msg_list		IN	VARCHAR2,
1914 	p_contact_id		IN	NUMBER,
1915 	p_cust_account_id   IN  NUMBER,
1916 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1917     x_msg_count	        OUT NOCOPY /* file.sql.39 change */   NUMBER,
1918     x_msg_data	        OUT NOCOPY /* file.sql.39 change */   VARCHAR2)
1919 IS
1920 
1921    CURSOR C_Contact(l_contact_id NUMBER) IS
1922 	SELECT subject_id, a.status
1923     FROM HZ_ORG_CONTACTS a, HZ_RELATIONSHIPS b
1924 	WHERE org_contact_id = l_contact_id
1925     AND a.party_relationship_id = b.relationship_id;
1926 
1927    CURSOR C_Party_Cust(l_party_id NUMBER) IS
1928     SELECT status, party_type
1929     FROM HZ_PARTIES
1930     WHERE party_id= l_party_id;
1931 
1932     l_party_relationship_id NUMBER;
1933     l_subject_id NUMBER;
1934     l_status VARCHAR2(1);
1935     l_party_type VARCHAR2(30);
1936 
1937 BEGIN
1938     -- Initialize message list if p_init_msg_list is set to TRUE.
1939     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1940         FND_MSG_PUB.initialize;
1941     END IF;
1942 
1943     --  Initialize API return status to success
1944     x_return_status := FND_API.G_RET_STS_SUCCESS;
1945 
1946 
1947 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1948   aso_debug_pub.add('Validate_OrgContBsc: p_contact_id: '||p_contact_id, 1, 'N');
1949   aso_debug_pub.add('Validate_OrgContBsc: p_cust_account_id: '||p_cust_account_id, 1, 'N');
1950 END IF;
1951     IF (p_contact_id IS NOT NULL AND p_contact_id <> FND_API.G_MISS_NUM) THEN
1952         OPEN C_Contact(p_contact_id);
1953 	    FETCH C_Contact INTO l_subject_id, l_status;
1954         IF (C_Contact%NOTFOUND OR l_status <>'A') THEN
1955 
1956 	        x_return_status := FND_API.G_RET_STS_ERROR;
1957             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1958                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1959                 FND_MESSAGE.Set_Token('COLUMN', 'org_contact_id', FALSE);
1960 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_contact_id),FALSE);
1961                 FND_MSG_PUB.ADD;
1962             END IF;
1963         ELSE
1964             OPEN  C_Party_Cust(l_subject_id);
1965             FETCH  C_Party_Cust INTO l_status ,l_party_type;
1966 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1967   aso_debug_pub.add('Validate_OrgContBsc: l_subject_id: '||l_subject_id, 1, 'N');
1968   aso_debug_pub.add('Validate_OrgContBsc: l_party_type: '||l_party_type, 1, 'N');
1969 END IF;
1970             IF ( C_Party_Cust%NOTFOUND OR l_status <> 'A' OR l_party_type <> 'PERSON' ) THEN
1971                 CLOSE  C_Party_Cust;
1972 	            x_return_status := FND_API.G_RET_STS_ERROR;
1973                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1974 	                FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1975                     FND_MESSAGE.Set_Token('COLUMN', 'org_contact_id', FALSE);
1976 				FND_MESSAGE.Set_Token('VALUE',to_char(p_contact_id),FALSE);
1977                     FND_MSG_PUB.ADD;
1978 	            END IF;
1979             END IF;
1980             CLOSE C_Party_Cust;
1981        END IF;
1982        CLOSE C_Contact;
1983     END IF;
1984 
1985 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1986   aso_debug_pub.add('Validate_OrgContBsc: x_return_status: '||x_return_status, 1, 'N');
1987 END IF;
1988 END Validate_Org_Contact_bsc;
1989 
1990 /* Should not be null, Should be a valid party_id of type person,
1991 organization or relationship.*/
1992 PROCEDURE Validate_Party_bsc(
1993 	p_init_msg_list	IN	VARCHAR2,
1994 	p_party_id		IN	NUMBER,
1995 	x_return_status OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
1996     x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
1997     x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
1998 IS
1999     CURSOR C_Party(l_pty_id NUMBER) IS
2000 	SELECT status FROM HZ_PARTIES
2001 	WHERE party_id = l_pty_id and party_type in
2002     ('PERSON','PARTY_RELATIONSHIP','ORGANIZATION');
2003 
2004     l_party_status	VARCHAR2(1);
2005 
2006 BEGIN
2007     -- Initialize message list if p_init_msg_list is set to TRUE.
2008     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2009         FND_MSG_PUB.initialize;
2010     END IF;
2011 
2012     --  Initialize API return status to success
2013     x_return_status := FND_API.G_RET_STS_SUCCESS;
2014 
2015 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2016   aso_debug_pub.add('Validate_PtyBsc: p_party_id: '||p_party_id, 1, 'N');
2017 END IF;
2018     IF (p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM) THEN
2019         OPEN C_Party(p_party_id);
2020 	    FETCH C_Party INTO l_party_status;
2021         IF (C_Party%NOTFOUND OR l_party_status <> 'A') THEN
2022 	        CLOSE C_Party;
2023 	        x_return_status := FND_API.G_RET_STS_ERROR;
2024             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2025 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2026                 FND_MESSAGE.Set_Token('COLUMN', 'party_Id', FALSE);
2027 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_party_id),FALSE);
2028                 FND_MSG_PUB.ADD;
2029 	         END IF;
2030         ELSE
2031 	      CLOSE C_Party;
2032 	    END IF;
2033    END IF;
2034 
2035 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2036   aso_debug_pub.add('Validate_PtyBsc: x_return_status: '||x_return_status, 1, 'N');
2037 END IF;
2038     FND_MSG_PUB.Count_And_Get(
2039 	p_count	=> x_msg_count,
2040 	p_data	=> x_msg_data);
2041 
2042 END Validate_Party_bsc;
2043 
2044 PROCEDURE Validate_Inv_Party_bsc(
2045 	p_init_msg_list	IN	VARCHAR2,
2046 	p_party_id		IN	NUMBER ,
2047     p_site_use  	IN	VARCHAR2,
2048 	x_return_status OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
2049     x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
2050     x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
2051 IS
2052     CURSOR C_Party(l_pty_id NUMBER) IS
2053 	SELECT status FROM HZ_PARTIES
2054 	WHERE party_id = l_pty_id AND party_type ='PARTY_RELATIONSHIP';
2055 
2056     l_party_status	VARCHAR2(1);
2057 
2058 BEGIN
2059     -- Initialize message list if p_init_msg_list is set to TRUE.
2060     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2061         FND_MSG_PUB.initialize;
2062     END IF;
2063 
2064     --  Initialize API return status to success
2065     x_return_status := FND_API.G_RET_STS_SUCCESS;
2066 
2067 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2068   aso_debug_pub.add('Validate_InvPtyBsc: p_party_id: '||p_party_id, 1, 'N');
2069   aso_debug_pub.add('Validate_InvPtyBsc: p_site_use: '||p_site_use, 1, 'N');
2070 END IF;
2071     IF (p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM) THEN
2072         OPEN C_Party(p_party_id);
2073 	    FETCH C_Party INTO l_party_status;
2074         IF (C_Party%NOTFOUND OR l_party_status <> 'A') THEN
2075 	        CLOSE C_Party;
2076 	        x_return_status := FND_API.G_RET_STS_ERROR;
2077             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2078                 IF p_site_use ='BILL_TO' THEN
2079                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2080                 FND_MESSAGE.Set_Token('COLUMN', 'Invoice_to_party_Id', FALSE);
2081 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_party_id),FALSE);
2082                 FND_MSG_PUB.ADD;
2083                 ELSIF p_site_use ='END_USER' THEN
2084                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2085                 FND_MESSAGE.Set_Token('COLUMN', 'End_Customer_party_Id', FALSE);
2086                 FND_MESSAGE.Set_Token('VALUE',to_char(p_party_id),FALSE);
2087                 FND_MSG_PUB.ADD;
2088                 ELSIF p_site_use ='SHIP_TO' THEN
2089                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2090                 FND_MESSAGE.Set_Token('COLUMN', 'Ship_to_party_Id', FALSE);
2091 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_party_id),FALSE);
2092                 FND_MSG_PUB.ADD;
2093                 END IF;
2094 	         END IF;
2095         ELSE
2096 	      CLOSE C_Party;
2097 	    END IF;
2098 
2099 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2100   aso_debug_pub.add('Validate_InvPtyBsc: x_return_status: '||x_return_status, 1, 'N');
2101 END IF;
2102    END IF;
2103 
2104     FND_MSG_PUB.Count_And_Get(
2105 	p_count	=> x_msg_count,
2106 	p_data	=> x_msg_data);
2107 
2108 END Validate_Inv_Party_bsc;
2109 
2110 
2111 /*Should not be null if either -invoice_to_party_id is specified,
2112 should be a valid party_site_id with party_site_use of 'Bill_To'*/
2113 
2114 PROCEDURE Validate_Inv_PartySite_bsc(
2115 	p_init_msg_list		IN	VARCHAR2,
2116 	p_party_id		IN	NUMBER,
2117 	p_party_site_id		IN	NUMBER,
2118      p_party_site_use     IN VARCHAR2,
2119 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
2120      x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
2121      x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
2122 IS
2123 
2124     CURSOR C_Inv_Party_Site(l_pty_site NUMBER) IS
2125 	SELECT a.status
2126 	FROM HZ_PARTY_SITES a
2127 	WHERE  a.party_site_id = l_pty_site;
2128 
2129     l_status        VARCHAR2(1);
2130 
2131 BEGIN
2132 
2133     -- Initialize message list if p_init_msg_list is set to TRUE.
2134     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2135         FND_MSG_PUB.initialize;
2136     END IF;
2137 
2138     --  Initialize API return status to success
2139     x_return_status := FND_API.G_RET_STS_SUCCESS;
2140 
2141 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2142   aso_debug_pub.add('Validate_InvPtySiteBsc: p_party_id: '||p_party_id, 1, 'N');
2143   aso_debug_pub.add('Validate_InvPtySiteBsc: p_party_site_id: '||p_party_site_id, 1, 'N');
2144   aso_debug_pub.add('Validate_InvPtySiteBsc: p_party_site_use: '||p_party_site_use, 1, 'N');
2145 END IF;
2146     IF (p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM) THEN
2147        IF (p_party_site_id IS NULL OR p_party_site_id = FND_API.G_MISS_NUM) THEN
2148             x_return_status := FND_API.G_RET_STS_ERROR;
2149 		  IF p_party_site_use = 'BILL_TO' THEN
2150               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2151 	           FND_MESSAGE.Set_Name('ASO', 'ASO_BILL_ADDRESS_REQD');
2152                 FND_MSG_PUB.ADD;
2153 	         END IF;
2154             ELSIF p_party_site_use = 'END_USER' THEN
2155               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2156                 FND_MESSAGE.Set_Name('ASO', 'ASO_END_ADDRESS_REQD');
2157                 FND_MSG_PUB.ADD;
2158               END IF;
2159             ELSIF p_party_site_use = 'SHIP_TO' THEN
2160               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2161 	           FND_MESSAGE.Set_Name('ASO', 'ASO_SHIP_ADDRESS_REQD');
2162                 FND_MSG_PUB.ADD;
2163 	         END IF;
2164             END IF;
2165         END IF;
2166     ELSE
2167      IF (p_party_site_id IS NOT NULL AND p_party_site_id <> FND_API.G_MISS_NUM) THEN
2168         OPEN C_Inv_Party_Site(p_party_site_id);
2169 	    FETCH C_Inv_Party_Site INTO l_status;
2170         IF (C_Inv_Party_Site%NOTFOUND OR
2171 		    l_status <> 'A') THEN
2172 	   	    x_return_status := FND_API.G_RET_STS_ERROR;
2173             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2174 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2175                 FND_MESSAGE.Set_Token('COLUMN', 'party_site_id', FALSE);
2176 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_party_site_id),FALSE);
2177                 FND_MSG_PUB.ADD;
2178 	        END IF;
2179      	END IF;
2180      CLOSE C_Inv_Party_Site;
2181     END IF;
2182 END IF;
2183 
2184 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2185   aso_debug_pub.add('Validate_InvPtySiteBsc: x_return_status: '||x_return_status, 1, 'N');
2186 END IF;
2187 END Validate_Inv_PartySite_bsc;
2188 
2189 PROCEDURE Validate_Party_Crs(
2190 	p_init_msg_list	  IN VARCHAR2,
2191 	p_party_id		  IN NUMBER,
2192 	p_cust_party_id   IN NUMBER,
2193 	p_cust_account_id IN NUMBER,
2194 	x_return_status   OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
2195     x_msg_count       OUT NOCOPY /* file.sql.39 change */   NUMBER,
2196     x_msg_data        OUT NOCOPY /* file.sql.39 change */   VARCHAR2)
2197 IS
2198 
2199     CURSOR C_Account IS
2200 	SELECT a.status FROM HZ_CUST_ACCOUNTS a
2201 	WHERE a.party_id = p_cust_party_id AND cust_account_id = p_cust_account_id;
2202 
2203     CURSOR C_Account_Role IS
2204 	SELECT begin_date, end_date FROM HZ_CUST_ACCOUNT_ROLES
2205 	WHERE party_id = p_party_id AND cust_account_id = p_cust_account_id
2206     AND role_type ='ACCOUNT_USER';
2207 
2208     CURSOR C_party(l_pty_id NUMBER) IS
2209     SELECT party_type FROM HZ_PARTIES
2210     WHERE party_id= l_pty_id;
2211 
2212 	CURSOR C_relation IS
2213 	SELECT 'x' FROM
2214 	HZ_RELATIONSHIPS a, HZ_ORG_CONTACTS b
2215 	WHERE a.relationship_id = b.party_relationship_id
2216 	AND a.object_id = p_cust_party_id;
2217 
2218     CURSOR C_org_reltn IS
2219 	SELECT 'x' FROM
2220 	HZ_RELATIONSHIPS a, HZ_ORG_CONTACTS b,
2221 	HZ_CUST_ACCOUNTS c
2222 	WHERE  a.relationship_id= b.party_relationship_id
2223 	AND c.cust_Account_id = p_cust_account_id
2224 	AND a.object_id = c.party_id;
2225 
2226     CURSOR C_Person_Reltn (l_party NUMBER) IS
2227     SELECT 'X'
2228     FROM HZ_RELATIONSHIPS
2229     WHERE party_id = l_party
2230     AND subject_type = 'PERSON'
2231     AND object_type = 'PERSON';
2232 
2233     l_api_name          VARCHAR2(40) := 'Validate_Party_Crs' ;
2234     l_account_status	VARCHAR2(1);
2235     l_start_date	DATE;
2236     l_end_date		DATE;
2237     l_party_type        VARCHAR2(30);
2238     l_test VARCHAR2(1);
2239     l_dummy VARCHAR2(1);
2240 
2241 BEGIN
2242     --SAVEPOINT Validate_Party_CustAccount;
2243     -- Initialize message list if p_init_msg_list is set to TRUE.
2244     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2245         FND_MSG_PUB.initialize;
2246     END IF;
2247 
2248     --  Initialize API return status to success
2249     x_return_status := FND_API.G_RET_STS_SUCCESS;
2250 
2251 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2252   aso_debug_pub.add('Validate_PtyCrs: p_party_id: '||p_party_id, 1, 'N');
2253   aso_debug_pub.add('Validate_PtyCrs: p_cust_party_id: '||p_cust_party_id, 1, 'N');
2254   aso_debug_pub.add('Validate_PtyCrs: p_cust_account_id: '||p_cust_account_id, 1, 'N');
2255 END IF;
2256 
2257     IF (p_cust_account_id IS NOT NULL AND p_cust_account_id <> FND_API.G_MISS_NUM) THEN
2258       IF (p_cust_party_id IS NOT NULL AND p_cust_party_id <> FND_API.G_MISS_NUM) THEN
2259 	     OPEN C_Account;
2260 		 FETCH C_Account INTO l_account_status;
2261          IF (C_Account%NOTFOUND OR l_account_status <> 'A') THEN
2262 		   x_return_status := FND_API.G_RET_STS_ERROR;
2263            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2264            THEN
2265 	         FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_PARTY_CRS');
2266              FND_MSG_PUB.ADD;
2267 	       END IF;
2268 		  END IF;
2269           CLOSE C_Account;
2270        END IF;
2271 	END IF;
2272 
2273     IF p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM THEN
2274 	  OPEN C_party(p_party_id);
2275       FETCH C_party into l_party_type;
2276 
2277 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2278   aso_debug_pub.add('Validate_PtyCrs: l_party_type: '||l_party_type, 1, 'N');
2279 END IF;
2280       IF l_party_type <> 'PARTY_RELATIONSHIP' THEN
2281         IF (p_cust_party_id IS NOT NULL AND p_cust_party_id <> FND_API.G_MISS_NUM) THEN
2282 		  IF p_party_id <> p_cust_party_id THEN
2283 		     x_return_status := FND_API.G_RET_STS_ERROR;
2284              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2285 	           FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_PARTY_CRS');
2286                FND_MSG_PUB.ADD;
2287 	         END IF;
2288 		   END IF;
2289 		 END IF;
2290 	   ELSE  -- relationship
2291 
2292          OPEN C_Person_Reltn (p_party_id);
2293          FETCH C_Person_Reltn INTO l_dummy;
2294          IF l_dummy = 'X' THEN
2295 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2296   aso_debug_pub.add('Validate_PtyCrs: Person_Reltn: '||l_dummy, 1, 'N');
2297 END IF;
2298              x_return_status := FND_API.G_RET_STS_ERROR;
2299              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2300                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_RELATIONSHIP');
2301                  FND_MSG_PUB.ADD;
2302              END IF;
2303          END IF;
2304          CLOSE C_Person_Reltn;
2305 
2306 	     IF (p_cust_party_id IS NOT NULL AND p_cust_party_id <> FND_API.G_MISS_NUM) THEN
2307 	        OPEN C_relation;
2308 			FETCH C_relation into l_test;
2309 			IF (C_relation%NOTFOUND OR l_test IS NULL) THEN
2310 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2311   aso_debug_pub.add('Validate_PtyCrs: Cust_Party Relation not found: '||l_test, 1, 'N');
2312 END IF;
2313 			  x_return_status := FND_API.G_RET_STS_ERROR;
2314               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2315 	            FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_PARTY_CRS');
2316                 FND_MSG_PUB.ADD;
2317 	          END IF;
2318 			 END IF;
2319 		  END IF;
2320 
2321 		  IF (p_cust_account_id IS NOT NULL AND
2322               p_cust_account_id <>  FND_API.G_MISS_NUM) THEN
2323             OPEN C_org_reltn;
2324             FETCH C_org_reltn into l_test;
2325             IF (C_org_reltn%NOTFOUND OR l_test IS NULL ) THEN
2326 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2327   aso_debug_pub.add('Validate_PtyCrs: Org Relation not found: '||l_test, 1, 'N');
2328 END IF;
2329 		      x_return_status := FND_API.G_RET_STS_ERROR;
2330               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2331 	            FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_PARTY_CRS');
2332                 FND_MSG_PUB.ADD;
2333 	          END IF;
2334             END IF;
2335             CLOSE C_org_reltn;
2336            END IF;
2337 	     END IF;--l_party_type
2338          CLOSE C_party;
2339       END IF;
2340 
2341 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2342   aso_debug_pub.add('Validate_PtyCrs: x_return_status: '||x_return_status, 1, 'N');
2343 END IF;
2344  END Validate_Party_Crs;
2345 
2346 
2347  PROCEDURE Validate_Inv_Party_Crs(
2348 	p_init_msg_list		IN	VARCHAR2,
2349 	p_party_id		IN	NUMBER,
2350 	p_cust_party_id  IN NUMBER,
2351 	p_inv_party_id		IN	NUMBER,
2352 	p_cust_account_id	IN	NUMBER,
2353 	p_inv_cust_account_id	IN	NUMBER,
2354 	p_inv_cust_party_id IN NUMBER,
2355     p_site_use          IN VARCHAR2,
2356 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
2357         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
2358         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
2359 IS
2360     CURSOR C_val_inv_id(lc_party_id number) IS
2361 	SELECT 'x' FROM
2362 	HZ_RELATIONSHIPS a, hz_org_contacts b
2363 	WHERE
2364     a.party_id = p_inv_party_id
2365 	AND a.object_id = lc_party_id
2366 	AND b.party_relationship_id = a.relationship_id
2367 	AND exists (select 'y' from HZ_PARTIES d
2368 	where d.party_type ='PERSON' and
2369 	d.party_id= a.subject_id);
2370 
2371 
2372 	CURSOR C_Cust_party_id(l_cust_acct_id number) IS
2373 	select party_id from
2374 	hz_cust_accounts
2375 	where
2376 	cust_account_id = l_cust_acct_id;
2377 	CURSOR C_party_type IS
2378 	select party_type
2379 	from hz_parties
2380 	where party_id = p_party_id;
2381 
2382 	CURSOR C_relation_object IS
2383 	select object_id
2384 	from
2385 	hz_relationships
2386 	where party_id = p_party_id
2387 	and subject_type ='PERSON'
2388 	and subject_table_name = 'HZ_PARTIES'
2389 	and object_type = 'ORGANIZATION'
2390 	and object_table_name = 'HZ_PARTIES';
2391 
2392     CURSOR C_Person_Reltn (l_party NUMBER) IS
2393     SELECT 'X'
2394     FROM HZ_RELATIONSHIPS
2395     WHERE party_id = l_party
2396     AND subject_type = 'PERSON'
2397     AND object_type = 'PERSON';
2398 
2399     l_party_id          NUMBER;
2400     l_api_name          VARCHAR2(40) := 'Validate_Inv_Party_Crs' ;
2401     l_exist             VARCHAR2(1);
2402 	l_party_type        VARCHAR2(40);
2403     l_dummy             VARCHAR2(1);
2404 
2405 BEGIN
2406     --SAVEPOINT Validate_Party_CustAccount;
2407     -- Initialize message list if p_init_msg_list is set to TRUE.
2408     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2409         FND_MSG_PUB.initialize;
2410     END IF;
2411 
2412     --  Initialize API return status to success
2413     x_return_status := FND_API.G_RET_STS_SUCCESS;
2414   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2415     aso_debug_pub.add('in validate_inv_party_crs',1,'N');
2416     aso_debug_pub.add('Validate_InvPtyCrs: p_inv_party_id = '|| p_inv_party_id ,1,'N');
2417     aso_debug_pub.add('Validate_InvPtyCrs: p_inv_cust_party_id = '|| p_inv_cust_party_id ,1,'N');
2418     aso_debug_pub.add('Validate_InvPtyCrs: p_inv_cust_account_id = '|| p_inv_cust_account_id ,1,'N');
2419     aso_debug_pub.add('Validate_InvPtyCrs: p_cust_party_id = '|| p_cust_party_id ,1,'N');
2420     aso_debug_pub.add('Validate_InvPtyCrs: p_cust_account_id = '|| p_cust_account_id ,1,'N');
2421     aso_debug_pub.add('Validate_InvPtyCrs: p_party_id = '|| p_party_id ,1,'N');
2422   END IF;
2423   IF (p_inv_party_id IS NOT NULL AND p_inv_party_id <> FND_API.G_MISS_NUM) THEN
2424     IF (p_inv_cust_party_id IS NOT NULL AND
2425 	    p_inv_cust_party_id <> FND_API.G_MISS_NUM) THEN
2426 	   l_party_id := p_inv_cust_party_id;
2427 	ELSE
2428 	  IF (p_inv_cust_account_id IS NOT NULL AND
2429 	      p_inv_cust_account_id <> FND_API.G_MISS_NUM) THEN
2430 		 OPEN C_cust_party_id(p_inv_cust_account_id);
2431 		 FETCH C_cust_party_id INTO l_party_id;
2432 		 CLOSE C_cust_party_id;
2433 		 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2434 		   aso_debug_pub.add('Validate_InvPtyCrs: 1: l_party_id = '|| l_party_id ,1,'N');
2435 		 END IF;
2436 	  ELSE
2437 	    IF (p_cust_party_id IS NOT NULL AND
2438 		    p_cust_party_id <> FND_API.G_MISS_NUM) THEN
2439 		   l_party_id := p_cust_party_id;
2440 		ELSE
2441 		  IF (p_cust_account_id IS NOT NULL AND
2442 		      p_cust_account_id <> FND_API.G_MISS_NUM) THEN
2443 			 OPEN C_cust_party_id(p_cust_account_id);
2444 		     FETCH C_cust_party_id INTO l_party_id;
2445 		     CLOSE C_cust_party_id;
2446 			 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2447 			   aso_debug_pub.add('Validate_InvPtyCrs: 2: l_party_id = '|| l_party_id ,1,'N');
2448 			 END IF;
2449 		  ELSE
2450 		    IF (p_party_id IS NOT NULL AND
2451 			    p_party_id <> FND_API.G_MISS_NUM) THEN
2452 			   OPEN C_party_type;
2453 			   FETCH C_party_type into l_party_type;
2454 			   CLOSE C_party_type;
2455 			   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2456 			     aso_debug_pub.add('Validate_InvPtyCrs: p_party_id: party_type = ' ||l_party_type,1,'N');
2457 			   END IF;
2458 			   IF l_party_type = 'PARTY_RELATIONSHIP' THEN
2459                   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2460                      aso_debug_pub.add('Validate_InvPtyCrs: in reltn'||p_inv_party_id,1);
2461                   END IF;
2462                  OPEN C_Person_Reltn (p_inv_party_id);
2463                  FETCH C_Person_Reltn INTO l_dummy;
2464                  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2465                     aso_debug_pub.add('Validate_InvPtyCrs: in dummy'||l_dummy,1);
2466                  END IF;
2467                  IF l_dummy = 'X' THEN
2468                      x_return_status := FND_API.G_RET_STS_ERROR;
2469                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2470                          FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_RELATIONSHIP');
2471                          FND_MSG_PUB.ADD;
2472                      END IF;
2473                  END IF;
2474                  CLOSE C_Person_Reltn;
2475 
2476 			     OPEN C_relation_object;
2477 				 FETCH C_relation_object into l_party_id;
2478 				 CLOSE C_relation_object;
2479 				 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2480 				   aso_debug_pub.add('Validate_InvPtyCrs: 3: l_party_id = '|| l_party_id ,1,'N');
2481 				 END IF;
2482 			   ELSE
2483 			     l_party_id := p_party_id;
2484 			   END IF;
2485 			 END IF;
2486 		   END IF;
2487 		 END IF;
2488 	   END IF;
2489 	 END IF;
2490 
2491 	 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2492 	   aso_debug_pub.add('Validate_InvPtyCrs: 4: l_party_id = '|| l_party_id ,1,'N');
2493 	 END IF;
2494 	 IF l_party_id IS NOT NULL AND l_party_id <> FND_API.G_MISS_NUM THEN
2495 	   IF l_party_id <> p_inv_party_id THEN
2496 	     OPEN C_val_inv_id(l_party_id);
2497 	     FETCH C_val_inv_id INTO l_exist;
2498 		 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2499 		   aso_debug_pub.add('Validate_InvPtyCrs: l_exist = ' ||l_exist,1, 'N');
2500 		 END IF;
2501 	     IF C_val_inv_id%NOTFOUND or l_exist IS  NULL THEN
2502 	       x_return_status := FND_API.G_RET_STS_ERROR;
2503            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)THEN
2504              IF p_site_use = 'BILL_TO' THEN
2505 	           FND_MESSAGE.Set_Name('ASO','ASO_VALIDATE_INV_PARTY_PT_CRS');
2506              ELSIF p_site_use = 'END_USER' THEN
2507                FND_MESSAGE.Set_Name('ASO','ASO_VALIDATE_END_PARTY_PT_CRS');
2508              ELSIF p_site_use = 'SHIP_TO' THEN
2509                FND_MESSAGE.Set_Name('ASO','ASO_VALIDATE_SHP_PARTY_PT_CRS');
2510              END IF;
2511              FND_MSG_PUB.ADD;
2512 	       END IF;
2513 		 END IF;
2514 	     CLOSE C_val_inv_id;
2515 	   END IF ;
2516 	 END IF;
2517 
2518     END IF;
2519 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2520 	  aso_debug_pub.add('Validate_InvPtyCrs: x_return_status = ' || x_return_status,1,'N');
2521 	  aso_debug_pub.add('Validate_Inv_Party_Crs: End',1,'N');
2522 	END IF;
2523  END Validate_Inv_Party_Crs;
2524 
2525 
2526 
2527 
2528 PROCEDURE Validate_inv_PartySite_crs(
2529      p_init_msg_list          IN   VARCHAR2,
2530      p_party_id               IN   NUMBER,
2531      p_cust_party_id  IN NUMBER,
2532 	 p_inv_party_id		IN	NUMBER,
2533 	 p_cust_account_id	IN	NUMBER,
2534 	 p_inv_cust_account_id	IN	NUMBER,
2535 	 p_inv_cust_party_id IN NUMBER,
2536      p_party_site_id          IN   NUMBER,
2537      p_site_usage             IN   VARCHAR2,
2538      x_return_status          OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
2539      x_msg_count              OUT NOCOPY /* file.sql.39 change */    NUMBER,
2540      x_msg_data               OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
2541 IS
2542 
2543    CURSOR c_party_site( l_party_site_id NUMBER) IS
2544      SELECT b.party_id,a.party_type FROM HZ_PARTIES a,HZ_PARTY_SITES b
2545      WHERE a.party_id = b.party_id
2546      AND b.party_site_id = l_party_site_id;
2547 
2548    CURSOR C_Cust_party_id(l_cust_acct_id number) IS
2549 	select party_id from
2550 	hz_cust_accounts
2551 	where
2552 	cust_account_id = l_cust_acct_id;
2553 	CURSOR C_party_type IS
2554 	select party_type
2555 	from hz_parties
2556 	where party_id = p_party_id;
2557 
2558 	CURSOR C_relation_object(px_party_id number) IS
2559 	select object_id
2560 	from
2561 	hz_relationships
2562 	where party_id = px_party_id
2563 	and subject_type ='PERSON'
2564 	and subject_table_name = 'HZ_PARTIES'
2565 	and object_type = 'ORGANIZATION'
2566 	and object_table_name = 'HZ_PARTIES';
2567 
2568 
2569     l_party_type     VARCHAR2(30);
2570     l_party_id NUMBER;
2571 	lp_party_id NUMBER;
2572 	lp_party_type VARCHAR2(30);
2573     l_status        VARCHAR2(1);
2574 	l_party_site_object_id number;
2575 
2576 BEGIN
2577     -- Initialize message list if p_init_msg_list is set to TRUE.
2578   IF FND_API.to_Boolean( p_init_msg_list ) THEN
2579     FND_MSG_PUB.initialize;
2580   END IF;
2581     --  Initialize API return status to success
2582   x_return_status := FND_API.G_RET_STS_SUCCESS;
2583   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2584     aso_debug_pub.add('in validate_inv_party_site_crs',1,'N');
2585     aso_debug_pub.add('Validate_InvPtySiteCrs: validate inv party site- p_party_site_id '||p_party_site_id, 1, 'N');
2586     aso_debug_pub.add('Validate_InvPtySiteCrs: p_inv_party_id = '|| p_inv_party_id ,1,'N');
2587     aso_debug_pub.add('Validate_InvPtySiteCrs: p_inv_cust_party_id = '|| p_inv_cust_party_id ,1,'N');
2588     aso_debug_pub.add('Validate_InvPtySiteCrs: p_inv_cust_account_id = '|| p_inv_cust_account_id ,1,'N');
2589     aso_debug_pub.add('Validate_InvPtySiteCrs: p_cust_party_id = '|| p_cust_party_id ,1,'N');
2590     aso_debug_pub.add('Validate_InvPtySiteCrs: p_cust_account_id = '|| p_cust_account_id ,1,'N');
2591     aso_debug_pub.add('Validate_InvPtySiteCrs: p_party_id = '|| p_party_id ,1,'N');
2592   END IF;
2593 
2594   IF (p_party_site_id IS  NOT NULL AND  p_party_site_id <> FND_API.G_MISS_NUM) THEN
2595     IF (p_inv_cust_party_id IS NOT NULL AND
2596 	    p_inv_cust_party_id <> FND_API.G_MISS_NUM) THEN
2597 	   l_party_id := p_inv_cust_party_id;
2598 	ELSE
2599 	  IF (p_inv_cust_account_id IS NOT NULL AND
2600 	      p_inv_cust_account_id <> FND_API.G_MISS_NUM) THEN
2601 		 OPEN C_cust_party_id(p_inv_cust_account_id);
2602 		 FETCH C_cust_party_id INTO l_party_id;
2603 		 CLOSE C_cust_party_id;
2604 		 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2605 		   aso_debug_pub.add('Validate_InvPtySiteCrs: 1: l_party_id = '|| l_party_id ,1,'N');
2606 		 END IF;
2607 	  ELSE
2608 	    IF (p_cust_party_id IS NOT NULL AND
2609 		    p_cust_party_id <> FND_API.G_MISS_NUM) THEN
2610 		   l_party_id := p_cust_party_id;
2611 		ELSE
2612 		  IF (p_cust_account_id IS NOT NULL AND
2613 		      p_cust_account_id <> FND_API.G_MISS_NUM) THEN
2614 			 OPEN C_cust_party_id(p_cust_account_id);
2615 		     FETCH C_cust_party_id INTO l_party_id;
2616 		     CLOSE C_cust_party_id;
2617 			 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2618 			   aso_debug_pub.add('Validate_InvPtySiteCrs: 2: l_party_id = '|| l_party_id ,1,'N');
2619 			 END IF;
2620 		  ELSE
2621 		    IF (p_party_id IS NOT NULL AND
2622 			    p_party_id <> FND_API.G_MISS_NUM) THEN
2623 			   OPEN C_party_type;
2624 			   FETCH C_party_type into l_party_type;
2625 			   CLOSE C_party_type;
2626 			   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2627 			     aso_debug_pub.add('Validate_InvPtySiteCrs: p_party_id: party_type = ' ||l_party_type,1,'N');
2628 			   END IF;
2629 			   IF l_party_type = 'PARTY_RELATIONSHIP' THEN
2630 			     OPEN C_relation_object(p_party_id);
2631 				 FETCH C_relation_object into l_party_id;
2632 				 CLOSE C_relation_object;
2633 				 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2634 				   aso_debug_pub.add('Validate_InvPtySiteCrs: 3: l_party_id = '|| l_party_id ,1,'N');
2635 				 END IF;
2636 			   ELSE
2637 			     l_party_id := p_party_id;
2638 			   END IF;
2639 			END IF;
2640 		  END IF;
2641 		END IF;
2642 	  END IF;
2643 	END IF;
2644 
2645 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2646 	  aso_debug_pub.add('Validate_InvPtySiteCrs: 4: l_party_id = '|| l_party_id ,1,'N');
2647 	END IF;
2648     OPEN c_party_site(p_party_site_id);
2649     FETCH c_party_site into lp_party_id,lp_party_type;
2650 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2651 	  aso_debug_pub.add('Validate_InvPtySiteCrs: lp_party_id = ' ||lp_party_id, 1,'N');
2652 	  aso_debug_pub.add('Validate_InvPtySiteCrs: lp_party_type = ' || lp_party_type, 1 , 'N');
2653 	END IF;
2654     IF c_party_site%NOTFOUND THEN
2655       x_return_status := FND_API.G_RET_STS_ERROR;
2656     ELSIF lp_party_type = 'PARTY_RELATIONSHIP' THEN
2657       IF (p_inv_party_id IS NOT NULL AND p_inv_party_id <> FND_API.G_MISS_NUM) THEN
2658 		IF p_inv_party_id <> lp_party_id THEN
2659 		  x_return_status := FND_API.G_RET_STS_ERROR;
2660         END IF;
2661 	  ELSE
2662 		OPEN C_relation_object(lp_party_id);
2663 		FETCH C_relation_object into l_party_site_object_id;
2664 		CLOSE C_relation_object;
2665 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2666 		  aso_debug_pub.add('Validate_InvPtySiteCrs: l_party_site_object_id = ' || l_party_site_object_id,1,'N');
2667 		END IF;
2668 		IF l_party_site_object_id <> l_party_id THEN
2669 		  x_return_status := FND_API.G_RET_STS_ERROR;
2670 		END IF;
2671       END IF;
2672     ELSE
2673 	    IF lp_party_id <> l_party_id THEN
2674 		  x_return_status := FND_API.G_RET_STS_ERROR;
2675 		END IF;
2676 	END IF;
2677 	CLOSE C_party_site;
2678   END IF;
2679 
2680 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2681   aso_debug_pub.add('Validate_InvPtySiteCrs: x_return_status = ' || x_return_status,1,'N');
2682 END IF;
2683   IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2684     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)THEN
2685       IF p_site_usage = 'BILL_TO' THEN
2686         FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_INV_SITE_AC_CRS');
2687       ELSIF p_site_usage = 'END_USER' THEN
2688         FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_END_SITE_AC_CRS');
2689       ELSIF p_site_usage = 'SHIP_TO' THEN
2690         FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_SHP_SITE_AC_CRS');
2691       ELSIF p_site_usage = 'SOLD_TO' THEN
2692         FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_SLD_SITE_AC_CRS'); -- Sold_to
2693       END IF;
2694       FND_MSG_PUB.ADD;
2695     END IF;
2696   END IF;
2697   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2698     aso_debug_pub.add('Validate_inv_partysite_crs: end',1,'N');
2699   END IF;
2700 
2701 END Validate_inv_PartySite_crs;
2702 
2703 
2704 
2705 PROCEDURE Validate_org_contact_crs(
2706 	p_init_msg_list		IN	VARCHAR2,
2707 	p_contact_id		IN	NUMBER,
2708 	p_cust_account_id       IN      NUMBER,
2709         p_party_id              IN      NUMBER,
2710 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
2711         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
2712         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
2713 IS
2714     CURSOR C_Contact IS
2715 	SELECT object_id ,a.status FROM HZ_ORG_CONTACTS a,
2716         HZ_RELATIONSHIPS b
2717 	WHERE org_contact_id = p_contact_id
2718         and a.party_relationship_id = b.relationship_id;
2719    CURSOR C_Party(l_party_id NUMBER) IS
2720        SELECT status from HZ_PARTIES a
2721        WHERE a.party_id=l_party_id and a.party_id=p_party_id
2722 	AND Party_type in('ORGANIZATION','PARTY_RELATIONSHIP');
2723 
2724 
2725  CURSOR C_Cust_account(l_party_id NUMBER) IS
2726        SELECT status from HZ_CUST_ACCOUNTS
2727        WHERE party_id=l_party_id and
2728        cust_account_id =  p_cust_account_id;
2729     l_party_relationship_id NUMBER;
2730     l_object_id NUMBER;
2731     l_status VARCHAR2(1);
2732     l_acct_status VARCHAR2(1);
2733     l_party_status VARCHAR2(1);
2734 
2735 BEGIN
2736     -- Initialize message list if p_init_msg_list is set to TRUE.
2737     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2738         FND_MSG_PUB.initialize;
2739     END IF;
2740 
2741     --  Initialize API return status to success
2742     x_return_status := FND_API.G_RET_STS_SUCCESS;
2743 
2744 
2745 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2746   aso_debug_pub.add('Validate_OrgConCrs: p_contact_id = ' || p_contact_id,1,'N');
2747   aso_debug_pub.add('Validate_OrgConCrs: p_cust_account_id = ' || p_cust_account_id,1,'N');
2748   aso_debug_pub.add('Validate_OrgConCrs: p_party_id = ' || p_party_id,1,'N');
2749 END IF;
2750     IF (p_contact_id IS NOT NULL AND p_contact_id <> FND_API.G_MISS_NUM) THEN
2751         OPEN C_Contact;
2752 	    FETCH C_Contact INTO l_object_id,l_status ;
2753         IF (C_Contact%NOTFOUND OR l_status <> 'A') THEN
2754 	             x_return_status := FND_API.G_RET_STS_ERROR;
2755             	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2756 	       	       FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2757                	   FND_MESSAGE.Set_Token('COLUMN', 'Org_contact_id', FALSE);
2758 				   FND_MESSAGE.Set_Token('VALUE',to_char(p_contact_id),FALSE);
2759                	   FND_MSG_PUB.ADD;
2760 	              END IF;
2761 	   END IF;
2762        CLOSE C_Contact;
2763     END IF;
2764    IF (p_cust_account_id IS NOT NULL AND p_cust_account_id <> FND_API.G_MISS_NUM)
2765         AND (p_contact_id IS NOT NULL AND p_contact_id <> FND_API.G_MISS_NUM) THEN
2766     	OPEN C_Contact ;
2767     	FETCH C_Contact INTO l_object_id,l_status ;
2768     	IF C_Contact%FOUND and l_object_id is NOT NULL THEN
2769        		OPEN C_Cust_account(l_object_id);
2770        		FETCH C_Cust_account INTO l_acct_status ;
2771       		IF C_Cust_account%NOTFOUND or l_acct_status <>'A' THEN
2772                        x_return_status := FND_API.G_RET_STS_ERROR;
2773             		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2774 	       	 		FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_ORG_CON_ACT_CRS');
2775                    -- FND_MESSAGE.Set_Name('ASO', 'INVALID_OBJECT_PARTY_ID');
2776 
2777 		               	FND_MSG_PUB.ADD;
2778 	        	      END IF;
2779       		END IF;
2780        		CLOSE C_Cust_account;
2781    	    END IF;
2782     	CLOSE C_Contact;
2783 
2784 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2785   aso_debug_pub.add('Validate_OrgConCrs: x_return_status = ' || x_return_status,1,'N');
2786 END IF;
2787   ELSE
2788   	IF (p_party_id IS NOT NULL AND p_party_id <> FND_API.G_MISS_NUM)
2789     AND (p_contact_id IS NOT NULL AND p_contact_id <> FND_API.G_MISS_NUM)  THEN
2790       	    OPEN C_Contact;
2791 	        FETCH C_Contact INTO l_object_id,l_status ;
2792         	IF (C_Contact%NOTFOUND OR l_status <> 'A') THEN
2793 
2794 	       	 x_return_status := FND_API.G_RET_STS_ERROR;
2795             		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2796 
2797                       	FND_MESSAGE.Set_Name('ASO', 'ASO_VALIDATE_ORG_CON_PTY_CRS');
2798 
2799                		 FND_MSG_PUB.ADD;
2800 	        	      END IF;
2801             CLOSE C_Contact;
2802 		    ELSE
2803 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2804   aso_debug_pub.add('Validate_InvPtySiteCrs: l_object_id = ' || l_object_id,1,'N');
2805 END IF;
2806 			        OPEN c_party(l_object_id);
2807                 	FETCH c_party into l_party_status;
2808                 	IF c_party%NOTFOUND or l_party_status <> 'A' THEN
2809                   		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2810 THEN
2811 	       	 		    FND_MESSAGE.Set_Name('ASO',
2812 'ASO_VALIDATE_ORG_CON_PTY_CRS');
2813                	 		--FND_MESSAGE.Set_Token('COLUMN', 'Org_contact_id', FALSE);
2814                	 		FND_MSG_PUB.ADD;
2815 	        		     END IF;
2816                 	END IF;
2817 			        CLOSE c_party;
2818                      CLOSE  C_Contact;
2819  		     END IF;
2820 
2821 	END IF;
2822  END IF;
2823 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2824   aso_debug_pub.add('Validate_OrgConCrs: x_return_status = ' || x_return_status,1,'N');
2825 END IF;
2826 END Validate_Org_Contact_crs;
2827 
2828 PROCEDURE Validate_item_tca_bsc(
2829 	p_init_msg_list		IN	VARCHAR2,
2830 	p_qte_header_rec        IN	ASO_QUOTE_PUB.Qte_Header_Rec_Type :=
2831 ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
2832 	p_shipment_rec        	IN	ASO_QUOTE_PUB.shipment_rec_type  :=
2833 ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC,
2834      p_operation_code         IN   VARCHAR2 := FND_API.G_MISS_CHAR,
2835      p_application_type_code  IN   VARCHAR2 := FND_API.G_MISS_CHAR,
2836 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
2837         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
2838         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
2839 IS
2840     	l_api_name                CONSTANT VARCHAR2(30) := 'Validate_item_tca_bsc';
2841      l_party_id          NUMBER;
2842 
2843 	l_qte_header_rec        ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
2844 	lp_qte_header_rec       ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
2845      l_shipment_rec          ASO_QUOTE_PUB.shipment_rec_type  := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
2846      lp_shipment_rec         ASO_QUOTE_PUB.shipment_rec_type  := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
2847 
2848     CURSOR C_Get_Party_From_Org(l_org_contact_id NUMBER) IS
2849       SELECT par.party_id
2850       FROM hz_relationships par,
2851            hz_org_contacts org
2852       WHERE org.party_relationship_id = par.relationship_id
2853       AND org.org_contact_id  = l_org_contact_id
2854 --      AND org.status = 'A'  status column obseleted
2855       and par.status = 'A'
2856       and (sysdate between nvl(par.start_date, sysdate) and nvl(par.end_date, sysdate));
2857 
2858 BEGIN
2859    SAVEPOINT VALIDATE_ITEM_TCA_BSC_PVT;
2860     -- Initialize message list if p_init_msg_list is set to TRUE.
2861     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2862         FND_MSG_PUB.initialize;
2863     END IF;
2864 
2865     --  Initialize API return status to success
2866     x_return_status := FND_API.G_RET_STS_SUCCESS;
2867 
2868 /** Changes for OA uptake **/
2869     lp_qte_header_rec := p_qte_header_rec;
2870     lp_shipment_rec := p_shipment_rec;
2871 
2872      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2873         aso_debug_pub.add('Validate_ItemTcaBsc: lp_qte_header_rec.quote_header_id: ' || lp_qte_header_rec.quote_header_id,1,'N');
2874         aso_debug_pub.add('Validate_ItemTcaBsc: lp_shipment_rec.shipment_id: ' || lp_shipment_rec.shipment_id,1,'N');
2875      END IF;
2876 
2877     IF (p_application_type_code = 'QUOTING HTML' AND p_operation_code = 'UPDATE') THEN
2878       l_qte_header_rec := ASO_UTILITY_PVT.query_header_row (lp_qte_header_rec.quote_header_id);
2879 
2880       IF lp_qte_header_rec.party_id = FND_API.G_MISS_NUM THEN
2881         lp_qte_header_rec.party_id := l_qte_header_rec.party_id;
2882       END IF;
2883       IF lp_qte_header_rec.cust_party_id = FND_API.G_MISS_NUM THEN
2884         lp_qte_header_rec.cust_party_id := l_qte_header_rec.cust_party_id;
2885       END IF;
2886       IF lp_qte_header_rec.invoice_to_cust_party_id = FND_API.G_MISS_NUM THEN
2887         lp_qte_header_rec.invoice_to_cust_party_id := l_qte_header_rec.invoice_to_cust_party_id;
2888       END IF;
2889       IF lp_qte_header_rec.End_Customer_cust_party_id = FND_API.G_MISS_NUM THEN
2890         lp_qte_header_rec.End_Customer_cust_party_id := l_qte_header_rec.End_Customer_cust_party_id;
2891       END IF;
2892       IF lp_qte_header_rec.cust_account_id = FND_API.G_MISS_NUM THEN
2893         lp_qte_header_rec.cust_account_id := l_qte_header_rec.cust_account_id;
2894       END IF;
2895       IF lp_qte_header_rec.invoice_to_cust_account_id = FND_API.G_MISS_NUM THEN
2896         lp_qte_header_rec.invoice_to_cust_account_id := l_qte_header_rec.invoice_to_cust_account_id;
2897       END IF;
2898       IF lp_qte_header_rec.End_Customer_cust_account_id = FND_API.G_MISS_NUM THEN
2899         lp_qte_header_rec.End_Customer_cust_account_id := l_qte_header_rec.End_Customer_cust_account_id;
2900       END IF;
2901       IF lp_qte_header_rec.org_contact_id = FND_API.G_MISS_NUM THEN
2902         lp_qte_header_rec.org_contact_id := l_qte_header_rec.org_contact_id;
2903       END IF;
2904       IF lp_qte_header_rec.invoice_to_party_id = FND_API.G_MISS_NUM THEN
2905         lp_qte_header_rec.invoice_to_party_id := l_qte_header_rec.invoice_to_party_id;
2906       END IF;
2907       IF lp_qte_header_rec.End_Customer_party_id = FND_API.G_MISS_NUM THEN
2908         lp_qte_header_rec.End_Customer_party_id := l_qte_header_rec.End_Customer_party_id;
2909       END IF;
2910       IF lp_qte_header_rec.invoice_to_party_site_id = FND_API.G_MISS_NUM THEN
2911         lp_qte_header_rec.invoice_to_party_site_id := l_qte_header_rec.invoice_to_party_site_id;
2912       END IF;
2913       IF lp_qte_header_rec.End_Customer_party_site_id = FND_API.G_MISS_NUM THEN
2914         lp_qte_header_rec.End_Customer_party_site_id := l_qte_header_rec.End_Customer_party_site_id;
2915       END IF;
2916       IF lp_qte_header_rec.sold_to_party_site_id = FND_API.G_MISS_NUM THEN
2917         lp_qte_header_rec.sold_to_party_site_id := l_qte_header_rec.sold_to_party_site_id;
2918       END IF;
2919 
2920       IF lp_shipment_rec.operation_code = 'UPDATE' THEN
2921        IF lp_shipment_rec.shipment_id IS NOT NULL AND lp_shipment_rec.shipment_id <> FND_API.G_MISS_NUM THEN
2922         l_shipment_rec := ASO_UTILITY_PVT.query_shipment_row (lp_shipment_rec.shipment_id);
2923         IF lp_shipment_rec.ship_to_cust_party_id = FND_API.G_MISS_NUM THEN
2924           lp_shipment_rec.ship_to_cust_party_id := l_shipment_rec.ship_to_cust_party_id;
2925         END IF;
2926         IF lp_shipment_rec.ship_to_cust_account_id = FND_API.G_MISS_NUM THEN
2927           lp_shipment_rec.ship_to_cust_account_id := l_shipment_rec.ship_to_cust_account_id;
2928         END IF;
2929         IF lp_shipment_rec.ship_to_party_id = FND_API.G_MISS_NUM THEN
2930           lp_shipment_rec.ship_to_party_id := l_shipment_rec.ship_to_party_id;
2931         END IF;
2932         IF lp_shipment_rec.ship_to_party_site_id = FND_API.G_MISS_NUM THEN
2933           lp_shipment_rec.ship_to_party_site_id := l_shipment_rec.ship_to_party_site_id;
2934         END IF;
2935   	  END IF;
2936      END IF;
2937 
2938     END IF; -- UPDATE
2939 
2940     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2941        aso_debug_pub.add('Validate_ItemTcaBsc: Begin ',1,'N');
2942     END IF;
2943 	ASO_VALIDATE_PVT.Validate_Party_bsc(
2944 	p_init_msg_list		=> p_init_msg_list,
2945 	p_party_id		=> lp_qte_header_rec.party_id,
2946 	x_return_status		=> x_return_status,
2947         x_msg_count		=> x_msg_count,
2948         x_msg_data		=> x_msg_data);
2949 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2950 	      RAISE FND_API.G_EXC_ERROR;
2951 	END IF;
2952      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2953         aso_debug_pub.add('Validate_ItemTcaBsc: party_id: x_return_status: ' || x_return_status,1,'N');
2954      END IF;
2955 
2956 	ASO_VALIDATE_PVT.Validate_Party_bsc(
2957 	p_init_msg_list		=> p_init_msg_list,
2958 	p_party_id		=> lp_qte_header_rec.cust_party_id,
2959 	x_return_status		=> x_return_status,
2960         x_msg_count		=> x_msg_count,
2961         x_msg_data		=> x_msg_data);
2962 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2963 	      RAISE FND_API.G_EXC_ERROR;
2964 	END IF;
2965      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2966         aso_debug_pub.add('Validate_ItemTcaBsc: cust_party_id: x_return_status: ' || x_return_status,1,'N');
2967      END IF;
2968 
2969 	ASO_VALIDATE_PVT.Validate_Party_bsc(
2970 	p_init_msg_list		=> p_init_msg_list,
2971 	p_party_id		=> lp_qte_header_rec.invoice_to_cust_party_id,
2972 	x_return_status		=> x_return_status,
2973         x_msg_count		=> x_msg_count,
2974         x_msg_data		=> x_msg_data);
2975 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2976 	      RAISE FND_API.G_EXC_ERROR;
2977 	END IF;
2978      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2979         aso_debug_pub.add('Validate_ItemTcaBsc: inv_cust_party_id: x_return_status: ' || x_return_status,1,'N');
2980      END IF;
2981 
2982 	ASO_VALIDATE_PVT.Validate_Party_bsc(
2983 	p_init_msg_list		=> p_init_msg_list,
2984 	p_party_id		=> lp_qte_header_rec.End_Customer_cust_party_id,
2985 	x_return_status		=> x_return_status,
2986         x_msg_count		=> x_msg_count,
2987         x_msg_data		=> x_msg_data);
2988 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2989 	      RAISE FND_API.G_EXC_ERROR;
2990 	END IF;
2991      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2992         aso_debug_pub.add('Validate_ItemTcaBsc: end_cust_party_id: x_return_status: ' || x_return_status,1,'N');
2993      END IF;
2994 
2995 	ASO_VALIDATE_PVT.Validate_Party_bsc(
2996 	p_init_msg_list		=> p_init_msg_list,
2997 	p_party_id		=> lp_shipment_rec.ship_to_cust_party_id,
2998 	x_return_status		=> x_return_status,
2999         x_msg_count		=> x_msg_count,
3000         x_msg_data		=> x_msg_data);
3001 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3002 	      RAISE FND_API.G_EXC_ERROR;
3003 	END IF;
3004      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3005         aso_debug_pub.add('Validate_ItemTcaBsc: shp_cust_party_id: x_return_status: ' || x_return_status,1,'N');
3006      END IF;
3007 
3008 
3009 	ASO_VALIDATE_PVT.Validate_CustAccount_bsc(
3010 	p_init_msg_list		=> p_init_msg_list,
3011 	p_party_id		=> lp_qte_header_rec.party_id,
3012 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3013     	p_inv_cust_account_id	=> lp_qte_header_rec.invoice_to_cust_account_id,
3014     	p_end_cust_account_id	=> lp_qte_header_rec.End_Customer_cust_account_id,
3015     	p_shp_cust_account_id	=> lp_shipment_rec.ship_to_cust_account_id,
3016 	x_return_status		=> x_return_status,
3017     	x_msg_count		=> x_msg_count,
3018     	x_msg_data		=> x_msg_data);
3019 	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3020 	      RAISE FND_API.G_EXC_ERROR;
3021 	  END IF;
3022      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3023         aso_debug_pub.add('Validate_ItemTcaBsc: custAcctBsc: x_return_status: ' || x_return_status,1,'N');
3024      END IF;
3025 
3026 	ASO_VALIDATE_PVT.Validate_org_contact_bsc(
3027 	p_init_msg_list		=> p_init_msg_list,
3028 	p_contact_id		=> lp_qte_header_rec.org_contact_id,
3029 	p_cust_account_id       => lp_qte_header_rec.cust_account_id,
3030 	x_return_status		=> x_return_status,
3031         x_msg_count		=> x_msg_count,
3032         x_msg_data		=> x_msg_data);
3033 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3034 	      RAISE FND_API.G_EXC_ERROR;
3035 	END IF;
3036      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3037         aso_debug_pub.add('Validate_ItemTcaBsc: OrgConBsc: x_return_status: ' || x_return_status,1,'N');
3038      END IF;
3039 
3040 
3041     ASO_VALIDATE_PVT.Validate_Inv_Party_bsc(
3042 	p_init_msg_list		=> p_init_msg_list,
3043 	p_party_id			=> lp_qte_header_rec.invoice_to_party_id,
3044     p_site_use          => 'BILL_TO',
3045    	x_return_status		=> x_return_status,
3046         x_msg_count		=> x_msg_count,
3047         x_msg_data		=> x_msg_data);
3048 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3049 	      RAISE FND_API.G_EXC_ERROR;
3050 	END IF;
3051      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3052        aso_debug_pub.add('Validate_ItemTcaBsc: InvPty: BillTo: x_return_status: ' || x_return_status,1,'N');
3053      END IF;
3054 
3055     ASO_VALIDATE_PVT.Validate_Inv_Party_bsc(
3056 	p_init_msg_list		=> p_init_msg_list,
3057 	p_party_id			=> lp_qte_header_rec.End_Customer_party_id,
3058      p_site_use          => 'END_USER',
3059    	x_return_status		=> x_return_status,
3060         x_msg_count		=> x_msg_count,
3061         x_msg_data		=> x_msg_data);
3062 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3063 	      RAISE FND_API.G_EXC_ERROR;
3064 	END IF;
3065      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3066        aso_debug_pub.add('Validate_ItemTcaBsc: InvPty: EndUser: x_return_status: ' || x_return_status,1,'N');
3067      END IF;
3068 
3069 	       ASO_VALIDATE_PVT.Validate_Inv_Party_bsc(
3070 	p_init_msg_list		=> p_init_msg_list,
3071 	p_party_id		=> lp_shipment_rec.ship_to_party_id,
3072       p_site_use          => 'SHIP_TO',
3073 	x_return_status		=> x_return_status,
3074         x_msg_count		=> x_msg_count,
3075         x_msg_data		=> x_msg_data);
3076 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3077 	      RAISE FND_API.G_EXC_ERROR;
3078 	END IF;
3079      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3080         aso_debug_pub.add('Validate_ItemTcaBsc: InvPty: ShipTo: x_return_status: ' || x_return_status,1,'N');
3081         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_qte_header_rec.invoice_to_cust_party_id: '||p_qte_header_rec.invoice_to_cust_party_id, 1, 'Y');
3082         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_qte_header_rec.invoice_to_party_site_id: '||p_qte_header_rec.invoice_to_party_site_id, 1, 'Y');
3083      END IF;
3084 
3085 	ASO_VALIDATE_PVT.Validate_Inv_PartySite_bsc(
3086 	p_init_msg_list		=> p_init_msg_list,
3087 	p_party_id		=> lp_qte_header_rec.invoice_to_cust_party_id,
3088 	p_party_site_id	=> lp_qte_header_rec.invoice_to_party_site_id,
3089 	p_party_site_use   => 'BILL_TO',
3090     x_return_status		=> x_return_status,
3091         x_msg_count		=> x_msg_count,
3092         x_msg_data		=> x_msg_data);
3093 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3094 	      RAISE FND_API.G_EXC_ERROR;
3095 	END IF;
3096      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3097         aso_debug_pub.add('Validate_ItemTcaBsc: InvPtySite: ShipTo: x_return_status: ' || x_return_status,1,'N');
3098         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_qte_header_rec.End_Customer_cust_party_id: '||p_qte_header_rec.End_Customer_cust_party_id, 1, 'Y');
3099         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_qte_header_rec.End_Customer_party_site_id: '||p_qte_header_rec.End_Customer_party_site_id, 1, 'Y');
3100      END IF;
3101 
3102 	ASO_VALIDATE_PVT.Validate_Inv_PartySite_bsc(
3103 	p_init_msg_list		=> p_init_msg_list,
3104 	p_party_id		=> lp_qte_header_rec.End_Customer_cust_party_id,
3105 	p_party_site_id	=> lp_qte_header_rec.End_Customer_party_site_id,
3106 	p_party_site_use   => 'END_USER',
3107     x_return_status		=> x_return_status,
3108         x_msg_count		=> x_msg_count,
3109         x_msg_data		=> x_msg_data);
3110 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3111 	      RAISE FND_API.G_EXC_ERROR;
3112 	END IF;
3113      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3114         aso_debug_pub.add('Validate_ItemTcaBsc: InvPtySite: ShipTo: x_return_status: ' || x_return_status,1,'N');
3115         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_shipment_rec.ship_to_cust_party_id: '||p_shipment_rec.ship_to_cust_party_id, 1, 'Y');
3116         aso_debug_pub.add('before Validate_Inv_PartySite_bsc:lp_shipment_rec.ship_to_party_site_id: '||p_shipment_rec.ship_to_party_site_id, 1, 'Y');
3117      END IF;
3118 
3119     	ASO_VALIDATE_PVT.Validate_Inv_PartySite_bsc(
3120 	p_init_msg_list		=> p_init_msg_list,
3121 	p_party_id		=> lp_shipment_rec.ship_to_cust_party_id,
3122 	p_party_site_id	=> lp_shipment_rec.ship_to_party_site_id,
3123 	p_party_site_use   => 'SHIP_TO',
3124     x_return_status		=> x_return_status,
3125         x_msg_count		=> x_msg_count,
3126         x_msg_data		=> x_msg_data);
3127 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3128 	      RAISE FND_API.G_EXC_ERROR;
3129 	END IF;
3130      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3131         aso_debug_pub.add('Validate_ItemTcaBsc: InvPtySite: ShipTo: x_return_status: ' || x_return_status,1,'N');
3132      END IF;
3133 
3134 -- Sold_to
3135   IF lp_qte_header_rec.sold_to_party_site_id IS NOT NULL
3136    AND lp_qte_header_rec.sold_to_party_site_id <> FND_API.G_MISS_NUM THEN
3137     IF lp_qte_header_rec.org_contact_id IS NOT NULL
3138 	  AND lp_qte_header_rec.org_contact_id <> FND_API.G_MISS_NUM THEN
3139         OPEN C_Get_Party_From_Org(lp_qte_header_rec.org_contact_id);
3140         FETCH C_Get_Party_From_Org INTO l_party_id;
3141         CLOSE C_Get_Party_From_Org;
3142     ELSE
3143         l_party_id := lp_qte_header_rec.party_id;
3144     END IF;
3145 
3146     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3147        aso_debug_pub.add('before Validate_Inv_PartySite_bsc:l_party_id: '||l_party_id, 1, 'Y');
3148     END IF;
3149     	ASO_VALIDATE_PVT.Validate_Inv_PartySite_bsc(
3150 	p_init_msg_list		=> p_init_msg_list,
3151 	p_party_id		=> l_party_id,
3152 	p_party_site_id	=> lp_qte_header_rec.sold_to_party_site_id,
3153 	p_party_site_use   => 'SOLD_TO',
3154     x_return_status		=> x_return_status,
3155         x_msg_count		=> x_msg_count,
3156         x_msg_data		=> x_msg_data);
3157 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3158 	      RAISE FND_API.G_EXC_ERROR;
3159 	END IF;
3160   END IF;
3161   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3162      aso_debug_pub.add('Validate_ItemTcaBsc: InvPtySite: SoldTo: x_return_status: ' || x_return_status,1,'N');
3163   END IF;
3164 -- Sold_to
3165 
3166    FND_MSG_PUB.Count_And_Get
3167       (  p_count          =>   x_msg_count,
3168          p_data           =>   x_msg_data
3169       );
3170 
3171   EXCEPTION
3172 	  WHEN FND_API.G_EXC_ERROR THEN
3173 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3174 		   P_API_NAME => L_API_NAME
3175 		  ,P_PKG_NAME => G_PKG_NAME
3176 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
3177 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3178 		  ,P_SQLCODE => SQLCODE
3179 		  ,P_SQLERRM => SQLERRM
3180 		  ,X_MSG_COUNT => X_MSG_COUNT
3181 		  ,X_MSG_DATA => X_MSG_DATA
3182 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3183 
3184 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3185 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3186 		   P_API_NAME => L_API_NAME
3187 		  ,P_PKG_NAME => G_PKG_NAME
3188 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3189 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3190 		  ,P_SQLCODE => SQLCODE
3191 		  ,P_SQLERRM => SQLERRM
3192 		  ,X_MSG_COUNT => X_MSG_COUNT
3193 		  ,X_MSG_DATA => X_MSG_DATA
3194 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3195 
3196 	  WHEN OTHERS THEN
3197 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3198 		   P_API_NAME => L_API_NAME
3199 		  ,P_PKG_NAME => G_PKG_NAME
3200 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
3201 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3202 		  ,P_SQLCODE => SQLCODE
3203 		  ,P_SQLERRM => SQLERRM
3204 		  ,X_MSG_COUNT => X_MSG_COUNT
3205 		  ,X_MSG_DATA => X_MSG_DATA
3206 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3207 
3208 END Validate_item_tca_bsc;
3209 
3210 
3211 PROCEDURE Validate_record_tca_crs(
3212 	p_init_msg_list		IN	VARCHAR2,
3213 	p_qte_header_rec        IN	ASO_QUOTE_PUB.Qte_Header_Rec_Type :=
3214 ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
3215 	p_shipment_rec        	IN	ASO_QUOTE_PUB.shipment_rec_type 		:=
3216 ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC,
3217      p_operation_code         IN   VARCHAR2 := FND_API.G_MISS_CHAR,
3218      p_application_type_code  IN   VARCHAR2 := FND_API.G_MISS_CHAR,
3219 	x_return_status	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
3220         x_msg_count	 OUT NOCOPY /* file.sql.39 change */  	NUMBER,
3221         x_msg_data	 OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
3222 IS
3223 
3224     l_api_name          VARCHAR2(40) := 'Validate_record_tca_crs' ;
3225     l_party_id          NUMBER;
3226 
3227 	l_qte_header_rec        ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
3228 	lp_qte_header_rec       ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
3229      l_shipment_rec          ASO_QUOTE_PUB.shipment_rec_type  := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
3230      lp_shipment_rec         ASO_QUOTE_PUB.shipment_rec_type  := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
3231 
3232     CURSOR C_Get_Party_From_Org(l_org_contact_id NUMBER) IS
3233       SELECT par.party_id
3234       FROM hz_relationships par,
3235            hz_org_contacts org
3236       WHERE org.party_relationship_id = par.relationship_id
3237       AND org.org_contact_id  = l_org_contact_id
3238 --      AND org.status = 'A' -- status column obseleted
3239       and par.status = 'A'
3240       and (sysdate between nvl(par.start_date, sysdate) and nvl(par.end_date, sysdate));
3241 
3242 BEGIN
3243      SAVEPOINT VALIDATE_RECORD_TCA_CRS_PVT;
3244 
3245     -- Initialize message list if p_init_msg_list is set to TRUE.
3246     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3247         FND_MSG_PUB.initialize;
3248     END IF;
3249 
3250 /** Changes for OA uptake **/
3251     lp_qte_header_rec := p_qte_header_rec;
3252     lp_shipment_rec := p_shipment_rec;
3253 
3254      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3255         aso_debug_pub.add('Validate_ItemTcaCrs: lp_qte_header_rec.quote_header_id: ' || lp_qte_header_rec.quote_header_id,1,'N');
3256         aso_debug_pub.add('Validate_ItemTcaCrs: lp_shipment_rec.shipment_id: ' || lp_shipment_rec.shipment_id,1,'N');
3257      END IF;
3258 
3259     IF (p_application_type_code = 'QUOTING HTML' AND p_operation_code = 'UPDATE') THEN
3260       l_qte_header_rec := ASO_UTILITY_PVT.query_header_row (lp_qte_header_rec.quote_header_id);
3261 
3262       IF lp_qte_header_rec.party_id = FND_API.G_MISS_NUM THEN
3263         lp_qte_header_rec.party_id := l_qte_header_rec.party_id;
3264       END IF;
3265       IF lp_qte_header_rec.cust_party_id = FND_API.G_MISS_NUM THEN
3266         lp_qte_header_rec.cust_party_id := l_qte_header_rec.cust_party_id;
3267       END IF;
3268       IF lp_qte_header_rec.invoice_to_cust_party_id = FND_API.G_MISS_NUM THEN
3269         lp_qte_header_rec.invoice_to_cust_party_id := l_qte_header_rec.invoice_to_cust_party_id;
3270       END IF;
3271       IF lp_qte_header_rec.End_Customer_cust_party_id = FND_API.G_MISS_NUM THEN
3272         lp_qte_header_rec.End_Customer_cust_party_id := l_qte_header_rec.End_Customer_cust_party_id;
3273       END IF;
3274       IF lp_qte_header_rec.cust_account_id = FND_API.G_MISS_NUM THEN
3275         lp_qte_header_rec.cust_account_id := l_qte_header_rec.cust_account_id;
3276       END IF;
3277       IF lp_qte_header_rec.invoice_to_cust_account_id = FND_API.G_MISS_NUM THEN
3278         lp_qte_header_rec.invoice_to_cust_account_id := l_qte_header_rec.invoice_to_cust_account_id;
3279       END IF;
3280       IF lp_qte_header_rec.End_Customer_cust_account_id = FND_API.G_MISS_NUM THEN
3281         lp_qte_header_rec.End_Customer_cust_account_id := l_qte_header_rec.End_Customer_cust_account_id;
3282       END IF;
3283       IF lp_qte_header_rec.org_contact_id = FND_API.G_MISS_NUM THEN
3284         lp_qte_header_rec.org_contact_id := l_qte_header_rec.org_contact_id;
3285       END IF;
3286       IF lp_qte_header_rec.invoice_to_party_id = FND_API.G_MISS_NUM THEN
3287         lp_qte_header_rec.invoice_to_party_id := l_qte_header_rec.invoice_to_party_id;
3288       END IF;
3289       IF lp_qte_header_rec.End_Customer_party_id = FND_API.G_MISS_NUM THEN
3290         lp_qte_header_rec.End_Customer_party_id := l_qte_header_rec.End_Customer_party_id;
3291       END IF;
3292       IF lp_qte_header_rec.invoice_to_party_site_id = FND_API.G_MISS_NUM THEN
3293         lp_qte_header_rec.invoice_to_party_site_id := l_qte_header_rec.invoice_to_party_site_id;
3294       END IF;
3295       IF lp_qte_header_rec.End_Customer_party_site_id = FND_API.G_MISS_NUM THEN
3296         lp_qte_header_rec.End_Customer_party_site_id := l_qte_header_rec.End_Customer_party_site_id;
3297       END IF;
3298       IF lp_qte_header_rec.sold_to_party_site_id = FND_API.G_MISS_NUM THEN
3299         lp_qte_header_rec.sold_to_party_site_id := l_qte_header_rec.sold_to_party_site_id;
3300       END IF;
3301 
3302       IF lp_shipment_rec.operation_code = 'UPDATE' THEN
3303        IF lp_shipment_rec.shipment_id IS NOT NULL AND lp_shipment_rec.shipment_id <> FND_API.G_MISS_NUM THEN
3304         l_shipment_rec := ASO_UTILITY_PVT.query_shipment_row (lp_shipment_rec.shipment_id);
3305         IF lp_shipment_rec.ship_to_cust_party_id = FND_API.G_MISS_NUM THEN
3306           lp_shipment_rec.ship_to_cust_party_id := l_shipment_rec.ship_to_cust_party_id;
3307         END IF;
3308         IF lp_shipment_rec.ship_to_cust_account_id = FND_API.G_MISS_NUM THEN
3309           lp_shipment_rec.ship_to_cust_account_id := l_shipment_rec.ship_to_cust_account_id;
3310         END IF;
3311         IF lp_shipment_rec.ship_to_party_id = FND_API.G_MISS_NUM THEN
3312           lp_shipment_rec.ship_to_party_id := l_shipment_rec.ship_to_party_id;
3313         END IF;
3314         IF lp_shipment_rec.ship_to_party_site_id = FND_API.G_MISS_NUM THEN
3315           lp_shipment_rec.ship_to_party_site_id := l_shipment_rec.ship_to_party_site_id;
3316         END IF;
3317 	  END IF;
3318       END IF;
3319 
3320     END IF; -- UPDATE
3321 
3322     --  Initialize API return status to success
3323     x_return_status := FND_API.G_RET_STS_SUCCESS;
3324 	ASO_VALIDATE_PVT.Validate_Party_Crs(
3325 	p_init_msg_list		=> p_init_msg_list,
3326 	p_party_id		=> lp_qte_header_rec.party_id,
3327 	p_cust_party_id  => lp_qte_header_rec.cust_party_id,
3328 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3329 	x_return_status		=> x_return_status,
3330         x_msg_count		=> x_msg_count,
3331         x_msg_data		=> x_msg_data);
3332 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3333 	  aso_debug_pub.add('validate record tca crs - after validate party crs '||x_return_status, 1, 'N');
3334 	END IF;
3335 
3336 	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3337             RAISE FND_API.G_EXC_ERROR;
3338 	  END IF;
3339 	 ASO_VALIDATE_PVT.Validate_org_contact_crs(
3340 	p_init_msg_list		=> p_init_msg_list,
3341 	p_contact_id		=> lp_qte_header_rec.org_contact_id,
3342 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3343         p_party_id		=> lp_qte_header_rec.party_id,
3344 	x_return_status		=> x_return_status,
3345         x_msg_count		=> x_msg_count,
3346         x_msg_data		=> x_msg_data);
3347  	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3348  	  aso_debug_pub.add('validate record tca crs - after validate org contact crs '||x_return_status, 1, 'N');
3349  	END IF;
3350 
3351 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3352            RAISE FND_API.G_EXC_ERROR;
3353 	  END IF;
3354  ASO_VALIDATE_PVT.Validate_Inv_Party_Crs(
3355 	p_init_msg_list		=> p_init_msg_list,
3356 	p_party_id		=> lp_qte_header_rec.party_id,
3357 	p_cust_party_id => lp_qte_header_rec.cust_party_id,
3358 	p_inv_party_id		=> lp_qte_header_rec.invoice_to_party_id,
3359 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3360 	p_inv_cust_account_id	=> lp_qte_header_rec.invoice_to_cust_account_id,
3361 	p_inv_cust_party_id => lp_qte_header_rec.invoice_to_cust_party_id,
3362     p_site_use   => 'BILL_TO',
3363 	x_return_status		=> x_return_status,
3364         x_msg_count		=> x_msg_count,
3365         x_msg_data		=> x_msg_data);
3366 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3367 	  aso_debug_pub.add('validate record tca crs - after validate Inv party crs(Bill to) '||x_return_status, 1, 'N');
3368 	END IF;
3369 
3370 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3371            RAISE FND_API.G_EXC_ERROR;
3372 	 END IF;
3373 
3374  ASO_VALIDATE_PVT.Validate_Inv_Party_Crs(
3375      p_init_msg_list          => p_init_msg_list,
3376      p_party_id          => lp_qte_header_rec.party_id,
3377      p_cust_party_id => lp_qte_header_rec.cust_party_id,
3378      p_inv_party_id      => lp_qte_header_rec.End_Customer_party_id,
3379      p_cust_account_id   => lp_qte_header_rec.cust_account_id,
3380      p_inv_cust_account_id    => lp_qte_header_rec.End_Customer_cust_account_id,
3381      p_inv_cust_party_id => lp_qte_header_rec.End_Customer_cust_party_id,
3382     p_site_use   => 'END_USER',
3383      x_return_status          => x_return_status,
3384         x_msg_count      => x_msg_count,
3385         x_msg_data       => x_msg_data);
3386      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3387        aso_debug_pub.add('validate record tca crs - after validate Inv party crs(End User) '||x_return_status, 1, 'N');
3388      END IF;
3389 
3390      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3391            RAISE FND_API.G_EXC_ERROR;
3392       END IF;
3393 
3394   ASO_VALIDATE_PVT.Validate_Inv_Party_Crs(
3395 	p_init_msg_list		=> p_init_msg_list,
3396 	p_party_id		=> lp_qte_header_rec.party_id,
3397 	p_cust_party_id => lp_qte_header_rec.cust_party_id,
3398 	p_inv_party_id		=> lp_shipment_rec.ship_to_party_id,
3399 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3400 	p_inv_cust_account_id	=> lp_shipment_rec.ship_to_cust_account_id,
3401 	p_inv_cust_party_id	=> lp_shipment_rec.ship_to_cust_party_id,
3402      p_site_use   		=> 'SHIP_TO',
3403 	x_return_status	=> x_return_status,
3404      x_msg_count		=> x_msg_count,
3405      x_msg_data		=> x_msg_data);
3406  	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3407  	  aso_debug_pub.add('validate record tca crs - after validate Inv party crs(Ship to) '||x_return_status, 1, 'N');
3408  	END IF;
3409 
3410 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3411                RAISE FND_API.G_EXC_ERROR;
3412 	 END IF;
3413 	ASO_VALIDATE_PVT.Validate_inv_PartySite_crs(
3414 	p_init_msg_list	=> p_init_msg_list,
3415 	p_party_id		=> lp_qte_header_rec.party_id,
3416 	p_cust_party_id => lp_qte_header_rec.cust_party_id,
3417 	p_inv_party_id		=> lp_qte_header_rec.invoice_to_party_id,
3418 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3419 	p_inv_cust_account_id	=> lp_qte_header_rec.invoice_to_cust_account_id,
3420 	p_inv_cust_party_id => lp_qte_header_rec.invoice_to_cust_party_id,
3421 	p_party_site_id	=> lp_qte_header_rec.invoice_to_party_Site_id,
3422 	p_site_usage		=> 'BILL_TO',
3423 	x_return_status	=> x_return_status,
3424      x_msg_count		=> x_msg_count,
3425      x_msg_data		=> x_msg_data);
3426  	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3427  	  aso_debug_pub.add('validate record tca crs - after validate Inv party site crs(Bill to) '||x_return_status, 1, 'N');
3428  	END IF;
3429 
3430 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3431                 RAISE FND_API.G_EXC_ERROR;
3432 	 END IF;
3433 
3434      ASO_VALIDATE_PVT.Validate_inv_PartySite_crs(
3435      p_init_msg_list     => p_init_msg_list,
3436      p_party_id          => lp_qte_header_rec.party_id,
3437      p_cust_party_id => lp_qte_header_rec.cust_party_id,
3438      p_inv_party_id      => lp_qte_header_rec.End_Customer_party_id,
3439      p_cust_account_id   => lp_qte_header_rec.cust_account_id,
3440      p_inv_cust_account_id    => lp_qte_header_rec.End_Customer_cust_account_id,
3441      p_inv_cust_party_id => lp_qte_header_rec.End_Customer_cust_party_id,
3442      p_party_site_id     => lp_qte_header_rec.End_Customer_party_Site_id,
3443      p_site_usage        => 'END_USER',
3444      x_return_status     => x_return_status,
3445      x_msg_count         => x_msg_count,
3446      x_msg_data          => x_msg_data);
3447      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3448        aso_debug_pub.add('validate record tca crs - after validate Inv party site crs(End User) '||x_return_status, 1, 'N');
3449      END IF;
3450 
3451      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3452                 RAISE FND_API.G_EXC_ERROR;
3453       END IF;
3454 
3455 	ASO_VALIDATE_PVT.Validate_inv_PartySite_crs(
3456 	p_init_msg_list	=> p_init_msg_list,
3457 	p_party_id		=> lp_qte_header_rec.party_id,
3458 	p_party_site_id	=> lp_shipment_rec.ship_to_party_Site_id,
3459 	p_cust_party_id => lp_qte_header_rec.cust_party_id,
3460 	p_inv_party_id		=> lp_shipment_rec.ship_to_party_id,
3461 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3462 	p_inv_cust_account_id	=> lp_shipment_rec.ship_to_cust_account_id,
3463 	p_inv_cust_party_id	=> lp_shipment_rec.ship_to_cust_party_id,
3464 	p_site_usage		=> 'SHIP_TO',
3465 	x_return_status	=> x_return_status,
3466      x_msg_count		=> x_msg_count,
3467      x_msg_data		=> x_msg_data);
3468  	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3469  	  aso_debug_pub.add('validate record tca crs - after validate Inv party site crs(Ship to) '||x_return_status, 1, 'N');
3470  	END IF;
3471 
3472 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3473 	      RAISE FND_API.G_EXC_ERROR;
3474 	 END IF;
3475 
3476 -- Sold_to
3477     IF lp_qte_header_rec.org_contact_id IS NOT NULL
3478 	AND lp_qte_header_rec.org_contact_id <> FND_API.G_MISS_NUM THEN
3479         OPEN C_Get_Party_From_Org(lp_qte_header_rec.org_contact_id);
3480         FETCH C_Get_Party_From_Org INTO l_party_id;
3481         CLOSE C_Get_Party_From_Org;
3482     ELSE
3483         l_party_id := lp_qte_header_rec.party_id;
3484     END IF;
3485 
3486     ASO_VALIDATE_PVT.Validate_inv_PartySite_crs(
3487 	p_init_msg_list	=> p_init_msg_list,
3488 	p_party_id		=> l_party_id,
3489 	p_cust_party_id => lp_qte_header_rec.cust_party_id,
3490 	p_inv_party_id		=> null,
3491 	p_cust_account_id	=> lp_qte_header_rec.cust_account_id,
3492 	p_inv_cust_account_id	=> null,
3493 	p_inv_cust_party_id => null,
3494 	p_party_site_id	=> lp_qte_header_rec.sold_to_party_Site_id,
3495 	p_site_usage		=> 'SOLD_TO',
3496 	x_return_status	=> x_return_status,
3497      x_msg_count		=> x_msg_count,
3498      x_msg_data		=> x_msg_data);
3499  	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3500  	  aso_debug_pub.add('validate record tca crs - after validate Inv party site crs(Sold to) '||x_return_status, 1, 'N');
3501  	END IF;
3502 
3503 	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3504                 RAISE FND_API.G_EXC_ERROR;
3505 	 END IF;
3506 -- Sold_to
3507 
3508    FND_MSG_PUB.Count_And_Get
3509       (  p_count          =>   x_msg_count,
3510          p_data           =>   x_msg_data
3511       );
3512 
3513   EXCEPTION
3514 	  WHEN FND_API.G_EXC_ERROR THEN
3515 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3516 		   P_API_NAME => L_API_NAME
3517 		  ,P_PKG_NAME => G_PKG_NAME
3518 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
3519 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3520 		  ,P_SQLCODE => SQLCODE
3521 		  ,P_SQLERRM => SQLERRM
3522 		  ,X_MSG_COUNT => X_MSG_COUNT
3523 		  ,X_MSG_DATA => X_MSG_DATA
3524 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3525 
3526 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3527 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3528 		   P_API_NAME => L_API_NAME
3529 		  ,P_PKG_NAME => G_PKG_NAME
3530 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3531 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3532 		  ,P_SQLCODE => SQLCODE
3533 		  ,P_SQLERRM => SQLERRM
3534 		  ,X_MSG_COUNT => X_MSG_COUNT
3535 		  ,X_MSG_DATA => X_MSG_DATA
3536 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3537 
3538 	  WHEN OTHERS THEN
3539 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3540 		   P_API_NAME => L_API_NAME
3541 		  ,P_PKG_NAME => G_PKG_NAME
3542 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
3543 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
3544 		  ,P_SQLCODE => SQLCODE
3545 		  ,P_SQLERRM => SQLERRM
3546 		  ,X_MSG_COUNT => X_MSG_COUNT
3547 		  ,X_MSG_DATA => X_MSG_DATA
3548 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
3549 
3550 END Validate_record_tca_crs;
3551 
3552    PROCEDURE Validate_QTE_OBJ_TYPE_CODE (
3553     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3554     P_QUOTE_OBJECT_TYPE_CODE                IN   VARCHAR2,
3555     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
3556     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
3557     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
3558     )
3559 IS
3560   CURSOR C1 IS select 'x'
3561            from aso_lookups
3562            where lookup_type = 'ASO_QUOTE_OBJECT_TYPE'
3563            and lookup_code = p_QUOTE_OBJECT_TYPE_CODE;
3564 l_exist VARCHAR2(1);
3565 BEGIN
3566 
3567       -- Initialize message list if p_init_msg_list is set to TRUE.
3568       IF FND_API.to_Boolean( p_init_msg_list )
3569       THEN
3570           FND_MSG_PUB.initialize;
3571       END IF;
3572 
3573 
3574       -- Initialize API return status to SUCCESS
3575       x_return_status := FND_API.G_RET_STS_SUCCESS;
3576     IF P_QUOTE_OBJECT_TYPE_CODE IS NOT NULL AND P_QUOTE_OBJECT_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
3577          OPEN C1;
3578          FETCH C1 INTO l_exist;
3579          IF C1%NOTFOUND or l_exist is NULL THEN
3580             CLOSE C1;
3581                x_return_status := FND_API.G_RET_STS_ERROR;
3582             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3583 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3584                 FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_OBJECT_TYPE_CODE', FALSE);
3585 			 FND_MESSAGE.Set_Token('VALUE',P_QUOTE_OBJECT_TYPE_CODE,FALSE);
3586                 FND_MSG_PUB.ADD;
3587 	        END IF;
3588 
3589         ELSE
3590 	       CLOSE C1;
3591 	    END IF;
3592 
3593      END IF;
3594 
3595 END Validate_QTE_OBJ_TYPE_CODE;
3596 
3597 PROCEDURE Validate_OBJECT_TYPE_CODE (
3598     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3599     P_OBJECT_TYPE_CODE                IN   VARCHAR2,
3600     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
3601     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
3602     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
3603     )
3604 IS
3605   CURSOR C1 IS select 'x'
3606           from aso_lookups
3607           where lookup_type = 'ASO_RELATED_OBJECT_TYPE'
3608           and lookup_code = p_OBJECT_TYPE_CODE;
3609 
3610 l_exist VARCHAR2(1);
3611 BEGIN
3612 
3613       -- Initialize message list if p_init_msg_list is set to TRUE.
3614       IF FND_API.to_Boolean( p_init_msg_list )
3615       THEN
3616           FND_MSG_PUB.initialize;
3617       END IF;
3618 
3619 
3620       -- Initialize API return status to SUCCESS
3621       x_return_status := FND_API.G_RET_STS_SUCCESS;
3622 
3623        IF p_OBJECT_TYPE_CODE IS NOT NULL AND p_OBJECT_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
3624          OPEN C1;
3625          FETCH C1 INTO l_exist;
3626          IF C1%NOTFOUND or l_exist is NULL THEN
3627             CLOSE C1;
3628                x_return_status := FND_API.G_RET_STS_ERROR;
3629             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3630 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3631                 FND_MESSAGE.Set_Token('COLUMN', 'OBJECT_TYPE_CODE', FALSE);
3632 			 FND_MESSAGE.Set_Token('VALUE',p_OBJECT_TYPE_CODE,FALSE);
3633                 FND_MSG_PUB.ADD;
3634 	        END IF;
3635 
3636         ELSE
3637 	       CLOSE C1;
3638 	    END IF;
3639 
3640      END IF;
3641 
3642 
3643 END Validate_OBJECT_TYPE_CODE;
3644 PROCEDURE Validate_RLTSHIP_TYPE_CODE (
3645     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3646     P_RELATIONSHIP_TYPE_CODE                IN   VARCHAR2,
3647     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
3648     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
3649     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
3650     )
3651 IS
3652   CURSOR C1 IS SELECT 'x'
3653           from aso_lookups
3654           where lookup_type = 'ASO_OBJECT_RELATIONSHIP_TYPE'
3655           and lookup_code = p_RELATIONSHIP_TYPE_CODE;
3656 
3657 l_exist VARCHAR2(1);
3658 BEGIN
3659 
3660       -- Initialize message list if p_init_msg_list is set to TRUE.
3661       IF FND_API.to_Boolean( p_init_msg_list )
3662       THEN
3663           FND_MSG_PUB.initialize;
3664       END IF;
3665 
3666 
3667       -- Initialize API return status to SUCCESS
3668       x_return_status := FND_API.G_RET_STS_SUCCESS;
3669       IF P_RELATIONSHIP_TYPE_CODE IS NOT NULL AND P_RELATIONSHIP_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
3670          OPEN C1;
3671          FETCH C1 INTO l_exist;
3672          IF C1%NOTFOUND or l_exist is NULL THEN
3673             CLOSE C1;
3674                x_return_status := FND_API.G_RET_STS_ERROR;
3675             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3676 	            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3677                 FND_MESSAGE.Set_Token('COLUMN', 'RELATIONSHIP_TYPE_CODE', FALSE);
3678 			 FND_MESSAGE.Set_Token('VALUE',P_RELATIONSHIP_TYPE_CODE,FALSE);
3679                 FND_MSG_PUB.ADD;
3680 	        END IF;
3681 
3682         ELSE
3683 	       CLOSE C1;
3684 	    END IF;
3685 
3686      END IF;
3687 
3688 
3689 END Validate_RLTSHIP_TYPE_CODE;
3690 
3691 
3692 
3693 PROCEDURE Validate_Minisite(
3694         p_init_msg_list         IN      VARCHAR2,
3695         p_minisite_id           IN      NUMBER,
3696         x_return_status         OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
3697         x_msg_count             OUT NOCOPY /* file.sql.39 change */       NUMBER,
3698         x_msg_data              OUT NOCOPY /* file.sql.39 change */       VARCHAR2)
3699 IS
3700     CURSOR C_Minisite IS
3701         SELECT start_date_active, end_date_active FROM IBE_MSITES_B
3702         WHERE msite_id = p_minisite_id;
3703     l_start_date        DATE;
3704     l_end_date          DATE;
3705 BEGIN
3706     -- Initialize message list if p_init_msg_list is set to TRUE.
3707     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3708         FND_MSG_PUB.initialize;
3709     END IF;
3710 
3711     --  Initialize API return status to success
3712     x_return_status := FND_API.G_RET_STS_SUCCESS;
3713 
3714     IF (p_minisite_id IS NOT NULL AND p_minisite_id <> FND_API.G_MISS_NUM) THEN
3715         OPEN C_Minisite;
3716         FETCH C_Minisite INTO l_start_date, l_end_date;
3717         IF (C_Minisite%NOTFOUND OR
3718             (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
3719                                  NVL(l_end_date, sysdate))) THEN
3720             CLOSE C_Minisite;
3721             x_return_status := FND_API.G_RET_STS_ERROR;
3722             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3723                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3724                 FND_MESSAGE.Set_Token('COLUMN', 'MSITE_ID', FALSE);
3725 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_minisite_id),FALSE);
3726                 FND_MSG_PUB.ADD;
3727             END IF;
3728         ELSE
3729             CLOSE C_Minisite;
3730         END IF;
3731     END IF;
3732 
3733 END Validate_Minisite;
3734 
3735 
3736 
3737 PROCEDURE Validate_Section(
3738         p_init_msg_list         IN      VARCHAR2,
3739         p_section_id            IN      NUMBER,
3740         x_return_status         OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
3741         x_msg_count             OUT NOCOPY /* file.sql.39 change */       NUMBER,
3742         x_msg_data              OUT NOCOPY /* file.sql.39 change */       VARCHAR2)
3743 IS
3744     CURSOR C_Section IS
3745         SELECT start_date_active, end_date_active FROM IBE_DSP_SECTIONS_B
3746         WHERE section_id = p_section_id;
3747     l_start_date        DATE;
3748     l_end_date          DATE;
3749 BEGIN
3750     -- Initialize message list if p_init_msg_list is set to TRUE.
3751     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3752         FND_MSG_PUB.initialize;
3753     END IF;
3754 
3755     --  Initialize API return status to success
3756     x_return_status := FND_API.G_RET_STS_SUCCESS;
3757 
3758     IF (p_section_id IS NOT NULL AND p_section_id <> FND_API.G_MISS_NUM) THEN
3759         OPEN C_Section;
3760         FETCH C_Section INTO l_start_date, l_end_date;
3761         IF (C_Section%NOTFOUND OR
3762             (sysdate NOT BETWEEN NVL(l_start_date, sysdate) AND
3763                                  NVL(l_end_date, sysdate))) THEN
3764             CLOSE C_Section;
3765             x_return_status := FND_API.G_RET_STS_ERROR;
3766             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3767                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3768                 FND_MESSAGE.Set_Token('COLUMN', 'SECTION_ID', FALSE);
3769 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_section_id),FALSE);
3770                 FND_MSG_PUB.ADD;
3771             END IF;
3772         ELSE
3773             CLOSE C_Section;
3774         END IF;
3775     END IF;
3776 
3777 END Validate_Section;
3778 
3779 
3780 Procedure Validate_Quote_Percent(
3781     p_init_msg_list             IN      VARCHAR2,
3782     p_sales_credit_tbl          IN      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
3783     x_return_status             OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
3784     x_msg_count                 OUT NOCOPY /* file.sql.39 change */       NUMBER,
3785     x_msg_data                  OUT NOCOPY /* file.sql.39 change */       VARCHAR2
3786 )
3787 IS
3788 
3789     CURSOR C_Quota_Header(l_quote_header_id NUMBER) IS
3790     SELECT SUM(A.percent)        total
3791       FROM ASO_SALES_CREDITS     A,
3792            OE_SALES_CREDIT_TYPES B
3793      WHERE A.quote_header_id = l_quote_header_id
3794        AND A.quote_line_id IS NULL
3795        AND A.sales_credit_type_id = B.sales_credit_type_id
3796        AND B.quota_flag = 'Y';
3797 
3798     CURSOR C_Quota_Line(l_quote_header_id NUMBER, l_quote_line_id NUMBER) IS
3799     SELECT SUM(A.percent)        total
3800       FROM ASO_SALES_CREDITS     A,
3801            OE_SALES_CREDIT_TYPES B
3802      WHERE A.quote_header_id = l_quote_header_id
3803        AND A.quote_line_id = l_quote_line_id
3804        AND A.sales_credit_type_id = B.sales_credit_type_id
3805        AND B.quota_flag = 'Y';
3806 
3807     l_percent_total NUMBER;
3808 
3809 BEGIN
3810 
3811     -- Initialize message list if p_init_msg_list is set to TRUE.
3812     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3813         FND_MSG_PUB.initialize;
3814     END IF;
3815 
3816     --  Initialize API return status to success
3817     x_return_status := FND_API.G_RET_STS_SUCCESS;
3818 
3819     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3820       aso_debug_pub.add('validate_quote_percent: sales_credit_tbl.cnt: '|| p_sales_credit_tbl.count, 1, 'N');
3821       aso_debug_pub.add('validate_quote_percent: quote_header_id:      '|| p_sales_credit_tbl(1).quote_header_id, 1, 'N');
3822       aso_debug_pub.add('validate_quote_percent: quote_line_id:        '|| p_sales_credit_tbl(1).quote_line_id, 1, 'N');
3823       aso_debug_pub.add('validate_quote_percent: qte_line_index:       '|| p_sales_credit_tbl(1).qte_line_index, 1, 'N');
3824     END IF;
3825 
3826     IF p_sales_credit_tbl(1).quote_header_id IS NOT NULL AND p_sales_credit_tbl(1).quote_header_id <> FND_API.G_MISS_NUM THEN
3827         IF p_sales_credit_tbl(1).quote_line_id IS NOT NULL AND p_sales_credit_tbl(1).quote_line_id <> FND_API.G_MISS_NUM THEN
3828             FOR percent_rec IN c_quota_line(p_sales_credit_tbl(1).quote_header_id, p_sales_credit_tbl(1).quote_line_id) LOOP
3829                 l_percent_total := percent_rec.total;
3830             END LOOP;
3831             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3832               aso_debug_pub.add('validate_quote_percent: line level sales credit', 1, 'N');
3833               aso_debug_pub.add('validate_quote_percent: percent in line db:   '|| l_percent_total, 1, 'N');
3834             END IF;
3835         ELSE
3836             FOR percent_rec IN c_quota_header(p_sales_credit_tbl(1).quote_header_id) LOOP
3837                 l_percent_total := percent_rec.total;
3838             END LOOP;
3839             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3840               aso_debug_pub.add('validate_quote_percent: header level sales credit', 1, 'N');
3841               aso_debug_pub.add('validate_quote_percent: percent in header db: '|| l_percent_total, 1, 'N');
3842             END IF;
3843         END IF;
3844     END IF;
3845 
3846     --IF nvl(l_percent_total,0) <> 100 THEN --commented to fix bug5671266
3847     IF l_percent_total IS NOT NULL AND l_percent_total <> 100 THEN
3848         x_return_status := FND_API.G_RET_STS_ERROR;
3849         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3850             FND_MESSAGE.Set_Name('ASO', 'ASO_SALES_CREDIT_PERCENT');
3851             FND_MSG_PUB.ADD;
3852         END IF;
3853     END IF;
3854 
3855 END Validate_Quote_Percent;
3856 
3857 
3858 Procedure Validate_Sales_Credit_Return(
3859     p_init_msg_list             IN      VARCHAR2,
3860     p_sales_credit_tbl          IN      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
3861     p_qte_line_rec              IN      ASO_QUOTE_PUB.Qte_Line_Rec_Type,
3862     x_return_status             OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
3863     x_msg_count                 OUT NOCOPY /* file.sql.39 change */       NUMBER,
3864     x_msg_data                  OUT NOCOPY /* file.sql.39 change */       VARCHAR2
3865 )
3866 IS
3867 
3868 BEGIN
3869     -- Initialize message list if p_init_msg_list is set to TRUE.
3870     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3871         FND_MSG_PUB.initialize;
3872     END IF;
3873 
3874     --  Initialize API return status to success
3875     x_return_status := FND_API.G_RET_STS_SUCCESS;
3876 
3877     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3878       aso_debug_pub.add('validate_sales_credit_return: start '|| x_return_status, 1, 'N');
3879     END IF;
3880 
3881     IF p_qte_line_rec.LINE_CATEGORY_CODE = 'RETURN' THEN
3882         IF p_sales_credit_tbl.count > 0 THEN
3883             x_return_status := FND_API.G_RET_STS_ERROR;
3884             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3885                 FND_MESSAGE.Set_Name('ASO', 'ASO_SALES_CREDIT_RETURN');
3886                 FND_MSG_PUB.ADD;
3887             END IF;
3888         END IF;
3889     END IF;
3890 
3891     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3892       aso_debug_pub.add('validate_sales_credit_return: end '|| x_return_status, 1, 'N');
3893     END IF;
3894 
3895 END Validate_Sales_Credit_Return;
3896 
3897 
3898 PROCEDURE  validate_ship_from_org_ID (
3899     P_Qte_Line_rec	 IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type,
3900     P_Shipment_rec   IN   ASO_QUOTE_PUB.Shipment_Rec_Type,
3901     x_return_status  OUT NOCOPY /* file.sql.39 change */    VARCHAR2
3902   )
3903 IS
3904 
3905 l_org_id          NUMBER;
3906 
3907 -- bug 2492841
3908 -- view org_organization_definitions is changed to base table
3909 -- hr_organization_units
3910 
3911 CURSOR c_org_id is
3912 SELECT org.organization_id
3913 FROM mtl_system_items msi, hr_organization_units org
3914 WHERE msi.inventory_item_id = p_qte_line_rec.inventory_item_id
3915 AND org.organization_id= msi.organization_id
3916 AND sysdate <= nvl( org.date_to, sysdate)
3917 AND org.organization_id= p_shipment_rec.ship_from_org_id
3918  --AND msi.organization_id= p_qte_line_rec.organization_id
3919 AND rownum = 1 ;
3920 
3921 BEGIN
3922     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3923       aso_debug_pub.add('ASO_VALIDATE_PVT inventory_item_id: '||p_qte_line_rec.inventory_item_id, 1, 'N');
3924       aso_debug_pub.add('ASO_VALIDATE_PVT organization_id: '||p_qte_line_rec.organization_id, 1, 'N');
3925       aso_debug_pub.add('ASO_VALIDATE_PVT ship_from_org_id: '||p_shipment_rec.ship_from_org_id, 1, 'N');
3926     END IF;
3927 
3928     x_return_status := FND_API.G_RET_STS_SUCCESS;
3929     IF (p_qte_line_rec.inventory_item_id is not null AND p_qte_line_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
3930 	  (p_qte_line_rec.organization_id is not null AND p_qte_line_rec.organization_id <> FND_API.G_MISS_NUM) AND
3931 	  (p_shipment_rec.ship_from_org_id is not null AND p_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM) THEN
3932 
3933 	  open c_org_id;
3934 	  fetch c_org_id into l_org_id;
3935 	  IF  c_org_id%NOTFOUND THEN
3936 		x_return_status := FND_API.G_RET_STS_ERROR;
3937 	  END IF;
3938        close c_org_id;
3939    END IF;
3940 END validate_ship_from_org_ID;
3941 
3942 
3943 PROCEDURE Validate_Commitment(
3944      P_Init_Msg_List     IN   VARCHAR2,
3945      P_Qte_Header_Rec    IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
3946      P_Qte_Line_Rec      IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type,
3947      X_Return_Status     OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
3948      X_Msg_Count         OUT NOCOPY /* file.sql.39 change */    NUMBER,
3949      X_Msg_Data          OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
3950 
3951 IS
3952 
3953      CURSOR C_Commitment_Cur(l_cust_account_id NUMBER, l_currency_code VARCHAR2, l_org_id NUMBER,
3954                          l_agreement_id NUMBER, l_commitment_id NUMBER, l_inventory_item_id NUMBER) IS
3955       SELECT 'VALID'
3956       FROM ra_customer_trx ratrx, ra_customer_trx_lines ratrl
3957       WHERE EXISTS
3958       (SELECT 1 FROM ra_cust_trx_types ractt
3959        WHERE ractt.type IN ('DEP', 'GUAR')
3960        AND ratrx.cust_trx_type_id = ractt.cust_trx_type_id
3961        AND ractt.org_id = l_org_id)
3962       AND ratrx.bill_to_customer_id = l_cust_account_id
3963       AND ratrx.complete_flag = 'Y'
3964       AND trunc(sysdate) BETWEEN trunc(nvl(ratrx.start_date_commitment, sysdate))
3965           AND trunc(nvl(ratrx.end_date_commitment, sysdate))
3966       AND ratrx.invoice_currency_code = l_currency_code
3967       AND nvl(l_agreement_id, nvl(ratrx.agreement_id,0)) = nvl(ratrx.agreement_id, nvl(l_agreement_id,0))
3968       AND ratrl.customer_trx_id = ratrx.customer_trx_id
3969       AND nvl(ratrl.inventory_item_id, nvl(l_inventory_item_id,0)) = nvl(l_inventory_item_id,0)
3970       AND ratrx.customer_trx_id = l_commitment_id;
3971 
3972      CURSOR C_Get_Agreement(l_qte_hdr_id NUMBER) IS
3973       SELECT Contract_Id
3974       FROM ASO_QUOTE_HEADERS_ALL
3975       WHERE Quote_Header_Id = l_qte_hdr_id;
3976 
3977      CURSOR C_Header_Cur(l_qte_hdr_id NUMBER) IS
3978       SELECT Org_Id, Currency_Code, Invoice_To_Cust_Account_Id
3979       FROM ASO_QUOTE_HEADERS_ALL
3980       WHERE Quote_Header_Id = l_qte_hdr_id;
3981      CURSOR C_Line_Cur(l_qte_ln_id NUMBER) IS
3982       SELECT Agreement_Id, Commitment_Id, Inventory_Item_Id
3983       FROM ASO_QUOTE_LINES_ALL
3984       WHERE Quote_Line_Id = l_qte_ln_id;
3985 
3986      l_Org_Id            NUMBER;
3987      l_Currency_Code     VARCHAR2(15);
3988      l_Cust_Account_Id   NUMBER;
3989      l_Agreement_Id      NUMBER;
3990      l_Commitment_Id     NUMBER;
3991      l_Inventory_Item_Id NUMBER;
3992      l_Cur_Variable      VARCHAR2(10);
3993 
3994 BEGIN
3995 
3996     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3997        aso_debug_pub.add('Entering Validate_Commitment', 1, 'N');
3998     END IF;
3999 
4000     -- Initialize message list if p_init_msg_list is set to TRUE.
4001     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4002         FND_MSG_PUB.initialize;
4003     END IF;
4004 
4005     --  Initialize API return status to success
4006     x_return_status := FND_API.G_RET_STS_SUCCESS;
4007 
4008     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4009        aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Quote_Header_Id: '||P_Qte_Header_Rec.Quote_Header_Id, 1, 'N');
4010        aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Commitment_Id: '||P_Qte_Line_Rec.Commitment_Id, 1, 'N');
4011     END IF;
4012 
4013      IF P_Qte_Line_Rec.Commitment_Id IS NOT NULL AND
4014       P_Qte_Line_Rec.Commitment_Id <> FND_API.G_MISS_NUM THEN
4015 
4016       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4017          aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Operation_Code: '||P_Qte_Line_Rec.Operation_Code, 1, 'N');
4018       END IF;
4019           IF P_Qte_Line_Rec.Operation_Code = 'CREATE' THEN
4020 
4021           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4022              aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Org_Id: '||P_Qte_Header_Rec.Org_Id, 1, 'N');
4023              aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Currency_Code: '||P_Qte_Header_Rec.Currency_Code, 1, 'N');
4024              aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Invoice_To_Cust_Account_Id: '||P_Qte_Header_Rec.Invoice_To_Cust_Account_Id, 1, 'N');
4025              aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Cust_Account_Id: '||P_Qte_Header_Rec.Cust_Account_Id, 1, 'N');
4026              aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Agreement_Id: '||P_Qte_Line_Rec.Agreement_Id, 1, 'N');
4027              aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Commitment_Id: '||P_Qte_Line_Rec.Commitment_Id, 1, 'N');
4028              aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Inventory_Item_Id: '||P_Qte_Line_Rec.Inventory_Item_Id, 1, 'N');
4029            END IF;
4030                l_Org_Id := P_Qte_Header_Rec.Org_Id;
4031                l_Currency_Code := P_Qte_Header_Rec.Currency_Code;
4032 /*
4033                IF P_Qte_Line_Rec.Invoice_To_Cust_Account_Id IS NOT NULL AND
4034                 P_Qte_Line_Rec.Invoice_To_Cust_Account_Id <> FND_API.G_MISS_NUM THEN
4035 aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Invoice_To_Cust_Account_Id: '||P_Qte_Line_Rec.Invoice_To_Cust_Account_Id, 1, 'N');
4036 
4037                     l_Cust_Account_Id := P_Qte_Line_Rec.Invoice_To_Cust_Account_Id;
4038 
4039                ELSIF P_Qte_Header_Rec.Invoice_To_Cust_Account_Id IS NOT NULL AND
4040                 P_Qte_Header_Rec.Invoice_To_Cust_Account_Id <> FND_API.G_MISS_NUM THEN
4041 aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Invoice_To_Cust_Account_Id: '||P_Qte_Header_Rec.Invoice_To_Cust_Account_Id, 1, 'N');
4042 
4043                     l_Cust_Account_Id := P_Qte_Header_Rec.Invoice_To_Cust_Account_Id;
4044 
4045                ELSE
4046 aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Cust_Account_Id: '||P_Qte_Header_Rec.Cust_Account_Id, 1, 'N');
4047 */
4048                     l_Cust_Account_Id := P_Qte_Header_Rec.Cust_Account_Id;
4049 
4050 /*               END IF; */
4051 
4052                l_Agreement_Id := P_Qte_Line_Rec.Agreement_Id;
4053                l_Commitment_Id := P_Qte_Line_Rec.Commitment_Id;
4054                l_Inventory_Item_Id := P_Qte_Line_Rec.Inventory_Item_Id;
4055 
4056                IF l_Agreement_Id IS NULL  OR l_agreement_id = FND_API.G_MISS_NUM
4057 			THEN
4058                     OPEN C_Get_Agreement(P_Qte_Header_Rec.Quote_Header_id);
4059                     FETCH C_Get_Agreement INTO l_Agreement_Id;
4060                     CLOSE C_Get_Agreement;
4061                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4062                   aso_debug_pub.add('Validate_Commitment-l_Agreement_Id: '||l_Agreement_Id, 1, 'N');
4063                END IF;
4064                END IF;
4065 
4066                OPEN C_Commitment_Cur(l_cust_account_id, l_currency_code, l_org_id,
4067                               l_agreement_id, l_commitment_id, l_inventory_item_id);
4068                FETCH C_Commitment_Cur INTO l_Cur_Variable;
4069                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4070                   aso_debug_pub.add('Validate_Commitment-l_Cur_Variable: '||l_Cur_Variable, 1, 'N');
4071                END IF;
4072                IF C_Commitment_Cur%NOTFOUND OR l_Cur_Variable <> 'VALID' THEN
4073                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4074                   aso_debug_pub.add('Validate_Commitment-Invalid Commitment: ', 1, 'N');
4075                END IF;
4076                     x_return_status := FND_API.G_RET_STS_ERROR;
4077                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4078                          FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_COMMITMENT');
4079                          FND_MSG_PUB.ADD;
4080                     END IF;
4081                END IF;
4082 
4083                CLOSE C_Commitment_Cur;
4084 
4085           ELSE  -- Operation is 'UPDATE'
4086 
4087                OPEN C_Header_Cur(P_Qte_Header_Rec.Quote_Header_Id);
4088                FETCH C_Header_Cur INTO l_Org_Id, l_Currency_Code, l_Cust_Account_Id;
4089                CLOSE C_Header_Cur;
4090 
4091                IF P_Qte_Header_Rec.Org_Id IS NOT NULL AND
4092                 P_Qte_Header_Rec.Org_Id <> FND_API.G_MISS_NUM THEN
4093                     l_Org_Id := P_Qte_Header_Rec.Org_Id;
4094                END IF;
4095 
4096                IF P_Qte_Header_Rec.Currency_Code IS NOT NULL AND
4097                 P_Qte_Header_Rec.Currency_Code <> FND_API.G_MISS_CHAR THEN
4098                     l_Currency_Code := P_Qte_Header_Rec.Currency_Code;
4099                END IF;
4100 
4101                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4102                   aso_debug_pub.add('Validate_Commitment-l_Org_Id: '||l_Org_Id, 1, 'N');
4103                   aso_debug_pub.add('Validate_Commitment-l_Currency_Code: '||l_Currency_Code, 1, 'N');
4104                END IF;
4105 /*
4106                IF P_Qte_Line_Rec.Invoice_To_Cust_Account_Id IS NOT NULL AND
4107                 P_Qte_Line_Rec.Invoice_To_Cust_Account_Id <> FND_API.G_MISS_NUM THEN
4108 aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Invoice_To_Cust_Account_Id: '||P_Qte_Line_Rec.Invoice_To_Cust_Account_Id, 1, 'N');
4109 
4110                     l_Cust_Account_Id := P_Qte_Line_Rec.Invoice_To_Cust_Account_Id;
4111 
4112                ELSIF P_Qte_Header_Rec.Invoice_To_Cust_Account_Id IS NOT NULL AND
4113                 P_Qte_Header_Rec.Invoice_To_Cust_Account_Id <> FND_API.G_MISS_NUM THEN
4114 aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Invoice_To_Cust_Account_Id: '||P_Qte_Header_Rec.Invoice_To_Cust_Account_Id, 1, 'N');
4115 
4116                     l_Cust_Account_Id := P_Qte_Header_Rec.Invoice_To_Cust_Account_Id;
4117 
4118                ELSE
4119 aso_debug_pub.add('Validate_Commitment-P_Qte_Header_Rec.Cust_Account_Id: '||P_Qte_Header_Rec.Cust_Account_Id, 1, 'N');
4120 */
4121                     l_Cust_Account_Id := P_Qte_Header_Rec.Cust_Account_Id;
4122 
4123 /*               END IF; */
4124 
4125 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4126   aso_debug_pub.add('Validate_Commitment-P_Qte_Line_Rec.Quote_Line_Id: '||P_Qte_Line_Rec.Quote_Line_Id, 1, 'N');
4127 END IF;
4128 
4129                OPEN C_Line_Cur(P_Qte_Line_Rec.Quote_Line_Id);
4130                FETCH C_Line_Cur INTO l_Agreement_Id, l_Commitment_Id, l_Inventory_Item_Id;
4131                CLOSE C_Line_Cur;
4132 
4133                IF P_Qte_Line_Rec.Agreement_Id IS NOT NULL AND
4134                 P_Qte_Line_Rec.Agreement_Id <> FND_API.G_MISS_NUM THEN
4135                     l_Agreement_Id := P_Qte_Line_Rec.Agreement_Id;
4136                END IF;
4137 
4138                IF P_Qte_Line_Rec.Commitment_id IS NOT NULL AND
4139                 P_Qte_Line_Rec.Commitment_Id <> FND_API.G_MISS_NUM THEN
4140                     l_Commitment_Id := P_Qte_Line_Rec.Commitment_Id;
4141                END IF;
4142 
4143                IF P_Qte_Line_Rec.Inventory_Item_Id IS NOT NULL AND
4144                 P_Qte_Line_Rec.Inventory_Item_Id <> FND_API.G_MISS_NUM THEN
4145                     l_Inventory_Item_Id := P_Qte_Line_Rec.Inventory_Item_Id;
4146                END IF;
4147 
4148 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4149   aso_debug_pub.add('Validate_Commitment-l_Agreement_Id: '||l_Agreement_Id, 1, 'N');
4150   aso_debug_pub.add('Validate_Commitment-l_Commitment_Id: '||l_Commitment_Id, 1, 'N');
4151   aso_debug_pub.add('Validate_Commitment-l_inventory_item_id: '||l_inventory_item_id, 1, 'N');
4152 END IF;
4153 
4154                OPEN C_Commitment_Cur(l_cust_account_id, l_currency_code, l_org_id,
4155                               l_agreement_id, l_commitment_id, l_inventory_item_id);
4156                FETCH C_Commitment_Cur INTO l_Cur_Variable;
4157 
4158 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4159   aso_debug_pub.add('Validate_Commitment-l_Cur_Variable: '||l_Cur_Variable, 1, 'N');
4160 END IF;
4161                IF C_Commitment_Cur%NOTFOUND OR l_Cur_Variable <> 'VALID' THEN
4162 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4163   aso_debug_pub.add('Validate_Commitment-Invalid Commitment: ', 1, 'N');
4164 END IF;
4165                     x_return_status := FND_API.G_RET_STS_ERROR;
4166                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4167                          FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_COMMITMENT');
4168                          FND_MSG_PUB.ADD;
4169                     END IF;
4170                END IF;
4171 
4172                CLOSE C_Commitment_Cur;
4173 
4174           END IF; -- Operation
4175 
4176      END IF;
4177 
4178 END Validate_Commitment;
4179 
4180 
4181 PROCEDURE Validate_Agreement(
4182      P_Init_Msg_List     IN   VARCHAR2,
4183      P_Agreement_Id      IN   NUMBER,
4184      X_Return_Status     OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
4185      X_Msg_Count         OUT NOCOPY /* file.sql.39 change */    NUMBER,
4186      X_Msg_Data          OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
4187 
4188 IS
4189 
4190      CURSOR C_Agreement_Cur(l_agreement_id NUMBER) IS
4191       SELECT Start_Date_Active, End_Date_Active
4192       FROM OE_AGREEMENTS_B
4193       WHERE Agreement_Id = l_agreement_id;
4194 
4195      l_Start_Date_Active      DATE;
4196      l_End_Date_Active        DATE;
4197 
4198 BEGIN
4199 
4200 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4201   aso_debug_pub.add('Entering Validate_Agreement', 1, 'N');
4202   aso_debug_pub.add('Validate_Agreement-P_Agreement_Id: '||P_Agreement_Id, 1, 'N');
4203 END IF;
4204 
4205     -- Initialize message list if p_init_msg_list is set to TRUE.
4206     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4207         FND_MSG_PUB.initialize;
4208     END IF;
4209 
4210     --  Initialize API return status to success
4211     x_return_status := FND_API.G_RET_STS_SUCCESS;
4212 
4213      OPEN C_Agreement_Cur(P_Agreement_Id);
4214      FETCH C_Agreement_Cur INTO l_Start_Date_Active, l_End_Date_Active;
4215 
4216      IF C_Agreement_Cur%NOTFOUND THEN
4217 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4218   aso_debug_pub.add('Validate_Agreement-Agreement Not Found', 1, 'N');
4219 END IF;
4220           x_return_status := FND_API.G_RET_STS_ERROR;
4221           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4222                FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_AGREEMENT');
4223                FND_MSG_PUB.ADD;
4224           END IF;
4225      END IF;
4226 
4227      IF (trunc(sysdate) NOT BETWEEN trunc(l_Start_Date_Active) AND NVL(trunc(l_End_Date_Active),trunc(sysdate))) THEN
4228 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4229   aso_debug_pub.add('Validate_Agreement-Agreement Invalid', 1, 'N');
4230 END IF;
4231           x_return_status := FND_API.G_RET_STS_ERROR;
4232           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4233                FND_MESSAGE.Set_Name('ASO', 'ASO_INACTIVE_AGREEMENT');
4234                FND_MSG_PUB.ADD;
4235           END IF;
4236      END IF;
4237 
4238      CLOSE C_Agreement_Cur;
4239 
4240 END Validate_Agreement;
4241 
4242 -- hyang quote_status
4243 PROCEDURE Validate_Status_Transition(
4244 	p_init_msg_list		  IN	VARCHAR2,
4245 	p_source_status_id  IN	NUMBER,
4246 	p_dest_status_id	  IN	NUMBER,
4247 	x_return_status		  OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
4248   x_msg_count		      OUT NOCOPY /* file.sql.39 change */  	NUMBER,
4249   x_msg_data		      OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
4250 IS
4251 
4252   CURSOR c_transition(from_status_id NUMBER, to_status_id NUMBER)
4253   IS
4254 	  SELECT  transition_id, enabled_flag
4255 	  FROM    ASO_QUOTE_STATUS_TRANSITIONS
4256 	  WHERE   from_status_id = p_source_status_id
4257 	          AND to_status_id = p_dest_status_id;
4258 
4259 	l_transition_id     NUMBER;
4260 	l_enabled_flag      VARCHAR2(1);
4261 
4262 BEGIN
4263     -- Initialize message list if p_init_msg_list is set to TRUE.
4264     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4265         FND_MSG_PUB.initialize;
4266     END IF;
4267 
4268     --  Initialize API return status to success
4269     x_return_status := FND_API.G_RET_STS_SUCCESS;
4270 
4271     Validate_Quote_Status(
4272       p_init_msg_list     => p_init_msg_list,
4273       p_quote_status_id   => p_source_status_id,
4274       x_return_status     => x_return_status,
4275       x_msg_count         => x_msg_count,
4276       x_msg_data          => x_msg_data);
4277 
4278     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4279       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4280 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
4281         FND_MESSAGE.Set_Token('COLUMN', 'SOURCE_STATUS_ID', FALSE);
4282 	   FND_MESSAGE.Set_Token('VALUE',to_char(p_source_status_id),FALSE);
4283         FND_MSG_PUB.ADD;
4284 	    END IF;
4285       RETURN;
4286     END IF;
4287 
4288     Validate_Quote_Status(
4289       p_init_msg_list     => p_init_msg_list,
4290       p_quote_status_id   => p_dest_status_id,
4291       x_return_status     => x_return_status,
4292       x_msg_count         => x_msg_count,
4293       x_msg_data          => x_msg_data);
4294 
4295     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4296       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4297 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
4298         FND_MESSAGE.Set_Token('COLUMN', 'DEST_STATUS_ID', FALSE);
4299 	   FND_MESSAGE.Set_Token('VALUE',to_char(p_dest_status_id),FALSE);
4300         FND_MSG_PUB.ADD;
4301 	    END IF;
4302       RETURN;
4303     END IF;
4304 
4305     OPEN c_transition(p_source_status_id, p_dest_status_id);
4306 	  FETCH c_transition INTO l_transition_id, l_enabled_flag;
4307     IF (c_transition%NOTFOUND) THEN
4308       x_return_status := FND_API.G_RET_STS_ERROR;
4309       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4310 	      FND_MESSAGE.Set_Name('ASO', 'ASO_NONEXISTENT_STATUS_TRANS');
4311         FND_MSG_PUB.ADD;
4312 	    END IF;
4313     ELSIF (l_enabled_flag <> 'Y') THEN
4314       x_return_status := FND_API.G_RET_STS_ERROR;
4315       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4316         FND_MESSAGE.Set_Name('ASO', 'ASO_DISABLED_STATUS_TRANS');
4317         FND_MSG_PUB.ADD;
4318       END IF;
4319   	END IF;
4320     CLOSE c_transition;
4321 
4322 END Validate_Status_Transition;
4323 
4324 -- end of hyang quote_status
4325 
4326 -- hyang okc
4327 PROCEDURE Validate_Contract_Template(
4328 	p_init_msg_list		          IN	VARCHAR2,
4329 	p_template_id               IN	NUMBER,
4330 	p_template_major_version	  IN	NUMBER,
4331 	x_return_status		          OUT NOCOPY /* file.sql.39 change */  	VARCHAR2,
4332   x_msg_count		              OUT NOCOPY /* file.sql.39 change */  	NUMBER,
4333   x_msg_data		              OUT NOCOPY /* file.sql.39 change */  	VARCHAR2)
4334 IS
4335 
4336     l_major_version              NUMBER;
4337 
4338     CURSOR c_k_template (lc_template_id NUMBER) IS
4339       SELECT  major_version
4340       FROM    okc_sales_templates_v
4341       WHERE   id = lc_template_id;
4342 
4343 BEGIN
4344 
4345     -- Initialize message list if p_init_msg_list is set to TRUE.
4346     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4347         FND_MSG_PUB.initialize;
4348     END IF;
4349 
4350     --  Initialize API return status to success
4351     x_return_status := FND_API.G_RET_STS_SUCCESS;
4352 
4353     OPEN c_k_template(p_template_id);
4354     FETCH c_k_template INTO l_major_version;
4355     IF c_k_template%NOTFOUND
4356     THEN
4357       x_return_status := FND_API.G_RET_STS_ERROR;
4358       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4359 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
4360         FND_MESSAGE.Set_Token('COLUMN', 'TEMPLATE_ID', FALSE);
4361         FND_MSG_PUB.ADD;
4362 	    END IF;
4363     ELSE
4364       IF l_major_version <> p_template_major_version
4365       THEN
4366         x_return_status := FND_API.G_RET_STS_ERROR;
4367         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4368   	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
4369           FND_MESSAGE.Set_Token('COLUMN', 'TEMPLATE_MAJOR_VERSION', FALSE);
4370 		FND_MESSAGE.Set_Token('VALUE',to_char(p_template_major_version),FALSE);
4371           FND_MSG_PUB.ADD;
4372   	    END IF;
4373       END IF;
4374     END IF;
4375 
4376     CLOSE c_k_template;
4377 
4378 END Validate_Contract_Template;
4379 
4380 -- end of hyang okc
4381 
4382 PROCEDURE Validate_Promotion (
4383      P_Api_Version_Number       IN   NUMBER,
4384      P_Init_Msg_List            IN   VARCHAR2 := FND_API.G_FALSE,
4385      P_Commit                   IN   VARCHAR2 := FND_API.G_FALSE,
4386      p_price_attr_tbl           IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
4387      x_price_attr_tbl           OUT NOCOPY /* file.sql.39 change */    ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
4388      x_return_status            OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
4389      x_msg_count                OUT NOCOPY /* file.sql.39 change */    NUMBER,
4390      x_msg_data                 OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
4391 IS
4392     l_api_name                    CONSTANT VARCHAR2(30) := 'Validate_Promotion';
4393     l_api_version_number          CONSTANT NUMBER   := 1.0;
4394     l_price_attr_tbl              ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4395     m_price_attr_tbl              ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4396     l_search_price_attr1_tbl      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4397     l_search_price_attr2_tbl      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4398     l_search_priceline_attr1_tbl  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4399     l_search_priceline_attr2_tbl  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4400     i                             BINARY_INTEGER;
4401     j                             BINARY_INTEGER;
4402     temp_count                    NUMBER;
4403     G_USER_ID                     NUMBER := FND_GLOBAL.USER_ID;
4404     G_LOGIN_ID                    NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
4405     l_count                       NUMBER := 0;
4406     l_dup_count                   NUMBER := 0;
4407     l_dup_ln_count                NUMBER := 0;
4408     l_list_header_id              NUMBER;
4409     l_list_line_id                NUMBER;
4410     l_price_attribute_id          NUMBER;
4411     adj_rec_exists                VARCHAR2(1):= 'N';
4412 
4413     Cursor C_get_list_lines(p_list_header_id NUMBER) IS
4414     SELECT list_line_id
4415     FROM qp_list_lines
4416     WHERE list_header_id = p_list_header_id;
4417 
4418     Cursor C_get_list_header(p_list_line_id NUMBER) IS
4419     SELECT list_header_id
4420     FROM qp_list_lines
4421     WHERE list_line_id = p_list_line_id;
4422 
4423     Cursor C_get_attr(p_quote_header_id NUMBER,
4424                       p_quote_line_id NUMBER,
4425                       p_pricing_attribute1 VARCHAR2,
4426                       p_pricing_attribute2 VARCHAR2 ) IS
4427     SELECT price_attribute_id
4428     FROM aso_price_attributes
4429     WHERE quote_header_id = p_quote_header_id
4430     AND nvl(quote_line_id,0) = nvl(decode(p_quote_line_id,FND_API.G_MISS_NUM,null,p_quote_line_id),0)
4431     AND nvl(pricing_attribute1,'X') = nvl(p_pricing_attribute1,'X')
4432     AND nvl(pricing_attribute2,'Y') = nvl(p_pricing_attribute2,'Y');
4433 
4434     Cursor C_get_attr1(p_quote_header_id NUMBER,
4435                       p_quote_line_id NUMBER,
4436                       p_list_line_id   NUMBER) IS
4437     SELECT price_attribute_id
4438     FROM aso_price_attributes
4439     WHERE quote_header_id = p_quote_header_id
4440     AND nvl(quote_line_id,0) = nvl(decode(p_quote_line_id,FND_API.G_MISS_NUM,null,p_quote_line_id),0)
4441     AND  pricing_attribute1 IN ( SELECT to_char(qpe.list_header_id)
4442                                  FROM qp_list_lines qpe
4443                                  WHERE qpe.list_line_id = p_list_line_id);
4444 
4445     Cursor C_get_attr2(p_quote_header_id NUMBER,
4446                       p_quote_line_id NUMBER,
4447                       p_list_header_id   NUMBER,
4448                       p_pricing_attribute2 VARCHAR2) IS
4449     SELECT price_attribute_id
4450     FROM aso_price_attributes
4451     WHERE quote_header_id = p_quote_header_id
4452     AND nvl(quote_line_id,0) = nvl(decode(p_quote_line_id,FND_API.G_MISS_NUM,null,p_quote_line_id),0)
4453     AND  (
4454 	  ( nvl(pricing_attribute2,'X') = nvl(p_pricing_attribute2,'X') AND
4455             p_pricing_attribute2 IS NOT NULL
4456            )
4457            OR ( p_pricing_attribute2 IS NULL
4458                 AND  pricing_attribute2 IN ( SELECT to_char(qpe.list_line_id)
4459                                  FROM qp_list_lines qpe
4460                                  WHERE qpe.list_header_id = p_list_header_id)
4461           )
4462     );
4463 
4464 /*
4465     OR  (quote_header_id = p_quote_header_id
4466     	 AND nvl(quote_line_id,0) = nvl(p_quote_line_id,0)
4467     	 AND nvl(pricing_attribute1,'X') = nvl(to_char(p_list_header_id),'X')
4468         )
4469     OR  (quote_header_id = p_quote_header_id
4470     	 AND nvl(quote_line_id,0) = nvl(p_quote_line_id,0)
4471     	 AND nvl(pricing_attribute2,'Y') = nvl(to_char(p_list_line_id),'Y')
4472         )
4473     OR  (NVL(qp.list_line_id,'0') = nvl(to_char(p_list_line_id),'0')
4474          AND quote_header_id = p_quote_header_id
4475     	 AND nvl(quote_line_id,0) = nvl(p_quote_line_id,0)
4476          AND pricing_attribute1 IS NULL
4477     	 AND nvl(pricing_attribute2,'Y') IN ( SELECT qpe.list_line_id
4478                                               FROM qp_list_lines qpe
4479                                               WHERE qpe.list_header_id = qp.list_header_id)
4480         )
4481 */
4482 
4483 BEGIN
4484 
4485 -- Standard Start of API savepoint
4486 SAVEPOINT VALIDATE_PROMOTION_PVT;
4487 
4488 -- Standard call to check for call compatibility.
4489 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4490                                      p_api_version_number,
4491                                      l_api_name,
4492                                      G_PKG_NAME)
4493 THEN
4494    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4495 END IF;
4496 
4497 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
4498 
4499 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4500   aso_debug_pub.add('Start of Validate_Promotion .....',1,'Y');
4501 END IF;
4502 
4503 -- Initialize message list if p_init_msg_list is set to TRUE.
4504 IF FND_API.to_Boolean( p_init_msg_list )
4505 THEN
4506  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4507    aso_debug_pub.add('Begin FND_API.to_Boolean'||p_init_msg_list, 1, 'Y');
4508  END IF;
4509  FND_MSG_PUB.initialize;
4510 END IF;
4511 
4512 x_return_status := FND_API.G_RET_STS_SUCCESS;
4513 
4514 l_price_attr_tbl := p_price_attr_tbl;
4515 m_price_attr_tbl := p_price_attr_tbl;
4516 
4517 
4518 l_count := 0;
4519 adj_rec_exists := 'N';
4520 For i IN 1..m_price_attr_tbl.count LOOP
4521    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4522      aso_debug_pub.add('********Loop No:'||i,1,'N');
4523      aso_debug_pub.add('m_price_attr_tbl(i).operation_code:'||m_price_attr_tbl(i).operation_code,1,'N');
4524    END IF;
4525    If m_price_attr_tbl(i).operation_code = 'CREATE' Then
4526 
4527     If m_price_attr_tbl(i).pricing_attribute1 IS NOT NULL
4528 	    AND m_price_attr_tbl(i).pricing_attribute1 <> FND_API.G_MISS_CHAR THEN
4529 	        m_price_attr_tbl(i).pricing_attribute2 := null;
4530              l_list_header_id := to_number(m_price_attr_tbl(i).pricing_attribute1);
4531              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4532                aso_debug_pub.add('If m_price_attr_tbl(i).pricing_attribute1 IS NOT NULL l_list_header_id:'
4533                                   ||l_list_header_id,1,'N');
4534              END IF;
4535 
4536              If l_search_price_attr1_tbl.exists(l_list_header_id) Then
4537                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4538                    aso_debug_pub.add('p_price_attr1_tbl(i).pricing_attribute1 already searched:'
4539                                       ||l_list_header_id,1,'N');
4540                 END IF;
4541                 l_dup_count := l_dup_count + 1;
4542              else
4543                 l_search_price_attr1_tbl(l_list_header_id).qte_line_index := l_list_header_id;
4544 
4545 	           For j IN 1..l_price_attr_tbl.count LOOP
4546 		          If m_price_attr_tbl(i).pricing_attribute1 = l_price_attr_tbl(j).pricing_attribute1
4547 			        AND l_price_attr_tbl(j).operation_code = 'CREATE' THEN
4548 				       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4549 				          aso_debug_pub.add('Comparing with CREATE incrementing l_count',1,'N');
4550 				       END IF;
4551 				       l_count := l_count + 1;
4552 		          END If;
4553 
4554 		          If m_price_attr_tbl(i).pricing_attribute1 = l_price_attr_tbl(j).pricing_attribute1
4555 			        AND l_price_attr_tbl(j).operation_code = 'DELETE' THEN
4556 				       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4557 				          aso_debug_pub.add('Comparing with DELETE decrementing l_count',1,'N');
4558 				       END IF;
4559 				       l_count := l_count - 1;
4560 		          END If;
4561 
4562 	           End LOOP;--j IN 1..l_price_attr_tbl.count
4563              End If;--l_search_price_attr1_tbl.exists(l_list_header_id)
4564 
4565              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4566                aso_debug_pub.add('After Comparing within PL/SQL table l_count:'||l_count,1,'N');
4567              END IF;
4568 
4569              For C_get_list_lines_rec in C_get_list_lines(l_list_header_id) LOOP
4570                  l_list_line_id := C_get_list_lines_rec.list_line_id;
4571                  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4572                    aso_debug_pub.add('Inside C_get_list_lines list line id to compare:'||l_list_line_id,1,'N');
4573                  END IF;
4574 
4575                  If l_search_price_attr2_tbl.exists(l_list_line_id) Then
4576                     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4577                       aso_debug_pub.add('p_price_attr2_tbl(i).pricing_attribute2 already searched:'
4578                                          ||l_list_line_id,1,'N');
4579                     END IF;
4580                     l_dup_ln_count := l_dup_ln_count + 1;
4581                  else
4582                      l_search_price_attr2_tbl(l_list_line_id).qte_line_index := l_list_line_id;
4583 	                For j IN 1..l_price_attr_tbl.count LOOP
4584                          if ( l_price_attr_tbl(j).pricing_attribute2 = FND_API.G_MISS_CHAR ) then
4585 			             l_price_attr_tbl(j).pricing_attribute2 := null;
4586                          end if;
4587 		               If l_list_line_id = to_number(nvl(l_price_attr_tbl(j).pricing_attribute2,'0'))
4588 			             AND l_price_attr_tbl(j).operation_code = 'CREATE' THEN
4589 				            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4590 				              aso_debug_pub.add('Comparing with CREATE incrementing l_count',1,'N');
4591 				            END IF;
4592 				            l_count := l_count + 1;
4593 		               END If;
4594 
4595 		               If l_list_line_id = to_number(nvl(l_price_attr_tbl(j).pricing_attribute2,'0'))
4596 			             AND l_price_attr_tbl(j).operation_code = 'DELETE' THEN
4597 				            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4598 				               aso_debug_pub.add('Comparing with DELETE decrementing l_count',1,'N');
4599 				            END IF;
4600 				            l_count := l_count - 1;
4601 		               END If;
4602 
4603 	                 End LOOP;--j IN 1..l_price_attr_tbl.count
4604                  End If;--l_search_price_attr2_tbl.exists( l_list_header_id )
4605 
4606                  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4607                     aso_debug_pub.add('After comparing the modifier hdr and ln l_count:'||l_count,1,'N');
4608                  END IF;
4609 
4610              End Loop;-- C_get_list_lines_rec in C_get_list_lines( l_list_header_id )
4611 
4612              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4613                 aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).quote_header_id:'
4614                                   ||m_price_attr_tbl(i).quote_header_id,1,'N');
4615                 aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).quote_line_id:'
4616                                    ||m_price_attr_tbl(i).quote_line_id,1,'N');
4617                 aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).pricing_attribute1:'
4618                                    ||m_price_attr_tbl(i).pricing_attribute1,1,'N');
4619                 aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).pricing_attribute2:'
4620                                    ||nvl(m_price_attr_tbl(i).pricing_attribute2,'null'),1,'N');
4621                 aso_debug_pub.add('B4 C_get_attr: l_list_header_id:'
4622                                    ||l_list_header_id,1,'N');
4623                 aso_debug_pub.add('B4 C_get_attr: l_list_line_id:'
4624                                    ||l_list_line_id,1,'N');
4625              END IF;
4626 
4627              OPEN C_get_attr(m_price_attr_tbl(i).quote_header_id,
4628                              m_price_attr_tbl(i).quote_line_id,
4629                              m_price_attr_tbl(i).pricing_attribute1,
4630                              m_price_attr_tbl(i).pricing_attribute2);
4631              FETCH C_get_attr INTO l_price_attribute_id;
4632              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4633                aso_debug_pub.add('Inside C_get_attr - record existing in db - Price_attribute_Id: '
4634                                   ||l_price_attribute_id,1,'N');
4635                aso_debug_pub.add('Inside C_get_attr - Total # of rows : '
4636                                   ||C_get_attr%ROWCOUNT,1,'N');
4637              END IF;
4638              IF (C_get_attr%FOUND OR C_get_attr%ROWCOUNT > 0) THEN
4639                  adj_rec_exists := 'Y';
4640              END IF;
4641              CLOSE C_get_attr;
4642              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4643                aso_debug_pub.add('Inside C_get_attr - adj_rec_exists : '
4644                                   ||adj_rec_exists,1,'N');
4645              END IF;
4646 
4647              OPEN C_get_attr1(m_price_attr_tbl(i).quote_header_id,
4648                              m_price_attr_tbl(i).quote_line_id,
4649                              l_list_line_id);
4650              FETCH C_get_attr1 INTO l_price_attribute_id;
4651              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4652                aso_debug_pub.add('Inside C_get_attr1 - record existing in db - Price_attribute_Id: '
4653                                   ||l_price_attribute_id,1,'N');
4654                aso_debug_pub.add('Inside C_get_attr1 - Total # of rows : '
4655                                   ||C_get_attr1%ROWCOUNT,1,'N');
4656              END IF;
4657              IF (C_get_attr1%FOUND OR C_get_attr1%ROWCOUNT > 0) THEN
4658                  adj_rec_exists := 'Y';
4659              END IF;
4660              CLOSE C_get_attr1;
4661              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4662                aso_debug_pub.add('Inside C_get_attr1 - adj_rec_exists : '
4663                                   ||adj_rec_exists,1,'N');
4664              END IF;
4665 
4666 
4667              OPEN C_get_attr2(m_price_attr_tbl(i).quote_header_id,
4668                              m_price_attr_tbl(i).quote_line_id,
4669                              l_list_header_id,
4670                              m_price_attr_tbl(i).pricing_attribute2);
4671              FETCH C_get_attr2 INTO l_price_attribute_id;
4672              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4673                aso_debug_pub.add('Inside C_get_attr2 - record existing in db - Price_attribute_Id: '
4674                                   ||l_price_attribute_id,1,'N');
4675                aso_debug_pub.add('Inside C_get_attr2 - Total # of rows : '
4676                                   ||C_get_attr2%ROWCOUNT,1,'N');
4677              END IF;
4678              IF (C_get_attr2%FOUND OR C_get_attr2%ROWCOUNT > 0) THEN
4679                  adj_rec_exists := 'Y';
4680              END IF;
4681              CLOSE C_get_attr2;
4682              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4683                aso_debug_pub.add('Inside C_get_attr2 - adj_rec_exists : '
4684                                   ||adj_rec_exists,1,'N');
4685                aso_debug_pub.add('Before the error stack - for PRICING_ATTRIBUTE1 NOT NULL',1,'N');
4686                aso_debug_pub.add('l_count:'||l_count||' adj_rec_exists:'||adj_rec_exists,1,'N');
4687                aso_debug_pub.add('l_dup_count:'||l_dup_count,1,'N');
4688              END IF;
4689 
4690 
4691              If (l_count > 1 AND l_dup_count >= 1) OR (l_count >= 1 AND adj_rec_exists = 'Y')   Then
4692                /*Duplicate*/
4693 	            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4694 	              aso_debug_pub.add('Duplicate record for list_header_id: '
4695 			     			   ||m_price_attr_tbl(i).pricing_attribute1,1,'N');
4696 	            END IF;
4697                  x_return_status := FND_API.G_RET_STS_ERROR;
4698                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4699                     FND_MESSAGE.Set_Name('ASO', 'ASO_VAL_PROMO_DUPLICATE_HDR');
4700                     FND_MESSAGE.Set_Token('MODHDRID', m_price_attr_tbl(i).pricing_attribute1, FALSE);
4701                     FND_MSG_PUB.Add;
4702                  END IF;
4703                  --RAISE FND_API.G_EXC_ERROR;
4704              End If;
4705     End If;-- m_price_attr_tbl(i).pricing_attribute1 IS NOT NULL
4706 
4707     If m_price_attr_tbl(i).pricing_attribute2 IS NOT NULL
4708 	    AND m_price_attr_tbl(i).pricing_attribute2 <> FND_API.G_MISS_CHAR THEN
4709 
4710 	m_price_attr_tbl(i).pricing_attribute1 := null;
4711 
4712         l_list_line_id := to_number(m_price_attr_tbl(i).pricing_attribute2);
4713         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4714           aso_debug_pub.add('If m_price_attr_tbl(i).pricing_attribute2 IS NOT NULL l_list_line_id:'
4715                              ||l_list_line_id,1,'N');
4716         END IF;
4717 
4718         If l_search_price_attr2_tbl.exists(l_list_line_id) Then
4719            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4720              aso_debug_pub.add('p_price_attr1_tbl(i).pricing_attribute2 already searched:'
4721                                 ||l_list_line_id,1,'N');
4722            END IF;
4723            l_dup_ln_count := l_dup_ln_count + 1;
4724         else
4725             l_search_price_attr2_tbl(l_list_line_id).qte_line_index := l_list_line_id;
4726 
4727 	       For j IN 1..l_price_attr_tbl.count LOOP
4728 		      If m_price_attr_tbl(i).pricing_attribute2 = l_price_attr_tbl(j).pricing_attribute2
4729 			    AND l_price_attr_tbl(j).operation_code = 'CREATE' THEN
4730 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4731 				     aso_debug_pub.add('Comparing with CREATE incrementing l_count',1,'N');
4732 				   END IF;
4733 				   l_count := l_count + 1;
4734 		      END If;
4735 
4736 			 If m_price_attr_tbl(i).pricing_attribute2 = l_price_attr_tbl(j).pricing_attribute2
4737 			    AND l_price_attr_tbl(j).operation_code = 'DELETE' THEN
4738 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4739 				     aso_debug_pub.add('Comparing with DELETE decrementing l_count',1,'N');
4740 				   END IF;
4741 				   l_count := l_count - 1;
4742 		      END If;
4743 
4744 	      End LOOP;--j IN 1..l_price_attr_tbl.count
4745         End If;--l_search_price_attr2_tbl.exists(l_list_line_id)
4746         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4747           aso_debug_pub.add('After Comparing within PL/SQL table l_count:'||l_count,1,'N');
4748         END IF;
4749 
4750         For C_get_list_header_rec in C_get_list_header(l_list_line_id) LOOP
4751 
4752         l_list_header_id := C_get_list_header_rec.list_header_id;
4753         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4754           aso_debug_pub.add('Inside C_get_list_header list header id to compare:'||l_list_header_id,1,'N');
4755         END IF;
4756 
4757         If l_search_price_attr1_tbl.exists(l_list_header_id) Then
4758            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4759              aso_debug_pub.add('p_price_attr1_tbl(i).pricing_attribute2 already searched:'
4760                                 ||l_list_header_id,1,'N');
4761            END IF;
4762            l_dup_count := l_dup_count + 1;
4763         else
4764             l_search_price_attr1_tbl(l_list_header_id).qte_line_index := l_list_header_id;
4765 
4766 	       For j IN 1..l_price_attr_tbl.count LOOP
4767                       if ( l_price_attr_tbl(j).pricing_attribute1 = FND_API.G_MISS_CHAR ) then
4768 			              l_price_attr_tbl(j).pricing_attribute1 := null;
4769                       end if;
4770 		      If l_list_header_id = to_number(nvl(l_price_attr_tbl(j).pricing_attribute1,'0'))
4771 			    AND l_price_attr_tbl(j).operation_code = 'CREATE' THEN
4772 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4773 				     aso_debug_pub.add('Comparing with CREATE incrementing l_count',1,'N');
4774 				   END IF;
4775 				   l_count := l_count + 1;
4776 		      END If;
4777 
4778 			 If l_list_header_id = to_number(nvl(l_price_attr_tbl(j).pricing_attribute1,'0'))
4779 			    AND l_price_attr_tbl(j).operation_code = 'DELETE' THEN
4780 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4781 				     aso_debug_pub.add('Comparing with DELETE decrementing l_count',1,'N');
4782 				   END IF;
4783 				   l_count := l_count - 1;
4784 		      END If;
4785 
4786 	      End LOOP;--j IN 1..l_price_attr_tbl.count
4787         End If;--l_search_price_attr1_tbl.exists( l_list_header_id )
4788 
4789         End Loop;-- C_get_list_header_rec in C_get_list_header( l_list_line_id )
4790         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4791           aso_debug_pub.add('After comparing the modifier hdr and ln l_count:'||l_count,1,'N');
4792           aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).quote_header_id:'
4793                              ||m_price_attr_tbl(i).quote_header_id,1,'N');
4794           aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).quote_line_id:'
4795                              ||m_price_attr_tbl(i).quote_line_id,1,'N');
4796           aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).pricing_attribute1:'
4797                              ||m_price_attr_tbl(i).pricing_attribute1,1,'N');
4798           aso_debug_pub.add('B4 C_get_attr: m_price_attr_tbl(i).pricing_attribute2:'
4799                              ||nvl(m_price_attr_tbl(i).pricing_attribute2,'null'),1,'N');
4800           aso_debug_pub.add('B4 C_get_attr: l_list_header_id:'
4801                              ||l_list_header_id,1,'N');
4802           aso_debug_pub.add('B4 C_get_attr: l_list_line_id:'
4803                              ||l_list_line_id,1,'N');
4804         END IF;
4805 
4806         OPEN C_get_attr(m_price_attr_tbl(i).quote_header_id,
4807                         m_price_attr_tbl(i).quote_line_id,
4808                         m_price_attr_tbl(i).pricing_attribute1,
4809                         m_price_attr_tbl(i).pricing_attribute2);
4810         FETCH C_get_attr INTO l_price_attribute_id;
4811         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4812           aso_debug_pub.add('Inside C_get_attr - record existing in db - Price_attribute_Id: '
4813                              ||l_price_attribute_id,1,'N');
4814           aso_debug_pub.add('Inside C_get_attr - Total # of rows : '
4815                              ||C_get_attr%ROWCOUNT,1,'N');
4816         END IF;
4817         IF (C_get_attr%FOUND OR C_get_attr%ROWCOUNT > 0) THEN
4818             adj_rec_exists := 'Y';
4819         END IF;
4820         CLOSE C_get_attr;
4821         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4822           aso_debug_pub.add('Inside C_get_attr - adj_rec_exists : '
4823                              ||adj_rec_exists,1,'N');
4824         END IF;
4825 
4826         OPEN C_get_attr1(m_price_attr_tbl(i).quote_header_id,
4827                         m_price_attr_tbl(i).quote_line_id,
4828                         l_list_line_id);
4829         FETCH C_get_attr1 INTO l_price_attribute_id;
4830         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4831           aso_debug_pub.add('Inside C_get_attr1 - record existing in db - Price_attribute_Id: '
4832                              ||l_price_attribute_id,1,'N');
4833           aso_debug_pub.add('Inside C_get_attr1 - Total # of rows : '
4834                              ||C_get_attr1%ROWCOUNT,1,'N');
4835         END IF;
4836         IF (C_get_attr1%FOUND OR C_get_attr1%ROWCOUNT > 0) THEN
4837             adj_rec_exists := 'Y';
4838         END IF;
4839         CLOSE C_get_attr1;
4840         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4841           aso_debug_pub.add('Inside C_get_attr1 - adj_rec_exists : '
4842                              ||adj_rec_exists,1,'N');
4843         END IF;
4844 
4845 
4846         OPEN C_get_attr2(m_price_attr_tbl(i).quote_header_id,
4847                         m_price_attr_tbl(i).quote_line_id,
4848                         l_list_header_id,
4849                         m_price_attr_tbl(i).pricing_attribute2);
4850         FETCH C_get_attr2 INTO l_price_attribute_id;
4851         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4852           aso_debug_pub.add('Inside C_get_attr2 - record existing in db - Price_attribute_Id: '
4853                              ||l_price_attribute_id,1,'N');
4854           aso_debug_pub.add('Inside C_get_attr2 - Total # of rows : '
4855                              ||C_get_attr2%ROWCOUNT,1,'N');
4856         END IF;
4857         IF (C_get_attr2%FOUND OR C_get_attr2%ROWCOUNT > 0) THEN
4858             adj_rec_exists := 'Y';
4859         END IF;
4860         CLOSE C_get_attr2;
4861         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4862           aso_debug_pub.add('Inside C_get_attr2 - adj_rec_exists : '
4863                              ||adj_rec_exists,1,'N');
4864           aso_debug_pub.add('Before the error stack - for PRICING_ATTRIBUTE2 NOT NULL',1,'N');
4865           aso_debug_pub.add('l_count:'||l_count||' adj_rec_exists:'||adj_rec_exists,1,'N');
4866           aso_debug_pub.add('l_dup_ln_count:'||l_dup_ln_count,1,'N');
4867         END IF;
4868 
4869 
4870         If ( l_count > 1 AND l_dup_ln_count >= 1) OR (l_count >= 1 AND adj_rec_exists = 'Y')   Then
4871                /*Duplicate*/
4872 	       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4873 	         aso_debug_pub.add('Duplicate record for list_line_id: '
4874 						   ||m_price_attr_tbl(i).pricing_attribute2,1,'N');
4875 	       END IF;
4876                x_return_status := FND_API.G_RET_STS_ERROR;
4877                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4878                   FND_MESSAGE.Set_Name('ASO', 'ASO_VAL_PROMO_DUPLICATE_LN');
4879                   FND_MESSAGE.Set_Token('MODLNID', m_price_attr_tbl(i).pricing_attribute2, FALSE);
4880                   FND_MSG_PUB.Add;
4881                END IF;
4882                --RAISE FND_API.G_EXC_ERROR;
4883         End If;
4884 
4885 
4886     End If;-- m_price_attr_tbl(i).pricing_attribute2 IS NOT NULL
4887 
4888  End If;-- m_price_attr_tbl(i).operation_code = 'CREATE'
4889 
4890 END LOOP;
4891 
4892   -- Standard check for p_commit
4893   IF FND_API.to_Boolean( p_commit ) THEN
4894       COMMIT WORK;
4895   END IF;
4896 
4897   FND_MSG_PUB.Count_And_Get
4898       ( p_encoded    => 'F',
4899         p_count      => x_msg_count,
4900         p_data       => x_msg_data
4901       );
4902 
4903  for l in 1 .. x_msg_count loop
4904     x_msg_data := fnd_msg_pub.get( p_msg_index => l, p_encoded => 'F');
4905     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4906       aso_debug_pub.add('Messge count and get '||x_msg_data, 1, 'Y');
4907       aso_debug_pub.add('Messge count and get '||x_msg_count, 1, 'Y');
4908     END IF;
4909  end loop;
4910 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4911   aso_debug_pub.add('End Validate_Promotion',1,'N');
4912 END IF;
4913 
4914 EXCEPTION
4915       WHEN FND_API.G_EXC_ERROR THEN
4916       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4917         aso_debug_pub.add('after inside EXCEPTION  return status'||x_return_status, 1, 'Y');
4918       END IF;
4919           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4920            P_API_NAME => L_API_NAME
4921           ,P_PKG_NAME => G_PKG_NAME
4922           ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
4923           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4924           ,P_SQLCODE => SQLCODE
4925           ,P_SQLERRM => SQLERRM
4926           ,X_MSG_COUNT => X_MSG_COUNT
4927           ,X_MSG_DATA => X_MSG_DATA
4928           ,X_RETURN_STATUS => X_RETURN_STATUS);
4929 
4930       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4931           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4932            P_API_NAME => L_API_NAME
4933           ,P_PKG_NAME => G_PKG_NAME
4934           ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4935           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4936           ,P_SQLCODE => SQLCODE
4937           ,P_SQLERRM => SQLERRM
4938           ,X_MSG_COUNT => X_MSG_COUNT
4939           ,X_MSG_DATA => X_MSG_DATA
4940           ,X_RETURN_STATUS => X_RETURN_STATUS);
4941 
4942       WHEN OTHERS THEN
4943           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4944            P_API_NAME => L_API_NAME
4945           ,P_PKG_NAME => G_PKG_NAME
4946           ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
4947           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4948           ,P_SQLCODE => SQLCODE
4949           ,P_SQLERRM => SQLERRM
4950           ,X_MSG_COUNT => X_MSG_COUNT
4951           ,X_MSG_DATA => X_MSG_DATA
4952           ,X_RETURN_STATUS => X_RETURN_STATUS);
4953 
4954 END Validate_Promotion;
4955 
4956 
4957 FUNCTION Validate_PaymentTerms(
4958 	p_init_msg_list		IN	VARCHAR2 := FND_API.G_TRUE,
4959 	p_payment_term_id	IN	NUMBER)
4960 RETURN VARCHAR2
4961 IS
4962     CURSOR C_Payment_Terms IS
4963 	SELECT start_date_active, end_date_active FROM RA_TERMS_VL
4964 	WHERE  term_id = p_payment_term_id;
4965 
4966     l_start_date	DATE;
4967     l_end_date		DATE;
4968     x_return_status     VARCHAR2(1);
4969 
4970 BEGIN
4971     -- Initialize message list if p_init_msg_list is set to TRUE.
4972     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4973         FND_MSG_PUB.initialize;
4974     END IF;
4975 
4976     -- Inititalizing Global Debug Flag Variable.
4977 
4978     aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
4979 
4980     --  Initialize API return status to success
4981     x_return_status := FND_API.G_RET_STS_SUCCESS;
4982 
4983     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
4984        aso_debug_pub.add('Validate_PaymentTerms: p_payment_term_id: '||p_payment_term_id, 1, 'N');
4985     END IF;
4986 
4987     IF (p_payment_term_id IS NOT NULL AND p_payment_term_id <> FND_API.G_MISS_NUM) THEN
4988         OPEN C_Payment_Terms;
4989 	FETCH C_Payment_Terms INTO l_start_date, l_end_date;
4990         IF (C_Payment_Terms%NOTFOUND OR
4991 	    (TRUNC(sysdate) NOT BETWEEN NVL(TRUNC(l_start_date), TRUNC(sysdate)) AND
4992 				 NVL(TRUNC(l_end_date), TRUNC(sysdate)))) THEN
4993 	    CLOSE C_Payment_Terms;
4994 	    x_return_status := FND_API.G_RET_STS_ERROR;
4995             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4996 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
4997                 FND_MESSAGE.Set_Token('COLUMN', 'PAYMENT_TERM', FALSE);
4998 			 FND_MESSAGE.Set_Token('VALUE',to_char(p_payment_term_id),FALSE);
4999                 FND_MSG_PUB.ADD;
5000 	    END IF;
5001         ELSE
5002 	    CLOSE C_Payment_Terms;
5003 	END IF;
5004     END IF;
5005 
5006     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5007        aso_debug_pub.add('Validate_PaymentTerms: x_return_status: '||x_return_status, 1, 'N');
5008     END IF;
5009 RETURN x_return_status;
5010 END Validate_PaymentTerms;
5011 
5012 
5013 FUNCTION Validate_FreightTerms(
5014 	p_init_msg_list		IN	VARCHAR2 := FND_API.G_TRUE,
5015 	p_freight_terms_code	IN	VARCHAR2)
5016 RETURN VARCHAR2
5017 IS
5018     CURSOR C_Freight_Terms IS
5019 	SELECT start_date_active, end_date_active FROM OE_LOOKUPS
5020 	WHERE   lookup_type = 'FREIGHT_TERMS'
5021         AND     enabled_flag = 'Y'
5022 	AND     lookup_code  = p_freight_terms_code;
5023 
5024     l_start_date	DATE;
5025     l_end_date		DATE;
5026     x_return_status     VARCHAR2(1);
5027 
5028 BEGIN
5029     -- Initialize message list if p_init_msg_list is set to TRUE.
5030     IF FND_API.to_Boolean( p_init_msg_list ) THEN
5031         FND_MSG_PUB.initialize;
5032     END IF;
5033 
5034     -- Inititalizing Global Debug Flag Variable.
5035 
5036     aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
5037 
5038     --  Initialize API return status to success
5039     x_return_status := FND_API.G_RET_STS_SUCCESS;
5040 
5041     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5042        aso_debug_pub.add('Validate_FreightTerms: p_freight_terms_code: '||p_freight_terms_code, 1, 'N');
5043     END IF;
5044 
5045     IF (p_freight_terms_code IS NOT NULL AND p_freight_terms_code <> FND_API.G_MISS_NUM) THEN
5046         OPEN C_Freight_Terms;
5047 	FETCH C_Freight_Terms INTO l_start_date, l_end_date;
5048         IF (C_Freight_Terms%NOTFOUND OR
5049 	    (TRUNC(sysdate) NOT BETWEEN NVL(TRUNC(l_start_date), TRUNC(sysdate)) AND
5050 				 NVL(TRUNC(l_end_date), TRUNC(sysdate)))) THEN
5051 	    CLOSE C_Freight_Terms;
5052 	    x_return_status := FND_API.G_RET_STS_ERROR;
5053             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5054 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5055                 FND_MESSAGE.Set_Token('COLUMN', 'FREIGHT_TERM', FALSE);
5056 			 FND_MESSAGE.Set_Token('VALUE',p_freight_terms_code,FALSE);
5057                 FND_MSG_PUB.ADD;
5058 	    END IF;
5059         ELSE
5060 	    CLOSE C_Freight_Terms;
5061 	END IF;
5062     END IF;
5063 
5064     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5065        aso_debug_pub.add('Validate_FreightTerms: x_return_status: '||x_return_status, 1, 'N');
5066     END IF;
5067 RETURN x_return_status;
5068 END Validate_FreightTerms;
5069 
5070 
5071 FUNCTION Validate_ShipMethods(
5072 	p_init_msg_list		IN	VARCHAR2   := FND_API.G_TRUE,
5073 	p_ship_method_code	IN	VARCHAR2,
5074 	p_ship_from_org_id      IN      NUMBER     := FND_API.G_MISS_NUM,
5075         p_qte_header_id         IN      NUMBER,
5076         p_qte_line_id           IN      NUMBER := FND_API.G_MISS_NUM)
5077 RETURN VARCHAR2
5078 IS
5079     CURSOR C_ship_method_code (p_org_id NUMBER) IS
5080 	SELECT start_date_active, end_date_active
5081 	FROM wsh_carrier_ship_methods csm,
5082 	     fnd_lookup_values fl
5083 	WHERE  csm.ship_method_code = p_ship_method_code
5084 	AND    csm.organization_id = p_org_id
5085         AND    csm.enabled_flag = 'Y'
5086 	AND    fl.lookup_type = 'SHIP_METHOD'
5087 	AND    fl.lookup_code = csm.ship_method_code
5088 	AND    fl.view_application_id = 3
5089 	AND    fl.LANGUAGE = userenv('LANG')
5090 	AND    fl.enabled_flag = 'Y';
5091 
5092     CURSOR C_qte_header_org_info IS
5093 	SELECT aso.org_id
5094 	FROM   ASO_QUOTE_HEADERS_ALL aso
5095 	WHERE  aso.quote_header_id = p_qte_header_id;
5096 
5097     CURSOR C_qte_line_organization IS
5098 	SELECT aso.organization_id
5099 	FROM   ASO_QUOTE_LINES_ALL aso
5100 	WHERE  aso.quote_line_id = p_qte_line_id;
5101 
5102     CURSOR C_qte_line_org_id_info IS
5103 	SELECT aso.org_id
5104 	FROM   ASO_QUOTE_LINES_ALL aso
5105 	WHERE  aso.quote_line_id = p_qte_line_id;
5106 
5107     l_start_date		DATE;
5108     l_end_date			DATE;
5109     l_org_id            	NUMBER := FND_API.G_MISS_NUM;
5110     l_hdr_org_id        	NUMBER;
5111     l_line_organization_id 	NUMBER;
5112     l_line_org_id        	NUMBER;
5113     x_return_status		VARCHAR2(1);
5114 
5115 BEGIN
5116 
5117     -- Initialize message list if p_init_msg_list is set to TRUE.
5118     IF FND_API.to_Boolean( p_init_msg_list ) THEN
5119         FND_MSG_PUB.initialize;
5120     END IF;
5121 
5122     -- Inititalizing Global Debug Flag Variable.
5123 
5124     aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
5125 
5126     --  Initialize API return status to success
5127     x_return_status := FND_API.G_RET_STS_SUCCESS;
5128 
5129     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5130        aso_debug_pub.add('Validate_ShipMethods: p_ship_method_code :'||p_ship_method_code, 1, 'N');
5131        aso_debug_pub.add('Validate_ShipMethods: p_ship_from_org_id :'||p_ship_from_org_id, 1, 'N');
5132        aso_debug_pub.add('Validate_ShipMethods: p_qte_header_id:'||p_qte_header_id, 1, 'N');
5133        aso_debug_pub.add('Validate_ShipMethods: p_qte_line_id:'||p_qte_line_id, 1, 'N');
5134     END IF;
5135 
5136     IF (p_ship_from_org_id IS NULL OR p_ship_from_org_id = FND_API.G_MISS_NUM) THEN
5137 	IF (p_qte_header_id IS NOT NULL AND p_qte_header_id <> FND_API.G_MISS_NUM) THEN
5138 	    IF (p_qte_line_id IS NULL OR p_qte_line_id = FND_API.G_MISS_NUM) THEN
5139 		-- Header Level
5140 		OPEN  C_qte_header_org_info;
5141 		FETCH C_qte_header_org_info INTO l_hdr_org_id;
5142                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5143 		   aso_debug_pub.add('Validate_ShipMethods: l_hdr_org_id:'||l_hdr_org_id, 1, 'N');
5144 		END IF;
5145 		IF C_qte_header_org_info%FOUND THEN
5146 			l_org_id := TO_NUMBER(OE_PROFILE.VALUE('OE_ORGANIZATION_ID',l_hdr_org_id));
5147 		ELSE
5148 	    		x_return_status := FND_API.G_RET_STS_ERROR;
5149             		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5150 	        		FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5151                 		FND_MESSAGE.Set_Token('COLUMN', 'SHIPPING_METHOD', FALSE);
5152 					FND_MESSAGE.Set_Token('VALUE',p_ship_method_code,FALSE);
5153                 		FND_MSG_PUB.ADD;
5154 	    		END IF;
5155 		END IF;
5156 		 CLOSE C_qte_header_org_info;
5157 	    ELSIF (p_qte_line_id IS NOT NULL AND p_qte_line_id <> FND_API.G_MISS_NUM) THEN
5158 		-- Line Level
5159 		OPEN C_qte_line_organization;
5160 		FETCH C_qte_line_organization INTO l_line_organization_id;
5161                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5162 		   aso_debug_pub.add('Validate_ShipMethods: l_line_organization_id:'||l_line_organization_id, 1, 'N');
5163                 END IF;
5164 		IF C_qte_line_organization%FOUND THEN
5165 		    l_org_id := l_line_organization_id;
5166 		ELSE
5167 		    OPEN C_qte_line_org_id_info;
5168 		    FETCH C_qte_line_org_id_info INTO l_line_org_id;
5169                     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5170 		       aso_debug_pub.add('Validate_ShipMethods: l_line_org_id:'||l_line_org_id, 1, 'N');
5171                     END IF;
5172 		    IF C_qte_line_org_id_info%FOUND THEN
5173 			l_org_id := TO_NUMBER(OE_PROFILE.VALUE('OE_ORGANIZATION_ID',l_line_org_id));
5174 		    ELSE
5175 	    		x_return_status := FND_API.G_RET_STS_ERROR;
5176             		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5177 	        		FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5178                 		FND_MESSAGE.Set_Token('COLUMN', 'SHIPPING_METHOD', FALSE);
5179 					FND_MESSAGE.Set_Token('VALUE',p_ship_method_code,FALSE);
5180                 		FND_MSG_PUB.ADD;
5181 	    		END IF;
5182 	             END IF;
5183 
5184 		     CLOSE C_qte_line_org_id_info;
5185 		END IF;
5186 		 CLOSE C_qte_line_organization;
5187 	    END IF;
5188 	ELSIF (p_qte_header_id IS NULL OR p_qte_header_id = FND_API.G_MISS_NUM) THEN
5189 	    x_return_status := FND_API.G_RET_STS_ERROR;
5190             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5191 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5192                 FND_MESSAGE.Set_Token('COLUMN', 'SHIPPING_METHOD', FALSE);
5193 			 FND_MESSAGE.Set_Token('VALUE',p_ship_method_code,FALSE);
5194                 FND_MSG_PUB.ADD;
5195 	    END IF;
5196 	END IF;
5197     ELSE -- Ship_from_org_id is not null.
5198 	l_org_id := p_ship_from_org_id;
5199     END IF;
5200 
5201 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5202    aso_debug_pub.add('Validate_ShipMethods: l_org_id:'||l_org_id, 1, 'N');
5203    aso_debug_pub.add('Validate_ShipMethods: Before Process x_return_status:'||x_return_status, 1, 'N');
5204 END IF;
5205     IF (p_ship_method_code IS NOT NULL ) AND
5206 -- AND p_ship_method_code <> FND_API.G_MISS_CHAR) AND
5207        (l_org_id IS NOT NULL AND l_org_id <> FND_API.G_MISS_NUM) AND
5208        (x_return_status = FND_API.G_RET_STS_SUCCESS)
5209     THEN
5210         OPEN C_ship_method_code(l_org_id);
5211 	FETCH C_ship_method_code INTO l_start_date, l_end_date;
5212         IF (C_ship_method_code%NOTFOUND OR
5213 	    (TRUNC(sysdate) NOT BETWEEN NVL(TRUNC(l_start_date), TRUNC(sysdate)) AND
5214 				 NVL(TRUNC(l_end_date), TRUNC(sysdate)))) THEN
5215 	    CLOSE C_ship_method_code;
5216 	    x_return_status := FND_API.G_RET_STS_ERROR;
5217             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5218 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5219                 FND_MESSAGE.Set_Token('COLUMN', 'SHIP_METHOD_CODE', FALSE);
5220 			 FND_MESSAGE.Set_Token('VALUE',p_ship_method_code,FALSE);
5221                 FND_MSG_PUB.ADD;
5222 	    END IF;
5223         ELSE
5224 	    CLOSE C_ship_method_code;
5225 	END IF;
5226     END IF;
5227 
5228 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5229    aso_debug_pub.add('Validate_ShipMethods: After Process FINAL RESULT - X_RETURN_STATUS: '||x_return_status, 1, 'N');
5230 END IF;
5231 RETURN x_return_status;
5232 
5233 END Validate_ShipMethods;
5234 
5235 Procedure Validate_ln_type_for_ord_type
5236 (
5237 p_init_msg_list	IN	VARCHAR2,
5238 p_qte_header_rec	IN	ASO_QUOTE_PUB.Qte_Header_Rec_Type,
5239 P_Qte_Line_rec	IN	ASO_QUOTE_PUB.Qte_Line_Rec_Type,
5240 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5241 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5242 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5243 IS
5244 --Validate line type passed in p_qte_line_rec against the Order type
5245 --passed in p_qte_header_rec using the following query:
5246 
5247 Cursor c_ln_type_for_ord_type is
5248 SELECT start_date_active, end_date_active
5249 FROM OE_WF_LINE_ASSIGN_V
5250 WHERE order_type_id = p_qte_header_rec.order_type_id
5251 and line_type_id = p_qte_line_rec.order_line_type_id
5252 and (trunc(sysdate) BETWEEN NVL(start_date_active, sysdate) AND
5253 NVL(end_date_active, sysdate));
5254 
5255 l_start_date date;
5256 l_end_date date;
5257 
5258 Begin
5259 	IF p_qte_line_rec.order_line_type_id IS NOT NULL AND
5260 	   p_qte_line_rec.order_line_type_id <> FND_API.G_MISS_NUM THEN
5261 
5262 		OPEN c_ln_type_for_ord_type;
5263 		FETCH c_ln_type_for_ord_type into l_start_date, l_end_Date;
5264 
5265 		IF c_ln_type_for_ord_type%NOTFOUND THEN
5266 
5267             x_return_status := FND_API.G_RET_STS_ERROR;
5268 
5269             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5270 			     FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_LINE_TYPE');
5271 			     FND_MSG_PUB.ADD;
5272             END IF;
5273         END IF;
5274             CLOSE c_ln_type_for_ord_type;
5275 	END IF;
5276 End Validate_ln_type_for_ord_type;
5277 
5278 Procedure Validate_ln_category_code
5279 (
5280 p_init_msg_list	    IN   VARCHAR2,
5281 p_qte_header_rec    IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
5282 P_Qte_Line_rec	    IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type,
5283 x_return_status     OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
5284 x_msg_count         OUT NOCOPY /* file.sql.39 change */  NUMBER,
5285 x_msg_data          OUT NOCOPY /* file.sql.39 change */  VARCHAR2)
5286 IS
5287 --Validate line category code for the quote line
5288 --against the Order type using the following query:
5289 Cursor c_ln_category_code is
5290 SELECT line_category_code from aso_quote_lines_all
5291 where quote_line_id = p_qte_line_rec.quote_line_id;
5292 
5293 
5294 Cursor c_qte_category_code is
5295 SELECT quote_category_code from aso_quote_headers_all
5296 where quote_header_id = p_qte_header_rec.quote_header_id;
5297 
5298 l_line_category_code VARCHAR2(30);
5299 l_quote_category_code VARCHAR2(240);
5300 
5301 Begin
5302 
5303       OPEN c_ln_category_code;
5304       FETCH c_ln_category_code into l_line_category_code;
5305 	 CLOSE c_ln_category_code;
5306 
5307      IF (p_qte_header_rec.quote_category_code = FND_API.G_MISS_CHAR)  THEN
5308 		OPEN c_qte_category_code;
5309 		FETCH c_qte_category_code into l_quote_category_code;
5310 		CLOSE c_qte_category_code;
5311 	else
5312 		l_quote_category_code := p_qte_header_rec.quote_category_code;
5313 	end if;
5314 
5315 IF l_line_category_code = 'RETURN' THEN
5316         IF (l_quote_category_code <> 'MIXED') THEN
5317 
5318             x_return_status := FND_API.G_RET_STS_ERROR;
5319             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5320                 FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_LINE_CATEGORY_CODE');
5321                 FND_MSG_PUB.ADD;
5322             END IF;
5323         END IF;
5324 
5325 END IF;
5326 
5327 End Validate_ln_category_code;
5328 
5329 
5330 Procedure Validate_po_line_number
5331 (
5332 p_init_msg_list	IN   VARCHAR2 := fnd_api.g_false,
5333 p_qte_header_rec    IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
5334 P_Qte_Line_rec	     IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC,
5335 x_return_status     OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5336 x_msg_count         OUT NOCOPY /* file.sql.39 change */ NUMBER,
5337 x_msg_data          OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5338 IS
5339 -- cursor to find any line payments with po line number
5340 Cursor c_po_ln_number_lines is
5341 SELECT 'x' from aso_payments
5342 where quote_header_id = p_qte_header_rec.quote_header_id
5343 and cust_po_line_number is not null
5344 and cust_po_number is null;
5345 
5346 -- cursor to find po line number from header payment
5347 Cursor c_ln_hd_po_number is
5348 SELECT cust_po_number from aso_payments
5349 where quote_header_id = p_qte_header_rec.quote_header_id
5350 and quote_line_id is null;
5351 
5352 -- cursor to find po number and po line number for line payment
5353 Cursor c_ln_po_line_number is
5354 SELECT cust_po_number, cust_po_line_number from aso_payments
5355 where quote_header_id = p_qte_header_rec.quote_header_id
5356 and quote_line_id = p_qte_line_rec.quote_line_id;
5357 
5358 l_cust_po_line_number   varchar2(50);
5359 l_ln_po_number          varchar2(50);
5360 l_ln_hd_po_number       varchar2(50);
5361 l_po_ln_number_lines    varchar2(50);
5362 
5363 
5364 Begin
5365     x_return_status := FND_API.G_RET_STS_SUCCESS;
5366 
5367     if (P_Qte_Line_rec.quote_line_id is not null) and (P_Qte_Line_rec.quote_line_id <> FND_API.G_MISS_NUM) then
5368 
5369 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5370 			aso_debug_pub.add('Validate_po_line_number:quote_header_id:'||p_qte_header_rec.quote_header_id , 1, 'N');
5371    			aso_debug_pub.add('Validate_po_line_number:quote_line_id:'||P_Qte_Line_rec.quote_line_id , 1, 'N');
5372 	      END IF;
5373 
5374 
5375             OPEN c_ln_po_line_number;
5376 
5377 		FETCH c_ln_po_line_number into l_ln_po_number,l_cust_po_line_number;
5378 
5379 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5380 			aso_debug_pub.add('Validate_po_line_number:l_ln_po_number:'||l_ln_po_number, 1, 'N');
5381    			aso_debug_pub.add('Validate_po_line_number:l_cust_po_line_number:'||l_cust_po_line_number, 1, 'N');
5382 	      END IF;
5383 
5384 		IF c_ln_po_line_number%FOUND AND l_cust_po_line_number is not null THEN
5385 
5386                 IF l_ln_po_number is null THEN
5387 
5388                    OPEN c_ln_hd_po_number;
5389                    FETCH c_ln_hd_po_number into l_ln_hd_po_number;
5390 
5391 		       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5392 				aso_debug_pub.add('Validate_po_line_number:l_ln_hd_po_number:'||l_ln_hd_po_number, 1, 'N');
5393 	             END IF;
5394 
5395 
5396                    IF l_ln_hd_po_number is null THEN
5397                         x_return_status := FND_API.G_RET_STS_ERROR;
5398 
5399                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5400                             FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_PO_NUMBER');
5401                             FND_MSG_PUB.ADD;
5402                         END IF;
5403 
5404                    end if;
5405 
5406                    CLOSE c_ln_hd_po_number;
5407 
5408                 end if;
5409 
5410        end if;
5411                 CLOSE c_ln_po_line_number;
5412 
5413      else
5414 
5415 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5416 			aso_debug_pub.add('Validate_po_line_number:quote_header_id:'||p_qte_header_rec.quote_header_id , 1, 'N');
5417 	      END IF;
5418 
5419             OPEN c_ln_hd_po_number;
5420 		    FETCH c_ln_hd_po_number into l_ln_hd_po_number;
5421 
5422 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
5423 			aso_debug_pub.add('Validate_po_line_number:l_ln_hd_po_number:'||l_ln_hd_po_number, 1, 'N');
5424 	      END IF;
5425 
5426             IF l_ln_hd_po_number is null THEN
5427 
5428                 OPEN c_po_ln_number_lines;
5429 		        FETCH c_po_ln_number_lines into l_po_ln_number_lines;
5430 
5431                 IF l_po_ln_number_lines is not null THEN
5432 
5433                         x_return_status := FND_API.G_RET_STS_ERROR;
5434 
5435                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5436                             FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_PO_NUMBER');
5437                             FND_MSG_PUB.ADD;
5438                         END IF;
5439                 end if;
5440 
5441                 close  c_po_ln_number_lines;
5442 
5443             end if;
5444 
5445             close  c_ln_hd_po_number;
5446 
5447 
5448 	 END IF;
5449 
5450     FND_MSG_PUB.Count_And_Get(
5451 	p_count	=> x_msg_count,
5452 	p_data	=> x_msg_data);
5453 
5454 End Validate_po_line_number;
5455 
5456 
5457 PROCEDURE validate_service_ref_line_id
5458 (
5459 p_init_msg_list          IN    VARCHAR2  := fnd_api.g_false,
5460 p_service_ref_type_code  IN    VARCHAR2,
5461 p_service_ref_line_id    IN    NUMBER,
5462 p_qte_header_id          IN    NUMBER    := fnd_api.g_miss_num,
5463 x_return_status          OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
5464 x_msg_count              OUT NOCOPY /* file.sql.39 change */   NUMBER,
5465 x_msg_data               OUT NOCOPY /* file.sql.39 change */   VARCHAR2)
5466 is
5467 
5468 cursor c_quote is
5469 select quote_line_id from aso_quote_lines_all
5470 where quote_line_id = p_service_ref_line_id
5471 and quote_header_id = p_qte_header_id;
5472 
5473 cursor c_order is
5474 select line_id from oe_order_lines_all
5475 where line_id = p_service_ref_line_id;
5476 
5477 cursor c_customer_product is
5478 select instance_id
5479 from csi_item_instances
5480 where instance_id = p_service_ref_line_id;
5481 
5482 identifier number;
5483 
5484 Begin
5485     if aso_debug_pub.g_debug_flag = 'Y' then
5486        aso_debug_pub.add('Begin validate_service_ref_line_id', 1, 'Y');
5487     end if;
5488 
5489     if p_init_msg_list = fnd_api.g_true then
5490         fnd_msg_pub.initialize;
5491     end if;
5492 
5493     x_return_status := fnd_api.g_ret_sts_success;
5494 
5495     if p_service_ref_type_code = 'QUOTE' then
5496 
5497        open c_quote;
5498        fetch c_quote into identifier;
5499 
5500        if aso_debug_pub.g_debug_flag = 'Y' then
5501           aso_debug_pub.add('validate_service_ref_line_id: Quote: identifier: '|| identifier, 1, 'Y');
5502        end if;
5503 
5504        if c_quote%notfound then
5505 
5506           x_return_status := fnd_api.g_ret_sts_error;
5507 
5508           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5509 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5510              FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_LINE_ID', FALSE);
5511 		   FND_MESSAGE.Set_Token('VALUE',p_service_ref_line_id,FALSE);
5512              FND_MSG_PUB.ADD;
5513 	     END IF;
5514 
5515        end if;
5516 
5517        close c_quote;
5518 
5519     elsif p_service_ref_type_code = 'ORDER' then
5520 
5521        open c_order;
5522        fetch c_order into identifier;
5523 
5524        if aso_debug_pub.g_debug_flag = 'Y' then
5525           aso_debug_pub.add('validate_service_ref_line_id: Order: identifier: '|| identifier, 1, 'Y');
5526        end if;
5527 
5528        if c_order%notfound then
5529 
5530           x_return_status := fnd_api.g_ret_sts_error;
5531 
5532           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5533 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5534              FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_LINE_ID', FALSE);
5535 		   FND_MESSAGE.Set_Token('VALUE',p_service_ref_line_id,FALSE);
5536              FND_MSG_PUB.ADD;
5537 	     END IF;
5538 
5539        end if;
5540 
5541        close c_order;
5542 
5543     elsif p_service_ref_type_code = 'CUSTOMER_PRODUCT' then
5544 
5545        open c_customer_product;
5546        fetch c_customer_product into identifier;
5547 
5548        if aso_debug_pub.g_debug_flag = 'Y' then
5549           aso_debug_pub.add('validate_service_ref_line_id: c_customer_product: identifier: '|| identifier, 1, 'Y');
5550        end if;
5551 
5552        if c_customer_product%notfound then
5553 
5554           x_return_status := fnd_api.g_ret_sts_error;
5555 
5556           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5557 	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5558              FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_LINE_ID', FALSE);
5559 		   FND_MESSAGE.Set_Token('VALUE',p_service_ref_line_id,FALSE);
5560              FND_MSG_PUB.ADD;
5561 	     END IF;
5562 
5563        end if;
5564 
5565        close c_customer_product;
5566 
5567     end if;
5568 
5569 End validate_service_ref_line_id;
5570 
5571 --Changes for Validating Defaulting Parameters (Start):14/09/2005
5572 PROCEDURE VALIDATE_DEFAULTING_DATA(
5573 				P_quote_header_rec		IN		ASO_QUOTE_PUB.QTE_HEADER_REC_TYPE,
5574 				P_quote_line_rec		IN		ASO_QUOTE_PUB.QTE_LINE_Rec_Type,
5575 				P_Shipment_header_rec		IN		ASO_QUOTE_PUB.shipment_rec_type,
5576 				P_shipment_line_rec		IN		ASO_QUOTE_PUB.shipment_rec_type,
5577 				P_Payment_header_rec		IN		ASO_QUOTE_PUB.Payment_Rec_Type,
5578 				P_Payment_line_rec		IN		ASO_QUOTE_PUB.Payment_Rec_Type,
5579 				P_tax_header_rec		IN		ASO_QUOTE_PUB.TAX_DETAIL_REC_TYPE,
5580 				P_tax_line_rec			IN		ASO_QUOTE_PUB.TAX_DETAIL_REC_TYPE,
5581 				p_def_object_name		IN		VARCHAR,
5582 				X_quote_header_rec		OUT NOCOPY	ASO_QUOTE_PUB.QTE_HEADER_REC_TYPE,
5583 				X_quote_line_rec		OUT NOCOPY	ASO_QUOTE_PUB.QTE_LINE_Rec_Type,
5584 				X_Shipment_header_rec		OUT NOCOPY	ASO_QUOTE_PUB.shipment_rec_type,
5585 				X_Shipment_line_rec		OUT NOCOPY       ASO_QUOTE_PUB.shipment_rec_type,
5586 				X_Payment_header_rec		OUT NOCOPY	ASO_QUOTE_PUB.Payment_Rec_Type,
5587 				X_Payment_line_rec		OUT NOCOPY      ASO_QUOTE_PUB.Payment_Rec_Type,
5588 				X_tax_header_rec		OUT NOCOPY	ASO_QUOTE_PUB.TAX_DETAIL_REC_TYPE,
5589 				X_tax_line_rec			OUT NOCOPY	ASO_QUOTE_PUB.TAX_DETAIL_REC_TYPE,
5590 				X_RETURN_STATUS			OUT NOCOPY	VARCHAR2,
5591 				X_MSG_DATA			OUT NOCOPY	VARCHAR2,
5592 				X_MSG_COUNT			OUT NOCOPY	VARCHAR2
5593 
5594 				) is
5595 
5596 
5597 l_data_exists		VARCHAR2(10);
5598 P_Api_Version_Number    NUMBER;
5599 P_Init_Msg_List		VARCHAR2(100) := FND_API.G_FALSE ;
5600 l_api_version_number	CONSTANT NUMBER   := 1.0;
5601 l_api_name		CONSTANT VARCHAR2(30) := 'VALIDATE_DEFAULTING_DATA';
5602 G_PKG_NAME		CONSTANT VARCHAR2(30) := 'ASO_VALIDATE_PVT';
5603 l_periodicity_profile	varchar2(30);
5604 P_FLAG				VARCHAR2(10);
5605 P_HEADER			VARCHAR2(1);
5606 
5607 
5608 CURSOR C_FOB(p_lookup_code varchar2)is
5609 SELECT 1 FROM DUAL WHERE exists
5610 (
5611 	SELECT  meaning fob
5612 	FROM	ar_lookups
5613 	WHERE	lookup_type = 'FOB'
5614 	AND	enabled_flag = 'Y'
5615 	AND	trunc(sysdate) BETWEEN NVL(start_date_active, trunc(sysdate))
5616 	AND	NVL(end_date_active, trunc(sysdate))
5617 	AND     lookup_code = p_lookup_code
5618 ) ;
5619 
5620 CURSOR	C_SHIPMENT_PRIORITY_CODE(p_shipment_priority_code varchar2) IS
5621 SELECT 1 FROM DUAL WHERE EXISTS
5622 (
5623 	SELECT	meaning shipment_priority
5624 	FROM	oe_lookups
5625 	WHERE   lookup_type = 'SHIPMENT_PRIORITY'
5626 	AND	enabled_flag = 'Y'
5627 	AND	trunc(sysdate) between nvl(start_date_active, trunc(sysdate)) and nvl(end_date_active, trunc(sysdate))
5628 	AND	lookup_code = p_shipment_priority_code
5629 );
5630 
5631 CURSOR C_SALESCHANNEL(p_lookup_code varchar2) is
5632 SELECT 1 FROM DUAL WHERE exists
5633 (
5634 	SELECT	lookup_code
5635 	FROM	fnd_lookup_values_vl
5636 	WHERE	lookup_type = 'SALES_CHANNEL'
5637 	AND	view_application_id = 660
5638 	AND	enabled_flag = 'Y'
5639 	AND	trunc( NVL(start_date_active, sysdate) ) <=  trunc( sysdate )
5640 	AND	trunc( NVL(end_date_active, sysdate) ) >= trunc( sysdate )
5641 	and	lookup_code = p_lookup_code
5642  );
5643 
5644 
5645 CURSOR C_QOTHDDET_CURRENCY_NOT_NULL(p_currency_code varchar2,p_price_list_id varchar2) is
5646 SELECT 1 FROM DUAL WHERE exists
5647 (
5648  SELECT   d.currency_code currency_code
5649  FROM     Fnd_currencies      d
5650          ,qp_currency_details b
5651          ,qp_list_headers_b   c
5652  WHERE   c.list_header_id = p_price_list_id
5653  AND  b.currency_header_id = c.currency_header_id
5654  AND  d.currency_code = b.to_currency_code
5655  AND  c.list_type_code IN ('PRL', 'AGR')
5656  AND  d.currency_flag = 'Y'
5657  AND  d.enabled_flag = 'Y'
5658  AND  trunc(sysdate) between trunc(nvl(d.start_date_active,sysdate)) and trunc(nvl(d.end_date_active,sysdate))
5659  and  trunc(sysdate) between trunc(nvl(c.start_date_active,sysdate)) and trunc(nvl(c.end_date_active,sysdate))
5660  and  trunc(sysdate) between trunc(nvl(b.start_date_active,sysdate)) and trunc(nvl(b.end_date_active,sysdate))
5661  AND  d.currency_code = p_currency_code
5662  UNION
5663  SELECT    b.currency_code currency_code
5664  FROM      fnd_currencies b,qp_list_headers_b c
5665  WHERE     c.currency_code = b.currency_code
5666  AND  c.list_header_id = p_price_list_id
5667  AND  c.list_type_code IN ('PRL', 'AGR')
5668  AND  b.currency_flag = 'Y'
5669  AND  b.enabled_flag = 'Y'
5670  and  trunc(sysdate) between trunc(nvl(b.start_date_active,sysdate)) and trunc(nvl(b.end_date_active,sysdate))
5671  AND  b.currency_code = p_currency_code
5672  );
5673 
5674 
5675 CURSOR C_QOTHDDET_CURRENCY_NULL(p_currency_code varchar2) is
5676 SELECT 1 FROM DUAL WHERE exists
5677 (
5678       SELECT    b.currency_code
5679       FROM      fnd_currencies b
5680       WHERE     b.currency_flag = 'Y'
5681       AND       b.enabled_flag = 'Y'
5682       AND       trunc(sysdate) between trunc(nvl(start_date_active,sysdate)) and trunc(nvl(end_date_active,sysdate))
5683       and       b.currency_code = p_currency_code
5684  );
5685 
5686 --New Cursor(s) start
5687 CURSOR C_PAYMENT_TYPE(p_lookup_code varchar2) is		--Payment Type
5688 SELECT 1 FROM DUAL WHERE exists
5689 (
5690 	SELECT	Lookup_Code Payment_Type_Code
5691 	from	ASO_LOOKUPS
5692 	WHERE	LOOKUP_TYPE = 'ASO_PAYMENT_TYPE'
5693 	and	lookup_code <> 'PO'
5694 	and	trunc(nvl(start_date_active,sysdate)) <= trunc(sysdate)
5695 	and	trunc(nvl(end_daTe_active,sysdate)) >=   trunc (sysdate)
5696 	and	enabled_flag = 'Y'
5697 	and	lookup_code  = p_lookup_code
5698 );
5699 
5700 CURSOR C_CREDIT_CARD_TYPE(p_credit_card_code varchar2) is	--Credit Card Type
5701 SELECT 1 FROM DUAL WHERE exists
5702 (
5703 	SELECT	CARD_ISSUER_CODE credit_card_code
5704 	FROM	IBY_CREDITCARD_ISSUERS_V
5705 	where   CARD_ISSUER_CODE = p_credit_card_code
5706 );
5707 
5708 CURSOR C_DEMAND_CLASS(p_lookup_code varchar2) is		--Demand Class
5709 SELECT 1 FROM DUAL WHERE exists
5710 (
5711 	 Select lookup_code Demand_Class_Code,
5712 		meaning Demand_Class,
5713 		description
5714 	 From 	FND_COMMON_LOOKUPS
5715 	 Where	lookup_type = 'DEMAND_CLASS'
5716 	 And	application_id = 700
5717 	 And	enabled_flag = 'Y'
5718 	 And	trunc(sysdate) Between NVL(start_date_active,trunc(sysdate))
5719 	 And	NVL(end_date_active,trunc(sysdate))
5720 	 And    lookup_code = p_lookup_code
5721  );
5722 
5723 CURSOR C_REQUEST_DATE_TYPE(p_lookup_code varchar2) is		--Request Date Type
5724 SELECT 1 FROM DUAL WHERE exists
5725 (
5726 	Select	lookup_code
5727 	from	oe_lookups
5728 	where	lookup_type='REQUEST_DATE_TYPE'
5729 	and	lookup_code = p_lookup_code
5730 	and	ENABLED_FLAG = 'Y'
5731 	and	trunc(sysdate) between trunc(start_date_active)
5732 	and	trunc(nvl(end_date_active,sysdate))
5733 );
5734 
5735 CURSOR C_REQUEST_DATE(p_request_date date) is		--Request Date(Confirm it)
5736 SELECT 1 FROM DUAL WHERE exists
5737 (
5738 	select 1 from dual where trunc(p_request_date) >= trunc(sysdate)
5739 );
5740 
5741 CURSOR C_OPERATING_UNIT(p_org_id varchar2) is
5742 select DECODE(MO_GLOBAL.CHECK_ACCESS(p_org_id),'Y','Y','N',NULL,NULL) from dual ;
5743 
5744 
5745 CURSOR C_CHARGE_PERIODICITY_CODE(p_periodicity_code VARCHAR2,p_periodicity_profile VARCHAR2) is		--CHARGE_PERIODICITY
5746 SELECT 1 FROM DUAL WHERE exists
5747 (
5748 	Select distinct uom_code
5749 	From  MTL_UNITS_OF_MEASURE_VL --Changed mtl_uom_conversions to MTL_UNITS_OF_MEASURE_VL 05/10/2005(Yogeshwar)
5750 	Where uom_class=p_periodicity_profile
5751 	And uom_code=p_periodicity_code
5752 );
5753 
5754 CURSOR C_AUTOMATIC_PRICING(p_lookup_code varchar2) IS                          --Auotmatic Pricing
5755 SELECT 1 FROM DUAL WHERE exists
5756 (
5757 	select	lookup_code
5758 	from	aso_lookups
5759 	where	lookup_type='ASO_PRICE_TAX_COMPUTE_OPTION'
5760 	and	lookup_code = p_lookup_code
5761 	and	ENABLED_FLAG = 'Y'
5762 	and	trunc(sysdate) between trunc(start_date_active)
5763 	and	trunc(nvl(end_date_active,sysdate))
5764 
5765 );
5766 
5767 
5768 CURSOR C_AUTOMATIC_TAX(p_lookup_code varchar2) IS                          --Auotmatic Tax
5769 SELECT 1 FROM DUAL WHERE exists
5770 (
5771 	select	lookup_code
5772 	from	aso_lookups
5773 	where	lookup_type='ASO_PRICE_TAX_COMPUTE_OPTION'
5774 	and	lookup_code = p_lookup_code
5775 	and	ENABLED_FLAG = 'Y'
5776 	and	trunc(sysdate) between trunc(start_date_active)
5777 	and	trunc(nvl(end_date_active,sysdate))
5778 
5779 );
5780 
5781 --New Cursors end
5782 
5783 
5784 ---                             TCA  Routines  Start                             --------------------------------
5785 
5786 --1)                            Validate Phone
5787 PROCEDURE VALIDATE_PHONE
5788 			(	p_phone_id	varchar2,
5789 				p_party_id	varchar2,		-- QOTHDDET_MAIN.sold_to_contact_party_id
5790 				p_cust_party_id varchar2		-- QOTHDDET_MAIN.sold_to_cust_party_id'
5791 			) is
5792 
5793 
5794 CURSOR C_VALIDATE_PHONE_CONTACT IS
5795 SELECT 1 FROM DUAL WHERE EXISTS
5796 	(
5797 		SELECT	phone.contact_point_id
5798 		FROM	HZ_CONTACT_POINTS phone,
5799 			HZ_PARTIES hp
5800 		WHERE	HP.party_id = p_party_id        --When contact is specified
5801 		AND	phone.owner_table_id = hp.party_id
5802 		AND	hp.status = 'A'
5803 		AND	phone.status = 'A'
5804 		AND	phone.owner_table_name = 'HZ_PARTIES'
5805 		AND	phone.contact_point_type = 'PHONE'
5806 		AND	phone.contact_point_id = p_phone_id
5807 	);
5808 
5809 
5810 CURSOR C_VALIDATE_PHONE_CUSTOMER IS -- when customer is specified and party_type is of type 'PERSON'
5811 SELECT 1 FROM DUAL WHERE EXISTS
5812 	(
5813 
5814 		SELECT	phone.contact_point_id
5815 		FROM	HZ_CONTACT_POINTS phone,
5816 			HZ_PARTIES hp
5817 		WHERE	HP.party_id = p_cust_party_id
5818 		AND	phone.owner_table_id = hp.party_id
5819 		AND	hp.status = 'A'
5820 		AND	phone.status = 'A'
5821 		AND	phone.owner_table_name = 'HZ_PARTIES'
5822 		AND	phone.contact_point_type = 'PHONE'
5823 		AND	phone.contact_point_id = p_phone_id
5824 	);
5825 
5826 l_data_exists varchar2(10);
5827 l_cust_party_type varchar(20);
5828 
5829 BEGIN
5830 
5831 SELECT	PARTY_TYPE                    --Selecting the party type from HZ_PARTIES
5832 INTO	l_cust_party_type
5833 FROM	HZ_PARTIES
5834 WHERE	PARTY_ID = nvl(p_party_id,p_cust_party_id);
5835 
5836 --When contact is specified
5837 IF p_party_id is not null then
5838 	aso_debug_pub.add('Before Opening the cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5839 	OPEN C_VALIDATE_PHONE_CONTACT ;
5840 
5841 	aso_debug_pub.add('After Opening the cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5842 	FETCH C_VALIDATE_PHONE_CONTACT INTO l_data_exists ;
5843 
5844 	aso_debug_pub.add('After Fetching the cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5845 
5846 	IF C_VALIDATE_PHONE_CONTACT%FOUND THEN
5847 		x_quote_header_rec.PHONE_ID := p_phone_id;
5848 	ELSE
5849 		x_quote_header_rec.PHONE_ID := NULL ;
5850                 aso_debug_pub.add('No Data Found for Cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5851 
5852 		FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
5853 		FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_PHONE_NO', TRUE);
5854 		FND_MSG_PUB.ADD;
5855 	END IF;
5856 	aso_debug_pub.add('before Closing the Cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5857 	CLOSE C_VALIDATE_PHONE_CONTACT;
5858         aso_debug_pub.add('After Closing the Cursor...C_VALIDATE_PHONE_CONTACT', 1, 'Y');
5859 END IF;
5860 
5861 -- when customer is specified and party_type is of type 'PERSON'
5862 
5863 IF  p_cust_party_id is NOT NULL AND l_cust_party_type = 'PERSON' THEN
5864 	aso_debug_pub.add('Before Opening the cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5865 	OPEN C_VALIDATE_PHONE_CUSTOMER ;
5866 	aso_debug_pub.add('After Opening the cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5867 	FETCH C_VALIDATE_PHONE_CUSTOMER INTO l_data_exists ;
5868 	aso_debug_pub.add('After Fetching the cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5869 
5870 	IF C_VALIDATE_PHONE_CUSTOMER%FOUND THEN
5871 		x_quote_header_rec.PHONE_ID := p_phone_id;
5872 	ELSE
5873 		x_quote_header_rec.PHONE_ID := NULL ;
5874                 aso_debug_pub.add('No Data Found for Cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5875 
5876 		FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
5877 		FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_PHONE_NO', TRUE);
5878 		FND_MSG_PUB.ADD;
5879 	END IF;
5880         aso_debug_pub.add('Before Closing the Cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5881 	CLOSE C_VALIDATE_PHONE_CUSTOMER;
5882         aso_debug_pub.add('After Closing the Cursor...C_VALIDATE_PHONE_CUSTOMER', 1, 'Y');
5883 END IF;
5884 
5885 END VALIDATE_PHONE;
5886 
5887 
5888 --2):			Validate Customer
5889 PROCEDURE VALIDATE_CUSTOMER
5890 (	p_cust_party_id varchar2,
5891 	p_resource_id   varchar2,
5892 	p_flag          varchar2,
5893 	p_header        varchar2
5894 ) IS
5895 
5896 --Routine for End Customer
5897 -- p_flag possible values END-
5898 -- p_header possible values Y and N
5899 
5900 CURSOR C_CUST_PARTY IS
5901 SELECT 1 FROM DUAL WHERE EXISTS
5902 (
5903 	SELECT	hp.party_name  --(Base Query)
5904 	FROM	HZ_PARTIES HP
5905 	WHERE	hp.party_type in ('PERSON','ORGANIZATION')
5906 	AND	hp.status =   'A'
5907 	AND	HP.PARTY_ID = p_cust_party_id
5908 );
5909 
5910 
5911 -- When ASN_CUST_ACCESS = T and manager_flag = 'Y'
5912 CURSOR C_CUST_PARTY_MANAGER IS
5913 SELECT 1 FROM DUAL WHERE EXISTS
5914 (
5915 		select null
5916 		from   HZ_PARTIES P
5917 		where  P.status = 'A'
5918 		AND	  p.party_type in ('PERSON','ORGANIZATION')
5919 		AND	  P.party_id = p_cust_party_id
5920 		AND	  EXISTS ( SELECT null
5921 				      FROM   as_accesses_all_all secu
5922 				      WHERE  secu.customer_id = P.party_id
5923 				      and  secu.delete_flag is null
5924 				      and  secu.sales_group_id in (
5925 									SELECT  jrgd.group_id
5926 									FROM    jtf_rs_groups_denorm jrgd,
5927 										jtf_rs_group_usages  jrgu
5928 									WHERE   jrgd.parent_group_id  IN (
5929 													select	u.group_id
5930 													from	jtf_rs_rep_managers mgr,
5931 														jtf_rs_group_usages u
5932 													where	mgr.parent_resource_id = p_resource_id
5933 													and     trunc(sysdate) between trunc(mgr.start_date_active)
5934 													and	trunc(nvl(mgr.end_date_active,sysdate))
5935 													and     mgr.hierarchy_type = 'MGR_TO_REP'
5936 													and     mgr.group_id = u.group_id
5937 													and     u.usage in ('SALES','PRM')
5938 													)
5939 					AND trunc(jrgd.start_date_active) <= TRUNC(SYSDATE)
5940 					AND trunc(NVL(jrgd.end_date_active, SYSDATE)) >= TRUNC(SYSDATE)
5941 					AND jrgu.group_id = jrgd.group_id
5942 					AND jrgu.usage  in ('SALES', 'PRM'))
5943 					AND secu.lead_id IS NULL
5944 					AND secu.sales_lead_id IS NULL )
5945 					UNION ALL
5946 					SELECT null
5947 					FROM   as_accesses_all_all secu,
5948 						HZ_PARTIES P
5949 					WHERE  secu.customer_id = P.party_id
5950 					AND  secu.lead_id IS NULL
5951 					AND secu.sales_lead_id IS NULL
5952 					AND secu.delete_flag is NULL
5953 					AND salesforce_id = p_resource_id
5954 
5955 ) ;
5956 
5957 -- When ASN_CUST_ACCESS = T and manager_flag = 'N'
5958 
5959 CURSOR C_CUST_PARTY_NO_MANAGER IS
5960 SELECT 1 FROM DUAL WHERE EXISTS
5961 (
5962 
5963 	select	P.party_name
5964 	from	HZ_PARTIES P
5965 	where	P.status = 'A'
5966 	AND	P.party_id = p_cust_party_id
5967 	AND	p.party_type in ('PERSON','ORGANIZATION')
5968 	AND	(exists  (SELECT null
5969 				FROM   as_accesses_all secu
5970 				WHERE secu.customer_id = p.party_id
5971 				AND secu.lead_id IS NULL
5972 				AND secu.sales_lead_id IS NULL                                                                                                         AND salesforce_id = p_resource_id
5973 			  )
5974 		)
5975 
5976 );
5977 
5978 Cursor C_Mgr_Check  Is   --to check the manager flag
5979 select 1 from dual where exists
5980 	(
5981 	     SELECT  MGR.group_id
5982 	     FROM    jtf_rs_rep_managers MGR ,
5983 		        jtf_rs_group_usages U
5984 	     WHERE   U.usage  = 'SALES'
5985 	     AND     U.group_id = MGR.group_id
5986 	     AND     trunc(MGR.start_date_active)  <= trunc(SYSDATE)
5987 	     AND     trunc(NVL(MGR.end_date_active, SYSDATE)) >= trunc(SYSDATE)
5988 	     AND     MGR.parent_resource_id = MGR.resource_id
5989 	     AND     MGR.hierarchy_type in ('MGR_TO_MGR', 'MGR_TO_REP')
5990 	     AND     MGR.parent_resource_id = p_resource_id
5991 	);
5992 
5993 l_data_exists	VARCHAR2(10);
5994 l_manager_flag	VARCHAR2(1);
5995 
5996 BEGIN
5997 
5998 IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'F' THEN --Base Query
5999 
6000 	aso_debug_pub.add('Before Opening the cursor...C_CUST_PARTY', 1, 'Y');
6001 
6002 	OPEN C_CUST_PARTY ;
6003 	aso_debug_pub.add('After Opening the cursor...C_CUST_PARTY', 1, 'Y');
6004 	FETCH C_CUST_PARTY INTO l_data_exists ;
6005 	aso_debug_pub.add('After Fetching the cursor...C_CUST_PARTY', 1, 'Y');
6006 
6007 	IF C_CUST_PARTY%FOUND THEN
6008 		aso_debug_pub.add('Value of p_flag is..'||p_flag, 1, 'Y');
6009 		aso_debug_pub.add('Value of p_header is..'||p_header, 1, 'Y');
6010 
6011 		IF ( p_flag = 'SOLD' ) THEN
6012 			IF ( p_header = 'Y' ) THEN
6013 			   x_quote_header_rec.cust_party_id := p_cust_party_id;
6014 			END IF;
6015 		END IF;
6016 
6017 		IF ( p_flag = 'END' ) THEN
6018 			IF ( p_header = 'Y' ) THEN
6019 			   x_quote_header_rec.end_customer_cust_party_id := p_cust_party_id;
6020 			END IF;
6021 			IF ( p_header = 'N' ) THEN
6022 			   x_quote_line_rec.end_customer_cust_party_id := p_cust_party_id;
6023 			END IF;
6024 		END IF;
6025 
6026 	ELSE
6027 		IF ( p_flag = 'SOLD' ) THEN
6028 			IF ( p_header = 'Y' ) THEN
6029 			   x_quote_header_rec.cust_party_id := NULL;
6030 			   aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY(Line Header)', 1, 'Y');
6031 
6032 			   FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6033 			   FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_CUSTOMER', TRUE);
6034 			   FND_MSG_PUB.ADD;
6035 			END IF;
6036 		END IF;
6037 
6038 		IF ( p_flag = 'END' ) THEN
6039 			IF ( p_header = 'Y' ) THEN
6040 			   x_quote_header_rec.end_customer_cust_party_id := NULL;
6041 			   aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY(Line Header)', 1, 'Y');
6042 
6043 			   FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6044 			   FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_CUSTOMER', TRUE);
6045 			   FND_MSG_PUB.ADD;
6046 			END IF;
6047 
6048 			IF ( p_header = 'N' ) THEN
6049 			   x_quote_line_rec.end_customer_cust_party_id := NULL;
6050 			   aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY(Line End)', 1, 'Y');
6051 			END IF;
6052 		END IF;
6053 	END IF;
6054         aso_debug_pub.add('Before Closing the Cursor...C_CUST_PARTY', 1, 'Y');
6055 	CLOSE C_CUST_PARTY;
6056         aso_debug_pub.add('After Closing the Cursor...C_CUST_PARTY', 1, 'Y');
6057 END IF;
6058 
6059 
6060 IF (NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'T' AND p_resource_id IS NOT NULL) THEN
6061 
6062 	aso_debug_pub.add('Before Opening the cursor...C_Mgr_Check', 1, 'Y');
6063 	OPEN C_Mgr_Check    ;              --Assigning the manager flag
6064 	aso_debug_pub.add('After Opening the cursor...C_Mgr_Check', 1, 'Y');
6065 	FETCH C_Mgr_Check INTO l_data_exists ;
6066 	aso_debug_pub.add('After Fetching the cursor...C_Mgr_Check', 1, 'Y');
6067 
6068 	IF C_Mgr_Check%FOUND THEN
6069 		l_manager_flag := 'Y';
6070 	ELSE
6071 		l_manager_flag := 'N';
6072                 aso_debug_pub.add('No Data Found for Cursor...C_Mgr_Check', 1, 'Y');
6073 	END IF ;
6074 
6075 	CLOSE C_Mgr_Check ;
6076 
6077 	IF l_manager_flag = 'Y' THEN
6078 
6079 		OPEN C_CUST_PARTY_MANAGER;
6080 		FETCH C_CUST_PARTY_MANAGER INTO l_data_exists ;
6081 
6082 		IF C_CUST_PARTY_MANAGER%FOUND THEN
6083 
6084 		   IF ( p_flag = 'SOLD' ) THEN
6085 		      IF ( p_header = 'Y' ) THEN
6086 			x_quote_header_rec.cust_party_id := p_cust_party_id;
6087                       END IF;
6088                    END IF;
6089 
6090 		   IF ( p_flag = 'END' ) THEN
6091 		      IF ( p_header = 'Y' ) THEN
6092 			x_quote_header_rec.end_customer_cust_party_id := p_cust_party_id;
6093                       END IF;
6094 	              IF ( p_header = 'N' ) THEN
6095 		        x_quote_line_rec.end_customer_cust_party_id := p_cust_party_id;
6096                       END IF;
6097 
6098                    END IF;
6099 		ELSE
6100 		   IF ( p_flag = 'SOLD' ) THEN
6101 	               IF ( p_header = 'Y' ) THEN
6102 
6103 				x_quote_header_rec.cust_party_id := NULL;
6104 				aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY_MANAGER(Line/Header)', 1, 'Y');
6105 
6106 				FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6107 				FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_CUSTOMER', TRUE);
6108 				FND_MSG_PUB.ADD;
6109                         END IF;
6110                    END IF;
6111 
6112 		   IF ( p_flag = 'END' ) THEN
6113 	               IF ( p_header = 'Y' ) THEN
6114 
6115 				x_quote_header_rec.end_customer_cust_party_id := NULL;
6116 				aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY_MANAGER(Line/Header)', 1, 'Y');
6117 
6118 				FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6119 				FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_CUSTOMER', TRUE);
6120 				FND_MSG_PUB.ADD;
6121                         END IF;
6122 
6123 		        IF ( p_header = 'N' ) THEN
6124 				x_quote_line_rec.end_customer_cust_party_id := NULL;
6125 				aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY_MANAGER(Line/End)', 1, 'Y');
6126 		        END IF;
6127                    END IF;
6128 		END IF;
6129 		CLOSE C_CUST_PARTY_MANAGER;
6130 	END IF;
6131 
6132 	IF l_manager_flag = 'N' THEN
6133 
6134 		aso_debug_pub.add('Before Opening the cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6135 		OPEN C_CUST_PARTY_NO_MANAGER;
6136 		aso_debug_pub.add('After Opening the cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6137 		FETCH C_CUST_PARTY_NO_MANAGER INTO l_data_exists ;
6138 		aso_debug_pub.add('After Fetching the cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6139 
6140 		IF C_CUST_PARTY_NO_MANAGER%FOUND THEN
6141 
6142 		  IF ( p_flag = 'SOLD' ) THEN
6143 	              IF ( p_header = 'Y' ) THEN
6144 			x_quote_header_rec.cust_party_id := p_cust_party_id;
6145 		      END IF;
6146 		   END IF;
6147 
6148 	           IF ( p_flag = 'END' ) THEN
6149 	              IF ( p_header = 'Y' ) THEN
6150 			x_quote_header_rec.end_customer_cust_party_id := p_cust_party_id;
6151 		      END IF;
6152 	              IF ( p_header = 'N' ) THEN
6153 		        x_quote_line_rec.end_customer_cust_party_id := p_cust_party_id;
6154                       END IF;
6155 		   END IF;
6156 
6157 		ELSE
6158 		   IF ( p_flag = 'SOLD' ) THEN
6159 	              IF ( p_header = 'Y' ) THEN
6160 		        x_quote_header_rec.cust_party_id := NULL;
6161 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6162 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_CUSTOMER', TRUE);
6163 			FND_MSG_PUB.ADD;
6164                       END IF;
6165                    END IF;
6166 
6167 	           IF ( p_flag = 'END' ) THEN
6168 	              IF ( p_header = 'Y' ) THEN
6169 		        x_quote_header_rec.end_customer_cust_party_id := NULL;
6170 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6171 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_CUSTOMER', TRUE);
6172 			FND_MSG_PUB.ADD;
6173                       END IF;
6174 	              IF ( p_header = 'N' ) THEN
6175 		        x_quote_line_rec.end_customer_cust_party_id := NULL;
6176                       END IF;
6177                    END IF;
6178 
6179 		   aso_debug_pub.add('No Data Found for Cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6180 	        END IF;
6181 
6182 		aso_debug_pub.add('Before Closing the cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6183 	        CLOSE C_CUST_PARTY_NO_MANAGER;
6184 	        aso_debug_pub.add('After Closing the cursor...C_CUST_PARTY_NO_MANAGER', 1, 'Y');
6185 
6186 	END IF;
6187 END IF;
6188 
6189 END VALIDATE_CUSTOMER ;
6190 --3):					Validate Contact
6191 
6192 PROCEDURE VALIDATE_CONTACT(	p_party_id varchar2,
6193 				p_cust_party_id varchar2,
6194 				p_flag varchar2,
6195 				p_header varchar2
6196 			   )IS
6197 
6198 l_data_exists VARCHAR2(10);
6199 
6200 --	SOLD to/Bill to/Ship to/ENd Customer - Header or Line
6201 --	p_flag possible values : BILL/SHIP/END/SOLD
6202 --	p_header possible values : Y or N
6203 --	QOTHDDET_MAIN.sold_to_cust_party_id --> p_quote_header_rec.cust_party_id
6204 
6205 --CURSOR C_BILL_SHIP_CONTACT_NAME IS
6206 CURSOR C_CONTACT_NAME IS
6207 SELECT 1 FROM DUAL WHERE EXISTS
6208 	(
6209 		SELECT	hp_contact.party_name
6210 		FROM	HZ_PARTIES hp_contact,
6211 			HZ_RELATIONSHIPS hp_rltn
6212 		WHERE	hp_rltn.object_id =   p_cust_party_id   --lv_cust_party_id
6213 		AND	hp_rltn.party_id  = p_party_id
6214 		AND	hp_contact.party_id = hp_rltn.subject_id
6215 		AND	hp_contact.party_type = 'PERSON'
6216 		AND	hp_rltn.relationship_code IN ( Select distinct reltype.forward_rel_code
6217 							 From HZ_RELATIONSHIP_TYPES reltype, HZ_CODE_ASSIGNMENTS code
6218 							 Where code.class_category =   'RELATIONSHIP_TYPE_GROUP'
6219 							 and code.class_code =    'PARTY_REL_GRP_CONTACTS'
6220 							 and code.owner_table_name =   'HZ_RELATIONSHIP_TYPES'
6221 							 and code.owner_table_id =  reltype.relationship_type_id
6222 							 and code.status =   'A'
6223 							 and trunc(code.start_date_active) <= trunc(sysdate)
6224 							 and trunc(nvl(code.end_date_active,sysdate)) >= trunc(sysdate)
6225 							 and reltype.subject_type =   'PERSON'
6226 							 and reltype.object_type =   'ORGANIZATION'
6227 						      )
6228 			 AND hp_contact.status =   'A'
6229 			 AND hp_rltn.status =   'A'
6230 			 AND trunc(hp_rltn.start_date) <= trunc(sysdate)
6231 			 AND trunc(nvl(hp_rltn.end_date,sysdate)) >= trunc(sysdate)
6232 	);
6233 
6234 BEGIN
6235 	aso_debug_pub.add('Before Opening the cursor...C_CONTACT_NAME', 1, 'Y');
6236 	OPEN C_CONTACT_NAME ;
6237 	aso_debug_pub.add('After Opening the cursor...C_CONTACT_NAME', 1, 'Y');
6238 	FETCH C_CONTACT_NAME INTO l_data_exists ;
6239 	aso_debug_pub.add('After Fteching the cursor...C_CONTACT_NAME', 1, 'Y');
6240 	aso_debug_pub.add('Value of p_flag is...'||p_flag, 1, 'Y');
6241 	aso_debug_pub.add('Value of p_header is...'||p_header, 1, 'Y');
6242 	IF C_CONTACT_NAME%FOUND THEN
6243 		--Case:1 BILL
6244 			IF P_FLAG = 'BILL' THEN
6245 				IF ( p_header = 'Y' ) THEN
6246 					x_quote_header_rec.INVOICE_TO_PARTY_ID := p_party_id;
6247 				END IF;
6248 
6249 				IF ( p_header = 'N' ) THEN
6250 					x_quote_line_rec.INVOICE_TO_PARTY_ID := p_party_id;
6251 				END IF;
6252 			 END IF;
6253 
6254 		--Case:2 SHIP
6255 
6256 			IF P_FLAG = 'SHIP' THEN
6257 				IF ( p_header = 'Y' ) THEN
6258 					x_shipment_header_rec.SHIP_TO_PARTY_ID := p_party_id;
6259 				END IF;
6260 
6261 				IF ( p_header = 'N' ) THEN
6262 					x_shipment_line_rec.SHIP_TO_PARTY_ID := p_party_id;
6263 				END IF;
6264 			 END IF;
6265 
6266 		--Case:3 END
6267 			IF P_FLAG = 'END' THEN
6268 				IF ( p_header = 'Y' ) THEN
6269 					x_quote_header_rec.END_CUSTOMER_PARTY_ID := p_party_id;
6270 				END IF;
6271 
6272 				IF ( p_header = 'N' ) THEN
6273 					x_quote_line_rec.END_CUSTOMER_PARTY_ID := p_party_id;
6274 				END IF;
6275 			 END IF;
6276 
6277 		--Case:4 SOLD
6278 			IF P_FLAG = 'SOLD' THEN		--No Check for line level
6279 				IF ( p_header = 'Y' ) THEN
6280 					x_quote_header_rec.PARTY_ID := p_party_id;
6281 				END IF;
6282 			 END IF;
6283 
6284 	ELSE   --Set al values to NULL
6285 
6286 		--Case:1 BILL
6287 			IF P_FLAG = 'BILL' THEN
6288 				IF ( p_header = 'Y' ) THEN
6289 					x_quote_header_rec.INVOICE_TO_PARTY_ID := NULL;
6290 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6291 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_CONTACT', TRUE);
6292 					FND_MSG_PUB.ADD;
6293 				END IF;
6294 
6295 				IF ( p_header = 'N' ) THEN
6296 					x_quote_line_rec.INVOICE_TO_PARTY_ID := NULL;
6297 				END IF;
6298 			 END IF;
6299 
6300 		--Case:2 SHIP
6301 
6302 			IF P_FLAG = 'SHIP' THEN
6303 				IF ( p_header = 'Y' ) THEN
6304 					x_shipment_header_rec.SHIP_TO_PARTY_ID := NULL;
6305 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6306 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_CONTACT', TRUE);
6307 					FND_MSG_PUB.ADD;
6308 				END IF;
6309 
6310 				IF ( p_header = 'N' ) THEN
6311 					x_shipment_line_rec.SHIP_TO_PARTY_ID := NULL;
6312 				END IF;
6313 			 END IF;
6314 
6315 		--Case:3 END
6316 			IF P_FLAG = 'END' THEN
6317 				IF ( p_header = 'Y' ) THEN
6318 					x_quote_header_rec.END_CUSTOMER_PARTY_ID := NULL;
6319 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6320 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_CONTACT', TRUE);
6321 					FND_MSG_PUB.ADD;
6322 				END IF;
6323 
6324 				IF ( p_header = 'N' ) THEN
6325 					x_quote_line_rec.END_CUSTOMER_PARTY_ID := NULL;
6326 				END IF;
6327 			 END IF;
6328 
6329 		--Case:4 SOLD
6330 			IF P_FLAG = 'SOLD' THEN		--No Check for line level
6331 				IF ( p_header = 'Y' ) THEN
6332 					x_quote_header_rec.PARTY_ID := NULL;
6333 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6334 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_CONTACT', TRUE);
6335 					FND_MSG_PUB.ADD;
6336 				END IF;
6337 			 END IF;
6338 
6339 END IF;
6340         aso_debug_pub.add('Before Closing the Cursor...C_CONTACT_NAME', 1, 'Y');
6341 CLOSE C_CONTACT_NAME;
6342         aso_debug_pub.add('After Closing the Cursor...C_CONTACT_NAME', 1, 'Y');
6343 END VALIDATE_CONTACT ;
6344 
6345 
6346 --4):                    Validate Bill Ship Customer
6347 --PARTY NAME
6348 PROCEDURE VALIDATE_BILL_SHIP_CUSTOMER(  		p_cust_party_id varchar2,
6349 							p_cust_acct_id	varchar2,
6350 							p_resource_id	varchar2,
6351 							p_flag		varchar2,
6352 							p_header	varchar2
6353 							) IS
6354 
6355 --CREATE OR REPLACE PROCEDURE ASO_SHIP_BILL_CUST_PARTY(p_cust_acct_id varchar2,p_flag varchar2) AS
6356 --:QOTHDDET_MAIN.sold_to_cust_party_id -->p_quote_header_record.CUST_PARTY_ID
6357 --QOTHDDET_MAIN.sold_to_cust_acct_id - > p_quote_header_rec.cust_account_id --> P_CUST_ACCT_ID
6358 -- p_flag possible values : BILL or SHIP
6359 -- p_header possible values : Y or N
6360 
6361 Cursor C_Mgr_Check  Is   --to check the manager flag
6362 select 1 from DUAL where exists
6363 	(
6364 	     SELECT	MGR.group_id
6365 	     FROM	jtf_rs_rep_managers MGR ,
6366 			jtf_rs_group_usages U
6367 	     WHERE	U.usage  = 'SALES'
6368 	     AND	U.group_id = MGR.group_id
6369 	     AND	TRUNC(MGR.start_date_active)  <= trunc(SYSDATE)
6370 	     AND	TRUNC(NVL(MGR.end_date_active, SYSDATE) )>= trunc(SYSDATE)
6371 	     AND	MGR.parent_resource_id = MGR.resource_id
6372 	     AND	MGR.hierarchy_type in ('MGR_TO_MGR', 'MGR_TO_REP')
6373 	     AND	MGR.parent_resource_id = p_resource_id
6374 	);
6375 
6376 --CURSOR C_INVOICE_TO_CUST_PARTY_NAME_FLD IS
6377 CURSOR C_INVOICE_TO_CUSTOMER IS
6378 --p_quote_header_rec.cust_account_id-->p_cust_acct_id
6379 SELECT 1 FROM DUAL WHERE EXISTS
6380 (
6381 	SELECT	hp.party_id          --Removed HZ_CUST_ACCOUNTS ca
6382 	FROM	HZ_PARTIES hp
6383 	WHERE	hp.party_type in ('PERSON','ORGANIZATION')
6384 	AND	hp.party_id = p_cust_party_id
6385 	AND	hp.status =  'A'
6386 	UNION
6387 	SELECT	hp.party_id
6388 	FROM	HZ_PARTIES hp,
6389 		HZ_CUST_ACCT_RELATE car
6390 	WHERE   car.related_cust_account_id =   p_cust_acct_id
6391 	AND	car.relationship_type =  'ALL'
6392 	AND	car.bill_to_flag = 'Y'
6393 	AND	hp.party_id = p_cust_party_id
6394 	AND	hp.party_type in ('PERSON','ORGANIZATION')
6395 	AND	hp.status =   'A'
6396 	AND	car.status =   'A'
6397 ) ;
6398 
6399 
6400 CURSOR C_SHIP_TO_CUSTOMER IS
6401 --CURSOR C_SHIP_TO_CUST_PARTY_NAME_FLD IS
6402 --p_quote_header_rec.cust_account_id-->p_cust_acct_id
6403 SELECT 1 FROM DUAL WHERE EXISTS
6404 (
6405 	SELECT	hp.party_id
6406 	FROM	HZ_PARTIES hp
6407 	WHERE	hp.party_id = p_cust_party_id
6408 	AND	hp.status =  'A'
6409 	AND	hp.party_type in ('PERSON','ORGANIZATION')
6410 	UNION
6411 	SELECT	hp.party_id
6412 	FROM	HZ_PARTIES hp,
6413 		HZ_CUST_ACCT_RELATE car
6414 	WHERE	car.related_cust_account_id =   p_cust_acct_id
6415 	AND	car.relationship_type =  'ALL'
6416 	AND	car.ship_to_flag = 'Y'
6417 	AND	hp.party_id = p_cust_party_id
6418 	AND	hp.party_type in ('PERSON','ORGANIZATION')
6419 	AND	hp.status =   'A'
6420 	AND	car.status =   'A'
6421 );
6422 
6423 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = T
6424 --CURSOR C_CUST_PARTY_NAME1 IS
6425 CURSOR C_CUSTOMER IS
6426 SELECT 1 FROM DUAL WHERE EXISTS
6427 (
6428 		SELECT	hp.party_id
6429 		FROM	HZ_PARTIES hp
6430 		WHERE	hp.party_type in ('PERSON','ORGANIZATION')
6431 		AND	hp.status = 'A'
6432 		AND	hp.party_id =  p_cust_party_id               --:QOTHDDET_MAIN.sold_to_cust_party_id
6433 ) ;
6434 
6435 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = T and manager_flag = 'Y'
6436 --CURSOR C_CUST_PARTY_NAME2 IS
6437 CURSOR C_CUSTOMER_MANAGER IS
6438 SELECT 1 FROM DUAL WHERE EXISTS
6439 (
6440 		select	P.party_id
6441 		from	HZ_PARTIES P
6442 		where	P.status = 'A'
6443 		AND     P.party_id = p_cust_party_id
6444 		AND	EXISTS ( SELECT null
6445 				      FROM   as_accesses_all secu
6446 				      WHERE  secu.customer_id = P.party_id
6447 				      AND    secu.sales_group_id in (
6448 									SELECT  jrgd.group_id
6449 									FROM    jtf_rs_groups_denorm jrgd,
6450 										jtf_rs_group_usages  jrgu
6451 									WHERE   jrgd.parent_group_id  IN (
6452 													select	u.group_id
6453 													from	jtf_rs_rep_managers mgr,
6454 														jtf_rs_group_usages u
6455 													where	mgr.parent_resource_id = p_resource_id
6456 													and	trunc(sysdate) between trunc(mgr.start_date_active)
6457 													and	trunc(nvl(mgr.end_date_active,sysdate))
6458 													and	mgr.hierarchy_type = 'MGR_TO_REP'
6459 													and	mgr.group_id = u.group_id
6460 													and	u.usage in ('SALES','PRM')
6461 													)
6462 					    AND TRUNC(jrgd.start_date_active) <= TRUNC(SYSDATE)
6463 					    AND TRUNC(NVL(jrgd.end_date_active, SYSDATE) )>= TRUNC(SYSDATE)
6464 					    AND jrgu.group_id = jrgd.group_id
6465 					    AND jrgu.usage  in ('SALES', 'PRM'))
6466 					AND secu.lead_id IS NULL
6467 					AND secu.sales_lead_id IS NULL
6468 					UNION ALL
6469 					SELECT null
6470 					FROM   as_accesses_all secu
6471 					WHERE  secu.customer_id = p.party_id
6472 					AND	secu.lead_id IS NULL
6473 					AND	secu.sales_lead_id IS NULL
6474 					AND	salesforce_id = p_resource_id
6475 				    )
6476 ) ;
6477 
6478 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = T and manager_flag = 'N'
6479 
6480 CURSOR C_CUSTOMER_NO_MANAGER IS
6481 SELECT 1 FROM DUAL WHERE EXISTS
6482 (
6483 
6484 	select	P.status
6485 	from	HZ_PARTIES P
6486 	where	P.status = 'A'
6487 	AND	P.party_id = p_cust_party_id
6488 	AND	(exists  (SELECT null
6489 				FROM   as_accesses_all secu
6490 				WHERE secu.customer_id = p.party_id
6491 				AND secu.lead_id IS NULL
6492 				AND secu.sales_lead_id IS NULL
6493 				AND salesforce_id = p_resource_id
6494 			  )
6495 		)
6496 );
6497 
6498 l_data_exists varchar2(10);
6499 l_manager_flag varchar2(1);
6500 
6501 BEGIN
6502 
6503 --Case:1 ==================================Enforced Account Relationship is set to 'Y'(Start)=========================================================
6504 
6505 IF	NVL(FND_PROFILE.value('ASO_ENFORCE_ACCOUNT_RELATIONSHIPS'),'N')  = 'Y'
6506 	AND p_cust_acct_id IS NOT NULL THEN
6507 
6508 		IF P_FLAG = 'BILL' THEN
6509 			 aso_debug_pub.add('Before Opening the cursor...C_INVOICE_TO_CUSTOMER', 1, 'Y');
6510 			 OPEN C_INVOICE_TO_CUSTOMER ;
6511 			 aso_debug_pub.add('Before Fetching the cursor...C_INVOICE_TO_CUSTOMER', 1, 'Y');
6512 			 FETCH C_INVOICE_TO_CUSTOMER INTO l_data_exists ;
6513 
6514 			 IF C_INVOICE_TO_CUSTOMER%FOUND THEN
6515 
6516 				IF ( p_header = 'Y' ) THEN
6517 					x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6518 				END IF;
6519 
6520 				IF ( p_header = 'N' ) THEN
6521 					x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6522 				END IF;
6523 
6524       			ELSE    --Assign Null
6525 				IF ( p_header = 'Y' ) THEN
6526 					x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := NULL ;
6527 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6528 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_CUSTOMER', TRUE);
6529 					FND_MSG_PUB.ADD;
6530 				END IF;
6531 
6532 				IF ( p_header = 'N' ) THEN
6533 					x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := NULL;
6534 				END IF;
6535 			aso_debug_pub.add('No Data Found for the cursor...C_INVOICE_TO_CUSTOMER', 1, 'Y');
6536 			END IF;
6537 			aso_debug_pub.add('Before Closing the cursor...C_INVOICE_TO_CUSTOMER', 1, 'Y');
6538 			CLOSE C_INVOICE_TO_CUSTOMER;
6539 		END IF ;
6540 
6541 		IF P_FLAG = 'SHIP' THEN
6542 			aso_debug_pub.add('Before Opening the cursor...C_SHIP_TO_CUSTOMER', 1, 'Y');
6543 			OPEN C_SHIP_TO_CUSTOMER ;
6544 			aso_debug_pub.add('Before Fetching the cursor...C_SHIP_TO_CUSTOMER', 1, 'Y');
6545 			FETCH C_SHIP_TO_CUSTOMER INTO l_data_exists ;
6546 
6547 			IF C_SHIP_TO_CUSTOMER%FOUND THEN
6548 				IF ( p_header = 'Y' ) THEN
6549 					x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := p_cust_party_id;
6550 				END IF;
6551 
6552 				IF ( p_header = 'N' ) THEN
6553 					x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := p_cust_party_id;
6554 				END IF;
6555 			ELSE
6556 				IF ( p_header = 'Y' ) THEN
6557 					x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := NULL;
6558 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6559 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_CUSTOMER', TRUE);
6560 					FND_MSG_PUB.ADD;
6561 				END IF;
6562 
6563 				IF ( p_header = 'N' ) THEN
6564 					x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := NULL;
6565 				END IF;
6566 
6567 			END IF;
6568 			aso_debug_pub.add('Before Closing the cursor...C_SHIP_TO_CUSTOMER', 1, 'Y');
6569 			CLOSE C_SHIP_TO_CUSTOMER ;
6570 			aso_debug_pub.add('After Closing the cursor...C_SHIP_TO_CUSTOMER', 1, 'Y');
6571 		END IF;
6572 END IF;
6573 
6574 --Case:2==================================Enforced Account Relationship is set to 'N' =========================================================
6575 
6576 IF NVL(FND_PROFILE.value('ASO_ENFORCE_ACCOUNT_RELATIONSHIPS'),'N')  = 'N' THEN
6577 --Case 2a
6578 	IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'F' THEN --Put the base query
6579 		aso_debug_pub.add('Before Opening the cursor...C_CUSTOMER', 1, 'Y');
6580 			OPEN C_CUSTOMER ;
6581 			aso_debug_pub.add('Before Fetching the cursor...C_CUSTOMER', 1, 'Y');
6582 			FETCH C_CUSTOMER INTO l_data_exists ;
6583 
6584 				IF C_CUSTOMER%FOUND THEN
6585 
6586 					IF P_FLAG = 'BILL' THEN
6587 
6588 							IF ( p_header = 'Y' ) THEN
6589 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6590 							END IF;
6591 
6592 							IF ( p_header = 'N' ) THEN
6593 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6594 							END IF;
6595 
6596 					END IF;
6597 
6598 					IF P_FLAG = 'SHIP' THEN
6599 							IF ( p_header = 'Y' ) THEN
6600 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := p_cust_party_id;
6601 							END IF;
6602 
6603 							IF ( p_header = 'N' ) THEN
6604 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := p_cust_party_id;
6605 							END IF;
6606 					END IF;
6607 				ELSE    --Assign Null
6608 					IF P_FLAG = 'BILL' THEN
6609 
6610 							IF ( p_header = 'Y' ) THEN
6611 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := NULL ;
6612 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6613 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_CUSTOMER', TRUE);
6614 								FND_MSG_PUB.ADD;
6615 							END IF;
6616 
6617 							IF ( p_header = 'N' ) THEN
6618 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := NULL;
6619 							END IF;
6620 
6621 					END IF;
6622 
6623 					IF P_FLAG = 'SHIP' THEN
6624 							IF ( p_header = 'Y' ) THEN
6625 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := NULL;
6626 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6627 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_CUSTOMER', TRUE);
6628 								FND_MSG_PUB.ADD;
6629 							END IF;
6630 
6631 							IF ( p_header = 'N' ) THEN
6632 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := NULL;
6633 							END IF ;
6634 					END IF ;
6635 					aso_debug_pub.add('No Data found for the cursor...C_CUSTOMER', 1, 'Y');
6636 				END IF ;
6637 					aso_debug_pub.add('Before Closing the cursor...C_CUSTOMER', 1, 'Y');
6638 			CLOSE C_CUSTOMER;
6639 	END IF;
6640 
6641 --Case 2b
6642 
6643 	IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'T'   then --Check for the manager flag
6644 
6645 		OPEN C_Mgr_Check ;        --Assigning the manager flag
6646 		FETCH C_Mgr_Check INTO l_data_exists ;
6647 		IF C_Mgr_Check%FOUND THEN
6648 			l_manager_flag := 'Y';
6649 		ELSE
6650 			l_manager_flag := 'N';
6651                 aso_debug_pub.add('No Data Found for Cursor...C_Mgr_Check', 1, 'Y');
6652 		END IF ;
6653 		CLOSE C_Mgr_Check ;
6654 
6655 		IF  l_manager_flag = 'Y' THEN       --New query for manager_flag = 'Y'
6656 			aso_debug_pub.add('Before Opening the cursor...C_CUSTOMER_MANAGER', 1, 'Y');
6657 			OPEN C_CUSTOMER_MANAGER;
6658 			aso_debug_pub.add('Before Fetching the cursor...C_CUSTOMER_MANAGER', 1, 'Y');
6659 			FETCH C_CUSTOMER_MANAGER INTO l_data_exists ;
6660 			IF C_CUSTOMER_MANAGER%FOUND THEN
6661 
6662 					IF P_FLAG = 'BILL' THEN
6663 
6664 							IF ( p_header = 'Y' ) THEN
6665 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6666 							END IF;
6667 
6668 							IF ( p_header = 'N' ) THEN
6669 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6670 							END IF;
6671 
6672 					END IF;
6673 
6674 					IF P_FLAG = 'SHIP' THEN
6675 							IF ( p_header = 'Y' ) THEN
6676 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := p_cust_party_id;
6677 							END IF;
6678 
6679 							IF ( p_header = 'N' ) THEN
6680 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := p_cust_party_id;
6681 							END IF;
6682 					END IF;
6683 			ELSE    --Assign Null
6684 					IF P_FLAG = 'BILL' THEN
6685 
6686 							IF ( p_header = 'Y' ) THEN
6687 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := NULL ;
6688 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6689 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_CUSTOMER', TRUE);
6690 								FND_MSG_PUB.ADD;
6691 							END IF;
6692 
6693 							IF ( p_header = 'N' ) THEN
6694 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := NULL;
6695 							END IF;
6696 
6697 					END IF;
6698 
6699 					IF P_FLAG = 'SHIP' THEN
6700 							IF ( p_header = 'Y' ) THEN
6701 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := NULL;
6702 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6703 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_CUSTOMER', TRUE);
6704 								FND_MSG_PUB.ADD;
6705 							END IF;
6706 
6707 							IF ( p_header = 'N' ) THEN
6708 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := NULL;
6709 							END IF ;
6710 					END IF ;
6711 					aso_debug_pub.add('No Data Found for the cursor...C_CUSTOMER_MANAGER', 1, 'Y');
6712 				END IF ;
6713 
6714 			aso_debug_pub.add('Before Closing the cursor...C_CUSTOMER_MANAGER', 1, 'Y');
6715 			CLOSE C_CUSTOMER_MANAGER;
6716 			aso_debug_pub.add('After Closing the cursor...C_CUSTOMER_MANAGER', 1, 'Y');
6717 
6718 		END IF;
6719 
6720 
6721 		IF l_manager_flag = 'N' THEN      --New query for manager_flag = 'N'
6722 			aso_debug_pub.add('Before Opening the cursor...C_CUSTOMER_NO_MANAGER', 1, 'Y');
6723 			OPEN C_CUSTOMER_NO_MANAGER;
6724 			aso_debug_pub.add('Before Fetching the cursor...C_CUSTOMER_NO_MANAGER', 1, 'Y');
6725 			FETCH C_CUSTOMER_NO_MANAGER INTO l_data_exists ;
6726 			IF C_CUSTOMER_NO_MANAGER%FOUND THEN
6727 					IF P_FLAG = 'BILL' THEN
6728 
6729 							IF ( p_header = 'Y' ) THEN
6730 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6731 							END IF;
6732 
6733 							IF ( p_header = 'N' ) THEN
6734 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := p_cust_party_id;
6735 							END IF;
6736 
6737 					END IF;
6738 
6739 					IF P_FLAG = 'SHIP' THEN
6740 							IF ( p_header = 'Y' ) THEN
6741 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := p_cust_party_id;
6742 							END IF;
6743 
6744 							IF ( p_header = 'N' ) THEN
6745 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := p_cust_party_id;
6746 							END IF;
6747 					END IF;
6748 			ELSE    --Assign Null
6749 					IF P_FLAG = 'BILL' THEN
6750 
6751 							IF ( p_header = 'Y' ) THEN
6752 								x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID := NULL ;
6753 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6754 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_CUSTOMER', TRUE);
6755 								FND_MSG_PUB.ADD;
6756 							END IF;
6757 
6758 							IF ( p_header = 'N' ) THEN
6759 								x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID := NULL;
6760 							END IF;
6761 
6762 					END IF;
6763 
6764 					IF P_FLAG = 'SHIP' THEN
6765 							IF ( p_header = 'Y' ) THEN
6766 								x_shipment_header_rec.SHIP_TO_CUST_PARTY_ID := NULL;
6767 								FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
6768 								FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_CUSTOMER', TRUE);
6769 								FND_MSG_PUB.ADD;
6770 							END IF;
6771 
6772 							IF ( p_header = 'N' ) THEN
6773 								x_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  := NULL;
6774 							END IF ;
6775 					END IF ;
6776 					aso_debug_pub.add('No Data Found for the cursor...C_CUSTOMER_NO_MANAGER', 1, 'Y');
6777 				END IF;
6778 			aso_debug_pub.add('Before closing the cursor...C_CUSTOMER_NO_MANAGER', 1, 'Y');
6779 			CLOSE C_CUSTOMER_NO_MANAGER;
6780 			aso_debug_pub.add('After closing the cursor...C_CUSTOMER_NO_MANAGER', 1, 'Y');
6781 
6782 		END IF;
6783 	END if;
6784 END IF;
6785 
6786 END VALIDATE_BILL_SHIP_CUSTOMER;
6787 --5):				Validate Bill Ship Account
6788 
6789 PROCEDURE VALIDATE_BILL_SHIP_ACCOUNT(
6790 					p_cust_acct_id		VARCHAR2,
6791 					p_cust_party_id		VARCHAR2,
6792 					p_resource_id		VARCHAR2,
6793 					p_sold_to_cust_acct_id  VARCHAR2,
6794 					p_flag			VARCHAR2,
6795 					p_header		VARCHAR2
6796 				    ) IS
6797 
6798 --:QOTHDDET_MAIN.sold_to_cust_party_id -->p_quote_header_record.CUST_PARTY_ID
6799 --QOTHDDET_MAIN.sold_to_cust_acct_id - > p_quote_header_rec.cust_account_id --> P_CUST_ACCT_ID
6800 --p_flag is the parameter to differentiate between bill to and ship to
6801 -- p_flag possible values : BILL or SHIP
6802 -- p_header possible values : Y or N
6803 
6804 Cursor C_Mgr_Check  Is   --to check the manager flag
6805 select 1 from dual where exists
6806 	(
6807 	     SELECT  MGR.group_id
6808 	     FROM    jtf_rs_rep_managers MGR ,
6809 		     jtf_rs_group_usages U
6810 	     WHERE   U.usage  = 'SALES'
6811 	     AND     U.group_id = MGR.group_id
6812 	     AND     trunc(MGR.start_date_active)  <= trunc(SYSDATE)
6813 	     AND     trunc(NVL(MGR.end_date_active, SYSDATE)) >= trunc(SYSDATE)
6814 	     AND     MGR.parent_resource_id = MGR.resource_id
6815 	     AND     MGR.hierarchy_type in ('MGR_TO_MGR', 'MGR_TO_REP')
6816 	     AND     MGR.parent_resource_id = p_resource_id
6817 	);
6818 
6819 CURSOR C_INVOICE_TO_CUST_ACCOUNT IS
6820 --p_quote_header_rec.cust_account_id-->p_cust_acct_id
6821 --SELECT 1 FROM DUAL WHERE EXISTS
6822 --(
6823 --	SELECT ca.account_number
6824 --	FROM	HZ_PARTIES hp,
6825 --		HZ_CUST_ACCOUNTS ca,
6826 --		HZ_CUST_ACCT_RELATE car
6827 --	WHERE	hp.party_id = ca.party_id
6828 --	AND   ((car.related_cust_account_id =   p_sold_to_cust_acct_id
6829 --		AND	car.cust_account_id = ca.cust_account_id
6830 --		AND	car.relationship_type =  'ALL'
6831 --		AND	car.bill_to_flag = 'Y')
6832 --		OR	ca.cust_account_id =   p_sold_to_cust_acct_id )
6833 --	AND	hp.party_id = p_cust_party_id
6834 --	AND	ca.cust_account_id = p_cust_acct_id
6835 --	AND	hp.party_type in ('PERSON','ORGANIZATION')
6836 --	AND	hp.status =   'A'
6837 --	AND	ca.status =   'A'
6838 --	AND	trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6839 --	AND	trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
6840 --	AND	car.status =   'A'
6841 --) ;
6842 SELECT 1 FROM DUAL WHERE EXISTS
6843 (
6844 	SELECT ca.account_number
6845 	FROM	HZ_PARTIES hp,
6846 		HZ_CUST_ACCOUNTS ca,
6847 		HZ_CUST_ACCT_RELATE car
6848 	WHERE	hp.party_id = ca.party_id
6849 	AND	car.related_cust_account_id =   p_sold_to_cust_acct_id
6850 		AND	car.cust_account_id = ca.cust_account_id
6851 		AND	car.relationship_type =  'ALL'
6852 		AND	car.ship_to_flag = 'Y'
6853 	AND	hp.party_id = p_cust_party_id
6854 	AND	ca.cust_account_id = p_cust_acct_id
6855 	AND	hp.party_type in ('PERSON','ORGANIZATION')
6856 	AND	hp.status =   'A'
6857 	AND	ca.status =   'A'
6858 	AND	trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6859 	AND	trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
6860 	AND	car.status =   'A'
6861 	UNION
6862 	SELECT ca.account_number
6863 	FROM	HZ_PARTIES hp,
6864 		HZ_CUST_ACCOUNTS ca
6865 	WHERE	hp.party_id = ca.party_id
6866 	AND	ca.cust_account_id =   p_sold_to_cust_acct_id
6867 	AND	hp.party_id = p_cust_party_id
6868 	AND	ca.cust_account_id = p_cust_acct_id
6869 	AND	hp.party_type in ('PERSON','ORGANIZATION')
6870 	AND	hp.status =   'A'
6871 	AND	ca.status =   'A'
6872 	AND	trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6873 	AND	trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
6874 );
6875 
6876 
6877 
6878 CURSOR C_SHIP_TO_CUST_ACCOUNT IS
6879 --p_quote_header_rec.cust_account_id-->p_cust_acct_id
6880 --SELECT 1 FROM DUAL WHERE EXISTS
6881 --(
6882 --	SELECT ca.account_number
6883 --	FROM	HZ_PARTIES hp,
6884 --		HZ_CUST_ACCOUNTS ca,
6885 --		HZ_CUST_ACCT_RELATE car
6886 --	WHERE	hp.party_id = ca.party_id
6887 --	AND	((car.related_cust_account_id =   p_sold_to_cust_acct_id
6888 --		AND	car.cust_account_id = ca.cust_account_id
6889 --		AND	car.relationship_type =  'ALL'
6890 --		AND	car.ship_to_flag = 'Y')
6891 --		OR	ca.cust_account_id =   p_sold_to_cust_acct_id )
6892 --	AND	hp.party_id = p_cust_party_id
6893 --	AND	ca.cust_account_id = p_cust_acct_id
6894 --	AND	hp.party_type in ('PERSON','ORGANIZATION')
6895 --	AND	hp.status =   'A'
6896 --	AND	ca.status =   'A'
6897 --	AND	trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6898 --	AND	trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
6899 --	AND	car.status =   'A'
6900 --) ;
6901 SELECT ca.account_number
6902 FROM	HZ_PARTIES hp,
6903 	HZ_CUST_ACCOUNTS ca,
6904 	HZ_CUST_ACCT_RELATE car
6905 WHERE	hp.party_id = ca.party_id
6906 AND	car.related_cust_account_id = p_sold_to_cust_acct_id
6907 AND  	car.status = 'A'
6908 AND  	ca.cust_account_id = car.cust_account_id
6909 AND	car.relationship_type =  'ALL'
6910 AND	car.ship_to_flag = 'Y'
6911 AND	hp.party_id = p_cust_party_id
6912 AND	ca.cust_account_id =  p_cust_acct_id
6913 AND	hp.party_type in ('PERSON','ORGANIZATION')
6914 AND	hp.status =   'A'
6915 AND	ca.status =   'A'
6916 UNION
6917 SELECT ca.account_number
6918 FROM	HZ_PARTIES hp,
6919 	HZ_CUST_ACCOUNTS ca
6920 WHERE	hp.party_id = ca.party_id
6921 AND	ca.cust_account_id =   p_sold_to_cust_acct_id
6922 AND	hp.party_id = p_cust_party_id
6923 AND	ca.cust_account_id = p_cust_acct_id
6924 AND	hp.party_type in ('PERSON','ORGANIZATION')
6925 AND	hp.status =   'A'
6926 AND	ca.status =   'A'
6927 AND	trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6928 AND	trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate) ;
6929 
6930 
6931 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = F
6932 CURSOR C_CUST_ACCOUNT IS
6933 SELECT 1 FROM DUAL WHERE EXISTS
6934 (
6935 		SELECT ca.account_number
6936 		FROM   HZ_PARTIES hp,
6937 		       HZ_CUST_ACCOUNTS ca
6938 		WHERE hp.party_id = ca.party_id
6939 		AND hp.party_type in ('PERSON','ORGANIZATION')
6940 		AND hp.status = 'A'
6941 		AND ca.status = 'A'
6942 		AND hp.party_id =  p_cust_party_id
6943 		AND CA.CUST_ACCOUNT_ID = p_cust_acct_id
6944 		AND trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
6945 		AND trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
6946 ) ;
6947 
6948 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = T and manager_flag = 'Y'
6949 
6950 CURSOR C_CUST_ACCOUNT_MANAGER IS
6951 SELECT 1 FROM DUAL WHERE EXISTS
6952 (
6953 		select null
6954 		from   HZ_PARTIES P
6955 		      ,HZ_CUST_ACCOUNTS CA
6956 		where	CA.status = 'A'
6957 		AND   p.party_type in ('PERSON','ORGANIZATION')
6958 		AND  P.party_id = p_cust_party_id
6959 		AND	P.status = 'A'
6960 		AND	P.party_id = CA.party_id
6961 		AND	CA.CUST_ACCOUNT_ID = p_cust_acct_id
6962 		AND	EXISTS ( SELECT null
6963 				      FROM   as_accesses_all_all secu
6964 				      WHERE  secu.customer_id = P.party_id
6965 				      AND secu.lead_id IS NULL
6966 				      AND secu.sales_lead_id IS NULL
6967 				      AND secu.delete_flag is NULL
6968 				      and  secu.sales_group_id in (
6969 									SELECT  jrgd.group_id
6970 									FROM    jtf_rs_groups_denorm jrgd,
6971 										jtf_rs_group_usages  jrgu
6972 									WHERE   jrgd.parent_group_id  IN (
6973 												select	u.group_id
6974 												from	jtf_rs_rep_managers mgr,
6975 													jtf_rs_group_usages u
6976 												where	mgr.parent_resource_id = p_resource_id
6977 												and    trunc(sysdate) between trunc(mgr.start_date_active)
6978 												and	trunc(nvl(mgr.end_date_active,sysdate))
6979 												and     mgr.hierarchy_type = 'MGR_TO_REP'
6980 												and     mgr.group_id = u.group_id
6981 												and     u.usage in ('SALES','PRM')
6982 													)
6983 				     AND trunc(jrgd.start_date_active) <= TRUNC(SYSDATE)
6984 				     AND trunc(NVL(jrgd.end_date_active, SYSDATE)) >= TRUNC(SYSDATE)
6985 				     AND jrgu.group_id = jrgd.group_id
6986 				     AND jrgu.usage  in ('SALES', 'PRM')))
6987 					UNION ALL
6988 					SELECT null
6989 					FROM    as_accesses_all_all secu,
6990 						HZ_PARTIES P
6991 					WHERE  secu.customer_id = P.party_id
6992 					AND  secu.lead_id IS NULL
6993 					AND secu.sales_lead_id IS NULL
6994 					AND secu.delete_flag is NULL
6995 					AND salesforce_id = p_resource_id
6996 
6997 ) ;
6998 
6999 -- When ASO_ENFORCE_ACCOUNT_RELATIONSHIPS = 'N' and ASN_CUST_ACCESS = T and manager_flag = 'N'
7000 
7001 CURSOR C_CUST_ACCOUNT_NO_MANAGER IS
7002 SELECT 1 FROM DUAL WHERE EXISTS
7003 (
7004 
7005 	select CA.account_number
7006 	from	HZ_PARTIES HP ,
7007 		HZ_CUST_ACCOUNTS CA
7008 	where	CA.status = 'A'
7009 	AND  trunc(nvl(CA.account_activation_date, SYSDATE))  <= trunc(SYSDATE)
7010 	AND	trunc(nvl(CA.account_termination_date, SYSDATE)) >= trunc(SYSDATE)
7011 	AND	HP.status = 'A'
7012 	AND	HP.party_id = CA.party_id
7013      AND  hp.party_type in ('PERSON','ORGANIZATION')
7014 	AND	HP.party_id = p_cust_party_id
7015 	AND  CA.cust_account_id = p_cust_acct_id
7016 	AND	(exists  (SELECT null
7017 				FROM   as_accesses_all secu
7018 				WHERE secu.customer_id = hp.party_id
7019 				AND secu.lead_id IS NULL
7020 				AND secu.sales_lead_id IS NULL
7021 				AND salesforce_id = p_resource_id
7022 			  )
7023 		)
7024 
7025 );
7026 
7027 l_data_exists varchar2(10);
7028 l_manager_flag varchar2(1);
7029 
7030 BEGIN
7031 
7032 --Case:1 ==================================Enforced Account Relationship is set to 'Y'(Start)=========================================================
7033 IF NVL(FND_PROFILE.value('ASO_ENFORCE_ACCOUNT_RELATIONSHIPS'),'N')  = 'Y'  then
7034 
7035 		IF P_FLAG = 'BILL' THEN
7036 			aso_debug_pub.add('Before opening the cursor...C_INVOICE_TO_CUST_ACCOUNT', 1, 'Y');
7037 			OPEN C_INVOICE_TO_CUST_ACCOUNT;
7038 			aso_debug_pub.add('Before Fetching the cursor...C_INVOICE_TO_CUST_ACCOUNT', 1, 'Y');
7039 			FETCH C_INVOICE_TO_CUST_ACCOUNT INTO l_data_exists ;
7040 
7041 			IF C_INVOICE_TO_CUST_ACCOUNT%FOUND THEN
7042 				IF ( p_header = 'Y' ) THEN
7043 					x_quote_header_rec.invoice_to_cust_account_id := p_cust_acct_id;
7044 				END IF;
7045 				IF ( p_header = 'N' ) THEN
7046 					x_quote_line_rec.invoice_to_cust_account_id := p_cust_acct_id;
7047 				END IF;
7048 			ELSE
7049 				IF ( p_header = 'Y' ) THEN
7050 					x_quote_header_rec.invoice_to_cust_account_id := NULL;
7051 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7052 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ACCOUNT', TRUE);
7053 					FND_MSG_PUB.ADD;
7054 				END IF;
7055 				IF ( p_header = 'N' ) THEN
7056 					x_quote_line_rec.invoice_to_cust_account_id := NULL;
7057 				END IF;
7058 			aso_debug_pub.add('No Data found for the cursor...C_INVOICE_TO_CUST_ACCOUNT', 1, 'Y');
7059 			END IF;
7060 			aso_debug_pub.add('Before closing the cursor...C_INVOICE_TO_CUST_ACCOUNT', 1, 'Y');
7061 			CLOSE C_INVOICE_TO_CUST_ACCOUNT;
7062 			aso_debug_pub.add('After closing the cursor...C_INVOICE_TO_CUST_ACCOUNT', 1, 'Y');
7063 
7064 		END IF;
7065 
7066 
7067 		IF P_FLAG = 'SHIP' THEN
7068 			aso_debug_pub.add('Before Opening the cursor...C_SHIP_TO_CUST_ACCOUNT', 1, 'Y');
7069 			OPEN C_SHIP_TO_CUST_ACCOUNT;
7070 			aso_debug_pub.add('Before Fetching the cursor...C_SHIP_TO_CUST_ACCOUNT', 1, 'Y');
7071 			FETCH C_SHIP_TO_CUST_ACCOUNT INTO l_data_exists ;
7072 
7073 				IF C_SHIP_TO_CUST_ACCOUNT%FOUND THEN
7074 					IF ( p_header = 'Y' ) THEN
7075 					      x_shipment_header_rec.ship_to_cust_account_id := p_cust_acct_id;
7076 					END IF;
7077 					IF ( p_header = 'N' ) THEN
7078 					      x_shipment_line_rec.ship_to_cust_account_id := p_cust_acct_id;
7079 					END IF;
7080 				ELSE
7081 					IF ( p_header = 'Y' ) THEN
7082 					      x_shipment_header_rec.ship_to_cust_account_id := NULL;
7083 					      FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7084 					      FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ACCOUNT', TRUE);
7085 					      FND_MSG_PUB.ADD;
7086 					END IF;
7087 					IF ( p_header = 'N' ) THEN
7088 					      x_shipment_line_rec.ship_to_cust_account_id := NULL;
7089 					END IF;
7090 					aso_debug_pub.add('No Data Found for the cursor...C_SHIP_TO_CUST_ACCOUNT', 1, 'Y');
7091 				END IF;
7092 					aso_debug_pub.add('Before Closing the cursor...C_SHIP_TO_CUST_ACCOUNT', 1, 'Y');
7093 			CLOSE C_SHIP_TO_CUST_ACCOUNT;
7094 					aso_debug_pub.add('After Closing the cursor...C_SHIP_TO_CUST_ACCOUNT', 1, 'Y');
7095 
7096 
7097 		END IF;
7098 END IF;
7099 --Case:2==================================Enforced Account Relationship is set to 'N' =========================================================
7100 
7101 IF NVL(FND_PROFILE.value('ASO_ENFORCE_ACCOUNT_RELATIONSHIPS'),'N')  = 'N' THEN
7102 
7103 --Case 2a
7104 	IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'F' THEN --Put the base query
7105 			aso_debug_pub.add('Before Opening the cursor...C_CUST_ACCOUNT', 1, 'Y');
7106 			OPEN C_CUST_ACCOUNT;
7107 			aso_debug_pub.add('Before Fetching the cursor...C_CUST_ACCOUNT', 1, 'Y');
7108 			FETCH C_CUST_ACCOUNT INTO l_data_exists ;
7109 				IF C_CUST_ACCOUNT%FOUND THEN
7110 				  IF ( p_flag = 'BILL') THEN
7111 					IF ( p_header = 'Y' ) THEN
7112 						x_quote_header_rec.invoice_to_cust_account_id := p_cust_acct_id;
7113 					END IF;
7114 
7115 					IF ( p_header = 'N' ) THEN
7116 						x_quote_line_rec.invoice_to_cust_account_id := p_cust_acct_id;
7117 					END IF;
7118 				END IF;
7119 
7120 				IF ( p_flag = 'SHIP') THEN
7121 					IF ( p_header = 'Y' ) THEN
7122 						x_shipment_header_rec.ship_to_cust_account_id := p_cust_acct_id;
7123 					END IF;
7124 
7125 					IF ( p_header = 'N' ) THEN
7126 						x_shipment_line_rec.ship_to_cust_account_id := p_cust_acct_id;
7127 					END IF;
7128 				END IF;
7129 
7130 				ELSE
7131 				IF ( p_flag = 'BILL') THEN
7132 					IF ( p_header = 'Y' ) THEN
7133 						x_quote_header_rec.invoice_to_cust_account_id := NULL;
7134 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7135 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ACCOUNT', TRUE);
7136 						FND_MSG_PUB.ADD;
7137 					END IF;
7138 					IF ( p_header = 'N' ) THEN
7139 						x_quote_line_rec.invoice_to_cust_account_id := NULL;
7140 					END IF;
7141 				END IF;
7142 				IF ( p_flag = 'SHIP') THEN
7143 					IF ( p_header = 'Y' ) THEN
7144 						x_shipment_header_rec.ship_to_cust_account_id := NULL;
7145 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7146 					        FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ACCOUNT', TRUE);
7147 					        FND_MSG_PUB.ADD;
7148 					END IF;
7149 					IF ( p_header = 'N' ) THEN
7150 						x_shipment_line_rec.ship_to_cust_account_id := NULL;
7151 					END IF;
7152 				END IF;
7153 				aso_debug_pub.add('No Data Found for the cursor the cursor...C_CUST_ACCOUNT', 1, 'Y');
7154 			END IF;
7155 				aso_debug_pub.add('Before closing the cursor...C_CUST_ACCOUNT', 1, 'Y');
7156 		CLOSE C_CUST_ACCOUNT;
7157 				aso_debug_pub.add('After closing the cursor...C_CUST_ACCOUNT', 1, 'Y');
7158 
7159 	END IF;
7160 
7161 --Case 2b
7162 	IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'T'   then --Check for the manager flag
7163 
7164 		OPEN C_Mgr_Check ;                 --Assigning the manager flag
7165 		FETCH C_Mgr_Check INTO l_data_exists ;
7166 
7167 		IF C_Mgr_Check%FOUND THEN
7168 			l_manager_flag := 'Y';
7169 		ELSE
7170 			l_manager_flag := 'N';
7171                 aso_debug_pub.add('No Data Found for Cursor...C_Mgr_Check', 1, 'Y');
7172 		END IF;
7173 
7174 		CLOSE C_Mgr_Check;
7175 
7176 		IF l_manager_flag = 'Y' THEN       --New query for manager_flag = 'Y'
7177 			aso_debug_pub.add('Before opening the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7178 			OPEN C_CUST_ACCOUNT_MANAGER;
7179 			aso_debug_pub.add('Before fetching the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7180 			FETCH C_CUST_ACCOUNT_MANAGER INTO l_data_exists ;
7181 			IF C_CUST_ACCOUNT_MANAGER%FOUND THEN
7182 				IF ( p_flag = 'BILL') THEN
7183 					IF ( p_header = 'Y' ) THEN
7184 						x_quote_header_rec.invoice_to_cust_account_id := p_cust_acct_id;
7185 					END IF;
7186 					IF ( p_header = 'N' ) THEN
7187 						x_quote_line_rec.invoice_to_cust_account_id := p_cust_acct_id;
7188 					END IF;
7189 				END IF;
7190 
7191 				IF ( p_flag = 'SHIP') THEN
7192 					IF ( p_header = 'Y' ) THEN
7193 						x_shipment_header_rec.ship_to_cust_account_id := p_cust_acct_id;
7194 					END IF;
7195 					IF ( p_header = 'N' ) THEN
7196 						x_shipment_line_rec.ship_to_cust_account_id := p_cust_acct_id;
7197 					END IF;
7198 				END IF;
7199 			ELSE
7200 				IF ( p_flag = 'BILL') THEN
7201 					IF ( p_header = 'Y' ) THEN
7202 						x_quote_header_rec.invoice_to_cust_account_id := NULL;
7203 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7204 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ACCOUNT', TRUE);
7205 						FND_MSG_PUB.ADD;
7206 		                        END IF;
7207 					IF ( p_header = 'N' ) THEN
7208 						x_quote_line_rec.invoice_to_cust_account_id := NULL;
7209 					END IF;
7210 				END IF;
7211 
7212 				IF ( p_flag = 'SHIP') THEN
7213 					IF ( p_header = 'Y' ) THEN
7214 						x_shipment_header_rec.ship_to_cust_account_id := NULL;
7215 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7216 					        FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ACCOUNT', TRUE);
7217 					        FND_MSG_PUB.ADD;
7218 					END IF;
7219 					IF ( p_header = 'N' ) THEN
7220 						x_shipment_line_rec.ship_to_cust_account_id := NULL;
7221 					END IF;
7222 				END IF;
7223 				aso_debug_pub.add('No Data Found for the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7224 
7225 			END IF;
7226 			aso_debug_pub.add('Before closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7227 			CLOSE C_CUST_ACCOUNT_MANAGER;
7228 			aso_debug_pub.add('After closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7229 
7230 		END IF;
7231 
7232 		IF l_manager_flag = 'N' THEN      --New query for manager_flag = 'N'
7233 			aso_debug_pub.add('Before opening the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7234 			OPEN C_CUST_ACCOUNT_NO_MANAGER;
7235 			aso_debug_pub.add('Before fetching the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7236 			FETCH C_CUST_ACCOUNT_NO_MANAGER INTO l_data_exists ;
7237 			IF C_CUST_ACCOUNT_NO_MANAGER%FOUND THEN
7238 				IF ( p_flag = 'BILL') THEN
7239 					IF ( p_header = 'Y' ) THEN
7240 						x_quote_header_rec.invoice_to_cust_account_id := p_cust_acct_id;
7241 					END IF;
7242 					IF ( p_header = 'N' ) THEN
7243 						x_quote_line_rec.invoice_to_cust_account_id := p_cust_acct_id;
7244 					END IF;
7245 				END IF;
7246 
7247 				IF ( p_flag = 'SHIP') THEN
7248 					IF ( p_header = 'Y' ) THEN
7249 						x_shipment_header_rec.ship_to_cust_account_id := p_cust_acct_id;
7250 					END IF;
7251 
7252 					IF ( p_header = 'N' ) THEN
7253 						x_shipment_line_rec.ship_to_cust_account_id := p_cust_acct_id;
7254 					END IF;
7255 				END IF;
7256 			ELSE
7257 				IF ( p_flag = 'BILL') THEN
7258 					IF ( p_header = 'Y' ) THEN
7259 						x_quote_header_rec.invoice_to_cust_account_id := NULL;
7260 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7261 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ACCOUNT', TRUE);
7262 						FND_MSG_PUB.ADD;
7263 					END IF;
7264 					IF ( p_header = 'N' ) THEN
7265 						x_quote_line_rec.invoice_to_cust_account_id := NULL;
7266 					END IF;
7267 				END IF;
7268 
7269 				IF ( p_flag = 'SHIP') THEN
7270 					IF ( p_header = 'Y' ) THEN
7271 						x_shipment_header_rec.ship_to_cust_account_id := NULL;
7272 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7273 					        FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ACCOUNT', TRUE);
7274 					        FND_MSG_PUB.ADD;
7275 					END IF;
7276 
7277 					IF ( p_header = 'N' ) THEN
7278 						x_shipment_line_rec.ship_to_cust_account_id := NULL;
7279 					END IF;
7280 				END IF;
7281 			aso_debug_pub.add('No Data Found for the  cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7282 			END IF;
7283 			aso_debug_pub.add('Before closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7284 			CLOSE C_CUST_ACCOUNT_NO_MANAGER;
7285 			aso_debug_pub.add('After closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7286 
7287 
7288 		END IF;
7289 	END IF;
7290 END IF;
7291 
7292 END VALIDATE_BILL_SHIP_ACCOUNT ;
7293 
7294 
7295 --6):				Validate Address
7296 PROCEDURE VALIDATE_ADDRESS(	p_party_site_id VARCHAR2,
7297 				p_party_id	VARCHAR2,
7298 				p_cust_party_id VARCHAR2,
7299 				p_flag		VARCHAR2,
7300 				p_header	VARCHAR2
7301 			 ) is
7302 
7303 --parameters
7304 --party id can be bill to ,ship to or end customer
7305 --party_site_id is the party address
7306 --hd_sold_to_cust_party_id --> l_quote_header_rec.cust_party_id --> p_cust_party_id
7307 --hd_ship_to_party_id --> l_quote_header_rec.PARTY_ID --> P_PARTY_ID
7308 --	p_flag possible values : BILL/SHIP/END/SOLD
7309 --	p_header possible values : Y or N
7310 
7311 l_data_exists VARCHAR2(10) ;
7312 
7313 CURSOR C_PARTY_ADDRESS IS
7314 SELECT 1 FROM DUAL WHERE EXISTS
7315 (
7316 		 SELECT		site.party_site_id
7317 		 FROM		HZ_PARTIES hp,
7318 				HZ_PARTY_SITES site
7319 		 WHERE		site.party_id = hp.party_id
7320 		 AND		site.PARTY_SITE_ID = p_party_site_id         --Added join for party_site_id
7321 		 AND		hp.status = 'A'
7322 		 AND		site.status = 'A'
7323 		 AND		hp.party_id in (p_party_id,p_cust_party_id)
7324 );
7325 
7326 --CURSOR C_PARTY_ADDRESS2 IS
7327 CURSOR C_CUST_PARTY_ADDRESS_NOT_NULL IS
7328 SELECT 1 FROM DUAL WHERE EXISTS
7329 (
7330 		SELECT		site.party_site_id
7331 		FROM		HZ_PARTIES hp,
7332 				HZ_PARTY_SITES site
7333 		WHERE		site.party_id = hp.party_id
7334 		AND		site.PARTY_SITE_ID = p_party_site_id         --Added join for party_site_id
7335 		AND		hp.status = 'A'
7336 		AND		site.status = 'A'
7337 		AND		hp.party_id  = p_cust_party_id
7338 );
7339 
7340 --CURSOR C_PARTY_ADDRESS3 IS
7341 CURSOR C_CUSTOMER_ADDRESS_NOT_NULL IS
7342 SELECT 1 FROM DUAL WHERE EXISTS
7343 (
7344 
7345 	       SELECT		site.party_site_id
7346 		FROM		HZ_PARTIES hp,
7347 				HZ_PARTY_SITES site
7348 		WHERE		site.party_id = hp.party_id
7349 		AND		site.PARTY_SITE_ID = p_party_site_id         --Added join for party_site_id
7350 		AND		hp.status = 'A'
7351 		AND		site.status = 'A'
7352 		AND		hp.party_id  = p_party_id
7353 
7354 
7355 );
7356 
7357 BEGIN
7358  --Case 1 :  IF lv_cust_party_id is not null and lv_party_id is not null (p_cust_party_id and p_party_id)
7359 
7360 IF p_party_id  IS NOT NULL AND p_cust_party_id IS NOT NULL THEN
7361 	aso_debug_pub.add('Before opening the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7362 	OPEN C_PARTY_ADDRESS ;
7363 	aso_debug_pub.add('Before fetching the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7364 	FETCH C_PARTY_ADDRESS INTO l_data_exists ;
7365 	IF C_PARTY_ADDRESS%FOUND THEN
7366 		--Case:1 BILL
7367 			IF P_FLAG = 'BILL' THEN
7368 				IF ( p_header = 'Y' ) THEN
7369 					x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7370 				END IF;
7371 
7372 				IF ( p_header = 'N' ) THEN
7373 					x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7374 				END IF;
7375 			 END IF;
7376 		--Case:2 SHIP
7377 			IF P_FLAG = 'SHIP' THEN
7378 				IF ( p_header = 'Y' ) THEN
7379 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7380 				END IF;
7381 
7382 				IF ( p_header = 'N' ) THEN
7383 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7384 				END IF;
7385 			 END IF;
7386 		--Case:3 END
7387 			IF P_FLAG = 'END' THEN
7388 				IF ( p_header = 'Y' ) THEN
7389 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := p_party_site_id;
7390 				END IF;
7391 
7392 				IF ( p_header = 'N' ) THEN
7393 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := p_party_site_id;
7394 				END IF;
7395 			 END IF;
7396 		--Case:4 SOLD
7397 			IF P_FLAG = 'SOLD' THEN
7398 				IF ( p_header = 'Y' ) THEN
7399 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := p_party_site_id;
7400 				END IF;
7401 			 END IF;
7402 	ELSE       --Set all values to NULL
7403 		--Case:1 BILL
7404 			IF P_FLAG = 'BILL' THEN
7405 				IF ( p_header = 'Y' ) THEN
7406 					x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7407 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7408 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ADDRESS', TRUE);
7409 					FND_MSG_PUB.ADD;
7410 				END IF;
7411 
7412 				IF ( p_header = 'N' ) THEN
7413 					x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7414 				END IF;
7415 			 END IF;
7416 		--Case:2 SHIP
7417 			IF P_FLAG = 'SHIP' THEN
7418 				IF ( p_header = 'Y' ) THEN
7419 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7420 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7421 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ADDRESS', TRUE);
7422 						FND_MSG_PUB.ADD;
7423 				END IF;
7424 
7425 				IF ( p_header = 'N' ) THEN
7426 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7427 				END IF;
7428 			 END IF;
7429 		--Case:3 END
7430 			IF P_FLAG = 'END' THEN
7431 				IF ( p_header = 'Y' ) THEN
7432 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := NULL;
7433 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7434 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ADDRESS', TRUE);
7435 						FND_MSG_PUB.ADD;
7436 				END IF;
7437 
7438 				IF ( p_header = 'N' ) THEN
7439 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := NULL;
7440 				END IF;
7441 			 END IF;
7442 		--Case:4 SOLD
7443 			IF P_FLAG = 'SOLD' THEN
7444 				IF ( p_header = 'Y' ) THEN
7445 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := NULL;
7446 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7447 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ADDRESS', TRUE);
7448 						FND_MSG_PUB.ADD;
7449 				END IF;
7450 			 END IF;
7451 	aso_debug_pub.add('No data found for the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7452 	END IF ;
7453 	aso_debug_pub.add('Before closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7454 	CLOSE C_PARTY_ADDRESS;
7455 	aso_debug_pub.add('After closing the cursor...C_CUST_ACCOUNT_MANAGER', 1, 'Y');
7456 
7457 END IF;
7458 
7459 --Case 2 :  incase only customer is there(p_cust_party_id IS NOT NULL AND p_party_id IS NULL)
7460 
7461 IF p_party_id  IS NULL AND p_cust_party_id IS  NOT NULL THEN
7462 	aso_debug_pub.add('before opening the cursor...C_CUST_PARTY_ADDRESS_NOT_NULL', 1, 'Y');
7463 	OPEN C_CUST_PARTY_ADDRESS_NOT_NULL ;
7464 	aso_debug_pub.add('before fetching the cursor...C_CUST_PARTY_ADDRESS_NOT_NULL', 1, 'Y');
7465 	FETCH C_CUST_PARTY_ADDRESS_NOT_NULL INTO l_data_exists ;
7466 
7467 	IF C_CUST_PARTY_ADDRESS_NOT_NULL%FOUND THEN
7468 		--Case:1 BILL
7469 			IF P_FLAG = 'BILL' THEN
7470 				IF ( p_header = 'Y' ) THEN
7471 						x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7472 				END IF;
7473 
7474 				IF ( p_header = 'N' ) THEN
7475 						x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7476 				END IF;
7477 			 END IF;
7478 		--Case:2 SHIP
7479 			IF P_FLAG = 'SHIP' THEN
7480 				IF ( p_header = 'Y' ) THEN
7481 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7482 				END IF;
7483 
7484 				IF ( p_header = 'N' ) THEN
7485 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7486 				END IF;
7487 			 END IF;
7488 		--Case:3 END
7489 			IF P_FLAG = 'END' THEN
7490 				IF ( p_header = 'Y' ) THEN
7491 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := p_party_site_id;
7492 				END IF;
7493 
7494 				IF ( p_header = 'N' ) THEN
7495 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := p_party_site_id;
7496 				END IF;
7497 			 END IF;
7498 		--Case:4 SOLD
7499 			IF P_FLAG = 'SOLD' THEN
7500 				IF ( p_header = 'Y' ) THEN
7501 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := p_party_site_id;
7502 				END IF;
7503 			 END IF;
7504 	ELSE       --Set all values to NULL
7505 		--Case:1 BILL
7506 			IF P_FLAG = 'BILL' THEN
7507 				IF ( p_header = 'Y' ) THEN
7508 						x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7509 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7510 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ADDRESS', TRUE);
7511 						FND_MSG_PUB.ADD;
7512 				END IF;
7513 
7514 				IF ( p_header = 'N' ) THEN
7515 					x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7516 				END IF;
7517 			 END IF;
7518 		--Case:2 SHIP
7519 			IF P_FLAG = 'SHIP' THEN
7520 				IF ( p_header = 'Y' ) THEN
7521 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7522 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7523 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ADDRESS', TRUE);
7524 						FND_MSG_PUB.ADD;
7525 				END IF;
7526 
7527 				IF ( p_header = 'N' ) THEN
7528 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7529 				END IF;
7530 			 END IF;
7531 		--Case:3 END
7532 			IF P_FLAG = 'END' THEN
7533 				IF ( p_header = 'Y' ) THEN
7534 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := NULL;
7535 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7536 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ADDRESS', TRUE);
7537 						FND_MSG_PUB.ADD;
7538 				END IF;
7539 
7540 				IF ( p_header = 'N' ) THEN
7541 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := NULL;
7542 				END IF;
7543 			 END IF;
7544 		--Case:4 SOLD
7545 			IF P_FLAG = 'SOLD' THEN
7546 				IF ( p_header = 'Y' ) THEN
7547 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := NULL;
7548 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7549 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ADDRESS', TRUE);
7550 						FND_MSG_PUB.ADD;
7551 				END IF;
7552 			 END IF;
7553 	aso_debug_pub.add('No Data Found for the cursor...C_CUST_PARTY_ADDRESS_NOT_NULL', 1, 'Y');
7554 	END IF ;
7555 	aso_debug_pub.add('Before closing the cursor...C_CUST_PARTY_ADDRESS_NOT_NULL', 1, 'Y');
7556 	CLOSE C_CUST_PARTY_ADDRESS_NOT_NULL;
7557 	aso_debug_pub.add('After closing the cursor...C_CUST_PARTY_ADDRESS_NOT_NULL', 1, 'Y');
7558 
7559 END IF;
7560 
7561 --Case 3 :  incase only customer is there(p_cust_party_id IS NULL AND p_party_id IS NOT NULL)
7562 
7563 IF p_party_id  IS NOT NULL AND p_cust_party_id IS  NULL THEN
7564 	aso_debug_pub.add('Before opening the cursor...C_CUSTOMER_ADDRESS_NOT_NULL', 1, 'Y');
7565 	OPEN C_CUSTOMER_ADDRESS_NOT_NULL ;
7566 	aso_debug_pub.add('Before fetching the cursor...C_CUSTOMER_ADDRESS_NOT_NULL', 1, 'Y');
7567 	FETCH C_CUSTOMER_ADDRESS_NOT_NULL INTO l_data_exists ;
7568 
7569 	IF C_CUSTOMER_ADDRESS_NOT_NULL%FOUND THEN
7570 		--Case:1 BILL
7571 			IF P_FLAG = 'BILL' THEN
7572 				IF ( p_header = 'Y' ) THEN
7573 						x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7574 				END IF;
7575 
7576 				IF ( p_header = 'N' ) THEN
7577 					x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := p_party_site_id;
7578 				END IF;
7579 			 END IF;
7580 		--Case:2 SHIP
7581 			IF P_FLAG = 'SHIP' THEN
7582 				IF ( p_header = 'Y' ) THEN
7583 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7584 				END IF;
7585 
7586 				IF ( p_header = 'N' ) THEN
7587 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := p_party_site_id;
7588 				END IF;
7589 			 END IF;
7590 		--Case:3 END
7591 			IF P_FLAG = 'END' THEN
7592 				IF ( p_header = 'Y' ) THEN
7593 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := p_party_site_id;
7594 				END IF;
7595 
7596 				IF ( p_header = 'N' ) THEN
7597 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := p_party_site_id;
7598 				END IF;
7599 			 END IF;
7600 		--Case:4 SOLD
7601 			IF P_FLAG = 'SOLD' THEN
7602 				IF ( p_header = 'Y' ) THEN
7603 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := p_party_site_id;
7604 				END IF;
7605 			 END IF;
7606 	ELSE       --Set all values to NULL
7607 		--Case:1 BILL
7608 			IF P_FLAG = 'BILL' THEN
7609 				IF ( p_header = 'Y' ) THEN
7610 						x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7611 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7612 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_BILL_ADDRESS', TRUE);
7613 						FND_MSG_PUB.ADD;
7614 				END IF;
7615 
7616 				IF ( p_header = 'N' ) THEN
7617 					x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID := NULL;
7618 				END IF;
7619 			 END IF;
7620 		--Case:2 SHIP
7621 			IF P_FLAG = 'SHIP' THEN
7622 				IF ( p_header = 'Y' ) THEN
7623 						x_shipment_header_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7624 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7625 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHIP_ADDRESS', TRUE);
7626 						FND_MSG_PUB.ADD;
7627 				END IF;
7628 
7629 				IF ( p_header = 'N' ) THEN
7630 						x_shipment_line_rec.SHIP_TO_PARTY_SITE_ID := NULL;
7631 				END IF;
7632 			 END IF;
7633 		--Case:3 END
7634 			IF P_FLAG = 'END' THEN
7635 				IF ( p_header = 'Y' ) THEN
7636 						x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID := NULL;
7637 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7638 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ADDRESS', TRUE);
7639 						FND_MSG_PUB.ADD;
7640 				END IF;
7641 
7642 				IF ( p_header = 'N' ) THEN
7643 						x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  := NULL;
7644 				END IF;
7645 			 END IF;
7646 		--Case:4 SOLD
7647 			IF P_FLAG = 'SOLD' THEN
7648 				IF ( p_header = 'Y' ) THEN
7649 						x_quote_header_rec.SOLD_TO_PARTY_SITE_ID := NULL;
7650 						FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7651 						FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ADDRESS', TRUE);
7652 						FND_MSG_PUB.ADD;
7653 				END IF;
7654 			 END IF;
7655 	aso_debug_pub.add('no data found for the cursor...C_CUSTOMER_ADDRESS_NOT_NULL', 1, 'Y');
7656 	END IF ;
7657 	aso_debug_pub.add('Before Closing the cursor...C_CUSTOMER_ADDRESS_NOT_NULL', 1, 'Y');
7658 	CLOSE C_CUSTOMER_ADDRESS_NOT_NULL;
7659 	aso_debug_pub.add('After Closing the cursor...C_CUSTOMER_ADDRESS_NOT_NULL', 1, 'Y');
7660 
7661 END IF;
7662 
7663 END VALIDATE_ADDRESS;
7664 
7665 --7):				Validate Account
7666 
7667 
7668 PROCEDURE VALIDATE_ACCOUNT
7669 (	p_cust_acct_id	varchar2,
7670 	p_cust_party_id	varchar2,
7671 	p_resource_id	varchar2,
7672 	p_flag		varchar2,
7673 	p_header        varchar2
7674    ) IS
7675 
7676 -- p_flag possible values : SOLD or END
7677 -- p_header possible values : Y or N
7678 -- Calling procedure should pass ASO_TCA_SOLD_TO_ACCOUNT(p_quote_header_rec.cust_party_id,P_quote_header_rec.RESOURCE_ID )
7679 --:QOTHDDET_MAIN.sold_to_cust_party_id --> p_cust_party_id --> p_quote_header_rec.cust_party_id)
7680 --:PARAMETER.user_resource_id-->p_resource_id-->p_quote_header_rec.resource_id
7681 
7682 
7683 Cursor C_Mgr_Check  Is   --to check the manager flag
7684 select 1 from dual where exists
7685 	(
7686 	     SELECT  MGR.group_id
7687 	     FROM    jtf_rs_rep_managers MGR ,
7688 		     jtf_rs_group_usages U
7689 	     WHERE   U.usage  = 'SALES'
7690 	     AND     U.group_id = MGR.group_id
7691 	     AND     trunc(MGR.start_date_active)  <= trunc(SYSDATE)
7692 	     AND     trunc(NVL(MGR.end_date_active, SYSDATE)) >= trunc(SYSDATE)
7693 	     AND     MGR.parent_resource_id = MGR.resource_id
7694 	     AND     MGR.hierarchy_type in ('MGR_TO_MGR', 'MGR_TO_REP')
7695 	     AND     MGR.parent_resource_id = p_resource_id
7696 	);
7697 
7698 
7699 CURSOR C_SOLD_TO_ACCOUNT IS
7700 SELECT 1 FROM DUAL WHERE EXISTS
7701 (
7702 		SELECT ca.account_number
7703 		FROM HZ_PARTIES HP,
7704 		HZ_CUST_ACCOUNTS CA
7705 		WHERE hp.party_id = ca.party_id
7706 		AND hp.status = 'A'
7707 		AND ca.status = 'A'
7708 		AND trunc(nvl(ca.account_activation_date,sysdate)) <= trunc(sysdate)
7709 		AND trunc(nvl(ca.account_termination_date,sysdate)) >= trunc(sysdate)
7710 		AND HP.party_id = p_cust_party_id
7711 		AND ca.cust_account_id = p_cust_acct_id
7712 );
7713 
7714 CURSOR C_SOLD_TO_ACCOUNT_NO_MANAGER IS
7715 SELECT 1 FROM DUAL WHERE EXISTS
7716 (
7717 		select ca.account_number
7718 		from	  HZ_PARTIES P
7719 			, HZ_CUST_ACCOUNTS CA
7720 		where  CA.status = 'A'
7721 		   AND trunc(nvl(CA.account_activation_date, SYSDATE))  <= trunc(SYSDATE)
7722 		   AND trunc(nvl(CA.account_termination_date, SYSDATE)) >= trunc(SYSDATE)
7723 		   AND P.status = 'A'
7724 		   AND P.party_id = CA.party_id
7725 		   AND (exists  (SELECT null
7726 				     FROM   as_accesses_all secu
7727 			      	WHERE secu.customer_id = p.party_id
7728 				     AND secu.lead_id IS NULL
7729 					AND secu.sales_lead_id IS NULL                                                                                                         AND salesforce_id = p_resource_id
7730 				    ))
7731 		  AND P.party_id = p_cust_party_id                --Added joins for cust_account_id
7732 		  AND ca.cust_account_id = p_cust_acct_id         --and party id
7733 
7734 );
7735 
7736 
7737 CURSOR C_SOLD_TO_ACCOUNT_MANAGER IS
7738 SELECT 1 FROM DUAL WHERE EXISTS
7739 (
7740 
7741 		select null
7742 		from   HZ_PARTIES P
7743 		      ,HZ_CUST_ACCOUNTS CA
7744 		where	CA.status = 'A'
7745 		AND	P.status = 'A'
7746 		AND	P.party_id = CA.party_id
7747 		AND	P.party_id = p_cust_party_id              --Added joins for cust_acct_id and
7748 		AND	ca.cust_account_id = p_cust_acct_id       --party id
7749 		AND	EXISTS ( SELECT null
7750 				      FROM   as_accesses_all_all secu
7751 				      WHERE  secu.customer_id = P.party_id
7752 				      AND    secu.lead_id IS NULL
7753 				      AND   secu.sales_lead_id IS NULL
7754 				      AND    secu.delete_flag is NULL
7755 				      AND    secu.sales_group_id in (
7756 									SELECT  jrgd.group_id
7757 									FROM    jtf_rs_groups_denorm jrgd,
7758 										jtf_rs_group_usages  jrgu
7759 									WHERE   jrgd.parent_group_id  IN (
7760 													select	U.group_id
7761 													from	jtf_rs_rep_managers mgr,
7762 														jtf_rs_group_usages u
7763 													where	mgr.parent_resource_id = p_resource_id
7764 													and     trunc(sysdate) between trunc(mgr.start_date_active) and trunc(nvl(mgr.end_date_active,sysdate))
7765 													and     mgr.hierarchy_type = 'MGR_TO_REP'
7766 													and     mgr.group_id = u.group_id
7767 													and     u.usage in ('SALES','PRM')
7768 													)
7769 					    AND trunc(jrgd.start_date_active) <= TRUNC(SYSDATE)
7770 					    AND trunc(NVL(jrgd.end_date_active, SYSDATE)) >= TRUNC(SYSDATE)
7771 					    AND jrgu.group_id = jrgd.group_id
7772 					    AND jrgu.usage  in ('SALES', 'PRM')) )
7773                          UNION ALL
7774 					SELECT null
7775 					FROM   as_accesses_all_all secu,HZ_PARTIES P
7776 					WHERE  secu.customer_id = P.party_id
7777 					AND    secu.lead_id IS NULL
7778 					AND    secu.sales_lead_id IS NULL
7779 					AND    secu.delete_flag is NULL
7780 					AND    salesforce_id = p_resource_id  --Added new join for salesforceid
7781 
7782 );
7783 
7784 l_data_exists varchar2(10);
7785 l_manager_flag varchar2(1) ;
7786 
7787 BEGIN
7788 --case:1 When sold-to or End Customer customer is specified
7789 
7790 IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'F' AND p_cust_party_id  is not null THEN
7791 	aso_debug_pub.add('Before opeing the cursor...C_SOLD_TO_ACCOUNT', 1, 'Y');
7792 	OPEN C_SOLD_TO_ACCOUNT;
7793 	FETCH C_SOLD_TO_ACCOUNT INTO l_data_exists ;
7794 
7795 	IF C_SOLD_TO_ACCOUNT%FOUND THEN
7796        IF ( p_flag = 'SOLD' ) THEN
7797 	     IF ( p_header = 'Y' ) THEN
7798 		  x_quote_header_rec.CUST_ACCOUNT_ID := p_cust_acct_id;
7799           END IF;
7800        END IF;
7801        IF ( p_flag = 'END' ) THEN
7802 	     IF ( p_header = 'Y' ) THEN
7803 		   x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7804           END IF;
7805 	     IF ( p_header = 'N' ) THEN
7806 		   x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7807           END IF;
7808        END IF;
7809 	ELSE
7810        IF ( p_flag = 'SOLD' ) THEN
7811 	     IF ( p_header = 'Y' ) THEN
7812 		  x_quote_header_rec.CUST_ACCOUNT_ID := NULL;
7813 		  FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7814   		  FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ACCOUNT', TRUE);
7815 		  FND_MSG_PUB.ADD;
7816           END IF;
7817        END IF;
7818        IF ( p_flag = 'END' ) THEN
7819 	     IF ( p_header = 'Y' ) THEN
7820 		   x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7821 		   FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7822 		   FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ACCOUNT', TRUE);
7823 		   FND_MSG_PUB.ADD;
7824           END IF;
7825 	     IF ( p_header = 'N' ) THEN
7826 		   x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7827           END IF;
7828        END IF;
7829       	aso_debug_pub.add('No Data Found for the cursor...C_SOLD_TO_ACCOUNT', 1, 'Y');
7830 	END IF;
7831       	aso_debug_pub.add('Before Closing the cursor...C_SOLD_TO_ACCOUNT', 1, 'Y');
7832 	CLOSE C_SOLD_TO_ACCOUNT;
7833       	aso_debug_pub.add('After Closing the cursor...C_SOLD_TO_ACCOUNT', 1, 'Y');
7834 
7835  END IF;
7836 
7837 --Case:2 When ASN:Customer Access Privilege is set to Sales Team and resource_id is not null
7838 
7839 IF NVL(FND_PROFILE.VALUE('ASN_CUST_ACCESS'),'T') = 'T' AND p_resource_id IS NOT NULL THEN
7840 
7841 
7842 	OPEN C_Mgr_Check;        --Checking the manager flag
7843 	FETCH C_Mgr_Check INTO l_data_exists ;
7844 
7845 	IF C_Mgr_Check%FOUND THEN
7846 		l_manager_flag := 'Y';
7847 	ELSE
7848 		l_manager_flag := 'N';
7849                 aso_debug_pub.add('No Data Found for Cursor...C_Mgr_Check', 1, 'Y');
7850 	END IF;
7851      CLOSE C_Mgr_Check;
7852 
7853 
7854 	IF  l_manager_flag = 'N' THEN                 --New Query
7855       		aso_debug_pub.add('Before opening the cursor...C_SOLD_TO_ACCOUNT_NO_MANAGER', 1, 'Y');
7856 		OPEN C_SOLD_TO_ACCOUNT_NO_MANAGER;
7857       		aso_debug_pub.add('Before fetching the cursor...C_SOLD_TO_ACCOUNT_NO_MANAGER', 1, 'Y');
7858 
7859 		FETCH C_SOLD_TO_ACCOUNT_NO_MANAGER INTO l_data_exists ;
7860 
7861 		IF C_SOLD_TO_ACCOUNT_NO_MANAGER%FOUND THEN
7862              IF ( p_flag = 'SOLD' ) THEN
7863 	           IF ( p_header = 'Y' ) THEN
7864 		        x_quote_header_rec.CUST_ACCOUNT_ID := p_cust_acct_id;
7865                 END IF;
7866              END IF;
7867              IF ( p_flag = 'END' ) THEN
7868 	           IF ( p_header = 'Y' ) THEN
7869 		         x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7870                 END IF;
7871 	           IF ( p_header = 'N' ) THEN
7872 		         x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7873                 END IF;
7874              END IF;
7875 		ELSE
7876              IF ( p_flag = 'SOLD' ) THEN
7877 	           IF ( p_header = 'Y' ) THEN
7878 		        x_quote_header_rec.CUST_ACCOUNT_ID := NULL;
7879 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7880 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ACCOUNT', TRUE);
7881 			FND_MSG_PUB.ADD;
7882                 END IF;
7883              END IF;
7884              IF ( p_flag = 'END' ) THEN
7885 	                 IF ( p_header = 'Y' ) THEN
7886 		         x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7887 			 FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7888 			 FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ACCOUNT', TRUE);
7889 			 FND_MSG_PUB.ADD;
7890                 END IF;
7891 	           IF ( p_header = 'N' ) THEN
7892 		         x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7893                 END IF;
7894              END IF;
7895     		aso_debug_pub.add('No data found for the cursor...C_SOLD_TO_ACCOUNT_NO_MANAGER', 1, 'Y');
7896 		END IF;
7897 		aso_debug_pub.add('Before closing the cursor...C_SOLD_TO_ACCOUNT_NO_MANAGER', 1, 'Y');
7898 		CLOSE C_SOLD_TO_ACCOUNT_NO_MANAGER;
7899 	END IF;
7900 
7901 
7902 	IF  l_manager_flag = 'Y' THEN                 --New Query
7903      		aso_debug_pub.add('Before opeing the cursor...C_SOLD_TO_ACCOUNT_MANAGER', 1, 'Y');
7904 
7905 		OPEN C_SOLD_TO_ACCOUNT_MANAGER;
7906      		aso_debug_pub.add('Before Fetching the cursor...C_SOLD_TO_ACCOUNT_MANAGER', 1, 'Y');
7907 
7908 		FETCH C_SOLD_TO_ACCOUNT_MANAGER INTO l_data_exists ;
7909 
7910 		IF C_SOLD_TO_ACCOUNT_MANAGER%FOUND THEN
7911 			IF ( p_flag = 'SOLD' ) THEN
7912 				IF ( p_header = 'Y' ) THEN
7913 					x_quote_header_rec.CUST_ACCOUNT_ID := p_cust_acct_id;
7914 				END IF;
7915 			END IF;
7916 			IF ( p_flag = 'END' ) THEN
7917 				IF ( p_header = 'Y' ) THEN
7918 					x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7919 				END IF;
7920 				IF ( p_header = 'N' ) THEN
7921 					x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := p_cust_acct_id;
7922 				END IF;
7923 			END IF;
7924 		ELSE
7925 			IF ( p_flag = 'SOLD' ) THEN
7926 				IF ( p_header = 'Y' ) THEN
7927 					x_quote_header_rec.CUST_ACCOUNT_ID := NULL;
7928 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7929 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_QUOTE_ACCOUNT', TRUE);
7930 					FND_MSG_PUB.ADD;
7931 				END IF;
7932 			END IF;
7933 			IF ( p_flag = 'END' ) THEN
7934 				IF ( p_header = 'Y' ) THEN
7935 					x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7936 					FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
7937 					FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_END_ACCOUNT', TRUE);
7938 					FND_MSG_PUB.ADD;
7939 				END IF;
7940 				IF ( p_header = 'N' ) THEN
7941 					x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := NULL;
7942 				END IF;
7943 			END IF;
7944      		aso_debug_pub.add('No Data Found for the cursor...C_SOLD_TO_ACCOUNT_MANAGER', 1, 'Y');
7945 		END IF;
7946      		aso_debug_pub.add('Before Closing the cursor...C_SOLD_TO_ACCOUNT_MANAGER', 1, 'Y');
7947 		CLOSE C_SOLD_TO_ACCOUNT_MANAGER;
7948       		aso_debug_pub.add('After Closing the cursor...C_SOLD_TO_ACCOUNT_MANAGER', 1, 'Y');
7949 
7950 	END IF ;
7951   END IF;
7952 END VALIDATE_ACCOUNT;
7953 
7954 ---                                 TCA  Routines  End                             --------------------------------
7955 PROCEDURE PRINT_DEFAULTING_ATTRIBUTES(p_begin_flag VARCHAR2)  IS
7956 
7957 BEGIN
7958 --Header and Line Attributes that are not validated by the ASO_VALIDATE_PROCEDURE
7959 	X_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE := P_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE ;
7960 	X_QUOTE_HEADER_REC.RESOURCE_GRP_ID:=P_QUOTE_HEADER_REC.RESOURCE_GRP_ID ;
7961 	X_QUOTE_HEADER_REC.RESOURCE_ID := P_QUOTE_HEADER_REC.RESOURCE_ID ;
7962 	X_SHIPMENT_HEADER_REC.PACKING_INSTRUCTIONS := P_SHIPMENT_HEADER_REC.PACKING_INSTRUCTIONS ;
7963 	X_SHIPMENT_LINE_REC.PACKING_INSTRUCTIONS := P_SHIPMENT_LINE_REC.PACKING_INSTRUCTIONS ;
7964 	X_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS := P_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS ;
7965 	X_SHIPMENT_LINE_REC.SHIPPING_INSTRUCTIONS := P_SHIPMENT_LINE_REC.SHIPPING_INSTRUCTIONS ;
7966 	X_QUOTE_HEADER_REC.QUOTE_EXPIRATION_DATE := p_QUOTE_HEADER_REC.QUOTE_EXPIRATION_DATE ;
7967 	X_QUOTE_HEADER_REC.PRICE_LIST_ID := P_QUOTE_HEADER_REC.PRICE_LIST_ID ;
7968 	X_QUOTE_LINE_REC.PRICE_LIST_ID := P_QUOTE_LINE_REC.PRICE_LIST_ID ;
7969 	x_QUOTE_HEADER_REC.ORDER_TYPE_ID := p_QUOTE_HEADER_REC.ORDER_TYPE_ID;
7970 	x_QUOTE_HEADER_REC.CONTRACT_TEMPLATE_ID := P_QUOTE_HEADER_REC.CONTRACT_TEMPLATE_ID ;
7971 	x_PAYMENT_HEADER_REC.PAYMENT_TERM_ID := P_PAYMENT_HEADER_REC.PAYMENT_TERM_ID ;
7972 	x_PAYMENT_LINE_REC.PAYMENT_TERM_ID := P_PAYMENT_LINE_REC.PAYMENT_TERM_ID ;
7973 	x_SHIPMENT_HEADER_REC.SHIP_METHOD_CODE := P_SHIPMENT_HEADER_REC.SHIP_METHOD_CODE ;
7974 	x_SHIPMENT_LINE_REC.SHIP_METHOD_CODE := P_SHIPMENT_LINE_REC.SHIP_METHOD_CODE ;
7975 	x_quote_line_rec.ORDER_LINE_TYPE_ID := p_quote_line_rec.ORDER_LINE_TYPE_ID;
7976 	x_PAYMENT_HEADER_REC.CUST_PO_NUMBER := P_PAYMENT_HEADER_REC.CUST_PO_NUMBER;
7977 	x_PAYMENT_LINE_REC.CUST_PO_NUMBER := P_PAYMENT_LINE_REC.CUST_PO_NUMBER ;
7978 	x_quote_header_rec.CREATED_BY := p_quote_header_rec.CREATED_BY ;
7979 	x_quote_line_rec.CREATED_BY := p_quote_line_rec.CREATED_BY ;
7980 	x_QUOTE_HEADER_REC.QUOTE_NAME := p_QUOTE_HEADER_REC.QUOTE_NAME ;
7981 	x_QUOTE_HEADER_REC.QUOTE_STATUS_ID := p_QUOTE_HEADER_REC.QUOTE_STATUS_ID ;
7982 --                                 END                                   --------
7983 
7984 
7985 IF p_begin_flag  = 'Y'  THEN
7986 
7987 		aso_debug_pub.add('***************************************************************', 1, 'Y');
7988                 aso_debug_pub.add('ASO_VALIDATE_PVT: Begin PRINT_DEFAULTING_ATTRIBUTES Procedure..');
7989 		aso_debug_pub.add('***************************************************************', 1, 'Y');
7990 	IF p_def_object_name = 'ASO_AK_QUOTE_HEADER_V' THEN  --Print header attributes only'
7991 
7992 		aso_debug_pub.add('**		Header Attributes Start		**', 1, 'Y');
7993 --Header Attributes (Input)
7994 		aso_debug_pub.add('1.	Value of P_QUOTE_HEADER_REC.PRICE_LIST_ID:		'||p_quote_header_rec.PRICE_LIST_ID, 1,'Y');
7995 		aso_debug_pub.add('2.	Value of P_QUOTE_HEADER_REC.CURRENCY_CODE:		'||p_quote_header_rec.CURRENCY_CODE, 1,'Y');
7996 		aso_debug_pub.add('3.	Value of P_QUOTE_HEADER_REC.SALES_CHANNEL_CODE:		'||p_quote_header_rec.SALES_CHANNEL_CODE, 1,'Y');
7997 		aso_debug_pub.add('4.	Value of P_QUOTE_HEADER_REC.AUTOMATIC_PRICE_FLAG:	'||p_quote_header_rec.AUTOMATIC_PRICE_FLAG, 1,'Y');
7998 		aso_debug_pub.add('5.	Value of P_QUOTE_HEADER_REC.AUTOMATIC_TAX_FLAG:		'||p_quote_header_rec.AUTOMATIC_TAX_FLAG, 1,'Y');
7999 		aso_debug_pub.add('6.	Value of P_QUOTE_HEADER_REC.PHONE_ID:			'||p_quote_header_rec.phone_id, 1,'Y');
8000 
8001 		aso_debug_pub.add('7.	Value of P_QUOTE_HEADER_REC.CUST_PARTY_ID:		'||p_quote_header_rec.cust_party_id, 1,'Y');
8002 		aso_debug_pub.add('8.	Value of P_QUOTE_HEADER_REC.CUST_ACCOUNT_ID:		'||p_quote_header_rec.CUST_ACCOUNT_ID, 1,'Y');
8003 		aso_debug_pub.add('9.	Value of P_QUOTE_HEADER_REC.PARTY_ID:			'||p_quote_header_rec.party_id, 1,'Y');
8004 		aso_debug_pub.add('10.	Value of P_QUOTE_HEADER_REC.SOLD_TO_PARTY_SITE_ID:	'||p_quote_header_rec.SOLD_TO_PARTY_SITE_ID, 1,'Y');
8005 
8006 		aso_debug_pub.add('11.	Value of P_QUOTE_HEADER_REC.INVOICE_TO_CUST_PARTY_ID:	'||p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID, 1,'Y');
8007 		aso_debug_pub.add('12.	Value of P_QUOTE_HEADER_REC.INVOICE_TO_CUST_ACCOUNT_ID:'||p_quote_header_rec.INVOICE_TO_CUST_ACCOUNT_ID, 1,'Y');
8008 		aso_debug_pub.add('13.	Value of P_QUOTE_HEADER_REC.INVOICE_TO_PARTY_ID:	'||p_quote_header_rec.INVOICE_TO_PARTY_ID, 1,'Y');
8009 		aso_debug_pub.add('14.	Value of P_QUOTE_HEADER_REC.INVOICE_TO_PARTY_SITE_ID:	'||p_quote_header_rec.INVOICE_TO_PARTY_SITE_ID, 1,'Y');
8010 
8011 		aso_debug_pub.add('15.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE_CATEGORY:		'|| p_quote_header_rec.ATTRIBUTE_CATEGORY,1,'Y');
8012 		aso_debug_pub.add('16.	Value of P_QUOTE_HEADER_REC.CONTRACT_ID:		'|| p_quote_header_rec.CONTRACT_ID,1,'Y');
8013 		aso_debug_pub.add('17.	Value of P_QUOTE_HEADER_REC.CONTRACT_TEMPLATE_ID:	'|| p_quote_header_rec.CONTRACT_TEMPLATE_ID,1,'Y');
8014 		aso_debug_pub.add('18.	Value of P_QUOTE_HEADER_REC.CREATED_BY:			'|| p_quote_header_rec.CREATED_BY,1,'Y');
8015 		aso_debug_pub.add('19.	Value of P_QUOTE_HEADER_REC.LAST_UPDATE_DATE:		'|| p_quote_header_rec.LAST_UPDATE_DATE,1,'Y');
8016 		aso_debug_pub.add('20.	Value of P_QUOTE_HEADER_REC.MARKETING_SOURCE_CODE_ID:	'|| p_quote_header_rec.MARKETING_SOURCE_CODE_ID,1,'Y');
8017 		aso_debug_pub.add('21.	Value of P_QUOTE_HEADER_REC.OBJECT_VERSION_NUMBER:	'|| p_quote_header_rec.OBJECT_VERSION_NUMBER,1,'Y');
8018 		aso_debug_pub.add('22.	Value of P_QUOTE_HEADER_REC.ORDER_TYPE_ID:		'|| p_quote_header_rec.ORDER_TYPE_ID,1,'Y');
8019 		aso_debug_pub.add('23.	Value of P_QUOTE_HEADER_REC.PHONE_ID:			'|| p_quote_header_rec.PHONE_ID,1,'Y');
8020 		aso_debug_pub.add('24.	Value of P_QUOTE_HEADER_REC.PRICE_FROZEN_DATE:		'|| p_quote_header_rec.PRICE_FROZEN_DATE,1,'Y');
8021 		aso_debug_pub.add('25.	Value of P_QUOTE_HEADER_REC.QUOTE_EXPIRATION_DATE:	'|| p_quote_header_rec.QUOTE_EXPIRATION_DATE,1,'Y');
8022 		aso_debug_pub.add('26.	Value of P_QUOTE_HEADER_REC.QUOTE_HEADER_ID:		'|| p_quote_header_rec.QUOTE_HEADER_ID,1,'Y');
8023 		aso_debug_pub.add('27.	Value of P_QUOTE_HEADER_REC.QUOTE_NAME:			'|| p_quote_header_rec.QUOTE_NAME,1,'Y');
8024 		aso_debug_pub.add('28.	Value of P_QUOTE_HEADER_REC.QUOTE_STATUS_ID:		'|| p_quote_header_rec.QUOTE_STATUS_ID,1,'Y');
8025 		aso_debug_pub.add('29.	Value of P_QUOTE_HEADER_REC.RESOURCE_GRP_ID:		'|| p_quote_header_rec.RESOURCE_GRP_ID,1,'Y');
8026 		aso_debug_pub.add('30.	Value of P_QUOTE_HEADER_REC.RESOURCE_ID:		'|| p_quote_header_rec.RESOURCE_ID,1,'Y');
8027 		aso_debug_pub.add('31.	Value of P_QUOTE_HEADER_REC.RESOURCE_ID:		'||p_quote_header_rec.resource_id, 1,'Y');
8028 
8029 		aso_debug_pub.add('32.	Value of P_SHIPMENT_HEADER_REC.SHIP_TO_CUST_PARTY_ID:	'||p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID, 1,'Y');
8030 		aso_debug_pub.add('33.	Value of P_SHIPMENT_HEADER_REC.SHIP_TO_CUST_ACCOUNT_ID:'||p_shipment_header_rec.SHIP_TO_CUST_ACCOUNT_ID, 1,'Y');
8031 		aso_debug_pub.add('34.	Value of P_SHIPMENT_HEADER_REC.SHIP_TO_PARTY_ID:	'||p_shipment_header_rec.SHIP_TO_PARTY_ID, 1,'Y');
8032 		aso_debug_pub.add('35.	Value of P_SHIPMENT_HEADER_REC.SHIP_TO_PARTY_SITE_ID:	'||p_shipment_header_rec.SHIP_TO_PARTY_SITE_ID, 1,'Y');
8033 		aso_debug_pub.add('36.	Value of P_SHIPMENT_HEADER_REC.REQUEST_DATE_TYPE: 	'||p_Shipment_header_rec.REQUEST_DATE_TYPE, 1,'Y');
8034 		aso_debug_pub.add('37.	Value of P_SHIPMENT_HEADER_REC.REQUEST_DATE:		'||P_Shipment_header_rec.REQUEST_DATE, 1,'Y');
8035 		aso_debug_pub.add('38.	Value of P_SHIPMENT_HEADER_REC.SHIPMENT_PRIORITY_CODE:	'||P_Shipment_header_rec.SHIPMENT_PRIORITY_CODE, 1,'Y');
8036 		aso_debug_pub.add('39.	Value of P_SHIPMENT_HEADER_REC.FOB_CODE:		'||P_Shipment_header_rec.FOB_CODE, 1,'Y');
8037 		aso_debug_pub.add('40.	Value of P_SHIPMENT_HEADER_REC.DEMAND_CLASS_CODE:	'||P_Shipment_header_rec.DEMAND_CLASS_CODE, 1,'Y');
8038 		aso_debug_pub.add('41.	Value of P_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS:	'|| P_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS,1,'Y');
8039 		aso_debug_pub.add('42.	Value of P_SHIPMENT_HEADER_REC.PACKING_INSTRUCTIONS:	'|| p_shipment_header_rec.PACKING_INSTRUCTIONS,1,'Y');
8040 		aso_debug_pub.add('43.	Value of P_SHIPMENT_HEADER_REC.SHIP_METHOD_CODE:	'|| P_SHIPMENT_HEADER_REC.SHIP_METHOD_CODE,1,'Y');
8041 		aso_debug_pub.add('44.	Value of P_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE:	'|| P_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE,1,'Y');
8042 
8043 		aso_debug_pub.add('45.	Value of P_PAYMENT_HEADER_REC.PAYMENT_TYPE_CODE:	'||P_Payment_header_rec.PAYMENT_TYPE_CODE, 1,'Y');
8044 		aso_debug_pub.add('46.	Value of P_PAYMENT_HEADER_REC.CREDIT_CARD_CODE:		'||P_Payment_header_rec.CREDIT_CARD_CODE, 1,'Y');
8045 		aso_debug_pub.add('47.	Value of P_PAYMENT_HEADER_REC.CREDIT_CARD_EXPIRATION_DATE:'|| P_PAYMENT_HEADER_REC.CREDIT_CARD_EXPIRATION_DATE,1,'Y');
8046 		aso_debug_pub.add('48.	Value of P_PAYMENT_HEADER_REC.CREDIT_CARD_HOLDER_NAME:	'|| P_PAYMENT_HEADER_REC.CREDIT_CARD_HOLDER_NAME,1,'Y');
8047 		aso_debug_pub.add('49.	Value of P_PAYMENT_HEADER_REC.CUST_PO_NUMBER:		'|| p_payment_header_rec.CUST_PO_NUMBER,1,'Y');
8048 		aso_debug_pub.add('50.	Value of P_PAYMENT_HEADER_REC.PAYMENT_REF_NUMBER:	'|| P_PAYMENT_HEADER_REC.PAYMENT_REF_NUMBER,1,'Y');
8049 		aso_debug_pub.add('51.	Value of P_PAYMENT_HEADER_REC.PAYMENT_TERM_ID:		'|| P_PAYMENT_HEADER_REC.PAYMENT_TERM_ID,1,'Y');
8050 
8051 		aso_debug_pub.add('52.	Value of P_QUOTE_HEADER_REC.END_CUSTOMER_CUST_PARTY_ID:	'||p_quote_header_rec.end_customer_cust_party_id, 1,'Y');
8052 		aso_debug_pub.add('53.	Value of P_QUOTE_HEADER_REC.END_CUSTOMER_CUST_ACCOUNT_ID:'||p_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID, 1,'Y');
8053 		aso_debug_pub.add('54.	Value of P_QUOTE_HEADER_REC.END_CUSTOMER_PARTY_ID:	'||p_quote_header_rec.END_CUSTOMER_PARTY_ID, 1,'Y');
8054 		aso_debug_pub.add('55.	Value of P_QUOTE_HEADER_REC.END_CUSTOMER_PARTY_SITE_ID:	'||p_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID, 1,'Y');
8055 
8056 		aso_debug_pub.add('56.	Value of P_QUOTE_HEADER_REC.ORG_ID:			'||p_quote_header_rec.ORG_ID, 1,'Y');
8057 		aso_debug_pub.add('57.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE1:			'|| p_quote_header_rec.ATTRIBUTE1,1,'Y');
8058 		aso_debug_pub.add('58.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE10:		'|| p_quote_header_rec.ATTRIBUTE10,1,'Y');
8059 		aso_debug_pub.add('59.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE11:		'|| p_quote_header_rec.ATTRIBUTE11,1,'Y');
8060 		aso_debug_pub.add('60.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE12:		'|| p_quote_header_rec.ATTRIBUTE12,1,'Y');
8061 		aso_debug_pub.add('61.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE13:		'|| p_quote_header_rec.ATTRIBUTE13,1,'Y');
8062 		aso_debug_pub.add('62.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE14:		'|| p_quote_header_rec.ATTRIBUTE14,1,'Y');
8063 		aso_debug_pub.add('63.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE15:		'|| p_quote_header_rec.ATTRIBUTE15,1,'Y');
8064 		aso_debug_pub.add('64.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE16:		'|| p_quote_header_rec.ATTRIBUTE16,1,'Y');
8065 		aso_debug_pub.add('65.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE17:		'|| p_quote_header_rec.ATTRIBUTE17,1,'Y');
8066 		aso_debug_pub.add('66.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE18:		'|| p_quote_header_rec.ATTRIBUTE18,1,'Y');
8067 		aso_debug_pub.add('67.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE19:		'|| p_quote_header_rec.ATTRIBUTE19,1,'Y');
8068 		aso_debug_pub.add('68.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE2:			'|| p_quote_header_rec.ATTRIBUTE2,1,'Y');
8069 		aso_debug_pub.add('69.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE20:		'|| p_quote_header_rec.ATTRIBUTE20,1,'Y');
8070 		aso_debug_pub.add('70.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE3:			'|| p_quote_header_rec.ATTRIBUTE3,1,'Y');
8071 		aso_debug_pub.add('71.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE4:			'|| p_quote_header_rec.ATTRIBUTE4,1,'Y');
8072 		aso_debug_pub.add('72.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE5:			'|| p_quote_header_rec.ATTRIBUTE5,1,'Y');
8073 		aso_debug_pub.add('73.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE6:			'|| p_quote_header_rec.ATTRIBUTE6,1,'Y');
8074 		aso_debug_pub.add('74.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE7:			'|| p_quote_header_rec.ATTRIBUTE7,1,'Y');
8075 		aso_debug_pub.add('75.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE8:			'|| p_quote_header_rec.ATTRIBUTE8,1,'Y');
8076 		aso_debug_pub.add('76.	Value of P_QUOTE_HEADER_REC.ATTRIBUTE9:			'|| p_quote_header_rec.ATTRIBUTE9,1,'Y');
8077 		aso_debug_pub.add('**		Header Attributes End		**', 1, 'Y');
8078 
8079 	ELSIF p_def_object_name = 'ASO_AK_QUOTE_LINE_V'    THEN --Print Line Attribues Only
8080 
8081 --Line Attributes (Input)
8082 		aso_debug_pub.add('**		Line Attributes Start		**', 1, 'Y');
8083 
8084 		aso_debug_pub.add('78.	Value of P_QUOTE_LINE_REC.CHARGE_PERIODICITY_CODE:	'||p_quote_line_rec.CHARGE_PERIODICITY_CODE,1,'Y');
8085 		aso_debug_pub.add('79.	Value of P_QUOTE_LINE_REC.PRICE_LIST_ID:		'||p_quote_line_rec.PRICE_LIST_ID, 1,'Y');
8086 
8087 		aso_debug_pub.add('80.	Value of P_QUOTE_LINE_REC.INVOICE_TO_CUST_PARTY_ID:	'||p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID, 1,'Y');
8088 		aso_debug_pub.add('81.	Value of P_QUOTE_LINE_REC.INVOICE_TO_CUST_ACCOUNT_ID:	'||p_quote_line_rec.INVOICE_TO_CUST_ACCOUNT_ID, 1,'Y');
8089 		aso_debug_pub.add('82.	Value of P_QUOTE_LINE_REC.INVOICE_TO_PARTY_ID		'||p_quote_Line_rec.INVOICE_TO_PARTY_ID, 1,'Y');
8090 		aso_debug_pub.add('83.	Value of P_QUOTE_LINE_REC.INVOICE_TO_PARTY_SITE_ID:	'||p_quote_line_rec.INVOICE_TO_PARTY_SITE_ID, 1,'Y');
8091 
8092 		aso_debug_pub.add('84.	Value of P_QUOTE_LINE_REC.END_CUSTOMER_CUST_PARTY_ID:	'||p_quote_line_rec.end_customer_cust_party_id, 1,'Y');
8093 		aso_debug_pub.add('85.	Value of P_QUOTE_LINE_REC.END_CUSTOMER_CUST_ACCOUNT_ID:	'||p_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID, 1,'Y');
8094 		aso_debug_pub.add('86.	Value of P_QUOTE_LINE_REC.END_CUSTOMER_PARTY_ID:	'||p_quote_Line_rec.END_CUSTOMER_PARTY_ID, 1,'Y');
8095 		aso_debug_pub.add('87.	Value of P_QUOTE_LINE_REC.END_CUSTOMER_PARTY_SITE_ID:	'||p_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID, 1,'Y');
8096 
8097 		aso_debug_pub.add('88.	Value of P_PAYMENT_LINE_REC.PAYMENT_TYPE_CODE:		'||P_Payment_line_rec.PAYMENT_TYPE_CODE, 1,'Y');
8098 		aso_debug_pub.add('89.	Value of P_PAYMENT_LINE_REC.CREDIT_CARD_CODE:		'||P_Payment_line_rec.CREDIT_CARD_CODE, 1,'Y');
8099 		aso_debug_pub.add('90.	Value of p_payment_line_rec.CREDIT_CARD_EXPIRATION_DATE:'|| p_payment_line_rec.CREDIT_CARD_EXPIRATION_DATE,1,'Y');
8100 		aso_debug_pub.add('91.	Value of p_payment_line_rec.CREDIT_CARD_HOLDER_NAME:	'|| p_payment_line_rec.CREDIT_CARD_HOLDER_NAME,1,'Y');
8101 		aso_debug_pub.add('92.	Value of p_payment_line_rec.CUST_PO_LINE_NUMBER:	'|| p_payment_line_rec.CUST_PO_LINE_NUMBER,1,'Y');
8102 		aso_debug_pub.add('93.	Value of p_payment_line_rec.CUST_PO_NUMBER:		'|| p_payment_line_rec.CUST_PO_NUMBER,1,'Y');
8103 		aso_debug_pub.add('94.	Value of p_payment_line_rec.PAYMENT_REF_NUMBER:		'|| p_payment_line_rec.PAYMENT_REF_NUMBER,1,'Y');
8104 		aso_debug_pub.add('95.	Value of p_payment_line_rec.PAYMENT_TERM_ID:		'|| p_payment_line_rec.PAYMENT_TERM_ID,1,'Y');
8105 
8106 
8107 		aso_debug_pub.add('96.	Value of P_SHIPMENT_LINE_REC.SHIP_TO_CUST_PARTY_ID:	'||p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID, 1,'Y');
8108 		aso_debug_pub.add('97.	Value of P_SHIPMENT_LINE_REC.SHIP_TO_CUST_ACCOUNT_ID:	'||p_shipment_line_rec.SHIP_TO_CUST_ACCOUNT_ID, 1,'Y');
8109 		aso_debug_pub.add('98.	Value of P_SHIPMENT_LINE_REC.SHIP_TO_PARTY_ID:		'||p_shipment_Line_rec.SHIP_TO_PARTY_ID, 1,'Y');
8110 		aso_debug_pub.add('99.	Value of P_SHIPMENT_LINE_REC.SHIP_TO_PARTY_SITE_ID:	'||p_shipment_line_rec.SHIP_TO_PARTY_SITE_ID, 1,'Y');
8111 		aso_debug_pub.add('100.	Value of p_shipment_line_rec.ATTRIBUTE_CATEGORY:	'|| p_shipment_line_rec.ATTRIBUTE_CATEGORY,1,'Y');
8112 		aso_debug_pub.add('101.	Value of p_shipment_line_rec.FREIGHT_TERMS_CODE:	'|| p_shipment_line_rec.FREIGHT_TERMS_CODE,1,'Y');
8113 		aso_debug_pub.add('102.	Value of p_shipment_line_rec.SHIP_FROM_ORG_ID:		'|| p_shipment_line_rec.SHIP_FROM_ORG_ID,1,'Y');
8114 		aso_debug_pub.add('103.	Value of p_shipment_line_rec.PACKING_INSTRUCTIONS:	'|| p_shipment_line_rec.PACKING_INSTRUCTIONS,1,'Y');
8115 		aso_debug_pub.add('104.	Value of p_shipment_line_rec.SHIPPING_INSTRUCTIONS:	'|| p_shipment_line_rec.SHIPPING_INSTRUCTIONS,1,'Y');
8116 		aso_debug_pub.add('105.	Value of p_shipment_line_rec.SHIP_METHOD_CODE:		'|| p_shipment_line_rec.SHIP_METHOD_CODE,1,'Y');
8117 
8118 		aso_debug_pub.add('106.	Value of P_SHIPMENT_LINE_REC.REQUEST_DATE_TYPE:		'||p_Shipment_line_rec.REQUEST_DATE_TYPE, 1,'Y');
8119 		aso_debug_pub.add('107.	Value of P_SHIPMENT_LINE_REC.REQUEST_DATE:		'||P_Shipment_line_rec.REQUEST_DATE, 1,'Y');
8120 		aso_debug_pub.add('108.	Value of P_SHIPMENT_LINE_REC.SHIPMENT_PRIORITY_CODE:	'||P_Shipment_line_rec.SHIPMENT_PRIORITY_CODE, 1,'Y');
8121 		aso_debug_pub.add('109.	Value of P_SHIPMENT_LINE_REC.FOB_CODE:			'||P_Shipment_line_rec.FOB_CODE, 1,'Y');
8122 		aso_debug_pub.add('110.	Value of P_SHIPMENT_LINE_REC.DEMAND_CLASS_CODE:		'||P_Shipment_line_rec.DEMAND_CLASS_CODE, 1,'Y');
8123 
8124 		aso_debug_pub.add('111.	Value of P_QUOTE_LINE_REC.ORG_ID:			'||P_quote_line_rec.ORG_ID, 1,'Y');
8125 		aso_debug_pub.add('112.	Value of p_quote_line_rec.AGREEMENT_ID:			'|| p_quote_line_rec.AGREEMENT_ID,1,'Y');
8126 		aso_debug_pub.add('113.	Value of p_quote_line_rec.ATTRIBUTE1:			'|| p_quote_line_rec.ATTRIBUTE1,1,'Y');
8127 		aso_debug_pub.add('114.	Value of p_quote_line_rec.ATTRIBUTE10:			'|| p_quote_line_rec.ATTRIBUTE10,1,'Y');
8128 		aso_debug_pub.add('115.	Value of p_quote_line_rec.ATTRIBUTE11:			'|| p_quote_line_rec.ATTRIBUTE11,1,'Y');
8129 		aso_debug_pub.add('116.	Value of p_quote_line_rec.ATTRIBUTE12:			'|| p_quote_line_rec.ATTRIBUTE12,1,'Y');
8130 		aso_debug_pub.add('117.	Value of p_quote_line_rec.ATTRIBUTE13:			'|| p_quote_line_rec.ATTRIBUTE13,1,'Y');
8131 		aso_debug_pub.add('118.	Value of p_quote_line_rec.ATTRIBUTE14:			'|| p_quote_line_rec.ATTRIBUTE14,1,'Y');
8132 		aso_debug_pub.add('119.	Value of p_quote_line_rec.ATTRIBUTE15:			'|| p_quote_line_rec.ATTRIBUTE15,1,'Y');
8133 		aso_debug_pub.add('120.	Value of p_quote_line_rec.ATTRIBUTE16:			'|| p_quote_line_rec.ATTRIBUTE16,1,'Y');
8134 		aso_debug_pub.add('121.	Value of p_quote_line_rec.ATTRIBUTE17:			'|| p_quote_line_rec.ATTRIBUTE17,1,'Y');
8135 		aso_debug_pub.add('122.	Value of p_quote_line_rec.ATTRIBUTE18:			'|| p_quote_line_rec.ATTRIBUTE18,1,'Y');
8136 		aso_debug_pub.add('123.	Value of p_quote_line_rec.ATTRIBUTE19:			'|| p_quote_line_rec.ATTRIBUTE19,1,'Y');
8137 		aso_debug_pub.add('124.	Value of p_quote_line_rec.ATTRIBUTE2:			'|| p_quote_line_rec.ATTRIBUTE2,1,'Y');
8138 		aso_debug_pub.add('125.	Value of p_quote_line_rec.ATTRIBUTE20:			'|| p_quote_line_rec.ATTRIBUTE20,1,'Y');
8139 		aso_debug_pub.add('126.	Value of p_quote_line_rec.ATTRIBUTE3:			'|| p_quote_line_rec.ATTRIBUTE3,1,'Y');
8140 		aso_debug_pub.add('127.	Value of p_quote_line_rec.ATTRIBUTE4:			'|| p_quote_line_rec.ATTRIBUTE4,1,'Y');
8141 		aso_debug_pub.add('128.	Value of p_quote_line_rec.ATTRIBUTE5:			'|| p_quote_line_rec.ATTRIBUTE5,1,'Y');
8142 		aso_debug_pub.add('129.	Value of p_quote_line_rec.ATTRIBUTE6:			'|| p_quote_line_rec.ATTRIBUTE6,1,'Y');
8143 		aso_debug_pub.add('130.	Value of p_quote_line_rec.ATTRIBUTE7:			'|| p_quote_line_rec.ATTRIBUTE7,1,'Y');
8144 		aso_debug_pub.add('131.	Value of p_quote_line_rec.ATTRIBUTE8:			'|| p_quote_line_rec.ATTRIBUTE8,1,'Y');
8145 		aso_debug_pub.add('132.	Value of p_quote_line_rec.ATTRIBUTE9:			'|| p_quote_line_rec.ATTRIBUTE9,1,'Y');
8146 		aso_debug_pub.add('133.	Value of p_quote_line_rec.CREATED_BY:			'|| p_quote_line_rec.CREATED_BY,1,'Y');
8147 		aso_debug_pub.add('134.	Value of p_quote_line_rec.ORDER_LINE_TYPE_ID:		'|| p_quote_line_rec.ORDER_LINE_TYPE_ID,1,'Y');
8148 		aso_debug_pub.add('135.	Value of p_quote_line_rec.LAST_UPDATE_DATE:		'|| p_quote_line_rec.LAST_UPDATE_DATE,1,'Y');
8149 		aso_debug_pub.add('136.	Value of p_quote_line_rec.LINE_CATEGORY_CODE:		'|| p_quote_line_rec.LINE_CATEGORY_CODE,1,'Y');
8150 		aso_debug_pub.add('137.	Value of p_quote_line_rec.OBJECT_VERSION_NUMBER:	'|| p_quote_line_rec.OBJECT_VERSION_NUMBER,1,'Y');
8151 		aso_debug_pub.add('138.	Value of p_quote_line_rec.QUOTE_HEADER_ID:		'|| p_quote_line_rec.QUOTE_HEADER_ID,1,'Y');
8152 		aso_debug_pub.add('139.	Value of p_quote_line_rec.QUOTE_LINE_ID:		'|| p_quote_line_rec.QUOTE_LINE_ID,1,'Y');
8153 
8154 		aso_debug_pub.add('**		Line Attributes End		**', 1, 'Y');
8155 	END IF ;
8156 
8157 ELSIF p_begin_flag = 'N' THEN
8158 
8159 	IF p_def_object_name = 'ASO_AK_QUOTE_HEADER_V' THEN
8160 
8161 --Header Attributes(Output)
8162 		aso_debug_pub.add('**		Header Attributes Start		**', 1, 'Y');
8163 
8164 		aso_debug_pub.add('1.	Value of x_QUOTE_HEADER_REC.PRICE_LIST_ID:		'||x_quote_header_rec.PRICE_LIST_ID, 1,'Y');
8165 		aso_debug_pub.add('2.	Value of x_QUOTE_HEADER_REC.CURRENCY_CODE:		'||x_quote_header_rec.CURRENCY_CODE, 1,'Y');
8166 		aso_debug_pub.add('3.	Value of x_QUOTE_HEADER_REC.SALES_CHANNEL_CODE:		'||x_quote_header_rec.SALES_CHANNEL_CODE, 1,'Y');
8167 		aso_debug_pub.add('4.	Value of x_QUOTE_HEADER_REC.AUTOMATIC_PRICE_FLAG:	'||x_quote_header_rec.AUTOMATIC_PRICE_FLAG, 1,'Y');
8168 		aso_debug_pub.add('5.	Value of x_QUOTE_HEADER_REC.AUTOMATIC_TAX_FLAG:		'||x_quote_header_rec.AUTOMATIC_TAX_FLAG, 1,'Y');
8169 		aso_debug_pub.add('6.	Value of x_QUOTE_HEADER_REC.PHONE_ID:			'||x_quote_header_rec.phone_id, 1,'Y');
8170 
8171 		aso_debug_pub.add('7.	Value of x_QUOTE_HEADER_REC.CUST_PARTY_ID:		'||x_quote_header_rec.cust_party_id, 1,'Y');
8172 		aso_debug_pub.add('8.	Value of x_QUOTE_HEADER_REC.CUST_ACCOUNT_ID:		'||x_quote_header_rec.CUST_ACCOUNT_ID, 1,'Y');
8173 		aso_debug_pub.add('9.	Value of x_QUOTE_HEADER_REC.PARTY_ID:			'||x_quote_header_rec.party_id, 1,'Y');
8174 		aso_debug_pub.add('10.	Value of x_QUOTE_HEADER_REC.SOLD_TO_PARTY_SITE_ID:	'||x_quote_header_rec.SOLD_TO_PARTY_SITE_ID, 1,'Y');
8175 
8176 		aso_debug_pub.add('11.	Value of x_QUOTE_HEADER_REC.INVOICE_TO_CUST_PARTY_ID:	'||x_quote_header_rec.INVOICE_TO_CUST_PARTY_ID, 1,'Y');
8177 		aso_debug_pub.add('12.	Value of x_QUOTE_HEADER_REC.INVOICE_TO_CUST_ACCOUNT_ID:'||x_quote_header_rec.INVOICE_TO_CUST_ACCOUNT_ID, 1,'Y');
8178 		aso_debug_pub.add('13.	Value of x_QUOTE_HEADER_REC.INVOICE_TO_PARTY_ID:	'||x_quote_header_rec.INVOICE_TO_PARTY_ID, 1,'Y');
8179 		aso_debug_pub.add('14.	Value of x_QUOTE_HEADER_REC.INVOICE_TO_PARTY_SITE_ID:	'||x_quote_header_rec.INVOICE_TO_PARTY_SITE_ID, 1,'Y');
8180 
8181 		aso_debug_pub.add('15.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE_CATEGORY:		'|| x_quote_header_rec.ATTRIBUTE_CATEGORY,1,'Y');
8182 		aso_debug_pub.add('16.	Value of x_QUOTE_HEADER_REC.CONTRACT_ID:		'|| x_quote_header_rec.CONTRACT_ID,1,'Y');
8183 		aso_debug_pub.add('17.	Value of x_QUOTE_HEADER_REC.CONTRACT_TEMPLATE_ID:	'|| x_quote_header_rec.CONTRACT_TEMPLATE_ID,1,'Y');
8184 		aso_debug_pub.add('18.	Value of x_QUOTE_HEADER_REC.CREATED_BY:			'|| x_quote_header_rec.CREATED_BY,1,'Y');
8185 		aso_debug_pub.add('19.	Value of x_QUOTE_HEADER_REC.LAST_UPDATE_DATE:		'|| x_quote_header_rec.LAST_UPDATE_DATE,1,'Y');
8186 		aso_debug_pub.add('20.	Value of x_QUOTE_HEADER_REC.MARKETING_SOURCE_CODE_ID:	'|| x_quote_header_rec.MARKETING_SOURCE_CODE_ID,1,'Y');
8187 		aso_debug_pub.add('21.	Value of x_QUOTE_HEADER_REC.OBJECT_VERSION_NUMBER:	'|| x_quote_header_rec.OBJECT_VERSION_NUMBER,1,'Y');
8188 		aso_debug_pub.add('22.	Value of x_QUOTE_HEADER_REC.ORDER_TYPE_ID:		'|| x_quote_header_rec.ORDER_TYPE_ID,1,'Y');
8189 		aso_debug_pub.add('23.	Value of x_QUOTE_HEADER_REC.PHONE_ID:			'|| x_quote_header_rec.PHONE_ID,1,'Y');
8190 		aso_debug_pub.add('24.	Value of x_QUOTE_HEADER_REC.PRICE_FROZEN_DATE:		'|| x_quote_header_rec.PRICE_FROZEN_DATE,1,'Y');
8191 		aso_debug_pub.add('25.	Value of x_QUOTE_HEADER_REC.QUOTE_EXPIRATION_DATE:	'|| x_quote_header_rec.QUOTE_EXPIRATION_DATE,1,'Y');
8192 		aso_debug_pub.add('26.	Value of x_QUOTE_HEADER_REC.QUOTE_HEADER_ID:		'|| x_quote_header_rec.QUOTE_HEADER_ID,1,'Y');
8193 		aso_debug_pub.add('27.	Value of x_QUOTE_HEADER_REC.QUOTE_NAME:			'|| x_quote_header_rec.QUOTE_NAME,1,'Y');
8194 		aso_debug_pub.add('28.	Value of x_QUOTE_HEADER_REC.QUOTE_STATUS_ID:		'|| x_quote_header_rec.QUOTE_STATUS_ID,1,'Y');
8195 		aso_debug_pub.add('29.	Value of x_QUOTE_HEADER_REC.RESOURCE_GRP_ID:		'|| x_quote_header_rec.RESOURCE_GRP_ID,1,'Y');
8196 		aso_debug_pub.add('30.	Value of x_QUOTE_HEADER_REC.RESOURCE_ID:		'|| x_quote_header_rec.RESOURCE_ID,1,'Y');
8197 		aso_debug_pub.add('31.	Value of x_QUOTE_HEADER_REC.RESOURCE_ID:		'||x_quote_header_rec.resource_id, 1,'Y');
8198 
8199 		aso_debug_pub.add('32.	Value of x_SHIPMENT_HEADER_REC.ship_TO_CUST_PARTY_ID:	'||x_shipment_header_rec.ship_TO_CUST_PARTY_ID, 1,'Y');
8200 		aso_debug_pub.add('33.	Value of x_SHIPMENT_HEADER_REC.ship_TO_CUST_ACCOUNT_ID:'||x_shipment_header_rec.ship_TO_CUST_ACCOUNT_ID, 1,'Y');
8201 		aso_debug_pub.add('34.	Value of x_SHIPMENT_HEADER_REC.ship_TO_PARTY_ID:	'||x_shipment_header_rec.ship_TO_PARTY_ID, 1,'Y');
8202 		aso_debug_pub.add('35.	Value of x_SHIPMENT_HEADER_REC.ship_TO_PARTY_SITE_ID:	'||x_shipment_header_rec.ship_TO_PARTY_SITE_ID, 1,'Y');
8203 		aso_debug_pub.add('36.	Value of x_SHIPMENT_HEADER_REC.REQUEST_DATE_TYPE: 	'||x_Shipment_header_rec.REQUEST_DATE_TYPE, 1,'Y');
8204 		aso_debug_pub.add('37.	Value of x_SHIPMENT_HEADER_REC.REQUEST_DATE:		'||x_Shipment_header_rec.REQUEST_DATE, 1,'Y');
8205 		aso_debug_pub.add('38.	Value of x_SHIPMENT_HEADER_REC.SHIPMENT_PRIORITY_CODE:	'||x_Shipment_header_rec.SHIPMENT_PRIORITY_CODE, 1,'Y');
8206 		aso_debug_pub.add('39.	Value of x_SHIPMENT_HEADER_REC.FOB_CODE:		'||x_Shipment_header_rec.FOB_CODE, 1,'Y');
8207 		aso_debug_pub.add('40.	Value of x_SHIPMENT_HEADER_REC.DEMAND_CLASS_CODE:	'||x_Shipment_header_rec.DEMAND_CLASS_CODE, 1,'Y');
8208 		aso_debug_pub.add('41.	Value of x_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS:	'|| x_SHIPMENT_HEADER_REC.SHIPPING_INSTRUCTIONS,1,'Y');
8209 		aso_debug_pub.add('42.	Value of x_SHIPMENT_HEADER_REC.PACKING_INSTRUCTIONS:	'|| x_shipment_header_rec.PACKING_INSTRUCTIONS,1,'Y');
8210 		aso_debug_pub.add('43.	Value of x_SHIPMENT_HEADER_REC.ship_METHOD_CODE:	'|| x_SHIPMENT_HEADER_REC.ship_METHOD_CODE,1,'Y');
8211 		aso_debug_pub.add('44.	Value of x_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE:	'|| x_SHIPMENT_HEADER_REC.FREIGHT_TERMS_CODE,1,'Y');
8212 
8213 		aso_debug_pub.add('45.	Value of x_PAYMENT_HEADER_REC.PAYMENT_TYPE_CODE:	'||x_Payment_header_rec.PAYMENT_TYPE_CODE, 1,'Y');
8214 		aso_debug_pub.add('46.	Value of x_PAYMENT_HEADER_REC.CREDIT_CARD_CODE:		'||x_Payment_header_rec.CREDIT_CARD_CODE, 1,'Y');
8215 		aso_debug_pub.add('47.	Value of x_PAYMENT_HEADER_REC.CREDIT_CARD_EXPIRATION_DATE:'|| x_PAYMENT_HEADER_REC.CREDIT_CARD_EXPIRATION_DATE,1,'Y');
8216 		aso_debug_pub.add('48.	Value of x_PAYMENT_HEADER_REC.CREDIT_CARD_HOLDER_NAME:	'|| x_PAYMENT_HEADER_REC.CREDIT_CARD_HOLDER_NAME,1,'Y');
8217 		aso_debug_pub.add('49.	Value of x_PAYMENT_HEADER_REC.CUST_PO_NUMBER:		'|| x_payment_header_rec.CUST_PO_NUMBER,1,'Y');
8218 		aso_debug_pub.add('50.	Value of x_PAYMENT_HEADER_REC.PAYMENT_REF_NUMBER:	'|| x_PAYMENT_HEADER_REC.PAYMENT_REF_NUMBER,1,'Y');
8219 		aso_debug_pub.add('51.	Value of x_PAYMENT_HEADER_REC.PAYMENT_TERM_ID:		'|| x_PAYMENT_HEADER_REC.PAYMENT_TERM_ID,1,'Y');
8220 
8221 		aso_debug_pub.add('52.	Value of x_QUOTE_HEADER_REC.END_CUSTOMER_CUST_PARTY_ID:	'||x_quote_header_rec.end_customer_cust_party_id, 1,'Y');
8222 		aso_debug_pub.add('53.	Value of x_QUOTE_HEADER_REC.END_CUSTOMER_CUST_ACCOUNT_ID:'||x_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID, 1,'Y');
8223 		aso_debug_pub.add('54.	Value of x_QUOTE_HEADER_REC.END_CUSTOMER_PARTY_ID:	'||x_quote_header_rec.END_CUSTOMER_PARTY_ID, 1,'Y');
8224 		aso_debug_pub.add('55.	Value of x_QUOTE_HEADER_REC.END_CUSTOMER_PARTY_SITE_ID:	'||x_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID, 1,'Y');
8225 
8226 		aso_debug_pub.add('56.	Value of x_QUOTE_HEADER_REC.ORG_ID:			'||x_quote_header_rec.ORG_ID, 1,'Y');
8227 		aso_debug_pub.add('57.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE1:			'|| x_quote_header_rec.ATTRIBUTE1,1,'Y');
8228 		aso_debug_pub.add('58.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE10:		'|| x_quote_header_rec.ATTRIBUTE10,1,'Y');
8229 		aso_debug_pub.add('59.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE11:		'|| x_quote_header_rec.ATTRIBUTE11,1,'Y');
8230 		aso_debug_pub.add('60.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE12:		'|| x_quote_header_rec.ATTRIBUTE12,1,'Y');
8231 		aso_debug_pub.add('61.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE13:		'|| x_quote_header_rec.ATTRIBUTE13,1,'Y');
8232 		aso_debug_pub.add('62.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE14:		'|| x_quote_header_rec.ATTRIBUTE14,1,'Y');
8233 		aso_debug_pub.add('63.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE15:		'|| x_quote_header_rec.ATTRIBUTE15,1,'Y');
8234 		aso_debug_pub.add('64.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE16:		'|| x_quote_header_rec.ATTRIBUTE16,1,'Y');
8235 		aso_debug_pub.add('65.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE17:		'|| x_quote_header_rec.ATTRIBUTE17,1,'Y');
8236 		aso_debug_pub.add('66.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE18:		'|| x_quote_header_rec.ATTRIBUTE18,1,'Y');
8237 		aso_debug_pub.add('67.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE19:		'|| x_quote_header_rec.ATTRIBUTE19,1,'Y');
8238 		aso_debug_pub.add('68.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE2:			'|| x_quote_header_rec.ATTRIBUTE2,1,'Y');
8239 		aso_debug_pub.add('69.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE20:		'|| x_quote_header_rec.ATTRIBUTE20,1,'Y');
8240 		aso_debug_pub.add('70.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE3:			'|| x_quote_header_rec.ATTRIBUTE3,1,'Y');
8241 		aso_debug_pub.add('71.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE4:			'|| x_quote_header_rec.ATTRIBUTE4,1,'Y');
8242 		aso_debug_pub.add('72.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE5:			'|| x_quote_header_rec.ATTRIBUTE5,1,'Y');
8243 		aso_debug_pub.add('73.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE6:			'|| x_quote_header_rec.ATTRIBUTE6,1,'Y');
8244 		aso_debug_pub.add('74.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE7:			'|| x_quote_header_rec.ATTRIBUTE7,1,'Y');
8245 		aso_debug_pub.add('75.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE8:			'|| x_quote_header_rec.ATTRIBUTE8,1,'Y');
8246 		aso_debug_pub.add('76.	Value of x_QUOTE_HEADER_REC.ATTRIBUTE9:			'|| x_quote_header_rec.ATTRIBUTE9,1,'Y');
8247 		aso_debug_pub.add('**		Header Attributes End		**', 1, 'Y');
8248 
8249 	ELSIF p_def_object_name = 'ASO_AK_QUOTE_LINE_V' THEN
8250 --Line Attributes (Input)
8251 		aso_debug_pub.add('**		Line Attributes Start		**', 1, 'Y');
8252 
8253 		aso_debug_pub.add('78.	Value of x_QUOTE_LINE_REC.CHARGE_PERIODICITY_CODE:	'||x_quote_line_rec.CHARGE_PERIODICITY_CODE,1,'Y');
8254 		aso_debug_pub.add('79.	Value of x_QUOTE_LINE_REC.PRICE_LIST_ID:		'||x_quote_line_rec.PRICE_LIST_ID, 1,'Y');
8255 
8256 		aso_debug_pub.add('80.	Value of x_QUOTE_LINE_REC.INVOICE_TO_CUST_PARTY_ID:	'||x_quote_line_rec.INVOICE_TO_CUST_PARTY_ID, 1,'Y');
8257 		aso_debug_pub.add('81.	Value of x_QUOTE_LINE_REC.INVOICE_TO_CUST_ACCOUNT_ID:	'||x_quote_line_rec.INVOICE_TO_CUST_ACCOUNT_ID, 1,'Y');
8258 		aso_debug_pub.add('82.	Value of x_QUOTE_LINE_REC.INVOICE_TO_PARTY_ID		'||x_quote_Line_rec.INVOICE_TO_PARTY_ID, 1,'Y');
8259 		aso_debug_pub.add('83.	Value of x_QUOTE_LINE_REC.INVOICE_TO_PARTY_SITE_ID:	'||x_quote_line_rec.INVOICE_TO_PARTY_SITE_ID, 1,'Y');
8260 
8261 		aso_debug_pub.add('84.	Value of x_QUOTE_LINE_REC.END_CUSTOMER_CUST_PARTY_ID:	'||x_quote_line_rec.end_customer_cust_party_id, 1,'Y');
8262 		aso_debug_pub.add('85.	Value of x_QUOTE_LINE_REC.END_CUSTOMER_CUST_ACCOUNT_ID:	'||x_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID, 1,'Y');
8263 		aso_debug_pub.add('86.	Value of x_QUOTE_LINE_REC.END_CUSTOMER_PARTY_ID:	'||x_quote_Line_rec.END_CUSTOMER_PARTY_ID, 1,'Y');
8264 		aso_debug_pub.add('87.	Value of x_QUOTE_LINE_REC.END_CUSTOMER_PARTY_SITE_ID:	'||x_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID, 1,'Y');
8265 
8266 		aso_debug_pub.add('88.	Value of x_PAYMENT_LINE_REC.PAYMENT_TYPE_CODE:		'||x_Payment_line_rec.PAYMENT_TYPE_CODE, 1,'Y');
8267 		aso_debug_pub.add('89.	Value of x_PAYMENT_LINE_REC.CREDIT_CARD_CODE:		'||x_Payment_line_rec.CREDIT_CARD_CODE, 1,'Y');
8268 		aso_debug_pub.add('90.	Value of x_payment_line_rec.CREDIT_CARD_EXPIRATION_DATE:'|| x_payment_line_rec.CREDIT_CARD_EXPIRATION_DATE,1,'Y');
8269 		aso_debug_pub.add('91.	Value of x_payment_line_rec.CREDIT_CARD_HOLDER_NAME:	'|| x_payment_line_rec.CREDIT_CARD_HOLDER_NAME,1,'Y');
8270 		aso_debug_pub.add('92.	Value of x_payment_line_rec.CUST_PO_LINE_NUMBER:	'|| x_payment_line_rec.CUST_PO_LINE_NUMBER,1,'Y');
8271 		aso_debug_pub.add('93.	Value of x_payment_line_rec.CUST_PO_NUMBER:		'|| x_payment_line_rec.CUST_PO_NUMBER,1,'Y');
8272 		aso_debug_pub.add('94.	Value of x_payment_line_rec.PAYMENT_REF_NUMBER:		'|| x_payment_line_rec.PAYMENT_REF_NUMBER,1,'Y');
8273 		aso_debug_pub.add('95.	Value of x_payment_line_rec.PAYMENT_TERM_ID:		'|| x_payment_line_rec.PAYMENT_TERM_ID,1,'Y');
8274 
8275 
8276 		aso_debug_pub.add('96.	Value of x_SHIPMENT_LINE_REC.ship_TO_CUST_PARTY_ID:	'||x_shipment_line_rec.ship_TO_CUST_PARTY_ID, 1,'Y');
8277 		aso_debug_pub.add('97.	Value of x_SHIPMENT_LINE_REC.ship_TO_CUST_ACCOUNT_ID:	'||x_shipment_line_rec.ship_TO_CUST_ACCOUNT_ID, 1,'Y');
8278 		aso_debug_pub.add('98.	Value of x_SHIPMENT_LINE_REC.ship_TO_PARTY_ID:		'||x_shipment_Line_rec.ship_TO_PARTY_ID, 1,'Y');
8279 		aso_debug_pub.add('99.	Value of x_SHIPMENT_LINE_REC.ship_TO_PARTY_SITE_ID:	'||x_shipment_line_rec.ship_TO_PARTY_SITE_ID, 1,'Y');
8280 		aso_debug_pub.add('100.	Value of x_shipment_line_rec.ATTRIBUTE_CATEGORY:	'|| x_shipment_line_rec.ATTRIBUTE_CATEGORY,1,'Y');
8281 		aso_debug_pub.add('101.	Value of x_shipment_line_rec.FREIGHT_TERMS_CODE:	'|| x_shipment_line_rec.FREIGHT_TERMS_CODE,1,'Y');
8282 		aso_debug_pub.add('102.	Value of x_shipment_line_rec.ship_FROM_ORG_ID:		'|| x_shipment_line_rec.ship_FROM_ORG_ID,1,'Y');
8283 		aso_debug_pub.add('103.	Value of x_shipment_line_rec.PACKING_INSTRUCTIONS:	'|| x_shipment_line_rec.PACKING_INSTRUCTIONS,1,'Y');
8284 		aso_debug_pub.add('104.	Value of x_shipment_line_rec.SHIPPING_INSTRUCTIONS:	'|| x_shipment_line_rec.SHIPPING_INSTRUCTIONS,1,'Y');
8285 		aso_debug_pub.add('105.	Value of x_shipment_line_rec.ship_METHOD_CODE:		'|| x_shipment_line_rec.ship_METHOD_CODE,1,'Y');
8286 
8287 		aso_debug_pub.add('106.	Value of x_SHIPMENT_LINE_REC.REQUEST_DATE_TYPE:		'||x_Shipment_line_rec.REQUEST_DATE_TYPE, 1,'Y');
8288 		aso_debug_pub.add('107.	Value of x_SHIPMENT_LINE_REC.REQUEST_DATE:		'||x_Shipment_line_rec.REQUEST_DATE, 1,'Y');
8289 		aso_debug_pub.add('108.	Value of x_SHIPMENT_LINE_REC.SHIPMENT_PRIORITY_CODE:	'||x_Shipment_line_rec.SHIPMENT_PRIORITY_CODE, 1,'Y');
8290 		aso_debug_pub.add('109.	Value of x_SHIPMENT_LINE_REC.FOB_CODE:			'||x_Shipment_line_rec.FOB_CODE, 1,'Y');
8291 		aso_debug_pub.add('110.	Value of x_SHIPMENT_LINE_REC.DEMAND_CLASS_CODE:		'||x_Shipment_line_rec.DEMAND_CLASS_CODE, 1,'Y');
8292 
8293 		aso_debug_pub.add('111.	Value of x_QUOTE_LINE_REC.ORG_ID:			'||x_quote_line_rec.ORG_ID, 1,'Y');
8294 		aso_debug_pub.add('112.	Value of x_quote_line_rec.AGREEMENT_ID:			'|| x_quote_line_rec.AGREEMENT_ID,1,'Y');
8295 		aso_debug_pub.add('113.	Value of x_quote_line_rec.ATTRIBUTE1:			'|| x_quote_line_rec.ATTRIBUTE1,1,'Y');
8296 		aso_debug_pub.add('114.	Value of x_quote_line_rec.ATTRIBUTE10:			'|| x_quote_line_rec.ATTRIBUTE10,1,'Y');
8297 		aso_debug_pub.add('115.	Value of x_quote_line_rec.ATTRIBUTE11:			'|| x_quote_line_rec.ATTRIBUTE11,1,'Y');
8298 		aso_debug_pub.add('116.	Value of x_quote_line_rec.ATTRIBUTE12:			'|| x_quote_line_rec.ATTRIBUTE12,1,'Y');
8299 		aso_debug_pub.add('117.	Value of x_quote_line_rec.ATTRIBUTE13:			'|| x_quote_line_rec.ATTRIBUTE13,1,'Y');
8300 		aso_debug_pub.add('118.	Value of x_quote_line_rec.ATTRIBUTE14:			'|| x_quote_line_rec.ATTRIBUTE14,1,'Y');
8301 		aso_debug_pub.add('119.	Value of x_quote_line_rec.ATTRIBUTE15:			'|| x_quote_line_rec.ATTRIBUTE15,1,'Y');
8302 		aso_debug_pub.add('120.	Value of x_quote_line_rec.ATTRIBUTE16:			'|| x_quote_line_rec.ATTRIBUTE16,1,'Y');
8303 		aso_debug_pub.add('121.	Value of x_quote_line_rec.ATTRIBUTE17:			'|| x_quote_line_rec.ATTRIBUTE17,1,'Y');
8304 		aso_debug_pub.add('122.	Value of x_quote_line_rec.ATTRIBUTE18:			'|| x_quote_line_rec.ATTRIBUTE18,1,'Y');
8305 		aso_debug_pub.add('123.	Value of x_quote_line_rec.ATTRIBUTE19:			'|| x_quote_line_rec.ATTRIBUTE19,1,'Y');
8306 		aso_debug_pub.add('124.	Value of x_quote_line_rec.ATTRIBUTE2:			'|| x_quote_line_rec.ATTRIBUTE2,1,'Y');
8307 		aso_debug_pub.add('125.	Value of x_quote_line_rec.ATTRIBUTE20:			'|| x_quote_line_rec.ATTRIBUTE20,1,'Y');
8308 		aso_debug_pub.add('126.	Value of x_quote_line_rec.ATTRIBUTE3:			'|| x_quote_line_rec.ATTRIBUTE3,1,'Y');
8309 		aso_debug_pub.add('127.	Value of x_quote_line_rec.ATTRIBUTE4:			'|| x_quote_line_rec.ATTRIBUTE4,1,'Y');
8310 		aso_debug_pub.add('128.	Value of x_quote_line_rec.ATTRIBUTE5:			'|| x_quote_line_rec.ATTRIBUTE5,1,'Y');
8311 		aso_debug_pub.add('129.	Value of x_quote_line_rec.ATTRIBUTE6:			'|| x_quote_line_rec.ATTRIBUTE6,1,'Y');
8312 		aso_debug_pub.add('130.	Value of x_quote_line_rec.ATTRIBUTE7:			'|| x_quote_line_rec.ATTRIBUTE7,1,'Y');
8313 		aso_debug_pub.add('131.	Value of x_quote_line_rec.ATTRIBUTE8:			'|| x_quote_line_rec.ATTRIBUTE8,1,'Y');
8314 		aso_debug_pub.add('132.	Value of x_quote_line_rec.ATTRIBUTE9:			'|| x_quote_line_rec.ATTRIBUTE9,1,'Y');
8315 		aso_debug_pub.add('133.	Value of x_quote_line_rec.CREATED_BY:			'|| x_quote_line_rec.CREATED_BY,1,'Y');
8316 		aso_debug_pub.add('134.	Value of x_quote_line_rec.ORDER_LINE_TYPE_ID:		'|| x_quote_line_rec.ORDER_LINE_TYPE_ID,1,'Y');
8317 		aso_debug_pub.add('135.	Value of x_quote_line_rec.LAST_UPDATE_DATE:		'|| x_quote_line_rec.LAST_UPDATE_DATE,1,'Y');
8318 		aso_debug_pub.add('136.	Value of x_quote_line_rec.LINE_CATEGORY_CODE:		'|| x_quote_line_rec.LINE_CATEGORY_CODE,1,'Y');
8319 		aso_debug_pub.add('137.	Value of x_quote_line_rec.OBJECT_VERSION_NUMBER:	'|| x_quote_line_rec.OBJECT_VERSION_NUMBER,1,'Y');
8320 		aso_debug_pub.add('138.	Value of x_quote_line_rec.QUOTE_HEADER_ID:		'|| x_quote_line_rec.QUOTE_HEADER_ID,1,'Y');
8321 		aso_debug_pub.add('139.	Value of x_quote_line_rec.QUOTE_LINE_ID:		'|| x_quote_line_rec.QUOTE_LINE_ID,1,'Y');
8322 
8323 		aso_debug_pub.add('**		Line Attributes End		**', 1, 'Y');
8324 	END IF;
8325 END IF ;
8326 END;
8327 
8328 BEGIN
8329 
8330      aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
8331 
8332       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8333 	     aso_debug_pub.add('******************************************************', 1, 'Y');
8334 	     aso_debug_pub.add('Begin VALIDATE_DEFAULTING_DATA', 1, 'Y');
8335 	     aso_debug_pub.add('******************************************************', 1, 'Y');
8336 	 END IF;
8337       -- Standard call to check for call compatibility.
8338 --      IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
8339 --                                           p_api_version_number,
8340 --                                           l_api_name,
8341 --                                           G_PKG_NAME) THEN
8342 --
8343 --           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8344 --      END IF;
8345       -- Initialize message list if p_init_msg_list is set to TRUE.
8346       IF FND_API.to_Boolean( p_init_msg_list ) THEN
8347 	     FND_MSG_PUB.initialize;
8348       END IF;
8349 
8350 	--- Initialize API return status to SUCCESS
8351       x_return_status := FND_API.G_RET_STS_SUCCESS;
8352 
8353 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8354 		aso_debug_pub.add('Before copying all the input parameters to output parameters', 1, 'Y');
8355 	END IF;
8356 
8357 	X_quote_header_rec	:= P_quote_header_rec ;
8358 	X_quote_line_rec	:= P_quote_line_rec ;
8359 	X_Shipment_header_rec	:= P_Shipment_header_rec ;
8360 	X_Shipment_line_rec	:= P_shipment_line_rec ;
8361 	X_Payment_header_rec	:= P_Payment_header_rec ;
8362 	X_Payment_line_rec	:= P_Payment_line_rec ;
8363 	X_tax_header_rec	:= P_tax_header_rec ;
8364 	X_tax_line_rec		:= P_tax_line_rec ;
8365 
8366 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8367 		aso_debug_pub.add('Copied all the input parameters to output parameters', 1, 'Y');
8368 	END IF;
8369 
8370 
8371         --For charged periodicity
8372         l_periodicity_profile := FND_PROFILE.value('ONT_UOM_CLASS_CHARGE_PERIODICITY');
8373       	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8374 		aso_debug_pub.add('Value of profile ONT_UOM_CLASS_CHARGE_PERIODICITY : '||l_periodicity_profile, 1, 'Y');
8375 	END IF;
8376 
8377      --Printing the Values before processing
8378      PRINT_DEFAULTING_ATTRIBUTES('Y');
8379 
8380 --Shipment Priority
8381 
8382 if (	p_shipment_header_rec.SHIPMENT_PRIORITY_CODE is NOT NULL
8383 	AND p_shipment_header_rec.SHIPMENT_PRIORITY_CODE <> FND_API.G_MISS_CHAR) THEN
8384 
8385 		aso_debug_pub.add('Before opening Cursor C_SHIPMENT_PRIORITY_CODE--Header Level', 1, 'Y');
8386 		OPEN C_SHIPMENT_PRIORITY_CODE(P_Shipment_header_rec.SHIPMENT_PRIORITY_CODE);       --Header Level
8387 		aso_debug_pub.add('Before fetching Cursor C_SHIPMENT_PRIORITY_CODE--Header Level', 1, 'Y');
8388 		FETCH C_SHIPMENT_PRIORITY_CODE INTO l_data_exists ;
8389 
8390 		IF C_SHIPMENT_PRIORITY_CODE%FOUND THEN
8391 			x_Shipment_header_rec.SHIPMENT_PRIORITY_CODE	 := P_Shipment_header_rec.SHIPMENT_PRIORITY_CODE;
8392 		ELSE
8393 			x_Shipment_header_rec.SHIPMENT_PRIORITY_CODE	 := NULL ;
8394                         aso_debug_pub.add('No Data Found for Cursor...C_SHIPMENT_PRIORITY_CODE--Header Level', 1, 'Y');
8395 
8396 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8397 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SHPMT_PRIORITY', TRUE);
8398 			FND_MSG_PUB.ADD;
8399 
8400 		aso_debug_pub.add('No Data Found for Cursor C_SHIPMENT_PRIORITY_CODE--Header Level', 1, 'Y');
8401 		END IF;
8402 		aso_debug_pub.add('Before Closing Cursor C_SHIPMENT_PRIORITY_CODE-Header Level', 1, 'Y');
8403 		CLOSE C_SHIPMENT_PRIORITY_CODE;
8404 		aso_debug_pub.add('After Closing Cursor C_SHIPMENT_PRIORITY_CODE-Header Level', 1, 'Y');
8405 
8406 END IF;
8407 
8408 if (	p_shipment_line_rec.SHIPMENT_PRIORITY_CODE is NOT NULL
8409 	AND p_shipment_line_rec.SHIPMENT_PRIORITY_CODE <> FND_API.G_MISS_CHAR) THEN
8410 
8411 		aso_debug_pub.add('Before opening Cursor C_SHIPMENT_PRIORITY_CODE--Line Level', 1, 'Y');
8412 		OPEN C_SHIPMENT_PRIORITY_CODE(P_Shipment_line_rec.SHIPMENT_PRIORITY_CODE);         --line Level
8413 		aso_debug_pub.add('Before fetching Cursor C_SHIPMENT_PRIORITY_CODE--Line Level', 1, 'Y');
8414 
8415 		FETCH C_SHIPMENT_PRIORITY_CODE INTO l_data_exists ;
8416 
8417 		IF C_SHIPMENT_PRIORITY_CODE%FOUND THEN
8418 			x_Shipment_line_rec.SHIPMENT_PRIORITY_CODE	 := P_Shipment_line_rec.SHIPMENT_PRIORITY_CODE;
8419 		ELSE
8420 			x_Shipment_line_rec.SHIPMENT_PRIORITY_CODE	 := NULL ;
8421                         aso_debug_pub.add('No Data Found for Cursor...C_SHIPMENT_PRIORITY_CODE--Line Level', 1, 'Y');
8422 			--x_return_status := FND_API.G_RET_STS_ERROR;
8423 		END IF;
8424 		aso_debug_pub.add('Before Closing Cursor C_SHIPMENT_PRIORITY_CODE-Line Level', 1, 'Y');
8425 		CLOSE C_SHIPMENT_PRIORITY_CODE;
8426 		aso_debug_pub.add('After Closing Cursor C_SHIPMENT_PRIORITY_CODE-Line Level', 1, 'Y');
8427 
8428 END IF;
8429 
8430 --FOB CODE
8431 
8432 if (	p_shipment_header_rec.FOB_CODE is NOT NULL
8433 	AND p_shipment_header_rec.FOB_CODE <> FND_API.G_MISS_CHAR) THEN
8434 	      aso_debug_pub.add('Before opening Cursor C_FOB--Header Level', 1, 'Y');
8435 		OPEN C_FOB(P_Shipment_header_rec.FOB_CODE) ;                   --Header Level
8436 	      aso_debug_pub.add('Before fetching Cursor C_FOB--Header Level', 1, 'Y');
8437 
8438 		FETCH C_FOB INTO l_data_exists ;
8439 
8440 		IF C_FOB%FOUND THEN
8441 			x_Shipment_header_rec.FOB_CODE	 := P_Shipment_header_rec.FOB_CODE ;
8442 		ELSE
8443 			x_Shipment_header_rec.FOB_CODE := NULL ;
8444                         aso_debug_pub.add('No Data Found for Cursor...C_FOB--Header Level', 1, 'Y');
8445 
8446 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8447 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_FOB', TRUE);
8448 			FND_MSG_PUB.ADD;
8449 
8450 			--x_return_status := FND_API.G_RET_STS_ERROR;
8451 		END IF;
8452 	      aso_debug_pub.add('Before Closing Cursor C_FOB--Header Level', 1, 'Y');
8453 		CLOSE C_FOB;
8454 	      aso_debug_pub.add('After Closing Cursor C_FOB--Header Level', 1, 'Y');
8455 
8456 END IF;
8457 
8458 if (	p_shipment_line_rec.FOB_CODE is NOT NULL
8459 	AND p_shipment_line_rec.FOB_CODE <> FND_API.G_MISS_CHAR) THEN
8460 		aso_debug_pub.add('Before opening Cursor C_FOB--Line Level', 1, 'Y');
8461 		OPEN C_FOB(P_Shipment_line_rec.FOB_CODE) ;                   --line Level
8462 		aso_debug_pub.add('Before fetching Cursor C_FOB--Line Level', 1, 'Y');
8463 		FETCH C_FOB INTO l_data_exists ;
8464 
8465 		IF C_FOB%FOUND THEN
8466 			x_Shipment_line_rec.FOB_CODE	 := P_Shipment_line_rec.FOB_CODE ;
8467 		ELSE
8468 			x_Shipment_line_rec.FOB_CODE := NULL ;
8469                         aso_debug_pub.add('No Data Found for Cursor...C_FOB--Line Level', 1, 'Y');
8470 			--x_return_status := FND_API.G_RET_STS_ERROR;
8471 		END IF;
8472 	      aso_debug_pub.add('Before Closing Cursor C_FOB--Line Level', 1, 'Y');
8473 		CLOSE C_FOB;
8474 	      aso_debug_pub.add('After Closing Cursor C_FOB--Line Level', 1, 'Y');
8475 
8476 END IF;
8477 
8478 --Credit Card Type
8479 
8480 if (	P_Payment_header_rec.CREDIT_CARD_CODE is NOT NULL
8481 	AND P_Payment_header_rec.CREDIT_CARD_CODE <> FND_API.G_MISS_CHAR ) THEN
8482 
8483 	IF (P_Payment_header_rec.PAYMENT_TYPE_CODE = 'CREDIT_CARD') THEN
8484 
8485 	      aso_debug_pub.add('Before opening Cursor C_CREDIT_CARD_TYPE--Header Level', 1, 'Y');
8486 
8487 		OPEN C_CREDIT_CARD_TYPE(P_Payment_header_rec.CREDIT_CARD_CODE) ;                   --Header Level
8488 	      aso_debug_pub.add('Before fetching Cursor C_CREDIT_CARD_TYPE--Header Level', 1, 'Y');
8489 		FETCH C_CREDIT_CARD_TYPE INTO l_data_exists ;
8490 
8491 		IF C_CREDIT_CARD_TYPE%FOUND THEN
8492 			x_Payment_header_rec.CREDIT_CARD_CODE	 := P_Payment_header_rec.CREDIT_CARD_CODE;
8493 		ELSE
8494 			x_Payment_header_rec.CREDIT_CARD_CODE := NULL ;
8495                         aso_debug_pub.add('No Data Found for Cursor...C_CREDIT_CARD_TYPE--Header Level', 1, 'Y');
8496 
8497 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8498 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_CREDIT_CARD_TYPE', TRUE);
8499 			FND_MSG_PUB.ADD;
8500 
8501 			--x_return_status := FND_API.G_RET_STS_ERROR;
8502 		END IF;
8503 	      aso_debug_pub.add('Before Closing Cursor C_CREDIT_CARD_TYPE--Header Level', 1, 'Y');
8504 		CLOSE C_CREDIT_CARD_TYPE;
8505 	      aso_debug_pub.add('After Closing Cursor C_CREDIT_CARD_TYPE--Header Level', 1, 'Y');
8506 
8507 	 ELSE
8508 		x_Payment_header_rec.CREDIT_CARD_CODE := NULL ;
8509 		aso_debug_pub.add('Credit card code needs to be null if payment type is not CREDIT_CARD.', 1, 'Y');
8510 
8511 		FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8512 		FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_CREDIT_CARD_TYPE', TRUE);
8513 		FND_MSG_PUB.ADD;
8514 
8515 	END IF ;
8516 end if;
8517 
8518 
8519 if (	P_Payment_line_rec.CREDIT_CARD_CODE is NOT NULL
8520 	AND P_Payment_line_rec.CREDIT_CARD_CODE <> FND_API.G_MISS_CHAR ) THEN
8521 
8522 	IF (P_Payment_header_rec.PAYMENT_TYPE_CODE = 'CREDIT_CARD') THEN
8523 
8524 	      aso_debug_pub.add('Before opening Cursor C_CREDIT_CARD_TYPE--Line Level', 1, 'Y');
8525 		OPEN C_CREDIT_CARD_TYPE(P_Payment_line_rec.CREDIT_CARD_CODE) ;                   --line Level
8526 	      aso_debug_pub.add('Before fetching Cursor C_CREDIT_CARD_TYPE--Line Level', 1, 'Y');
8527 		FETCH C_CREDIT_CARD_TYPE INTO l_data_exists ;
8528 
8529 		IF C_CREDIT_CARD_TYPE%FOUND THEN
8530 			x_Payment_line_rec.CREDIT_CARD_CODE	 := P_Payment_line_rec.CREDIT_CARD_CODE;
8531 		ELSE
8532 			x_Payment_line_rec.CREDIT_CARD_CODE := NULL ;
8533                         aso_debug_pub.add('No Data Found for Cursor...C_CREDIT_CARD_TYPE--Line Level', 1, 'Y');
8534 			--x_return_status := FND_API.G_RET_STS_ERROR;
8535 		END IF;
8536 	      aso_debug_pub.add('Before Closing Cursor C_CREDIT_CARD_TYPE--Line Level', 1, 'Y');
8537 		CLOSE C_CREDIT_CARD_TYPE;
8538 	      aso_debug_pub.add('After Closing Cursor C_CREDIT_CARD_TYPE--Line Level', 1, 'Y');
8539 
8540 	ELSE
8541 		x_Payment_line_rec.CREDIT_CARD_CODE := NULL ;
8542                 aso_debug_pub.add('Credit card code needs to be null if payment type is not CREDIT_CARD.', 1, 'Y');
8543 	END IF ;
8544 
8545 END IF;
8546 
8547 --Demand Class
8548 
8549 if (	P_Shipment_header_rec.DEMAND_CLASS_CODE is NOT NULL
8550 	AND P_Shipment_header_rec.DEMAND_CLASS_CODE <> FND_API.G_MISS_CHAR) THEN
8551 	      aso_debug_pub.add('Before opening Cursor C_DEMAND_CLASS--Header Level', 1, 'Y');
8552 
8553 		OPEN C_DEMAND_CLASS(P_Shipment_header_rec.DEMAND_CLASS_CODE) ;                   --Header Level
8554 		aso_debug_pub.add('Before fetching Cursor C_DEMAND_CLASS--Header Level', 1, 'Y');
8555 		FETCH C_DEMAND_CLASS INTO l_data_exists ;
8556 
8557 		IF C_DEMAND_CLASS%FOUND THEN
8558 			x_Shipment_header_rec.DEMAND_CLASS_CODE	 := P_Shipment_header_rec.DEMAND_CLASS_CODE ;
8559 		ELSE
8560 			x_Shipment_header_rec.DEMAND_CLASS_CODE := NULL ;
8561                         aso_debug_pub.add('No Data Found for Cursor...C_DEMAND_CLASS--Header Level', 1, 'Y');
8562 
8563 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8564 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_DEMAND_CLASS', TRUE);
8565 			FND_MSG_PUB.ADD;
8566 			--x_return_status := FND_API.G_RET_STS_ERROR;
8567 		END IF;
8568 	      aso_debug_pub.add('before Closing Cursor C_DEMAND_CLASS--Header Level', 1, 'Y');
8569 		CLOSE C_DEMAND_CLASS;
8570 	      aso_debug_pub.add('After Closing Cursor C_DEMAND_CLASS--Header Level', 1, 'Y');
8571 
8572 end if;
8573 
8574 if (	P_Shipment_line_rec.DEMAND_CLASS_CODE is NOT NULL
8575 	AND P_Shipment_line_rec.DEMAND_CLASS_CODE <> FND_API.G_MISS_CHAR) THEN
8576 	      aso_debug_pub.add('Before opening Cursor C_DEMAND_CLASS--Line Level', 1, 'Y');
8577 
8578 		OPEN C_DEMAND_CLASS(P_Shipment_line_rec.DEMAND_CLASS_CODE) ;                      --Line Level
8579 		aso_debug_pub.add('Before fetching Cursor C_DEMAND_CLASS--Line Level', 1, 'Y');
8580 		FETCH C_DEMAND_CLASS INTO l_data_exists ;
8581 
8582 		IF C_DEMAND_CLASS%FOUND THEN
8583 			x_Shipment_line_rec.DEMAND_CLASS_CODE	 := P_Shipment_line_rec.DEMAND_CLASS_CODE ;
8584 		ELSE
8585 			x_Shipment_line_rec.DEMAND_CLASS_CODE := NULL ;
8586                         aso_debug_pub.add('No Data Found for Cursor...C_DEMAND_CLASS--Line Level', 1, 'Y');
8587 			--x_return_status := FND_API.G_RET_STS_ERROR;
8588 		END IF;
8589 	      aso_debug_pub.add('Before Closing Cursor C_DEMAND_CLASS--Line Level', 1, 'Y');
8590 		CLOSE C_DEMAND_CLASS;
8591 	      aso_debug_pub.add('After Closing Cursor C_DEMAND_CLASS--Line Level', 1, 'Y');
8592 
8593 END IF;
8594 
8595 --Request Date Type
8596 
8597 if (	P_Shipment_header_rec.REQUEST_DATE_TYPE is NOT NULL
8598 	AND P_Shipment_header_rec.REQUEST_DATE_TYPE <> FND_API.G_MISS_CHAR) THEN
8599 
8600 	      aso_debug_pub.add('Before opening Cursor C_REQUEST_DATE_TYPE--Header Level', 1, 'Y');
8601 
8602 		OPEN C_REQUEST_DATE_TYPE(p_Shipment_header_rec.REQUEST_DATE_TYPE) ;                   --Header Level
8603 	      aso_debug_pub.add('Before fetching Cursor C_REQUEST_DATE_TYPE--Header Level', 1, 'Y');
8604 		FETCH C_REQUEST_DATE_TYPE INTO l_data_exists ;
8605 
8606 		IF C_REQUEST_DATE_TYPE%FOUND THEN
8607 			x_Shipment_header_rec.REQUEST_DATE_TYPE	 := p_Shipment_header_rec.REQUEST_DATE_TYPE ;
8608 		ELSE
8609 			x_Shipment_header_rec.REQUEST_DATE_TYPE := NULL ;
8610                         aso_debug_pub.add('No Data Found for Cursor...C_REQUEST_DATE_TYPE--Header Level', 1, 'Y');
8611 
8612 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8613 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_RQSTD_DATE_TYPE', TRUE);
8614 			FND_MSG_PUB.ADD;
8615 
8616 			--x_return_status := FND_API.G_RET_STS_ERROR;
8617 		END IF;
8618 	      aso_debug_pub.add('Before closing Cursor C_REQUEST_DATE_TYPE--Header Level', 1, 'Y');
8619 		CLOSE C_REQUEST_DATE_TYPE;
8620 	      aso_debug_pub.add('After Closing Cursor C_REQUEST_DATE_TYPE--Header Level', 1, 'Y');
8621 
8622 end if;
8623 
8624 if (	P_Shipment_line_rec.REQUEST_DATE_TYPE is NOT NULL
8625 	AND P_Shipment_line_rec.REQUEST_DATE_TYPE <> FND_API.G_MISS_CHAR) THEN
8626 
8627 	      aso_debug_pub.add('Before opening Cursor REQUEST_DATE_TYPE--Line Level', 1, 'Y');
8628 
8629 		OPEN C_REQUEST_DATE_TYPE(p_Shipment_line_rec.REQUEST_DATE_TYPE) ;                   --Line Level
8630 	      aso_debug_pub.add('Before fetching Cursor REQUEST_DATE_TYPE--Line Level', 1, 'Y');
8631 		FETCH C_REQUEST_DATE_TYPE INTO l_data_exists ;
8632 
8633 		IF C_REQUEST_DATE_TYPE%FOUND THEN
8634 			x_Shipment_line_rec.REQUEST_DATE_TYPE	 := p_Shipment_line_rec.REQUEST_DATE_TYPE ;
8635 		ELSE
8636 			x_Shipment_line_rec.REQUEST_DATE_TYPE := NULL ;
8637                         aso_debug_pub.add('No Data Found for Cursor...C_REQUEST_DATE_TYPE--Line Level', 1, 'Y');
8638 			--x_return_status := FND_API.G_RET_STS_ERROR;
8639 		END IF;
8640 	      aso_debug_pub.add('Before Closing Cursor REQUEST_DATE_TYPE--Line Level', 1, 'Y');
8641 		CLOSE C_REQUEST_DATE_TYPE;
8642 	      aso_debug_pub.add('After Closing Cursor REQUEST_DATE_TYPE--Line Level', 1, 'Y');
8643 
8644 END IF;
8645 
8646 --Request Date
8647 
8648 if (	P_Shipment_header_rec.REQUEST_DATE is NOT NULL
8649 	AND P_Shipment_header_rec.REQUEST_DATE <> FND_API.G_MISS_DATE) THEN
8650 
8651 	      aso_debug_pub.add('Before opening Cursor C_REQUEST_DATE--Header Level', 1, 'Y');
8652 		OPEN C_REQUEST_DATE(p_Shipment_header_rec.REQUEST_DATE) ;                   --Header Level
8653 	      aso_debug_pub.add('Before fetching Cursor C_REQUEST_DATE--Header Level', 1, 'Y');
8654 		FETCH C_REQUEST_DATE INTO l_data_exists ;
8655 
8656 		IF C_REQUEST_DATE%FOUND THEN
8657 			x_Shipment_header_rec.REQUEST_DATE	 := p_Shipment_header_rec.REQUEST_DATE ;
8658 		ELSE
8659 			x_Shipment_header_rec.REQUEST_DATE := NULL ;
8660                         aso_debug_pub.add('No Data Found for Cursor...C_REQUEST_DATE--Header Level', 1, 'Y');
8661 
8662 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8663 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_REQUESTED_DATE', TRUE);
8664 			FND_MSG_PUB.ADD;
8665 
8666 			--x_return_status := FND_API.G_RET_STS_ERROR;
8667 		END IF;
8668 	      aso_debug_pub.add('before Closing Cursor C_REQUEST_DATE--Header Level', 1, 'Y');
8669 		CLOSE C_REQUEST_DATE;
8670 	      aso_debug_pub.add('After Closing Cursor C_REQUEST_DATE--Header Level', 1, 'Y');
8671 
8672 end if;
8673 
8674 if (	P_Shipment_line_rec.REQUEST_DATE is NOT NULL
8675 	AND P_Shipment_line_rec.REQUEST_DATE <> FND_API.G_MISS_DATE) THEN
8676 
8677 	      aso_debug_pub.add('Before opening Cursor C_REQUEST_DATE--Line Level', 1, 'Y');
8678 
8679 		OPEN C_REQUEST_DATE(p_Shipment_line_rec.REQUEST_DATE) ;                   --Line Level
8680 	      aso_debug_pub.add('Before fetching Cursor C_REQUEST_DATE--Line Level', 1, 'Y');
8681 		FETCH C_REQUEST_DATE INTO l_data_exists ;
8682 
8683 		IF C_REQUEST_DATE%FOUND THEN
8684 			x_Shipment_line_rec.REQUEST_DATE	 := p_Shipment_line_rec.REQUEST_DATE ;
8685 		ELSE
8686 			x_Shipment_line_rec.REQUEST_DATE := NULL ;
8687                         aso_debug_pub.add('No Data Found for Cursor...C_REQUEST_DATE--Line Level', 1, 'Y');
8688 			--x_return_status := FND_API.G_RET_STS_ERROR;
8689 		END IF;
8690 	      aso_debug_pub.add('Before closing Cursor C_REQUEST_DATE--Line Level', 1, 'Y');
8691 		CLOSE C_REQUEST_DATE;
8692 	      aso_debug_pub.add('After Closing Cursor C_REQUEST_DATE--Line Level', 1, 'Y');
8693 
8694 END IF;
8695 
8696 --Operating Unit
8697 
8698 
8699 if (	p_quote_header_rec.ORG_ID is NOT NULL
8700 	AND p_quote_header_rec.ORG_ID <> FND_API.G_MISS_NUM) THEN
8701 
8702 	      aso_debug_pub.add('Before opening Cursor C_OPERATING_UNIT--Header Level', 1, 'Y');
8703 
8704 		OPEN C_OPERATING_UNIT(p_quote_header_rec.ORG_ID) ;                   --Header Level
8705 	      aso_debug_pub.add('Before fetching Cursor C_OPERATING_UNIT--Header Level', 1, 'Y');
8706 
8707 		FETCH C_OPERATING_UNIT INTO l_data_exists ;
8708 
8709 		IF C_OPERATING_UNIT%FOUND THEN
8710 			if l_data_exists is NOT NULL then
8711 				x_quote_header_rec.ORG_ID	 := p_quote_header_rec.ORG_ID ;
8712 			else
8713 				x_quote_header_rec.ORG_ID	 := NULL;
8714 
8715 				FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8716 				FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_OPERATING_UNIT', TRUE);
8717 				FND_MSG_PUB.ADD;
8718 			end if;
8719 		ELSE
8720 			x_quote_header_rec.ORG_ID	:= NULL ;
8721                         aso_debug_pub.add('No Data Found for Cursor...C_OPERATING_UNIT', 1, 'Y');
8722 
8723 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8724 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_OPERATING_UNIT', TRUE);
8725 			FND_MSG_PUB.ADD;
8726 
8727 			--x_return_status := FND_API.G_RET_STS_ERROR;
8728 		END IF;
8729 	        aso_debug_pub.add('Before closing Cursor C_OPERATING_UNIT--Header Level', 1, 'Y');
8730 		CLOSE C_OPERATING_UNIT;
8731 		aso_debug_pub.add('After Closing Cursor C_CHARGE_PERIODICITY_CODE--Header Level', 1, 'Y');
8732 end if;
8733 
8734 if (	p_quote_line_rec.ORG_ID is NOT NULL
8735 	AND p_quote_line_rec.ORG_ID <> FND_API.G_MISS_NUM) THEN
8736 
8737 	      aso_debug_pub.add('Before opening Cursor C_OPERATING_UNIT--Line Level', 1, 'Y');
8738 		OPEN C_OPERATING_UNIT(p_quote_line_rec.ORG_ID) ;                       --Line Level
8739 		aso_debug_pub.add('Before fetching Cursor C_OPERATING_UNIT--Line Level', 1, 'Y');
8740 		FETCH C_OPERATING_UNIT INTO l_data_exists ;
8741 
8742 		IF C_OPERATING_UNIT%FOUND THEN
8743 			if l_data_exists is NOT NULL then
8744 				x_quote_line_rec.ORG_ID	 := p_quote_line_rec.ORG_ID ;
8745 			else
8746 				x_quote_line_rec.ORG_ID	 := NULL;
8747 			end if;
8748 		ELSE
8749 			x_quote_line_rec.ORG_ID	:= NULL ;
8750                         aso_debug_pub.add('No Data Found for Cursor...C_OPERATING_UNIT--Line Level', 1, 'Y');
8751 			--x_return_status := FND_API.G_RET_STS_ERROR;
8752 		END IF;
8753 		aso_debug_pub.add('before Closing Cursor C_CHARGE_PERIODICITY_CODE--Line Level', 1, 'Y');
8754 		CLOSE C_OPERATING_UNIT;
8755 		aso_debug_pub.add('After Closing Cursor C_CHARGE_PERIODICITY_CODE--Line Level', 1, 'Y');
8756 
8757 END IF;
8758 
8759 --Charged Periodicity
8760 
8761 if (	p_quote_line_rec.CHARGE_PERIODICITY_CODE is NOT NULL
8762 	AND p_quote_line_rec.CHARGE_PERIODICITY_CODE <> FND_API.G_MISS_CHAR) THEN
8763 
8764 	if (	l_periodicity_profile is NOT NULL
8765 		AND l_periodicity_profile <> FND_API.G_MISS_CHAR) THEN
8766 			aso_debug_pub.add('Before opening Cursor C_CHARGE_PERIODICITY_CODE', 1, 'Y');
8767 
8768 			OPEN C_CHARGE_PERIODICITY_CODE(p_quote_line_rec.CHARGE_PERIODICITY_CODE,l_periodicity_profile) ;   --Line Level Only
8769 
8770 			aso_debug_pub.add('Before fetching Cursor C_CHARGE_PERIODICITY_CODE', 1, 'Y');
8771 			FETCH C_CHARGE_PERIODICITY_CODE INTO l_data_exists ;
8772 
8773 			IF C_CHARGE_PERIODICITY_CODE%FOUND THEN
8774 				x_quote_line_rec.CHARGE_PERIODICITY_CODE	 := p_quote_line_rec.CHARGE_PERIODICITY_CODE ;
8775 			ELSE
8776 				x_quote_line_rec.CHARGE_PERIODICITY_CODE	:= NULL ;
8777 				aso_debug_pub.add('No Data Found for Cursor...CHARGE_PERIODICITY_CODE', 1, 'Y');
8778 				--x_return_status := FND_API.G_RET_STS_ERROR;
8779 			END IF;
8780 			aso_debug_pub.add('Before closing Cursor C_CHARGE_PERIODICITY_CODE', 1, 'Y');
8781 			CLOSE C_CHARGE_PERIODICITY_CODE;
8782 			aso_debug_pub.add('After Closing  Cursor C_CHARGE_PERIODICITY_CODE', 1, 'Y');
8783 
8784 	END IF;
8785 END IF;
8786 
8787 --Auotmatic Pricing
8788 
8789 if (	p_quote_header_rec.AUTOMATIC_PRICE_FLAG is NOT NULL
8790 	AND p_quote_header_rec.AUTOMATIC_PRICE_FLAG <> FND_API.G_MISS_CHAR) THEN
8791 		aso_debug_pub.add('Before opening Cursor C_AUTOMATIC_PRICING', 1, 'Y');
8792 
8793 		OPEN C_AUTOMATIC_PRICING(p_quote_header_rec.AUTOMATIC_PRICE_FLAG) ;                       --Header Level
8794 		aso_debug_pub.add('Before fetching Cursor C_AUTOMATIC_PRICING', 1, 'Y');
8795 		FETCH C_AUTOMATIC_PRICING INTO l_data_exists ;
8796 
8797 		IF C_AUTOMATIC_PRICING%FOUND THEN
8798 			x_quote_header_rec.AUTOMATIC_PRICE_FLAG	 := p_quote_header_rec.AUTOMATIC_PRICE_FLAG ;
8799 		ELSE
8800 			x_quote_header_rec.AUTOMATIC_PRICE_FLAG	:= NULL ;
8801 			aso_debug_pub.add('No Data Found for Cursor...C_AUTOMATIC_PRICING', 1, 'Y');
8802 
8803 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8804 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_AUTO_PRICING', TRUE);
8805 			FND_MSG_PUB.ADD;
8806 			--x_return_status := FND_API.G_RET_STS_ERROR;
8807 		END IF;
8808 		aso_debug_pub.add('Before closing Cursor C_AUTOMATIC_PRICING', 1, 'Y');
8809 		CLOSE C_AUTOMATIC_PRICING;
8810 		aso_debug_pub.add('After Closing Cursor C_AUTOMATIC_PRICING', 1, 'Y');
8811 
8812 END IF;
8813 
8814 --Auotmatic TAX
8815 
8816 if (	p_quote_header_rec.AUTOMATIC_TAX_FLAG is NOT NULL
8817 	AND p_quote_header_rec.AUTOMATIC_TAX_FLAG <> FND_API.G_MISS_CHAR) THEN
8818 
8819 		aso_debug_pub.add('Before opening Cursor C_AUTOMATIC_TAX', 1, 'Y');
8820 
8821 		OPEN C_AUTOMATIC_TAX(p_quote_header_rec.AUTOMATIC_TAX_FLAG) ;                       --Header Level
8822 		aso_debug_pub.add('Before fetching Cursor C_AUTOMATIC_TAX', 1, 'Y');
8823 		FETCH C_AUTOMATIC_TAX INTO l_data_exists ;
8824 
8825 		IF C_AUTOMATIC_TAX%FOUND THEN
8826 			x_quote_header_rec.AUTOMATIC_TAX_FLAG	 := p_quote_header_rec.AUTOMATIC_TAX_FLAG ;
8827 		ELSE
8828 			x_quote_header_rec.AUTOMATIC_TAX_FLAG	:= NULL ;
8829 			aso_debug_pub.add('No Data Found for Cursor...C_AUTOMATIC_TAX', 1, 'Y');
8830 
8831 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8832 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_AUTOMATIC_TAX', TRUE);
8833 			FND_MSG_PUB.ADD;
8834 
8835 			--x_return_status := FND_API.G_RET_STS_ERROR;
8836 		END IF;
8837 		aso_debug_pub.add('Before closing Cursor C_AUTOMATIC_TAX', 1, 'Y');
8838 		CLOSE C_AUTOMATIC_TAX;
8839 		aso_debug_pub.add('After Closing Cursor C_AUTOMATIC_TAX.', 1, 'Y');
8840 
8841 
8842 END IF;
8843 
8844 --Payment Type
8845 
8846 if (	P_Payment_header_rec.PAYMENT_TYPE_CODE is NOT NULL
8847 	AND P_Payment_header_rec.PAYMENT_TYPE_CODE <> FND_API.G_MISS_CHAR) THEN
8848 
8849 		aso_debug_pub.add('Before opening C_PAYMENT_TYPE--Header Level', 1, 'Y');
8850 
8851 		OPEN C_PAYMENT_TYPE(P_Payment_header_rec.PAYMENT_TYPE_CODE) ;          --Header Level
8852 		aso_debug_pub.add('Before fetching C_PAYMENT_TYPE--Header Level', 1, 'Y');
8853 		FETCH C_PAYMENT_TYPE INTO l_data_exists ;
8854 
8855 		IF C_PAYMENT_TYPE%FOUND THEN
8856 			x_Payment_header_rec.PAYMENT_TYPE_CODE	 := P_Payment_header_rec.PAYMENT_TYPE_CODE ;
8857 		ELSE
8858 			x_Payment_header_rec.PAYMENT_TYPE_CODE := NULL ;
8859 			aso_debug_pub.add('No Data Found for Cursor...C_PAYMENT_TYPE--Header Level', 1, 'Y');
8860 
8861 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8862 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_PAYMENT_TYPE', TRUE);
8863 			FND_MSG_PUB.ADD;
8864 
8865 			--x_return_status := FND_API.G_RET_STS_ERROR;
8866 		END IF;
8867 		aso_debug_pub.add('before  Closing Cursor C_PAYMENT_TYPE--Header Level', 1, 'Y');
8868 		CLOSE C_PAYMENT_TYPE;
8869 		aso_debug_pub.add('After  Closing Cursor C_PAYMENT_TYPE--Header Level', 1, 'Y');
8870 
8871 end if;
8872 
8873 if (	P_Payment_line_rec.PAYMENT_TYPE_CODE is NOT NULL
8874 	AND P_Payment_line_rec.PAYMENT_TYPE_CODE <> FND_API.G_MISS_CHAR) THEN
8875 
8876 		aso_debug_pub.add('Before opening cursor C_PAYMENT_TYPE--Line Level', 1, 'Y');
8877 
8878 		OPEN C_PAYMENT_TYPE(P_Payment_line_rec.PAYMENT_TYPE_CODE) ;               --Line Level
8879 		aso_debug_pub.add('Before fetching cursor C_PAYMENT_TYPE--Line Level', 1, 'Y');
8880 
8881 		FETCH C_PAYMENT_TYPE INTO l_data_exists ;
8882 
8883 		IF C_PAYMENT_TYPE%FOUND THEN
8884 			x_Payment_line_rec.PAYMENT_TYPE_CODE	 := P_Payment_line_rec.PAYMENT_TYPE_CODE ;
8885 		ELSE
8886 			x_Payment_line_rec.PAYMENT_TYPE_CODE := NULL ;
8887 			aso_debug_pub.add('No Data Found for Cursor...C_PAYMENT_TYPE--Line Level', 1, 'Y');
8888 			--x_return_status := FND_API.G_RET_STS_ERROR;
8889 		END IF;
8890 
8891 		aso_debug_pub.add('Before closing cursor C_PAYMENT_TYPE--Line Level', 1, 'Y');
8892 		CLOSE C_PAYMENT_TYPE;
8893 		aso_debug_pub.add('After Closing cursor C_PAYMENT_TYPE--Line Level', 1, 'Y');
8894 
8895 
8896 END IF;
8897 
8898 if (	p_quote_header_rec.SALES_CHANNEL_CODE is NOT NULL
8899 	AND p_quote_header_rec.SALES_CHANNEL_CODE <> FND_API.G_MISS_CHAR) THEN
8900 
8901 		aso_debug_pub.add('Before opening Cursor..C_SALESCHANNEL', 1, 'Y');
8902 
8903 		OPEN C_SALESCHANNEL(p_quote_header_rec.SALES_CHANNEL_CODE) ;  -- Sales Channel(Header)
8904 		aso_debug_pub.add('Before fetching Cursor..C_SALESCHANNEL', 1, 'Y');
8905 
8906 		FETCH C_SALESCHANNEL INTO l_data_exists ;
8907 
8908 
8909 		IF C_SALESCHANNEL%FOUND THEN
8910 			x_quote_header_rec.SALES_CHANNEL_CODE := p_quote_header_rec.SALES_CHANNEL_CODE ;
8911 		ELSE
8912 			x_quote_header_rec.SALES_CHANNEL_CODE := NULL ;
8913 			aso_debug_pub.add('No Data Found for Cursor...C_SALESCHANNEL', 1, 'Y');
8914 
8915 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8916 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_SALES_CHANNEL', TRUE);
8917 			FND_MSG_PUB.ADD;
8918 
8919 			--x_return_status := FND_API.G_RET_STS_ERROR;
8920 
8921 		END IF;
8922 		aso_debug_pub.add('Before closing Cursor..C_SALESCHANNEL', 1, 'Y');
8923 		CLOSE C_SALESCHANNEL;
8924 		aso_debug_pub.add('After Closing Cursor..C_SALESCHANNEL', 1, 'Y');
8925 
8926 
8927 END IF;
8928 -- ============                 Currency-queries (Start)                   ====================
8929 
8930 if (	p_quote_header_rec.CURRENCY_CODE is NOT NULL
8931 	AND p_quote_header_rec.CURRENCY_CODE <> FND_API.G_MISS_CHAR) THEN
8932 
8933 	if ( p_quote_header_rec.PRICE_LIST_ID is NOT NULL
8934 	     AND p_quote_header_rec.PRICE_LIST_ID <> FND_API.G_MISS_NUM ) THEN
8935 
8936 		aso_debug_pub.add('Before opening Cursor..C_QOTHDDET_CURRENCY_NOT_NULL', 1, 'Y');
8937 
8938 		OPEN C_QOTHDDET_CURRENCY_NOT_NULL(p_quote_header_rec.CURRENCY_CODE,p_quote_header_rec.PRICE_LIST_ID) ; -- Header Record
8939 		aso_debug_pub.add('Before fetching Cursor..C_QOTHDDET_CURRENCY_NOT_NULL', 1, 'Y');
8940 
8941 		FETCH C_QOTHDDET_CURRENCY_NOT_NULL INTO l_data_exists ;
8942 		IF C_QOTHDDET_CURRENCY_NOT_NULL%FOUND THEN
8943 			x_quote_header_rec.CURRENCY_CODE := p_quote_header_rec.CURRENCY_CODE;
8944 		ELSE
8945 			x_quote_header_rec.CURRENCY_CODE := NULL ;
8946 			aso_debug_pub.add('No Data Found for Cursor...C_QOTHDDET_CURRENCY_NOT_NULL', 1, 'Y');
8947 
8948 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8949 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_CURRENCY', TRUE);
8950 			FND_MSG_PUB.ADD;
8951 
8952 			--x_return_status := FND_API.G_RET_STS_ERROR;
8953 
8954 		END IF;
8955 		aso_debug_pub.add('Before closing Cursor..C_QOTHDDET_CURRENCY_NOT_NULL', 1, 'Y');
8956 
8957 		CLOSE C_QOTHDDET_CURRENCY_NOT_NULL;
8958 
8959 		aso_debug_pub.add('After closing Cursor..C_QOTHDDET_CURRENCY_NOT_NULL', 1, 'Y');
8960 
8961 	ELSE
8962 		aso_debug_pub.add('Before opening Cursor..C_QOTHDDET_CURRENCY_NULL', 1, 'Y');
8963 
8964 		OPEN C_QOTHDDET_CURRENCY_NULL(p_quote_header_rec.CURRENCY_CODE)   ; --Header Record
8965 		aso_debug_pub.add('Before fetching Cursor..C_QOTHDDET_CURRENCY_NULL', 1, 'Y');
8966 
8967 		FETCH C_QOTHDDET_CURRENCY_NULL INTO l_data_exists ;
8968 		IF C_QOTHDDET_CURRENCY_NULL%FOUND THEN
8969 			x_quote_header_rec.CURRENCY_CODE := p_quote_header_rec.CURRENCY_CODE;
8970 		ELSE
8971 			x_quote_header_rec.CURRENCY_CODE := NULL ;
8972 			aso_debug_pub.add('No Data Found for Cursor...C_QOTHDDET_CURRENCY_NULL', 1, 'Y');
8973 
8974 			FND_MESSAGE.SET_NAME('ASO', 'ASO_DFLT_VLDN_ERR_MSG');
8975 			FND_MESSAGE.SET_TOKEN('ATTRIBUTE_NAME', 'ASO_DFLT_VLDN_CURRENCY', TRUE);
8976 			FND_MSG_PUB.ADD;
8977 			--x_return_status := FND_API.G_RET_STS_ERROR;
8978 
8979 		END IF;
8980 		aso_debug_pub.add('Before closing Cursor..C_QOTHDDET_CURRENCY_NULL', 1, 'Y');
8981 		CLOSE C_QOTHDDET_CURRENCY_NULL;
8982 		aso_debug_pub.add('After Closing Cursor..C_QOTHDDET_CURRENCY_NULL', 1, 'Y');
8983 
8984 	END IF;
8985 END IF;
8986 
8987 --				                  TCA Calls Start
8988 
8989 --1.                                   ***Validate Contact - Header and Line Level***
8990 
8991 --Validate Contact(Header/Bill)
8992 if (	p_quote_header_rec.invoice_to_party_id is NOT NULL
8993 	AND p_quote_header_rec.invoice_to_party_id <> FND_API.G_MISS_NUM)  THEN
8994 
8995 aso_debug_pub.add('Before Calling Validate Contact(Header/Bill)', 1, 'Y');
8996 
8997 	VALIDATE_CONTACT(p_party_id=>p_quote_header_rec.INVOICE_TO_PARTY_ID,
8998 			 p_cust_party_id=>p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID,
8999 			 p_flag=>'BILL',
9000 			 p_header=>'Y'
9001 			 );
9002 aso_debug_pub.add('After Calling Validate Contact(Header/Bill)', 1, 'Y');
9003 END IF ;
9004 
9005 
9006 
9007 --Validate Contact(Header/Ship)
9008 if (	p_shipment_header_rec.ship_to_party_id is NOT NULL
9009 	AND p_shipment_header_rec.ship_to_party_id <> FND_API.G_MISS_NUM)  THEN
9010 
9011 aso_debug_pub.add('Before Calling Validate Contact(Header/Ship)', 1, 'Y');
9012 
9013 	VALIDATE_CONTACT(p_party_id=>p_shipment_header_rec.SHIP_TO_PARTY_ID,
9014 			 p_cust_party_id=>p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID,
9015 			 p_flag=>'SHIP',
9016 			 p_header=>'Y'
9017 			 );
9018 aso_debug_pub.add('After Calling Validate Contact(Header/Ship)', 1, 'Y');
9019 END IF ;
9020 
9021 --Validate Contact(Header/End)
9022 if (	p_quote_header_rec.end_customer_party_id is NOT NULL
9023 	AND p_quote_header_rec.end_customer_party_id <> FND_API.G_MISS_NUM)  THEN
9024 
9025 aso_debug_pub.add('Before Calling Validate Contact(Header/End)', 1, 'Y');
9026 
9027 	VALIDATE_CONTACT(p_party_id=>p_quote_header_rec.END_CUSTOMER_PARTY_ID,
9028 			 p_cust_party_id=>p_quote_header_rec.END_CUSTOMER_CUST_PARTY_ID,
9029 			 p_flag=>'END',
9030 			 p_header=>'Y'
9031 			);
9032 aso_debug_pub.add('After Calling Validate Contact(Header/End)', 1, 'Y');
9033 END IF ;
9034 
9035 --Validate Contact(Header/SOLD)
9036 if (	p_quote_header_rec.party_id is NOT NULL
9037 	AND p_quote_header_rec.party_id <> FND_API.G_MISS_NUM)  THEN
9038 
9039 aso_debug_pub.add('Before Calling Validate Contact(Header/SOLD)', 1, 'Y');
9040 
9041 	VALIDATE_CONTACT(p_party_id=>p_quote_header_rec.PARTY_ID,
9042 			 p_cust_party_id=>p_quote_header_rec.CUST_PARTY_ID,
9043 			 p_flag=>'SOLD',
9044 			 p_header=>'Y'
9045 			);
9046 aso_debug_pub.add('After Calling Validate Contact(Header/SOLD)', 1, 'Y');
9047 END IF ;
9048 
9049 --Validate Contact(Line/Bill)
9050 if (	p_quote_line_rec.invoice_to_party_id  is NOT NULL
9051 	AND p_quote_line_rec.invoice_to_party_id <> FND_API.G_MISS_NUM)  THEN
9052 
9053 aso_debug_pub.add('Before Calling Validate Contact(Line/Bill)', 1, 'Y');
9054 
9055 	VALIDATE_CONTACT(p_party_id=>p_quote_line_rec.INVOICE_TO_PARTY_ID,
9056 			 p_cust_party_id=>p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID,
9057 			 p_flag=>'BILL',
9058 			 p_header=>'N'
9059 			);
9060 aso_debug_pub.add('After Calling Validate Contact(Line/Bill)', 1, 'Y');
9061 
9062 END IF ;
9063 
9064 --Validate Contact(Line/Ship)
9065 if (	p_shipment_line_rec.ship_to_party_id  is NOT NULL
9066 	AND p_shipment_line_rec.ship_to_party_id <> FND_API.G_MISS_NUM)  THEN
9067 
9068 aso_debug_pub.add('Before Calling Validate Contact(Line/Ship))', 1, 'Y');
9069 
9070 	VALIDATE_CONTACT(p_party_id=>p_shipment_line_rec.ship_to_party_id,
9071 			 p_cust_party_id=>p_shipment_line_rec.ship_to_cust_party_id,
9072 			 p_flag=>'SHIP',
9073 			 p_header=>'N'
9074 			);
9075 aso_debug_pub.add('Before Calling Validate Contact(Line/Ship))', 1, 'Y');
9076 
9077 END IF;
9078 
9079  --Validate Contact(Line/End)
9080 if (	p_quote_line_rec.end_customer_party_id  is NOT NULL
9081 	AND p_quote_line_rec.end_customer_party_id <> FND_API.G_MISS_NUM)  THEN
9082 
9083 aso_debug_pub.add('Before Calling Validate Contact(Line/End)', 1, 'Y');
9084 
9085 	VALIDATE_CONTACT(p_party_id=>p_quote_line_rec.end_customer_party_id,
9086 			 p_cust_party_id=>p_quote_line_rec.end_customer_cust_party_id,
9087 			 p_flag=>'END',
9088 			 p_header=>'N'
9089 			);
9090 aso_debug_pub.add('After Calling Validate Contact(Line/End)', 1, 'Y');
9091 
9092 END IF ;
9093 
9094 
9095 --2.                                   ***Validate Phone - Header Level Only***
9096 
9097 if (	p_quote_header_rec.phone_id  is NOT NULL
9098 	AND p_quote_header_rec.phone_id <> FND_API.G_MISS_NUM)  THEN
9099 
9100 aso_debug_pub.add('Before Calling Validate Phone', 1, 'Y');
9101 
9102 	VALIDATE_PHONE(p_phone_id => p_quote_header_rec.phone_id,
9103 		       p_party_id => p_quote_header_rec.party_id,
9104 		       p_cust_party_id => p_quote_header_rec.cust_party_id
9105 		       );
9106 aso_debug_pub.add('After Calling Validate Phone', 1, 'Y');
9107 
9108 END IF ;
9109 
9110 
9111 --3.                                   ***Validate Address - Header and Line Level***
9112 
9113 --Validate Address(Header/Bill)
9114 if (	p_quote_header_rec.INVOICE_TO_PARTY_SITE_ID  is NOT NULL
9115 	AND p_quote_header_rec.INVOICE_TO_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9116 
9117 aso_debug_pub.add('Before Calling Validate Address(Header/Bill)', 1, 'Y');
9118 
9119 	VALIDATE_ADDRESS(p_party_site_id => p_quote_header_rec.INVOICE_TO_PARTY_SITE_ID,
9120 			 p_party_id =>  p_quote_header_rec.INVOICE_TO_PARTY_ID,
9121 			 p_cust_party_id =>p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID,
9122 			 p_flag	    =>'BILL',
9123 			 p_header   => 'Y'
9124 			);
9125 aso_debug_pub.add('After Calling Validate Address(Header/Bill)', 1, 'Y');
9126 
9127 END IF ;
9128 
9129 --Validate Address(Header/Ship)
9130 
9131 if (	p_shipment_header_rec.SHIP_TO_PARTY_SITE_ID  is NOT NULL
9132 	AND p_shipment_header_rec.SHIP_TO_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9133 
9134 aso_debug_pub.add('Before Calling Validate Address(Header/Ship)', 1, 'Y');
9135 
9136 	VALIDATE_ADDRESS(p_party_site_id => p_shipment_header_rec.SHIP_TO_PARTY_SITE_ID,
9137 			 p_party_id =>  p_shipment_header_rec.SHIP_TO_PARTY_ID,
9138 			 p_cust_party_id =>p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID,
9139 			 p_flag	    =>'SHIP',
9140 			 p_header   => 'Y'
9141 			);
9142 
9143 aso_debug_pub.add('After Calling Validate Address(Header/Ship)', 1, 'Y');
9144 
9145 END IF ;
9146 
9147 --Validate Address(Header/end)
9148 if (	p_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID  is NOT NULL
9149 	AND p_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9150 
9151 aso_debug_pub.add('Before Calling Validate Address(Header/end)', 1, 'Y');
9152 
9153 	VALIDATE_ADDRESS(p_party_site_id => p_quote_header_rec.END_CUSTOMER_PARTY_SITE_ID,
9154 			 p_party_id =>  p_quote_header_rec.END_CUSTOMER_PARTY_ID,
9155 			 p_cust_party_id =>p_quote_header_rec.END_CUSTOMER_CUST_PARTY_ID,
9156 			 p_flag	    =>'END',
9157 			 p_header   => 'Y'
9158 			);
9159 aso_debug_pub.add('After Calling Validate Address(Header/end)', 1, 'Y');
9160 
9161 END IF ;
9162 
9163 
9164 
9165 --Validate Address(Header/SOLD)
9166 if (	p_quote_header_rec.SOLD_TO_PARTY_SITE_ID  is NOT NULL
9167 	AND p_quote_header_rec.SOLD_TO_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9168 
9169 aso_debug_pub.add('Before Calling Validate Address(Header/SOLD)', 1, 'Y');
9170 
9171 	VALIDATE_ADDRESS(p_party_site_id => p_quote_header_rec.SOLD_TO_PARTY_SITE_ID,
9172 			 p_party_id =>  p_quote_header_rec.party_id,
9173 			 p_cust_party_id =>p_quote_header_rec.cust_party_id,
9174 			 p_flag	    =>'SOLD',
9175 			 p_header   => 'Y'
9176 			);
9177 aso_debug_pub.add('After Calling Validate Address(Header/SOLD)', 1, 'Y');
9178 END IF ;
9179 
9180 
9181 --Validate Address(Line/Bill)
9182 if (	p_quote_line_rec.INVOICE_TO_PARTY_SITE_ID  is NOT NULL
9183 	AND p_quote_line_rec.INVOICE_TO_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9184 aso_debug_pub.add('Before Calling Validate Address(Line/Bill)', 1, 'Y');
9185 
9186 	VALIDATE_ADDRESS(p_party_site_id => p_quote_line_rec.INVOICE_TO_PARTY_SITE_ID,
9187 			 p_party_id =>  p_quote_line_rec.INVOICE_TO_PARTY_ID,
9188 			 p_cust_party_id =>p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID,
9189 			 p_flag	    =>'BILL',
9190 			 p_header   => 'N'
9191 			);
9192 aso_debug_pub.add('After Calling Validate Address(Line/Bill)', 1, 'Y');
9193 END IF;
9194 
9195 --Validate Address(Line/Ship)
9196 if (	p_shipment_line_rec.SHIP_TO_PARTY_SITE_ID  is NOT NULL
9197 	AND p_shipment_line_rec.SHIP_TO_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9198 
9199 aso_debug_pub.add('Before Calling Validate Address(Line/Ship)', 1, 'Y');
9200 
9201 	VALIDATE_ADDRESS(p_party_site_id => p_shipment_line_rec.SHIP_TO_PARTY_SITE_ID,
9202 			 p_party_id =>  p_shipment_line_rec.SHIP_TO_PARTY_ID,
9203 			 p_cust_party_id =>p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID,
9204 			 p_flag	    =>'SHIP',
9205 			 p_header   => 'N'
9206 			);
9207 aso_debug_pub.add('End Calling Validate Address(Line/Ship)', 1, 'Y');
9208 END IF;
9209 
9210 --Validate Address(Line/end)
9211 if (	p_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID  is NOT NULL
9212 	AND p_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID <> FND_API.G_MISS_NUM)  THEN
9213 
9214 aso_debug_pub.add('Before Calling Validate Address(Line/end)', 1, 'Y');
9215 
9216 	VALIDATE_ADDRESS(p_party_site_id => p_quote_line_rec.END_CUSTOMER_PARTY_SITE_ID,
9217 			 p_party_id =>  p_quote_line_rec.END_CUSTOMER_PARTY_ID,
9218 			 p_cust_party_id =>p_quote_line_rec.END_CUSTOMER_CUST_PARTY_ID,
9219 			 p_flag	    =>'END',
9220 			 p_header   => 'N'
9221 			);
9222 aso_debug_pub.add('After Calling Validate Address(Line/end)', 1, 'Y');
9223 
9224 END IF;
9225 
9226 
9227 --4.                                   ***Validate Customer - Header and Line Level***
9228 
9229 --Validate Customer(Header/Sold)
9230 if (	P_QUOTE_HEADER_REC.CUST_PARTY_ID  is NOT NULL
9231 	AND P_QUOTE_HEADER_REC.CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9232 
9233 aso_debug_pub.add('Before Calling Validate Customer(Header/Sold)', 1, 'Y');
9234 
9235 	VALIDATE_CUSTOMER(p_cust_party_id => p_quote_header_rec.cust_party_id,
9236 			  p_resource_id  => p_quote_header_rec.resource_id,
9237 			  p_flag => 'SOLD',
9238 			  p_header=> 'Y'
9239 			  );
9240 aso_debug_pub.add('After Calling Validate Customer(Header/Sold)', 1, 'Y');
9241 
9242 END IF;
9243 
9244 
9245 --Validate Customer(Header/End)
9246 if (	P_QUOTE_HEADER_REC.END_CUSTOMER_CUST_PARTY_ID  is NOT NULL
9247 	AND P_QUOTE_HEADER_REC.END_CUSTOMER_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9248 
9249 aso_debug_pub.add('Before Calling Validate Customer(Header/End)', 1, 'Y');
9250 
9251 	VALIDATE_CUSTOMER(p_cust_party_id => p_quote_header_rec.end_customer_cust_party_id,
9252 			  p_resource_id  => p_quote_header_rec.resource_id,
9253 			  p_flag => 'END',
9254 			  p_header=> 'Y'
9255 			  );
9256 aso_debug_pub.add('After Calling Validate Customer(Header/End)', 1, 'Y');
9257 
9258 END IF;
9259 
9260 
9261 --Validate Customer(Line/End)
9262 if (	 P_QUOTE_LINE_REC.END_CUSTOMER_CUST_PARTY_ID  is NOT NULL
9263 	AND  P_QUOTE_LINE_REC.END_CUSTOMER_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9264 
9265 aso_debug_pub.add('Before Calling Validate Customer(Line/End)', 1, 'Y');
9266 
9267 VALIDATE_CUSTOMER(p_cust_party_id => p_quote_line_rec.end_customer_cust_party_id,
9268 		  p_resource_id  => p_quote_header_rec.resource_id,
9269 	          p_flag => 'END',
9270 		  p_header=> 'N'
9271 		  );
9272 aso_debug_pub.add('After Calling Validate Customer(Line/End)', 1, 'Y');
9273 
9274 END IF;
9275 
9276 --5.                                   ***Validate Bill Ship Customer***
9277 
9278 --Validate Bill Ship Customer (Header/Bill)
9279 if (	 p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID  is NOT NULL
9280 	AND  p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9281 
9282 	aso_debug_pub.add('Before calling Validate Bill Ship Customer (Header/Bill)', 1, 'Y');
9283 
9284 	VALIDATE_BILL_SHIP_CUSTOMER(p_cust_party_id =>p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID,
9285 			            p_cust_acct_id  =>p_quote_header_rec.CUST_ACCOUNT_ID,							                    p_resource_id   =>p_quote_header_rec.resource_id,
9286 				    p_flag	    =>'BILL',
9287 				    p_header	    => 'Y'
9288 				    );
9289 	aso_debug_pub.add('After calling Validate Bill Ship Customer (Header/Bill)', 1, 'Y');
9290 
9291 END IF;
9292 
9293 
9294 
9295 --Validate Bill Ship Customer (Header/Ship)
9296 if (	 p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID  is NOT NULL
9297 	AND  p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9298 
9299 	aso_debug_pub.add('Before Calling Validate Bill Ship Customer (Header/Ship)', 1, 'Y');
9300 
9301 VALIDATE_BILL_SHIP_CUSTOMER(p_cust_party_id =>p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID,
9302 			    p_cust_acct_id  =>p_quote_header_rec.CUST_ACCOUNT_ID,							                    p_resource_id   =>p_quote_header_rec.resource_id,
9303 			    p_flag	    =>'SHIP',
9304 			    p_header	    => 'Y'
9305 			   );
9306 
9307 	aso_debug_pub.add('After Calling Validate Bill Ship Customer (Header/Ship)', 1, 'Y');
9308 END IF;
9309 
9310 
9311 --Validate Bill Ship Customer (Line/Bill)
9312 if (	p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID  is NOT NULL
9313 	AND  p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9314 
9315 	aso_debug_pub.add('Before Calling Validate Bill Ship Customer (Line/Bill)', 1, 'Y');
9316 
9317 VALIDATE_BILL_SHIP_CUSTOMER(p_cust_party_id =>p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID,
9318 			    p_cust_acct_id  =>p_quote_header_rec.CUST_ACCOUNT_ID,							                    p_resource_id   =>p_quote_header_rec.resource_id,
9319 			    p_flag	    =>'BILL',
9320 			    p_header	    => 'N'
9321 			    );
9322 
9323 	aso_debug_pub.add('After Calling Validate Bill Ship Customer (Line/Bill)', 1, 'Y');
9324 END IF;
9325 
9326 
9327 --Validate Bill Ship Customer (Line/Ship)
9328 if (	p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID  is NOT NULL
9329 	AND  p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID <> FND_API.G_MISS_NUM)  THEN
9330 
9331 	aso_debug_pub.add('Before Calling Validate Bill Ship Customer (Line/Ship)', 1, 'Y');
9332 
9333 VALIDATE_BILL_SHIP_CUSTOMER(p_cust_party_id =>p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID,
9334 			    p_cust_acct_id  =>p_quote_header_rec.CUST_ACCOUNT_ID,							                    p_resource_id   =>p_quote_header_rec.resource_id,
9335 			    p_flag	    =>'SHIP',
9336 			    p_header	    => 'N'
9337 			   );
9338 
9339 	aso_debug_pub.add('After Calling Validate Bill Ship Customer (Line/Ship)', 1, 'Y');
9340 END IF;
9341 
9342 --6.                                   ***Validate Bill Ship Account***
9343 
9344 --Validate Bill Ship Account(Header/Bill)
9345 if (	p_quote_header_rec.INVOICE_TO_CUST_ACCOUNT_ID  is NOT NULL
9346 	AND  p_quote_header_rec.INVOICE_TO_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9347 
9348 	aso_debug_pub.add('Before Calling Validate Bill Ship Account(Header/Bill)', 1, 'Y');
9349 
9350 VALIDATE_BILL_SHIP_ACCOUNT(p_cust_acct_id  =>p_quote_header_rec.INVOICE_TO_CUST_ACCOUNT_ID,
9351 			   p_cust_party_id =>p_quote_header_rec.INVOICE_TO_CUST_PARTY_ID,
9352 			   p_resource_id   =>p_quote_header_rec.resource_id,
9353 			   p_sold_to_cust_acct_id=>p_quote_header_rec.CUST_ACCOUNT_ID,
9354 			   p_flag	    =>'BILL',
9355 			   p_header	    => 'Y'
9356 			  );
9357 	aso_debug_pub.add('After Calling Validate Bill Ship Account(Header/Bill)', 1, 'Y');
9358 END IF;
9359 
9360 
9361 --Validate Bill Ship Account(Header/Ship)
9362 if (	p_shipment_header_rec.SHIP_TO_CUST_ACCOUNT_ID  is NOT NULL
9363 	AND  p_shipment_header_rec.SHIP_TO_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9364 
9365 	aso_debug_pub.add('Before Calling Validate Bill Ship Account(Header/Ship)', 1, 'Y');
9366 
9367 
9368 VALIDATE_BILL_SHIP_ACCOUNT(p_cust_acct_id  =>p_shipment_header_rec.SHIP_TO_CUST_ACCOUNT_ID,
9369 			   p_cust_party_id =>p_shipment_header_rec.SHIP_TO_CUST_PARTY_ID,
9370 			   p_resource_id   =>p_quote_header_rec.resource_id,
9371 			   p_sold_to_cust_acct_id=>p_quote_header_rec.CUST_ACCOUNT_ID,
9372 			   p_flag	    =>'SHIP',
9373 			   p_header	    => 'Y'
9374 			  );
9375 	aso_debug_pub.add('After Calling Validate Bill Ship Account(Header/Ship)', 1, 'Y');
9376 END IF;
9377 
9378 
9379 
9380 --Validate Bill Ship Account(Line/Bill)
9381 if (	p_quote_line_rec.INVOICE_TO_CUST_ACCOUNT_ID  is NOT NULL
9382 	AND  p_quote_line_rec.INVOICE_TO_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9383 
9384 	aso_debug_pub.add('Before Calling Validate Bill Ship Account(Line/Bill)', 1, 'Y');
9385 
9386 VALIDATE_BILL_SHIP_ACCOUNT(p_cust_acct_id  =>p_quote_line_rec.INVOICE_TO_CUST_ACCOUNT_ID,
9387 			   p_cust_party_id =>p_quote_line_rec.INVOICE_TO_CUST_PARTY_ID,
9388 			   p_resource_id   =>p_quote_header_rec.resource_id,
9389 			   p_sold_to_cust_acct_id=>p_quote_header_rec.CUST_ACCOUNT_ID,
9390 			   p_flag	    =>'BILL',
9391 			   p_header	    => 'N'
9392 			  );
9393 	aso_debug_pub.add('After Calling Validate Bill Ship Account(Line/Bill)', 1, 'Y');
9394 END IF;
9395 
9396 
9397 
9398 --Validate Bill Ship Account(Line/Ship)
9399 if (	p_shipment_line_rec.SHIP_TO_CUST_ACCOUNT_ID  is NOT NULL
9400 	AND  p_shipment_line_rec.SHIP_TO_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9401 
9402 	aso_debug_pub.add('Before Calling Validate Bill Ship Account(Line/Ship)', 1, 'Y');
9403 
9404 VALIDATE_BILL_SHIP_ACCOUNT(p_cust_acct_id  =>p_shipment_line_rec.SHIP_TO_CUST_ACCOUNT_ID,
9405 			   p_cust_party_id =>p_shipment_line_rec.SHIP_TO_CUST_PARTY_ID,
9406 			   p_resource_id   =>p_quote_header_rec.resource_id,
9407 			   p_sold_to_cust_acct_id=>p_quote_header_rec.CUST_ACCOUNT_ID,
9408 			   p_flag	    =>'SHIP',
9409 			   p_header	    => 'N'
9410 			  );
9411 	aso_debug_pub.add('After Calling Validate Bill Ship Account(Line/Ship)', 1, 'Y');
9412 END IF;
9413 
9414 
9415 
9416 --7.                                   ***Validate Account***
9417 
9418 --Validate Account (Header/SOLD)
9419 if (	p_quote_header_rec.CUST_ACCOUNT_ID  is NOT NULL
9420 	AND  p_quote_header_rec.CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9421 
9422 	aso_debug_pub.add('Before Calling Validate Account (Header/SOLD)', 1, 'Y');
9423 
9424 VALIDATE_ACCOUNT(p_cust_acct_id	=> p_quote_header_rec.CUST_ACCOUNT_ID,
9425 		p_cust_party_id	=> p_quote_header_rec.cust_party_id,
9426 		p_resource_id	=> p_quote_header_rec.resource_id,
9427 		p_flag		=> 'SOLD' ,
9428 		p_header        => 'Y'
9429 		);
9430 	aso_debug_pub.add('After Calling Validate Account (Header/SOLD)', 1, 'Y');
9431 END IF;
9432 
9433 
9434 --Validate Account (Header/END)
9435 if (	p_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID  is NOT NULL
9436 	AND  p_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9437 
9438 	aso_debug_pub.add('Before Calling Validate Account (Header/END)', 1, 'Y');
9439 
9440 VALIDATE_ACCOUNT(p_cust_acct_id	=> p_quote_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
9441 		p_cust_party_id	=> p_quote_header_rec.END_CUSTOMER_CUST_PARTY_ID,
9442 		p_resource_id	=> p_quote_header_rec.resource_id,
9443 		p_flag		=> 'END',
9444 		p_header        => 'Y'
9445 		);
9446 	aso_debug_pub.add('After Calling Validate Account (Header/END)', 1, 'Y');
9447 END IF;
9448 
9449 
9450 --Validate Account (Line/END)
9451 if (	p_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID  is NOT NULL
9452 	AND  p_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)  THEN
9453 
9454 	aso_debug_pub.add('Before Calling Validate Account (Line/END)', 1, 'Y');
9455 
9456 VALIDATE_ACCOUNT(p_cust_acct_id	=> p_quote_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
9457 		p_cust_party_id	=> p_quote_line_rec.END_CUSTOMER_CUST_PARTY_ID,
9458 		p_resource_id	=> p_quote_header_rec.resource_id,
9459 		p_flag		=> 'END',
9460 		p_header        => 'N'
9461 		);
9462 	aso_debug_pub.add('After Calling Validate Account (Line/END)', 1, 'Y');
9463 END IF;
9464 
9465 
9466 --TCA Calls End
9467 
9468 -- Standard call to get message count and if count is 1, get message info.
9469 FND_MSG_PUB.Count_And_Get
9470       (  p_count	  =>   x_msg_count,
9471 	 p_data 	  =>   x_msg_data
9472       );
9473 
9474     --Printing the Values After processing
9475      PRINT_DEFAULTING_ATTRIBUTES('N');
9476 
9477 END VALIDATE_DEFAULTING_DATA ;
9478 --Changes for Validating Defaulting Parameters (End):14/09/2005
9479 
9480 Procedure Validate_cc_info
9481 (
9482   p_init_msg_list     IN   VARCHAR2  := fnd_api.g_false,
9483   p_payment_rec       IN   aso_quote_pub.payment_rec_type,
9484   p_qte_header_rec    IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
9485   P_Qte_Line_rec      IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC,
9486   x_return_status     OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
9487   x_msg_count         OUT NOCOPY /* file.sql.39 change */  NUMBER,
9488   x_msg_data          OUT NOCOPY /* file.sql.39 change */  VARCHAR2)
9489 IS
9490 l_payment_type_code   varchar2(240);
9491 l_inv_cust_party_id   number;
9492 
9493 cursor c_get_payment_type_code(p_qte_hdr_id number) is
9494 select payment_type_code
9495 from aso_payments
9496 where quote_header_id = p_qte_hdr_id
9497 and quote_line_id is null;
9498 
9499 cursor c_get_lines_with_null_payment(p_qte_hdr_id number) is
9500 select b.invoice_to_cust_party_id
9501 from aso_payments a, aso_quote_lines_all b
9502 where a.quote_header_id = b.quote_header_id
9503 and a.quote_line_id = b.quote_line_id
9504 and b.quote_header_id = p_qte_hdr_id
9505 and a.quote_line_id is not null
9506 and a.payment_type_code is null
9507 and b.invoice_to_cust_party_id is not null;
9508 
9509 Begin
9510     if aso_debug_pub.g_debug_flag = 'Y' then
9511        aso_debug_pub.add('Begin Validate_payment_rec', 1, 'Y');
9512     end if;
9513 
9514     if p_init_msg_list = fnd_api.g_true then
9515         fnd_msg_pub.initialize;
9516     end if;
9517 
9518     x_return_status := fnd_api.g_ret_sts_success;
9519 
9520     if aso_debug_pub.g_debug_flag = 'Y' then
9521        aso_debug_pub.add('Payment Rec.payment_type_code: '||p_payment_rec.payment_type_code, 1, 'Y');
9522        aso_debug_pub.add('Payment Rec.quote_header_id: '||p_payment_rec.quote_header_id, 1, 'Y');
9523        aso_debug_pub.add('Payment Rec.quote_line_id: '||p_payment_rec.quote_line_id, 1, 'Y');
9524        aso_debug_pub.add('P_Qte_Line_rec.invoice_to_cust_party_id: '||P_Qte_Line_rec.invoice_to_cust_party_id, 1, 'Y');
9525        aso_debug_pub.add('p_qte_header_rec.invoice_to_cust_party_id: '||p_qte_header_rec.invoice_to_cust_party_id, 1, 'Y');
9526     end if;
9527 
9528 
9529 
9530    if (p_payment_rec.payment_type_code = 'CREDIT_CARD' and
9531        (p_payment_rec.quote_line_id is null or p_payment_rec.quote_line_id = fnd_api.g_miss_num) and
9532        (p_qte_header_rec.invoice_to_cust_party_id is null or p_qte_header_rec.invoice_to_cust_party_id = fnd_api.g_miss_num))
9533       or
9534       (p_payment_rec.payment_type_code  = 'CREDIT_CARD' and
9535        (p_payment_rec.quote_line_id is not null and p_payment_rec.quote_line_id <> fnd_api.g_miss_num) and
9536        (P_Qte_Line_rec.invoice_to_cust_party_id is null or P_Qte_Line_rec.invoice_to_cust_party_id = fnd_api.g_miss_num))
9537    then
9538 
9539           x_return_status := fnd_api.g_ret_sts_error;
9540 
9541           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9542              FND_MESSAGE.Set_Name('ASO', 'ASO_MISSING_BILLTOPARTY');
9543              FND_MSG_PUB.ADD;
9544           END IF;
9545 
9546    end if;
9547 
9548    -- if line payment has bill to and payment type is null while header has payment type credit card, throw error
9549    if ((p_payment_rec.quote_line_id is not null and p_payment_rec.quote_line_id <> fnd_api.g_miss_num) and
9550        (P_Qte_Line_rec.invoice_to_cust_party_id is not null and  P_Qte_Line_rec.invoice_to_cust_party_id <> fnd_api.g_miss_num) and
9551        (p_payment_rec.payment_type_code is null or p_payment_rec.payment_type_code = fnd_api.g_miss_char)) then
9552 
9553        -- get the payment type from header payment record
9554         open c_get_payment_type_code(p_payment_rec.quote_header_id);
9555         fetch c_get_payment_type_code into l_payment_type_code;
9556         close c_get_payment_type_code;
9557 
9558         if nvl(l_payment_type_code,'null')  = 'CREDIT_CARD' then
9559 
9560           x_return_status := fnd_api.g_ret_sts_error;
9561 
9562           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9563              FND_MESSAGE.Set_Name('ASO', 'ASO_MISSING_PAYMENT_DETAILS');
9564              FND_MSG_PUB.ADD;
9565           END IF;
9566 
9567         end if;
9568 
9569    end if;
9570 
9571    -- if  hdr payment is changed to cc, then make sure all lines have no null payment type if bill to is specified at line
9572    if ((p_payment_rec.quote_line_id is null or p_payment_rec.quote_line_id = fnd_api.g_miss_num) and
9573        (p_payment_rec.payment_type_code = 'CREDIT_CARD' )) then
9574 
9575        --  get all the lines in quote and check their payment type
9576         open c_get_lines_with_null_payment(p_payment_rec.quote_header_id);
9577         fetch c_get_lines_with_null_payment  into l_inv_cust_party_id;
9578 
9579         if c_get_lines_with_null_payment%FOUND Then
9580           close c_get_lines_with_null_payment;
9581           x_return_status := fnd_api.g_ret_sts_error;
9582 
9583           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9584              FND_MESSAGE.Set_Name('ASO', 'ASO_MISSING_LN_PAYMENT_DETAILS');
9585              FND_MSG_PUB.ADD;
9586           END IF;
9587 
9588         end if;
9589 
9590    end if;
9591     if aso_debug_pub.g_debug_flag = 'Y' then
9592        aso_debug_pub.add('End Validate_payment_rec', 1, 'Y');
9593     end if;
9594 
9595 End Validate_cc_info;
9596 
9597 
9598 PROCEDURE VALIDATE_OU(p_qte_header_rec    IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type) IS           --Procedure for OU Validtion (Yogeshwar 05/10/2005)
9599 
9600 l_org_id number;
9601 l_access_mode varchar2(1);
9602 
9603 BEGIN
9604 	--Getting the current org_id
9605 	l_org_id := MO_GLOBAL.GET_CURRENT_ORG_ID;
9606 
9607 	--Getting the Context Mode
9608 	l_access_mode := MO_GLOBAL.GET_ACCESS_MODE ;
9609 
9610         --when access mode is set to 'S'
9611 	--Check if the current org_id matches with the org_id in p_qte_header_rec
9612 	IF l_access_mode IS NOT NULL AND l_access_mode = 'S' THEN
9613 	BEGIN
9614 		IF ((p_qte_header_rec.org_id <> FND_API.G_MISS_NUM)
9615 		    AND (p_qte_header_rec.org_id IS NOT NULL)
9616 		    AND (l_org_id <> p_qte_header_rec.org_id)) THEN
9617 
9618 			 IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9619 		             FND_MESSAGE.Set_Name('ASO', 'ASO_ORG_ID_MISMATCH');
9620 		             FND_MSG_PUB.ADD;
9621 		         END IF;
9622 
9623 			 RAISE FND_API.G_EXC_ERROR;
9624 		END IF;
9625 	END ;
9626 	ELSE
9627 		IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9628 			FND_MESSAGE.Set_Name('ASO', 'ASO_WRONG_ACCESS_MODE');
9629 			FND_MSG_PUB.ADD;
9630 		END IF;
9631 
9632 		RAISE FND_API.G_EXC_ERROR;
9633 	END IF;
9634 END VALIDATE_OU;
9635 
9636 PROCEDURE validate_ship_method_code
9637 (
9638 p_init_msg_list          IN    VARCHAR2  := fnd_api.g_false,
9639 p_qte_header_id          IN    NUMBER    := fnd_api.g_miss_num,
9640 p_qte_line_id            IN    NUMBER    := fnd_api.g_miss_num,
9641 p_organization_id        IN    NUMBER    := fnd_api.g_miss_num,
9642 p_ship_method_code       IN    VARCHAR2  := fnd_api.g_miss_char,
9643 p_operation_code         IN    VARCHAR2  := fnd_api.g_miss_char,
9644 x_return_status          OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
9645 x_msg_count              OUT NOCOPY /* file.sql.39 change */   NUMBER,
9646 x_msg_data               OUT NOCOPY /* file.sql.39 change */   VARCHAR2) is
9647 
9648 Cursor C_Get_ship_method ( l_ship_method_code varchar2, l_org_id number) is
9649 SELECT csm.ship_method_code
9650 from      wsh_carrier_ship_methods csm,
9651           fnd_lookup_values fl
9652 where     fl.lookup_type = 'SHIP_METHOD'
9653 and       csm.ship_method_code = l_ship_method_code
9654 and       fl.view_application_id = 3
9655 and       csm.organization_id = l_org_id
9656 and       fl.enabled_flag = 'Y'
9657 and     csm.enabled_flag = 'Y'
9658 and       (trunc(sysdate) between nvl(fl.start_date_active,trunc(sysdate))
9659           AND  nvl(fl.end_date_active,trunc(sysdate)) );
9660 
9661 
9662 Cursor get_organization_id(l_qte_line_id number) is
9663 select organization_id
9664 from   aso_quote_lines_all
9665 where  quote_line_id = l_qte_line_id;
9666 
9667 Cursor get_ship_code(l_qte_line_id number) is
9668 select ship_method_code
9669 from   aso_shipments
9670 where  quote_line_id = l_qte_line_id;
9671 
9672 Cursor get_ship_code_from_hdr(l_qte_header number) is
9673 select ship_method_code
9674 from   aso_shipments
9675 where  quote_header_id = l_qte_header;
9676 
9677 l_ship_method_code varchar2(30) := p_ship_method_code;
9678 lx_ship_method_code varchar2(30);
9679 l_organization_id  number := p_organization_id;
9680 
9681 
9682 BEGIN
9683 
9684     if aso_debug_pub.g_debug_flag = 'Y' then
9685        aso_debug_pub.add('Begin validate_ship_method_code', 1, 'Y');
9686     end if;
9687 
9688     if p_init_msg_list = fnd_api.g_true then
9689         fnd_msg_pub.initialize;
9690     end if;
9691 
9692     x_return_status := fnd_api.g_ret_sts_success;
9693 
9694     if aso_debug_pub.g_debug_flag = 'Y' then
9695        aso_debug_pub.add('p_qte_header_id  :  '||p_qte_header_id, 1, 'Y');
9696        aso_debug_pub.add('p_qte_line_id:      '||p_qte_line_id, 1, 'Y');
9697        aso_debug_pub.add('p_organization_id:  '||p_organization_id, 1, 'Y');
9698        aso_debug_pub.add('p_ship_method_code: '||p_ship_method_code, 1, 'Y');
9699        aso_debug_pub.add('p_operation_code:   '||p_operation_code, 1, 'Y');
9700     end if;
9701 
9702     IF (p_operation_code = 'CREATE' and p_ship_method_code is not null and p_ship_method_code <> fnd_api.g_miss_char) THEN
9703 
9704       OPEN C_Get_ship_method(p_ship_method_code,p_organization_id);
9705 	 fetch C_Get_ship_method into lx_ship_method_code;
9706 
9707 	 if aso_debug_pub.g_debug_flag = 'Y' then
9708        aso_debug_pub.add('Operation code is CREATE', 1, 'Y');
9709        aso_debug_pub.add('lx_ship_method_code  :  '|| lx_ship_method_code, 1, 'Y');
9710       end if;
9711 
9712 	 if C_Get_ship_method%NOTFOUND THEN
9713          Close C_Get_ship_method;
9714          x_return_status := FND_API.G_RET_STS_ERROR;
9715             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9716              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
9717                 FND_MESSAGE.Set_Token('COLUMN', 'SHIP_METHOD', FALSE);
9718                 FND_MESSAGE.Set_Token('VALUE', p_ship_method_code, FALSE);
9719                 FND_MSG_PUB.ADD;
9720             END IF;
9721        else
9722         Close C_Get_ship_method;
9723 	  end if;
9724 
9725 
9726     ELSIF  p_operation_code = 'UPDATE' THEN
9727 
9728        -- get the value from the db if not passed in
9729        IF (p_organization_id is null or p_organization_id = fnd_api.g_miss_num) then
9730           open get_organization_id(p_qte_line_id);
9731           fetch get_organization_id into l_organization_id;
9732           close get_organization_id;
9733        END IF;
9734 
9735        IF (p_ship_method_code is null or p_ship_method_code = fnd_api.g_miss_char) then
9736          IF (p_qte_line_id is not null and p_qte_line_id <> fnd_api.g_miss_num) then
9737 		open get_ship_code(p_qte_line_id);
9738 		fetch get_ship_code into l_ship_method_code;
9739 		close get_ship_code;
9740 	    ELSE
9741           open get_ship_code_from_hdr(p_qte_header_id);
9742 		fetch get_ship_code_from_hdr into l_ship_method_code;
9743 		close get_ship_code_from_hdr;
9744 	    END IF;
9745 	  End if;
9746 
9747        if aso_debug_pub.g_debug_flag = 'Y' then
9748           aso_debug_pub.add('l_organization_id:   '|| l_organization_id, 1, 'Y');
9749           aso_debug_pub.add('l_ship_method_code:  '|| l_ship_method_code, 1, 'Y');
9750        end if;
9751 
9752      IF (l_ship_method_code is not null and l_ship_method_code <> fnd_api.g_miss_char) then
9753       OPEN C_Get_ship_method(l_ship_method_code,l_organization_id);
9754       fetch C_Get_ship_method into lx_ship_method_code;
9755 
9756 	 if aso_debug_pub.g_debug_flag = 'Y' then
9757        aso_debug_pub.add('Operation code is UPDATE', 1, 'Y');
9758        aso_debug_pub.add('lx_ship_method_code  :  '|| lx_ship_method_code, 1, 'Y');
9759       end if;
9760 
9761 	 if C_Get_ship_method%NOTFOUND THEN
9762          Close C_Get_ship_method;
9763          x_return_status := FND_API.G_RET_STS_ERROR;
9764             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9765              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
9766                 FND_MESSAGE.Set_Token('COLUMN', 'SHIP_METHOD', FALSE);
9767                 FND_MESSAGE.Set_Token('VALUE', l_ship_method_code, FALSE);
9768                 FND_MSG_PUB.ADD;
9769             END IF;
9770        else
9771         Close C_Get_ship_method;
9772        end if;
9773       end if; -- end if for the ship_method code check
9774     END IF; -- end if for the operation_code check
9775 
9776 
9777     if aso_debug_pub.g_debug_flag = 'Y' then
9778        aso_debug_pub.add('End validate_ship_method_code', 1, 'Y');
9779     end if;
9780 END validate_ship_method_code;
9781 
9782 End ASO_VALIDATE_PVT;
9783