DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_QUOTE_HEADERS_PVT

Source


1 PACKAGE BODY ASO_QUOTE_HEADERS_PVT as
2 /* $Header: asovqhdb.pls 120.45 2006/06/13 21:37:46 skulkarn ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_QUOTE_HEADERS_PVT
5 -- Purpose         :
6 -- History         :
7 --			    10/18/2002 hyang - 2633507, performance fix
8 --			    12/06/2002 hyang - 2686076, changed definition of lx_contract_number
9 --							   to VARCHAR2(120)
10 --                 08/19/04  skulkarn - In new BC4J implementation, the primary key for
11 --                                    for all input parameters in Create_Quote, Update_Quote APIs
12 --                                    will be passed. In order to honor the primary key passed
13 --                                    the primary key will not be set to null before calling the
14 --                                    table handler. Hence, commented OUT the code where
15 --                                    primary key is being set to null before calling table handler.
16 -- NOTE       :
17 -- End of Comments
18 
19 
20 G_PKG_NAME  CONSTANT VARCHAR2(30) := 'ASO_QUOTE_HEADERS_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovqhdb.pls';
22 
23 G_QUOTE_DURATION  CONSTANT NUMBER := 30;
24 
25 
26 FUNCTION  Shipment_Rec_Exists( p_shipment_rec IN  ASO_QUOTE_PUB.Shipment_Rec_Type ) RETURN BOOLEAN
27 IS
28 
29 BEGIN
30      IF aso_debug_pub.g_debug_flag = 'Y' THEN
31 	aso_debug_pub.add('Begin Shipment_Rec_Exists function.', 1, 'Y');
32 	END IF;
33 
34      IF ( p_shipment_rec.SHIPMENT_ID             <> FND_API.G_MISS_NUM   OR
35           p_shipment_rec.PROMISE_DATE            <> FND_API.G_MISS_DATE  OR
36           p_shipment_rec.REQUEST_DATE            <> FND_API.G_MISS_DATE  OR
37           p_shipment_rec.SCHEDULE_SHIP_DATE      <> FND_API.G_MISS_DATE  OR
38           p_shipment_rec.SHIP_TO_PARTY_SITE_ID   <> FND_API.G_MISS_NUM   OR
39           p_shipment_rec.SHIP_TO_PARTY_ID        <> FND_API.G_MISS_NUM   OR
40           p_shipment_rec.SHIP_PARTIAL_FLAG       <> FND_API.G_MISS_CHAR  OR
41           p_shipment_rec.SHIP_SET_ID             <> FND_API.G_MISS_NUM   OR
42           p_shipment_rec.SHIP_METHOD_CODE        <> FND_API.G_MISS_CHAR  OR
43           p_shipment_rec.FREIGHT_TERMS_CODE      <> FND_API.G_MISS_CHAR  OR
44           p_shipment_rec.FREIGHT_CARRIER_CODE    <> FND_API.G_MISS_CHAR  OR
45           p_shipment_rec.FOB_CODE                <> FND_API.G_MISS_CHAR  OR
46           p_shipment_rec.SHIPPING_INSTRUCTIONS   <> FND_API.G_MISS_CHAR  OR
47           p_shipment_rec.PACKING_INSTRUCTIONS    <> FND_API.G_MISS_CHAR  OR
48           p_shipment_rec.QUANTITY                <> FND_API.G_MISS_NUM   OR
49           p_shipment_rec.RESERVED_QUANTITY       <> FND_API.G_MISS_CHAR  OR
50           p_shipment_rec.RESERVATION_ID          <> FND_API.G_MISS_NUM   OR
51           p_shipment_rec.ORDER_LINE_ID           <> FND_API.G_MISS_NUM   OR
52           p_shipment_rec.ATTRIBUTE_CATEGORY      <> FND_API.G_MISS_CHAR  OR
53           p_shipment_rec.ATTRIBUTE1              <> FND_API.G_MISS_CHAR  OR
54           p_shipment_rec.ATTRIBUTE2              <> FND_API.G_MISS_CHAR  OR
55           p_shipment_rec.ATTRIBUTE3              <> FND_API.G_MISS_CHAR  OR
56           p_shipment_rec.ATTRIBUTE4              <> FND_API.G_MISS_CHAR  OR
57           p_shipment_rec.ATTRIBUTE5              <> FND_API.G_MISS_CHAR  OR
58           p_shipment_rec.ATTRIBUTE6              <> FND_API.G_MISS_CHAR  OR
59           p_shipment_rec.ATTRIBUTE7              <> FND_API.G_MISS_CHAR  OR
60           p_shipment_rec.ATTRIBUTE8              <> FND_API.G_MISS_CHAR  OR
61           p_shipment_rec.ATTRIBUTE9              <> FND_API.G_MISS_CHAR  OR
62           p_shipment_rec.ATTRIBUTE10             <> FND_API.G_MISS_CHAR  OR
63           p_shipment_rec.ATTRIBUTE11             <> FND_API.G_MISS_CHAR  OR
64           p_shipment_rec.ATTRIBUTE12             <> FND_API.G_MISS_CHAR  OR
65           p_shipment_rec.ATTRIBUTE13             <> FND_API.G_MISS_CHAR  OR
66           p_shipment_rec.ATTRIBUTE14             <> FND_API.G_MISS_CHAR  OR
67           p_shipment_rec.ATTRIBUTE15             <> FND_API.G_MISS_CHAR  OR
68 	     p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM   OR
69 	     p_shipment_rec.SHIP_FROM_ORG_ID        <> FND_API.G_MISS_NUM   OR
70 		p_shipment_rec.ship_to_cust_party_id   <> FND_API.G_MISS_NUM) THEN
71 
72               IF aso_debug_pub.g_debug_flag = 'Y' THEN
73 		    aso_debug_pub.add('Shipment_Rec_Exists function returning TRUE');
74 		    END IF;
75 
76               return TRUE;
77 
78      ELSE
79 
80               IF aso_debug_pub.g_debug_flag = 'Y' THEN
81 		    aso_debug_pub.add('Shipment_Rec_Exists function returning FALSE');
82 		    END IF;
83 
84 	         return FALSE;
85 
86      END IF;
87 
88 END Shipment_Rec_Exists;
89 
90 -- hyang defaulting framework
91 FUNCTION  Shipment_Null_Rec_Exists(
92   p_shipment_rec          IN  ASO_QUOTE_PUB.Shipment_Rec_Type,
93   p_database_object_name  IN VARCHAR2
94 ) RETURN BOOLEAN
95 IS
96 
97 BEGIN
98   IF aso_debug_pub.g_debug_flag = 'Y' THEN
99     aso_debug_pub.add('Begin Shipment_Null_Rec_Exists function.', 1, 'Y');
100   END IF;
101 
102   IF (
103       (
104         p_database_object_name = 'ASO_AK_QUOTE_HEADER_V'
105         AND (
106           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
107           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
108           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
109           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
110           p_shipment_rec.REQUEST_DATE_TYPE            IS NOT NULL OR
111           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
112           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
113           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
114           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
115           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
116           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
117           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
118           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
119         )
120       ) OR (
121         p_database_object_name = 'ASO_AK_QUOTE_OPPTY_V'
122         AND (
123           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
124           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
125           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
126           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
127           p_shipment_rec.REQUEST_DATE_TYPE            IS NOT NULL OR
128           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
129           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
130           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
131           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
132           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
133           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
134           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
135           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
136         )
137       ) OR (
138         p_database_object_name = 'ASO_AK_QUOTE_LINE_V'
139         AND (
140           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
141           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
142           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
143           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
144           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
145           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
146           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
147           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
148           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
149           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
150           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
151           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
152         )
153       ) OR (
154         p_database_object_name = 'ASO_AK_STORE_CART_HEADER_V'
155         AND (
156           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
157           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
158           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
159           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
160           p_shipment_rec.REQUEST_DATE_TYPE            IS NOT NULL OR
161           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
162           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
163           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
164           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
165           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
166           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
167           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
168           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
169         )
170       ) OR (
171         p_database_object_name = 'ASO_AK_STORE_CART_LINES_V'
172         AND (
173           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
174           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
175           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
176           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
177           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
178           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
179           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
180           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
181           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
182           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
183           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
184           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
185         )
186       )
187 
188   ) THEN
189 
190     IF aso_debug_pub.g_debug_flag = 'Y' THEN
191       aso_debug_pub.add('Defaulting Engine returns values in shipment_rec.');
192     END IF;
193 
194     return TRUE;
195 
196   ELSE
197 
198     IF aso_debug_pub.g_debug_flag = 'Y' THEN
199       aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in shipment_rec.');
200     END IF;
201 
202     return FALSE;
203 
204   END IF;
205 
206 END Shipment_Null_Rec_Exists;
207 
208 
209 FUNCTION  Payment_NULL_Rec_Exists(
210   p_payment_rec           IN  ASO_QUOTE_PUB.Payment_Rec_Type,
211   p_database_object_name  IN  VARCHAR2
212 ) RETURN BOOLEAN
213 IS
214 
215 BEGIN
216   IF aso_debug_pub.g_debug_flag = 'Y' THEN
217 	  aso_debug_pub.add('Begin Payment_Rec_Exists function.', 1, 'Y');
218 	END IF;
219 
220  IF (
221       (
222         p_database_object_name = 'ASO_AK_QUOTE_HEADER_V'
223         AND (
224           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
225           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
226           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
227           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
228           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
229           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
230           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
231         )
232       ) OR (
233         p_database_object_name = 'ASO_AK_QUOTE_OPPTY_V'
234         AND (
235           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
236           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
237           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
238           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
239           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
240           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
241           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
242         )
243       ) OR (
244         p_database_object_name = 'ASO_AK_QUOTE_LINE_V'
245         AND (
246           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
247           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
248           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
249           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
250           p_payment_rec.CUST_PO_LINE_NUMBER         IS NOT NULL  OR
251           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
252           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
253           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
254         )
255       ) OR (
256         p_database_object_name = 'ASO_AK_STORE_CART_HEADER_V'
257         AND (
258           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
259           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
260           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
261           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
262           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
263           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
264           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
265         )
266       ) OR (
267         p_database_object_name = 'ASO_AK_STORE_CART_LINES_V'
268         AND (
269           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
270           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
271           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
272           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
273           p_payment_rec.CUST_PO_LINE_NUMBER         IS NOT NULL  OR
274           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
275           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
276           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
277         )
278       )
279   ) THEN
280 
281     IF aso_debug_pub.g_debug_flag = 'Y' THEN
282 		  aso_debug_pub.add('Defaulting Engine returns values in payment_rec.');
283 		END IF;
284 
285     return TRUE;
286 
287   ELSE
288 
289     IF aso_debug_pub.g_debug_flag = 'Y' THEN
290       aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in payment_rec.');
291     END IF;
292 
293 	  RETURN FALSE;
294 
295   END IF;
296 
297 END Payment_NULL_Rec_Exists;
298 
299 
300 FUNCTION  Tax_Detail_Null_Rec_Exists(
301   p_tax_detail_rec        IN  ASO_QUOTE_PUB.Tax_Detail_Rec_Type,
302   p_database_object_name  IN VARCHAR2
303 ) RETURN BOOLEAN
304 IS
305 
306 BEGIN
307   IF aso_debug_pub.g_debug_flag = 'Y' THEN
308 	  aso_debug_pub.add('Begin Tax_Detail_Null_Rec_Exists function.', 1, 'Y');
309 	END IF;
310 
311   IF aso_debug_pub.g_debug_flag = 'Y' THEN
312     aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in tax_detail_rec.');
313   END IF;
314 
315   RETURN FALSE;
316 
317 END Tax_Detail_Null_Rec_Exists;
318 
319 -- hyang defaulting framework end
320 
321 
322 PROCEDURE Populate_Qte_Header (
323     p_qte_header_rec		IN   ASO_QUOTE_PUB.qte_header_rec_Type,
324     p_Control_Rec		    IN   ASO_QUOTE_PUB.Control_Rec_Type,
325     x_qte_header_rec	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.qte_header_rec_Type
326     )
327 IS
328 
329         l_valid_org_id number;   --New variable to store org_id Yogeshwar (MOAC)
330 
331     CURSOR C_Qte_Number IS
332 	SELECT ASO_QUOTE_NUMBER_S.nextval
333 	FROM dual;
334 
335     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
336 	SELECT quote_version
337 	FROM ASO_QUOTE_HEADERS_ALL
338 	WHERE quote_number = X_qte_number;
339 
340     CURSOR C_Qte_Status_Id (c_status_code VARCHAR2) IS
341 	SELECT quote_status_id
342 	FROM ASO_QUOTE_STATUSES_VL
343 	WHERE status_code = c_status_code;
344 
345     CURSOR c_price_list (c_order_type_id NUMBEr) IS
346         SELECT price_list_id
347         FROM OE_ORDER_TYPES_V
348         WHERE order_type_id = c_order_type_id;
349 
350     CURSOR c_currency_code (c_price_list_id NUMBER) IS
351         SELECT currency_code
352         FROM qp_price_lists_v
353         WHERE price_list_id = c_price_list_id;
354 
355 
356     CURSOR c_resource IS
357    	SELECT resource_id FROM JTF_RS_SRP_VL
358    	WHERE person_id =  p_qte_header_rec.employee_person_id;
359 
360     -- Change START
361     -- Release 12 MOAC Changes : Bug 4500739
362     -- Changes Done by : Girish
363     -- Comments : Using HR EIT in place of org striped profile
364 
365     --l_order_type_id	NUMBER := to_number(fnd_profile.value('ASO_ORDER_TYPE_ID'));
366     l_order_type_id	NUMBER := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_ORDER_TYPE));
367 
368     -- Change END
369 
370     l_price_list_id	NUMBER;
371     l_currency_code	VARCHAR2(15);
372     l_resource_id NUMBER;
373     l_default_status_profile  VARCHAR2(30);
374 
375     l_defaulting_fwk_flag     VARCHAR2(1) := p_control_rec.defaulting_fwk_flag;
376 
377     x_return_status VARCHAR2(1);
378     l_org_id	    NUMBER;    --Yogeshwar (MOAC)
379 
380 BEGIN
381 
382     IF aso_debug_pub.g_debug_flag = 'Y' THEN
383         aso_debug_pub.add('Begin Populate_Qte_Header procedure', 1, 'Y');
384         aso_debug_pub.add('Defaulting Framework Flag - '||l_defaulting_fwk_flag, 1, 'Y');
385     END IF;
386 
387 
388     x_qte_header_rec := p_qte_header_rec;
389 
390     IF aso_debug_pub.g_debug_flag = 'Y' THEN
391         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_number: '||x_qte_header_rec.quote_number, 1, 'N');
392     END IF;
393 
394     IF (x_qte_header_rec.quote_number IS NULL OR
395 		x_qte_header_rec.quote_number = FND_API.G_MISS_NUM) THEN
396 
397 	   IF nvl( FND_PROFILE.Value('ASO_AUTO_NUMBERING'), 'Y') = 'Y' THEN
398 
399             IF aso_debug_pub.g_debug_flag = 'Y' THEN
400 	           aso_debug_pub.add('Populate_Qte_Header: Inside IF cond ASO_AUTO_NUMBERING = Y', 1, 'N');
401 		  END IF;
402 
403 	       OPEN  C_Qte_Number;
404 	       FETCH C_Qte_Number INTO x_qte_header_rec.quote_number;
405 	       CLOSE C_Qte_Number;
406 
407   	       x_qte_header_rec.quote_version := 1;
408 
409 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
410 	           aso_debug_pub.add('x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number);
411 	           aso_debug_pub.add('x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version);
412 	       END IF;
413 
414         ELSIF x_qte_header_rec.quote_type = 'T' then
415 
416             IF aso_debug_pub.g_debug_flag = 'Y' THEN
417 	         aso_debug_pub.add('Populate_Qte_Header: ELSIF cond quote_type = T');
418 	       END IF;
419 
420 	       OPEN  C_Qte_Number;
421 	       FETCH C_Qte_Number INTO x_qte_header_rec.quote_number;
422 	       CLOSE C_Qte_Number;
423 
424   	       x_qte_header_rec.quote_version := 1;
425 
426 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
427 		      aso_debug_pub.add('x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number);
428 		      aso_debug_pub.add('x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version);
429 	   	  END IF;
430 
431         ELSE
432 
433 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
434 	          aso_debug_pub.add('Populate_Qte_Header: ASO_AUTO_NUMBERING is off and quote_number is passed as G_MISS_NUM or NULL', 1, 'N');
435 
436 	       END IF;
437 
438 	       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
439                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
440                 FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
441                 FND_MSG_PUB.ADD;
442 	       END IF;
443 
444 	       RAISE FND_API.G_EXC_ERROR;
445 
446 	   END IF;
447 
448     ELSE
449 
450 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
451 	       aso_debug_pub.add('Populate_Qte_Header: Inside ELSE cond quote_number is not null and not G_MISS_NUM',1, 'N');
452 	   END IF;
453 
454         OPEN C_Qte_Version(x_qte_header_rec.quote_number);
455         FETCH C_Qte_Version into x_qte_header_rec.quote_version;
456 
457 	   --Changed for Bug # 2365955
458         --IF x_qte_header_rec.quote_version IS NOT NULL AND x_qte_header_rec.quote_version <> FND_API.G_MISS_NUM THEN
459 
460 	   IF C_Qte_Version%FOUND THEN
461 
462             IF aso_debug_pub.g_debug_flag = 'Y' THEN
463 		  aso_debug_pub.add('Inside else: C_Qte_Version%FOUND', 1, 'N');
464 		  END IF;
465 
466             CLOSE C_Qte_Version;
467 
468             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
469                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_DUPLICATE_QTE_NUM');
470                 FND_MESSAGE.Set_Token('QTE_NUM', x_qte_header_rec.quote_number, FALSE);
471                 FND_MSG_PUB.ADD;
472             END IF;
473             RAISE FND_API.G_EXC_ERROR;
474         ELSE
475             IF aso_debug_pub.g_debug_flag = 'Y' THEN
476 		      aso_debug_pub.add('Inside else: C_Qte_Version%NOTFOUND', 1, 'N');
477 		  END IF;
478             x_qte_header_rec.quote_version := 1;
479             CLOSE C_Qte_Version;
480         END IF;
481 --	  x_qte_header_rec.quote_version := nvl(x_qte_header_rec.quote_version, 0) + 1;
482     END IF;
483 
484     IF aso_debug_pub.g_debug_flag = 'Y' THEN
485         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number, 1, 'N');
486         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version,1, 'N');
487     END IF;
488 
489     IF (x_qte_header_rec.quote_status_id IS NULL OR
490 		x_qte_header_rec.quote_status_id = FND_API.G_MISS_NUM) THEN
491 	  --OPEN c_qte_status_id ('DRAFT');
492 	  -- hyang 2269617
493 	  l_default_status_profile := fnd_profile.value( 'ASO_DEFAULT_STATUS_CODE');
494 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
495 	  aso_debug_pub.add('Populate_Qte_Header: Profile ASO_DEFAULT_STATUS_CODE is ' || l_default_status_profile, 1, 'Y');
496 	  END IF;
497 	  OPEN c_qte_status_id ( l_default_status_profile );
498 	  FETCH c_qte_status_id INTO x_qte_header_rec.quote_status_id;
499 	  CLOSE c_qte_status_id;
500     END IF;
501 
502     IF (l_defaulting_fwk_flag = 'N')
503     THEN
504 
505        --Commented Code Yogeshwar (MOAC)
506     /*  IF (x_qte_header_rec.org_id IS NULL OR
507         x_qte_header_rec.org_id = FND_API.G_MISS_NUM) THEN
508         IF SUBSTRB(USERENV('CLIENT_INFO'),1,1) <> ' ' THEN
509           x_qte_header_rec.org_id := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10));
510         END IF;
511       END IF;
512     */
513     --Commented Code End Yogeshwar (MOAC)
514 
515     --New Code Start Yogeshwar (MOAC)
516 	If x_qte_header_rec.org_id  IS NULL THEN
517 		l_org_id := FND_API.G_MISS_NUM;
518 	Else
519 		l_org_id := x_qte_header_rec.org_id;
520 	End if;
521 	 l_valid_org_id:= MO_GLOBAL.get_valid_org(l_org_id);
522 	if l_valid_org_id is NULL then
523 		x_return_status := FND_API.G_RET_STS_ERROR;
524 		RAISE FND_API.G_EXC_ERROR;
525         else
526 		 x_qte_header_rec.org_id := l_valid_org_id;
527 	End if;
528     --New Code End Yogeshwar (MOAC)
529 
530       IF aso_debug_pub.g_debug_flag = 'Y' THEN
531         aso_debug_pub.add('Before OM Defaulting - Populate Qte header', 1, 'N');
532         aso_debug_pub.add('Before OM Defaulting Value of  ASO_OM_DEFAULTING '||FND_PROFILE.Value('ASO_OM_DEFAULTING'), 1, 'N');
533       END IF;
534       -- IF (NVL(FND_PROFILE.Value('ASO_OM_DEFAULTING'), 'N') = 'N') THEN
535       IF (x_qte_header_rec.order_type_id IS NULL OR
536         x_qte_header_rec.order_type_id = FND_API.G_MISS_NUM) THEN
537         x_qte_header_rec.order_type_id := l_order_type_id;
538       END IF;
539       --END IF;
540 
541       -- New code for Bug # 2317961
542 
543       IF aso_debug_pub.g_debug_flag = 'Y' THEN
544         aso_debug_pub.add('Populate_qte_header: order_type_id: ||x_qte_header_rec.order_type_id ',1,'N');
545         aso_debug_pub.add('Populate_qte_header: price_list_id: ||x_qte_header_rec.price_list_id ',1,'N');
546       END IF;
547 
548       IF x_qte_header_rec.price_list_id = FND_API.G_MISS_NUM THEN
549 
550         OPEN  c_price_list(x_qte_header_rec.order_type_id);
551         FETCH c_price_list INTO x_qte_header_rec.price_list_id;
552         CLOSE c_price_list;
553 
554         IF aso_debug_pub.g_debug_flag = 'Y' THEN
555           aso_debug_pub.add('Populate_qte_header: After c_price_list cursor: price_list_id: ||x_qte_header_rec.price_list_id ',1,'N');
556         END IF;
557 
558       ELSIF (x_qte_header_rec.price_list_id IS NULL) AND
559             (x_qte_header_rec.currency_code IS NULL OR
560              x_qte_header_rec.currency_code = FND_API.G_MISS_CHAR) THEN
561 
562         IF aso_debug_pub.g_debug_flag = 'Y' THEN
563           aso_debug_pub.add('Populate_qte_header: Currency_code can not be passed as NULL or G_MISS_CHAR when price_list_id is NULL',1,'N');
564         END IF;
565 
566         FND_MESSAGE.Set_Name('ASO', 'ASO_PRICE_LIST_CURRENCY_CODE');
567         FND_MSG_PUB.ADD;
568         RAISE FND_API.G_EXC_ERROR;
569 
570       END IF;
571 
572       -- End new code for Bug # 2317961
573 
574       IF aso_debug_pub.g_debug_flag = 'Y' THEN
575         aso_debug_pub.add('After price_list_id - Populate Qte header', 1, 'N');
576       END IF;
577 
578       IF (x_qte_header_rec.currency_code IS NULL OR
579         x_qte_header_rec.currency_code = FND_API.G_MISS_CHAR) THEN
580         OPEN c_currency_code(x_qte_header_rec.price_list_id);
581         FETCH c_currency_code INTO x_qte_header_rec.currency_code;
582         CLOSE c_currency_code;
583       END IF;
584 
585       IF (--x_qte_header_rec.quote_expiration_date IS NULL OR
586         x_qte_header_rec.quote_expiration_date = FND_API.G_MISS_DATE) THEN
587         x_qte_header_rec.quote_expiration_date := sysdate +
588       	  NVL(FND_PROFILE.value('ASO_QUOTE_DURATION'), G_QUOTE_DURATION);
589       END IF;
590 
591       IF (x_qte_header_rec.resource_id IS NULL OR
592           x_qte_header_rec.resource_id = FND_API.G_MISS_NUM)
593           AND  (x_qte_header_rec.EMPLOYEE_PERSON_ID IS NOT NULL AND
594           x_qte_header_rec.EMPLOYEE_PERSON_ID <> FND_API.G_MISS_NUM) THEN
595 
596           OPEN c_resource;
597           FETCH c_resource INTO l_resource_id;
598           IF c_resource%NOTFOUND OR  l_resource_id IS NULL OR l_resource_id= FND_API.G_MISS_NUM THEN
599             CLOSE c_resource;
600             x_return_status := FND_API.G_RET_STS_ERROR;
601             FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
602             FND_MESSAGE.Set_Token('COLUMN', 'RESOURCE ID', FALSE);
603             FND_MSG_PUB.ADD;
604             RAISE FND_API.G_EXC_ERROR;
605           END IF;
606 
607           CLOSE c_resource;
608           x_qte_header_rec.resource_id := l_resource_id;
609           IF aso_debug_pub.g_debug_flag = 'Y' THEN
610             aso_debug_pub.add('Inside  Populate Qte header resource Id'||l_resource_id, 1, 'N');
611           END IF;
612 
613       END IF;
614 
615     END IF; -- defaulting_fwk_flag
616 
617 
618     IF x_qte_header_rec.max_version_flag is NULL OR  x_qte_header_rec.max_version_flag = FND_API.G_MISS_CHAR THEN
619       x_qte_header_rec.max_version_flag := 'Y';
620     END IF;
621 
622     IF aso_debug_pub.g_debug_flag = 'Y' THEN
623       aso_debug_pub.add('Inside  Populate Qte header x_qte_header_rec.max_version_flag'||x_qte_header_rec.max_version_flag,1,'N');
624       aso_debug_pub.add('End Populate Qte header', 1, 'Y');
625     END IF;
626 
627 END Populate_Qte_Header;
628 
629 PROCEDURE Insert_Rows (
630     P_qte_Header_Rec        IN       ASO_QUOTE_PUB.qte_header_rec_Type,
631     p_Price_Attributes_Tbl  IN       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
632     P_Price_Adjustment_Tbl  IN       ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
633     P_Price_Adj_Attr_Tbl	   IN       ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
634     P_Payment_Tbl		   IN       ASO_QUOTE_PUB.Payment_Tbl_Type,
635     P_Shipment_Tbl		   IN       ASO_QUOTE_PUB.Shipment_Tbl_Type,
636     P_Freight_Charge_Tbl	   IN       ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
637     P_Tax_Detail_Tbl        IN       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
638     P_hd_Attr_Ext_Tbl       IN       ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
639     P_Sales_Credit_Tbl      IN       ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
640     P_Quote_Party_Tbl       IN       ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
641     P_Qte_Access_Tbl        IN       ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
642     X_qte_Header_Rec        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.qte_header_rec_Type,
643     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
644     X_Price_Adjustment_Tbl  OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
645     x_Price_Adj_Attr_Tbl	   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
646     X_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Payment_Tbl_Type,
647     X_Shipment_Rec		   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Shipment_Rec_Type,
648     X_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
649     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
650     X_hd_Attr_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
651     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
652     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
653     X_Qte_Access_Tbl        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
654     X_Return_Status		   OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
655     X_Msg_Count 		   OUT NOCOPY /* file.sql.39 change */      NUMBER,
656     X_Msg_Data			   OUT NOCOPY /* file.sql.39 change */      VARCHAR2
657     )
658 IS
659     l_price_adj_rec		ASO_QUOTE_PUB.Price_Adj_Rec_Type;
660     l_payment_rec		ASO_QUOTE_PUB.Payment_Rec_Type;
661     l_shipment_rec		ASO_QUOTE_PUB.Shipment_Rec_Type;
662     l_freight_charge_rec	ASO_QUOTE_PUB.Freight_Charge_Rec_Type;
663     l_tax_detail_rec		ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
664     lx_qte_header_id		NUMBER;
665     lx_shipment_id		NUMBER;
666     l_Sales_Credit_Tbl          ASO_QUOTE_PUB.Sales_Credit_Tbl_Type ;
667     l_Quote_Party_Tbl           ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
668     l_Sales_Credit_rec          ASO_QUOTE_PUB.Sales_Credit_rec_Type ;
669     l_Quote_Party_rec           ASO_QUOTE_PUB.Quote_Party_rec_Type;
670     l_line_attribs_rec          ASO_QUOTE_PUB.Line_Attribs_Ext_REC_type;
671     l_sysdate           DATE;
672     l_price_adj_attr_tbl	ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
673     l_price_attributes_rec      ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
674 
675 G_USER_ID	  NUMBER := FND_GLOBAL.USER_ID;
676 G_LOGIN_ID	  NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
677 
678     l_org_id NUMBER;
679     l_valid_org_id number;  --New variable to store ORG_ID Yogeshwar (MOAC)
680 
681     l_qte_access_tbl    ASO_QUOTE_PUB.Qte_Access_Tbl_Type := p_qte_access_tbl;
682     --l_qte_access_tbl    ASO_SECURITY_INT.Qte_Access_Tbl_Type := p_qte_access_tbl;
683     --lx_qte_access_tbl   ASO_SECURITY_INT.Qte_Access_Tbl_Type;
684     lx_price_attr_tbl          ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
685 
686 BEGIN
687     x_qte_header_rec := p_qte_header_rec;
688     l_sysdate := sysdate;
689 
690     --Commented Code Start Yogeshwar (MOAC)
691     /* IF p_qte_header_rec.ORG_ID IS NULL OR p_qte_header_rec.ORG_ID = FND_API.G_MISS_NUM THEN
692 
693        IF SUBSTRB(USERENV('CLIENT_INFO'),1 ,1) = ' ' THEN
694            l_org_id := NULL;
695        ELSE
696            l_org_id := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'), 1,10));
697        END IF;
698 
699     ELSIF p_qte_header_rec.ORG_ID IS NOT NULL AND p_qte_header_rec.ORG_ID <> FND_API.G_MISS_NUM THEN
700          l_org_id :=  p_qte_header_rec.ORG_ID;
701     END IF;
702     */ --Commented Code End Yogeshwar (MOAC)
703 
704     --New Code Start Yogeshwar (MOAC)
705        If p_qte_header_rec.org_id  IS NULL THEN
706 		l_org_id := FND_API.G_MISS_NUM;
707 	Else
708 		l_org_id := p_qte_header_rec.org_id;
709 	End if;
710 	l_valid_org_id:= MO_GLOBAL.get_valid_org(l_org_id);
711 	if l_valid_org_id is NULL then
712 		x_return_status := FND_API.G_RET_STS_ERROR;
713 		RAISE FND_API.G_EXC_ERROR;
714 	else
715 		l_org_id := l_valid_org_id ;
716 	End if;
717    --New Code End Yogeshwar (MOAC)
718 
719     lx_qte_header_id := p_qte_header_rec.quote_header_id;
720 
721     IF aso_debug_pub.g_debug_flag = 'Y' THEN
722     aso_debug_pub.add('Begin Insert Rows', 1, 'Y');
723     END IF;
724 
725     ASO_QUOTE_HEADERS_PKG.Insert_Row(
726 	  px_QUOTE_HEADER_ID  => lx_qte_header_id,
727 	  p_CREATION_DATE  => l_SYSDATE,
728 	  p_CREATED_BY	=> G_USER_ID,
729 	  p_LAST_UPDATE_DATE  => l_sysdate,
730 	  p_LAST_UPDATED_BY  => G_USER_ID,
731 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
732 	  p_REQUEST_ID	=> p_qte_header_rec.REQUEST_ID,
733 	  p_PROGRAM_APPLICATION_ID  => p_qte_header_rec.PROGRAM_APPLICATION_ID,
734 	  p_PROGRAM_ID	=> p_qte_header_rec.PROGRAM_ID,
735 	  p_PROGRAM_UPDATE_DATE  => p_qte_header_rec.PROGRAM_UPDATE_DATE,
736 	  p_ORG_ID  => l_org_id,
737 	  p_QUOTE_NAME	=> p_qte_header_rec.QUOTE_NAME,
738 	  p_QUOTE_NUMBER  => p_qte_header_rec.QUOTE_NUMBER,
739 	  p_QUOTE_VERSION  => p_qte_header_rec.QUOTE_VERSION,
740 	  p_QUOTE_STATUS_ID  => p_qte_header_rec.QUOTE_STATUS_ID,
741 	  p_QUOTE_SOURCE_CODE  => p_qte_header_rec.QUOTE_SOURCE_CODE,
742 	  p_QUOTE_EXPIRATION_DATE  => trunc(p_qte_header_rec.QUOTE_EXPIRATION_DATE),
743 	  p_PRICE_FROZEN_DATE  => p_qte_header_rec.PRICE_FROZEN_DATE,
744 	  p_QUOTE_PASSWORD  => p_qte_header_rec.QUOTE_PASSWORD,
745 	  p_ORIGINAL_SYSTEM_REFERENCE  => p_qte_header_rec.ORIGINAL_SYSTEM_REFERENCE,
746 	  p_PARTY_ID  => p_qte_header_rec.PARTY_ID,
747 	  p_CUST_ACCOUNT_ID  => p_qte_header_rec.CUST_ACCOUNT_ID,
748 	  p_ORG_CONTACT_ID  => p_qte_header_rec.ORG_CONTACT_ID,
749 	  p_PHONE_ID  => p_QTE_header_rec.PHONE_ID,
750 	  p_INVOICE_TO_PARTY_SITE_ID  => p_qte_header_rec.INVOICE_TO_PARTY_SITE_ID,
751 	  p_INVOICE_TO_PARTY_ID  => p_qte_header_rec.INVOICE_TO_PARTY_ID,
752           p_Invoice_to_CUST_ACCOUNT_ID  => p_qte_header_rec.Invoice_to_CUST_ACCOUNT_ID,
753 	  p_ORIG_MKTG_SOURCE_CODE_ID  => p_qte_header_rec.ORIG_MKTG_SOURCE_CODE_ID,
754 	  p_MARKETING_SOURCE_CODE_ID  => p_qte_header_rec.MARKETING_SOURCE_CODE_ID,
755 	  p_ORDER_TYPE_ID  => p_qte_header_rec.ORDER_TYPE_ID,
756 	  p_QUOTE_CATEGORY_CODE  => p_qte_header_rec.QUOTE_CATEGORY_CODE,
757 	  p_ORDERED_DATE  => p_qte_header_rec.ORDERED_DATE,
758 	  p_ACCOUNTING_RULE_ID	=> p_qte_header_rec.ACCOUNTING_RULE_ID,
759 	  p_INVOICING_RULE_ID  => p_qte_header_rec.INVOICING_RULE_ID,
760 	  p_EMPLOYEE_PERSON_ID	=> p_qte_header_rec.EMPLOYEE_PERSON_ID,
761 	  p_PRICE_LIST_ID  => p_qte_header_rec.PRICE_LIST_ID,
762 	  p_CURRENCY_CODE  => p_qte_header_rec.CURRENCY_CODE,
763 	  p_TOTAL_LIST_PRICE  => p_qte_header_rec.TOTAL_LIST_PRICE,
764 	  p_TOTAL_ADJUSTED_AMOUNT  => p_qte_header_rec.TOTAL_ADJUSTED_AMOUNT,
765 	  p_TOTAL_ADJUSTED_PERCENT  => p_qte_header_rec.TOTAL_ADJUSTED_PERCENT,
766 	  p_TOTAL_TAX  => p_qte_header_rec.TOTAL_TAX,
767 	  p_TOTAL_SHIPPING_CHARGE  => p_qte_header_rec.TOTAL_SHIPPING_CHARGE,
768 	  p_SURCHARGE  => p_qte_header_rec.SURCHARGE,
769 	  p_TOTAL_QUOTE_PRICE  => p_qte_header_rec.TOTAL_QUOTE_PRICE,
770 	  p_PAYMENT_AMOUNT  => p_qte_header_rec.PAYMENT_AMOUNT,
771 	  p_EXCHANGE_RATE  => p_qte_header_rec.EXCHANGE_RATE,
772 	  p_EXCHANGE_TYPE_CODE	=> p_qte_header_rec.EXCHANGE_TYPE_CODE,
773 	  p_EXCHANGE_RATE_DATE	=> p_qte_header_rec.EXCHANGE_RATE_DATE,
774 	  p_CONTRACT_ID  => p_qte_header_rec.CONTRACT_ID,
775 	  p_SALES_CHANNEL_CODE	=> p_qte_header_rec.SALES_CHANNEL_CODE,
776 	  p_ORDER_ID  => p_QTE_header_rec.ORDER_ID,
777 	  p_RESOURCE_ID =>  p_qte_header_rec.RESOURCE_ID,
778 	  p_ATTRIBUTE_CATEGORY	=> p_qte_header_rec.ATTRIBUTE_CATEGORY,
779 	  p_ATTRIBUTE1	=> p_qte_header_rec.ATTRIBUTE1,
780 	  p_ATTRIBUTE2	=> p_qte_header_rec.ATTRIBUTE2,
781 	  p_ATTRIBUTE3	=> p_qte_header_rec.ATTRIBUTE3,
782 	  p_ATTRIBUTE4	=> p_qte_header_rec.ATTRIBUTE4,
783 	  p_ATTRIBUTE5	=> p_qte_header_rec.ATTRIBUTE5,
784 	  p_ATTRIBUTE6	=> p_qte_header_rec.ATTRIBUTE6,
785 	  p_ATTRIBUTE7	=> p_qte_header_rec.ATTRIBUTE7,
786 	  p_ATTRIBUTE8	=> p_qte_header_rec.ATTRIBUTE8,
787 	  p_ATTRIBUTE9	=> p_qte_header_rec.ATTRIBUTE9,
788 	  p_ATTRIBUTE10  => p_qte_header_rec.ATTRIBUTE10,
789 	  p_ATTRIBUTE11  => p_qte_header_rec.ATTRIBUTE11,
790 	  p_ATTRIBUTE12  => p_qte_header_rec.ATTRIBUTE12,
791 	  p_ATTRIBUTE13  => p_qte_header_rec.ATTRIBUTE13,
792 	  p_ATTRIBUTE14  => p_qte_header_rec.ATTRIBUTE14,
793 	  p_ATTRIBUTE15  => p_qte_header_rec.ATTRIBUTE15,
794        p_ATTRIBUTE16  => p_qte_header_rec.ATTRIBUTE16,
795        p_ATTRIBUTE17  => p_qte_header_rec.ATTRIBUTE17,
796        p_ATTRIBUTE18  => p_qte_header_rec.ATTRIBUTE18,
797        p_ATTRIBUTE19  => p_qte_header_rec.ATTRIBUTE19,
798        p_ATTRIBUTE20  => p_qte_header_rec.ATTRIBUTE20,
799 -- hyang new okc
800 	  p_CONTRACT_TEMPLATE_ID  => FND_API.G_MISS_NUM,
801 	  p_CONTRACT_TEMPLATE_MAJOR_VER  => FND_API.G_MISS_NUM,
802 	  p_CONTRACT_REQUESTER_ID   => FND_API.G_MISS_NUM,
803 	  p_CONTRACT_APPROVAL_LEVEL => FND_API.G_MISS_CHAR,
804 -- end of hyang new okc
805 	  p_PUBLISH_FLAG            => p_qte_header_rec.PUBLISH_FLAG,
806 	  p_RESOURCE_GRP_ID         => p_qte_header_rec.RESOURCE_GRP_ID,
807           p_SOLD_TO_PARTY_SITE_ID   => p_qte_header_rec.SOLD_TO_PARTY_SITE_ID,
808           p_DISPLAY_ARITHMETIC_OPERATOR => p_qte_header_rec.DISPLAY_ARITHMETIC_OPERATOR,
809           p_MAX_VERSION_FLAG        => p_qte_header_rec.max_version_flag,
810           p_QUOTE_TYPE              => p_qte_header_rec.QUOTE_TYPE,
811           p_QUOTE_DESCRIPTION       => p_qte_header_rec.QUOTE_DESCRIPTION,
812           p_MINISITE_ID             => p_qte_header_rec.MINISITE_ID,
813 	  p_CUST_PARTY_ID          => p_qte_header_rec.CUST_PARTY_ID,
814 	  p_INVOICE_TO_CUST_PARTY_ID => p_qte_header_rec.INVOICE_TO_CUST_PARTY_ID,
815 	  p_Pricing_Status_indicator  	     =>  p_qte_header_rec.Pricing_Status_indicator,
816 	  p_Tax_status_Indicator	     =>  p_qte_header_rec.Tax_status_Indicator,
817 	  p_Price_updated_date	     	     =>  p_qte_header_rec.Price_updated_date,
818 	  p_Tax_updated_date		     =>  p_qte_header_rec.Tax_updated_date,
819 	  p_Recalculate_flag		     =>  p_qte_header_rec.Recalculate_flag,
820 	  p_price_request_id		     => p_qte_header_rec.price_request_id,
821 	  p_credit_update_date		     => p_qte_header_rec.credit_update_date,
822 -- hyang new okc
823     P_Customer_Name_And_Title       =>  p_qte_header_rec.Customer_Name_And_Title,
824     P_Customer_Signature_Date       =>  p_qte_header_rec.Customer_Signature_Date,
825     P_Supplier_Name_And_Title       =>  p_qte_header_rec.Supplier_Name_And_Title,
826     P_Supplier_Signature_Date       =>  p_qte_header_rec.Supplier_Signature_Date,
827 -- end of hyang new okc
828     p_END_CUSTOMER_PARTY_ID         =>  p_qte_header_rec.END_CUSTOMER_PARTY_ID,
829     p_END_CUSTOMER_CUST_PARTY_ID    =>  p_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID,
830     p_END_CUSTOMER_PARTY_SITE_ID    =>  p_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID,
831     p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
832     P_OBJECT_VERSION_NUMBER         =>  p_qte_header_rec.OBJECT_VERSION_NUMBER,
833     p_assistance_requested          =>  p_qte_header_rec.assistance_requested,
834     p_assistance_reason_code        =>  p_qte_header_rec.assistance_reason_code,
835     p_automatic_price_flag          =>  p_qte_header_rec.automatic_price_flag,
836     p_automatic_tax_flag            =>  p_qte_header_rec.automatic_tax_flag,
837     p_header_paynow_charges         =>  p_qte_header_rec.header_paynow_charges
838 );
839 
840     x_qte_header_rec.QUOTE_HEADER_ID := lx_qte_header_id;
841     x_qte_header_rec.LAST_UPDATE_DATE := l_sysdate;
842      x_qte_header_rec.CREATION_DATE := l_sysdate;
843 	x_qte_header_rec.max_version_flag := 'Y';
844      IF aso_debug_pub.g_debug_flag = 'Y' THEN
845 	aso_debug_pub.add('After quote headers.insert rows - Insert Rows', 1, 'Y');
846 	END IF;
847 
848     x_price_adjustment_tbl := p_price_adjustment_tbl;
849     l_price_adj_attr_tbl := p_price_adj_attr_tbl;
850     FOR i IN 1..P_Price_Adjustment_Tbl.count LOOP
851 	l_price_adj_rec := p_price_adjustment_tbl(i);
852      -- BC4J Fix
853 	--x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
854     l_sysdate := sysdate;
855 	ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
856 	    px_PRICE_ADJUSTMENT_ID  => x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID,
857 	    p_CREATION_DATE  => SYSDATE,
858 	    p_CREATED_BY  => G_USER_ID,
859 	    p_LAST_UPDATE_DATE	=> l_sysdate,
860 	    p_LAST_UPDATED_BY  => G_USER_ID,
861 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
862 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
863 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
864 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
865 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
866 	    p_QUOTE_HEADER_ID  => lx_QTE_HEADER_ID,
867 	    p_QUOTE_LINE_ID  => NULL,
868 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
869 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
870 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
871 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
872 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
873 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
874 	    p_OPERAND  => l_price_adj_rec.OPERAND,
875 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
876 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
877 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
878 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
879 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
880 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
881 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
882 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
883 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
884 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
885 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
886 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
887 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
888 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
889 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
890 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
891 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
892 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
893 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
894 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
895 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
896 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
897 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
898          p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
899 	    p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
900 	    p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
901 	    p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
902 	    p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
903   p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
904           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
905           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
906           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
907           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
908           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
909           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
910           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
911           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
912           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
913           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
914           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
915           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
916           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
917           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
918           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
919           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
920           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
921           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
922           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
923           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
924           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
925           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
926           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
927           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
928           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
929           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
930           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
931           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
932           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
933           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
934           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
935           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
936           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
937           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
938           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
939           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
940           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
941           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
942           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
943           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
944           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
945 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
946 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
947 	     p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
948 		P_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
949         );
950         x_price_adjustment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
951 	FOR j in 1..l_price_adj_attr_tbl.count LOOP
952 	    IF l_price_adj_attr_tbl(j).price_adj_index = i THEN
953 		l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID;
954 	    END IF;
955 	END LOOP;
956     END LOOP;
957 
958     x_price_adj_attr_tbl := l_price_adj_attr_tbl;
959     FOR i in 1..l_price_adj_attr_tbl.count LOOP
960      -- BC4J Fix
961 	--x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := NULL;
962      l_sysdate := sysdate;
963 	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
964 		px_PRICE_ADJ_ATTRIB_ID	 => x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
965 		p_CREATION_DATE  => SYSDATE,
966 		p_CREATED_BY  => G_USER_ID,
967 		p_LAST_UPDATE_DATE  => l_sysdate,
968 		p_LAST_UPDATED_BY  => G_USER_ID,
969 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
970 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
971 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
972 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
973 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
974 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
975 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
976 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
977 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
978 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
979 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
980 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
981 		P_OBJECT_VERSION_NUMBER => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
982         x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
983     END LOOP;
984 
985     IF aso_debug_pub.g_debug_flag = 'Y' THEN
986     aso_debug_pub.add('After Price_adj.insert_rows - Insert Rows', 1, 'Y');
987     END IF;
988 
989     x_payment_tbl := p_payment_tbl;
990 
991     FOR i IN 1..P_Payment_Tbl.count LOOP
992 
993 	l_payment_rec := p_payment_tbl(i);
994 	l_payment_rec.payment_term_id_from := p_payment_tbl(i).payment_term_id;
995 
996     IF aso_debug_pub.g_debug_flag = 'Y' THEN
997        aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows p_payment_tbl(i).payment_term_id'||p_payment_tbl(i).payment_term_id, 1, 'Y');
998        aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows l_payment_rec.PAYMENT_TERM_ID_FROM'||l_payment_rec.PAYMENT_TERM_ID_FROM, 1, 'Y');
999     END IF;
1000 
1001      -- BC4J Fix
1002 	--x_payment_tbl(i).payment_id := null;
1003 	x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
1004         l_sysdate := sysdate;
1005 
1006 
1007      --  Payments Changes
1008 
1009 	    l_payment_rec.quote_header_id := lx_qte_header_id;
1010 
1011            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1012                aso_debug_pub.add('Insert_Rows: Before  call to create_payment_row ', 1, 'Y');
1013            END IF;
1014 
1015          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
1016                                              x_payment_rec   => x_payment_tbl(i),
1017                                              x_return_status => x_return_status,
1018                                              x_msg_count     => x_msg_count,
1019                                              x_msg_data      => x_msg_data);
1020 
1021            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1022                aso_debug_pub.add('Insert_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
1023            END IF;
1024 
1025             if x_return_status <> fnd_api.g_ret_sts_success then
1026               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1027                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1028               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1029                  RAISE FND_API.G_EXC_ERROR;
1030               ELSE
1031                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1032               END IF;
1033             end if;
1034 
1035 	x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
1036 
1037 	-- End Payment Changes
1038      x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1039 
1040     END LOOP;
1041 
1042     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1043     aso_debug_pub.add('After Payments.insert_rows - Insert Rows', 1, 'Y');
1044     END IF;
1045 
1046     x_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_Rec;
1047 
1048     IF p_shipment_tbl.count > 0 THEN
1049 
1050 	x_shipment_rec := p_shipment_tbl(1);
1051         x_shipment_rec.ship_method_code_from   := p_shipment_tbl(1).ship_method_code;
1052         x_shipment_rec.freight_terms_code_from := p_shipment_tbl(1).freight_terms_code;
1053 
1054      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1055       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows - p_shipment_tbl(1).ship_method_code'||p_shipment_tbl(1).ship_method_code, 1, 'Y');
1056       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows - p_shipment_tbl(1).freight_terms_code'||p_shipment_tbl(1).freight_terms_code, 1, 'Y');
1057      END IF;
1058 
1059         l_sysdate := sysdate;
1060      -- BC4J Fix
1061      lx_shipment_id := p_shipment_tbl(1).shipment_id;
1062 
1063 	ASO_SHIPMENTS_PKG.Insert_Row(
1064 	    px_SHIPMENT_ID  => lx_shipment_id,
1065 	    p_CREATION_DATE  => SYSDATE,
1066 	    p_CREATED_BY  => G_USER_ID,
1067 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1068 	    p_LAST_UPDATED_BY  => G_USER_ID,
1069 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1070 	    p_REQUEST_ID  => x_shipment_rec.REQUEST_ID,
1071 	    p_PROGRAM_APPLICATION_ID  => x_shipment_rec.PROGRAM_APPLICATION_ID,
1072 	    p_PROGRAM_ID  => x_shipment_rec.PROGRAM_ID,
1073 	    p_PROGRAM_UPDATE_DATE  => x_shipment_rec.PROGRAM_UPDATE_DATE,
1074 	    p_QUOTE_HEADER_ID  => lx_Qte_HEADER_ID,
1075 	    p_QUOTE_LINE_ID  => NULL,
1076 	    p_PROMISE_DATE  => x_shipment_rec.PROMISE_DATE,
1077 	    p_REQUEST_DATE  => x_shipment_rec.REQUEST_DATE,
1078 	    p_SCHEDULE_SHIP_DATE  => x_shipment_rec.SCHEDULE_SHIP_DATE,
1079 	    p_SHIP_TO_PARTY_SITE_ID  => x_shipment_rec.SHIP_TO_PARTY_SITE_ID,
1080 	    p_SHIP_TO_PARTY_ID	=> x_shipment_rec.SHIP_TO_PARTY_ID,
1081          p_SHIP_TO_CUST_ACCOUNT_ID  => x_Shipment_rec.SHIP_TO_CUST_ACCOUNT_ID,
1082 	    p_SHIP_PARTIAL_FLAG  => x_shipment_rec.SHIP_PARTIAL_FLAG,
1083 	    p_SHIP_SET_ID  => x_shipment_rec.SHIP_SET_ID,
1084 	    p_SHIP_METHOD_CODE	=> x_shipment_rec.SHIP_METHOD_CODE,
1085 	    p_FREIGHT_TERMS_CODE  => x_shipment_rec.FREIGHT_TERMS_CODE,
1086 	    p_FREIGHT_CARRIER_CODE  => x_shipment_rec.FREIGHT_CARRIER_CODE,
1087 	    p_FOB_CODE	=> x_shipment_rec.FOB_CODE,
1088 	    p_SHIPPING_INSTRUCTIONS  => x_shipment_rec.SHIPPING_INSTRUCTIONS,
1089 	    p_PACKING_INSTRUCTIONS  => x_shipment_rec.PACKING_INSTRUCTIONS,
1090 	    p_QUANTITY	=> x_shipment_rec.QUANTITY,
1091 	    p_RESERVED_QUANTITY  => x_shipment_rec.RESERVED_QUANTITY,
1092 	    p_RESERVATION_ID  => x_shipment_rec.RESERVATION_ID,
1093 	    p_ORDER_LINE_ID  => x_shipment_rec.ORDER_LINE_ID,
1094 	    p_ATTRIBUTE_CATEGORY  => x_SHIPMENT_rec.ATTRIBUTE_CATEGORY,
1095 	    p_ATTRIBUTE1  => x_shipment_rec.ATTRIBUTE1,
1096 	    p_ATTRIBUTE2  => x_shipment_rec.ATTRIBUTE2,
1097 	    p_ATTRIBUTE3  => x_shipment_rec.ATTRIBUTE3,
1098 	    p_ATTRIBUTE4  => x_shipment_rec.ATTRIBUTE4,
1099 	    p_ATTRIBUTE5  => x_shipment_rec.ATTRIBUTE5,
1100 	    p_ATTRIBUTE6  => x_shipment_rec.ATTRIBUTE6,
1101 	    p_ATTRIBUTE7  => x_shipment_rec.ATTRIBUTE7,
1102 	    p_ATTRIBUTE8  => x_shipment_rec.ATTRIBUTE8,
1103 	    p_ATTRIBUTE9  => x_shipment_rec.ATTRIBUTE9,
1104 	    p_ATTRIBUTE10  => x_shipment_rec.ATTRIBUTE10,
1105 	    p_ATTRIBUTE11  => x_shipment_rec.ATTRIBUTE11,
1106 	    p_ATTRIBUTE12  => x_shipment_rec.ATTRIBUTE12,
1107 	    p_ATTRIBUTE13  => x_shipment_rec.ATTRIBUTE13,
1108 	    p_ATTRIBUTE14  => x_shipment_rec.ATTRIBUTE14,
1109 	    p_ATTRIBUTE15  => x_shipment_rec.ATTRIBUTE15,
1110          p_ATTRIBUTE16  => x_shipment_rec.ATTRIBUTE16,
1111 	    p_ATTRIBUTE17  => x_shipment_rec.ATTRIBUTE17,
1112 	    p_ATTRIBUTE18  => x_shipment_rec.ATTRIBUTE18,
1113 	    p_ATTRIBUTE19  => x_shipment_rec.ATTRIBUTE19,
1114 	    p_ATTRIBUTE20  => x_shipment_rec.ATTRIBUTE20,
1115 	    p_SHIPMENT_PRIORITY_CODE => x_shipment_rec.SHIPMENT_PRIORITY_CODE,
1116          p_SHIP_QUOTE_PRICE => x_shipment_rec.SHIP_QUOTE_PRICE,
1117 	    p_SHIP_FROM_ORG_ID => x_shipment_rec.SHIP_FROM_ORG_ID,
1118 	    p_SHIP_TO_CUST_PARTY_ID => x_shipment_rec.SHIP_TO_CUST_PARTY_ID,
1119          p_SHIP_METHOD_CODE_FROM     => x_shipment_rec.SHIP_METHOD_CODE_FROM,
1120          p_FREIGHT_TERMS_CODE_FROM  => x_shipment_rec.FREIGHT_TERMS_CODE_FROM,
1121 	    P_OBJECT_VERSION_NUMBER => x_shipment_rec.OBJECT_VERSION_NUMBER,
1122          p_REQUEST_DATE_TYPE => x_shipment_rec.REQUEST_DATE_TYPE,
1123 	    p_demand_class_code => x_shipment_rec.demand_class_code
1124 );
1125 	x_shipment_rec.SHIPMENT_ID := lx_shipment_id;
1126         x_shipment_rec.LAST_UPDATE_DATE := l_sysdate;
1127 
1128     END IF;
1129     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1130     aso_debug_pub.add('After shipments.insert_rows - Insert Rows', 1, 'Y');
1131     END IF;
1132 
1133     IF lx_shipment_id IS NOT NULL and lx_shipment_id <> FND_API.G_MISS_NUM THEN
1134       x_freight_charge_tbl := p_freight_charge_tbl;
1135       FOR i IN 1..P_Freight_Charge_Tbl.count LOOP
1136 	l_freight_charge_rec := p_freight_charge_tbl(i);
1137      -- BC4J Fix
1138 	--x_FREIGHT_CHARGE_tbl(i).freight_charge_id := NULL;
1139     l_sysdate := sysdate;
1140 	ASO_FREIGHT_CHARGES_PKG.Insert_Row(
1141 	    px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
1142 	    p_CREATION_DATE  => SYSDATE,
1143 	    p_CREATED_BY  => G_USER_ID,
1144 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1145 	    p_LAST_UPDATED_BY  => G_USER_ID,
1146 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1147 	    p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
1148 	    p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
1149 	    p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
1150 	    p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
1151 	    p_QUOTE_SHIPMENT_ID  => lx_SHIPMENT_ID,
1152 	    p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
1153 	    p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
1154 	    p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
1155 	    p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
1156 	    p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
1157 	    p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
1158 	    p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
1159 	    p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
1160 	    p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
1161 	    p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
1162 	    p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
1163 	    p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
1164 	    p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
1165 	    p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
1166 	    p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
1167 	    p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
1168 	    p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
1169 	    p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
1170 	x_freight_charge_tbl(i).quote_shipment_id := lx_shipment_id;
1171     x_FREIGHT_CHARGE_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1172       END LOOP;
1173     END IF;
1174 
1175     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1176     aso_debug_pub.add('After Freight_charges.insert_rows - Insert Rows', 1, 'Y');
1177     END IF;
1178 
1179     x_tax_detail_tbl := p_tax_detail_tbl;
1180     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1181     aso_debug_pub.add('Insert Rows - tax.count: '||to_char(P_tax_detail_Tbl.count), 1, 'N');
1182     END IF;
1183 
1184     FOR i IN 1..P_tax_detail_Tbl.count LOOP
1185 	l_tax_detail_rec := x_tax_detail_tbl(i);
1186      -- BC4J Fix
1187 	--x_tax_detail_tbl(i).TAX_DETAIL_ID := NULL;
1188     l_sysdate := sysdate;
1189 	ASO_TAX_DETAILS_PKG.Insert_Row(
1190 	    px_TAX_DETAIL_ID  => x_tax_detail_tbl(i).TAX_DETAIL_ID,
1191 	    p_CREATION_DATE  => SYSDATE,
1192 	    p_CREATED_BY  => G_USER_ID,
1193 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1194 	    p_LAST_UPDATED_BY  => G_USER_ID,
1195 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1196 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
1197 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
1198 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
1199 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
1200 	    p_QUOTE_HEADER_ID  => lx_Qte_HEADER_ID,
1201 	    p_QUOTE_LINE_ID  => NULL,
1202 	    p_QUOTE_SHIPMENT_ID  => lx_SHIPMENT_ID,
1203 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
1204 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
1205 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
1206 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
1207 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
1208 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
1209 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
1210 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
1211 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
1212 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
1213 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
1214 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
1215 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
1216 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
1217 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
1218 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
1219 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
1220 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
1221 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
1222 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
1223 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
1224 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
1225 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
1226 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
1227 	    p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
1228 	    p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
1229 	    p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
1230 	    p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
1231 	    p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
1232 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
1233 	    p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
1234 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
1235 	    );
1236         x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1237     END LOOP;
1238     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1239     aso_debug_pub.add('After tax_details.insert_rows - Insert Rows', 1, 'Y');
1240     END IF;
1241 
1242       FOR i in 1..p_Sales_Credit_Tbl.count LOOP
1243 
1244      l_Sales_Credit_rec := p_sales_credit_tbl(i);
1245      l_sales_credit_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1246      x_sales_credit_tbl(i) := l_sales_credit_rec;
1247      -- BC4J Fix
1248      --x_sales_credit_tbl(i).sales_credit_id := NULL;
1249        ASO_SALES_CREDITS_PKG.Insert_Row(
1250           p_CREATION_DATE  => SYSDATE,
1251           p_CREATED_BY  => G_USER_ID,
1252           p_LAST_UPDATED_BY  => G_USER_ID,
1253           p_LAST_UPDATE_DATE  => SYSDATE,
1254           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1255           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
1256           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
1257           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
1258           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
1259           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
1260           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
1261           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
1262           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
1263           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
1264           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
1265           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
1266           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
1267 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
1268           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
1269           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
1270           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
1271           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
1272           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
1273           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
1274           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
1275           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
1276           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
1277           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
1278           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
1279           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
1280           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
1281           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
1282           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
1283           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
1284           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
1285 		p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
1286 		p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
1287 		p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
1288 		p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
1289 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
1290           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
1291           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
1292 
1293 END LOOP;
1294 
1295 
1296 -- insert into quote party table
1297  IF aso_debug_pub.g_debug_flag = 'Y' THEN
1298  aso_debug_pub.add('Insert Rows - Quote_party.count: ' || p_quote_party_Tbl.count, 1, 'N');
1299  aso_debug_pub.add('Insert Rows - Quote_party header: '|| x_qte_header_rec.quote_header_id, 1, 'N');
1300  END IF;
1301 
1302  FOR i IN 1..p_quote_party_Tbl.count LOOP
1303 	l_quote_party_rec := p_quote_party_tbl(i);
1304        -- l_quote_party_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
1305         l_quote_party_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1306         x_quote_party_tbl(i) := l_quote_party_rec;
1307         -- BC4J Fix
1308         --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
1309 
1310            ASO_QUOTE_PARTIES_PKG.Insert_Row(
1311           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
1312           p_CREATION_DATE  => SYSDATE,
1313           p_CREATED_BY  => G_USER_ID,
1314           p_LAST_UPDATE_DATE  => SYSDATE,
1315           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1316           p_LAST_UPDATED_BY  => G_USER_ID,
1317           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
1318           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
1319           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
1320           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
1321           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
1322           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
1323           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
1324           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
1325           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
1326           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
1327           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
1328           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
1329           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
1330           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
1331           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
1332           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
1333           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
1334           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
1335           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
1336           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
1337           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
1338           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
1339           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
1340           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
1341           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
1342           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
1343           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
1344   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
1345         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
1346 
1347  END LOOP;
1348 
1349 
1350     FOR i IN 1..P_hd_Attr_Ext_tbl.count LOOP
1351 	l_line_attribs_rec := P_hd_Attr_Ext_Tbl(i);
1352         l_line_attribs_rec.quote_header_id :=  x_qte_header_rec.QUOTE_HEADER_ID;
1353         X_hd_Attr_Ext_Tbl(i) := l_line_attribs_rec;
1354         -- BC4J Fix
1355 	   --X_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID := NULL;
1356 
1357  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
1358           px_LINE_ATTRIBUTE_ID  => x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID,
1359           p_CREATION_DATE          => SYSDATE,
1360           p_CREATED_BY             => G_USER_ID,
1361           p_LAST_UPDATE_DATE       => SYSDATE,
1362           p_LAST_UPDATED_BY        => G_USER_ID,
1363           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
1364           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
1365           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
1366           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
1367           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
1368            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
1369           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
1370           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
1371           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
1372           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
1373           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
1374           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
1375           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
1376            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
1377           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
1378           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
1379 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
1380 END LOOP;
1381 
1382 
1383 
1384  -- check for duplicate promotions, see bug 4521799
1385   IF aso_debug_pub.g_debug_flag = 'Y' THEN
1386      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
1387   END IF;
1388 
1389   ASO_VALIDATE_PVT.Validate_Promotion (
1390      P_Api_Version_Number       => 1.0,
1391      P_Init_Msg_List            => FND_API.G_FALSE,
1392      P_Commit                   => FND_API.G_FALSE,
1393      p_price_attr_tbl           => p_price_attributes_tbl,
1394      x_price_attr_tbl           => lx_price_attr_tbl,
1395      x_return_status            => x_return_status,
1396      x_msg_count                => x_msg_count,
1397      x_msg_data                 => x_msg_data);
1398 
1399    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1400       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
1401       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
1402    END IF;
1403 
1404    if x_return_status <> fnd_api.g_ret_sts_success then
1405       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1406          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1407       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1408          RAISE FND_API.G_EXC_ERROR;
1409       ELSE
1410          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1411       END IF;
1412    end if;
1413 
1414 
1415  -- end of check for duplicate promotions
1416 
1417 
1418 
1419 -- added by hagrawal
1420 
1421 FOR i in 1..p_price_attributes_tbl.count LOOP
1422 
1423      l_price_attributes_rec := p_price_attributes_tbl(i);
1424       l_price_attributes_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1425      x_price_attributes_tbl(i) := l_price_attributes_rec;
1426      -- BC4J Fix
1427 --x_price_attributes_tbl(i).price_attribute_id := NULL;
1428 ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
1429           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
1430           p_CREATION_DATE         => SYSDATE,
1431           p_CREATED_BY            => G_USER_ID,
1432           p_LAST_UPDATE_DATE      => SYSDATE,
1433           p_LAST_UPDATED_BY       => G_USER_ID,
1434           p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
1435           p_REQUEST_ID            => l_price_attributes_rec.REQUEST_ID,
1436           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
1437           p_PROGRAM_ID           => l_price_attributes_rec.PROGRAM_ID,
1438           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
1439           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
1440           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
1441           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
1442           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
1443           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
1444           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
1445           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
1446           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
1447           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
1448           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
1449           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
1450           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
1451           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
1452         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
1453         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
1454         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
1455         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
1456         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
1457         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
1458         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
1459         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
1460         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
1461         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
1462         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
1463         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
1464         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
1465         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
1466         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
1467         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
1468         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
1469         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
1470         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
1471         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
1472         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
1473         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
1474         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
1475         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
1476         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
1477         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
1478         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
1479         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
1480         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
1481         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
1482         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
1483         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
1484         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
1485         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
1486         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
1487         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
1488         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
1489         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
1490         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
1491         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
1492         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
1493         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
1494         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
1495         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
1496         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
1497         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
1498         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
1499         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
1500         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
1501         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
1502         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
1503         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
1504         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
1505         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
1506         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
1507         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
1508         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
1509         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
1510         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
1511         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
1512         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
1513         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
1514         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
1515         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
1516         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
1517         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
1518         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
1519         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
1520         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
1521         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
1522         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
1523         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
1524         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
1525         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
1526         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
1527         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
1528         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
1529         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
1530         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
1531         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
1532         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
1533         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
1534         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
1535         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
1536         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
1537         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
1538         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
1539         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
1540         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
1541         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
1542         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
1543           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
1544           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
1545           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
1546           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
1547           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
1548           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
1549           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
1550           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
1551           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
1552           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
1553           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
1554           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
1555           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
1556           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
1557           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
1558           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
1559 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
1560 		p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
1561 		p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
1562 		p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
1563 		p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
1564 		p_OBJECT_VERSION_NUMBER => l_price_attributes_rec.OBJECT_VERSION_NUMBER
1565 );
1566 
1567 END LOOP;
1568 
1569        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1570            aso_debug_pub.add('Insert_Rows: l_qte_access_tbl.count: '||l_qte_access_tbl.count, 1, 'Y');
1571        END IF;
1572 
1573        for i in 1 .. l_qte_access_tbl.count loop
1574            l_qte_access_tbl(i).quote_number     := p_qte_header_rec.quote_number;
1575            l_qte_access_tbl(i).batch_price_flag := fnd_api.g_false;
1576        end loop;
1577 
1578        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1579            aso_debug_pub.add('Insert_Rows: Before call to Add_Resource', 1, 'Y');
1580        END IF;
1581 
1582 	  if l_qte_access_tbl.count > 0 then
1583 
1584            ASO_SECURITY_INT.Add_Resource(
1585                    P_INIT_MSG_LIST              => FND_API.G_FALSE,
1586                    P_COMMIT                     => FND_API.G_FALSE,
1587                    P_Qte_Access_tbl             => l_qte_access_tbl,
1588 			    p_call_from_oafwk_flag       => FND_API.G_TRUE,
1589                    X_Qte_Access_tbl             => x_qte_access_tbl,
1590                    X_RETURN_STATUS              => x_return_status,
1591                    X_msg_count                  => X_msg_count,
1592                    X_msg_data                   => X_msg_data );
1593 
1594            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1595                aso_debug_pub.add('Insert_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
1596            END IF;
1597 
1598 	  end if;
1599 
1600 END Insert_Rows;
1601 
1602 
1603 PROCEDURE Update_Rows (
1604     P_qte_Header_Rec        IN   ASO_QUOTE_PUB.qte_header_rec_Type,
1605     p_Price_Attributes_Tbl  IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
1606     P_Price_Adjustment_Tbl  IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
1607     P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
1608     P_Payment_Tbl           IN   ASO_QUOTE_PUB.Payment_Tbl_Type,
1609     P_Shipment_Tbl          IN   ASO_QUOTE_PUB.Shipment_Tbl_Type,
1610     P_Freight_Charge_Tbl    IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
1611     P_Tax_Detail_Tbl        IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
1612     P_hd_Attr_Ext_Tbl       IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
1613     P_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
1614     P_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
1615     P_Qte_Access_Tbl        IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
1616     X_qte_Header_Rec        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.qte_header_rec_Type,
1617     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
1618     X_Price_Adjustment_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
1619     x_Price_Adj_Attr_Tbl	   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
1620     X_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
1621     X_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
1622     X_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
1623     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
1624     X_hd_Attr_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
1625     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
1626     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
1627     X_Qte_Access_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
1628     X_Return_Status	        OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1629     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
1630     X_Msg_Data	             OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1631     )
1632 IS
1633     l_price_adj_rec		   ASO_QUOTE_PUB.Price_Adj_Rec_Type;
1634     l_payment_rec		   ASO_QUOTE_PUB.Payment_Rec_Type;
1635     l_shipment_rec		   ASO_QUOTE_PUB.Shipment_Rec_Type;
1636     l_freight_charge_rec	   ASO_QUOTE_PUB.Freight_Charge_Rec_Type;
1637     l_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
1638     l_price_adj_attr_rec	   ASO_QUOTE_PUB.Price_Adj_Attr_Rec_Type;
1639     l_price_adj_attr_tbl	   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
1640     l_freight_charge_tbl	   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
1641     l_Sales_Credit_Tbl      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type ;
1642     l_Quote_Party_Tbl       ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
1643     l_Sales_Credit_rec      ASO_QUOTE_PUB.Sales_Credit_rec_Type ;
1644     l_Quote_Party_rec       ASO_QUOTE_PUB.Quote_Party_rec_Type;
1645     l_price_attributes_rec  ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
1646     l_line_attribs_rec      ASO_QUOTE_PUB.Line_Attribs_Ext_rec_Type;
1647     l_qte_access_tbl        ASO_QUOTE_PUB.Qte_Access_Tbl_Type;
1648     lx_qte_access_tbl       ASO_QUOTE_PUB.Qte_Access_Tbl_Type;
1649 
1650     l_sysdate DATE ;
1651     l_qte_header_id		   NUMBER  := p_qte_header_rec.quote_header_id;
1652    l_payment_tbl            ASO_QUOTE_PUB.Payment_Tbl_Type;
1653     G_USER_ID	             NUMBER  := FND_GLOBAL.USER_ID;
1654     G_LOGIN_ID	             NUMBER  := FND_GLOBAL.CONC_LOGIN_ID;
1655     l_qte_hdr_rec           ASO_QUOTE_PUB.qte_header_rec_Type;
1656     lx_price_attr_tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
1657 
1658 
1659 -- The following cursor is needed for Payment From column Maintenance.
1660     CURSOR c_db_payment_terms(p_payment_id  NUMBER) IS
1661     SELECT payment_term_id_from,payment_term_id
1662     FROM   ASO_PAYMENTS
1663     WHERE  payment_id = p_payment_id;
1664 
1665 -- The following cursors is needed for ship_method_code and Freight Terms Code From column Maintenance.
1666     CURSOR c_db_ship_freight_terms(p_shipment_id  NUMBER) IS
1667     SELECT ship_method_code_from,ship_method_code,
1668     Freight_terms_code_from,Freight_terms_code
1669     FROM   ASO_SHIPMENTS
1670     WHERE  shipment_id = p_shipment_id;
1671 
1672     cursor c_quote_number is
1673     select quote_number from aso_quote_headers_all
1674     where quote_header_id = p_qte_header_rec.quote_header_id;
1675 
1676     cursor get_payment_type_code( l_payment_id Number) is
1677     select payment_type_code
1678     from aso_payments
1679     where payment_id = l_payment_id;
1680 
1681     cursor get_bill_to_party( l_qte_hdr_id Number) is
1682     select invoice_to_cust_party_id
1683     from aso_quote_headers_all
1684     where quote_header_id = l_qte_hdr_id;
1685 
1686 BEGIN
1687     x_return_status := fnd_api.g_ret_sts_success;
1688     x_qte_header_rec := p_qte_header_rec;
1689     l_sysdate := sysdate;
1690     x_qte_header_rec.last_update_date := l_sysdate;
1691 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1692 	 aso_debug_pub.add('Begin Update Rows', 1, 'Y');
1693 	 END IF;
1694 
1695     -- Validate the invoice to cust party id and payment info, if any
1696      IF p_payment_tbl.count = 0  then
1697        l_payment_tbl := aso_utility_pvt.Query_Payment_Rows( p_qte_header_rec.QUOTE_HEADER_ID,null);
1698 	Else
1699 	  l_payment_tbl := p_payment_tbl;
1700 	  -- check to see if the value has been changed, if not get orig value from db
1701 	  if l_payment_tbl(1).payment_type_code = fnd_api.g_miss_char then
1702 	   open get_payment_type_code(l_payment_tbl(1).payment_id);
1703 	   fetch get_payment_type_code into l_payment_tbl(1).payment_type_code;
1704 	   close get_payment_type_code;
1705 	  end if;
1706 	End if;
1707 	-- bill to customer may not have been changed, if so get orig value from db
1708 	l_qte_hdr_rec := p_qte_header_rec;
1709 	if l_qte_hdr_rec.invoice_to_cust_party_id = fnd_api.g_miss_num then
1710 	 open get_bill_to_party(l_qte_hdr_rec.quote_header_id);
1711 	 fetch get_bill_to_party into l_qte_hdr_rec.invoice_to_cust_party_id;
1712 	 close get_bill_to_party;
1713 	end if;
1714 
1715 	IF l_payment_tbl.count > 0 then
1716           l_payment_rec := l_payment_tbl(1);
1717         IF l_payment_rec.payment_type_code = 'CREDIT_CARD' THEN
1718            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1719               aso_debug_pub.add('Before  calling Validate_cc_info ', 1, 'Y');
1720            END IF;
1721            aso_validate_pvt.Validate_cc_info
1722             (
1723                 p_init_msg_list     =>  fnd_api.g_false,
1724                 p_payment_rec       =>  l_payment_rec,
1725                 p_qte_header_rec    =>  l_qte_hdr_rec,
1726                 P_Qte_Line_rec      =>  ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC,
1727                 x_return_status     =>  x_return_status,
1728                 x_msg_count         =>  x_msg_count,
1729                 x_msg_data          =>  x_msg_data);
1730 
1731            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1732               aso_debug_pub.add('after calling Validate_cc_info ', 1, 'Y');
1733               aso_debug_pub.add('Validate_cc_info  Return Status: '||x_return_status, 1, 'Y');
1734            END IF;
1735 
1736             if x_return_status <> fnd_api.g_ret_sts_success then
1737               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1738                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1739               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1740                  RAISE FND_API.G_EXC_ERROR;
1741               ELSE
1742                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1743               END IF;
1744             end if;
1745         END IF;
1746 
1747 	 End if;
1748 
1749 
1750     ASO_QUOTE_HEADERS_PKG.Update_Row(
1751 	  p_QUOTE_HEADER_ID  => p_qte_header_rec.QUOTE_HEADER_ID,
1752 	  p_CREATION_DATE  => p_qte_header_rec.creation_date,
1753 	  p_CREATED_BY	=> G_USER_ID,
1754 	  p_LAST_UPDATE_DATE  => l_sysdate,
1755 	  p_LAST_UPDATED_BY  => G_USER_ID,
1756 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1757 	  p_REQUEST_ID	=> p_qte_header_rec.REQUEST_ID,
1758 	  p_PROGRAM_APPLICATION_ID  => p_qte_header_rec.PROGRAM_APPLICATION_ID,
1759 	  p_PROGRAM_ID	=> p_qte_header_rec.PROGRAM_ID,
1760 	  p_PROGRAM_UPDATE_DATE  => p_qte_header_rec.PROGRAM_UPDATE_DATE,
1761 	  p_ORG_ID  => p_qte_header_rec.ORG_ID,
1762 	  p_QUOTE_NAME	=> p_qte_header_rec.QUOTE_NAME,
1763 	  p_QUOTE_NUMBER  => p_qte_header_rec.QUOTE_NUMBER,
1764 	  p_QUOTE_VERSION  => p_qte_header_rec.QUOTE_VERSION,
1765 	  p_QUOTE_STATUS_ID  => p_qte_header_rec.QUOTE_STATUS_ID,
1766 	  p_QUOTE_SOURCE_CODE  => p_qte_header_rec.QUOTE_SOURCE_CODE,
1767 	  p_QUOTE_EXPIRATION_DATE  => trunc(p_qte_header_rec.QUOTE_EXPIRATION_DATE),
1768 	  p_PRICE_FROZEN_DATE  => p_qte_header_rec.PRICE_FROZEN_DATE,
1769 	  p_QUOTE_PASSWORD  => p_qte_header_rec.QUOTE_PASSWORD,
1770 	  p_ORIGINAL_SYSTEM_REFERENCE  => p_qte_header_rec.ORIGINAL_SYSTEM_REFERENCE,
1771 	  p_PARTY_ID  => p_qte_header_rec.PARTY_ID,
1772 	  p_CUST_ACCOUNT_ID  => p_qte_header_rec.CUST_ACCOUNT_ID,
1773 	  p_ORG_CONTACT_ID  => p_qte_header_rec.ORG_CONTACT_ID,
1774 	  p_PHONE_ID  => p_QTE_header_rec.PHONE_ID,
1775 	  p_INVOICE_TO_PARTY_SITE_ID  => p_qte_header_rec.INVOICE_TO_PARTY_SITE_ID,
1776 	  p_INVOICE_TO_PARTY_ID  => p_qte_header_rec.INVOICE_TO_PARTY_ID,
1777        p_Invoice_to_CUST_ACCOUNT_ID  => p_qte_header_rec.Invoice_to_CUST_ACCOUNT_ID,
1778 	  p_ORIG_MKTG_SOURCE_CODE_ID  => p_qte_header_rec.ORIG_MKTG_SOURCE_CODE_ID,
1779 	  p_MARKETING_SOURCE_CODE_ID  => p_qte_header_rec.MARKETING_SOURCE_CODE_ID,
1780 	  p_ORDER_TYPE_ID  => p_qte_header_rec.ORDER_TYPE_ID,
1781 	  p_QUOTE_CATEGORY_CODE  => p_qte_header_rec.QUOTE_CATEGORY_CODE,
1782 	  p_ORDERED_DATE  => p_qte_header_rec.ORDERED_DATE,
1783 	  p_ACCOUNTING_RULE_ID	=> p_qte_header_rec.ACCOUNTING_RULE_ID,
1784 	  p_INVOICING_RULE_ID  => p_qte_header_rec.INVOICING_RULE_ID,
1785 	  p_EMPLOYEE_PERSON_ID	=> p_qte_header_rec.EMPLOYEE_PERSON_ID,
1786 	  p_PRICE_LIST_ID  => p_qte_header_rec.PRICE_LIST_ID,
1787 	  p_CURRENCY_CODE  => p_qte_header_rec.CURRENCY_CODE,
1788 	  p_TOTAL_LIST_PRICE  => p_qte_header_rec.TOTAL_LIST_PRICE,
1789 	  p_TOTAL_ADJUSTED_AMOUNT  => p_qte_header_rec.TOTAL_ADJUSTED_AMOUNT,
1790 	  p_TOTAL_ADJUSTED_PERCENT  => p_qte_header_rec.TOTAL_ADJUSTED_PERCENT,
1791 	  p_TOTAL_TAX  => p_qte_header_rec.TOTAL_TAX,
1792 	  p_TOTAL_SHIPPING_CHARGE  => p_qte_header_rec.TOTAL_SHIPPING_CHARGE,
1793 	  p_SURCHARGE  => p_qte_header_rec.SURCHARGE,
1794 	  p_TOTAL_QUOTE_PRICE  => p_qte_header_rec.TOTAL_QUOTE_PRICE,
1795 	  p_PAYMENT_AMOUNT  => p_qte_header_rec.PAYMENT_AMOUNT,
1796 	  p_EXCHANGE_RATE  => p_qte_header_rec.EXCHANGE_RATE,
1797 	  p_EXCHANGE_TYPE_CODE	=> p_qte_header_rec.EXCHANGE_TYPE_CODE,
1798 	  p_EXCHANGE_RATE_DATE	=> p_qte_header_rec.EXCHANGE_RATE_DATE,
1799 	  p_CONTRACT_ID  => p_qte_header_rec.CONTRACT_ID,
1800 	  p_SALES_CHANNEL_CODE	=> p_qte_header_rec.SALES_CHANNEL_CODE,
1801 	  p_ORDER_ID  => p_QTE_header_rec.ORDER_ID,
1802 	  p_RESOURCE_ID => p_qte_header_rec.RESOURCE_ID,
1803 	  p_ATTRIBUTE_CATEGORY	=> p_qte_header_rec.ATTRIBUTE_CATEGORY,
1804 	  p_ATTRIBUTE1	=> p_qte_header_rec.ATTRIBUTE1,
1805 	  p_ATTRIBUTE2	=> p_qte_header_rec.ATTRIBUTE2,
1806 	  p_ATTRIBUTE3	=> p_qte_header_rec.ATTRIBUTE3,
1807 	  p_ATTRIBUTE4	=> p_qte_header_rec.ATTRIBUTE4,
1808 	  p_ATTRIBUTE5	=> p_qte_header_rec.ATTRIBUTE5,
1809 	  p_ATTRIBUTE6	=> p_qte_header_rec.ATTRIBUTE6,
1810 	  p_ATTRIBUTE7	=> p_qte_header_rec.ATTRIBUTE7,
1811 	  p_ATTRIBUTE8	=> p_qte_header_rec.ATTRIBUTE8,
1812 	  p_ATTRIBUTE9	=> p_qte_header_rec.ATTRIBUTE9,
1813 	  p_ATTRIBUTE10  => p_qte_header_rec.ATTRIBUTE10,
1814 	  p_ATTRIBUTE11  => p_qte_header_rec.ATTRIBUTE11,
1815 	  p_ATTRIBUTE12  => p_qte_header_rec.ATTRIBUTE12,
1816 	  p_ATTRIBUTE13  => p_qte_header_rec.ATTRIBUTE13,
1817 	  p_ATTRIBUTE14  => p_qte_header_rec.ATTRIBUTE14,
1818 	  p_ATTRIBUTE15  => p_qte_header_rec.ATTRIBUTE15,
1819        p_ATTRIBUTE16  => p_qte_header_rec.ATTRIBUTE16,
1820        p_ATTRIBUTE17  => p_qte_header_rec.ATTRIBUTE17,
1821        p_ATTRIBUTE18  => p_qte_header_rec.ATTRIBUTE18,
1822        p_ATTRIBUTE19  => p_qte_header_rec.ATTRIBUTE19,
1823        p_ATTRIBUTE20  => p_qte_header_rec.ATTRIBUTE20,
1824 -- hyang new okc
1825 	  p_CONTRACT_TEMPLATE_ID  => FND_API.G_MISS_NUM,
1826 	  p_CONTRACT_TEMPLATE_MAJOR_VER  => FND_API.G_MISS_NUM,
1827 	  p_CONTRACT_REQUESTER_ID   => FND_API.G_MISS_NUM,
1828 	  p_CONTRACT_APPROVAL_LEVEL => FND_API.G_MISS_CHAR,
1829 -- end of hyang new okc
1830 	  p_PUBLISH_FLAG            => p_qte_header_rec.PUBLISH_FLAG,
1831 	  p_RESOURCE_GRP_ID         => p_qte_header_rec.RESOURCE_GRP_ID,
1832        p_SOLD_TO_PARTY_SITE_ID   => p_qte_header_rec.SOLD_TO_PARTY_SITE_ID,
1833 	  p_DISPLAY_ARITHMETIC_OPERATOR => p_qte_header_rec.DISPLAY_ARITHMETIC_OPERATOR,
1834 	  p_MAX_VERSION_FLAG     => p_qte_header_rec.MAX_VERSION_FLAG,
1835 	  p_QUOTE_TYPE           => p_qte_header_rec.QUOTE_TYPE,
1836 	  p_QUOTE_DESCRIPTION    => p_qte_header_rec.QUOTE_DESCRIPTION,
1837 	  p_MINISITE_ID          => p_qte_header_rec.MINISITE_ID,
1838 	  p_CUST_PARTY_ID          => p_qte_header_rec.CUST_PARTY_ID,
1839 	  p_INVOICE_TO_CUST_PARTY_ID => p_qte_header_rec.INVOICE_TO_CUST_PARTY_ID,
1840        p_Pricing_Status_indicator        =>  p_qte_header_rec.Pricing_Status_indicator,
1841        p_Tax_status_Indicator      =>  p_qte_header_rec.Tax_status_Indicator,
1842        p_Price_updated_date                  =>  p_qte_header_rec.Price_updated_date,
1843        p_Tax_updated_date               =>  p_qte_header_rec.Tax_updated_date,
1844        p_Recalculate_flag               =>  p_qte_header_rec.Recalculate_flag,
1845        p_price_request_id               => p_qte_header_rec.price_request_id,
1846        p_credit_update_date             => p_qte_header_rec.credit_update_date,
1847 -- hyang new okc
1848     P_Customer_Name_And_Title       =>  p_qte_header_rec.Customer_Name_And_Title,
1849     P_Customer_Signature_Date       =>  p_qte_header_rec.Customer_Signature_Date,
1850     P_Supplier_Name_And_Title       =>  p_qte_header_rec.Supplier_Name_And_Title,
1851     P_Supplier_Signature_Date       =>  p_qte_header_rec.Supplier_Signature_Date,
1852 -- end of hyang new okc
1853     p_END_CUSTOMER_PARTY_ID         =>  p_qte_header_rec.END_CUSTOMER_PARTY_ID,
1854     p_END_CUSTOMER_CUST_PARTY_ID    =>  p_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID,
1855     p_END_CUSTOMER_PARTY_SITE_ID    =>  p_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID,
1856     p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
1857     p_OBJECT_VERSION_NUMBER         =>  p_qte_header_rec.OBJECT_VERSION_NUMBER,
1858     p_assistance_requested          =>  p_qte_header_rec.assistance_requested,
1859     p_assistance_reason_code        =>  p_qte_header_rec.assistance_reason_code,
1860     p_automatic_price_flag          =>  p_qte_header_rec.automatic_price_flag,
1861     p_automatic_tax_flag            =>  p_qte_header_rec.automatic_tax_flag,
1862     p_header_paynow_charges         =>  p_qte_header_rec.header_paynow_charges
1863 );
1864     x_price_adjustment_tbl := p_price_adjustment_tbl;
1865     l_price_adj_attr_tbl := p_price_adj_attr_tbl;
1866      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1867 	aso_debug_pub.add('Update Rows - price_adj.count: '||x_price_adjustment_tbl.counT, 1, 'N');
1868 	END IF;
1869 
1870     FOR i IN 1..P_Price_Adjustment_Tbl.count LOOP
1871       IF P_Price_Adjustment_Tbl(i).operation_code = 'CREATE' THEN
1872 	l_price_adj_rec := p_price_adjustment_tbl(i);
1873      l_sysdate := sysdate;
1874      x_price_adjustment_tbl(i).last_update_date := l_sysdate;
1875      -- BC4J Fix
1876 	--x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
1877      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1878 	aso_debug_pub.add('Before price_adj.update_rows - Update Rows', 1, 'Y');
1879 	END IF;
1880 
1881 	ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
1882 	    px_PRICE_ADJUSTMENT_ID  => x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID,
1883 	    p_CREATION_DATE  => SYSDATE,
1884 	    p_CREATED_BY  => G_USER_ID,
1885 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1886 	    p_LAST_UPDATED_BY  => G_USER_ID,
1887 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1888 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
1889 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
1890 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
1891 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
1892 	    p_QUOTE_HEADER_ID  => l_qte_header_id,
1893 	    p_QUOTE_LINE_ID  => NULL,
1894 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
1895 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
1896 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
1897 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
1898 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
1899 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
1900 	    p_OPERAND  => l_price_adj_rec.OPERAND,
1901 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
1902 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
1903 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
1904 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
1905 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
1906 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
1907 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
1908 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
1909 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
1910 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
1911 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
1912 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
1913 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
1914 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
1915 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
1916 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
1917 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
1918 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
1919 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
1920 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
1921 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
1922 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
1923 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
1924            p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
1925           p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
1926           p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
1927           p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
1928           p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
1929           p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
1930           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
1931           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
1932           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
1933           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
1934           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
1935           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
1936           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
1937           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
1938           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
1939           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
1940           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
1941           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
1942           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
1943           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
1944           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
1945           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
1946           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
1947           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
1948           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
1949           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
1950           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
1951           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
1952           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
1953           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
1954           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
1955           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
1956           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
1957           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
1958           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
1959           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
1960           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
1961           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
1962           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
1963           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
1964           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
1965           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
1966           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
1967           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
1968           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
1969           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
1970           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
1971 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
1972 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
1973 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
1974 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
1975         );
1976 	FOR j in 1..l_price_adj_attr_tbl.count LOOP
1977 	    IF l_price_adj_attr_tbl(j).price_adj_index = i THEN
1978 		l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID;
1979 	    END IF;
1980 	END LOOP;
1981       ELSIF P_Price_Adjustment_Tbl(i).operation_code = 'UPDATE' THEN
1982 
1983 	l_price_adj_rec := p_price_adjustment_tbl(i);
1984     l_sysdate := sysdate;
1985     x_price_adjustment_tbl(i).last_update_date := l_sysdate;
1986 	ASO_PRICE_ADJUSTMENTS_PKG.Update_Row(
1987 	    p_PRICE_ADJUSTMENT_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID,
1988 	    p_CREATION_DATE  => l_price_adj_rec.creation_date,
1989 	    p_CREATED_BY  => G_USER_ID,
1990 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1991 	    p_LAST_UPDATED_BY  => G_USER_ID,
1992 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1993 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
1994 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
1995 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
1996 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
1997 	    p_QUOTE_HEADER_ID  => l_qte_header_id,
1998 	    p_QUOTE_LINE_ID  => NULL,
1999 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
2000 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
2001 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
2002 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
2003 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
2004 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
2005 	    p_OPERAND  => l_price_adj_rec.OPERAND,
2006 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
2007 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
2008 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
2009 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
2010 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
2011 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
2012 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
2013 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
2014 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
2015 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
2016 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
2017 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
2018 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
2019 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
2020 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
2021 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
2022 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
2023 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
2024 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
2025 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
2026 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
2027 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
2028 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
2029           p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
2030           p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
2031           p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
2032           p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
2033           p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
2034 		   p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
2035           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
2036           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
2037           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
2038           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
2039           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
2040           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
2041           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
2042           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
2043           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
2044           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
2045           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
2046           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
2047           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
2048           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
2049           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
2050           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
2051           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
2052           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
2053           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
2054           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
2055           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
2056           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
2057           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
2058           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
2059           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
2060           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
2061           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
2062           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
2063           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
2064           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
2065           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
2066           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
2067           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
2068           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
2069           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
2070           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
2071           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
2072           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
2073           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
2074           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
2075           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
2076 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
2077 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
2078 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
2079 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
2080         );
2081       ELSIF P_Price_Adjustment_Tbl(i).operation_code = 'DELETE' THEN
2082 	ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
2083 	    p_PRICE_ADJUSTMENT_ID  => p_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID);
2084       END IF;
2085     END LOOP;
2086 
2087     FOR i IN 1..l_Price_Adj_Attr_Tbl.count LOOP
2088 
2089       l_sysdate := sysdate;
2090 
2091       IF l_price_adj_attr_tbl(i).operation_code = 'CREATE'  and
2092 	    l_price_adj_attr_tbl(i).price_adjustment_id is not null and
2093 	    l_price_adj_attr_tbl(i).price_adjustment_id <> fnd_api.g_miss_num THEN
2094 
2095 
2096 	 x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
2097 
2098 	 --l_price_adj_attr_rec := l_price_adj_attr_tbl(i);
2099 	 -- BC4J Fix
2100 	 --x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := NULL;
2101       x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2102 
2103 	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
2104 		px_PRICE_ADJ_ATTRIB_ID	 => x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
2105 		p_CREATION_DATE  => SYSDATE,
2106 		p_CREATED_BY  => G_USER_ID,
2107 		p_LAST_UPDATE_DATE  => l_sysdate,
2108 		p_LAST_UPDATED_BY  => G_USER_ID,
2109 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2110 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
2111 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
2112 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
2113 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
2114 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
2115 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
2116 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
2117 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
2118 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
2119 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
2120 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
2121 		p_OBJECT_VERSION_NUMBER  => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER
2122 		);
2123 
2124       ELSIF l_Price_Adj_Attr_Tbl(i).operation_code = 'UPDATE' THEN
2125 
2126 	 x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
2127 	 --l_price_adj_attr_rec := l_price_adj_attr_tbl(i);
2128       x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2129 
2130 	ASO_PRICE_ADJ_ATTRIBS_PKG.Update_Row(
2131 		p_PRICE_ADJ_ATTRIB_ID	=> x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
2132 		p_CREATION_DATE  => l_price_adj_attr_tbl(i).creation_date,
2133 		p_CREATED_BY  => G_USER_ID,
2134 		p_LAST_UPDATE_DATE  => l_sysdate,
2135 		p_LAST_UPDATED_BY  => G_USER_ID,
2136 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2137 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
2138 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
2139 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
2140 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
2141 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
2142 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
2143 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
2144 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
2145 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
2146 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
2147 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
2148 		p_OBJECT_VERSION_NUMBER  => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
2149       ELSIF l_Price_Adj_Attr_Tbl(i).operation_code = 'DELETE' THEN
2150 	ASO_PRICE_ADJ_ATTRIBS_PKG.Delete_Row(
2151 	    p_PRICE_ADJ_ATTRIB_ID  => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID);
2152       END IF;
2153     END LOOP;
2154 
2155     x_payment_tbl := p_payment_tbl;
2156 
2157     FOR i IN 1..P_Payment_Tbl.count LOOP
2158       IF P_Payment_Tbl(i).operation_code = 'CREATE' THEN
2159 
2160           l_sysdate := sysdate;
2161 	  l_payment_rec := p_payment_tbl(i);
2162 	  l_payment_rec.PAYMENT_TERM_ID_FROM := p_payment_tbl(i).payment_term_id;
2163 
2164        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2165          aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows p_payment_tbl(i).payment_term_id'||p_payment_tbl(i).payment_term_id, 1, 'Y');
2166         aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows l_payment_rec.PAYMENT_TERM_ID_FROM'||l_payment_rec.PAYMENT_TERM_ID_FROM, 1, 'Y');
2167        END IF;
2168         -- BC4J Fix
2169 	   --x_payment_tbl(i).PAYMENT_ID := NULL;
2170            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2171 	   x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2172 
2173 
2174      --  Payments Changes
2175 
2176 	      l_payment_rec.quote_header_id := l_qte_header_id;
2177 
2178            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2179                aso_debug_pub.add('Update_Rows: Before  call to create_payment_row ', 1, 'Y');
2180            END IF;
2181 
2182          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
2183                                              x_payment_rec   => x_payment_tbl(i),
2184                                              x_return_status => x_return_status,
2185                                              x_msg_count     => x_msg_count,
2186                                              x_msg_data      => x_msg_data);
2187 
2188            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2189                aso_debug_pub.add('Update_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2190            END IF;
2191 
2192             if x_return_status <> fnd_api.g_ret_sts_success then
2193               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2194                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2195               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2196                  RAISE FND_API.G_EXC_ERROR;
2197               ELSE
2198                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2199               END IF;
2200             end if;
2201 
2202            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2203            x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2204 
2205      -- End Payment Changes
2206 
2207       ELSIF P_Payment_Tbl(i).operation_code = 'UPDATE' THEN
2208 
2209           l_payment_rec := p_payment_tbl(i);
2210           l_sysdate     := sysdate;
2211 
2212           IF l_payment_rec.payment_term_id = FND_API.G_MISS_NUM THEN
2213 
2214      	    FOR l_payment_db_rec IN c_db_payment_terms(p_payment_tbl(i).PAYMENT_ID) LOOP
2215 
2216                   IF l_payment_db_rec.payment_term_id_from IS NULL THEN
2217                       l_payment_rec.payment_term_id_from := l_payment_db_rec.payment_term_id;
2218                   END IF;
2219 
2220      	    END LOOP;
2221 
2222           ELSE
2223               l_payment_rec.payment_term_id_from := l_payment_rec.payment_term_id;
2224 
2225           END IF;
2226 
2227         IF aso_debug_pub.g_debug_flag = 'Y' THEN
2228          aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Update Rows l_payment_rec.payment_term_id'||l_payment_rec.payment_term_id, 1, 'Y');
2229         aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Update Rows l_payment_rec.PAYMENT_TERM_ID_FROM'||l_payment_rec.PAYMENT_TERM_ID_FROM, 1, 'Y');
2230         END IF;
2231 
2232         x_payment_tbl(i).last_update_date     := l_sysdate;
2233         x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
2234 
2235      -- Payments Changes
2236 
2237            l_payment_rec.quote_header_id := l_qte_header_id;
2238 
2239            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2240                aso_debug_pub.add('Update_Rows: Before  call to update_payment_row ', 1, 'Y');
2241            END IF;
2242 
2243          aso_payment_int.update_payment_row(p_payment_rec => l_payment_rec  ,
2244                                              x_payment_rec   => x_payment_tbl(i),
2245                                              x_return_status => x_return_status,
2246                                              x_msg_count     => x_msg_count,
2247                                              x_msg_data      => x_msg_data);
2248 
2249            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2250                aso_debug_pub.add('Update_Rows: After call to update_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2251            END IF;
2252 
2253             if x_return_status <> fnd_api.g_ret_sts_success then
2254               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2255                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2256               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2257                  RAISE FND_API.G_EXC_ERROR;
2258               ELSE
2259                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2260               END IF;
2261             end if;
2262 
2263            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2264            x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2265 
2266      -- End Payment Changes
2267 
2268       ELSIF P_Payment_Tbl(i).operation_code = 'DELETE' THEN
2269 
2270      -- Payments Changes
2271           l_payment_rec := P_Payment_Tbl(i);
2272           l_payment_rec.quote_header_id := l_qte_header_id;
2273 
2274            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2275                aso_debug_pub.add('Update_Rows: Before  call to delete_payment_row ', 1, 'Y');
2276            END IF;
2277 
2278          aso_payment_int.delete_payment_row(p_payment_rec => l_payment_rec  ,
2279                                              x_return_status => x_return_status,
2280                                              x_msg_count     => x_msg_count,
2281                                              x_msg_data      => x_msg_data);
2282 
2283            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2284                aso_debug_pub.add('Update_Rows: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2285            END IF;
2286             if x_return_status <> fnd_api.g_ret_sts_success then
2287               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2288                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2289               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2290                  RAISE FND_API.G_EXC_ERROR;
2291               ELSE
2292                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2293               END IF;
2294             end if;
2295 
2296      -- End Payment Changes
2297 
2298       END IF;
2299     END LOOP;
2300 
2301 
2302     x_shipment_tbl       := p_shipment_tbl;
2303     l_freight_charge_tbl := p_freight_charge_tbl;
2304 
2305     FOR i IN 1..P_Shipment_Tbl.count LOOP
2306 
2307       IF P_Shipment_Tbl(i).operation_code = 'CREATE' THEN
2308 
2309           l_shipment_rec                         :=  x_shipment_tbl(i);
2310           l_shipment_rec.ship_method_code_from   :=  p_shipment_tbl(1).ship_method_code;
2311           l_shipment_rec.freight_terms_code_from :=  p_shipment_tbl(1).freight_terms_code;
2312 
2313      IF aso_debug_pub.g_debug_flag = 'Y' THEN
2314       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows - p_shipment_tbl(1).ship_method_code'||p_shipment_tbl(1).ship_method_code, 1, 'Y');
2315       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows - p_shipment_tbl(1).freight_terms_code'||p_shipment_tbl(1).freight_terms_code, 1, 'Y');
2316      END IF;
2317 
2318        l_sysdate                                 := sysdate;
2319        -- BC4J Fix
2320        x_shipment_tbl(i).shipment_id           :=  p_shipment_tbl(1).shipment_id;
2321 	  --x_shipment_tbl(i).shipment_id             := null;
2322        x_shipment_tbl(i).last_update_date        := l_sysdate;
2323        x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
2324        x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
2325 
2326 	ASO_SHIPMENTS_PKG.Insert_Row(
2327 	    px_SHIPMENT_ID  => x_shipment_tbl(i).SHIPMENT_ID,
2328 	    p_CREATION_DATE  => SYSDATE,
2329 	    p_CREATED_BY  => G_USER_ID,
2330 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2331 	    p_LAST_UPDATED_BY  => G_USER_ID,
2332 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2333 	    p_REQUEST_ID  => l_shipment_rec.REQUEST_ID,
2334 	    p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
2335 	    p_PROGRAM_ID  => l_shipment_rec.PROGRAM_ID,
2336 	    p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
2337 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2338 	    p_QUOTE_LINE_ID  => NULL,
2339 	    p_PROMISE_DATE  => l_shipment_rec.PROMISE_DATE,
2340 	    p_REQUEST_DATE  => l_shipment_rec.REQUEST_DATE,
2341 	    p_SCHEDULE_SHIP_DATE  => l_shipment_rec.SCHEDULE_SHIP_DATE,
2342 	    p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
2343 	    p_SHIP_TO_PARTY_ID	=> l_shipment_rec.SHIP_TO_PARTY_ID,
2344             p_ship_to_CUST_ACCOUNT_ID  => l_shipment_rec.ship_to_CUST_ACCOUNT_ID,
2345 	    p_SHIP_PARTIAL_FLAG  => l_shipment_rec.SHIP_PARTIAL_FLAG,
2346 	    p_SHIP_SET_ID  => l_shipment_rec.SHIP_SET_ID,
2347 	    p_SHIP_METHOD_CODE	=> l_shipment_rec.SHIP_METHOD_CODE,
2348 	    p_FREIGHT_TERMS_CODE  => l_shipment_rec.FREIGHT_TERMS_CODE,
2349 	    p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
2350 	    p_FOB_CODE	=> l_shipment_rec.FOB_CODE,
2351 	    p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
2352 	    p_PACKING_INSTRUCTIONS  => l_shipment_rec.PACKING_INSTRUCTIONS,
2353 	    p_QUANTITY	=> l_shipment_rec.QUANTITY,
2354 	    p_RESERVED_QUANTITY  => l_shipment_rec.RESERVED_QUANTITY,
2355 	    p_RESERVATION_ID  => l_shipment_rec.RESERVATION_ID,
2356 	    p_ORDER_LINE_ID  => l_shipment_rec.ORDER_LINE_ID,
2357 	    p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
2358 	    p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
2359 	    p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
2360 	    p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
2361 	    p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
2362 	    p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
2363 	    p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
2364 	    p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
2365 	    p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
2366 	    p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
2367 	    p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
2368 	    p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
2369 	    p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
2370 	    p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
2371 	    p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
2372 	    p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
2373          p_ATTRIBUTE16  =>  l_shipment_rec.ATTRIBUTE16,
2374          p_ATTRIBUTE17  =>  l_shipment_rec.ATTRIBUTE17,
2375          p_ATTRIBUTE18  =>  l_shipment_rec.ATTRIBUTE18,
2376          p_ATTRIBUTE19  =>  l_shipment_rec.ATTRIBUTE19,
2377          p_ATTRIBUTE20  =>  l_shipment_rec.ATTRIBUTE20,
2378 		p_SHIPMENT_PRIORITY_CODE => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
2379           p_SHIP_QUOTE_PRICE => l_shipment_rec.SHIP_QUOTE_PRICE,
2380 	    p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
2381 	    p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
2382          p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
2383          p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
2384 	    p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
2385 	    p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
2386          p_demand_class_code => l_shipment_rec.demand_class_code
2387 	    );
2388 
2389 	FOR j IN 1..l_Freight_Charge_Tbl.count LOOP
2390 	  IF l_Freight_Charge_Tbl(j).shipment_index = i THEN
2391 	     l_freight_charge_tbl(j).QUOTE_SHIPMENT_ID := x_shipment_tbl(i).SHIPMENT_ID;
2392 	  END IF;
2393 	END LOOP;
2394 
2395 
2396      ELSIF P_Shipment_Tbl(i).operation_code = 'UPDATE' THEN
2397 
2398           l_sysdate                          := sysdate;
2399           x_shipment_tbl(i).last_update_date := l_sysdate;
2400           l_shipment_rec                     := x_shipment_tbl(i);
2401 
2402           IF l_shipment_rec.ship_method_code = fnd_api.g_miss_char THEN
2403 
2404             FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
2405 
2406 		    IF l_ship_db_rec.ship_method_code_from is null THEN
2407                   l_shipment_rec.ship_method_code_from := l_ship_db_rec.ship_method_code;
2408 		    END IF;
2409 
2410             END LOOP;
2411 
2412           ELSE
2413               l_shipment_rec.ship_method_code_from := l_shipment_rec.ship_method_code;
2414 
2415           END IF;
2416 
2417 
2418           IF l_shipment_rec.freight_terms_code = fnd_api.g_miss_char THEN
2419 
2420             FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
2421 
2422 		    IF l_ship_db_rec.freight_terms_code_from is null THEN
2423                   l_shipment_rec.freight_terms_code_from := l_ship_db_rec.freight_terms_code;
2424 		    END IF;
2425 
2426             END LOOP;
2427 
2428           ELSE
2429               l_shipment_rec.freight_terms_code_from := l_shipment_rec.freight_terms_code;
2430 
2431           END IF;
2432 
2433           IF aso_debug_pub.g_debug_flag = 'Y' THEN
2434             aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.update_rows - l_shipment_rec.ship_method_code'||l_shipment_rec.ship_method_code, 1, 'Y');
2435       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.update_rows - l_shipment_rec.freight_terms_code'||l_shipment_rec.freight_terms_code, 1, 'Y');
2436           END IF;
2437 
2438           x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
2439           x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
2440 
2441 	ASO_SHIPMENTS_PKG.Update_Row(
2442 	    p_SHIPMENT_ID  => l_shipment_rec.SHIPMENT_ID,
2443 	    p_CREATION_DATE  => l_shipment_rec.creation_date,
2444 	    p_CREATED_BY  => G_USER_ID,
2445 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2446 	    p_LAST_UPDATED_BY  => G_USER_ID,
2447 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2448 	    p_REQUEST_ID  => l_shipment_rec.REQUEST_ID,
2449 	    p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
2450 	    p_PROGRAM_ID  => l_shipment_rec.PROGRAM_ID,
2451 	    p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
2452 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2453 	    p_QUOTE_LINE_ID  => NULL,
2454 	    p_PROMISE_DATE  => l_shipment_rec.PROMISE_DATE,
2455 	    p_REQUEST_DATE  => l_shipment_rec.REQUEST_DATE,
2456 	    p_SCHEDULE_SHIP_DATE  => l_shipment_rec.SCHEDULE_SHIP_DATE,
2457 	    p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
2458 	    p_SHIP_TO_PARTY_ID	=> l_shipment_rec.SHIP_TO_PARTY_ID,
2459             p_ship_to_CUST_ACCOUNT_ID  => l_shipment_rec.ship_to_CUST_ACCOUNT_ID,
2460 	    p_SHIP_PARTIAL_FLAG  => l_shipment_rec.SHIP_PARTIAL_FLAG,
2461 	    p_SHIP_SET_ID  => l_shipment_rec.SHIP_SET_ID,
2462 	    p_SHIP_METHOD_CODE	=> l_shipment_rec.SHIP_METHOD_CODE,
2463 	    p_FREIGHT_TERMS_CODE  => l_shipment_rec.FREIGHT_TERMS_CODE,
2464 	    p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
2465 	    p_FOB_CODE	=> l_shipment_rec.FOB_CODE,
2466 	    p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
2467 	    p_PACKING_INSTRUCTIONS  => l_shipment_rec.PACKING_INSTRUCTIONS,
2468 	    p_QUANTITY	=> l_shipment_rec.QUANTITY,
2469 	    p_RESERVED_QUANTITY  => l_shipment_rec.RESERVED_QUANTITY,
2470 	    p_RESERVATION_ID  => l_shipment_rec.RESERVATION_ID,
2471 	    p_ORDER_LINE_ID  => l_shipment_rec.ORDER_LINE_ID,
2472 	    p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
2473 	    p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
2474 	    p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
2475 	    p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
2476 	    p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
2477 	    p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
2478 	    p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
2479 	    p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
2480 	    p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
2481 	    p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
2482 	    p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
2483 	    p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
2484 	    p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
2485 	    p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
2486 	    p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
2487 	    p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
2488           p_ATTRIBUTE16  =>  l_shipment_rec.ATTRIBUTE16,
2489           p_ATTRIBUTE17  =>  l_shipment_rec.ATTRIBUTE17,
2490           p_ATTRIBUTE18  =>  l_shipment_rec.ATTRIBUTE18,
2491           p_ATTRIBUTE19  =>  l_shipment_rec.ATTRIBUTE19,
2492           p_ATTRIBUTE20  =>  l_shipment_rec.ATTRIBUTE20,
2493 		p_SHIPMENT_PRIORITY_CODE => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
2494           p_SHIP_QUOTE_PRICE => l_shipment_rec.SHIP_QUOTE_PRICE,
2495 	    p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
2496 	    p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
2497          p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
2498          p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
2499 	    p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
2500          p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
2501          p_demand_class_code => l_shipment_rec.demand_class_code
2502          );
2503       ELSIF P_Shipment_Tbl(i).operation_code = 'DELETE' THEN
2504 	ASO_SHIPMENTS_PKG.Delete_Row(
2505 	    p_SHIPMENT_ID  => P_Shipment_Tbl(i).SHIPMENT_ID);
2506       END IF;
2507     END LOOP;
2508 
2509     x_freight_charge_tbl := l_freight_charge_tbl;
2510     FOR i IN 1..l_Freight_Charge_Tbl.count LOOP
2511 	 IF l_Freight_Charge_Tbl(i).operation_code = 'CREATE' THEN
2512      l_sysdate := sysdate;
2513 	    l_freight_charge_rec := l_freight_charge_tbl(i);
2514         x_FREIGHT_CHARGE_tbl(i).last_update_date := l_sysdate;
2515 	    -- BC4J Fix
2516 	    --x_FREIGHT_CHARGE_tbl(i).freight_charge_id := NULL;
2517 	    ASO_FREIGHT_CHARGES_PKG.Insert_Row(
2518 		px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
2519 		p_CREATION_DATE  => SYSDATE,
2520 	    	p_CREATED_BY  => G_USER_ID,
2521 	    	p_LAST_UPDATE_DATE  => l_sysdate,
2522 	    	p_LAST_UPDATED_BY  => G_USER_ID,
2523 	    	p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2524 	    	p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
2525 	    	p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
2526 	    	p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
2527 	    	p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
2528 	    	p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.Quote_SHIPMENT_ID,
2529 	    	p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
2530 	    	p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
2531 	    	p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
2532 	    	p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
2533 	    	p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
2534 	    	p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
2535 	    	p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
2536 	    	p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
2537 	    	p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
2538 	    	p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
2539 	    	p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
2540 	    	p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
2541 	    	p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
2542 	    	p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
2543 	    	p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
2544 	    	p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
2545 	    	p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
2546 	    	p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
2547 	 ELSIF l_Freight_Charge_Tbl(i).operation_code = 'UPDATE' THEN
2548         l_sysdate := sysdate;
2549 	    l_freight_charge_rec := l_freight_charge_tbl(i);
2550         x_FREIGHT_CHARGE_tbl(i).last_update_date := l_sysdate;
2551 	    ASO_FREIGHT_CHARGES_PKG.Update_Row(
2552 		p_FREIGHT_CHARGE_ID  => l_freight_charge_rec.freight_charge_id,
2553 		p_CREATION_DATE  => l_freight_charge_rec.creation_date,
2554 	    	p_CREATED_BY  => G_USER_ID,
2555 	    	p_LAST_UPDATE_DATE  => l_sysdate,
2556 	    	p_LAST_UPDATED_BY  => G_USER_ID,
2557 	    	p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2558 	    	p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
2559 	    	p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
2560 	    	p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
2561 	    	p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
2562 	    	p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.Quote_SHIPMENT_ID,
2563 	    	p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
2564 	    	p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
2565 	    	p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
2566 	    	p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
2567 	    	p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
2568 	    	p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
2569 	    	p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
2570 	    	p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
2571 	    	p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
2572 	    	p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
2573 	    	p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
2574 	    	p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
2575 	    	p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
2576 	    	p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
2577 	    	p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
2578 	    	p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
2579 	    	p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
2580 	    	p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
2581 	 ELSIF l_Freight_Charge_Tbl(i).operation_code = 'DELETE' THEN
2582 	     ASO_FREIGHT_CHARGES_PKG.Delete_Row(
2583 		p_FREIGHT_CHARGE_ID  => l_freight_charge_tbl(i).freight_charge_id);
2584 	 END IF;
2585     END LOOP;
2586 
2587     x_tax_detail_tbl := p_tax_detail_tbl;
2588     FOR i IN 1..P_Tax_Detail_Tbl.count LOOP
2589       IF P_Tax_Detail_Tbl(i).operation_code = 'CREATE' THEN
2590       l_sysdate := sysdate;
2591 	l_tax_detail_rec := x_tax_detail_tbl(i);
2592      -- BC4J Fix
2593 	--x_tax_detail_tbl(i).TAX_DETAIL_ID := NULL;
2594     x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2595 	ASO_TAX_DETAILS_PKG.Insert_Row(
2596 	    px_TAX_DETAIL_ID  => x_tax_detail_tbl(i).TAX_DETAIL_ID,
2597 	    p_CREATION_DATE  => SYSDATE,
2598 	    p_CREATED_BY  => G_USER_ID,
2599 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2600 	    p_LAST_UPDATED_BY  => G_USER_ID,
2601 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2602 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
2603 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
2604 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
2605 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
2606 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2607 	    p_QUOTE_LINE_ID  => NULL,
2608 	    p_QUOTE_SHIPMENT_ID  => l_tax_detail_rec.quote_shipment_id,
2609 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
2610 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
2611 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
2612 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
2613 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
2614 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
2615 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
2616 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
2617 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
2618 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
2619 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
2620 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
2621 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
2622 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
2623 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
2624 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
2625 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
2626 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
2627 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
2628 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
2629 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
2630 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
2631 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
2632 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
2633 	     p_ATTRIBUTE16  =>  l_tax_detail_rec.ATTRIBUTE16,
2634           p_ATTRIBUTE17  =>  l_tax_detail_rec.ATTRIBUTE17,
2635           p_ATTRIBUTE18  =>  l_tax_detail_rec.ATTRIBUTE18,
2636           p_ATTRIBUTE19  =>  l_tax_detail_rec.ATTRIBUTE19,
2637           p_ATTRIBUTE20  =>  l_tax_detail_rec.ATTRIBUTE20,
2638 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
2639 	    p_OBJECT_VERSION_NUMBER  => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
2640 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
2641 	    );
2642 
2643       ELSIF P_Tax_Detail_Tbl(i).operation_code = 'UPDATE' THEN
2644       l_sysdate := sysdate;
2645 	l_tax_detail_rec := x_tax_detail_tbl(i);
2646     x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2647 	ASO_TAX_DETAILS_PKG.update_Row(
2648 	    p_TAX_DETAIL_ID  => l_tax_detail_rec.TAX_DETAIL_ID,
2649 	    p_CREATION_DATE  => l_tax_detail_rec.creation_date,
2650 	    p_CREATED_BY  => G_USER_ID,
2651 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2652 	    p_LAST_UPDATED_BY  => G_USER_ID,
2653 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2654 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
2655 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
2656 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
2657 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
2658 	    p_QUOTE_HEADER_ID  => l_Qte_HEADER_ID,
2659 	    p_QUOTE_LINE_ID  => NULL,
2660 	    p_QUOTE_SHIPMENT_ID  => l_tax_detail_rec.quote_shipment_id,
2661 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
2662 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
2663 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
2664 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
2665 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
2666 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
2667 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
2668 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
2669 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
2670 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
2671 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
2672 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
2673 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
2674 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
2675 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
2676 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
2677 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
2678 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
2679 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
2680 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
2681 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
2682 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
2683 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
2684 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
2685           p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
2686           p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
2687           p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
2688           p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
2689           p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
2690 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
2691 	    p_OBJECT_VERSION_NUMBER  => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
2692 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
2693 	    );
2694       ELSIF P_Tax_Detail_Tbl(i).operation_code = 'DELETE' THEN
2695 	ASO_TAX_DETAILS_PKG.Delete_Row(
2696 	    p_TAX_DETAIL_ID  => P_Tax_Detail_Tbl(i).TAX_DETAIL_ID);
2697       END IF;
2698     END LOOP;
2699 
2700 
2701    -- check for duplicate promotions, see bug 4521799
2702   IF aso_debug_pub.g_debug_flag = 'Y' THEN
2703      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
2704   END IF;
2705 
2706   ASO_VALIDATE_PVT.Validate_Promotion (
2707      P_Api_Version_Number       => 1.0,
2708      P_Init_Msg_List            => FND_API.G_FALSE,
2709      P_Commit                   => FND_API.G_FALSE,
2710      p_price_attr_tbl           => p_price_attributes_tbl,
2711      x_price_attr_tbl           => lx_price_attr_tbl,
2712      x_return_status            => x_return_status,
2713      x_msg_count                => x_msg_count,
2714      x_msg_data                 => x_msg_data);
2715 
2716    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2717       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
2718       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
2719    END IF;
2720 
2721    if x_return_status <> fnd_api.g_ret_sts_success then
2722       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2723          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2724       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2725          RAISE FND_API.G_EXC_ERROR;
2726       ELSE
2727          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2728       END IF;
2729    end if;
2730 
2731 
2732  -- end of check for duplicate promotions
2733 
2734 
2735 
2736    -- Added to support the pricing attributes at header level
2737 
2738 
2739     FOR i in 1..p_Price_Attributes_Tbl.count LOOP
2740 
2741      l_price_attributes_rec := p_Price_Attributes_Tbl(i);
2742     -- l_price_attributes_rec.quote_line_id := p_qte_line_rec.quote_line_id;
2743      x_price_attributes_tbl(i) := l_price_attributes_rec;
2744 
2745      IF l_price_attributes_rec.operation_code = 'CREATE' THEN
2746 
2747       l_price_attributes_rec.quote_header_id := l_qte_header_id;
2748         -- BC4J Fix
2749 	   --x_price_attributes_tbl(1).price_attribute_id := NULL;
2750 
2751    ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
2752           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
2753           p_CREATION_DATE  	=> SYSDATE,
2754           p_CREATED_BY  	=> G_USER_ID,
2755           p_LAST_UPDATE_DATE  	=> SYSDATE,
2756           p_LAST_UPDATED_BY  	=> G_USER_ID,
2757           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
2758           p_REQUEST_ID  	=> l_price_attributes_rec.REQUEST_ID,
2759           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
2760           p_PROGRAM_ID  	=> l_price_attributes_rec.PROGRAM_ID,
2761           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
2762           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
2763           p_QUOTE_LINE_ID        => null,
2764           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
2765           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
2766           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
2767           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
2768           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
2769           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
2770           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
2771           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
2772           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
2773           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
2774           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
2775         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
2776         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
2777         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
2778         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
2779         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
2780         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
2781         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
2782         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
2783         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
2784         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
2785         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
2786         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
2787         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
2788         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
2789         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
2790         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
2791         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
2792         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
2793         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
2794         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
2795         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
2796         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
2797         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
2798         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
2799         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
2800         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
2801         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
2802         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
2803         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
2804         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
2805         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
2806         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
2807         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
2808         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
2809         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
2810         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
2811         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
2812         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
2813         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
2814         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
2815         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
2816         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
2817         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
2818         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
2819         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
2820         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
2821         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
2822         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
2823         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
2824         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
2825         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
2826         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
2827         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
2828         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
2829         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
2830         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
2831         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
2832         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
2833         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
2834         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
2835         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
2836         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
2837         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
2838         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
2839         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
2840         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
2841         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
2842         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
2843         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
2844         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
2845         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
2846         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
2847         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
2848         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
2849         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
2850         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
2851         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
2852         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
2853         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
2854         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
2855         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
2856         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
2857         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
2858         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
2859         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
2860         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
2861         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
2862         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
2863         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
2864         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
2865         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
2866           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
2867           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
2868           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
2869           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
2870           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
2871           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
2872           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
2873           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
2874           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
2875           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
2876           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
2877           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
2878           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
2879           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
2880           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
2881           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
2882 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
2883           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
2884           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
2885           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
2886           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
2887 	    p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
2888 );
2889 
2890 
2891    ELSIF l_price_attributes_rec.operation_code = 'UPDATE' THEN
2892 
2893 ASO_PRICE_ATTRIBUTES_PKG.Update_Row(
2894           p_PRICE_ATTRIBUTE_ID  => l_price_attributes_rec.price_attribute_id,
2895           p_CREATION_DATE  	=> l_price_attributes_rec.creation_date,
2896           p_CREATED_BY  	=> G_USER_ID,
2897           p_LAST_UPDATE_DATE  	=> SYSDATE,
2898           p_LAST_UPDATED_BY  	=> G_USER_ID,
2899           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
2900           p_REQUEST_ID  	=> l_price_attributes_rec.REQUEST_ID,
2901           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
2902           p_PROGRAM_ID  	 => l_price_attributes_rec.PROGRAM_ID,
2903           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
2904           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
2905           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
2906           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
2907           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
2908           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
2909           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
2910           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
2911           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
2912           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
2913           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
2914           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
2915           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
2916           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
2917         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
2918         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
2919         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
2920         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
2921         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
2922         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
2923         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
2924         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
2925         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
2926         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
2927         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
2928         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
2929         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
2930         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
2931         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
2932         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
2933         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
2934         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
2935         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
2936         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
2937         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
2938         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
2939         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
2940         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
2941         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
2942         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
2943         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
2944         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
2945         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
2946         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
2947         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
2948         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
2949         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
2950         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
2951         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
2952         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
2953         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
2954         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
2955         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
2956         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
2957         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
2958         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
2959         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
2960         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
2961         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
2962         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
2963         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
2964         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
2965         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
2966         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
2967         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
2968         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
2969         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
2970         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
2971         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
2972         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
2973         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
2974         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
2975         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
2976         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
2977         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
2978         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
2979         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
2980         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
2981         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
2982         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
2983         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
2984         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
2985         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
2986         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
2987         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
2988         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
2989         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
2990         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
2991         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
2992         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
2993         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
2994         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
2995         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
2996         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
2997         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
2998         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
2999         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
3000         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
3001         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
3002         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
3003         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
3004         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
3005         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
3006         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
3007         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
3008           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
3009           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
3010           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
3011           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
3012           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
3013           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
3014           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
3015           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
3016           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
3017           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
3018           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
3019           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
3020           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
3021           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
3022           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
3023           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
3024 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
3025           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
3026           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
3027           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
3028           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
3029 	    p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
3030 );
3031 
3032 /* Commented the following code to call new api aso_pricing_int.delete_promotion 07/22/02
3033 
3034   ELSIF l_price_attributes_rec.operation_code = 'DELETE' THEN
3035   ASO_PRICE_ATTRIBUTES_PKG.Delete_Row(
3036        p_PRICE_ATTRIBUTE_ID   => l_price_attributes_rec.price_attribute_id);
3037 
3038 */
3039 
3040   END IF;
3041 
3042 END LOOP;
3043 
3044 -- New code to call aso_pricing_int.delete_promotion 07/22/02
3045 
3046    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3047    aso_debug_pub.add('Update_Rows: p_Price_Attributes_Tbl.count: '||p_Price_Attributes_Tbl.count,1, 'N');
3048    aso_debug_pub.add('Update_Rows: Before call to aso_pricing_int.Delete_Promotion',1, 'N');
3049    END IF;
3050 
3051    IF p_Price_Attributes_Tbl.count > 0 THEN
3052 
3053         aso_pricing_int.Delete_Promotion (
3054                            P_Api_Version_Number =>  1.0,
3055                            P_Init_Msg_List      =>  FND_API.G_FALSE,
3056                            P_Commit             =>  FND_API.G_FALSE,
3057                            p_price_attr_tbl     =>  p_Price_Attributes_Tbl,
3058                            x_return_status      =>  x_return_status,
3059                            x_msg_count          =>  x_msg_count,
3060                            x_msg_data           =>  x_msg_data
3061                                    );
3062 
3063         IF aso_debug_pub.g_debug_flag = 'Y' THEN
3064 	   aso_debug_pub.add('Update_Rows: After call to Delete_Promotion: x_return_status: '||x_return_status,1, 'N');
3065 	   END IF;
3066 
3067    END IF;
3068 
3069 -- End of New code to call aso_pricing_int.delete_promotion 07/22/02
3070 
3071 
3072 -- sales credits
3073    FOR i in 1..p_Sales_Credit_Tbl.count LOOP
3074 
3075      l_Sales_Credit_rec := p_sales_credit_tbl(i);
3076      x_sales_credit_tbl(i) := l_sales_credit_rec;
3077 
3078      IF l_sales_credit_rec.operation_code = 'CREATE' THEN
3079        l_sales_credit_rec.quote_header_id := l_qte_header_id;
3080      -- BC4J Fix
3081 	--x_sales_credit_tbl(i).sales_credit_id := NULL;
3082        ASO_SALES_CREDITS_PKG.Insert_Row(
3083           p_CREATION_DATE  => SYSDATE,
3084           p_CREATED_BY  => G_USER_ID,
3085           p_LAST_UPDATED_BY  => G_USER_ID,
3086           p_LAST_UPDATE_DATE  => SYSDATE,
3087           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3088           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
3089           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
3090           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
3091           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
3092           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
3093           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
3094           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
3095           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
3096           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
3097           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
3098           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
3099           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
3100 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
3101           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
3102           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
3103           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
3104           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
3105           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
3106           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
3107           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
3108           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
3109           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
3110           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
3111           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
3112           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
3113           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
3114           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
3115           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
3116           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
3117           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
3118           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
3119           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
3120           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
3121           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
3122 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
3123           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
3124           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
3125 
3126         ELSIF l_sales_credit_rec.operation_code = 'UPDATE' THEN
3127                ASO_SALES_CREDITS_PKG.Update_Row(
3128           p_CREATION_DATE  => l_sales_CREDIT_rec.creation_date,
3129           p_CREATED_BY  => G_USER_ID,
3130           p_LAST_UPDATED_BY  => G_USER_ID,
3131           p_LAST_UPDATE_DATE  => SYSDATE,
3132           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3133           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
3134           p_PROGRAM_APPLICATION_ID=> l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
3135           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
3136           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
3137           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID,
3138           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
3139           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
3140           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
3141           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
3142           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
3143           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
3144           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
3145 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
3146           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
3147           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
3148           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
3149           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
3150           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
3151           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
3152           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
3153           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
3154           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
3155           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
3156           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
3157           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
3158           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
3159           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
3160           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
3161           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
3162           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
3163           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
3164           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
3165           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
3166           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
3167 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
3168           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
3169           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
3170          ELSIF l_sales_credit_rec.operation_code = 'DELETE' THEN
3171                  ASO_SALES_CREDITS_PKG.Delete_Row(
3172           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID);
3173 
3174          END IF;
3175 END LOOP;
3176 -- Quote Party
3177     FOR i IN 1..p_quote_party_Tbl.count LOOP
3178 	l_quote_party_rec := p_quote_party_tbl(i);
3179         x_quote_party_tbl(i) := l_quote_party_rec;
3180 
3181        IF l_quote_party_rec.operation_code = 'CREATE' THEN
3182              l_quote_party_rec.quote_header_id := l_qte_header_id;
3183         -- BC4J Fix
3184 	   --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
3185 
3186            ASO_QUOTE_PARTIES_PKG.Insert_Row(
3187           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
3188           p_CREATION_DATE  => SYSDATE,
3189           p_CREATED_BY  => G_USER_ID,
3190           p_LAST_UPDATE_DATE  => SYSDATE,
3191           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3192           p_LAST_UPDATED_BY  => G_USER_ID,
3193           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
3194           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
3195           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
3196           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
3197           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
3198           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
3199           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
3200           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
3201           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
3202           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
3203           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
3204           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
3205           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
3206           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
3207           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
3208           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
3209           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
3210           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
3211           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
3212           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
3213           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
3214           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
3215           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
3216           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
3217           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
3218           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
3219           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
3220   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
3221         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
3222 
3223         ELSIF  l_quote_party_rec.operation_code = 'UPDATE' THEN
3224             ASO_QUOTE_PARTIES_PKG.Update_Row(
3225           p_QUOTE_PARTY_ID  => l_quote_party_rec.QUOTE_PARTY_ID,
3226           p_CREATION_DATE  => l_quote_party_rec.creation_date,
3227           p_CREATED_BY  => G_USER_ID,
3228           p_LAST_UPDATE_DATE  => SYSDATE,
3229           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3230           p_LAST_UPDATED_BY  => G_USER_ID,
3231           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
3232           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
3233           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
3234           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
3235           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
3236           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
3237           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
3238           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
3239           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
3240           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
3241           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
3242           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
3243           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
3244           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
3245           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
3246           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
3247           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
3248           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
3249           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
3250           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
3251           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
3252           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
3253           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
3254           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
3255           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
3256           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
3257           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
3258         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
3259 
3260         ELSIF  l_quote_party_rec.operation_code = 'DELETE' THEN
3261             ASO_QUOTE_PARTIES_PKG.Delete_Row(
3262           p_QUOTE_PARTY_ID  => l_QUOTE_PARTY_rec.QUOTE_PARTY_ID);
3263 
3264         END IF;
3265  END LOOP;
3266     FOR i IN 1..P_hd_Attr_Ext_Tbl.count LOOP
3267 	l_line_attribs_rec := P_hd_Attr_Ext_Tbl(i);
3268      l_line_attribs_rec.quote_header_id := l_qte_header_id ;
3269         x_hd_Attr_Ext_Tbl(i) := l_line_attribs_rec;
3270 
3271      IF l_line_attribs_rec.operation_code = 'CREATE' THEN
3272      -- BC4J Fix
3273       --x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID := null;
3274 
3275  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
3276           px_LINE_ATTRIBUTE_ID  => x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID,
3277           p_CREATION_DATE          => SYSDATE,
3278           p_CREATED_BY             => G_USER_ID,
3279           p_LAST_UPDATE_DATE       => SYSDATE,
3280           p_LAST_UPDATED_BY        => G_USER_ID,
3281           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
3282           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
3283           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
3284           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
3285           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
3286            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
3287            p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
3288           p_QUOTE_HEADER_ID          => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
3289           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
3290           p_QUOTE_SHIPMENT_ID          => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
3291           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
3292           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
3293           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
3294            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
3295           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
3296           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
3297         p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
3298 
3299       ELSIF l_line_attribs_rec.operation_code = 'UPDATE' THEN
3300       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row(
3301           p_LINE_ATTRIBUTE_ID  => l_LINE_ATTRIBS_REC.LINE_ATTRIBUTE_ID,
3302           p_CREATION_DATE          => l_LINE_ATTRIBS_REC.creation_date,
3303           p_CREATED_BY             => G_USER_ID,
3304           p_LAST_UPDATE_DATE       => SYSDATE,
3305           p_LAST_UPDATED_BY        => G_USER_ID,
3306           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
3307           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
3308           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
3309           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
3310           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
3311            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
3312           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
3313           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
3314           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
3315           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
3316           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
3317           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
3318           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
3319           p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
3320           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
3321           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
3322         p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
3323 
3324      ELSIF l_line_attribs_rec.operation_code = 'DELETE' THEN
3325      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.delete_Row(
3326           p_LINE_ATTRIB_ID  => l_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
3327      END IF;
3328 END LOOP;      -- line attribs
3329 
3330 
3331        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3332            aso_debug_pub.add('Update_Rows: l_qte_access_tbl.count: '||l_qte_access_tbl.count, 1, 'Y');
3333        END IF;
3334 
3335        for i in 1 .. p_qte_access_tbl.count loop
3336 
3337 		 if p_qte_access_tbl(i).operation_code = 'CREATE' then
3338 
3339 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3340                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3341 
3342 			 if l_qte_access_tbl(1).quote_number is null or l_qte_access_tbl(1).quote_number = fnd_api.g_miss_num then
3343 
3344 			    open c_quote_number;
3345 			    fetch c_quote_number into l_qte_access_tbl(1).quote_number;
3346 			    close c_quote_number;
3347 
3348                 end if;
3349 
3350                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3351                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource', 1, 'Y');
3352                 END IF;
3353 
3354                 ASO_SECURITY_INT.Add_Resource(
3355                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3356                      P_COMMIT                     => FND_API.G_FALSE,
3357                      P_Qte_Access_tbl             => l_qte_access_tbl,
3358 			      p_call_from_oafwk_flag       => FND_API.G_TRUE,
3359                      X_Qte_Access_tbl             => lx_qte_access_tbl,
3360                      X_RETURN_STATUS              => x_return_status,
3361                      X_msg_count                  => X_msg_count,
3362                      X_msg_data                   => X_msg_data );
3363 
3364                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3365                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '|| x_return_status, 1, 'Y');
3366                     aso_debug_pub.add('Update_Rows: lx_Qte_Access_tbl.count: '|| lx_Qte_Access_tbl.count, 1, 'Y');
3367                 END IF;
3368 
3369 			 for i in 1 .. lx_qte_access_tbl.count loop
3370 			     X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := lx_qte_access_tbl(i);
3371 			 end loop;
3372 
3373 		 elsif p_qte_access_tbl(i).operation_code = 'UPDATE' then
3374 
3375 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3376                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3377 
3378                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3379                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource to update access', 1, 'Y');
3380                 END IF;
3381 
3382                 ASO_SECURITY_INT.Add_Resource(
3383                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3384                      P_COMMIT                     => FND_API.G_FALSE,
3385                      P_Qte_Access_tbl             => l_qte_access_tbl,
3386 			      p_call_from_oafwk_flag       => FND_API.G_TRUE,
3387                      X_Qte_Access_tbl             => lx_qte_access_tbl,
3388                      X_RETURN_STATUS              => x_return_status,
3389                      X_msg_count                  => X_msg_count,
3390                      X_msg_data                   => X_msg_data );
3391 
3392                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3393                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
3394                     aso_debug_pub.add('Update_Rows: lx_Qte_Access_tbl.count: '|| lx_Qte_Access_tbl.count, 1, 'Y');
3395                 END IF;
3396 
3397 			 for i in 1 .. lx_qte_access_tbl.count loop
3398 			     X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := lx_qte_access_tbl(i);
3399 			 end loop;
3400 
3401 		 elsif p_qte_access_tbl(i).operation_code = 'DELETE' then
3402 
3403 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3404                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3405 
3406                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3407                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource', 1, 'Y');
3408                 END IF;
3409 
3410                 ASO_SECURITY_INT.Delete_Resource(
3411                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3412                      P_COMMIT                     => FND_API.G_FALSE,
3413                      P_Qte_Access_tbl             => l_qte_access_tbl,
3414                      X_RETURN_STATUS              => x_return_status,
3415                      X_msg_count                  => X_msg_count,
3416                      X_msg_data                   => X_msg_data );
3417 
3418                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3419                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
3420                 END IF;
3421 
3422 			 X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := p_qte_access_tbl(i);
3423 
3424            end if;
3425 
3426        end loop;
3427 
3428 END Update_Rows;
3429 
3430 
3431 
3432 -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
3433 -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
3434 -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
3435 -- IF calculate_tax_flag = 'N', no summation on line level tax,
3436 -- just take the value of p_qte_header_rec.total_tax as the total_tax
3437 -- IF calculate_Freight_Charge_Flag = 'N', not summation on line level freight charge,
3438 -- just take the value of p_qte_header_rec.total_freight_charge
3439 
3440 
3441 
3442 PROCEDURE Update_Quote_Total ( P_Qte_Header_id             IN   NUMBER,
3443                                P_Calculate_Tax             IN   VARCHAR2,
3444                                P_Calculate_Freight_Charge  IN   VARCHAR2,
3445                                P_Control_Rec               IN   ASO_QUOTE_PUB.CONTROL_REC_TYPE
3446                                                                 :=  ASO_QUOTE_PUB.G_MISS_CONTROL_REC,
3447                                P_Call_Ar_Api_Flag          IN   VARCHAR2 := FND_API.G_FALSE,
3448                                X_Return_Status             OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
3449                                X_Msg_Count                 OUT NOCOPY /* file.sql.39 change */      NUMBER,
3450                                X_Msg_Data                  OUT NOCOPY /* file.sql.39 change */      VARCHAR2
3451                              )
3452 IS
3453 
3454    CURSOR c_qte_sum IS
3455    SELECT quote_line_id, line_category_code, nvl(line_list_price * quantity, 0) total_list_price,
3456           nvl(line_adjusted_amount * quantity,
3457               nvl(line_adjusted_percent * line_list_price * quantity, 0)) ln_total_discount
3458    FROM   ASO_QUOTE_LINES_ALL
3459    WHERE  quote_header_id = p_qte_header_id
3460    and    charge_periodicity_code is null; -- Recurring charges Change
3461 
3462 
3463    CURSOR c_tax_line(p_quote_line_id  NUMBER) IS
3464    SELECT nvl(sum(decode(tax_inclusive_flag, 'Y', 0,nvl(tax_amount,0))),0) tax_amt_for_qte_total,
3465 		nvl(sum(nvl(tax_amount, 0)),0) tax_amount
3466    FROM   ASO_TAX_DETAILS
3467    WHERE  quote_header_id              =   p_qte_header_id
3468    and    quote_line_id                =   p_quote_line_id;
3469 
3470    CURSOR c_tax IS
3471    SELECT nvl(sum(nvl(tax_amount, 0)),0)
3472    FROM   ASO_TAX_DETAILS
3473    WHERE  quote_header_id = p_qte_header_id
3474    and    quote_line_id is null;
3475 
3476    CURSOR c_tax_rec_cnt IS
3477    select count(tax_detail_id)
3478    from aso_tax_details
3479    where quote_header_id = p_qte_header_id
3480    and tax_amount is not null;
3481 
3482 
3483    CURSOR c_old_shipping_charge IS
3484    SELECT total_shipping_charge
3485    FROM   aso_quote_headers_all
3486    WHERE  quote_header_id = p_qte_header_id;
3487 
3488 
3489    CURSOR c_hd_discount IS
3490    SELECT	total_adjusted_percent
3491    FROM   aso_quote_headers_all
3492    WHERE  quote_header_id = p_qte_header_id;
3493 
3494 
3495   Cursor get_hdr_payment_term IS
3496   SELECT payment_term_id
3497   FROM aso_payments
3498   WHERE  quote_header_id = p_qte_header_id
3499   and    quote_line_id is null;
3500 
3501   Cursor get_hdr_curr_code IS
3502   SELECT currency_code
3503   FROM aso_quote_headers_all
3504   WHERE  quote_header_id = p_qte_header_id;
3505 
3506   Cursor c_org_id IS
3507   Select org_id,quote_type
3508   from aso_quote_headers_all
3509   where quote_header_id = p_qte_header_id;
3510 
3511   Cursor get_total_payment_amount( l_qte_hdr_id number) is
3512   select sum(payment_amount)
3513   from aso_payments
3514   where quote_header_id = l_qte_hdr_id
3515   and quote_line_id is not null;
3516 
3517    l_total_list_price         NUMBER := 0;
3518    l_ln_total_discount        NUMBER := 0;
3519    l_total_quote_price        NUMBER := 0;
3520    l_total_adjusted_amount    NUMBER := 0;
3521    l_hd_discount_percent      NUMBER := 0;
3522    l_total_tax                NUMBER := 0;
3523    l_total_tax_for_qte_total  NUMBER := 0;
3524    l_header_tax               NUMBER := 0;
3525    l_total_shipping_charge    NUMBER := 0;
3526    l_line_shipping_charge     NUMBER := 0;
3527    l_header_shipping_charge   NUMBER := 0;
3528    l_count                    NUMBER;
3529 
3530    l_installment_option     VARCHAR2(240);
3531    l_hdr_currency_code    varchar2(15);
3532    l_hdr_term_id           NUMBER;
3533    l_paynow_amount          NUMBER;
3534    l_paynow_tax             NUMBER;
3535    l_paynow_charges         NUMBER:= null;
3536    l_paynow_total           NUMBER;
3537    l_org_id                 NUMBER;
3538    l_quote_type             varchar2(1);
3539    l_total_payment_amount   NUMBER :=0;
3540 
3541 BEGIN
3542 
3543      --Initialize API return status to SUCCESS
3544 
3545      x_return_status := FND_API.G_RET_STS_SUCCESS;
3546 
3547      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3548 	    aso_debug_pub.add('Begin update_quote_total procedure.', 1, 'Y');
3549          aso_debug_pub.add('Update_quote_total: Input parameters value.');
3550          aso_debug_pub.add('Update_quote_total: p_qte_header_id:            '|| p_qte_header_id);
3551          aso_debug_pub.add('Update_quote_total: p_calculate_tax:            '|| p_calculate_tax);
3552          aso_debug_pub.add('Update_quote_total: p_calculate_freight_charge: '|| p_calculate_freight_charge);
3553          aso_debug_pub.add('p_control_rec.header_pricing_event: '|| p_control_rec.header_pricing_event);
3554          aso_debug_pub.add('p_control_rec.line_pricing_event:   '|| p_control_rec.header_pricing_event);
3555 	END IF;
3556 
3557 
3558 
3559      FOR qte_rec IN c_qte_sum LOOP
3560 
3561          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3562 	        aso_debug_pub.add('Update_quote_total: l_total_quote_price:        '|| l_total_quote_price);
3563              aso_debug_pub.add('qte_rec.line_category_code: '|| qte_rec.line_category_code);
3564 	    END IF;
3565 
3566          IF qte_rec.line_category_code = 'RETURN' THEN
3567 
3568               l_total_list_price  := l_total_list_price  - qte_rec.total_list_price;
3569               l_ln_total_discount := l_ln_total_discount - qte_rec.ln_total_discount;
3570 
3571               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3572 		        aso_debug_pub.add('Update_quote_total: l_total_list_price:  '|| l_total_list_price);
3573                   aso_debug_pub.add('Update_quote_total: l_ln_total_discount: '|| l_ln_total_discount);
3574 		    END IF;
3575 
3576               FOR tax_line_rec IN c_tax_line(qte_rec.quote_line_id) LOOP
3577 
3578                    l_total_tax               := l_total_tax - tax_line_rec.tax_amount;
3579                    l_total_tax_for_qte_total := l_total_tax_for_qte_total - tax_line_rec.tax_amt_for_qte_total;
3580 
3581               END LOOP;
3582 
3583               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3584 		        aso_debug_pub.add('Update_quote_total: l_total_tax (-): '|| l_total_tax);
3585 		    END IF;
3586 
3587               IF p_calculate_freight_charge = 'Y' then
3588 
3589                    l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( p_qte_header_id,
3590                                                                                   qte_rec.quote_line_id );
3591 
3592                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3593 			        aso_debug_pub.add('Update_quote_total: After call to get_line_freight_charges');
3594                        aso_debug_pub.add('l_line_shipping_charge: '|| l_line_shipping_charge);
3595 			    END IF;
3596 
3597                    l_total_shipping_charge := l_total_shipping_charge - l_line_shipping_charge;
3598 
3599               END IF;
3600 
3601               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3602 		        aso_debug_pub.add('l_total_shipping_charge: '|| l_total_shipping_charge );
3603 		    END IF;
3604 
3605          ELSE
3606 
3607               l_total_list_price  := l_total_list_price + qte_rec.total_list_price;
3608               l_ln_total_discount := l_ln_total_discount + qte_rec.ln_total_discount;
3609 
3610               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3611 		        aso_debug_pub.add('Update_quote_total: l_total_list_price:  '|| l_total_list_price);
3612                   aso_debug_pub.add('Update_quote_total: l_ln_total_discount: '|| l_ln_total_discount);
3613 		    END IF;
3614 
3615               FOR tax_line_rec IN c_tax_line(qte_rec.quote_line_id) LOOP
3616 
3617                    l_total_tax               := l_total_tax + tax_line_rec.tax_amount;
3618                    l_total_tax_for_qte_total := l_total_tax_for_qte_total + tax_line_rec.tax_amt_for_qte_total;
3619 
3620               END LOOP;
3621 
3622               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3623 		        aso_debug_pub.add('Update_quote_total: l_total_tax (+): '|| l_total_tax);
3624 		    END IF;
3625 
3626               IF p_calculate_freight_charge = 'Y' then
3627 
3628                    l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( p_qte_header_id,
3629                                                                                   qte_rec.quote_line_id );
3630 
3631                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3632 			        aso_debug_pub.add('Update_quote_total: After call to get_line_freight_charges');
3633                        aso_debug_pub.add('l_line_shipping_charge: '|| l_line_shipping_charge);
3634 			    END IF;
3635 
3636                    l_total_shipping_charge := l_total_shipping_charge + l_line_shipping_charge;
3637 
3638               END IF;
3639 
3640               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3641 		        aso_debug_pub.add('l_total_shipping_charge: '|| l_total_shipping_charge );
3642 		    END IF;
3643 
3644          END IF;
3645 
3646      END LOOP;
3647 
3648      --Get the header level tax amount and add it to the total tax
3649 
3650 	OPEN  c_tax;
3651 	FETCH c_tax INTO l_header_tax;
3652 	CLOSE c_tax;
3653 
3654      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3655 	    aso_debug_pub.add('Update_quote_total: l_header_tax: '|| l_header_tax);
3656          aso_debug_pub.add('Update_Quote_Total: p_control_rec.price_mode: '|| p_control_rec.price_mode);
3657 	END IF;
3658 
3659      IF (p_calculate_tax = 'N')                          OR
3660 	   (p_control_rec.price_mode  = 'QUOTE_LINE')       OR
3661 	   ((p_control_rec.price_mode = 'ENTIRE_QUOTE')     AND
3662          (p_control_rec.header_pricing_event = 'ORDER')) OR
3663 	   ((p_control_rec.price_mode = 'ENTIRE_QUOTE')     AND
3664          (p_control_rec.header_pricing_event = 'PRICE')) THEN
3665 
3666          OPEN  c_tax_rec_cnt;
3667          FETCH c_tax_rec_cnt INTO l_count;
3668          CLOSE c_tax_rec_cnt;
3669 
3670          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3671              aso_debug_pub.add('Update_quote_total: l_count: '|| l_count);
3672          END IF;
3673 
3674          IF l_count = 0 THEN
3675              l_total_tax               := null;
3676              l_total_tax_for_qte_total := null;
3677          ELSE
3678              l_total_tax               := l_total_tax + nvl(l_header_tax,0);
3679              l_total_tax_for_qte_total := l_total_tax_for_qte_total + nvl(l_header_tax,0);
3680          END IF;
3681 
3682      ELSE
3683 
3684          l_total_tax               := l_total_tax + nvl(l_header_tax,0);
3685          l_total_tax_for_qte_total := l_total_tax_for_qte_total + nvl(l_header_tax,0);
3686 
3687      END IF;
3688 
3689 
3690      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3691 	    aso_debug_pub.add('Update_quote_total: l_total_tax:               '|| l_total_tax);
3692 	    aso_debug_pub.add('Update_quote_total: l_total_tax_for_qte_total: '|| l_total_tax_for_qte_total);
3693 	END IF;
3694 
3695 
3696      IF P_calculate_Freight_Charge = 'Y' THEN
3697 
3698          l_header_shipping_charge := ASO_SHIPPING_INT.get_Header_freight_charges(p_qte_header_id);
3699 
3700          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3701 	        aso_debug_pub.add('Update_quote_total: l_header_shipping_charge: '|| l_header_shipping_charge);
3702 	    END IF;
3703 
3704          l_total_shipping_charge := l_total_shipping_charge + l_header_shipping_charge;
3705 
3706          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3707 	        aso_debug_pub.add('Update_quote_total: l_total_shipping_charge:  '|| l_total_shipping_charge);
3708 	    END IF;
3709 
3710      ELSE
3711 
3712 	    open  c_old_shipping_charge;
3713 	    fetch c_old_shipping_charge into l_total_shipping_charge;
3714 	    close c_old_shipping_charge;
3715 
3716          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3717 	        aso_debug_pub.add('Update_quote_total: l_total_shipping_charge:  '|| l_total_shipping_charge);
3718 	    END IF;
3719 
3720      END IF;
3721 
3722 
3723      l_total_quote_price := l_total_list_price + l_ln_total_discount + nvl(l_total_tax_for_qte_total,0) +
3724                             nvl(l_total_shipping_charge,0);
3725 
3726      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3727 	    aso_debug_pub.add('Update_quote_total: l_total_quote_price: '|| l_total_quote_price);
3728 	END IF;
3729 
3730           -- removed the if condition for pricing event check as per bug 5237393
3731           IF ( l_total_quote_price < 0 ) THEN
3732 
3733                x_return_status := FND_API.G_RET_STS_ERROR;
3734 
3735                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3736 			    aso_debug_pub.add('Inside price check: x_return_status: '|| x_return_status );
3737 			END IF;
3738 
3739                IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3740 
3741                    FND_MESSAGE.Set_Name('ASO', 'ASO_NEGATIVE_QUOTE_TOTAL');
3742                    FND_MSG_PUB.ADD;
3743 
3744                END IF;
3745 
3746 			RAISE FND_API.G_EXC_ERROR;
3747 
3748           END IF;
3749 
3750      -- Start of PNPL Changes
3751       Open c_org_id;
3752 	 fetch c_org_id into l_org_id,l_quote_type;
3753 	 Close c_org_id;
3754 
3755       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
3756                                                                      p_org_id =>l_org_id);
3757 
3758       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3759           aso_debug_pub.add('Update_Quote_Total - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
3760       END IF;
3761 
3762        IF  ( (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(l_quote_type,'X') <>  'T')
3763 	       and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
3764 	         or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
3765 
3766          l_header_shipping_charge := ASO_SHIPPING_INT.get_Header_freight_charges(p_qte_header_id);
3767 
3768        -- get the payment term id for the header
3769           open get_hdr_payment_term;
3770           fetch get_hdr_payment_term into l_hdr_term_id;
3771           close get_hdr_payment_term;
3772 
3773        -- get the currency code id for the header
3774           open get_hdr_curr_code;
3775           fetch get_hdr_curr_code into l_hdr_currency_code;
3776           close get_hdr_curr_code;
3777 
3778 
3779       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3780 
3781           aso_debug_pub.add('Update_Quote_Total- Input to AR_VIEW_TERM_GRP.pay_now_amounts follows:  ', 1, 'Y');
3782           aso_debug_pub.add('Update_Quote_Total- l_header_shipping_charge:    '||l_header_shipping_charge, 1, 'Y');
3783           aso_debug_pub.add('Update_Quote_Total- l_hdr_currency_code:         '||l_hdr_currency_code, 1, 'Y');
3784           aso_debug_pub.add('Update_Quote_Total- l_hdr_term_id:               '||l_hdr_term_id, 1, 'Y');
3785 		aso_debug_pub.add('Update_Quote_Total- P_Call_Ar_Api_Flag:          '||P_Call_Ar_Api_Flag,1,'Y');
3786       END IF;
3787 
3788       IF ((l_hdr_term_id is not null and l_hdr_term_id <> fnd_api.g_miss_num) and (P_Call_Ar_Api_Flag = fnd_api.g_true))  then
3789 
3790       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3791           aso_debug_pub.add('Update_Quote_Total: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
3792       END IF;
3793 
3794        -- Call the AR API to get the amounts
3795              AR_VIEW_TERM_GRP.pay_now_amounts(
3796                     p_api_version              => 1.0,
3797                     p_init_msg_list            => FND_API.G_FALSE,
3798                     p_validation_level         => FND_API.G_VALID_LEVEL_FULL,
3799                     p_term_id                  => l_hdr_term_id,
3800                     p_currency_code            => l_hdr_currency_code,
3801                     p_line_amount              => 0,
3802                     p_tax_amount               => 0,
3803                     p_freight_amount           => l_header_shipping_charge ,
3804                     x_pay_now_line_amount      => l_paynow_amount,
3805                     x_pay_now_tax_amount       => l_paynow_tax,
3806                     x_pay_now_freight_amount   => l_paynow_charges,
3807                     x_pay_now_total_amount     => l_paynow_total,
3808                     X_Return_Status            => x_return_status ,
3809                     X_Msg_Count                => x_msg_count     ,
3810                     X_Msg_Data                 => x_msg_data      );
3811 
3812           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3813               aso_debug_pub.add('Update_Quote_Total: After call to AR_VIEW_TERM_GRP.pay_now_amounts: x_return_status: '
3814                                  || x_return_status, 1, 'Y');
3815           END IF;
3816 
3817           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3818 
3819               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3820                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3821                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
3822                   FND_MSG_PUB.ADD;
3823               END IF;
3824 
3825               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3826                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3827               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3828                    RAISE FND_API.G_EXC_ERROR;
3829               END IF;
3830 
3831           END IF;
3832 
3833       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3834           aso_debug_pub.add('Update_Quote_Total- Output from AR_VIEW_TERM_GRP.pay_now_amounts follows: ', 1, 'Y');
3835           aso_debug_pub.add('Update_Quote_Total- l_paynow_amount:     '||l_paynow_amount, 1, 'Y');
3836           aso_debug_pub.add('Update_Quote_Total- l_paynow_charges:    '||l_paynow_charges, 1, 'Y');
3837           aso_debug_pub.add('Update_Quote_Total- l_paynow_tax:        '||l_paynow_tax, 1, 'Y');
3838           aso_debug_pub.add('Update_Quote_Total- l_paynow_total:      '||l_paynow_total, 1, 'Y');
3839       END IF;
3840 
3841 
3842           -- Update the corresponding columns in the header table
3843           -- this update has been commented out as the update for this column is done below
3844 		/*update aso_quote_headers_all
3845           set header_paynow_charges    = l_paynow_charges,
3846               last_updated_by        =  fnd_global.user_id,
3847               last_update_login      =  fnd_global.conc_login_id
3848           where quote_header_id = P_Qte_Header_id; */
3849 
3850 
3851         END IF; -- end if for payment trm id null check
3852 
3853        END IF;
3854 
3855      -- End of PNPL Changes
3856 
3857      UPDATE ASO_QUOTE_HEADERS_ALL
3858      SET total_list_price       =  l_total_list_price,
3859          total_shipping_charge  =  l_total_shipping_charge,
3860          total_adjusted_amount  =  l_ln_total_discount,
3861          total_adjusted_percent =  decode( l_total_list_price, 0, NULL,
3862                                           (l_ln_total_discount/l_total_list_price) * 100 ),
3863          total_quote_price      =  l_total_quote_price,
3864          total_tax              =  l_total_tax,
3865 	    header_paynow_charges  =  nvl(l_paynow_charges,header_paynow_charges),
3866          last_update_date       =  sysdate,
3867          last_updated_by        =  fnd_global.user_id,
3868          last_update_login      =  fnd_global.conc_login_id
3869      WHERE quote_header_id = p_qte_header_id;
3870 
3871      IF SQL%ROWCOUNT = 0  THEN
3872 
3873          x_return_status := fnd_api.g_ret_sts_error;
3874 
3875      END IF;
3876 
3877      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3878 	    aso_debug_pub.add('Update_quote_total: l_total_quote_price: '|| l_total_quote_price);
3879 	    aso_debug_pub.add('End of Update_quote_total');
3880 	END IF;
3881 
3882 END Update_Quote_Total;
3883 
3884 
3885 
3886 
3887 -- Hint: Primary key needs to be returned.
3888 PROCEDURE Create_quote(
3889     P_Api_Version_Number       IN   NUMBER,
3890     P_Init_Msg_List            IN   VARCHAR2                                 := FND_API.G_FALSE,
3891     P_Commit                   IN   VARCHAR2                                 := FND_API.G_FALSE,
3892     p_validation_level         IN   NUMBER                                   := FND_API.G_VALID_LEVEL_FULL,
3893     P_Control_Rec              IN   ASO_QUOTE_PUB.Control_Rec_Type           := ASO_QUOTE_PUB.G_Miss_Control_Rec,
3894     P_Qte_Header_Rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type        := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
3895     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
3896     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
3897     P_hd_Shipment_Rec		 IN   ASO_QUOTE_PUB.Shipment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC,
3898     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
3899     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
3900     P_hd_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
3901     P_hd_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
3902     P_hd_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
3903     P_Qte_Line_Tbl		      IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL,
3904     P_Qte_Line_Dtl_Tbl		 IN   ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL,
3905     P_Line_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
3906     P_line_rltship_tbl		 IN   ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Line_Rltship_Tbl,
3907     P_Price_Adjustment_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl,
3908     P_Price_Adj_Attr_Tbl	      IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
3909     P_Price_Adj_Rltship_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Price_Adj_Rltship_Tbl,
3910     P_ln_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
3911     P_ln_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
3912     P_ln_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
3913     P_ln_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
3914     P_ln_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
3915     P_ln_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
3916     P_ln_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
3917     P_Qte_Access_Tbl           IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_QTE_ACCESS_TBL,
3918     P_Template_Tbl             IN   ASO_QUOTE_PUB.Template_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_TEMPLATE_TBL,
3919     P_Related_Obj_Tbl          IN   ASO_QUOTE_PUB.Related_Obj_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_RELATED_OBJ_TBL,
3920     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
3921     X_Qte_Line_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
3922     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
3923     X_hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
3924     X_hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
3925     X_hd_Shipment_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Rec_Type,
3926     X_hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
3927     X_hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
3928     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
3929     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
3930     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
3931     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
3932     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
3933     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
3934     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
3935     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
3936     X_ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
3937     X_ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
3938     X_ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
3939     X_ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
3940     X_ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
3941     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
3942     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
3943     X_Qte_Access_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
3944     X_Template_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Template_Tbl_Type,
3945     X_Related_Obj_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Related_Obj_Tbl_Type,
3946     X_Return_Status            OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3947     X_Msg_Count                OUT NOCOPY /* file.sql.39 change */  NUMBER,
3948     X_Msg_Data                 OUT NOCOPY /* file.sql.39 change */  VARCHAR2
3949     )
3950 IS
3951 
3952 l_api_name		      CONSTANT VARCHAR2(30) := 'Create_quote';
3953 l_api_version_number	 CONSTANT NUMBER   := 1.0;
3954 l_return_status_full	 VARCHAR2(1);
3955 l_return_status 	      VARCHAR2(1);
3956 l_qte_header_rec	      ASO_QUOTE_PUB.Qte_Header_Rec_Type;
3957 lx_out_qte_header_rec	 ASO_QUOTE_PUB.Qte_Header_Rec_Type; --Nocopy changes
3958 l_qte_line_rec		      ASO_QUOTE_PUB.Qte_Line_Rec_Type;
3959 l_qte_line_rec_out		 ASO_QUOTE_PUB.Qte_Line_Rec_Type;
3960 l_qte_line_dtl_tbl	      ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
3961 l_qte_line_dtl_tbl_out	 ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
3962 l_Line_Attr_Ext_Tbl	      ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
3963 l_Line_Attr_Ext_Tbl_out   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
3964 l_hd_shipment_tbl	      ASO_QUOTE_PUB.Shipment_Tbl_Type;
3965 l_ln_shipment_tbl	      ASO_QUOTE_PUB.Shipment_Tbl_Type;
3966 l_ln_shipment_tbl_out	 ASO_QUOTE_PUB.Shipment_Tbl_Type;
3967 l_payment_tbl	           ASO_QUOTE_PUB.Payment_Tbl_Type;
3968 l_payment_tbl_out	      ASO_QUOTE_PUB.Payment_Tbl_Type;
3969 l_freight_charge_tbl	 ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
3970 l_freight_charge_tbl_out	 ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
3971 l_tax_detail_rec	      ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
3972 l_tax_detail_tbl	      ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
3973 l_tax_detail_tbl_out	 ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
3974 l_Price_Attr_Tbl	      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
3975 l_Price_Attr_Tbl_out	 ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
3976 l_Price_Adj_Tbl	      ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
3977 l_Price_Adj_Tbl_out	      ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
3978 l_Price_Adj_Attr_Tbl	 ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
3979 l_Price_Adj_Attr_Tbl_out  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
3980 l_Price_Adjustment_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type          :=p_Price_Adjustment_Tbl;
3981 l_line_rltship_rec        ASO_QUOTE_PUB.Line_Rltship_Rec_Type;
3982 l_price_adj_rltship_rec	 ASO_QUOTE_PUB.Price_Adj_Rltship_Rec_Type;
3983 l_pricing_control_rec	 ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
3984 
3985 l_shipment_id		       NUMBER;
3986 l_payment_id		       NUMBER;
3987 l_found			       VARCHAR2(1);
3988 l_calculate_freight_charge VARCHAR2(1) := 'Y';
3989 l_calculate_tax		  VARCHAR2(1) := 'Y';
3990 l_index			       NUMBER;
3991 l_index_2		            NUMBER;
3992 line_index		       NUMBER;
3993 l_shp_index_link	       Index_Link_Tbl_Type;
3994 l_prc_index_link	       Index_Link_Tbl_Type;
3995 l_prc_index_link_rev	  Index_Link_Tbl_Type;
3996 l_quote_party_tbl          ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
3997 l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
3998 l_sales_credit_tbl         ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
3999 l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4000 l_control_rec              ASO_QUOTE_PUB.Control_rec_type := p_control_rec;
4001 l_Tax_Control_Rec          ASO_TAX_INT.Tax_Control_Rec_Type;
4002 x_tax_amount               NUMBER;
4003 l_shipment_rec             ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
4004 
4005 G_USER_ID	                 NUMBER      := FND_GLOBAL.USER_ID;
4006 G_LOGIN_ID	            NUMBER      := FND_GLOBAL.CONC_LOGIN_ID;
4007 
4008 l_price_updated_date_flag  VARCHAR2(1) := fnd_api.g_false;
4009 
4010 cursor c_last_update_date( p_qte_hdr_id  number ) is
4011 select last_update_date
4012 from aso_quote_headers_all
4013 where quote_header_id = p_qte_hdr_id;
4014 
4015 -- Code for Sales Team Assignment Changes
4016 CURSOR C_Check_Qte_Status (l_qte_hdr NUMBER) IS
4017 SELECT 'Y'
4018 FROM ASO_QUOTE_HEADERS_ALL A, ASO_QUOTE_STATUSES_B B
4019 WHERE A.Quote_Header_Id = l_qte_hdr
4020 AND A.Quote_Status_Id = B.Quote_Status_Id
4021 AND B.Status_Code = 'STORE DRAFT';
4022 
4023 CURSOR C_Get_Quota_Credit_Type IS
4024  SELECT Sales_Credit_Type_Id
4025  FROM OE_SALES_CREDIT_TYPES
4026  WHERE Quota_Flag = 'Y';
4027 
4028 Cursor c_obj_id(p_qte_header_id Number) IS
4029 Select object_id
4030 from aso_quote_related_objects
4031 where quote_object_id = p_qte_header_id
4032 and quote_object_type_code = 'HEADER'
4033 and relationship_type_code = 'OPP_QUOTE';
4034 
4035 CURSOR c_tax_line(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
4036 select nvl(sum(nvl(tax_amount, 0)),0) tax_amount
4037 FROM   ASO_TAX_DETAILS
4038 WHERE  quote_header_id              =   p_qte_header_id
4039 and    quote_line_id                =   p_quote_line_id;
4040 
4041 Cursor get_line_payment_term(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
4042 SELECT payment_term_id
4043 FROM aso_payments
4044 WHERE  quote_header_id              =   p_qte_header_id
4045 and    quote_line_id                =   p_quote_line_id;
4046 
4047 Cursor get_hdr_payment_term(p_qte_header_id NUMBER) IS
4048 SELECT payment_term_id
4049 FROM aso_payments
4050 WHERE  quote_header_id              =   p_qte_header_id
4051 and    quote_line_id                IS NULL ;
4052 
4053 Cursor get_line_qte_price( p_quote_line_id  NUMBER) IS
4054 select line_quote_price,quantity
4055 from   aso_quote_lines_all
4056 where  quote_line_id = p_quote_line_id;
4057 
4058 Cursor  c_inv_org_id(l_main_org_id Number) IS
4059 select  master_organization_id
4060 from    oe_system_parameters
4061 where   org_id = l_main_org_id;
4062 
4063 l_quota_id                 NUMBER;
4064 
4065 l_istore_source            VARCHAR2(1)  := 'N';
4066 l_sales_team_prof          VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
4067 
4068 --New Code for to call overload pricing_order
4069 lv_qte_header_rec          ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4070 lx_qte_header_rec          ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4071 lx_qte_line_tbl            ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
4072 lv_hd_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4073 lv_hd_shipment_tbl         ASO_QUOTE_PUB.Shipment_Tbl_Type;
4074 lv_hd_price_attr_tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4075 lx_price_adj_rltship_tbl   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
4076 
4077 -- hyang defaulting framework
4078 l_def_control_rec          ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
4079 l_db_object_name           VARCHAR2(30);
4080 l_hd_shipment_rec          ASO_QUOTE_PUB.Shipment_Rec_Type         := ASO_QUOTE_PUB.G_MISS_Shipment_REC;
4081 l_hd_payment_rec           ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
4082 l_hd_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type       := ASO_QUOTE_PUB.G_MISS_Tax_Detail_REC;
4083 l_hd_misc_rec              ASO_DEFAULTING_INT.Header_Misc_Rec_Type := ASO_DEFAULTING_INT.G_MISS_HEADER_MISC_REC;
4084 lx_hd_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4085 lx_hd_payment_rec          ASO_QUOTE_PUB.Payment_Rec_Type;
4086 lx_hd_tax_detail_rec       ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4087 lx_hd_misc_rec             ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
4088 lx_quote_line_rec          ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4089 lx_ln_misc_rec             ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
4090 lx_ln_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4091 lx_ln_payment_rec          ASO_QUOTE_PUB.Payment_Rec_Type;
4092 lx_ln_tax_detail_rec       ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4093 lx_changed_flag            VARCHAR2(1);
4094 l_hd_payment_tbl	       ASO_QUOTE_PUB.Payment_Tbl_Type;
4095 l_hd_tax_detail_tbl	       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4096 
4097 --Template changes
4098 l_template_tbl             aso_quote_tmpl_int.list_template_tbl_type;
4099 l_qte_line_tbl             aso_quote_pub.qte_line_tbl_type  := p_qte_line_tbl;
4100 lx_qte_line_dtl_tbl        ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type := p_qte_line_dtl_tbl;
4101 l_count                    number;
4102 
4103 l_related_obj_rec          ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
4104 l_related_obj_id           number;
4105 x_related_obj_rec          ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
4106 l_obj_id                   number;
4107 
4108 l_installment_option     VARCHAR2(240);
4109 l_line_shipping_charge   NUMBER;
4110 l_line_tax               NUMBER;
4111 l_line_amount            NUMBER;
4112 l_line_term_id           NUMBER := NULL;
4113 l_paynow_amount          NUMBER;
4114 l_paynow_tax             NUMBER;
4115 l_paynow_charges         NUMBER;
4116 l_paynow_total           NUMBER;
4117 l_call_ar_api            varchar2(1);
4118 l_line_quote_price       NUMBER;
4119 l_quantity               NUMBER;
4120 l_master_organization_id NUMBER;
4121 
4122 
4123 BEGIN
4124       -- Standard Start of API savepoint
4125       SAVEPOINT CREATE_quote_PVT;
4126 
4127       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4128 	     aso_debug_pub.add('******************************************************', 1, 'Y');
4129 	     aso_debug_pub.add('Begin Create_Quote Procedure', 1, 'Y');
4130 	     aso_debug_pub.add('******************************************************', 1, 'Y');
4131 	 END IF;
4132 
4133       -- Standard call to check for call compatibility.
4134       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4135                                            p_api_version_number,
4136                                            l_api_name,
4137                                            G_PKG_NAME) THEN
4138 
4139            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4140       END IF;
4141 
4142 
4143       -- Initialize message list if p_init_msg_list is set to TRUE.
4144       IF FND_API.to_Boolean( p_init_msg_list ) THEN
4145 	     FND_MSG_PUB.initialize;
4146       END IF;
4147 
4148       --Procedure added by Anoop Rajan on 30/09/2005 to print login details
4149       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4150 		aso_debug_pub.add('Before call to printing login info details', 1, 'Y');
4151 		ASO_UTILITY_PVT.print_login_info;
4152 		aso_debug_pub.add('After call to printing login info details', 1, 'Y');
4153       END IF;
4154 
4155       -- Change Done By Girish
4156       -- Procedure added to validate the operating unit
4157       ASO_VALIDATE_PVT.VALIDATE_OU(P_Qte_Header_Rec);
4158 
4159       -- Initialize API return status to SUCCESS
4160       x_return_status := FND_API.G_RET_STS_SUCCESS;
4161 
4162       --
4163       -- API body
4164       --
4165       l_control_rec.line_pricing_event := NULL;
4166       l_control_rec.calculate_tax_flag := NULL;
4167 
4168       -- Validate Environment
4169 
4170       IF FND_GLOBAL.User_Id IS NULL THEN
4171 
4172           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4173               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
4174               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
4175               FND_MSG_PUB.ADD;
4176           END IF;
4177           RAISE FND_API.G_EXC_ERROR;
4178       END IF;
4179 
4180       -- create Quote Header
4181 
4182       l_index := 1;
4183 
4184       FOR i IN 1..p_price_adjustment_tbl.count LOOP
4185 
4186 	      IF p_price_adjustment_tbl(i).qte_line_index IS NULL OR
4187 		     p_price_adjustment_tbl(i).qte_line_index = FND_API.G_MISS_NUM THEN
4188 
4189 	           l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(i);
4190 	           l_prc_index_link(l_index) := i;
4191 	           l_prc_index_link_rev(i)   := l_index;
4192 	           l_index                   := l_index + 1;
4193 
4194 	      END IF;
4195 
4196       END LOOP;
4197 
4198       l_index := 1;
4199 
4200       FOR i IN 1..p_price_adj_attr_tbl.count LOOP
4201 
4202 	      IF p_price_adj_attr_tbl(i).price_adj_index <> FND_API.G_MISS_NUM
4203               AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(i).price_adj_index) THEN
4204 
4205                 l_price_adj_attr_tbl(l_index)                 := p_price_adj_attr_tbl(i);
4206                 l_price_adj_attr_tbl(l_index).price_adj_index := l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
4207                 l_index                                       := l_index + 1;
4208 
4209 	      END IF;
4210 
4211       END LOOP;
4212 
4213       IF Shipment_Rec_Exists(p_hd_shipment_rec) THEN
4214           l_hd_shipment_tbl(1) := p_hd_shipment_rec;
4215       END IF;
4216 
4217       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4218           aso_debug_pub.add('Create_Quote: Before call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
4219 
4220       ASO_INPUT_PARAM_DEBUG.Print_quote_input(
4221                     P_Quote_Header_Rec         => p_qte_header_rec
4222                   , P_hd_Price_Attributes_Tbl  => P_hd_Price_Attributes_Tbl
4223                   , P_hd_Payment_Tbl           => P_hd_Payment_Tbl
4224                   , P_hd_Shipment_tbl          => l_hd_Shipment_tbl
4225                   , P_hd_Tax_Detail_Tbl        => P_hd_Tax_Detail_Tbl
4226                   , P_hd_Sales_Credit_Tbl      => P_hd_Sales_Credit_Tbl
4227                   , P_Qte_Line_Tbl             => P_Qte_Line_Tbl
4228                   , P_Qte_Line_Dtl_Tbl         => P_Qte_Line_Dtl_Tbl
4229                   , P_Price_Adjustment_Tbl     => P_Price_Adjustment_Tbl
4230                   , P_Ln_Price_Attributes_Tbl  => P_Ln_Price_Attributes_Tbl
4231                   , P_Ln_Payment_Tbl           => P_Ln_Payment_Tbl
4232                   , P_Ln_Shipment_Tbl          => P_Ln_Shipment_Tbl
4233                   , P_Ln_Tax_Detail_Tbl        => P_Ln_Tax_Detail_Tbl
4234                   , P_ln_Sales_Credit_Tbl      => P_ln_Sales_Credit_Tbl
4235 			   , P_Qte_Access_Tbl           => P_Qte_Access_Tbl);
4236 
4237           aso_debug_pub.add('Create_Quote: After call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
4238       END IF ;
4239 
4240       -- hyang defaulting framework begin
4241 
4242       l_qte_header_rec := P_Qte_Header_Rec;
4243 
4244       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4245           aso_debug_pub.add('Create_Quote - before defaulting framework', 1, 'Y');
4246           aso_debug_pub.add('Create_Quote - populate defaulting control record from the header control record', 1, 'Y');
4247       END IF ;
4248 
4249       l_def_control_rec.Dependency_Flag       := FND_API.G_FALSE;
4250       l_def_control_rec.Defaulting_Flag       := l_control_rec.Defaulting_Flag;
4251       l_def_control_rec.Application_Type_Code := l_control_rec.Application_Type_Code;
4252       l_def_control_rec.Defaulting_Flow_Code  := 'CREATE';
4253 
4254       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4255           aso_debug_pub.add('Defaulting_Fwk_Flag - '||l_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
4256           aso_debug_pub.add('Dependency_Flag - '||l_def_control_rec.Dependency_Flag, 1, 'Y');
4257           aso_debug_pub.add('Defaulting_Flag - '||l_def_control_rec.Defaulting_Flag, 1, 'Y');
4258           aso_debug_pub.add('Application_Type_Code - '||l_def_control_rec.Application_Type_Code, 1, 'Y');
4259           aso_debug_pub.add('Defaulting_Flow_Code - '||l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
4260       END IF ;
4261 
4262       IF l_def_control_rec.application_type_code = 'QUOTING HTML' OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
4263 
4264           l_db_object_name := G_QUOTE_HEADER_DB_NAME;
4265 
4266       ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
4267           l_db_object_name := G_STORE_CART_HEADER_DB_NAME;
4268 
4269       ELSE
4270           l_control_rec.Defaulting_Fwk_Flag := 'N';
4271       END IF;
4272 
4273       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4274           aso_debug_pub.add('Create_Quote - Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
4275       END IF ;
4276 
4277       IF l_hd_shipment_tbl.count > 0 THEN
4278           l_hd_shipment_rec := l_hd_shipment_tbl(1);
4279       END IF;
4280 
4281       IF p_hd_payment_tbl.count > 0 THEN
4282           l_hd_payment_rec := p_hd_payment_tbl(1);
4283       END IF;
4284 
4285       IF p_hd_tax_detail_tbl.count > 0 THEN
4286           l_hd_tax_detail_rec := p_hd_tax_detail_tbl(1);
4287       END IF;
4288 
4289       l_hd_payment_tbl    := p_hd_payment_tbl;
4290       l_hd_tax_detail_tbl := p_hd_tax_detail_tbl;
4291 
4292       -- In create quote, it never deaults any line level records.
4293 /* Removing Call for defaulting from create_quote
4294       IF l_control_rec.defaulting_fwk_flag = 'Y' THEN
4295 
4296           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4297               aso_debug_pub.add('Create_Quote - Calling default_entity', 1, 'Y');
4298           END IF ;
4299 
4300           ASO_DEFAULTING_INT.Default_Entity (
4301                       p_api_version           =>  1.0
4302                     , p_control_rec           =>  l_def_control_rec
4303                     , p_database_object_name  =>  l_db_object_name
4304                     , p_quote_header_rec      =>  P_Qte_Header_Rec
4305                     , p_header_misc_rec       =>  l_hd_misc_rec
4306                     , p_header_shipment_rec   =>  l_hd_shipment_rec
4307                     , p_header_payment_rec    =>  l_hd_payment_rec
4308                     , p_header_tax_detail_rec =>  l_hd_tax_detail_rec
4309                     , x_quote_header_rec      =>  l_qte_header_rec
4310                     , x_header_misc_rec       =>  lx_hd_misc_rec
4311                     , x_header_shipment_rec   =>  lx_hd_shipment_rec
4312                     , x_header_payment_rec    =>  lx_hd_payment_rec
4313                     , x_header_tax_detail_rec =>  lx_hd_tax_detail_rec
4314                     , x_quote_line_rec        =>  lx_quote_line_rec
4315                     , x_line_misc_rec         =>  lx_ln_misc_rec
4316                     , x_line_shipment_rec     =>  lx_ln_shipment_rec
4317                     , x_line_payment_rec      =>  lx_ln_payment_rec
4318                     , x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec
4319                     , x_changed_flag          =>  lx_changed_flag
4320                     , x_return_status	      =>  x_return_status
4321                     , x_msg_count		      =>  x_msg_count
4322                     , x_msg_data		      =>  x_msg_data);
4323 
4324           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4325 
4326                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4327                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
4328                    FND_MSG_PUB.ADD;
4329                END IF;
4330 
4331                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4332                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4333                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4334                     RAISE FND_API.G_EXC_ERROR;
4335                END IF;
4336 
4337           END IF;
4338 
4339           IF Shipment_Null_Rec_Exists(lx_hd_shipment_rec, l_db_object_name) THEN
4340               l_hd_shipment_tbl(1) := lx_hd_shipment_rec;
4341           END IF;
4342 
4343           IF Payment_Null_Rec_Exists(lx_hd_payment_rec, l_db_object_name) THEN
4344               l_hd_payment_tbl(1) := lx_hd_payment_rec;
4345           END IF;
4346 
4347           IF Tax_Detail_Null_Rec_Exists(lx_hd_tax_detail_rec, l_db_object_name) THEN
4348               l_hd_tax_detail_tbl(1) := lx_hd_tax_detail_rec;
4349           END IF;
4350 
4351       END IF;
4352  */
4353       -- hyang defaulting framework end
4354 
4355 
4356       -- validate header information
4357 
4358 	 if aso_debug_pub.g_debug_flag = 'Y' then
4359 	     aso_debug_pub.add('Create_Quote: p_validation_level: ' || p_validation_level, 1, 'Y');
4360 	 end if;
4361 
4362       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4363 
4364 	       ASO_PARTY_INT.Validate_CustAccount (
4365                             p_init_msg_list   => FND_API.G_FALSE,
4366                             p_party_id        => l_qte_header_rec.party_id,
4367                             p_cust_account_id => l_qte_header_rec.cust_account_id,
4368                             x_return_status   => x_return_status,
4369                             x_msg_count	      => x_msg_count,
4370                             x_msg_data        => x_msg_data );
4371 
4372             if aso_debug_pub.g_debug_flag = 'Y' then
4373                 aso_debug_pub.add('Create_Quote: After call to validate_custaccount: x_return_status: ' || x_return_status, 1, 'Y');
4374             end if;
4375 
4376             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4377    	           RAISE FND_API.G_EXC_ERROR;
4378             END IF;
4379 
4380             ASO_VALIDATE_PVT.Validate_Quote_Exp_date(
4381                             p_init_msg_list         => FND_API.G_FALSE,
4382                             p_quote_expiration_date => p_qte_header_rec.quote_expiration_date,
4383                             x_return_status         => x_return_status,
4384                             x_msg_count	            => x_msg_count,
4385                             x_msg_data              => x_msg_data );
4386 
4387             if aso_debug_pub.g_debug_flag = 'Y' then
4388                 aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Exp_date: x_return_status: ' || x_return_status, 1, 'Y');
4389             end if;
4390 
4391             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4392 
4393                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4394                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_EXPIRATION_DATE');
4395                     FND_MSG_PUB.ADD;
4396                 END IF;
4397                 RAISE FND_API.G_EXC_ERROR;
4398             END IF;
4399 
4400             -- price list must exist and be active in OE_PRICE_LISTS
4401             ASO_VALIDATE_PVT.Validate_PriceList (
4402                             p_init_msg_list	=> FND_API.G_FALSE,
4403                             p_price_list_id	=> l_qte_header_rec.price_list_id,
4404                             x_return_status  => x_return_status,
4405                             x_msg_count	     => x_msg_count,
4406                             x_msg_data	     => x_msg_data);
4407 
4408             if aso_debug_pub.g_debug_flag = 'Y' then
4409                 aso_debug_pub.add('Create_Quote: After call to Validate_PriceList: x_return_status: ' || x_return_status, 1, 'Y');
4410             end if;
4411 
4412             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4413 
4414                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4415                     FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4416                     FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
4417                     FND_MSG_PUB.ADD;
4418                 END IF;
4419 	           RAISE FND_API.G_EXC_ERROR;
4420 	       END IF;
4421 
4422             ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
4423   	                      p_init_msg_list         => FND_API.G_FALSE,
4424                            p_price_list_id         => l_qte_header_rec.price_list_id,
4425                            p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
4426                            x_return_status         => x_return_status,
4427 	                      x_msg_count             => x_msg_count,
4428 	                      x_msg_data              => x_msg_data);
4429 
4430             if aso_debug_pub.g_debug_flag = 'Y' then
4431                 aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Price_Exp: x_return_status: ' || x_return_status, 1, 'Y');
4432             end if;
4433 
4434             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4435 
4436                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4437                     FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4438 				FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
4439                     FND_MSG_PUB.ADD;
4440                 END IF;
4441                 RAISE FND_API.G_EXC_ERROR;
4442             END IF;
4443 
4444             IF l_qte_header_rec.quote_status_id IS NOT NULL AND l_qte_header_rec.quote_status_id <> FND_API.G_MISS_NUM THEN
4445 
4446   	           -- status must exist and be active in ASO_QUOTE_STATUSES
4447   	           ASO_VALIDATE_PVT.Validate_Quote_Status (
4448   		                 p_init_msg_list    => FND_API.G_FALSE,
4449                            p_quote_status_id  => l_qte_header_rec.quote_status_id,
4450                            x_return_status    => x_return_status,
4451                            x_msg_count        => x_msg_count,
4452                            x_msg_data         => x_msg_data);
4453 
4454                 if aso_debug_pub.g_debug_flag = 'Y' then
4455                     aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Status: x_return_status: ' || x_return_status, 1, 'Y');
4456                 end if;
4457 
4458   	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4459 
4460                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4461   	                   FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4462                         FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_STATUS_ID', FALSE);
4463                         FND_MSG_PUB.ADD;
4464   	               END IF;
4465   	               RAISE FND_API.G_EXC_ERROR;
4466                 END IF;
4467 
4468             END IF;
4469 
4470             if aso_debug_pub.g_debug_flag = 'Y' then
4471                 aso_debug_pub.add('Create_Quote: p_hd_sales_credit_tbl.count: ' || p_hd_sales_credit_tbl.count, 1, 'Y');
4472             end if;
4473 
4474             FOR i in 1..p_hd_sales_credit_tbl.count LOOP
4475 
4476                 if aso_debug_pub.g_debug_flag = 'Y' then
4477                     aso_debug_pub.add('p_hd_sales_credit_tbl('||i||').operation_code: '|| p_hd_sales_credit_tbl(i).operation_code,1,'Y');
4478                 end if;
4479 
4480                 if (p_hd_sales_credit_tbl(i).operation_code = 'CREATE' or p_hd_sales_credit_tbl(i).operation_code = 'UPDATE') then
4481 
4482                     ASO_VALIDATE_PVT.Validate_Resource_id(
4483                               p_init_msg_list => FND_API.G_FALSE,
4484                               p_resource_id	 => p_hd_sales_credit_tbl(i).resource_id  ,
4485                               x_return_status => x_return_status,
4486                               x_msg_count     => x_msg_count,
4487                               x_msg_data      => x_msg_data);
4488 
4489                     if aso_debug_pub.g_debug_flag = 'Y' then
4490                         aso_debug_pub.add('Create_Quote: After call to Validate_Resource_id: x_return_status: ' || x_return_status, 1, 'Y');
4491                     end if;
4492 
4493                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4494 
4495                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4496                             FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
4497                             FND_MSG_PUB.ADD;
4498                         END IF;
4499                         RAISE FND_API.G_EXC_ERROR;
4500                     END IF;
4501 
4502                     ASO_VALIDATE_PVT.Validate_Resource_group_id(
4503                               p_init_msg_list     => FND_API.G_FALSE,
4504                               p_resource_group_id => p_hd_sales_credit_tbl(i).resource_group_id,
4505                               x_return_status     => x_return_status,
4506                               x_msg_count         => x_msg_count,
4507                               x_msg_data          => x_msg_data);
4508 
4509                      if aso_debug_pub.g_debug_flag = 'Y' then
4510                          aso_debug_pub.add('Create_Quote: After call to Validate_Resource_group_id: x_return_status: ' || x_return_status, 1, 'Y');
4511                      end if;
4512 
4513                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4514                          RAISE FND_API.G_EXC_ERROR;
4515                      END IF;
4516 
4517                      ASO_VALIDATE_PVT.Validate_Salescredit_Type(
4518                               p_init_msg_list        => FND_API.G_FALSE,
4519                               p_salescredit_type_id  => p_hd_sales_credit_tbl(i).sales_credit_type_id,
4520                               x_return_status        => x_return_status,
4521                               x_msg_count            => x_msg_count,
4522                               x_msg_data             => x_msg_data);
4523 
4524                      if aso_debug_pub.g_debug_flag = 'Y' then
4525                          aso_debug_pub.add('Create_Quote: After call to Validate_Salescredit_Type: x_return_status: ' || x_return_status, 1, 'Y');
4526                      end if;
4527 
4528                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4529                          RAISE FND_API.G_EXC_ERROR;
4530                      END IF;
4531 
4532                      ASO_VALIDATE_PVT.Validate_EmployPerson(
4533                               p_init_msg_list => FND_API.G_FALSE,
4534                               p_employee_id   => p_hd_sales_credit_tbl(i).employee_person_id,
4535                               x_return_status => x_return_status,
4536                               x_msg_count     => x_msg_count,
4537                               x_msg_data      => x_msg_data);
4538 
4539                      if aso_debug_pub.g_debug_flag = 'Y' then
4540                          aso_debug_pub.add('Create_Quote: After call to Validate_EmployPerson: x_return_status: ' || x_return_status, 1, 'Y');
4541                      end if;
4542 
4543                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4544                          RAISE FND_API.G_EXC_ERROR;
4545                      END IF;
4546 
4547                 end if;
4548 
4549             END LOOP;
4550 
4551             if aso_debug_pub.g_debug_flag = 'Y' then
4552                 aso_debug_pub.add('Create_Quote: p_hd_quote_party_tbl.count: ' || p_hd_quote_party_tbl.count, 1, 'Y');
4553             end if;
4554 
4555             FOR i in 1..p_hd_quote_party_tbl.count LOOP
4556 
4557                  ASO_VALIDATE_PVT.Validate_Party_Type(
4558 		                p_init_msg_list => FND_API.G_FALSE,
4559 		                p_party_type    => p_hd_quote_party_tbl(i).party_type,
4560         	                x_return_status => x_return_status,
4561                           x_msg_count     => x_msg_count,
4562                           x_msg_data      => x_msg_data);
4563 
4564                  if aso_debug_pub.g_debug_flag = 'Y' then
4565                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Type: x_return_status: ' || x_return_status, 1, 'Y');
4566                  end if;
4567 
4568                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4569                      RAISE FND_API.G_EXC_ERROR;
4570                  END IF;
4571 
4572                  ASO_VALIDATE_PVT.Validate_Party(
4573                           p_init_msg_list => FND_API.G_FALSE,
4574                           p_party_id      => p_hd_quote_party_tbl(i).party_id,
4575                           p_party_usage	  => null,
4576                           x_return_status => x_return_status,
4577                           x_msg_count     => x_msg_count,
4578                           x_msg_data      => x_msg_data);
4579 
4580                  if aso_debug_pub.g_debug_flag = 'Y' then
4581                      aso_debug_pub.add('Create_Quote: After call to Validate_Party: x_return_status: ' || x_return_status, 1, 'Y');
4582                  end if;
4583 
4584                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4585                      RAISE FND_API.G_EXC_ERROR;
4586                  END IF;
4587 
4588                  ASO_VALIDATE_PVT.Validate_Party_Object_Type(
4589                           p_init_msg_list     => FND_API.G_FALSE,
4590                           p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
4591                           x_return_status     => x_return_status,
4592                           x_msg_count         => x_msg_count,
4593                           x_msg_data          => x_msg_data);
4594 
4595                  if aso_debug_pub.g_debug_flag = 'Y' then
4596                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Object_Type: x_return_status: ' || x_return_status, 1, 'Y');
4597                  end if;
4598 
4599                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4600                      RAISE FND_API.G_EXC_ERROR;
4601                  END IF;
4602 
4603             END LOOP;
4604 
4605 
4606             ASO_VALIDATE_PVT.Validate_item_tca_bsc(
4607                           p_init_msg_list    => FND_API.G_FALSE,
4608                           p_qte_header_rec   => l_qte_header_rec,
4609                           p_shipment_rec     => lx_hd_shipment_rec,
4610                           p_operation_code   => 'CREATE',
4611                           p_application_type_code   => l_control_rec.application_type_code,
4612                           x_return_status    => x_return_status,
4613                           x_msg_count        => x_msg_count,
4614                           x_msg_data         => x_msg_data);
4615 
4616             if aso_debug_pub.g_debug_flag = 'Y' then
4617                 aso_debug_pub.add('Create_Quote: After call to Validate_item_tca_bsc: x_return_status: ' || x_return_status, 1, 'Y');
4618             end if;
4619 
4620             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4621                 RAISE FND_API.G_EXC_ERROR;
4622             END IF;
4623 
4624             ASO_VALIDATE_PVT.Validate_Resource_id(
4625                           p_init_msg_list    => FND_API.G_FALSE,
4626                           p_resource_id      => l_qte_header_rec.resource_id,
4627                           x_return_status    => x_return_status,
4628                           x_msg_count        => x_msg_count,
4629                           x_msg_data         => x_msg_data);
4630 
4631             if aso_debug_pub.g_debug_flag = 'Y' then
4632                 aso_debug_pub.add('Create_Quote: After call to Validate_Resource_id: x_return_status: ' || x_return_status, 1, 'Y');
4633             end if;
4634 
4635             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4636                 RAISE FND_API.G_EXC_ERROR;
4637             END IF;
4638 
4639      END IF;  --IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4640 
4641 
4642      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4643          aso_debug_pub.add('Create_Quote: Before call to Populate_Qte_Header', 1, 'Y');
4644      END IF;
4645 
4646 
4647      Populate_Qte_Header( p_qte_header_rec => l_qte_header_rec,
4648 	                     p_Control_Rec    => l_control_rec,
4649 					 x_qte_header_rec => lx_out_qte_header_rec);
4650 
4651 				l_qte_header_rec	:=  lx_out_qte_header_rec;
4652 
4653      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4654          aso_debug_pub.add('Create_Quote: After call to Populate_Qte_Header', 1, 'Y');
4655 	END IF;
4656 
4657 
4658      IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4659 
4660             IF l_hd_shipment_tbl.count > 0 THEN
4661                 l_shipment_rec := l_hd_shipment_tbl(1);
4662             END IF;
4663 
4664             IF aso_debug_pub.g_debug_flag = 'Y' THEN
4665                 aso_debug_pub.add('Create_Quote: Before call to Validate_record_tca_crs', 1, 'N');
4666             END IF;
4667 
4668             ASO_VALIDATE_PVT.Validate_record_tca_crs(
4669     	                     p_init_msg_list   => FND_API.G_FALSE,
4670     	                     p_qte_header_rec  => l_qte_header_rec,
4671     	                     p_shipment_rec    => l_shipment_rec,
4672     	                     p_operation_code  => 'CREATE',
4673     	                     p_application_type_code  => l_control_rec.application_type_code,
4674     	                     x_return_status   => x_return_status,
4675                           x_msg_count       => x_msg_count,
4676                           x_msg_data        => x_msg_data);
4677 
4678             if aso_debug_pub.g_debug_flag = 'Y' then
4679                 aso_debug_pub.add('Create_Quote: After call to Validate_record_tca_crs: x_return_status: ' || x_return_status, 1, 'Y');
4680             end if;
4681 
4682             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4683                 RAISE FND_API.G_EXC_ERROR;
4684             END IF;
4685 
4686        -- bug 5196952 validate the ship method code
4687        IF (l_shipment_rec.ship_method_code is not null and l_shipment_rec.ship_method_code <> fnd_api.g_miss_char and l_shipment_rec.operation_code = 'CREATE') then
4688 
4689           -- get the master org id from the quote hdr org id
4690           OPEN c_inv_org_id(l_qte_header_rec.org_id);
4691           FETCH c_inv_org_id into l_master_organization_id;
4692           CLOSE c_inv_org_id;
4693 
4694           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4695            aso_debug_pub.add('Create_Quote - l_master_organization_id:  '|| l_master_organization_id, 1, 'N');
4696            aso_debug_pub.add('Create_Quote - l_qte_header_rec.org_id:   '|| l_qte_header_rec.org_id, 1, 'N');
4697            aso_debug_pub.add('Create_Quote - before validate ship_method_code ', 1, 'N');
4698           end if;
4699          ASO_VALIDATE_PVT.validate_ship_method_code
4700          (
4701           p_init_msg_list          => fnd_api.g_false,
4702           p_qte_header_id          => l_qte_header_rec.quote_header_id,
4703           p_qte_line_id            => fnd_api.g_miss_num,
4704           p_organization_id        => l_master_organization_id,
4705           p_ship_method_code       => l_shipment_rec.ship_method_code,
4706           p_operation_code         => 'CREATE',
4707           x_return_status          => x_return_status,
4708           x_msg_count              => x_msg_count,
4709           x_msg_data               => x_msg_data);
4710 
4711           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4712            aso_debug_pub.add('Create_Quote - After validate ship_method_code ', 1, 'N');
4713           end if;
4714 
4715           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4716               RAISE FND_API.G_EXC_ERROR;
4717           END IF;
4718         end if;  -- end if for ship method code check
4719 
4720      END IF;  --IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4721 
4722 
4723      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4724          aso_debug_pub.add('Create_Quote: Before call to check_tca', 1, 'N');
4725      END IF;
4726 
4727      ASO_CHECK_TCA_PVT.check_tca( p_api_version         => 1.0,
4728                                   p_init_msg_list       => FND_API.G_FALSE,
4729                                   P_Qte_Rec             => l_qte_header_rec,
4730     		                        p_Header_Shipment_Tbl => l_hd_Shipment_Tbl,
4731                                   P_Operation_Code      => 'CREATE',
4732                                   p_application_type_code      => l_control_rec.application_type_code,
4733                                   x_return_status       => x_return_status,
4734                                   x_msg_count           => x_msg_count,
4735                                   x_msg_data            => x_msg_data);
4736 
4737      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4738          aso_debug_pub.add('Create_Quote: After call to check_tca: x_return_status: ' || x_return_status, 1, 'Y');
4739 	END IF;
4740 
4741     	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4742     	    RAISE FND_API.G_EXC_ERROR;
4743     	END IF;
4744 
4745 	-- order_type must exist and be active in OE_ORDER_TYPES
4746      ASO_TRADEIN_PVT.OrderType( p_init_msg_list         => FND_API.G_FALSE,
4747                                 p_qte_header_rec        => l_qte_header_rec,
4748                                 x_return_status 		 => x_return_status,
4749                                 x_msg_count     		 => x_msg_count,
4750                                 x_msg_data      		 => x_msg_data);
4751 
4752 	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4753 	     RAISE FND_API.G_EXC_ERROR;
4754 	 END IF;
4755 
4756       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4757           aso_debug_pub.add('Create_Quote: After call to OrderType: x_return_status: ' || x_return_status, 1, 'Y');
4758 	 END IF;
4759 
4760       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
4761 
4762 
4763            ASO_VALIDATE_PVT.Validate_NotNULL_VARCHAR2 (
4764                       p_init_msg_list   => FND_API.G_FALSE,
4765                       p_column_name     => 'CURRENCY_CODE',
4766                       p_notnull_column  => l_qte_header_rec.currency_code,
4767                       x_return_status   => x_return_status,
4768                       x_msg_count       => x_msg_count,
4769                       x_msg_data        => x_msg_data);
4770 
4771            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4772                aso_debug_pub.add('Create_Quote: After call to Validate_NotNULL_VARCHAR2: x_return_status: ' || x_return_status, 1, 'Y');
4773 	      END IF;
4774 
4775            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4776                RAISE FND_API.G_EXC_ERROR;
4777            END IF;
4778 
4779            ASO_VALIDATE_PVT.Validate_NotNULL_VARCHAR2 (
4780                       p_init_msg_list  => FND_API.G_FALSE,
4781                       p_column_name    => 'SOURCE_CODE',
4782                       p_notnull_column => l_qte_header_rec.quote_source_code,
4783                       x_return_status  => x_return_status,
4784                       x_msg_count      => x_msg_count,
4785                       x_msg_data       => x_msg_data );
4786 
4787            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4788                aso_debug_pub.add('Create_Quote: After call to Validate_NotNULL_VARCHAR2: x_return_status: ' || x_return_status, 1, 'Y');
4789 	      END IF;
4790 
4791            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4792 
4793                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4794                    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4795                    FND_MESSAGE.Set_Token('COLUMN', 'SOURCE_CODE', FALSE);
4796                    FND_MSG_PUB.ADD;
4797                END IF;
4798                RAISE FND_API.G_EXC_ERROR;
4799            END IF;
4800 
4801            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4802                aso_debug_pub.add('Create_Quote: Before validate_tax_exemption ', 1, 'N');
4803            END IF;
4804 
4805 	      -- tax_exempt_flag must be in 'E', 'R' and 'S'
4806 	      -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
4807 
4808            FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
4809 
4810                 ASO_VALIDATE_PVT.Validate_Tax_Exemption (
4811                              p_init_msg_list          => FND_API.G_FALSE,
4812                              p_tax_exempt_flag        => l_hd_tax_detail_tbl(i).tax_exempt_flag,
4813                              p_tax_exempt_reason_code => l_hd_tax_detail_tbl(i).tax_exempt_reason_code,
4814                              x_return_status          => x_return_status,
4815                              x_msg_count              => x_msg_count,
4816                              x_msg_data               => x_msg_data );
4817 
4818                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4819                     aso_debug_pub.add('Create_Quote: After call to Validate_Tax_Exemption: x_return_status: ' || x_return_status, 1, 'Y');
4820 	           END IF;
4821 
4822 	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4823 
4824                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4825                         FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4826                         FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
4827                         FND_MSG_PUB.ADD;
4828                     END IF;
4829                     RAISE FND_API.G_EXC_ERROR;
4830                 END IF;
4831 
4832 	      END LOOP;
4833 
4834            FOR i IN 1..p_ln_tax_detail_tbl.count LOOP
4835 
4836                 ASO_VALIDATE_PVT.Validate_Tax_Exemption (
4837                              p_init_msg_list          => FND_API.G_FALSE,
4838                              p_tax_exempt_flag        => p_ln_tax_detail_tbl(i).tax_exempt_flag,
4839                              p_tax_exempt_reason_code => p_ln_tax_detail_tbl(i).tax_exempt_reason_code,
4840                              x_return_status          => x_return_status,
4841                              x_msg_count              => x_msg_count,
4842                              x_msg_data               => x_msg_data );
4843 
4844                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4845                     aso_debug_pub.add('Create_Quote: After call to Validate_Tax_Exemption: x_return_status: ' || x_return_status, 1, 'Y');
4846 	           END IF;
4847 
4848 	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4849 
4850                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4851                         FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4852                         FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
4853                         FND_MSG_PUB.ADD;
4854                     END IF;
4855                     RAISE FND_API.G_EXC_ERROR;
4856 	           END IF;
4857 
4858            END LOOP;
4859 
4860            FOR i in 1..p_hd_quote_party_tbl.count LOOP
4861 
4862                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
4863                      aso_debug_pub.add('Create_Quote: Before call to Validate_Party_Object_Id', 1, 'N');
4864                  END IF;
4865 
4866                  ASO_VALIDATE_PVT.Validate_Party_Object_Id(
4867                              p_init_msg_list     => FND_API.G_FALSE,
4868                              p_party_id          => p_hd_quote_party_tbl(i).party_id,
4869                              p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
4870                              p_party_object_id   => p_hd_quote_party_tbl(i).party_object_id,
4871                              x_return_status     => x_return_status,
4872                              x_msg_count         => x_msg_count,
4873                              x_msg_data          => x_msg_data);
4874 
4875                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
4876                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Object_Id: x_return_status: ' || x_return_status, 1, 'Y');
4877 	            END IF;
4878 
4879                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4880 
4881                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4882 	                    FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
4883                          FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
4884 	                    FND_MSG_PUB.ADD;
4885                      END IF;
4886                      RAISE FND_API.G_EXC_ERROR;
4887                  END IF;
4888 
4889            END LOOP;
4890 
4891            ASO_VALIDATE_PVT.Validate_Emp_Res_id(
4892                              p_init_msg_list       => FND_API.G_FALSE,
4893                              p_resource_id         =>  p_qte_header_rec.resource_id,
4894                              p_employee_person_id  =>  p_qte_header_rec.employee_person_id ,
4895                              x_return_status       => x_return_status,
4896                              x_msg_count           => x_msg_count,
4897                              x_msg_data            => x_msg_data  );
4898 
4899            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4900                aso_debug_pub.add('Create_Quote: After call to Validate_Emp_Res_id: x_return_status: ' || x_return_status, 1, 'Y');
4901 	      END IF;
4902 
4903            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4904                RAISE FND_API.G_EXC_ERROR;
4905            END IF;
4906 
4907       END IF;  --IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
4908 
4909 
4910       IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'N') THEN
4911 
4912            IF l_hd_payment_tbl.count > 1 THEN
4913 
4914                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4915                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
4916                    FND_MSG_PUB.ADD;
4917                END IF;
4918                RAISE FND_API.G_EXC_ERROR;
4919 
4920            ELSIF l_hd_payment_tbl.count = 1 THEN
4921 
4922                IF l_hd_payment_tbl(1).payment_option = 'SPLIT' THEN
4923 
4924                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4925                        FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
4926                        FND_MSG_PUB.ADD;
4927                    END IF;
4928                    RAISE FND_API.G_EXC_ERROR;
4929                END IF;
4930 
4931            END IF;
4932 
4933       END IF;
4934 
4935       IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'Y') THEN
4936 
4937            IF l_hd_payment_tbl.count > 1 THEN
4938 
4939                FOR i IN 1..l_hd_payment_tbl.count LOOP
4940 
4941                     IF l_hd_payment_tbl(i).payment_option <> 'SPLIT' THEN
4942 
4943                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4944                             FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
4945                             FND_MSG_PUB.ADD;
4946                         END IF;
4947                         RAISE FND_API.G_EXC_ERROR;
4948                     END IF;
4949 
4950                END LOOP;
4951            END IF;
4952       END IF;
4953 
4954 	 IF l_hd_tax_detail_tbl.count > 1 THEN
4955 
4956           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4957               FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_TAX_RECORDS');
4958               FND_MSG_PUB.ADD;
4959           END IF;
4960           RAISE FND_API.G_EXC_ERROR;
4961       END IF;
4962 
4963       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4964           aso_debug_pub.add('Create_Quote: Before Validate_Agreement:l_qte_header_rec.contract_id: '||l_qte_header_rec.contract_id, 1, 'N');
4965       END IF;
4966 
4967       IF (l_qte_header_rec.contract_id IS NOT NULL AND
4968           l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
4969 
4970           ASO_VALIDATE_PVT.Validate_Agreement(
4971                p_init_msg_list             => FND_API.G_FALSE,
4972                P_Agreement_Id              => l_qte_header_rec.contract_id,
4973                x_return_status             => x_return_status,
4974                x_msg_count                 => x_msg_count,
4975                x_msg_data                  => x_msg_data);
4976 
4977           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4978 		    aso_debug_pub.add('Create_Quote: After call to Validate_Agreement: x_return_status: '||x_return_status, 1, 'N');
4979 		END IF;
4980 
4981           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4982                RAISE FND_API.G_EXC_ERROR;
4983           END IF;
4984       END IF;
4985 
4986       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4987           aso_debug_pub.add('Create_Quote: p_qte_header_rec.minisite_id: '|| p_qte_header_rec.minisite_id);
4988       END IF;
4989 
4990       IF (p_qte_header_rec.minisite_id IS NOT NULL AND
4991           p_qte_header_rec.minisite_id <> FND_API.G_MISS_NUM) THEN
4992 
4993           ASO_VALIDATE_PVT.Validate_MiniSite( p_init_msg_list => FND_API.G_FALSE,
4994                                               p_minisite_id   => p_qte_header_rec.minisite_id,
4995                                               x_return_status => x_return_status,
4996                                               x_msg_count     => x_msg_count,
4997                                               x_msg_data      => x_msg_data);
4998 
4999 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5000 		    aso_debug_pub.add('Create_Quote: After call to ASO_VALIDATE_PVT.Validate_MiniSite');
5001 	         aso_debug_pub.add('Create_Quote: x_return_status: '|| x_return_status);
5002 		END IF;
5003 
5004           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5005               RAISE FND_API.G_EXC_ERROR;
5006           END IF;
5007 
5008       END IF;
5009 
5010       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5011           aso_debug_pub.add('Create_Quote: Before call to insert_rows', 1, 'Y');
5012       END IF;
5013 
5014       Insert_Rows (
5015 			p_qte_header_rec        => l_qte_header_rec,
5016 			p_Price_Attributes_Tbl  => p_hd_price_attributes_tbl,
5017 			P_Price_Adjustment_Tbl  => l_price_adj_tbl,
5018 			P_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl,
5019 			P_Payment_Tbl	         => l_hd_payment_tbl,
5020 			P_Shipment_tbl	         => l_hd_shipment_tbl,
5021 			P_Freight_Charge_Tbl    => p_hd_freight_charge_tbl,
5022 			P_Tax_Detail_Tbl        => l_hd_tax_detail_tbl,
5023                P_hd_Attr_Ext_Tbl       => P_hd_Attr_Ext_Tbl,
5024                P_sales_credit_tbl      => p_hd_sales_credit_tbl,
5025                P_quote_party_tbl       => p_hd_quote_party_tbl,
5026                P_Qte_Access_Tbl        => P_Qte_Access_Tbl,
5027 			x_qte_header_rec        => x_qte_header_rec,
5028 			x_Price_Attributes_Tbl  => x_hd_price_attributes_tbl,
5029 			x_Price_Adjustment_Tbl  => l_price_adj_tbl_out,
5030 			x_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl_out,
5031 			x_Payment_Tbl           => x_hd_payment_tbl,
5032 			x_Shipment_rec	         => x_hd_shipment_rec,
5033 			x_Freight_Charge_Tbl    => x_hd_freight_charge_tbl,
5034 			x_Tax_Detail_Tbl        => x_hd_tax_detail_tbl,
5035                x_hd_Attr_Ext_Tbl       => x_hd_Attr_Ext_Tbl,
5036                x_sales_credit_tbl      => x_hd_sales_credit_tbl,
5037                x_quote_party_tbl       => x_hd_quote_party_tbl,
5038                x_Qte_Access_Tbl        => x_Qte_Access_Tbl,
5039 			X_Return_Status 	    => l_return_status,
5040 			X_Msg_Count		    => x_msg_count,
5041 			X_Msg_Data		    => x_msg_data);
5042 
5043       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5044           aso_debug_pub.add('Create_Quote: After call to Insert_Rows: x_return_status: '||x_return_status, 1, 'N');
5045       END IF;
5046 
5047       l_price_adj_tbl       :=  l_price_adj_tbl_out;
5048       l_price_adj_attr_tbl  :=  l_price_adj_attr_tbl_out;
5049 
5050 
5051       -- Add template rows to p_qte_line_tbl and p_qte_line_dtl tbales
5052 
5053       if aso_debug_pub.g_debug_flag = 'Y' then
5054           aso_debug_pub.add('Create_Quote: p_template_tbl.count: ' || p_template_tbl.count, 1, 'Y');
5055       end if;
5056 
5057       if p_template_tbl.count > 0 then
5058 
5059 	    for i in 1..p_template_tbl.count loop
5060 	        l_template_tbl(i) := p_template_tbl(i).template_id;
5061 	    end loop;
5062 
5063          if aso_debug_pub.g_debug_flag = 'Y' then
5064              aso_debug_pub.add('Create_Quote: l_template_tbl.count:           ' || l_template_tbl.count, 1, 'Y');
5065              aso_debug_pub.add('Create_Quote: x_qte_header_rec.currency_code: ' || x_qte_header_rec.currency_code, 1, 'Y');
5066              aso_debug_pub.add('Create_Quote: x_qte_header_rec.price_list_id: ' || x_qte_header_rec.price_list_id, 1, 'Y');
5067              aso_debug_pub.add('Create_Quote: Before call to aso_quote_templ_pvt.add_template_to_quote procedure', 1, 'Y');
5068          end if;
5069 
5070 	    aso_quote_tmpl_pvt.add_template_to_quote(
5071                    p_api_version_number => 1.0,
5072                    p_init_msg_list      => fnd_api.g_false,
5073                    p_commit             => fnd_api.g_false,
5074                    p_validation_level	=> p_validation_level,
5075                    p_update_flag        => 'N',
5076                    p_template_id_tbl    => l_template_tbl,
5077                    p_qte_header_rec     => x_qte_header_rec,
5078                    p_control_rec        => p_control_rec,
5079                    x_qte_line_tbl       => lx_qte_line_tbl,
5080                    x_qte_line_dtl_tbl   => x_qte_line_dtl_tbl,
5081                    x_return_status      => x_return_status,
5082                    x_msg_count          => x_msg_count,
5083                    x_msg_data           => x_msg_data
5084                    );
5085 
5086 
5087          if aso_debug_pub.g_debug_flag = 'Y' then
5088 
5089 	        aso_debug_pub.add('Create_Quote: After call to aso_quote_templ_pvt.add_template_to_quote: x_return_status: '|| x_return_status, 1, 'Y');
5090 	        aso_debug_pub.add('Create_Quote: lx_qte_line_tbl.count:    ' || lx_qte_line_tbl.count, 1, 'Y');
5091 	        aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl.count: ' || x_qte_line_dtl_tbl.count, 1, 'Y');
5092 
5093 	        for i in 1 .. lx_qte_line_tbl.count loop
5094 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').inventory_item_id: '|| lx_qte_line_tbl(i).inventory_item_id, 1, 'N');
5095 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').uom_code:          '|| lx_qte_line_tbl(i).uom_code, 1, 'N');
5096 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').quantity:          '|| lx_qte_line_tbl(i).quantity, 1, 'N');
5097 	        end loop;
5098 
5099              for i in 1 .. x_qte_line_dtl_tbl.count loop
5100 
5101 	             aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl('||i||').qte_line_index:             '|| x_qte_line_dtl_tbl(i).qte_line_index, 1, 'N');
5102 	             aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl('||i||').ref_line_index:             '|| x_qte_line_dtl_tbl(i).ref_line_index, 1, 'N');
5103 	             aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl('||i||').service_ref_qte_line_index: '|| x_qte_line_dtl_tbl(i).service_ref_qte_line_index, 1, 'N');
5104 	             aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl('||i||').service_ref_line_id:        '|| x_qte_line_dtl_tbl(i).service_ref_line_id, 1, 'N');
5105 
5106 		   end loop;
5107 
5108          end if;
5109 
5110 
5111 	    if lx_qte_line_tbl.count > 0 then
5112 
5113 	           l_qte_line_dtl_tbl_out := x_qte_line_dtl_tbl;
5114 
5115                 for i in 1 .. lx_qte_line_tbl.count loop
5116 
5117                      l_count  :=  l_qte_line_tbl.count;
5118 
5119                      l_qte_line_tbl(l_count + 1) := lx_qte_line_tbl(i);
5120 
5121                      for j in 1 .. x_qte_line_dtl_tbl.count loop
5122 
5123                           if x_qte_line_dtl_tbl(j).qte_line_index = i then
5124                               l_qte_line_dtl_tbl_out(j).qte_line_index := l_count + 1;
5125                           end if;
5126 
5127                           if x_qte_line_dtl_tbl(j).ref_line_index = i then
5128                               l_qte_line_dtl_tbl_out(j).ref_line_index := l_count + 1;
5129                           end if;
5130 
5131                           if x_qte_line_dtl_tbl(j).service_ref_qte_line_index = i then
5132                               l_qte_line_dtl_tbl_out(j).service_ref_qte_line_index := l_count + 1;
5133                           end if;
5134 
5135                           if x_qte_line_dtl_tbl(j).top_model_line_index = i then
5136                               l_qte_line_dtl_tbl_out(j).top_model_line_index := l_count + 1;
5137                           end if;
5138 
5139                           if x_qte_line_dtl_tbl(j).ato_line_index = i then
5140                               l_qte_line_dtl_tbl_out(j).ato_line_index := l_count + 1;
5141                           end if;
5142 
5143                      end loop;
5144 
5145                 end loop;
5146 
5147                 if l_qte_line_dtl_tbl_out.count > 0 then
5148 
5149                      for i in 1 .. l_qte_line_dtl_tbl_out.count loop
5150                           lx_qte_line_dtl_tbl(lx_qte_line_dtl_tbl.count + 1) := l_qte_line_dtl_tbl_out(i);
5151                      end loop;
5152 
5153                 end if;
5154 
5155 	    end if; -- if lx_qte_line_tbl.count > 0 then
5156 
5157       end if; --if p_template_tbl.count > 0 then
5158 
5159 
5160 	 if aso_debug_pub.g_debug_flag = 'Y' then
5161 
5162 	     aso_debug_pub.add('Create_Quote: l_qte_line_tbl.count:      ' || l_qte_line_tbl.count, 1, 'Y');
5163 	     aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl.count: ' || lx_qte_line_dtl_tbl.count, 1, 'Y');
5164 
5165 	     for i in 1 .. l_qte_line_tbl.count loop
5166 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').inventory_item_id: '|| l_qte_line_tbl(i).inventory_item_id, 1, 'N');
5167 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').uom_code:          '|| l_qte_line_tbl(i).uom_code, 1, 'N');
5168 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').quantity:          '|| l_qte_line_tbl(i).quantity, 1, 'N');
5169 	     end loop;
5170 
5171           for i in 1 .. lx_qte_line_dtl_tbl.count loop
5172 
5173 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').qte_line_index:             '|| lx_qte_line_dtl_tbl(i).qte_line_index, 1, 'N');
5174 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').ref_line_index:             '|| lx_qte_line_dtl_tbl(i).ref_line_index, 1, 'N');
5175 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').service_ref_qte_line_index: '|| lx_qte_line_dtl_tbl(i).service_ref_qte_line_index, 1, 'N');
5176 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').service_ref_line_id:        '|| lx_qte_line_dtl_tbl(i).service_ref_line_id, 1, 'N');
5177 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').ato_line_index:             '|| lx_qte_line_dtl_tbl(i).ato_line_index, 1, 'N');
5178 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').ato_line_id:                '|| lx_qte_line_dtl_tbl(i).ato_line_id, 1, 'N');
5179 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').top_model_line_index:       '|| lx_qte_line_dtl_tbl(i).top_model_line_index, 1, 'N');
5180 	          aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl('||i||').top_model_line_id:          '|| lx_qte_line_dtl_tbl(i).top_model_line_id, 1, 'N');
5181 
5182 		end loop;
5183 
5184 	 end if;
5185 
5186       -- End of Add template rows
5187 
5188 
5189       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5190           aso_debug_pub.add('Create_Quote: value of ASO_API_ENABLE_SECURITY: ' || FND_PROFILE.Value('ASO_API_ENABLE_SECURITY'), 1, 'Y');
5191           aso_debug_pub.add('Create_Quote: Before Assign_Team: l_sales_team_prof: ' || l_sales_team_prof, 1, 'Y');
5192           aso_debug_pub.add('Create_Quote: value of p_qte_header_rec.quote_type: ' || p_qte_header_rec.quote_type, 1, 'Y');
5193 	 END IF;
5194 
5195       IF (NVL(FND_PROFILE.Value('ASO_API_ENABLE_SECURITY'),'N') = 'Y' AND NVL(p_qte_header_rec.quote_type, 'X') <> 'T') THEN
5196 
5197           lx_qte_header_rec := x_qte_header_rec;
5198 
5199           OPEN C_Check_Qte_Status (x_qte_header_rec.quote_header_id);
5200           FETCH C_Check_Qte_Status INTO l_istore_source;
5201           CLOSE C_Check_Qte_Status;
5202 
5203           IF l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL' THEN
5204 
5205               IF p_control_rec.quote_source <> 'OPP_QUOTE' THEN
5206 
5207                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5208                       aso_debug_pub.add('Create_Quote: Before Assign_Team: p_control_rec.quote_source: ' || p_control_rec.quote_source, 1, 'Y');
5209                       aso_debug_pub.add('Create_Quote: Before Assign_Team: l_istore_source: ' || l_istore_source, 1, 'Y');
5210                   END IF;
5211 
5212                   IF l_istore_source <> 'Y' THEN
5213 
5214                       ASO_SALES_TEAM_PVT.Assign_Sales_Team (
5215                                     P_Init_Msg_List         => FND_API.G_FALSE,
5216                                     P_Commit                => FND_API.G_FALSE,
5217                                     p_Qte_Header_Rec        => x_qte_header_rec,
5218                                     P_Operation             => 'CREATE',
5219                                     x_Qte_Header_Rec        => lx_qte_header_rec,
5220                                     x_return_status         => x_return_status,
5221                                     x_msg_count             => x_msg_count,
5222                                     x_msg_data              => x_msg_data );
5223 
5224                       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5225                           aso_debug_pub.add('Create_Quote: After call to Assign_Sales_Team: x_return_status: '||x_return_status, 1, 'N');
5226                       END IF;
5227 
5228                       IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5229                           RAISE FND_API.G_EXC_ERROR;
5230                       ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5231                           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5232                       END IF;
5233 
5234                   END IF; --istore
5235 
5236               ELSE -- opp_quote
5237 
5238                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5239                       aso_debug_pub.add('Create_Quote: Before Opp_Quote_Primary_SalesRep: p_control_rec.quote_source: ' || p_control_rec.quote_source, 1, 'Y');
5240                   END IF;
5241 
5242                   ASO_SALES_TEAM_PVT.Opp_Quote_Primary_SalesRep (
5243                                   P_Init_Msg_List         => FND_API.G_FALSE,
5244                                   p_Qte_Header_Rec        => x_qte_header_rec,
5245                                   x_Qte_Header_Rec        => lx_qte_header_rec,
5246                                   x_return_status         => x_return_status,
5247                                   x_msg_count             => x_msg_count,
5248                                   x_msg_data              => x_msg_data );
5249 
5250                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5251                       aso_debug_pub.add('Create_Quote: After call to Opp_Quote_Primary_SalesRep: x_return_status: '||x_return_status, 1, 'N');
5252                   END IF;
5253 
5254                   IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5255                       RAISE FND_API.G_EXC_ERROR;
5256                   ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5257                       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5258                   END IF;
5259 
5260               END IF; -- opp_quote
5261 
5262           ELSE -- prof = NONE
5263 
5264               ASO_SECURITY_INT.Add_SalesRep_QuoteCreator (
5265                           p_init_msg_list              => FND_API.G_FALSE,
5266                           p_commit                     => FND_API.G_FALSE,
5267                           p_Qte_Header_Rec             => x_qte_header_rec,
5268                           x_return_status              => x_return_status,
5269                           x_msg_count                  => x_msg_count,
5270                           x_msg_data                   => x_msg_data );
5271 
5272               IF aso_debug_pub.g_debug_flag = 'Y' THEN
5273                   aso_debug_pub.add('Create_Quote: After call to Add_SalesRep_QuoteCreator: x_return_status: '||x_return_status, 1, 'N');
5274               END IF;
5275 
5276               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5277                   RAISE FND_API.G_EXC_ERROR;
5278               END IF;
5279 
5280 	         open  c_last_update_date(x_qte_header_rec.quote_header_id);
5281 	         fetch c_last_update_date into x_qte_header_rec.last_update_date;
5282 	         close c_last_update_date;
5283 
5284               l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
5285 
5286 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
5287 		        aso_debug_pub.add('Create_Quote: After call to Add_SalesRep_QuoteCreator');
5288                   aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
5289                   aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
5290               END IF;
5291 
5292           END IF; -- prof
5293 
5294           if aso_debug_pub.g_debug_flag = 'Y' then
5295               aso_debug_pub.add('Create_Quote: x_hd_sales_credit_tbl.count: '|| x_hd_sales_credit_tbl.count);
5296 		end if;
5297 
5298           IF x_hd_sales_credit_tbl.count < 1 AND l_istore_source <> 'Y' THEN
5299 
5300               OPEN C_Get_Quota_Credit_Type;
5301               FETCH C_Get_Quota_Credit_Type INTO l_quota_id;
5302               CLOSE C_Get_Quota_Credit_Type;
5303 
5304               if aso_debug_pub.g_debug_flag = 'Y' then
5305                   aso_debug_pub.add('Create_Quote: l_quota_id: '|| l_quota_id);
5306 		    end if;
5307 
5308               x_hd_sales_credit_tbl(1) := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_REC;
5309 
5310               if aso_debug_pub.g_debug_flag = 'Y' then
5311                   aso_debug_pub.add('Create_Quote: After assigning x_hd_sales_credit_tbl.count: '|| x_hd_sales_credit_tbl.count);
5312               end if;
5313 
5314               ASO_SALES_CREDITS_PKG.Insert_Row(
5315                               p_CREATION_DATE            => SYSDATE,
5316                               p_CREATED_BY               => G_USER_ID,
5317                               p_LAST_UPDATED_BY          => G_USER_ID,
5318                               p_LAST_UPDATE_DATE         => SYSDATE,
5319                               p_LAST_UPDATE_LOGIN        => G_LOGIN_ID,
5320                               p_REQUEST_ID               => FND_API.G_MISS_NUM,
5321                               p_PROGRAM_APPLICATION_ID   => FND_API.G_MISS_NUM,
5322                               p_PROGRAM_ID               => FND_API.G_MISS_NUM,
5323                               p_PROGRAM_UPDATE_DATE      => FND_API.G_MISS_DATE,
5324                               px_SALES_CREDIT_ID         => x_hd_sales_credit_tbl(1).Sales_Credit_Id,
5325                               p_QUOTE_HEADER_ID          => lx_qte_header_rec.QUOTE_HEADER_ID,
5326                               p_QUOTE_LINE_ID            => FND_API.G_MISS_NUM,
5327                               p_PERCENT                  => 100,
5328                               p_RESOURCE_ID              => lx_qte_header_rec.RESOURCE_ID,
5329                               p_RESOURCE_GROUP_ID        => lx_qte_header_rec.RESOURCE_GRP_ID,
5330                               p_EMPLOYEE_PERSON_ID       => FND_API.G_MISS_NUM,
5331                               p_SALES_CREDIT_TYPE_ID     => l_quota_id,
5332                               p_ATTRIBUTE_CATEGORY_CODE  => FND_API.G_MISS_CHAR,
5333                               p_ATTRIBUTE1               => FND_API.G_MISS_CHAR,
5334                               p_ATTRIBUTE2               => FND_API.G_MISS_CHAR,
5335                               p_ATTRIBUTE3               => FND_API.G_MISS_CHAR,
5336                               p_ATTRIBUTE4               => FND_API.G_MISS_CHAR,
5337                               p_ATTRIBUTE5               => FND_API.G_MISS_CHAR,
5338                               p_ATTRIBUTE6               => FND_API.G_MISS_CHAR,
5339                               p_ATTRIBUTE7               => FND_API.G_MISS_CHAR,
5340                               p_ATTRIBUTE8               => FND_API.G_MISS_CHAR,
5341                               p_ATTRIBUTE9               => FND_API.G_MISS_CHAR,
5342                               p_ATTRIBUTE10              => FND_API.G_MISS_CHAR,
5343                               p_ATTRIBUTE11              => FND_API.G_MISS_CHAR,
5344                               p_ATTRIBUTE12              => FND_API.G_MISS_CHAR,
5345                               p_ATTRIBUTE13              => FND_API.G_MISS_CHAR,
5346                               p_ATTRIBUTE14              => FND_API.G_MISS_CHAR,
5347                               p_ATTRIBUTE15              => FND_API.G_MISS_CHAR,
5348                               p_ATTRIBUTE16              => FND_API.G_MISS_CHAR,
5349                               p_ATTRIBUTE17              => FND_API.G_MISS_CHAR,
5350                               p_ATTRIBUTE18              => FND_API.G_MISS_CHAR,
5351                               p_ATTRIBUTE19              => FND_API.G_MISS_CHAR,
5352                               p_ATTRIBUTE20              => FND_API.G_MISS_CHAR,
5353                               p_SYSTEM_ASSIGNED_FLAG     => 'N',
5354                               p_CREDIT_RULE_ID           => FND_API.G_MISS_NUM,
5355                               p_OBJECT_VERSION_NUMBER    => FND_API.G_MISS_NUM );
5356 
5357               if aso_debug_pub.g_debug_flag = 'Y' then
5358                   aso_debug_pub.add('Create_Quote: After call to Insert_Row Sales_Credit_Id: '|| x_hd_sales_credit_tbl(1).Sales_Credit_Id);
5359               end if;
5360 
5361           END IF; -- sales_cred_tbl.count
5362 
5363       END IF;  -- Enable API Security Prof
5364 
5365       -- end security changes
5366 
5367       --  changes for quote related objects
5368 
5369       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5370           aso_debug_pub.add('Before creating object relationship ', 1, 'Y');
5371       END IF;
5372 
5373       IF P_Related_Obj_Tbl.count > 0 THEN
5374 
5375         For i in 1..P_Related_Obj_Tbl.count LOOP
5376 
5377       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5378           aso_debug_pub.add('Inside the related object loop ', 1, 'Y');
5379       END IF;
5380 
5381           l_related_obj_rec := P_Related_Obj_Tbl(i);
5382 
5383           -- logic to populate the operation code
5384 		Open c_obj_id(x_qte_header_rec.quote_header_id);
5385 	     Fetch c_obj_id INTO l_obj_id;
5386 		IF c_obj_id%NOTFOUND THEN
5387                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5388                   aso_debug_pub.add(' Setting the operation code for rel obj tbl ', 1, 'Y');
5389                   aso_debug_pub.add(' Obj id in rel obj rec is : '|| to_char(l_related_obj_rec.object_id), 1, 'Y');
5390 			END IF;
5391             IF l_related_obj_rec.object_id IS NOT NULL THEN
5392 		    l_related_obj_rec.operation_code := 'CREATE';
5393 		  END IF;
5394 		END IF;
5395           Close c_obj_id;
5396 
5397          IF l_related_obj_rec.operation_code = 'CREATE' THEN
5398           l_related_obj_rec.quote_object_id  := x_qte_header_rec.quote_header_id;
5399           x_related_obj_rec := l_related_obj_rec;
5400 
5401             ASO_RLTSHIP_PUB.Create_Object_Relationship(
5402               P_Api_Version_Number         => 1.0,
5403               P_Init_Msg_List              => FND_API.G_FALSE,
5404               P_Commit                     => FND_API.G_FALSE,
5405               p_validation_level           => p_validation_level,
5406               P_RELATED_OBJ_Rec            => l_related_obj_rec,
5407               X_related_object_id          => x_related_obj_rec.related_object_id,
5408               X_Return_Status              => X_Return_Status,
5409               X_Msg_Count                  => X_Msg_Count,
5410               X_Msg_Data                   => X_Msg_Data);
5411 
5412               IF aso_debug_pub.g_debug_flag = 'Y' THEN
5413                  aso_debug_pub.add('Create_Quote: After call to Create_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
5414               END IF;
5415 
5416               X_Related_Obj_Tbl(i) := x_related_obj_rec;
5417 
5418               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5419                     RAISE FND_API.G_EXC_ERROR;
5420               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5421                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5422               END IF;
5423         END IF;
5424 
5425 	   END LOOP;
5426 
5427 
5428 	 END IF;
5429 
5430 	 -- end of Rel Obj  changes
5431 
5432 
5433       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5434           aso_debug_pub.add('Before validate quote percent: p_validation_level: '|| p_validation_level, 1, 'Y');
5435       END IF;
5436 
5437       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
5438 
5439             IF x_hd_sales_credit_tbl.count > 0 THEN
5440 
5441                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5442                         aso_debug_pub.add('Setting the qte hdr id in x_hd_sales_credit_tbl to : '|| x_qte_header_rec.QUOTE_HEADER_ID, 1, 'Y');
5443                     END IF;
5444 
5445 			     x_hd_sales_credit_tbl(1).quote_header_id := x_qte_header_rec.QUOTE_HEADER_ID;
5446 
5447                 ASO_VALIDATE_PVT.Validate_Quote_Percent(
5448                         p_init_msg_list             => FND_API.G_FALSE,
5449                         p_sales_credit_tbl          => x_hd_sales_credit_tbl,
5450                         x_return_status             => x_return_status,
5451                         x_msg_count                 => x_msg_count,
5452                         x_msg_data                  => x_msg_data);
5453 
5454                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5455                     aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Percent: x_return_status: '|| x_return_status, 1, 'N');
5456                 END IF;
5457 
5458                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5459                     RAISE FND_API.G_EXC_ERROR;
5460                 END IF;
5461             END IF;
5462 
5463       END IF;
5464 
5465       l_index := X_Price_Adjustment_tbl.count + 1;
5466 
5467       FOR i IN 1.. l_Price_Adj_tbl.count LOOP
5468            x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(i);
5469            l_index := l_index + 1;
5470       END LOOP;
5471 
5472       FOR j IN 1..l_prc_index_link.count LOOP
5473            l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id := l_price_adj_tbl(j).price_adjustment_id;
5474       END LOOP;
5475 
5476       l_index := X_Price_Adj_Attr_tbl.count + 1;
5477 
5478       FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
5479            x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
5480            l_index := l_index + 1;
5481       END LOOP;
5482 
5483       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5484 
5485            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5486 
5487            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5488                FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
5489                FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER INSERT ROW', TRUE);
5490                FND_MSG_PUB.ADD;
5491            END IF;
5492            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5493 
5494       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
5495            x_return_status := FND_API.G_RET_STS_ERROR;
5496       END IF;
5497 
5498 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5499 	     aso_debug_pub.add('Create_Quote - l_qte_line_tbl.count: '||l_qte_line_tbl.count, 1, 'N');
5500 	 END IF;
5501 
5502       FOR i IN 1 .. l_qte_line_tbl.count LOOP
5503 
5504           l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
5505           l_index := 1;
5506 
5507           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5508 
5509                IF lx_qte_line_dtl_tbl(j).qte_line_index = i THEN
5510 
5511                     l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
5512                     l_index := l_index + 1;
5513                END IF;
5514           END LOOP;
5515 
5516           l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
5517           l_index := 1;
5518 
5519           FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
5520 
5521                IF p_ln_price_attributes_tbl(j).qte_line_index = i THEN
5522                    l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
5523                END IF;
5524 
5525           END LOOP;
5526 
5527           l_ln_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
5528           l_shp_index_link  := G_Miss_Link_Tbl;
5529           l_index := 1;
5530 
5531           FOR j IN 1..p_ln_shipment_tbl.count LOOP
5532 
5533                IF p_ln_shipment_tbl(j).qte_line_index = i THEN
5534                    l_ln_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
5535                    l_shp_index_link(j) := l_index;
5536                    l_index := l_index+1;
5537                END IF;
5538 
5539           END LOOP;
5540 
5541           l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
5542           l_index := 1;
5543 
5544           FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
5545 
5546                IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5547                    p_ln_freight_charge_tbl(j).shipment_index IS NOT NULL AND
5548                    l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
5549 
5550                     l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
5551                     l_freight_charge_tbl(l_index).shipment_index :=
5552                     l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
5553                     l_index := l_index+1;
5554                END IF;
5555           END LOOP;
5556 
5557 	     l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
5558 	     l_index := 1;
5559 
5560           FOR j IN 1..p_line_attr_ext_tbl.count LOOP
5561 
5562                IF p_line_attr_ext_tbl(j).qte_line_index = i THEN
5563 
5564                    l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
5565                    l_line_attr_ext_tbl(l_index).quote_header_id := x_qte_header_rec.quote_header_id;
5566 
5567                    IF p_line_attr_ext_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5568                        p_line_attr_ext_tbl(j).shipment_index IS NOT NULL AND
5569                        l_shp_index_link.EXISTS(p_line_attr_ext_tbl(j).shipment_index) THEN
5570 
5571                         l_line_attr_ext_tbl(l_index).shipment_index := l_shp_index_link(p_line_attr_ext_tbl(j).shipment_index);
5572                    END IF;
5573 
5574                    l_index := l_index + 1;
5575                END IF;
5576 
5577           END LOOP;
5578 
5579 	     l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
5580 	     l_index := 1;
5581 
5582           FOR j IN 1..p_ln_payment_tbl.count LOOP
5583 
5584                IF p_ln_payment_tbl(j).qte_line_index = i THEN
5585 
5586                    l_payment_tbl(l_index) := p_ln_payment_tbl(j);
5587 
5588                    IF p_ln_payment_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5589                        p_ln_payment_tbl(j).shipment_index  IS NOT NULL AND
5590                        l_shp_index_link.EXISTS(p_ln_payment_tbl(j).shipment_index) THEN
5591 
5592                         l_payment_tbl(l_index).shipment_index := l_shp_index_link(p_ln_payment_tbl(j).shipment_index);
5593                    END IF;
5594 
5595                    l_index := l_index +1;
5596                END IF;
5597 
5598           END LOOP;
5599 
5600           l_price_adj_tbl      := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
5601           l_prc_index_link     := G_Miss_Link_Tbl;
5602           l_prc_index_link_rev := G_Miss_Link_Tbl;
5603           l_index := 1;
5604 
5605           FOR j IN 1..p_price_adjustment_tbl.count LOOP
5606 
5607                IF p_price_adjustment_tbl(j).qte_line_index = i THEN
5608 
5609                    l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(j);
5610                    l_prc_index_link(l_index) := j;
5611                    l_prc_index_link_rev(i)   := l_index;
5612 
5613                    IF p_price_adjustment_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5614                        p_price_adjustment_tbl(j).shipment_index IS NOT NULL AND
5615                        l_shp_index_link.EXISTS(p_price_adjustment_tbl(j).shipment_index) THEN
5616 
5617                         l_price_adj_tbl(l_index).shipment_index := l_shp_index_link(p_price_adjustment_tbl(j).shipment_index);
5618                    END IF;
5619                    l_index := l_index + 1;
5620                END IF;
5621           END LOOP;
5622 
5623           l_price_adj_attr_tbl :=  ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
5624           l_index := 1;
5625 
5626           FOR j IN 1..p_price_adj_attr_tbl.count LOOP
5627 
5628                IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM AND
5629                    l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
5630 
5631                    l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
5632                    l_price_adj_attr_tbl(l_index).price_adj_index :=
5633                    l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
5634                    l_index := l_index + 1;
5635                END IF;
5636 
5637           END LOOP;
5638 
5639           l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
5640           l_index := 1;
5641 
5642           FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
5643 
5644                IF p_ln_tax_detail_tbl(j).qte_line_index = i THEN
5645 
5646                    l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
5647 
5648                    IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM
5649                        AND l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index)
5650                        AND p_ln_tax_detail_tbl(l_index).shipment_index IS NOT NULL THEN
5651 
5652                           l_tax_detail_tbl(l_index).shipment_index := l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
5653                    END IF;
5654                    l_index := l_index+1;
5655                END IF;
5656 
5657           END LOOP;
5658 
5659           l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
5660 
5661           l_index := 1;
5662           FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
5663 
5664                IF p_ln_sales_credit_tbl(j).qte_line_index = i THEN
5665 
5666                    l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
5667                    l_index := l_index +1;
5668                END IF;
5669 
5670           END LOOP;
5671 
5672           l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
5673 	     l_index := 1;
5674 
5675           FOR j IN 1..p_ln_quote_party_tbl.count LOOP
5676 
5677               IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
5678 
5679                    l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
5680 
5681                    IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5682                        p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
5683                        l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
5684 
5685                          l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
5686                    END IF;
5687 
5688                    l_index := l_index +1;
5689 
5690               END IF;
5691           END LOOP;
5692 
5693 	     l_qte_line_rec := l_qte_line_tbl(i);
5694 	     l_qte_line_rec.quote_header_id := x_qte_header_rec.quote_header_id;
5695 
5696           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5697               aso_debug_pub.add('Create_Quote - before Validate_Commitment ', 1, 'N');
5698           END IF;
5699 
5700           ASO_VALIDATE_PVT.Validate_Commitment(
5701                       P_Init_Msg_List          => FND_API.G_FALSE,
5702                       P_Qte_Header_Rec         => x_qte_header_rec,
5703                       P_Qte_Line_Rec           => l_qte_line_rec,
5704                       X_Return_Status          => l_return_status,
5705                       X_Msg_Count              => x_msg_count,
5706                       X_Msg_Data               => x_msg_data);
5707 
5708           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5709               aso_debug_pub.add('Create_Quote - after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
5710           END IF;
5711 
5712           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5713               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5714               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5715           ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5716               x_return_status := FND_API.G_RET_STS_ERROR;
5717               RAISE FND_API.G_EXC_ERROR;
5718           END IF;
5719 
5720           open  c_last_update_date(x_qte_header_rec.quote_header_id);
5721           fetch c_last_update_date into l_control_rec.last_update_date;
5722           close c_last_update_date;
5723 
5724           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5725               aso_debug_pub.add('l_control_rec.last_update_date: '|| l_control_rec.last_update_date);
5726               aso_debug_pub.add('Create_Quote: Before call to create_quote_lines', 1, 'Y');
5727           END IF;
5728 
5729           ASO_QUOTE_LINES_PVT.Create_Quote_Lines (
5730                           P_Api_Version_Number   => 1.0,
5731                           p_validation_level     => p_validation_level,
5732                           p_control_rec          => l_control_rec,
5733                           p_update_header_flag   => FND_API.G_FALSE,
5734                           p_qte_header_rec       => p_qte_header_rec,
5735                           P_qte_Line_Rec	    => l_qte_line_rec,
5736                           P_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
5737                           P_Line_Attribs_Ext_Tbl => l_line_attr_Ext_Tbl,
5738                           P_price_attributes_tbl => l_price_attr_tbl,
5739                           P_Price_Adj_Tbl        => l_price_adj_tbl,
5740                           P_Price_Adj_Attr_Tbl   => l_Price_Adj_Attr_Tbl,
5741                           P_Payment_Tbl          => l_payment_tbl,
5742                           P_Shipment_Tbl         => l_ln_shipment_tbl,
5743                           P_Freight_Charge_Tbl   => l_freight_charge_tbl,
5744                           P_Tax_Detail_Tbl       => l_tax_detail_tbl,
5745                           P_quote_party_tbl      => l_quote_party_tbl ,
5746                           P_sales_Credit_tbl     => l_sales_Credit_tbl ,
5747                           x_qte_Line_Rec	    => l_qte_line_rec_out,
5748                           x_qte_line_dtl_tbl     => l_qte_line_dtl_tbl_out,
5749                           x_Line_Attribs_Ext_Tbl => l_line_attr_Ext_Tbl_out,
5750                           x_price_attributes_tbl => l_price_attr_tbl_out,
5751                           x_Price_Adj_Tbl        => l_price_adj_tbl_out,
5752                           x_Price_Adj_Attr_Tbl   => l_Price_Adj_Attr_Tbl_out,
5753                           x_Payment_Tbl          => l_payment_tbl_out,
5754                           x_Shipment_Tbl	    => l_ln_shipment_tbl_out,
5755                           x_Freight_Charge_Tbl   => l_freight_charge_tbl_out,
5756                           x_Tax_Detail_Tbl       => l_tax_detail_tbl_out,
5757                           X_quote_party_tbl      => l_quote_party_tbl_out ,
5758                           X_sales_Credit_tbl     => l_sales_Credit_tbl_out ,
5759                           X_Return_Status        => l_return_status,
5760                           X_Msg_Count            => x_msg_count,
5761                           X_Msg_Data             => x_msg_data );
5762 
5763           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5764               aso_debug_pub.add('Create_Quote: After call to create_quote_lines: l_return_status: '|| l_return_status, 1, 'Y');
5765           END IF;
5766 
5767           l_qte_line_rec        :=  l_qte_line_rec_out;
5768 	     l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
5769 	     l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
5770 	     l_price_attr_tbl      :=  l_price_attr_tbl_out;
5771 	     l_price_adj_tbl       :=  l_price_adj_tbl_out;
5772 	     l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
5773 	     l_payment_tbl         :=  l_payment_tbl_out;
5774 	     l_ln_shipment_tbl     :=  l_ln_shipment_tbl_out;
5775 	     l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
5776 	     l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
5777 	     l_quote_party_tbl     :=  l_quote_party_tbl_out;
5778 	     l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
5779 
5780           IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5781 
5782                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5783                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5784                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
5785                    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER CREATE LINES', FALSE);
5786                    FND_MSG_PUB.ADD;
5787                END IF;
5788                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5789 
5790           ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
5791 
5792 	          x_return_status := FND_API.G_RET_STS_ERROR;
5793                RAISE FND_API.G_EXC_ERROR;
5794           END IF;
5795 
5796           open  c_last_update_date(x_qte_header_rec.quote_header_id);
5797           fetch c_last_update_date into x_qte_header_rec.last_update_date;
5798           close c_last_update_date;
5799 
5800           l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
5801 
5802           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5803               aso_debug_pub.add('Create_Quote: After call to Create_Quote_Lines');
5804               aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
5805               aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
5806           END IF;
5807 
5808           For j IN 1..lx_qte_line_dtl_tbl.count LOOP
5809              IF lx_qte_line_dtl_tbl(j).SERVICE_REF_QTE_LINE_INDEX = i THEN
5810                 lx_qte_line_dtl_tbl(j).SERVICE_REF_LINE_ID := l_qte_line_rec.quote_line_id;
5811              END IF;
5812           END LOOP;
5813 
5814           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5815              IF lx_qte_line_dtl_tbl(j).REF_LINE_INDEX = i THEN
5816                  lx_qte_line_dtl_tbl(j).REF_LINE_ID := l_qte_line_rec.quote_line_id;
5817              END IF;
5818           END LOOP;
5819 
5820           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5821              IF lx_qte_line_dtl_tbl(j).ATO_LINE_INDEX = i THEN
5822                  lx_qte_line_dtl_tbl(j).ATO_LINE_ID := l_qte_line_rec.quote_line_id;
5823              END IF;
5824           END LOOP;
5825 
5826           X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
5827           l_index := X_Qte_Line_Dtl_Tbl.count+1;
5828 
5829           FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
5830                x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
5831                l_index := l_index+1;
5832           END LOOP;
5833 
5834           l_index := X_Line_Attr_Ext_Tbl.count+1;
5835 
5836           FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
5837                x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
5838                l_index := l_index+1;
5839           END LOOP;
5840 
5841           l_index := X_LN_Price_Attributes_Tbl.count+1;
5842 
5843           FOR j IN 1.. l_Price_Attr_tbl.count LOOP
5844                x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
5845                l_index := l_index+1;
5846           END LOOP;
5847 
5848           l_index := X_Price_Adjustment_tbl.count+1;
5849 
5850           FOR j IN 1.. l_Price_Adj_tbl.count LOOP
5851                x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
5852                l_index := l_index+1;
5853           END LOOP;
5854 
5855           l_index := X_LN_payment_Tbl.count+1;
5856 
5857           FOR j IN 1.. l_payment_tbl.count LOOP
5858                x_ln_payment_tbl(l_index) := l_payment_tbl(j);
5859                l_index := l_index+1;
5860           END LOOP;
5861 
5862           l_index := X_LN_shipment_Tbl.count+1;
5863 
5864           FOR j IN 1.. l_ln_shipment_tbl.count LOOP
5865                x_ln_shipment_tbl(l_index) := l_ln_shipment_tbl(j);
5866                l_index := l_index+1;
5867           END LOOP;
5868 
5869           l_index := X_LN_freight_charge_Tbl.count+1;
5870           FOR j IN 1.. l_freight_charge_tbl.count LOOP
5871                x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
5872                l_index := l_index+1;
5873           END LOOP;
5874 
5875           l_index := X_LN_tax_detail_Tbl.count+1;
5876           FOR j IN 1.. l_tax_detail_tbl.count LOOP
5877                x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
5878                l_index := l_index+1;
5879           END LOOP;
5880 
5881           l_index := X_ln_sales_Credit_Tbl.count+1;
5882 
5883 		FOR j IN 1.. l_sales_Credit_tbl.count LOOP
5884                x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
5885                l_index := l_index+1;
5886           END LOOP;
5887 
5888           l_index := X_ln_quote_party_Tbl.count+1;
5889 
5890           FOR j IN 1.. l_quote_party_tbl.count LOOP
5891                x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
5892                l_index := l_index+1;
5893           END LOOP;
5894 
5895 	     FOR j IN 1..l_prc_index_link.count LOOP
5896 	          l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id := l_price_adj_tbl(j).price_adjustment_id;
5897 	     END LOOP;
5898 
5899           IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5900 
5901                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5902                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5903                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
5904                    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
5905                    FND_MSG_PUB.ADD;
5906                END IF;
5907                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5908 
5909           ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
5910                x_return_status := FND_API.G_RET_STS_ERROR;
5911           END IF;
5912 
5913       END LOOP;
5914 
5915       -- create price adj relationships.
5916       FOR i IN 1..p_price_adj_rltship_tbl.count LOOP
5917 
5918            l_price_adj_rltship_rec := p_price_adj_rltship_tbl(i);
5919            l_index := p_price_adj_rltship_tbl(i).qte_line_index;
5920            l_price_adj_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
5921            l_index := p_price_adj_rltship_tbl(i).price_adj_index;
5922            l_price_adj_rltship_rec.price_adjustment_id := l_price_adjustment_tbl(l_index).price_adjustment_id;
5923            l_index := p_price_adj_rltship_tbl(i).rltd_price_adj_index;
5924            l_price_adj_rltship_rec.rltd_price_adj_id := l_price_adjustment_tbl(l_index).price_adjustment_id;
5925 
5926            ASO_PRICE_RLTSHIPS_PKG.Insert_Row(
5927                         px_ADJ_RELATIONSHIP_ID   => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
5928                         p_creation_date          => sysdate,
5929                         p_CREATED_BY             => G_USER_ID,
5930                         p_LAST_UPDATE_DATE       => sysdate,
5931                         p_LAST_UPDATED_BY        => G_USER_ID,
5932                         p_LAST_UPDATE_LOGIN      => G_USER_ID,
5933                         p_PROGRAM_APPLICATION_ID => l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
5934                         p_PROGRAM_ID             => l_price_adj_rltship_rec.PROGRAM_ID,
5935                         p_PROGRAM_UPDATE_DATE    => l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
5936                         p_REQUEST_ID             => l_price_adj_rltship_rec.REQUEST_ID,
5937                         p_QUOTE_LINE_ID          => l_price_adj_rltship_rec.quote_line_id,
5938                         p_PRICE_ADJUSTMENT_ID    => l_price_adj_rltship_rec.price_adjustment_id,
5939                         p_RLTD_PRICE_ADJ_ID      => l_price_adj_rltship_rec.rltd_price_adj_id,
5940                         p_QUOTE_SHIPMENT_ID      => l_price_adj_rltship_rec.quote_shipment_id,
5941                         p_OBJECT_VERSION_NUMBER  => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER );
5942 
5943            X_Price_Adj_Rltship_Tbl(i) := l_price_adj_rltship_rec;
5944 
5945       END LOOP;
5946 
5947       -- create line relationships
5948       FOR i IN 1..p_line_rltship_tbl.count LOOP
5949 
5950 	      l_line_rltship_rec := p_line_rltship_tbl(i);
5951 	      l_index := l_line_rltship_rec.qte_line_index;
5952 
5953 	      IF l_index IS NOT NULL AND l_index >=1 AND l_index <= x_qte_line_tbl.count THEN
5954 	          l_line_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
5955 	      END IF;
5956 
5957            l_index := l_line_rltship_rec.related_qte_line_index;
5958 
5959            IF l_index IS NOT NULL AND l_index >=1 AND l_index <= x_qte_line_tbl.count THEN
5960                l_line_rltship_rec.related_quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
5961            END IF;
5962 
5963            ASO_LINE_RELATIONSHIPS_PKG.Insert_Row(
5964                         px_LINE_RELATIONSHIP_ID   => l_line_rltship_rec.LINE_RELATIONSHIP_ID,
5965                         p_CREATION_DATE           => SYSDATE,
5966                         p_CREATED_BY              => G_USER_ID,
5967                         p_LAST_UPDATED_BY         => G_USER_ID,
5968                         p_LAST_UPDATE_DATE        => SYSDATE,
5969                         p_LAST_UPDATE_LOGIN       => G_LOGIN_ID,
5970                         p_REQUEST_ID              => l_line_rltship_rec.REQUEST_ID,
5971                         p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
5972                         p_PROGRAM_ID              => l_line_rltship_rec.PROGRAM_ID,
5973                         p_PROGRAM_UPDATE_DATE     => l_line_rltship_rec.PROGRAM_UPDATE_DATE,
5974                         p_QUOTE_LINE_ID           => l_line_rltship_rec.quote_line_id,
5975                         p_RELATED_QUOTE_LINE_ID   => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
5976                         p_RECIPROCAL_FLAG         => l_line_rltship_rec.RECIPROCAL_FLAG,
5977                         P_RELATIONSHIP_TYPE_CODE  => l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
5978                         p_OBJECT_VERSION_NUMBER   => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER);
5979 
5980 	      X_line_Rltship_Tbl(i) := l_line_rltship_rec;
5981 
5982            IF aso_debug_pub.g_debug_flag = 'Y' THEN
5983 	          aso_debug_pub.add('Create_Quote: l_line_rltship_rec.quote_line_id:         '||l_line_rltship_rec.quote_line_id);
5984                aso_debug_pub.add('Create_Quote: l_line_rltship_rec.related_quote_line_id: '||l_line_rltship_rec.related_quote_line_id);
5985            END IF;
5986 
5987            if l_line_rltship_rec.relationship_type_code = 'CONFIG' then
5988 
5989                update aso_quote_line_details
5990                set ref_type_code          =  'CONFIG',
5991                    ref_line_id            =  l_line_rltship_rec.quote_line_id,
5992                    last_update_date       =  sysdate,
5993                    last_updated_by        =  fnd_global.user_id,
5994                    last_update_login      =  fnd_global.conc_login_id
5995                where quote_line_id = l_line_rltship_rec.related_quote_line_id;
5996 
5997            end if;
5998 
5999       END LOOP;
6000 
6001       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6002           aso_debug_pub.add('Create_Quote: x_qte_header_rec.quote_header_id: '|| x_qte_header_rec.quote_header_id);
6003       END IF;
6004 
6005       update aso_quote_line_details
6006       set ref_type_code     = 'CONFIG',
6007           last_update_date  = sysdate,
6008           last_updated_by   = fnd_global.user_id,
6009           last_update_login = fnd_global.conc_login_id
6010       where config_header_id is not null
6011       and config_revision_num is not null
6012       and ref_type_code is null
6013       and quote_line_id in (select quote_line_id from aso_quote_lines_all
6014                             where item_type_code = 'MDL'
6015                             and quote_header_id  = x_qte_header_rec.quote_header_id);
6016 
6017 
6018       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6019 	     aso_debug_pub.add('Create_Quote - before header pricing ', 1, 'Y');
6020 	 END IF;
6021 
6022       IF l_control_rec.header_pricing_event IS NOT NULL AND l_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR THEN
6023 
6024           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6025 	         aso_debug_pub.add('Create_Quote - inside header pricing ', 1, 'N');
6026 	     END IF;
6027 
6028 	     l_pricing_control_rec.request_type  := p_control_rec.pricing_request_type;
6029 	     l_pricing_control_rec.pricing_event := p_control_rec.header_pricing_event;
6030 	     l_pricing_control_rec.price_mode    := p_control_rec.price_mode;
6031 
6032           --New Code for to call overload pricing_order
6033 
6034           lv_qte_header_rec    := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6035           lv_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(x_qte_header_rec.quote_header_id,null);
6036           lv_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(x_qte_header_rec.quote_header_id,null);
6037 
6038           if lv_hd_shipment_tbl.count = 1 then
6039               lv_hd_shipment_rec := lv_hd_shipment_tbl(1);
6040           end if;
6041 
6042           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6043               aso_debug_pub.add('Create_Quote: Before call to ASO_PRICING_INT.Pricing_Order');
6044               aso_debug_pub.add('Create_Quote: x_qte_line_tbl.count: ' || x_qte_line_tbl.count);
6045           END IF;
6046 
6047           ASO_PRICING_INT.Pricing_Order(
6048                     P_Api_Version_Number     => 1.0,
6049                     P_Init_Msg_List          => fnd_api.g_false,
6050                     P_Commit                 => fnd_api.g_false,
6051                     p_control_rec            => l_pricing_control_rec,
6052                     p_qte_header_rec         => lv_qte_header_rec,
6053                     p_hd_shipment_rec        => lv_hd_shipment_rec,
6054                     p_hd_price_attr_tbl      => lv_hd_price_attr_tbl,
6055                     p_qte_line_tbl           => x_qte_line_tbl,
6056                     --p_line_rltship_tbl     => l_line_rltship_tbl,
6057                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
6058                     --p_ln_shipment_tbl      => ln_shipment_tbl,
6059                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
6060                     x_qte_header_rec         => lx_qte_header_rec,
6061                     x_qte_line_tbl           => lx_qte_line_tbl,
6062                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
6063                     x_price_adj_tbl          => l_price_adj_tbl_out,
6064                     x_price_adj_attr_tbl     => l_Price_Adj_Attr_Tbl_out,
6065                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
6066                     x_return_status          => l_return_status,
6067                     x_msg_count              => x_msg_count,
6068                     x_msg_data               => x_msg_data );
6069 
6070 
6071           x_qte_line_tbl := lx_qte_line_tbl;
6072 
6073           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6074               aso_debug_pub.add('Create_Quote: After call to ASO_PRICING_INT.Pricing_Order');
6075               aso_debug_pub.add('Create_Quote: l_return_status:       ' || l_return_status);
6076               aso_debug_pub.add('Create_Quote: lx_qte_line_tbl.count: ' || lx_qte_line_tbl.count);
6077               aso_debug_pub.add('Create_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
6078           END IF;
6079 
6080 	     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6081 
6082 	          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6083 
6084 	          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6085 		         FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
6086 		         FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER PRICING', TRUE);
6087 		         FND_MSG_PUB.ADD;
6088 	          END IF;
6089 
6090 	          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6091 
6092 	     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6093 
6094 	          x_return_status := FND_API.G_RET_STS_ERROR;
6095                RAISE   FND_API.G_EXC_ERROR;
6096 	     END IF;
6097 
6098       END IF;  --IF l_control_rec.header_pricing_event IS NOT NULL AND l_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR THEN
6099 
6100       /*New Pricing Changes to update the date*/
6101 
6102 	 IF p_control_rec.header_pricing_event ='BATCH' AND p_control_rec.price_mode='ENTIRE_QUOTE' THEN
6103 
6104 	 	l_price_updated_date_flag := fnd_api.g_true;
6105 	 END IF;
6106 
6107       /*IF aso_debug_pub.g_debug_flag = 'Y' THEN
6108           aso_debug_pub.add('Create_Quote: Before call to ASO_TAX_INT.Calculate_Tax', 1, 'Y');
6109           aso_debug_pub.add('Create_Quote: p_control_rec.calculate_tax_flag: ' || p_control_rec.calculate_tax_flag);
6110       END IF;*/
6111 
6112        --Changed the call to tax API as a part of etax By Anoop Rajan on 9 August 2005
6113 
6114       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6115           aso_debug_pub.add('Create_Quote: Before call to ASO_TAX_INT.CALCULATE_TAX_WITH_GTT', 1, 'Y');
6116           aso_debug_pub.add('Create_Quote: p_control_rec.calculate_tax_flag: ' || p_control_rec.calculate_tax_flag);
6117       END IF;
6118 
6119       IF p_control_rec.calculate_tax_flag = 'Y' THEN
6120 
6121          /* l_tax_control_rec.tax_level := 'SHIPPING';
6122           l_tax_control_rec.update_DB := 'Y';*/
6123 	  --Commented the above 2 lines by Anoop on 15th August
6124 	  --Added the IF Condition below to facilitate TAX changes .
6125 	  if lx_qte_line_tbl.count > 0 then
6126 		ASO_TAX_INT.CALCULATE_TAX_WITH_GTT(p_API_VERSION_NUMBER => 1.0,
6127 					     p_qte_header_id => x_qte_header_rec.quote_header_id,
6128 					     x_return_status => x_return_status,
6129 					     X_Msg_Count =>  x_msg_count,
6130 					     X_Msg_Data =>  x_msg_data      );
6131 
6132 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6133 			aso_debug_pub.add('Create_Quote: After call to ASO_TAX_INT.CALCULATE_TAX_WITH_GTT: x_return_status: '|| x_return_status, 1, 'Y');
6134 		END IF;
6135 	  ELSE
6136 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6137 			aso_debug_pub.add('Create_Quote: NO LINE RECORDS.SO TAX NOT CALCULATED : x_return_status: '|| x_return_status, 1, 'Y');
6138 		END IF;
6139 	  END IF;
6140 
6141           /*ASO_TAX_INT.Calculate_Tax( P_Api_Version_Number => 1.0,
6142                                      p_quote_header_id    => x_qte_header_rec.quote_header_id,
6143                                      P_Tax_Control_Rec    => l_tax_control_rec,
6144                                      x_tax_amount	        => x_tax_amount    ,
6145                                      x_tax_detail_tbl     => l_tax_detail_tbl,
6146                                      X_Return_Status      => x_return_status ,
6147                                      X_Msg_Count          => x_msg_count     ,
6148                                      X_Msg_Data           => x_msg_data      );
6149 
6150           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6151               aso_debug_pub.add('Create_Quote: After call to ASO_TAX_INT.Calculate_Tax: x_return_status: '|| x_return_status, 1, 'Y');
6152           END IF;
6153 	    */
6154           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6155 
6156               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6157                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
6158 	             FND_MESSAGE.Set_Token('API', 'Calculate_tax_with_GTT', FALSE);
6159 	             FND_MSG_PUB.ADD;
6160               END IF;
6161 
6162               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6163                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6164               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6165                    RAISE FND_API.G_EXC_ERROR;
6166               END IF;
6167 
6168           END IF;
6169 
6170       END IF;
6171 
6172       /*New Tax Changes to update the date*/
6173 
6174 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6175 
6176 		aso_debug_pub.add('Create_Quote: control record parameter values');
6177 	     aso_debug_pub.add('l_qte_header_rec.pricing_status_indicator: ' || l_qte_header_rec.pricing_status_indicator);
6178 	     aso_debug_pub.add('l_qte_header_rec.tax_status_indicator:     ' || l_qte_header_rec.tax_status_indicator);
6179 	     aso_debug_pub.add('p_control_rec.header_pricing_event:        ' || p_control_rec.header_pricing_event);
6180 	     aso_debug_pub.add('p_control_rec.price_mode:                  ' || p_control_rec.price_mode);
6181 	     aso_debug_pub.add('p_control_rec.calculate_tax_flag:          ' || p_control_rec.calculate_tax_flag);
6182 	     aso_debug_pub.add('l_price_updated_date_flag:                 ' || l_price_updated_date_flag);
6183 
6184 	 END IF;
6185 
6186       IF p_control_rec.calculate_tax_flag = 'Y' THEN
6187 
6188           IF l_price_updated_date_flag = fnd_api.g_true THEN
6189 
6190               update aso_quote_headers_all
6191               set tax_updated_date   = sysdate,
6192                   price_updated_date = sysdate
6193               where quote_header_id = x_qte_header_rec.quote_header_id;
6194 
6195           ELSE
6196 
6197               update aso_quote_headers_all
6198               set tax_updated_date   = sysdate
6199               where quote_header_id = x_qte_header_rec.quote_header_id;
6200 
6201           END IF;
6202 
6203       ELSIF l_price_updated_date_flag = fnd_api.g_true THEN
6204 
6205           update aso_quote_headers_all
6206           set price_updated_date = sysdate
6207           where quote_header_id = x_qte_header_rec.quote_header_id;
6208 
6209       END IF;
6210 
6211 
6212       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
6213       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
6214       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
6215       -- IF calculate_tax_flag = 'N', not summation on line level tax,
6216       -- just take the value of p_qte_header_rec.total_tax as the total_tax
6217       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
6218       -- just take the value of p_qte_header_rec.total_freight_charge
6219       -- (or l_hd_shipment_tbl(1).total_freight_charge???) as the TOTAL_SHIPPING_CHARGE
6220 
6221 
6222       IF p_control_rec.calculate_tax_flag = 'N' AND
6223           p_qte_header_rec.total_tax IS NOT NULL THEN
6224           l_calculate_tax := 'N';
6225       END IF;
6226 
6227       IF p_control_rec.calculate_freight_charge_flag = 'N' AND
6228           p_qte_header_rec.total_shipping_charge IS NOT NULL THEN
6229           l_calculate_freight_charge := 'N';
6230       END IF;
6231 
6232 
6233       -- Start of PNPL Changes
6234       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6235 
6236       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
6237 			  		                                            p_org_id =>x_qte_header_rec.org_id);
6238 
6239       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6240           aso_debug_pub.add('Create_Quote - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
6241       END IF;
6242 
6243        IF  ( (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(P_Qte_Header_Rec.quote_type,'X') <> 'T' )
6244             and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
6245               or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
6246 
6247            l_call_ar_api :=  fnd_api.g_true;
6248 
6249            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6250              aso_debug_pub.add('Create_Quote - p_control_rec.header_pricing_event: '||p_control_rec.header_pricing_event, 1, 'Y');
6251              aso_debug_pub.add('Create_Quote - p_control_rec.price_mode          : '||p_control_rec.price_mode, 1, 'Y');
6252              aso_debug_pub.add('Create_Quote - l_qte_line_tbl.count              : '||l_qte_line_tbl.count, 1, 'Y');
6253            END IF;
6254 
6255          -- check if price_mode is change_line, if so then call ar api only if some lines are being created or updated
6256          IF (p_control_rec.header_pricing_event = 'BATCH' and p_control_rec.price_mode = 'CHANGE_LINE') THEN
6257                if (l_qte_line_tbl.count > 0) then
6258                   l_call_ar_api :=  fnd_api.g_false;
6259                   for i in 1..l_qte_line_tbl.count loop
6260                    if (l_qte_line_tbl(i).operation_code = 'CREATE' or l_qte_line_tbl(i).operation_code = 'UPDATE')  then
6261                     l_call_ar_api :=  fnd_api.g_true;
6262                     exit;
6263                    end if;
6264                   end loop;
6265                else
6266                 l_call_ar_api :=  fnd_api.g_false;
6267                end if;
6268          END IF;
6269 
6270            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6271               aso_debug_pub.add('Create_Quote - l_call_ar_api:  '|| l_call_ar_api, 1, 'Y');
6272            END IF;
6273 
6274      IF (l_call_ar_api = fnd_api.g_true ) then
6275 
6276        For i in 1..X_Qte_Line_Tbl.count loop
6277 
6278           -- resetting the line term id variable
6279           l_line_term_id := null;
6280           l_line_quote_price := null;
6281           l_quantity := null;
6282 
6283        -- get the line freight charges
6284 	     l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( x_qte_header_rec.quote_header_id,
6285 					                                                      X_Qte_Line_Tbl(i).quote_line_id );
6286 
6287        -- get the line tax
6288           open c_tax_line(x_qte_header_rec.quote_header_id,X_Qte_Line_Tbl(i).quote_line_id);
6289           fetch c_tax_line into l_line_tax;
6290           close c_tax_line;
6291 
6292        -- get the payment term id for the line
6293           open get_line_payment_term(x_qte_header_rec.quote_header_id,X_Qte_Line_Tbl(i).quote_line_id);
6294           fetch get_line_payment_term into l_line_term_id;
6295           close get_line_payment_term;
6296 
6297            -- if line term id is null then get it from header
6298 		 If l_line_term_id is null THEN
6299                open get_hdr_payment_term(x_qte_header_rec.quote_header_id);
6300                fetch get_hdr_payment_term into l_line_term_id;
6301                close get_hdr_payment_term;
6302 		 END IF;
6303 
6304            -- bug 4923355
6305 		 open get_line_qte_price(X_Qte_Line_Tbl(i).quote_line_id);
6306 		 fetch get_line_qte_price into l_line_quote_price,l_quantity;
6307 		 close get_line_qte_price;
6308 
6309            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6310               aso_debug_pub.add('Create_Quote - l_line_quote_price:  '|| l_line_quote_price, 1, 'Y');
6311               aso_debug_pub.add('Create_Quote - l_quantity:          '|| l_quantity, 1, 'Y');
6312            END IF;
6313 
6314            l_line_amount := l_line_quote_price * l_quantity;
6315 
6316            -- l_line_amount := X_Qte_Line_Tbl(i).line_quote_price * X_Qte_Line_Tbl(i).quantity;
6317 
6318       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6319           aso_debug_pub.add('Create_Quote - ********* Input to AR_VIEW_TERM_GRP.pay_now_amounts follows *********** ', 1, 'Y');
6320           aso_debug_pub.add('Create_Quote - X_Qte_Line_Tbl('||i||').quote_line_id: '||X_Qte_Line_Tbl(i).quote_line_id, 1, 'Y');
6321           aso_debug_pub.add('Create_Quote - l_line_amount:              '||l_line_amount, 1, 'Y');
6322           aso_debug_pub.add('Create_Quote - l_line_shipping_charge:     '||l_line_shipping_charge, 1, 'Y');
6323           aso_debug_pub.add('Create_Quote - l_line_tax:                 '||l_line_tax, 1, 'Y');
6324           aso_debug_pub.add('Create_Quote - l_line_term_id:             '||l_line_term_id, 1, 'Y');
6325 	 END IF;
6326 
6327       IF (l_line_term_id is not null and l_line_term_id <> fnd_api.g_miss_num) then
6328 
6329       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6330           aso_debug_pub.add('Create_Quote: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
6331       END IF;
6332 
6333        -- Call the AR API to get the amounts
6334              AR_VIEW_TERM_GRP.pay_now_amounts(
6335                	p_api_version      	       => 1.0,
6336              	     p_init_msg_list    	       => p_init_msg_list,
6337               	     p_validation_level 	       => FND_API.G_VALID_LEVEL_FULL,
6338 		          p_term_id 		       => l_line_term_id,
6339 		          p_currency_code 	       => x_qte_header_rec.currency_code,
6340 		          p_line_amount		       => l_line_amount,
6341 		          p_tax_amount		       => l_line_tax,
6342                     p_freight_amount	       => l_line_shipping_charge,
6343 		          x_pay_now_line_amount      => l_paynow_amount,
6344 		          x_pay_now_tax_amount       => l_paynow_tax,
6345 		          x_pay_now_freight_amount   => l_paynow_charges,
6346 		          x_pay_now_total_amount	  => l_paynow_total,
6347                     X_Return_Status            => x_return_status ,
6348                     X_Msg_Count                => x_msg_count     ,
6349                     X_Msg_Data                 => x_msg_data      );
6350 
6351           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6352               aso_debug_pub.add('Create_Quote: After call to AR_VIEW_TERM_GRP.pay_now_amounts: x_return_status: '|| x_return_status, 1, 'Y');
6353           END IF;
6354 
6355           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6356 
6357               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6358                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
6359                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
6360                   FND_MSG_PUB.ADD;
6361               END IF;
6362 
6363               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6364                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6365               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6366                    RAISE FND_API.G_EXC_ERROR;
6367               END IF;
6368 
6369           END IF;
6370 
6371       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6372           aso_debug_pub.add('Create_Quote - Output from AR_VIEW_TERM_GRP.pay_now_amounts follows:', 1, 'Y');
6373           aso_debug_pub.add('Create_Quote - l_paynow_amount:        '||l_paynow_amount, 1, 'Y');
6374 		aso_debug_pub.add('Create_Quote - l_paynow_charges:       '||l_paynow_charges, 1, 'Y');
6375           aso_debug_pub.add('Create_Quote - l_paynow_tax:           '||l_paynow_tax, 1, 'Y');
6376 	     aso_debug_pub.add('Create_Quote - l_paynow_total:         '||l_paynow_total, 1, 'Y');
6377 	     aso_debug_pub.add('Create_Quote - ********** End PNPL Processing ************'  , 1, 'Y');
6378       END IF;
6379 
6380 
6381           -- Update the corresponding columns in the line table
6382           update aso_quote_lines_all
6383           set line_paynow_charges    = l_paynow_charges,
6384               line_paynow_tax        = l_paynow_tax,
6385               line_paynow_subtotal   = l_paynow_amount,
6386               last_update_date       =  sysdate,
6387               last_updated_by        =  fnd_global.user_id,
6388               last_update_login      =  fnd_global.conc_login_id
6389           where quote_line_id = X_Qte_Line_Tbl(i).quote_line_id;
6390 
6391         end if; -- end if for term id null check
6392 	  end loop;
6393    END IF; -- end if for call ar api flag
6394   END IF;
6395 
6396 	 -- End of PNPL Changes
6397 
6398       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6399           aso_debug_pub.add('Create_Quote - before update_quote_total ', 1, 'Y');
6400       END IF;
6401 
6402 
6403       Update_Quote_Total ( P_Qte_Header_id            => x_Qte_Header_rec.quote_header_id,
6404 			            P_Calculate_Tax            => p_control_rec.calculate_tax_flag,
6405 			            P_calculate_Freight_Charge => p_control_rec.calculate_freight_charge_flag,
6406                            p_control_rec              => p_control_rec,
6407 			            P_Call_Ar_Api_Flag         => l_call_ar_api,
6408 					  X_Return_Status            => x_return_status,
6409 			            X_Msg_Count                => x_msg_count,
6410 			            X_Msg_Data                 => x_msg_data);
6411 
6412       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6413 
6414       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6415 
6416 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6417 	          FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
6418 	          FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATETOTAL', TRUE);
6419 	          FND_MSG_PUB.ADD;
6420 	      END IF;
6421 
6422 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6423 
6424       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6425 
6426 	      RAISE FND_API.G_EXC_ERROR;
6427 
6428       END IF;
6429 
6430 
6431       IF ( p_qte_header_rec.contract_template_id IS NOT NULL
6432           AND p_qte_header_rec.contract_template_id <> FND_API.G_MISS_NUM)
6433           AND NVL(FND_PROFILE.Value('OKC_ENABLE_SALES_CONTRACTS'),'N') = 'Y' THEN
6434 
6435             IF aso_debug_pub.g_debug_flag = 'Y' THEN
6436 	           aso_debug_pub.add( 'Create_Quote - before instantiating contract terms. ', 1, 'Y');
6437 	           aso_debug_pub.add( 'Create_Quote - template id: ' || p_qte_header_rec.contract_template_id, 1, 'Y');
6438 	           aso_debug_pub.add( 'Create_Quote - target_doc_id: ' || x_Qte_Header_rec.quote_header_id, 1, 'Y');
6439 	           aso_debug_pub.add( 'Create_Quote - p_validation_string: ' || TO_CHAR(x_Qte_Header_rec.LAST_UPDATE_DATE), 1, 'Y');
6440 	       END IF;
6441 
6442             OKC_TERMS_COPY_GRP.Copy_Terms ( P_Api_Version		    => 1.0,
6443                                             P_Template_ID		    => p_qte_header_rec.contract_template_id,
6444       	                                  P_Target_Doc_ID		    => x_Qte_Header_rec.quote_header_id,
6445       	                                  P_Target_Doc_Type	    => 'QUOTE',
6446       	                                  P_Article_Effective_Date => NULL,
6447       	                                  P_Retain_Deliverable	    => 'N',
6448       	                                  p_validation_string      => TO_CHAR(x_Qte_Header_rec.LAST_UPDATE_DATE),
6449                                             X_Return_Status          => X_Return_Status,
6450                                             X_Msg_Count              => X_Msg_Count,
6451                                             X_Msg_Data               => X_Msg_Data );
6452 
6453             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6454 
6455                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6456                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_COPY_TERMS');
6457                     FND_MSG_PUB.ADD;
6458                 END IF;
6459 
6460                 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6461                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6462                 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6463                      RAISE FND_API.G_EXC_ERROR;
6464                 END IF;
6465             END IF;
6466 
6467       END IF;
6468       -- end of hyang new okc
6469 
6470       -- Change START
6471       -- Release 12 TAP Changes
6472       -- Girish Sachdeva 8/30/2005
6473       -- Adding the call to insert record in the ASO_CHANGED_QUOTES
6474       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6475          aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT.CREATE_QUOTE : Calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || x_qte_header_rec.quote_number, 1, 'Y');
6476       END IF;
6477 
6478 
6479       -- Call to insert record in ASO_CHANGED_QUOTES
6480       ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(x_qte_header_rec.quote_number);
6481 
6482       -- Change END
6483 
6484 
6485       --
6486       -- End of API body
6487       --
6488 
6489       -- Standard check for p_commit
6490 
6491       IF FND_API.to_Boolean( p_commit ) THEN
6492 	     COMMIT WORK;
6493       END IF;
6494 
6495 
6496 
6497       -- Standard call to get message count and if count is 1, get message info.
6498 
6499       FND_MSG_PUB.Count_And_Get ( p_count  =>  x_msg_count,
6500                                   p_data   =>  x_msg_data );
6501 
6502       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6503 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6504 	     aso_debug_pub.add('End Create_Quote Procedure', 1, 'Y');
6505 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6506 	 END IF;
6507 
6508 
6509       EXCEPTION
6510 
6511 	  WHEN FND_API.G_EXC_ERROR THEN
6512 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6513 		   P_API_NAME        => L_API_NAME
6514 		  ,P_PKG_NAME        => G_PKG_NAME
6515 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
6516 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6517 		  ,P_SQLCODE         => SQLCODE
6518 		  ,P_SQLERRM         => SQLERRM
6519 		  ,X_MSG_COUNT       => X_MSG_COUNT
6520 		  ,X_MSG_DATA        => X_MSG_DATA
6521 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6522 
6523 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6524 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6525 		   P_API_NAME        => L_API_NAME
6526 		  ,P_PKG_NAME        => G_PKG_NAME
6527 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6528 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6529 		  ,P_SQLCODE         => SQLCODE
6530 		  ,P_SQLERRM         => SQLERRM
6531 		  ,X_MSG_COUNT       => X_MSG_COUNT
6532 		  ,X_MSG_DATA        => X_MSG_DATA
6533 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6534 
6535 	  WHEN OTHERS THEN
6536 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6537 		   P_API_NAME        => L_API_NAME
6538 		  ,P_PKG_NAME        => G_PKG_NAME
6539 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
6540 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6541 		  ,P_SQLCODE         => SQLCODE
6542 		  ,P_SQLERRM         => SQLERRM
6543 		  ,X_MSG_COUNT       => X_MSG_COUNT
6544 		  ,X_MSG_DATA        => X_MSG_DATA
6545 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6546 
6547 End Create_quote;
6548 
6549 
6550 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
6551 PROCEDURE Update_quote(
6552     P_Api_Version_Number	      IN   NUMBER,
6553     P_Init_Msg_List		      IN   VARCHAR2	                                := FND_API.G_FALSE,
6554     P_Commit			      IN   VARCHAR2	                                := FND_API.G_FALSE,
6555     p_validation_level		 IN   NUMBER	                                := FND_API.G_VALID_LEVEL_FULL,
6556     P_Control_Rec		      IN   ASO_QUOTE_PUB.Control_Rec_Type           := ASO_QUOTE_PUB.G_Miss_Control_Rec,
6557     P_Qte_Header_Rec		 IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type        := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
6558     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
6559     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
6560     P_hd_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
6561     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
6562     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
6563     P_hd_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
6564     P_hd_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
6565     P_hd_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
6566     P_Qte_Line_Tbl		      IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL,
6567     P_Qte_Line_Dtl_Tbl		 IN   ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL,
6568     P_Line_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
6569     P_line_rltship_tbl		 IN   ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Line_Rltship_Tbl,
6570     P_Price_Adjustment_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl,
6571     P_Price_Adj_Attr_Tbl	      IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
6572     P_Price_Adj_Rltship_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Price_Adj_Rltship_Tbl,
6573     P_ln_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
6574     P_ln_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
6575     P_ln_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
6576     P_ln_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
6577     P_ln_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
6578     P_ln_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
6579     P_ln_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
6580     P_Qte_Access_Tbl           IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_QTE_ACCESS_TBL,
6581     P_Template_Tbl             IN   ASO_QUOTE_PUB.Template_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_TEMPLATE_TBL,
6582     P_Related_Obj_Tbl          IN   ASO_QUOTE_PUB.Related_Obj_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_RELATED_OBJ_TBL,
6583     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
6584     X_Qte_Line_Tbl		      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
6585     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
6586     X_hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
6587     X_hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
6588     X_hd_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
6589     X_hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
6590     X_hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
6591     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
6592     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
6593     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
6594     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
6595     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
6596     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
6597     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
6598     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
6599     X_ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
6600     X_ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
6601     X_ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
6602     X_ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
6603     X_ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
6604     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
6605     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
6606     X_Qte_Access_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
6607     X_Template_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Template_Tbl_Type,
6608     X_Related_Obj_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Related_Obj_Tbl_Type,
6609     X_Return_Status		      OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
6610     X_Msg_Count 		      OUT NOCOPY /* file.sql.39 change */  NUMBER,
6611     X_Msg_Data			      OUT NOCOPY /* file.sql.39 change */  VARCHAR2
6612     )
6613 IS
6614     --ovn
6615     Cursor C_Get_quote(c_QUOTE_HEADER_ID Number) IS
6616     Select LAST_UPDATE_DATE, QUOTE_STATUS_ID, quote_number, party_id, cust_account_id,
6617            order_type_id, order_id, object_version_number, currency_code, price_list_id
6618     From  ASO_QUOTE_HEADERS_ALL
6619     Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
6620 
6621     CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
6622     SELECT  AUTO_VERSION_FLAG
6623     FROM    ASO_QUOTE_STATUSES_B
6624     WHERE   quote_status_id = c_qte_status_id;
6625 
6626     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
6627     SELECT max(quote_version)
6628     FROM ASO_QUOTE_HEADERS_ALL
6629     WHERE quote_number = X_qte_number;
6630 
6631     CURSOR c_payment_rec IS
6632     SELECT payment_id, payment_option FROM ASO_PAYMENTS
6633     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6634     AND quote_line_id IS NULL;
6635 
6636     CURSOR c_shipment_rec IS
6637     SELECT shipment_id FROM ASO_SHIPMENTS
6638     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6639     AND quote_line_id IS NULL;
6640 
6641     CURSOR c_tax_rec IS
6642     SELECT tax_detail_id FROM ASO_TAX_DETAILS
6643     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6644     AND quote_line_id IS NULL
6645     AND ORIG_TAX_CODE IS NOT NULL;
6646 
6647     CURSOR c_qte_line(l_d_qte_line NUMBER) IS
6648     SELECT quote_line_id  FROM ASO_QUOTE_LINES_ALL
6649     where quote_line_id= l_d_qte_line;
6650 
6651     --ovn
6652     cursor c_last_update_date( p_qte_hdr_id  number) is
6653     select last_update_date
6654     from aso_quote_headers_all
6655     where quote_header_id = p_qte_hdr_id;
6656 
6657     cursor c_quote_lines( p_qte_hdr_id  number) is
6658     select quote_line_id,order_line_type_id,line_category_code,price_list_id,line_quote_price,quantity
6659     from aso_quote_lines_all
6660     where quote_header_id = p_qte_hdr_id;
6661 
6662     cursor c_related_obj_id (p_qte_hdr_id number) is
6663     select related_object_id,last_update_date
6664     from aso_quote_related_objects
6665     where quote_object_id = p_qte_hdr_id
6666     and quote_object_type_code = 'HEADER'
6667     and relationship_type_code = 'OPP_QUOTE';
6668 
6669     Cursor c_obj_id(p_qte_header_id Number) IS
6670     Select object_id
6671     from aso_quote_related_objects
6672     where quote_object_id = p_qte_header_id
6673     and quote_object_type_code = 'HEADER'
6674     and relationship_type_code = 'OPP_QUOTE';
6675 
6676     G_LOGIN_ID	                 NUMBER                := FND_GLOBAL.CONC_LOGIN_ID;
6677     G_USER_ID	                 NUMBER                := FND_GLOBAL.USER_ID;
6678     payment_rec	            c_payment_rec%rowtype;
6679     l_payment_db_tbl		  varchar_tbl_type;
6680     shipment_rec	            c_shipment_rec%ROWTYPE;
6681     l_shipment_db_tbl		  VARCHAR_TBL_TYPE;
6682     l_qln_id                    NUMBER;
6683     l_tax_db_tbl                VARCHAR_TBL_TYPE;
6684     l_qte_status_id             NUMBER;
6685     l_qte_number                NUMBER;
6686     l_last_update_date          DATE;
6687 
6688     --ovn
6689     l_object_version_number     NUMBER;
6690     l_update_allowed		  VARCHAR2(1);
6691     l_party_id			       NUMBER;
6692     l_cust_account_id		  NUMBER;
6693     l_auto_version		       VARCHAR2(1);
6694     l_api_name			       CONSTANT VARCHAR2(30) := 'Update_quote';
6695     l_api_version_number	       CONSTANT NUMBER       := 1.0;
6696     l_return_status		       VARCHAR2(1);
6697     l_found			       VARCHAR2(1);
6698     l_calculate_freight_charge  VARCHAR2(1) := 'Y';
6699     l_calculate_tax		       VARCHAR2(1) := 'Y';
6700     x_tax_amount                NUMBER;
6701 
6702     l_qte_header_id		       NUMBER;
6703     l_qte_line_id		       NUMBER;
6704     l_index			       NUMBER;
6705     l_index_2			       NUMBER;
6706     x_status 				  VARCHAR2(1);
6707     l_order_type_id             NUMBER;
6708     l_qte_line_rec              ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6709     l_qte_line_rec_out          ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6710     l_qte_header_rec		  ASO_QUOTE_PUB.Qte_Header_Rec_Type          := p_qte_header_rec;
6711     l_old_header_rec		  ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6712     l_qte_line_dtl_tbl		  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
6713     l_qte_line_dtl_tbl_out	  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
6714     l_Line_Attr_Ext_Tbl		  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
6715     l_Line_Attr_Ext_Tbl_out	  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
6716     l_shipment_tbl		       ASO_QUOTE_PUB.Shipment_Tbl_Type;
6717     l_shipment_tbl_out		  ASO_QUOTE_PUB.Shipment_Tbl_Type;
6718     l_payment_tbl               ASO_QUOTE_PUB.Payment_Tbl_Type;
6719     l_payment_tbl_out           ASO_QUOTE_PUB.Payment_Tbl_Type;
6720     l_freight_charge_tbl        ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
6721     l_freight_charge_tbl_out	  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
6722     l_tax_detail_tbl		  ASO_QUOTE_PUB.Tax_Detail_tbl_Type;
6723     l_tax_detail_tbl_out		  ASO_QUOTE_PUB.Tax_Detail_tbl_Type;
6724     l_Price_Attr_Tbl		  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6725     l_Price_Attr_Tbl_out		  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6726     l_Price_Adj_Tbl             ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
6727     l_Price_Adj_Tbl_out		  ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
6728     l_Price_Adj_Attr_Tbl	       ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
6729     l_Price_Adj_Attr_Tbl_out	  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
6730     l_pricing_control_rec	  ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
6731     l_Price_Adjustment_Tbl	  ASO_QUOTE_PUB.Price_Adj_Tbl_Type           := p_Price_Adjustment_Tbl;
6732     l_line_rltship_rec		  ASO_QUOTE_PUB.Line_Rltship_Rec_Type;
6733     l_price_adj_rltship_rec	  ASO_QUOTE_PUB.Price_Adj_Rltship_Rec_Type;
6734     l_Tax_Control_Rec           ASO_TAX_INT.Tax_Control_Rec_Type;
6735     l_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
6736     l_hd_shipment_tbl           ASO_QUOTE_PUB.Shipment_Tbl_Type;
6737     l_shp_index_link		  Index_Link_Tbl_Type;
6738     l_prc_index_link		  Index_Link_Tbl_Type;
6739     l_prc_index_link_rev	       Index_Link_Tbl_Type;
6740     l_quote_party_tbl           ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
6741     l_quote_party_tbl_out       ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
6742     l_sales_credit_tbl          ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
6743     l_sales_credit_tbl_out      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
6744     l_control_rec               ASO_QUOTE_PUB.Control_Rec_Type             := p_control_rec;
6745     l_control_rec_bv            ASO_QUOTE_PUB.Control_Rec_Type             := p_control_rec;
6746     l_qte_access_rec            ASO_SECURITY_INT.Qte_Access_Rec_Type       := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_REC;
6747     l_qte_access_tbl            ASO_SECURITY_INT.Qte_Access_Tbl_Type       := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_TBL;
6748     l_qte_access_tbl_out        ASO_SECURITY_INT.Qte_Access_Tbl_Type;
6749     l_ln_rec                    ASO_QUOTE_PUB.Qte_Line_Rec_Type            := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
6750 
6751 
6752     -- Begin Variable declaration for Batch Validation 05/24/2002
6753 
6754     l_batch_qte_line_rec        aso_quote_pub.qte_line_rec_type     := aso_quote_pub.g_miss_qte_line_rec;
6755     l_p_batch_qte_line_tbl      aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6756     l_send_qte_line_tbl         aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6757     l_send_qte_line_dtl_tbl     aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6758     l_batch_qte_line_dtl_tbl    aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6759     l_search_qte_line_tbl       aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6760     l_delete_qte_line_tbl       aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6761     l_p_batch_qte_line_dtl_tbl  aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6762     l_model_qte_line_tbl        aso_quote_pub.qte_line_tbl_type;
6763     l_model_qte_line_dtl_tbl    aso_quote_pub.qte_line_dtl_tbl_type;
6764 
6765     l_batch_index     number       :=  0;  --should not be initialized inside line loop code
6766     l_model_index     number       :=  0;  --should not be initialized inside line loop code
6767     l_add_line        varchar2(1)  :=  fnd_api.g_false;
6768     l_add_model_line  varchar2(1)  :=  fnd_api.g_false;
6769     l_send_index      NUMBER       :=  0;
6770     l_model_line_id   NUMBER;
6771     l_lines	      NUMBER:=0;
6772     l_complete_configuration_flag  VARCHAR2(1);
6773     l_valid_configuration_flag     VARCHAR2(1);
6774     l_qte_lines_tbl_count Number;
6775     l_config_header_id number;
6776     l_config_revision_num number;
6777     l_new_config_hdr_id number;
6778 
6779     cursor c_model_line (p_config_header_id NUMBER, p_config_revision_num NUMBER)is
6780     select quote_line_id from aso_quote_line_details
6781     where config_header_id = p_config_header_id
6782     and   config_revision_num = p_config_revision_num
6783     and   ref_type_code = 'CONFIG'
6784     and   ref_line_id is NULL;
6785 
6786     CURSOR c_config_exist_in_cz (p_config_hdr_id number, p_config_rev_nbr number) IS
6787     select config_hdr_id
6788     from cz_config_details_v
6789     where config_hdr_id = p_config_hdr_id
6790     and config_rev_nbr = p_config_rev_nbr;
6791 
6792     l_deactivate_qte_header_rec aso_quote_pub.qte_header_rec_type;
6793     l_deactivate_quote_line_tbl aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6794     l_deactivate_instance_tbl aso_quote_headers_pvt.Instance_Tbl_Type := aso_quote_headers_pvt.G_MISS_Instance_Tbl;
6795     l_deactivate_counter number := 0;
6796 
6797     -- End Variable declaration for Batch Validation 05/24/2002
6798 
6799     l_order_id number;
6800     l_shipment_rec           ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
6801 
6802     l_copy_quote_control_rec  aso_copy_quote_pub.copy_quote_control_rec_type;
6803     l_copy_quote_header_rec   aso_copy_quote_pub.copy_quote_header_rec_type;
6804     l_quote_number            number;
6805 
6806     l_price_updated_date_flag  VARCHAR2(1) := fnd_api.g_false;
6807 
6808     --New Code for to call overload pricing_order
6809     lv_qte_header_rec               ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6810     lx_qte_header_rec               ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6811     lx_qte_line_tbl                 ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
6812     lv_hd_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
6813     lv_hd_shipment_tbl              ASO_QUOTE_PUB.Shipment_Tbl_Type;
6814     lv_hd_price_attr_tbl            ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6815     lx_price_adj_rltship_tbl        ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
6816 
6817     CURSOR C_Check_Store_Status (l_old_stat NUMBER, l_new_stat NUMBER) IS
6818     SELECT 'Y'
6819     FROM ASO_QUOTE_STATUSES_B A, ASO_QUOTE_STATUSES_B B
6820     WHERE A.Quote_Status_Id = l_old_stat
6821     AND A.Status_Code = 'STORE DRAFT'
6822     AND B.Quote_Status_Id = l_new_stat
6823     AND B.Status_Code = 'DRAFT';
6824 
6825     CURSOR C_Get_Quota_Credit_Type IS
6826     SELECT Sales_Credit_Type_Id
6827     FROM OE_SALES_CREDIT_TYPES
6828     WHERE Quota_Flag = 'Y';
6829 
6830     CURSOR C_Get_SCredit_Exists(l_qte_hdr_id NUMBER) IS
6831     SELECT 'Y'
6832     FROM ASO_SALES_CREDITS
6833     WHERE quote_header_id = l_qte_hdr_id;
6834 
6835     CURSOR c_tax_line(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
6836     select nvl(sum(nvl(tax_amount, 0)),0) tax_amount
6837     FROM   ASO_TAX_DETAILS
6838     WHERE  quote_header_id              =   p_qte_header_id
6839     and    quote_line_id                =   p_quote_line_id;
6840 
6841     Cursor get_line_payment_term(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
6842     SELECT payment_term_id
6843     FROM aso_payments
6844     WHERE  quote_header_id              =   p_qte_header_id
6845     and    quote_line_id                =   p_quote_line_id;
6846 
6847     Cursor get_hdr_payment_term(p_qte_header_id NUMBER) IS
6848     SELECT payment_term_id
6849     FROM aso_payments
6850     WHERE  quote_header_id              =   p_qte_header_id
6851     and    quote_line_id                IS NULL;
6852 
6853     CURSOR C_Get_Hdr_Resource_Id(lc_qte_header_id NUMBER) IS
6854     SELECT resource_id
6855     FROM Aso_Quote_Headers_All
6856     WHERE quote_header_id = lc_qte_header_id;
6857 
6858     CURSOR  c_inv_org_id(l_main_org_id Number) IS
6859     SELECT  master_organization_id
6860     FROM    oe_system_parameters
6861     WHERE   org_id = l_main_org_id;
6862 
6863     CURSOR  c_org_id(p_qte_header_id Number) IS
6864     SELECT  org_id
6865     FROM    aso_quote_headers_all
6866     WHERE   quote_header_id = p_qte_header_id;
6867 
6868     l_master_organization_id        NUMBER;
6869     l_quote_org_id                  NUMBER;
6870     l_scredit_exists                VARCHAR2(1)  := 'N';
6871     l_quota_id                      NUMBER;
6872     l_store_trans                   VARCHAR2(1)  := 'N';
6873     l_sales_team_prof               VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
6874 
6875     -- hyang defaulting framework
6876     l_def_control_rec               ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
6877     l_db_object_name                VARCHAR2(30);
6878     l_hd_shipment_rec               ASO_QUOTE_PUB.Shipment_Rec_Type         := ASO_QUOTE_PUB.G_MISS_Shipment_REC;
6879     l_hd_payment_rec                ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
6880     l_hd_tax_detail_rec             ASO_QUOTE_PUB.Tax_Detail_Rec_Type       := ASO_QUOTE_PUB.G_MISS_Tax_Detail_REC;
6881     l_hd_misc_rec                   ASO_DEFAULTING_INT.Header_Misc_Rec_Type := ASO_DEFAULTING_INT.G_MISS_HEADER_MISC_REC;
6882     lx_hd_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
6883     lx_hd_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
6884     lx_hd_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
6885     lx_hd_misc_rec                  ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
6886     lx_quote_line_rec               ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6887     lx_ln_misc_rec                  ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
6888     lx_ln_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
6889     lx_ln_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
6890     lx_ln_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
6891     lx_changed_flag                 VARCHAR2(1);
6892     l_hd_payment_tbl	           ASO_QUOTE_PUB.Payment_Tbl_Type;
6893     l_hd_tax_detail_tbl	           ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
6894 
6895     --Template changes
6896     l_template_tbl                  aso_quote_tmpl_int.list_template_tbl_type;
6897     l_qte_line_tbl                  aso_quote_pub.qte_line_tbl_type         := p_qte_line_tbl;
6898     lx_qte_line_dtl_tbl             ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type     := p_qte_line_dtl_tbl;
6899     l_count                         number;
6900     l_currency_code                 varchar2(15);
6901     l_price_list_id                 number;
6902     l_related_obj_rec               ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
6903     l_related_obj_id                number;
6904     x_related_obj_rec               ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
6905     l_obj_id                        number;
6906 
6907     l_installment_option     VARCHAR2(240);
6908     l_line_shipping_charge   NUMBER;
6909     l_line_tax               NUMBER;
6910     l_line_term_id           NUMBER := null;
6911     l_line_amount            NUMBER;
6912     l_paynow_amount          NUMBER;
6913     l_paynow_tax             NUMBER;
6914     l_paynow_charges         NUMBER;
6915     l_paynow_total           NUMBER;
6916     l_call_ar_api            varchar2(1);
6917 BEGIN
6918       -- Standard Start of API savepoint
6919       SAVEPOINT UPDATE_quote_PVT;
6920 
6921       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6922 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6923 	     aso_debug_pub.add('Begin Update_Quote Procedure', 1, 'Y');
6924 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6925 	 END IF;
6926 
6927       -- Standard call to check for call compatibility.
6928       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
6929 			 		                  p_api_version_number,
6930 					                  l_api_name,
6931 					                  G_PKG_NAME) THEN
6932 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6933       END IF;
6934 
6935       -- Initialize message list if p_init_msg_list is set to TRUE.
6936       IF FND_API.to_Boolean( p_init_msg_list ) THEN
6937 	     FND_MSG_PUB.initialize;
6938       END IF;
6939 
6940       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6941 	     aso_debug_pub.add('Update_Quote - Begin ', 1, 'Y');
6942 	 END IF;
6943       --Procedure added by Anoop Rajan on 30/09/2005 to print login details
6944       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6945 		aso_debug_pub.add('Before call to printing login info details', 1, 'Y');
6946 		ASO_UTILITY_PVT.print_login_info;
6947 		aso_debug_pub.add('After call to printing login info details', 1, 'Y');
6948       END IF;
6949 
6950       -- Change Done By Girish
6951       -- Procedure added to validate the operating unit
6952       ASO_VALIDATE_PVT.VALIDATE_OU(P_Qte_Header_Rec);
6953 
6954       -- Initialize API return status to SUCCESS
6955       x_return_status := FND_API.G_RET_STS_SUCCESS;
6956 
6957       -- Api body
6958       l_control_rec.line_pricing_event  := NULL;
6959       l_control_rec.calculate_tax_flag  := NULL;
6960 
6961       -- ******************************************************************
6962       -- Validate Environment
6963       -- ******************************************************************
6964       IF FND_GLOBAL.User_Id IS NULL THEN
6965 
6966 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6967 	         FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
6968 	         FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
6969 	         FND_MSG_PUB.ADD;
6970 	     END IF;
6971 	     RAISE FND_API.G_EXC_ERROR;
6972       END IF;
6973 
6974 
6975       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6976           aso_debug_pub.add('Update_Quote: Before call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
6977 
6978       ASO_INPUT_PARAM_DEBUG.Print_quote_input(
6979                        P_Quote_Header_Rec            => p_qte_header_rec
6980                      , P_hd_Price_Attributes_Tbl     => P_hd_Price_Attributes_Tbl
6981                      , P_hd_Payment_Tbl              => P_hd_Payment_Tbl
6982                      , P_hd_Shipment_tbl             => P_hd_Shipment_tbl
6983                      , P_hd_Tax_Detail_Tbl           => P_hd_Tax_Detail_Tbl
6984                      , P_hd_Sales_Credit_Tbl         => P_hd_Sales_Credit_Tbl
6985                      , P_Qte_Line_Tbl                => P_Qte_Line_Tbl
6986                      , P_Qte_Line_Dtl_Tbl            => P_Qte_Line_Dtl_Tbl
6987                      , P_Price_Adjustment_Tbl        => P_Price_Adjustment_Tbl
6988                      , P_Ln_Price_Attributes_Tbl     => P_Ln_Price_Attributes_Tbl
6989                      , P_Ln_Payment_Tbl              => P_Ln_Payment_Tbl
6990                      , P_Ln_Shipment_Tbl             => P_Ln_Shipment_Tbl
6991                      , P_Ln_Tax_Detail_Tbl           => P_Ln_Tax_Detail_Tbl
6992                      , P_ln_Sales_Credit_Tbl         => P_ln_Sales_Credit_Tbl
6993                      , P_Qte_Access_Tbl              => P_Qte_Access_Tbl);
6994 
6995           aso_debug_pub.add('Update_Quote: After call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
6996 	 END IF;
6997 
6998 
6999 
7000       Open C_Get_quote( p_qte_header_rec.QUOTE_HEADER_ID);
7001       Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id, l_qte_number,l_party_id, l_cust_account_id,
7002 	                        l_order_type_id,l_order_id,l_object_version_number, l_currency_code, l_price_list_id;
7003 
7004       If ( C_Get_quote%NOTFOUND) Then
7005 
7006 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7007 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_UPDATE_TARGET');
7008 	         FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
7009 	         FND_MSG_PUB.Add;
7010           END IF;
7011           raise FND_API.G_EXC_ERROR;
7012 
7013       END IF;
7014       Close C_Get_quote;
7015 
7016       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7017           aso_debug_pub.add('Update_Quote: quote_header_id:         '|| p_qte_header_rec.quote_header_id, 1, 'Y');
7018           aso_debug_pub.add('Update_Quote: l_LAST_UPDATE_DATE:      '|| l_LAST_UPDATE_DATE, 1, 'Y');
7019           aso_debug_pub.add('Update_Quote: l_qte_status_id:         '|| l_qte_status_id, 1, 'Y');
7020           aso_debug_pub.add('Update_Quote: l_qte_number:            '|| l_qte_number, 1, 'Y');
7021           aso_debug_pub.add('Update_Quote: l_order_type_id:         '|| l_order_type_id, 1, 'Y');
7022           aso_debug_pub.add('Update_Quote: l_order_id:              '|| l_order_id, 1, 'Y');
7023 		aso_debug_pub.add('Update_Quote: l_object_version_number: '|| l_object_version_number,1,'Y');
7024 		aso_debug_pub.add('Update_Quote: l_currency_code:         '|| l_currency_code,1,'Y');
7025 		aso_debug_pub.add('Update_Quote: l_price_list_id:         '|| l_price_list_id,1,'Y');
7026       END IF;
7027 
7028       If (l_last_update_date is NULL or l_last_update_date = FND_API.G_MISS_Date ) Then
7029 
7030 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7031 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
7032 	         FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
7033 	         FND_MSG_PUB.ADD;
7034 	     END IF;
7035 	     raise FND_API.G_EXC_ERROR;
7036 
7037       End if;
7038 
7039       -- Check Whether record has been changed by someone else
7040       If (l_last_update_date <> p_qte_header_rec.last_update_date) Then
7041 
7042 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7043 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
7044 	         FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
7045 	         FND_MSG_PUB.ADD;
7046 	     END IF;
7047 	     raise FND_API.G_EXC_ERROR;
7048 
7049       End if;
7050 
7051 	 --ovn
7052 	 If (p_qte_header_rec.object_version_number is not null) AND (p_qte_header_rec.object_version_number <> FND_API.G_MISS_NUM) then
7053 
7054 	    --Compare the passed value to the db value
7055 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
7056              aso_debug_pub.add('Update_Quote - p_qte_header_rec.object_version_number:' ||p_qte_header_rec.object_version_number,1,'Y');
7057 	    END IF;
7058 
7059 	    If (l_object_version_number <> p_qte_header_rec.object_version_number) then
7060 
7061 	        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7062 		       FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
7063 		       FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
7064 		       FND_MSG_PUB.ADD;
7065 		   END IF;
7066 		   raise FND_API.G_EXC_ERROR;
7067 
7068 	    End If;
7069 
7070       End If;  --(l_object_version_number is not null) or (l_object_version_number <> FND_API.G_MISS_NUM)
7071 
7072 
7073 	 If ((l_qte_header_rec.BATCH_PRICE_FLAG <> FND_API.G_FALSE) or (l_qte_header_rec.BATCH_PRICE_FLAG = FND_API.G_MISS_CHAR)) then
7074 
7075 	      ASO_CONC_REQ_INT.Lock_Exists( p_quote_header_id => p_qte_header_rec.quote_header_id,
7076 	                                    x_status          => x_status);
7077 
7078 		 if (x_status = FND_API.G_TRUE) then
7079 
7080 			IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7081                    FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
7082                    FND_MSG_PUB.ADD;
7083 			end if;
7084                raise FND_API.G_EXC_ERROR;
7085 
7086 		 end if;
7087 	 end if;
7088 
7089       IF l_order_id is NOT NULL and l_order_id <> FND_API.G_MISS_NUM THEN
7090 
7091           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7092               FND_MESSAGE.Set_Name('ASO', 'ASO_API_UPDATE_QUOTE_SUBMITTED');
7093               FND_MSG_PUB.ADD;
7094           END IF;
7095           raise FND_API.G_EXC_ERROR;
7096 
7097       END IF;
7098 
7099       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7100 	     aso_debug_pub.add('Update_Quote - quote_number: '||to_char(l_qte_number), 1, 'N');
7101 	 END IF;
7102 
7103       OPEN c_qte_status (l_qte_status_id);
7104       FETCH C_qte_status INTO l_auto_version;
7105       CLOSE c_qte_status;
7106 
7107       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7108 	     aso_debug_pub.add('Update_Quote - auto_version: '||l_auto_version, 1, 'N');
7109 	 END IF;
7110 
7111       -- auto version check should be done only if the control rec is set
7112 
7113       IF NVL(l_auto_version, 'Y') = 'Y' AND p_control_rec.auto_version_flag = FND_API.G_TRUE THEN
7114 
7115 	     OPEN C_Qte_Version(l_qte_number);
7116 	     FETCH C_Qte_Version into l_qte_header_rec.quote_version;
7117 	     CLOSE C_Qte_Version;
7118 
7119 	     l_qte_header_rec.quote_version := nvl(l_qte_header_rec.quote_version, 0) + 1;
7120 
7121       ELSE
7122           l_auto_version := 'N';
7123 
7124       END IF;
7125 
7126 
7127       -- hyang defaulting framework begin
7128 
7129       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7130           aso_debug_pub.add('Update_Quote - before defaulting framework', 1, 'Y');
7131           aso_debug_pub.add('Update_Quote - populate defaulting control record from the header control record', 1, 'Y');
7132       END IF ;
7133 
7134       l_def_control_rec.Dependency_Flag := l_control_rec.Dependency_Flag;
7135       l_def_control_rec.Defaulting_Flag := l_control_rec.Defaulting_Flag;
7136       l_def_control_rec.Application_Type_Code := l_control_rec.Application_Type_Code;
7137       l_def_control_rec.Defaulting_Flow_Code := 'UPDATE';
7138       l_def_control_rec.Last_Update_Date := P_Qte_Header_Rec.Last_Update_Date;
7139 
7140       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7141           aso_debug_pub.add('Defaulting_Fwk_Flag - '||l_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
7142           aso_debug_pub.add('Dependency_Flag - '||l_def_control_rec.Dependency_Flag, 1, 'Y');
7143           aso_debug_pub.add('Defaulting_Flag - '||l_def_control_rec.Defaulting_Flag, 1, 'Y');
7144           aso_debug_pub.add('Application_Type_Code - '||l_def_control_rec.Application_Type_Code, 1, 'Y');
7145           aso_debug_pub.add('Defaulting_Flow_Code - '||l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
7146           aso_debug_pub.add('Last_Update_Date - '||l_def_control_rec.Last_Update_Date, 1, 'Y');
7147       END IF ;
7148 
7149       IF l_def_control_rec.application_type_code = 'QUOTING HTML'
7150          OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
7151 
7152            l_db_object_name := G_QUOTE_HEADER_DB_NAME;
7153 
7154       ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
7155 
7156            l_db_object_name := G_STORE_CART_HEADER_DB_NAME;
7157       ELSE
7158            l_control_rec.Defaulting_Fwk_Flag := 'N';
7159       END IF;
7160 
7161       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7162           aso_debug_pub.add('Update_Quote - Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
7163       END IF ;
7164 
7165       IF p_hd_shipment_tbl.count > 0 THEN
7166           l_hd_shipment_rec := p_hd_shipment_tbl(1);
7167       END IF;
7168 
7169       IF p_hd_payment_tbl.count > 0 THEN
7170           l_hd_payment_rec := p_hd_payment_tbl(1);
7171       END IF;
7172 
7173       IF p_hd_tax_detail_tbl.count > 0 THEN
7174           l_hd_tax_detail_rec := p_hd_tax_detail_tbl(1);
7175       END IF;
7176 
7177       l_hd_shipment_tbl   := p_hd_shipment_tbl;
7178       l_hd_payment_tbl    := p_hd_payment_tbl;
7179       l_hd_tax_detail_tbl := p_hd_tax_detail_tbl;
7180 
7181       -- In create quote, it never deaults any line level record
7182 /* Removing Call for defaulting from update_quote
7183       IF l_control_rec.defaulting_fwk_flag = 'Y' THEN
7184 
7185           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7186               aso_debug_pub.add('Update_Quote - Calling default_entity', 1, 'Y');
7187           END IF ;
7188 
7189           ASO_DEFAULTING_INT.Default_Entity (
7190                           p_api_version           =>  1.0
7191                         , p_control_rec           =>  l_def_control_rec
7192                         , p_database_object_name  =>  l_db_object_name
7193                         , p_quote_header_rec      =>  P_Qte_Header_Rec
7194                         , p_header_misc_rec       =>  l_hd_misc_rec
7195                         , p_header_shipment_rec   =>  l_hd_shipment_rec
7196                         , p_header_payment_rec    =>  l_hd_payment_rec
7197                         , p_header_tax_detail_rec =>  l_hd_tax_detail_rec
7198                         , x_quote_header_rec      =>  l_qte_header_rec
7199                         , x_header_misc_rec       =>  lx_hd_misc_rec
7200                         , x_header_shipment_rec   =>  lx_hd_shipment_rec
7201                         , x_header_payment_rec    =>  lx_hd_payment_rec
7202                         , x_header_tax_detail_rec =>  lx_hd_tax_detail_rec
7203                         , x_quote_line_rec        =>  lx_quote_line_rec
7204                         , x_line_misc_rec         =>  lx_ln_misc_rec
7205                         , x_line_shipment_rec     =>  lx_ln_shipment_rec
7206                         , x_line_payment_rec      =>  lx_ln_payment_rec
7207                         , x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec
7208                         , x_changed_flag          =>  lx_changed_flag
7209                         , x_return_status	     =>  x_return_status
7210                         , x_msg_count		     =>  x_msg_count
7211                         , x_msg_data		     =>  x_msg_data);
7212 
7213           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7214 
7215               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7216                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
7217                   FND_MSG_PUB.ADD;
7218               END IF;
7219 
7220               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7221                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7222               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
7223                    RAISE FND_API.G_EXC_ERROR;
7224               END IF;
7225 
7226           END IF;
7227 
7228           IF Shipment_Null_Rec_Exists(lx_hd_shipment_rec, l_db_object_name) THEN
7229               l_hd_shipment_tbl(1) := lx_hd_shipment_rec;
7230           END IF;
7231 
7232           IF Payment_Null_Rec_Exists(lx_hd_payment_rec, l_db_object_name) THEN
7233               l_hd_payment_tbl(1) := lx_hd_payment_rec;
7234           END IF;
7235 
7236           IF Tax_Detail_Null_Rec_Exists(lx_hd_tax_detail_rec, l_db_object_name) THEN
7237               l_hd_tax_detail_tbl(1) := lx_hd_tax_detail_rec;
7238           END IF;
7239 
7240       END IF;
7241       */
7242       -- hyang defaulting framework end
7243 
7244 
7245       IF l_control_rec.defaulting_fwk_flag = 'N' THEN
7246 
7247           /* Updating of Order type */
7248           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7249 	         aso_debug_pub.add('Update_Quote - p_qte_header_rec.order_type_id '||p_qte_header_rec.order_type_id, 1, 'N');
7250 
7251 	       -- Change START
7252                -- Release 12 MOAC Changes : Bug 4500739
7253                -- Changes Done by : Girish
7254                -- Comments : Using HR EIT in place of org striped profile
7255 
7256                -- aso_debug_pub.add('Update_Quote - Value of Order Type Profile'||to_number(fnd_profile.value('ASO_ORDER_TYPE_ID')), 1, 'N');
7257 	       aso_debug_pub.add('Update_Quote - Value of Order Type Profile'||to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_ORDER_TYPE)), 1, 'N');
7258 
7259 	       -- Change END
7260 
7261               aso_debug_pub.add('Update_Quote - order_type_id from database '||l_order_type_id, 1, 'N');
7262 	     END IF;
7263 
7264           IF  p_qte_header_rec.order_type_id is null OR p_qte_header_rec.order_type_id = FND_API.G_MISS_NUM THEN
7265                IF l_order_type_id is NULL OR l_order_type_id = FND_API.G_MISS_NUM THEN
7266 
7267 	           -- Change START
7268                    -- Release 12 MOAC Changes : Bug 4500739
7269                    -- Changes Done by : Girish
7270                    -- Comments : Using HR EIT in place of org striped profile
7271 
7272                    --l_qte_header_rec.order_type_id := to_number(fnd_profile.value('ASO_ORDER_TYPE_ID'));
7273 		   l_qte_header_rec.order_type_id := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_ORDER_TYPE));
7274 
7275 		   -- Change END
7276 
7277                END IF;
7278           END IF;
7279 
7280       END IF;
7281 
7282       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7283           aso_debug_pub.add('Update_Quote - l_qte_header_rec.publish_flag '||l_qte_header_rec.publish_flag, 1, 'N');
7284       END IF;
7285 
7286       IF l_qte_header_rec.publish_flag = 'Y' THEN
7287 
7288           -- check for missing customer accounts in the quote
7289           ASO_CHECK_TCA_PVT.Check_Customer_Accounts (
7290                         p_init_msg_list        => fnd_api.g_false,
7291                         p_qte_header_id        => l_qte_header_rec.quote_header_id,
7292                         x_return_status        => x_return_status,
7293                         x_msg_count            => x_msg_count,
7294                         x_msg_data             => x_msg_data );
7295 
7296           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7297               aso_debug_pub.add('Update_Quote - chk_cust_accts: x_return_status: '||x_return_status, 1, 'N');
7298           END IF;
7299 
7300           IF x_return_status <> fnd_api.g_ret_sts_success THEN
7301               RAISE fnd_api.g_exc_error;
7302           END IF; -- end check_customer_accounts
7303 
7304           -- assign the missing customer accounts to the quote
7305           ASO_CHECK_TCA_PVT.Assign_Customer_Accounts (
7306                         p_init_msg_list        => fnd_api.g_false,
7307                         p_qte_header_id        => l_qte_header_rec.quote_header_id,
7308                         p_calling_api_flag     => 1,
7309                         x_return_status        => x_return_status,
7310                         x_msg_count            => x_msg_count,
7311                         x_msg_data             => x_msg_data );
7312 
7313           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7314               aso_debug_pub.add('Update_Quote - assign_cust_accts: x_return_status: '||x_return_status, 1, 'N');
7315           END IF;
7316 
7317           IF x_return_status <> fnd_api.g_ret_sts_success THEN
7318               RAISE fnd_api.g_exc_error;
7319           END IF;
7320 
7321       END IF;  --l_qte_header_rec.publish_flag = 'Y' THEN
7322 
7323 
7324       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7325 
7326 	       -- party_id must exist and be active in HZ_PARTIES
7327             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7328 	           aso_debug_pub.add('Update_Quote - before validate_party: ', 1, 'N');
7329 	       END IF;
7330 
7331 	       ASO_VALIDATE_PVT.Validate_Party (
7332 		              p_init_msg_list	       => FND_API.G_FALSE,
7333 		              p_party_id	            => l_qte_header_rec.party_id,
7334 		              p_party_usage	       => 'QUOTE_PARTY',
7335 		              x_return_status        => x_return_status,
7336 		              x_msg_count	       => x_msg_count,
7337 		              x_msg_data	            => x_msg_data);
7338 
7339 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7340 
7341                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7342 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7343                     FND_MESSAGE.Set_Token('COLUMN', 'PARTY_ID', FALSE);
7344                     FND_MSG_PUB.ADD;
7345 	           END IF;
7346 	           RAISE FND_API.G_EXC_ERROR;
7347 
7348 	       END IF;
7349 
7350 	       -- org_contact_id must be exist and active in HZ_ORG_CONTACTS
7351 	       ASO_VALIDATE_PVT.Validate_Contact (
7352 		              p_init_msg_list	       => FND_API.G_FALSE,
7353 		              p_contact_id	       => l_qte_header_rec.org_contact_id,
7354 		              p_contact_usage	       => 'ORG_CONTACT',
7355 		              x_return_status        => x_return_status,
7356 		              x_msg_count	       => x_msg_count,
7357 		              x_msg_data	            => x_msg_data);
7358 
7359 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7360 
7361                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7362 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7363                     FND_MESSAGE.Set_Token('COLUMN', 'ORG_CONTACT_ID', FALSE);
7364                     FND_MSG_PUB.ADD;
7365                 END IF;
7366                 RAISE FND_API.G_EXC_ERROR;
7367             END IF;
7368 
7369 	       -- invoice_to_party_id must exist and be active in HZ_PARTIES and have the usage INVOICE.
7370 
7371 	       ASO_VALIDATE_PVT.Validate_Party (
7372 		              p_init_msg_list	       => FND_API.G_FALSE,
7373 		              p_party_id	            => l_qte_header_rec.invoice_to_party_id,
7374 		              p_party_usage	       => 'INVOICE_TO_PARTY',
7375 		              x_return_status        => x_return_status,
7376 		              x_msg_count	       => x_msg_count,
7377 		              x_msg_data	            => x_msg_data);
7378 
7379 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7380 
7381                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7382 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7383                     FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_PARTY_ID', FALSE);
7384                     FND_MSG_PUB.ADD;
7385                 END IF;
7386                 RAISE FND_API.G_EXC_ERROR;
7387             END IF;
7388 
7389 	       IF l_qte_header_rec.cust_account_id <> FND_API.G_MISS_NUM  OR  l_qte_header_rec.party_id <> FND_API.G_MISS_NUM THEN
7390 
7391 	           IF l_qte_header_rec.cust_account_id <> FND_API.G_MISS_NUM THEN
7392 		          l_cust_account_id := l_qte_header_rec.cust_account_id;
7393 	           END IF;
7394 
7395 	           IF l_qte_header_rec.party_id <> FND_API.G_MISS_NUM THEN
7396 				l_party_id := l_qte_header_rec.party_id;
7397 	           END IF;
7398 
7399 	           ASO_PARTY_INT.Validate_CustAccount (
7400 		              p_init_msg_list	       => FND_API.G_FALSE,
7401                         p_party_id	            => l_party_id,
7402                         p_cust_account_id      => l_cust_account_id,
7403                         x_return_status        => x_return_status,
7404                         x_msg_count	       => x_msg_count,
7405                         x_msg_data	            => x_msg_data );
7406 
7407             END IF;
7408 
7409 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7410 	           RAISE FND_API.G_EXC_ERROR;
7411 	       END IF;
7412 
7413 	       -- order_type must exist and be active in OE_ORDER_TYPES
7414 
7415             ASO_TRADEIN_PVT.OrderType(
7416                         p_init_msg_list        => FND_API.G_FALSE,
7417                         p_qte_header_rec       => l_qte_header_rec,
7418                         x_return_status        => x_return_status,
7419                         x_msg_count            => x_msg_count,
7420                         x_msg_data             => x_msg_data);
7421 
7422 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7423 	           RAISE FND_API.G_EXC_ERROR;
7424 	       END IF;
7425 
7426             ASO_VALIDATE_PVT.Validate_Quote_Exp_date(
7427                         p_init_msg_list         => FND_API.G_FALSE,
7428                         p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
7429                         x_return_status         => x_return_status,
7430                         x_msg_count             => x_msg_count,
7431                         x_msg_data              => x_msg_data);
7432 
7433             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7434 
7435                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7436                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_UPD_EXPIRATION_DATE');
7437                     FND_MSG_PUB.ADD;
7438                 END IF;
7439                 RAISE FND_API.G_EXC_ERROR;
7440             END IF;
7441 
7442 	       -- price list must exist and be active in OE_PRICE_LISTS
7443 	       ASO_VALIDATE_PVT.Validate_PriceList (
7444 		              p_init_msg_list	        => FND_API.G_FALSE,
7445 		              p_price_list_id	        => l_qte_header_rec.price_list_id,
7446 		              x_return_status         => x_return_status,
7447 		              x_msg_count	        => x_msg_count,
7448 		              x_msg_data	             => x_msg_data);
7449 
7450 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7451 
7452                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7453 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7454                     FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
7455                     FND_MSG_PUB.ADD;
7456 	           END IF;
7457 	           RAISE FND_API.G_EXC_ERROR;
7458             END IF;
7459 
7460             ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
7461   	                   p_init_msg_list	        => FND_API.G_FALSE,
7462                         p_price_list_id	        => l_qte_header_rec.price_list_id,
7463                         p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
7464                         x_return_status         => x_return_status,
7465 	                   x_msg_count             => x_msg_count,
7466 	                   x_msg_data	             => x_msg_data);
7467 
7468             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7469 
7470                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7471                      FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7472                      FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
7473                      FND_MSG_PUB.ADD;
7474                  END IF;
7475                  RAISE FND_API.G_EXC_ERROR;
7476             END IF;
7477 
7478             -- if status is to be changed, a valid transition should exist.
7479             IF (l_qte_header_rec.quote_status_id IS NOT NULL
7480                 AND l_qte_header_rec.quote_status_id <> FND_API.G_MISS_NUM
7481                 AND l_qte_header_rec.quote_status_id <> l_qte_status_id) THEN
7482 
7483   	             ASO_VALIDATE_PVT.Validate_Status_Transition(
7484     		                    p_init_msg_list	=> FND_API.G_FALSE,
7485     		                    p_source_status_id  => l_qte_status_id,
7486     		                    p_dest_status_id    => l_qte_header_rec.quote_status_id,
7487     		                    x_return_status     => x_return_status,
7488     		                    x_msg_count	     => x_msg_count,
7489     		                    x_msg_data	     => x_msg_data);
7490 
7491   	             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7492 
7493                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7494   	                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_STATUS_TRANS');
7495                           FND_MSG_PUB.ADD;
7496   	                 END IF;
7497  	                 RAISE FND_API.G_EXC_ERROR;
7498   	             END IF;
7499   	       END IF;
7500 
7501 
7502             FOR i in 1..p_hd_sales_credit_tbl.count LOOP
7503 
7504                 if aso_debug_pub.g_debug_flag = 'Y' then
7505                     aso_debug_pub.add('p_hd_sales_credit_tbl('||i||').operation_code: '|| p_hd_sales_credit_tbl(i).operation_code,1,'Y');
7506                 end if;
7507 
7508                 if (p_hd_sales_credit_tbl(i).operation_code = 'CREATE' or p_hd_sales_credit_tbl(i).operation_code = 'UPDATE') then
7509 
7510                     ASO_VALIDATE_PVT.Validate_Resource_id(
7511                                 p_init_msg_list => FND_API.G_FALSE,
7512                                 p_resource_id   => p_hd_sales_credit_tbl(i).resource_id  ,
7513                                 x_return_status => x_return_status,
7514                                 x_msg_count     => x_msg_count,
7515                                 x_msg_data      => x_msg_data);
7516 
7517                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7518 
7519                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7520 		                  FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
7521 		                  FND_MSG_PUB.ADD;
7522 	                   END IF;
7523                         RAISE FND_API.G_EXC_ERROR;
7524                     END IF;
7525 
7526 
7527                     ASO_VALIDATE_PVT.Validate_Resource_group_id(
7528                                 p_init_msg_list     => FND_API.G_FALSE,
7529                                 p_resource_group_id => p_hd_sales_credit_tbl(i).resource_group_id,
7530                                 x_return_status     => x_return_status,
7531                                 x_msg_count         => x_msg_count,
7532                                 x_msg_data          => x_msg_data);
7533 
7534                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7535                         RAISE FND_API.G_EXC_ERROR;
7536                     END IF;
7537 
7538 
7539                     ASO_VALIDATE_PVT.Validate_Salescredit_Type(
7540                                 p_init_msg_list       => FND_API.G_FALSE,
7541                                 p_salescredit_type_id => p_hd_sales_credit_tbl(i).sales_credit_type_id,
7542                                 x_return_status       => x_return_status,
7543                                 x_msg_count           => x_msg_count,
7544                                 x_msg_data            => x_msg_data);
7545 
7546                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7547                         RAISE FND_API.G_EXC_ERROR;
7548                     END IF;
7549 
7550 
7551                     ASO_VALIDATE_PVT.Validate_EmployPerson(
7552                                 p_init_msg_list => FND_API.G_FALSE,
7553                                 p_employee_id   => p_hd_sales_credit_tbl(i).employee_person_id,
7554                                 x_return_status => x_return_status,
7555                                 x_msg_count     => x_msg_count,
7556                                 x_msg_data      => x_msg_data);
7557 
7558                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7559                         RAISE FND_API.G_EXC_ERROR;
7560                     END IF;
7561 
7562                 end if;
7563 
7564             END LOOP;
7565 
7566             FOR i in 1..p_hd_quote_party_tbl.count LOOP
7567 
7568                 ASO_VALIDATE_PVT.Validate_Party_Type(
7569 				        p_init_msg_list => FND_API.G_FALSE,
7570                             p_party_type    => p_hd_quote_party_tbl(i).party_type,
7571                             x_return_status => x_return_status,
7572                             x_msg_count     => x_msg_count,
7573                             x_msg_data      => x_msg_data);
7574 
7575                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7576                     RAISE FND_API.G_EXC_ERROR;
7577                 END IF;
7578 
7579                 ASO_VALIDATE_PVT.Validate_Party(
7580                             p_init_msg_list => FND_API.G_FALSE,
7581                             p_party_id      => p_hd_quote_party_tbl(i).party_id,
7582                             p_party_usage   => null,
7583                             x_return_status => x_return_status,
7584                             x_msg_count     => x_msg_count,
7585                             x_msg_data      => x_msg_data);
7586 
7587                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7588                     RAISE FND_API.G_EXC_ERROR;
7589                 END IF;
7590 
7591                 ASO_VALIDATE_PVT.Validate_Party_Object_Type(
7592                             p_init_msg_list	  => FND_API.G_FALSE,
7593                             p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
7594                             x_return_status     => x_return_status,
7595                             x_msg_count         => x_msg_count,
7596                             x_msg_data          => x_msg_data);
7597 
7598                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7599                     RAISE FND_API.G_EXC_ERROR;
7600                 END IF;
7601 
7602             END LOOP;
7603 
7604             IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7605 
7606                 IF l_hd_Shipment_tbl.count > 0 THEN
7607                     l_shipment_rec := l_hd_Shipment_tbl(1);
7608                 END IF;
7609 
7610                 ASO_VALIDATE_PVT.Validate_item_tca_bsc(
7611 	                       p_init_msg_list	   => FND_API.G_FALSE,
7612                             p_qte_header_rec   => l_qte_header_rec,
7613                             p_shipment_rec     =>   l_shipment_rec,
7614                             p_operation_code   =>   'UPDATE',
7615                             p_application_type_code   =>   l_control_rec.application_type_code,
7616                             x_return_status	   => x_return_status,
7617                             x_msg_count		=> x_msg_count,
7618                             x_msg_data		=> 	x_msg_data);
7619 
7620                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7621                     RAISE FND_API.G_EXC_ERROR;
7622                 END IF;
7623 
7624             END IF;
7625 
7626       END IF;
7627 
7628       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
7629 
7630           IF l_qte_header_rec.currency_code IS NULL THEN
7631 
7632               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7633                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
7634                   FND_MESSAGE.Set_Token('COLUMN', 'CURRENCY_CODE', FALSE);
7635                   FND_MSG_PUB.ADD;
7636               END IF;
7637               RAISE FND_API.G_EXC_ERROR;
7638           END IF;
7639 
7640 	     -- tax_exempt_flag must be in 'E', 'R' and 'S'
7641 	     -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
7642 
7643           FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
7644 
7645               ASO_VALIDATE_PVT.Validate_Tax_Exemption (
7646                           p_init_msg_list	      => FND_API.G_FALSE,
7647                           p_tax_exempt_flag	      => l_hd_tax_detail_tbl(i).tax_exempt_flag,
7648                           p_tax_exempt_reason_code => l_hd_tax_detail_tbl(i).tax_exempt_reason_code,
7649                           x_return_status          => x_return_status,
7650                           x_msg_count	           => x_msg_count,
7651                           x_msg_data	           => x_msg_data);
7652 
7653               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7654 
7655                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7656                       FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
7657                       FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
7658                       FND_MSG_PUB.ADD;
7659                   END IF;
7660                   RAISE FND_API.G_EXC_ERROR;
7661               END IF;
7662 
7663           END LOOP;
7664 
7665           FOR i IN 1..p_ln_tax_detail_tbl.count LOOP
7666 
7667               ASO_VALIDATE_PVT.Validate_Tax_Exemption (
7668                           p_init_msg_list	      => FND_API.G_FALSE,
7669                           p_tax_exempt_flag	      => p_ln_tax_detail_tbl(i).tax_exempt_flag,
7670                           p_tax_exempt_reason_code => p_ln_tax_detail_tbl(i).tax_exempt_reason_code,
7671                           x_return_status          => x_return_status,
7672                           x_msg_count	           => x_msg_count,
7673                           x_msg_data	           => x_msg_data);
7674 
7675               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7676 
7677                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7678                       FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
7679                       FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
7680                       FND_MSG_PUB.ADD;
7681                   END IF;
7682 
7683                   RAISE FND_API.G_EXC_ERROR;
7684               END IF;
7685 
7686           END LOOP;
7687 
7688           FOR i in 1..p_hd_quote_party_tbl.count LOOP
7689 
7690               ASO_VALIDATE_PVT.Validate_Party_Object_Id(
7691                           p_init_msg_list     => FND_API.G_FALSE,
7692                           p_party_id          => p_hd_quote_party_tbl(i).party_id,
7693                           p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
7694                           p_party_object_id   => p_hd_quote_party_tbl(i).party_object_id,
7695                           x_return_status     => x_return_status,
7696                           x_msg_count         => x_msg_count,
7697                           x_msg_data          => x_msg_data);
7698 
7699               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7700 
7701                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7702                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
7703                       FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
7704                       FND_MSG_PUB.ADD;
7705                   END IF;
7706                   RAISE FND_API.G_EXC_ERROR;
7707               END IF;
7708 
7709           END LOOP;
7710 
7711 
7712           IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7713 
7714                IF l_hd_Shipment_tbl.count > 0 THEN
7715                    l_shipment_rec := l_hd_Shipment_tbl(1);
7716                END IF;
7717 
7718                ASO_VALIDATE_PVT.Validate_record_tca_crs(
7719                            p_init_msg_list	=> FND_API.G_FALSE,
7720                            p_qte_header_rec  => l_qte_header_rec,
7721                            p_shipment_rec    => l_shipment_rec,
7722                            p_operation_code  => 'UPDATE',
7723                            p_application_type_code  => l_control_rec.application_type_code,
7724                            x_return_status	=> x_return_status,
7725                            x_msg_count		=> x_msg_count,
7726                            x_msg_data		=> x_msg_data);
7727 
7728                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7729                    RAISE FND_API.G_EXC_ERROR;
7730                END IF;
7731           END IF;
7732 
7733       END IF;
7734 
7735       IF l_hd_payment_tbl.count > 0 THEN
7736 
7737           FOR payment_rec IN c_payment_rec LOOP
7738                l_payment_db_tbl(payment_rec.payment_id) := payment_rec.payment_option;
7739           END LOOP;
7740 
7741           FOR i IN 1..l_hd_payment_tbl.count LOOP
7742 
7743               IF l_hd_payment_tbl(i).operation_code = 'CREATE' THEN
7744 
7745                   l_payment_db_tbl(NVL(l_payment_db_tbl.last, 0)+1) := l_hd_payment_tbl(i).payment_option;
7746 
7747               ELSIF l_hd_payment_tbl(i).operation_code = 'UPDATE' THEN
7748 
7749                   IF l_hd_payment_tbl(i).payment_id <> FND_API.G_MISS_NUM AND
7750                       l_payment_db_tbl.exists(l_hd_payment_tbl(i).payment_id) AND
7751                       l_hd_payment_tbl(i).payment_option <> FND_API.G_MISS_CHAR THEN
7752 
7753                          l_payment_db_tbl(l_hd_payment_tbl(i).payment_id) := l_hd_payment_tbl(i).payment_option;
7754                   END IF;
7755 
7756               ELSIF l_hd_payment_tbl(i).operation_code = 'DELETE' THEN
7757 
7758                   IF l_hd_payment_tbl(i).payment_id <> FND_API.G_MISS_NUM AND
7759                       l_payment_db_tbl.exists(l_hd_payment_tbl(i).payment_id) THEN
7760 
7761                         l_payment_db_tbl.DELETE(l_hd_payment_tbl(i).payment_id);
7762                   END IF;
7763 
7764               END IF;
7765 
7766           END LOOP;
7767 
7768           IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'N') THEN
7769 
7770         	     IF l_hd_payment_tbl.count > 1 THEN
7771 
7772                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7773 		    	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
7774 		    	        FND_MSG_PUB.ADD;
7775                    END IF;
7776                    RAISE FND_API.G_EXC_ERROR;
7777 
7778                ELSIF l_hd_payment_tbl.count = 1 THEN
7779 
7780                    IF l_hd_payment_tbl(1).payment_option = 'SPLIT' THEN
7781 
7782                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7783 			            FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
7784 			            FND_MSG_PUB.ADD;
7785 		             END IF;
7786 		             RAISE FND_API.G_EXC_ERROR;
7787                    END IF;
7788 
7789                END IF;-- l_payment_db_tbl
7790 
7791           END IF;-- FND_PROFILE.Value
7792 
7793 
7794           IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'Y') THEN
7795 
7796                IF l_hd_payment_tbl.count > 1 THEN
7797 
7798 	              l_index := l_payment_db_tbl.first;
7799 
7800                    WHILE l_index IS NOT NULL LOOP
7801 
7802                         IF l_payment_db_tbl(l_index) <> 'SPLIT' THEN
7803 
7804 		                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7805 			                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
7806 			                 FND_MSG_PUB.ADD;
7807 		                  END IF;
7808 		                  RAISE FND_API.G_EXC_ERROR;
7809 		              END IF;
7810 		              l_index := l_payment_db_tbl.next(l_index);
7811 	              END LOOP;
7812 
7813 	          END IF;
7814           END IF; ---- FND_PROFILE.Value
7815 
7816 	 END IF;
7817 
7818 
7819       IF l_hd_shipment_tbl.count > 0 THEN
7820 
7821           FOR shipment_rec IN c_shipment_rec LOOP
7822 	         l_shipment_db_tbl(shipment_rec.shipment_id) := NULL;
7823 	     END LOOP;
7824 
7825 	     FOR i IN 1..l_hd_shipment_tbl.count LOOP
7826 
7827                IF l_hd_shipment_tbl(i).operation_code = 'CREATE' THEN
7828 
7829                    l_shipment_db_tbl(NVL(l_shipment_db_tbl.last,0)+1) := NULL;
7830                ELSIF l_hd_shipment_tbl(i).operation_code = 'DELETE' THEN
7831 
7832                    IF l_hd_shipment_tbl(i).shipment_id <> FND_API.G_MISS_NUM AND
7833                       l_shipment_db_tbl.exists(l_hd_shipment_tbl(i).shipment_id) THEN
7834 
7835                        l_shipment_db_tbl.DELETE(l_hd_shipment_tbl(i).shipment_id);
7836                    END IF;
7837                END IF;
7838 
7839 	     END LOOP;
7840 
7841 	     IF l_shipment_db_tbl.count > 1 THEN
7842 
7843 		    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7844 			   FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENTS');
7845 			   FND_MSG_PUB.ADD;
7846 		    END IF;
7847 		    RAISE FND_API.G_EXC_ERROR;
7848 	     END IF;
7849 
7850 	 END IF;
7851 
7852 	 --   Validate Tax; ( there should be only one rec having NOT NULL orig_tax_code)
7853 	 IF l_hd_tax_detail_tbl.count > 0 THEN
7854 
7855           FOR tax_rec IN c_tax_rec LOOP
7856               l_tax_db_tbl(tax_rec.tax_detail_id) := NULL;
7857           END LOOP;
7858 
7859           FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
7860 
7861                IF l_hd_tax_detail_tbl(i).operation_code ='CREATE' THEN
7862 
7863                        l_tax_db_tbl(NVL(l_tax_db_tbl.last,0)+1) := NULL;
7864 
7865                ELSIF l_hd_tax_detail_tbl(i).operation_code ='DELETE' AND
7866                      l_hd_tax_detail_tbl(i).tax_detail_id <> FND_API.G_MISS_NUM AND
7867                      l_tax_db_tbl.exists(l_hd_tax_detail_tbl(i).tax_detail_id) THEN
7868 
7869                        l_tax_db_tbl.delete(l_hd_tax_detail_tbl(i).tax_detail_id);
7870                END IF;
7871 
7872           END LOOP;
7873 
7874 	     IF l_tax_db_tbl.count > 1 THEN
7875 
7876               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7877                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_TAX_RECORDS');
7878                   FND_MSG_PUB.ADD;
7879               END IF;
7880               RAISE FND_API.G_EXC_ERROR;
7881 
7882           END IF;
7883 
7884       END IF;
7885 
7886 
7887       IF l_auto_version = 'Y' THEN
7888 
7889 	       l_old_header_rec := ASO_UTILITY_PVT.Query_Header_Row(l_qte_header_rec.QUOTE_HEADER_ID);
7890 
7891             -- updating the existing version to a higher version
7892             -- this is done here because copy quote will fail to
7893             -- insert duplicate quote number/version
7894 
7895             l_copy_quote_control_rec.new_version     :=  FND_API.G_TRUE;
7896             l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
7897 
7898             aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
7899                                            P_Init_Msg_List           =>  FND_API.G_FALSE,
7900                                            P_Commit                  =>  FND_API.G_FALSE,
7901                                            P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
7902                                            P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
7903                                            X_Qte_Header_Id           =>  l_qte_header_id,
7904                                            X_Qte_Number              =>  l_quote_number,
7905                                            X_Return_Status           =>  l_return_status,
7906                                            X_Msg_Count               =>  x_msg_count,
7907                                            X_Msg_Data                =>  x_msg_data
7908                                           );
7909 
7910             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7911 		      aso_debug_pub.add('Update_Quote: After copy_quote l_return_status: ' || l_return_status);
7912                 aso_debug_pub.add('Update_Quote: After copy_quote l_qte_header_id: ' || l_qte_header_id);
7913                 aso_debug_pub.add('Update_Quote: After copy_quote l_quote_number:  ' || l_quote_number);
7914 		  END IF;
7915 
7916             update aso_quote_headers_all
7917             set quote_version      =  l_qte_header_rec.quote_version + 1,
7918                 max_version_flag   =  'Y',
7919                 creation_date      =  sysdate
7920             where quote_header_id = l_qte_header_rec.quote_header_id;
7921 
7922             update aso_quote_headers_all
7923             set max_version_flag      =  'N',
7924                 quote_version         =  l_old_header_rec.quote_version,
7925                 quote_status_id       =  l_old_header_rec.quote_status_id,
7926                 creation_date         =  l_old_header_rec.creation_date,
7927 			 created_by            =  l_old_header_rec.created_by,
7928 			 last_update_date      =  sysdate,
7929                 last_updated_by       =  g_user_id,
7930                 last_update_login     =  g_login_id
7931             where quote_header_id = l_qte_header_id;
7932 
7933             update aso_quote_headers_all
7934             set quote_version         =  l_qte_header_rec.quote_version,
7935                 last_update_date      =  sysdate,
7936 			 created_by            =  g_user_id,
7937 			 last_updated_by       =  g_user_id,
7938                 last_update_login     =  g_login_id
7939             where quote_header_id = l_qte_header_rec.quote_header_id;
7940 
7941             open  c_last_update_date(l_qte_header_rec.quote_header_id);
7942             fetch c_last_update_date into l_qte_header_rec.last_update_date;
7943             close c_last_update_date;
7944 
7945             l_control_rec.last_update_date  :=  l_qte_header_rec.last_update_date;
7946 
7947             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7948                 aso_debug_pub.add('Update_Quote: After updating aso_quote_headers_all table for auto versioning.');
7949                 aso_debug_pub.add('l_qte_header_rec.last_update_date: '|| l_qte_header_rec.last_update_date);
7950                 aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
7951             END IF;
7952 
7953       END IF;
7954 
7955 
7956       l_index := 1;
7957 
7958       FOR i IN 1..p_price_adjustment_tbl.count LOOP
7959 
7960 	      IF (p_price_adjustment_tbl(i).qte_line_index IS NULL OR
7961 		     p_price_adjustment_tbl(i).qte_line_index = FND_API.G_MISS_NUM) AND
7962 	         (p_price_adjustment_tbl(i).quote_line_id IS NULL OR
7963 		     p_price_adjustment_tbl(i).quote_line_id = FND_API.G_MISS_NUM) THEN
7964 
7965 		       l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(i);
7966 		       l_prc_index_link(l_index) := i;
7967 		       l_prc_index_link_rev(i)   := l_index;
7968 		       l_index                   := l_index + 1;
7969 	      END IF;
7970 
7971       END LOOP;
7972 
7973       FOR i IN 1..p_price_adj_attr_tbl.count LOOP
7974 
7975            IF (p_price_adj_attr_tbl(i).qte_line_index IS NULL OR
7976 		     p_price_adj_attr_tbl(i).qte_line_index = FND_API.G_MISS_NUM) THEN
7977 
7978 	            l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(i);
7979 
7980 	            IF p_price_adj_attr_tbl(i).price_adj_index <> FND_API.G_MISS_NUM AND
7981 		          l_prc_index_link_rev.exists(p_price_adj_attr_tbl(i).price_adj_index) THEN
7982 
7983 		             l_price_adj_attr_tbl(l_index).price_adj_index := l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
7984 	            END IF;
7985 
7986                  l_index := l_index + 1;
7987 	      END IF;
7988 
7989       END LOOP;
7990 
7991 
7992       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7993 
7994            IF l_hd_shipment_tbl.count > 0 THEN
7995                 l_hd_shipment_tbl(1) := l_hd_shipment_tbl(1);
7996                 l_shipment_rec       := l_hd_shipment_tbl(1);
7997            END IF;
7998 
7999            ASO_VALIDATE_PVT.Validate_record_tca_crs(
8000         	             p_init_msg_list	 => FND_API.G_FALSE,
8001         	             p_qte_header_rec  => l_qte_header_rec,
8002         	             p_shipment_rec    => l_shipment_rec,
8003         	             p_operation_code  => 'UPDATE',
8004         	             p_application_type_code  => l_control_rec.application_type_code,
8005         	             x_return_status	 => x_return_status,
8006                        x_msg_count		 => x_msg_count,
8007                        x_msg_data		 => x_msg_data);
8008 
8009            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8010                RAISE FND_API.G_EXC_ERROR;
8011            END IF;
8012 
8013        -- bug 5196952 validate the ship method code if the ship method gets updated or the org gets updated
8014        IF ((l_shipment_rec.ship_method_code is not null and l_shipment_rec.ship_method_code <> fnd_api.g_miss_char and l_shipment_rec.operation_code = 'UPDATE')
8015           or (P_Qte_Header_Rec.org_id is not null and P_Qte_Header_Rec.org_id <> fnd_api.g_miss_num)) THEN
8016 
8017           -- get the value from db if not passed in
8018          IF (P_Qte_Header_Rec.org_id is null or P_Qte_Header_Rec.org_id = fnd_api.g_miss_num ) THEN
8019           OPEN c_org_id(l_qte_header_rec.quote_header_id);
8020           FETCH c_org_id into l_quote_org_id;
8021           CLOSE c_org_id;
8022 	    ELSE
8023 	      l_quote_org_id := P_Qte_Header_Rec.org_id;
8024          END IF;
8025 
8026           -- get the master org id from the quote hdr org id
8027           OPEN c_inv_org_id(l_quote_org_id);
8028           FETCH c_inv_org_id into l_master_organization_id;
8029           CLOSE c_inv_org_id;
8030 
8031           IF aso_debug_pub.g_debug_flag = 'Y' THEN
8032            aso_debug_pub.add('Update_Quote - l_shipment_rec.ship_method_code:  '|| l_shipment_rec.ship_method_code, 1, 'N');
8033            aso_debug_pub.add('Update_Quote - P_Qte_Header_Rec.org_id:   '|| P_Qte_Header_Rec.org_id, 1, 'N');
8034            aso_debug_pub.add('Update_Quote - l_master_organization_id:  '|| l_master_organization_id, 1, 'N');
8035            aso_debug_pub.add('Update_Quote - l_quote_org_id         :   '|| l_quote_org_id, 1, 'N');
8036            aso_debug_pub.add('Update_Quote - before validate ship_method_code ', 1, 'N');
8037           end if;
8038          ASO_VALIDATE_PVT.validate_ship_method_code
8039          (
8040           p_init_msg_list          => fnd_api.g_false,
8041           p_qte_header_id          => l_qte_header_rec.quote_header_id,
8042           p_qte_line_id            => fnd_api.g_miss_num,
8043           p_organization_id        => l_master_organization_id,
8044           p_ship_method_code       => l_shipment_rec.ship_method_code,
8045           p_operation_code         => l_shipment_rec.operation_code,
8046           x_return_status          => x_return_status,
8047           x_msg_count              => x_msg_count,
8048           x_msg_data               => x_msg_data);
8049 
8050           IF aso_debug_pub.g_debug_flag = 'Y' THEN
8051            aso_debug_pub.add('Update_Quote - After validate ship_method_code ', 1, 'N');
8052           end if;
8053 
8054           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8055               RAISE FND_API.G_EXC_ERROR;
8056           END IF;
8057         end if;  -- end if for ship method code check
8058 
8059       END IF;
8060 
8061       ASO_CHECK_TCA_PVT.check_tca(
8062                    p_api_version         => 1.0,
8063                    p_init_msg_list       => FND_API.G_FALSE,
8064                    P_Qte_Rec             => l_qte_header_rec,
8065     		         p_Header_Shipment_Tbl => l_hd_Shipment_Tbl,
8066                    P_Operation_Code      => 'UPDATE',
8067                    p_application_type_code      => l_control_rec.application_type_code,
8068                    x_return_status       => x_return_status,
8069                    x_msg_count           => x_msg_count,
8070                    x_msg_data            => x_msg_data);
8071 
8072     	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8073     	     RAISE FND_API.G_EXC_ERROR;
8074     	 END IF;
8075 
8076       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8077           aso_debug_pub.add('Update_Quote - before Validate_Agreement:l_qte_header_rec.contract_id: '||l_qte_header_rec.contract_id, 1, 'N');
8078       END IF;
8079 
8080       IF (l_qte_header_rec.contract_id IS NOT NULL AND
8081           l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
8082 
8083            ASO_VALIDATE_PVT.Validate_Agreement(
8084                       p_init_msg_list    => FND_API.G_FALSE,
8085                       P_Agreement_Id     => l_qte_header_rec.contract_id,
8086                       x_return_status    => x_return_status,
8087                       x_msg_count        => x_msg_count,
8088                       x_msg_data         => x_msg_data);
8089 
8090            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8091                aso_debug_pub.add('Update_Quote - after Validate_Agreement:x_return_status: '||x_return_status, 1, 'N');
8092 		 END IF;
8093 
8094            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8095                RAISE FND_API.G_EXC_ERROR;
8096            END IF;
8097 
8098       END IF;
8099 
8100       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8101 	     aso_debug_pub.add('Update_Quote: l_qte_header_rec.minisite_id: '|| l_qte_header_rec.minisite_id);
8102 	 END IF;
8103 
8104       IF (l_qte_header_rec.minisite_id IS NOT NULL AND
8105           l_qte_header_rec.minisite_id <> FND_API.G_MISS_NUM) THEN
8106 
8107            ASO_VALIDATE_PVT.Validate_MiniSite( p_init_msg_list => FND_API.G_FALSE,
8108                                                p_minisite_id   => l_qte_header_rec.minisite_id,
8109                                                x_return_status => x_return_status,
8110                                                x_msg_count     => x_msg_count,
8111                                                x_msg_data      => x_msg_data);
8112 
8113            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8114 		     aso_debug_pub.add('Update_Quote: After call to ASO_VALIDATE_PVT.Validate_MiniSite');
8115                aso_debug_pub.add('Update_Quote: x_return_status: '|| x_return_status);
8116 		 END IF;
8117 
8118            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8119                RAISE FND_API.G_EXC_ERROR;
8120            END IF;
8121 
8122       END IF;
8123 
8124       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8125 	     aso_debug_pub.add('Update_Quote: Before call to update_rows procedures', 1, 'Y');
8126 	 END IF;
8127 
8128       Update_Rows (
8129 			p_qte_header_rec	    => l_qte_header_rec,
8130 			p_Price_Attributes_Tbl  => p_hd_price_attributes_tbl,
8131 			P_Price_Adjustment_Tbl  => l_price_adj_tbl,
8132 			P_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl,
8133 			P_Payment_Tbl		    => l_hd_payment_tbl,
8134 			P_Shipment_Tbl		    => l_hd_shipment_tbl,
8135 			P_Freight_Charge_Tbl    => p_hd_freight_charge_tbl,
8136 			P_Tax_Detail_Tbl	    => l_hd_tax_detail_tbl,
8137                P_hd_Attr_Ext_Tbl	    => P_hd_Attr_Ext_Tbl,
8138                P_sales_credit_tbl      => p_hd_sales_credit_tbl,
8139                P_quote_party_tbl       => p_hd_quote_party_tbl,
8140                P_Qte_Access_Tbl        => P_Qte_Access_Tbl,
8141 			x_qte_header_rec        => x_qte_header_rec,
8142 			x_Price_Attributes_Tbl  => x_hd_price_attributes_tbl,
8143 			x_Price_Adjustment_Tbl  => l_price_adj_tbl_out,
8144 			x_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl_out,
8145 			x_Payment_Tbl		    => x_hd_payment_tbl,
8146 			x_Shipment_Tbl		    => x_hd_shipment_tbl,
8147 			x_Freight_Charge_Tbl    => x_hd_freight_charge_tbl,
8148 			x_Tax_Detail_Tbl        => x_hd_tax_detail_tbl,
8149                x_hd_Attr_Ext_Tbl       => x_hd_Attr_Ext_Tbl,
8150                x_sales_credit_tbl      => x_hd_sales_credit_tbl,
8151                x_quote_party_tbl       => x_hd_quote_party_tbl,
8152                x_Qte_Access_Tbl        => x_Qte_Access_Tbl,
8153 			X_Return_Status 	    => l_return_status,
8154 			X_Msg_Count		    => x_msg_count,
8155 			X_Msg_Data		    => x_msg_data);
8156 
8157       l_price_adj_tbl       :=  l_price_adj_tbl_out;
8158       l_price_adj_attr_tbl  :=  l_price_adj_attr_tbl_out;
8159 
8160       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8161           aso_debug_pub.add('Update_Quote: After call to update_rows: l_return_status: ' || l_return_status, 1, 'Y');
8162           aso_debug_pub.add('Update_Quote: value of ASO_API_ENABLE_SECURITY: ' || FND_PROFILE.value('ASO_API_ENABLE_SECURITY'), 1, 'Y');
8163       END IF;
8164 
8165       -- Add template rows to p_qte_line_tbl and p_qte_line_dtl tbales
8166 
8167       if aso_debug_pub.g_debug_flag = 'Y' then
8168           aso_debug_pub.add('Update_Quote: p_template_tbl.count: ' || p_template_tbl.count, 1, 'Y');
8169       end if;
8170 
8171       if p_template_tbl.count > 0 then
8172 
8173 	    for i in 1..p_template_tbl.count loop
8174 	        l_template_tbl(i) := p_template_tbl(i).template_id;
8175 	    end loop;
8176 
8177 	    if x_qte_header_rec.currency_code is null or x_qte_header_rec.currency_code = fnd_api.g_miss_char then
8178 	        x_qte_header_rec.currency_code := l_currency_code;
8179          end if;
8180 
8181 	    if x_qte_header_rec.price_list_id is null or x_qte_header_rec.price_list_id = fnd_api.g_miss_num then
8182 	        x_qte_header_rec.price_list_id := l_price_list_id;
8183          end if;
8184 
8185          if aso_debug_pub.g_debug_flag = 'Y' then
8186              aso_debug_pub.add('Update_Quote: l_template_tbl.count: ' || l_template_tbl.count, 1, 'Y');
8187              aso_debug_pub.add('Update_Quote: Before call to aso_quote_templ_pvt.add_template_to_quote procedure', 1, 'Y');
8188          end if;
8189 
8190 	    aso_quote_tmpl_pvt.add_template_to_quote(
8191                    p_api_version_number => 1.0,
8192                    p_init_msg_list      => fnd_api.g_false,
8193                    p_commit             => fnd_api.g_false,
8194                    p_validation_level	=> p_validation_level,
8195                    p_update_flag        => 'N',
8196                    p_template_id_tbl    => l_template_tbl,
8197                    p_qte_header_rec     => x_qte_header_rec,
8198                    p_control_rec        => p_control_rec,
8199                    x_qte_line_tbl       => lx_qte_line_tbl,
8200                    x_qte_line_dtl_tbl   => x_qte_line_dtl_tbl,
8201                    x_return_status      => x_return_status,
8202                    x_msg_count          => x_msg_count,
8203                    x_msg_data           => x_msg_data
8204                    );
8205 
8206 
8207          if aso_debug_pub.g_debug_flag = 'Y' then
8208 
8209 	        aso_debug_pub.add('Update_Quote: After call to aso_quote_templ_pvt.add_template_to_quote: x_return_status: '|| x_return_status, 1, 'Y');
8210 	        aso_debug_pub.add('Update_Quote: lx_qte_line_tbl.count:    ' || lx_qte_line_tbl.count, 1, 'Y');
8211 	        aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl.count: ' || x_qte_line_dtl_tbl.count, 1, 'Y');
8212 
8213 	        for i in 1 .. lx_qte_line_tbl.count loop
8214 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').inventory_item_id: '|| lx_qte_line_tbl(i).inventory_item_id, 1, 'N');
8215 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').uom_code:          '|| lx_qte_line_tbl(i).uom_code, 1, 'N');
8216 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').quantity:          '|| lx_qte_line_tbl(i).quantity, 1, 'N');
8217 	        end loop;
8218 
8219              for i in 1 .. x_qte_line_dtl_tbl.count loop
8220 
8221 	             aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl('||i||').qte_line_index:             '|| x_qte_line_dtl_tbl(i).qte_line_index, 1, 'N');
8222 	             aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl('||i||').ref_line_index:             '|| x_qte_line_dtl_tbl(i).ref_line_index, 1, 'N');
8223 	             aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl('||i||').service_ref_qte_line_index: '|| x_qte_line_dtl_tbl(i).service_ref_qte_line_index, 1, 'N');
8224 	             aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl('||i||').service_ref_line_id:        '|| x_qte_line_dtl_tbl(i).service_ref_line_id, 1, 'N');
8225 
8226 		   end loop;
8227 
8228          end if;
8229 
8230 
8231 	    if lx_qte_line_tbl.count > 0 then
8232 
8233 	         l_qte_line_dtl_tbl_out := x_qte_line_dtl_tbl;
8234 
8235               for i in 1 .. lx_qte_line_tbl.count loop
8236 
8237                    l_count  :=  l_qte_line_tbl.count;
8238 
8239                    l_qte_line_tbl(l_count + 1) := lx_qte_line_tbl(i);
8240 
8241                    for j in 1 .. x_qte_line_dtl_tbl.count loop
8242 
8243                         if x_qte_line_dtl_tbl(j).qte_line_index = i then
8244                             l_qte_line_dtl_tbl_out(j).qte_line_index := l_count + 1;
8245                         end if;
8246 
8247                         if x_qte_line_dtl_tbl(j).ref_line_index = i then
8248                             l_qte_line_dtl_tbl_out(j).ref_line_index := l_count + 1;
8249                         end if;
8250 
8251                         if x_qte_line_dtl_tbl(j).service_ref_qte_line_index = i then
8252                             l_qte_line_dtl_tbl_out(j).service_ref_qte_line_index := l_count + 1;
8253                         end if;
8254 
8255                         if x_qte_line_dtl_tbl(j).top_model_line_index = i then
8256                             l_qte_line_dtl_tbl_out(j).top_model_line_index := l_count + 1;
8257                         end if;
8258 
8259                         if x_qte_line_dtl_tbl(j).ato_line_index = i then
8260                             l_qte_line_dtl_tbl_out(j).ato_line_index := l_count + 1;
8261                         end if;
8262 
8263                    end loop;
8264 
8265               end loop;
8266 
8267               if l_qte_line_dtl_tbl_out.count > 0 then
8268 
8269                    for i in 1 .. l_qte_line_dtl_tbl_out.count loop
8270                         lx_qte_line_dtl_tbl(lx_qte_line_dtl_tbl.count + 1) := l_qte_line_dtl_tbl_out(i);
8271                    end loop;
8272 
8273               end if;
8274 
8275          end if; -- if lx_qte_line_tbl.count > 0 then
8276 
8277       end if; --if p_template_tbl.count > 0 then
8278 
8279 
8280 	 if aso_debug_pub.g_debug_flag = 'Y' then
8281 
8282 	     aso_debug_pub.add('Update_Quote: l_qte_line_tbl.count:      ' || l_qte_line_tbl.count, 1, 'Y');
8283 	     aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl.count: ' || lx_qte_line_dtl_tbl.count, 1, 'Y');
8284 
8285 	     for i in 1 .. l_qte_line_tbl.count loop
8286 	          aso_debug_pub.add('Update_Quote: l_qte_line_tbl('||i||').inventory_item_id: '|| l_qte_line_tbl(i).inventory_item_id, 1, 'N');
8287 	          aso_debug_pub.add('Update_Quote: l_qte_line_tbl('||i||').uom_code:          '|| l_qte_line_tbl(i).uom_code, 1, 'N');
8288 	          aso_debug_pub.add('Update_Quote: l_qte_line_tbl('||i||').quantity:          '|| l_qte_line_tbl(i).quantity, 1, 'N');
8289 	     end loop;
8290 
8291           for i in 1 .. lx_qte_line_dtl_tbl.count loop
8292 
8293 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').qte_line_index:             '|| lx_qte_line_dtl_tbl(i).qte_line_index, 1, 'N');
8294 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').ref_line_index:             '|| lx_qte_line_dtl_tbl(i).ref_line_index, 1, 'N');
8295 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').service_ref_qte_line_index: '|| lx_qte_line_dtl_tbl(i).service_ref_qte_line_index, 1, 'N');
8296 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').service_ref_line_id:        '|| lx_qte_line_dtl_tbl(i).service_ref_line_id, 1, 'N');
8297 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').ato_line_index:             '|| lx_qte_line_dtl_tbl(i).ato_line_index, 1, 'N');
8298 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').ato_line_id:                '|| lx_qte_line_dtl_tbl(i).ato_line_id, 1, 'N');
8299 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').top_model_line_index:       '|| lx_qte_line_dtl_tbl(i).top_model_line_index, 1, 'N');
8300 	          aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl('||i||').top_model_line_id:          '|| lx_qte_line_dtl_tbl(i).top_model_line_id, 1, 'N');
8301 
8302 		end loop;
8303 
8304 	 end if;
8305 
8306       -- End of Add template rows
8307                IF aso_debug_pub.g_debug_flag = 'Y' THEN
8308 			 aso_debug_pub.add('Update_Quote: value of p_qte_header_rec.quote_type: ' || p_qte_header_rec.quote_type, 1, 'Y');
8309 			 aso_debug_pub.add('Update_Quote: value of l_qte_header_rec.resource_id: ' || l_qte_header_rec.resource_id, 1, 'Y');
8310 			 aso_debug_pub.add('Update_Quote: value of l_qte_header_rec.resource_grp_id: ' || l_qte_header_rec.resource_grp_id, 1, 'Y');
8311 			END IF;
8312 
8313       IF (NVL(FND_PROFILE.value('ASO_API_ENABLE_SECURITY'),'N') = 'Y' AND NVL(p_qte_header_rec.quote_type, 'X') <> 'T')  THEN
8314 
8315             /* Bug4869321,4600313 */
8316 		  IF  (l_qte_header_rec.resource_id IS NULL OR l_qte_header_rec.resource_id = FND_API.G_MISS_NUM) THEN
8317 
8318                OPEN C_Get_Hdr_Resource_Id(l_qte_header_rec.quote_header_id);
8319                FETCH C_Get_Hdr_Resource_Id INTO l_qte_header_rec.resource_id;
8320                CLOSE C_Get_Hdr_Resource_Id;
8321 
8322            END IF;
8323 
8324            IF l_qte_header_rec.resource_id IS NOT NULL AND l_qte_header_rec.resource_id <> FND_API.G_MISS_NUM THEN
8325 
8326                OPEN C_Check_Store_Status(l_qte_status_id, l_qte_header_rec.quote_status_id);
8327                FETCH C_Check_Store_Status INTO l_store_trans;
8328                CLOSE C_Check_Store_Status;
8329 
8330                lx_qte_header_rec := x_qte_header_rec;
8331 
8332                IF aso_debug_pub.g_debug_flag = 'Y' THEN
8333                    aso_debug_pub.add('Update_Quote - before assign_sales_team l_store_trans: '||l_store_trans, 1, 'Y');
8334                    aso_debug_pub.add('Update_Quote - before assign_sales_team l_sales_team_prof: '||l_sales_team_prof, 1, 'Y');
8335                END IF;
8336 
8337                IF (l_store_trans IS NOT NULL AND l_store_trans = 'Y') AND
8338                   (l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL') THEN
8339 
8340 
8341                     ASO_SALES_TEAM_PVT.Assign_Sales_Team (
8342                                   P_Init_Msg_List    => FND_API.G_FALSE,
8343                                   P_Commit           => FND_API.G_FALSE,
8344                                   p_Qte_Header_Rec   => x_qte_header_rec,
8345                                   P_Operation        => 'UPDATE',
8346                                   x_Qte_Header_Rec   => lx_qte_header_rec,
8347                                   x_return_status    => x_return_status,
8348                                   x_msg_count        => x_msg_count,
8349                                   x_msg_data         => x_msg_data);
8350 
8351                     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8352                         RAISE FND_API.G_EXC_ERROR;
8353                     END IF;
8354 
8355                     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8356                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8357                     END IF;
8358 
8359                ELSE -- store_trans, sales_team_prof
8360 
8361                     l_qte_access_rec                          := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_REC;
8362                     -- l_qte_access_rec.QUOTE_NUMBER          := l_qte_header_rec.quote_number;
8363                     l_qte_access_rec.QUOTE_NUMBER             := l_qte_number;
8364                     l_qte_access_rec.RESOURCE_ID              := l_qte_header_rec.resource_id;
8365                     l_qte_access_rec.RESOURCE_GRP_ID          := l_qte_header_rec.resource_grp_id;
8366                     l_qte_access_rec.CREATED_BY               := G_USER_ID;
8367                     l_qte_access_rec.CREATION_DATE            := SYSDATE;
8368                     l_qte_access_rec.LAST_UPDATED_BY          := G_USER_ID;
8369                     l_qte_access_rec.LAST_UPDATE_LOGIN        := G_LOGIN_ID;
8370                     l_qte_access_rec.LAST_UPDATE_DATE         := SYSDATE;
8371                     l_qte_access_rec.REQUEST_ID               := l_qte_header_rec.request_id;
8372                     l_qte_access_rec.PROGRAM_APPLICATION_ID   := l_qte_header_rec.program_application_id;
8373                     l_qte_access_rec.PROGRAM_ID               := l_qte_header_rec.program_id;
8374                     l_qte_access_rec.PROGRAM_UPDATE_DATE      := l_qte_header_rec.program_update_date;
8375 
8376                     IF (l_store_trans IS NOT NULL AND l_store_trans = 'Y') THEN
8377                          l_qte_access_rec.KEEP_FLAG                := 'N';
8378                     END IF;
8379 
8380                     -- bug 4867690 if primary salesrep is changed then new prim salesrep should have full access
8381                     l_qte_access_rec.UPDATE_ACCESS_FLAG       := 'Y';
8382                     -- bug 4923573
8383                     l_qte_access_rec.batch_price_flag         := FND_API.G_FALSE;
8384                     l_qte_access_tbl(1)                       := l_qte_access_rec;
8385 
8386                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8387 		              aso_debug_pub.add('Update_Quote: before Add_Resource: l_qte_header_rec.resource_id:    ' || l_qte_header_rec.resource_id, 1, 'Y');
8388                         aso_debug_pub.add('Update_Quote: before Add_Resource', 1, 'Y');
8389 		          END IF;
8390 
8391                     ASO_SECURITY_INT.Add_Resource(
8392                                 P_INIT_MSG_LIST              => FND_API.G_FALSE,
8393                                 P_COMMIT                     => FND_API.G_FALSE,
8394                                 P_Qte_Access_tbl             => l_qte_access_tbl,
8395                                 X_Qte_Access_tbl             => l_qte_access_tbl_out,
8396                                 X_RETURN_STATUS              => x_return_status,
8397                                 X_msg_count                  => X_msg_count,
8398                                 X_msg_data                   => X_msg_data);
8399 
8400                     l_qte_access_tbl  :=  l_qte_access_tbl_out;
8401 
8402                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8403 		              aso_debug_pub.add('Update_Quote: after Add_Resource: x_return_status: ' || x_return_status, 1, 'Y');
8404 		          END IF;
8405 
8406                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8407                         RAISE FND_API.G_EXC_ERROR;
8408                     END IF;
8409 
8410                     open  c_last_update_date(x_qte_header_rec.quote_header_id);
8411                     fetch c_last_update_date into x_qte_header_rec.last_update_date;
8412                     close c_last_update_date;
8413 
8414                     l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
8415 
8416                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8417                         aso_debug_pub.add('Update_Quote: After call to Add_Resource.');
8418                         aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
8419                         aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
8420                     END IF;
8421 
8422                END IF; -- steam_prof, store_trans
8423 
8424                OPEN C_Get_SCredit_Exists(x_qte_header_rec.quote_header_id);
8425                FETCH C_Get_SCredit_Exists INTO l_scredit_exists;
8426                CLOSE C_Get_SCredit_Exists;
8427 
8428        aso_debug_pub.add('l_scredit_exists: '||l_scredit_exists);
8429 
8430          IF x_hd_sales_credit_tbl.count < 1 AND (l_scredit_exists = 'N' OR l_scredit_exists IS NULL) THEN
8431 
8432           OPEN C_Get_Quota_Credit_Type;
8433           FETCH C_Get_Quota_Credit_Type INTO l_quota_id;
8434           CLOSE C_Get_Quota_Credit_Type;
8435 
8436        aso_debug_pub.add('l_quota_id: '||l_quota_id);
8437        x_hd_sales_credit_tbl(1) := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_REC;
8438        aso_debug_pub.add('after assign x_hd_sales_credit_tbl.count: '||x_hd_sales_credit_tbl.count);
8439 
8440           ASO_SALES_CREDITS_PKG.Insert_Row(
8441           p_CREATION_DATE  => SYSDATE,
8442           p_CREATED_BY  => G_USER_ID,
8443           p_LAST_UPDATED_BY  => G_USER_ID,
8444           p_LAST_UPDATE_DATE  => SYSDATE,
8445           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
8446           p_REQUEST_ID  => FND_API.G_MISS_NUM,
8447           p_PROGRAM_APPLICATION_ID  => FND_API.G_MISS_NUM,
8448           p_PROGRAM_ID  => FND_API.G_MISS_NUM,
8449           p_PROGRAM_UPDATE_DATE  => FND_API.G_MISS_DATE,
8450           px_SALES_CREDIT_ID  => x_hd_sales_credit_tbl(1).Sales_Credit_Id,
8451           p_QUOTE_HEADER_ID  => l_qte_header_rec.QUOTE_HEADER_ID,
8452           p_QUOTE_LINE_ID  => FND_API.G_MISS_NUM,
8453           p_PERCENT  => 100,
8454           p_RESOURCE_ID  => l_qte_header_rec.RESOURCE_ID,
8455           p_RESOURCE_GROUP_ID  => l_qte_header_rec.RESOURCE_GRP_ID,
8456           p_EMPLOYEE_PERSON_ID  => FND_API.G_MISS_NUM,
8457           p_SALES_CREDIT_TYPE_ID  => l_quota_id,
8458           p_ATTRIBUTE_CATEGORY_CODE  => FND_API.G_MISS_CHAR,
8459           p_ATTRIBUTE1  => FND_API.G_MISS_CHAR,
8460           p_ATTRIBUTE2  => FND_API.G_MISS_CHAR,
8461           p_ATTRIBUTE3  => FND_API.G_MISS_CHAR,
8462           p_ATTRIBUTE4  => FND_API.G_MISS_CHAR,
8463           p_ATTRIBUTE5  => FND_API.G_MISS_CHAR,
8464           p_ATTRIBUTE6  => FND_API.G_MISS_CHAR,
8465           p_ATTRIBUTE7  => FND_API.G_MISS_CHAR,
8466           p_ATTRIBUTE8  => FND_API.G_MISS_CHAR,
8467           p_ATTRIBUTE9  => FND_API.G_MISS_CHAR,
8468           p_ATTRIBUTE10  => FND_API.G_MISS_CHAR,
8469           p_ATTRIBUTE11  => FND_API.G_MISS_CHAR,
8470           p_ATTRIBUTE12  => FND_API.G_MISS_CHAR,
8471           p_ATTRIBUTE13  => FND_API.G_MISS_CHAR,
8472           p_ATTRIBUTE14  => FND_API.G_MISS_CHAR,
8473           p_ATTRIBUTE15  => FND_API.G_MISS_CHAR,
8474           p_ATTRIBUTE16  => FND_API.G_MISS_CHAR,
8475           p_ATTRIBUTE17  => FND_API.G_MISS_CHAR,
8476           p_ATTRIBUTE18  => FND_API.G_MISS_CHAR,
8477           p_ATTRIBUTE19  => FND_API.G_MISS_CHAR,
8478           p_ATTRIBUTE20  => FND_API.G_MISS_CHAR,
8479           p_SYSTEM_ASSIGNED_FLAG  => 'N',
8480           p_CREDIT_RULE_ID  => FND_API.G_MISS_NUM,
8481           p_OBJECT_VERSION_NUMBER  => FND_API.G_MISS_NUM);
8482 
8483        aso_debug_pub.add('After Insert SCred ');
8484          END IF; -- sales_cred_tbl.count
8485 
8486         END IF; -- resource_id
8487 
8488     END IF;
8489 
8490     -- end security changes
8491 
8492     --  Related Quote Objects Changes
8493       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8494           aso_debug_pub.add('Before processing  object relationship ', 1, 'Y');
8495       END IF;
8496 
8497       IF P_Related_Obj_Tbl.count > 0 THEN
8498 
8499         For i in 1..P_Related_Obj_Tbl.count LOOP
8500 
8501           l_related_obj_rec := P_Related_Obj_Tbl(i);
8502 
8503 
8504           -- logic to populate the operation code
8505           Open c_obj_id(l_qte_header_rec.quote_header_id);
8506           Fetch c_obj_id INTO l_obj_id;
8507           IF c_obj_id%NOTFOUND THEN
8508             IF aso_debug_pub.g_debug_flag = 'Y' THEN
8509                aso_debug_pub.add(' Setting the operation code for rel obj tbl ', 1, 'Y');
8510                aso_debug_pub.add(' Obj id in rel obj rec is : '|| to_char(l_related_obj_rec.object_id), 1, 'Y');
8511             END IF;
8512             IF l_related_obj_rec.object_id IS NOT NULL THEN
8513               l_related_obj_rec.operation_code := 'CREATE';
8514             END IF;
8515 
8516 
8517            ELSE
8518              IF ((l_obj_id IS NOT NULL) AND (l_obj_id <> l_related_obj_rec.object_id)
8519 		     AND (l_related_obj_rec.object_id IS NOT NULL)  ) THEN
8520                 l_related_obj_rec.operation_code := 'UPDATE';
8521              END IF;
8522 
8523              IF (( l_obj_id is NOT NULL) AND (l_related_obj_rec.object_id IS NULL) ) THEN
8524                 l_related_obj_rec.operation_code := 'DELETE';
8525              END IF;
8526 
8527              IF ( l_obj_id = l_related_obj_rec.object_id) then
8528                 l_related_obj_rec.operation_code := null;
8529              END IF;
8530 
8531           END IF;
8532           Close c_obj_id;
8533 
8534             IF aso_debug_pub.g_debug_flag = 'Y' THEN
8535                aso_debug_pub.add(' the operation code for rel obj tbl '||l_related_obj_rec.operation_code, 1, 'Y');
8536             END IF;
8537 
8538 
8539 
8540          IF l_related_obj_rec.operation_code = 'CREATE' THEN
8541 
8542           l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
8543           x_related_obj_rec := l_related_obj_rec;
8544 
8545 
8546             ASO_RLTSHIP_PUB.Create_Object_Relationship(
8547               P_Api_Version_Number         => 1.0,
8548               P_Init_Msg_List              => FND_API.G_FALSE,
8549               P_Commit                     => FND_API.G_FALSE,
8550               p_validation_level           => p_validation_level,
8551               P_RELATED_OBJ_Rec            => l_related_obj_rec,
8552               X_related_object_id          => x_related_obj_rec.related_object_id,
8553               X_Return_Status              => X_Return_Status,
8554               X_Msg_Count                  => X_Msg_Count,
8555               X_Msg_Data                   => X_Msg_Data);
8556 
8557               X_Related_Obj_Tbl(i) := x_related_obj_rec;
8558 
8559               IF aso_debug_pub.g_debug_flag = 'Y' THEN
8560                  aso_debug_pub.add('Update_Quote: After call to Create_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
8561               END IF;
8562 
8563               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8564                     RAISE FND_API.G_EXC_ERROR;
8565               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8566                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8567               END IF;
8568 
8569         ELSIF l_related_obj_rec.operation_code = 'UPDATE' THEN
8570 
8571           IF ((l_related_obj_rec.related_object_id = NULL OR l_related_obj_rec.related_object_id = FND_API.G_MISS_NUM)
8572 		   OR (l_related_obj_rec.last_update_date = null or l_related_obj_rec.last_update_date = FND_API.G_MISS_DATE))THEN
8573 		   Open c_related_obj_id(l_qte_header_rec.quote_header_id);
8574 		   Fetch c_related_obj_id INTO l_related_obj_rec.related_object_id,l_related_obj_rec.last_update_date;
8575 		   Close c_related_obj_id;
8576 	     END IF;
8577 		IF (l_related_obj_rec.quote_object_id = null or l_related_obj_rec.quote_object_id = FND_API.G_MISS_NUM) THEN
8578              l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
8579 		END IF;
8580             ASO_RLTSHIP_PUB.Update_Object_Relationship(
8581               P_Api_Version_Number         => 1.0,
8582               P_Init_Msg_List              => FND_API.G_FALSE,
8583               P_Commit                     => FND_API.G_FALSE,
8584               p_validation_level           => p_validation_level,
8585               P_RELATED_OBJ_Rec            => l_related_obj_rec,
8586               X_Return_Status              => X_Return_Status,
8587               X_Msg_Count                  => X_Msg_Count,
8588               X_Msg_Data                   => X_Msg_Data);
8589 
8590               IF aso_debug_pub.g_debug_flag = 'Y' THEN
8591                  aso_debug_pub.add('Update_Quote: After call to Update_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
8592               END IF;
8593 
8594               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8595                     RAISE FND_API.G_EXC_ERROR;
8596               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8597                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8598               END IF;
8599 
8600         ELSIF l_related_obj_rec.operation_code = 'DELETE' THEN
8601 
8602           IF l_related_obj_rec.related_object_id = NULL OR l_related_obj_rec.related_object_id = FND_API.G_MISS_NUM THEN
8603              Open c_related_obj_id(l_qte_header_rec.quote_header_id);
8604              Fetch c_related_obj_id INTO l_related_obj_rec.related_object_id,l_related_obj_rec.last_update_date;
8605              Close c_related_obj_id;
8606           END IF;
8607 		l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
8608 
8609             ASO_RLTSHIP_PUB.Delete_Object_Relationship(
8610               P_Api_Version_Number         => 1.0,
8611               P_Init_Msg_List              => FND_API.G_FALSE,
8612               P_Commit                     => FND_API.G_FALSE,
8613               p_validation_level           => p_validation_level,
8614               P_RELATED_OBJ_Rec            => l_related_obj_rec,
8615               X_Return_Status              => X_Return_Status,
8616               X_Msg_Count                  => X_Msg_Count,
8617               X_Msg_Data                   => X_Msg_Data);
8618 
8619               IF aso_debug_pub.g_debug_flag = 'Y' THEN
8620                  aso_debug_pub.add('Update_Quote: After call to Delete_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
8621               END IF;
8622 
8623               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8624                     RAISE FND_API.G_EXC_ERROR;
8625               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8626                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8627               END IF;
8628 
8629         END IF;
8630        END LOOP;
8631 
8632 
8633       END IF;  -- end if for P_Related_Obj_Tbl.count
8634 
8635 
8636     -- end  Related Quote Object Changes
8637 
8638 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8639 		aso_debug_pub.add('before validate quote percent: validation level: '||P_validation_level, 1, 'Y');
8640 		END IF;
8641 
8642 
8643 -- sales credits
8644 
8645              IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
8646                  IF x_hd_sales_credit_tbl.count > 0 THEN
8647                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8648                         aso_debug_pub.add('Setting the qte hdr id in x_hd_sales_credit_tbl to : '|| x_qte_header_rec.QUOTE_HEADER_ID, 1, 'Y');
8649                     END IF;
8650 
8651                     x_hd_sales_credit_tbl(1).quote_header_id := x_qte_header_rec.QUOTE_HEADER_ID;
8652 
8653                      ASO_VALIDATE_PVT.Validate_Quote_Percent(
8654                          p_init_msg_list             => FND_API.G_FALSE,
8655                          p_sales_credit_tbl          => x_hd_sales_credit_tbl,
8656                          x_return_status             => x_return_status,
8657                          x_msg_count                 => x_msg_count,
8658                          x_msg_data                  => x_msg_data
8659                      );
8660                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8661                          RAISE FND_API.G_EXC_ERROR;
8662                      END IF;
8663                  END IF;
8664              END IF;
8665 
8666 -- end sales credits
8667 
8668 
8669       l_index := X_Price_Adjustment_tbl.count+1;
8670       FOR i IN 1.. l_Price_Adj_tbl.count LOOP
8671 	  x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(i);
8672 	  l_index := l_index+1;
8673       END LOOP;
8674       FOR j IN 1..l_prc_index_link.count LOOP
8675 	  l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
8676 			:= l_price_adj_tbl(j).price_adjustment_id;
8677       END LOOP;
8678       l_index := X_Price_Adj_Attr_tbl.count+1;
8679       FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
8680 	  x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
8681 	  l_index := l_index+1;
8682       END LOOP;
8683 
8684 
8685       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8686 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8687 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8688 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
8689 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATE ROW', TRUE);
8690 	      FND_MSG_PUB.ADD;
8691 	  END IF;
8692 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8693       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
8694 	  x_return_status := FND_API.G_RET_STS_ERROR;
8695            RAISE FND_API.G_EXC_ERROR;
8696       END IF;
8697 
8698   -- Update Quote Lines
8699 
8700   FOR i IN 1 .. l_qte_line_tbl.count LOOP
8701 
8702 
8703      l_qte_line_rec := l_qte_line_tbl(i);
8704 
8705 
8706  -- New code for Batch Validation 05/24/2002
8707 
8708  IF aso_debug_pub.g_debug_flag = 'Y' THEN
8709  aso_debug_pub.add('UPDATE_QUOTE: l_qte_header_rec.Call_batch_validation_flag: '|| l_qte_header_rec.Call_batch_validation_flag,1,'N');
8710  END IF;
8711 
8712  IF l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE THEN
8713 
8714    IF l_qte_line_rec.operation_code IN ('UPDATE','DELETE') THEN
8715 
8716       OPEN c_qte_line(l_qte_line_rec.quote_line_id);
8717       FETCH c_qte_line into l_qln_id;
8718       IF c_qte_line%FOUND THEN
8719 
8720         l_batch_qte_line_rec := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
8721         l_batch_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(l_qte_line_rec.quote_line_id);
8722 
8723         l_add_line       := FND_API.G_FALSE;
8724         l_add_model_line := FND_API.G_FALSE;
8725 
8726         IF l_batch_qte_line_rec.item_type_code IN ('MDL','CFG') THEN
8727 
8728            l_batch_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
8729            l_batch_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_rec.quote_line_id);
8730            IF l_batch_qte_line_dtl_tbl.count > 0 THEN
8731                IF l_batch_qte_line_dtl_tbl(1).config_header_id IS NOT NULL AND
8732                            l_batch_qte_line_dtl_tbl(1).config_revision_num IS NOT NULL THEN
8733 
8734                    --l_add_line := FND_API.G_TRUE;
8735 
8736                    IF l_batch_qte_line_rec.item_type_code = 'MDL' THEN
8737                        -- If user wants to delete the model line itself then no need to call batch validation
8738                        -- becuase deletion model line will delete the all other configuration lines and
8739                        -- the configuration from CZ
8740                        IF (l_qte_line_rec.operation_code = 'UPDATE') AND
8741 					 (l_qte_line_rec.quantity <> FND_API.G_MISS_NUM) AND
8742                           (l_batch_qte_line_rec.quantity <> l_qte_line_rec.quantity) THEN
8743 
8744                            IF l_search_qte_line_tbl.EXISTS(l_qte_line_rec.quote_line_id) THEN
8745                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
8746 						 aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_search_qte_line_tbl, no need to add again',1,'N');
8747 						 END IF;
8748                                l_add_line       := FND_API.G_TRUE;
8749                            ELSE
8750                                --Add root model line of this configured line to the pl/sql table
8751                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
8752 						 aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist in the l_search_qte_line_tbl, need to add into it',1,'N');
8753 						 END IF;
8754                                l_search_qte_line_tbl(l_qte_line_rec.quote_line_id).quote_line_id
8755                                                                := l_qte_line_rec.quote_line_id;
8756                                l_add_line       := FND_API.G_TRUE;
8757                                l_add_model_line := FND_API.G_TRUE;
8758                                l_model_line_id  := l_qte_line_rec.quote_line_id;
8759                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
8760 						 aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist: l_model_line_id: '|| l_model_line_id,1,'N');
8761 						 END IF;
8762 
8763                            END IF;
8764 
8765                        ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
8766 
8767                             l_delete_qte_line_tbl(l_qte_line_rec.quote_line_id).quote_line_id
8768                                                     := l_qte_line_rec.quote_line_id;
8769                        END IF;
8770 
8771                    ELSE -- Children line l_batch_qte_line_rec.item_type_code = 'CFG'
8772 
8773 			        if l_qte_line_rec.operation_code = 'DELETE'  and l_batch_qte_line_rec.config_model_type = 'N'
8774 				      and  l_batch_qte_line_dtl_tbl(1).config_delta = 0 THEN
8775 
8776                            l_deactivate_counter := l_deactivate_counter + 1;
8777 				       l_deactivate_quote_line_tbl(l_deactivate_counter).quote_line_id   := l_qte_line_rec.quote_line_id;
8778 				       l_deactivate_quote_line_tbl(l_deactivate_counter).quote_header_id := l_batch_qte_line_rec.quote_header_id;
8779 
8780                         else
8781 
8782                             -- Get the root model line for this children line
8783 
8784                             OPEN c_model_line( l_batch_qte_line_dtl_tbl(1).config_header_id,
8785                                                l_batch_qte_line_dtl_tbl(1).config_revision_num );
8786                             FETCH c_model_line INTO l_model_line_id;
8787 
8788                             IF aso_debug_pub.g_debug_flag = 'Y' THEN
8789 				             aso_debug_pub.add('UPDATE_QUOTE: c_model_line: l_model_line_id: '||l_model_line_id,1,'N');
8790 				        END IF;
8791 
8792                             IF c_model_line%FOUND AND l_model_line_id is NOT NULL THEN
8793 
8794                                 IF (l_qte_line_rec.operation_code = 'UPDATE') AND
8795                                    (l_qte_line_rec.quantity <> FND_API.G_MISS_NUM) AND
8796                                    (l_batch_qte_line_rec.quantity <> l_qte_line_rec.quantity) THEN
8797 
8798                                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8799 							     aso_debug_pub.add('UPDATE_QUOTE: Children line having operation_code = UPDATE',1,'N');
8800 							END IF;
8801                                    l_add_line := FND_API.G_TRUE;
8802                                    IF l_search_qte_line_tbl.EXISTS(l_model_line_id) THEN
8803                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8804 							    aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_model_qte_line_tbl, no need to add again',1,'N');
8805 							    END IF;
8806                                    ELSE
8807                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8808 							    aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist in the l_model_qte_line_tbl, need to add again',1,'N');
8809 							    END IF;
8810                                        --Add root model line of this configured line to the pl/sql table
8811                                        l_add_model_line := FND_API.G_TRUE;
8812                                        l_search_qte_line_tbl(l_model_line_id).quote_line_id := l_model_line_id;
8813                                    END IF;
8814 
8815                                 ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
8816 
8817                                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8818 							aso_debug_pub.add('UPDATE_QUOTE: Children line having operation_code = DELETE',1,'N');
8819 							END IF;
8820 
8821                                    l_add_line := FND_API.G_TRUE;
8822 
8823                                    IF l_search_qte_line_tbl.EXISTS(l_model_line_id) THEN
8824                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8825 							    aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_model_qte_line_tbl, no need to add again',1,'N');
8826 							    END IF;
8827                                    ELSE
8828                                        --Add root model line of this configured line to the pl/sql table
8829                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8830 							    aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist in the l_model_qte_line_tbl, need to add into it',1,'N');
8831 							    END IF;
8832                                        l_add_model_line := FND_API.G_TRUE;
8833                                        l_search_qte_line_tbl(l_model_line_id).quote_line_id := l_model_line_id;
8834                                    END IF;
8835 
8836                                 END IF;
8837 
8838                             ELSE
8839                                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
8840 					           aso_debug_pub.add('UPDATE_QUOTE: c_model_line: Model line does not exist for this config line',1,'N');
8841 					       END IF;
8842                             END IF; --c_model_line%FOUND AND l_model_line_id is NOT NULL
8843                             CLOSE c_model_line;
8844 
8845 				    end if; --l_qte_line_rec.operation_code = 'DELETE' and l_batch_qte_line_rec.config_model_type = 'N' and l_batch_qte_line_dtl_tbl(1).config_delta = 0 THEN
8846 
8847                    END IF; --l_batch_qte_line_rec.item_type_code = 'MDL'
8848 
8849                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8850 			    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_model_qte_line_tbl',1,'N');
8851                    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_model_qte_line_tbl: l_add_model_line: '||l_add_model_line,1,'N');
8852 			    END IF;
8853 
8854                    IF l_add_model_line = FND_API.G_TRUE THEN
8855 
8856                        l_model_index := l_model_index + 1;
8857                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8858 				   aso_debug_pub.add('UPDATE_QUOTE: Inside IF l_add_model_line = FND_API.G_TRUE: l_model_index: '||l_model_index,1,'N');
8859 				   END IF;
8860                        l_model_qte_line_tbl(l_model_index).quote_line_id := l_model_line_id;
8861                        l_model_qte_line_dtl_tbl(l_model_index).config_header_id
8862                                                          := l_batch_qte_line_dtl_tbl(1).config_header_id;
8863                        l_model_qte_line_dtl_tbl(l_model_index).config_revision_num
8864                                                          := l_batch_qte_line_dtl_tbl(1).config_revision_num;
8865                    END IF;
8866 
8867                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8868 			    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_p_batch_qte_line_tbl',1,'N');
8869                    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_p_batch_qte_line_tbl: l_add_line: '||l_add_line,1,'N');
8870 			    END IF;
8871                    IF l_add_line = FND_API.G_TRUE THEN
8872                        l_batch_index := l_batch_index + 1;
8873                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8874 				   aso_debug_pub.add('UPDATE_QUOTE: Inside IF l_add_line = FND_API.G_TRUE: l_batch_index: '||l_batch_index,1,'N');
8875 				   END IF;
8876                        l_p_batch_qte_line_tbl(l_batch_index)                := l_batch_qte_line_rec;
8877                        l_p_batch_qte_line_tbl(l_batch_index).operation_code := l_qte_line_rec.operation_code;
8878                        l_p_batch_qte_line_tbl(l_batch_index).quantity       := l_qte_line_rec.quantity;
8879                        l_p_batch_qte_line_dtl_tbl(l_batch_index)            := l_batch_qte_line_dtl_tbl(1);
8880                    END IF;
8881 
8882                END IF; --config_header_id and config_revision_num IS NOT NULL
8883 
8884            END IF;--l_batch_qte_line_dtl_tbl.count > 0
8885 
8886         END IF; --l_batch_qte_line_rec.item_type_code IN ('MDL','CFG')
8887 
8888       END IF; --c_qte_line%FOUND
8889       CLOSE c_qte_line;
8890 
8891     END IF;--l_qte_line_rec.operation_code IN ('UPDATE','DELETE')
8892 
8893 END IF; --l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE
8894 
8895 
8896 --End New code for Batch Validation 05/24/2002
8897 
8898 
8899 	IF l_qte_line_rec.operation_code = 'CREATE' THEN
8900 	  -- line detail info
8901 	  l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
8902 	  l_index := 1;
8903 	  FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
8904 	    IF lx_qte_line_dtl_tbl(j).qte_line_index = i THEN
8905 	      l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
8906 	      l_index := l_index + 1;
8907 	    END IF;
8908 	  END LOOP;
8909 
8910 	  -- line attributes ext
8911 	  l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
8912 	  l_index := 1;
8913 	  FOR j IN 1..p_line_attr_ext_tbl.count LOOP
8914 	      IF p_line_attr_ext_tbl(j).qte_line_index = i THEN
8915 		  l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
8916 		  l_index := l_index + 1;
8917 	      END IF;
8918 	  END LOOP;
8919 
8920 	  -- price attr info
8921 	  l_index := 1;
8922 	  l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
8923 	  FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
8924 	    IF p_ln_price_attributes_tbl(j).qte_line_index = i THEN
8925 	      l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
8926 	      l_index := l_index + 1;
8927 	    END IF;
8928 	  END LOOP;
8929 
8930 	  -- modifier info
8931 	  l_price_adj_tbl := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
8932 	  l_prc_index_link := G_Miss_Link_Tbl;
8933 	  l_prc_index_link_rev := G_Miss_Link_Tbl;
8934 	  l_index := 1;
8935 	  FOR j IN 1..p_price_adjustment_tbl.count LOOP
8936 	      IF p_price_adjustment_tbl(j).qte_line_index = i THEN
8937 		  l_price_adj_tbl(l_index) := p_price_adjustment_tbl(j);
8938 		  l_prc_index_link(l_index) := j;
8939 		  l_prc_index_link_rev(j) := l_index;
8940 		  l_index := l_index + 1;
8941 	      END IF;
8942 	  END LOOP;
8943        -- BC4J Fix
8944 	  l_price_adj_attr_tbl:= ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
8945 	  l_index := 1;
8946 	  FOR j IN 1..p_price_adj_attr_tbl.count LOOP
8947 	      IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM
8948 		AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
8949 		  l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
8950 		  l_price_adj_attr_tbl(l_index).price_adj_index :=
8951 		  l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
8952 		  l_index := l_index + 1;
8953 	      END IF;
8954 	  END LOOP;
8955 
8956 	  -- payment info
8957 	  l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
8958 	  l_index := 1;
8959 	  FOR j IN 1..p_ln_payment_tbl.count LOOP
8960 	    IF p_ln_payment_tbl(j).qte_line_index = i THEN
8961 	      l_payment_tbl(l_index) := p_ln_payment_tbl(j);
8962 	      l_index := l_index +1;
8963 	    END IF;
8964 	  END LOOP;
8965 	  -- only when payment_option is SPLIT, there can be more than one record
8966 	  -- for line payment.
8967 	  IF l_index > 2 AND l_payment_tbl(1).payment_option <> 'SPLIT' THEN
8968 	    RAISE FND_API.G_EXC_ERROR;
8969 	  END IF;
8970 
8971 
8972 	  -- shipment info
8973 	  l_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
8974 	  l_shp_index_link := G_Miss_Link_Tbl;
8975 	  l_index := 1;
8976 	  FOR j IN 1..p_ln_shipment_tbl.count LOOP
8977 	      IF p_ln_shipment_tbl(j).qte_line_index = i THEN
8978 		  l_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
8979 		  l_shp_index_link(j) := l_index;
8980           	  l_index := l_index+1;
8981 	      END IF;
8982 	  END LOOP;
8983 
8984 
8985 	  -- freight charge info
8986 	  l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
8987 	  l_index := 1;
8988 	  FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
8989 	      IF p_ln_freight_charge_tbl(j).qte_line_index = i THEN
8990 		  l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
8991 		  IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM
8992 			AND l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
8993 		      l_freight_charge_tbl(l_index).shipment_index :=
8994 				l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
8995 		  ELSE
8996 		      null;
8997 		  END IF;
8998 		  l_index := l_index+1;
8999 	      END IF;
9000 	  END LOOP;
9001 
9002 
9003 	  -- tax info
9004 	  l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
9005 	  l_index := 1;
9006 	  FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
9007 	      IF p_ln_tax_detail_tbl(j).qte_line_index = i THEN
9008 		  l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
9009 		      IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9010 			l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index) THEN
9011 			  l_tax_detail_tbl(l_index).shipment_index :=
9012 				l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
9013 		      ELSE
9014 			  null;
9015 		      END IF;
9016 		  l_index := l_index+1;
9017 	      END IF;
9018 	  END LOOP;
9019 l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
9020 
9021 	  l_index := 1;
9022 	  FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
9023       IF p_ln_sales_credit_tbl(j).qte_line_index = i THEN
9024         l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
9025 		  l_index := l_index +1;
9026 	  END IF;
9027 	  END LOOP;
9028 
9029 
9030 l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
9031 
9032 	  l_index := 1;
9033 	  FOR j IN 1..p_ln_quote_party_tbl.count LOOP
9034       IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
9035         l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
9036          IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9037             p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
9038 		   l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
9039 	       l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
9040          END IF;
9041 		  l_index := l_index +1;
9042 	  END IF;
9043 	  END LOOP;
9044 
9045 -- EDU
9046 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9047 aso_debug_pub.add('Update_Quote (create_quote_lines) - before Validate_Commitment ', 1, 'N');
9048 END IF;
9049      ASO_VALIDATE_PVT.Validate_Commitment(
9050           P_Init_Msg_List          => FND_API.G_FALSE,
9051           P_Qte_Header_Rec         => x_qte_header_rec,
9052           P_Qte_Line_Rec           => l_qte_line_rec,
9053           X_Return_Status          => l_return_status,
9054           X_Msg_Count              => x_msg_count,
9055           X_Msg_Data               => x_msg_data);
9056 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9057 aso_debug_pub.add('Update_Quote - after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
9058 END IF;
9059      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9060           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9061           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9062      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
9063           x_return_status := FND_API.G_RET_STS_ERROR;
9064           RAISE FND_API.G_EXC_ERROR;
9065      END IF;
9066 -- EDU
9067 
9068 
9069 	   open  c_last_update_date(x_qte_header_rec.quote_header_id);
9070 	   fetch c_last_update_date into l_control_rec.last_update_date;
9071 	   close c_last_update_date;
9072 
9073 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
9074 		  aso_debug_pub.add('Update_Quote: Before call to Create_Quote_Lines');
9075             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9076         END IF;
9077 
9078 	  -- create quote line
9079       ASO_QUOTE_LINES_PVT.Create_Quote_Lines (
9080 			P_Api_Version_Number	=> 1.0,
9081 			p_validation_level	=> p_validation_level,
9082 			p_control_rec		=> l_control_rec,
9083 			p_update_header_flag	=> FND_API.G_FALSE,
9084                   p_qte_header_rec        =>  l_qte_header_rec,
9085 			P_qte_Line_Rec		=> l_qte_line_rec,
9086 			P_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl,
9087 			P_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl,
9088 			P_price_attributes_tbl	=> l_price_attr_tbl,
9089 			P_Price_Adj_Tbl		=> l_price_adj_tbl,
9090 			P_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl,
9091 			P_Payment_Tbl		=> l_payment_tbl,
9092 			P_Shipment_Tbl		=> l_shipment_tbl,
9093 			P_Freight_Charge_Tbl	=> l_freight_charge_tbl,
9094 			P_Tax_Detail_Tbl	=> l_tax_detail_tbl,
9095             P_quote_party_tbl       => l_quote_party_tbl ,
9096             P_sales_Credit_tbl      => l_sales_Credit_tbl ,
9097 			x_qte_Line_Rec		=> l_qte_line_rec_out,
9098 			x_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl_out,
9099 			x_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl_out,
9100 			x_price_attributes_tbl	=> l_price_attr_tbl_out,
9101 			x_Price_Adj_Tbl		=> l_price_adj_tbl_out,
9102 			x_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl_out,
9103 			x_Payment_Tbl		=> l_payment_tbl_out,
9104 			x_Shipment_Tbl		=> l_shipment_tbl_out,
9105 			x_Freight_Charge_Tbl	=> l_freight_charge_tbl_out,
9106 			x_Tax_Detail_Tbl	=> l_tax_detail_tbl_out,
9107                X_quote_party_tbl       => l_quote_party_tbl_out ,
9108                X_sales_Credit_tbl      => l_sales_Credit_tbl_out ,
9109 			X_Return_Status 	=> l_return_status,
9110 			X_Msg_Count		=> x_msg_count,
9111 			X_Msg_Data		=> x_msg_data);
9112 
9113         l_qte_line_rec        :=  l_qte_line_rec_out;
9114         l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
9115         l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
9116         l_price_attr_tbl      :=  l_price_attr_tbl_out;
9117         l_price_adj_tbl       :=  l_price_adj_tbl_out;
9118         l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
9119         l_payment_tbl         :=  l_payment_tbl_out;
9120         l_shipment_tbl        :=  l_shipment_tbl_out;
9121         l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
9122         l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
9123         l_quote_party_tbl     :=  l_quote_party_tbl_out;
9124         l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
9125 
9126 
9127 
9128 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
9129 		   aso_debug_pub.add('Update_Quote - after create_quote_lines return_status: '||l_return_status, 1, 'Y');
9130 		   END IF;
9131 
9132                 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9133 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9134 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9135 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
9136 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
9137 	      FND_MSG_PUB.ADD;
9138 	  END IF;
9139 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9140 
9141       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9142 	    x_return_status := FND_API.G_RET_STS_ERROR;
9143          RAISE FND_API.G_EXC_ERROR;
9144       END IF;
9145 
9146 
9147         open  c_last_update_date(x_qte_header_rec.quote_header_id);
9148         fetch c_last_update_date into x_qte_header_rec.last_update_date;
9149         close c_last_update_date;
9150 
9151         l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
9152 
9153         IF aso_debug_pub.g_debug_flag = 'Y' THEN
9154             aso_debug_pub.add('Update_Quote: After call to Create_Quote_Lines');
9155             aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
9156             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9157         END IF;
9158 
9159 
9160           For j IN 1..lx_qte_line_dtl_tbl.count LOOP
9161              IF lx_qte_line_dtl_tbl(j).SERVICE_REF_QTE_LINE_INDEX = i THEN
9162                 lx_qte_line_dtl_tbl(j).SERVICE_REF_LINE_ID := l_qte_line_rec.quote_line_id;
9163              END IF;
9164           END LOOP;
9165 
9166           -- For bundle configurator Changes Added 02/18/02
9167           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
9168               IF lx_qte_line_dtl_tbl(j).REF_LINE_INDEX = i THEN
9169                   lx_qte_line_dtl_tbl(j).REF_LINE_ID := l_qte_line_rec.quote_line_id;
9170               END IF;
9171           END LOOP;
9172           -- End  bundle configurator Changes 02/18/02
9173 
9174 
9175  X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
9176 	  l_index := X_Qte_Line_Dtl_Tbl.count+1;
9177 	  FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
9178 	      x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
9179 	      l_index := l_index+1;
9180 	  END LOOP;
9181 	  l_index := X_Line_Attr_Ext_Tbl.count+1;
9182 	  FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
9183 	      x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
9184 	      l_index := l_index+1;
9185 	  END LOOP;
9186 	  l_index := X_ln_Price_Attributes_Tbl.count+1;
9187 	  FOR j IN 1.. l_Price_Attr_tbl.count LOOP
9188 	      x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
9189 	      l_index := l_index+1;
9190 	  END LOOP;
9191 	  l_index := X_Price_Adjustment_tbl.count+1;
9192 	  FOR j IN 1.. l_Price_Adj_tbl.count LOOP
9193 	      x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
9194 	      l_index := l_index+1;
9195 	  END LOOP;
9196 	  l_index := X_Price_Adj_Attr_tbl.count+1;
9197 	  FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
9198 	      x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
9199 	      l_index := l_index+1;
9200 	  END LOOP;
9201 	  l_index := X_LN_payment_Tbl.count+1;
9202 	  FOR j IN 1.. l_payment_tbl.count LOOP
9203 	      x_ln_payment_tbl(l_index) := l_payment_tbl(j);
9204 	      l_index := l_index+1;
9205 	  END LOOP;
9206 	  l_index := X_LN_shipment_Tbl.count+1;
9207 	  FOR j IN 1.. l_shipment_tbl.count LOOP
9208 	      x_ln_shipment_tbl(l_index) := l_shipment_tbl(j);
9209 	      l_index := l_index+1;
9210 	  END LOOP;
9211 	  l_index := X_LN_freight_charge_Tbl.count+1;
9212 	  FOR j IN 1.. l_freight_charge_tbl.count LOOP
9213 	      x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
9214 	      l_index := l_index+1;
9215 	  END LOOP;
9216 	  l_index := X_LN_tax_detail_Tbl.count+1;
9217 	  FOR j IN 1.. l_tax_detail_tbl.count LOOP
9218 	      x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
9219 	      l_index := l_index+1;
9220 	  END LOOP;
9221 
9222       l_index := X_ln_sales_Credit_Tbl.count+1;
9223 	  FOR j IN 1.. l_sales_Credit_tbl.count LOOP
9224 	      x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
9225 	      l_index := l_index+1;
9226 	  END LOOP;
9227           l_index := X_ln_quote_party_Tbl.count+1;
9228 	  FOR j IN 1.. l_quote_party_tbl.count LOOP
9229 	      x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
9230 	      l_index := l_index+1;
9231 	  END LOOP;
9232 
9233 	  FOR j IN 1..l_prc_index_link.count LOOP
9234 	      l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
9235 			:= l_price_adj_tbl(j).price_adjustment_id;
9236 	  END LOOP;
9237 	  IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9238 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9239 	    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9240 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
9241 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
9242 	      FND_MSG_PUB.ADD;
9243 	    END IF;
9244 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9245 	  ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9246 	    x_return_status := FND_API.G_RET_STS_ERROR;
9247               RAISE FND_API.G_EXC_ERROR;
9248 	  END IF;
9249 
9250 
9251 	ELSIF l_qte_line_rec.operation_code = 'UPDATE' THEN
9252 
9253 
9254      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9255 	aso_debug_pub.add('Update_Quote - if operation_code is update ', 1, 'N');
9256 	END IF;
9257 
9258 	  l_qte_line_id := l_qte_line_rec.quote_line_id;
9259 	  -- line detail info
9260 	  l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
9261 	  l_index := 1;
9262 	  FOR j IN 1 .. lx_qte_line_dtl_tbl.count LOOP
9263 	    IF lx_qte_line_dtl_tbl(j).quote_line_id  = l_qte_line_id THEN
9264 	      l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
9265 	      l_index := l_index + 1;
9266 	    END IF;
9267 	  END LOOP;
9268 
9269 	  -- line attributes ext
9270 	  l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
9271 	  l_index := 1;
9272 	  FOR j IN 1..p_line_attr_ext_tbl.count LOOP
9273 	      IF p_line_attr_ext_tbl(j).quote_line_id = l_qte_line_id THEN
9274 		  l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
9275 		  l_index := l_index + 1;
9276 	      END IF;
9277 	  END LOOP;
9278 
9279 	  -- price attr info
9280 	  l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
9281 	  l_index := 1;
9282 	  FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
9283 	    IF p_ln_price_attributes_tbl(j).quote_line_id  = l_qte_line_id THEN
9284 	      l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
9285 		 l_index := l_index + 1;
9286 	    END IF;
9287 	  END LOOP;
9288 
9289 	  -- modifier info
9290 	  l_price_adj_tbl := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
9291 	  l_prc_index_link := G_Miss_Link_Tbl;
9292 	  l_prc_index_link_rev := G_Miss_Link_Tbl;
9293 	  l_index := 1;
9294 	  FOR j IN 1..p_price_adjustment_tbl.count LOOP
9295 	    IF p_price_adjustment_tbl(j).quote_line_id	= l_qte_line_id THEN
9296 	      l_price_adj_tbl(l_index) := p_price_adjustment_tbl(j);
9297 	      l_prc_index_link(l_index) := j;
9298 	      l_prc_index_link_rev(j) := l_index;
9299 	      l_index := l_index + 1;
9300 	    END IF;
9301 	  END LOOP;
9302 	  l_index := 1;
9303 
9304        -- BC4J Fix
9305 	  l_price_adj_attr_tbl:= ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
9306 
9307 	  FOR j IN 1..p_price_adj_attr_tbl.count LOOP
9308 	    IF p_price_adj_attr_tbl(j).qte_line_index = i THEN
9309 	      l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
9310 	      IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM
9311 		AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
9312 		  l_price_adj_attr_tbl(l_index).price_adj_index :=
9313 			l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
9314 	      END IF;
9315 	      l_index := l_index + 1;
9316 	    END IF;
9317 	  END LOOP;
9318 
9319 
9320 	  -- payment info
9321 	  l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
9322 	  l_index := 1;
9323 	  FOR j IN 1..p_ln_payment_tbl.count LOOP
9324 	    IF p_ln_payment_tbl(j).quote_line_id  = l_qte_line_id THEN
9325 	      l_payment_tbl(l_index) := p_ln_payment_tbl(j);
9326 	      l_index := l_index +1;
9327 	    END IF;
9328 	  END LOOP;
9329 
9330 	  -- shipment info
9331 	  l_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
9332 	  l_shp_index_link := G_Miss_Link_Tbl;
9333 	  l_index := 1;
9334 	  FOR j IN 1..p_ln_shipment_tbl.count LOOP
9335 	    IF p_ln_shipment_tbl(j).quote_line_id  = l_qte_line_id THEN
9336 	      l_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
9337 	      l_shp_index_link(j) := l_index;
9338           l_index := l_index +1;
9339 	    END IF;
9340 	  END LOOP;
9341 
9342 l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
9343 
9344 	  l_index := 1;
9345 	  FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
9346       IF p_ln_sales_credit_tbl(j).qte_line_index = i
9347 	    OR p_ln_sales_credit_tbl(j).quote_line_id = l_qte_line_id THEN
9348         l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
9349 		  l_index := l_index +1;
9350 	  END IF;
9351 	  END LOOP;
9352 
9353 
9354 l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
9355 
9356 	  l_index := 1;
9357 	  FOR j IN 1..p_ln_quote_party_tbl.count LOOP
9358       IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
9359         l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
9360          IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9361             p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
9362 		   l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
9363 	       l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
9364          END IF;
9365 		  l_index := l_index +1;
9366 	  END IF;
9367 	  END LOOP;
9368 	  -- freight charge info
9369 	  l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
9370 	  l_index := 1;
9371 	  FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
9372 	      IF p_ln_freight_charge_tbl(j).quote_line_id = l_qte_line_id THEN
9373 		  l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
9374 		  IF l_freight_charge_tbl(l_index).shipment_index IS NOT NULL AND
9375 			l_freight_charge_tbl(l_index).shipment_index <> FND_API.G_MISS_NUM THEN
9376 		      IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9377 			l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
9378 			  l_freight_charge_tbl(l_index).shipment_index :=
9379 				l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
9380 		      ELSE
9381 			  null;
9382 		      END IF;
9383 		  END IF;
9384 		  l_index := l_index+1;
9385 	      END IF;
9386 	  END LOOP;
9387 
9388 
9389 	  -- tax info
9390 	  l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
9391 	  l_index := 1;
9392 	  FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
9393 	      IF p_ln_tax_detail_tbl(j).quote_line_id = l_qte_line_id THEN
9394 		  l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
9395 		  IF l_tax_detail_tbl(l_index).shipment_index IS NOT NULL AND
9396 			l_tax_detail_tbl(l_index).shipment_index <> FND_API.G_MISS_NUM THEN
9397 		      IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9398 			l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index) THEN
9399 			  l_tax_detail_tbl(l_index).shipment_index :=
9400 				l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
9401 		      ELSE
9402 			  null;
9403 		      END IF;
9404 		  END IF;
9405 		  l_index := l_index+1;
9406 	      END IF;
9407 	  END LOOP;
9408 
9409 -- EDU
9410 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9411 aso_debug_pub.add('Update_Quote (update_quote_lines) - before Validate_Commitment ', 1, 'N');
9412 END IF;
9413      ASO_VALIDATE_PVT.Validate_Commitment(
9414           P_Init_Msg_List          => FND_API.G_FALSE,
9415           P_Qte_Header_Rec         => x_qte_header_rec,
9416           P_Qte_Line_Rec           => l_qte_line_rec,
9417           X_Return_Status          => l_return_status,
9418           X_Msg_Count              => x_msg_count,
9419           X_Msg_Data               => x_msg_data);
9420 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9421 aso_debug_pub.add('Update_Quote (upd_qte_ln)- after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
9422 END IF;
9423      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9424           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9425           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9426      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
9427           x_return_status := FND_API.G_RET_STS_ERROR;
9428           RAISE FND_API.G_EXC_ERROR;
9429      END IF;
9430 -- EDU
9431 
9432 	  -- update quote line (need to do the following validation:
9433 	  -- 1. each line has at least one shipment rec
9434 	  -- 2. each line has only one tax_detail rec in which to set the tax
9435 	  --	exempt info.
9436 
9437 	   open  c_last_update_date(x_qte_header_rec.quote_header_id);
9438 	   fetch c_last_update_date into l_control_rec.last_update_date;
9439 	   close c_last_update_date;
9440 
9441 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
9442 		  aso_debug_pub.add('Update_Quote: Before call to Update_Quote_Line');
9443             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9444         END IF;
9445 
9446 
9447 	   ASO_QUOTE_LINES_PVT.Update_Quote_Line (
9448 			P_Api_Version_Number	=> 1.0,
9449 			p_validation_level	=> p_validation_level,
9450 			p_control_rec		=> l_control_rec,
9451 			p_update_header_flag	=> FND_API.G_FALSE,
9452                   p_qte_header_rec        => l_qte_header_rec,
9453 			P_qte_Line_Rec		=> l_qte_line_rec,
9454 			P_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl,
9455 			P_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl,
9456 			P_price_attributes_tbl	=> l_price_attr_tbl,
9457 			P_Price_Adj_Tbl		=> l_price_adj_tbl,
9458 			P_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl,
9459 			P_Payment_Tbl		=> l_payment_tbl,
9460 			P_Shipment_Tbl		=> l_shipment_tbl,
9461 			P_Freight_Charge_Tbl	=> l_freight_charge_tbl,
9462 			P_Tax_Detail_Tbl	=> l_tax_detail_tbl,
9463             P_quote_party_tbl       => l_quote_party_tbl ,
9464             P_sales_Credit_tbl      => l_sales_Credit_tbl ,
9465 			x_qte_Line_Rec		=> l_qte_line_rec_out,
9466 			x_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl_out,
9467 			x_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl_out,
9468 			x_price_attributes_tbl	=> l_price_attr_tbl_out,
9469 			x_Price_Adj_Tbl		=> l_price_adj_tbl_out,
9470 			x_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl_out,
9471 			x_Payment_Tbl		=> l_payment_tbl_out,
9472 			x_Shipment_Tbl		=> l_shipment_tbl_out,
9473 			x_Freight_Charge_Tbl	=> l_freight_charge_tbl_out,
9474 			x_Tax_Detail_Tbl	=> l_tax_detail_tbl_out,
9475             X_quote_party_tbl       => l_quote_party_tbl_out ,
9476             X_sales_Credit_tbl      => l_sales_Credit_tbl_out ,
9477 			X_Return_Status 	=> l_return_status,
9478 			X_Msg_Count		=> x_msg_count,
9479 			X_Msg_Data		=> x_msg_data);
9480 
9481 
9482         l_qte_line_rec        :=  l_qte_line_rec_out;
9483         l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
9484         l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
9485         l_price_attr_tbl      :=  l_price_attr_tbl_out;
9486         l_price_adj_tbl       :=  l_price_adj_tbl_out;
9487         l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
9488         l_payment_tbl         :=  l_payment_tbl_out;
9489         l_shipment_tbl        :=  l_shipment_tbl_out;
9490         l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
9491         l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
9492         l_quote_party_tbl     :=  l_quote_party_tbl_out;
9493         l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
9494 
9495 
9496         IF aso_debug_pub.g_debug_flag = 'Y' THEN
9497 	        aso_debug_pub.add('Update_Quote: after update_quote_line: l_return_status: '||l_return_status);
9498 	   END IF;
9499 
9500         open  c_last_update_date(x_qte_header_rec.quote_header_id);
9501         fetch c_last_update_date into x_qte_header_rec.last_update_date;
9502         close c_last_update_date;
9503 
9504         l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
9505 
9506         IF aso_debug_pub.g_debug_flag = 'Y' THEN
9507             aso_debug_pub.add('Update_Quote: After call to Update_Quote_Line');
9508             aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
9509             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9510         END IF;
9511 
9512 
9513 	  X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
9514 	  l_index := X_Qte_Line_Dtl_Tbl.count+1;
9515 
9516 	  FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
9517 	      x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
9518 	      l_index := l_index+1;
9519 	  END LOOP;
9520 	  l_index := X_Line_Attr_Ext_Tbl.count+1;
9521 	  FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
9522 	      x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
9523 	      l_index := l_index+1;
9524 	  END LOOP;
9525 	  l_index := X_ln_Price_Attributes_Tbl.count+1;
9526 	  FOR j IN 1.. l_Price_Attr_tbl.count LOOP
9527 	      x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
9528 	      l_index := l_index+1;
9529 	  END LOOP;
9530 	  l_index := X_Price_Adjustment_tbl.count+1;
9531 	  FOR j IN 1.. l_Price_Adj_tbl.count LOOP
9532 	      x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
9533 	      l_index := l_index+1;
9534 	  END LOOP;
9535 	  l_index := X_Price_Adj_Attr_tbl.count+1;
9536 	  FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
9537 	      x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
9538 	      l_index := l_index+1;
9539 	  END LOOP;
9540 	  l_index := X_LN_payment_Tbl.count+1;
9541 	  FOR j IN 1.. l_payment_tbl.count LOOP
9542 	      x_ln_payment_tbl(l_index) := l_payment_tbl(j);
9543 	      l_index := l_index+1;
9544 	  END LOOP;
9545 	  l_index := X_Ln_shipment_Tbl.count+1;
9546 	  FOR j IN 1.. l_shipment_tbl.count LOOP
9547 	      x_ln_shipment_tbl(l_index) := l_shipment_tbl(j);
9548 	      l_index := l_index+1;
9549 	  END LOOP;
9550 	  l_index := X_LN_freight_charge_Tbl.count+1;
9551 	  FOR j IN 1.. l_freight_charge_tbl.count LOOP
9552 	      x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
9553 	      l_index := l_index+1;
9554 	  END LOOP;
9555 	  l_index := X_LN_tax_detail_Tbl.count+1;
9556 	  FOR j IN 1.. l_tax_detail_tbl.count LOOP
9557 	      x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
9558 	      l_index := l_index+1;
9559 	  END LOOP;
9560 
9561       l_index := X_ln_sales_Credit_Tbl.count+1;
9562 	  FOR j IN 1.. l_sales_Credit_tbl.count LOOP
9563 	      x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
9564 	      l_index := l_index+1;
9565 	  END LOOP;
9566           l_index := X_ln_quote_party_Tbl.count+1;
9567 	  FOR j IN 1.. l_quote_party_tbl.count LOOP
9568 	      x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
9569 	      l_index := l_index+1;
9570 	  END LOOP;
9571 
9572 
9573 
9574 	  FOR j IN 1..l_prc_index_link.count LOOP
9575 	      l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
9576 			:= l_price_adj_tbl(j).price_adjustment_id;
9577 	  END LOOP;
9578 	  IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9579 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9580 	    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9581 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
9582 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATE  QLN', TRUE);
9583 	      FND_MSG_PUB.ADD;
9584 	    END IF;
9585 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9586 	  ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9587              x_return_status := FND_API.G_RET_STS_ERROR;
9588               RAISE FND_API.G_EXC_ERROR;
9589 	  END IF;
9590 
9591 
9592 	ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
9593 
9594 
9595             OPEN c_qte_line(l_qte_line_rec.quote_line_id);
9596             FETCH c_qte_line into l_qln_id;
9597 
9598             IF c_qte_line%FOUND and l_qln_id <>FND_API.G_MISS_NUM THEN
9599 
9600 	          open  c_last_update_date(x_qte_header_rec.quote_header_id);
9601 	          fetch c_last_update_date into l_control_rec.last_update_date;
9602 	          close c_last_update_date;
9603 
9604 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
9605 		         aso_debug_pub.add('Update_Quote: Before call to Delete_Quote_Line');
9606                    aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9607                END IF;
9608 
9609 	          ASO_QUOTE_LINES_PVT.Delete_Quote_Line (
9610 			P_Api_Version_Number	=> 1.0,
9611 			p_control_rec		=> l_control_rec,
9612 			p_update_header_flag	=> FND_API.G_FALSE,
9613 			P_qte_Line_Rec		=> l_qte_line_rec,
9614 			X_Return_Status 	=> l_return_status,
9615 			X_Msg_Count		=> x_msg_count,
9616 			X_Msg_Data		=> x_msg_data);
9617 
9618 
9619             END IF;
9620             CLOSE c_qte_line;
9621 
9622             IF aso_debug_pub.g_debug_flag = 'Y' THEN
9623 	           aso_debug_pub.add('Update_Quote: after Delete_Quote_Line: l_return_status: '||l_return_status);
9624 	       END IF;
9625 
9626             IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9627 
9628 	           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9629 
9630 	           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9631 	                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
9632 	                 FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER DELETE QLN', TRUE);
9633 	                 FND_MSG_PUB.ADD;
9634 	           END IF;
9635 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9636 
9637 	       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9638 
9639                 x_return_status := FND_API.G_RET_STS_ERROR;
9640                 RAISE FND_API.G_EXC_ERROR;
9641 
9642 	       END IF;
9643 
9644             open  c_last_update_date(x_qte_header_rec.quote_header_id);
9645             fetch c_last_update_date into x_qte_header_rec.last_update_date;
9646             close c_last_update_date;
9647 
9648             l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
9649 
9650             IF aso_debug_pub.g_debug_flag = 'Y' THEN
9651                 aso_debug_pub.add('Update_Quote: After call to Update_Quote_Line');
9652                 aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
9653                 aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9654             END IF;
9655 
9656 	END IF;
9657 
9658    END LOOP;
9659 
9660 
9661     --New code for Batch Validate 05/24/2002
9662 
9663     -- Now call batch validate for each configuration at the end quote_line_tbl LOOP
9664 
9665 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9666 aso_debug_pub.add('UPDATE_QUOTE: l_qte_header_rec.Call_batch_validation_flag: '||l_qte_header_rec.Call_batch_validation_flag,1,'N');
9667 END IF;
9668 
9669 IF l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE THEN
9670 
9671    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9672    aso_debug_pub.add('UPDATE_QUOTE: l_model_qte_line_tbl.count: '||l_model_qte_line_tbl.count,1,'N');
9673    aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_tbl.count: '||l_p_batch_qte_line_tbl.count,1,'N');
9674    aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_dtl_tbl.count: '||l_p_batch_qte_line_dtl_tbl.count,1,'N');
9675    END IF;
9676 
9677 
9678    FOR i IN 1..l_model_qte_line_tbl.count LOOP
9679        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9680 	  aso_debug_pub.add('UPDATE_QUOTE: l_model_qte_line_tbl('||i||').quote_line_id: '||l_model_qte_line_tbl(i).quote_line_id,1,'N');
9681        aso_debug_pub.add('UPDATE_QUOTE: l_model_qte_line_dtl_tbl('||i||').config_header_id: '||l_model_qte_line_dtl_tbl(i).config_header_id,1,'N');
9682        aso_debug_pub.add('UPDATE_QUOTE: l_model_qte_line_dtl_tbl('||i||').config_revision_num: '||l_model_qte_line_dtl_tbl(i).config_revision_num,1,'N');
9683 	  END IF;
9684 
9685        l_send_qte_line_tbl     := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
9686 	  l_send_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
9687        l_send_index            := 0;
9688 
9689        IF l_delete_qte_line_tbl.EXISTS(l_model_qte_line_tbl(i).quote_line_id) THEN
9690 
9691            IF aso_debug_pub.g_debug_flag = 'Y' THEN
9692 		 aso_debug_pub.add('UPDATE_QUOTE: Model line exist in l_delete_qte_line_tbl so it is already deleted along with children lines');
9693 		 END IF;
9694 
9695        ELSE
9696 
9697            FOR j IN 1..l_p_batch_qte_line_dtl_tbl.count LOOP
9698                IF l_p_batch_qte_line_dtl_tbl(j).config_header_id = l_model_qte_line_dtl_tbl(i).config_header_id AND
9699                   l_p_batch_qte_line_dtl_tbl(j).config_revision_num = l_model_qte_line_dtl_tbl(i).config_revision_num THEN
9700 
9701                      l_send_index := l_send_index + 1;
9702                      l_send_qte_line_tbl(l_send_index)     := l_p_batch_qte_line_tbl(j);
9703                      l_send_qte_line_dtl_tbl(l_send_index) := l_p_batch_qte_line_dtl_tbl(j);
9704 
9705                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9706 				 aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_tbl('||j||').quote_line_id: '||l_p_batch_qte_line_tbl(j).quote_line_id,1,'N');
9707                      aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_tbl('||j||').quantity: '||l_p_batch_qte_line_tbl(j).quantity,1,'N');
9708                      aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_dtl_tbl('||j||').component_code: '||l_p_batch_qte_line_dtl_tbl(j).component_code,1,'N');
9709 				 END IF;
9710                END IF;
9711            END LOOP;
9712 
9713 		 l_control_rec_bv.header_pricing_event  :=  null;
9714 		 l_control_rec_bv.calculate_tax_flag    :=  'N';
9715 		 l_control_rec_bv.defaulting_fwk_flag   :=  'N';
9716 
9717            -- Call Batch Validation procedure
9718            IF aso_debug_pub.g_debug_flag = 'Y' THEN
9719 		 aso_debug_pub.add('UPDATE_QUOTE: Before call to Validate_Configuration',1,'N');
9720 		 END IF;
9721 
9722            ASO_CFG_INT.Validate_Configuration
9723                ( P_Api_Version_Number           =>  1.0,
9724                  P_Init_Msg_List                =>  FND_API.G_FALSE,
9725                  P_Commit                       =>  FND_API.G_FALSE,
9726                  p_control_rec                  =>  l_control_rec_bv,
9727                  P_model_line_id                =>  l_model_qte_line_tbl(i).quote_line_id,
9728                  P_Qte_Line_Tbl                 =>  l_send_qte_line_tbl,
9729                  P_Qte_Line_Dtl_Tbl             =>  l_send_qte_line_dtl_tbl,
9730                  X_config_header_id             =>  l_config_header_id,
9731                  X_config_revision_num          =>  l_config_revision_num,
9732                  X_valid_configuration_flag     =>  l_valid_configuration_flag,
9733                  X_complete_configuration_flag  =>  l_complete_configuration_flag,
9734                  X_return_status                =>  l_return_status,
9735                  X_msg_count                    =>  x_msg_count,
9736                  X_msg_data                     =>  x_msg_data
9737                 );
9738 
9739            IF aso_debug_pub.g_debug_flag = 'Y' THEN
9740 		     aso_debug_pub.add('UPDATE_QUOTE: After call to Validate_Configuration: l_return_status: '||l_return_status,1,'Y');
9741 		     aso_debug_pub.add('UPDATE_QUOTE: l_config_header_id:            '|| l_config_header_id,1,'N');
9742 		     aso_debug_pub.add('UPDATE_QUOTE: l_config_revision_num:         '|| l_config_revision_num,1,'N');
9743 		     aso_debug_pub.add('UPDATE_QUOTE: l_valid_configuration_flag:    '|| l_valid_configuration_flag,1,'N');
9744 		     aso_debug_pub.add('UPDATE_QUOTE: l_complete_configuration_flag: '|| l_complete_configuration_flag,1,'N');
9745 		 END IF;
9746 
9747            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9748 
9749                open c_config_exist_in_cz(l_config_header_id, l_config_revision_num);
9750                fetch c_config_exist_in_cz into l_new_config_hdr_id;
9751 
9752                if c_config_exist_in_cz%found then
9753 
9754                    close c_config_exist_in_cz;
9755 
9756                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9757                        aso_debug_pub.add('Update Quote: A higher version exist for this configuration so deleting it from CZ');
9758                    END IF;
9759 
9760                    ASO_CFG_INT.DELETE_CONFIGURATION_AUTO( P_API_VERSION_NUMBER  => 1.0,
9761                                                           P_INIT_MSG_LIST       => FND_API.G_FALSE,
9762                                                           P_CONFIG_HDR_ID       => l_config_header_id,
9763                                                           P_CONFIG_REV_NBR      => l_config_revision_num,
9764                                                           X_RETURN_STATUS       => x_return_status,
9765                                                           X_MSG_COUNT           => x_msg_count,
9766                                                           X_MSG_DATA            => x_msg_data);
9767 
9768                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9769                        aso_debug_pub.add('After call to ASO_CFG_INT.DELETE_CONFIGURATION_AUTO: x_Return_Status: ' || x_Return_Status);
9770                    END IF;
9771 
9772                    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9773 
9774                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9775                           FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9776                           FND_MESSAGE.Set_Token('OBJECT', 'CONFIGURATION', FALSE);
9777                           FND_MSG_PUB.ADD;
9778                        END IF;
9779 
9780                        RAISE FND_API.G_EXC_ERROR;
9781 
9782                    END IF;
9783 
9784                else
9785                    close c_config_exist_in_cz;
9786                end if;
9787 
9788            END IF;
9789 
9790            IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9791                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9792                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9793            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
9794                x_return_status := FND_API.G_RET_STS_ERROR;
9795                RAISE FND_API.G_EXC_ERROR;
9796            END IF;
9797 
9798        END IF; --l_delete_qte_line_tbl.EXISTS
9799    END LOOP; --l_model_qte_line_tbl.count
9800 
9801    --call Aso_Config_Operations_Int.Config_Operations procedure
9802    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9803        aso_debug_pub.add('Update_Quote: l_deactivate_quote_line_tbl.count: ' || l_deactivate_quote_line_tbl.count);
9804    END IF;
9805 
9806    if l_deactivate_quote_line_tbl.count > 0 then
9807 
9808 	  l_control_rec_bv.header_pricing_event  :=  null;
9809 	  l_control_rec_bv.calculate_tax_flag    :=  'N';
9810 	  l_control_rec_bv.defaulting_fwk_flag   :=  'N';
9811 
9812        l_deactivate_qte_header_rec := x_qte_header_rec;
9813 
9814        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9815            aso_debug_pub.add('Before call to  Aso_Config_Operations_Int.Config_Operations.', 1, 'Y');
9816        END IF;
9817 
9818        Aso_Config_Operations_Int.Config_Operations(
9819               p_api_version_number => 1.0,
9820               p_init_msg_list      => FND_API.G_FALSE,
9821               p_commit             => FND_API.G_FALSE,
9822               p_validation_level   => p_validation_level,
9823               p_control_rec        => l_control_rec_bv,
9824               p_qte_header_rec     => l_deactivate_qte_header_rec,
9825               p_qte_line_tbl       => l_deactivate_quote_line_tbl,
9826               p_instance_tbl       => l_deactivate_instance_tbl,
9827               p_operation_code     => aso_quote_pub.g_deactivate,
9828               p_delete_flag        => fnd_api.g_false,
9829               x_Qte_Header_Rec     => x_Qte_Header_Rec,
9830               x_return_status      => x_return_status,
9831               x_msg_count          => x_msg_count,
9832               x_msg_data           => x_msg_data);
9833 /*
9834 
9835        ASO_CONFIG_OPERATIONS_PVT.Deactivate_from_quote(
9836               P_Api_Version_Number     => 1.0,
9837               P_Init_Msg_List           => FND_API.G_FALSE,
9838               P_Commit                 => FND_API.G_FALSE,
9839               p_validation_level       => p_validation_level,
9840               P_Control_Rec            => l_control_rec_bv,
9841               P_Qte_Header_Rec          => l_deactivate_qte_header_rec,
9842               P_Qte_line_tbl           => l_deactivate_quote_line_tbl,
9843               p_delete_flag            => fnd_api.g_false,
9844               X_qte_header_rec        => x_Qte_Header_Rec,
9845               X_Return_Status           => X_Return_Status,
9846               X_Msg_Count              => X_Msg_Count,
9847               X_Msg_Data               => X_Msg_Data );
9848 */
9849 
9850         IF aso_debug_pub.g_debug_flag = 'Y' THEN
9851             aso_debug_pub.add('After call to Aso_Config_Operations_Int.Config_Operations: x_Return_Status: ' || x_Return_Status, 1, 'Y');
9852         END IF;
9853 
9854    end if;
9855 
9856    --End of call to Aso_Config_Operations_Int.Config_Operations procedure
9857 
9858 END IF; -- l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE
9859 
9860 --End of New code for Batch Validate 05/24/2002
9861 
9862 
9863       -- update price adj relationships
9864       FOR i IN 1..p_price_adj_rltship_tbl.count LOOP
9865 	l_price_adj_rltship_rec := p_price_adj_rltship_tbl(i);
9866 	l_index := l_price_adj_rltship_rec.qte_line_index;
9867 	IF l_index IS NOT NULL AND l_index >=1 AND
9868 		l_index <= x_qte_line_tbl.count THEN
9869 	  l_price_adj_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
9870 	END IF;
9871 	l_index := l_price_adj_rltship_rec.price_adj_index;
9872 	IF l_index IS NOT NULL AND l_index >=1 AND
9873 		l_index <= x_price_adjustment_tbl.count THEN
9874 	  l_price_adj_rltship_rec.price_adjustment_id :=
9875 		l_price_adjustment_tbl(l_index).price_adjustment_id;
9876 	END IF;
9877 	l_index := l_price_adj_rltship_rec.RLTD_PRICE_ADJ_INDEX;
9878 	IF l_index IS NOT NULL AND l_index >=1 AND
9879 		l_index <= x_price_adjustment_tbl.count THEN
9880 	  l_price_adj_rltship_rec.rltd_price_adj_id :=
9881 		l_price_adjustment_tbl(l_index).price_adjustment_id;
9882 	END IF;
9883 	IF l_price_adj_rltship_rec.operation_code = 'CREATE' THEN
9884 	    -- BC4J Fix
9885 	    --l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID := NULL;
9886 	    ASO_PRICE_RLTSHIPS_PKG.Insert_Row(
9887 		px_ADJ_RELATIONSHIP_ID	=> l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
9888 		p_creation_date		=> sysdate,
9889 		p_CREATED_BY		=> G_USER_ID,
9890 		p_LAST_UPDATE_DATE	=> sysdate,
9891 		p_LAST_UPDATED_BY	=> G_USER_ID,
9892 		p_LAST_UPDATE_LOGIN	=> G_USER_ID,
9893 		p_PROGRAM_APPLICATION_ID=> l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
9894 		p_PROGRAM_ID		=> l_price_adj_rltship_rec.PROGRAM_ID,
9895 		p_PROGRAM_UPDATE_DATE	=> l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
9896 		p_REQUEST_ID		=> l_price_adj_rltship_rec.REQUEST_ID,
9897 		p_QUOTE_LINE_ID		=> l_price_adj_rltship_rec.quote_line_id,
9898 		p_PRICE_ADJUSTMENT_ID	=> l_price_adj_rltship_rec.price_adjustment_id,
9899 		p_RLTD_PRICE_ADJ_ID	=> l_price_adj_rltship_rec.rltd_price_adj_id,
9900 		p_QUOTE_SHIPMENT_ID	=> l_price_adj_rltship_rec.quote_shipment_id,
9901 		p_OBJECT_VERSION_NUMBER => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER
9902 		);
9903 	ELSIF l_price_adj_rltship_rec.operation_code = 'UPDATE' THEN
9904 	    ASO_PRICE_RLTSHIPS_PKG.Update_Row(
9905 		p_ADJ_RELATIONSHIP_ID  => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
9906 		p_creation_date		=> l_price_adj_rltship_rec.creation_date,
9907 		p_CREATED_BY		=> G_USER_ID,
9908 		p_LAST_UPDATE_DATE	=> sysdate,
9909 		p_LAST_UPDATED_BY	=> G_USER_ID,
9910 		p_LAST_UPDATE_LOGIN	=> G_USER_ID,
9911 		p_PROGRAM_APPLICATION_ID=> l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
9912 		p_PROGRAM_ID		=> l_price_adj_rltship_rec.PROGRAM_ID,
9913 		p_PROGRAM_UPDATE_DATE	=> l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
9914 		p_REQUEST_ID		=> l_price_adj_rltship_rec.REQUEST_ID,
9915 		p_QUOTE_LINE_ID		=> l_price_adj_rltship_rec.quote_line_id,
9916 		p_PRICE_ADJUSTMENT_ID	=> l_price_adj_rltship_rec.price_adjustment_id,
9917 		p_RLTD_PRICE_ADJ_ID	=> l_price_adj_rltship_rec.rltd_price_adj_id,
9918 		p_QUOTE_SHIPMENT_ID	=> l_price_adj_rltship_rec.quote_shipment_id,
9919 		p_OBJECT_VERSION_NUMBER => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER
9920 		);
9921 	ELSIF l_price_adj_rltship_rec.operation_code = 'DELETE' THEN
9922 	    ASO_PRICE_RLTSHIPS_PKG.Delete_Row(
9923 		p_ADJ_RELATIONSHIP_ID  => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID);
9924 
9925 	END IF;
9926 	X_Price_Adj_Rltship_Tbl(i) := l_price_adj_rltship_rec;
9927 
9928 
9929       END LOOP;
9930 
9931 
9932       -- update line relationships
9933       FOR i IN 1..p_line_rltship_tbl.count LOOP
9934 	l_line_rltship_rec := p_line_rltship_tbl(i);
9935 	l_index := l_line_rltship_rec.qte_line_index;
9936 	IF l_index IS NOT NULL AND l_index >=1 AND
9937 		l_index <= x_qte_line_tbl.count THEN
9938 	  l_line_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
9939 	END IF;
9940 	l_index := l_line_rltship_rec.related_qte_line_index;
9941 	IF l_index IS NOT NULL AND l_index >=1 AND
9942 		l_index <= x_qte_line_tbl.count THEN
9943 	  l_line_rltship_rec.related_quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
9944 	END IF;
9945 	IF l_line_rltship_rec.operation_code = 'CREATE' THEN
9946 	    -- BC4J Fix
9947 	    --l_line_rltship_rec.LINE_RELATIONSHIP_ID := NULL;
9948 	    ASO_LINE_RELATIONSHIPS_PKG.Insert_Row(
9949 		px_LINE_RELATIONSHIP_ID  => l_line_rltship_rec.LINE_RELATIONSHIP_ID,
9950 		p_CREATION_DATE  => SYSDATE,
9951 		p_CREATED_BY  => G_USER_ID,
9952 		p_LAST_UPDATED_BY  => G_USER_ID,
9953 		p_LAST_UPDATE_DATE  => SYSDATE,
9954 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
9955 		p_REQUEST_ID  => l_line_rltship_rec.REQUEST_ID,
9956 		p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
9957 		p_PROGRAM_ID  => l_line_rltship_rec.PROGRAM_ID,
9958 		p_PROGRAM_UPDATE_DATE  =>l_line_rltship_rec.PROGRAM_UPDATE_DATE,
9959 		p_QUOTE_LINE_ID  => l_line_rltship_rec.quote_line_id,
9960 		p_RELATED_QUOTE_LINE_ID  => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
9961 		p_RECIPROCAL_FLAG  => l_line_rltship_rec.RECIPROCAL_FLAG,
9962 		P_RELATIONSHIP_TYPE_CODE =>l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
9963 		p_OBJECT_VERSION_NUMBER => l_line_rltship_rec.OBJECT_VERSION_NUMBER
9964 		);
9965 	ELSIF l_line_rltship_rec.operation_code = 'UPDATE' THEN
9966 	    ASO_LINE_RELATIONSHIPS_PKG.Update_Row(
9967 		p_LINE_RELATIONSHIP_ID	=> l_line_rltship_rec.LINE_RELATIONSHIP_ID,
9968 		p_CREATION_DATE  => l_line_rltship_rec.creation_date,
9969 		p_CREATED_BY  => G_USER_ID,
9970 		p_LAST_UPDATED_BY  => G_USER_ID,
9971 		p_LAST_UPDATE_DATE  => SYSDATE,
9972 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
9973 		p_REQUEST_ID  => l_line_rltship_rec.REQUEST_ID,
9974 		p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
9975 		p_PROGRAM_ID  => l_line_rltship_rec.PROGRAM_ID,
9976 		p_PROGRAM_UPDATE_DATE  =>l_line_rltship_rec.PROGRAM_UPDATE_DATE,
9977 		p_QUOTE_LINE_ID  => l_line_rltship_rec.quote_line_id,
9978 		p_RELATED_QUOTE_LINE_ID  => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
9979 		p_RECIPROCAL_FLAG  => l_line_rltship_rec.RECIPROCAL_FLAG,
9980 		P_RELATIONSHIP_TYPE_CODE =>l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
9981 		p_OBJECT_VERSION_NUMBER => l_line_rltship_rec.OBJECT_VERSION_NUMBER
9982 		);
9983 	ELSIF l_line_rltship_rec.operation_code = 'DELETE' THEN
9984 	    ASO_LINE_RELATIONSHIPS_PKG.delete_Row(
9985 		p_LINE_RELATIONSHIP_ID	=> l_line_rltship_rec.LINE_RELATIONSHIP_ID);
9986 	END IF;
9987 	X_line_Rltship_Tbl(i) := l_line_rltship_rec;
9988 
9989      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9990  	   aso_debug_pub.add('Update_Quote: l_line_rltship_rec.quote_line_id:         '||l_line_rltship_rec.quote_line_id);
9991         aso_debug_pub.add('Update_Quote: l_line_rltship_rec.related_quote_line_id: '||l_line_rltship_rec.related_quote_line_id);
9992      END IF;
9993 
9994      if l_line_rltship_rec.relationship_type_code = 'CONFIG' and
9995         (l_line_rltship_rec.operation_code = 'CREATE' or
9996          l_line_rltship_rec.operation_code = 'UPDATE') then
9997 
9998           update aso_quote_line_details
9999           set ref_type_code      =  'CONFIG',
10000               ref_line_id        =  l_line_rltship_rec.quote_line_id,
10001               last_update_date   =  sysdate,
10002               last_updated_by    =  g_user_id,
10003               last_update_login  =  g_login_id
10004           where quote_line_id = l_line_rltship_rec.related_quote_line_id;
10005 
10006      end if;
10007 
10008      END LOOP;
10009 
10010      IF aso_debug_pub.g_debug_flag = 'Y' THEN
10011 	   aso_debug_pub.add('Update_Quote: x_qte_header_rec.quote_header_id: '|| x_qte_header_rec.quote_header_id);
10012      END IF;
10013 
10014      update aso_quote_line_details
10015      set ref_type_code      =  'CONFIG',
10016          last_update_date   =  sysdate,
10017          last_updated_by    =  g_user_id,
10018          last_update_login  =  g_login_id
10019      where config_header_id is not null
10020      and config_revision_num is not null
10021      and ref_type_code is null
10022      and quote_line_id in (select quote_line_id from aso_quote_lines_all
10023                            where item_type_code = 'MDL'
10024                            and quote_header_id  = x_qte_header_rec.quote_header_id);
10025 
10026   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10027 	   aso_debug_pub.add('Update_Quote: Validating line type if Order type has changed');
10028        aso_debug_pub.add('Update_Quote: l_qte_header_rec.order_type_id: '||l_qte_header_rec.order_type_id);
10029     END IF;
10030 
10031 
10032      IF ((l_order_type_id <> l_qte_header_rec.order_type_id) AND (l_qte_header_rec.order_type_id <> FND_API.G_MISS_NUM)) then
10033 
10034           For quote_lines_rec IN c_quote_lines(l_qte_header_rec.quote_header_id) LOOP
10035 
10036                 l_ln_rec.quote_line_id      :=  quote_lines_rec.quote_line_id;
10037                 l_ln_rec.order_line_type_id :=  quote_lines_rec.order_line_type_id;
10038                 l_ln_rec.line_category_code :=  quote_lines_rec.line_category_code;
10039 
10040 
10041                     --Validate_ln_type_for_ord_type
10042 
10043                     ASO_validate_PVT.Validate_ln_type_for_ord_type(
10044                         p_init_msg_list     =>   FND_API.G_FALSE,
10045                         p_qte_header_rec    =>   l_qte_header_rec,
10046                         P_Qte_Line_rec      =>   l_ln_rec,
10047                         x_return_status     =>   x_return_status,
10048                         x_msg_count         =>   x_msg_count,
10049                         x_msg_data          =>   x_msg_data);
10050 
10051                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10052                         RAISE FND_API.G_EXC_ERROR;
10053                     END IF;
10054                     --Validate_ln_category_code
10055 
10056                     ASO_validate_PVT.Validate_ln_category_code(
10057                         p_init_msg_list     =>   FND_API.G_FALSE,
10058                         p_qte_header_rec    =>   l_qte_header_rec,
10059                         P_Qte_Line_rec      =>   l_ln_rec,
10060                         x_return_status     =>   x_return_status,
10061                         x_msg_count         =>   x_msg_count,
10062                         x_msg_data          =>   x_msg_data);
10063 
10064                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10065                         RAISE FND_API.G_EXC_ERROR;
10066                     END IF;
10067 
10068 
10069        END LOOP;
10070    End if;
10071 
10072 
10073       	aso_validate_pvt.Validate_po_line_number
10074 		(
10075 			p_init_msg_list	  => fnd_api.g_false,
10076 			p_qte_header_rec    => l_qte_header_rec,
10077 			x_return_status     => x_return_status,
10078 			x_msg_count         => x_msg_count,
10079 			x_msg_data          => x_msg_data);
10080 
10081 		IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10082                   RAISE FND_API.G_EXC_ERROR;
10083             END IF;
10084 
10085 
10086 
10087 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10088 	     aso_debug_pub.add('Update_Quote - before header_pricing ', 1, 'N');
10089 	END IF;
10090 
10091      IF l_control_rec.header_pricing_event IS NOT NULL AND
10092 	   l_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR THEN
10093 
10094 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10095 	       aso_debug_pub.add('Update_Quote - in header_pricing ', 1, 'N');
10096 	   END IF;
10097 
10098 	   l_pricing_control_rec.request_type  := p_control_rec.pricing_request_type;
10099 	   l_pricing_control_rec.pricing_event := p_control_rec.header_pricing_event;
10100 	   l_pricing_control_rec.price_mode    := p_control_rec.price_mode;
10101 
10102         --New Code for to call overload pricing_order
10103 
10104         lv_qte_header_rec    := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
10105         lv_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(x_qte_header_rec.quote_header_id,null);
10106         lv_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(x_qte_header_rec.quote_header_id,null);
10107 
10108         if lv_hd_shipment_tbl.count = 1 then
10109             lv_hd_shipment_rec := lv_hd_shipment_tbl(1);
10110         end if;
10111 
10112         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10113             aso_debug_pub.add('Update_Quote: Before call to ASO_PRICING_INT.Pricing_Order');
10114             aso_debug_pub.add('Update_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
10115         END IF;
10116 
10117         ASO_PRICING_INT.Pricing_Order(
10118                     P_Api_Version_Number     => 1.0,
10119                     P_Init_Msg_List          => fnd_api.g_false,
10120                     P_Commit                 => fnd_api.g_false,
10121                     p_control_rec            => l_pricing_control_rec,
10122                     p_qte_header_rec         => lv_qte_header_rec,
10123                     p_hd_shipment_rec        => lv_hd_shipment_rec,
10124                     p_hd_price_attr_tbl      => lv_hd_price_attr_tbl,
10125                     p_qte_line_tbl           => x_qte_line_tbl,
10126                     --p_line_rltship_tbl     => l_line_rltship_tbl,
10127                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
10128                     --p_ln_shipment_tbl      => ln_shipment_tbl,
10129                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
10130                     x_qte_header_rec         => lx_qte_header_rec,
10131                     x_qte_line_tbl           => lx_qte_line_tbl,
10132                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
10133                     x_price_adj_tbl          => l_price_adj_tbl_out,
10134                     x_price_adj_attr_tbl     => l_Price_Adj_Attr_Tbl_out,
10135                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
10136                     x_return_status          => l_return_status,
10137                     x_msg_count              => x_msg_count,
10138                     x_msg_data               => x_msg_data );
10139 
10140 
10141         x_qte_line_tbl := lx_qte_line_tbl;
10142 
10143         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10144             aso_debug_pub.add('Update_Quote: After call to ASO_PRICING_INT.Pricing_Order');
10145 	       aso_debug_pub.add('Update_Quote: l_return_status:       ' || l_return_status);
10146             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl.count: ' || lx_qte_line_tbl.count);
10147             aso_debug_pub.add('Update_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
10148         END IF;
10149 
10150 	   IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10151 
10152 	         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10153 
10154 	         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10155 
10156 	   	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10157 	 	        FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
10158 		        FND_MSG_PUB.ADD;
10159 
10160 	         END IF;
10161 
10162 	         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10163 
10164 	   ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10165 
10166 	         x_return_status := FND_API.G_RET_STS_ERROR;
10167               RAISE FND_API.G_EXC_ERROR;
10168 
10169 	   END IF;
10170 
10171      END IF;
10172 
10173 
10174      /*New Pricing Changes to update the date*/
10175 
10176 
10177      IF p_control_rec.header_pricing_event = 'BATCH' and
10178         p_control_rec.price_mode='ENTIRE_QUOTE' THEN
10179 
10180           l_price_updated_date_flag := fnd_api.g_true;
10181 
10182      END IF;
10183 
10184 
10185              -- kchervel calculating tax for the whole quote
10186       IF p_control_rec.calculate_tax_flag = 'Y' THEN
10187 
10188 	 --Added the IF Condition below to facilitate TAX calculation changes .
10189        	IF l_qte_line_tbl.count >0 then
10190 		l_lines:=1;
10191 	else
10192 		SELECT
10193 			COUNT(QUOTE_HEADER_ID)
10194 		INTO
10195 			l_lines
10196 		FROM
10197 			ASO_QUOTE_LINES_ALL
10198 		WHERE
10199 			QUOTE_HEADER_ID=x_qte_header_rec.quote_header_id;
10200 	END IF;
10201 
10202 	--Commented the Below lines by Anoop on 15th August
10203 	/*  l_tax_control_rec.tax_level := 'SHIPPING';
10204          l_tax_control_rec.update_DB := 'Y';
10205 	ASO_TAX_INT.Calculate_Tax(
10206 		P_Api_Version_Number => 1.0,
10207 		p_quote_header_id    => x_qte_header_rec.quote_header_id,
10208 		P_Tax_Control_Rec    => l_tax_control_rec,
10209 		x_tax_amount	     => x_tax_amount    ,
10210 		x_tax_detail_tbl    => l_tax_detail_tbl,
10211 		X_Return_Status     => x_return_status ,
10212 		X_Msg_Count         => x_msg_count     ,
10213 		X_Msg_Data           => x_msg_data      );
10214 	*/
10215 
10216 
10217 --Changed the call to Tax API as a part of eTAX  by Anoop Rajan on August 9 2005
10218 IF l_lines>0 then
10219 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10220 	    aso_debug_pub.add('Update_Quote: Before call to tax engine');
10221 
10222     	    aso_debug_pub.add('Calculate Tax Flag : '|| p_control_rec.calculate_tax_flag);
10223 	END IF;
10224 	ASO_TAX_INT.CALCULATE_TAX_WITH_GTT (	p_API_VERSION_NUMBER => 1.0,
10225 						p_qte_header_id => x_qte_header_rec.quote_header_id,
10226 						x_return_status =>   x_return_status ,
10227 						X_Msg_Count =>	x_msg_count     ,
10228 						X_Msg_Data =>  x_msg_data      );
10229 
10230 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10231 	    aso_debug_pub.add('Update_Quote: After call to tax engine');
10232 	END IF;
10233 else
10234 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10235 		aso_debug_pub.add('Update_Quote: NO LINE RECORDS.SO TAX NOT CALCULATED : x_return_status: '|| x_return_status, 1, 'Y');
10236 	END IF;
10237 end if;
10238 
10239       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10240        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10241                FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
10242 	       FND_MESSAGE.Set_Token('API', 'CALCULATE_TAX_WITH_GTT', FALSE);
10243 	       FND_MSG_PUB.ADD;
10244        END IF;
10245 
10246        IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10247             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10248        ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
10249             RAISE FND_API.G_EXC_ERROR;
10250        END IF;
10251 
10252       END IF;
10253 
10254       END IF; -- tax flag set
10255 
10256 
10257       /*New Tax Changes to update the date*/
10258 
10259 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10260 
10261 	    aso_debug_pub.add('Update_Quote: control record parameter values');
10262 	    aso_debug_pub.add('p_control_rec.header_pricing_event: ' || p_control_rec.header_pricing_event);
10263 	    aso_debug_pub.add('p_control_rec.price_mode:           ' || p_control_rec.price_mode);
10264 	    aso_debug_pub.add('p_control_rec.calculate_tax_flag:   ' || p_control_rec.calculate_tax_flag);
10265 	    aso_debug_pub.add('l_price_updated_date_flag:          ' || l_price_updated_date_flag);
10266 
10267 	 END IF;
10268 
10269       IF p_control_rec.calculate_tax_flag = 'Y' THEN
10270 
10271           IF l_price_updated_date_flag = fnd_api.g_true THEN
10272 
10273               update aso_quote_headers_all
10274               set tax_updated_date   = sysdate,
10275                   price_updated_date = sysdate,
10276 			   recalculate_flag   = 'N'
10277               where quote_header_id = x_qte_header_rec.quote_header_id;
10278 
10279           ELSE
10280 
10281               update aso_quote_headers_all
10282               set tax_updated_date   = sysdate
10283               where quote_header_id = x_qte_header_rec.quote_header_id;
10284 
10285           END IF;
10286 
10287       ELSIF l_price_updated_date_flag = fnd_api.g_true THEN
10288 
10289           update aso_quote_headers_all
10290           set price_updated_date = sysdate,
10291 		    recalculate_flag   = 'N'
10292           where quote_header_id = x_qte_header_rec.quote_header_id;
10293 
10294       END IF;
10295 
10296 
10297 
10298       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
10299       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
10300       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
10301       -- IF calculate_tax_flag = 'N', not summation on line level tax,
10302       -- just take the value of l_qte_header_rec.total_tax as the total_tax
10303       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
10304       -- just take the value of l_qte_header_rec.total_freight_charge
10305       -- (or l_hd_shipment_tbl(1).total_freight_charge???) as the TOTAL_SHIPPING_CHARGE
10306 
10307 
10308       IF p_control_rec.calculate_tax_flag = 'N' AND
10309 		 l_qte_header_rec.total_tax IS NOT NULL THEN
10310 	  l_calculate_tax := 'N';
10311       END IF;
10312       IF p_control_rec.calculate_freight_charge_flag = 'N' AND
10313 		l_qte_header_rec.total_shipping_charge IS NOT NULL THEN
10314 	  l_calculate_freight_charge := 'N';
10315       END IF;
10316 
10317 
10318       -- Start of PNPL Changes
10319       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
10320 
10321       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
10322                                                                      p_org_id =>x_qte_header_rec.org_id);
10323 
10324       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10325           aso_debug_pub.add('Update_Quote - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
10326       END IF;
10327 
10328        IF (  (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(x_qte_header_rec.quote_type,'X') <>  'T')
10329             and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
10330               or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
10331 
10332            l_call_ar_api :=  fnd_api.g_true;
10333 
10334            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10335              aso_debug_pub.add('Update_Quote - p_control_rec.header_pricing_event: '||p_control_rec.header_pricing_event, 1, 'Y');
10336              aso_debug_pub.add('Update_Quote - p_control_rec.price_mode          : '||p_control_rec.price_mode, 1, 'Y');
10337              aso_debug_pub.add('Update_Quote - l_qte_line_tbl.count              : '||l_qte_line_tbl.count, 1, 'Y');
10338            END IF;
10339 
10340          -- check if price_mode is change_line, if so then call ar api only if some lines are being created or updated
10341 	    IF (p_control_rec.header_pricing_event = 'BATCH' and p_control_rec.price_mode = 'CHANGE_LINE') THEN
10342                if (l_qte_line_tbl.count > 0) then
10343                   l_call_ar_api :=  fnd_api.g_false;
10344                   for i in 1..l_qte_line_tbl.count loop
10345 			    if (l_qte_line_tbl(i).operation_code = 'CREATE' or l_qte_line_tbl(i).operation_code = 'UPDATE')  then
10346 			     l_call_ar_api :=  fnd_api.g_true;
10347 				exit;
10348 			    end if;
10349 			   end loop;
10350 			else
10351 			 l_call_ar_api :=  fnd_api.g_false;
10352 			end if;
10353 	    END IF;
10354 
10355            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10356               aso_debug_pub.add('Update_Quote - l_call_ar_api: '|| l_call_ar_api, 1, 'Y');
10357            END IF;
10358 
10359      IF (l_call_ar_api = fnd_api.g_true ) then
10360 
10361        For quote_lines_rec IN c_quote_lines(x_qte_header_rec.quote_header_id) LOOP
10362 
10363           -- resetting the line term id variable
10364           l_line_term_id := null;
10365 
10366        -- get the line freight charges
10367           l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( x_qte_header_rec.quote_header_id,
10368                                                                                quote_lines_rec.quote_line_id );
10369 
10370        -- get the line tax
10371           open c_tax_line(x_qte_header_rec.quote_header_id,quote_lines_rec.quote_line_id);
10372           fetch c_tax_line into l_line_tax;
10373           close c_tax_line;
10374 
10375        -- get the payment term id for the line
10376           open get_line_payment_term(x_qte_header_rec.quote_header_id,quote_lines_rec.quote_line_id);
10377           fetch get_line_payment_term into l_line_term_id;
10378           close get_line_payment_term;
10379 
10380            -- if line term id is null then get it from header
10381            If l_line_term_id is null  THEN
10382                open get_hdr_payment_term(x_qte_header_rec.quote_header_id);
10383                fetch get_hdr_payment_term into l_line_term_id;
10384                close get_hdr_payment_term;
10385            END IF;
10386 
10387       l_line_amount := quote_lines_rec.line_quote_price * quote_lines_rec.quantity;
10388 
10389 
10390       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10391 		aso_debug_pub.add('Update_Quote - ********** Input to AR_VIEW_TERM_GRP.pay_now_amounts follows ********** ', 1, 'Y');
10392 		aso_debug_pub.add('Update_Quote - quote_lines_rec.quote_line_id: '||quote_lines_rec.quote_line_id, 1, 'Y');
10393           aso_debug_pub.add('Update_Quote - l_line_amount:                 '||l_line_amount, 1, 'Y');
10394           aso_debug_pub.add('Update_Quote - l_line_shipping_charge:        '||l_line_shipping_charge, 1, 'Y');
10395           aso_debug_pub.add('Update_Quote - l_line_tax:                    '||l_line_tax, 1, 'Y');
10396           aso_debug_pub.add('Update_Quote - l_line_term_id:                '||l_line_term_id, 1, 'Y');
10397 	 END IF;
10398 
10399       IF (l_line_term_id is not null and l_line_term_id <> fnd_api.g_miss_num) then
10400 
10401       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10402           aso_debug_pub.add('Update_Quote: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
10403       END IF;
10404 
10405        -- Call the AR API to get the amounts
10406              AR_VIEW_TERM_GRP.pay_now_amounts(
10407                     p_api_version              => 1.0,
10408                     p_init_msg_list            => p_init_msg_list,
10409                     p_validation_level         => FND_API.G_VALID_LEVEL_FULL,
10410                     p_term_id                  => l_line_term_id,
10411                     p_currency_code            => x_qte_header_rec.currency_code,
10412                     p_line_amount              => l_line_amount,
10413                     p_tax_amount               => l_line_tax,
10414                     p_freight_amount           => l_line_shipping_charge,
10415                     x_pay_now_line_amount      => l_paynow_amount,
10416                     x_pay_now_tax_amount       => l_paynow_tax,
10417                     x_pay_now_freight_amount   => l_paynow_charges,
10418                     x_pay_now_total_amount     => l_paynow_total,
10419                     X_Return_Status            => x_return_status ,
10420                     X_Msg_Count                => x_msg_count     ,
10421                     X_Msg_Data                 => x_msg_data      );
10422 
10423           IF aso_debug_pub.g_debug_flag = 'Y' THEN
10424 		    aso_debug_pub.add('Update_Quote: After call to AR_VIEW_TERM_GRP.pay_now_amounts: x_return_status: '|| x_return_status, 1, 'Y');          END IF;
10425 
10426           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10427 
10428               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10429                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
10430                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
10431                   FND_MSG_PUB.ADD;
10432               END IF;
10433 
10434               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10435                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10436               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
10437                    RAISE FND_API.G_EXC_ERROR;
10438               END IF;
10439 
10440           END IF;
10441 
10442       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10443         aso_debug_pub.add('Update_Quote - Output from AR_VIEW_TERM_GRP.pay_now_amounts follows:', 1, 'Y');
10444         aso_debug_pub.add('Update_Quote - l_paynow_amount:         '||l_paynow_amount, 1, 'Y');
10445         aso_debug_pub.add('Update_Quote - l_paynow_charges:        '||l_paynow_charges, 1, 'Y');
10446         aso_debug_pub.add('Update_Quote - l_paynow_tax:            '||l_paynow_tax, 1, 'Y');
10447         aso_debug_pub.add('Update_Quote - l_paynow_total:          '||l_paynow_total, 1, 'Y');
10448         aso_debug_pub.add('Update_Quote - ************  End  PNPL Processing ************ ', 1, 'Y');
10449       END IF;
10450 
10451 
10452           -- Update the corresponding columns in the line table
10453           update aso_quote_lines_all
10454           set line_paynow_charges    = l_paynow_charges,
10455               line_paynow_tax        = l_paynow_tax,
10456               line_paynow_subtotal   = l_paynow_amount,
10457               last_update_date       =  sysdate,
10458               last_updated_by        =  fnd_global.user_id,
10459               last_update_login      =  fnd_global.conc_login_id
10460           where quote_line_id = quote_lines_rec.quote_line_id;
10461 
10462         end if; -- check for term id null
10463        end loop;
10464 
10465     END IF; -- end if for call ar api flag
10466    END IF;
10467 
10468       -- End of PNPL Changes
10469 
10470       Update_Quote_Total (
10471 			P_Qte_Header_id		  => x_Qte_Header_rec.quote_header_id,
10472 			P_Calculate_Tax		  => p_control_rec.calculate_tax_flag,
10473 			P_calculate_Freight_Charge => p_control_rec.calculate_freight_charge_flag,
10474                p_control_rec		       =>  p_control_rec,
10475                P_Call_Ar_Api_Flag         => l_call_ar_api,
10476 			X_Return_Status 	       => x_return_status,
10477 			X_Msg_Count		       => x_msg_count,
10478 			X_Msg_Data		       => x_msg_data);
10479 
10480       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
10481 
10482       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10483 
10484 
10485 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10486 	          FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10487 	          FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDT TOTAL', TRUE);
10488 	          FND_MSG_PUB.ADD;
10489 	      END IF;
10490 
10491 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10492 
10493       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
10494 
10495 	      RAISE FND_API.G_EXC_ERROR;
10496 
10497       END IF;
10498 
10499       --
10500       -- End of API body.
10501       --
10502 
10503       -- Change START
10504       -- Release 12 TAP Changes
10505       -- Girish Sachdeva 8/30/2005
10506       -- Adding the call to insert record in the ASO_CHANGED_QUOTES
10507 
10508       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10509 		aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT.UPDATE_QUOTE : Calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || x_qte_header_rec.quote_number, 1, 'Y');
10510       END IF;
10511 
10512       -- Call to insert record in ASO_CHANGED_QUOTES
10513       ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(x_qte_header_rec.quote_number);
10514 
10515       -- Change END
10516 
10517 
10518       -- Standard check for p_commit
10519       IF FND_API.to_Boolean( p_commit ) THEN
10520 	     COMMIT WORK;
10521       END IF;
10522 
10523       -- Standard call to get message count and if count is 1, get message info.
10524       FND_MSG_PUB.Count_And_Get
10525       (  p_count	  =>   x_msg_count,
10526   	 p_data 	  =>   x_msg_data
10527       );
10528 
10529       EXCEPTION
10530 	  WHEN FND_API.G_EXC_ERROR THEN
10531 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10532 		   P_API_NAME => L_API_NAME
10533 		  ,P_PKG_NAME => G_PKG_NAME
10534 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
10535 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10536 		  ,P_SQLCODE => SQLCODE
10537 		  ,P_SQLERRM => SQLERRM
10538 		  ,X_MSG_COUNT => X_MSG_COUNT
10539 		  ,X_MSG_DATA => X_MSG_DATA
10540 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10541 
10542 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10543 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10544 		   P_API_NAME => L_API_NAME
10545 		  ,P_PKG_NAME => G_PKG_NAME
10546 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10547 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10548 		  ,P_SQLCODE => SQLCODE
10549 		  ,P_SQLERRM => SQLERRM
10550 		  ,X_MSG_COUNT => X_MSG_COUNT
10551 		  ,X_MSG_DATA => X_MSG_DATA
10552 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10553 
10554 	  WHEN OTHERS THEN
10555 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10556 		   P_API_NAME => L_API_NAME
10557 		  ,P_PKG_NAME => G_PKG_NAME
10558 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
10559 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10560 		  ,P_SQLCODE => SQLCODE
10561 		  ,P_SQLERRM => SQLERRM
10562 		  ,X_MSG_COUNT => X_MSG_COUNT
10563 		  ,X_MSG_DATA => X_MSG_DATA
10564 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10565 End Update_quote;
10566 
10567 
10568 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
10569 --	 The Master delete procedure may not be needed depends on different business requirements.
10570 PROCEDURE Delete_quote(
10571     P_Api_Version_Number	 IN   NUMBER,
10572     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
10573     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
10574     P_qte_Header_Id		 IN   NUMBER,
10575     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
10576     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
10577     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2
10578     )
10579 
10580 IS
10581     l_api_name		      CONSTANT VARCHAR2(30) := 'Delete_quote';
10582     l_api_version_number      CONSTANT NUMBER	:= 1.0;
10583      l_qln_id NUMBER;
10584     CURSOR c_qte_lines IS
10585 	SELECT quote_line_id FROM ASO_QUOTE_LINES_ALL
10586 	WHERE quote_header_id = p_qte_header_id;
10587 
10588     l_qte_line_rec		ASO_QUOTE_PUB.Qte_Line_Rec_Type;
10589     CURSOR c_qte_line(l_d_qte_line NUMBER) IS
10590     SELECT quote_line_id  FROM ASO_QUOTE_LINES_ALL
10591     where quote_line_id= l_qte_line_rec.quote_line_id;
10592 BEGIN
10593       -- Standard Start of API savepoint
10594       SAVEPOINT DELETE_quote_PVT;
10595 
10596       -- Standard call to check for call compatibility.
10597       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
10598 			 		     p_api_version_number,
10599 					   l_api_name,
10600 					   G_PKG_NAME)
10601       THEN
10602 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10603       END IF;
10604 
10605 
10606       -- Initialize message list if p_init_msg_list is set to TRUE.
10607       IF FND_API.to_Boolean( p_init_msg_list )
10608       THEN
10609 	  FND_MSG_PUB.initialize;
10610       END IF;
10611 
10612 
10613       -- Initialize API return status to SUCCESS
10614       x_return_status := FND_API.G_RET_STS_SUCCESS;
10615 
10616       --
10617       -- Api body
10618       --
10619 
10620       -- Invoke table handler(ASO_QUOTE_HEADERS_PKG.Delete_Row)
10621 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10622 	 aso_debug_pub.add('Delete_Quote - Begin ', 1, 'Y');
10623 	 END IF;
10624 
10625       ASO_QUOTE_HEADERS_PKG.Delete_Row(
10626 	  p_QUOTE_HEADER_ID  => p_qte_header_id);
10627 
10628       FOR line_rec IN c_qte_lines LOOP
10629 	  l_qte_line_rec.quote_line_id := line_rec.quote_line_id;
10630 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10631 	 aso_debug_pub.add('Delete_Quote - before delete_line- quote_line_id: '|| l_qte_line_rec.quote_line_id, 1, 'N');
10632 	 END IF;
10633 
10634                OPEN c_qte_line(l_qte_line_rec.quote_line_id);
10635          FETCH c_qte_line into l_qln_id;
10636          IF c_qte_line%FOUND AND l_qln_id <> FND_API.G_MISS_NUM  THEN
10637 	  ASO_QUOTE_LINES_PVT.Delete_Quote_Line(
10638 		P_Api_Version_Number	=> 1.0,
10639 		P_qte_line_Rec		=> l_qte_line_rec,
10640 		P_Update_Header_Flag	=> FND_API.G_FALSE,
10641 		X_Return_Status 	=> X_Return_Status,
10642 		X_Msg_Count		=> X_Msg_Count,
10643 		X_Msg_Data		=> X_Msg_Data);
10644           END IF;
10645           CLOSE c_qte_line;
10646 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10647 	      RAISE FND_API.G_EXC_ERROR;
10648 	  END IF;
10649       END LOOP;
10650 
10651 
10652       --New code for Delete_Promotion 07/22/02
10653 
10654       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10655 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ADJUSTMENTS table data',1,'N');
10656 	 END IF;
10657 
10658       DELETE FROM ASO_PRICE_ADJUSTMENTS
10659       WHERE QUOTE_HEADER_ID = p_qte_header_id;
10660 
10661       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10662 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ADJ_ATTRIBS table data',1,'N');
10663 	 END IF;
10664 
10665       DELETE FROM aso_price_adj_attribs
10666       WHERE price_adjustment_id IN (select price_adjustment_id
10667                                    from aso_price_adjustments
10668                                    where quote_header_id = p_qte_header_id
10669                                    and quote_line_id is NULL);
10670 
10671       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10672 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ATTRIBUTES table data',1,'N');
10673 	 END IF;
10674 
10675       DELETE FROM ASO_PRICE_ATTRIBUTES
10676       WHERE QUOTE_HEADER_ID = p_qte_header_id
10677             and quote_line_id is NULL;
10678 
10679       IF aso_debug_pub.g_debug_flag = 'Y' THEN
10680 	 aso_debug_pub.add('Delete_Quote: After deleting ASO_PRICE_ATTRIBUTES table data',1,'N');
10681 	 END IF;
10682 
10683 
10684       --End of New code for Delete_Promotion 07/22/02
10685 
10686 
10687       DELETE FROM ASO_PAYMENTS
10688 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10689 
10690       DELETE FROM ASO_FREIGHT_CHARGES
10691 	 WHERE quote_shipment_id in
10692 		(select shipment_id from  ASO_SHIPMENTS
10693 		  where QUOTE_HEADER_ID = p_qte_header_id);
10694 
10695       DELETE FROM ASO_SHIPMENTS
10696 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10697 
10698       DELETE FROM ASO_TAX_DETAILS
10699 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10700 
10701       DELETE FROM ASO_SALES_CREDITS
10702 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10703 
10704 
10705       DELETE FROM ASO_QUOTE_PARTIES
10706 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10707 
10708       DELETE FROM ASO_QUOTE_LINE_ATTRIBS_EXT
10709     	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
10710 
10711       --
10712       -- End of API body
10713       --
10714 
10715       -- Standard check for p_commit
10716       IF FND_API.to_Boolean( p_commit )
10717       THEN
10718 	  COMMIT WORK;
10719       END IF;
10720 
10721 
10722       -- Standard call to get message count and if count is 1, get message info.
10723       FND_MSG_PUB.Count_And_Get
10724       (  p_count	  =>   x_msg_count,
10725 	 p_data 	  =>   x_msg_data
10726       );
10727 
10728       EXCEPTION
10729 	  WHEN FND_API.G_EXC_ERROR THEN
10730 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10731 		   P_API_NAME => L_API_NAME
10732 		  ,P_PKG_NAME => G_PKG_NAME
10733 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
10734 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10735 		  ,P_SQLCODE => SQLCODE
10736 		  ,P_SQLERRM => SQLERRM
10737 		  ,X_MSG_COUNT => X_MSG_COUNT
10738 		  ,X_MSG_DATA => X_MSG_DATA
10739 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10740 
10741 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10742 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10743 		   P_API_NAME => L_API_NAME
10744 		  ,P_PKG_NAME => G_PKG_NAME
10745 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10746 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10747 		  ,P_SQLCODE => SQLCODE
10748 		  ,P_SQLERRM => SQLERRM
10749 		  ,X_MSG_COUNT => X_MSG_COUNT
10750 		  ,X_MSG_DATA => X_MSG_DATA
10751 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10752 
10753 	  WHEN OTHERS THEN
10754 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10755 		   P_API_NAME => L_API_NAME
10756 		  ,P_PKG_NAME => G_PKG_NAME
10757 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
10758 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10759 		  ,P_SQLCODE => SQLCODE
10760 		  ,P_SQLERRM => SQLERRM
10761 		  ,X_MSG_COUNT => X_MSG_COUNT
10762 		  ,X_MSG_DATA => X_MSG_DATA
10763 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10764 End Delete_quote;
10765 
10766 -- NAME
10767 --   Copy_Quote
10768 --
10769 -- PURPOSE
10770 --   Copy the quote (with quote_id = p_original_quote_id) to a new quote
10771 --   (set original_quote_id = p_original_quote_id).
10772 --   If p_header_only is FALSE, also copy all the associated quote lines
10773 --   to new quote lines and create expected purchases for each line.
10774 --
10775 
10776 PROCEDURE Copy_Quote
10777 (
10778     P_Api_Version_Number	 IN   NUMBER,
10779     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
10780     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
10781     P_control_rec         IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
10782     p_validation_level		 IN   NUMBER	   := FND_API.G_VALID_LEVEL_FULL,
10783     P_Qte_Header_Id		 IN   NUMBER,
10784     P_Last_Update_Date		 IN   DATE,
10785     P_Copy_Only_Header		 IN   VARCHAR2	   := FND_API.G_FALSE,
10786     P_New_Version		 IN   VARCHAR2	   := FND_API.G_FALSE,
10787     P_Qte_Status_Id		 IN   NUMBER	   := NULL,
10788     P_Qte_Number		 IN   NUMBER	   := NULL,
10789     X_Qte_Header_Id		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
10790     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
10791     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
10792     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2
10793 ) IS
10794 /*  -- original cpy_qte
10795     CURSOR C_Validate_Quote (x_qte_header_id NUMBER) IS
10796 	SELECT 'X'
10797 	FROM ASO_QUOTE_HEADERS_ALL
10798 	WHERE quote_header_id = x_qte_header_id;
10799 
10800 
10801 
10802     CURSOR c_line_relation (x_quote_header_id NUMBER) IS
10803 	SELECT LINE_RELATIONSHIP_ID,
10804 CREATION_DATE,
10805 CREATED_BY,
10806 LAST_UPDATED_BY,
10807 LAST_UPDATE_DATE,
10808 LAST_UPDATE_LOGIN,
10809 REQUEST_ID,
10810 PROGRAM_APPLICATION_ID,
10811 PROGRAM_ID,
10812 PROGRAM_UPDATE_DATE,
10813 QUOTE_LINE_ID,
10814 RELATED_QUOTE_LINE_ID,
10815 RELATIONSHIP_TYPE_CODE,
10816 RECIPROCAL_FLAG FROM ASO_LINE_RELATIONSHIPS
10817 	WHERE quote_line_id IN
10818 		(SELECT quote_line_id FROM aso_quote_lines_all
10819 		 WHERE quote_header_id = x_quote_header_id)
10820 	  AND related_quote_line_id IN
10821 		(SELECT quote_line_id FROM aso_quote_lines_all
10822 		 WHERE quote_header_id = x_quote_header_id);
10823 */ -- original copy_qte
10824 
10825 /* Commented by Biplabi Mishra to change the EXISTS to IN 07/09/01
10826 
10827 
10828     CURSOR c_line_relation (x_quote_header_id NUMBER) IS
10829 	SELECT LINE_RELATIONSHIP_ID,
10830 CREATION_DATE,
10831 CREATED_BY,
10832 LAST_UPDATED_BY,
10833 LAST_UPDATE_DATE,
10834 LAST_UPDATE_LOGIN,
10835 REQUEST_ID,
10836 PROGRAM_APPLICATION_ID,
10837 PROGRAM_ID,
10838 PROGRAM_UPDATE_DATE,
10839 QUOTE_LINE_ID,
10840 RELATED_QUOTE_LINE_ID,
10841 RELATIONSHIP_TYPE_CODE,
10842 RECIPROCAL_FLAG FROM ASO_LINE_RELATIONSHIPS
10843 	WHERE EXISTS
10844 		(SELECT 'x' FROM aso_quote_lines_all aql
10845 		 WHERE aql.quote_header_id = x_quote_header_id
10846                  AND aql.quote_line_id = aso_line_relationships.quote_line_id)
10847 	  AND EXISTS
10848                 (SELECT 'x' FROM aso_quote_lines_all aql
10849 		 WHERE aql.quote_header_id = x_quote_header_id
10850                  AND aql.quote_line_id = aso_line_relationships.related_quote_line_id);
10851 
10852 */
10853 
10854 
10855 /* Commented by Biplabi Mishra to change the IN to EXISTS 04/30/01
10856 
10857     CURSOR c_price_adj_rel (x_quote_header_id NUMBER) IS
10858 	SELECT
10859     QUOTE_SHIPMENT_ID,
10860 SECURITY_GROUP_ID,
10861 OBJECT_VERSION_NUMBER,
10862 ADJ_RELATIONSHIP_ID,
10863 CREATION_DATE,
10864 CREATED_BY,
10865 LAST_UPDATE_DATE,
10866 LAST_UPDATED_BY,
10867 LAST_UPDATE_LOGIN,
10868 PROGRAM_APPLICATION_ID,
10869 PROGRAM_ID,
10870 PROGRAM_UPDATE_DATE,
10871 REQUEST_ID,
10872 QUOTE_LINE_ID,
10873 PRICE_ADJUSTMENT_ID,
10874 RLTD_PRICE_ADJ_ID
10875  FROM ASO_PRICE_ADJ_RELATIONSHIPS
10876 	WHERE price_adjustment_id IN
10877 		(SELECT price_adjustment_id FROM aso_price_adjustments
10878 		 WHERE quote_header_id = x_quote_header_id)
10879 	  AND quote_line_id IN
10880 		(SELECT quote_line_id FROM aso_quote_lines_all
10881 		 WHERE quote_header_id = x_quote_header_id);
10882 */
10883 /*
10884 CURSOR c_price_adj_rel (x_quote_header_id NUMBER) IS
10885         SELECT
10886 apr.QUOTE_SHIPMENT_ID,
10887 --apr.SECURITY_GROUP_ID,
10888 apr.OBJECT_VERSION_NUMBER,
10889 apr.ADJ_RELATIONSHIP_ID,
10890 apr.CREATION_DATE,
10891 apr.CREATED_BY,
10892 apr.LAST_UPDATE_DATE,
10893 apr.LAST_UPDATED_BY,
10894 apr.LAST_UPDATE_LOGIN,
10895 apr.PROGRAM_APPLICATION_ID,
10896 apr.PROGRAM_ID,
10897 apr.PROGRAM_UPDATE_DATE,
10898 apr.REQUEST_ID,
10899 apr.QUOTE_LINE_ID,
10900 apr.PRICE_ADJUSTMENT_ID,
10901 apr.RLTD_PRICE_ADJ_ID
10902 FROM ASO_PRICE_ADJ_RELATIONSHIPS apr,
10903      ASO_PRICE_ADJUSTMENTS apa
10904 WHERE apr.price_adjustment_id = apa.price_adjustment_id
10905 AND apa.quote_header_id = x_quote_header_id
10906 AND EXISTS (select 'x' from aso_quote_lines_all aql
10907             where aql.quote_header_id = x_quote_header_id
10908             and aql.quote_line_id = apr.quote_line_id);
10909 */
10910 
10911 /*  -- original cpy_qte
10912     CURSOR C_Qte_Number IS
10913 	SELECT ASO_QUOTE_NUMBER_S.nextval
10914 	FROM sys.dual;
10915 
10916     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
10917 	SELECT max(quote_version)
10918 	FROM ASO_QUOTE_HEADERS_ALL
10919 	WHERE quote_number = X_qte_number;
10920 
10921     CURSOR C_Qte_Status_Id (c_status_code VARCHAR2) IS
10922 	SELECT quote_status_id
10923 	FROM ASO_QUOTE_STATUSES_B
10924 	WHERE status_code = c_status_code;
10925 	--WHERE status_code = 'DRAFT';
10926 
10927     CURSOR C_Qte_Status_Trans (from_id NUMBER, to_id NUMBER) IS
10928 	SELECT enabled_flag
10929 	FROM ASO_QUOTE_STATUS_TRANSITIONS
10930 	WHERE from_status_id = from_id AND to_status_id = to_id;
10931 
10932     CURSOR C_Qte_Number_exists (X_qte_number NUMBER) IS
10933      SELECT quote_number
10934      FROM ASO_QUOTE_HEADERS_ALL
10935      WHERE quote_number = X_qte_number;
10936 
10937     l_api_name		CONSTANT VARCHAR2(30) := 'Copy_quote';
10938     l_api_version_number	CONSTANT NUMBER 	:= 1.0;
10939     l_return_status		VARCHAR2(1);
10940     l_first_version		VARCHAR2(1)	:= FND_API.G_TRUE;
10941     l_val			  VARCHAR2(1);
10942     l_enabled_flag		  VARCHAR2(1);
10943     l_qte_header_rec	ASO_QUOTE_PUB.Qte_Header_Rec_Type;
10944     l_HEADER_RELATIONSHIP_ID	NUMBER;
10945     l_New_Version   VARCHAR2(1)	   := p_New_Version;
10946     l_qte_num                 NUMBER;
10947 */  -- original cpy_qte
10948 
10949     CURSOR C_Get_Hdr_Info(qte_hdr_id NUMBER) IS
10950      SELECT Quote_Expiration_Date, Resource_Id, Resource_Grp_Id
10951      FROM ASO_QUOTE_HEADERS_ALL
10952      WHERE Quote_Header_Id = qte_hdr_id;
10953 
10954     l_api_name      	    CONSTANT VARCHAR2(30) := 'Copy_quote';
10955     l_api_version_number     CONSTANT NUMBER     := 1.0;
10956 
10957     lx_qte_number            NUMBER;
10958     l_Copy_Quote_Header_Rec  ASO_COPY_QUOTE_PUB.Copy_Quote_Header_Rec_Type
10959                               := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Header_Rec;
10960     l_Copy_Quote_Control_Rec ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
10961                               := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Control_Rec;
10962 
10963 BEGIN
10964       -- Standard Start of API savepoint
10965       SAVEPOINT	COPY_QUOTE_PVT;
10966 
10967       -- Standard call to check for call compatibility.
10968       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
10969 					   p_api_version_number,
10970     	    	    	    	    	   l_api_name,
10971 			    	    	   G_PKG_NAME) THEN
10972 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10973       END IF;
10974 
10975       -- Initialize message list if p_init_msg_list is set to TRUE.
10976       IF FND_API.to_Boolean( p_init_msg_list ) THEN
10977 	  FND_MSG_PUB.initialize;
10978       END IF;
10979 
10980       -- Debug Message
10981       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
10982 	  FND_MESSAGE.Set_Name('ASO', 'Copy Quote API: Start');
10983 	  FND_MSG_PUB.Add;
10984       END IF;
10985 
10986 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10987 aso_debug_pub.add('p_qte_header_id: '||p_qte_header_id,1,'N');
10988 aso_debug_pub.add('p_qte_number: '||p_qte_number,1,'N');
10989 aso_debug_pub.add('p_copy_only_header: '||p_copy_only_header,1,'N');
10990 aso_debug_pub.add('p_new_version: '||p_new_version,1,'N');
10991 aso_debug_pub.add('p_control_rec.copy_att_flag: '||p_control_rec.copy_att_flag,1,'N');
10992 aso_debug_pub.add('p_control_rec.copy_notes_flag: '||p_control_rec.copy_notes_flag,1,'N');
10993 aso_debug_pub.add('p_control_rec.copy_task_flag: '||p_control_rec.copy_task_flag,1,'N');
10994 END IF;
10995 
10996     OPEN C_Get_Hdr_Info(p_qte_header_id);
10997     FETCH C_Get_Hdr_Info INTO l_Copy_Quote_Header_Rec.Quote_Expiration_Date,
10998                          l_Copy_Quote_Header_Rec.Resource_id, l_Copy_Quote_Header_Rec.Resource_Grp_Id;
10999     CLOSE C_Get_Hdr_Info;
11000 
11001     IF l_Copy_Quote_Header_Rec.Quote_Expiration_Date IS NULL THEN
11002         l_Copy_Quote_Header_Rec.Quote_Expiration_Date := FND_API.G_MISS_DATE;
11003     END IF;
11004 
11005     IF l_Copy_Quote_Header_Rec.Resource_Id IS NULL THEN
11006         l_Copy_Quote_Header_Rec.Resource_Id := FND_API.G_MISS_NUM;
11007     END IF;
11008 
11009     IF l_Copy_Quote_Header_Rec.Resource_Grp_Id IS NULL THEN
11010         l_Copy_Quote_Header_Rec.Resource_Grp_Id := FND_API.G_MISS_NUM;
11011     END IF;
11012 
11013 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11014 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Quote_Expiration_Date: '||l_Copy_Quote_Header_Rec.Quote_Expiration_Date,1,'N');
11015 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Resource_Id: '||l_Copy_Quote_Header_Rec.Resource_Id,1,'N');
11016 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Resource_Grp_Id: '||l_Copy_Quote_Header_Rec.Resource_Grp_Id,1,'N');
11017 END IF;
11018 
11019 	l_Copy_Quote_Header_Rec.quote_header_id := p_qte_header_id;
11020 	l_Copy_Quote_Header_Rec.quote_number := p_qte_number;
11021 
11022 	l_Copy_Quote_Control_Rec.copy_header_only := p_copy_only_header;
11023 	l_Copy_Quote_Control_Rec.New_Version := p_new_version;
11024 	IF p_control_rec.copy_att_flag = 'Y' THEN
11025 		l_Copy_Quote_Control_Rec.Copy_Attachment := FND_API.G_TRUE;
11026 	ELSIF p_control_rec.copy_att_flag = 'N' THEN
11027 		l_Copy_Quote_Control_Rec.Copy_Attachment := FND_API.G_FALSE;
11028 	END IF;
11029 
11030      IF p_control_rec.copy_notes_flag = 'Y' THEN
11031           l_Copy_Quote_Control_Rec.Copy_Note := FND_API.G_TRUE;
11032      ELSIF p_control_rec.copy_notes_flag = 'N' THEN
11033           l_Copy_Quote_Control_Rec.Copy_Note := FND_API.G_FALSE;
11034      END IF;
11035 
11036      IF p_control_rec.copy_task_flag = 'Y' THEN
11037           l_Copy_Quote_Control_Rec.Copy_Task := FND_API.G_TRUE;
11038      ELSIF p_control_rec.copy_task_flag = 'N' THEN
11039           l_Copy_Quote_Control_Rec.Copy_Task := FND_API.G_FALSE;
11040      END IF;
11041 
11042 	ASO_COPY_QUOTE_PVT.Copy_Quote(
11043     	 	P_Api_Version_Number          =>   p_api_version_number,
11044      	P_Init_Msg_List               =>   p_init_msg_list,
11045      	P_Commit                      =>   p_commit,
11046      	P_Copy_Quote_Header_Rec       =>   l_Copy_Quote_Header_Rec,
11047      	P_Copy_Quote_Control_Rec      =>   l_Copy_Quote_Control_Rec,
11048      	X_Qte_Header_Id               =>   X_Qte_Header_Id,
11049      	X_Qte_Number                  =>   lX_Qte_Number,
11050      	X_Return_Status               =>   X_Return_Status,
11051      	X_Msg_Count                   =>   X_Msg_Count,
11052      	X_Msg_Data                    =>   X_Msg_Data );
11053 
11054 
11055 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11056 aso_debug_pub.add('After Copy_Qte:X_Return_Status: '||X_Return_Status,1,'N');
11057 aso_debug_pub.add('After Copy_Qte:X_Qte_Header_Id: '||X_Qte_Header_Id,1,'N');
11058 END IF;
11059 
11060 /*  -- original cpy_qte
11061 
11062       --  Initialize API return status to success
11063       l_return_status := FND_API.G_RET_STS_SUCCESS;
11064 
11065       --
11066       -- API body
11067       --
11068       -- ******************************************************************
11069       -- Validate Environment
11070       -- ******************************************************************
11071       IF FND_GLOBAL.User_Id IS NULL THEN
11072 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11073 	      FND_MESSAGE.Set_Name('ASO', 'UT_CANNOT_GET_PROFILE_VALUE');
11074     	      FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
11075 	      FND_MSG_PUB.ADD;
11076 	  END IF;
11077 	  RAISE FND_API.G_EXC_ERROR;
11078       END IF;
11079       -- ******************************************************************
11080       IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL) THEN
11081 	  OPEN C_Validate_Quote (p_qte_header_id);
11082 	  FETCH C_Validate_Quote into l_val;
11083 	  IF C_Validate_Quote%NOTFOUND THEN
11084 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11085 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
11086 		  FND_MESSAGE.Set_Token('COLUMN', 'ORIGINAL_QUOTE_ID', FALSE);
11087 		  FND_MESSAGE.Set_Token('VALUE', TO_CHAR(p_qte_header_id), FALSE);
11088 		  FND_MSG_PUB.ADD;
11089 	      END IF;
11090 	      CLOSE C_Validate_Quote;
11091 	      RAISE FND_API.G_EXC_ERROR;
11092 	  END IF;
11093 	  CLOSE C_Validate_Quote;
11094       END IF;
11095 
11096      IF aso_debug_pub.g_debug_flag = 'Y' THEN
11097 	aso_debug_pub.add('Copy_Quote - Begin- before copy_rows ', 1, 'Y');
11098 	aso_debug_pub.add('Copy_Quote - P_Qte_Header_Id: '||P_Qte_Header_Id, 1, 'N');
11099 	aso_debug_pub.add('Copy_Quote - P_Last_Update_Date '||P_Last_Update_Date, 1, 'N');
11100 	aso_debug_pub.add('Copy_Quote - P_Copy_Only_Header '||P_Copy_Only_Header, 1, 'N');
11101 	aso_debug_pub.add('Copy_Quote - P_New_Version '||P_New_Version, 1, 'N');
11102 	aso_debug_pub.add('Copy_Quote - P_Qte_Status_Id '||P_Qte_Status_Id, 1, 'N');
11103 	aso_debug_pub.add('Copy_Quote - P_Qte_Number '||P_Qte_Number, 1, 'N');
11104 	END IF;
11105 
11106       l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row(p_qte_header_id);
11107    	 IF (p_new_version = FND_API.G_TRUE AND
11108 			l_qte_header_rec.quote_number = p_qte_number) THEN
11109         l_new_version := FND_API.G_TRUE;
11110       END IF;
11111       IF (l_new_version = FND_API.G_FALSE) THEN
11112            IF (p_qte_number IS NULL OR p_qte_number = FND_API.G_MISS_NUM) THEN
11113 	           IF (NVL(FND_PROFILE.Value('ASO_AUTO_NUMBERING'), 'Y') = 'Y') THEN
11114 	               OPEN C_Qte_Number;
11115 	               FETCH C_Qte_Number INTO l_qte_header_rec.quote_number;
11116 	               CLOSE C_Qte_Number;
11117   	               l_qte_header_rec.quote_version := 1;
11118                    l_first_version	:= FND_API.G_TRUE;
11119 	           ELSE
11120 	               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11121 		              FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
11122 		              FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
11123 		              FND_MSG_PUB.ADD;
11124 	               END IF;
11125 	               RAISE FND_API.G_EXC_ERROR;
11126 	           END IF;  -- profile auto numbering
11127             ELSE
11128 		     OPEN C_Qte_Number_Exists(p_qte_number);
11129                FETCH C_Qte_Number_Exists into l_qte_num;
11130 		     CLOSE C_Qte_Number_Exists;
11131 		     IF (FND_PROFILE.Value('ASO_AUTO_NUMBERING') = 'N'
11132 		                   AND l_qte_num = p_qte_number) THEN
11133 		         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
11134 		         THEN
11135 */  -- original cpy_qte
11136 /*		             FND_MESSAGE.Set_Name('ASO', 'CANNOT COPY TO EXISTING QUOTE');
11137                        FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
11138 */
11139 /*  -- original cpy_qte
11140 				   FND_MESSAGE.Set_Name('ASO', 'ASO_CANNOT_COPY_QTE');
11141                        FND_MSG_PUB.ADD;
11142                    END IF;
11143                    RAISE FND_API.G_EXC_ERROR;
11144 			 ELSE
11145   	             l_qte_header_rec.quote_number := p_qte_number;
11146                       l_qte_header_rec.quote_version := 1;
11147                  l_first_version	:= FND_API.G_TRUE;
11148 		    END IF;
11149             END IF;  -- p_qte_number is null
11150       ELSE  -- p_new_version
11151 
11152            IF P_Qte_Number IS NOT NULL AND P_Qte_Number <> FND_API.G_MISS_NUM THEN
11153 
11154                 OPEN C_Qte_Number_Exists(p_qte_number);
11155                 FETCH C_Qte_Number_Exists into l_qte_num;
11156 
11157                 IF C_Qte_Number_Exists%NOTFOUND THEN
11158 
11159         		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11160 		              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
11161 		              FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
11162 		              FND_MSG_PUB.ADD;
11163 		          END IF;
11164 
11165 		          CLOSE C_Qte_Number_Exists;
11166 		          RAISE FND_API.G_EXC_ERROR;
11167 
11168                 ELSE
11169 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11170 aso_debug_pub.add('Copy_Quote - P_Qte_Number Exists', 1, 'N');
11171 END IF;
11172                   	l_qte_header_rec.quote_number := P_Qte_Number;
11173 		          CLOSE C_Qte_Number_Exists;
11174 
11175                 END IF;
11176 
11177            END IF;
11178 
11179 	       OPEN C_Qte_Version(l_qte_header_rec.quote_number);
11180 	       FETCH C_Qte_Version into l_qte_header_rec.quote_version;
11181 
11182 	       l_qte_header_rec.quote_version := nvl(l_qte_header_rec.quote_version, 0) + 1;
11183 	       CLOSE C_Qte_Version;
11184 	       l_first_version	:= FND_API.G_FALSE;
11185       END IF;
11186 
11187       IF (p_qte_status_id IS NULL OR p_qte_status_id = FND_API.G_MISS_NUM) THEN
11188 	  --OPEN c_qte_status_id ('DRAFT');
11189 	  OPEN c_qte_status_id ( fnd_profile.value( 'ASO_DEFAULT_STATUS_CODE' )  );
11190 	  FETCH c_qte_status_id INTO l_qte_header_rec.quote_status_id;
11191 	  CLOSE c_qte_status_id;
11192       ELSE
11193 	  IF l_first_version = FND_API.G_FALSE THEN
11194 	      OPEN c_qte_status_trans (l_qte_header_rec.quote_status_id, p_qte_status_id);
11195 	      FETCH c_qte_status_trans INTO l_enabled_flag;
11196 	      IF c_qte_status_trans%NOTFOUND OR l_enabled_flag = 'N' THEN
11197 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11198 		      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_STATUS_TRANS');
11199 		      FND_MSG_PUB.ADD;
11200 		  END IF;
11201 		  CLOSE c_qte_status_trans;
11202 		  RAISE FND_API.G_EXC_ERROR;
11203 	      END IF;
11204 	      CLOSE c_qte_status_trans;
11205 	  END IF;
11206 	  l_qte_header_rec.quote_status_id := p_qte_status_id;
11207       END IF;
11208 
11209      IF aso_debug_pub.g_debug_flag = 'Y' THEN
11210 	aso_debug_pub.add('Copy_Quote - Begin- before copy_rows ', 1, 'Y');
11211 	END IF;
11212 
11213       Copy_Rows(
11214 		P_qte_Header_Rec	 => l_qte_header_rec,
11215 		P_Header_Only		 => P_Copy_Only_Header,
11216 	     P_control_rec        => P_control_rec,
11217 		X_Qte_Header_id		 => x_qte_header_id,
11218 		X_Return_Status 	 => l_return_status,
11219 		X_Msg_Count		 => x_msg_count,
11220 		X_Msg_Data		 => x_msg_data);
11221 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11222 aso_debug_pub.add('Copy_Quote - After  copy_rows '||l_return_status, 1, 'Y');
11223 END IF;
11224       -- create header relationship
11225 
11226       ASO_HEADER_RELATIONSHIPS_PKG.Insert_Row(
11227 	  px_HEADER_RELATIONSHIP_ID  => l_HEADER_RELATIONSHIP_ID,
11228 	  p_CREATION_DATE  => SYSDATE,
11229 	  p_CREATED_BY	=> G_USER_ID,
11230 	  p_LAST_UPDATE_DATE  => SYSDATE,
11231 	  p_LAST_UPDATED_BY  => G_USER_ID,
11232 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
11233 	  p_REQUEST_ID	=> NULL,
11234 	  p_PROGRAM_APPLICATION_ID  => NULL,
11235 	  p_PROGRAM_ID	=> NULL,
11236 	  p_PROGRAM_UPDATE_DATE  => NULL,
11237 	  p_QUOTE_HEADER_ID  => p_qte_header_id,
11238 	  p_RELATED_HEADER_ID  => x_qte_header_id,
11239 	  p_RELATIONSHIP_TYPE_CODE  => 'COPY',
11240 	  p_RECIPROCAL_FLAG  => NULL,
11241 	  P_OBJECT_VERSION_NUMBER => FND_API.G_MISS_NUM
11242 	  );
11243 
11244 
11245       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
11246 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11247 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11248 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
11249 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
11250 	      FND_MSG_PUB.ADD;
11251 	  END IF;
11252 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11253       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
11254 	  x_return_status := FND_API.G_RET_STS_ERROR;
11255 */  -- original cpy_qte
11256 /*	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11257 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_EXP_ERROR');
11258 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
11259 	      FND_MSG_PUB.ADD;
11260 	  END IF; */
11261 /*  -- original cpy_qte
11262 	  RAISE FND_API.G_EXC_ERROR;
11263       END IF;
11264       x_return_status := FND_API.G_RET_STS_SUCCESS;
11265       --
11266       -- End of API body
11267       --
11268 */  -- original cpy_qte
11269       -- Standard check for p_commit
11270       IF FND_API.to_Boolean( p_commit )
11271       THEN
11272 	  COMMIT WORK;
11273       END IF;
11274 
11275 
11276 
11277       -- Standard call to get message count and if count is 1, get message info.
11278       FND_MSG_PUB.Count_And_Get
11279       (  p_count	  =>   x_msg_count,
11280 	 p_data 	  =>   x_msg_data
11281       );
11282 
11283       EXCEPTION
11284 	  WHEN FND_API.G_EXC_ERROR THEN
11285 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11286 		   P_API_NAME => L_API_NAME
11287 		  ,P_PKG_NAME => G_PKG_NAME
11288 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
11289 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11290 		  ,X_MSG_COUNT => X_MSG_COUNT
11291 		  ,X_MSG_DATA => X_MSG_DATA
11292 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11293 
11294 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11295 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11296 		   P_API_NAME => L_API_NAME
11297 		  ,P_PKG_NAME => G_PKG_NAME
11298 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
11299 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11300 		  ,X_MSG_COUNT => X_MSG_COUNT
11301 		  ,X_MSG_DATA => X_MSG_DATA
11302 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11303 
11304 	  WHEN OTHERS THEN
11305 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11306 		   P_API_NAME => L_API_NAME
11307 		  ,P_PKG_NAME => G_PKG_NAME
11308                   ,P_SQLCODE => SQLCODE
11309 		  ,P_SQLERRM => SQLERRM
11310 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
11311 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11312 		  ,X_MSG_COUNT => X_MSG_COUNT
11313 		  ,X_MSG_DATA => X_MSG_DATA
11314 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11315 END Copy_Quote;
11316 
11317 -- This procudure defines the columns for the Dynamic SQL.
11318 PROCEDURE Define_Columns(
11319     P_Qte_Header_Rec   IN  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
11320     p_cur_get_QTE   IN	 NUMBER
11321 )
11322 IS
11323 BEGIN
11324 
11325       -- define all columns for ASO_QUOTE_HEADERS_V view
11326       ----dbms_sql.define_column(p_cur_get_QTE, 1, P_Qte_Header_Rec.QUOTE_HEADER_ID);
11327       ----dbms_sql.define_column(p_cur_get_QTE, 2, P_Qte_Header_Rec.ORG_ID);
11328       ----dbms_sql.define_column(p_cur_get_QTE, 3, P_Qte_Header_Rec.REQUEST_ID);
11329       ----dbms_sql.define_column(p_cur_get_QTE, 4, P_Qte_Header_Rec.ORIGINAL_SYSTEM_REFERENCE, 240);
11330       ----dbms_sql.define_column(p_cur_get_QTE, 5, P_Qte_Header_Rec.EMPLOYEE_PERSON_ID);
11331       ----dbms_sql.define_column(p_cur_get_QTE, 6, P_Qte_Header_Rec.SALESREP_FIRST_NAME, 20);
11332       ----dbms_sql.define_column(p_cur_get_QTE, 7, P_Qte_Header_Rec.SALESREP_LAST_NAME, 40);
11333       ----dbms_sql.define_column(p_cur_get_QTE, 8, P_Qte_Header_Rec.PRICE_LIST_ID);
11334       ----dbms_sql.define_column(p_cur_get_QTE, 9, P_Qte_Header_Rec.PRICE_LIST_NAME, 0);
11335       ----dbms_sql.define_column(p_cur_get_QTE, 10, P_Qte_Header_Rec.QUOTE_STATUS_ID);
11336       ----dbms_sql.define_column(p_cur_get_QTE, 11, P_Qte_Header_Rec.QUOTE_STATUS_CODE, 30);
11337       ----dbms_sql.define_column(p_cur_get_QTE, 12, P_Qte_Header_Rec.QUOTE_STATUS, 240);
11338       ----dbms_sql.define_column(p_cur_get_QTE, 15, P_Qte_Header_Rec.QUOTE_SOURCE_CODE, 15);
11339       ----dbms_sql.define_column(p_cur_get_QTE, 16, P_Qte_Header_Rec.PARTY_ID);
11340       ----dbms_sql.define_column(p_cur_get_QTE, 17, P_Qte_Header_Rec.PARTY_NAME, 255);
11341       ----dbms_sql.define_column(p_cur_get_QTE, 18, P_Qte_Header_Rec.PARTY_TYPE, 30);
11342       ----dbms_sql.define_column(p_cur_get_QTE, 19, P_Qte_Header_Rec.PERSON_FIRST_NAME, 150);
11343       ----dbms_sql.define_column(p_cur_get_QTE, 20, P_Qte_Header_Rec.PERSON_MIDDLE_NAME, 60);
11344       ----dbms_sql.define_column(p_cur_get_QTE, 21, P_Qte_Header_Rec.PERSON_LAST_NAME, 150);
11345       ----dbms_sql.define_column(p_cur_get_QTE, 22, P_Qte_Header_Rec.ORG_CONTACT_ID);
11346       ----dbms_sql.define_column(p_cur_get_QTE, 26, P_Qte_Header_Rec.QUOTE_NAME, 50);
11347       ----dbms_sql.define_column(p_cur_get_QTE, 27, P_Qte_Header_Rec.QUOTE_NUMBER);
11348       ----dbms_sql.define_column(p_cur_get_QTE, 28, P_Qte_Header_Rec.QUOTE_VERSION);
11349       ----dbms_sql.define_column(p_cur_get_QTE, 29, P_Qte_Header_Rec.QUOTE_EXPIRATION_DATE);
11350       ----dbms_sql.define_column(p_cur_get_QTE, 30, P_Qte_Header_Rec.QUOTE_CATEGORY_CODE, 30);
11351       ----dbms_sql.define_column(p_cur_get_QTE, 31, P_Qte_Header_Rec.CURRENCY_CODE, 15);
11352       ----dbms_sql.define_column(p_cur_get_QTE, 32, P_Qte_Header_Rec.EXCHANGE_RATE);
11353       ----dbms_sql.define_column(p_cur_get_QTE, 33, P_Qte_Header_Rec.EXCHANGE_TYPE_CODE, 15);
11354       ----dbms_sql.define_column(p_cur_get_QTE, 34, P_Qte_Header_Rec.EXCHANGE_RATE_DATE);
11355       ----dbms_sql.define_column(p_cur_get_QTE, 39, P_Qte_Header_Rec.ORDERED_DATE);
11356       ----dbms_sql.define_column(p_cur_get_QTE, 40, P_Qte_Header_Rec.ORDER_TYPE_ID);
11357       ----dbms_sql.define_column(p_cur_get_QTE, 41, P_Qte_Header_Rec.ORDER_TYPE_NAME, 80);
11358       ----dbms_sql.define_column(p_cur_get_QTE, 45, P_Qte_Header_Rec.TOTAL_LIST_PRICE);
11359       ----dbms_sql.define_column(p_cur_get_QTE, 46, P_Qte_Header_Rec.TOTAL_ADJUSTED_AMOUNT);
11360       ----dbms_sql.define_column(p_cur_get_QTE, 47, P_Qte_Header_Rec.TOTAL_ADJUSTED_PERCENT);
11361       ----dbms_sql.define_column(p_cur_get_QTE, 48, P_Qte_Header_Rec.TOTAL_TAX);
11362       ----dbms_sql.define_column(p_cur_get_QTE, 49, P_Qte_Header_Rec.SURCHARGE);
11363       ----dbms_sql.define_column(p_cur_get_QTE, 50, P_Qte_Header_Rec.TOTAL_SHIPPING_CHARGE);
11364       ----dbms_sql.define_column(p_cur_get_QTE, 51, P_Qte_Header_Rec.TOTAL_QUOTE_PRICE);
11365       ----dbms_sql.define_column(p_cur_get_QTE, 52, P_Qte_Header_Rec.ACCOUNTING_RULE_ID);
11366       ----dbms_sql.define_column(p_cur_get_QTE, 53, P_Qte_Header_Rec.INVOICING_RULE_ID);
11367       ----dbms_sql.define_column(p_cur_get_QTE, 73, P_Qte_Header_Rec.INVOICE_TO_PARTY_ID);
11368       ----dbms_sql.define_column(p_cur_get_QTE, 74, P_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID);
11369       ----dbms_sql.define_column(p_cur_get_QTE, 75, P_Qte_Header_Rec.INVOICE_TO_PARTY_NAME, 255);
11370       ----dbms_sql.define_column(p_cur_get_QTE, 76, P_Qte_Header_Rec.INVOICE_TO_CONTACT_FIRST_NAME, 150);
11371       ----dbms_sql.define_column(p_cur_get_QTE, 77, P_Qte_Header_Rec.INVOICE_TO_CONTACT_MIDDLE_NAME, 60);
11372       ----dbms_sql.define_column(p_cur_get_QTE, 78, P_Qte_Header_Rec.INVOICE_TO_CONTACT_LAST_NAME, 150);
11373       ----dbms_sql.define_column(p_cur_get_QTE, 79, P_Qte_Header_Rec.INVOICE_TO_ADDRESS1, 240);
11374       ----dbms_sql.define_column(p_cur_get_QTE, 80, P_Qte_Header_Rec.INVOICE_TO_ADDRESS2, 240);
11375       ----dbms_sql.define_column(p_cur_get_QTE, 81, P_Qte_Header_Rec.INVOICE_TO_ADDRESS3, 240);
11376       ----dbms_sql.define_column(p_cur_get_QTE, 82, P_Qte_Header_Rec.INVOICE_TO_ADDRESS4, 240);
11377       ----dbms_sql.define_column(p_cur_get_QTE, 83, P_Qte_Header_Rec.INVOICE_TO_COUNTRY_CODE, 60);
11378       ----dbms_sql.define_column(p_cur_get_QTE, 84, P_Qte_Header_Rec.INVOICE_TO_COUNTRY, 80);
11379       ----dbms_sql.define_column(p_cur_get_QTE, 85, P_Qte_Header_Rec.INVOICE_TO_CITY, 60);
11380       ----dbms_sql.define_column(p_cur_get_QTE, 86, P_Qte_Header_Rec.INVOICE_TO_POSTAL_CODE, 60);
11381       ----dbms_sql.define_column(p_cur_get_QTE, 87, P_Qte_Header_Rec.INVOICE_TO_STATE, 60);
11382       ----dbms_sql.define_column(p_cur_get_QTE, 88, P_Qte_Header_Rec.INVOICE_TO_PROVINCE, 60);
11383       ----dbms_sql.define_column(p_cur_get_QTE, 89, P_Qte_Header_Rec.INVOICE_TO_COUNTY, 60);
11384       ----dbms_sql.define_column(p_cur_get_QTE, 92, P_Qte_Header_Rec.CONTRACT_ID);
11385       ----dbms_sql.define_column(p_cur_get_QTE, 93, P_Qte_Header_Rec.ATTRIBUTE_CATEGORY, 30);
11386       ----dbms_sql.define_column(p_cur_get_QTE, 94, P_Qte_Header_Rec.ATTRIBUTE1, 150);
11387       ----dbms_sql.define_column(p_cur_get_QTE, 95, P_Qte_Header_Rec.ATTRIBUTE2, 150);
11388       ----dbms_sql.define_column(p_cur_get_QTE, 96, P_Qte_Header_Rec.ATTRIBUTE3, 150);
11389       ----dbms_sql.define_column(p_cur_get_QTE, 97, P_Qte_Header_Rec.ATTRIBUTE4, 150);
11390       ----dbms_sql.define_column(p_cur_get_QTE, 98, P_Qte_Header_Rec.ATTRIBUTE5, 150);
11391       ----dbms_sql.define_column(p_cur_get_QTE, 99, P_Qte_Header_Rec.ATTRIBUTE6, 150);
11392       ----dbms_sql.define_column(p_cur_get_QTE, 100, P_Qte_Header_Rec.ATTRIBUTE7, 150);
11393       ----dbms_sql.define_column(p_cur_get_QTE, 101, P_Qte_Header_Rec.ATTRIBUTE8, 150);
11394       ----dbms_sql.define_column(p_cur_get_QTE, 102, P_Qte_Header_Rec.ATTRIBUTE9, 150);
11395       ----dbms_sql.define_column(p_cur_get_QTE, 103, P_Qte_Header_Rec.ATTRIBUTE10, 150);
11396       ----dbms_sql.define_column(p_cur_get_QTE, 104, P_Qte_Header_Rec.ATTRIBUTE11, 150);
11397       ----dbms_sql.define_column(p_cur_get_QTE, 105, P_Qte_Header_Rec.ATTRIBUTE12, 150);
11398       ----dbms_sql.define_column(p_cur_get_QTE, 106, P_Qte_Header_Rec.ATTRIBUTE13, 150);
11399       ----dbms_sql.define_column(p_cur_get_QTE, 107, P_Qte_Header_Rec.ATTRIBUTE14, 150);
11400       ----dbms_sql.define_column(p_cur_get_QTE, 108, P_Qte_Header_Rec.ATTRIBUTE15, 150);
11401 
11402 	 null;
11403 
11404 END Define_Columns;
11405 
11406 -- This procudure gets column values by the Dynamic SQL.
11407 PROCEDURE Get_Column_Values(
11408     p_cur_get_QTE   IN	 NUMBER,
11409     X_Qte_Header_Rec   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Header_Rec_Type
11410 )
11411 IS
11412 BEGIN
11413 
11414       -- get all column values for ASO_QUOTE_HEADERS_V table
11415       ----dbms_sql.column_value(p_cur_get_QTE, 2, X_Qte_Header_Rec.QUOTE_HEADER_ID);
11416       ----dbms_sql.column_value(p_cur_get_QTE, 3, X_Qte_Header_Rec.ORG_ID);
11417       ----dbms_sql.column_value(p_cur_get_QTE, 4, X_Qte_Header_Rec.REQUEST_ID);
11418       ----dbms_sql.column_value(p_cur_get_QTE, 5, X_Qte_Header_Rec.ORIGINAL_SYSTEM_REFERENCE);
11419       ----dbms_sql.column_value(p_cur_get_QTE, 6, X_Qte_Header_Rec.EMPLOYEE_PERSON_ID);
11420       ----dbms_sql.column_value(p_cur_get_QTE, 7, X_Qte_Header_Rec.SALESREP_FIRST_NAME);
11421       ----dbms_sql.column_value(p_cur_get_QTE, 8, X_Qte_Header_Rec.SALESREP_LAST_NAME);
11422       ----dbms_sql.column_value(p_cur_get_QTE, 9, X_Qte_Header_Rec.PRICE_LIST_ID);
11423       ----dbms_sql.column_value(p_cur_get_QTE, 10, X_Qte_Header_Rec.PRICE_LIST_NAME);
11424       ----dbms_sql.column_value(p_cur_get_QTE, 11, X_Qte_Header_Rec.QUOTE_STATUS_ID);
11425       ----dbms_sql.column_value(p_cur_get_QTE, 12, X_Qte_Header_Rec.QUOTE_STATUS_CODE);
11426       ----dbms_sql.column_value(p_cur_get_QTE, 13, X_Qte_Header_Rec.QUOTE_STATUS);
11427       ----dbms_sql.column_value(p_cur_get_QTE, 16, X_Qte_Header_Rec.QUOTE_SOURCE_CODE);
11428       ----dbms_sql.column_value(p_cur_get_QTE, 17, X_Qte_Header_Rec.PARTY_ID);
11429       ----dbms_sql.column_value(p_cur_get_QTE, 18, X_Qte_Header_Rec.PARTY_NAME);
11430       ----dbms_sql.column_value(p_cur_get_QTE, 19, X_Qte_Header_Rec.PARTY_TYPE);
11431       ----dbms_sql.column_value(p_cur_get_QTE, 20, X_Qte_Header_Rec.PERSON_FIRST_NAME);
11432       ----dbms_sql.column_value(p_cur_get_QTE, 21, X_Qte_Header_Rec.PERSON_MIDDLE_NAME);
11433       ----dbms_sql.column_value(p_cur_get_QTE, 22, X_Qte_Header_Rec.PERSON_LAST_NAME);
11434       ----dbms_sql.column_value(p_cur_get_QTE, 23, X_Qte_Header_Rec.ORG_CONTACT_ID);
11435       ----dbms_sql.column_value(p_cur_get_QTE, 27, X_Qte_Header_Rec.QUOTE_NAME);
11436       ----dbms_sql.column_value(p_cur_get_QTE, 28, X_Qte_Header_Rec.QUOTE_NUMBER);
11437       ----dbms_sql.column_value(p_cur_get_QTE, 29, X_Qte_Header_Rec.QUOTE_VERSION);
11438       ----dbms_sql.column_value(p_cur_get_QTE, 30, X_Qte_Header_Rec.QUOTE_EXPIRATION_DATE);
11439       ----dbms_sql.column_value(p_cur_get_QTE, 31, X_Qte_Header_Rec.QUOTE_CATEGORY_CODE);
11440       ----dbms_sql.column_value(p_cur_get_QTE, 32, X_Qte_Header_Rec.CURRENCY_CODE);
11441       ----dbms_sql.column_value(p_cur_get_QTE, 33, X_Qte_Header_Rec.EXCHANGE_RATE);
11442       ----dbms_sql.column_value(p_cur_get_QTE, 34, X_Qte_Header_Rec.EXCHANGE_TYPE_CODE);
11443       ----dbms_sql.column_value(p_cur_get_QTE, 35, X_Qte_Header_Rec.EXCHANGE_RATE_DATE);
11444       ----dbms_sql.column_value(p_cur_get_QTE, 40, X_Qte_Header_Rec.ORDERED_DATE);
11445       ----dbms_sql.column_value(p_cur_get_QTE, 41, X_Qte_Header_Rec.ORDER_TYPE_ID);
11446       ----dbms_sql.column_value(p_cur_get_QTE, 42, X_Qte_Header_Rec.ORDER_TYPE_NAME);
11447       ----dbms_sql.column_value(p_cur_get_QTE, 46, X_Qte_Header_Rec.TOTAL_LIST_PRICE);
11448       ----dbms_sql.column_value(p_cur_get_QTE, 47, X_Qte_Header_Rec.TOTAL_ADJUSTED_AMOUNT);
11449       ----dbms_sql.column_value(p_cur_get_QTE, 48, X_Qte_Header_Rec.TOTAL_ADJUSTED_PERCENT);
11450       ----dbms_sql.column_value(p_cur_get_QTE, 49, X_Qte_Header_Rec.TOTAL_TAX);
11451       ----dbms_sql.column_value(p_cur_get_QTE, 50, X_Qte_Header_Rec.SURCHARGE);
11452       ----dbms_sql.column_value(p_cur_get_QTE, 51, X_Qte_Header_Rec.TOTAL_SHIPPING_CHARGE);
11453       ----dbms_sql.column_value(p_cur_get_QTE, 52, X_Qte_Header_Rec.TOTAL_QUOTE_PRICE);
11454       ----dbms_sql.column_value(p_cur_get_QTE, 53, X_Qte_Header_Rec.ACCOUNTING_RULE_ID);
11455       ----dbms_sql.column_value(p_cur_get_QTE, 54, X_Qte_Header_Rec.INVOICING_RULE_ID);
11456       ----dbms_sql.column_value(p_cur_get_QTE, 74, X_Qte_Header_Rec.INVOICE_TO_PARTY_ID);
11457       ----dbms_sql.column_value(p_cur_get_QTE, 75, X_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID);
11458       ----dbms_sql.column_value(p_cur_get_QTE, 76, X_Qte_Header_Rec.INVOICE_TO_PARTY_NAME);
11459       ----dbms_sql.column_value(p_cur_get_QTE, 77, X_Qte_Header_Rec.INVOICE_TO_CONTACT_FIRST_NAME);
11460       ----dbms_sql.column_value(p_cur_get_QTE, 78, X_Qte_Header_Rec.INVOICE_TO_CONTACT_MIDDLE_NAME);
11461       ----dbms_sql.column_value(p_cur_get_QTE, 79, X_Qte_Header_Rec.INVOICE_TO_CONTACT_LAST_NAME);
11462       ----dbms_sql.column_value(p_cur_get_QTE, 80, X_Qte_Header_Rec.INVOICE_TO_ADDRESS1);
11463       ----dbms_sql.column_value(p_cur_get_QTE, 81, X_Qte_Header_Rec.INVOICE_TO_ADDRESS2);
11464       ----dbms_sql.column_value(p_cur_get_QTE, 82, X_Qte_Header_Rec.INVOICE_TO_ADDRESS3);
11465       ----dbms_sql.column_value(p_cur_get_QTE, 83, X_Qte_Header_Rec.INVOICE_TO_ADDRESS4);
11466       ----dbms_sql.column_value(p_cur_get_QTE, 84, X_Qte_Header_Rec.INVOICE_TO_COUNTRY_CODE);
11467       ----dbms_sql.column_value(p_cur_get_QTE, 85, X_Qte_Header_Rec.INVOICE_TO_COUNTRY);
11468       ----dbms_sql.column_value(p_cur_get_QTE, 86, X_Qte_Header_Rec.INVOICE_TO_CITY);
11469       ----dbms_sql.column_value(p_cur_get_QTE, 87, X_Qte_Header_Rec.INVOICE_TO_POSTAL_CODE);
11470       ----dbms_sql.column_value(p_cur_get_QTE, 88, X_Qte_Header_Rec.INVOICE_TO_STATE);
11471       ----dbms_sql.column_value(p_cur_get_QTE, 89, X_Qte_Header_Rec.INVOICE_TO_PROVINCE);
11472       ----dbms_sql.column_value(p_cur_get_QTE, 90, X_Qte_Header_Rec.INVOICE_TO_COUNTY);
11473       ----dbms_sql.column_value(p_cur_get_QTE, 93, X_Qte_Header_Rec.CONTRACT_ID);
11474       ----dbms_sql.column_value(p_cur_get_QTE, 94, X_Qte_Header_Rec.ATTRIBUTE_CATEGORY);
11475       ----dbms_sql.column_value(p_cur_get_QTE, 95, X_Qte_Header_Rec.ATTRIBUTE1);
11476       ----dbms_sql.column_value(p_cur_get_QTE, 96, X_Qte_Header_Rec.ATTRIBUTE2);
11477       ----dbms_sql.column_value(p_cur_get_QTE, 97, X_Qte_Header_Rec.ATTRIBUTE3);
11478       ----dbms_sql.column_value(p_cur_get_QTE, 98, X_Qte_Header_Rec.ATTRIBUTE4);
11479       ----dbms_sql.column_value(p_cur_get_QTE, 99, X_Qte_Header_Rec.ATTRIBUTE5);
11480       ----dbms_sql.column_value(p_cur_get_QTE, 100, X_Qte_Header_Rec.ATTRIBUTE6);
11481       ----dbms_sql.column_value(p_cur_get_QTE, 101, X_Qte_Header_Rec.ATTRIBUTE7);
11482       ----dbms_sql.column_value(p_cur_get_QTE, 102, X_Qte_Header_Rec.ATTRIBUTE8);
11483       ----dbms_sql.column_value(p_cur_get_QTE, 103, X_Qte_Header_Rec.ATTRIBUTE9);
11484       ----dbms_sql.column_value(p_cur_get_QTE, 104, X_Qte_Header_Rec.ATTRIBUTE10);
11485       ----dbms_sql.column_value(p_cur_get_QTE, 105, X_Qte_Header_Rec.ATTRIBUTE11);
11486       ----dbms_sql.column_value(p_cur_get_QTE, 106, X_Qte_Header_Rec.ATTRIBUTE12);
11487       ----dbms_sql.column_value(p_cur_get_QTE, 107, X_Qte_Header_Rec.ATTRIBUTE13);
11488       ----dbms_sql.column_value(p_cur_get_QTE, 108, X_Qte_Header_Rec.ATTRIBUTE14);
11489       ----dbms_sql.column_value(p_cur_get_QTE, 109, X_Qte_Header_Rec.ATTRIBUTE15);
11490 	 null;
11491 
11492 END Get_Column_Values;
11493 
11494 PROCEDURE Gen_QTE_order_cl(
11495     p_order_by_rec   IN   ASO_QUOTE_PUB.QTE_sort_rec_type,
11496     x_order_by_cl    OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11497     x_return_status  OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11498     x_msg_count      OUT NOCOPY /* file.sql.39 change */      NUMBER,
11499     x_msg_data	     OUT NOCOPY /* file.sql.39 change */      VARCHAR2
11500 )
11501 IS
11502 l_order_by_cl	     VARCHAR2(1000)   := NULL;
11503 l_util_order_by_tbl  ASO_UTILITY_PVT.Util_order_by_tbl_type;
11504 BEGIN
11505 
11506       -- Hint: Developer should add more statements according to ASO_sort_rec_type
11507       -- Ex:
11508       -- l_util_order_by_tbl(1).col_choice := p_order_by_rec.customer_name;
11509       -- l_util_order_by_tbl(1).col_name := 'Customer_Name';
11510 
11511 
11512       ASO_UTILITY_PVT.Translate_OrderBy(
11513 	  p_api_version_number	 =>   1.0
11514 	 ,p_init_msg_list	 =>   FND_API.G_FALSE
11515 	 ,p_validation_level	 =>   FND_API.G_VALID_LEVEL_FULL
11516 	 ,p_order_by_tbl	 =>   l_util_order_by_tbl
11517 	 ,x_order_by_clause	 =>   l_order_by_cl
11518 	 ,x_return_status	 =>   x_return_status
11519 	 ,x_msg_count		 =>   x_msg_count
11520 	 ,x_msg_data		 =>   x_msg_data);
11521 
11522       IF(l_order_by_cl IS NOT NULL) THEN
11523 	  x_order_by_cl := 'order by' || l_order_by_cl;
11524       ELSE
11525 	  x_order_by_cl := NULL;
11526       END IF;
11527 
11528 END Gen_QTE_order_cl;
11529 
11530 -- This procedure bind the variables for the Dynamic SQL
11531 PROCEDURE Bind(
11532     P_Qte_Header_Rec   IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
11533     -- Hint: Add more binding variables here
11534     p_cur_get_QTE   IN	 NUMBER
11535 )
11536 IS
11537 BEGIN
11538       -- Bind variables
11539       -- Only those that are not NULL
11540 
11541       -- The following example applies to all columns,
11542       -- developers can copy and paste them.
11543       IF( (P_Qte_Header_Rec.QUOTE_HEADER_ID IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_HEADER_ID <> FND_API.G_MISS_NUM) )
11544       THEN
11545 	  dbms_SQL.BIND_VARIABLE(p_cur_get_QTE, ':p_QUOTE_HEADER_ID', P_Qte_Header_Rec.QUOTE_HEADER_ID);
11546       END IF;
11547 
11548 END Bind;
11549 
11550 PROCEDURE Gen_Select(
11551     x_select_cl   OUT NOCOPY /* file.sql.39 change */    	VARCHAR2
11552 )
11553 IS
11554 BEGIN
11555 
11556       x_select_cl := 'Select ' ||
11557 		'ASO_QUOTE_HEADERS_V.ROW_ID,' ||
11558 		'ASO_QUOTE_HEADERS_V.QUOTE_HEADER_ID,' ||
11559 		'ASO_QUOTE_HEADERS_V.ORG_ID,' ||
11560 		'ASO_QUOTE_HEADERS_V.LAST_UPDATE_DATE,' ||
11561 		'ASO_QUOTE_HEADERS_V.LAST_UPDATED_BY,' ||
11562 		'ASO_QUOTE_HEADERS_V.CREATION_DATE,' ||
11563 		'ASO_QUOTE_HEADERS_V.CREATED_BY,' ||
11564 		'ASO_QUOTE_HEADERS_V.LAST_UPDATE_LOGIN,' ||
11565 		'ASO_QUOTE_HEADERS_V.REQUEST_ID,' ||
11566 		'ASO_QUOTE_HEADERS_V.PROGRAM_APPLICATION_ID,' ||
11567 		'ASO_QUOTE_HEADERS_V.PROGRAM_ID,' ||
11568 		'ASO_QUOTE_HEADERS_V.PROGRAM_UPDATE_DATE,' ||
11569 		'ASO_QUOTE_HEADERS_V.ORIGINAL_SYSTEM_REFERENCE,' ||
11570 		'ASO_QUOTE_HEADERS_V.EMPLOYEE_PERSON_ID,' ||
11571 		'ASO_QUOTE_HEADERS_V.SALESREP_FIRST_NAME,' ||
11572 		'ASO_QUOTE_HEADERS_V.SALESREP_LAST_NAME,' ||
11573 		'ASO_QUOTE_HEADERS_V.PRICE_LIST_ID,' ||
11574 		'ASO_QUOTE_HEADERS_V.PRICE_LIST_NAME,' ||
11575 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS_ID,' ||
11576 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS_CODE,' ||
11577 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS,' ||
11578 		'ASO_QUOTE_HEADERS_V.UPDATE_ALLOWED_FLAG,' ||
11579 		'ASO_QUOTE_HEADERS_V.AUTO_VERSION_FLAG,' ||
11580 		'ASO_QUOTE_HEADERS_V.QUOTE_SOURCE_CODE,' ||
11581 		'ASO_QUOTE_HEADERS_V.PARTY_ID,' ||
11582 		'ASO_QUOTE_HEADERS_V.PARTY_NAME,' ||
11583 		'ASO_QUOTE_HEADERS_V.PARTY_TYPE,' ||
11584 		'ASO_QUOTE_HEADERS_V.PERSON_FIRST_NAME,' ||
11585 		'ASO_QUOTE_HEADERS_V.PERSON_MIDDLE_NAME,' ||
11586 		'ASO_QUOTE_HEADERS_V.PERSON_LAST_NAME,' ||
11587 		'ASO_QUOTE_HEADERS_V.ORG_CONTACT_ID,' ||
11588 		'ASO_QUOTE_HEADERS_V.CONTACT_FIRST_NAME,' ||
11589 		'ASO_QUOTE_HEADERS_V.CONTACT_MIDDLE_NAME,' ||
11590 		'ASO_QUOTE_HEADERS_V.CONTACT_LAST_NAME,' ||
11591 		'ASO_QUOTE_HEADERS_V.QUOTE_NAME,' ||
11592 		'ASO_QUOTE_HEADERS_V.QUOTE_NUMBER,' ||
11593 		'ASO_QUOTE_HEADERS_V.QUOTE_VERSION,' ||
11594 		'ASO_QUOTE_HEADERS_V.QUOTE_EXPIRATION_DATE,' ||
11595 		'ASO_QUOTE_HEADERS_V.QUOTE_CATEGORY_CODE,' ||
11596 		'ASO_QUOTE_HEADERS_V.CURRENCY_CODE,' ||
11597 		'ASO_QUOTE_HEADERS_V.EXCHANGE_RATE,' ||
11598 		'ASO_QUOTE_HEADERS_V.EXCHANGE_TYPE_CODE,' ||
11599 		'ASO_QUOTE_HEADERS_V.EXCHANGE_RATE_DATE,' ||
11600 		'ASO_QUOTE_HEADERS_V.SOURCE_CAMPAIGN_ID,' ||
11601 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_ID,' ||
11602 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_NAME,' ||
11603 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_SOURCE_CODE,' ||
11604 		'ASO_QUOTE_HEADERS_V.ORDERED_DATE,' ||
11605 		'ASO_QUOTE_HEADERS_V.ORDER_TYPE_ID,' ||
11606 		'ASO_QUOTE_HEADERS_V.ORDER_TYPE_NAME,' ||
11607 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_NUMBER,' ||
11608 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_REASON_CODE,' ||
11609 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_FLAG,' ||
11610 		'ASO_QUOTE_HEADERS_V.TOTAL_LIST_PRICE,' ||
11611 		'ASO_QUOTE_HEADERS_V.TOTAL_ADJUSTED_AMOUNT,' ||
11612 		'ASO_QUOTE_HEADERS_V.TOTAL_ADJUSTED_PERCENT,' ||
11613 		'ASO_QUOTE_HEADERS_V.TOTAL_TAX,' ||
11614 		'ASO_QUOTE_HEADERS_V.SURCHARGE,' ||
11615 		'ASO_QUOTE_HEADERS_V.TOTAL_SHIPPING_CHARGE,' ||
11616 		'ASO_QUOTE_HEADERS_V.TOTAL_QUOTE_PRICE,' ||
11617 		'ASO_QUOTE_HEADERS_V.ACCOUNTING_RULE_ID,' ||
11618 		'ASO_QUOTE_HEADERS_V.INVOICING_RULE_ID,' ||
11619 		'ASO_QUOTE_HEADERS_V.SHIP_METHOD_CODE,' ||
11620 		'ASO_QUOTE_HEADERS_V.FREIGHT_TERMS_CODE,' ||
11621 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_ID,' ||
11622 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_SITE_ID,' ||
11623 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_NAME,' ||
11624 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_FIRST_NAME,' ||
11625 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_MIDDLE_NAME,' ||
11626 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_LAST_NAME,' ||
11627 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS1,' ||
11628 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS2,' ||
11629 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS3,' ||
11630 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS4,' ||
11631 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTRY_CODE,' ||
11632 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTRY,' ||
11633 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CITY,' ||
11634 		'ASO_QUOTE_HEADERS_V.SHIP_TO_POSTAL_CODE,' ||
11635 		'ASO_QUOTE_HEADERS_V.SHIP_TO_STATE,' ||
11636 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PROVINCE,' ||
11637 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTY,' ||
11638 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_ID,' ||
11639 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_SITE_ID,' ||
11640 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_NAME,' ||
11641 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_FIRST_NAME,' ||
11642 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_MIDDLE_NAME,' ||
11643 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_LAST_NAME,' ||
11644 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS1,' ||
11645 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS2,' ||
11646 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS3,' ||
11647 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS4,' ||
11648 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTRY_CODE,' ||
11649 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTRY,' ||
11650 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CITY,' ||
11651 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_POSTAL_CODE,' ||
11652 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_STATE,' ||
11653 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PROVINCE,' ||
11654 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTY,' ||
11655 		'ASO_QUOTE_HEADERS_V.SHIPPING_INSTRUCTIONS,' ||
11656 		'ASO_QUOTE_HEADERS_V.PACKING_INSTRUCTIONS,' ||
11657 		'ASO_QUOTE_HEADERS_V.CONTRACT_ID,' ||
11658 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE_CATEGORY,' ||
11659 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE1,' ||
11660 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE2,' ||
11661 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE3,' ||
11662 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE4,' ||
11663 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE5,' ||
11664 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE6,' ||
11665 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE7,' ||
11666 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE8,' ||
11667 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE9,' ||
11668 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE10,' ||
11669 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE11,' ||
11670 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE12,' ||
11671 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE13,' ||
11672 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE14,' ||
11673 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE15,' ||
11674 		'from ASO_QUOTE_HEADERS_V';
11675 
11676 END Gen_Select;
11677 
11678 PROCEDURE Gen_QTE_Where(
11679     P_Qte_Header_Rec	 IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
11680     x_QTE_where   OUT NOCOPY /* file.sql.39 change */    	VARCHAR2
11681 )
11682 IS
11683 -- cursors to check if wildcard values '%' and '_' have been passed
11684 -- as item values
11685 /*
11686 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
11687     SELECT INSTR(p_rec_item, '%', 1, 1)
11688     FROM DUAL;
11689 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
11690     SELECT INSTR(p_rec_item, '_', 1, 1)
11691     FROM DUAL;
11692 */
11693 -- return values from cursors
11694 str_csr1   NUMBER;
11695 str_csr2   NUMBER;
11696 l_operator VARCHAR2(10);
11697 BEGIN
11698 
11699       -- There are three example for each kind of datatype:
11700       -- NUMBER, DATE, VARCHAR2.
11701       -- Developer can copy and paste the following codes for your own record.
11702 
11703       -- example for NUMBER datatype
11704       IF( (P_Qte_Header_Rec.QUOTE_HEADER_ID IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_HEADER_ID <> FND_API.G_MISS_NUM) )
11705       THEN
11706 	  IF(x_QTE_where IS NULL) THEN
11707 	      x_QTE_where := 'Where';
11708 	  ELSE
11709 	      x_QTE_where := x_QTE_where || ' AND ';
11710 	  END IF;
11711 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.QUOTE_HEADER_ID = :p_QUOTE_HEADER_ID';
11712       END IF;
11713 
11714       -- example for DATE datatype
11715       IF( (P_Qte_Header_Rec.CREATION_DATE IS NOT NULL) AND (P_Qte_Header_Rec.CREATION_DATE <> FND_API.G_MISS_DATE) )
11716       THEN
11717 	  -- check if item value contains '%' wildcard
11718 /*	  OPEN c_chk_str1(P_Qte_Header_Rec.CREATION_DATE);
11719 	  FETCH c_chk_str1 INTO str_csr1;
11720 	  CLOSE c_chk_str1;
11721 */
11722 	  str_csr1 := INSTR(P_Qte_Header_Rec.CREATION_DATE, '%', 1, 1);
11723 
11724 	  IF(str_csr1 <> 0) THEN
11725 	      l_operator := ' LIKE ';
11726 	  ELSE
11727 	      l_operator := ' = ';
11728 	  END IF;
11729 
11730 	  -- check if item value contains '_' wildcard
11731 /*
11732 	  OPEN c_chk_str2(P_Qte_Header_Rec.CREATION_DATE);
11733 	  FETCH c_chk_str2 INTO str_csr2;
11734 	  CLOSE c_chk_str2;
11735 */
11736 	  str_csr2 := INSTR(P_Qte_Header_Rec.CREATION_DATE, '_', 1, 1);
11737 
11738 	  IF(str_csr2 <> 0) THEN
11739 	      l_operator := ' LIKE ';
11740 	  ELSE
11741 	      l_operator := ' = ';
11742 	  END IF;
11743 
11744 	  IF(x_QTE_where IS NULL) THEN
11745 	      x_QTE_where := 'Where ';
11746 	  ELSE
11747 	      x_QTE_where := x_QTE_where || ' AND ';
11748 	  END IF;
11749 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.CREATION_DATE ' || l_operator || ' :p_CREATION_DATE';
11750       END IF;
11751 
11752       -- example for VARCHAR2 datatype
11753       IF( (P_Qte_Header_Rec.QUOTE_NAME IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_NAME <> FND_API.G_MISS_CHAR) )
11754       THEN
11755 	  -- check if item value contains '%' wildcard
11756 /*
11757 	  OPEN c_chk_str1(P_Qte_Header_Rec.QUOTE_NAME);
11758 	  FETCH c_chk_str1 INTO str_csr1;
11759 	  CLOSE c_chk_str1;
11760 */
11761 	  str_csr1 := INSTR(P_Qte_Header_Rec.QUOTE_NAME, '%', 1, 1);
11762 
11763 	  IF(str_csr1 <> 0) THEN
11764 	      l_operator := ' LIKE ';
11765 	  ELSE
11766 	      l_operator := ' = ';
11767 	  END IF;
11768 
11769 	  -- check if item value contains '_' wildcard
11770 /*
11771 	  OPEN c_chk_str2(P_Qte_Header_Rec.QUOTE_NAME);
11772 	  FETCH c_chk_str2 INTO str_csr2;
11773 	  CLOSE c_chk_str2;
11774 */
11775        str_csr2 := INSTR(P_Qte_Header_Rec.QUOTE_NAME, '_', 1, 1);
11776 
11777 	  IF(str_csr2 <> 0) THEN
11778 	      l_operator := ' LIKE ';
11779 	  ELSE
11780 	      l_operator := ' = ';
11781 	  END IF;
11782 
11783 	  IF(x_QTE_where IS NULL) THEN
11784 	      x_QTE_where := 'Where ';
11785 	  ELSE
11786 	      x_QTE_where := x_QTE_where || ' AND ';
11787 	  END IF;
11788 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.QUOTE_NAME ' || l_operator || ' :p_QUOTE_NAME';
11789       END IF;
11790 
11791       -- Add more IF statements for each column below
11792 
11793 
11794 END Gen_QTE_Where;
11795 
11796 PROCEDURE Get_quote(
11797     P_Api_Version_Number	 IN   NUMBER,
11798     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
11799     P_Qte_Header_Rec		 IN    ASO_QUOTE_PUB.Qte_Header_Rec_Type,
11800   -- Hint: Add list of bind variables here
11801     p_rec_requested		 IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
11802     p_start_rec_prt		 IN   NUMBER  := 1,
11803     p_return_tot_count		 IN   NUMBER  := FND_API.G_FALSE,
11804   -- Hint: user defined record type
11805     p_order_by_rec		 IN   ASO_QUOTE_PUB.QTE_sort_rec_type,
11806     x_return_status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11807     x_msg_count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11808     x_msg_data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11809     X_Qte_Header_Tbl		 OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Header_Tbl_Type,
11810     x_returned_rec_count	 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11811     x_next_rec_ptr		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11812     x_tot_rec_count		 OUT NOCOPY /* file.sql.39 change */      NUMBER)
11813 IS
11814 l_api_name		  CONSTANT VARCHAR2(30) := 'Get_quote';
11815 l_api_version_number	  CONSTANT NUMBER   := 1.0;
11816 
11817 -- Local record counters
11818 l_returned_rec_count	 NUMBER := 0; -- number of records returned in x_X_Qte_Header_Rec
11819 l_next_record_ptr	 NUMBER := 1;
11820 l_ignore		 NUMBER;
11821 
11822 -- total number of records accessable by caller
11823 l_tot_rec_count 	 NUMBER := 0;
11824 l_tot_rec_amount	 NUMBER := 0;
11825 
11826 -- Status local variables
11827 l_return_status 	 VARCHAR2(1); -- Return value from procedures
11828 l_return_status_full	 VARCHAR2(1); -- Calculated return status from
11829 
11830 -- Dynamic SQL statement elements
11831 l_cur_get_qte		 NUMBER;
11832 l_select_cl		 VARCHAR2(2000) := '';
11833 l_order_by_cl		 VARCHAR2(2000);
11834 l_QTE_where    VARCHAR2(2000) := '';
11835 
11836 -- For flex field query
11837 l_flex_where_tbl_type	 ASO_UTILITY_PVT.flex_where_tbl_type;
11838 l_flex_where		 VARCHAR2(2000) := NULL;
11839 l_counter		 NUMBER;
11840 
11841 -- Local scratch record
11842 l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
11843 l_crit_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
11844 BEGIN
11845       -- Standard Start of API savepoint
11846       SAVEPOINT GET_QUOTE_PVT;
11847 
11848       -- Standard call to check for call compatibility.
11849       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
11850 			 		     p_api_version_number,
11851 					   l_api_name,
11852 					   G_PKG_NAME)
11853       THEN
11854 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11855       END IF;
11856 
11857 
11858       -- Initialize message list if p_init_msg_list is set to TRUE.
11859       IF FND_API.to_Boolean( p_init_msg_list )
11860       THEN
11861 	  FND_MSG_PUB.initialize;
11862       END IF;
11863 
11864 
11865 
11866 
11867       -- Initialize API return status to SUCCESS
11868       x_return_status := FND_API.G_RET_STS_SUCCESS;
11869 
11870       --
11871       -- Api body
11872       --
11873 
11874       -- *************************************************
11875       -- Generate Dynamic SQL based on criteria passed in.
11876       -- Doing this for performance. Indexes are disabled when using NVL within static SQL statement.
11877       -- Ignore condition when criteria is NULL
11878       -- Generate Select clause and From clause
11879       -- Hint: Developer should modify Gen_Select procedure.
11880       Gen_Select(l_select_cl);
11881 
11882       -- Hint: Developer should modify and implement Gen_Where precedure.
11883       Gen_QTE_Where(l_crit_qte_header_rec, l_QTE_where);
11884 
11885       -- Generate Where clause for flex fields
11886       -- Hint: Developer can use table/view alias in the From clause generated in Gen_Select procedure
11887 
11888       FOR l_counter IN 1..15 LOOP
11889 	  l_flex_where_tbl_type(l_counter).name := 'ASO_QUOTE_HEADERS_V.attribute' || l_counter;
11890       END LOOP;
11891 
11892       l_flex_where_tbl_type(16).name := 'ASO_QUOTE_HEADERS_V.attribute_category';
11893       l_flex_where_tbl_type(1).value := P_Qte_Header_Rec.attribute1;
11894       l_flex_where_tbl_type(2).value := P_Qte_Header_Rec.attribute2;
11895       l_flex_where_tbl_type(3).value := P_Qte_Header_Rec.attribute3;
11896       l_flex_where_tbl_type(4).value := P_Qte_Header_Rec.attribute4;
11897       l_flex_where_tbl_type(5).value := P_Qte_Header_Rec.attribute5;
11898       l_flex_where_tbl_type(6).value := P_Qte_Header_Rec.attribute6;
11899       l_flex_where_tbl_type(7).value := P_Qte_Header_Rec.attribute7;
11900       l_flex_where_tbl_type(8).value := P_Qte_Header_Rec.attribute8;
11901       l_flex_where_tbl_type(9).value := P_Qte_Header_Rec.attribute9;
11902       l_flex_where_tbl_type(10).value := P_Qte_Header_Rec.attribute10;
11903       l_flex_where_tbl_type(11).value := P_Qte_Header_Rec.attribute11;
11904       l_flex_where_tbl_type(12).value := P_Qte_Header_Rec.attribute12;
11905       l_flex_where_tbl_type(13).value := P_Qte_Header_Rec.attribute13;
11906       l_flex_where_tbl_type(14).value := P_Qte_Header_Rec.attribute14;
11907       l_flex_where_tbl_type(15).value := P_Qte_Header_Rec.attribute15;
11908       l_flex_where_tbl_type(16).value := P_Qte_Header_Rec.attribute_category;
11909 
11910       ASO_UTILITY_PVT.Gen_Flexfield_Where(
11911 	  p_flex_where_tbl_type   => l_flex_where_tbl_type,
11912 	  x_flex_where_clause	  => l_flex_where);
11913 
11914       -- Hint: if master/detail relationship, generate Where clause for lines level criteria
11915       -- Generate order by clause
11916       Gen_QTE_order_cl(p_order_by_rec, l_order_by_cl, l_return_status, x_msg_count, x_msg_data);
11917 
11918 
11919       l_cur_get_qte := dbms_sql.open_cursor;
11920 
11921       -- Hint: concatenate all where clause (include flex field/line level if any applies)
11922       --    dbms_sql.parse(l_cur_get_QTE, l_select_cl || l_head_where || l_flex_where || l_lines_where
11923       --    || l_steam_where || l_order_by_cl, dbms_sql.native);
11924 
11925       -- Hint: Developer should implement Bind Variables procedure according to bind variables in the parameter list
11926       -- Bind(l_crit_qte_header_rec, l_crit_exp_purchase_rec, p_start_date, p_end_date,
11927       --      p_crit_exp_salesforce_id, p_crit_ptr_salesforce_id,
11928       --      p_crit_salesgroup_id, p_crit_ptr_manager_person_id,
11929       --      p_win_prob_ceiling, p_win_prob_floor,
11930       --      p_total_amt_ceiling, p_total_amt_floor,
11931       --      l_cur_get_QTE);
11932 
11933       -- Bind flexfield variables
11934       ASO_UTILITY_PVT.Bind_Flexfield_Where(
11935 	  p_cursor_id	=>   l_cur_get_QTE,
11936 	  p_flex_where_tbl_type => l_flex_where_tbl_type);
11937 
11938       -- Define all Select Columns
11939       Define_Columns(l_crit_qte_header_rec, l_cur_get_QTE);
11940 
11941       -- Execute
11942 
11943       l_ignore := dbms_sql.execute(l_cur_get_QTE);
11944 
11945 
11946       -- This loop is here to avoid calling a function in the main
11947       -- cursor. Basically, calling this function seems to disable
11948       -- index, but verification is needed. This is a good
11949       -- place to optimize the code if required.
11950 
11951       LOOP
11952       -- 1. There are more rows in the cursor.
11953       -- 2. User does not care about total records, and we need to return more.
11954       -- 3. Or user cares about total number of records.
11955       IF((dbms_sql.fetch_rows(l_cur_get_QTE)>0) AND ((p_return_tot_count = FND_API.G_TRUE)
11956 	OR (l_returned_rec_count<p_rec_requested) OR (p_rec_requested=FND_API.G_MISS_NUM)))
11957       THEN
11958 
11959 	  -- Hint: Developer need to implement this part
11960 	  --	  dbms_sql.column_value(l_cur_get_opp, 1, l_opp_rec.lead_id);
11961 	  --	  dbms_sql.column_value(l_cur_get_opp, 7, l_opp_rec.customer_id);
11962 	  --	  dbms_sql.column_value(l_cur_get_opp, 8, l_opp_rec.address_id);
11963 
11964 	  -- Hint: Check access for this record (e.x. ASO_ACCESS_PVT.Haso_OpportunityAccess)
11965 	  -- Return this particular record if
11966 	  -- 1. The caller has access to record.
11967 	  -- 2. The number of records returned < number of records caller requested in this run.
11968 	  -- 3. The record comes AFTER or Equal to the start index the caller requested.
11969 
11970 	  -- Developer should check whether there is access privilege here
11971 --	    IF(l_qte_header_rec.member_access <> 'N' OR l_qte_header_rec.member_role <> 'N') THEN
11972 	      Get_Column_Values(l_cur_get_QTE, l_qte_header_rec);
11973 	      l_tot_rec_count := l_tot_rec_count + 1;
11974 	      IF(l_returned_rec_count < p_rec_requested) AND (l_tot_rec_count >= p_start_rec_prt) THEN
11975 		  l_returned_rec_count := l_returned_rec_count + 1;
11976 		  -- insert into resultant tables
11977 		  X_Qte_Header_Tbl(l_returned_rec_count) := l_qte_header_rec;
11978 	      END IF;
11979 --	    END IF;
11980       ELSE
11981 	  EXIT;
11982       END IF;
11983       END LOOP;
11984       --
11985       -- End of API body
11986       --
11987 
11988 
11989 
11990       -- Standard call to get message count and if count is 1, get message info.
11991       FND_MSG_PUB.Count_And_Get
11992       (  p_count	  =>   x_msg_count,
11993 	 p_data 	  =>   x_msg_data
11994       );
11995 
11996       EXCEPTION
11997 	  WHEN FND_API.G_EXC_ERROR THEN
11998 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11999 		   P_API_NAME => L_API_NAME
12000 		  ,P_PKG_NAME => G_PKG_NAME
12001 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
12002 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12003 		  ,X_MSG_COUNT => X_MSG_COUNT
12004 		  ,X_MSG_DATA => X_MSG_DATA
12005 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12006 
12007 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12008 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
12009 		   P_API_NAME => L_API_NAME
12010 		  ,P_PKG_NAME => G_PKG_NAME
12011 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
12012 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12013 		  ,X_MSG_COUNT => X_MSG_COUNT
12014 		  ,X_MSG_DATA => X_MSG_DATA
12015 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12016 
12017 	  WHEN OTHERS THEN
12018 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
12019 		   P_API_NAME => L_API_NAME
12020 		  ,P_PKG_NAME => G_PKG_NAME
12021 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
12022 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12023 		  ,X_MSG_COUNT => X_MSG_COUNT
12024 		  ,X_MSG_DATA => X_MSG_DATA
12025 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12026 End Get_quote;
12027 
12028 PROCEDURE Validate_Quote
12029 (
12030     P_Api_Version_Number	 IN   NUMBER,
12031     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
12032     P_Qte_Header_Id		 IN   NUMBER,
12033     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12034     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12035     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2)
12036 IS
12037 BEGIN
12038 	null;
12039 END Validate_Quote;
12040 
12041 
12042 -- NAME
12043 --   Submit_Quote
12044 --
12045 -- PURPOSE
12046 --   Validate the quote and quote lines, where quote_id = p_quote_id.
12047 --   If validation is successful, insert the quote and quote lines
12048 --   to OE's interface tables.	Submit a concurrent request to order
12049 --   the quote.
12050 --
12051 
12052 PROCEDURE Submit_Quote
12053 (
12054     P_Api_Version_Number	 IN   NUMBER,
12055     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
12056     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
12057     p_validation_level	 IN   NUMBER	   := FND_API.G_VALID_LEVEL_FULL,
12058     p_control_rec		 IN   ASO_QUOTE_PUB.SUBMIT_Control_Rec_Type
12059 						:=  ASO_QUOTE_PUB.G_MISS_SUBMIT_CONTROL_REC,
12060     P_Qte_Header_Id		 IN   NUMBER,
12061     X_Order_Header_Rec	 OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Order_Header_Rec_Type,
12062     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12063     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12064     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2)
12065 
12066 IS
12067 
12068 l_qte_header_rec	 ASO_QUOTE_PUB.Qte_Header_Rec_Type
12069                               := ASO_QUOTE_PUB.G_MISS_Qte_Header_Rec;
12070 
12071 BEGIN
12072 
12073 -- Calling New Submit_Quote API
12074 
12075 	 l_qte_header_rec.quote_header_id := P_Qte_Header_Id;
12076 
12077       ASO_SUBMIT_QUOTE_PVT.Submit_Quote(
12078           P_Api_Version_Number => 1.0,
12079           P_Init_Msg_List      => p_init_msg_list,
12080           P_Commit             => p_commit,
12081           P_validation_level   => p_validation_level,
12082           P_Control_Rec        => p_control_rec,
12083           P_Qte_Header_Rec     => l_qte_header_rec,
12084           x_order_header_rec   => x_Order_Header_Rec,
12085           X_Return_Status      => x_return_status,
12086           X_Msg_Count          => x_msg_count,
12087           X_Msg_Data           => x_msg_data);
12088 
12089 
12090 END Submit_Quote;
12091 
12092 
12093 PROCEDURE config_copy(
12094    p_qte_line_id   IN   NUMBER,
12095    p_old_config_header_id IN NUMBER,
12096    p_old_config_revision_num IN NUMBER,
12097    p_config_header_id IN NUMBER,
12098    p_config_revision_num IN NUMBER,
12099    x_qte_header_id IN NUMBER,
12100    qte_header_id IN NUMBER,
12101    p_qte_line_rec IN ASO_QUOTE_PUB.Qte_Line_Rec_Type,
12102     P_control_rec         IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
12103   l_line_index_link_tbl  IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
12104   l_price_index_link_tbl  IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
12105   X_Return_Status              OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12106   X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */      NUMBER,
12107   X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */      VARCHAR2
12108 )
12109 IS
12110 
12111 CURSOR line_id_from_config IS
12112  SELECT ASO_Quote_Line_Details.QUOTE_LINE_ID
12113   FROM ASO_Quote_Line_Details, ASO_Quote_Lines_all
12114   WHERE ASO_Quote_Line_Details.config_header_id = p_old_config_header_id
12115   AND ASO_Quote_Line_Details.config_revision_num = p_old_config_revision_num
12116    AND ASO_quote_line_details.quote_line_id = ASO_Quote_Lines_all.quote_line_id
12117     AND ASO_Quote_Lines_all.item_type_code <> 'MDL'
12118     AND aso_quote_lines_all.quote_header_id = qte_header_id;
12119 
12120    l_payment_tbl     ASO_QUOTE_PUB.Payment_Tbl_Type;
12121    l_payment_tbl_out     ASO_QUOTE_PUB.Payment_Tbl_Type;
12122    l_shipment_tbl    ASO_QUOTE_PUB.Shipment_Tbl_Type;
12123    l_shipment_tbl_out    ASO_QUOTE_PUB.Shipment_Tbl_Type;
12124    l_shipment_rec    ASO_QUOTE_PUB.Shipment_Rec_Type;
12125    l_freight_charge_tbl   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
12126    l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
12127    l_tax_detail_tbl       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
12128    l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
12129 
12130    l_Price_Attr_Tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
12131    l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
12132    l_Price_Adj_Tbl   ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
12133    l_Price_Adj_Attr_Tbl   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
12134    l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
12135    l_qte_line_dtl_tbl     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
12136    l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
12137    l_qte_line_rec     ASO_QUOTE_PUB.Qte_Line_Rec_Type;
12138    l_Line_Attr_Ext_Tbl    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12139    l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12140    lx_ln_Price_Adj_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
12141    lx_qte_line_rec             ASO_QUOTE_PUB.Qte_Line_Rec_Type;
12142    l_control_rec    ASO_QUOTE_PUB.Control_Rec_Type;
12143 
12144      LX_PRICE_ADJ_RLTSHIP_ID     NUMBER;
12145      LX_LINE_RELATIONSHIP_ID     NUMBER;
12146 
12147      X_hd_Attr_Ext_Tbl           ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12148      X_Sales_Credit_Tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12149      X_Quote_Party_Tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12150      l_hd_Attr_Ext_Tbl         ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12151      l_quote_party_tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12152      l_quote_party_tbl_out         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12153      l_quote_party_rec         ASO_QUOTE_PUB.Quote_Party_rec_Type;
12154      l_sales_credit_tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12155      l_sales_credit_tbl_out        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12156      l_sales_credit_rec        ASO_QUOTE_PUB.Sales_Credit_rec_Type;
12157 
12158      l_return_status     varchar2(1);
12159      qte_line_id  NUMBER;
12160      i NUMBER;
12161      j NUMBER;
12162      k NUMBER;
12163 
12164      CURSOR C_Serviceable_Product(l_organization_id NUMBER, l_inv_item_id NUMBER) IS
12165      SELECT serviceable_product_flag FROM MTL_SYSTEM_ITEMS_VL
12166      WHERE inventory_item_id = l_inv_item_id
12167 	 AND organization_id = l_organization_id;
12168 
12169     l_quote_line_id number;
12170     l_serviceable_product_flag  VARCHAR2(1);
12171 
12172 l_api_version	CONSTANT NUMBER 	:= 1.0;
12173 
12174 BEGIN
12175 
12176     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12177     aso_debug_pub.add('Copy_Config - Begin ', 1, 'Y');
12178     aso_debug_pub.add('Copy_Config - x_qte_header_id '||x_qte_header_id, 1, 'Y');
12179     aso_debug_pub.add('Copy_Config - qte_header_id '||qte_header_id, 1, 'Y');
12180     aso_debug_pub.add('Copy_Config - p_qte_line_id '|| p_qte_line_id, 1, 'Y');
12181     END IF;
12182 
12183    OPEN line_id_from_config;
12184    LOOP
12185     FETCH line_id_from_config INTO qte_line_id;
12186     EXIT WHEN line_id_from_config%NOTFOUND;
12187 
12188     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12189     aso_debug_pub.add('Copy_Config - inside cursor qte_line_id '|| qte_line_id, 1, 'Y');
12190     END IF;
12191   l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(qte_line_id);
12192 
12193   l_qte_line_rec.quote_header_id := x_qte_header_id;
12194 
12195   l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(qte_line_id);
12196 
12197   FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
12198     l_qte_line_dtl_tbl(k).config_header_id := p_config_header_id;
12199     l_qte_line_dtl_tbl(k).config_revision_num := p_config_revision_num;
12200   END LOOP;
12201 
12202 
12203    l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows(qte_line_id);
12204    l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows(qte_header_id,qte_line_id);
12205 
12206    FOR j IN 1..l_price_adj_tbl.count LOOP
12207          l_price_adj_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12208    END LOOP;
12209 
12210    l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
12211    l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows(qte_header_id, qte_line_id);
12212 
12213    FOR j IN 1..l_price_attr_tbl.count LOOP
12214       l_price_attr_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12215    END LOOP;
12216 
12217    l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(qte_header_id, QTE_LINE_ID);
12218 
12219    FOR j IN 1..l_payment_tbl.count LOOP
12220          l_payment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12221          l_payment_tbl(j).CREDIT_CARD_APPROVAL_CODE := NULL;
12222          l_payment_tbl(j).CREDIT_CARD_APPROVAL_DATE := NULL;
12223          l_payment_tbl(j).PAYMENT_AMOUNT := NULL;
12224    END LOOP;
12225 
12226    l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(qte_header_id, QTE_LINE_ID);
12227    FOR j IN 1..l_shipment_tbl.count LOOP
12228         l_shipment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12229    END LOOP;
12230 
12231    l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(qte_header_id,QTE_LINE_ID);
12232    FOR j IN 1..l_sales_credit_tbl.count LOOP
12233        l_sales_credit_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12234    END LOOP;
12235 
12236    l_quote_party_tbl :=  ASO_UTILITY_PVT.Query_Quote_Party_Row(qte_header_id,QTE_LINE_ID);
12237     FOR j IN 1..l_quote_party_tbl.count LOOP
12238          l_quote_party_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12239     END LOOP;
12240 
12241     l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows(l_shipment_tbl);
12242     l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows(qte_header_id,QTE_LINE_ID, l_shipment_tbl);
12243 
12244     OPEN C_Serviceable_Product(l_qte_line_rec.organization_id, l_qte_line_rec.inventory_item_id);
12245     FETCH C_Serviceable_Product INTO l_serviceable_product_flag;
12246     CLOSE C_Serviceable_Product;
12247     l_quote_line_id := l_qte_line_rec.quote_line_id;
12248     -- BC4J Fix
12249     --l_qte_line_rec.quote_line_id := null;
12250 
12251     ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
12252               p_control_rec       => l_control_rec,
12253               P_qte_Line_Rec      => l_qte_line_rec,
12254               P_qte_line_dtl_tbl  => l_qte_line_dtl_tbl,
12255               P_Line_Attribs_Ext_Tbl   => l_line_attr_ext_tbl,
12256               P_price_attributes_tbl   => l_price_attr_tbl,
12257               P_Price_Adj_Tbl          => l_price_adj_tbl,
12258               P_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl,
12259               P_Payment_Tbl       => l_payment_tbl,
12260               P_Shipment_Tbl      => l_shipment_tbl,
12261               P_Freight_Charge_Tbl     => l_freight_charge_tbl,
12262               P_Tax_Detail_Tbl    => l_tax_detail_tbl,
12263               P_Sales_Credit_Tbl   => l_sales_credit_tbl,
12264               P_Quote_Party_Tbl   => l_quote_party_tbl,
12265               x_qte_Line_Rec      => lx_qte_line_rec,
12266               x_qte_line_dtl_tbl  => l_qte_line_dtl_tbl_out,
12267                x_Line_Attribs_Ext_Tbl   => l_line_attr_Ext_Tbl_out,
12268                x_price_attributes_tbl   => l_price_attr_tbl_out,
12269                x_Price_Adj_Tbl          => lx_ln_price_adj_tbl,
12270                x_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl_out,
12271                x_Payment_Tbl       => l_payment_tbl_out,
12272                x_Shipment_Tbl      => l_shipment_tbl_out,
12273                x_Freight_Charge_Tbl     => l_freight_charge_tbl_out,
12274                x_Tax_Detail_Tbl    => l_tax_detail_tbl_out,
12275                X_Sales_Credit_Tbl  => l_sales_credit_tbl_out,
12276                X_Quote_Party_Tbl   => l_quote_party_tbl_out,
12277                X_Return_Status     => l_return_status,
12278                X_Msg_Count         => x_msg_count,
12279                X_Msg_Data          => x_msg_data);
12280 
12281       l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
12282       l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
12283       l_price_attr_tbl      :=  l_price_attr_tbl_out;
12284       l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
12285       l_payment_tbl         :=  l_payment_tbl_out;
12286       l_shipment_tbl        :=  l_shipment_tbl_out;
12287       l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
12288       l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
12289       l_sales_credit_tbl    :=  l_sales_credit_tbl_out;
12290       l_quote_party_tbl     :=  l_quote_party_tbl_out;
12291 
12292 
12293 	IF p_control_rec.copy_att_flag = 'Y' THEN
12294     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12295     aso_debug_pub.add('Copy_Rows - Begin- before config  line copy_attch  ', 1, 'Y');
12296     END IF;
12297 
12298     ASO_ATTACHMENT_INT.Copy_Attachments(
12299        p_api_version       =>  l_api_version,
12300        p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
12301        p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
12302        p_old_object_id     =>  qte_line_id,
12303        p_new_object_id     =>  lx_qte_line_rec.quote_line_id,
12304        x_return_status     =>  x_return_status ,
12305        x_msg_count         =>  x_msg_count,
12306        x_msg_data          =>  x_msg_data
12307     );
12308 
12309    IF aso_debug_pub.g_debug_flag = 'Y' THEN
12310    aso_debug_pub.add('Copy_Rows -After config line copy_attch '||x_return_status, 1, 'Y');
12311    END IF;
12312 
12313 	  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12314 	      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12315 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12316 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12317 		  FND_MESSAGE.Set_Token('ROW', 'ASO_COPYQUOTE_ AFTER_ATTACHMENTS', TRUE);
12318 		  FND_MSG_PUB.ADD;
12319 	      END IF;
12320 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12321 	  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
12322 	      x_return_status := FND_API.G_RET_STS_ERROR;
12323              RAISE   FND_API.G_EXC_ERROR;
12324 	  END IF ;
12325   	END IF;
12326 
12327     FOR j IN 1..l_price_adj_tbl.count LOOP
12328          l_price_index_link_tbl(l_price_adj_tbl(j).price_adjustment_id) :=
12329                    lx_ln_price_adj_tbl(j).price_adjustment_id;
12330    END LOOP;
12331    l_line_index_link_tbl(qte_line_id) := lx_qte_line_rec.quote_line_id;
12332 
12333 -- CLOSE line_id_from_config;
12334 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12335 aso_debug_pub.add('Copy_Config - l_qte_line_tbl(i).item_type_code '|| l_qte_line_rec.item_type_code, 1, 'Y');
12336 aso_debug_pub.add('Copy - l_qte_line_tbl(i).inventory_item_id '|| l_qte_line_rec.inventory_item_id, 1, 'Y');
12337 aso_debug_pub.add('Copy - l_serviceable_product_flag '|| l_serviceable_product_flag, 1, 'Y');
12338 END IF;
12339     IF l_serviceable_product_flag = 'Y' THEN
12340 			ASO_QUOTE_HEADERS_PVT.service_copy(
12341                       p_qte_line_id     => l_quote_line_id,
12342                       p_control_rec     => p_control_rec,
12343                       x_qte_header_id   => x_qte_header_id,
12344                       qte_header_id     => qte_header_id,
12345                       p_qte_line_rec    => l_qte_line_rec,
12346                       l_line_index_link_tbl   => l_line_index_link_tbl,
12347                       l_price_index_link_tbl  => l_price_index_link_tbl,
12348          	          X_Return_Status         => l_return_status,
12349                       X_Msg_Count             => x_msg_count,
12350                       X_Msg_Data              => x_msg_data
12351 		      );
12352           END IF;
12353 
12354 	    IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12355 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12356 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12357 		    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12358 		    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
12359 		    FND_MSG_PUB.ADD;
12360 		END IF;
12361 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12362 	    ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
12363 		x_return_status := FND_API.G_RET_STS_ERROR;
12364 	    END IF;
12365 
12366     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12367          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12368          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12369              FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12370              FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
12371              FND_MSG_PUB.ADD;
12372           END IF;
12373 
12374           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12375      ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
12376           x_return_status := FND_API.G_RET_STS_ERROR;
12377      END IF;
12378 
12379  END LOOP;
12380 
12381  CLOSE line_id_from_config;
12382 
12383 END config_copy;
12384 
12385 
12386 PROCEDURE service_copy(
12387    p_qte_line_id        IN   NUMBER,
12388    x_qte_header_id      IN NUMBER,
12389    qte_header_id        IN NUMBER,
12390    p_qte_line_rec       IN ASO_QUOTE_PUB.Qte_Line_Rec_Type,
12391    P_control_rec        IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
12392    l_line_index_link_tbl    IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
12393    l_price_index_link_tbl   IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
12394    X_Return_Status             OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12395    X_Msg_Count                 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12396    X_Msg_Data                  OUT NOCOPY /* file.sql.39 change */      VARCHAR2
12397 )
12398 IS
12399 
12400 CURSOR line_id_from_service IS
12401  SELECT related_quote_line_id
12402   FROM aso_line_relationships
12403   WHERE quote_line_id = p_qte_line_id
12404   AND relationship_type_code = 'SERVICE';
12405 
12406    l_payment_tbl     ASO_QUOTE_PUB.Payment_Tbl_Type;
12407    l_payment_tbl_out     ASO_QUOTE_PUB.Payment_Tbl_Type;
12408    l_shipment_tbl    ASO_QUOTE_PUB.Shipment_Tbl_Type;
12409    l_shipment_tbl_out    ASO_QUOTE_PUB.Shipment_Tbl_Type;
12410    l_shipment_rec    ASO_QUOTE_PUB.Shipment_Rec_Type;
12411    l_freight_charge_tbl   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
12412    l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
12413    l_tax_detail_tbl       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
12414    l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
12415 
12416    l_Price_Attr_Tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
12417    l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
12418    l_Price_Adj_Tbl   ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
12419    l_Price_Adj_Attr_Tbl   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
12420    l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
12421    l_qte_line_dtl_tbl     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
12422    l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
12423    l_qte_line_rec     ASO_QUOTE_PUB.Qte_Line_Rec_Type;
12424    l_Line_Attr_Ext_Tbl    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12425    l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12426    lx_ln_Price_Adj_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
12427    lx_qte_line_rec             ASO_QUOTE_PUB.Qte_Line_Rec_Type;
12428    l_control_rec    ASO_QUOTE_PUB.Control_Rec_Type;
12429 
12430      LX_PRICE_ADJ_RLTSHIP_ID     NUMBER;
12431      LX_LINE_RELATIONSHIP_ID     NUMBER;
12432 
12433      X_hd_Attr_Ext_Tbl           ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12434      X_Sales_Credit_Tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12435      X_Quote_Party_Tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12436      l_hd_Attr_Ext_Tbl         ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
12437      l_quote_party_tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12438      l_quote_party_tbl_out         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
12439      l_quote_party_rec         ASO_QUOTE_PUB.Quote_Party_rec_Type;
12440      l_sales_credit_tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12441      l_sales_credit_tbl_out        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
12442      l_sales_credit_rec        ASO_QUOTE_PUB.Sales_Credit_rec_Type;
12443 
12444      l_service_ref_line_id  NUMBER;
12445 
12446      l_return_status     varchar2(1);
12447      qte_line_id  NUMBER;
12448      i NUMBER;
12449      j NUMBER;
12450      k NUMBER;
12451 l_api_version	CONSTANT NUMBER 	:= 1.0;
12452 
12453 BEGIN
12454     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12455     aso_debug_pub.add('Copy_Service - Begin ', 1, 'Y');
12456     aso_debug_pub.add('Copy_Service - x_qte_header_id '||x_qte_header_id, 1, 'Y');
12457     aso_debug_pub.add('Copy_Service - qte_header_id '||qte_header_id, 1, 'Y');
12458     aso_debug_pub.add('Copy_Service - p_qte_line_id '|| p_qte_line_id, 1, 'Y');
12459     END IF;
12460 
12461    OPEN line_id_from_service;
12462    LOOP
12463     FETCH line_id_from_service INTO qte_line_id;
12464     EXIT WHEN line_id_from_service%NOTFOUND;
12465     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12466     aso_debug_pub.add('Copy_Service - inside cursor qte_line_id '|| qte_line_id, 1, 'Y');
12467     END IF;
12468   l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(qte_line_id);
12469 
12470   l_qte_line_rec.quote_header_id := x_qte_header_id;
12471 
12472   l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(qte_line_id);
12473 
12474 
12475          IF l_qte_line_dtl_tbl.count > 0 THEN
12476 	      FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
12477 	        IF l_qte_line_dtl_tbl(k).service_ref_type_code = 'QUOTE' THEN
12478 	          IF l_qte_line_dtl_tbl(k).service_ref_line_id is NOT NULL THEN
12479     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12480     aso_debug_pub.add('Copy_Service - l_qte_line_dtl_tbl(k).service_ref_line_id '|| l_qte_line_dtl_tbl(k).service_ref_line_id, 1, 'Y');
12481     END IF;
12482 		    l_service_ref_line_id  :=
12483 		     l_line_index_link_tbl(l_qte_line_dtl_tbl(k).service_ref_line_id);
12484 		    l_qte_line_dtl_tbl(k).service_ref_line_id := l_service_ref_line_id;
12485 		     END IF;
12486 	        END IF;
12487             END LOOP;
12488 	    END IF;
12489     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12490     aso_debug_pub.add('Copy_Service - 2 l_service_ref_line_id '|| l_service_ref_line_id, 1, 'Y');
12491     END IF;
12492 /*
12493   FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
12494     l_qte_line_dtl_tbl(k).config_header_id := p_config_header_id;
12495     l_qte_line_dtl_tbl(k).config_revision_num := p_config_revision_num;
12496   END LOOP;
12497 */
12498 
12499    l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows(qte_line_id);
12500    l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows(qte_header_id,qte_line_id);
12501 
12502    FOR j IN 1..l_price_adj_tbl.count LOOP
12503          l_price_adj_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12504    END LOOP;
12505 
12506    l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
12507    l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows(qte_header_id, qte_line_id);
12508 
12509    FOR j IN 1..l_price_attr_tbl.count LOOP
12510       l_price_attr_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12511    END LOOP;
12512 
12513    l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(qte_header_id, QTE_LINE_ID);
12514 
12515    FOR j IN 1..l_payment_tbl.count LOOP
12516          l_payment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12517          l_payment_tbl(j).CREDIT_CARD_APPROVAL_CODE := NULL;
12518          l_payment_tbl(j).CREDIT_CARD_APPROVAL_DATE := NULL;
12519          l_payment_tbl(j).PAYMENT_AMOUNT := NULL;
12520    END LOOP;
12521 
12522    l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(qte_header_id, QTE_LINE_ID);
12523    FOR j IN 1..l_shipment_tbl.count LOOP
12524         l_shipment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12525    END LOOP;
12526 
12527    l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(qte_header_id,QTE_LINE_ID);
12528    FOR j IN 1..l_sales_credit_tbl.count LOOP
12529        l_sales_credit_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12530    END LOOP;
12531 
12532    l_quote_party_tbl :=  ASO_UTILITY_PVT.Query_Quote_Party_Row(qte_header_id,QTE_LINE_ID);
12533     FOR j IN 1..l_quote_party_tbl.count LOOP
12534          l_quote_party_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
12535     END LOOP;
12536 
12537     l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows(l_shipment_tbl);
12538     l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows(qte_header_id,QTE_LINE_ID, l_shipment_tbl);
12539     -- BC4J Fix
12540     --l_qte_line_rec.quote_line_id := null;
12541     ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
12542               p_control_rec       => l_control_rec,
12543               P_qte_Line_Rec      => l_qte_line_rec,
12544               P_qte_line_dtl_tbl  => l_qte_line_dtl_tbl,
12545               P_Line_Attribs_Ext_Tbl   => l_line_attr_ext_tbl,
12546               P_price_attributes_tbl   => l_price_attr_tbl,
12547               P_Price_Adj_Tbl          => l_price_adj_tbl,
12548               P_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl,
12549               P_Payment_Tbl       => l_payment_tbl,
12550               P_Shipment_Tbl      => l_shipment_tbl,
12551               P_Freight_Charge_Tbl     => l_freight_charge_tbl,
12552               P_Tax_Detail_Tbl    => l_tax_detail_tbl,
12553               P_Sales_Credit_Tbl   => l_sales_credit_tbl,
12554               P_Quote_Party_Tbl   => l_quote_party_tbl,
12555               x_qte_Line_Rec      => lx_qte_line_rec,
12556               x_qte_line_dtl_tbl  => l_qte_line_dtl_tbl_out,
12557                x_Line_Attribs_Ext_Tbl   => l_line_attr_Ext_Tbl_out,
12558                x_price_attributes_tbl   => l_price_attr_tbl_out,
12559                x_Price_Adj_Tbl          => lx_ln_price_adj_tbl,
12560                x_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl_out,
12561                x_Payment_Tbl       => l_payment_tbl_out,
12562                x_Shipment_Tbl      => l_shipment_tbl_out,
12563                x_Freight_Charge_Tbl     => l_freight_charge_tbl_out,
12564                x_Tax_Detail_Tbl    => l_tax_detail_tbl_out,
12565                X_Sales_Credit_Tbl  => l_sales_credit_tbl_out,
12566                X_Quote_Party_Tbl   => l_quote_party_tbl_out,
12567                X_Return_Status     => l_return_status,
12568                X_Msg_Count         => x_msg_count,
12569                X_Msg_Data          => x_msg_data);
12570 
12571 
12572       l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
12573       l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
12574       l_price_attr_tbl      :=  l_price_attr_tbl_out;
12575       l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
12576       l_payment_tbl         :=  l_payment_tbl_out;
12577       l_shipment_tbl        :=  l_shipment_tbl_out;
12578       l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
12579       l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
12580       l_sales_credit_tbl    :=  l_sales_credit_tbl_out;
12581       l_quote_party_tbl     :=  l_quote_party_tbl_out;
12582 
12583 
12584 	IF p_control_rec.copy_att_flag = 'Y' THEN
12585     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12586     aso_debug_pub.add('Copy_Rows - Begin- before config  line copy_attch  ', 1, 'Y');
12587     END IF;
12588 
12589     ASO_ATTACHMENT_INT.Copy_Attachments(
12590        p_api_version       =>  l_api_version,
12591        p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
12592        p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
12593        p_old_object_id     =>  qte_line_id,
12594        p_new_object_id     =>  lx_qte_line_rec.quote_line_id,
12595        x_return_status     =>  x_return_status ,
12596        x_msg_count         =>  x_msg_count,
12597        x_msg_data          =>  x_msg_data
12598 );
12599 
12600    IF aso_debug_pub.g_debug_flag = 'Y' THEN
12601    aso_debug_pub.add('Copy_Rows -After config line copy_attch '||x_return_status, 1, 'Y');
12602    END IF;
12603 
12604 	  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12605 	      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12606 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12607 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12608 		  FND_MESSAGE.Set_Token('ROW', 'ASO_COPYQUOTE_ AFTER_ATTACHMENTS', TRUE);
12609 		  FND_MSG_PUB.ADD;
12610 	      END IF;
12611 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12612 	  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
12613 	      x_return_status := FND_API.G_RET_STS_ERROR;
12614              RAISE   FND_API.G_EXC_ERROR;
12615 	  END IF ;
12616   	END IF;
12617 
12618     FOR j IN 1..l_price_adj_tbl.count LOOP
12619          l_price_index_link_tbl(l_price_adj_tbl(j).price_adjustment_id) :=
12620                    lx_ln_price_adj_tbl(j).price_adjustment_id;
12621    END LOOP;
12622    l_line_index_link_tbl(qte_line_id) := lx_qte_line_rec.quote_line_id;
12623 
12624 -- CLOSE line_id_from_config;
12625 
12626     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12627          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12628          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12629              FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12630              FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
12631              FND_MSG_PUB.ADD;
12632           END IF;
12633 
12634           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12635      ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
12636           x_return_status := FND_API.G_RET_STS_ERROR;
12637      END IF;
12638 
12639 
12640  END LOOP;
12641 
12642  CLOSE line_id_from_service;
12643 
12644 END service_copy;
12645 
12646 PROCEDURE Quote_Security_Check(
12647     P_Api_Version_Number         IN      NUMBER,
12648     P_Init_Msg_List              IN      VARCHAR2     := FND_API.G_FALSE,
12649     P_User_Id                    IN      NUMBER,
12650     X_Resource_Id                OUT NOCOPY /* file.sql.39 change */         NUMBER,
12651     X_Security_Flag              OUT NOCOPY /* file.sql.39 change */         VARCHAR2,
12652     X_Return_Status              OUT NOCOPY /* file.sql.39 change */         VARCHAR2,
12653     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */         NUMBER,
12654     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */         VARCHAR2
12655 )
12656 IS
12657 
12658     l_role_type               VARCHAR2(240) := NULL;
12659     l_mgr_flag                VARCHAR2(1)   := NULL;
12660     l_api_name                CONSTANT VARCHAR2(30) := 'QUOTE_SECURITY_CHECK';
12661     l_api_version_number      CONSTANT NUMBER   := 1.0;
12662 
12663     Cursor C_salesrep (X_User_Id NUMBER) IS
12664     SELECT j.resource_id
12665     /* FROM jtf_rs_srp_vl srp, jtf_rs_resource_extns j  */  --Commented Code Yogeshwar (MOAC)
12666     FROM jtf_rs_salesreps_mo_v srp, jtf_rs_resource_extns j --New Code Yogeshwar (MOAC)
12667     WHERE j.user_id = X_User_Id
12668       AND j.resource_id = srp.resource_id
12669       AND srp.status = 'A'
12670       AND nvl(trunc(srp.start_date_active), trunc(sysdate)) <= trunc(sysdate)
12671       AND nvl(trunc(srp.end_date_active), trunc(sysdate)) >= trunc(sysdate);
12672       /*  --Commented Code Start Yogeshwar (MOAC)
12673       AND NVL(srp.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);
12674      */   --Commented Code End yogeshwar (MOAC)
12675 
12676 
12677     Cursor C_role (X_Resource_Id NUMBER, X_Profile_Role_Type VARCHAR2) IS
12678     SELECT role.role_type_code, role.manager_flag
12679     FROM JTF_RS_DEFRESROLES_VL role, JTF_RS_DEFRESOURCES_VL res
12680     WHERE role.role_resource_id = res.resource_id
12681       AND res.resource_id = X_resource_id
12682       AND nvl(trunc(role.res_rl_start_date), trunc(sysdate)) <= trunc(sysdate)
12683       AND nvl(trunc(role.res_rl_end_date), trunc(sysdate)) >= trunc(sysdate)
12684       AND role.ROLE_TYPE_CODE = X_profile_role_type
12685       AND role.delete_flag = 'N';
12686 
12687 BEGIN
12688 
12689     -- Standard call to check for call compatibility.
12690     IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
12691                                          p_api_version_number,
12692                                          l_api_name,
12693                                          G_PKG_NAME)
12694     THEN
12695         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12696     END IF;
12697 
12698     -- Initialize message list if p_init_msg_list is set to TRUE.
12699     IF FND_API.to_Boolean( p_init_msg_list )
12700     THEN
12701         FND_MSG_PUB.initialize;
12702     END IF;
12703 
12704 
12705     -- Initialize API return status to SUCCESS
12706     x_return_status := FND_API.G_RET_STS_SUCCESS;
12707 
12708     X_Resource_Id := NULL;
12709     X_Security_Flag := 'N';
12710 
12711     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12712     aso_debug_pub.add('Quote_Security_Check(): before main logic', 1, 'Y');
12713     END IF;
12714 
12715     FOR c_sv IN C_salesrep(p_user_id) LOOP
12716         X_Resource_Id := c_sv.resource_id;
12717         IF X_Resource_Id IS NOT NULL THEN
12718             IF aso_debug_pub.g_debug_flag = 'Y' THEN
12719 		  aso_debug_pub.add('Quote_Security_Check(): Resource_Id IS NOT NULL', 1, 'Y');
12720 		  END IF;
12721             IF (FND_PROFILE.Value('ASO_ROLE_TYPE')) IS NOT NULL THEN
12722                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12723 			 aso_debug_pub.add('Quote_Security_Check(): ASO_ROLE_TYPE NOT NULL', 1, 'Y');
12724 			 END IF;
12725                 FOR c_r IN C_role(X_Resource_Id, FND_PROFILE.Value('ASO_ROLE_TYPE')) LOOP
12726                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12727 				aso_debug_pub.add('Quote_Security_Check(): C_Role FOUND', 1, 'Y');
12728 				END IF;
12729                     l_mgr_flag := c_r.manager_flag;
12730                     IF l_mgr_flag ='Y' THEN
12731                         X_Security_Flag := 'Y';
12732                     END IF;
12733                 END LOOP;
12734                 IF l_mgr_flag IS NULL THEN
12735                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12736 				aso_debug_pub.add('Quote_Security_Check(): C_Role NOTFOUND', 1, 'Y');
12737 				END IF;
12738                     X_Security_Flag := 'Y';
12739                 END IF;
12740             ELSE
12741                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12742 			 aso_debug_pub.add('Quote_Security_Check(): ASO_ROLE_TYPE IS NULL', 1, 'Y');
12743 			 END IF;
12744                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12745                     FND_MESSAGE.set_name('ASO','ASO_ERR_ROLE_TYPE_NULL');
12746                     FND_MSG_PUB.ADD;
12747                     x_return_status := FND_API.G_RET_STS_ERROR;
12748                 END IF;
12749             END IF;
12750         END IF;
12751     END LOOP;
12752 
12753     IF aso_debug_pub.g_debug_flag = 'Y' THEN
12754     aso_debug_pub.add('Quote_Security_Check(): after main logic', 1, 'Y');
12755     aso_debug_pub.add('Quote_Security_Check(): End:   Resource_Id:   '||X_Resource_Id, 1, 'Y');
12756     aso_debug_pub.add('Quote_Security_Check(): End:   Security_Flag: '||X_Security_Flag, 1, 'Y');
12757     END IF;
12758 
12759 
12760     -- Standard call to get message count and if count is 1, get message info.
12761     FND_MSG_PUB.Count_And_Get
12762     (  p_count          =>   x_msg_count,
12763        p_data           =>   x_msg_data
12764     );
12765 
12766 End Quote_Security_Check;
12767 
12768 
12769 End ASO_QUOTE_HEADERS_PVT;