DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_VALIDATE_PVT

Source


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