DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_SOURCING_PVT

Source


1 PACKAGE BODY ASO_SOURCING_PVT as
2 /* $Header: asovsrcb.pls 120.1 2005/08/05 09:32:23 appldev ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_SOURCING_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_SOURCING_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovsrcb.pls';
13 
14 
15 
16 
17 FUNCTION Get_Cust_Acct (p_quote_header_id NUMBER)
18 RETURN NUMBER
19 IS
20 x_cust_account_id NUMBER;
21 BEGIN
22 
23    SELECT cust_account_id
24    INTO x_cust_account_id
25    FROM aso_quote_headers_all
26    WHERE quote_header_id = p_quote_header_id;
27 
28    IF (SQL%NOTFOUND) THEN
29        null;
30        x_cust_account_id := null;
31    END IF;
32 
33 
34    return  x_cust_account_id;
35    EXCEPTION
36    WHEN OTHERS THEN
37 	RETURN NULL;
38 END Get_Cust_Acct;
39 
40 -- the following four APIs actually create the site use if needed
41 -- this should be changed in the party int
42 
43 FUNCTION Get_Ship_to_Site_Use (p_quote_header_id NUMBER)
44 RETURN NUMBER
45 IS
46 x_ship_to_org_id      NUMBER := NULL;
47 l_cust_account_id     NUMBER;
48 l_ship_party_site_id  NUMBER;
49 l_return_status       VARCHAR2(1);
50 l_msg_count           NUMBER;
51 l_msg_data            varchar2(2000);
52 l_ship_to_cust_account_id            NUMBER;
53 
54 CURSOR C_get_quote_info (l_quote_header_id NUMBER) IS
55    SELECT qh.cust_account_id, qs.ship_to_party_site_id,qs.ship_to_cust_account_id
56      FROM aso_quote_headers_all qh, aso_shipments qs
57      WHERE qh.quote_header_id = qs.quote_header_id
58      AND qh.quote_header_id = l_quote_header_id
59      AND qs.quote_line_id is NULL;
60 
61 BEGIN
62 
63       OPEN C_get_quote_info(p_quote_header_id);
64       FETCH C_get_quote_info INTO l_cust_account_id, l_ship_party_site_id,l_ship_to_cust_account_id;
65       IF (C_get_quote_info%NOTFOUND) THEN
66          return x_ship_to_org_id;
67       END IF;
68       CLOSE C_get_quote_info;
69 
70 
71       if l_ship_to_cust_account_id is not null OR l_ship_to_cust_account_id <>  fnd_api.G_MISS_NUM then
72 	 l_cust_account_id := l_ship_to_cust_account_id;
73 	 end if;
74 
75       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
76         aso_debug_pub.add('cust account = ' || l_cust_account_id,1,'N');
77         aso_debug_pub.add('ship party site = ' || l_ship_party_site_id,1,'N');
78       END IF;
79       IF l_cust_account_id is not NULL
80          AND l_ship_party_site_id is not NULL THEN
81 
82 
83       ASO_MAP_QUOTE_ORDER_INT.GET_ACCT_SITE_USES (
84 
85  		P_Cust_Account_Id => l_cust_account_id
86  		 ,P_Party_Site_Id   => l_ship_party_site_id
87 	         ,P_Acct_Site_type  => 'SHIP_TO'
88  		 ,x_return_status   => l_return_status
89  		 ,x_site_use_id     => x_ship_to_org_id
90   	   );
91        IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
92           x_ship_to_org_id := NULL;
93        END IF;
94 
95       END IF;  -- not null
96 
97       return x_ship_to_org_id;
98 	 EXCEPTION
99 	 WHEN OTHERS THEN
100 	   RETURN NULL;
101 
102 
103 END Get_Ship_to_Site_Use;
104 
105 
106 
107 FUNCTION Get_Line_Ship_to_Site_Use (p_quote_line_id NUMBER)
108 RETURN NUMBER
109 IS
110 x_ship_to_org_id      NUMBER := NULL;
111 l_cust_account_id     NUMBER;
112 l_ship_party_site_id  NUMBER;
113 l_return_status       VARCHAR2(1);
114 l_msg_count           NUMBER;
115 l_msg_data            varchar2(2000);
116 l_ship_to_cust_account_id            NUMBER;
117 l_quote_header_id number;
118 CURSOR C_get_quote_info (l_quote_line_id NUMBER) IS
119    SELECT qh.cust_account_id, qs.ship_to_party_site_id,
120    qs.ship_to_cust_account_id,qh.quote_header_id
121      FROM aso_quote_headers_all qh, aso_shipments qs, aso_quote_lines_all ql
122      WHERE qh.quote_header_id = qs.quote_header_id
123      AND ql.quote_header_id = qh.quote_header_id
124      AND ql.quote_line_id = l_quote_line_id
125      AND ql.quote_line_id = qs.quote_line_id;
126 
127 BEGIN
128 
129       OPEN C_get_quote_info(p_quote_line_id);
130       FETCH C_get_quote_info INTO l_cust_account_id, l_ship_party_site_id,
131            l_ship_to_cust_account_id, l_quote_header_id;
132       IF (C_get_quote_info%NOTFOUND) THEN
133          return x_ship_to_org_id;
134       END IF;
135       CLOSE C_get_quote_info;
136 
137 	 if l_ship_to_cust_account_id is not null OR l_ship_to_cust_account_id <>  fnd_api.G_MISS_NUM then
138 	 l_cust_account_id := l_ship_to_cust_account_id;
139 	 end if;
140      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
141        aso_debug_pub.add('cust account = ' || l_cust_account_id,1,'N');
142         aso_debug_pub.add('party site = ' || l_ship_party_site_id,1,'N');
143      END IF;
144 
145       IF l_cust_account_id is not NULL
146          AND l_ship_party_site_id is not NULL THEN
147           ASO_MAP_QUOTE_ORDER_INT.GET_ACCT_SITE_USES (
148 
149  		 P_Cust_Account_Id => l_cust_account_id
150  		 ,P_Party_Site_Id   => l_ship_party_site_id
151 	         ,P_Acct_Site_type  => 'SHIP_TO'
152  		 ,x_return_status   => l_return_status
153  		 ,x_site_use_id     => x_ship_to_org_id
154   	   );
155 
156 
157        IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
158           x_ship_to_org_id := NULL;
159        END IF;
160      ELSE
161        x_ship_to_org_id := get_ship_to_site_use(l_quote_header_id);
162     END IF;  -- not null
163 
164       return x_ship_to_org_id;
165 	 EXCEPTION
166 	 WHEN OTHERS THEN
167 	   RETURN NULL;
168 
169 
170 END Get_Line_Ship_to_Site_Use;
171 
172 
173 
174 
175 FUNCTION Get_Invoice_to_Site_Use (p_quote_header_id NUMBER)
176 RETURN NUMBER
177 IS
178 x_invoice_to_org_id NUMBER := NULL;
179 l_cust_account_id NUMBER;
180 l_invoice_party_site_id NUMBER;
181 l_return_status       VARCHAR2(1);
182 l_msg_count           NUMBER;
183 l_msg_data            varchar2(2000);
184 l_invoice_to_cust_account_id            NUMBER;
185 
186 
187 CURSOR C_get_quote_info (l_quote_header_id NUMBER) IS
188    SELECT cust_account_id, invoice_to_party_site_id,invoice_to_cust_account_id
189      FROM aso_quote_headers_all
190      WHERE quote_header_id = l_quote_header_id;
191 
192 BEGIN
193 
194       OPEN C_get_quote_info(p_quote_header_id);
195       FETCH C_get_quote_info INTO l_cust_account_id, l_invoice_party_site_id,l_invoice_to_cust_account_id;
196       IF (C_get_quote_info%NOTFOUND) THEN
197          return x_invoice_to_org_id;
198       END IF;
199       CLOSE C_get_quote_info;
200 
201       -- ----------------dbms_output.put_line(l_cust_account_id || l_invoice_party_site_id);
202 
203 	 if l_invoice_to_cust_account_id is not null OR l_invoice_to_cust_account_id <>  fnd_api.G_MISS_NUM then
204 	 l_cust_account_id := l_invoice_to_cust_account_id;
205 	 end if;
206 
207           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
208             aso_debug_pub.add('cust account = ' || l_cust_account_id,1,'N');
209         aso_debug_pub.add('invoice party site = ' || l_invoice_party_site_id,1,'N');
210           END IF;
211 
212 
213       IF l_cust_account_id is not NULL
214          AND l_invoice_party_site_id is not NULL THEN
215 
216        ASO_MAP_QUOTE_ORDER_INT.GET_ACCT_SITE_USES (
217 
218  		 P_Cust_Account_Id => l_cust_account_id
219  		 ,P_Party_Site_Id   => l_invoice_party_site_id
220 	         ,P_Acct_Site_type  => 'BILL_TO'
221  		 ,x_return_status   => l_return_status
222  		 ,x_site_use_id     => x_invoice_to_org_id
223   	   );
224 
225      --  ----------------dbms_output.put_line(l_return_status || ' '||x_invoice_to_org_id );
226        IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
227           x_invoice_to_org_id := NULL;
228        END IF;
229 
230       END IF;  -- not null
231 
232       return x_invoice_to_org_id;
233 	 EXCEPTION
234 	 WHEN OTHERS THEN
235 	   RETURN NULL;
236 
237 
238 END Get_Invoice_to_Site_Use;
239 
240 
241 
242 
243 
244 FUNCTION Get_Line_Invoice_Site_Use (p_quote_line_id NUMBER)
245 RETURN NUMBER
246 IS
247 x_invoice_to_org_id NUMBER := NULL;
248 l_cust_account_id NUMBER;
249 l_invoice_party_site_id NUMBER;
250 l_return_status       VARCHAR2(1);
251 l_msg_count           NUMBER;
252 l_msg_data            NUMBER;
253 l_invoice_to_cust_account_id            NUMBER;
254 l_quote_header_id number;
255 CURSOR C_get_quote_info (l_quote_line_id NUMBER) IS
256    SELECT qh.cust_account_id, ql.invoice_to_party_site_id,
257           ql.invoice_to_cust_account_id, qh.quote_header_id
258      FROM aso_quote_headers_all qh, aso_quote_lines_all ql
259      WHERE ql.quote_line_id = l_quote_line_id
260      AND   ql.quote_header_id = qh.quote_header_id;
261 
262 BEGIN
263 
264       OPEN C_get_quote_info(p_quote_line_id);
265       FETCH C_get_quote_info INTO l_cust_account_id, l_invoice_party_site_id,
266          l_invoice_to_cust_account_id, l_quote_header_id;
267       IF (C_get_quote_info%NOTFOUND) THEN
268          return x_invoice_to_org_id;
269       END IF;
270       CLOSE C_get_quote_info;
271 
272 	 if l_invoice_to_cust_account_id is not null OR l_invoice_to_cust_account_id <>  fnd_api.G_MISS_NUM then
273 	 l_cust_account_id := l_invoice_to_cust_account_id;
274 	 end if;
275 
276       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
277         aso_debug_pub.add('cust account = ' || l_cust_account_id,1,'N');
278         aso_debug_pub.add('invoice party site = ' || l_invoice_party_site_id,1,'N');
279       END IF;
280 
281       IF l_cust_account_id is not NULL
282          AND l_invoice_party_site_id is not NULL THEN
283        ASO_MAP_QUOTE_ORDER_INT.GET_ACCT_SITE_USES (
284 
285  		 P_Cust_Account_Id => l_cust_account_id
286  		 ,P_Party_Site_Id   => l_invoice_party_site_id
287 	         ,P_Acct_Site_type  => 'BILL_TO'
288  		 ,x_return_status   => l_return_status
289  		 ,x_site_use_id     => x_invoice_to_org_id
290   	   );
291 
292        IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
293           x_invoice_to_org_id := NULL;
294        END IF;
295       ELSE
296         x_invoice_to_org_id := get_invoice_to_site_use(l_quote_header_id);
297       END IF;  -- not null
298 
299       return x_invoice_to_org_id;
300 	 EXCEPTION
301 	 WHEN OTHERS THEN
302 	   RETURN NULL;
303 
304 
305 END Get_Line_Invoice_Site_Use;
306 
307 
308 FUNCTION Get_Ship_to_Party_Site (p_quote_header_id NUMBER)
309 RETURN NUMBER
310 IS
311  CURSOR C_get_quote_info (l_quote_header_id NUMBER) IS
312    SELECT qs.ship_to_party_site_id
313      FROM aso_shipments qs
314      WHERE qs.quote_header_id = l_quote_header_id
315      AND qs.quote_line_id is NULL;
316 
317 x_ship_party_site_id NUMBER := NULL;
318 
319 BEGIN
320 
321       OPEN C_get_quote_info(p_quote_header_id);
322       FETCH C_get_quote_info INTO x_ship_party_site_id;
323       IF (C_get_quote_info%NOTFOUND) THEN
324          return x_ship_party_site_id;
325       END IF;
326       CLOSE C_get_quote_info;
327 
328       return x_ship_party_site_id;
329 	 EXCEPTION
330 	 WHEN OTHERS THEN
331 	   RETURN NULL;
332 
333 END  Get_Ship_to_Party_Site;
334 
335 
336 
337 FUNCTION Get_Line_Ship_Party_Site (p_quote_line_id NUMBER)
338 RETURN NUMBER
339 IS
340  CURSOR C_get_quote_info (l_quote_line_id NUMBER) IS
341    SELECT qs.ship_to_party_site_id
342      FROM aso_shipments qs
343      WHERE  qs.quote_line_id = l_quote_line_id;
344 
345 x_ship_party_site_id NUMBER;
346 
347 BEGIN
348 
349       OPEN C_get_quote_info(p_quote_line_id);
350       FETCH C_get_quote_info INTO x_ship_party_site_id;
351       IF (C_get_quote_info%NOTFOUND) THEN
352          return x_ship_party_site_id;
353       END IF;
354       CLOSE C_get_quote_info;
355 
356       return x_ship_party_site_id;
357 	 EXCEPTION
358 	 WHEN OTHERS THEN
359 	   RETURN NULL;
360 
361 END  Get_Line_Ship_Party_Site;
362 
363 
364 FUNCTION Get_Invoice_to_Party_Site (p_quote_header_id NUMBER)
365 RETURN NUMBER
366 IS
367  CURSOR C_get_quote_info (l_quote_header_id NUMBER) IS
368    SELECT qs.invoice_to_party_site_id
369      FROM aso_quote_headers_all qs
370      WHERE qs.quote_header_id = l_quote_header_id;
371 
372 x_invoice_party_site_id NUMBER := NULL;
373 
374 BEGIN
375 
376       OPEN C_get_quote_info(p_quote_header_id);
377       FETCH C_get_quote_info INTO x_invoice_party_site_id;
378       IF (C_get_quote_info%NOTFOUND) THEN
379          return x_invoice_party_site_id;
380       END IF;
381       CLOSE C_get_quote_info;
382 
383       return x_invoice_party_site_id;
384 	 EXCEPTION
385 	 WHEN OTHERS THEN
386 	   RETURN NULL;
387 
388 END  Get_Invoice_to_Party_Site;
389 
390 
391 
392 FUNCTION Get_Line_Invoice_Party_Site (p_quote_line_id NUMBER)
393 RETURN NUMBER
394 IS
395  CURSOR C_get_quote_info (l_quote_line_id NUMBER) IS
396    SELECT qs.invoice_to_party_site_id
397      FROM aso_quote_lines_all qs
398      WHERE  qs.quote_line_id = l_quote_line_id;
399 
400 xl_inv_party_site_id NUMBER;
401 
402 BEGIN
403 
404       OPEN C_get_quote_info(p_quote_line_id);
405       FETCH C_get_quote_info INTO xl_inv_party_site_id;
406       IF (C_get_quote_info%NOTFOUND) THEN
407          return xl_inv_party_site_id;
408       END IF;
409       CLOSE C_get_quote_info;
410 
411       return xl_inv_party_site_id;
412 	 EXCEPTION
413 	 WHEN OTHERS THEN
414 	   RETURN NULL;
415 
416 END  Get_Line_Invoice_Party_Site;
417 
418 /*
419 FUNCTION Get_Party_Id (p_quote_header_id NUMBER)
420 RETURN NUMBER
421 IS
422 x_party_id NUMBER;
423 BEGIN
424 
425    SELECT party_id
426    INTO x_party_id
427    FROM aso_quote_headers_all
428    WHERE quote_header_id = p_quote_header_id;
429 
430    IF (SQL%NOTFOUND) THEN
431        null;
432        x_party_id := null;
433    END IF;
434 
435    return  x_party_id;
436 
437 END Get_Party_Id;
438 
439 */
440 
441 
442 
443 FUNCTION Get_Customer_Class(p_cust_account_id IN NUMBER)
444 RETURN VARCHAR2
445 IS
446 x_class_code VARCHAR2(240);
447 BEGIN
448 
449     SELECT customer_class_code
450     INTO   x_class_code
451     FROM   hz_cust_accounts
452     WHERE  cust_account_id = p_cust_account_id;
453 
454     RETURN x_class_code;
455 EXCEPTION
456 WHEN OTHERS THEN
457   RETURN NULL;
458 
459 END Get_Customer_Class;
460 
461 FUNCTION Get_Account_Type (p_cust_account_id IN NUMBER)
462 RETURN QP_Attr_Mapping_PUB.t_MultiRecord
463 IS
464 
465 TYPE t_cursor IS REF CURSOR;
466 
467 x_account_type_ids     QP_Attr_Mapping_PUB.t_MultiRecord;
468 l_account_type_id      number;
469 v_count 	       NUMBER := 1;
470 l_acct_type_cursor     t_cursor;
471 BEGIN
472     OPEN l_acct_type_cursor FOR
473     SELECT profile_class_id
474     FROM   HZ_CUSTOMER_PROFILES
475     WHERE  cust_account_id = p_cust_account_id;
476 
477     LOOP
478 
479 	FETCH l_acct_type_cursor INTO l_account_type_id;
480 	EXIT WHEN l_acct_type_cursor%NOTFOUND;
481 
482 	x_account_type_ids(v_count) := l_account_type_id;
483 	v_count := v_count + 1;
484 
485     END LOOP;
486 
487     CLOSE l_acct_type_cursor;
488 
489     RETURN x_account_type_ids;
490 
491 END Get_Account_Type;
492 
493 FUNCTION Get_Sales_Channel (p_cust_account_id IN NUMBER)
494 RETURN VARCHAR2
495 IS
496 x_sales_channel_code VARCHAR2(240);
497 BEGIN
498 
499     SELECT sales_channel_code
500     INTO   x_sales_channel_code
501     FROM   hz_cust_accounts
502     WHERE  cust_account_id = p_cust_account_id;
503 
504     RETURN x_sales_channel_code;
505 EXCEPTION
506 WHEN OTHERS THEN
507   RETURN NULL;
508 
509 
510 END Get_Sales_Channel;
511 
512 
513 FUNCTION Get_GSA (p_cust_account_id NUMBER)
514 RETURN VARCHAR2
515 IS
516 x_gsa VARCHAR2(1);
517 BEGIN
518 
519 	SELECT gsa_indicator_flag
520 	INTO   x_gsa
521 	FROM   hz_cust_accounts accts ,hz_parties party
522 	WHERE  accts.party_id=party.party_id
523 	AND    cust_account_id =  p_cust_account_id;
524 
525 	RETURN x_gsa;
526 EXCEPTION
527 WHEN OTHERS THEN
528   RETURN NULL;
529 
530 END get_gsa;
531 
532 /*
533 FUNCTION Get_Site_Use (p_contact_id IN VARCHAR2)
534 RETURN VARCHAR2
535 IS
536 
537 x_site_use_id VARCHAR2(240);
538 
539 BEGIN
540 
541     SELECT site_use_id
542     INTO   x_site_use_id
543     FROM  HZ_CUST_SITE_USES_ALL
544     WHERE  contact_id = p_contact_id;
545 
546     RETURN x_site_use_id;
547 
548 END Get_Site_Use;
549 */
550 
551 
552 FUNCTION Get_quote_Qty (p_qte_header_id IN NUMBER)
553 RETURN VARCHAR2
554 IS
555 
556 x_quote_qty	  varchar2(30);
557 l_quote_qty	  NUMBER;
558 
559 BEGIN
560 
561   SELECT SUM(nvl(quantity,0))
562   INTO	l_quote_qty
563   FROM aso_quote_lines_all
564   WHERE quote_header_id=p_qte_header_id
565   AND (line_category_code<>'RETURN' OR line_category_code IS NULL)
566   GROUP BY quote_header_id;
567 
568 
569    IF (SQL%NOTFOUND) THEN
570  		l_quote_qty :=0;
571    end if;
572 
573   x_quote_qty := FND_NUMBER.NUMBER_TO_CANONICAL(nvl(l_quote_qty, 0));
574   RETURN x_quote_qty;
575  EXCEPTION
576  WHEN OTHERS THEN
577    RETURN NULL;
578 
579 END Get_quote_Qty;
580 
581 
582 FUNCTION Get_quote_Amount(p_qte_header_id IN NUMBER) RETURN VARCHAR2
583 IS
584 x_quote_amount	  VARCHAR2(30);
585 l_quote_amount	  NUMBER;
586 
587 BEGIN
588 
589   SELECT SUM((nvl(quantity,0))*(LINE_LIST_PRICE-LINE_ADJUSTED_AMOUNT))
590   INTO	l_quote_amount
591   FROM aso_quote_lines_all
592   WHERE quote_header_id=p_qte_header_id
593   AND (line_category_code<>'RETURN' OR line_category_code IS NULL)
594   GROUP BY quote_header_id;
595 
596 
597   IF (SQL%NOTFOUND) THEN
598 	 l_quote_amount :=0;
599   END IF;
600 
601   x_quote_amount:=FND_NUMBER.NUMBER_TO_CANONICAL(NVL(l_quote_amount,0));
602 
603   RETURN x_quote_amount;
604 
605 END Get_quote_Amount;
606 
607 -- order context
608 
609 FUNCTION Get_shippable_flag(p_qte_line_id NUMBER)
610 RETURN VARCHAR2
611 IS
612 x_shippable_item_flag VARCHAR2(1);
613 BEGIN
614 
615 	SELECT shippable_item_flag
616 	INTO   x_shippable_item_flag
617 	FROM  aso_i_items_v i, aso_quote_lines_all l
618 	WHERE  l.quote_line_id = p_qte_line_id
619 	and l.inventory_item_id = i.inventory_item_id
620 	and l.organization_id = i.organization_id;
621 
622 	RETURN x_shippable_item_flag;
623 	EXCEPTION
624 	WHEN OTHERS THEN
625 	  RETURN NULL;
626 
627 END get_shippable_flag;
628 
629 FUNCTION Get_Cust_Po(
630 	p_qte_header_id     number
631 		) RETURN  VARCHAR2
632 		IS
633 		Cursor get_po is SELECT payment_ref_number from aso_payments
634 		WHERE
635 	payment_type_code ='PO' and quote_header_id = p_qte_header_id and quote_line_id is NULL;
636 		Customer_PO VARCHAR2(240);
637 
638 		BEGIN
639 		OPEN get_po;
640 		fetch get_po into Customer_Po;
641 		CLOSE get_po;
642 		RETURN Customer_Po;
643 		EXCEPTION
644 		WHEN OTHERS THEN
645 		  RETURN NULL;
646 
647 		END Get_Cust_Po;
648 
649 FUNCTION Get_line_Cust_Po(
650     p_qte_line_id       number
651     ) RETURN  VARCHAR2
652     IS
653     Cursor get_po is SELECT payment_ref_number from aso_payments
654     WHERE
655     payment_type_code ='PO' and  quote_line_id = p_qte_line_id;
656     Customer_PO VARCHAR2(240);
657 
658     BEGIN
659     OPEN get_po;
660     fetch get_po into Customer_Po;
661     CLOSE get_po;
662     RETURN Customer_Po;
663     EXCEPTION
664    WHEN OTHERS THEN
665  RETURN NULL;
666 
667     END Get_line_Cust_Po;
668 
669 
670 
671 
672 
673 FUNCTION Get_Request_date(
674 	p_qte_header_id 	number
675 	) RETURN  DATE
676 IS
677 
678 Cursor get_req_date is SELECT request_date from aso_shipments
679 WHERE
680 quote_header_id = p_qte_header_id and quote_line_id is NULL;
681 l_request_date DATE;
682 x_request_date DATE;
683 BEGIN
684 OPEN get_req_date;
685 fetch get_req_date into l_request_date;
686 CLOSE get_req_date;
687 
688 x_request_date := FND_DATE.DATE_TO_CANONICAL(l_request_date);
689 RETURN x_request_date;
690 END Get_Request_date;
691 
692 FUNCTION Get_Line_Request_date(
693      p_qte_line_id       number
694 ) RETURN  DATE
695 IS
696 
697 Cursor get_req_date is SELECT request_date from aso_shipments
698 WHERE quote_line_id = p_qte_line_id ;
699 l_request_date DATE;
700 x_request_date DATE;
701 BEGIN
702 OPEN get_req_date;
703 fetch get_req_date into l_request_date;
704 CLOSE get_req_date;
705 
706 x_request_date := FND_DATE.DATE_TO_CANONICAL(l_request_date);
707 RETURN x_request_date;
708 END Get_line_Request_date;
709 
710 
711 FUNCTION Get_Freight_term(
712 	p_qte_header_id 	number
713 	) RETURN  DATE
714 IS
715 
716 Cursor get_frieght is SELECT FREIGHT_TERMS_CODE from aso_shipments
717 WHERE
718 quote_header_id = p_qte_header_id and quote_line_id is NULL;
719 l_freight_terms_code VARCHAR2(30);
720 BEGIN
721 OPEN get_frieght;
722 fetch get_frieght into l_freight_terms_code;
723 CLOSE get_frieght;
724 RETURN l_freight_terms_code;
725 END Get_Freight_term;
726 
727 FUNCTION Get_line_Freight_term(
728 	 p_qte_line_id    number
729 	) RETURN  VARCHAR2
730 IS
731 
732 Cursor get_frieght is SELECT FREIGHT_TERMS_CODE from aso_shipments
733 WHERE
734 quote_line_id = p_qte_line_id;
735 l_freight_terms_code VARCHAR2(30);
736 BEGIN
737 OPEN get_frieght;
738 fetch get_frieght into l_freight_terms_code;
739 CLOSE get_frieght;
740 RETURN l_freight_terms_code;
741 END Get_line_Freight_term;
742 
743 FUNCTION Get_Payment_term(
744 	p_qte_header_id 	number
745 	) RETURN  NUMBER
746 IS
747 
748 Cursor get_pmnt_term is SELECT payment_term_id from aso_payments
749 WHERE
750 quote_header_id = p_qte_header_id and quote_line_id IS null;
751 l_pmnt_term_id NUMBER;
752 BEGIN
753       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
754         aso_debug_pub.add('Inside Get_line_Payment_term',1,'N');
755 	   aso_debug_pub.add('p_qte_header_id: '||nvl(to_char(p_qte_header_id),'null'),1,'N');
756       END IF;
757 OPEN get_pmnt_term;
758 fetch get_pmnt_term into l_pmnt_term_id;
759 CLOSE get_pmnt_term;
760       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
761         aso_debug_pub.add('Inside Get_line_Payment_term'||l_pmnt_term_id,1,'N');
762       END IF;
763 RETURN l_pmnt_term_id;
764 END Get_Payment_term;
765 
766 
767 FUNCTION Get_line_Payment_term(
768 	   p_qte_line_id    number,p_qte_header_id number
769 	) RETURN  NUMBER
770 IS
771 Cursor get_hdr_pmnt_term is SELECT payment_term_id from aso_payments
772 WHERE
773 quote_header_id = p_qte_header_id and quote_line_id IS null;
774 
775 Cursor get_pmnt_term is SELECT payment_term_id from aso_payments
776 WHERE
777 quote_line_id = p_qte_line_id;
778 l_pmnt_term_id NUMBER;
779 BEGIN
780       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
781         aso_debug_pub.add('Inside Get_line_Payment_term',1,'N');
782 	   aso_debug_pub.add('p_qte_line_id: '||nvl(to_char(p_qte_line_id),'null'),1,'N');
783 	   aso_debug_pub.add('p_qte_header_id: '||nvl(to_char(p_qte_header_id),'null'),1,'N');
784       END IF;
785 OPEN get_pmnt_term;
786 fetch get_pmnt_term into l_pmnt_term_id;
787 CLOSE get_pmnt_term;
788 
789 If l_pmnt_term_id is NULL or l_pmnt_term_id = fnd_api.g_miss_num then
790 OPEN get_hdr_pmnt_term;
791 fetch get_hdr_pmnt_term into l_pmnt_term_id;
792 CLOSE get_hdr_pmnt_term;
793 end if;
794 
795       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
796         aso_debug_pub.add('Inside Get_line_Payment_term'||l_pmnt_term_id,1,'N');
797       END IF;
798 RETURN l_pmnt_term_id;
799 END Get_line_Payment_term;
800 
801 FUNCTION Get_freight_terms_code(p_qte_line_id NUMBER)
802 RETURN VARCHAR2
803 IS
804      CURSOR C_line_freight_terms_code IS
805      SELECT qs.freight_terms_code
806      FROM aso_shipments qs
807      WHERE  qs.quote_line_id = p_qte_line_id
808      and qs.freight_terms_code is not null;
809 
810      CURSOR C_hdr_freight_terms_code IS
811      SELECT qs.freight_terms_code
812      FROM aso_shipments qs, aso_quote_lines_all ql
813      WHERE qs.quote_header_id = ql.quote_header_id
814      and ql.quote_line_id = p_qte_line_id
815      and qs.quote_line_id IS NULL;
816 
817 x_freight_terms_code VARCHAR2(30);
818 
819 BEGIN
820       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
821         aso_debug_pub.add('Get_freight_terms_code -  Begin  ',1,'Y');
822         aso_debug_pub.add('p_qte_line_id: '||nvl(to_char(p_qte_line_id),'null'),1,'N');
823       END IF;
824 
825       OPEN C_line_freight_terms_code;
826       FETCH C_line_freight_terms_code INTO x_freight_terms_code;
827 
828       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
829         aso_debug_pub.add('Line Level x_freight_terms_code: '||nvl(x_freight_terms_code,'null'),1,'N');
830       END IF;
831 
832       IF (C_line_freight_terms_code%NOTFOUND) THEN
833 
834 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
835 	      aso_debug_pub.add('Inside first IF statement ',1,'N');
836 	    END IF;
837 
838 	    CLOSE C_line_freight_terms_code;
839 
840          OPEN C_hdr_freight_terms_code;
841          FETCH C_hdr_freight_terms_code INTO x_freight_terms_code;
842 
843          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
844            aso_debug_pub.add('Header Level x_freight_terms_code: '||nvl(x_freight_terms_code,'null'),1,'N');
845          END IF;
846 
847 	       IF (C_hdr_freight_terms_code%FOUND AND (x_freight_terms_code <> FND_API.G_MISS_CHAR)) THEN
848              CLOSE C_hdr_freight_terms_code;
849 		      return x_freight_terms_code;
850          ELSE
851 		      CLOSE C_hdr_freight_terms_code;
852 		      return null;
853          END IF;
854 
855       ELSIF x_freight_terms_code = FND_API.G_MISS_CHAR THEN
856          CLOSE C_line_freight_terms_code;
857 	    return null;
858       END IF;
859 
860       CLOSE C_line_freight_terms_code;
861       return x_freight_terms_code;
862 
863 END Get_freight_terms_code ;
864 
865 
866 FUNCTION Get_shipping_method_code(p_qte_line_id NUMBER)
867 RETURN VARCHAR2
868 IS
869      CURSOR C_line_ship_method_code IS
870      SELECT qs.ship_method_code
871      FROM aso_shipments qs
872      WHERE  qs.quote_line_id = p_qte_line_id
873      and qs.ship_method_code is not null;
874 
875      CURSOR C_hdr_ship_method_code IS
876      SELECT qs.ship_method_code
877      FROM aso_shipments qs, aso_quote_lines_all ql
878      WHERE qs.quote_header_id = ql.quote_header_id
879      and ql.quote_line_id = p_qte_line_id
880      and qs.quote_line_id IS NULL;
881 
882 x_ship_method_code VARCHAR2(30);
883 
884 BEGIN
885 
886       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
887         aso_debug_pub.add('Get_shipping_method_code -  Begin  ',1,'Y');
888 	   aso_debug_pub.add('p_qte_line_id: '||nvl(to_char(p_qte_line_id),'null'),1,'N');
889       END IF;
890 
891       OPEN C_line_ship_method_code;
892       FETCH C_line_ship_method_code INTO x_ship_method_code;
893 
894       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
895         aso_debug_pub.add('Line Level x_ship_method_code: '||nvl(x_ship_method_code,'null'),1,'N');
896       END IF;
897 
898       IF (C_line_ship_method_code%NOTFOUND) THEN
899 
900          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
901            aso_debug_pub.add('Inside first IF statement ',1,'N');
902          END IF;
903 
904 	    CLOSE C_line_ship_method_code;
905          OPEN C_hdr_ship_method_code;
906          FETCH C_hdr_ship_method_code INTO x_ship_method_code;
907 
908          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
909            aso_debug_pub.add('Header Level x_ship_method_code: '||nvl(x_ship_method_code,'null'),1,'N');
910          END IF;
911 
912 	    IF (C_hdr_ship_method_code%FOUND AND (x_ship_method_code <> FND_API.G_MISS_CHAR)) THEN
913              CLOSE C_hdr_ship_method_code;
914 		   return x_ship_method_code;
915          ELSE
916 		   CLOSE C_hdr_ship_method_code;
917 		   return null;
918          END IF;
919       ELSIF x_ship_method_code = FND_API.G_MISS_CHAR THEN
920          CLOSE C_line_ship_method_code;
921 	    return null;
922       END IF;
923       CLOSE C_line_ship_method_code;
924       return x_ship_method_code;
925 	 EXCEPTION
926 			 WHEN OTHERS THEN
927 					   RETURN NULL;
928 
929 
930 END Get_shipping_method_code ;
931 
932 
933 FUNCTION Get_top_model_item_id(p_qte_line_id NUMBER)
934 RETURN NUMBER
935 IS
936 
937 
938      x_top_model_line_id NUMBER;
939      lv_quote_line_id NUMBER;
940      x_inventory_item_id NUMBER;
941 
942      CURSOR C_top_model_line_id(l_quote_line_id NUMBER) IS
943      select  quote_line_id
944      from aso_line_relationships  aso_rel
945      where aso_rel.related_quote_line_id = l_quote_line_id;
946 
947      CURSOR C_item_id IS
948      select inventory_item_id
949      from aso_quote_lines_all
950      where quote_line_id = x_top_model_line_id;
951 
952 
953 BEGIN
954       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
955         aso_debug_pub.add('Get_top_model_item_id -  Begin  ',1,'Y');
956 	   aso_debug_pub.add('Get_top_model_item_id G_LINE_REC.MODEL_ID  '||ASO_PRICING_INT.G_LINE_REC.MODEL_ID,1,'Y');
957       END IF;
958 	 /* iStore Cataloge is directly setting G_LINE_REC.model_id,Hence we need to return the same value*/
959 	 IF ASO_PRICING_INT.G_LINE_REC.MODEL_ID IS NOT NULL AND ASO_PRICING_INT.G_LINE_REC.MODEL_ID <> FND_API.G_MISS_NUM THEN
960 	    Return ASO_PRICING_INT.G_LINE_REC.MODEL_ID;
961       END IF;
962 	 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
963 	   aso_debug_pub.add('p_qte_line_id: '||nvl(to_char(p_qte_line_id),'null'),1,'N');
964 	 END IF;
965 
966 	 x_top_model_line_id := p_qte_line_id;
967 
968       OPEN C_top_model_line_id(x_top_model_line_id);
969       FETCH C_top_model_line_id INTO lv_quote_line_id;
970 
971       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
972         aso_debug_pub.add('Before loop - lv_quote_line_id: '||nvl(to_char(lv_quote_line_id),'null'),1,'N');
973       END IF;
974 
975       IF (C_top_model_line_id%NOTFOUND) THEN
976           CLOSE C_top_model_line_id;
977 		return null;
978       END IF;
979 	 x_top_model_line_id := lv_quote_line_id;
980       CLOSE C_top_model_line_id;
981 
982       Loop
983           OPEN C_top_model_line_id(x_top_model_line_id);
984           FETCH C_top_model_line_id INTO lv_quote_line_id;
985 
986           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
987             aso_debug_pub.add('Inside Loop - lv_quote_line_id: '||nvl(to_char(lv_quote_line_id),'null'),1,'N');
988           END IF;
989 
990           IF (C_top_model_line_id%NOTFOUND) THEN
991              CLOSE C_top_model_line_id;
992              EXIT;
993           END IF;
994 
995           CLOSE C_top_model_line_id;
996           x_top_model_line_id := lv_quote_line_id;
997       End Loop;
998 
999       open C_item_id;
1000       fetch C_item_id INTO x_inventory_item_id;
1001 	 IF C_item_id%FOUND AND x_inventory_item_id <> FND_API.G_MISS_NUM THEN
1002           return x_inventory_item_id;
1003       ELSE
1004 		return null;
1005       END IF;
1006 
1007        EXCEPTION
1008 			  WHEN OTHERS THEN
1009 					    RETURN NULL;
1010 
1011 END Get_top_model_item_id ;
1012 
1013 FUNCTION Get_header_ship_flag(p_qte_header_id NUMBER)
1014 RETURN VARCHAR2
1015 IS
1016 x_shippable_item_flag VARCHAR2(1);
1017 --x_count number;
1018 x_count varchar2(1);
1019 
1020 CURSOR C_Is_Item_Shippable IS
1021 SELECT 'x'
1022 FROM  aso_quote_lines_all l
1023 WHERE l.quote_header_id = p_qte_header_id
1024 AND EXISTS ( SELECT null
1025              FROM mtl_system_items_b i
1026              WHERE l.inventory_item_id = i.inventory_item_id
1027              AND l.organization_id = i.organization_id
1028              AND i.shippable_item_flag = 'Y' );
1029 
1030 BEGIN
1031       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1032         aso_debug_pub.add('Inside Get_header_ship_flag',1,'N');
1033 	   aso_debug_pub.add('p_qte_header_id: '||nvl(to_char(p_qte_header_id),'null'),1,'N');
1034       END IF;
1035 
1036 --SELECT count(*)
1037 -- INTO   x_count
1038 --FROM  aso_i_items_v i, aso_quote_lines_all l,
1039 --aso_quote_headers_all h
1040 --WHERE l.quote_header_id=h.quote_header_id
1041 --and  h.quote_header_id = p_qte_header_id
1042 --and l.inventory_item_id = i.inventory_item_id
1043 --and l.organization_id = i.organization_id
1044 --and i.shippable_item_flag = 'Y';
1045 
1046 /****IF x_count > 0 THEN x_shippable_item_flag:='Y';
1047 END IF;
1048 IF x_count = 0 THEN x_shippable_item_flag:='N';
1049 END IF;
1050 *******/
1051 
1052 For C_Is_Item_Shippable_Rec in C_Is_Item_Shippable loop
1053     If C_Is_Item_Shippable%found then
1054        x_shippable_item_flag:='Y';
1055 	  exit;
1056     else
1057        x_shippable_item_flag:='N';
1058     end if;
1059 end loop;
1060 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1061         aso_debug_pub.add('x_shippable_item_flag: '||x_shippable_item_flag,1,'N');
1062 END IF;
1063 
1064    RETURN x_shippable_item_flag;
1065    EXCEPTION
1066 		   WHEN OTHERS THEN
1067 					RETURN NULL;
1068 
1069 --						EXCEPTION
1070 --  WHEN no_data_found THEN
1071  -- x_shippable_item_flag := null;
1072       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1073         aso_debug_pub.add('Inside Get_header_ship_flag '||x_shippable_item_flag,1,'N');
1074       END IF;
1075 
1076 END get_header_ship_flag;
1077 
1078 FUNCTION Get_Parent_List_price (p_quote_line_id NUMBER)
1079 RETURN NUMBER
1080 IS
1081 x_list_price  NUMBER :=NULL;
1082 l_SERVICE_REF_TYPE_CODE varchar2(20);
1083 l_service_ref_line_id NUMBER;
1084 
1085 Cursor c_get (l_quote_line_id NUMBER) IS
1086 SELECT SERVICE_REF_TYPE_CODE,service_ref_line_id
1087 FROM    aso_quote_line_details qld
1088 WHERE   qld.quote_line_id = l_quote_line_id ;
1089 
1090 BEGIN
1091       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1092         aso_debug_pub.add('Inside Get_Parent_List_price',1,'N');
1093 	   aso_debug_pub.add('p_qte_line_id: '||nvl(to_char(p_quote_line_id),'null'),1,'N');
1094       END IF;
1095  OPEN c_get(p_quote_line_id );
1096  FETCH c_get INTO l_SERVICE_REF_TYPE_CODE,l_service_ref_line_id;
1097 
1098 	  IF l_SERVICE_REF_TYPE_CODE = 'QUOTE' Then
1099 			 select line_list_price
1100 			   INTO    x_list_price
1101 			   from   aso_quote_lines_all ql
1102 			  where  ql.quote_line_id = l_service_ref_line_id;
1103 	   Elsif l_SERVICE_REF_TYPE_CODE = 'ORDER' then
1104 		    select unit_list_price
1105 			INTO    x_list_price
1106      	    from   oe_order_lines_All
1107 		    where  line_id = l_service_ref_line_id;
1108      END IF;
1109 Close c_get;
1110       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1111         aso_debug_pub.add('Inside Get_Parent_List_price'||x_list_price,1,'N');
1112       END IF;
1113 return x_list_price;
1114 EXCEPTION
1115 		WHEN OTHERS THEN
1116 				  RETURN NULL;
1117 
1118 END Get_Parent_List_price;
1119 
1120 
1121 FUNCTION Get_Minisite_Id RETURN NUMBER
1122 IS
1123 x_minisite_id NUMBER := NULL;
1124 BEGIN
1125       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1126         aso_debug_pub.add('Start of Get_Minisite_Id...',1,'N');
1127 	aso_debug_pub.add('G_HEADER_REC.minisite_id: '||nvl(to_char(ASO_PRICING_INT.G_HEADER_REC.minisite_id),'null'),1,'N');
1128 	aso_debug_pub.add('G_LINE_REC.minisite_id: '||nvl(to_char(ASO_PRICING_INT.G_LINE_REC.minisite_id),'null'),1,'N');
1129       END IF;
1130 	   IF ASO_PRICING_INT.G_LINE_REC.MINISITE_ID IS NOT NULL AND
1131 	      ASO_PRICING_INT.G_LINE_REC.MINISITE_ID <> FND_API.G_MISS_NUM
1132            THEN
1133  		x_minisite_id := ASO_PRICING_INT.G_LINE_REC.MINISITE_ID;
1134 	   ELSIF ASO_PRICING_INT.G_HEADER_REC.MINISITE_ID IS NOT NULL AND
1135 		 ASO_PRICING_INT.G_HEADER_REC.MINISITE_ID <> FND_API.G_MISS_NUM
1136            THEN
1137 		x_minisite_id := ASO_PRICING_INT.G_HEADER_REC.MINISITE_ID;
1138 	   END IF;
1139       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1140         aso_debug_pub.add('After Get_Minisite_Id...x_minisite_id :'||x_minisite_id,1,'N');
1141       END IF;
1142  RETURN x_minisite_id;
1143 EXCEPTION
1144 	WHEN OTHERS THEN
1145             RETURN NULL;
1146 END Get_Minisite_Id;
1147 
1148 End ASO_SOURCING_PVT;