DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_XPRT_QUOTE_INT_PVT

Source


1 PACKAGE BODY OKC_XPRT_QUOTE_INT_PVT AS
2 /* $Header: OKCVXQUOTEINTB.pls 120.11 2006/02/15 01:42:28 arsundar noship $ */
3 
4   ------------------------------------------------------------------------------
5   -- GLOBAL CONSTANTS
6   ------------------------------------------------------------------------------
7 
8 
9   G_FALSE                       CONSTANT VARCHAR2(1)    := FND_API.G_FALSE;
10   G_TRUE                        CONSTANT VARCHAR2(1)    := FND_API.G_TRUE;
11 
12   G_RET_STS_SUCCESS             CONSTANT VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
13   G_RET_STS_ERROR               CONSTANT VARCHAR2(1)    := FND_API.G_RET_STS_ERROR;
14   G_RET_STS_UNEXP_ERROR         CONSTANT VARCHAR2(1)    := FND_API.G_RET_STS_UNEXP_ERROR;
15 
16   G_PKG_NAME                    CONSTANT VARCHAR2(30)   := 'OKC_XPRT_QUOTE_INT_PVT';
17   G_APP_NAME                    CONSTANT VARCHAR2(30)   := OKC_API.G_APP_NAME;
18   G_STMT_LEVEL                  CONSTANT NUMBER         := FND_LOG.LEVEL_STATEMENT;
19   G_MODULE_NAME                 CONSTANT VARCHAR2(250)  := 'OKC.PLSQL.'||G_PKG_NAME||'.';
20 
21   G_ITEM_CODE                   CONSTANT VARCHAR2(30)   := 'OKC$S_ITEM';
22   G_ITEM_CATEGORY_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_ITEM_CATEGORY';
23   G_PA_NAME_CODE                CONSTANT VARCHAR2(30)   := 'OKC$S_PA_NAME';
24   G_PA_NAME_EXIST_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_PRC_AGR_EXIST';
25   G_CUSTOMER_NAME_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CUSTOMER_NAME';
26   G_CURRENCY_CODE               CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_CODE';
27   G_FREIGHT_TERMS_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_FREIGHT_TERMS';
28   G_SHIPPING_METHOD_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_SHIPPING_METHOD';
29   G_PAYMENT_TERM_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_PAYMENT_TERM';
30   G_BILLTO_COUNTRY_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_BILLTO_COUNTRY';
31   G_SHIPTO_COUNTRY_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_SHIPTO_COUNTRY';
32   G_SOLDTO_COUNTRY_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_SOLDTO_COUNTRY';
33   G_CUST_PO_EXIST_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_PO_EXIST';
34   G_PRICE_LIST_CODE             CONSTANT VARCHAR2(30)   := 'OKC$S_PRICE_LIST';
35   G_TAX_HANDL_CODE              CONSTANT VARCHAR2(30)   := 'OKC$S_TAX_HANDL';
36   G_ORDER_TYPE_CODE             CONSTANT VARCHAR2(30)   := 'OKC$S_ORDER_TYPE';
37   G_FOB_CODE                    CONSTANT VARCHAR2(30)   := 'OKC$S_FOB';
38   G_PAYMENT_TYPE_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_PAYMENT_TYPE';
39   G_SALES_CHANNEL_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_SALES_CHANNEL';
40   G_TOTAL_CODE                  CONSTANT VARCHAR2(30)   := 'OKC$S_TOTAL';
41   G_TOTAL_ADJUST_AMT_CODE       CONSTANT VARCHAR2(30)   := 'OKC$S_ADJUST_AMOUNT';
42   G_TOTAL_ADJUST_PCT_CODE       CONSTANT VARCHAR2(30)   := 'OKC$S_ADJUST_PERCENT';
43   G_BILLTO_CUST_NAME_CODE       CONSTANT VARCHAR2(30)   := 'OKC$S_BILLTO_CUST_NAME';
44   G_SHIPTO_CUST_NAME_CODE       CONSTANT VARCHAR2(30)   := 'OKC$S_SHIPTO_CUST_NAME';
45   G_SALES_DOC_TYPE_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_SALES_DOC_TYPE';
46   G_CUST_CATEGORY_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CAT';
47   G_CUST_CLASS_CODE             CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CLASS';
48   G_CUST_PROF_CLASS_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_PROF_CLASS';
49   G_CUST_CRDT_RATE_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CRDT_RATE';
50   G_CUST_CRDT_CLASS_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CRDT_CLASS';
51   G_CUST_RISK_CODE              CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_RISK_CODE';
52 
53   G_PA_NUMBER_CODE                CONSTANT VARCHAR2(30)   := 'OKC$S_PA_NUMBER';
54   G_QUOTE_NUMBER_CODE             CONSTANT VARCHAR2(30)   := 'OKC$S_QUOTE_NUMBER';
55   G_CUSTOMER_NUMBER_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CUSTOMER_NUMBER';
56   G_CUST_PO_NUMBER_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_PO_NUMBER';
57   G_VERSION_NUMBER_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_VERSION_NUMBER';
58   G_CUST_CONTACT_NAME_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CONTACT_NAME';
59   G_SALESREP_NAME_CODE            CONSTANT VARCHAR2(30)   := 'OKC$S_SALESREP_NAME';
60   G_CURRENCY_NAME_CODE            CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_NAME';
61   G_CURRENCY_SYMBOL_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_SYMBOL';
62   G_SUPPLIER_NAME_CODE            CONSTANT VARCHAR2(30)   := 'OKC$S_SUPPLIER_NAME';
63 
64   G_SHIPMENT_PRIORITY_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_SHIPMENT_PRIORITY';
65   G_SITE_ID_CODE                  CONSTANT VARCHAR2(30)   := 'OKC$S_SITE_ID';
66 
67   -- Added for Agreement type support
68   G_PA_TYPE_CODE                  CONSTANT VARCHAR2(30)   := 'OKC$S_PA_TYPE';
69 
70   -- Added for line level variables
71   G_LINE_PAYMENT_TERM_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_LINE_PAYMENT_TERM';
72   G_LINE_FOB_CODE                 CONSTANT VARCHAR2(30)   := 'OKC$S_LINE_FOB';
73 
74 
75 PROCEDURE Get_clause_Variable_Values (
76     p_api_version               IN            NUMBER,
77     p_init_msg_list             IN            VARCHAR2,
78     x_return_status             OUT NOCOPY    VARCHAR2,
79     x_msg_count                 OUT NOCOPY    NUMBER,
80     x_msg_data                  OUT NOCOPY    VARCHAR2,
81     p_doc_id                    IN            NUMBER,
82     p_sys_var_value_tbl         IN OUT NOCOPY OKC_TERMS_UTIL_GRP.sys_var_value_tbl_type )
83 IS
84 
85 l_api_name          VARCHAR2(30) := 'get_clause_variable_values';
86 l_package_procedure VARCHAR2(60);
87 l_api_version 		CONSTANT NUMBER := 1;
88 l_debug             Boolean;
89 l_party_id		HZ_PARTIES.party_id%type;
90 l_module            VARCHAR2(250)   := G_MODULE_NAME||l_api_name;
91 l_expert_yes		FND_FLEX_VALUES.FLEX_VALUE_ID%type;
92 l_expert_no		FND_FLEX_VALUES.FLEX_VALUE_ID%type;
93 
94 --
95 -- Cursor to fetch the flex value id for Yes and No from the OKC_XPRT_YES_NO value set
96 --
97 CURSOR c_get_expert_yes_no(p_yes_no VARCHAR2) IS
98 select a.FLEX_VALUE_ID
99 from fnd_flex_values a, fnd_flex_value_sets b
100 where b.flex_value_set_name = 'OKC_XPRT_YES_NO'
101 and a.FLEX_VALUE_SET_ID = b.FLEX_VALUE_SET_ID
102 and a.FLEX_VALUE = p_yes_no;
103 
104 
105 --
106 -- Cursor to fetch the header attributes for the quote
107 --
108 CURSOR c_get_quote_header_variables IS
109 SELECT
110       quote.cust_account_id,
111       quote.currency_code,
112       quote.contract_id price_agreement_id,
113 --      decode(nvl(to_char(quote.contract_id),'X'),'X','N','Y') price_agreement_exist,
114       decode(nvl(to_char(quote.contract_id),'X'),'X',l_expert_no,l_expert_yes) price_agreement_exist,
115       quote.total_adjusted_percent,
116       quote.total_adjusted_amount,
117       quote.total_quote_price,
118       quote.order_type_id,
119       quote.party_id,
120       quote.invoice_to_cust_account_id,
121       quote.invoice_to_party_site_id,
122       quote.sold_to_party_site_id,
123       quote.price_list_id,
124       quote.sales_channel_code,
125 --      decode(nvl(payments.cust_po_number,'X'),'X','N','Y') cust_po_num_exist,
126       decode(nvl(payments.cust_po_number,'X'),'X',l_expert_no,l_expert_yes) cust_po_num_exist,
127       payments.payment_term_id,
128       payments.payment_type_code,
129       nvl(tax.tax_exempt_flag,'S') tax_exempt_flag,
130       shipments.freight_terms_code,
131       shipments.ship_method_code,
132       shipments.fob_code,
133       shipments.ship_to_cust_account_id,
134       shipments.ship_to_party_site_id,
135 -- XY
136 	 quote.quote_number,
137 --	 quote.cust_party_id,
138 	 quote.quote_version,
139 	 quote.resource_id,
140 	 quote.org_id,
141 	 payments.cust_po_number,
142 	 shipments.shipment_priority_code,
143 	 quote.minisite_id
144 -- XY
145 FROM
146       aso_payments payments,
147       aso_tax_details tax,
148       aso_shipments shipments,
149       aso_quote_headers_all quote
150 WHERE
151       quote.quote_header_id = payments.quote_header_id(+)
152  AND  payments.quote_line_id(+) IS NULL
153  AND  quote.quote_header_id = tax.quote_header_id(+)
154  AND  tax.quote_line_id(+) IS NULL
155  AND  quote.quote_header_id = shipments.quote_header_id(+)
156  AND  shipments.quote_line_id(+) IS NULL
157  AND  quote.quote_header_id = p_doc_id;
158 
159 
160 --
161 -- Cursor to fetch the customer information
162 --
163 
164 CURSOR c_get_cust_info_var(p_sold_to_org_id NUMBER) IS
165 SELECT
166      hzp.category_code,
167 	hzp.party_id,
168 	hzc.customer_class_code,
169 	hzcp.profile_class_id,
170 	hzcp.credit_rating,
171 	hzcp.credit_classification,
172 	hzcp.risk_code
173 FROM
174      hz_customer_profiles hzcp,
175      hz_cust_accounts hzc,
176      hz_parties hzp
177 WHERE
178      hzc.cust_account_id = hzcp.cust_account_id
179 AND  hzcp.site_use_id is null
180 AND  hzc.party_id = hzcp.party_id
181 AND  hzc.party_id = hzp.party_id
182 AND  hzc.cust_account_id = p_sold_to_org_id;
183 
184 
185 --
186 -- Cursor to get the bill to, ship to and sold to countries
187 -- for a Quote
188 --
189 
190 CURSOR c_get_country_quote(p_party_site_id NUMBER) IS
191 SELECT
192      loc.country
193 FROM
194      hz_locations loc,
195      hz_party_sites ps
196 WHERE
197      ps.location_id = loc.location_id
198 AND  ps.party_site_id = p_party_site_id;
199 
200  --
201  -- AK: Cursor to get Agreement type for
202  -- Quoted Order and Sales Order
203  --
204 
205  CURSOR c_get_pa_type(p_agreement_id NUMBER) IS
206  SELECT
207      pc.agreement_type_code
208  FROM
209      --oe_pricing_contracts_v pc -- Commented for Perf Bug 5027295
210      oe_agreements_b pc          -- Added for Perf Bug 5027295
211  WHERE
212      pc.agreement_id = p_agreement_id;
213 
214 l_quote_header_variables  c_get_quote_header_variables%ROWTYPE;
215 l_cust_info_variables	 c_get_cust_info_var%ROWTYPE;
216 l_customer_category		 hz_parties.category_code%TYPE;
217 
218 
219 BEGIN
220 
221    x_return_status := FND_API.G_RET_STS_SUCCESS;
222 
223    l_package_procedure := G_PKG_NAME || '.' || l_api_name;
224 
225    IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
226      l_debug := true;
227    END IF;
228 
229    IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
230        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'10: Entered ' || l_package_procedure);
231        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'20: p_doc_id: ' || p_doc_id);
232    END IF;
233 
234    --
235    -- Standard call to check for call compatibility.
236    --
237    IF NOT FND_API.Compatible_API_Call (l_api_version,
238        	       	    	    	 	p_api_version,
239         	    	    	    			l_api_name,
240     		    	    	    			G_PKG_NAME) THEN
241    	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
242    END IF;
243 
244    --
245    -- Initialize message list if p_init_msg_list is set to TRUE.
246    --
247    IF FND_API.to_Boolean( p_init_msg_list ) THEN
248   	FND_MSG_PUB.initialize;
249    END IF;
250 
251 
252    OPEN c_get_expert_yes_no('Yes');
253    FETCH c_get_expert_yes_no INTO l_expert_yes;
254    CLOSE c_get_expert_yes_no;
255 
256    OPEN c_get_expert_yes_no('No');
257    FETCH c_get_expert_yes_no INTO l_expert_no;
258    CLOSE c_get_expert_yes_no;
259 
260   IF p_sys_var_value_tbl.FIRST IS NOT NULL THEN
261 
262      OPEN c_get_quote_header_variables;
263      FETCH c_get_quote_header_variables INTO l_quote_header_variables;
264      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
265         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'30:c_get_quote_header_variables%ROWCOUNT:  ' || c_get_quote_header_variables%ROWCOUNT);
266         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'40:Values from l_quote_header_variables are:');
267 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
268 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
269 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'50: cust_account_id =        '||l_quote_header_variables.cust_account_id );
270 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'60: currency_code =          '||l_quote_header_variables.currency_code );
271 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'70: price_agreement_id =     '||l_quote_header_variables.price_agreement_id );
272 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'80: price_agreement_exist =  '||l_quote_header_variables.price_agreement_exist );
273 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'90: total_adjusted_percent = '||l_quote_header_variables.total_adjusted_percent );
274 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'100: total_adjusted_amount = '||l_quote_header_variables.total_adjusted_amount );
275 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'110: total_quote_price =     '||l_quote_header_variables.total_quote_price );
276 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'120: order_type_id =         '||l_quote_header_variables.order_type_id );
277 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'130: party_id =              '||l_quote_header_variables.party_id );
278 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'140: invoice_to_cust_account_id = '||l_quote_header_variables.invoice_to_cust_account_id );
279 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'150: invoice_to_party_site_id = '||l_quote_header_variables.invoice_to_party_site_id );
280 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'160: sold_to_party_site_id = '||l_quote_header_variables.sold_to_party_site_id );
281 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'170: price_list_id =         '||l_quote_header_variables.price_list_id );
282 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'180: sales_channel_code =    '||l_quote_header_variables.sales_channel_code );
283 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'190: cust_po_num_exist =     '||l_quote_header_variables.cust_po_num_exist );
284 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'200: payment_term_id =       '||l_quote_header_variables.payment_term_id );
285 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'210: payment_type_code =     '||l_quote_header_variables.payment_type_code );
286 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'220: tax_exempt_flag =       '||l_quote_header_variables.tax_exempt_flag );
287 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'230: freight_terms_code =    '||l_quote_header_variables.freight_terms_code );
288 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'240: ship_method_code =      '||l_quote_header_variables.ship_method_code );
289 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'250: fob_code =              '||l_quote_header_variables.fob_code );
290 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'260: ship_to_cust_account_id = '||l_quote_header_variables.ship_to_cust_account_id );
291 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'270: ship_to_party_site_id = '||l_quote_header_variables.ship_to_party_site_id );
292 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'272: quote_number =          '||l_quote_header_variables.quote_number );
293 --	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'273: cust_party_id =         '||l_quote_header_variables.cust_party_id );
294 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'274: quote_version =         '||l_quote_header_variables.quote_version );
295 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'275: resource_id, =          '||l_quote_header_variables.resource_id );
296 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'276: org_id =                '||l_quote_header_variables.org_id );
297 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'277: cust_po_number =        '||l_quote_header_variables.cust_po_number );
298 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'278: shipment_priority_code =        '||l_quote_header_variables.shipment_priority_code );
299 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'279: minisite_id =        '||l_quote_header_variables.minisite_id );
300 
301 
302 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
303 	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
304 
305      END IF;
306      CLOSE c_get_quote_header_variables;
307 
308   --  Get the customer info
309 
310      IF l_quote_header_variables.cust_account_id IS NOT NULL THEN
311     	   OPEN c_get_cust_info_var(l_quote_header_variables.cust_account_id);
312     	   FETCH c_get_cust_info_var INTO l_cust_info_variables;
313     	   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
314        	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'280: c_get_cust_info_var%ROWCOUNT:  ' || c_get_cust_info_var%ROWCOUNT);
315              fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'290: Values from l_cust_info_variables are:');
316 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
317 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
318 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'300: category_code =         '||l_cust_info_variables.category_code );
319 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'310: customer_class_code =   '||l_cust_info_variables.customer_class_code );
320 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'320: profile_class_id =      '||l_cust_info_variables.profile_class_id );
321 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'330: credit_rating =         '||l_cust_info_variables.credit_rating );
322 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'340: credit_classification = '||l_cust_info_variables.credit_classification );
323 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'350: risk_code =             '||l_cust_info_variables.risk_code );
324 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'362: party_id =              '||l_cust_info_variables.party_id );
325 	        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
326 
327     	   END IF;
328 	      l_party_id := l_cust_info_variables.party_id;
329     	   CLOSE c_get_cust_info_var;
330      ELSE   -- Customer Category is the only variable considered for prospects
331         BEGIN
332 	      SELECT category_code
333 		 INTO l_customer_category
334 		 FROM hz_parties
335 		 WHERE party_id = l_quote_header_variables.party_id;
336     	         IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
337 	             fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'360: category_code =      '||l_customer_category );
338 	        	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
339 	        	   fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
340     	         END IF;
341 	   EXCEPTION
342 	      WHEN NO_DATA_FOUND THEN
343 		   NULL;
344     	        IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
345 	           fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'370: Customer Category does not exist' );
346 	        	 fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
347 	        	 fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
348     	        END IF;
349 	   END;
350      END IF;
351 
352      FOR i IN p_sys_var_value_tbl.FIRST..p_sys_var_value_tbl.LAST LOOP
353 
354         IF p_sys_var_value_tbl(i).variable_code = G_CUST_CATEGORY_CODE     THEN
355            IF l_quote_header_variables.cust_account_id IS NOT NULL THEN
356                p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.category_code;
357 		 ELSE
358 		    p_sys_var_value_tbl(i).variable_value_id := l_customer_category;
359 		 END IF;
360 	   END IF;
361 
362         IF p_sys_var_value_tbl(i).variable_code = G_CUST_CLASS_CODE
363 		 AND l_quote_header_variables.cust_account_id IS NOT NULL THEN
364            p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.customer_class_code;
365 
366 	   ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_PROF_CLASS_CODE
367 		 AND l_quote_header_variables.cust_account_id IS NOT NULL THEN
368            p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.profile_class_id;
369 
370 	   ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_CRDT_RATE_CODE
371 		 AND l_quote_header_variables.cust_account_id IS NOT NULL THEN
372            p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.credit_rating;
373 
374 	   ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_CRDT_CLASS_CODE
375 		 AND l_quote_header_variables.cust_account_id IS NOT NULL THEN
376            p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.credit_classification;
377 
378 	   ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_RISK_CODE
379 		 AND l_quote_header_variables.cust_account_id IS NOT NULL THEN
380            p_sys_var_value_tbl(i).variable_value_id := l_cust_info_variables.risk_code;
381 	   END IF;
382 
383 
384         IF p_sys_var_value_tbl(i).variable_code = G_SOLDTO_COUNTRY_CODE THEN
385            IF l_quote_header_variables.sold_to_party_site_id IS NOT NULL THEN
386 		    OPEN c_get_country_quote(l_quote_header_variables.sold_to_party_site_id);
387 		    FETCH c_get_country_quote INTO p_sys_var_value_tbl(i).variable_value_id;
388 		    CLOSE c_get_country_quote;
389     	         IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
390 	            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'380: Sold to country = '||p_sys_var_value_tbl(i).variable_value_id);
391     	         END IF;
392 	      END IF;
393 
394         ELSIF p_sys_var_value_tbl(i).variable_code = G_SHIPTO_COUNTRY_CODE THEN
395            IF l_quote_header_variables.ship_to_party_site_id IS NOT NULL THEN
396               OPEN c_get_country_quote(l_quote_header_variables.ship_to_party_site_id);
397               FETCH c_get_country_quote INTO p_sys_var_value_tbl(i).variable_value_id;
398               CLOSE c_get_country_quote;
399     	         IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
400 	            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'390: Ship to country = '||p_sys_var_value_tbl(i).variable_value_id);
401     	         END IF;
402 	      END IF;
403 
404         ELSIF p_sys_var_value_tbl(i).variable_code = G_BILLTO_COUNTRY_CODE THEN
405            IF l_quote_header_variables.invoice_to_party_site_id IS NOT NULL THEN
406               OPEN c_get_country_quote(l_quote_header_variables.invoice_to_party_site_id);
407               FETCH c_get_country_quote INTO p_sys_var_value_tbl(i).variable_value_id;
408               CLOSE c_get_country_quote;
409     	         IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
410 	            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'400: Invoice to country = '||p_sys_var_value_tbl(i).variable_value_id);
411     	         END IF;
412 	      END IF;
413 
414         ELSIF p_sys_var_value_tbl(i).variable_code = G_CUSTOMER_NAME_CODE     THEN
415            p_sys_var_value_tbl(i).variable_value_id := nvl(l_quote_header_variables.cust_account_id, l_party_id);
416 
417         ELSIF p_sys_var_value_tbl(i).variable_code = G_BILLTO_CUST_NAME_CODE    THEN
418            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.invoice_to_cust_account_id;
419 
420         ELSIF p_sys_var_value_tbl(i).variable_code = G_SHIPTO_CUST_NAME_CODE      THEN
421            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.ship_to_cust_account_id;
422 
423    	   ELSIF p_sys_var_value_tbl(i).variable_code = G_SALES_DOC_TYPE_CODE     THEN
424            p_sys_var_value_tbl(i).variable_value_id := G_QUOTE_DOC_TYPE;
425 
426     	   ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_PO_EXIST_CODE   THEN
427            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.cust_po_num_exist;
428 
429     	   ELSIF p_sys_var_value_tbl(i).variable_code = G_PRICE_LIST_CODE   THEN
430            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.price_list_id;
431 
432         ELSIF p_sys_var_value_tbl(i).variable_code = G_CURRENCY_CODE    THEN
433            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.currency_code;
434 
435         ELSIF p_sys_var_value_tbl(i).variable_code = G_FREIGHT_TERMS_CODE   THEN
436            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.freight_terms_code;
437 
438         ELSIF p_sys_var_value_tbl(i).variable_code = G_SHIPPING_METHOD_CODE   THEN
439            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.ship_method_code;
440 
441         ELSIF p_sys_var_value_tbl(i).variable_code = G_PAYMENT_TERM_CODE   THEN
442            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.payment_term_id;
443 
444         ELSIF p_sys_var_value_tbl(i).variable_code = G_PA_NAME_CODE   THEN
445            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.price_agreement_id;
446 
447 --AK
448         ELSIF p_sys_var_value_tbl(i).variable_code = G_PA_TYPE_CODE     THEN
449            BEGIN
450 	      IF l_quote_header_variables.price_agreement_id IS NOT NULL THEN
451 	         OPEN c_get_pa_type(l_quote_header_variables.price_agreement_id);
452 	         FETCH c_get_pa_type INTO p_sys_var_value_tbl(i).variable_value_id;
453 	         CLOSE c_get_pa_type;
454 	      END IF;
455 	   END;
456 --AK
457 
458         ELSIF p_sys_var_value_tbl(i).variable_code = G_PA_NAME_EXIST_CODE   THEN
459            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.price_agreement_exist;
460 
461         ELSIF p_sys_var_value_tbl(i).variable_code = G_PAYMENT_TYPE_CODE   THEN
462            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.payment_type_code;
463 
464         ELSIF p_sys_var_value_tbl(i).variable_code = G_FOB_CODE   THEN
465            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.fob_code;
466 
467         ELSIF p_sys_var_value_tbl(i).variable_code = G_SALES_CHANNEL_CODE   THEN
468            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.sales_channel_code;
469 
470         ELSIF p_sys_var_value_tbl(i).variable_code = G_TAX_HANDL_CODE   THEN
471            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.tax_exempt_flag;
472 
473         ELSIF p_sys_var_value_tbl(i).variable_code = G_ORDER_TYPE_CODE   THEN
474            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.order_type_id;
475 
476         ELSIF p_sys_var_value_tbl(i).variable_code = G_TOTAL_CODE   THEN
477            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.total_quote_price;
478 
479         ELSIF p_sys_var_value_tbl(i).variable_code = G_TOTAL_ADJUST_AMT_CODE   THEN
480            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.total_adjusted_amount;
481 
482         ELSIF p_sys_var_value_tbl(i).variable_code = G_TOTAL_ADJUST_PCT_CODE   THEN
483            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.total_adjusted_percent;
484 -- XY
485 
486         ELSIF p_sys_var_value_tbl(i).variable_code = G_QUOTE_NUMBER_CODE   THEN
487            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.quote_number;
488 
489         ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_PO_NUMBER_CODE   THEN
490            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.cust_po_number;
491         -- Added for iStore
492         ELSIF p_sys_var_value_tbl(i).variable_code = G_SHIPMENT_PRIORITY_CODE   THEN
493            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.shipment_priority_code;
494         ELSIF p_sys_var_value_tbl(i).variable_code = G_SITE_ID_CODE   THEN
495            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.minisite_id;
496         --
497         ELSIF p_sys_var_value_tbl(i).variable_code = G_VERSION_NUMBER_CODE   THEN
498            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.quote_version;
499 
500         ELSIF p_sys_var_value_tbl(i).variable_code = G_CUST_CONTACT_NAME_CODE   THEN
501            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.party_id;
502 
503         ELSIF p_sys_var_value_tbl(i).variable_code = G_SALESREP_NAME_CODE   THEN
504            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.resource_id;
505 
506         ELSIF p_sys_var_value_tbl(i).variable_code = G_SUPPLIER_NAME_CODE   THEN
507            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.org_id;
508 
509         ELSIF p_sys_var_value_tbl(i).variable_code = G_CURRENCY_NAME_CODE   THEN
510            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.currency_code;
511 
512         ELSIF p_sys_var_value_tbl(i).variable_code = G_CURRENCY_SYMBOL_CODE   THEN
513            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.currency_code;
514 
515         ELSIF p_sys_var_value_tbl(i).variable_code = G_PA_NUMBER_CODE   THEN
516            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.price_agreement_id;
517 
518         ELSIF p_sys_var_value_tbl(i).variable_code = G_CUSTOMER_NUMBER_CODE   THEN
519            p_sys_var_value_tbl(i).variable_value_id := l_quote_header_variables.cust_account_id;
520 
521 -- XY
522 
523         END IF;
524 
525         IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
526 	      fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
527            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'410: p_sys_var_value_tbl('||i||').variable_code     : '||p_sys_var_value_tbl(i).variable_code);
528            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'415: p_sys_var_value_tbl('||i||').variable_value_id : '||p_sys_var_value_tbl(i).variable_value_id);
529         END IF;
530 
531      END LOOP;
532 
533   END IF;
534 
535   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
536 	 fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
537 	 fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'************************ ');
538       fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'420: End of '||l_package_procedure||' for header level variables, x_return_status ' || x_return_status);
539   END IF;
540 EXCEPTION
541 
542    WHEN FND_API.G_EXC_ERROR THEN
543 
544 	IF c_get_quote_header_variables%ISOPEN THEN
545 	   CLOSE c_get_quote_header_variables;
546 	END IF;
547 
548 	IF c_get_cust_info_var%ISOPEN THEN
549 	   CLOSE c_get_cust_info_var;
550 	END IF;
551 
552      IF c_get_country_quote%ISOPEN THEN
553         CLOSE c_get_country_quote;
554      END IF;
555 
556      IF c_get_expert_yes_no%ISOPEN THEN
557         CLOSE c_get_expert_yes_no;
558      END IF;
559 
560 	x_return_status := FND_API.G_RET_STS_ERROR ;
561 
562   	FND_MSG_PUB.Count_And_Get(
563   		        p_count => x_msg_count,
564           	    p_data => x_msg_data  );
565 
566      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
567         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'430: '||l_package_procedure||' In the FND_API.G_RET_STS_ERROR section');
568         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'440: x_return_status = '||x_return_status);
569      END IF;
570 
571    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
572 
573         IF c_get_quote_header_variables%ISOPEN THEN
574            CLOSE c_get_quote_header_variables;
575         END IF;
576 
577         IF c_get_cust_info_var%ISOPEN THEN
578            CLOSE c_get_cust_info_var;
579         END IF;
580 
581         IF c_get_country_quote%ISOPEN THEN
582            CLOSE c_get_country_quote;
583         END IF;
584 
585         IF c_get_expert_yes_no%ISOPEN THEN
586            CLOSE c_get_expert_yes_no;
587         END IF;
588 
589   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
590      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
591         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'450: '||l_package_procedure||' In the FND_API.G_EXC_UNEXPECTED_ERROR section');
592         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'460: x_return_status = '||x_return_status);
593      END IF;
594 
595   	FND_MSG_PUB.Count_And_Get(
596   		        p_count => x_msg_count,
597           	    p_data => x_msg_data  );
598 
599    WHEN OTHERS THEN
600 
601      IF c_get_quote_header_variables%ISOPEN THEN
602         CLOSE c_get_quote_header_variables;
603      END IF;
604 
605      IF c_get_cust_info_var%ISOPEN THEN
606         CLOSE c_get_cust_info_var;
607      END IF;
608 
609      IF c_get_country_quote%ISOPEN THEN
610         CLOSE c_get_country_quote;
611      END IF;
612 
613      IF c_get_expert_yes_no%ISOPEN THEN
614         CLOSE c_get_expert_yes_no;
615      END IF;
616 
617   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
618      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
619         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'470: '||l_package_procedure||' In the FND_API.G_RET_STS_UNEXP_ERROR section');
620         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'480: x_return_status = '||x_return_status);
621      END IF;
622 
623     	IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
624          	   FND_MSG_PUB.Add_Exc_Msg(
625           	        G_PKG_NAME ,
626           	        l_api_name );
627   	END IF;
628 
629   	FND_MSG_PUB.Count_And_Get(
630   	     p_count => x_msg_count,
631        	 p_data => x_msg_data );
632 
633 END get_clause_variable_values;
634 
635 
636 --this overloaded signature is called from the contract expert
637   PROCEDURE Get_clause_Variable_Values (
638     p_api_version               IN         NUMBER,
639     p_init_msg_list             IN         VARCHAR2,
640     x_return_status             OUT NOCOPY VARCHAR2,
641     x_msg_count                 OUT NOCOPY NUMBER,
642     x_msg_data                  OUT NOCOPY VARCHAR2,
643     p_doc_id                    IN         NUMBER,
644     p_variables_tbl             IN         OKC_TERMS_UTIL_GRP.sys_var_value_tbl_type,
645     x_line_var_value_tbl        OUT NOCOPY OKC_TERMS_UTIL_GRP.item_dtl_tbl
646   ) IS
647 
648 l_api_name          VARCHAR2(30) := 'get_clause_variable_values - 2';
649 l_package_procedure VARCHAR2(60);
650 l_api_version       CONSTANT NUMBER := 1;
651 l_index             BINARY_INTEGER;
652 l_debug             Boolean;
653 l_module            VARCHAR2(250) := G_MODULE_NAME||l_api_name;
654 
655 BEGIN
656 
657    l_package_procedure := G_PKG_NAME || '.' || l_api_name;
658 
659    x_return_status := FND_API.G_RET_STS_SUCCESS;
660 
661    IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
662       l_debug := true;
663    END IF;
664 
665    IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
666        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
667        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'10: Start '||l_package_procedure);
668        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'20: Entered ' || l_package_procedure);
669        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'30: p_doc_id: ' || p_doc_id);
670        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'40: p_variables_tbl.COUNT: ' || p_variables_tbl.COUNT);
671    END IF;
672 
673    --
674    -- Standard call to check for call compatibility.
675    --
676    IF NOT FND_API.Compatible_API_Call (l_api_version,
677                                         p_api_version,
678                                         l_api_name,
679                                         G_PKG_NAME)
680    THEN
681         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
682    END IF;
683 
684    --
685    -- Initialize message list if p_init_msg_list is set to TRUE.
686    --
687    IF FND_API.to_Boolean( p_init_msg_list ) THEN
688         FND_MSG_PUB.initialize;
689    END IF;
690 
691 	l_index := p_variables_tbl.FIRST;
692      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
693         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'50: l_index = '||l_index);
694      END IF;
695 
696 	WHILE l_index IS NOT NULL
697 	LOOP
698 	   IF p_variables_tbl(l_index).Variable_code = G_ITEM_CODE THEN
699            IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
700               fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'60: variable code = '||p_variables_tbl(l_index).Variable_code);
701            END IF;
702 	      SELECT
703 		    items.concatenated_segments
704            BULK COLLECT INTO x_line_var_value_tbl.item
705            FROM
706 		    Mtl_System_Items_vl items,
707 		    Aso_Quote_Lines_all lines
708            WHERE
709 	         lines.inventory_item_id = items.INVENTORY_ITEM_ID
710              AND lines.organization_id = items.organization_id
711              AND lines.LINE_CATEGORY_CODE = 'ORDER'
712              AND lines.quote_header_id = p_doc_id;
713 
714 	   ELSIF p_variables_tbl(l_index).Variable_code = G_ITEM_CATEGORY_CODE THEN
715            IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
716               fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'70: variable code = '||p_variables_tbl(l_index).Variable_code);
717            END IF;
718 
719 	      SELECT
720 		      cats.category_concat_segs
721            BULK COLLECT INTO x_line_var_value_tbl.category
722         	 FROM
723 		    Mtl_Item_Categories mic,
724 		    Aso_Quote_Lines_all lines,
725 		    Mtl_Categories_V cats
726         	 WHERE
727 		    lines.inventory_item_id = mic.INVENTORY_ITEM_ID
728              AND mic.category_id = cats.category_id
729              AND mic.organization_id = lines.organization_id
730              AND mic.category_set_id = (
731 					SELECT nvl(FND_PROFILE.VALUE('ASO_CATEGORY_SET'), sets.category_set_id )
732               			FROM Mtl_Default_Category_Sets sets
733               			WHERE functional_area_id = 7
734 				     )
735              AND lines.LINE_CATEGORY_CODE = 'ORDER'
736          	   AND lines.quote_header_id = p_doc_id;
737 	   END IF;
738 
739 	      l_index := p_variables_tbl.next(l_index);
740            IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
741               fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'80: l_index = '||l_index);
742            END IF;
743 
744 	END LOOP;
745 
746   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
747       IF x_line_var_value_tbl.item.COUNT > 0 THEN
748 	    fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'90: Item Count = '||x_line_var_value_tbl.item.COUNT);
749          FOR i IN x_line_var_value_tbl.item.FIRST..x_line_var_value_tbl.item.LAST LOOP
750 	       fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'100: Item : '||x_line_var_value_tbl.item(i));
751 	    END LOOP;
752 	 END IF;
753       IF x_line_var_value_tbl.category.COUNT > 0 THEN
754 	    fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'110: Item category Count = '||x_line_var_value_tbl.category.COUNT);
755          FOR i IN x_line_var_value_tbl.category.FIRST..x_line_var_value_tbl.category.LAST LOOP
756 	       fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'120: Item category: '||x_line_var_value_tbl.category(i));
757 	    END LOOP;
758 	 END IF;
759 	 fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'130:End of '||l_package_procedure||' for header level variables, x_return_status ' || x_return_status);
760   END IF;
761 EXCEPTION
762 
763    WHEN FND_API.G_EXC_ERROR THEN
764 
765 	x_return_status := FND_API.G_RET_STS_ERROR ;
766      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
767         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'130: '||l_package_procedure||' In the FND_API.G_EXC_ERROR section');
768         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'140: x_return_status = '||x_return_status);
769      END IF;
770 
771   	FND_MSG_PUB.Count_And_Get(
772   		        p_count => x_msg_count,
773           	    p_data => x_msg_data  );
774 
775    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
776 
777   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
778      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
779         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'150: '||l_package_procedure||' In the FND_API.G_EXC_UNEXPECTED_ERROR section');
780         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'160: x_return_status = '||x_return_status);
781      END IF;
782 
783   	FND_MSG_PUB.Count_And_Get(
784   		        p_count => x_msg_count,
785           	    p_data => x_msg_data  );
786 
787    WHEN OTHERS THEN
788 
789   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
790      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
791         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'170: '||l_package_procedure||' In the OTHERS section');
792         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'180: x_return_status = '||x_return_status);
793      END IF;
794 
795     	IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
796          	   FND_MSG_PUB.Add_Exc_Msg(
797           	        G_PKG_NAME ,
798           	        l_api_name );
799   	END IF;
800 
801   	FND_MSG_PUB.Count_And_Get(
802   	     p_count => x_msg_count,
803        	 p_data => x_msg_data );
804 
805 END Get_clause_Variable_Values;
806 
807 -- This procedure will be called from contract expert to get
808 -- line level system variables
809 PROCEDURE Get_Line_Variable_Values (
810     p_api_version               IN            NUMBER,
811     p_init_msg_list             IN            VARCHAR2 DEFAULT FND_API.G_FALSE,
812     p_doc_id                    IN            NUMBER,
813     x_return_status             OUT  NOCOPY   VARCHAR2,
814     x_msg_count                 OUT  NOCOPY   NUMBER,
815     x_msg_data                  OUT  NOCOPY   VARCHAR2,
816     x_line_sys_var_value_tbl    OUT  NOCOPY   OKC_XPRT_XRULE_VALUES_PVT.line_sys_var_value_tbl_type,
817     x_line_count                OUT  NOCOPY   NUMBER,
818     x_line_variables_count      OUT  NOCOPY   NUMBER
819   ) IS
820 
821 l_api_name          VARCHAR2(30) := 'get_line_variable_values';
822 l_package_procedure VARCHAR2(60);
823 l_api_version       CONSTANT NUMBER := 1;
824 --l_index             BINARY_INTEGER;
825 l_debug             Boolean;
826 l_module            VARCHAR2(250) := G_MODULE_NAME||l_api_name;
827 
828 --
829 -- Cursor to fetch the line attributes for the quote
830 --
831 CURSOR c_get_quote_line_variables IS
832 SELECT
833       quote.quote_line_id,
834       ASO_LINE_NUM_INT.Get_UI_Line_Number(quote.quote_line_id) line_number, -- Changed for Bug 4768964
835       nvl(payments.payment_term_id,'-99999') payment_term_id,
836       nvl(shipments.fob_code,'NO_VALUE') fob_code,
837       quote.inventory_item_id,
838       quote.org_id
839 FROM
840       aso_payments payments,
841       aso_shipments shipments,
842       aso_quote_lines_all quote
843 WHERE
844       quote.quote_line_id = payments.quote_line_id(+)
845  AND  quote.quote_line_id = shipments.quote_line_id(+)
846  AND  quote.quote_header_id = p_doc_id;
847 
848 l_quote_line_variables  c_get_quote_line_variables%ROWTYPE;
849 l_line_count	NUMBER := 0;
850 l_line_number   VARCHAR2(250); --NUMBER; For Bug 4768964
851 l_index	  NUMBER := 0;
852 
853 --AK
854 CURSOR c_get_quote_item (p_quote_line_id NUMBER) IS
855 SELECT
856     items.concatenated_segments item
857 FROM
858     Mtl_System_Items_vl items,
859     Aso_Quote_Lines_all lines
860 WHERE
861  lines.inventory_item_id = items.INVENTORY_ITEM_ID
862 AND lines.organization_id = items.organization_id
863 --AND lines.LINE_CATEGORY_CODE = 'ORDER'
864 AND lines.quote_header_id = p_doc_id
865 AND lines.quote_line_id = p_quote_line_id;
866 
867 CURSOR c_get_quote_item_category (p_quote_line_id NUMBER) IS
868 SELECT
869       cats.category_concat_segs item_category
870  FROM
871     Mtl_Item_Categories mic,
872     Aso_Quote_Lines_all lines,
873     Mtl_Categories_V cats
874  WHERE
875     lines.inventory_item_id = mic.INVENTORY_ITEM_ID
876 AND mic.category_id = cats.category_id
877 AND mic.organization_id = lines.organization_id
878 AND mic.category_set_id = (
879 			SELECT nvl(FND_PROFILE.VALUE('ASO_CATEGORY_SET'), sets.category_set_id )
880 		FROM Mtl_Default_Category_Sets sets
881 		WHERE functional_area_id = 7
882 		     )
883 AND lines.LINE_CATEGORY_CODE = 'ORDER'
884 AND lines.quote_header_id = p_doc_id
885 AND lines.quote_line_id = p_quote_line_id;
886 
887 --AK
888 
889 -- New Line Number
890 l_in_qte_line_number_tbl ASO_LINE_NUM_INT.In_Line_Number_Tbl_Type;
891 l_out_qte_line_number_tbl ASO_LINE_NUM_INT.Out_Line_Number_Tbl_Type;
892 i NUMBER := 1;
893 l_quote_org_id NUMBER;
894 CURSOR c_get_quote_org_id IS
895 SELECT
896       quote.org_id
897 FROM
898       aso_quote_headers_all quote
899 WHERE
900       quote.quote_header_id = p_doc_id;
901 -- New Line Number
902 
903 BEGIN
904 
905    l_package_procedure := G_PKG_NAME || '.' || l_api_name;
906 
907    x_return_status := FND_API.G_RET_STS_SUCCESS;
908 
909    IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
910       l_debug := true;
911    END IF;
912 
913    IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
914        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,' ');
915        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'10: Start '||l_package_procedure);
916        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'20: Entered ' || l_package_procedure);
917        fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'30: p_doc_id: ' || p_doc_id);
918    END IF;
919 
920    --
921    -- Standard call to check for call compatibility.
922    --
923    IF NOT FND_API.Compatible_API_Call (l_api_version,
924                                         p_api_version,
925                                         l_api_name,
926                                         G_PKG_NAME)
927    THEN
928         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
929    END IF;
930 
931    --
932    -- Initialize message list if p_init_msg_list is set to TRUE.
933    --
934    IF FND_API.to_Boolean( p_init_msg_list ) THEN
935         FND_MSG_PUB.initialize;
936    END IF;
937 
938    OPEN c_get_quote_org_id;
939    FETCH c_get_quote_org_id INTO l_quote_org_id;
940    CLOSE c_get_quote_org_id;
941 
942    MO_GLOBAL.INIT('ASO');
943    MO_GLOBAL.SET_POLICY_CONTEXT('S',l_quote_org_id);
944 
945    OPEN c_get_quote_line_variables;
946    LOOP
947      FETCH c_get_quote_line_variables INTO l_quote_line_variables;
948      EXIT WHEN c_get_quote_line_variables%NOTFOUND;
949 
950      --l_line_number := l_quote_line_variables.line_number;
951 
952      -- Begin
953      aso_line_num_int.reset_line_num;
954      l_in_qte_line_number_tbl(i).quote_line_id := l_quote_line_variables.quote_line_id;
955      aso_line_num_int.aso_ui_line_number( p_in_Line_number_tbl   => l_in_qte_line_number_tbl,
956                                           x_out_line_number_tbl  => l_out_qte_line_number_tbl);
957      l_line_number := l_out_qte_line_number_tbl(l_in_qte_line_number_tbl(i).quote_line_id);
958      i := i + 1;
959      -- End
960 
961      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
962           fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'40: line_number =        '||l_quote_line_variables.line_number );
963           fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'50: payment_term_id =        '||l_quote_line_variables.payment_term_id );
964           fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'60: item_id =        '||l_quote_line_variables.inventory_item_id );
965           fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'70: org_id =        '||l_quote_line_variables.org_id );
966      END IF;
967 
968 
969 	l_line_count := l_line_count+1;
970 
971      IF l_quote_line_variables.payment_term_id IS NOT NULL THEN
972        l_index      := l_index+1;
973        x_line_sys_var_value_tbl(l_index).line_number :=  l_line_number;
974        x_line_sys_var_value_tbl(l_index).variable_code := G_LINE_PAYMENT_TERM_CODE;
975        x_line_sys_var_value_tbl(l_index).variable_value := l_quote_line_variables.payment_term_id;
976        x_line_sys_var_value_tbl(l_index).item_id := l_quote_line_variables.inventory_item_id;
977        x_line_sys_var_value_tbl(l_index).org_id := l_quote_line_variables.org_id;
978      END IF;
979 
980      IF l_quote_line_variables.fob_code IS NOT NULL THEN
981        l_index      := l_index+1;
982        x_line_sys_var_value_tbl(l_index).line_number :=  l_line_number;
983        x_line_sys_var_value_tbl(l_index).variable_code := G_LINE_FOB_CODE;
984        x_line_sys_var_value_tbl(l_index).variable_value := l_quote_line_variables.fob_code;
985        x_line_sys_var_value_tbl(l_index).item_id := l_quote_line_variables.inventory_item_id;
986        x_line_sys_var_value_tbl(l_index).org_id := l_quote_line_variables.org_id;
987      END IF;
988 
989     IF l_quote_line_variables.inventory_item_id IS NOT NULL THEN
990       FOR c_get_quote_item_rec IN c_get_quote_item(l_quote_line_variables.quote_line_id) LOOP
991        l_index      := l_index+1;
992        x_line_sys_var_value_tbl(l_index).line_number :=  l_line_number;
993        x_line_sys_var_value_tbl(l_index).variable_code := G_ITEM_CODE;
994        x_line_sys_var_value_tbl(l_index).variable_value := c_get_quote_item_rec.item;
995        x_line_sys_var_value_tbl(l_index).item_id := l_quote_line_variables.inventory_item_id;
996        x_line_sys_var_value_tbl(l_index).org_id := l_quote_line_variables.org_id;
997       END LOOP;
998     END IF;
999 
1000     IF l_quote_line_variables.inventory_item_id IS NOT NULL THEN
1001       FOR c_get_quote_item_category_rec IN c_get_quote_item_category(l_quote_line_variables.quote_line_id) LOOP
1002        l_index      := l_index+1;
1003        x_line_sys_var_value_tbl(l_index).line_number :=  l_line_number;
1004        x_line_sys_var_value_tbl(l_index).variable_code := G_ITEM_CATEGORY_CODE;
1005        x_line_sys_var_value_tbl(l_index).variable_value := c_get_quote_item_category_rec.item_category;
1006        x_line_sys_var_value_tbl(l_index).item_id := l_quote_line_variables.inventory_item_id;
1007        x_line_sys_var_value_tbl(l_index).org_id := l_quote_line_variables.org_id;
1008       END LOOP;
1009     END IF;
1010 
1011    END LOOP;
1012 
1013    CLOSE c_get_quote_line_variables;
1014 
1015    x_line_count := l_line_count;
1016    -- Fix for 4768964 to show line number
1017    x_line_variables_count := 4; --Item, Item Category, Payment term, FOB
1018 
1019   IF l_line_count = 0 THEN
1020       x_line_count := 1; -- Since no Lines, need to set line count to 1 for the CX Java code
1021       x_line_variables_count := 0; -- Since no Lines, need to set line variables count to 0 for the CX Java code
1022   END IF;
1023 
1024   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1025      fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'130:End of '||l_package_procedure||' for line level variables, x_return_status ' || x_return_status);
1026   END IF;
1027 EXCEPTION
1028 
1029    WHEN FND_API.G_EXC_ERROR THEN
1030 
1031      IF c_get_quote_line_variables%ISOPEN THEN
1032      	CLOSE c_get_quote_line_variables;
1033      END IF;
1034 
1035 
1036 	x_return_status := FND_API.G_RET_STS_ERROR ;
1037      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1038         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'130: '||l_package_procedure||' In the FND_API.G_EXC_ERROR section');
1039         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'140: x_return_status = '||x_return_status);
1040      END IF;
1041 
1042   	FND_MSG_PUB.Count_And_Get(
1043   		        p_count => x_msg_count,
1044           	    p_data => x_msg_data  );
1045 
1046    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1047      IF c_get_quote_line_variables%ISOPEN THEN
1048      	CLOSE c_get_quote_line_variables;
1049      END IF;
1050 
1051 
1052   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1053      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1054         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'150: '||l_package_procedure||' In the FND_API.G_EXC_UNEXPECTED_ERROR section');
1055         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'160: x_return_status = '||x_return_status);
1056      END IF;
1057 
1058   	FND_MSG_PUB.Count_And_Get(
1059   		        p_count => x_msg_count,
1060           	    p_data => x_msg_data  );
1061 
1062    WHEN OTHERS THEN
1063      IF c_get_quote_line_variables%ISOPEN THEN
1064      	CLOSE c_get_quote_line_variables;
1065      END IF;
1066 
1067   	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1068      IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1069         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'170: '||l_package_procedure||' In the OTHERS section');
1070         fnd_log.string(FND_LOG.LEVEL_PROCEDURE,l_module,'180: x_return_status = '||x_return_status);
1071      END IF;
1072 
1073     	IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1074          	   FND_MSG_PUB.Add_Exc_Msg(
1075           	        G_PKG_NAME ,
1076           	        l_api_name );
1077   	END IF;
1078 
1079   	FND_MSG_PUB.Count_And_Get(
1080   	     p_count => x_msg_count,
1081        	 p_data => x_msg_data );
1082 
1083 END Get_Line_Variable_Values;
1084 
1085 
1086 
1087 
1088 END OKC_XPRT_QUOTE_INT_PVT;