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.66.12020000.3 2012/07/19 14:41:12 akushwah 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 OR
152 	  p_shipment_rec.SHIP_FROM_ORG_ID             IS NOT NULL    -- Added for Bug 10112949
153         )
154       ) OR (
155         p_database_object_name = 'ASO_AK_STORE_CART_HEADER_V'
156         AND (
157           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
158           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
159           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
160           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
161           p_shipment_rec.REQUEST_DATE_TYPE            IS NOT NULL OR
162           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
163           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
164           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
165           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
166           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
167           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
168           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
169           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
170         )
171       ) OR (
172         p_database_object_name = 'ASO_AK_STORE_CART_LINES_V'
173         AND (
174           p_shipment_rec.SHIP_TO_PARTY_SITE_ID        IS NOT NULL OR
175           p_shipment_rec.SHIP_TO_PARTY_ID             IS NOT NULL OR
176           p_shipment_rec.SHIP_TO_CUST_PARTY_ID        IS NOT NULL OR
177           p_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID      IS NOT NULL OR
178           p_shipment_rec.REQUEST_DATE                 IS NOT NULL OR
179           p_shipment_rec.SHIP_METHOD_CODE             IS NOT NULL OR
180           p_shipment_rec.SHIPMENT_PRIORITY_CODE       IS NOT NULL OR
181           p_shipment_rec.FREIGHT_TERMS_CODE           IS NOT NULL OR
182           p_shipment_rec.FOB_CODE                     IS NOT NULL OR
183           p_shipment_rec.SHIPPING_INSTRUCTIONS        IS NOT NULL OR
184           p_shipment_rec.PACKING_INSTRUCTIONS         IS NOT NULL OR
185           p_shipment_rec.DEMAND_CLASS_CODE            IS NOT NULL
186         )
187       )
188 
189   ) THEN
190 
191     IF aso_debug_pub.g_debug_flag = 'Y' THEN
192       aso_debug_pub.add('Defaulting Engine returns values in shipment_rec.');
193     END IF;
194 
195     return TRUE;
196 
197   ELSE
198 
199     IF aso_debug_pub.g_debug_flag = 'Y' THEN
200       aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in shipment_rec.');
201     END IF;
202 
203     return FALSE;
204 
205   END IF;
206 
207 END Shipment_Null_Rec_Exists;
208 
209 
210 FUNCTION  Payment_NULL_Rec_Exists(
211   p_payment_rec           IN  ASO_QUOTE_PUB.Payment_Rec_Type,
212   p_database_object_name  IN  VARCHAR2
213 ) RETURN BOOLEAN
214 IS
215 
216 BEGIN
217   IF aso_debug_pub.g_debug_flag = 'Y' THEN
218 	  aso_debug_pub.add('Begin Payment_Rec_Exists function.', 1, 'Y');
219 	END IF;
220 
221  IF (
222       (
223         p_database_object_name = 'ASO_AK_QUOTE_HEADER_V'
224         AND (
225           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
226           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
227           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
228           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
229           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
230           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
231           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
232         )
233       ) OR (
234         p_database_object_name = 'ASO_AK_QUOTE_OPPTY_V'
235         AND (
236           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
237           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
238           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
239           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
240           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
241           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
242           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
243         )
244       ) OR (
245         p_database_object_name = 'ASO_AK_QUOTE_LINE_V'
246         AND (
247           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
248           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
249           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
250           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
251           p_payment_rec.CUST_PO_LINE_NUMBER         IS NOT NULL  OR
252           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
253           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
254           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
255         )
256       ) OR (
257         p_database_object_name = 'ASO_AK_STORE_CART_HEADER_V'
258         AND (
259           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
260           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
261           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
262           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
263           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
264           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
265           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
266         )
267       ) OR (
268         p_database_object_name = 'ASO_AK_STORE_CART_LINES_V'
269         AND (
270           p_payment_rec.CREDIT_CARD_CODE            IS NOT NULL  OR
271           p_payment_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL  OR
272           p_payment_rec.CREDIT_CARD_HOLDER_NAME     IS NOT NULL  OR
273           p_payment_rec.CUST_PO_NUMBER              IS NOT NULL  OR
274           p_payment_rec.CUST_PO_LINE_NUMBER         IS NOT NULL  OR
275           p_payment_rec.PAYMENT_REF_NUMBER          IS NOT NULL  OR
276           p_payment_rec.PAYMENT_TERM_ID             IS NOT NULL  OR
277           p_payment_rec.PAYMENT_TYPE_CODE           IS NOT NULL
278         )
279       )
280   ) THEN
281 
282     IF aso_debug_pub.g_debug_flag = 'Y' THEN
283 		  aso_debug_pub.add('Defaulting Engine returns values in payment_rec.');
284 		END IF;
285 
286     return TRUE;
287 
288   ELSE
289 
290     IF aso_debug_pub.g_debug_flag = 'Y' THEN
291       aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in payment_rec.');
292     END IF;
293 
294 	  RETURN FALSE;
295 
296   END IF;
297 
298 END Payment_NULL_Rec_Exists;
299 
300 
301 FUNCTION  Tax_Detail_Null_Rec_Exists(
302   p_tax_detail_rec        IN  ASO_QUOTE_PUB.Tax_Detail_Rec_Type,
303   p_database_object_name  IN VARCHAR2
304 ) RETURN BOOLEAN
305 IS
306 
307 BEGIN
308   IF aso_debug_pub.g_debug_flag = 'Y' THEN
309 	  aso_debug_pub.add('Begin Tax_Detail_Null_Rec_Exists function.', 1, 'Y');
310 	END IF;
311 
312   IF aso_debug_pub.g_debug_flag = 'Y' THEN
313     aso_debug_pub.add('Defaulting Engine doesn''t default any attribute in tax_detail_rec.');
314   END IF;
315 
316   RETURN FALSE;
317 
318 END Tax_Detail_Null_Rec_Exists;
319 
320 -- hyang defaulting framework end
321 
322 
323 PROCEDURE Populate_Qte_Header (
324     p_qte_header_rec		IN   ASO_QUOTE_PUB.qte_header_rec_Type,
325     p_Control_Rec		    IN   ASO_QUOTE_PUB.Control_Rec_Type,
326     x_qte_header_rec	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.qte_header_rec_Type
327     )
328 IS
329 
330         l_valid_org_id number;   --New variable to store org_id Yogeshwar (MOAC)
331 
332     CURSOR C_Qte_Number IS
333 	SELECT ASO_QUOTE_NUMBER_S.nextval
334 	FROM dual;
335 
336     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
337 	SELECT quote_version
338 	FROM ASO_QUOTE_HEADERS_ALL
339 	WHERE quote_number = X_qte_number;
340 
341     CURSOR C_Qte_Status_Id (c_status_code VARCHAR2) IS
342 	SELECT quote_status_id
343 	FROM ASO_QUOTE_STATUSES_VL
344 	WHERE status_code = c_status_code;
345 
346     CURSOR c_price_list (c_order_type_id NUMBEr) IS
347         SELECT price_list_id
348         FROM OE_ORDER_TYPES_V
349         WHERE order_type_id = c_order_type_id;
350 
351     CURSOR c_currency_code (c_price_list_id NUMBER) IS
352         SELECT currency_code
353         FROM qp_price_lists_v
354         WHERE price_list_id = c_price_list_id;
355 
356 
357     CURSOR c_resource IS
358    	SELECT resource_id FROM JTF_RS_SRP_VL
359    	WHERE person_id =  p_qte_header_rec.employee_person_id;
360 
361     -- Change START
362     -- Release 12 MOAC Changes : Bug 4500739
363     -- Changes Done by : Girish
364     -- Comments : Using HR EIT in place of org striped profile
365 
366     --l_order_type_id	NUMBER := to_number(fnd_profile.value('ASO_ORDER_TYPE_ID'));
367     l_order_type_id	NUMBER := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_ORDER_TYPE));
368 
369     -- Change END
370 
371     l_price_list_id	NUMBER;
372     l_currency_code	VARCHAR2(15);
373     l_resource_id NUMBER;
374     l_default_status_profile  VARCHAR2(30);
375 
376     l_defaulting_fwk_flag     VARCHAR2(1) := p_control_rec.defaulting_fwk_flag;
377 
378     x_return_status VARCHAR2(1);
379     l_org_id	    NUMBER;    --Yogeshwar (MOAC)
380 
381 BEGIN
382 
383     IF aso_debug_pub.g_debug_flag = 'Y' THEN
384         aso_debug_pub.add('Begin Populate_Qte_Header procedure', 1, 'Y');
385         aso_debug_pub.add('Defaulting Framework Flag - '||l_defaulting_fwk_flag, 1, 'Y');
386     END IF;
387 
388 
389     x_qte_header_rec := p_qte_header_rec;
390 
391     IF aso_debug_pub.g_debug_flag = 'Y' THEN
392         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_number: '||x_qte_header_rec.quote_number, 1, 'N');
393     END IF;
394 
395     IF (x_qte_header_rec.quote_number IS NULL OR
396 		x_qte_header_rec.quote_number = FND_API.G_MISS_NUM) THEN
397 
398 	   IF nvl( FND_PROFILE.Value('ASO_AUTO_NUMBERING'), 'Y') = 'Y' THEN
399 
400             IF aso_debug_pub.g_debug_flag = 'Y' THEN
401 	           aso_debug_pub.add('Populate_Qte_Header: Inside IF cond ASO_AUTO_NUMBERING = Y', 1, 'N');
402 		  END IF;
403 
404 	       OPEN  C_Qte_Number;
405 	       FETCH C_Qte_Number INTO x_qte_header_rec.quote_number;
406 	       CLOSE C_Qte_Number;
407 
408   	       x_qte_header_rec.quote_version := 1;
409 
410 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
411 	           aso_debug_pub.add('x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number);
412 	           aso_debug_pub.add('x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version);
413 	       END IF;
414 
415         ELSIF x_qte_header_rec.quote_type = 'T' then
416 
417             IF aso_debug_pub.g_debug_flag = 'Y' THEN
418 	         aso_debug_pub.add('Populate_Qte_Header: ELSIF cond quote_type = T');
419 	       END IF;
420 
421 	       OPEN  C_Qte_Number;
422 	       FETCH C_Qte_Number INTO x_qte_header_rec.quote_number;
423 	       CLOSE C_Qte_Number;
424 
425   	       x_qte_header_rec.quote_version := 1;
426 
427 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
428 		      aso_debug_pub.add('x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number);
429 		      aso_debug_pub.add('x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version);
430 	   	  END IF;
431 
432         ELSE
433 
434 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
435 	          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');
436 
437 	       END IF;
438 
439 	       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
440                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
441                 FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
442                 FND_MSG_PUB.ADD;
443 	       END IF;
444 
445 	       RAISE FND_API.G_EXC_ERROR;
446 
447 	   END IF;
448 
449     ELSE
450 
451 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
452 	       aso_debug_pub.add('Populate_Qte_Header: Inside ELSE cond quote_number is not null and not G_MISS_NUM',1, 'N');
453 	   END IF;
454 
455         OPEN C_Qte_Version(x_qte_header_rec.quote_number);
456         FETCH C_Qte_Version into x_qte_header_rec.quote_version;
457 
458 	   --Changed for Bug # 2365955
459         --IF x_qte_header_rec.quote_version IS NOT NULL AND x_qte_header_rec.quote_version <> FND_API.G_MISS_NUM THEN
460 
461 	   IF C_Qte_Version%FOUND THEN
462 
463             IF aso_debug_pub.g_debug_flag = 'Y' THEN
464 		  aso_debug_pub.add('Inside else: C_Qte_Version%FOUND', 1, 'N');
465 		  END IF;
466 
467             CLOSE C_Qte_Version;
468 
469             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
470                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_DUPLICATE_QTE_NUM');
471                 FND_MESSAGE.Set_Token('QTE_NUM', x_qte_header_rec.quote_number, FALSE);
472                 FND_MSG_PUB.ADD;
473             END IF;
474             RAISE FND_API.G_EXC_ERROR;
475         ELSE
476             IF aso_debug_pub.g_debug_flag = 'Y' THEN
477 		      aso_debug_pub.add('Inside else: C_Qte_Version%NOTFOUND', 1, 'N');
478 		  END IF;
479             x_qte_header_rec.quote_version := 1;
480             CLOSE C_Qte_Version;
481         END IF;
482 --	  x_qte_header_rec.quote_version := nvl(x_qte_header_rec.quote_version, 0) + 1;
483     END IF;
484 
485     IF aso_debug_pub.g_debug_flag = 'Y' THEN
486         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_number : '||x_qte_header_rec.quote_number, 1, 'N');
487         aso_debug_pub.add('Populate_Qte_Header: x_qte_header_rec.quote_version: '||x_qte_header_rec.quote_version,1, 'N');
488     END IF;
489 
490     IF (x_qte_header_rec.quote_status_id IS NULL OR
491 		x_qte_header_rec.quote_status_id = FND_API.G_MISS_NUM) THEN
492 	  --OPEN c_qte_status_id ('DRAFT');
493 	  -- hyang 2269617
494 	  l_default_status_profile := fnd_profile.value( 'ASO_DEFAULT_STATUS_CODE');
495 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
496 	  aso_debug_pub.add('Populate_Qte_Header: Profile ASO_DEFAULT_STATUS_CODE is ' || l_default_status_profile, 1, 'Y');
497 	  END IF;
498 	  OPEN c_qte_status_id ( l_default_status_profile );
499 	  FETCH c_qte_status_id INTO x_qte_header_rec.quote_status_id;
500 	  CLOSE c_qte_status_id;
501     END IF;
502 
503     IF (l_defaulting_fwk_flag = 'N')
504     THEN
505 
506        --Commented Code Yogeshwar (MOAC)
507     /*  IF (x_qte_header_rec.org_id IS NULL OR
508         x_qte_header_rec.org_id = FND_API.G_MISS_NUM) THEN
509         IF SUBSTRB(USERENV('CLIENT_INFO'),1,1) <> ' ' THEN
510           x_qte_header_rec.org_id := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10));
511         END IF;
512       END IF;
513     */
514     --Commented Code End Yogeshwar (MOAC)
515 
516     --New Code Start Yogeshwar (MOAC)
517 	If x_qte_header_rec.org_id  IS NULL THEN
518 		l_org_id := FND_API.G_MISS_NUM;
519 	Else
520 		l_org_id := x_qte_header_rec.org_id;
521 	End if;
522 	 l_valid_org_id:= MO_GLOBAL.get_valid_org(l_org_id);
523 	if l_valid_org_id is NULL then
524 		x_return_status := FND_API.G_RET_STS_ERROR;
525 		RAISE FND_API.G_EXC_ERROR;
526         else
527 		 x_qte_header_rec.org_id := l_valid_org_id;
528 	End if;
529     --New Code End Yogeshwar (MOAC)
530 
531       IF aso_debug_pub.g_debug_flag = 'Y' THEN
532         aso_debug_pub.add('Before OM Defaulting - Populate Qte header', 1, 'N');
533         aso_debug_pub.add('Before OM Defaulting Value of  ASO_OM_DEFAULTING '||FND_PROFILE.Value('ASO_OM_DEFAULTING'), 1, 'N');
534       END IF;
535       -- IF (NVL(FND_PROFILE.Value('ASO_OM_DEFAULTING'), 'N') = 'N') THEN
536       IF (x_qte_header_rec.order_type_id IS NULL OR
537         x_qte_header_rec.order_type_id = FND_API.G_MISS_NUM) THEN
538         x_qte_header_rec.order_type_id := l_order_type_id;
539       END IF;
540       --END IF;
541 
542       -- New code for Bug # 2317961
543 
544       IF aso_debug_pub.g_debug_flag = 'Y' THEN
545         aso_debug_pub.add('Populate_qte_header: order_type_id: ||x_qte_header_rec.order_type_id ',1,'N');
546         aso_debug_pub.add('Populate_qte_header: price_list_id: ||x_qte_header_rec.price_list_id ',1,'N');
547       END IF;
548 
549       IF x_qte_header_rec.price_list_id = FND_API.G_MISS_NUM THEN
550 
551         OPEN  c_price_list(x_qte_header_rec.order_type_id);
552         FETCH c_price_list INTO x_qte_header_rec.price_list_id;
553         CLOSE c_price_list;
554 
555         IF aso_debug_pub.g_debug_flag = 'Y' THEN
556           aso_debug_pub.add('Populate_qte_header: After c_price_list cursor: price_list_id: ||x_qte_header_rec.price_list_id ',1,'N');
557         END IF;
558 
559       ELSIF (x_qte_header_rec.price_list_id IS NULL) AND
560             (x_qte_header_rec.currency_code IS NULL OR
561              x_qte_header_rec.currency_code = FND_API.G_MISS_CHAR) THEN
562 
563         IF aso_debug_pub.g_debug_flag = 'Y' THEN
564           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');
565         END IF;
566 
567         FND_MESSAGE.Set_Name('ASO', 'ASO_PRICE_LIST_CURRENCY_CODE');
568         FND_MSG_PUB.ADD;
569         RAISE FND_API.G_EXC_ERROR;
570 
571       END IF;
572 
573       -- End new code for Bug # 2317961
574 
575       IF aso_debug_pub.g_debug_flag = 'Y' THEN
576         aso_debug_pub.add('After price_list_id - Populate Qte header', 1, 'N');
577       END IF;
578 
579       IF (x_qte_header_rec.currency_code IS NULL OR
580         x_qte_header_rec.currency_code = FND_API.G_MISS_CHAR) THEN
581         OPEN c_currency_code(x_qte_header_rec.price_list_id);
582         FETCH c_currency_code INTO x_qte_header_rec.currency_code;
583         CLOSE c_currency_code;
584       END IF;
585 
586       IF (--x_qte_header_rec.quote_expiration_date IS NULL OR
587         x_qte_header_rec.quote_expiration_date = FND_API.G_MISS_DATE) THEN
588         x_qte_header_rec.quote_expiration_date := sysdate +
589       	  NVL(FND_PROFILE.value('ASO_QUOTE_DURATION'), G_QUOTE_DURATION);
590       END IF;
591 
592       IF (x_qte_header_rec.resource_id IS NULL OR
593           x_qte_header_rec.resource_id = FND_API.G_MISS_NUM)
594           AND  (x_qte_header_rec.EMPLOYEE_PERSON_ID IS NOT NULL AND
595           x_qte_header_rec.EMPLOYEE_PERSON_ID <> FND_API.G_MISS_NUM) THEN
596 
597           OPEN c_resource;
598           FETCH c_resource INTO l_resource_id;
599           IF c_resource%NOTFOUND OR  l_resource_id IS NULL OR l_resource_id= FND_API.G_MISS_NUM THEN
600             CLOSE c_resource;
601             x_return_status := FND_API.G_RET_STS_ERROR;
602             FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
603             FND_MESSAGE.Set_Token('COLUMN', 'RESOURCE ID', FALSE);
604             FND_MSG_PUB.ADD;
605             RAISE FND_API.G_EXC_ERROR;
606           END IF;
607 
608           CLOSE c_resource;
609           x_qte_header_rec.resource_id := l_resource_id;
610           IF aso_debug_pub.g_debug_flag = 'Y' THEN
611             aso_debug_pub.add('Inside  Populate Qte header resource Id'||l_resource_id, 1, 'N');
612           END IF;
613 
614       END IF;
615 
616     END IF; -- defaulting_fwk_flag
617 
618 
619     IF x_qte_header_rec.max_version_flag is NULL OR  x_qte_header_rec.max_version_flag = FND_API.G_MISS_CHAR THEN
620       x_qte_header_rec.max_version_flag := 'Y';
621     END IF;
622 
623     IF aso_debug_pub.g_debug_flag = 'Y' THEN
624       aso_debug_pub.add('Inside  Populate Qte header x_qte_header_rec.max_version_flag'||x_qte_header_rec.max_version_flag,1,'N');
625       aso_debug_pub.add('End Populate Qte header', 1, 'Y');
626     END IF;
627 
628 END Populate_Qte_Header;
629 
630 PROCEDURE Insert_Rows (
631     P_qte_Header_Rec        IN       ASO_QUOTE_PUB.qte_header_rec_Type,
632     p_Price_Attributes_Tbl  IN       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
633     P_Price_Adjustment_Tbl  IN       ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
634     P_Price_Adj_Attr_Tbl	   IN       ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
635     P_Payment_Tbl		   IN       ASO_QUOTE_PUB.Payment_Tbl_Type,
636     P_Shipment_Tbl		   IN       ASO_QUOTE_PUB.Shipment_Tbl_Type,
637     P_Freight_Charge_Tbl	   IN       ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
638     P_Tax_Detail_Tbl        IN       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
639     P_hd_Attr_Ext_Tbl       IN       ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
640     P_Sales_Credit_Tbl      IN       ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
641     P_Quote_Party_Tbl       IN       ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
642     P_Qte_Access_Tbl        IN       ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
643     X_qte_Header_Rec        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.qte_header_rec_Type,
644     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
645     X_Price_Adjustment_Tbl  OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
646     x_Price_Adj_Attr_Tbl	   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
647     X_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Payment_Tbl_Type,
648     X_Shipment_Rec		   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Shipment_Rec_Type,
649     X_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
650     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
651     X_hd_Attr_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
652     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
653     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
654     X_Qte_Access_Tbl        OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
655     X_Return_Status		   OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
656     X_Msg_Count 		   OUT NOCOPY /* file.sql.39 change */      NUMBER,
657     X_Msg_Data			   OUT NOCOPY /* file.sql.39 change */      VARCHAR2
658     )
659 IS
660     l_price_adj_rec		ASO_QUOTE_PUB.Price_Adj_Rec_Type;
661     l_payment_rec		ASO_QUOTE_PUB.Payment_Rec_Type;
662     l_shipment_rec		ASO_QUOTE_PUB.Shipment_Rec_Type;
663     l_freight_charge_rec	ASO_QUOTE_PUB.Freight_Charge_Rec_Type;
664     l_tax_detail_rec		ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
665     lx_qte_header_id		NUMBER;
666     lx_shipment_id		NUMBER;
667     l_Sales_Credit_Tbl          ASO_QUOTE_PUB.Sales_Credit_Tbl_Type ;
668     l_Quote_Party_Tbl           ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
669     l_Sales_Credit_rec          ASO_QUOTE_PUB.Sales_Credit_rec_Type ;
670     l_Quote_Party_rec           ASO_QUOTE_PUB.Quote_Party_rec_Type;
671     l_line_attribs_rec          ASO_QUOTE_PUB.Line_Attribs_Ext_REC_type;
672     l_sysdate           DATE;
673     l_price_adj_attr_tbl	ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
674     l_price_attributes_rec      ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
675 
676 G_USER_ID	  NUMBER := FND_GLOBAL.USER_ID;
677 G_LOGIN_ID	  NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
678 
679     l_org_id NUMBER;
680     l_valid_org_id number;  --New variable to store ORG_ID Yogeshwar (MOAC)
681 
682     l_qte_access_tbl    ASO_QUOTE_PUB.Qte_Access_Tbl_Type := p_qte_access_tbl;
683     --l_qte_access_tbl    ASO_SECURITY_INT.Qte_Access_Tbl_Type := p_qte_access_tbl;
684     --lx_qte_access_tbl   ASO_SECURITY_INT.Qte_Access_Tbl_Type;
685     lx_price_attr_tbl          ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
686 
687 BEGIN
688     x_qte_header_rec := p_qte_header_rec;
689     l_sysdate := sysdate;
690 
691     --Commented Code Start Yogeshwar (MOAC)
692     /* IF p_qte_header_rec.ORG_ID IS NULL OR p_qte_header_rec.ORG_ID = FND_API.G_MISS_NUM THEN
693 
694        IF SUBSTRB(USERENV('CLIENT_INFO'),1 ,1) = ' ' THEN
695            l_org_id := NULL;
696        ELSE
697            l_org_id := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'), 1,10));
698        END IF;
699 
700     ELSIF p_qte_header_rec.ORG_ID IS NOT NULL AND p_qte_header_rec.ORG_ID <> FND_API.G_MISS_NUM THEN
701          l_org_id :=  p_qte_header_rec.ORG_ID;
702     END IF;
703     */ --Commented Code End Yogeshwar (MOAC)
704 
705     --New Code Start Yogeshwar (MOAC)
706        If p_qte_header_rec.org_id  IS NULL THEN
707 		l_org_id := FND_API.G_MISS_NUM;
708 	Else
709 		l_org_id := p_qte_header_rec.org_id;
710 	End if;
711 	l_valid_org_id:= MO_GLOBAL.get_valid_org(l_org_id);
712 	if l_valid_org_id is NULL then
713 		x_return_status := FND_API.G_RET_STS_ERROR;
714 		RAISE FND_API.G_EXC_ERROR;
715 	else
716 		l_org_id := l_valid_org_id ;
717 	End if;
718    --New Code End Yogeshwar (MOAC)
719 
720     lx_qte_header_id := p_qte_header_rec.quote_header_id;
721 
722     IF aso_debug_pub.g_debug_flag = 'Y' THEN
723     aso_debug_pub.add('Begin Insert Rows', 1, 'Y');
724     END IF;
725 
726     ASO_QUOTE_HEADERS_PKG.Insert_Row(
727 	  px_QUOTE_HEADER_ID  => lx_qte_header_id,
728 	  p_CREATION_DATE  => l_SYSDATE,
729 	  p_CREATED_BY	=> G_USER_ID,
730 	  p_LAST_UPDATE_DATE  => l_sysdate,
731 	  p_LAST_UPDATED_BY  => G_USER_ID,
732 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
733 	  p_REQUEST_ID	=> p_qte_header_rec.REQUEST_ID,
734 	  p_PROGRAM_APPLICATION_ID  => p_qte_header_rec.PROGRAM_APPLICATION_ID,
735 	  p_PROGRAM_ID	=> p_qte_header_rec.PROGRAM_ID,
736 	  p_PROGRAM_UPDATE_DATE  => p_qte_header_rec.PROGRAM_UPDATE_DATE,
737 	  p_ORG_ID  => l_org_id,
738 	  p_QUOTE_NAME	=> p_qte_header_rec.QUOTE_NAME,
739 	  p_QUOTE_NUMBER  => p_qte_header_rec.QUOTE_NUMBER,
740 	  p_QUOTE_VERSION  => p_qte_header_rec.QUOTE_VERSION,
741 	  p_QUOTE_STATUS_ID  => p_qte_header_rec.QUOTE_STATUS_ID,
742 	  p_QUOTE_SOURCE_CODE  => p_qte_header_rec.QUOTE_SOURCE_CODE,
743 	  p_QUOTE_EXPIRATION_DATE  => trunc(p_qte_header_rec.QUOTE_EXPIRATION_DATE),
744 	  p_PRICE_FROZEN_DATE  => p_qte_header_rec.PRICE_FROZEN_DATE,
745 	  p_QUOTE_PASSWORD  => p_qte_header_rec.QUOTE_PASSWORD,
746 	  p_ORIGINAL_SYSTEM_REFERENCE  => p_qte_header_rec.ORIGINAL_SYSTEM_REFERENCE,
747 	  p_PARTY_ID  => p_qte_header_rec.PARTY_ID,
748 	  p_CUST_ACCOUNT_ID  => p_qte_header_rec.CUST_ACCOUNT_ID,
749 	  p_ORG_CONTACT_ID  => p_qte_header_rec.ORG_CONTACT_ID,
750 	  p_PHONE_ID  => p_QTE_header_rec.PHONE_ID,
751 	  p_INVOICE_TO_PARTY_SITE_ID  => p_qte_header_rec.INVOICE_TO_PARTY_SITE_ID,
752 	  p_INVOICE_TO_PARTY_ID  => p_qte_header_rec.INVOICE_TO_PARTY_ID,
753           p_Invoice_to_CUST_ACCOUNT_ID  => p_qte_header_rec.Invoice_to_CUST_ACCOUNT_ID,
754 	  p_ORIG_MKTG_SOURCE_CODE_ID  => p_qte_header_rec.ORIG_MKTG_SOURCE_CODE_ID,
755 	  p_MARKETING_SOURCE_CODE_ID  => p_qte_header_rec.MARKETING_SOURCE_CODE_ID,
756 	  p_ORDER_TYPE_ID  => p_qte_header_rec.ORDER_TYPE_ID,
757 	  p_QUOTE_CATEGORY_CODE  => p_qte_header_rec.QUOTE_CATEGORY_CODE,
758 	  p_ORDERED_DATE  => p_qte_header_rec.ORDERED_DATE,
759 	  p_ACCOUNTING_RULE_ID	=> p_qte_header_rec.ACCOUNTING_RULE_ID,
760 	  p_INVOICING_RULE_ID  => p_qte_header_rec.INVOICING_RULE_ID,
761 	  p_EMPLOYEE_PERSON_ID	=> p_qte_header_rec.EMPLOYEE_PERSON_ID,
762 	  p_PRICE_LIST_ID  => p_qte_header_rec.PRICE_LIST_ID,
763 	  p_CURRENCY_CODE  => p_qte_header_rec.CURRENCY_CODE,
764 	  p_TOTAL_LIST_PRICE  => p_qte_header_rec.TOTAL_LIST_PRICE,
765 	  p_TOTAL_ADJUSTED_AMOUNT  => p_qte_header_rec.TOTAL_ADJUSTED_AMOUNT,
766 	  p_TOTAL_ADJUSTED_PERCENT  => p_qte_header_rec.TOTAL_ADJUSTED_PERCENT,
767 	  p_TOTAL_TAX  => p_qte_header_rec.TOTAL_TAX,
768 	  p_TOTAL_SHIPPING_CHARGE  => p_qte_header_rec.TOTAL_SHIPPING_CHARGE,
769 	  p_SURCHARGE  => p_qte_header_rec.SURCHARGE,
770 	  p_TOTAL_QUOTE_PRICE  => p_qte_header_rec.TOTAL_QUOTE_PRICE,
771 	  p_PAYMENT_AMOUNT  => p_qte_header_rec.PAYMENT_AMOUNT,
772 	  p_EXCHANGE_RATE  => p_qte_header_rec.EXCHANGE_RATE,
773 	  p_EXCHANGE_TYPE_CODE	=> p_qte_header_rec.EXCHANGE_TYPE_CODE,
774 	  p_EXCHANGE_RATE_DATE	=> p_qte_header_rec.EXCHANGE_RATE_DATE,
775 	  p_CONTRACT_ID  => p_qte_header_rec.CONTRACT_ID,
776 	  p_SALES_CHANNEL_CODE	=> p_qte_header_rec.SALES_CHANNEL_CODE,
777 	  p_ORDER_ID  => p_QTE_header_rec.ORDER_ID,
778 	  p_RESOURCE_ID =>  p_qte_header_rec.RESOURCE_ID,
779 	  p_ATTRIBUTE_CATEGORY	=> p_qte_header_rec.ATTRIBUTE_CATEGORY,
780 	  p_ATTRIBUTE1	=> p_qte_header_rec.ATTRIBUTE1,
781 	  p_ATTRIBUTE2	=> p_qte_header_rec.ATTRIBUTE2,
782 	  p_ATTRIBUTE3	=> p_qte_header_rec.ATTRIBUTE3,
783 	  p_ATTRIBUTE4	=> p_qte_header_rec.ATTRIBUTE4,
784 	  p_ATTRIBUTE5	=> p_qte_header_rec.ATTRIBUTE5,
785 	  p_ATTRIBUTE6	=> p_qte_header_rec.ATTRIBUTE6,
786 	  p_ATTRIBUTE7	=> p_qte_header_rec.ATTRIBUTE7,
787 	  p_ATTRIBUTE8	=> p_qte_header_rec.ATTRIBUTE8,
788 	  p_ATTRIBUTE9	=> p_qte_header_rec.ATTRIBUTE9,
789 	  p_ATTRIBUTE10  => p_qte_header_rec.ATTRIBUTE10,
790 	  p_ATTRIBUTE11  => p_qte_header_rec.ATTRIBUTE11,
791 	  p_ATTRIBUTE12  => p_qte_header_rec.ATTRIBUTE12,
792 	  p_ATTRIBUTE13  => p_qte_header_rec.ATTRIBUTE13,
793 	  p_ATTRIBUTE14  => p_qte_header_rec.ATTRIBUTE14,
794 	  p_ATTRIBUTE15  => p_qte_header_rec.ATTRIBUTE15,
795        p_ATTRIBUTE16  => p_qte_header_rec.ATTRIBUTE16,
796        p_ATTRIBUTE17  => p_qte_header_rec.ATTRIBUTE17,
797        p_ATTRIBUTE18  => p_qte_header_rec.ATTRIBUTE18,
798        p_ATTRIBUTE19  => p_qte_header_rec.ATTRIBUTE19,
799        p_ATTRIBUTE20  => p_qte_header_rec.ATTRIBUTE20,
800 -- hyang new okc
801 	  p_CONTRACT_TEMPLATE_ID  => FND_API.G_MISS_NUM,
802 	  p_CONTRACT_TEMPLATE_MAJOR_VER  => FND_API.G_MISS_NUM,
803 	  p_CONTRACT_REQUESTER_ID   => FND_API.G_MISS_NUM,
804 	  p_CONTRACT_APPROVAL_LEVEL => FND_API.G_MISS_CHAR,
805 -- end of hyang new okc
806 	  p_PUBLISH_FLAG            => p_qte_header_rec.PUBLISH_FLAG,
807 	  p_RESOURCE_GRP_ID         => p_qte_header_rec.RESOURCE_GRP_ID,
808           p_SOLD_TO_PARTY_SITE_ID   => p_qte_header_rec.SOLD_TO_PARTY_SITE_ID,
809           p_DISPLAY_ARITHMETIC_OPERATOR => p_qte_header_rec.DISPLAY_ARITHMETIC_OPERATOR,
810           p_MAX_VERSION_FLAG        => p_qte_header_rec.max_version_flag,
811           p_QUOTE_TYPE              => p_qte_header_rec.QUOTE_TYPE,
812           p_QUOTE_DESCRIPTION       => p_qte_header_rec.QUOTE_DESCRIPTION,
813           p_MINISITE_ID             => p_qte_header_rec.MINISITE_ID,
814 	  p_CUST_PARTY_ID          => p_qte_header_rec.CUST_PARTY_ID,
815 	  p_INVOICE_TO_CUST_PARTY_ID => p_qte_header_rec.INVOICE_TO_CUST_PARTY_ID,
816 	  p_Pricing_Status_indicator  	     =>  p_qte_header_rec.Pricing_Status_indicator,
817 	  p_Tax_status_Indicator	     =>  p_qte_header_rec.Tax_status_Indicator,
818 	  p_Price_updated_date	     	     =>  p_qte_header_rec.Price_updated_date,
819 	  p_Tax_updated_date		     =>  p_qte_header_rec.Tax_updated_date,
820 	  p_Recalculate_flag		     =>  p_qte_header_rec.Recalculate_flag,
821 	  p_price_request_id		     => p_qte_header_rec.price_request_id,
822 	  p_credit_update_date		     => p_qte_header_rec.credit_update_date,
823 -- hyang new okc
824     P_Customer_Name_And_Title       =>  p_qte_header_rec.Customer_Name_And_Title,
825     P_Customer_Signature_Date       =>  p_qte_header_rec.Customer_Signature_Date,
826     P_Supplier_Name_And_Title       =>  p_qte_header_rec.Supplier_Name_And_Title,
827     P_Supplier_Signature_Date       =>  p_qte_header_rec.Supplier_Signature_Date,
828 -- end of hyang new okc
829     p_END_CUSTOMER_PARTY_ID         =>  p_qte_header_rec.END_CUSTOMER_PARTY_ID,
830     p_END_CUSTOMER_CUST_PARTY_ID    =>  p_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID,
831     p_END_CUSTOMER_PARTY_SITE_ID    =>  p_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID,
832     p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
833     P_OBJECT_VERSION_NUMBER         =>  p_qte_header_rec.OBJECT_VERSION_NUMBER,
834     p_assistance_requested          =>  p_qte_header_rec.assistance_requested,
835     p_assistance_reason_code        =>  p_qte_header_rec.assistance_reason_code,
836     p_automatic_price_flag          =>  p_qte_header_rec.automatic_price_flag,
837     p_automatic_tax_flag            =>  p_qte_header_rec.automatic_tax_flag,
838     p_header_paynow_charges         =>  p_qte_header_rec.header_paynow_charges
839       -- ER 12879412
840 /*    P_PRODUCT_FISC_CLASSIFICATION => p_qte_header_rec.PRODUCT_FISC_CLASSIFICATION,
841     P_TRX_BUSINESS_CATEGORY =>   p_qte_header_rec.TRX_BUSINESS_CATEGORY*/
842 );
843 
844     x_qte_header_rec.QUOTE_HEADER_ID := lx_qte_header_id;
845     x_qte_header_rec.LAST_UPDATE_DATE := l_sysdate;
846      x_qte_header_rec.CREATION_DATE := l_sysdate;
847 	x_qte_header_rec.max_version_flag := 'Y';
848      IF aso_debug_pub.g_debug_flag = 'Y' THEN
849 	aso_debug_pub.add('After quote headers.insert rows - Insert Rows', 1, 'Y');
850 	END IF;
851 
852     x_price_adjustment_tbl := p_price_adjustment_tbl;
853     l_price_adj_attr_tbl := p_price_adj_attr_tbl;
854     FOR i IN 1..P_Price_Adjustment_Tbl.count LOOP
855 	l_price_adj_rec := p_price_adjustment_tbl(i);
856      -- BC4J Fix
857 	--x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
858     l_sysdate := sysdate;
859 	ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
860 	    px_PRICE_ADJUSTMENT_ID  => x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID,
861 	    p_CREATION_DATE  => SYSDATE,
862 	    p_CREATED_BY  => G_USER_ID,
863 	    p_LAST_UPDATE_DATE	=> l_sysdate,
864 	    p_LAST_UPDATED_BY  => G_USER_ID,
865 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
866 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
867 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
868 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
869 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
870 	    p_QUOTE_HEADER_ID  => lx_QTE_HEADER_ID,
871 	    p_QUOTE_LINE_ID  => NULL,
872 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
873 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
874 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
875 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
876 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
877 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
878 	    p_OPERAND  => l_price_adj_rec.OPERAND,
879 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
880 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
881 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
882 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
883 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
884 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
885 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
886 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
887 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
888 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
889 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
890 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
891 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
892 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
893 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
894 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
895 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
896 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
897 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
898 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
899 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
900 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
901 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
902          p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
903 	    p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
904 	    p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
905 	    p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
906 	    p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
907   p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
908           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
909           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
910           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
911           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
912           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
913           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
914           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
915           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
916           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
917           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
918           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
919           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
920           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
921           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
922           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
923           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
924           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
925           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
926           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
927           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
928           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
929           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
930           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
931           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
932           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
933           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
934           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
935           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
936           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
937           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
938           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
939           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
940           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
941           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
942           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
943           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
944           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
945           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
946           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
947           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
948           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
949 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
950 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
951 	     p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
952 		P_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
953         );
954         x_price_adjustment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
955 	FOR j in 1..l_price_adj_attr_tbl.count LOOP
956 	    IF l_price_adj_attr_tbl(j).price_adj_index = i THEN
957 		l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID;
958 	    END IF;
959 	END LOOP;
960     END LOOP;
961 
962     x_price_adj_attr_tbl := l_price_adj_attr_tbl;
963     FOR i in 1..l_price_adj_attr_tbl.count LOOP
964      -- BC4J Fix
965 	--x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := NULL;
966      l_sysdate := sysdate;
967 	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
968 		px_PRICE_ADJ_ATTRIB_ID	 => x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
969 		p_CREATION_DATE  => SYSDATE,
970 		p_CREATED_BY  => G_USER_ID,
971 		p_LAST_UPDATE_DATE  => l_sysdate,
972 		p_LAST_UPDATED_BY  => G_USER_ID,
973 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
974 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
975 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
976 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
977 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
978 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
979 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
980 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
981 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
982 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
983 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
984 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
985 		P_OBJECT_VERSION_NUMBER => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
986         x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
987     END LOOP;
988 
989     IF aso_debug_pub.g_debug_flag = 'Y' THEN
990     aso_debug_pub.add('After Price_adj.insert_rows - Insert Rows', 1, 'Y');
991     END IF;
992 
993     x_payment_tbl := p_payment_tbl;
994 
995     FOR i IN 1..P_Payment_Tbl.count LOOP
996 
997 	l_payment_rec := p_payment_tbl(i);
998 	l_payment_rec.payment_term_id_from := p_payment_tbl(i).payment_term_id;
999 
1000     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1001        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');
1002        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');
1003     END IF;
1004 
1005      -- BC4J Fix
1006 	--x_payment_tbl(i).payment_id := null;
1007 	x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
1008         l_sysdate := sysdate;
1009 
1010 
1011      --  Payments Changes
1012 
1013 	    l_payment_rec.quote_header_id := lx_qte_header_id;
1014 
1015            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1016                aso_debug_pub.add('Insert_Rows: Before  call to create_payment_row ', 1, 'Y');
1017            END IF;
1018 
1019          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
1020                                              x_payment_rec   => x_payment_tbl(i),
1021                                              x_return_status => x_return_status,
1022                                              x_msg_count     => x_msg_count,
1023                                              x_msg_data      => x_msg_data);
1024 
1025            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1026                aso_debug_pub.add('Insert_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
1027            END IF;
1028 
1029             if x_return_status <> fnd_api.g_ret_sts_success then
1030               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1031                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1032               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1033                  RAISE FND_API.G_EXC_ERROR;
1034               ELSE
1035                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1036               END IF;
1037             end if;
1038 
1039 	x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
1040 
1041 	-- End Payment Changes
1042      x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1043 
1044     END LOOP;
1045 
1046     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1047     aso_debug_pub.add('After Payments.insert_rows - Insert Rows', 1, 'Y');
1048     END IF;
1049 
1050     x_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_Rec;
1051 
1052     IF p_shipment_tbl.count > 0 THEN
1053 
1054 	x_shipment_rec := p_shipment_tbl(1);
1055         x_shipment_rec.ship_method_code_from   := p_shipment_tbl(1).ship_method_code;
1056         x_shipment_rec.freight_terms_code_from := p_shipment_tbl(1).freight_terms_code;
1057 
1058      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1059       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');
1060       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');
1061      END IF;
1062 
1063         l_sysdate := sysdate;
1064      -- BC4J Fix
1065      lx_shipment_id := p_shipment_tbl(1).shipment_id;
1066 
1067 	ASO_SHIPMENTS_PKG.Insert_Row(
1068 	    px_SHIPMENT_ID  => lx_shipment_id,
1069 	    p_CREATION_DATE  => SYSDATE,
1070 	    p_CREATED_BY  => G_USER_ID,
1071 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1072 	    p_LAST_UPDATED_BY  => G_USER_ID,
1073 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1074 	    p_REQUEST_ID  => x_shipment_rec.REQUEST_ID,
1075 	    p_PROGRAM_APPLICATION_ID  => x_shipment_rec.PROGRAM_APPLICATION_ID,
1076 	    p_PROGRAM_ID  => x_shipment_rec.PROGRAM_ID,
1077 	    p_PROGRAM_UPDATE_DATE  => x_shipment_rec.PROGRAM_UPDATE_DATE,
1078 	    p_QUOTE_HEADER_ID  => lx_Qte_HEADER_ID,
1079 	    p_QUOTE_LINE_ID  => NULL,
1080 	    p_PROMISE_DATE  => x_shipment_rec.PROMISE_DATE,
1081 	    p_REQUEST_DATE  => x_shipment_rec.REQUEST_DATE,
1082 	    p_SCHEDULE_SHIP_DATE  => x_shipment_rec.SCHEDULE_SHIP_DATE,
1083 	    p_SHIP_TO_PARTY_SITE_ID  => x_shipment_rec.SHIP_TO_PARTY_SITE_ID,
1084 	    p_SHIP_TO_PARTY_ID	=> x_shipment_rec.SHIP_TO_PARTY_ID,
1085          p_SHIP_TO_CUST_ACCOUNT_ID  => x_Shipment_rec.SHIP_TO_CUST_ACCOUNT_ID,
1086 	    p_SHIP_PARTIAL_FLAG  => x_shipment_rec.SHIP_PARTIAL_FLAG,
1087 	    p_SHIP_SET_ID  => x_shipment_rec.SHIP_SET_ID,
1088 	    p_SHIP_METHOD_CODE	=> x_shipment_rec.SHIP_METHOD_CODE,
1089 	    p_FREIGHT_TERMS_CODE  => x_shipment_rec.FREIGHT_TERMS_CODE,
1090 	    p_FREIGHT_CARRIER_CODE  => x_shipment_rec.FREIGHT_CARRIER_CODE,
1091 	    p_FOB_CODE	=> x_shipment_rec.FOB_CODE,
1092 	    p_SHIPPING_INSTRUCTIONS  => x_shipment_rec.SHIPPING_INSTRUCTIONS,
1093 	    p_PACKING_INSTRUCTIONS  => x_shipment_rec.PACKING_INSTRUCTIONS,
1094 	    p_QUANTITY	=> x_shipment_rec.QUANTITY,
1095 	    p_RESERVED_QUANTITY  => x_shipment_rec.RESERVED_QUANTITY,
1096 	    p_RESERVATION_ID  => x_shipment_rec.RESERVATION_ID,
1097 	    p_ORDER_LINE_ID  => x_shipment_rec.ORDER_LINE_ID,
1098 	    p_ATTRIBUTE_CATEGORY  => x_SHIPMENT_rec.ATTRIBUTE_CATEGORY,
1099 	    p_ATTRIBUTE1  => x_shipment_rec.ATTRIBUTE1,
1100 	    p_ATTRIBUTE2  => x_shipment_rec.ATTRIBUTE2,
1101 	    p_ATTRIBUTE3  => x_shipment_rec.ATTRIBUTE3,
1102 	    p_ATTRIBUTE4  => x_shipment_rec.ATTRIBUTE4,
1103 	    p_ATTRIBUTE5  => x_shipment_rec.ATTRIBUTE5,
1104 	    p_ATTRIBUTE6  => x_shipment_rec.ATTRIBUTE6,
1105 	    p_ATTRIBUTE7  => x_shipment_rec.ATTRIBUTE7,
1106 	    p_ATTRIBUTE8  => x_shipment_rec.ATTRIBUTE8,
1107 	    p_ATTRIBUTE9  => x_shipment_rec.ATTRIBUTE9,
1108 	    p_ATTRIBUTE10  => x_shipment_rec.ATTRIBUTE10,
1109 	    p_ATTRIBUTE11  => x_shipment_rec.ATTRIBUTE11,
1110 	    p_ATTRIBUTE12  => x_shipment_rec.ATTRIBUTE12,
1111 	    p_ATTRIBUTE13  => x_shipment_rec.ATTRIBUTE13,
1112 	    p_ATTRIBUTE14  => x_shipment_rec.ATTRIBUTE14,
1113 	    p_ATTRIBUTE15  => x_shipment_rec.ATTRIBUTE15,
1114          p_ATTRIBUTE16  => x_shipment_rec.ATTRIBUTE16,
1115 	    p_ATTRIBUTE17  => x_shipment_rec.ATTRIBUTE17,
1116 	    p_ATTRIBUTE18  => x_shipment_rec.ATTRIBUTE18,
1117 	    p_ATTRIBUTE19  => x_shipment_rec.ATTRIBUTE19,
1118 	    p_ATTRIBUTE20  => x_shipment_rec.ATTRIBUTE20,
1119 	    p_SHIPMENT_PRIORITY_CODE => x_shipment_rec.SHIPMENT_PRIORITY_CODE,
1120          p_SHIP_QUOTE_PRICE => x_shipment_rec.SHIP_QUOTE_PRICE,
1121 	    p_SHIP_FROM_ORG_ID => x_shipment_rec.SHIP_FROM_ORG_ID,
1122 	    p_SHIP_TO_CUST_PARTY_ID => x_shipment_rec.SHIP_TO_CUST_PARTY_ID,
1123          p_SHIP_METHOD_CODE_FROM     => x_shipment_rec.SHIP_METHOD_CODE_FROM,
1124          p_FREIGHT_TERMS_CODE_FROM  => x_shipment_rec.FREIGHT_TERMS_CODE_FROM,
1125 	    P_OBJECT_VERSION_NUMBER => x_shipment_rec.OBJECT_VERSION_NUMBER,
1126          p_REQUEST_DATE_TYPE => x_shipment_rec.REQUEST_DATE_TYPE,
1127 	    p_demand_class_code => x_shipment_rec.demand_class_code
1128 );
1129 	x_shipment_rec.SHIPMENT_ID := lx_shipment_id;
1130         x_shipment_rec.LAST_UPDATE_DATE := l_sysdate;
1131 
1132     END IF;
1133     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1134     aso_debug_pub.add('After shipments.insert_rows - Insert Rows', 1, 'Y');
1135     END IF;
1136 
1137     IF lx_shipment_id IS NOT NULL and lx_shipment_id <> FND_API.G_MISS_NUM THEN
1138       x_freight_charge_tbl := p_freight_charge_tbl;
1139       FOR i IN 1..P_Freight_Charge_Tbl.count LOOP
1140 	l_freight_charge_rec := p_freight_charge_tbl(i);
1141      -- BC4J Fix
1142 	--x_FREIGHT_CHARGE_tbl(i).freight_charge_id := NULL;
1143     l_sysdate := sysdate;
1144 	ASO_FREIGHT_CHARGES_PKG.Insert_Row(
1145 	    px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
1146 	    p_CREATION_DATE  => SYSDATE,
1147 	    p_CREATED_BY  => G_USER_ID,
1148 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1149 	    p_LAST_UPDATED_BY  => G_USER_ID,
1150 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1151 	    p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
1152 	    p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
1153 	    p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
1154 	    p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
1155 	    p_QUOTE_SHIPMENT_ID  => lx_SHIPMENT_ID,
1156 	    p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
1157 	    p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
1158 	    p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
1159 	    p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
1160 	    p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
1161 	    p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
1162 	    p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
1163 	    p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
1164 	    p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
1165 	    p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
1166 	    p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
1167 	    p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
1168 	    p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
1169 	    p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
1170 	    p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
1171 	    p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
1172 	    p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
1173 	    p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
1174 	x_freight_charge_tbl(i).quote_shipment_id := lx_shipment_id;
1175     x_FREIGHT_CHARGE_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1176       END LOOP;
1177     END IF;
1178 
1179     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1180     aso_debug_pub.add('After Freight_charges.insert_rows - Insert Rows', 1, 'Y');
1181     END IF;
1182 
1183     x_tax_detail_tbl := p_tax_detail_tbl;
1184     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1185     aso_debug_pub.add('Insert Rows - tax.count: '||to_char(P_tax_detail_Tbl.count), 1, 'N');
1186     END IF;
1187 
1188     FOR i IN 1..P_tax_detail_Tbl.count LOOP
1189 	l_tax_detail_rec := x_tax_detail_tbl(i);
1190      -- BC4J Fix
1191 	--x_tax_detail_tbl(i).TAX_DETAIL_ID := NULL;
1192     l_sysdate := sysdate;
1193 	ASO_TAX_DETAILS_PKG.Insert_Row(
1194 	    px_TAX_DETAIL_ID  => x_tax_detail_tbl(i).TAX_DETAIL_ID,
1195 	    p_CREATION_DATE  => SYSDATE,
1196 	    p_CREATED_BY  => G_USER_ID,
1197 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1198 	    p_LAST_UPDATED_BY  => G_USER_ID,
1199 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1200 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
1201 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
1202 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
1203 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
1204 	    p_QUOTE_HEADER_ID  => lx_Qte_HEADER_ID,
1205 	    p_QUOTE_LINE_ID  => NULL,
1206 	    p_QUOTE_SHIPMENT_ID  => lx_SHIPMENT_ID,
1207 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
1208 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
1209 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
1210 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
1211 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
1212 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
1213 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
1214 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
1215 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
1216 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
1217 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
1218 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
1219 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
1220 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
1221 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
1222 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
1223 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
1224 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
1225 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
1226 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
1227 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
1228 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
1229 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
1230 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
1231 	    p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
1232 	    p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
1233 	    p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
1234 	    p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
1235 	    p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
1236 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
1237 	    p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
1238 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
1239 	    );
1240         x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
1241     END LOOP;
1242     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1243     aso_debug_pub.add('After tax_details.insert_rows - Insert Rows', 1, 'Y');
1244     END IF;
1245 
1246       FOR i in 1..p_Sales_Credit_Tbl.count LOOP
1247 
1248      l_Sales_Credit_rec := p_sales_credit_tbl(i);
1249      l_sales_credit_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1250      x_sales_credit_tbl(i) := l_sales_credit_rec;
1251      -- BC4J Fix
1252      --x_sales_credit_tbl(i).sales_credit_id := NULL;
1253        ASO_SALES_CREDITS_PKG.Insert_Row(
1254           p_CREATION_DATE  => SYSDATE,
1255           p_CREATED_BY  => G_USER_ID,
1256           p_LAST_UPDATED_BY  => G_USER_ID,
1257           p_LAST_UPDATE_DATE  => SYSDATE,
1258           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1259           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
1260           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
1261           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
1262           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
1263           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
1264           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
1265           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
1266           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
1267           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
1268           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
1269           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
1270           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
1271 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
1272           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
1273           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
1274           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
1275           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
1276           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
1277           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
1278           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
1279           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
1280           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
1281           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
1282           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
1283           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
1284           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
1285           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
1286           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
1287           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
1288           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
1289 		p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
1290 		p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
1291 		p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
1292 		p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
1293 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
1294           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
1295           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
1296 
1297 END LOOP;
1298 
1299 
1300 -- insert into quote party table
1301  IF aso_debug_pub.g_debug_flag = 'Y' THEN
1302  aso_debug_pub.add('Insert Rows - Quote_party.count: ' || p_quote_party_Tbl.count, 1, 'N');
1303  aso_debug_pub.add('Insert Rows - Quote_party header: '|| x_qte_header_rec.quote_header_id, 1, 'N');
1304  END IF;
1305 
1306  FOR i IN 1..p_quote_party_Tbl.count LOOP
1307 	l_quote_party_rec := p_quote_party_tbl(i);
1308        -- l_quote_party_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
1309         l_quote_party_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1310         x_quote_party_tbl(i) := l_quote_party_rec;
1311         -- BC4J Fix
1312         --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
1313 
1314            ASO_QUOTE_PARTIES_PKG.Insert_Row(
1315           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
1316           p_CREATION_DATE  => SYSDATE,
1317           p_CREATED_BY  => G_USER_ID,
1318           p_LAST_UPDATE_DATE  => SYSDATE,
1319           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1320           p_LAST_UPDATED_BY  => G_USER_ID,
1321           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
1322           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
1323           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
1324           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
1325           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
1326           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
1327           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
1328           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
1329           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
1330           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
1331           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
1332           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
1333           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
1334           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
1335           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
1336           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
1337           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
1338           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
1339           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
1340           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
1341           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
1342           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
1343           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
1344           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
1345           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
1346           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
1347           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
1348   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
1349         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
1350 
1351  END LOOP;
1352 
1353 
1354     FOR i IN 1..P_hd_Attr_Ext_tbl.count LOOP
1355 	l_line_attribs_rec := P_hd_Attr_Ext_Tbl(i);
1356         l_line_attribs_rec.quote_header_id :=  x_qte_header_rec.QUOTE_HEADER_ID;
1357         X_hd_Attr_Ext_Tbl(i) := l_line_attribs_rec;
1358         -- BC4J Fix
1359 	   --X_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID := NULL;
1360 
1361  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
1362           px_LINE_ATTRIBUTE_ID  => x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID,
1363           p_CREATION_DATE          => SYSDATE,
1364           p_CREATED_BY             => G_USER_ID,
1365           p_LAST_UPDATE_DATE       => SYSDATE,
1366           p_LAST_UPDATED_BY        => G_USER_ID,
1367           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
1368           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
1369           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
1370           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
1371           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
1372            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
1373           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
1374           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
1375           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
1376           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
1377           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
1378           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
1379           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
1380            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
1381           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
1382           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
1383 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
1384 END LOOP;
1385 
1386 
1387 
1388  -- check for duplicate promotions, see bug 4521799
1389   IF aso_debug_pub.g_debug_flag = 'Y' THEN
1390      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
1391   END IF;
1392 
1393   ASO_VALIDATE_PVT.Validate_Promotion (
1394      P_Api_Version_Number       => 1.0,
1395      P_Init_Msg_List            => FND_API.G_FALSE,
1396      P_Commit                   => FND_API.G_FALSE,
1397      p_price_attr_tbl           => p_price_attributes_tbl,
1398      x_price_attr_tbl           => lx_price_attr_tbl,
1399      x_return_status            => x_return_status,
1400      x_msg_count                => x_msg_count,
1401      x_msg_data                 => x_msg_data);
1402 
1403    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1404       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
1405       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
1406    END IF;
1407 
1408    if x_return_status <> fnd_api.g_ret_sts_success then
1409       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1410          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1411       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1412          RAISE FND_API.G_EXC_ERROR;
1413       ELSE
1414          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1415       END IF;
1416    end if;
1417 
1418 
1419  -- end of check for duplicate promotions
1420 
1421 
1422 
1423 -- added by hagrawal
1424 
1425 FOR i in 1..p_price_attributes_tbl.count LOOP
1426 
1427      l_price_attributes_rec := p_price_attributes_tbl(i);
1428       l_price_attributes_rec.quote_header_id := x_qte_header_rec.quote_header_id;
1429      x_price_attributes_tbl(i) := l_price_attributes_rec;
1430      -- BC4J Fix
1431 --x_price_attributes_tbl(i).price_attribute_id := NULL;
1432 ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
1433           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
1434           p_CREATION_DATE         => SYSDATE,
1435           p_CREATED_BY            => G_USER_ID,
1436           p_LAST_UPDATE_DATE      => SYSDATE,
1437           p_LAST_UPDATED_BY       => G_USER_ID,
1438           p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
1439           p_REQUEST_ID            => l_price_attributes_rec.REQUEST_ID,
1440           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
1441           p_PROGRAM_ID           => l_price_attributes_rec.PROGRAM_ID,
1442           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
1443           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
1444           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
1445           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
1446           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
1447           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
1448           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
1449           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
1450           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
1451           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
1452           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
1453           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
1454           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
1455           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
1456         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
1457         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
1458         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
1459         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
1460         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
1461         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
1462         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
1463         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
1464         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
1465         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
1466         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
1467         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
1468         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
1469         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
1470         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
1471         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
1472         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
1473         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
1474         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
1475         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
1476         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
1477         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
1478         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
1479         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
1480         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
1481         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
1482         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
1483         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
1484         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
1485         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
1486         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
1487         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
1488         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
1489         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
1490         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
1491         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
1492         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
1493         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
1494         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
1495         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
1496         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
1497         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
1498         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
1499         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
1500         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
1501         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
1502         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
1503         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
1504         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
1505         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
1506         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
1507         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
1508         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
1509         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
1510         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
1511         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
1512         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
1513         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
1514         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
1515         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
1516         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
1517         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
1518         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
1519         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
1520         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
1521         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
1522         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
1523         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
1524         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
1525         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
1526         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
1527         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
1528         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
1529         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
1530         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
1531         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
1532         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
1533         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
1534         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
1535         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
1536         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
1537         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
1538         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
1539         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
1540         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
1541         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
1542         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
1543         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
1544         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
1545         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
1546         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
1547           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
1548           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
1549           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
1550           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
1551           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
1552           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
1553           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
1554           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
1555           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
1556           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
1557           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
1558           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
1559           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
1560           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
1561           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
1562           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
1563 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
1564 		p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
1565 		p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
1566 		p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
1567 		p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
1568 		p_OBJECT_VERSION_NUMBER => l_price_attributes_rec.OBJECT_VERSION_NUMBER
1569 );
1570 
1571 END LOOP;
1572 
1573        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1574            aso_debug_pub.add('Insert_Rows: l_qte_access_tbl.count: '||l_qte_access_tbl.count, 1, 'Y');
1575        END IF;
1576 
1577        for i in 1 .. l_qte_access_tbl.count loop
1578            l_qte_access_tbl(i).quote_number     := p_qte_header_rec.quote_number;
1579            l_qte_access_tbl(i).batch_price_flag := fnd_api.g_false;
1580        end loop;
1581 
1582        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1583            aso_debug_pub.add('Insert_Rows: Before call to Add_Resource', 1, 'Y');
1584        END IF;
1585 
1586 	  if l_qte_access_tbl.count > 0 then
1587 
1588            ASO_SECURITY_INT.Add_Resource(
1589                    P_INIT_MSG_LIST              => FND_API.G_FALSE,
1590                    P_COMMIT                     => FND_API.G_FALSE,
1591                    P_Qte_Access_tbl             => l_qte_access_tbl,
1592 			    p_call_from_oafwk_flag       => FND_API.G_TRUE,
1593                    X_Qte_Access_tbl             => x_qte_access_tbl,
1594                    X_RETURN_STATUS              => x_return_status,
1595                    X_msg_count                  => X_msg_count,
1596                    X_msg_data                   => X_msg_data );
1597 
1598            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1599                aso_debug_pub.add('Insert_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
1600            END IF;
1601 
1602 	  end if;
1603 
1604 END Insert_Rows;
1605 
1606 
1607 PROCEDURE Update_Rows (
1608     P_qte_Header_Rec        IN   ASO_QUOTE_PUB.qte_header_rec_Type,
1609     p_Price_Attributes_Tbl  IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
1610     P_Price_Adjustment_Tbl  IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
1611     P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
1612     P_Payment_Tbl           IN   ASO_QUOTE_PUB.Payment_Tbl_Type,
1613     P_Shipment_Tbl          IN   ASO_QUOTE_PUB.Shipment_Tbl_Type,
1614     P_Freight_Charge_Tbl    IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
1615     P_Tax_Detail_Tbl        IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
1616     P_hd_Attr_Ext_Tbl       IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
1617     P_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
1618     P_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
1619     P_Qte_Access_Tbl        IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
1620     X_qte_Header_Rec        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.qte_header_rec_Type,
1621     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
1622     X_Price_Adjustment_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
1623     x_Price_Adj_Attr_Tbl	   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
1624     X_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
1625     X_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
1626     X_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
1627     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
1628     X_hd_Attr_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
1629     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
1630     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
1631     X_Qte_Access_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
1632     X_Return_Status	        OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1633     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
1634     X_Msg_Data	             OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1635     )
1636 IS
1637     l_price_adj_rec		   ASO_QUOTE_PUB.Price_Adj_Rec_Type;
1638     l_payment_rec		   ASO_QUOTE_PUB.Payment_Rec_Type;
1639     l_shipment_rec		   ASO_QUOTE_PUB.Shipment_Rec_Type;
1640     l_freight_charge_rec	   ASO_QUOTE_PUB.Freight_Charge_Rec_Type;
1641     l_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
1642     l_price_adj_attr_rec	   ASO_QUOTE_PUB.Price_Adj_Attr_Rec_Type;
1643     l_price_adj_attr_tbl	   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
1644     l_freight_charge_tbl	   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
1645     l_Sales_Credit_Tbl      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type ;
1646     l_Quote_Party_Tbl       ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
1647     l_Sales_Credit_rec      ASO_QUOTE_PUB.Sales_Credit_rec_Type ;
1648     l_Quote_Party_rec       ASO_QUOTE_PUB.Quote_Party_rec_Type;
1649     l_price_attributes_rec  ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
1650     l_line_attribs_rec      ASO_QUOTE_PUB.Line_Attribs_Ext_rec_Type;
1651     l_qte_access_tbl        ASO_QUOTE_PUB.Qte_Access_Tbl_Type;
1652     lx_qte_access_tbl       ASO_QUOTE_PUB.Qte_Access_Tbl_Type;
1653 
1654     l_sysdate DATE ;
1655     l_qte_header_id		   NUMBER  := p_qte_header_rec.quote_header_id;
1656    l_payment_tbl            ASO_QUOTE_PUB.Payment_Tbl_Type;
1657     G_USER_ID	             NUMBER  := FND_GLOBAL.USER_ID;
1658     G_LOGIN_ID	             NUMBER  := FND_GLOBAL.CONC_LOGIN_ID;
1659     l_qte_hdr_rec           ASO_QUOTE_PUB.qte_header_rec_Type;
1660     lx_price_attr_tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
1661 
1662 
1663 -- The following cursor is needed for Payment From column Maintenance.
1664     CURSOR c_db_payment_terms(p_payment_id  NUMBER) IS
1665     SELECT payment_term_id_from,payment_term_id
1666     FROM   ASO_PAYMENTS
1667     WHERE  payment_id = p_payment_id;
1668 
1669 -- The following cursors is needed for ship_method_code and Freight Terms Code From column Maintenance.
1670     CURSOR c_db_ship_freight_terms(p_shipment_id  NUMBER) IS
1671     SELECT ship_method_code_from,ship_method_code,
1672     Freight_terms_code_from,Freight_terms_code
1673     FROM   ASO_SHIPMENTS
1674     WHERE  shipment_id = p_shipment_id;
1675 
1676     cursor c_quote_number is
1677     select quote_number from aso_quote_headers_all
1678     where quote_header_id = p_qte_header_rec.quote_header_id;
1679 
1680     cursor get_payment_type_code( l_payment_id Number) is
1681     select payment_type_code
1682     from aso_payments
1683     where payment_id = l_payment_id;
1684 
1685     cursor get_bill_to_party( l_qte_hdr_id Number) is
1686     select invoice_to_cust_party_id
1687     from aso_quote_headers_all
1688     where quote_header_id = l_qte_hdr_id;
1689 
1690     -- Refer bug 10217258
1691      ct               NUMBER;
1692     p_price_req_code VARCHAR2(100);
1693 
1694 BEGIN
1695     x_return_status := fnd_api.g_ret_sts_success;
1696     x_qte_header_rec := p_qte_header_rec;
1697     l_sysdate := sysdate;
1698     x_qte_header_rec.last_update_date := l_sysdate;
1699 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1700 	 aso_debug_pub.add('Begin Update Rows', 1, 'Y');
1701 	 END IF;
1702 
1703     -- Validate the invoice to cust party id and payment info, if any
1704      IF p_payment_tbl.count = 0  then
1705        l_payment_tbl := aso_utility_pvt.Query_Payment_Rows( p_qte_header_rec.QUOTE_HEADER_ID,null);
1706 	Else
1707 	  l_payment_tbl := p_payment_tbl;
1708 	  -- check to see if the value has been changed, if not get orig value from db
1709 	  if l_payment_tbl(1).payment_type_code = fnd_api.g_miss_char then
1710 	   open get_payment_type_code(l_payment_tbl(1).payment_id);
1711 	   fetch get_payment_type_code into l_payment_tbl(1).payment_type_code;
1712 	   close get_payment_type_code;
1713 	  end if;
1714 	End if;
1715 	-- bill to customer may not have been changed, if so get orig value from db
1716 	l_qte_hdr_rec := p_qte_header_rec;
1717 	if l_qte_hdr_rec.invoice_to_cust_party_id = fnd_api.g_miss_num then
1718 	 open get_bill_to_party(l_qte_hdr_rec.quote_header_id);
1719 	 fetch get_bill_to_party into l_qte_hdr_rec.invoice_to_cust_party_id;
1720 	 close get_bill_to_party;
1721 	end if;
1722 
1723 	IF l_payment_tbl.count > 0 then
1724           l_payment_rec := l_payment_tbl(1);
1725         IF l_payment_rec.payment_type_code = 'CREDIT_CARD' THEN
1726            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1727               aso_debug_pub.add('Before  calling Validate_cc_info ', 1, 'Y');
1728            END IF;
1729            aso_validate_pvt.Validate_cc_info
1730             (
1731                 p_init_msg_list     =>  fnd_api.g_false,
1732                 p_payment_rec       =>  l_payment_rec,
1733                 p_qte_header_rec    =>  l_qte_hdr_rec,
1734                 P_Qte_Line_rec      =>  ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC,
1735                 x_return_status     =>  x_return_status,
1736                 x_msg_count         =>  x_msg_count,
1737                 x_msg_data          =>  x_msg_data);
1738 
1739            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1740               aso_debug_pub.add('after calling Validate_cc_info ', 1, 'Y');
1741               aso_debug_pub.add('Validate_cc_info  Return Status: '||x_return_status, 1, 'Y');
1742            END IF;
1743 
1744             if x_return_status <> fnd_api.g_ret_sts_success then
1745               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1746                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1747               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1748                  RAISE FND_API.G_EXC_ERROR;
1749               ELSE
1750                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1751               END IF;
1752             end if;
1753         END IF;
1754 
1755 	 End if;
1756 
1757 
1758     ASO_QUOTE_HEADERS_PKG.Update_Row(
1759 	  p_QUOTE_HEADER_ID  => p_qte_header_rec.QUOTE_HEADER_ID,
1760 	  p_CREATION_DATE  => p_qte_header_rec.creation_date,
1761 	  p_CREATED_BY	=> G_USER_ID,
1762 	  p_LAST_UPDATE_DATE  => l_sysdate,
1763 	  p_LAST_UPDATED_BY  => G_USER_ID,
1764 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1765 	  p_REQUEST_ID	=> p_qte_header_rec.REQUEST_ID,
1766 	  p_PROGRAM_APPLICATION_ID  => p_qte_header_rec.PROGRAM_APPLICATION_ID,
1767 	  p_PROGRAM_ID	=> p_qte_header_rec.PROGRAM_ID,
1768 	  p_PROGRAM_UPDATE_DATE  => p_qte_header_rec.PROGRAM_UPDATE_DATE,
1769 	  p_ORG_ID  => p_qte_header_rec.ORG_ID,
1770 	  p_QUOTE_NAME	=> p_qte_header_rec.QUOTE_NAME,
1771 	  p_QUOTE_NUMBER  => p_qte_header_rec.QUOTE_NUMBER,
1772 	  p_QUOTE_VERSION  => p_qte_header_rec.QUOTE_VERSION,
1773 	  p_QUOTE_STATUS_ID  => p_qte_header_rec.QUOTE_STATUS_ID,
1774 	  p_QUOTE_SOURCE_CODE  => p_qte_header_rec.QUOTE_SOURCE_CODE,
1775 	  p_QUOTE_EXPIRATION_DATE  => trunc(p_qte_header_rec.QUOTE_EXPIRATION_DATE),
1776 	  p_PRICE_FROZEN_DATE  => p_qte_header_rec.PRICE_FROZEN_DATE,
1777 	  p_QUOTE_PASSWORD  => p_qte_header_rec.QUOTE_PASSWORD,
1778 	  p_ORIGINAL_SYSTEM_REFERENCE  => p_qte_header_rec.ORIGINAL_SYSTEM_REFERENCE,
1779 	  p_PARTY_ID  => p_qte_header_rec.PARTY_ID,
1780 	  p_CUST_ACCOUNT_ID  => p_qte_header_rec.CUST_ACCOUNT_ID,
1781 	  p_ORG_CONTACT_ID  => p_qte_header_rec.ORG_CONTACT_ID,
1782 	  p_PHONE_ID  => p_QTE_header_rec.PHONE_ID,
1783 	  p_INVOICE_TO_PARTY_SITE_ID  => p_qte_header_rec.INVOICE_TO_PARTY_SITE_ID,
1784 	  p_INVOICE_TO_PARTY_ID  => p_qte_header_rec.INVOICE_TO_PARTY_ID,
1785        p_Invoice_to_CUST_ACCOUNT_ID  => p_qte_header_rec.Invoice_to_CUST_ACCOUNT_ID,
1786 	  p_ORIG_MKTG_SOURCE_CODE_ID  => p_qte_header_rec.ORIG_MKTG_SOURCE_CODE_ID,
1787 	  p_MARKETING_SOURCE_CODE_ID  => p_qte_header_rec.MARKETING_SOURCE_CODE_ID,
1788 	  p_ORDER_TYPE_ID  => p_qte_header_rec.ORDER_TYPE_ID,
1789 	  p_QUOTE_CATEGORY_CODE  => p_qte_header_rec.QUOTE_CATEGORY_CODE,
1790 	  p_ORDERED_DATE  => p_qte_header_rec.ORDERED_DATE,
1791 	  p_ACCOUNTING_RULE_ID	=> p_qte_header_rec.ACCOUNTING_RULE_ID,
1792 	  p_INVOICING_RULE_ID  => p_qte_header_rec.INVOICING_RULE_ID,
1793 	  p_EMPLOYEE_PERSON_ID	=> p_qte_header_rec.EMPLOYEE_PERSON_ID,
1794 	  p_PRICE_LIST_ID  => p_qte_header_rec.PRICE_LIST_ID,
1795 	  p_CURRENCY_CODE  => p_qte_header_rec.CURRENCY_CODE,
1796 	  p_TOTAL_LIST_PRICE  => p_qte_header_rec.TOTAL_LIST_PRICE,
1797 	  p_TOTAL_ADJUSTED_AMOUNT  => p_qte_header_rec.TOTAL_ADJUSTED_AMOUNT,
1798 	  p_TOTAL_ADJUSTED_PERCENT  => p_qte_header_rec.TOTAL_ADJUSTED_PERCENT,
1799 	  p_TOTAL_TAX  => p_qte_header_rec.TOTAL_TAX,
1800 	  p_TOTAL_SHIPPING_CHARGE  => p_qte_header_rec.TOTAL_SHIPPING_CHARGE,
1801 	  p_SURCHARGE  => p_qte_header_rec.SURCHARGE,
1802 	  p_TOTAL_QUOTE_PRICE  => p_qte_header_rec.TOTAL_QUOTE_PRICE,
1803 	  p_PAYMENT_AMOUNT  => p_qte_header_rec.PAYMENT_AMOUNT,
1804 	  p_EXCHANGE_RATE  => p_qte_header_rec.EXCHANGE_RATE,
1805 	  p_EXCHANGE_TYPE_CODE	=> p_qte_header_rec.EXCHANGE_TYPE_CODE,
1806 	  p_EXCHANGE_RATE_DATE	=> p_qte_header_rec.EXCHANGE_RATE_DATE,
1807 	  p_CONTRACT_ID  => p_qte_header_rec.CONTRACT_ID,
1808 	  p_SALES_CHANNEL_CODE	=> p_qte_header_rec.SALES_CHANNEL_CODE,
1809 	  p_ORDER_ID  => p_QTE_header_rec.ORDER_ID,
1810 	  p_RESOURCE_ID => p_qte_header_rec.RESOURCE_ID,
1811 	  p_ATTRIBUTE_CATEGORY	=> p_qte_header_rec.ATTRIBUTE_CATEGORY,
1812 	  p_ATTRIBUTE1	=> p_qte_header_rec.ATTRIBUTE1,
1813 	  p_ATTRIBUTE2	=> p_qte_header_rec.ATTRIBUTE2,
1814 	  p_ATTRIBUTE3	=> p_qte_header_rec.ATTRIBUTE3,
1815 	  p_ATTRIBUTE4	=> p_qte_header_rec.ATTRIBUTE4,
1816 	  p_ATTRIBUTE5	=> p_qte_header_rec.ATTRIBUTE5,
1817 	  p_ATTRIBUTE6	=> p_qte_header_rec.ATTRIBUTE6,
1818 	  p_ATTRIBUTE7	=> p_qte_header_rec.ATTRIBUTE7,
1819 	  p_ATTRIBUTE8	=> p_qte_header_rec.ATTRIBUTE8,
1820 	  p_ATTRIBUTE9	=> p_qte_header_rec.ATTRIBUTE9,
1821 	  p_ATTRIBUTE10  => p_qte_header_rec.ATTRIBUTE10,
1822 	  p_ATTRIBUTE11  => p_qte_header_rec.ATTRIBUTE11,
1823 	  p_ATTRIBUTE12  => p_qte_header_rec.ATTRIBUTE12,
1824 	  p_ATTRIBUTE13  => p_qte_header_rec.ATTRIBUTE13,
1825 	  p_ATTRIBUTE14  => p_qte_header_rec.ATTRIBUTE14,
1826 	  p_ATTRIBUTE15  => p_qte_header_rec.ATTRIBUTE15,
1827        p_ATTRIBUTE16  => p_qte_header_rec.ATTRIBUTE16,
1828        p_ATTRIBUTE17  => p_qte_header_rec.ATTRIBUTE17,
1829        p_ATTRIBUTE18  => p_qte_header_rec.ATTRIBUTE18,
1830        p_ATTRIBUTE19  => p_qte_header_rec.ATTRIBUTE19,
1831        p_ATTRIBUTE20  => p_qte_header_rec.ATTRIBUTE20,
1832 -- hyang new okc
1833 	  p_CONTRACT_TEMPLATE_ID  => FND_API.G_MISS_NUM,
1834 	  p_CONTRACT_TEMPLATE_MAJOR_VER  => FND_API.G_MISS_NUM,
1835 	  p_CONTRACT_REQUESTER_ID   => FND_API.G_MISS_NUM,
1836 	  p_CONTRACT_APPROVAL_LEVEL => FND_API.G_MISS_CHAR,
1837 -- end of hyang new okc
1838 	  p_PUBLISH_FLAG            => p_qte_header_rec.PUBLISH_FLAG,
1839 	  p_RESOURCE_GRP_ID         => p_qte_header_rec.RESOURCE_GRP_ID,
1840        p_SOLD_TO_PARTY_SITE_ID   => p_qte_header_rec.SOLD_TO_PARTY_SITE_ID,
1841 	  p_DISPLAY_ARITHMETIC_OPERATOR => p_qte_header_rec.DISPLAY_ARITHMETIC_OPERATOR,
1842 	  p_MAX_VERSION_FLAG     => p_qte_header_rec.MAX_VERSION_FLAG,
1843 	  p_QUOTE_TYPE           => p_qte_header_rec.QUOTE_TYPE,
1844 	  p_QUOTE_DESCRIPTION    => p_qte_header_rec.QUOTE_DESCRIPTION,
1845 	  p_MINISITE_ID          => p_qte_header_rec.MINISITE_ID,
1846 	  p_CUST_PARTY_ID          => p_qte_header_rec.CUST_PARTY_ID,
1847 	  p_INVOICE_TO_CUST_PARTY_ID => p_qte_header_rec.INVOICE_TO_CUST_PARTY_ID,
1848        p_Pricing_Status_indicator        =>  p_qte_header_rec.Pricing_Status_indicator,
1849        p_Tax_status_Indicator      =>  p_qte_header_rec.Tax_status_Indicator,
1850        p_Price_updated_date                  =>  p_qte_header_rec.Price_updated_date,
1851        p_Tax_updated_date               =>  p_qte_header_rec.Tax_updated_date,
1852        p_Recalculate_flag               =>  p_qte_header_rec.Recalculate_flag,
1853        p_price_request_id               => p_qte_header_rec.price_request_id,
1854        p_credit_update_date             => p_qte_header_rec.credit_update_date,
1855 -- hyang new okc
1856     P_Customer_Name_And_Title       =>  p_qte_header_rec.Customer_Name_And_Title,
1857     P_Customer_Signature_Date       =>  p_qte_header_rec.Customer_Signature_Date,
1858     P_Supplier_Name_And_Title       =>  p_qte_header_rec.Supplier_Name_And_Title,
1859     P_Supplier_Signature_Date       =>  p_qte_header_rec.Supplier_Signature_Date,
1860 -- end of hyang new okc
1861     p_END_CUSTOMER_PARTY_ID         =>  p_qte_header_rec.END_CUSTOMER_PARTY_ID,
1862     p_END_CUSTOMER_CUST_PARTY_ID    =>  p_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID,
1863     p_END_CUSTOMER_PARTY_SITE_ID    =>  p_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID,
1864     p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
1865     p_OBJECT_VERSION_NUMBER         =>  p_qte_header_rec.OBJECT_VERSION_NUMBER,
1866     p_assistance_requested          =>  p_qte_header_rec.assistance_requested,
1867     p_assistance_reason_code        =>  p_qte_header_rec.assistance_reason_code,
1868     p_automatic_price_flag          =>  p_qte_header_rec.automatic_price_flag,
1869     p_automatic_tax_flag            =>  p_qte_header_rec.automatic_tax_flag,
1870     p_header_paynow_charges         =>  p_qte_header_rec.header_paynow_charges
1871           -- ER 12879412
1872 /*    P_PRODUCT_FISC_CLASSIFICATION => p_qte_header_rec.PRODUCT_FISC_CLASSIFICATION,
1873     P_TRX_BUSINESS_CATEGORY =>   p_qte_header_rec.TRX_BUSINESS_CATEGORY*/
1874 
1875 );
1876 
1877 
1878 --Refer bug 10217258
1879 
1880 
1881 
1882   --  Start bug fix 10217258 For limits reversal
1883 IF NVL(FND_PROFILE.VALUE('QP_LIMITS_INSTALLED'),'N') = 'Y' THEN
1884    select count(*) into ct
1885    from aso_quote_statuses_vl
1886    where status_code = 'INACTIVE'
1887    and quote_status_id = p_qte_header_rec.QUOTE_STATUS_ID;
1888 
1889    if ct >0 then
1890     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1891 	 aso_debug_pub.add('Begin Update Rows limit count '||ct, 1, 'Y');
1892 	 END IF;
1893 
1894     p_price_req_code:='ASO-'||p_qte_header_rec.QUOTE_HEADER_ID||'%';
1895     for  c_limit in
1896        (SELECT  price_request_code, amount
1897 	FROM   qp_limit_transactions
1898 	WHERE  price_request_code like p_price_req_code
1899 	and price_request_type_code='ASO')
1900     loop
1901       if c_limit.amount>0 then
1902         IF aso_debug_pub.g_debug_flag = 'Y' THEN
1903 	 aso_debug_pub.add('Begin Update Rows limit price_request_code '||c_limit.price_request_code, 1, 'Y');
1904 	 END IF;
1905          QP_UTIL_PUB.Reverse_Limits (p_action_code   => 'CANCEL',
1906                                 p_cons_price_request_code    => c_limit.price_request_code,
1907                                 p_orig_ordered_qty           => c_limit.amount,
1908                                 p_amended_qty                => NULL,
1909                                 p_ret_price_request_code     => NULL,
1910                                 p_returned_qty               => NULL,
1911                                 x_return_status              => x_return_status,
1912                                 x_return_message             => x_msg_data
1913                                );
1914 
1915 
1916      end if;
1917    end loop;
1918 
1919 end if;
1920 end if;
1921 -- end bug fix 10217258
1922 
1923     x_price_adjustment_tbl := p_price_adjustment_tbl;
1924     l_price_adj_attr_tbl := p_price_adj_attr_tbl;
1925      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1926 	aso_debug_pub.add('Update Rows - price_adj.count: '||x_price_adjustment_tbl.counT, 1, 'N');
1927 	END IF;
1928 
1929     FOR i IN 1..P_Price_Adjustment_Tbl.count LOOP
1930       IF P_Price_Adjustment_Tbl(i).operation_code = 'CREATE' THEN
1931 	l_price_adj_rec := p_price_adjustment_tbl(i);
1932      l_sysdate := sysdate;
1933      x_price_adjustment_tbl(i).last_update_date := l_sysdate;
1934      -- BC4J Fix
1935 	--x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
1936      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1937 	aso_debug_pub.add('Before price_adj.update_rows - Update Rows', 1, 'Y');
1938 	END IF;
1939 
1940 	ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
1941 	    px_PRICE_ADJUSTMENT_ID  => x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID,
1942 	    p_CREATION_DATE  => SYSDATE,
1943 	    p_CREATED_BY  => G_USER_ID,
1944 	    p_LAST_UPDATE_DATE	=> l_sysdate,
1945 	    p_LAST_UPDATED_BY  => G_USER_ID,
1946 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1947 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
1948 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
1949 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
1950 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
1951 	    p_QUOTE_HEADER_ID  => l_qte_header_id,
1952 	    p_QUOTE_LINE_ID  => NULL,
1953 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
1954 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
1955 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
1956 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
1957 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
1958 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
1959 	    p_OPERAND  => l_price_adj_rec.OPERAND,
1960 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
1961 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
1962 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
1963 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
1964 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
1965 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
1966 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
1967 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
1968 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
1969 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
1970 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
1971 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
1972 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
1973 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
1974 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
1975 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
1976 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
1977 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
1978 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
1979 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
1980 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
1981 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
1982 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
1983            p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
1984           p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
1985           p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
1986           p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
1987           p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
1988           p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
1989           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
1990           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
1991           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
1992           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
1993           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
1994           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
1995           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
1996           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
1997           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
1998           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
1999           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
2000           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
2001           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
2002           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
2003           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
2004           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
2005           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
2006           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
2007           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
2008           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
2009           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
2010           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
2011           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
2012           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
2013           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
2014           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
2015           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
2016           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
2017           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
2018           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
2019           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
2020           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
2021           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
2022           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
2023           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
2024           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
2025           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
2026           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
2027           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
2028           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
2029           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
2030 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
2031 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
2032 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
2033 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
2034         );
2035 	FOR j in 1..l_price_adj_attr_tbl.count LOOP
2036 	    IF l_price_adj_attr_tbl(j).price_adj_index = i THEN
2037 		l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID;
2038 	    END IF;
2039 	END LOOP;
2040       ELSIF P_Price_Adjustment_Tbl(i).operation_code = 'UPDATE' THEN
2041 
2042 	l_price_adj_rec := p_price_adjustment_tbl(i);
2043     l_sysdate := sysdate;
2044     x_price_adjustment_tbl(i).last_update_date := l_sysdate;
2045 	ASO_PRICE_ADJUSTMENTS_PKG.Update_Row(
2046 	    p_PRICE_ADJUSTMENT_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID,
2047 	    p_CREATION_DATE  => l_price_adj_rec.creation_date,
2048 	    p_CREATED_BY  => G_USER_ID,
2049 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2050 	    p_LAST_UPDATED_BY  => G_USER_ID,
2051 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2052 	    p_PROGRAM_APPLICATION_ID  => l_price_adj_rec.PROGRAM_APPLICATION_ID,
2053 	    p_PROGRAM_ID  => l_price_adj_rec.PROGRAM_ID,
2054 	    p_PROGRAM_UPDATE_DATE  => l_price_adj_rec.PROGRAM_UPDATE_DATE,
2055 	    p_REQUEST_ID  => l_price_adj_rec.REQUEST_ID,
2056 	    p_QUOTE_HEADER_ID  => l_qte_header_id,
2057 	    p_QUOTE_LINE_ID  => NULL,
2058 	    p_MODIFIER_HEADER_ID  => l_price_adj_rec.MODIFIER_HEADER_ID,
2059 	    p_MODIFIER_LINE_ID	=> l_price_adj_rec.MODIFIER_LINE_ID,
2060 	    p_MODIFIER_LINE_TYPE_CODE  => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
2061 	    p_MODIFIER_MECHANISM_TYPE_CODE  => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
2062 	    p_MODIFIED_FROM  => l_price_adj_rec.MODIFIED_FROM,
2063 	    p_MODIFIED_TO  => l_price_adj_rec.MODIFIED_TO,
2064 	    p_OPERAND  => l_price_adj_rec.OPERAND,
2065 	    p_ARITHMETIC_OPERATOR  => l_price_adj_rec.ARITHMETIC_OPERATOR,
2066 	    p_AUTOMATIC_FLAG  => l_price_adj_rec.AUTOMATIC_FLAG,
2067 	    p_UPDATE_ALLOWABLE_FLAG  => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
2068 	    p_UPDATED_FLAG  => l_price_adj_rec.UPDATED_FLAG,
2069 	    p_APPLIED_FLAG  => l_price_adj_rec.APPLIED_FLAG,
2070 	    p_ON_INVOICE_FLAG  => l_price_adj_rec.ON_INVOICE_FLAG,
2071 	    p_PRICING_PHASE_ID	=> l_price_adj_rec.PRICING_PHASE_ID,
2072 	    p_ATTRIBUTE_CATEGORY  => l_price_adj_rec.ATTRIBUTE_CATEGORY,
2073 	    p_ATTRIBUTE1  => l_price_adj_rec.ATTRIBUTE1,
2074 	    p_ATTRIBUTE2  => l_price_adj_rec.ATTRIBUTE2,
2075 	    p_ATTRIBUTE3  => l_price_adj_rec.ATTRIBUTE3,
2076 	    p_ATTRIBUTE4  => l_price_adj_rec.ATTRIBUTE4,
2077 	    p_ATTRIBUTE5  => l_price_adj_rec.ATTRIBUTE5,
2078 	    p_ATTRIBUTE6  => l_price_adj_rec.ATTRIBUTE6,
2079 	    p_ATTRIBUTE7  => l_price_adj_rec.ATTRIBUTE7,
2080 	    p_ATTRIBUTE8  => l_price_adj_rec.ATTRIBUTE8,
2081 	    p_ATTRIBUTE9  => l_price_adj_rec.ATTRIBUTE9,
2082 	    p_ATTRIBUTE10  => l_price_adj_rec.ATTRIBUTE10,
2083 	    p_ATTRIBUTE11  => l_price_adj_rec.ATTRIBUTE11,
2084 	    p_ATTRIBUTE12  => l_price_adj_rec.ATTRIBUTE12,
2085 	    p_ATTRIBUTE13  => l_price_adj_rec.ATTRIBUTE13,
2086 	    p_ATTRIBUTE14  => l_price_adj_rec.ATTRIBUTE14,
2087 	    p_ATTRIBUTE15  => l_price_adj_rec.ATTRIBUTE15,
2088           p_ATTRIBUTE16  => l_price_adj_rec.ATTRIBUTE16,
2089           p_ATTRIBUTE17  => l_price_adj_rec.ATTRIBUTE17,
2090           p_ATTRIBUTE18  => l_price_adj_rec.ATTRIBUTE18,
2091           p_ATTRIBUTE19  => l_price_adj_rec.ATTRIBUTE19,
2092           p_ATTRIBUTE20  => l_price_adj_rec.ATTRIBUTE20,
2093 		   p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
2094           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
2095           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
2096           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
2097           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
2098           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
2099           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
2100           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
2101           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
2102           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
2103           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
2104           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
2105           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
2106           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
2107           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
2108           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
2109           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
2110           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
2111           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
2112           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
2113           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
2114           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
2115           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
2116           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
2117           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
2118           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
2119           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
2120           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
2121           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
2122           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
2123           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
2124           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
2125           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
2126           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
2127           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
2128           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
2129           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
2130           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
2131           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
2132           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
2133           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
2134           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
2135 		p_quote_shipment_id                          => l_price_adj_rec.quote_shipment_id,
2136 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
2137 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
2138 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
2139         );
2140       ELSIF P_Price_Adjustment_Tbl(i).operation_code = 'DELETE' THEN
2141 	ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
2142 	    p_PRICE_ADJUSTMENT_ID  => p_price_adjustment_tbl(i).PRICE_ADJUSTMENT_ID);
2143       END IF;
2144     END LOOP;
2145 
2146     FOR i IN 1..l_Price_Adj_Attr_Tbl.count LOOP
2147 
2148       l_sysdate := sysdate;
2149 
2150       IF l_price_adj_attr_tbl(i).operation_code = 'CREATE'  and
2151 	    l_price_adj_attr_tbl(i).price_adjustment_id is not null and
2152 	    l_price_adj_attr_tbl(i).price_adjustment_id <> fnd_api.g_miss_num THEN
2153 
2154 
2155 	 x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
2156 
2157 	 --l_price_adj_attr_rec := l_price_adj_attr_tbl(i);
2158 	 -- BC4J Fix
2159 	 --x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := NULL;
2160       x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2161 
2162 	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
2163 		px_PRICE_ADJ_ATTRIB_ID	 => x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
2164 		p_CREATION_DATE  => SYSDATE,
2165 		p_CREATED_BY  => G_USER_ID,
2166 		p_LAST_UPDATE_DATE  => l_sysdate,
2167 		p_LAST_UPDATED_BY  => G_USER_ID,
2168 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2169 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
2170 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
2171 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
2172 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
2173 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
2174 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
2175 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
2176 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
2177 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
2178 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
2179 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
2180 		p_OBJECT_VERSION_NUMBER  => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER
2181 		);
2182 
2183       ELSIF l_Price_Adj_Attr_Tbl(i).operation_code = 'UPDATE' THEN
2184 
2185 	 x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
2186 	 --l_price_adj_attr_rec := l_price_adj_attr_tbl(i);
2187       x_price_adj_attr_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2188 
2189 	ASO_PRICE_ADJ_ATTRIBS_PKG.Update_Row(
2190 		p_PRICE_ADJ_ATTRIB_ID	=> x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
2191 		p_CREATION_DATE  => l_price_adj_attr_tbl(i).creation_date,
2192 		p_CREATED_BY  => G_USER_ID,
2193 		p_LAST_UPDATE_DATE  => l_sysdate,
2194 		p_LAST_UPDATED_BY  => G_USER_ID,
2195 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2196 		p_PROGRAM_APPLICATION_ID  =>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
2197 		p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
2198 		p_PROGRAM_UPDATE_DATE  => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
2199 		p_REQUEST_ID  => l_price_adj_attr_tbl(i).REQUEST_ID,
2200 		p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
2201 		p_PRICING_CONTEXT  => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
2202 		p_PRICING_ATTRIBUTE => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
2203 		p_PRICING_ATTR_VALUE_FROM => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
2204 		p_PRICING_ATTR_VALUE_TO  => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
2205 		p_COMPARISON_OPERATOR	=> l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
2206 		p_FLEX_TITLE   => l_price_adj_attr_tbl(i).FLEX_TITLE,
2207 		p_OBJECT_VERSION_NUMBER  => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
2208       ELSIF l_Price_Adj_Attr_Tbl(i).operation_code = 'DELETE' THEN
2209 	ASO_PRICE_ADJ_ATTRIBS_PKG.Delete_Row(
2210 	    p_PRICE_ADJ_ATTRIB_ID  => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID);
2211       END IF;
2212     END LOOP;
2213 
2214     x_payment_tbl := p_payment_tbl;
2215 
2216     FOR i IN 1..P_Payment_Tbl.count LOOP
2217       IF P_Payment_Tbl(i).operation_code = 'CREATE' THEN
2218 
2219           l_sysdate := sysdate;
2220 	  l_payment_rec := p_payment_tbl(i);
2221 	  l_payment_rec.PAYMENT_TERM_ID_FROM := p_payment_tbl(i).payment_term_id;
2222 
2223        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2224          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');
2225         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');
2226        END IF;
2227         -- BC4J Fix
2228 	   --x_payment_tbl(i).PAYMENT_ID := NULL;
2229            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2230 	   x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2231 
2232 
2233      --  Payments Changes
2234 
2235 	      l_payment_rec.quote_header_id := l_qte_header_id;
2236 
2237            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2238                aso_debug_pub.add('Update_Rows: Before  call to create_payment_row ', 1, 'Y');
2239            END IF;
2240 
2241          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
2242                                              x_payment_rec   => x_payment_tbl(i),
2243                                              x_return_status => x_return_status,
2244                                              x_msg_count     => x_msg_count,
2245                                              x_msg_data      => x_msg_data);
2246 
2247            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2248                aso_debug_pub.add('Update_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2249            END IF;
2250 
2251             if x_return_status <> fnd_api.g_ret_sts_success then
2252               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2253                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2254               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2255                  RAISE FND_API.G_EXC_ERROR;
2256               ELSE
2257                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2258               END IF;
2259             end if;
2260 
2261            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2262            x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2263 
2264      -- End Payment Changes
2265 
2266       ELSIF P_Payment_Tbl(i).operation_code = 'UPDATE' THEN
2267 
2268           l_payment_rec := p_payment_tbl(i);
2269           l_sysdate     := sysdate;
2270 
2271           IF l_payment_rec.payment_term_id = FND_API.G_MISS_NUM THEN
2272 
2273      	    FOR l_payment_db_rec IN c_db_payment_terms(p_payment_tbl(i).PAYMENT_ID) LOOP
2274 
2275                   IF l_payment_db_rec.payment_term_id_from IS NULL THEN
2276                       l_payment_rec.payment_term_id_from := l_payment_db_rec.payment_term_id;
2277                   END IF;
2278 
2279      	    END LOOP;
2280 
2281           ELSE
2282               l_payment_rec.payment_term_id_from := l_payment_rec.payment_term_id;
2283 
2284           END IF;
2285 
2286         IF aso_debug_pub.g_debug_flag = 'Y' THEN
2287          aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Update Rows l_payment_rec.payment_term_id'||l_payment_rec.payment_term_id, 1, 'Y');
2288         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');
2289         END IF;
2290 
2291         x_payment_tbl(i).last_update_date     := l_sysdate;
2292         x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
2293 
2294      -- Payments Changes
2295 
2296            l_payment_rec.quote_header_id := l_qte_header_id;
2297 
2298            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2299                aso_debug_pub.add('Update_Rows: Before  call to update_payment_row ', 1, 'Y');
2300            END IF;
2301 
2302          aso_payment_int.update_payment_row(p_payment_rec => l_payment_rec  ,
2303                                              x_payment_rec   => x_payment_tbl(i),
2304                                              x_return_status => x_return_status,
2305                                              x_msg_count     => x_msg_count,
2306                                              x_msg_data      => x_msg_data);
2307 
2308            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2309                aso_debug_pub.add('Update_Rows: After call to update_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2310            END IF;
2311 
2312             if x_return_status <> fnd_api.g_ret_sts_success then
2313               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2314                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2315               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2316                  RAISE FND_API.G_EXC_ERROR;
2317               ELSE
2318                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2319               END IF;
2320             end if;
2321 
2322            x_payment_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2323            x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
2324 
2325      -- End Payment Changes
2326 
2327       ELSIF P_Payment_Tbl(i).operation_code = 'DELETE' THEN
2328 
2329      -- Payments Changes
2330           l_payment_rec := P_Payment_Tbl(i);
2331           l_payment_rec.quote_header_id := l_qte_header_id;
2332 
2333            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2334                aso_debug_pub.add('Update_Rows: Before  call to delete_payment_row ', 1, 'Y');
2335            END IF;
2336 
2337          aso_payment_int.delete_payment_row(p_payment_rec => l_payment_rec  ,
2338                                              x_return_status => x_return_status,
2339                                              x_msg_count     => x_msg_count,
2340                                              x_msg_data      => x_msg_data);
2341 
2342            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2343                aso_debug_pub.add('Update_Rows: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
2344            END IF;
2345             if x_return_status <> fnd_api.g_ret_sts_success then
2346               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2347                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2348               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2349                  RAISE FND_API.G_EXC_ERROR;
2350               ELSE
2351                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2352               END IF;
2353             end if;
2354 
2355      -- End Payment Changes
2356 
2357       END IF;
2358     END LOOP;
2359 
2360 
2361     x_shipment_tbl       := p_shipment_tbl;
2362     l_freight_charge_tbl := p_freight_charge_tbl;
2363 
2364     FOR i IN 1..P_Shipment_Tbl.count LOOP
2365 
2366       IF P_Shipment_Tbl(i).operation_code = 'CREATE' THEN
2367 
2368           l_shipment_rec                         :=  x_shipment_tbl(i);
2369           l_shipment_rec.ship_method_code_from   :=  p_shipment_tbl(1).ship_method_code;
2370           l_shipment_rec.freight_terms_code_from :=  p_shipment_tbl(1).freight_terms_code;
2371 
2372      IF aso_debug_pub.g_debug_flag = 'Y' THEN
2373       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');
2374       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');
2375      END IF;
2376 
2377        l_sysdate                                 := sysdate;
2378        -- BC4J Fix
2379        x_shipment_tbl(i).shipment_id           :=  p_shipment_tbl(1).shipment_id;
2380 	  --x_shipment_tbl(i).shipment_id             := null;
2381        x_shipment_tbl(i).last_update_date        := l_sysdate;
2382        x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
2383        x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
2384 
2385 	ASO_SHIPMENTS_PKG.Insert_Row(
2386 	    px_SHIPMENT_ID  => x_shipment_tbl(i).SHIPMENT_ID,
2387 	    p_CREATION_DATE  => SYSDATE,
2388 	    p_CREATED_BY  => G_USER_ID,
2389 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2390 	    p_LAST_UPDATED_BY  => G_USER_ID,
2391 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2392 	    p_REQUEST_ID  => l_shipment_rec.REQUEST_ID,
2393 	    p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
2394 	    p_PROGRAM_ID  => l_shipment_rec.PROGRAM_ID,
2395 	    p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
2396 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2397 	    p_QUOTE_LINE_ID  => NULL,
2398 	    p_PROMISE_DATE  => l_shipment_rec.PROMISE_DATE,
2399 	    p_REQUEST_DATE  => l_shipment_rec.REQUEST_DATE,
2400 	    p_SCHEDULE_SHIP_DATE  => l_shipment_rec.SCHEDULE_SHIP_DATE,
2401 	    p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
2402 	    p_SHIP_TO_PARTY_ID	=> l_shipment_rec.SHIP_TO_PARTY_ID,
2403             p_ship_to_CUST_ACCOUNT_ID  => l_shipment_rec.ship_to_CUST_ACCOUNT_ID,
2404 	    p_SHIP_PARTIAL_FLAG  => l_shipment_rec.SHIP_PARTIAL_FLAG,
2405 	    p_SHIP_SET_ID  => l_shipment_rec.SHIP_SET_ID,
2406 	    p_SHIP_METHOD_CODE	=> l_shipment_rec.SHIP_METHOD_CODE,
2407 	    p_FREIGHT_TERMS_CODE  => l_shipment_rec.FREIGHT_TERMS_CODE,
2408 	    p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
2409 	    p_FOB_CODE	=> l_shipment_rec.FOB_CODE,
2410 	    p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
2411 	    p_PACKING_INSTRUCTIONS  => l_shipment_rec.PACKING_INSTRUCTIONS,
2412 	    p_QUANTITY	=> l_shipment_rec.QUANTITY,
2413 	    p_RESERVED_QUANTITY  => l_shipment_rec.RESERVED_QUANTITY,
2414 	    p_RESERVATION_ID  => l_shipment_rec.RESERVATION_ID,
2415 	    p_ORDER_LINE_ID  => l_shipment_rec.ORDER_LINE_ID,
2416 	    p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
2417 	    p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
2418 	    p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
2419 	    p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
2420 	    p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
2421 	    p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
2422 	    p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
2423 	    p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
2424 	    p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
2425 	    p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
2426 	    p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
2427 	    p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
2428 	    p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
2429 	    p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
2430 	    p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
2431 	    p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
2432          p_ATTRIBUTE16  =>  l_shipment_rec.ATTRIBUTE16,
2433          p_ATTRIBUTE17  =>  l_shipment_rec.ATTRIBUTE17,
2434          p_ATTRIBUTE18  =>  l_shipment_rec.ATTRIBUTE18,
2435          p_ATTRIBUTE19  =>  l_shipment_rec.ATTRIBUTE19,
2436          p_ATTRIBUTE20  =>  l_shipment_rec.ATTRIBUTE20,
2437 		p_SHIPMENT_PRIORITY_CODE => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
2438           p_SHIP_QUOTE_PRICE => l_shipment_rec.SHIP_QUOTE_PRICE,
2439 	    p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
2440 	    p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
2441          p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
2442          p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
2443 	    p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
2444 	    p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
2445          p_demand_class_code => l_shipment_rec.demand_class_code
2446 	    );
2447 
2448 	FOR j IN 1..l_Freight_Charge_Tbl.count LOOP
2449 	  IF l_Freight_Charge_Tbl(j).shipment_index = i THEN
2450 	     l_freight_charge_tbl(j).QUOTE_SHIPMENT_ID := x_shipment_tbl(i).SHIPMENT_ID;
2451 	  END IF;
2452 	END LOOP;
2453 
2454 
2455      ELSIF P_Shipment_Tbl(i).operation_code = 'UPDATE' THEN
2456 
2457           l_sysdate                          := sysdate;
2458           x_shipment_tbl(i).last_update_date := l_sysdate;
2459           l_shipment_rec                     := x_shipment_tbl(i);
2460 
2461           IF l_shipment_rec.ship_method_code = fnd_api.g_miss_char THEN
2462 
2463             FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
2464 
2465 		    IF l_ship_db_rec.ship_method_code_from is null THEN
2466                   l_shipment_rec.ship_method_code_from := l_ship_db_rec.ship_method_code;
2467 		    END IF;
2468 
2469             END LOOP;
2470 
2471           ELSE
2472               l_shipment_rec.ship_method_code_from := l_shipment_rec.ship_method_code;
2473 
2474           END IF;
2475 
2476 
2477           IF l_shipment_rec.freight_terms_code = fnd_api.g_miss_char THEN
2478 
2479             FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
2480 
2481 		    IF l_ship_db_rec.freight_terms_code_from is null THEN
2482                   l_shipment_rec.freight_terms_code_from := l_ship_db_rec.freight_terms_code;
2483 		    END IF;
2484 
2485             END LOOP;
2486 
2487           ELSE
2488               l_shipment_rec.freight_terms_code_from := l_shipment_rec.freight_terms_code;
2489 
2490           END IF;
2491 
2492           IF aso_debug_pub.g_debug_flag = 'Y' THEN
2493             aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.update_rows - l_shipment_rec.ship_method_code'||l_shipment_rec.ship_method_code, 1, 'Y');
2494       aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.update_rows - l_shipment_rec.freight_terms_code'||l_shipment_rec.freight_terms_code, 1, 'Y');
2495           END IF;
2496 
2497           x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
2498           x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
2499 
2500 	ASO_SHIPMENTS_PKG.Update_Row(
2501 	    p_SHIPMENT_ID  => l_shipment_rec.SHIPMENT_ID,
2502 	    p_CREATION_DATE  => l_shipment_rec.creation_date,
2503 	    p_CREATED_BY  => G_USER_ID,
2504 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2505 	    p_LAST_UPDATED_BY  => G_USER_ID,
2506 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2507 	    p_REQUEST_ID  => l_shipment_rec.REQUEST_ID,
2508 	    p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
2509 	    p_PROGRAM_ID  => l_shipment_rec.PROGRAM_ID,
2510 	    p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
2511 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2512 	    p_QUOTE_LINE_ID  => NULL,
2513 	    p_PROMISE_DATE  => l_shipment_rec.PROMISE_DATE,
2514 	    p_REQUEST_DATE  => l_shipment_rec.REQUEST_DATE,
2515 	    p_SCHEDULE_SHIP_DATE  => l_shipment_rec.SCHEDULE_SHIP_DATE,
2516 	    p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
2517 	    p_SHIP_TO_PARTY_ID	=> l_shipment_rec.SHIP_TO_PARTY_ID,
2518             p_ship_to_CUST_ACCOUNT_ID  => l_shipment_rec.ship_to_CUST_ACCOUNT_ID,
2519 	    p_SHIP_PARTIAL_FLAG  => l_shipment_rec.SHIP_PARTIAL_FLAG,
2520 	    p_SHIP_SET_ID  => l_shipment_rec.SHIP_SET_ID,
2521 	    p_SHIP_METHOD_CODE	=> l_shipment_rec.SHIP_METHOD_CODE,
2522 	    p_FREIGHT_TERMS_CODE  => l_shipment_rec.FREIGHT_TERMS_CODE,
2523 	    p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
2524 	    p_FOB_CODE	=> l_shipment_rec.FOB_CODE,
2525 	    p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
2526 	    p_PACKING_INSTRUCTIONS  => l_shipment_rec.PACKING_INSTRUCTIONS,
2527 	    p_QUANTITY	=> l_shipment_rec.QUANTITY,
2528 	    p_RESERVED_QUANTITY  => l_shipment_rec.RESERVED_QUANTITY,
2529 	    p_RESERVATION_ID  => l_shipment_rec.RESERVATION_ID,
2530 	    p_ORDER_LINE_ID  => l_shipment_rec.ORDER_LINE_ID,
2531 	    p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
2532 	    p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
2533 	    p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
2534 	    p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
2535 	    p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
2536 	    p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
2537 	    p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
2538 	    p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
2539 	    p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
2540 	    p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
2541 	    p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
2542 	    p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
2543 	    p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
2544 	    p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
2545 	    p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
2546 	    p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
2547           p_ATTRIBUTE16  =>  l_shipment_rec.ATTRIBUTE16,
2548           p_ATTRIBUTE17  =>  l_shipment_rec.ATTRIBUTE17,
2549           p_ATTRIBUTE18  =>  l_shipment_rec.ATTRIBUTE18,
2550           p_ATTRIBUTE19  =>  l_shipment_rec.ATTRIBUTE19,
2551           p_ATTRIBUTE20  =>  l_shipment_rec.ATTRIBUTE20,
2552 		p_SHIPMENT_PRIORITY_CODE => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
2553           p_SHIP_QUOTE_PRICE => l_shipment_rec.SHIP_QUOTE_PRICE,
2554 	    p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
2555 	    p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
2556          p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
2557          p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
2558 	    p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
2559          p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
2560          p_demand_class_code => l_shipment_rec.demand_class_code
2561          );
2562       ELSIF P_Shipment_Tbl(i).operation_code = 'DELETE' THEN
2563 	ASO_SHIPMENTS_PKG.Delete_Row(
2564 	    p_SHIPMENT_ID  => P_Shipment_Tbl(i).SHIPMENT_ID);
2565       END IF;
2566     END LOOP;
2567 
2568     x_freight_charge_tbl := l_freight_charge_tbl;
2569     FOR i IN 1..l_Freight_Charge_Tbl.count LOOP
2570 	 IF l_Freight_Charge_Tbl(i).operation_code = 'CREATE' THEN
2571      l_sysdate := sysdate;
2572 	    l_freight_charge_rec := l_freight_charge_tbl(i);
2573         x_FREIGHT_CHARGE_tbl(i).last_update_date := l_sysdate;
2574 	    -- BC4J Fix
2575 	    --x_FREIGHT_CHARGE_tbl(i).freight_charge_id := NULL;
2576 	    ASO_FREIGHT_CHARGES_PKG.Insert_Row(
2577 		px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
2578 		p_CREATION_DATE  => SYSDATE,
2579 	    	p_CREATED_BY  => G_USER_ID,
2580 	    	p_LAST_UPDATE_DATE  => l_sysdate,
2581 	    	p_LAST_UPDATED_BY  => G_USER_ID,
2582 	    	p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2583 	    	p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
2584 	    	p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
2585 	    	p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
2586 	    	p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
2587 	    	p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.Quote_SHIPMENT_ID,
2588 	    	p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
2589 	    	p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
2590 	    	p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
2591 	    	p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
2592 	    	p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
2593 	    	p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
2594 	    	p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
2595 	    	p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
2596 	    	p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
2597 	    	p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
2598 	    	p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
2599 	    	p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
2600 	    	p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
2601 	    	p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
2602 	    	p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
2603 	    	p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
2604 	    	p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
2605 	    	p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
2606 	 ELSIF l_Freight_Charge_Tbl(i).operation_code = 'UPDATE' THEN
2607         l_sysdate := sysdate;
2608 	    l_freight_charge_rec := l_freight_charge_tbl(i);
2609         x_FREIGHT_CHARGE_tbl(i).last_update_date := l_sysdate;
2610 	    ASO_FREIGHT_CHARGES_PKG.Update_Row(
2611 		p_FREIGHT_CHARGE_ID  => l_freight_charge_rec.freight_charge_id,
2612 		p_CREATION_DATE  => l_freight_charge_rec.creation_date,
2613 	    	p_CREATED_BY  => G_USER_ID,
2614 	    	p_LAST_UPDATE_DATE  => l_sysdate,
2615 	    	p_LAST_UPDATED_BY  => G_USER_ID,
2616 	    	p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2617 	    	p_REQUEST_ID  => l_freight_charge_rec.REQUEST_ID,
2618 	    	p_PROGRAM_APPLICATION_ID  => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
2619 	    	p_PROGRAM_ID  => l_freight_charge_rec.PROGRAM_ID,
2620 	    	p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
2621 	    	p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.Quote_SHIPMENT_ID,
2622 	    	p_FREIGHT_CHARGE_TYPE_ID  => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
2623 	    	p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
2624 	    	p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
2625 	    	p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
2626 	    	p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
2627 	    	p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
2628 	    	p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
2629 	    	p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
2630 	    	p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
2631 	    	p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
2632 	    	p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
2633 	    	p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
2634 	    	p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
2635 	    	p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
2636 	    	p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
2637 	    	p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
2638 	    	p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
2639 	    	p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
2640 	 ELSIF l_Freight_Charge_Tbl(i).operation_code = 'DELETE' THEN
2641 	     ASO_FREIGHT_CHARGES_PKG.Delete_Row(
2642 		p_FREIGHT_CHARGE_ID  => l_freight_charge_tbl(i).freight_charge_id);
2643 	 END IF;
2644     END LOOP;
2645 
2646     x_tax_detail_tbl := p_tax_detail_tbl;
2647     FOR i IN 1..P_Tax_Detail_Tbl.count LOOP
2648       IF P_Tax_Detail_Tbl(i).operation_code = 'CREATE' THEN
2649       l_sysdate := sysdate;
2650 	l_tax_detail_rec := x_tax_detail_tbl(i);
2651      -- BC4J Fix
2652 	--x_tax_detail_tbl(i).TAX_DETAIL_ID := NULL;
2653     x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2654 	ASO_TAX_DETAILS_PKG.Insert_Row(
2655 	    px_TAX_DETAIL_ID  => x_tax_detail_tbl(i).TAX_DETAIL_ID,
2656 	    p_CREATION_DATE  => SYSDATE,
2657 	    p_CREATED_BY  => G_USER_ID,
2658 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2659 	    p_LAST_UPDATED_BY  => G_USER_ID,
2660 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2661 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
2662 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
2663 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
2664 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
2665 	    p_QUOTE_HEADER_ID  => l_qte_HEADER_ID,
2666 	    p_QUOTE_LINE_ID  => NULL,
2667 	    p_QUOTE_SHIPMENT_ID  => l_tax_detail_rec.quote_shipment_id,
2668 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
2669 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
2670 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
2671 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
2672 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
2673 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
2674 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
2675 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
2676 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
2677 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
2678 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
2679 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
2680 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
2681 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
2682 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
2683 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
2684 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
2685 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
2686 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
2687 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
2688 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
2689 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
2690 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
2691 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
2692 	     p_ATTRIBUTE16  =>  l_tax_detail_rec.ATTRIBUTE16,
2693           p_ATTRIBUTE17  =>  l_tax_detail_rec.ATTRIBUTE17,
2694           p_ATTRIBUTE18  =>  l_tax_detail_rec.ATTRIBUTE18,
2695           p_ATTRIBUTE19  =>  l_tax_detail_rec.ATTRIBUTE19,
2696           p_ATTRIBUTE20  =>  l_tax_detail_rec.ATTRIBUTE20,
2697 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
2698 	    p_OBJECT_VERSION_NUMBER  => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
2699 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
2700 	    );
2701 
2702       ELSIF P_Tax_Detail_Tbl(i).operation_code = 'UPDATE' THEN
2703       l_sysdate := sysdate;
2704 	l_tax_detail_rec := x_tax_detail_tbl(i);
2705     x_tax_detail_tbl(i).LAST_UPDATE_DATE := l_sysdate;
2706 	ASO_TAX_DETAILS_PKG.update_Row(
2707 	    p_TAX_DETAIL_ID  => l_tax_detail_rec.TAX_DETAIL_ID,
2708 	    p_CREATION_DATE  => l_tax_detail_rec.creation_date,
2709 	    p_CREATED_BY  => G_USER_ID,
2710 	    p_LAST_UPDATE_DATE	=> l_sysdate,
2711 	    p_LAST_UPDATED_BY  => G_USER_ID,
2712 	    p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
2713 	    p_REQUEST_ID  => l_tax_detail_rec.REQUEST_ID,
2714 	    p_PROGRAM_APPLICATION_ID  => l_tax_detail_rec.PROGRAM_APPLICATION_ID,
2715 	    p_PROGRAM_ID  => l_tax_detail_rec.PROGRAM_ID,
2716 	    p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
2717 	    p_QUOTE_HEADER_ID  => l_Qte_HEADER_ID,
2718 	    p_QUOTE_LINE_ID  => NULL,
2719 	    p_QUOTE_SHIPMENT_ID  => l_tax_detail_rec.quote_shipment_id,
2720 	    p_ORIG_TAX_CODE  => l_tax_detail_rec.ORIG_TAX_CODE,
2721 	    p_TAX_CODE	=> l_tax_detail_rec.TAX_CODE,
2722 	    p_TAX_RATE	=> l_tax_detail_rec.TAX_RATE,
2723 	    p_TAX_DATE	=> l_tax_detail_rec.TAX_DATE,
2724 	    p_TAX_AMOUNT  => l_tax_detail_rec.TAX_AMOUNT,
2725 	    p_TAX_EXEMPT_FLAG  => l_tax_detail_rec.TAX_EXEMPT_FLAG,
2726 	    p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
2727 	    p_TAX_EXEMPT_REASON_CODE  => l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
2728 	    p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
2729 	    p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
2730 	    p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
2731 	    p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
2732 	    p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
2733 	    p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
2734 	    p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
2735 	    p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
2736 	    p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
2737 	    p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
2738 	    p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
2739 	    p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
2740 	    p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
2741 	    p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
2742 	    p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
2743 	    p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
2744           p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
2745           p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
2746           p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
2747           p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
2748           p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
2749 	    p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
2750 	    p_OBJECT_VERSION_NUMBER  => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
2751 	    p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
2752 	    );
2753       ELSIF P_Tax_Detail_Tbl(i).operation_code = 'DELETE' THEN
2754 	ASO_TAX_DETAILS_PKG.Delete_Row(
2755 	    p_TAX_DETAIL_ID  => P_Tax_Detail_Tbl(i).TAX_DETAIL_ID);
2756       END IF;
2757     END LOOP;
2758 
2759 
2760    -- check for duplicate promotions, see bug 4521799
2761   IF aso_debug_pub.g_debug_flag = 'Y' THEN
2762      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
2763   END IF;
2764 
2765   ASO_VALIDATE_PVT.Validate_Promotion (
2766      P_Api_Version_Number       => 1.0,
2767      P_Init_Msg_List            => FND_API.G_FALSE,
2768      P_Commit                   => FND_API.G_FALSE,
2769      p_price_attr_tbl           => p_price_attributes_tbl,
2770      x_price_attr_tbl           => lx_price_attr_tbl,
2771      x_return_status            => x_return_status,
2772      x_msg_count                => x_msg_count,
2773      x_msg_data                 => x_msg_data);
2774 
2775    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2776       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
2777       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
2778    END IF;
2779 
2780    if x_return_status <> fnd_api.g_ret_sts_success then
2781       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2782          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2783       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2784          RAISE FND_API.G_EXC_ERROR;
2785       ELSE
2786          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2787       END IF;
2788    end if;
2789 
2790 
2791  -- end of check for duplicate promotions
2792 
2793 
2794 
2795    -- Added to support the pricing attributes at header level
2796 
2797 
2798     FOR i in 1..p_Price_Attributes_Tbl.count LOOP
2799 
2800      l_price_attributes_rec := p_Price_Attributes_Tbl(i);
2801     -- l_price_attributes_rec.quote_line_id := p_qte_line_rec.quote_line_id;
2802      x_price_attributes_tbl(i) := l_price_attributes_rec;
2803 
2804      IF l_price_attributes_rec.operation_code = 'CREATE' THEN
2805 
2806       l_price_attributes_rec.quote_header_id := l_qte_header_id;
2807         -- BC4J Fix
2808 	   --x_price_attributes_tbl(1).price_attribute_id := NULL;
2809 
2810    ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
2811           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
2812           p_CREATION_DATE  	=> SYSDATE,
2813           p_CREATED_BY  	=> G_USER_ID,
2814           p_LAST_UPDATE_DATE  	=> SYSDATE,
2815           p_LAST_UPDATED_BY  	=> G_USER_ID,
2816           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
2817           p_REQUEST_ID  	=> l_price_attributes_rec.REQUEST_ID,
2818           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
2819           p_PROGRAM_ID  	=> l_price_attributes_rec.PROGRAM_ID,
2820           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
2821           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
2822           p_QUOTE_LINE_ID        => null,
2823           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
2824           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
2825           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
2826           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
2827           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
2828           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
2829           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
2830           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
2831           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
2832           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
2833           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
2834         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
2835         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
2836         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
2837         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
2838         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
2839         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
2840         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
2841         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
2842         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
2843         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
2844         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
2845         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
2846         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
2847         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
2848         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
2849         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
2850         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
2851         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
2852         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
2853         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
2854         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
2855         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
2856         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
2857         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
2858         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
2859         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
2860         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
2861         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
2862         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
2863         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
2864         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
2865         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
2866         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
2867         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
2868         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
2869         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
2870         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
2871         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
2872         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
2873         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
2874         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
2875         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
2876         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
2877         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
2878         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
2879         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
2880         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
2881         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
2882         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
2883         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
2884         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
2885         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
2886         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
2887         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
2888         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
2889         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
2890         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
2891         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
2892         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
2893         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
2894         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
2895         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
2896         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
2897         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
2898         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
2899         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
2900         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
2901         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
2902         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
2903         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
2904         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
2905         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
2906         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
2907         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
2908         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
2909         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
2910         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
2911         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
2912         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
2913         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
2914         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
2915         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
2916         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
2917         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
2918         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
2919         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
2920         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
2921         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
2922         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
2923         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
2924         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
2925           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
2926           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
2927           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
2928           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
2929           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
2930           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
2931           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
2932           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
2933           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
2934           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
2935           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
2936           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
2937           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
2938           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
2939           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
2940           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
2941 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
2942           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
2943           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
2944           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
2945           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
2946 	    p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
2947 );
2948 
2949 
2950    ELSIF l_price_attributes_rec.operation_code = 'UPDATE' THEN
2951 
2952 ASO_PRICE_ATTRIBUTES_PKG.Update_Row(
2953           p_PRICE_ATTRIBUTE_ID  => l_price_attributes_rec.price_attribute_id,
2954           p_CREATION_DATE  	=> l_price_attributes_rec.creation_date,
2955           p_CREATED_BY  	=> G_USER_ID,
2956           p_LAST_UPDATE_DATE  	=> SYSDATE,
2957           p_LAST_UPDATED_BY  	=> G_USER_ID,
2958           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
2959           p_REQUEST_ID  	=> l_price_attributes_rec.REQUEST_ID,
2960           p_PROGRAM_APPLICATION_ID  => l_price_attributes_rec.PROGRAM_APPLICATION_ID,
2961           p_PROGRAM_ID  	 => l_price_attributes_rec.PROGRAM_ID,
2962           p_PROGRAM_UPDATE_DATE  => l_price_attributes_rec.PROGRAM_UPDATE_DATE,
2963           p_QUOTE_HEADER_ID      => l_price_attributes_rec.QUOTE_HEADER_ID,
2964           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
2965           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
2966           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
2967           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
2968           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
2969           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
2970           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
2971           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
2972           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
2973           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
2974           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
2975           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
2976         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
2977         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
2978         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
2979         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
2980         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
2981         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
2982         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
2983         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
2984         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
2985         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
2986         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
2987         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
2988         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
2989         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
2990         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
2991         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
2992         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
2993         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
2994         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
2995         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
2996         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
2997         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
2998         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
2999         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
3000         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
3001         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
3002         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
3003         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
3004         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
3005         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
3006         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
3007         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
3008         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
3009         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
3010         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
3011         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
3012         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
3013         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
3014         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
3015         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
3016         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
3017         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
3018         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
3019         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
3020         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
3021         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
3022         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
3023         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
3024         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
3025         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
3026         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
3027         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
3028         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
3029         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
3030         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
3031         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
3032         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
3033         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
3034         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
3035         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
3036         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
3037         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
3038         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
3039         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
3040         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
3041         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
3042         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
3043         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
3044         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
3045         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
3046         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
3047         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
3048         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
3049         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
3050         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
3051         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
3052         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
3053         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
3054         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
3055         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
3056         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
3057         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
3058         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
3059         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
3060         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
3061         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
3062         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
3063         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
3064         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
3065         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
3066         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
3067           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
3068           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
3069           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
3070           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
3071           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
3072           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
3073           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
3074           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
3075           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
3076           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
3077           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
3078           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
3079           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
3080           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
3081           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
3082           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
3083 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
3084           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
3085           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
3086           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
3087           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
3088 	    p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
3089 );
3090 
3091 /* Commented the following code to call new api aso_pricing_int.delete_promotion 07/22/02
3092 
3093   ELSIF l_price_attributes_rec.operation_code = 'DELETE' THEN
3094   ASO_PRICE_ATTRIBUTES_PKG.Delete_Row(
3095        p_PRICE_ATTRIBUTE_ID   => l_price_attributes_rec.price_attribute_id);
3096 
3097 */
3098 
3099   END IF;
3100 
3101 END LOOP;
3102 
3103 -- New code to call aso_pricing_int.delete_promotion 07/22/02
3104 
3105    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3106    aso_debug_pub.add('Update_Rows: p_Price_Attributes_Tbl.count: '||p_Price_Attributes_Tbl.count,1, 'N');
3107    aso_debug_pub.add('Update_Rows: Before call to aso_pricing_int.Delete_Promotion',1, 'N');
3108    END IF;
3109 
3110    IF p_Price_Attributes_Tbl.count > 0 THEN
3111 
3112         aso_pricing_int.Delete_Promotion (
3113                            P_Api_Version_Number =>  1.0,
3114                            P_Init_Msg_List      =>  FND_API.G_FALSE,
3115                            P_Commit             =>  FND_API.G_FALSE,
3116                            p_price_attr_tbl     =>  p_Price_Attributes_Tbl,
3117                            x_return_status      =>  x_return_status,
3118                            x_msg_count          =>  x_msg_count,
3119                            x_msg_data           =>  x_msg_data
3120                                    );
3121 
3122         IF aso_debug_pub.g_debug_flag = 'Y' THEN
3123 	   aso_debug_pub.add('Update_Rows: After call to Delete_Promotion: x_return_status: '||x_return_status,1, 'N');
3124 	   END IF;
3125 
3126    END IF;
3127 
3128 -- End of New code to call aso_pricing_int.delete_promotion 07/22/02
3129 
3130 
3131 -- sales credits
3132    FOR i in 1..p_Sales_Credit_Tbl.count LOOP
3133 
3134      l_Sales_Credit_rec := p_sales_credit_tbl(i);
3135      x_sales_credit_tbl(i) := l_sales_credit_rec;
3136 
3137      IF l_sales_credit_rec.operation_code = 'CREATE' THEN
3138        l_sales_credit_rec.quote_header_id := l_qte_header_id;
3139      -- BC4J Fix
3140 	--x_sales_credit_tbl(i).sales_credit_id := NULL;
3141        ASO_SALES_CREDITS_PKG.Insert_Row(
3142           p_CREATION_DATE  => SYSDATE,
3143           p_CREATED_BY  => G_USER_ID,
3144           p_LAST_UPDATED_BY  => G_USER_ID,
3145           p_LAST_UPDATE_DATE  => SYSDATE,
3146           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3147           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
3148           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
3149           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
3150           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
3151           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
3152           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
3153           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
3154           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
3155           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
3156           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
3157           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
3158           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
3159 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
3160           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
3161           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
3162           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
3163           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
3164           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
3165           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
3166           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
3167           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
3168           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
3169           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
3170           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
3171           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
3172           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
3173           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
3174           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
3175           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
3176           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
3177           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
3178           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
3179           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
3180           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
3181 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
3182           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
3183           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
3184 
3185         ELSIF l_sales_credit_rec.operation_code = 'UPDATE' THEN
3186                ASO_SALES_CREDITS_PKG.Update_Row(
3187           p_CREATION_DATE  => l_sales_CREDIT_rec.creation_date,
3188           p_CREATED_BY  => G_USER_ID,
3189           p_LAST_UPDATED_BY  => G_USER_ID,
3190           p_LAST_UPDATE_DATE  => SYSDATE,
3191           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3192           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
3193           p_PROGRAM_APPLICATION_ID=> l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
3194           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
3195           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
3196           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID,
3197           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
3198           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
3199           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
3200           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
3201           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
3202           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
3203           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
3204 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
3205           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
3206           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
3207           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
3208           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
3209           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
3210           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
3211           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
3212           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
3213           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
3214           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
3215           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
3216           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
3217           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
3218           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
3219           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
3220           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
3221           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
3222           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
3223           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
3224           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
3225           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
3226 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
3227           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
3228           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
3229          ELSIF l_sales_credit_rec.operation_code = 'DELETE' THEN
3230                  ASO_SALES_CREDITS_PKG.Delete_Row(
3231           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID);
3232 
3233          END IF;
3234 END LOOP;
3235 -- Quote Party
3236     FOR i IN 1..p_quote_party_Tbl.count LOOP
3237 	l_quote_party_rec := p_quote_party_tbl(i);
3238         x_quote_party_tbl(i) := l_quote_party_rec;
3239 
3240        IF l_quote_party_rec.operation_code = 'CREATE' THEN
3241              l_quote_party_rec.quote_header_id := l_qte_header_id;
3242         -- BC4J Fix
3243 	   --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
3244 
3245            ASO_QUOTE_PARTIES_PKG.Insert_Row(
3246           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
3247           p_CREATION_DATE  => SYSDATE,
3248           p_CREATED_BY  => G_USER_ID,
3249           p_LAST_UPDATE_DATE  => SYSDATE,
3250           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3251           p_LAST_UPDATED_BY  => G_USER_ID,
3252           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
3253           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
3254           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
3255           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
3256           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
3257           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
3258           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
3259           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
3260           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
3261           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
3262           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
3263           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
3264           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
3265           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
3266           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
3267           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
3268           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
3269           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
3270           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
3271           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
3272           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
3273           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
3274           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
3275           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
3276           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
3277           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
3278           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
3279   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
3280         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
3281 
3282         ELSIF  l_quote_party_rec.operation_code = 'UPDATE' THEN
3283             ASO_QUOTE_PARTIES_PKG.Update_Row(
3284           p_QUOTE_PARTY_ID  => l_quote_party_rec.QUOTE_PARTY_ID,
3285           p_CREATION_DATE  => l_quote_party_rec.creation_date,
3286           p_CREATED_BY  => G_USER_ID,
3287           p_LAST_UPDATE_DATE  => SYSDATE,
3288           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
3289           p_LAST_UPDATED_BY  => G_USER_ID,
3290           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
3291           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
3292           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
3293           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
3294           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
3295           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
3296           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
3297           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
3298           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
3299           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
3300           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
3301           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
3302           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
3303           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
3304           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
3305           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
3306           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
3307           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
3308           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
3309           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
3310           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
3311           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
3312           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
3313           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
3314           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
3315           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
3316           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
3317         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
3318 
3319         ELSIF  l_quote_party_rec.operation_code = 'DELETE' THEN
3320             ASO_QUOTE_PARTIES_PKG.Delete_Row(
3321           p_QUOTE_PARTY_ID  => l_QUOTE_PARTY_rec.QUOTE_PARTY_ID);
3322 
3323         END IF;
3324  END LOOP;
3325     FOR i IN 1..P_hd_Attr_Ext_Tbl.count LOOP
3326 	l_line_attribs_rec := P_hd_Attr_Ext_Tbl(i);
3327      l_line_attribs_rec.quote_header_id := l_qte_header_id ;
3328         x_hd_Attr_Ext_Tbl(i) := l_line_attribs_rec;
3329 
3330      IF l_line_attribs_rec.operation_code = 'CREATE' THEN
3331      -- BC4J Fix
3332       --x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID := null;
3333 
3334  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
3335           px_LINE_ATTRIBUTE_ID  => x_hd_Attr_Ext_Tbl(i).LINE_ATTRIBUTE_ID,
3336           p_CREATION_DATE          => SYSDATE,
3337           p_CREATED_BY             => G_USER_ID,
3338           p_LAST_UPDATE_DATE       => SYSDATE,
3339           p_LAST_UPDATED_BY        => G_USER_ID,
3340           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
3341           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
3342           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
3343           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
3344           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
3345            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
3346            p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
3347           p_QUOTE_HEADER_ID          => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
3348           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
3349           p_QUOTE_SHIPMENT_ID          => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
3350           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
3351           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
3352           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
3353            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
3354           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
3355           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
3356         p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
3357 
3358       ELSIF l_line_attribs_rec.operation_code = 'UPDATE' THEN
3359       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row(
3360           p_LINE_ATTRIBUTE_ID  => l_LINE_ATTRIBS_REC.LINE_ATTRIBUTE_ID,
3361           p_CREATION_DATE          => l_LINE_ATTRIBS_REC.creation_date,
3362           p_CREATED_BY             => G_USER_ID,
3363           p_LAST_UPDATE_DATE       => SYSDATE,
3364           p_LAST_UPDATED_BY        => G_USER_ID,
3365           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
3366           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
3367           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
3368           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
3369           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
3370            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
3371           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
3372           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
3373           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
3374           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
3375           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
3376           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
3377           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
3378           p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
3379           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
3380           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
3381         p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
3382 
3383      ELSIF l_line_attribs_rec.operation_code = 'DELETE' THEN
3384      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.delete_Row(
3385           p_LINE_ATTRIB_ID  => l_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
3386      END IF;
3387 END LOOP;      -- line attribs
3388 
3389 
3390        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3391            aso_debug_pub.add('Update_Rows: l_qte_access_tbl.count: '||l_qte_access_tbl.count, 1, 'Y');
3392        END IF;
3393 
3394        for i in 1 .. p_qte_access_tbl.count loop
3395 
3396 		 if p_qte_access_tbl(i).operation_code = 'CREATE' then
3397 
3398 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3399                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3400 
3401 			 if l_qte_access_tbl(1).quote_number is null or l_qte_access_tbl(1).quote_number = fnd_api.g_miss_num then
3402 
3403 			    open c_quote_number;
3404 			    fetch c_quote_number into l_qte_access_tbl(1).quote_number;
3405 			    close c_quote_number;
3406 
3407                 end if;
3408 
3409                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3410                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource', 1, 'Y');
3411                 END IF;
3412 
3413                 ASO_SECURITY_INT.Add_Resource(
3414                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3415                      P_COMMIT                     => FND_API.G_FALSE,
3416                      P_Qte_Access_tbl             => l_qte_access_tbl,
3417 			      p_call_from_oafwk_flag       => FND_API.G_TRUE,
3418                      X_Qte_Access_tbl             => lx_qte_access_tbl,
3419                      X_RETURN_STATUS              => x_return_status,
3420                      X_msg_count                  => X_msg_count,
3421                      X_msg_data                   => X_msg_data );
3422 
3423                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3424                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '|| x_return_status, 1, 'Y');
3425                     aso_debug_pub.add('Update_Rows: lx_Qte_Access_tbl.count: '|| lx_Qte_Access_tbl.count, 1, 'Y');
3426                 END IF;
3427 
3428 			 for i in 1 .. lx_qte_access_tbl.count loop
3429 			     X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := lx_qte_access_tbl(i);
3430 			 end loop;
3431 
3432 		 elsif p_qte_access_tbl(i).operation_code = 'UPDATE' then
3433 
3434 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3435                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3436 
3437                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3438                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource to update access', 1, 'Y');
3439                 END IF;
3440 
3441                 ASO_SECURITY_INT.Add_Resource(
3442                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3443                      P_COMMIT                     => FND_API.G_FALSE,
3444                      P_Qte_Access_tbl             => l_qte_access_tbl,
3445 			      p_call_from_oafwk_flag       => FND_API.G_TRUE,
3446                      X_Qte_Access_tbl             => lx_qte_access_tbl,
3447                      X_RETURN_STATUS              => x_return_status,
3448                      X_msg_count                  => X_msg_count,
3449                      X_msg_data                   => X_msg_data );
3450 
3451                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3452                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
3453                     aso_debug_pub.add('Update_Rows: lx_Qte_Access_tbl.count: '|| lx_Qte_Access_tbl.count, 1, 'Y');
3454                 END IF;
3455 
3456 			 for i in 1 .. lx_qte_access_tbl.count loop
3457 			     X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := lx_qte_access_tbl(i);
3458 			 end loop;
3459 
3460 		 elsif p_qte_access_tbl(i).operation_code = 'DELETE' then
3461 
3462 			 l_qte_access_tbl(1)                  := p_qte_access_tbl(i);
3463                 l_qte_access_tbl(1).batch_price_flag := fnd_api.g_false;
3464 
3465                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3466                     aso_debug_pub.add('Update_Rows: Before call to Add_Resource', 1, 'Y');
3467                 END IF;
3468 
3469                 ASO_SECURITY_INT.Delete_Resource(
3470                      P_INIT_MSG_LIST              => FND_API.G_FALSE,
3471                      P_COMMIT                     => FND_API.G_FALSE,
3472                      P_Qte_Access_tbl             => l_qte_access_tbl,
3473                      X_RETURN_STATUS              => x_return_status,
3474                      X_msg_count                  => X_msg_count,
3475                      X_msg_data                   => X_msg_data );
3476 
3477                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3478                     aso_debug_pub.add('Update_Rows: After call to Add_Resource: x_return_status: '||x_return_status, 1, 'Y');
3479                 END IF;
3480 
3481 			 X_Qte_Access_tbl(X_Qte_Access_tbl.count + 1) := p_qte_access_tbl(i);
3482 
3483            end if;
3484 
3485        end loop;
3486 
3487 END Update_Rows;
3488 
3489 
3490 
3491 -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
3492 -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
3493 -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
3494 -- IF calculate_tax_flag = 'N', no summation on line level tax,
3495 -- just take the value of p_qte_header_rec.total_tax as the total_tax
3496 -- IF calculate_Freight_Charge_Flag = 'N', not summation on line level freight charge,
3497 -- just take the value of p_qte_header_rec.total_freight_charge
3498 
3499 
3500 
3501 PROCEDURE Update_Quote_Total ( P_Qte_Header_id             IN   NUMBER,
3502                                P_Calculate_Tax             IN   VARCHAR2,
3503                                P_Calculate_Freight_Charge  IN   VARCHAR2,
3504                                P_Control_Rec               IN   ASO_QUOTE_PUB.CONTROL_REC_TYPE
3505                                                                 :=  ASO_QUOTE_PUB.G_MISS_CONTROL_REC,
3506                                P_Call_Ar_Api_Flag          IN   VARCHAR2 := FND_API.G_FALSE,
3507                                X_Return_Status             OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
3508                                X_Msg_Count                 OUT NOCOPY /* file.sql.39 change */      NUMBER,
3509                                X_Msg_Data                  OUT NOCOPY /* file.sql.39 change */      VARCHAR2
3510                              )
3511 IS
3512 
3513 -- bug 14015509
3514   l_precision              NUMBER;
3515 
3516   CURSOR c_qte_sum IS
3517    SELECT quote_line_id, line_category_code, round(nvl(line_list_price * quantity, 0),l_precision) total_list_price,
3518           round(nvl(line_adjusted_amount * quantity,
3519               nvl(line_adjusted_percent * line_list_price * quantity, 0)),l_precision) ln_total_discount,
3520 	       round( nvl(line_quote_price * quantity, 0),l_precision) ln_selling_price
3521    FROM   ASO_QUOTE_LINES_ALL
3522    WHERE  quote_header_id = p_qte_header_id
3523    and    charge_periodicity_code is null; -- Recurring charges Change
3524 
3525    CURSOR c_tax_line(p_quote_line_id  NUMBER) IS
3526    SELECT round(nvl(sum(decode(tax_inclusive_flag, 'Y', 0,nvl(tax_amount,0))),0),l_precision) tax_amt_for_qte_total,
3527 		round(nvl(sum(nvl(tax_amount, 0)),0),l_precision) tax_amount
3528    FROM   ASO_TAX_DETAILS
3529    WHERE  quote_header_id              =   p_qte_header_id
3530    and    quote_line_id                =   p_quote_line_id;
3531 
3532    CURSOR c_tax IS
3533    SELECT round(nvl(sum(nvl(tax_amount, 0)),0),l_precision)
3534    FROM   ASO_TAX_DETAILS
3535    WHERE  quote_header_id = p_qte_header_id
3536    and    quote_line_id is null;
3537 
3538    CURSOR c_tax_rec_cnt IS
3539    select count(tax_detail_id)
3540    from aso_tax_details
3541    where quote_header_id = p_qte_header_id
3542    and tax_amount is not null;
3543 
3544 
3545 CURSOR c_old_shipping_charge IS
3546    SELECT round(total_shipping_charge,l_precision)
3547    FROM   aso_quote_headers_all
3548    WHERE  quote_header_id = p_qte_header_id;
3549 
3550    CURSOR c_hd_discount IS
3551    SELECT	total_adjusted_percent
3552    FROM   aso_quote_headers_all
3553    WHERE  quote_header_id = p_qte_header_id;
3554 
3555 
3556   Cursor get_hdr_payment_term IS
3557   SELECT payment_term_id
3558   FROM aso_payments
3559   WHERE  quote_header_id = p_qte_header_id
3560   and    quote_line_id is null;
3561 
3562   Cursor get_hdr_curr_code IS
3563   SELECT currency_code
3564   FROM aso_quote_headers_all
3565   WHERE  quote_header_id = p_qte_header_id;
3566 
3567   Cursor c_org_id IS
3568   Select org_id,quote_type
3569   from aso_quote_headers_all
3570   where quote_header_id = p_qte_header_id;
3571 
3572   Cursor get_total_payment_amount( l_qte_hdr_id number) is
3573   select sum(payment_amount)
3574   from aso_payments
3575   where quote_header_id = l_qte_hdr_id
3576   and quote_line_id is not null;
3577 
3578    l_total_list_price         NUMBER := 0;
3579    l_ln_total_discount        NUMBER := 0;
3580    l_total_quote_price        NUMBER := 0;
3581    l_total_adjusted_amount    NUMBER := 0;
3582    l_hd_discount_percent      NUMBER := 0;
3583    l_total_tax                NUMBER := 0;
3584    l_total_tax_for_qte_total  NUMBER := 0;
3585    l_header_tax               NUMBER := 0;
3586    l_total_shipping_charge    NUMBER := 0;
3587    l_line_shipping_charge     NUMBER := 0;
3588    l_header_shipping_charge   NUMBER := 0;
3589    l_count                    NUMBER;
3590 
3591    l_installment_option     VARCHAR2(240);
3592    l_hdr_currency_code    varchar2(15);
3593    l_hdr_term_id           NUMBER;
3594    l_paynow_amount          NUMBER;
3595    l_paynow_tax             NUMBER;
3596    l_paynow_charges         NUMBER:= null;
3597    l_paynow_total           NUMBER;
3598    l_org_id                 NUMBER;
3599    l_quote_type             varchar2(1);
3600    l_total_payment_amount   NUMBER :=0;
3601 -- bug 14015509
3602     l_ext_precision            NUMBER;
3603    l_min_acct_unit            NUMBER;
3604    l_total_selling_price      NUMBER := 0; -- bug 8584380
3605 
3606 BEGIN
3607 
3608      --Initialize API return status to SUCCESS
3609 
3610      x_return_status := FND_API.G_RET_STS_SUCCESS;
3611 
3612      -- get the currency code id for the header
3613           open get_hdr_curr_code;
3614           fetch get_hdr_curr_code into l_hdr_currency_code;
3615           close get_hdr_curr_code;
3616 	  FND_CURRENCY.GET_INFO(l_hdr_currency_code,l_precision,l_ext_precision,l_min_acct_unit);
3617 
3618      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3619 	    aso_debug_pub.add('Begin update_quote_total procedure.', 1, 'Y');
3620          aso_debug_pub.add('Update_quote_total: Input parameters value.');
3621          aso_debug_pub.add('Update_quote_total: p_qte_header_id:            '|| p_qte_header_id);
3622          aso_debug_pub.add('Update_quote_total: p_calculate_tax:            '|| p_calculate_tax);
3623          aso_debug_pub.add('Update_quote_total: p_calculate_freight_charge: '|| p_calculate_freight_charge);
3624          aso_debug_pub.add('p_control_rec.header_pricing_event: '|| p_control_rec.header_pricing_event);
3625          aso_debug_pub.add('p_control_rec.line_pricing_event:   '|| p_control_rec.header_pricing_event);
3626 	END IF;
3627 
3628 
3629 
3630      FOR qte_rec IN c_qte_sum LOOP
3631 
3632          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3633 	        aso_debug_pub.add('Update_quote_total: l_total_quote_price:        '|| l_total_quote_price);
3634              aso_debug_pub.add('qte_rec.line_category_code: '|| qte_rec.line_category_code);
3635 	    END IF;
3636 
3637          IF qte_rec.line_category_code = 'RETURN' THEN
3638 
3639               l_total_list_price  := l_total_list_price  - qte_rec.total_list_price;
3640               l_ln_total_discount := l_ln_total_discount - qte_rec.ln_total_discount;
3641               l_total_selling_price := l_total_selling_price - qte_rec.ln_selling_price; -- bug 8584380
3642 
3643               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3644 		        aso_debug_pub.add('Update_quote_total: l_total_list_price:  '|| l_total_list_price);
3645                   aso_debug_pub.add('Update_quote_total: l_ln_total_discount: '|| l_ln_total_discount);
3646 		    aso_debug_pub.add('Update_quote_total: l_total_selling_price '|| l_total_selling_price); -- bug 8584380
3647 		    END IF;
3648 
3649               FOR tax_line_rec IN c_tax_line(qte_rec.quote_line_id) LOOP
3650 
3651                    l_total_tax               := l_total_tax - tax_line_rec.tax_amount;
3652                    l_total_tax_for_qte_total := l_total_tax_for_qte_total - tax_line_rec.tax_amt_for_qte_total;
3653 
3654               END LOOP;
3655 
3656               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3657 		        aso_debug_pub.add('Update_quote_total: l_total_tax (-): '|| l_total_tax);
3658 		    END IF;
3659 
3660               IF p_calculate_freight_charge = 'Y' then
3661 
3662                    l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( p_qte_header_id,
3663                                                                                   qte_rec.quote_line_id );
3664 
3665                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3666 			        aso_debug_pub.add('Update_quote_total: After call to get_line_freight_charges');
3667                        aso_debug_pub.add('l_line_shipping_charge: '|| l_line_shipping_charge);
3668 			    END IF;
3669 
3670                    l_total_shipping_charge := l_total_shipping_charge - l_line_shipping_charge;
3671 
3672               END IF;
3673 
3674               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3675 		        aso_debug_pub.add('l_total_shipping_charge: '|| l_total_shipping_charge );
3676 		    END IF;
3677 
3678          ELSE
3679 
3680               l_total_list_price  := l_total_list_price + qte_rec.total_list_price;
3681               l_ln_total_discount := l_ln_total_discount + qte_rec.ln_total_discount;
3682 	        l_total_selling_price := l_total_selling_price + qte_rec.ln_selling_price; -- bug 8584380
3683 
3684               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3685 		        aso_debug_pub.add('Update_quote_total: l_total_list_price:  '|| l_total_list_price);
3686                   aso_debug_pub.add('Update_quote_total: l_ln_total_discount: '|| l_ln_total_discount);
3687 		    aso_debug_pub.add('Update_quote_total: l_total_selling_price '|| l_total_selling_price); -- bug 8584380
3688 		    END IF;
3689 
3690               FOR tax_line_rec IN c_tax_line(qte_rec.quote_line_id) LOOP
3691 
3692                    l_total_tax               := l_total_tax + tax_line_rec.tax_amount;
3693                    l_total_tax_for_qte_total := l_total_tax_for_qte_total + tax_line_rec.tax_amt_for_qte_total;
3694 
3695               END LOOP;
3696 
3697               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3698 		        aso_debug_pub.add('Update_quote_total: l_total_tax (+): '|| l_total_tax);
3699 		    END IF;
3700 
3701               IF p_calculate_freight_charge = 'Y' then
3702 
3703                    l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( p_qte_header_id,
3704                                                                                   qte_rec.quote_line_id );
3705 
3706                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3707 			        aso_debug_pub.add('Update_quote_total: After call to get_line_freight_charges');
3708                        aso_debug_pub.add('l_line_shipping_charge: '|| l_line_shipping_charge);
3709 			    END IF;
3710 
3711                    l_total_shipping_charge := l_total_shipping_charge + l_line_shipping_charge;
3712 
3713               END IF;
3714 
3715               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3716 		        aso_debug_pub.add('l_total_shipping_charge: '|| l_total_shipping_charge );
3717 		    END IF;
3718 
3719          END IF;
3720 
3721      END LOOP;
3722 
3723      --Get the header level tax amount and add it to the total tax
3724 
3725 	OPEN  c_tax;
3726 	FETCH c_tax INTO l_header_tax;
3727 	CLOSE c_tax;
3728 
3729      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3730 	    aso_debug_pub.add('Update_quote_total: l_header_tax: '|| l_header_tax);
3731          aso_debug_pub.add('Update_Quote_Total: p_control_rec.price_mode: '|| p_control_rec.price_mode);
3732 	END IF;
3733 
3734      IF (p_calculate_tax = 'N')                          OR
3735 	   (p_control_rec.price_mode  = 'QUOTE_LINE')       OR
3736 	   ((p_control_rec.price_mode = 'ENTIRE_QUOTE')     AND
3737          (p_control_rec.header_pricing_event = 'ORDER')) OR
3738 	   ((p_control_rec.price_mode = 'ENTIRE_QUOTE')     AND
3739          (p_control_rec.header_pricing_event = 'PRICE')) THEN
3740 
3741          OPEN  c_tax_rec_cnt;
3742          FETCH c_tax_rec_cnt INTO l_count;
3743          CLOSE c_tax_rec_cnt;
3744 
3745          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3746              aso_debug_pub.add('Update_quote_total: l_count: '|| l_count);
3747          END IF;
3748 
3749          IF l_count = 0 THEN
3750              l_total_tax               := null;
3751              l_total_tax_for_qte_total := null;
3752          ELSE
3753              l_total_tax               := l_total_tax + nvl(l_header_tax,0);
3754              l_total_tax_for_qte_total := l_total_tax_for_qte_total + nvl(l_header_tax,0);
3755          END IF;
3756 
3757      ELSE
3758 
3759          l_total_tax               := l_total_tax + nvl(l_header_tax,0);
3760          l_total_tax_for_qte_total := l_total_tax_for_qte_total + nvl(l_header_tax,0);
3761 
3762      END IF;
3763 
3764 
3765      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3766 	    aso_debug_pub.add('Update_quote_total: l_total_tax:               '|| l_total_tax);
3767 	    aso_debug_pub.add('Update_quote_total: l_total_tax_for_qte_total: '|| l_total_tax_for_qte_total);
3768 	END IF;
3769 
3770 
3771      IF P_calculate_Freight_Charge = 'Y' THEN
3772 
3773          l_header_shipping_charge := ASO_SHIPPING_INT.get_Header_freight_charges(p_qte_header_id);
3774 
3775          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3776 	        aso_debug_pub.add('Update_quote_total: l_header_shipping_charge: '|| l_header_shipping_charge);
3777 	    END IF;
3778 
3779          l_total_shipping_charge := l_total_shipping_charge + l_header_shipping_charge;
3780 
3781          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3782 	        aso_debug_pub.add('Update_quote_total: l_total_shipping_charge:  '|| l_total_shipping_charge);
3783 	    END IF;
3784 
3785      ELSE
3786 
3787 	    open  c_old_shipping_charge;
3788 	    fetch c_old_shipping_charge into l_total_shipping_charge;
3789 	    close c_old_shipping_charge;
3790 
3791          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3792 	        aso_debug_pub.add('Update_quote_total: l_total_shipping_charge:  '|| l_total_shipping_charge);
3793 	    END IF;
3794 
3795      END IF;
3796 
3797  -- bug 8584380. Using selling price to display quote total to avoid rounding issues for fractional quantities
3798      -- back calculating the total adjustments using total selling price and total list price
3799      /*l_total_quote_price := l_total_list_price + l_ln_total_discount + nvl(l_total_tax_for_qte_total,0) +
3800                             nvl(l_total_shipping_charge,0);*/
3801      l_total_quote_price := l_total_selling_price + nvl(l_total_tax_for_qte_total,0) +
3802                             nvl(l_total_shipping_charge,0);
3803 
3804      l_ln_total_discount:= l_total_selling_price - l_total_list_price;
3805      -- end bug 8584380
3806 
3807      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3808 	    aso_debug_pub.add('Update_quote_total: l_total_quote_price: '|| l_total_quote_price);
3809 	     aso_debug_pub.add('Update_quote_total: l_ln_total_discount: '|| l_ln_total_discount);   -- bug 8584380
3810 	END IF;
3811 
3812           -- removed the if condition for pricing event check as per bug 5237393
3813           IF ( l_total_quote_price < 0 ) THEN
3814 
3815                x_return_status := FND_API.G_RET_STS_ERROR;
3816 
3817                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3818 			    aso_debug_pub.add('Inside price check: x_return_status: '|| x_return_status );
3819 			END IF;
3820 
3821                IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3822 
3823                    FND_MESSAGE.Set_Name('ASO', 'ASO_NEGATIVE_QUOTE_TOTAL');
3824                    FND_MSG_PUB.ADD;
3825 
3826                END IF;
3827 
3828 			RAISE FND_API.G_EXC_ERROR;
3829 
3830           END IF;
3831 
3832      -- Start of PNPL Changes
3833       Open c_org_id;
3834 	 fetch c_org_id into l_org_id,l_quote_type;
3835 	 Close c_org_id;
3836 
3837       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
3838                                                                      p_org_id =>l_org_id);
3839 
3840       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3841           aso_debug_pub.add('Update_Quote_Total - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
3842       END IF;
3843 
3844        IF  ( (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(l_quote_type,'X') <>  'T')
3845 	       and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
3846 	         or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
3847 
3848          l_header_shipping_charge := ASO_SHIPPING_INT.get_Header_freight_charges(p_qte_header_id);
3849 
3850        -- get the payment term id for the header
3851           open get_hdr_payment_term;
3852           fetch get_hdr_payment_term into l_hdr_term_id;
3853           close get_hdr_payment_term;
3854 
3855        -- get the currency code id for the header
3856           open get_hdr_curr_code;
3857           fetch get_hdr_curr_code into l_hdr_currency_code;
3858           close get_hdr_curr_code;
3859 
3860 
3861       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3862 
3863           aso_debug_pub.add('Update_Quote_Total- Input to AR_VIEW_TERM_GRP.pay_now_amounts follows:  ', 1, 'Y');
3864           aso_debug_pub.add('Update_Quote_Total- l_header_shipping_charge:    '||l_header_shipping_charge, 1, 'Y');
3865           aso_debug_pub.add('Update_Quote_Total- l_hdr_currency_code:         '||l_hdr_currency_code, 1, 'Y');
3866           aso_debug_pub.add('Update_Quote_Total- l_hdr_term_id:               '||l_hdr_term_id, 1, 'Y');
3867 		aso_debug_pub.add('Update_Quote_Total- P_Call_Ar_Api_Flag:          '||P_Call_Ar_Api_Flag,1,'Y');
3868       END IF;
3869 
3870       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
3871 
3872       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3873           aso_debug_pub.add('Update_Quote_Total: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
3874       END IF;
3875 
3876        -- Call the AR API to get the amounts
3877              AR_VIEW_TERM_GRP.pay_now_amounts(
3878                     p_api_version              => 1.0,
3879                     p_init_msg_list            => FND_API.G_FALSE,
3880                     p_validation_level         => FND_API.G_VALID_LEVEL_FULL,
3881                     p_term_id                  => l_hdr_term_id,
3882                     p_currency_code            => l_hdr_currency_code,
3883                     p_line_amount              => 0,
3884                     p_tax_amount               => 0,
3885                     p_freight_amount           => l_header_shipping_charge ,
3886                     x_pay_now_line_amount      => l_paynow_amount,
3887                     x_pay_now_tax_amount       => l_paynow_tax,
3888                     x_pay_now_freight_amount   => l_paynow_charges,
3889                     x_pay_now_total_amount     => l_paynow_total,
3890                     X_Return_Status            => x_return_status ,
3891                     X_Msg_Count                => x_msg_count     ,
3892                     X_Msg_Data                 => x_msg_data      );
3893 
3894           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3895               aso_debug_pub.add('Update_Quote_Total: After call to AR_VIEW_TERM_GRP.pay_now_amounts: x_return_status: '
3896                                  || x_return_status, 1, 'Y');
3897           END IF;
3898 
3899           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3900 
3901               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3902                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3903                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
3904                   FND_MSG_PUB.ADD;
3905               END IF;
3906 
3907               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3908                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3909               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3910                    RAISE FND_API.G_EXC_ERROR;
3911               END IF;
3912 
3913           END IF;
3914 
3915       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3916           aso_debug_pub.add('Update_Quote_Total- Output from AR_VIEW_TERM_GRP.pay_now_amounts follows: ', 1, 'Y');
3917           aso_debug_pub.add('Update_Quote_Total- l_paynow_amount:     '||l_paynow_amount, 1, 'Y');
3918           aso_debug_pub.add('Update_Quote_Total- l_paynow_charges:    '||l_paynow_charges, 1, 'Y');
3919           aso_debug_pub.add('Update_Quote_Total- l_paynow_tax:        '||l_paynow_tax, 1, 'Y');
3920           aso_debug_pub.add('Update_Quote_Total- l_paynow_total:      '||l_paynow_total, 1, 'Y');
3921       END IF;
3922 
3923 
3924           -- Update the corresponding columns in the header table
3925           -- this update has been commented out as the update for this column is done below
3926 		/*update aso_quote_headers_all
3927           set header_paynow_charges    = l_paynow_charges,
3928               last_updated_by        =  fnd_global.user_id,
3929               last_update_login      =  fnd_global.conc_login_id
3930           where quote_header_id = P_Qte_Header_id; */
3931 
3932 
3933         END IF; -- end if for payment trm id null check
3934 
3935        END IF;
3936 
3937      -- End of PNPL Changes
3938 
3939      UPDATE ASO_QUOTE_HEADERS_ALL
3940      SET total_list_price       =  l_total_list_price,
3941          total_shipping_charge  =  l_total_shipping_charge,
3942          total_adjusted_amount  =  l_ln_total_discount,
3943          total_adjusted_percent =  decode( l_total_list_price, 0, NULL,
3944                                           (l_ln_total_discount/l_total_list_price) * 100 ),
3945          total_quote_price      =  l_total_quote_price,
3946          total_tax              =  l_total_tax,
3947 	    header_paynow_charges  =  nvl(l_paynow_charges,header_paynow_charges),
3948          last_update_date       =  sysdate,
3949          last_updated_by        =  fnd_global.user_id,
3950          last_update_login      =  fnd_global.conc_login_id
3951      WHERE quote_header_id = p_qte_header_id;
3952 
3953      IF SQL%ROWCOUNT = 0  THEN
3954 
3955          x_return_status := fnd_api.g_ret_sts_error;
3956 
3957      END IF;
3958 
3959      IF aso_debug_pub.g_debug_flag = 'Y' THEN
3960 	    aso_debug_pub.add('Update_quote_total: l_total_quote_price: '|| l_total_quote_price);
3961 	    aso_debug_pub.add('End of Update_quote_total');
3962 	END IF;
3963 
3964 END Update_Quote_Total;
3965 
3966 
3967 
3968 
3969 -- Hint: Primary key needs to be returned.
3970 PROCEDURE Create_quote(
3971     P_Api_Version_Number       IN   NUMBER,
3972     P_Init_Msg_List            IN   VARCHAR2                                 := FND_API.G_FALSE,
3973     P_Commit                   IN   VARCHAR2                                 := FND_API.G_FALSE,
3974     p_validation_level         IN   NUMBER                                   := FND_API.G_VALID_LEVEL_FULL,
3975     P_Control_Rec              IN   ASO_QUOTE_PUB.Control_Rec_Type           := ASO_QUOTE_PUB.G_Miss_Control_Rec,
3976     P_Qte_Header_Rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type        := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
3977     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
3978     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
3979     P_hd_Shipment_Rec		 IN   ASO_QUOTE_PUB.Shipment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC,
3980     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
3981     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
3982     P_hd_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
3983     P_hd_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
3984     P_hd_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
3985     P_Qte_Line_Tbl		      IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL,
3986     P_Qte_Line_Dtl_Tbl		 IN   ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL,
3987     P_Line_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
3988     P_line_rltship_tbl		 IN   ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Line_Rltship_Tbl,
3989     P_Price_Adjustment_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl,
3990     P_Price_Adj_Attr_Tbl	      IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
3991     P_Price_Adj_Rltship_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Price_Adj_Rltship_Tbl,
3992     P_ln_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
3993     P_ln_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
3994     P_ln_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
3995     P_ln_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
3996     P_ln_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
3997     P_ln_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
3998     P_ln_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
3999     P_Qte_Access_Tbl           IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_QTE_ACCESS_TBL,
4000     P_Template_Tbl             IN   ASO_QUOTE_PUB.Template_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_TEMPLATE_TBL,
4001     P_Related_Obj_Tbl          IN   ASO_QUOTE_PUB.Related_Obj_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_RELATED_OBJ_TBL,
4002     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
4003     X_Qte_Line_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
4004     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
4005     X_hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
4006     X_hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
4007     X_hd_Shipment_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Rec_Type,
4008     X_hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
4009     X_hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
4010     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
4011     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
4012     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
4013     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
4014     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
4015     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
4016     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
4017     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
4018     X_ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
4019     X_ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
4020     X_ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
4021     X_ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
4022     X_ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
4023     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
4024     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
4025     X_Qte_Access_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
4026     X_Template_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Template_Tbl_Type,
4027     X_Related_Obj_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Related_Obj_Tbl_Type,
4028     X_Return_Status            OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
4029     X_Msg_Count                OUT NOCOPY /* file.sql.39 change */  NUMBER,
4030     X_Msg_Data                 OUT NOCOPY /* file.sql.39 change */  VARCHAR2
4031     )
4032 IS
4033 
4034 l_api_name		      CONSTANT VARCHAR2(30) := 'Create_quote';
4035 l_api_version_number	 CONSTANT NUMBER   := 1.0;
4036 l_return_status_full	 VARCHAR2(1);
4037 l_return_status 	      VARCHAR2(1);
4038 l_qte_header_rec	      ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4039 lx_out_qte_header_rec	 ASO_QUOTE_PUB.Qte_Header_Rec_Type; --Nocopy changes
4040 l_qte_line_rec		      ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4041 l_qte_line_rec_out		 ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4042 l_qte_line_dtl_tbl	      ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4043 l_qte_line_dtl_tbl_out	 ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4044 l_Line_Attr_Ext_Tbl	      ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4045 l_Line_Attr_Ext_Tbl_out   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4046 l_hd_shipment_tbl	      ASO_QUOTE_PUB.Shipment_Tbl_Type;
4047 l_ln_shipment_tbl	      ASO_QUOTE_PUB.Shipment_Tbl_Type;
4048 l_ln_shipment_tbl_out	 ASO_QUOTE_PUB.Shipment_Tbl_Type;
4049 l_payment_tbl	           ASO_QUOTE_PUB.Payment_Tbl_Type;
4050 l_payment_tbl_out	      ASO_QUOTE_PUB.Payment_Tbl_Type;
4051 l_freight_charge_tbl	 ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4052 l_freight_charge_tbl_out	 ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4053 l_tax_detail_rec	      ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4054 l_tax_detail_tbl	      ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4055 l_tax_detail_tbl_out	 ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4056 l_Price_Attr_Tbl	      ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4057 l_Price_Attr_Tbl_out	 ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4058 l_Price_Adj_Tbl	      ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4059 l_Price_Adj_Tbl_out	      ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4060 l_Price_Adj_Attr_Tbl	 ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4061 l_Price_Adj_Attr_Tbl_out  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4062 l_Price_Adjustment_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type          :=p_Price_Adjustment_Tbl;
4063 l_line_rltship_rec        ASO_QUOTE_PUB.Line_Rltship_Rec_Type;
4064 l_price_adj_rltship_rec	 ASO_QUOTE_PUB.Price_Adj_Rltship_Rec_Type;
4065 l_pricing_control_rec	 ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
4066 --bug8235510
4067 lx_line_relationship_id number;
4068 l_shipment_id		       NUMBER;
4069 l_payment_id		       NUMBER;
4070 l_found			       VARCHAR2(1);
4071 l_calculate_freight_charge VARCHAR2(1) := 'Y';
4072 l_calculate_tax		  VARCHAR2(1) := 'Y';
4073 l_index			       NUMBER;
4074 l_index_2		            NUMBER;
4075 line_index		       NUMBER;
4076 l_shp_index_link	       Index_Link_Tbl_Type;
4077 l_prc_index_link	       Index_Link_Tbl_Type;
4078 l_prc_index_link_rev	  Index_Link_Tbl_Type;
4079 l_quote_party_tbl          ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4080 l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4081 l_sales_credit_tbl         ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4082 l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4083 l_control_rec              ASO_QUOTE_PUB.Control_rec_type := p_control_rec;
4084 l_Tax_Control_Rec          ASO_TAX_INT.Tax_Control_Rec_Type;
4085 x_tax_amount               NUMBER;
4086 l_shipment_rec             ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
4087 
4088 G_USER_ID	                 NUMBER      := FND_GLOBAL.USER_ID;
4089 G_LOGIN_ID	            NUMBER      := FND_GLOBAL.CONC_LOGIN_ID;
4090 
4091 l_price_updated_date_flag  VARCHAR2(1) := fnd_api.g_false;
4092 
4093 cursor c_last_update_date( p_qte_hdr_id  number ) is
4094 select last_update_date
4095 from aso_quote_headers_all
4096 where quote_header_id = p_qte_hdr_id;
4097 
4098 -- Code for Sales Team Assignment Changes
4099 CURSOR C_Check_Qte_Status (l_qte_hdr NUMBER) IS
4100 SELECT 'Y'
4101 FROM ASO_QUOTE_HEADERS_ALL A, ASO_QUOTE_STATUSES_B B
4102 WHERE A.Quote_Header_Id = l_qte_hdr
4103 AND A.Quote_Status_Id = B.Quote_Status_Id
4104 AND B.Status_Code = 'STORE DRAFT';
4105 
4106 CURSOR C_Get_Quota_Credit_Type IS
4107  SELECT Sales_Credit_Type_Id
4108  FROM OE_SALES_CREDIT_TYPES
4109  WHERE Quota_Flag = 'Y';
4110 
4111 Cursor c_obj_id(p_qte_header_id Number) IS
4112 Select object_id
4113 from aso_quote_related_objects
4114 where quote_object_id = p_qte_header_id
4115 and quote_object_type_code = 'HEADER'
4116 and relationship_type_code = 'OPP_QUOTE';
4117 
4118 CURSOR c_tax_line(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
4119 select nvl(sum(nvl(tax_amount, 0)),0) tax_amount
4120 FROM   ASO_TAX_DETAILS
4121 WHERE  quote_header_id              =   p_qte_header_id
4122 and    quote_line_id                =   p_quote_line_id;
4123 
4124 Cursor get_line_payment_term(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
4125 SELECT payment_term_id
4126 FROM aso_payments
4127 WHERE  quote_header_id              =   p_qte_header_id
4128 and    quote_line_id                =   p_quote_line_id;
4129 
4130 Cursor get_hdr_payment_term(p_qte_header_id NUMBER) IS
4131 SELECT payment_term_id
4132 FROM aso_payments
4133 WHERE  quote_header_id              =   p_qte_header_id
4134 and    quote_line_id                IS NULL ;
4135 
4136 Cursor get_line_qte_price( p_quote_line_id  NUMBER) IS
4137 select line_quote_price,quantity
4138 from   aso_quote_lines_all
4139 where  quote_line_id = p_quote_line_id;
4140 
4141 Cursor  c_inv_org_id(l_main_org_id Number) IS
4142 select  master_organization_id
4143 from    oe_system_parameters
4144 where   org_id = l_main_org_id;
4145 
4146 l_quota_id                 NUMBER;
4147 
4148 l_istore_source            VARCHAR2(1)  := 'N';
4149 l_sales_team_prof          VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
4150 
4151 --New Code for to call overload pricing_order
4152 lv_qte_header_rec          ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4153 lx_qte_header_rec          ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4154 lx_qte_line_tbl            ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
4155 lv_hd_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4156 lv_hd_shipment_tbl         ASO_QUOTE_PUB.Shipment_Tbl_Type;
4157 lv_hd_price_attr_tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4158 lx_price_adj_rltship_tbl   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
4159 
4160 -- hyang defaulting framework
4161 l_def_control_rec          ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
4162 l_db_object_name           VARCHAR2(30);
4163 l_hd_shipment_rec          ASO_QUOTE_PUB.Shipment_Rec_Type         := ASO_QUOTE_PUB.G_MISS_Shipment_REC;
4164 l_hd_payment_rec           ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
4165 l_hd_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type       := ASO_QUOTE_PUB.G_MISS_Tax_Detail_REC;
4166 l_hd_misc_rec              ASO_DEFAULTING_INT.Header_Misc_Rec_Type := ASO_DEFAULTING_INT.G_MISS_HEADER_MISC_REC;
4167 lx_hd_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4168 lx_hd_payment_rec          ASO_QUOTE_PUB.Payment_Rec_Type;
4169 lx_hd_tax_detail_rec       ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4170 lx_hd_misc_rec             ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
4171 lx_quote_line_rec          ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4172 lx_ln_misc_rec             ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
4173 lx_ln_shipment_rec         ASO_QUOTE_PUB.Shipment_Rec_Type;
4174 lx_ln_payment_rec          ASO_QUOTE_PUB.Payment_Rec_Type;
4175 lx_ln_tax_detail_rec       ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4176 lx_changed_flag            VARCHAR2(1);
4177 l_hd_payment_tbl	       ASO_QUOTE_PUB.Payment_Tbl_Type;
4178 l_hd_tax_detail_tbl	       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4179 
4180 --Template changes
4181 l_template_tbl             aso_quote_tmpl_int.list_template_tbl_type;
4182 l_qte_line_tbl             aso_quote_pub.qte_line_tbl_type  := p_qte_line_tbl;
4183 lx_qte_line_dtl_tbl        ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type := p_qte_line_dtl_tbl;
4184 l_count                    number;
4185 
4186 l_related_obj_rec          ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
4187 l_related_obj_id           number;
4188 x_related_obj_rec          ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
4189 l_obj_id                   number;
4190 
4191 l_installment_option     VARCHAR2(240);
4192 l_line_shipping_charge   NUMBER;
4193 l_line_tax               NUMBER;
4194 l_line_amount            NUMBER;
4195 l_line_term_id           NUMBER := NULL;
4196 l_paynow_amount          NUMBER;
4197 l_paynow_tax             NUMBER;
4198 l_paynow_charges         NUMBER;
4199 l_paynow_total           NUMBER;
4200 l_call_ar_api            varchar2(1);
4201 l_line_quote_price       NUMBER;
4202 l_quantity               NUMBER;
4203 l_master_organization_id NUMBER;
4204 
4205 -- bug 10261431
4206   l_top_model_line_id  number;
4207   l_ato_line_id                number;
4208 
4209 
4210 BEGIN
4211       -- Standard Start of API savepoint
4212       SAVEPOINT CREATE_quote_PVT;
4213 
4214       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4215 	     aso_debug_pub.add('******************************************************', 1, 'Y');
4216 	     aso_debug_pub.add('Begin Create_Quote Procedure', 1, 'Y');
4217 	     aso_debug_pub.add('******************************************************', 1, 'Y');
4218 	 END IF;
4219 
4220       -- Standard call to check for call compatibility.
4221       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4222                                            p_api_version_number,
4223                                            l_api_name,
4224                                            G_PKG_NAME) THEN
4225 
4226            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4227       END IF;
4228 
4229 
4230       -- Initialize message list if p_init_msg_list is set to TRUE.
4231       IF FND_API.to_Boolean( p_init_msg_list ) THEN
4232 	     FND_MSG_PUB.initialize;
4233       END IF;
4234 
4235       --Procedure added by Anoop Rajan on 30/09/2005 to print login details
4236       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4237 		aso_debug_pub.add('Before call to printing login info details', 1, 'Y');
4238 		ASO_UTILITY_PVT.print_login_info;
4239 		aso_debug_pub.add('After call to printing login info details', 1, 'Y');
4240       END IF;
4241 
4242       -- Change Done By Girish
4243       -- Procedure added to validate the operating unit
4244       ASO_VALIDATE_PVT.VALIDATE_OU(P_Qte_Header_Rec);
4245 
4246       -- Initialize API return status to SUCCESS
4247       x_return_status := FND_API.G_RET_STS_SUCCESS;
4248 
4249       --
4250       -- API body
4251       --
4252       l_control_rec.line_pricing_event := NULL;
4253       l_control_rec.calculate_tax_flag := NULL;
4254 
4255       -- Validate Environment
4256 
4257       IF FND_GLOBAL.User_Id IS NULL THEN
4258 
4259           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4260               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
4261               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
4262               FND_MSG_PUB.ADD;
4263           END IF;
4264           RAISE FND_API.G_EXC_ERROR;
4265       END IF;
4266 
4267       -- create Quote Header
4268 
4269       l_index := 1;
4270 
4271       FOR i IN 1..p_price_adjustment_tbl.count LOOP
4272 
4273 	      IF p_price_adjustment_tbl(i).qte_line_index IS NULL OR
4274 		     p_price_adjustment_tbl(i).qte_line_index = FND_API.G_MISS_NUM THEN
4275 
4276 	           l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(i);
4277 	           l_prc_index_link(l_index) := i;
4278 	           l_prc_index_link_rev(i)   := l_index;
4279 	           l_index                   := l_index + 1;
4280 
4281 	      END IF;
4282 
4283       END LOOP;
4284 
4285       l_index := 1;
4286 
4287       FOR i IN 1..p_price_adj_attr_tbl.count LOOP
4288 
4289 	      IF p_price_adj_attr_tbl(i).price_adj_index <> FND_API.G_MISS_NUM
4290               AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(i).price_adj_index) THEN
4291 
4292                 l_price_adj_attr_tbl(l_index)                 := p_price_adj_attr_tbl(i);
4293                 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);
4294                 l_index                                       := l_index + 1;
4295 
4296 	      END IF;
4297 
4298       END LOOP;
4299 
4300       IF Shipment_Rec_Exists(p_hd_shipment_rec) THEN
4301           l_hd_shipment_tbl(1) := p_hd_shipment_rec;
4302       END IF;
4303 
4304       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4305           aso_debug_pub.add('Create_Quote: Before call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
4306 
4307       ASO_INPUT_PARAM_DEBUG.Print_quote_input(
4308                     P_Quote_Header_Rec         => p_qte_header_rec
4309                   , P_hd_Price_Attributes_Tbl  => P_hd_Price_Attributes_Tbl
4310                   , P_hd_Payment_Tbl           => P_hd_Payment_Tbl
4311                   , P_hd_Shipment_tbl          => l_hd_Shipment_tbl
4312                   , P_hd_Tax_Detail_Tbl        => P_hd_Tax_Detail_Tbl
4313                   , P_hd_Sales_Credit_Tbl      => P_hd_Sales_Credit_Tbl
4314                   , P_Qte_Line_Tbl             => P_Qte_Line_Tbl
4315                   , P_Qte_Line_Dtl_Tbl         => P_Qte_Line_Dtl_Tbl
4316                   , P_Price_Adjustment_Tbl     => P_Price_Adjustment_Tbl
4317                   , P_Ln_Price_Attributes_Tbl  => P_Ln_Price_Attributes_Tbl
4318                   , P_Ln_Payment_Tbl           => P_Ln_Payment_Tbl
4319                   , P_Ln_Shipment_Tbl          => P_Ln_Shipment_Tbl
4320                   , P_Ln_Tax_Detail_Tbl        => P_Ln_Tax_Detail_Tbl
4321                   , P_ln_Sales_Credit_Tbl      => P_ln_Sales_Credit_Tbl
4322 			   , P_Qte_Access_Tbl           => P_Qte_Access_Tbl);
4323 
4324           aso_debug_pub.add('Create_Quote: After call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
4325       END IF ;
4326 
4327       -- hyang defaulting framework begin
4328 
4329       l_qte_header_rec := P_Qte_Header_Rec;
4330 
4331       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4332           aso_debug_pub.add('Create_Quote - before defaulting framework', 1, 'Y');
4333           aso_debug_pub.add('Create_Quote - populate defaulting control record from the header control record', 1, 'Y');
4334       END IF ;
4335 
4336       l_def_control_rec.Dependency_Flag       := FND_API.G_FALSE;
4337       l_def_control_rec.Defaulting_Flag       := l_control_rec.Defaulting_Flag;
4338       l_def_control_rec.Application_Type_Code := l_control_rec.Application_Type_Code;
4339       l_def_control_rec.Defaulting_Flow_Code  := 'CREATE';
4340 
4341       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4342           aso_debug_pub.add('Defaulting_Fwk_Flag - '||l_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
4343           aso_debug_pub.add('Dependency_Flag - '||l_def_control_rec.Dependency_Flag, 1, 'Y');
4344           aso_debug_pub.add('Defaulting_Flag - '||l_def_control_rec.Defaulting_Flag, 1, 'Y');
4345           aso_debug_pub.add('Application_Type_Code - '||l_def_control_rec.Application_Type_Code, 1, 'Y');
4346           aso_debug_pub.add('Defaulting_Flow_Code - '||l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
4347       END IF ;
4348 
4349       IF l_def_control_rec.application_type_code = 'QUOTING HTML' OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
4350 
4351           l_db_object_name := G_QUOTE_HEADER_DB_NAME;
4352 
4353       ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
4354           l_db_object_name := G_STORE_CART_HEADER_DB_NAME;
4355 
4356       ELSE
4357           l_control_rec.Defaulting_Fwk_Flag := 'N';
4358       END IF;
4359 
4360       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4361           aso_debug_pub.add('Create_Quote - Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
4362       END IF ;
4363 
4364       IF l_hd_shipment_tbl.count > 0 THEN
4365           l_hd_shipment_rec := l_hd_shipment_tbl(1);
4366       END IF;
4367 
4368       IF p_hd_payment_tbl.count > 0 THEN
4369           l_hd_payment_rec := p_hd_payment_tbl(1);
4370       END IF;
4371 
4372       IF p_hd_tax_detail_tbl.count > 0 THEN
4373           l_hd_tax_detail_rec := p_hd_tax_detail_tbl(1);
4374       END IF;
4375 
4376       l_hd_payment_tbl    := p_hd_payment_tbl;
4377       l_hd_tax_detail_tbl := p_hd_tax_detail_tbl;
4378 
4379       -- In create quote, it never deaults any line level records.
4380 /* Removing Call for defaulting from create_quote
4381       IF l_control_rec.defaulting_fwk_flag = 'Y' THEN
4382 
4383           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4384               aso_debug_pub.add('Create_Quote - Calling default_entity', 1, 'Y');
4385           END IF ;
4386 
4387           ASO_DEFAULTING_INT.Default_Entity (
4388                       p_api_version           =>  1.0
4389                     , p_control_rec           =>  l_def_control_rec
4390                     , p_database_object_name  =>  l_db_object_name
4391                     , p_quote_header_rec      =>  P_Qte_Header_Rec
4392                     , p_header_misc_rec       =>  l_hd_misc_rec
4393                     , p_header_shipment_rec   =>  l_hd_shipment_rec
4394                     , p_header_payment_rec    =>  l_hd_payment_rec
4395                     , p_header_tax_detail_rec =>  l_hd_tax_detail_rec
4396                     , x_quote_header_rec      =>  l_qte_header_rec
4397                     , x_header_misc_rec       =>  lx_hd_misc_rec
4398                     , x_header_shipment_rec   =>  lx_hd_shipment_rec
4399                     , x_header_payment_rec    =>  lx_hd_payment_rec
4400                     , x_header_tax_detail_rec =>  lx_hd_tax_detail_rec
4401                     , x_quote_line_rec        =>  lx_quote_line_rec
4402                     , x_line_misc_rec         =>  lx_ln_misc_rec
4403                     , x_line_shipment_rec     =>  lx_ln_shipment_rec
4404                     , x_line_payment_rec      =>  lx_ln_payment_rec
4405                     , x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec
4406                     , x_changed_flag          =>  lx_changed_flag
4407                     , x_return_status	      =>  x_return_status
4408                     , x_msg_count		      =>  x_msg_count
4409                     , x_msg_data		      =>  x_msg_data);
4410 
4411           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4412 
4413                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4414                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
4415                    FND_MSG_PUB.ADD;
4416                END IF;
4417 
4418                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4419                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4420                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4421                     RAISE FND_API.G_EXC_ERROR;
4422                END IF;
4423 
4424           END IF;
4425 
4426           IF Shipment_Null_Rec_Exists(lx_hd_shipment_rec, l_db_object_name) THEN
4427               l_hd_shipment_tbl(1) := lx_hd_shipment_rec;
4428           END IF;
4429 
4430           IF Payment_Null_Rec_Exists(lx_hd_payment_rec, l_db_object_name) THEN
4431               l_hd_payment_tbl(1) := lx_hd_payment_rec;
4432           END IF;
4433 
4434           IF Tax_Detail_Null_Rec_Exists(lx_hd_tax_detail_rec, l_db_object_name) THEN
4435               l_hd_tax_detail_tbl(1) := lx_hd_tax_detail_rec;
4436           END IF;
4437 
4438       END IF;
4439  */
4440       -- hyang defaulting framework end
4441 
4442 
4443       -- validate header information
4444 
4445 	 if aso_debug_pub.g_debug_flag = 'Y' then
4446 	     aso_debug_pub.add('Create_Quote: p_validation_level: ' || p_validation_level, 1, 'Y');
4447 	 end if;
4448 
4449       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4450 
4451 	       ASO_PARTY_INT.Validate_CustAccount (
4452                             p_init_msg_list   => FND_API.G_FALSE,
4453                             p_party_id        => l_qte_header_rec.party_id,
4454                             p_cust_account_id => l_qte_header_rec.cust_account_id,
4455                             x_return_status   => x_return_status,
4456                             x_msg_count	      => x_msg_count,
4457                             x_msg_data        => x_msg_data );
4458 
4459             if aso_debug_pub.g_debug_flag = 'Y' then
4460                 aso_debug_pub.add('Create_Quote: After call to validate_custaccount: x_return_status: ' || x_return_status, 1, 'Y');
4461             end if;
4462 
4463             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4464    	           RAISE FND_API.G_EXC_ERROR;
4465             END IF;
4466 
4467             ASO_VALIDATE_PVT.Validate_Quote_Exp_date(
4468                             p_init_msg_list         => FND_API.G_FALSE,
4469                             p_quote_expiration_date => p_qte_header_rec.quote_expiration_date,
4470                             x_return_status         => x_return_status,
4471                             x_msg_count	            => x_msg_count,
4472                             x_msg_data              => x_msg_data );
4473 
4474             if aso_debug_pub.g_debug_flag = 'Y' then
4475                 aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Exp_date: x_return_status: ' || x_return_status, 1, 'Y');
4476             end if;
4477 
4478             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4479 
4480                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4481                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_EXPIRATION_DATE');
4482                     FND_MSG_PUB.ADD;
4483                 END IF;
4484                 RAISE FND_API.G_EXC_ERROR;
4485             END IF;
4486 
4487             -- price list must exist and be active in OE_PRICE_LISTS
4488             ASO_VALIDATE_PVT.Validate_PriceList (
4489                             p_init_msg_list	=> FND_API.G_FALSE,
4490                             p_price_list_id	=> l_qte_header_rec.price_list_id,
4491                             x_return_status  => x_return_status,
4492                             x_msg_count	     => x_msg_count,
4493                             x_msg_data	     => x_msg_data);
4494 
4495             if aso_debug_pub.g_debug_flag = 'Y' then
4496                 aso_debug_pub.add('Create_Quote: After call to Validate_PriceList: x_return_status: ' || x_return_status, 1, 'Y');
4497             end if;
4498 
4499             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4500 
4501                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4502                     FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4503                     FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
4504                     FND_MSG_PUB.ADD;
4505                 END IF;
4506 	           RAISE FND_API.G_EXC_ERROR;
4507 	       END IF;
4508 
4509             ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
4510   	                      p_init_msg_list         => FND_API.G_FALSE,
4511                            p_price_list_id         => l_qte_header_rec.price_list_id,
4512                            p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
4513                            x_return_status         => x_return_status,
4514 	                      x_msg_count             => x_msg_count,
4515 	                      x_msg_data              => x_msg_data);
4516 
4517             if aso_debug_pub.g_debug_flag = 'Y' then
4518                 aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Price_Exp: x_return_status: ' || x_return_status, 1, 'Y');
4519             end if;
4520 
4521             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4522 
4523                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4524                     FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4525 				FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
4526                     FND_MSG_PUB.ADD;
4527                 END IF;
4528                 RAISE FND_API.G_EXC_ERROR;
4529             END IF;
4530 
4531             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
4532 
4533   	           -- status must exist and be active in ASO_QUOTE_STATUSES
4534   	           ASO_VALIDATE_PVT.Validate_Quote_Status (
4535   		                 p_init_msg_list    => FND_API.G_FALSE,
4536                            p_quote_status_id  => l_qte_header_rec.quote_status_id,
4537                            x_return_status    => x_return_status,
4538                            x_msg_count        => x_msg_count,
4539                            x_msg_data         => x_msg_data);
4540 
4541                 if aso_debug_pub.g_debug_flag = 'Y' then
4542                     aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Status: x_return_status: ' || x_return_status, 1, 'Y');
4543                 end if;
4544 
4545   	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4546 
4547                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4548   	                   FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
4549                         FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_STATUS_ID', FALSE);
4550                         FND_MSG_PUB.ADD;
4551   	               END IF;
4552   	               RAISE FND_API.G_EXC_ERROR;
4553                 END IF;
4554 
4555             END IF;
4556 
4557             if aso_debug_pub.g_debug_flag = 'Y' then
4558                 aso_debug_pub.add('Create_Quote: p_hd_sales_credit_tbl.count: ' || p_hd_sales_credit_tbl.count, 1, 'Y');
4559             end if;
4560 
4561             FOR i in 1..p_hd_sales_credit_tbl.count LOOP
4562 
4563                 if aso_debug_pub.g_debug_flag = 'Y' then
4564                     aso_debug_pub.add('p_hd_sales_credit_tbl('||i||').operation_code: '|| p_hd_sales_credit_tbl(i).operation_code,1,'Y');
4565                 end if;
4566 
4567                 if (p_hd_sales_credit_tbl(i).operation_code = 'CREATE' or p_hd_sales_credit_tbl(i).operation_code = 'UPDATE') then
4568 
4569                     ASO_VALIDATE_PVT.Validate_Resource_id(
4570                               p_init_msg_list => FND_API.G_FALSE,
4571                               p_resource_id	 => p_hd_sales_credit_tbl(i).resource_id  ,
4572                               x_return_status => x_return_status,
4573                               x_msg_count     => x_msg_count,
4574                               x_msg_data      => x_msg_data);
4575 
4576                     if aso_debug_pub.g_debug_flag = 'Y' then
4577                         aso_debug_pub.add('Create_Quote: After call to Validate_Resource_id: x_return_status: ' || x_return_status, 1, 'Y');
4578                     end if;
4579 
4580                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4581 
4582                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4583                             FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
4584                             FND_MSG_PUB.ADD;
4585                         END IF;
4586                         RAISE FND_API.G_EXC_ERROR;
4587                     END IF;
4588 
4589                     ASO_VALIDATE_PVT.Validate_Resource_group_id(
4590                               p_init_msg_list     => FND_API.G_FALSE,
4591                               p_resource_group_id => p_hd_sales_credit_tbl(i).resource_group_id,
4592                               x_return_status     => x_return_status,
4593                               x_msg_count         => x_msg_count,
4594                               x_msg_data          => x_msg_data);
4595 
4596                      if aso_debug_pub.g_debug_flag = 'Y' then
4597                          aso_debug_pub.add('Create_Quote: After call to Validate_Resource_group_id: x_return_status: ' || x_return_status, 1, 'Y');
4598                      end if;
4599 
4600                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4601                          RAISE FND_API.G_EXC_ERROR;
4602                      END IF;
4603 
4604                      ASO_VALIDATE_PVT.Validate_Salescredit_Type(
4605                               p_init_msg_list        => FND_API.G_FALSE,
4606                               p_salescredit_type_id  => p_hd_sales_credit_tbl(i).sales_credit_type_id,
4607                               x_return_status        => x_return_status,
4608                               x_msg_count            => x_msg_count,
4609                               x_msg_data             => x_msg_data);
4610 
4611                      if aso_debug_pub.g_debug_flag = 'Y' then
4612                          aso_debug_pub.add('Create_Quote: After call to Validate_Salescredit_Type: x_return_status: ' || x_return_status, 1, 'Y');
4613                      end if;
4614 
4615                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4616                          RAISE FND_API.G_EXC_ERROR;
4617                      END IF;
4618 
4619                      ASO_VALIDATE_PVT.Validate_EmployPerson(
4620                               p_init_msg_list => FND_API.G_FALSE,
4621                               p_employee_id   => p_hd_sales_credit_tbl(i).employee_person_id,
4622                               x_return_status => x_return_status,
4623                               x_msg_count     => x_msg_count,
4624                               x_msg_data      => x_msg_data);
4625 
4626                      if aso_debug_pub.g_debug_flag = 'Y' then
4627                          aso_debug_pub.add('Create_Quote: After call to Validate_EmployPerson: x_return_status: ' || x_return_status, 1, 'Y');
4628                      end if;
4629 
4630                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4631                          RAISE FND_API.G_EXC_ERROR;
4632                      END IF;
4633 
4634                 end if;
4635 
4636             END LOOP;
4637 
4638             if aso_debug_pub.g_debug_flag = 'Y' then
4639                 aso_debug_pub.add('Create_Quote: p_hd_quote_party_tbl.count: ' || p_hd_quote_party_tbl.count, 1, 'Y');
4640             end if;
4641 
4642             FOR i in 1..p_hd_quote_party_tbl.count LOOP
4643 
4644                  ASO_VALIDATE_PVT.Validate_Party_Type(
4645 		                p_init_msg_list => FND_API.G_FALSE,
4646 		                p_party_type    => p_hd_quote_party_tbl(i).party_type,
4647         	                x_return_status => x_return_status,
4648                           x_msg_count     => x_msg_count,
4649                           x_msg_data      => x_msg_data);
4650 
4651                  if aso_debug_pub.g_debug_flag = 'Y' then
4652                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Type: x_return_status: ' || x_return_status, 1, 'Y');
4653                  end if;
4654 
4655                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4656                      RAISE FND_API.G_EXC_ERROR;
4657                  END IF;
4658 
4659                  ASO_VALIDATE_PVT.Validate_Party(
4660                           p_init_msg_list => FND_API.G_FALSE,
4661                           p_party_id      => p_hd_quote_party_tbl(i).party_id,
4662                           p_party_usage	  => null,
4663                           x_return_status => x_return_status,
4664                           x_msg_count     => x_msg_count,
4665                           x_msg_data      => x_msg_data);
4666 
4667                  if aso_debug_pub.g_debug_flag = 'Y' then
4668                      aso_debug_pub.add('Create_Quote: After call to Validate_Party: x_return_status: ' || x_return_status, 1, 'Y');
4669                  end if;
4670 
4671                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4672                      RAISE FND_API.G_EXC_ERROR;
4673                  END IF;
4674 
4675                  ASO_VALIDATE_PVT.Validate_Party_Object_Type(
4676                           p_init_msg_list     => FND_API.G_FALSE,
4677                           p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
4678                           x_return_status     => x_return_status,
4679                           x_msg_count         => x_msg_count,
4680                           x_msg_data          => x_msg_data);
4681 
4682                  if aso_debug_pub.g_debug_flag = 'Y' then
4683                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Object_Type: x_return_status: ' || x_return_status, 1, 'Y');
4684                  end if;
4685 
4686                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4687                      RAISE FND_API.G_EXC_ERROR;
4688                  END IF;
4689 
4690             END LOOP;
4691 
4692 
4693             ASO_VALIDATE_PVT.Validate_item_tca_bsc(
4694                           p_init_msg_list    => FND_API.G_FALSE,
4695                           p_qte_header_rec   => l_qte_header_rec,
4696                           p_shipment_rec     => lx_hd_shipment_rec,
4697                           p_operation_code   => 'CREATE',
4698                           p_application_type_code   => l_control_rec.application_type_code,
4699                           x_return_status    => x_return_status,
4700                           x_msg_count        => x_msg_count,
4701                           x_msg_data         => x_msg_data);
4702 
4703             if aso_debug_pub.g_debug_flag = 'Y' then
4704                 aso_debug_pub.add('Create_Quote: After call to Validate_item_tca_bsc: x_return_status: ' || x_return_status, 1, 'Y');
4705             end if;
4706 
4707             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4708                 RAISE FND_API.G_EXC_ERROR;
4709             END IF;
4710 
4711             ASO_VALIDATE_PVT.Validate_Resource_id(
4712                           p_init_msg_list    => FND_API.G_FALSE,
4713                           p_resource_id      => l_qte_header_rec.resource_id,
4714                           x_return_status    => x_return_status,
4715                           x_msg_count        => x_msg_count,
4716                           x_msg_data         => x_msg_data);
4717 
4718             if aso_debug_pub.g_debug_flag = 'Y' then
4719                 aso_debug_pub.add('Create_Quote: After call to Validate_Resource_id: x_return_status: ' || x_return_status, 1, 'Y');
4720             end if;
4721 
4722             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4723                 RAISE FND_API.G_EXC_ERROR;
4724             END IF;
4725 
4726      END IF;  --IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4727 
4728 
4729      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4730          aso_debug_pub.add('Create_Quote: Before call to Populate_Qte_Header', 1, 'Y');
4731      END IF;
4732 
4733 
4734      Populate_Qte_Header( p_qte_header_rec => l_qte_header_rec,
4735 	                     p_Control_Rec    => l_control_rec,
4736 					 x_qte_header_rec => lx_out_qte_header_rec);
4737 
4738 				l_qte_header_rec	:=  lx_out_qte_header_rec;
4739 
4740      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4741          aso_debug_pub.add('Create_Quote: After call to Populate_Qte_Header', 1, 'Y');
4742 	END IF;
4743 
4744 
4745      IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4746 
4747             IF l_hd_shipment_tbl.count > 0 THEN
4748                 l_shipment_rec := l_hd_shipment_tbl(1);
4749             END IF;
4750 
4751             IF aso_debug_pub.g_debug_flag = 'Y' THEN
4752                 aso_debug_pub.add('Create_Quote: Before call to Validate_record_tca_crs', 1, 'N');
4753             END IF;
4754 
4755             ASO_VALIDATE_PVT.Validate_record_tca_crs(
4756     	                     p_init_msg_list   => FND_API.G_FALSE,
4757     	                     p_qte_header_rec  => l_qte_header_rec,
4758     	                     p_shipment_rec    => l_shipment_rec,
4759     	                     p_operation_code  => 'CREATE',
4760     	                     p_application_type_code  => l_control_rec.application_type_code,
4761     	                     x_return_status   => x_return_status,
4762                           x_msg_count       => x_msg_count,
4763                           x_msg_data        => x_msg_data);
4764 
4765             if aso_debug_pub.g_debug_flag = 'Y' then
4766                 aso_debug_pub.add('Create_Quote: After call to Validate_record_tca_crs: x_return_status: ' || x_return_status, 1, 'Y');
4767             end if;
4768 
4769             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4770                 RAISE FND_API.G_EXC_ERROR;
4771             END IF;
4772 
4773        -- bug 5196952 validate the ship method code
4774        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
4775 
4776           -- get the master org id from the quote hdr org id
4777           OPEN c_inv_org_id(l_qte_header_rec.org_id);
4778           FETCH c_inv_org_id into l_master_organization_id;
4779           CLOSE c_inv_org_id;
4780 
4781           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4782            aso_debug_pub.add('Create_Quote - l_master_organization_id:  '|| l_master_organization_id, 1, 'N');
4783            aso_debug_pub.add('Create_Quote - l_qte_header_rec.org_id:   '|| l_qte_header_rec.org_id, 1, 'N');
4784            aso_debug_pub.add('Create_Quote - before validate ship_method_code ', 1, 'N');
4785           end if;
4786          ASO_VALIDATE_PVT.validate_ship_method_code
4787          (
4788           p_init_msg_list          => fnd_api.g_false,
4789           p_qte_header_id          => l_qte_header_rec.quote_header_id,
4790           p_qte_line_id            => fnd_api.g_miss_num,
4791           p_organization_id        => l_master_organization_id,
4792           p_ship_method_code       => l_shipment_rec.ship_method_code,
4793           p_operation_code         => 'CREATE',
4794           x_return_status          => x_return_status,
4795           x_msg_count              => x_msg_count,
4796           x_msg_data               => x_msg_data);
4797 
4798           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4799            aso_debug_pub.add('Create_Quote - After validate ship_method_code ', 1, 'N');
4800           end if;
4801 
4802           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4803               RAISE FND_API.G_EXC_ERROR;
4804           END IF;
4805         end if;  -- end if for ship method code check
4806 
4807      END IF;  --IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4808 
4809 
4810      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4811          aso_debug_pub.add('Create_Quote: Before call to check_tca', 1, 'N');
4812      END IF;
4813 
4814      ASO_CHECK_TCA_PVT.check_tca( p_api_version         => 1.0,
4815                                   p_init_msg_list       => FND_API.G_FALSE,
4816                                   P_Qte_Rec             => l_qte_header_rec,
4817     		                        p_Header_Shipment_Tbl => l_hd_Shipment_Tbl,
4818                                   P_Operation_Code      => 'CREATE',
4819                                   p_application_type_code      => l_control_rec.application_type_code,
4820                                   x_return_status       => x_return_status,
4821                                   x_msg_count           => x_msg_count,
4822                                   x_msg_data            => x_msg_data);
4823 
4824      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4825          aso_debug_pub.add('Create_Quote: After call to check_tca: x_return_status: ' || x_return_status, 1, 'Y');
4826 	END IF;
4827 
4828     	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4829     	    RAISE FND_API.G_EXC_ERROR;
4830     	END IF;
4831 
4832 	-- order_type must exist and be active in OE_ORDER_TYPES
4833      ASO_TRADEIN_PVT.OrderType( p_init_msg_list         => FND_API.G_FALSE,
4834                                 p_qte_header_rec        => l_qte_header_rec,
4835                                 x_return_status 		 => x_return_status,
4836                                 x_msg_count     		 => x_msg_count,
4837                                 x_msg_data      		 => x_msg_data);
4838 
4839 	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4840 	     RAISE FND_API.G_EXC_ERROR;
4841 	 END IF;
4842 
4843       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4844           aso_debug_pub.add('Create_Quote: After call to OrderType: x_return_status: ' || x_return_status, 1, 'Y');
4845 	 END IF;
4846 
4847       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
4848 
4849 
4850            ASO_VALIDATE_PVT.Validate_NotNULL_VARCHAR2 (
4851                       p_init_msg_list   => FND_API.G_FALSE,
4852                       p_column_name     => 'CURRENCY_CODE',
4853                       p_notnull_column  => l_qte_header_rec.currency_code,
4854                       x_return_status   => x_return_status,
4855                       x_msg_count       => x_msg_count,
4856                       x_msg_data        => x_msg_data);
4857 
4858            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4859                aso_debug_pub.add('Create_Quote: After call to Validate_NotNULL_VARCHAR2: x_return_status: ' || x_return_status, 1, 'Y');
4860 	      END IF;
4861 
4862            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4863                RAISE FND_API.G_EXC_ERROR;
4864            END IF;
4865 
4866            ASO_VALIDATE_PVT.Validate_NotNULL_VARCHAR2 (
4867                       p_init_msg_list  => FND_API.G_FALSE,
4868                       p_column_name    => 'SOURCE_CODE',
4869                       p_notnull_column => l_qte_header_rec.quote_source_code,
4870                       x_return_status  => x_return_status,
4871                       x_msg_count      => x_msg_count,
4872                       x_msg_data       => x_msg_data );
4873 
4874            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4875                aso_debug_pub.add('Create_Quote: After call to Validate_NotNULL_VARCHAR2: x_return_status: ' || x_return_status, 1, 'Y');
4876 	      END IF;
4877 
4878            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4879 
4880                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4881                    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4882                    FND_MESSAGE.Set_Token('COLUMN', 'SOURCE_CODE', FALSE);
4883                    FND_MSG_PUB.ADD;
4884                END IF;
4885                RAISE FND_API.G_EXC_ERROR;
4886            END IF;
4887 
4888            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4889                aso_debug_pub.add('Create_Quote: Before validate_tax_exemption ', 1, 'N');
4890            END IF;
4891 
4892 	      -- tax_exempt_flag must be in 'E', 'R' and 'S'
4893 	      -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
4894 
4895            FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
4896 
4897                 ASO_VALIDATE_PVT.Validate_Tax_Exemption (
4898                              p_init_msg_list          => FND_API.G_FALSE,
4899                              p_tax_exempt_flag        => l_hd_tax_detail_tbl(i).tax_exempt_flag,
4900                              p_tax_exempt_reason_code => l_hd_tax_detail_tbl(i).tax_exempt_reason_code,
4901                              x_return_status          => x_return_status,
4902                              x_msg_count              => x_msg_count,
4903                              x_msg_data               => x_msg_data );
4904 
4905                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4906                     aso_debug_pub.add('Create_Quote: After call to Validate_Tax_Exemption: x_return_status: ' || x_return_status, 1, 'Y');
4907 	           END IF;
4908 
4909 	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4910 
4911                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4912                         FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4913                         FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
4914                         FND_MSG_PUB.ADD;
4915                     END IF;
4916                     RAISE FND_API.G_EXC_ERROR;
4917                 END IF;
4918 
4919 	      END LOOP;
4920 
4921            FOR i IN 1..p_ln_tax_detail_tbl.count LOOP
4922 
4923                 ASO_VALIDATE_PVT.Validate_Tax_Exemption (
4924                              p_init_msg_list          => FND_API.G_FALSE,
4925                              p_tax_exempt_flag        => p_ln_tax_detail_tbl(i).tax_exempt_flag,
4926                              p_tax_exempt_reason_code => p_ln_tax_detail_tbl(i).tax_exempt_reason_code,
4927                              x_return_status          => x_return_status,
4928                              x_msg_count              => x_msg_count,
4929                              x_msg_data               => x_msg_data );
4930 
4931                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4932                     aso_debug_pub.add('Create_Quote: After call to Validate_Tax_Exemption: x_return_status: ' || x_return_status, 1, 'Y');
4933 	           END IF;
4934 
4935 	           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4936 
4937                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4938                         FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
4939                         FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
4940                         FND_MSG_PUB.ADD;
4941                     END IF;
4942                     RAISE FND_API.G_EXC_ERROR;
4943 	           END IF;
4944 
4945            END LOOP;
4946 
4947            FOR i in 1..p_hd_quote_party_tbl.count LOOP
4948 
4949                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
4950                      aso_debug_pub.add('Create_Quote: Before call to Validate_Party_Object_Id', 1, 'N');
4951                  END IF;
4952 
4953                  ASO_VALIDATE_PVT.Validate_Party_Object_Id(
4954                              p_init_msg_list     => FND_API.G_FALSE,
4955                              p_party_id          => p_hd_quote_party_tbl(i).party_id,
4956                              p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
4957                              p_party_object_id   => p_hd_quote_party_tbl(i).party_object_id,
4958                              x_return_status     => x_return_status,
4959                              x_msg_count         => x_msg_count,
4960                              x_msg_data          => x_msg_data);
4961 
4962                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
4963                      aso_debug_pub.add('Create_Quote: After call to Validate_Party_Object_Id: x_return_status: ' || x_return_status, 1, 'Y');
4964 	            END IF;
4965 
4966                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4967 
4968                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4969 	                    FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
4970                          FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
4971 	                    FND_MSG_PUB.ADD;
4972                      END IF;
4973                      RAISE FND_API.G_EXC_ERROR;
4974                  END IF;
4975 
4976            END LOOP;
4977 
4978            ASO_VALIDATE_PVT.Validate_Emp_Res_id(
4979                              p_init_msg_list       => FND_API.G_FALSE,
4980                              p_resource_id         =>  p_qte_header_rec.resource_id,
4981                              p_employee_person_id  =>  p_qte_header_rec.employee_person_id ,
4982                              x_return_status       => x_return_status,
4983                              x_msg_count           => x_msg_count,
4984                              x_msg_data            => x_msg_data  );
4985 
4986            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4987                aso_debug_pub.add('Create_Quote: After call to Validate_Emp_Res_id: x_return_status: ' || x_return_status, 1, 'Y');
4988 	      END IF;
4989 
4990            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4991                RAISE FND_API.G_EXC_ERROR;
4992            END IF;
4993 
4994       END IF;  --IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
4995 
4996 
4997       IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'N') THEN
4998 
4999            IF l_hd_payment_tbl.count > 1 THEN
5000 
5001                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5002                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
5003                    FND_MSG_PUB.ADD;
5004                END IF;
5005                RAISE FND_API.G_EXC_ERROR;
5006 
5007            ELSIF l_hd_payment_tbl.count = 1 THEN
5008 
5009                IF l_hd_payment_tbl(1).payment_option = 'SPLIT' THEN
5010 
5011                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5012                        FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
5013                        FND_MSG_PUB.ADD;
5014                    END IF;
5015                    RAISE FND_API.G_EXC_ERROR;
5016                END IF;
5017 
5018            END IF;
5019 
5020       END IF;
5021 
5022       IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'Y') THEN
5023 
5024            IF l_hd_payment_tbl.count > 1 THEN
5025 
5026                FOR i IN 1..l_hd_payment_tbl.count LOOP
5027 
5028                     IF l_hd_payment_tbl(i).payment_option <> 'SPLIT' THEN
5029 
5030                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5031                             FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
5032                             FND_MSG_PUB.ADD;
5033                         END IF;
5034                         RAISE FND_API.G_EXC_ERROR;
5035                     END IF;
5036 
5037                END LOOP;
5038            END IF;
5039       END IF;
5040 
5041 	 IF l_hd_tax_detail_tbl.count > 1 THEN
5042 
5043           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5044               FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_TAX_RECORDS');
5045               FND_MSG_PUB.ADD;
5046           END IF;
5047           RAISE FND_API.G_EXC_ERROR;
5048       END IF;
5049 
5050       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5051           aso_debug_pub.add('Create_Quote: Before Validate_Agreement:l_qte_header_rec.contract_id: '||l_qte_header_rec.contract_id, 1, 'N');
5052       END IF;
5053 
5054       IF (l_qte_header_rec.contract_id IS NOT NULL AND
5055           l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
5056 
5057           ASO_VALIDATE_PVT.Validate_Agreement(
5058                p_init_msg_list             => FND_API.G_FALSE,
5059                P_Agreement_Id              => l_qte_header_rec.contract_id,
5060                x_return_status             => x_return_status,
5061                x_msg_count                 => x_msg_count,
5062                x_msg_data                  => x_msg_data);
5063 
5064           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5065 		    aso_debug_pub.add('Create_Quote: After call to Validate_Agreement: x_return_status: '||x_return_status, 1, 'N');
5066 		END IF;
5067 
5068           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5069                RAISE FND_API.G_EXC_ERROR;
5070           END IF;
5071       END IF;
5072 
5073       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5074           aso_debug_pub.add('Create_Quote: p_qte_header_rec.minisite_id: '|| p_qte_header_rec.minisite_id);
5075       END IF;
5076 
5077       IF (p_qte_header_rec.minisite_id IS NOT NULL AND
5078           p_qte_header_rec.minisite_id <> FND_API.G_MISS_NUM) THEN
5079 
5080           ASO_VALIDATE_PVT.Validate_MiniSite( p_init_msg_list => FND_API.G_FALSE,
5081                                               p_minisite_id   => p_qte_header_rec.minisite_id,
5082                                               x_return_status => x_return_status,
5083                                               x_msg_count     => x_msg_count,
5084                                               x_msg_data      => x_msg_data);
5085 
5086 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5087 		    aso_debug_pub.add('Create_Quote: After call to ASO_VALIDATE_PVT.Validate_MiniSite');
5088 	         aso_debug_pub.add('Create_Quote: x_return_status: '|| x_return_status);
5089 		END IF;
5090 
5091           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5092               RAISE FND_API.G_EXC_ERROR;
5093           END IF;
5094 
5095       END IF;
5096 
5097       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5098           aso_debug_pub.add('Create_Quote: Before call to insert_rows', 1, 'Y');
5099       END IF;
5100 
5101       Insert_Rows (
5102 			p_qte_header_rec        => l_qte_header_rec,
5103 			p_Price_Attributes_Tbl  => p_hd_price_attributes_tbl,
5104 			P_Price_Adjustment_Tbl  => l_price_adj_tbl,
5105 			P_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl,
5106 			P_Payment_Tbl	         => l_hd_payment_tbl,
5107 			P_Shipment_tbl	         => l_hd_shipment_tbl,
5108 			P_Freight_Charge_Tbl    => p_hd_freight_charge_tbl,
5109 			P_Tax_Detail_Tbl        => l_hd_tax_detail_tbl,
5110                P_hd_Attr_Ext_Tbl       => P_hd_Attr_Ext_Tbl,
5111                P_sales_credit_tbl      => p_hd_sales_credit_tbl,
5112                P_quote_party_tbl       => p_hd_quote_party_tbl,
5113                P_Qte_Access_Tbl        => P_Qte_Access_Tbl,
5114 			x_qte_header_rec        => x_qte_header_rec,
5115 			x_Price_Attributes_Tbl  => x_hd_price_attributes_tbl,
5116 			x_Price_Adjustment_Tbl  => l_price_adj_tbl_out,
5117 			x_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl_out,
5118 			x_Payment_Tbl           => x_hd_payment_tbl,
5119 			x_Shipment_rec	         => x_hd_shipment_rec,
5120 			x_Freight_Charge_Tbl    => x_hd_freight_charge_tbl,
5121 			x_Tax_Detail_Tbl        => x_hd_tax_detail_tbl,
5122                x_hd_Attr_Ext_Tbl       => x_hd_Attr_Ext_Tbl,
5123                x_sales_credit_tbl      => x_hd_sales_credit_tbl,
5124                x_quote_party_tbl       => x_hd_quote_party_tbl,
5125                x_Qte_Access_Tbl        => x_Qte_Access_Tbl,
5126 			X_Return_Status 	    => l_return_status,
5127 			X_Msg_Count		    => x_msg_count,
5128 			X_Msg_Data		    => x_msg_data);
5129 
5130       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5131           aso_debug_pub.add('Create_Quote: After call to Insert_Rows: x_return_status: '||x_return_status, 1, 'N');
5132       END IF;
5133 
5134       l_price_adj_tbl       :=  l_price_adj_tbl_out;
5135       l_price_adj_attr_tbl  :=  l_price_adj_attr_tbl_out;
5136 
5137 
5138       -- Add template rows to p_qte_line_tbl and p_qte_line_dtl tbales
5139 
5140       if aso_debug_pub.g_debug_flag = 'Y' then
5141           aso_debug_pub.add('Create_Quote: p_template_tbl.count: ' || p_template_tbl.count, 1, 'Y');
5142       end if;
5143 
5144       if p_template_tbl.count > 0 then
5145 
5146 	    for i in 1..p_template_tbl.count loop
5147 	        l_template_tbl(i) := p_template_tbl(i).template_id;
5148 	    end loop;
5149 
5150          if aso_debug_pub.g_debug_flag = 'Y' then
5151              aso_debug_pub.add('Create_Quote: l_template_tbl.count:           ' || l_template_tbl.count, 1, 'Y');
5152              aso_debug_pub.add('Create_Quote: x_qte_header_rec.currency_code: ' || x_qte_header_rec.currency_code, 1, 'Y');
5153              aso_debug_pub.add('Create_Quote: x_qte_header_rec.price_list_id: ' || x_qte_header_rec.price_list_id, 1, 'Y');
5154              aso_debug_pub.add('Create_Quote: Before call to aso_quote_templ_pvt.add_template_to_quote procedure', 1, 'Y');
5155          end if;
5156 
5157 	    aso_quote_tmpl_pvt.add_template_to_quote(
5158                    p_api_version_number => 1.0,
5159                    p_init_msg_list      => fnd_api.g_false,
5160                    p_commit             => fnd_api.g_false,
5161                    p_validation_level	=> p_validation_level,
5162                    p_update_flag        => 'N',
5163                    p_template_id_tbl    => l_template_tbl,
5164                    p_qte_header_rec     => x_qte_header_rec,
5165                    p_control_rec        => p_control_rec,
5166                    x_qte_line_tbl       => lx_qte_line_tbl,
5167                    x_qte_line_dtl_tbl   => x_qte_line_dtl_tbl,
5168                    x_return_status      => x_return_status,
5169                    x_msg_count          => x_msg_count,
5170                    x_msg_data           => x_msg_data
5171                    );
5172 
5173 
5174          if aso_debug_pub.g_debug_flag = 'Y' then
5175 
5176 	        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');
5177 	        aso_debug_pub.add('Create_Quote: lx_qte_line_tbl.count:    ' || lx_qte_line_tbl.count, 1, 'Y');
5178 	        aso_debug_pub.add('Create_Quote: x_qte_line_dtl_tbl.count: ' || x_qte_line_dtl_tbl.count, 1, 'Y');
5179 
5180 	        for i in 1 .. lx_qte_line_tbl.count loop
5181 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').inventory_item_id: '|| lx_qte_line_tbl(i).inventory_item_id, 1, 'N');
5182 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').uom_code:          '|| lx_qte_line_tbl(i).uom_code, 1, 'N');
5183 	             aso_debug_pub.add('Create_Quote: lx_qte_line_tbl('||i||').quantity:          '|| lx_qte_line_tbl(i).quantity, 1, 'N');
5184 	        end loop;
5185 
5186              for i in 1 .. x_qte_line_dtl_tbl.count loop
5187 
5188 	             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');
5189 	             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');
5190 	             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');
5191 	             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');
5192 
5193 		   end loop;
5194 
5195          end if;
5196 
5197 
5198 	    if lx_qte_line_tbl.count > 0 then
5199 
5200 	           l_qte_line_dtl_tbl_out := x_qte_line_dtl_tbl;
5201 
5202                 for i in 1 .. lx_qte_line_tbl.count loop
5203 
5204                      l_count  :=  l_qte_line_tbl.count;
5205 
5206                      l_qte_line_tbl(l_count + 1) := lx_qte_line_tbl(i);
5207 
5208                      for j in 1 .. x_qte_line_dtl_tbl.count loop
5209 
5210                           if x_qte_line_dtl_tbl(j).qte_line_index = i then
5211                               l_qte_line_dtl_tbl_out(j).qte_line_index := l_count + 1;
5212                           end if;
5213 
5214                           if x_qte_line_dtl_tbl(j).ref_line_index = i then
5215                               l_qte_line_dtl_tbl_out(j).ref_line_index := l_count + 1;
5216                           end if;
5217 
5218                           if x_qte_line_dtl_tbl(j).service_ref_qte_line_index = i then
5219                               l_qte_line_dtl_tbl_out(j).service_ref_qte_line_index := l_count + 1;
5220                           end if;
5221 
5222                           if x_qte_line_dtl_tbl(j).top_model_line_index = i then
5223                               l_qte_line_dtl_tbl_out(j).top_model_line_index := l_count + 1;
5224                           end if;
5225 
5226                           if x_qte_line_dtl_tbl(j).ato_line_index = i then
5227                               l_qte_line_dtl_tbl_out(j).ato_line_index := l_count + 1;
5228                           end if;
5229 
5230                      end loop;
5231 
5232                 end loop;
5233 
5234                 if l_qte_line_dtl_tbl_out.count > 0 then
5235 
5236                      for i in 1 .. l_qte_line_dtl_tbl_out.count loop
5237                           lx_qte_line_dtl_tbl(lx_qte_line_dtl_tbl.count + 1) := l_qte_line_dtl_tbl_out(i);
5238                      end loop;
5239 
5240                 end if;
5241 
5242 	    end if; -- if lx_qte_line_tbl.count > 0 then
5243 
5244       end if; --if p_template_tbl.count > 0 then
5245 
5246 
5247 	 if aso_debug_pub.g_debug_flag = 'Y' then
5248 
5249 	     aso_debug_pub.add('Create_Quote: l_qte_line_tbl.count:      ' || l_qte_line_tbl.count, 1, 'Y');
5250 	     aso_debug_pub.add('Create_Quote: lx_qte_line_dtl_tbl.count: ' || lx_qte_line_dtl_tbl.count, 1, 'Y');
5251 
5252 	     for i in 1 .. l_qte_line_tbl.count loop
5253 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').inventory_item_id: '|| l_qte_line_tbl(i).inventory_item_id, 1, 'N');
5254 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').uom_code:          '|| l_qte_line_tbl(i).uom_code, 1, 'N');
5255 	          aso_debug_pub.add('Create_Quote: l_qte_line_tbl('||i||').quantity:          '|| l_qte_line_tbl(i).quantity, 1, 'N');
5256 	     end loop;
5257 
5258           for i in 1 .. lx_qte_line_dtl_tbl.count loop
5259 
5260 	          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');
5261 	          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');
5262 	          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');
5263 	          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');
5264 	          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');
5265 	          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');
5266 	          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');
5267 	          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');
5268 
5269 		end loop;
5270 
5271 	 end if;
5272 
5273       -- End of Add template rows
5274 
5275 
5276       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5277           aso_debug_pub.add('Create_Quote: value of ASO_API_ENABLE_SECURITY: ' || FND_PROFILE.Value('ASO_API_ENABLE_SECURITY'), 1, 'Y');
5278           aso_debug_pub.add('Create_Quote: Before Assign_Team: l_sales_team_prof: ' || l_sales_team_prof, 1, 'Y');
5279           aso_debug_pub.add('Create_Quote: value of p_qte_header_rec.quote_type: ' || p_qte_header_rec.quote_type, 1, 'Y');
5280 	 END IF;
5281 
5282       IF (NVL(FND_PROFILE.Value('ASO_API_ENABLE_SECURITY'),'N') = 'Y' AND NVL(p_qte_header_rec.quote_type, 'X') <> 'T') THEN
5283 
5284           lx_qte_header_rec := x_qte_header_rec;
5285 
5286           OPEN C_Check_Qte_Status (x_qte_header_rec.quote_header_id);
5287           FETCH C_Check_Qte_Status INTO l_istore_source;
5288           CLOSE C_Check_Qte_Status;
5289 
5290           IF l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL' THEN
5291 
5292               IF p_control_rec.quote_source <> 'OPP_QUOTE' THEN
5293 
5294                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5295                       aso_debug_pub.add('Create_Quote: Before Assign_Team: p_control_rec.quote_source: ' || p_control_rec.quote_source, 1, 'Y');
5296                       aso_debug_pub.add('Create_Quote: Before Assign_Team: l_istore_source: ' || l_istore_source, 1, 'Y');
5297                   END IF;
5298 
5299                   IF l_istore_source <> 'Y' THEN
5300 
5301                       ASO_SALES_TEAM_PVT.Assign_Sales_Team (
5302                                     P_Init_Msg_List         => FND_API.G_FALSE,
5303                                     P_Commit                => FND_API.G_FALSE,
5304                                     p_Qte_Header_Rec        => x_qte_header_rec,
5305                                     P_Operation             => 'CREATE',
5306                                     x_Qte_Header_Rec        => lx_qte_header_rec,
5307                                     x_return_status         => x_return_status,
5308                                     x_msg_count             => x_msg_count,
5309                                     x_msg_data              => x_msg_data );
5310 
5311                       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5312                           aso_debug_pub.add('Create_Quote: After call to Assign_Sales_Team: x_return_status: '||x_return_status, 1, 'N');
5313                       END IF;
5314 
5315                       IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5316                           RAISE FND_API.G_EXC_ERROR;
5317                       ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5318                           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5319                       END IF;
5320 
5321                   END IF; --istore
5322 
5323               ELSE -- opp_quote
5324 
5325                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5326                       aso_debug_pub.add('Create_Quote: Before Opp_Quote_Primary_SalesRep: p_control_rec.quote_source: ' || p_control_rec.quote_source, 1, 'Y');
5327                   END IF;
5328 
5329                   ASO_SALES_TEAM_PVT.Opp_Quote_Primary_SalesRep (
5330                                   P_Init_Msg_List         => FND_API.G_FALSE,
5331                                   p_Qte_Header_Rec        => x_qte_header_rec,
5332                                   x_Qte_Header_Rec        => lx_qte_header_rec,
5333                                   x_return_status         => x_return_status,
5334                                   x_msg_count             => x_msg_count,
5335                                   x_msg_data              => x_msg_data );
5336 
5337                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5338                       aso_debug_pub.add('Create_Quote: After call to Opp_Quote_Primary_SalesRep: x_return_status: '||x_return_status, 1, 'N');
5339                   END IF;
5340 
5341                   IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5342                       RAISE FND_API.G_EXC_ERROR;
5343                   ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5344                       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5345                   END IF;
5346 
5347               END IF; -- opp_quote
5348 
5349           ELSE -- prof = NONE
5350 
5351               ASO_SECURITY_INT.Add_SalesRep_QuoteCreator (
5352                           p_init_msg_list              => FND_API.G_FALSE,
5353                           p_commit                     => FND_API.G_FALSE,
5354                           p_Qte_Header_Rec             => x_qte_header_rec,
5355                           x_return_status              => x_return_status,
5356                           x_msg_count                  => x_msg_count,
5357                           x_msg_data                   => x_msg_data );
5358 
5359               IF aso_debug_pub.g_debug_flag = 'Y' THEN
5360                   aso_debug_pub.add('Create_Quote: After call to Add_SalesRep_QuoteCreator: x_return_status: '||x_return_status, 1, 'N');
5361               END IF;
5362 
5363               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5364                   RAISE FND_API.G_EXC_ERROR;
5365               END IF;
5366 
5367 	         open  c_last_update_date(x_qte_header_rec.quote_header_id);
5368 	         fetch c_last_update_date into x_qte_header_rec.last_update_date;
5369 	         close c_last_update_date;
5370 
5371               l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
5372 
5373 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
5374 		        aso_debug_pub.add('Create_Quote: After call to Add_SalesRep_QuoteCreator');
5375                   aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
5376                   aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
5377               END IF;
5378 
5379           END IF; -- prof
5380 
5381           if aso_debug_pub.g_debug_flag = 'Y' then
5382               aso_debug_pub.add('Create_Quote: x_hd_sales_credit_tbl.count: '|| x_hd_sales_credit_tbl.count);
5383 		end if;
5384 
5385           IF x_hd_sales_credit_tbl.count < 1 AND l_istore_source <> 'Y' THEN
5386 
5387               OPEN C_Get_Quota_Credit_Type;
5388               FETCH C_Get_Quota_Credit_Type INTO l_quota_id;
5389               CLOSE C_Get_Quota_Credit_Type;
5390 
5391               if aso_debug_pub.g_debug_flag = 'Y' then
5392                   aso_debug_pub.add('Create_Quote: l_quota_id: '|| l_quota_id);
5393 		    end if;
5394 
5395               x_hd_sales_credit_tbl(1) := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_REC;
5396 
5397               if aso_debug_pub.g_debug_flag = 'Y' then
5398                   aso_debug_pub.add('Create_Quote: After assigning x_hd_sales_credit_tbl.count: '|| x_hd_sales_credit_tbl.count);
5399               end if;
5400 
5401               ASO_SALES_CREDITS_PKG.Insert_Row(
5402                               p_CREATION_DATE            => SYSDATE,
5403                               p_CREATED_BY               => G_USER_ID,
5404                               p_LAST_UPDATED_BY          => G_USER_ID,
5405                               p_LAST_UPDATE_DATE         => SYSDATE,
5406                               p_LAST_UPDATE_LOGIN        => G_LOGIN_ID,
5407                               p_REQUEST_ID               => FND_API.G_MISS_NUM,
5408                               p_PROGRAM_APPLICATION_ID   => FND_API.G_MISS_NUM,
5409                               p_PROGRAM_ID               => FND_API.G_MISS_NUM,
5410                               p_PROGRAM_UPDATE_DATE      => FND_API.G_MISS_DATE,
5411                               px_SALES_CREDIT_ID         => x_hd_sales_credit_tbl(1).Sales_Credit_Id,
5412                               p_QUOTE_HEADER_ID          => lx_qte_header_rec.QUOTE_HEADER_ID,
5413                               p_QUOTE_LINE_ID            => FND_API.G_MISS_NUM,
5414                               p_PERCENT                  => 100,
5415                               p_RESOURCE_ID              => lx_qte_header_rec.RESOURCE_ID,
5416                               p_RESOURCE_GROUP_ID        => lx_qte_header_rec.RESOURCE_GRP_ID,
5417                               p_EMPLOYEE_PERSON_ID       => FND_API.G_MISS_NUM,
5418                               p_SALES_CREDIT_TYPE_ID     => l_quota_id,
5419                               p_ATTRIBUTE_CATEGORY_CODE  => FND_API.G_MISS_CHAR,
5420                               p_ATTRIBUTE1               => FND_API.G_MISS_CHAR,
5421                               p_ATTRIBUTE2               => FND_API.G_MISS_CHAR,
5422                               p_ATTRIBUTE3               => FND_API.G_MISS_CHAR,
5423                               p_ATTRIBUTE4               => FND_API.G_MISS_CHAR,
5424                               p_ATTRIBUTE5               => FND_API.G_MISS_CHAR,
5425                               p_ATTRIBUTE6               => FND_API.G_MISS_CHAR,
5426                               p_ATTRIBUTE7               => FND_API.G_MISS_CHAR,
5427                               p_ATTRIBUTE8               => FND_API.G_MISS_CHAR,
5428                               p_ATTRIBUTE9               => FND_API.G_MISS_CHAR,
5429                               p_ATTRIBUTE10              => FND_API.G_MISS_CHAR,
5430                               p_ATTRIBUTE11              => FND_API.G_MISS_CHAR,
5431                               p_ATTRIBUTE12              => FND_API.G_MISS_CHAR,
5432                               p_ATTRIBUTE13              => FND_API.G_MISS_CHAR,
5433                               p_ATTRIBUTE14              => FND_API.G_MISS_CHAR,
5434                               p_ATTRIBUTE15              => FND_API.G_MISS_CHAR,
5435                               p_ATTRIBUTE16              => FND_API.G_MISS_CHAR,
5436                               p_ATTRIBUTE17              => FND_API.G_MISS_CHAR,
5437                               p_ATTRIBUTE18              => FND_API.G_MISS_CHAR,
5438                               p_ATTRIBUTE19              => FND_API.G_MISS_CHAR,
5439                               p_ATTRIBUTE20              => FND_API.G_MISS_CHAR,
5440                               p_SYSTEM_ASSIGNED_FLAG     => 'N',
5441                               p_CREDIT_RULE_ID           => FND_API.G_MISS_NUM,
5442                               p_OBJECT_VERSION_NUMBER    => FND_API.G_MISS_NUM );
5443 
5444               if aso_debug_pub.g_debug_flag = 'Y' then
5445                   aso_debug_pub.add('Create_Quote: After call to Insert_Row Sales_Credit_Id: '|| x_hd_sales_credit_tbl(1).Sales_Credit_Id);
5446               end if;
5447 
5448           END IF; -- sales_cred_tbl.count
5449 
5450       END IF;  -- Enable API Security Prof
5451 
5452       -- end security changes
5453 
5454       --  changes for quote related objects
5455 
5456       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5457           aso_debug_pub.add('Before creating object relationship ', 1, 'Y');
5458       END IF;
5459 
5460       IF P_Related_Obj_Tbl.count > 0 THEN
5461 
5462         For i in 1..P_Related_Obj_Tbl.count LOOP
5463 
5464       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5465           aso_debug_pub.add('Inside the related object loop ', 1, 'Y');
5466       END IF;
5467 
5468           l_related_obj_rec := P_Related_Obj_Tbl(i);
5469 
5470           -- logic to populate the operation code
5471 		Open c_obj_id(x_qte_header_rec.quote_header_id);
5472 	     Fetch c_obj_id INTO l_obj_id;
5473 		IF c_obj_id%NOTFOUND THEN
5474                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5475                   aso_debug_pub.add(' Setting the operation code for rel obj tbl ', 1, 'Y');
5476                   aso_debug_pub.add(' Obj id in rel obj rec is : '|| to_char(l_related_obj_rec.object_id), 1, 'Y');
5477 			END IF;
5478             IF l_related_obj_rec.object_id IS NOT NULL THEN
5479 		    l_related_obj_rec.operation_code := 'CREATE';
5480 		  END IF;
5481 		END IF;
5482           Close c_obj_id;
5483 
5484          IF l_related_obj_rec.operation_code = 'CREATE' THEN
5485           l_related_obj_rec.quote_object_id  := x_qte_header_rec.quote_header_id;
5486           x_related_obj_rec := l_related_obj_rec;
5487 
5488             ASO_RLTSHIP_PUB.Create_Object_Relationship(
5489               P_Api_Version_Number         => 1.0,
5490               P_Init_Msg_List              => FND_API.G_FALSE,
5491               P_Commit                     => FND_API.G_FALSE,
5492               p_validation_level           => p_validation_level,
5493               P_RELATED_OBJ_Rec            => l_related_obj_rec,
5494               X_related_object_id          => x_related_obj_rec.related_object_id,
5495               X_Return_Status              => X_Return_Status,
5496               X_Msg_Count                  => X_Msg_Count,
5497               X_Msg_Data                   => X_Msg_Data);
5498 
5499               IF aso_debug_pub.g_debug_flag = 'Y' THEN
5500                  aso_debug_pub.add('Create_Quote: After call to Create_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
5501               END IF;
5502 
5503               X_Related_Obj_Tbl(i) := x_related_obj_rec;
5504 
5505               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5506                     RAISE FND_API.G_EXC_ERROR;
5507               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5508                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5509               END IF;
5510         END IF;
5511 
5512 	   END LOOP;
5513 
5514 
5515 	 END IF;
5516 
5517 	 -- end of Rel Obj  changes
5518 
5519 
5520       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5521           aso_debug_pub.add('Before validate quote percent: p_validation_level: '|| p_validation_level, 1, 'Y');
5522       END IF;
5523 
5524       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
5525 
5526             IF x_hd_sales_credit_tbl.count > 0 THEN
5527 
5528                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5529                         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');
5530                     END IF;
5531 
5532 			     x_hd_sales_credit_tbl(1).quote_header_id := x_qte_header_rec.QUOTE_HEADER_ID;
5533 
5534                 ASO_VALIDATE_PVT.Validate_Quote_Percent(
5535                         p_init_msg_list             => FND_API.G_FALSE,
5536                         p_sales_credit_tbl          => x_hd_sales_credit_tbl,
5537                         x_return_status             => x_return_status,
5538                         x_msg_count                 => x_msg_count,
5539                         x_msg_data                  => x_msg_data);
5540 
5541                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5542                     aso_debug_pub.add('Create_Quote: After call to Validate_Quote_Percent: x_return_status: '|| x_return_status, 1, 'N');
5543                 END IF;
5544 
5545                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5546                     RAISE FND_API.G_EXC_ERROR;
5547                 END IF;
5548             END IF;
5549 
5550       END IF;
5551 
5552       l_index := X_Price_Adjustment_tbl.count + 1;
5553 
5554       FOR i IN 1.. l_Price_Adj_tbl.count LOOP
5555            x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(i);
5556            l_index := l_index + 1;
5557       END LOOP;
5558 
5559       FOR j IN 1..l_prc_index_link.count LOOP
5560            l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id := l_price_adj_tbl(j).price_adjustment_id;
5561       END LOOP;
5562 
5563       l_index := X_Price_Adj_Attr_tbl.count + 1;
5564 
5565       FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
5566            x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
5567            l_index := l_index + 1;
5568       END LOOP;
5569 
5570       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5571 
5572            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5573 
5574            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5575                FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
5576                FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER INSERT ROW', TRUE);
5577                FND_MSG_PUB.ADD;
5578            END IF;
5579            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5580 
5581       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
5582            x_return_status := FND_API.G_RET_STS_ERROR;
5583       END IF;
5584 
5585 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5586 	     aso_debug_pub.add('Create_Quote - l_qte_line_tbl.count: '||l_qte_line_tbl.count, 1, 'N');
5587 	 END IF;
5588 
5589       FOR i IN 1 .. l_qte_line_tbl.count LOOP
5590 
5591           l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
5592           l_index := 1;
5593 
5594           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5595 
5596                IF lx_qte_line_dtl_tbl(j).qte_line_index = i THEN
5597 
5598                     l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
5599                     l_index := l_index + 1;
5600                END IF;
5601           END LOOP;
5602 
5603           l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
5604           l_index := 1;
5605 
5606           FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
5607 
5608                IF p_ln_price_attributes_tbl(j).qte_line_index = i THEN
5609                    l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
5610                END IF;
5611 
5612           END LOOP;
5613 
5614           l_ln_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
5615           l_shp_index_link  := G_Miss_Link_Tbl;
5616           l_index := 1;
5617 
5618           FOR j IN 1..p_ln_shipment_tbl.count LOOP
5619 
5620                IF p_ln_shipment_tbl(j).qte_line_index = i THEN
5621                    l_ln_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
5622                    l_shp_index_link(j) := l_index;
5623                    l_index := l_index+1;
5624                END IF;
5625 
5626           END LOOP;
5627 
5628           l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
5629           l_index := 1;
5630 
5631           FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
5632 
5633                IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5634                    p_ln_freight_charge_tbl(j).shipment_index IS NOT NULL AND
5635                    l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
5636 
5637                     l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
5638                     l_freight_charge_tbl(l_index).shipment_index :=
5639                     l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
5640                     l_index := l_index+1;
5641                END IF;
5642           END LOOP;
5643 
5644 	     l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
5645 	     l_index := 1;
5646 
5647           FOR j IN 1..p_line_attr_ext_tbl.count LOOP
5648 
5649                IF p_line_attr_ext_tbl(j).qte_line_index = i THEN
5650 
5651                    l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
5652                    l_line_attr_ext_tbl(l_index).quote_header_id := x_qte_header_rec.quote_header_id;
5653 
5654                    IF p_line_attr_ext_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5655                        p_line_attr_ext_tbl(j).shipment_index IS NOT NULL AND
5656                        l_shp_index_link.EXISTS(p_line_attr_ext_tbl(j).shipment_index) THEN
5657 
5658                         l_line_attr_ext_tbl(l_index).shipment_index := l_shp_index_link(p_line_attr_ext_tbl(j).shipment_index);
5659                    END IF;
5660 
5661                    l_index := l_index + 1;
5662                END IF;
5663 
5664           END LOOP;
5665 
5666 	     l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
5667 	     l_index := 1;
5668 
5669           FOR j IN 1..p_ln_payment_tbl.count LOOP
5670 
5671                IF p_ln_payment_tbl(j).qte_line_index = i THEN
5672 
5673                    l_payment_tbl(l_index) := p_ln_payment_tbl(j);
5674 
5675                    IF p_ln_payment_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5676                        p_ln_payment_tbl(j).shipment_index  IS NOT NULL AND
5677                        l_shp_index_link.EXISTS(p_ln_payment_tbl(j).shipment_index) THEN
5678 
5679                         l_payment_tbl(l_index).shipment_index := l_shp_index_link(p_ln_payment_tbl(j).shipment_index);
5680                    END IF;
5681 
5682                    l_index := l_index +1;
5683                END IF;
5684 
5685           END LOOP;
5686 
5687           l_price_adj_tbl      := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
5688           l_prc_index_link     := G_Miss_Link_Tbl;
5689           l_prc_index_link_rev := G_Miss_Link_Tbl;
5690           l_index := 1;
5691 
5692           FOR j IN 1..p_price_adjustment_tbl.count LOOP
5693 
5694                IF p_price_adjustment_tbl(j).qte_line_index = i THEN
5695 
5696                    l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(j);
5697                    l_prc_index_link(l_index) := j;
5698                    l_prc_index_link_rev(i)   := l_index;
5699 
5700                    IF p_price_adjustment_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5701                        p_price_adjustment_tbl(j).shipment_index IS NOT NULL AND
5702                        l_shp_index_link.EXISTS(p_price_adjustment_tbl(j).shipment_index) THEN
5703 
5704                         l_price_adj_tbl(l_index).shipment_index := l_shp_index_link(p_price_adjustment_tbl(j).shipment_index);
5705                    END IF;
5706                    l_index := l_index + 1;
5707                END IF;
5708           END LOOP;
5709 
5710           l_price_adj_attr_tbl :=  ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
5711           l_index := 1;
5712 
5713           FOR j IN 1..p_price_adj_attr_tbl.count LOOP
5714 
5715                IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM AND
5716                    l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
5717 
5718                    l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
5719                    l_price_adj_attr_tbl(l_index).price_adj_index :=
5720                    l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
5721                    l_index := l_index + 1;
5722                END IF;
5723 
5724           END LOOP;
5725 
5726           l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
5727           l_index := 1;
5728 
5729           FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
5730 
5731                IF p_ln_tax_detail_tbl(j).qte_line_index = i THEN
5732 
5733                    l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
5734 
5735                    IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM
5736                        AND l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index)
5737                        AND p_ln_tax_detail_tbl(l_index).shipment_index IS NOT NULL THEN
5738 
5739                           l_tax_detail_tbl(l_index).shipment_index := l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
5740                    END IF;
5741                    l_index := l_index+1;
5742                END IF;
5743 
5744           END LOOP;
5745 
5746           l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
5747 
5748           l_index := 1;
5749           FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
5750 
5751                IF p_ln_sales_credit_tbl(j).qte_line_index = i THEN
5752 
5753                    l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
5754                    l_index := l_index +1;
5755                END IF;
5756 
5757           END LOOP;
5758 
5759           l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
5760 	     l_index := 1;
5761 
5762           FOR j IN 1..p_ln_quote_party_tbl.count LOOP
5763 
5764               IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
5765 
5766                    l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
5767 
5768                    IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
5769                        p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
5770                        l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
5771 
5772                          l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
5773                    END IF;
5774 
5775                    l_index := l_index +1;
5776 
5777               END IF;
5778           END LOOP;
5779 
5780 	     l_qte_line_rec := l_qte_line_tbl(i);
5781 	     l_qte_line_rec.quote_header_id := x_qte_header_rec.quote_header_id;
5782 
5783           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5784               aso_debug_pub.add('Create_Quote - before Validate_Commitment ', 1, 'N');
5785           END IF;
5786 
5787           ASO_VALIDATE_PVT.Validate_Commitment(
5788                       P_Init_Msg_List          => FND_API.G_FALSE,
5789                       P_Qte_Header_Rec         => x_qte_header_rec,
5790                       P_Qte_Line_Rec           => l_qte_line_rec,
5791                       X_Return_Status          => l_return_status,
5792                       X_Msg_Count              => x_msg_count,
5793                       X_Msg_Data               => x_msg_data);
5794 
5795           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5796               aso_debug_pub.add('Create_Quote - after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
5797           END IF;
5798 
5799           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5800               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5801               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5802           ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5803               x_return_status := FND_API.G_RET_STS_ERROR;
5804               RAISE FND_API.G_EXC_ERROR;
5805           END IF;
5806 
5807           open  c_last_update_date(x_qte_header_rec.quote_header_id);
5808           fetch c_last_update_date into l_control_rec.last_update_date;
5809           close c_last_update_date;
5810 
5811           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5812               aso_debug_pub.add('l_control_rec.last_update_date: '|| l_control_rec.last_update_date);
5813               aso_debug_pub.add('Create_Quote: Before call to create_quote_lines', 1, 'Y');
5814           END IF;
5815 
5816           ASO_QUOTE_LINES_PVT.Create_Quote_Lines (
5817                           P_Api_Version_Number   => 1.0,
5818                           p_validation_level     => p_validation_level,
5819                           p_control_rec          => l_control_rec,
5820                           p_update_header_flag   => FND_API.G_FALSE,
5821                           p_qte_header_rec       => p_qte_header_rec,
5822                           P_qte_Line_Rec	    => l_qte_line_rec,
5823                           P_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
5824                           P_Line_Attribs_Ext_Tbl => l_line_attr_Ext_Tbl,
5825                           P_price_attributes_tbl => l_price_attr_tbl,
5826                           P_Price_Adj_Tbl        => l_price_adj_tbl,
5827                           P_Price_Adj_Attr_Tbl   => l_Price_Adj_Attr_Tbl,
5828                           P_Payment_Tbl          => l_payment_tbl,
5829                           P_Shipment_Tbl         => l_ln_shipment_tbl,
5830                           P_Freight_Charge_Tbl   => l_freight_charge_tbl,
5831                           P_Tax_Detail_Tbl       => l_tax_detail_tbl,
5832                           P_quote_party_tbl      => l_quote_party_tbl ,
5833                           P_sales_Credit_tbl     => l_sales_Credit_tbl ,
5834                           x_qte_Line_Rec	    => l_qte_line_rec_out,
5835                           x_qte_line_dtl_tbl     => l_qte_line_dtl_tbl_out,
5836                           x_Line_Attribs_Ext_Tbl => l_line_attr_Ext_Tbl_out,
5837                           x_price_attributes_tbl => l_price_attr_tbl_out,
5838                           x_Price_Adj_Tbl        => l_price_adj_tbl_out,
5839                           x_Price_Adj_Attr_Tbl   => l_Price_Adj_Attr_Tbl_out,
5840                           x_Payment_Tbl          => l_payment_tbl_out,
5841                           x_Shipment_Tbl	    => l_ln_shipment_tbl_out,
5842                           x_Freight_Charge_Tbl   => l_freight_charge_tbl_out,
5843                           x_Tax_Detail_Tbl       => l_tax_detail_tbl_out,
5844                           X_quote_party_tbl      => l_quote_party_tbl_out ,
5845                           X_sales_Credit_tbl     => l_sales_Credit_tbl_out ,
5846                           X_Return_Status        => l_return_status,
5847                           X_Msg_Count            => x_msg_count,
5848                           X_Msg_Data             => x_msg_data );
5849 
5850           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5851               aso_debug_pub.add('Create_Quote: After call to create_quote_lines: l_return_status: '|| l_return_status, 1, 'Y');
5852           END IF;
5853 
5854           l_qte_line_rec        :=  l_qte_line_rec_out;
5855 	     l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
5856 	     l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
5857 	     l_price_attr_tbl      :=  l_price_attr_tbl_out;
5858 	     l_price_adj_tbl       :=  l_price_adj_tbl_out;
5859 	     l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
5860 	     l_payment_tbl         :=  l_payment_tbl_out;
5861 	     l_ln_shipment_tbl     :=  l_ln_shipment_tbl_out;
5862 	     l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
5863 	     l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
5864 	     l_quote_party_tbl     :=  l_quote_party_tbl_out;
5865 	     l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
5866 
5867           IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5868 
5869                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5870                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5871                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
5872                    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER CREATE LINES', FALSE);
5873                    FND_MSG_PUB.ADD;
5874                END IF;
5875                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5876 
5877           ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
5878 
5879 	          x_return_status := FND_API.G_RET_STS_ERROR;
5880                RAISE FND_API.G_EXC_ERROR;
5881           END IF;
5882 
5883           open  c_last_update_date(x_qte_header_rec.quote_header_id);
5884           fetch c_last_update_date into x_qte_header_rec.last_update_date;
5885           close c_last_update_date;
5886 
5887           l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
5888 
5889           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5890               aso_debug_pub.add('Create_Quote: After call to Create_Quote_Lines');
5891               aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
5892               aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
5893           END IF;
5894 
5895           For j IN 1..lx_qte_line_dtl_tbl.count LOOP
5896              IF lx_qte_line_dtl_tbl(j).SERVICE_REF_QTE_LINE_INDEX = i THEN
5897                 lx_qte_line_dtl_tbl(j).SERVICE_REF_LINE_ID := l_qte_line_rec.quote_line_id;
5898              END IF;
5899           END LOOP;
5900 
5901           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5902              IF lx_qte_line_dtl_tbl(j).REF_LINE_INDEX = i THEN
5903                  lx_qte_line_dtl_tbl(j).REF_LINE_ID := l_qte_line_rec.quote_line_id;
5904              END IF;
5905           END LOOP;
5906 
5907 	   --  P1 bug 10261431
5908 	  FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5909               IF lx_qte_line_dtl_tbl(j).TOP_MODEL_LINE_INDEX = i THEN
5910                   lx_qte_line_dtl_tbl(j).TOP_MODEL_LINE_ID := l_qte_line_rec.quote_line_id;
5911 		  l_top_model_line_id:= l_qte_line_rec.quote_line_id;
5912               END IF;
5913           END LOOP;
5914 
5915           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
5916              IF lx_qte_line_dtl_tbl(j).ATO_LINE_INDEX = i THEN
5917                  lx_qte_line_dtl_tbl(j).ATO_LINE_ID := l_qte_line_rec.quote_line_id;
5918 		 l_ato_line_id:= l_qte_line_rec.quote_line_id; --  P1 bug 10261431
5919              END IF;
5920           END LOOP;
5921 
5922           --  P1 bug 10261431
5923 	   if (l_qte_line_rec.item_type_code='MDL') and (i=1) then
5924 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5925                       aso_debug_pub.add('Create_Quote: After call to Create_Quote_Lines updating the data for MDL line');
5926                  end if;
5927 		     update aso_quote_line_details
5928 		     set top_model_line_id=l_top_model_line_id,ato_line_id=l_ato_line_id
5929 		     where quote_line_id=l_qte_line_rec.quote_line_id;
5930           end if;
5931 
5932           X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
5933           l_index := X_Qte_Line_Dtl_Tbl.count+1;
5934 
5935           FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
5936                x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
5937                l_index := l_index+1;
5938           END LOOP;
5939 
5940           l_index := X_Line_Attr_Ext_Tbl.count+1;
5941 
5942           FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
5943                x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
5944                l_index := l_index+1;
5945           END LOOP;
5946 
5947           l_index := X_LN_Price_Attributes_Tbl.count+1;
5948 
5949           FOR j IN 1.. l_Price_Attr_tbl.count LOOP
5950                x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
5951                l_index := l_index+1;
5952           END LOOP;
5953 
5954           l_index := X_Price_Adjustment_tbl.count+1;
5955 
5956           FOR j IN 1.. l_Price_Adj_tbl.count LOOP
5957                x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
5958                l_index := l_index+1;
5959           END LOOP;
5960 
5961           l_index := X_LN_payment_Tbl.count+1;
5962 
5963           FOR j IN 1.. l_payment_tbl.count LOOP
5964                x_ln_payment_tbl(l_index) := l_payment_tbl(j);
5965                l_index := l_index+1;
5966           END LOOP;
5967 
5968           l_index := X_LN_shipment_Tbl.count+1;
5969 
5970           FOR j IN 1.. l_ln_shipment_tbl.count LOOP
5971                x_ln_shipment_tbl(l_index) := l_ln_shipment_tbl(j);
5972                l_index := l_index+1;
5973           END LOOP;
5974 
5975           l_index := X_LN_freight_charge_Tbl.count+1;
5976           FOR j IN 1.. l_freight_charge_tbl.count LOOP
5977                x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
5978                l_index := l_index+1;
5979           END LOOP;
5980 
5981           l_index := X_LN_tax_detail_Tbl.count+1;
5982           FOR j IN 1.. l_tax_detail_tbl.count LOOP
5983                x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
5984                l_index := l_index+1;
5985           END LOOP;
5986 
5987           l_index := X_ln_sales_Credit_Tbl.count+1;
5988 
5989 		FOR j IN 1.. l_sales_Credit_tbl.count LOOP
5990                x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
5991                l_index := l_index+1;
5992           END LOOP;
5993 
5994           l_index := X_ln_quote_party_Tbl.count+1;
5995 
5996           FOR j IN 1.. l_quote_party_tbl.count LOOP
5997                x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
5998                l_index := l_index+1;
5999           END LOOP;
6000 
6001 	     FOR j IN 1..l_prc_index_link.count LOOP
6002 	          l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id := l_price_adj_tbl(j).price_adjustment_id;
6003 	     END LOOP;
6004 
6005           IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6006 
6007                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6008                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6009                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
6010                    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
6011                    FND_MSG_PUB.ADD;
6012                END IF;
6013                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6014 
6015           ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6016                x_return_status := FND_API.G_RET_STS_ERROR;
6017           END IF;
6018 
6019       END LOOP;
6020 
6021       -- create price adj relationships.
6022       FOR i IN 1..p_price_adj_rltship_tbl.count LOOP
6023 
6024            l_price_adj_rltship_rec := p_price_adj_rltship_tbl(i);
6025            l_index := p_price_adj_rltship_tbl(i).qte_line_index;
6026            l_price_adj_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
6027            l_index := p_price_adj_rltship_tbl(i).price_adj_index;
6028            l_price_adj_rltship_rec.price_adjustment_id := l_price_adjustment_tbl(l_index).price_adjustment_id;
6029            l_index := p_price_adj_rltship_tbl(i).rltd_price_adj_index;
6030            l_price_adj_rltship_rec.rltd_price_adj_id := l_price_adjustment_tbl(l_index).price_adjustment_id;
6031 
6032            ASO_PRICE_RLTSHIPS_PKG.Insert_Row(
6033                         px_ADJ_RELATIONSHIP_ID   => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
6034                         p_creation_date          => sysdate,
6035                         p_CREATED_BY             => G_USER_ID,
6036                         p_LAST_UPDATE_DATE       => sysdate,
6037                         p_LAST_UPDATED_BY        => G_USER_ID,
6038                         p_LAST_UPDATE_LOGIN      => G_USER_ID,
6039                         p_PROGRAM_APPLICATION_ID => l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
6040                         p_PROGRAM_ID             => l_price_adj_rltship_rec.PROGRAM_ID,
6041                         p_PROGRAM_UPDATE_DATE    => l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
6042                         p_REQUEST_ID             => l_price_adj_rltship_rec.REQUEST_ID,
6043                         p_QUOTE_LINE_ID          => l_price_adj_rltship_rec.quote_line_id,
6044                         p_PRICE_ADJUSTMENT_ID    => l_price_adj_rltship_rec.price_adjustment_id,
6045                         p_RLTD_PRICE_ADJ_ID      => l_price_adj_rltship_rec.rltd_price_adj_id,
6046                         p_QUOTE_SHIPMENT_ID      => l_price_adj_rltship_rec.quote_shipment_id,
6047                         p_OBJECT_VERSION_NUMBER  => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER );
6048 
6049            X_Price_Adj_Rltship_Tbl(i) := l_price_adj_rltship_rec;
6050 
6051       END LOOP;
6052  --bug8235510 starts here
6053 for i in 1 ..x_qte_line_dtl_tbl.count
6054 loop
6055 aso_debug_pub.add('x_qte_line_dtl_tbl.quot_line_id' || x_qte_line_dtl_tbl(i).quote_line_id);
6056 aso_debug_pub.add('x_qte_line_dtl_tbl.quot_line_detail_id' || x_qte_line_dtl_tbl(i).quote_line_detail_id);
6057 aso_debug_pub.add('x_qte_line_dtl_tbl.ref_line_id' || x_qte_line_dtl_tbl(i).ref_line_id);
6058 end loop;
6059 --vidya
6060 FOR i in 1..x_qte_line_tbl.count LOOP
6061 l_line_rltship_rec := ASO_QUOTE_PUB.G_Miss_Line_Rltship_Rec;
6062 x_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(x_qte_line_tbl(i).quote_line_id);
6063 IF x_qte_line_dtl_tbl.count > 0 THEN
6064 IF x_qte_line_dtl_tbl(1).ref_line_id IS NOT NULL AND x_qte_line_dtl_tbl(1).ref_line_id <> FND_API.G_MISS_NUM THEN
6065                 		l_line_rltship_rec.OPERATION_CODE         := 'CREATE';
6066                 		l_line_rltship_rec.QUOTE_LINE_ID          := x_qte_line_dtl_tbl(1).ref_line_id;
6067                 		l_line_rltship_rec.RELATED_QUOTE_LINE_ID  := x_qte_line_dtl_tbl(1).quote_line_id;
6068                 		l_line_rltship_rec.RELATIONSHIP_TYPE_CODE := 'CONFIG';
6069 
6070 ASO_LINE_RLTSHIP_PVT.Create_Line_Rltship(
6071                     P_Api_Version_Number   => 1.0,
6072                     P_Init_Msg_List        => FND_API.G_FALSE,
6073                     P_Commit               => FND_API.G_FALSE,
6074                     P_Validation_Level     => p_validation_level,
6075                     P_Line_Rltship_Rec     => l_line_rltship_rec,
6076                     X_LINE_RELATIONSHIP_ID => lx_line_relationship_id,
6077                     X_Return_Status        => x_return_status,
6078                     X_Msg_Count            => x_msg_count,
6079                     X_Msg_Data             => x_msg_data
6080                 );
6081 end if;
6082 end if;
6083 end loop;
6084 --ends bug8235510 starts here
6085       -- create line relationships
6086       FOR i IN 1..p_line_rltship_tbl.count LOOP
6087 
6088 	      l_line_rltship_rec := p_line_rltship_tbl(i);
6089 	      l_index := l_line_rltship_rec.qte_line_index;
6090 
6091 	      IF l_index IS NOT NULL AND l_index >=1 AND l_index <= x_qte_line_tbl.count THEN
6092 	          l_line_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
6093 	      END IF;
6094 
6095            l_index := l_line_rltship_rec.related_qte_line_index;
6096 
6097            IF l_index IS NOT NULL AND l_index >=1 AND l_index <= x_qte_line_tbl.count THEN
6098                l_line_rltship_rec.related_quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
6099            END IF;
6100 
6101            ASO_LINE_RELATIONSHIPS_PKG.Insert_Row(
6102                         px_LINE_RELATIONSHIP_ID   => l_line_rltship_rec.LINE_RELATIONSHIP_ID,
6103                         p_CREATION_DATE           => SYSDATE,
6104                         p_CREATED_BY              => G_USER_ID,
6105                         p_LAST_UPDATED_BY         => G_USER_ID,
6106                         p_LAST_UPDATE_DATE        => SYSDATE,
6107                         p_LAST_UPDATE_LOGIN       => G_LOGIN_ID,
6108                         p_REQUEST_ID              => l_line_rltship_rec.REQUEST_ID,
6109                         p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
6110                         p_PROGRAM_ID              => l_line_rltship_rec.PROGRAM_ID,
6111                         p_PROGRAM_UPDATE_DATE     => l_line_rltship_rec.PROGRAM_UPDATE_DATE,
6112                         p_QUOTE_LINE_ID           => l_line_rltship_rec.quote_line_id,
6113                         p_RELATED_QUOTE_LINE_ID   => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
6114                         p_RECIPROCAL_FLAG         => l_line_rltship_rec.RECIPROCAL_FLAG,
6115                         P_RELATIONSHIP_TYPE_CODE  => l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
6116                         p_OBJECT_VERSION_NUMBER   => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER);
6117 
6118 	      X_line_Rltship_Tbl(i) := l_line_rltship_rec;
6119 
6120            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6121 	          aso_debug_pub.add('Create_Quote: l_line_rltship_rec.quote_line_id:         '||l_line_rltship_rec.quote_line_id);
6122                aso_debug_pub.add('Create_Quote: l_line_rltship_rec.related_quote_line_id: '||l_line_rltship_rec.related_quote_line_id);
6123            END IF;
6124 
6125            if l_line_rltship_rec.relationship_type_code = 'CONFIG' then
6126 
6127                update aso_quote_line_details
6128                set ref_type_code          =  'CONFIG',
6129                    ref_line_id            =  l_line_rltship_rec.quote_line_id,
6130                    last_update_date       =  sysdate,
6131                    last_updated_by        =  fnd_global.user_id,
6132                    last_update_login      =  fnd_global.conc_login_id
6133                where quote_line_id = l_line_rltship_rec.related_quote_line_id;
6134 
6135            end if;
6136 
6137       END LOOP;
6138 
6139       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6140           aso_debug_pub.add('Create_Quote: x_qte_header_rec.quote_header_id: '|| x_qte_header_rec.quote_header_id);
6141       END IF;
6142 
6143       update aso_quote_line_details
6144       set ref_type_code     = 'CONFIG',
6145           last_update_date  = sysdate,
6146           last_updated_by   = fnd_global.user_id,
6147           last_update_login = fnd_global.conc_login_id
6148       where config_header_id is not null
6149       and config_revision_num is not null
6150       and ref_type_code is null
6151       and quote_line_id in (select quote_line_id from aso_quote_lines_all
6152                             where item_type_code = 'MDL'
6153                             and quote_header_id  = x_qte_header_rec.quote_header_id);
6154 
6155 
6156       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6157 	     aso_debug_pub.add('Create_Quote - before header pricing ', 1, 'Y');
6158 	 END IF;
6159 
6160       IF l_control_rec.header_pricing_event IS NOT NULL AND l_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR THEN
6161 
6162           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6163 	         aso_debug_pub.add('Create_Quote - inside header pricing ', 1, 'N');
6164 	     END IF;
6165 
6166 	     l_pricing_control_rec.request_type  := p_control_rec.pricing_request_type;
6167 	     l_pricing_control_rec.pricing_event := p_control_rec.header_pricing_event;
6168 	     l_pricing_control_rec.price_mode    := p_control_rec.price_mode;
6169 
6170           --New Code for to call overload pricing_order
6171 
6172           lv_qte_header_rec    := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6173           lv_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(x_qte_header_rec.quote_header_id,null);
6174           lv_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(x_qte_header_rec.quote_header_id,null);
6175 
6176           if lv_hd_shipment_tbl.count = 1 then
6177               lv_hd_shipment_rec := lv_hd_shipment_tbl(1);
6178           end if;
6179 
6180           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6181               aso_debug_pub.add('Create_Quote: Before call to ASO_PRICING_INT.Pricing_Order');
6182               aso_debug_pub.add('Create_Quote: x_qte_line_tbl.count: ' || x_qte_line_tbl.count);
6183           END IF;
6184 
6185           ASO_PRICING_INT.Pricing_Order(
6186                     P_Api_Version_Number     => 1.0,
6187                     P_Init_Msg_List          => fnd_api.g_false,
6188                     P_Commit                 => fnd_api.g_false,
6189                     p_control_rec            => l_pricing_control_rec,
6190                     p_qte_header_rec         => lv_qte_header_rec,
6191                     p_hd_shipment_rec        => lv_hd_shipment_rec,
6192                     p_hd_price_attr_tbl      => lv_hd_price_attr_tbl,
6193                     p_qte_line_tbl           => x_qte_line_tbl,
6194                     --p_line_rltship_tbl     => l_line_rltship_tbl,
6195                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
6196                     --p_ln_shipment_tbl      => ln_shipment_tbl,
6197                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
6198                     x_qte_header_rec         => lx_qte_header_rec,
6199                     x_qte_line_tbl           => lx_qte_line_tbl,
6200                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
6201                     x_price_adj_tbl          => l_price_adj_tbl_out,
6202                     x_price_adj_attr_tbl     => l_Price_Adj_Attr_Tbl_out,
6203                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
6204                     x_return_status          => l_return_status,
6205                     x_msg_count              => x_msg_count,
6206                     x_msg_data               => x_msg_data );
6207 
6208 
6209           x_qte_line_tbl := lx_qte_line_tbl;
6210 
6211           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6212               aso_debug_pub.add('Create_Quote: After call to ASO_PRICING_INT.Pricing_Order');
6213               aso_debug_pub.add('Create_Quote: l_return_status:       ' || l_return_status);
6214               aso_debug_pub.add('Create_Quote: lx_qte_line_tbl.count: ' || lx_qte_line_tbl.count);
6215               aso_debug_pub.add('Create_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
6216           END IF;
6217 
6218 	     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6219 
6220 	          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6221 
6222 	          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6223 		         FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
6224 		         FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER PRICING', TRUE);
6225 		         FND_MSG_PUB.ADD;
6226 	          END IF;
6227 
6228 	          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6229 
6230 	     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
6231 
6232 	          x_return_status := FND_API.G_RET_STS_ERROR;
6233                RAISE   FND_API.G_EXC_ERROR;
6234 	     END IF;
6235 
6236       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
6237 
6238       /*New Pricing Changes to update the date*/
6239 
6240 	 IF p_control_rec.header_pricing_event ='BATCH' AND p_control_rec.price_mode='ENTIRE_QUOTE' THEN
6241 
6242 	 	l_price_updated_date_flag := fnd_api.g_true;
6243 	 END IF;
6244 
6245       /*IF aso_debug_pub.g_debug_flag = 'Y' THEN
6246           aso_debug_pub.add('Create_Quote: Before call to ASO_TAX_INT.Calculate_Tax', 1, 'Y');
6247           aso_debug_pub.add('Create_Quote: p_control_rec.calculate_tax_flag: ' || p_control_rec.calculate_tax_flag);
6248       END IF;*/
6249 
6250        --Changed the call to tax API as a part of etax By Anoop Rajan on 9 August 2005
6251 
6252       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6253           aso_debug_pub.add('Create_Quote: Before call to ASO_TAX_INT.CALCULATE_TAX_WITH_GTT', 1, 'Y');
6254           aso_debug_pub.add('Create_Quote: p_control_rec.calculate_tax_flag: ' || p_control_rec.calculate_tax_flag);
6255       END IF;
6256 
6257       IF p_control_rec.calculate_tax_flag = 'Y' THEN
6258 
6259          /* l_tax_control_rec.tax_level := 'SHIPPING';
6260           l_tax_control_rec.update_DB := 'Y';*/
6261 	  --Commented the above 2 lines by Anoop on 15th August
6262 	  --Added the IF Condition below to facilitate TAX changes .
6263 	  if lx_qte_line_tbl.count > 0 then
6264 		ASO_TAX_INT.CALCULATE_TAX_WITH_GTT(p_API_VERSION_NUMBER => 1.0,
6265 					     p_qte_header_id => x_qte_header_rec.quote_header_id,
6266 					     x_return_status => x_return_status,
6267 					     X_Msg_Count =>  x_msg_count,
6268 					     X_Msg_Data =>  x_msg_data      );
6269 
6270 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6271 			aso_debug_pub.add('Create_Quote: After call to ASO_TAX_INT.CALCULATE_TAX_WITH_GTT: x_return_status: '|| x_return_status, 1, 'Y');
6272 		END IF;
6273 	  ELSE
6274 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6275 			aso_debug_pub.add('Create_Quote: NO LINE RECORDS.SO TAX NOT CALCULATED : x_return_status: '|| x_return_status, 1, 'Y');
6276 		END IF;
6277 	  END IF;
6278 
6279           /*ASO_TAX_INT.Calculate_Tax( P_Api_Version_Number => 1.0,
6280                                      p_quote_header_id    => x_qte_header_rec.quote_header_id,
6281                                      P_Tax_Control_Rec    => l_tax_control_rec,
6282                                      x_tax_amount	        => x_tax_amount    ,
6283                                      x_tax_detail_tbl     => l_tax_detail_tbl,
6284                                      X_Return_Status      => x_return_status ,
6285                                      X_Msg_Count          => x_msg_count     ,
6286                                      X_Msg_Data           => x_msg_data      );
6287 
6288           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6289               aso_debug_pub.add('Create_Quote: After call to ASO_TAX_INT.Calculate_Tax: x_return_status: '|| x_return_status, 1, 'Y');
6290           END IF;
6291 	    */
6292           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6293 
6294               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6295                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
6296 	             FND_MESSAGE.Set_Token('API', 'Calculate_tax_with_GTT', FALSE);
6297 	             FND_MSG_PUB.ADD;
6298               END IF;
6299 
6300               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6301                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6302               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6303                    RAISE FND_API.G_EXC_ERROR;
6304               END IF;
6305 
6306           END IF;
6307 
6308       END IF;
6309 
6310       /*New Tax Changes to update the date*/
6311 
6312 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6313 
6314 		aso_debug_pub.add('Create_Quote: control record parameter values');
6315 	     aso_debug_pub.add('l_qte_header_rec.pricing_status_indicator: ' || l_qte_header_rec.pricing_status_indicator);
6316 	     aso_debug_pub.add('l_qte_header_rec.tax_status_indicator:     ' || l_qte_header_rec.tax_status_indicator);
6317 	     aso_debug_pub.add('p_control_rec.header_pricing_event:        ' || p_control_rec.header_pricing_event);
6318 	     aso_debug_pub.add('p_control_rec.price_mode:                  ' || p_control_rec.price_mode);
6319 	     aso_debug_pub.add('p_control_rec.calculate_tax_flag:          ' || p_control_rec.calculate_tax_flag);
6320 	     aso_debug_pub.add('l_price_updated_date_flag:                 ' || l_price_updated_date_flag);
6321 
6322 	 END IF;
6323 
6324       IF p_control_rec.calculate_tax_flag = 'Y' THEN
6325 
6326           IF l_price_updated_date_flag = fnd_api.g_true THEN
6327 
6328               update aso_quote_headers_all
6329               set tax_updated_date   = sysdate,
6330                   price_updated_date = sysdate
6331               where quote_header_id = x_qte_header_rec.quote_header_id;
6332 
6333           ELSE
6334 
6335               update aso_quote_headers_all
6336               set tax_updated_date   = sysdate
6337               where quote_header_id = x_qte_header_rec.quote_header_id;
6338 
6339           END IF;
6340 
6341       ELSIF l_price_updated_date_flag = fnd_api.g_true THEN
6342 
6343           update aso_quote_headers_all
6344           set price_updated_date = sysdate
6345           where quote_header_id = x_qte_header_rec.quote_header_id;
6346 
6347       END IF;
6348 
6349 
6350       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
6351       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
6352       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
6353       -- IF calculate_tax_flag = 'N', not summation on line level tax,
6354       -- just take the value of p_qte_header_rec.total_tax as the total_tax
6355       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
6356       -- just take the value of p_qte_header_rec.total_freight_charge
6357       -- (or l_hd_shipment_tbl(1).total_freight_charge???) as the TOTAL_SHIPPING_CHARGE
6358 
6359 
6360       IF p_control_rec.calculate_tax_flag = 'N' AND
6361           p_qte_header_rec.total_tax IS NOT NULL THEN
6362           l_calculate_tax := 'N';
6363       END IF;
6364 
6365       IF p_control_rec.calculate_freight_charge_flag = 'N' AND
6366           p_qte_header_rec.total_shipping_charge IS NOT NULL THEN
6367           l_calculate_freight_charge := 'N';
6368       END IF;
6369 
6370 
6371       -- Start of PNPL Changes
6372       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6373 
6374       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
6375 			  		                                            p_org_id =>x_qte_header_rec.org_id);
6376 
6377       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6378           aso_debug_pub.add('Create_Quote - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
6379       END IF;
6380 
6381        IF  ( (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(P_Qte_Header_Rec.quote_type,'X') <> 'T' )
6382             and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
6383               or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
6384 
6385            l_call_ar_api :=  fnd_api.g_true;
6386 
6387            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6388              aso_debug_pub.add('Create_Quote - p_control_rec.header_pricing_event: '||p_control_rec.header_pricing_event, 1, 'Y');
6389              aso_debug_pub.add('Create_Quote - p_control_rec.price_mode          : '||p_control_rec.price_mode, 1, 'Y');
6390              aso_debug_pub.add('Create_Quote - l_qte_line_tbl.count              : '||l_qte_line_tbl.count, 1, 'Y');
6391            END IF;
6392 
6393          -- check if price_mode is change_line, if so then call ar api only if some lines are being created or updated
6394          IF (p_control_rec.header_pricing_event = 'BATCH' and p_control_rec.price_mode = 'CHANGE_LINE') THEN
6395                if (l_qte_line_tbl.count > 0) then
6396                   l_call_ar_api :=  fnd_api.g_false;
6397                   for i in 1..l_qte_line_tbl.count loop
6398                    if (l_qte_line_tbl(i).operation_code = 'CREATE' or l_qte_line_tbl(i).operation_code = 'UPDATE')  then
6399                     l_call_ar_api :=  fnd_api.g_true;
6400                     exit;
6401                    end if;
6402                   end loop;
6403                else
6404                 l_call_ar_api :=  fnd_api.g_false;
6405                end if;
6406          END IF;
6407 
6408            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6409               aso_debug_pub.add('Create_Quote - l_call_ar_api:  '|| l_call_ar_api, 1, 'Y');
6410            END IF;
6411 
6412      IF (l_call_ar_api = fnd_api.g_true ) then
6413 
6414        For i in 1..X_Qte_Line_Tbl.count loop
6415 
6416           -- resetting the line term id variable
6417           l_line_term_id := null;
6418           l_line_quote_price := null;
6419           l_quantity := null;
6420 
6421        -- get the line freight charges
6422 	     l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( x_qte_header_rec.quote_header_id,
6423 					                                                      X_Qte_Line_Tbl(i).quote_line_id );
6424 
6425        -- get the line tax
6426           open c_tax_line(x_qte_header_rec.quote_header_id,X_Qte_Line_Tbl(i).quote_line_id);
6427           fetch c_tax_line into l_line_tax;
6428           close c_tax_line;
6429 
6430        -- get the payment term id for the line
6431           open get_line_payment_term(x_qte_header_rec.quote_header_id,X_Qte_Line_Tbl(i).quote_line_id);
6432           fetch get_line_payment_term into l_line_term_id;
6433           close get_line_payment_term;
6434 
6435            -- if line term id is null then get it from header
6436 		 If l_line_term_id is null THEN
6437                open get_hdr_payment_term(x_qte_header_rec.quote_header_id);
6438                fetch get_hdr_payment_term into l_line_term_id;
6439                close get_hdr_payment_term;
6440 		 END IF;
6441 
6442            -- bug 4923355
6443 		 open get_line_qte_price(X_Qte_Line_Tbl(i).quote_line_id);
6444 		 fetch get_line_qte_price into l_line_quote_price,l_quantity;
6445 		 close get_line_qte_price;
6446 
6447            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6448               aso_debug_pub.add('Create_Quote - l_line_quote_price:  '|| l_line_quote_price, 1, 'Y');
6449               aso_debug_pub.add('Create_Quote - l_quantity:          '|| l_quantity, 1, 'Y');
6450            END IF;
6451 
6452            l_line_amount := l_line_quote_price * l_quantity;
6453 
6454            -- l_line_amount := X_Qte_Line_Tbl(i).line_quote_price * X_Qte_Line_Tbl(i).quantity;
6455 
6456       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6457           aso_debug_pub.add('Create_Quote - ********* Input to AR_VIEW_TERM_GRP.pay_now_amounts follows *********** ', 1, 'Y');
6458           aso_debug_pub.add('Create_Quote - X_Qte_Line_Tbl('||i||').quote_line_id: '||X_Qte_Line_Tbl(i).quote_line_id, 1, 'Y');
6459           aso_debug_pub.add('Create_Quote - l_line_amount:              '||l_line_amount, 1, 'Y');
6460           aso_debug_pub.add('Create_Quote - l_line_shipping_charge:     '||l_line_shipping_charge, 1, 'Y');
6461           aso_debug_pub.add('Create_Quote - l_line_tax:                 '||l_line_tax, 1, 'Y');
6462           aso_debug_pub.add('Create_Quote - l_line_term_id:             '||l_line_term_id, 1, 'Y');
6463 	 END IF;
6464 
6465       IF (l_line_term_id is not null and l_line_term_id <> fnd_api.g_miss_num) then
6466 
6467       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6468           aso_debug_pub.add('Create_Quote: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
6469       END IF;
6470 
6471        -- Call the AR API to get the amounts
6472              AR_VIEW_TERM_GRP.pay_now_amounts(
6473                	p_api_version      	       => 1.0,
6474              	     p_init_msg_list    	       => p_init_msg_list,
6475               	     p_validation_level 	       => FND_API.G_VALID_LEVEL_FULL,
6476 		          p_term_id 		       => l_line_term_id,
6477 		          p_currency_code 	       => x_qte_header_rec.currency_code,
6478 		          p_line_amount		       => l_line_amount,
6479 		          p_tax_amount		       => l_line_tax,
6480                     p_freight_amount	       => l_line_shipping_charge,
6481 		          x_pay_now_line_amount      => l_paynow_amount,
6482 		          x_pay_now_tax_amount       => l_paynow_tax,
6483 		          x_pay_now_freight_amount   => l_paynow_charges,
6484 		          x_pay_now_total_amount	  => l_paynow_total,
6485                     X_Return_Status            => x_return_status ,
6486                     X_Msg_Count                => x_msg_count     ,
6487                     X_Msg_Data                 => x_msg_data      );
6488 
6489           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6490               aso_debug_pub.add('Create_Quote: After call to AR_VIEW_TERM_GRP.pay_now_amounts: x_return_status: '|| x_return_status, 1, 'Y');
6491           END IF;
6492 
6493           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6494 
6495               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6496                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
6497                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
6498                   FND_MSG_PUB.ADD;
6499               END IF;
6500 
6501               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6502                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6503               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6504                    RAISE FND_API.G_EXC_ERROR;
6505               END IF;
6506 
6507           END IF;
6508 
6509       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6510           aso_debug_pub.add('Create_Quote - Output from AR_VIEW_TERM_GRP.pay_now_amounts follows:', 1, 'Y');
6511           aso_debug_pub.add('Create_Quote - l_paynow_amount:        '||l_paynow_amount, 1, 'Y');
6512 		aso_debug_pub.add('Create_Quote - l_paynow_charges:       '||l_paynow_charges, 1, 'Y');
6513           aso_debug_pub.add('Create_Quote - l_paynow_tax:           '||l_paynow_tax, 1, 'Y');
6514 	     aso_debug_pub.add('Create_Quote - l_paynow_total:         '||l_paynow_total, 1, 'Y');
6515 	     aso_debug_pub.add('Create_Quote - ********** End PNPL Processing ************'  , 1, 'Y');
6516       END IF;
6517 
6518 
6519           -- Update the corresponding columns in the line table
6520           update aso_quote_lines_all
6521           set line_paynow_charges    = l_paynow_charges,
6522               line_paynow_tax        = l_paynow_tax,
6523               line_paynow_subtotal   = l_paynow_amount,
6524               last_update_date       =  sysdate,
6525               last_updated_by        =  fnd_global.user_id,
6526               last_update_login      =  fnd_global.conc_login_id
6527           where quote_line_id = X_Qte_Line_Tbl(i).quote_line_id;
6528 
6529         end if; -- end if for term id null check
6530 	  end loop;
6531    END IF; -- end if for call ar api flag
6532   END IF;
6533 
6534 	 -- End of PNPL Changes
6535 
6536       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6537           aso_debug_pub.add('Create_Quote - before update_quote_total ', 1, 'Y');
6538       END IF;
6539 
6540 
6541       Update_Quote_Total ( P_Qte_Header_id            => x_Qte_Header_rec.quote_header_id,
6542 			            P_Calculate_Tax            => p_control_rec.calculate_tax_flag,
6543 			            P_calculate_Freight_Charge => p_control_rec.calculate_freight_charge_flag,
6544                            p_control_rec              => p_control_rec,
6545 			            P_Call_Ar_Api_Flag         => l_call_ar_api,
6546 					  X_Return_Status            => x_return_status,
6547 			            X_Msg_Count                => x_msg_count,
6548 			            X_Msg_Data                 => x_msg_data);
6549 
6550       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
6551 
6552       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6553 
6554 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6555 	          FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
6556 	          FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATETOTAL', TRUE);
6557 	          FND_MSG_PUB.ADD;
6558 	      END IF;
6559 
6560 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6561 
6562       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6563 
6564 	      RAISE FND_API.G_EXC_ERROR;
6565 
6566       END IF;
6567 
6568 
6569       IF ( p_qte_header_rec.contract_template_id IS NOT NULL
6570           AND p_qte_header_rec.contract_template_id <> FND_API.G_MISS_NUM)
6571           AND NVL(FND_PROFILE.Value('OKC_ENABLE_SALES_CONTRACTS'),'N') = 'Y' THEN
6572 
6573             IF aso_debug_pub.g_debug_flag = 'Y' THEN
6574 	           aso_debug_pub.add( 'Create_Quote - before instantiating contract terms. ', 1, 'Y');
6575 	           aso_debug_pub.add( 'Create_Quote - template id: ' || p_qte_header_rec.contract_template_id, 1, 'Y');
6576 	           aso_debug_pub.add( 'Create_Quote - target_doc_id: ' || x_Qte_Header_rec.quote_header_id, 1, 'Y');
6577 	           aso_debug_pub.add( 'Create_Quote - p_validation_string: ' || TO_CHAR(x_Qte_Header_rec.LAST_UPDATE_DATE), 1, 'Y');
6578 	       END IF;
6579 
6580             OKC_TERMS_COPY_GRP.Copy_Terms ( P_Api_Version		    => 1.0,
6581                                             P_Template_ID		    => p_qte_header_rec.contract_template_id,
6582       	                                  P_Target_Doc_ID		    => x_Qte_Header_rec.quote_header_id,
6583       	                                  P_Target_Doc_Type	    => 'QUOTE',
6584       	                                  P_Article_Effective_Date => NULL,
6585       	                                  P_Retain_Deliverable	    => 'N',
6586       	                                  p_validation_string      => TO_CHAR(x_Qte_Header_rec.LAST_UPDATE_DATE),
6587                                             X_Return_Status          => X_Return_Status,
6588                                             X_Msg_Count              => X_Msg_Count,
6589                                             X_Msg_Data               => X_Msg_Data );
6590 
6591             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6592 
6593                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6594                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_COPY_TERMS');
6595                     FND_MSG_PUB.ADD;
6596                 END IF;
6597 
6598                 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6599                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6600                 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6601                      RAISE FND_API.G_EXC_ERROR;
6602                 END IF;
6603             END IF;
6604 
6605       END IF;
6606       -- end of hyang new okc
6607 
6608       -- Change START
6609       -- Release 12 TAP Changes
6610       -- Girish Sachdeva 8/30/2005
6611       -- Adding the call to insert record in the ASO_CHANGED_QUOTES
6612       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6613          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');
6614       END IF;
6615 
6616 
6617       -- Call to insert record in ASO_CHANGED_QUOTES
6618       ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(x_qte_header_rec.quote_number);
6619 
6620       -- Change END
6621 
6622 
6623       --
6624       -- End of API body
6625       --
6626 
6627       -- Standard check for p_commit
6628 
6629       IF FND_API.to_Boolean( p_commit ) THEN
6630 	     COMMIT WORK;
6631       END IF;
6632 
6633 
6634 
6635       -- Standard call to get message count and if count is 1, get message info.
6636 
6637       FND_MSG_PUB.Count_And_Get ( p_count  =>  x_msg_count,
6638                                   p_data   =>  x_msg_data );
6639 
6640       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6641 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6642 	     aso_debug_pub.add('End Create_Quote Procedure', 1, 'Y');
6643 	     aso_debug_pub.add('******************************************************', 1, 'Y');
6644 	 END IF;
6645 
6646 
6647       EXCEPTION
6648 
6649 	  WHEN FND_API.G_EXC_ERROR THEN
6650 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6651 		   P_API_NAME        => L_API_NAME
6652 		  ,P_PKG_NAME        => G_PKG_NAME
6653 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
6654 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6655 		  ,P_SQLCODE         => SQLCODE
6656 		  ,P_SQLERRM         => SQLERRM
6657 		  ,X_MSG_COUNT       => X_MSG_COUNT
6658 		  ,X_MSG_DATA        => X_MSG_DATA
6659 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6660 
6661 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6662 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6663 		   P_API_NAME        => L_API_NAME
6664 		  ,P_PKG_NAME        => G_PKG_NAME
6665 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6666 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6667 		  ,P_SQLCODE         => SQLCODE
6668 		  ,P_SQLERRM         => SQLERRM
6669 		  ,X_MSG_COUNT       => X_MSG_COUNT
6670 		  ,X_MSG_DATA        => X_MSG_DATA
6671 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6672 
6673 	  WHEN OTHERS THEN
6674 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6675 		   P_API_NAME        => L_API_NAME
6676 		  ,P_PKG_NAME        => G_PKG_NAME
6677 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
6678 		  ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PVT
6679 		  ,P_SQLCODE         => SQLCODE
6680 		  ,P_SQLERRM         => SQLERRM
6681 		  ,X_MSG_COUNT       => X_MSG_COUNT
6682 		  ,X_MSG_DATA        => X_MSG_DATA
6683 		  ,X_RETURN_STATUS   => X_RETURN_STATUS);
6684 
6685 End Create_quote;
6686 
6687 
6688 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
6689 PROCEDURE Update_quote(
6690     P_Api_Version_Number	      IN   NUMBER,
6691     P_Init_Msg_List		      IN   VARCHAR2	                                := FND_API.G_FALSE,
6692     P_Commit			      IN   VARCHAR2	                                := FND_API.G_FALSE,
6693     p_validation_level		 IN   NUMBER	                                := FND_API.G_VALID_LEVEL_FULL,
6694     P_Control_Rec		      IN   ASO_QUOTE_PUB.Control_Rec_Type           := ASO_QUOTE_PUB.G_Miss_Control_Rec,
6695     P_Qte_Header_Rec		 IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type        := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
6696     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
6697     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
6698     P_hd_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
6699     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
6700     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
6701     P_hd_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
6702     P_hd_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
6703     P_hd_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
6704     P_Qte_Line_Tbl		      IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL,
6705     P_Qte_Line_Dtl_Tbl		 IN   ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL,
6706     P_Line_Attr_Ext_Tbl		 IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
6707     P_line_rltship_tbl		 IN   ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Line_Rltship_Tbl,
6708     P_Price_Adjustment_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl,
6709     P_Price_Adj_Attr_Tbl	      IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
6710     P_Price_Adj_Rltship_Tbl	 IN   ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Price_Adj_Rltship_Tbl,
6711     P_ln_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
6712     P_ln_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
6713     P_ln_Shipment_Tbl		 IN   ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
6714     P_ln_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
6715     P_ln_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
6716     P_ln_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
6717     P_ln_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
6718     P_Qte_Access_Tbl           IN   ASO_QUOTE_PUB.Qte_Access_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_QTE_ACCESS_TBL,
6719     P_Template_Tbl             IN   ASO_QUOTE_PUB.Template_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_TEMPLATE_TBL,
6720     P_Related_Obj_Tbl          IN   ASO_QUOTE_PUB.Related_Obj_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_RELATED_OBJ_TBL,
6721     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
6722     X_Qte_Line_Tbl		      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
6723     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
6724     X_hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
6725     X_hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
6726     X_hd_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
6727     X_hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
6728     X_hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
6729     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
6730     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
6731     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
6732     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type,
6733     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
6734     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
6735     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
6736     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
6737     X_ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
6738     X_ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
6739     X_ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
6740     X_ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type,
6741     X_ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
6742     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
6743     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
6744     X_Qte_Access_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Access_Tbl_Type,
6745     X_Template_Tbl             OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Template_Tbl_Type,
6746     X_Related_Obj_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Related_Obj_Tbl_Type,
6747     X_Return_Status		      OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
6748     X_Msg_Count 		      OUT NOCOPY /* file.sql.39 change */  NUMBER,
6749     X_Msg_Data			      OUT NOCOPY /* file.sql.39 change */  VARCHAR2
6750     )
6751 IS
6752 lx_line_relationship_id number;
6753     --ovn
6754     Cursor C_Get_quote(c_QUOTE_HEADER_ID Number) IS
6755     Select LAST_UPDATE_DATE, QUOTE_STATUS_ID, quote_number, party_id, cust_account_id,
6756            order_type_id, order_id, object_version_number, currency_code, price_list_id
6757     From  ASO_QUOTE_HEADERS_ALL
6758     Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
6759 
6760     CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
6761     SELECT  AUTO_VERSION_FLAG
6762     FROM    ASO_QUOTE_STATUSES_B
6763     WHERE   quote_status_id = c_qte_status_id;
6764 
6765     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
6766     SELECT max(quote_version)
6767     FROM ASO_QUOTE_HEADERS_ALL
6768     WHERE quote_number = X_qte_number;
6769 
6770     CURSOR c_payment_rec IS
6771     SELECT payment_id, payment_option FROM ASO_PAYMENTS
6772     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6773     AND quote_line_id IS NULL;
6774 
6775     CURSOR c_shipment_rec IS
6776     SELECT shipment_id FROM ASO_SHIPMENTS
6777     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6778     AND quote_line_id IS NULL;
6779 
6780     CURSOR c_tax_rec IS
6781     SELECT tax_detail_id FROM ASO_TAX_DETAILS
6782     WHERE quote_header_id = P_Qte_Header_Rec.quote_header_id
6783     AND quote_line_id IS NULL
6784     AND ORIG_TAX_CODE IS NOT NULL;
6785 
6786     CURSOR c_qte_line(l_d_qte_line NUMBER) IS
6787     SELECT quote_line_id  FROM ASO_QUOTE_LINES_ALL
6788     where quote_line_id= l_d_qte_line;
6789 
6790     --ovn
6791     cursor c_last_update_date( p_qte_hdr_id  number) is
6792     select last_update_date
6793     from aso_quote_headers_all
6794     where quote_header_id = p_qte_hdr_id;
6795 
6796     cursor c_quote_lines( p_qte_hdr_id  number) is
6797     select quote_line_id,order_line_type_id,line_category_code,price_list_id,line_quote_price,quantity
6798     from aso_quote_lines_all
6799     where quote_header_id = p_qte_hdr_id;
6800 
6801     cursor c_related_obj_id (p_qte_hdr_id number) is
6802     select related_object_id,last_update_date
6803     from aso_quote_related_objects
6804     where quote_object_id = p_qte_hdr_id
6805     and quote_object_type_code = 'HEADER'
6806     and relationship_type_code = 'OPP_QUOTE';
6807 
6808     Cursor c_obj_id(p_qte_header_id Number) IS
6809     Select object_id
6810     from aso_quote_related_objects
6811     where quote_object_id = p_qte_header_id
6812     and quote_object_type_code = 'HEADER'
6813     and relationship_type_code = 'OPP_QUOTE';
6814 
6815     G_LOGIN_ID	                 NUMBER                := FND_GLOBAL.CONC_LOGIN_ID;
6816     G_USER_ID	                 NUMBER                := FND_GLOBAL.USER_ID;
6817     payment_rec	            c_payment_rec%rowtype;
6818     l_payment_db_tbl		  varchar_tbl_type;
6819     shipment_rec	            c_shipment_rec%ROWTYPE;
6820     l_shipment_db_tbl		  VARCHAR_TBL_TYPE;
6821     l_qln_id                    NUMBER;
6822     l_tax_db_tbl                VARCHAR_TBL_TYPE;
6823     l_qte_status_id             NUMBER;
6824     l_qte_number                NUMBER;
6825     l_last_update_date          DATE;
6826 
6827     --ovn
6828     l_object_version_number     NUMBER;
6829     l_update_allowed		  VARCHAR2(1);
6830     l_party_id			       NUMBER;
6831     l_cust_account_id		  NUMBER;
6832     l_auto_version		       VARCHAR2(1);
6833     l_api_name			       CONSTANT VARCHAR2(30) := 'Update_quote';
6834     l_api_version_number	       CONSTANT NUMBER       := 1.0;
6835     l_return_status		       VARCHAR2(1);
6836     l_found			       VARCHAR2(1);
6837     l_calculate_freight_charge  VARCHAR2(1) := 'Y';
6838     l_calculate_tax		       VARCHAR2(1) := 'Y';
6839     x_tax_amount                NUMBER;
6840 
6841     l_qte_header_id		       NUMBER;
6842     l_qte_line_id		       NUMBER;
6843     l_index			       NUMBER;
6844     l_index_2			       NUMBER;
6845     x_status 				  VARCHAR2(1);
6846     l_order_type_id             NUMBER;
6847     l_qte_line_rec              ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6848     l_qte_line_rec_out          ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6849    -- l_qte_header_rec		  ASO_QUOTE_PUB.Qte_Header_Rec_Type          := p_qte_header_rec;
6850     l_qte_header_rec		  ASO_QUOTE_PUB.Qte_Header_Rec_Type; -- Code change for Quoting Usability Sun ER
6851     l_old_header_rec		  ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6852     l_qte_line_dtl_tbl		  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
6853     l_qte_line_dtl_tbl_out	  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
6854     l_Line_Attr_Ext_Tbl		  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
6855     l_Line_Attr_Ext_Tbl_out	  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
6856     l_shipment_tbl		       ASO_QUOTE_PUB.Shipment_Tbl_Type;
6857     l_shipment_tbl_out		  ASO_QUOTE_PUB.Shipment_Tbl_Type;
6858     l_payment_tbl               ASO_QUOTE_PUB.Payment_Tbl_Type;
6859     l_payment_tbl_out           ASO_QUOTE_PUB.Payment_Tbl_Type;
6860     l_freight_charge_tbl        ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
6861     l_freight_charge_tbl_out	  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
6862     l_tax_detail_tbl		  ASO_QUOTE_PUB.Tax_Detail_tbl_Type;
6863     l_tax_detail_tbl_out		  ASO_QUOTE_PUB.Tax_Detail_tbl_Type;
6864     l_Price_Attr_Tbl		  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6865     l_Price_Attr_Tbl_out		  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6866     l_Price_Adj_Tbl             ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
6867     l_Price_Adj_Tbl_out		  ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
6868     l_Price_Adj_Attr_Tbl	       ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
6869     l_Price_Adj_Attr_Tbl_out	  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
6870     l_pricing_control_rec	  ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
6871     l_Price_Adjustment_Tbl	  ASO_QUOTE_PUB.Price_Adj_Tbl_Type           := p_Price_Adjustment_Tbl;
6872     l_line_rltship_rec		  ASO_QUOTE_PUB.Line_Rltship_Rec_Type;
6873     l_price_adj_rltship_rec	  ASO_QUOTE_PUB.Price_Adj_Rltship_Rec_Type;
6874     l_Tax_Control_Rec           ASO_TAX_INT.Tax_Control_Rec_Type;
6875     l_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
6876     l_hd_shipment_tbl           ASO_QUOTE_PUB.Shipment_Tbl_Type;
6877     l_shp_index_link		  Index_Link_Tbl_Type;
6878     l_prc_index_link		  Index_Link_Tbl_Type;
6879     l_prc_index_link_rev	       Index_Link_Tbl_Type;
6880     l_quote_party_tbl           ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
6881     l_quote_party_tbl_out       ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
6882     l_sales_credit_tbl          ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
6883     l_sales_credit_tbl_out      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
6884     l_control_rec               ASO_QUOTE_PUB.Control_Rec_Type             := p_control_rec;
6885     l_control_rec_bv            ASO_QUOTE_PUB.Control_Rec_Type             := p_control_rec;
6886     l_qte_access_rec            ASO_SECURITY_INT.Qte_Access_Rec_Type       := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_REC;
6887     l_qte_access_tbl            ASO_SECURITY_INT.Qte_Access_Tbl_Type       := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_TBL;
6888     l_qte_access_tbl_out        ASO_SECURITY_INT.Qte_Access_Tbl_Type;
6889     l_ln_rec                    ASO_QUOTE_PUB.Qte_Line_Rec_Type            := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
6890 
6891 
6892     -- Begin Variable declaration for Batch Validation 05/24/2002
6893 
6894     l_batch_qte_line_rec        aso_quote_pub.qte_line_rec_type     := aso_quote_pub.g_miss_qte_line_rec;
6895     l_p_batch_qte_line_tbl      aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6896     l_send_qte_line_tbl         aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6897     l_send_qte_line_dtl_tbl     aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6898     l_batch_qte_line_dtl_tbl    aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6899     l_search_qte_line_tbl       aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6900     l_delete_qte_line_tbl       aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6901     l_p_batch_qte_line_dtl_tbl  aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
6902     l_model_qte_line_tbl        aso_quote_pub.qte_line_tbl_type;
6903     l_model_qte_line_dtl_tbl    aso_quote_pub.qte_line_dtl_tbl_type;
6904 
6905     l_batch_index     number       :=  0;  --should not be initialized inside line loop code
6906     l_model_index     number       :=  0;  --should not be initialized inside line loop code
6907     l_add_line        varchar2(1)  :=  fnd_api.g_false;
6908     l_add_model_line  varchar2(1)  :=  fnd_api.g_false;
6909     l_send_index      NUMBER       :=  0;
6910     l_model_line_id   NUMBER;
6911     l_lines	      NUMBER:=0;
6912     l_complete_configuration_flag  VARCHAR2(1);
6913     l_valid_configuration_flag     VARCHAR2(1);
6914     l_qte_lines_tbl_count Number;
6915     l_config_header_id number;
6916     l_config_revision_num number;
6917     l_new_config_hdr_id number;
6918 
6919     cursor c_model_line (p_config_header_id NUMBER, p_config_revision_num NUMBER)is
6920     select quote_line_id from aso_quote_line_details
6921     where config_header_id = p_config_header_id
6922     and   config_revision_num = p_config_revision_num
6923     and   ref_type_code = 'CONFIG'
6924     and   ref_line_id is NULL;
6925 
6926     CURSOR c_config_exist_in_cz (p_config_hdr_id number, p_config_rev_nbr number) IS
6927     select config_hdr_id
6928     from cz_config_details_v
6929     where config_hdr_id = p_config_hdr_id
6930     and config_rev_nbr = p_config_rev_nbr;
6931 
6932     l_deactivate_qte_header_rec aso_quote_pub.qte_header_rec_type;
6933     l_deactivate_quote_line_tbl aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
6934     l_deactivate_instance_tbl aso_quote_headers_pvt.Instance_Tbl_Type := aso_quote_headers_pvt.G_MISS_Instance_Tbl;
6935     l_deactivate_counter number := 0;
6936 
6937     -- End Variable declaration for Batch Validation 05/24/2002
6938 
6939     l_order_id number;
6940     l_shipment_rec           ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
6941 
6942     l_copy_quote_control_rec  aso_copy_quote_pub.copy_quote_control_rec_type;
6943     l_copy_quote_header_rec   aso_copy_quote_pub.copy_quote_header_rec_type;
6944     l_quote_number            number;
6945 
6946     l_price_updated_date_flag  VARCHAR2(1) := fnd_api.g_false;
6947 
6948     --New Code for to call overload pricing_order
6949     lv_qte_header_rec               ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6950     lx_qte_header_rec               ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6951     lx_qte_line_tbl                 ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
6952     lv_hd_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
6953     lv_hd_shipment_tbl              ASO_QUOTE_PUB.Shipment_Tbl_Type;
6954     lv_hd_price_attr_tbl            ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
6955     lx_price_adj_rltship_tbl        ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
6956 
6957     CURSOR C_Check_Store_Status (l_old_stat NUMBER, l_new_stat NUMBER) IS
6958     SELECT 'Y'
6959     FROM ASO_QUOTE_STATUSES_B A, ASO_QUOTE_STATUSES_B B
6960     WHERE A.Quote_Status_Id = l_old_stat
6961     AND A.Status_Code = 'STORE DRAFT'
6962     AND B.Quote_Status_Id = l_new_stat
6963     AND B.Status_Code = 'DRAFT';
6964 
6965     CURSOR C_Get_Quota_Credit_Type IS
6966     SELECT Sales_Credit_Type_Id
6967     FROM OE_SALES_CREDIT_TYPES
6968     WHERE Quota_Flag = 'Y';
6969 
6970     CURSOR C_Get_SCredit_Exists(l_qte_hdr_id NUMBER) IS
6971     SELECT 'Y'
6972     FROM ASO_SALES_CREDITS
6973     WHERE quote_header_id = l_qte_hdr_id;
6974 
6975     CURSOR c_tax_line(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
6976     select nvl(sum(nvl(tax_amount, 0)),0) tax_amount
6977     FROM   ASO_TAX_DETAILS
6978     WHERE  quote_header_id              =   p_qte_header_id
6979     and    quote_line_id                =   p_quote_line_id;
6980 
6981     Cursor get_line_payment_term(p_qte_header_id NUMBER, p_quote_line_id  NUMBER) IS
6982     SELECT payment_term_id
6983     FROM aso_payments
6984     WHERE  quote_header_id              =   p_qte_header_id
6985     and    quote_line_id                =   p_quote_line_id;
6986 
6987     Cursor get_hdr_payment_term(p_qte_header_id NUMBER) IS
6988     SELECT payment_term_id
6989     FROM aso_payments
6990     WHERE  quote_header_id              =   p_qte_header_id
6991     and    quote_line_id                IS NULL;
6992 
6993     CURSOR C_Get_Hdr_Resource_Id(lc_qte_header_id NUMBER) IS
6994     SELECT resource_id
6995     FROM Aso_Quote_Headers_All
6996     WHERE quote_header_id = lc_qte_header_id;
6997 
6998     CURSOR  c_inv_org_id(l_main_org_id Number) IS
6999     SELECT  master_organization_id
7000     FROM    oe_system_parameters
7001     WHERE   org_id = l_main_org_id;
7002 
7003     CURSOR  c_org_id(p_qte_header_id Number) IS
7004     SELECT  org_id
7005     FROM    aso_quote_headers_all
7006     WHERE   quote_header_id = p_qte_header_id;
7007 
7008     l_master_organization_id        NUMBER;
7009     l_quote_org_id                  NUMBER;
7010     l_scredit_exists                VARCHAR2(1)  := 'N';
7011     l_quota_id                      NUMBER;
7012     l_store_trans                   VARCHAR2(1)  := 'N';
7013     l_sales_team_prof               VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
7014 
7015     -- hyang defaulting framework
7016     l_def_control_rec               ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
7017     l_db_object_name                VARCHAR2(30);
7018     l_hd_shipment_rec               ASO_QUOTE_PUB.Shipment_Rec_Type         := ASO_QUOTE_PUB.G_MISS_Shipment_REC;
7019     l_hd_payment_rec                ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
7020     l_hd_tax_detail_rec             ASO_QUOTE_PUB.Tax_Detail_Rec_Type       := ASO_QUOTE_PUB.G_MISS_Tax_Detail_REC;
7021     l_hd_misc_rec                   ASO_DEFAULTING_INT.Header_Misc_Rec_Type := ASO_DEFAULTING_INT.G_MISS_HEADER_MISC_REC;
7022     lx_hd_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
7023     lx_hd_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
7024     lx_hd_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
7025     lx_hd_misc_rec                  ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
7026     lx_quote_line_rec               ASO_QUOTE_PUB.Qte_Line_Rec_Type;
7027     lx_ln_misc_rec                  ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
7028     lx_ln_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
7029     lx_ln_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
7030     lx_ln_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
7031     lx_changed_flag                 VARCHAR2(1);
7032     l_hd_payment_tbl	           ASO_QUOTE_PUB.Payment_Tbl_Type;
7033     l_hd_tax_detail_tbl	           ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
7034 
7035     --Template changes
7036     l_template_tbl                  aso_quote_tmpl_int.list_template_tbl_type;
7037     l_qte_line_tbl                  aso_quote_pub.qte_line_tbl_type         := p_qte_line_tbl;
7038     lx_qte_line_dtl_tbl             ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type     := p_qte_line_dtl_tbl;
7039     l_count                         number;
7040     l_currency_code                 varchar2(15);
7041     l_price_list_id                 number;
7042     l_related_obj_rec               ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
7043     l_related_obj_id                number;
7044     x_related_obj_rec               ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
7045     l_obj_id                        number;
7046 
7047     l_installment_option     VARCHAR2(240);
7048     l_line_shipping_charge   NUMBER;
7049     l_line_tax               NUMBER;
7050     l_line_term_id           NUMBER := null;
7051     l_line_amount            NUMBER;
7052     l_paynow_amount          NUMBER;
7053     l_paynow_tax             NUMBER;
7054     l_paynow_charges         NUMBER;
7055     l_paynow_total           NUMBER;
7056     l_call_ar_api            varchar2(1);
7057 
7058   /*** Start: BugNo 8647883: R12.1.2 Service reference SUN ER ***/
7059 
7060   l_check_service_rec ASO_SERVICE_CONTRACTS_INT.CHECK_SERVICE_REC_TYPE;
7061 
7062   CURSOR C_get_cust( p_qte_hdr_id  number) IS
7063             SELECT END_CUSTOMER_CUST_ACCOUNT_ID,cust_account_id
7064   	     FROM aso_quote_headers_all
7065 	     WHERE quote_header_id= p_qte_hdr_id;
7066 
7067    CURSOR c_serv( p_qte_hdr_id  number) IS
7068       SELECT a1.quote_line_id,
7069 	SERVICE_REF_LINE_ID   ,
7070 	service_ref_type_code ,
7071 	a2.inventory_item_id
7072    FROM aso_quote_line_details a1,
7073 	aso_quote_lines_all a2
7074   WHERE a2.quote_header_id = p_qte_hdr_id
7075 	AND a1.quote_line_id       = a2.quote_line_id
7076 	AND SERVICE_REF_TYPE_CODE IN ('CUSTOMER_PRODUCT','PRODUCT_CATALOG');
7077 
7078 
7079   l_inventory_item_id NUMBER ;
7080   ls_count            NUMBER;
7081   ls_service_inventory_item_id NUMBER ;
7082   ls_cust_account_id   NUMBER;
7083   ls_end_cust_account_id   NUMBER;
7084   -- For IB
7085   ls_ib_cust_account_id_orig NUMBER;
7086   ls_ib_cust_account_id NUMBER;
7087   -- For PC
7088   ls_pc_cust_account_id_orig NUMBER;
7089   ls_pc_cust_account_id NUMBER;
7090   l_Available_YN VARCHAR2(1);
7091 
7092   found       number:=0;
7093   ls_qte_line_tbl         aso_quote_pub.qte_line_tbl_type     := aso_quote_pub.g_miss_qte_line_tbl;
7094 
7095 /*** End: BugNo 8647883: R12.1.2 Service reference SUN ER ***/
7096 
7097   /* Code change for Quoting Usability Sun ER Start */
7098 
7099        CURSOR C_AGREEMENT(P_AGREEMENT_ID IN NUMBER,P_INVOICE_TO_CUSTOMER_ID IN NUMBER) IS
7100        SELECT 'x'
7101        FROM OE_AGREEMENTS_VL
7102        WHERE AGREEMENT_ID = P_AGREEMENT_ID
7103        AND  INVOICE_TO_CUSTOMER_ID = P_INVOICE_TO_CUSTOMER_ID;
7104 
7105        l_var varchar2(1);
7106 
7107        l_appl_param_rec CZ_API_PUB.appl_param_rec_type;
7108        l_return_value Varchar2(1);
7109 
7110        cursor c_service_ref_quote (P_Quote_line_id number) is
7111        select service_ref_line_id
7112        from aso_quote_line_Details
7113        where quote_line_id=  P_Quote_line_id
7114        and service_ref_type_code ='QUOTE';
7115 
7116        l_line_dtl_tbl aso_quote_pub.qte_line_dtl_tbl_type := aso_quote_pub.g_miss_qte_line_dtl_tbl;
7117 
7118   /* Code change for Quoting Usability Sun ER End */
7119 
7120   /* Start : Code change for Bug 9847694 */
7121 
7122   Cursor C_ITEM_TYPE_CODE(P_Quote_line_id Number) Is
7123   select item_type_code
7124   from aso_quote_lines_all
7125   where quote_line_id = P_Quote_line_id;
7126 
7127   l_item_type_code aso_quote_lines_all.item_type_code%Type;
7128 
7129   Cursor C_SERVICE_REF_TYPE_CODE(P_Quote_line_id Number) Is
7130   select service_ref_type_code
7131   from aso_quote_line_details
7132   where quote_line_id = P_Quote_line_id;
7133 
7134   l_service_ref_type_code aso_quote_line_details.service_ref_type_code%Type;
7135 
7136   /* End : Code change for Bug 9847694 */
7137 
7138 -- bug 10261431
7139   l_top_model_line_id  number;
7140   l_ato_line_id                number;
7141 
7142   -- bug 10217258
7143     l_qty                           number;     -- rassharm
7144 
7145     CURSOR c_qte_line_type(l_d_qte_line NUMBER) IS
7146     select item_type_code
7147      from aso_quote_lines_all
7148     where quote_line_id= l_d_qte_line;
7149 
7150    l_item_type_code1  varchar2(30); -- rassharm
7151 
7152    /*** Start : Code change done for Bug 11076978 ***/
7153 
7154    Cursor C_cust_account_id(p_quote_header_id Number) IS
7155    Select cust_account_id
7156    From aso_quote_headers_all
7157    Where quote_header_id = p_quote_header_id;
7158 
7159    CURSOR c_pay_term_acct(p_cust_account_id IN Number) IS
7160    SELECT hcp.standard_terms
7161    FROM   hz_cust_accounts hca,hz_customer_profiles hcp
7162    WHERE  hca.cust_account_id = p_cust_account_id
7163    AND    hcp.cust_account_id = hca.cust_account_id
7164    AND    nvl(hcp.status,'A') = 'A';
7165 
7166    l_cust_account_id_db  NUMBER;
7167 
7168    /*** End : Code change done for Bug 11076978 ***/
7169 
7170    ct_rel    number; -- bug 12608111
7171 
7172    /* Start : Code change done for Bug 13064273 */
7173 
7174       CURSOR C_Agreement_PL(p_agreement_id Number) Is
7175       Select pri.list_header_id, pri.currency_code
7176       from OE_AGREEMENTS_B agr, qp_list_headers_vl pri
7177       where agr.agreement_id = p_agreement_id
7178       and pri.list_header_id = agr.price_list_id
7179       and pri.list_type_code in ('PRL','AGR')
7180       and pri.active_flag = 'Y'
7181       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
7182       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
7183 
7184       CURSOR C_Customer_PL(p_cust_acct_id Number) Is
7185       Select pri.list_header_id , pri.currency_code
7186       from HZ_CUST_ACCOUNTS cust, qp_list_headers_vl pri
7187       where cust.cust_account_id = p_cust_acct_id
7188       and cust.price_list_id = pri.list_header_id
7189       and pri.list_type_code in ('PRL','AGR')
7190       and pri.active_flag = 'Y'
7191       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
7192       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
7193 
7194       CURSOR C_Order_Type_PL(p_order_type_id Number) Is
7195       Select pri.list_header_id, pri.currency_code
7196       from OE_TRANSACTION_TYPES_ALL ord, qp_list_headers_vl pri
7197       where ord.TRANSACTION_TYPE_ID = p_order_type_id
7198       and ord.price_list_id = pri.list_header_id
7199       and pri.list_type_code in ('PRL','AGR')
7200       and pri.active_flag = 'Y'
7201       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
7202       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
7203 
7204       /* End : Code change done for Bug 13064273 */
7205 
7206              /*** Start : Code change done for Bug 13926015  ***/
7207        Cursor C_Expire_Date(P_Quote_header_id number) Is
7208        -- Select to_char(quote_expiration_date,'DD-MON-RRRR') commented for bug 14099184
7209        Select quote_expiration_date
7210        From aso_quote_headers_all
7211        Where Quote_header_id = P_Quote_header_id;
7212 
7213        l_expire_date Date;
7214 
7215        /*** End : Code change done for Bug 13926015  ***/
7216 
7217 BEGIN
7218       -- Standard Start of API savepoint
7219       SAVEPOINT UPDATE_quote_PVT;
7220 
7221       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7222 	     aso_debug_pub.add('******************************************************', 1, 'Y');
7223 	     aso_debug_pub.add('Begin Update_Quote Procedure', 1, 'Y');
7224 	     aso_debug_pub.add('******************************************************', 1, 'Y');
7225 	 END IF;
7226 
7227       -- Standard call to check for call compatibility.
7228       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
7229 			 		                  p_api_version_number,
7230 					                  l_api_name,
7231 					                  G_PKG_NAME) THEN
7232 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7233       END IF;
7234 
7235       -- Initialize message list if p_init_msg_list is set to TRUE.
7236       IF FND_API.to_Boolean( p_init_msg_list ) THEN
7237 	     FND_MSG_PUB.initialize;
7238       END IF;
7239 
7240       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7241 	     aso_debug_pub.add('Update_Quote - Begin ', 1, 'Y');
7242 	 END IF;
7243       --Procedure added by Anoop Rajan on 30/09/2005 to print login details
7244       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7245 		aso_debug_pub.add('Before call to printing login info details', 1, 'Y');
7246 		ASO_UTILITY_PVT.print_login_info;
7247 		aso_debug_pub.add('After call to printing login info details', 1, 'Y');
7248       END IF;
7249 
7250       -- Change Done By Girish
7251       -- Procedure added to validate the operating unit
7252       ASO_VALIDATE_PVT.VALIDATE_OU(P_Qte_Header_Rec);
7253 
7254       -- Initialize API return status to SUCCESS
7255       x_return_status := FND_API.G_RET_STS_SUCCESS;
7256 
7257       -- Api body
7258       l_control_rec.line_pricing_event  := NULL;
7259       l_control_rec.calculate_tax_flag  := NULL;
7260 
7261       -- ******************************************************************
7262       -- Validate Environment
7263       -- ******************************************************************
7264       IF FND_GLOBAL.User_Id IS NULL THEN
7265 
7266 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7267 	         FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
7268 	         FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
7269 	         FND_MSG_PUB.ADD;
7270 	     END IF;
7271 	     RAISE FND_API.G_EXC_ERROR;
7272       END IF;
7273 
7274       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7275           aso_debug_pub.add('Update_Quote: Before call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
7276 
7277       ASO_INPUT_PARAM_DEBUG.Print_quote_input(
7278                        P_Quote_Header_Rec            => p_qte_header_rec
7279                      , P_hd_Price_Attributes_Tbl     => P_hd_Price_Attributes_Tbl
7280                      , P_hd_Payment_Tbl              => P_hd_Payment_Tbl
7281                      , P_hd_Shipment_tbl             => P_hd_Shipment_tbl
7282                      , P_hd_Tax_Detail_Tbl           => P_hd_Tax_Detail_Tbl
7283                      , P_hd_Sales_Credit_Tbl         => P_hd_Sales_Credit_Tbl
7284                      , P_Qte_Line_Tbl                => P_Qte_Line_Tbl
7285                      , P_Qte_Line_Dtl_Tbl            => P_Qte_Line_Dtl_Tbl
7286                      , P_Price_Adjustment_Tbl        => P_Price_Adjustment_Tbl
7287                      , P_Ln_Price_Attributes_Tbl     => P_Ln_Price_Attributes_Tbl
7288                      , P_Ln_Payment_Tbl              => P_Ln_Payment_Tbl
7289                      , P_Ln_Shipment_Tbl             => P_Ln_Shipment_Tbl
7290                      , P_Ln_Tax_Detail_Tbl           => P_Ln_Tax_Detail_Tbl
7291                      , P_ln_Sales_Credit_Tbl         => P_ln_Sales_Credit_Tbl
7292                      , P_Qte_Access_Tbl              => P_Qte_Access_Tbl);
7293 
7294           aso_debug_pub.add('Update_Quote: After call to aso_input_param_debug.print_quote_input procedure', 1, 'Y');
7295 	 END IF;
7296 
7297       Open C_Get_quote( p_qte_header_rec.QUOTE_HEADER_ID);
7298       Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id, l_qte_number,l_party_id, l_cust_account_id,
7299 	                        l_order_type_id,l_order_id,l_object_version_number, l_currency_code, l_price_list_id;
7300 
7301       If ( C_Get_quote%NOTFOUND) Then
7302 
7303 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7304 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_UPDATE_TARGET');
7305 	         FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
7306 	         FND_MSG_PUB.Add;
7307           END IF;
7308           raise FND_API.G_EXC_ERROR;
7309 
7310       END IF;
7311       Close C_Get_quote;
7312 
7313       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7314           aso_debug_pub.add('Update_Quote: quote_header_id:         '|| p_qte_header_rec.quote_header_id, 1, 'Y');
7315           aso_debug_pub.add('Update_Quote: l_LAST_UPDATE_DATE:      '|| l_LAST_UPDATE_DATE, 1, 'Y');
7316           aso_debug_pub.add('Update_Quote: l_qte_status_id:         '|| l_qte_status_id, 1, 'Y');
7317           aso_debug_pub.add('Update_Quote: l_qte_number:            '|| l_qte_number, 1, 'Y');
7318           aso_debug_pub.add('Update_Quote: l_order_type_id:         '|| l_order_type_id, 1, 'Y');
7319           aso_debug_pub.add('Update_Quote: l_order_id:              '|| l_order_id, 1, 'Y');
7320 		aso_debug_pub.add('Update_Quote: l_object_version_number: '|| l_object_version_number,1,'Y');
7321 		aso_debug_pub.add('Update_Quote: l_currency_code:         '|| l_currency_code,1,'Y');
7322 		aso_debug_pub.add('Update_Quote: l_price_list_id:         '|| l_price_list_id,1,'Y');
7323       END IF;
7324 
7325       If (l_last_update_date is NULL or l_last_update_date = FND_API.G_MISS_Date ) Then
7326 
7327 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7328 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
7329 	         FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
7330 	         FND_MSG_PUB.ADD;
7331 	     END IF;
7332 	     raise FND_API.G_EXC_ERROR;
7333 
7334       End if;
7335 
7336       -- Check Whether record has been changed by someone else
7337       If (l_last_update_date <> p_qte_header_rec.last_update_date) Then
7338 
7339 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7340 	         FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
7341 	         FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
7342 	         FND_MSG_PUB.ADD;
7343 	     END IF;
7344 	     raise FND_API.G_EXC_ERROR;
7345 
7346       End if;
7347 
7348        ls_qte_line_tbl := p_qte_line_tbl; -- BugNo 8647883
7349 	 --ovn
7350 	 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
7351 
7352 	    --Compare the passed value to the db value
7353 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
7354              aso_debug_pub.add('Update_Quote - p_qte_header_rec.object_version_number:' ||p_qte_header_rec.object_version_number,1,'Y');
7355 	    END IF;
7356 
7357 	    If (l_object_version_number <> p_qte_header_rec.object_version_number) then
7358 
7359 	        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7360 		       FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
7361 		       FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
7362 		       FND_MSG_PUB.ADD;
7363 		   END IF;
7364 		   raise FND_API.G_EXC_ERROR;
7365 
7366 	    End If;
7367 
7368       End If;  --(l_object_version_number is not null) or (l_object_version_number <> FND_API.G_MISS_NUM)
7369 
7370 	 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
7371 
7372 	      ASO_CONC_REQ_INT.Lock_Exists( p_quote_header_id => p_qte_header_rec.quote_header_id,
7373 	                                    x_status          => x_status);
7374 
7375 		 if (x_status = FND_API.G_TRUE) then
7376 
7377 			IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7378                    FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
7379                    FND_MSG_PUB.ADD;
7380 			end if;
7381                raise FND_API.G_EXC_ERROR;
7382 
7383 		 end if;
7384 	 end if;
7385 
7386       IF l_order_id is NOT NULL and l_order_id <> FND_API.G_MISS_NUM THEN
7387 
7388           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7389               FND_MESSAGE.Set_Name('ASO', 'ASO_API_UPDATE_QUOTE_SUBMITTED');
7390               FND_MSG_PUB.ADD;
7391           END IF;
7392           raise FND_API.G_EXC_ERROR;
7393 
7394       END IF;
7395 
7396       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7397 	     aso_debug_pub.add('Update_Quote - quote_number: '||to_char(l_qte_number), 1, 'N');
7398 	 END IF;
7399 
7400       If p_qte_header_rec.QUOTE_SOURCE_CODE <> 'IStore Account' Then -- added for Bug 13473812
7401 
7402          /*** Start : Code change done for Bug 11076978 ***/
7403 
7404          If (p_qte_header_rec.cust_account_id IS NOT NULL AND
7405 	     p_qte_header_rec.cust_account_id <> FND_API.G_MISS_NUM ) Then
7406              Open C_cust_account_id(p_qte_header_rec.Quote_Header_Id);
7407              Fetch C_cust_account_id Into l_cust_account_id_db;
7408              Close C_cust_account_id;
7409          End If;
7410 
7411          If l_cust_account_id_db <> p_qte_header_rec.cust_account_id Then
7412             l_control_rec.Change_Customer_flag := FND_API.G_TRUE;
7413          End If;
7414 
7415          IF aso_debug_pub.g_debug_flag = 'Y' THEN
7416             aso_debug_pub.add('Update_Quote - l_control_rec.Change_Customer_flag : ' ||l_control_rec.Change_Customer_flag,1,'Y');
7417          END IF;
7418 
7419          /*** End : Code change done for Bug 11076978 ***/
7420 
7421       End If;
7422 
7423       /* Code change for Quoting Usability Sun ER Start */
7424 
7425      If l_control_rec.Change_Customer_flag = FND_API.G_FALSE Then    -- Code change done for Bug 11076978
7426 
7427 	 l_qte_header_rec    := p_qte_header_rec;
7428 	 l_hd_shipment_tbl   := p_hd_shipment_tbl;
7429          l_hd_payment_tbl    := p_hd_payment_tbl;
7430          l_hd_tax_detail_tbl := p_hd_tax_detail_tbl;
7431 
7432      ElsIf l_control_rec.Change_Customer_flag = FND_API.G_TRUE Then    -- Code change done for Bug 11076978
7433 
7434          IF aso_debug_pub.g_debug_flag = 'Y' THEN
7435             aso_debug_pub.add('Update_Quote - Change Customer Flow starts', 1, 'Y');
7436          END IF ;
7437 
7438          l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row ( p_qte_header_rec.Quote_Header_Id );
7439 
7440 	 l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows ( p_qte_header_id => p_qte_header_rec.Quote_Header_Id,
7441                                                                  p_qte_line_id   => NULL );
7442 
7443          l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(p_qte_header_id =>p_qte_header_rec.Quote_Header_Id,p_qte_line_id =>NULL);
7444 
7445 	 l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows ( p_qte_header_id => p_qte_header_rec.Quote_Header_Id,
7446                                                                      p_qte_line_id   => NULL,
7447                                                                      p_shipment_tbl  => ASO_QUOTE_PUB.g_miss_shipment_tbl );
7448 
7449 	 l_qte_header_rec.BATCH_PRICE_FLAG               := FND_API.G_FALSE;
7450 
7451          l_qte_header_rec.CUST_ACCOUNT_ID                := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
7452 	 l_qte_header_rec.CUST_PARTY_ID                  := P_Qte_Header_Rec.CUST_PARTY_ID;
7453 	 l_qte_header_rec.PARTY_ID                       := P_Qte_Header_Rec.CUST_PARTY_ID;
7454 	 l_qte_header_rec.SOLD_TO_PARTY_SITE_ID          := P_Qte_Header_Rec.SOLD_TO_PARTY_SITE_ID;
7455 
7456 	 l_qte_header_rec.PHONE_ID                       := Null;
7457 
7458 	 l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID     := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
7459 	 l_qte_header_rec.INVOICE_TO_CUST_PARTY_ID       := P_Qte_Header_Rec.CUST_PARTY_ID;
7460 	 l_qte_header_rec.INVOICE_TO_PARTY_ID            := Null;
7461 	 l_qte_header_rec.INVOICE_TO_PARTY_SITE_ID       := P_Qte_Header_Rec.SOLD_TO_PARTY_SITE_ID;
7462 	 l_qte_header_rec.INVOICE_TO_PARTY_NAME          := Null;
7463 	 l_qte_header_rec.INVOICE_TO_CONTACT_FIRST_NAME  := Null;
7464 	 l_qte_header_rec.INVOICE_TO_CONTACT_MIDDLE_NAME := Null;
7465 	 l_qte_header_rec.INVOICE_TO_CONTACT_LAST_NAME   := Null;
7466 	 l_qte_header_rec.INVOICE_TO_ADDRESS1            := Null;
7467 	 l_qte_header_rec.INVOICE_TO_ADDRESS2            := Null;
7468 	 l_qte_header_rec.INVOICE_TO_ADDRESS3            := Null;
7469 	 l_qte_header_rec.INVOICE_TO_ADDRESS4            := Null;
7470 	 l_qte_header_rec.INVOICE_TO_COUNTRY_CODE        := Null;
7471 	 l_qte_header_rec.INVOICE_TO_COUNTRY             := Null;
7472 	 l_qte_header_rec.INVOICE_TO_CITY                := Null;
7473 	 l_qte_header_rec.INVOICE_TO_POSTAL_CODE         := Null;
7474 	 l_qte_header_rec.INVOICE_TO_STATE               := Null;
7475 	 l_qte_header_rec.INVOICE_TO_PROVINCE            := Null;
7476 	 l_qte_header_rec.INVOICE_TO_COUNTY              := Null;
7477 
7478 	 l_qte_header_rec.END_CUSTOMER_PARTY_ID          := Null;
7479 	 l_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID     := Null;
7480 	 l_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID   := Null;
7481 	 l_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID     := Null;
7482 
7483 	 l_qte_header_rec.MARKETING_SOURCE_CODE_ID       := Null;
7484 	 l_qte_header_rec.MARKETING_SOURCE_NAME          := Null;
7485 	 l_qte_header_rec.MARKETING_SOURCE_CODE          := Null;
7486 
7487 	 /* commented for bug Bug 13064273
7488 	 l_qte_header_rec.PRICE_LIST_ID                  := P_Qte_Header_Rec.PRICE_LIST_ID;
7489          l_qte_header_rec.CURRENCY_CODE                  := P_Qte_Header_Rec.CURRENCY_CODE;
7490 	 */
7491 
7492          -- Check for Pricing Agreement
7493 	 IF (l_qte_header_rec.contract_id IS NOT NULL AND
7494 	     l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
7495              Open C_AGREEMENT(l_qte_header_rec.CONTRACT_ID,l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID);
7496 	     Fetch C_AGREEMENT Into l_var;
7497 
7498 	     If C_AGREEMENT%Found Then
7499 	        l_qte_header_rec.CONTRACT_ID := Null;
7500 	     End If;
7501 	     Close C_AGREEMENT;
7502          End If;
7503 
7504 	 /* Start : Code change done for Bug 13064273 */
7505 
7506 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
7507 	    aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Price List defaulting starting', 1 , 'N' );
7508 	    aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Agreement Id : '||l_qte_header_rec.CONTRACT_ID, 1 , 'N' );
7509 	    aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Customer Account Id : '||l_qte_header_rec.CUST_ACCOUNT_ID, 1 , 'N' );
7510             aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Order Type Id : '||l_qte_header_rec.ORDER_TYPE_ID, 1 , 'N' );
7511          END IF;
7512 
7513          Open C_Agreement_PL(l_qte_header_rec.CONTRACT_ID);
7514          Fetch C_Agreement_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
7515 
7516 	 If C_Agreement_PL%FOUND then
7517 
7518 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
7519 	       aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Price List is defaulted based on Agreement', 1 , 'N' );
7520             END IF;
7521 
7522 	 ElsIf C_Agreement_PL%NOTFOUND then
7523 
7524 	    Open C_Customer_PL(l_qte_header_rec.CUST_ACCOUNT_ID);
7525             Fetch C_Customer_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
7526 
7527             If C_Customer_PL%FOUND then
7528 
7529                IF aso_debug_pub.g_debug_flag = 'Y' THEN
7530 	          aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Price List is defaulted based on Customer Account', 1 , 'N' );
7531                END IF;
7532 
7533 	    ElsIf C_Customer_PL%NOTFOUND then
7534 
7535 	       Open C_Order_Type_PL(l_qte_header_rec.ORDER_TYPE_ID);
7536 	       Fetch C_Order_Type_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
7537 
7538                If C_Order_Type_PL%FOUND then
7539 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
7540 	             aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - Price List is defaulted based on Order Type', 1 , 'N' );
7541                   END IF;
7542 	       End If;
7543 	       Close C_Order_Type_PL;
7544 
7545             End If;
7546 	    Close C_Customer_PL;
7547 
7548          End If;
7549 	 Close C_Agreement_PL;
7550 
7551 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
7552 	    aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - l_qte_header_rec.PRICE_LIST_ID : '||l_qte_header_rec.PRICE_LIST_ID, 1 , 'N' );
7553 	    aso_debug_pub.ADD ( 'Update_Quote , Change Customer Flow - l_qte_header_rec.CURRENCY_CODE : '||l_qte_header_rec.CURRENCY_CODE, 1 , 'N' );
7554          END IF;
7555 
7556 	 /* End : Code change done for Bug 13064273 */
7557 
7558 	 l_shipment_tbl(1).SHIP_TO_CUST_ACCOUNT_ID       := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
7559 	 l_shipment_tbl(1).SHIP_TO_CUST_PARTY_ID         := P_Qte_Header_Rec.CUST_PARTY_ID;
7560 	 l_shipment_tbl(1).SHIP_TO_PARTY_ID              := Null;
7561 	 l_shipment_tbl(1).SHIP_TO_PARTY_SITE_ID         := P_Qte_Header_Rec.SOLD_TO_PARTY_SITE_ID;
7562 	 l_shipment_tbl(1).SHIP_TO_PARTY_NAME            := Null;
7563 	 l_shipment_tbl(1).SHIP_TO_CONTACT_FIRST_NAME    := Null;
7564 	 l_shipment_tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME   := Null;
7565 	 l_shipment_tbl(1).SHIP_TO_CONTACT_LAST_NAME     := Null;
7566 	 l_shipment_tbl(1).SHIP_TO_ADDRESS1              := Null;
7567 	 l_shipment_tbl(1).SHIP_TO_ADDRESS2              := Null;
7568 	 l_shipment_tbl(1).SHIP_TO_ADDRESS3              := Null;
7569 	 l_shipment_tbl(1).SHIP_TO_ADDRESS4              := Null;
7570 	 l_shipment_tbl(1).SHIP_TO_COUNTRY_CODE          := Null;
7571 	 l_shipment_tbl(1).SHIP_TO_COUNTRY               := Null;
7572 	 l_shipment_tbl(1).SHIP_TO_CITY                  := Null;
7573 	 l_shipment_tbl(1).SHIP_TO_POSTAL_CODE           := Null;
7574 	 l_shipment_tbl(1).SHIP_TO_STATE                 := Null;
7575 	 l_shipment_tbl(1).SHIP_TO_PROVINCE              := Null;
7576 	 l_shipment_tbl(1).SHIP_TO_COUNTY                := Null;
7577 	 l_shipment_tbl(1).SHIP_METHOD_CODE              := Null;
7578          l_shipment_tbl(1).FREIGHT_TERMS_CODE            := Null;
7579 	 l_shipment_tbl(1).FOB_CODE                      := Null;
7580 	 l_shipment_tbl(1).DEMAND_CLASS_CODE             := Null;
7581 	 l_shipment_tbl(1).REQUEST_DATE_TYPE             := Null;
7582 	 l_shipment_tbl(1).REQUEST_DATE                  := Null;
7583 	 l_shipment_tbl(1).SHIPMENT_PRIORITY_CODE        := Null;
7584 	 l_shipment_tbl(1).SHIPPING_INSTRUCTIONS         := Null;
7585 	 l_shipment_tbl(1).PACKING_INSTRUCTIONS          := Null;
7586 	 l_shipment_tbl(1).OPERATION_CODE                := 'UPDATE';
7587 
7588 	 aso_debug_pub.add('Update_Quote - Change Customer Flow , Profile ASO_API_ENABLE_SECURITY : ' ||FND_PROFILE.VALUE ('ASO_API_ENABLE_SECURITY' ),1,'Y');
7589 	 aso_debug_pub.add('Update_Quote - Change Customer Flow , l_sales_team_prof : ' ||l_sales_team_prof,1,'Y');
7590 
7591 	 If NVL ( FND_PROFILE.VALUE ('ASO_API_ENABLE_SECURITY' ), 'N' ) = 'Y' Then
7592             If (l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL') Then
7593 
7594 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
7595 		   aso_debug_pub.ADD ( 'Update_Quote - Change Customer Flow , Before calling ASO_SALES_TEAM_PVT.Assign_Sales_Team ' , 1 , 'N' );
7596                 END IF;
7597 
7598 		l_qte_header_rec.RESOURCE_ID     := Null;
7599                 l_qte_header_rec.RESOURCE_GRP_ID := Null;
7600 
7601 	        ASO_SALES_TEAM_PVT.Assign_Sales_Team (
7602                                    P_Init_Msg_List   => FND_API.G_FALSE,
7603                                    P_Commit          => FND_API.G_FALSE,
7604                                    p_Qte_Header_Rec  => l_qte_header_rec,
7605                                    P_Operation       => 'UPDATE',
7606                                    x_Qte_Header_Rec  => lx_qte_header_rec,
7607                                    x_return_status   => x_return_status,
7608                                    x_msg_count       => x_msg_count,
7609                                    x_msg_data        => x_msg_data );
7610 
7611                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
7612                    aso_debug_pub.add('Update_Quote -  Change Customer Flow , After calling ASO_SALES_TEAM_PVT.Assign_Sales_Team , x_return_status: '||x_return_status, 1, 'N');
7613                 END IF;
7614 
7615                 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
7616                    RAISE FND_API.G_EXC_ERROR;
7617                 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7618                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7619                 END IF;
7620 
7621                 l_qte_header_rec := lx_qte_header_rec;
7622 	    End If;
7623 	 End If;
7624 
7625 	 If l_payment_tbl.Count > 0 Then
7626 	    If l_payment_tbl(1).PAYMENT_TYPE_CODE In ('CHECK','CREDIT_CARD') Then
7627                If l_payment_tbl(1).PAYMENT_TYPE_CODE = 'CREDIT_CARD' Then
7628 	          l_payment_tbl(1).CREDIT_CARD_CODE            := Null;
7629 	          l_payment_tbl(1).CREDIT_CARD_HOLDER_NAME     := Null;
7630 	          l_payment_tbl(1).CREDIT_CARD_EXPIRATION_DATE := Null;
7631 	       End If;
7632 	       l_payment_tbl(1).PAYMENT_TYPE_CODE  := Null;
7633 	       l_payment_tbl(1).PAYMENT_REF_NUMBER := Null;
7634             End If;
7635 
7636             OPEN c_pay_term_acct(P_Qte_Header_Rec.CUST_ACCOUNT_ID);
7637             FETCH c_pay_term_acct INTO l_payment_tbl(1).PAYMENT_TERM_ID;
7638             close c_pay_term_acct;
7639 
7640             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7641 	       aso_debug_pub.add('Update_Quote -  Change Customer Flow, l_payment_tbl(1).PAYMENT_TERM_ID : '||l_payment_tbl(1).PAYMENT_TERM_ID, 1, 'N');
7642 	    END IF;
7643 
7644 	    l_payment_tbl(1).CUST_PO_NUMBER  := Null;
7645 	    l_payment_tbl(1).cvv2            := Null;
7646 	    l_payment_tbl(1).OPERATION_CODE  := 'UPDATE';
7647 	 End If;
7648 
7649 	 If l_tax_detail_tbl.Count > 0 Then
7650 	    If l_tax_detail_tbl(1).TAX_EXEMPT_FLAG = 'E' Then
7651 	       l_tax_detail_tbl(1).TAX_EXEMPT_FLAG        := Null;
7652 	       l_tax_detail_tbl(1).TAX_EXEMPT_NUMBER      := Null;
7653 	       l_tax_detail_tbl(1).TAX_EXEMPT_REASON_CODE := Null;
7654             End If;
7655 	    l_tax_detail_tbl(1).OPERATION_CODE  := 'UPDATE';
7656 	 End If;
7657 
7658          l_qte_header_rec.Customer_Name_And_Title := NULL;
7659          l_qte_header_rec.Customer_Signature_Date := NULL;
7660          l_qte_header_rec.Supplier_Name_And_Title := NULL;
7661          l_qte_header_rec.Supplier_Signature_Date := NULL;
7662 
7663          /*** Start : Code change done for Bug 11076978 ***/
7664 	 -- hyang defaulting framework begin
7665 	 IF l_control_rec.defaulting_fwk_flag = 'Y' THEN
7666 
7667             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7668                aso_debug_pub.add('Update_Quote - Before defaulting framework', 1, 'Y');
7669                aso_debug_pub.add('Update_Quote - Populate defaulting control record from the header control record', 1, 'Y');
7670             END IF ;
7671 
7672             l_def_control_rec.Dependency_Flag := l_control_rec.Dependency_Flag;
7673             l_def_control_rec.Defaulting_Flag := l_control_rec.Defaulting_Flag;
7674             l_def_control_rec.Application_Type_Code := l_control_rec.Application_Type_Code;
7675             l_def_control_rec.Defaulting_Flow_Code := 'UPDATE';
7676             l_def_control_rec.Last_Update_Date := P_Qte_Header_Rec.Last_Update_Date;
7677 
7678             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7679                aso_debug_pub.add('Defaulting_Fwk_Flag - '||l_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
7680                aso_debug_pub.add('Dependency_Flag - '||l_def_control_rec.Dependency_Flag, 1, 'Y');
7681                aso_debug_pub.add('Defaulting_Flag - '||l_def_control_rec.Defaulting_Flag, 1, 'Y');
7682                aso_debug_pub.add('Application_Type_Code - '||l_def_control_rec.Application_Type_Code, 1, 'Y');
7683                aso_debug_pub.add('Defaulting_Flow_Code - '||l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
7684                aso_debug_pub.add('Last_Update_Date - '||l_def_control_rec.Last_Update_Date, 1, 'Y');
7685             END IF ;
7686 
7687             IF l_def_control_rec.application_type_code = 'QUOTING HTML'
7688                OR l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
7689                l_db_object_name := G_QUOTE_HEADER_DB_NAME;
7690             ELSE
7691                l_control_rec.Defaulting_Fwk_Flag := 'N';
7692             END IF;
7693 
7694             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7695                aso_debug_pub.add('Update_Quote - Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
7696             END IF ;
7697 
7698             IF l_shipment_tbl.count > 0 THEN
7699                l_hd_shipment_rec := l_shipment_tbl(1);
7700             END IF;
7701 
7702             IF l_payment_tbl.count > 0 THEN
7703                l_hd_payment_rec := l_payment_tbl(1);
7704             END IF;
7705 
7706             IF l_tax_detail_tbl.count > 0 THEN
7707                l_hd_tax_detail_rec := l_tax_detail_tbl(1);
7708             END IF;
7709 
7710             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7711                aso_debug_pub.add('Update_Quote - Change Customer Flow , Before Call to Default_Entity', 1, 'Y');
7712             END IF ;
7713 
7714             ASO_DEFAULTING_INT.Default_Entity (
7715                                p_api_version           =>  1.0
7716                              , p_control_rec           =>  l_def_control_rec
7717                              , p_database_object_name  =>  l_db_object_name
7718                              , p_quote_header_rec      =>  l_qte_header_rec
7719                              , p_header_misc_rec       =>  l_hd_misc_rec
7720                              , p_header_shipment_rec   =>  l_hd_shipment_rec
7721                              , p_header_payment_rec    =>  l_hd_payment_rec
7722                              , p_header_tax_detail_rec =>  l_hd_tax_detail_rec
7723                              , x_quote_header_rec      =>  lx_qte_header_rec    -- code change done for Bug 12874975
7724                              , x_header_misc_rec       =>  lx_hd_misc_rec
7725                              , x_header_shipment_rec   =>  lx_hd_shipment_rec
7726                              , x_header_payment_rec    =>  lx_hd_payment_rec
7727                              , x_header_tax_detail_rec =>  lx_hd_tax_detail_rec
7728                              , x_quote_line_rec        =>  lx_quote_line_rec
7729                              , x_line_misc_rec         =>  lx_ln_misc_rec
7730                              , x_line_shipment_rec     =>  lx_ln_shipment_rec
7731                              , x_line_payment_rec      =>  lx_ln_payment_rec
7732                              , x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec
7733                              , x_changed_flag          =>  lx_changed_flag
7734                              , x_return_status	       =>  x_return_status
7735                              , x_msg_count	       =>  x_msg_count
7736                              , x_msg_data	       =>  x_msg_data);
7737 
7738             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7739                aso_debug_pub.add('Update_Quote - Change Customer Flow , After Call to Default_Entity , x_return_status : '||x_return_status, 1, 'Y');
7740             END IF ;
7741 
7742 	    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7743 
7744                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7745                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
7746                   FND_MSG_PUB.ADD;
7747                END IF;
7748 
7749                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7750                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7751                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
7752                    RAISE FND_API.G_EXC_ERROR;
7753                END IF;
7754 
7755             END IF;
7756 
7757 	    l_qte_header_rec := lx_qte_header_rec;  -- code change done for Bug 12874975
7758 
7759             IF Shipment_Null_Rec_Exists(lx_hd_shipment_rec, l_db_object_name) THEN
7760                l_hd_shipment_tbl(1) := lx_hd_shipment_rec;
7761             END IF;
7762 
7763             IF Payment_Null_Rec_Exists(lx_hd_payment_rec, l_db_object_name) THEN
7764                l_hd_payment_tbl(1) := lx_hd_payment_rec;
7765             END IF;
7766 
7767             IF Tax_Detail_Null_Rec_Exists(lx_hd_tax_detail_rec, l_db_object_name) THEN
7768                l_hd_tax_detail_tbl(1) := lx_hd_tax_detail_rec;
7769             END IF;
7770 
7771          ELSE
7772 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
7773                 aso_debug_pub.add('Update_Quote - Change Customer Flow , l_control_rec.defaulting_fwk_flag : N', 1, 'Y');
7774              END IF ;
7775 
7776              l_hd_shipment_tbl   := l_shipment_tbl;
7777              l_hd_payment_tbl    := l_payment_tbl;
7778              l_hd_tax_detail_tbl := l_tax_detail_tbl;
7779 
7780          END IF;
7781          -- hyang defaulting framework end
7782 	/*** End : Code change done for Bug 11076978 ***/
7783 
7784          IF aso_debug_pub.g_debug_flag = 'Y' THEN
7785             aso_debug_pub.add('Update_Quote: Before call to aso_input_param_debug.print_quote_input procedure for change customer flow', 1, 'Y');
7786 
7787             ASO_INPUT_PARAM_DEBUG.Print_quote_input(
7788                        P_Quote_Header_Rec            => l_qte_header_rec
7789                      , P_hd_Price_Attributes_Tbl     => ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl
7790                      , P_hd_Payment_Tbl              => l_hd_payment_tbl
7791                      , P_hd_Shipment_tbl             => l_hd_shipment_tbl
7792                      , P_hd_Tax_Detail_Tbl           => l_hd_tax_detail_tbl
7793                      , P_hd_Sales_Credit_Tbl         => ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl
7794                      , P_Qte_Line_Tbl                => ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL
7795                      , P_Qte_Line_Dtl_Tbl            => ASO_QUOTE_PUB.G_MISS_Qte_Line_Dtl_TBL
7796                      , P_Price_Adjustment_Tbl        => ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl
7797                      , P_Ln_Price_Attributes_Tbl     => ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl
7798                      , P_Ln_Payment_Tbl              => ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL
7799                      , P_Ln_Shipment_Tbl             => ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL
7800                      , P_Ln_Tax_Detail_Tbl           => ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl
7801                      , P_ln_Sales_Credit_Tbl         => ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl
7802                      , P_Qte_Access_Tbl              => ASO_QUOTE_PUB.G_MISS_QTE_ACCESS_TBL);
7803 
7804             aso_debug_pub.add('Update_Quote: After call to aso_input_param_debug.print_quote_input procedure for change customer flow', 1, 'Y');
7805 	 END IF;
7806      End If;
7807      /* Code change for Quoting Usability Sun ER End */
7808 
7809       OPEN c_qte_status (l_qte_status_id);
7810       FETCH C_qte_status INTO l_auto_version;
7811       CLOSE c_qte_status;
7812 
7813       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7814 	     aso_debug_pub.add('Update_Quote - auto_version: '||l_auto_version, 1, 'N');
7815 	 END IF;
7816 
7817       -- auto version check should be done only if the control rec is set
7818 
7819       IF NVL(l_auto_version, 'Y') = 'Y' AND p_control_rec.auto_version_flag = FND_API.G_TRUE THEN
7820 
7821 	     OPEN C_Qte_Version(l_qte_number);
7822 	     FETCH C_Qte_Version into l_qte_header_rec.quote_version;
7823 	     CLOSE C_Qte_Version;
7824 
7825 	     l_qte_header_rec.quote_version := nvl(l_qte_header_rec.quote_version, 0) + 1;
7826 
7827       ELSE
7828           l_auto_version := 'N';
7829 
7830       END IF;
7831 
7832       IF l_control_rec.defaulting_fwk_flag = 'N' THEN
7833 
7834           /* Updating of Order type */
7835           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7836 	         aso_debug_pub.add('Update_Quote - p_qte_header_rec.order_type_id '||p_qte_header_rec.order_type_id, 1, 'N');
7837 
7838 	       -- Change START
7839                -- Release 12 MOAC Changes : Bug 4500739
7840                -- Changes Done by : Girish
7841                -- Comments : Using HR EIT in place of org striped profile
7842 
7843                -- aso_debug_pub.add('Update_Quote - Value of Order Type Profile'||to_number(fnd_profile.value('ASO_ORDER_TYPE_ID')), 1, 'N');
7844 	       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');
7845 
7846 	       -- Change END
7847 
7848               aso_debug_pub.add('Update_Quote - order_type_id from database '||l_order_type_id, 1, 'N');
7849 	     END IF;
7850 
7851           IF  p_qte_header_rec.order_type_id is null OR p_qte_header_rec.order_type_id = FND_API.G_MISS_NUM THEN
7852                IF l_order_type_id is NULL OR l_order_type_id = FND_API.G_MISS_NUM THEN
7853 
7854 	           -- Change START
7855                    -- Release 12 MOAC Changes : Bug 4500739
7856                    -- Changes Done by : Girish
7857                    -- Comments : Using HR EIT in place of org striped profile
7858 
7859                    --l_qte_header_rec.order_type_id := to_number(fnd_profile.value('ASO_ORDER_TYPE_ID'));
7860 		   l_qte_header_rec.order_type_id := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_ORDER_TYPE));
7861 
7862 		   -- Change END
7863 
7864                END IF;
7865           END IF;
7866 
7867       END IF;
7868 
7869       IF aso_debug_pub.g_debug_flag = 'Y' THEN
7870           aso_debug_pub.add('Update_Quote - l_qte_header_rec.publish_flag '||l_qte_header_rec.publish_flag, 1, 'N');
7871       END IF;
7872 
7873       IF l_qte_header_rec.publish_flag = 'Y' THEN
7874 
7875           -- check for missing customer accounts in the quote
7876           ASO_CHECK_TCA_PVT.Check_Customer_Accounts (
7877                         p_init_msg_list        => fnd_api.g_false,
7878                         p_qte_header_id        => l_qte_header_rec.quote_header_id,
7879                         x_return_status        => x_return_status,
7880                         x_msg_count            => x_msg_count,
7881                         x_msg_data             => x_msg_data );
7882 
7883           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7884               aso_debug_pub.add('Update_Quote - chk_cust_accts: x_return_status: '||x_return_status, 1, 'N');
7885           END IF;
7886 
7887           IF x_return_status <> fnd_api.g_ret_sts_success THEN
7888               RAISE fnd_api.g_exc_error;
7889           END IF; -- end check_customer_accounts
7890 
7891           -- assign the missing customer accounts to the quote
7892           ASO_CHECK_TCA_PVT.Assign_Customer_Accounts (
7893                         p_init_msg_list        => fnd_api.g_false,
7894                         p_qte_header_id        => l_qte_header_rec.quote_header_id,
7895                         p_calling_api_flag     => 1,
7896                         x_return_status        => x_return_status,
7897                         x_msg_count            => x_msg_count,
7898                         x_msg_data             => x_msg_data );
7899 
7900           IF aso_debug_pub.g_debug_flag = 'Y' THEN
7901               aso_debug_pub.add('Update_Quote - assign_cust_accts: x_return_status: '||x_return_status, 1, 'N');
7902           END IF;
7903 
7904           IF x_return_status <> fnd_api.g_ret_sts_success THEN
7905               RAISE fnd_api.g_exc_error;
7906           END IF;
7907 
7908       END IF;  --l_qte_header_rec.publish_flag = 'Y' THEN
7909 
7910 
7911       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7912 
7913 	       -- party_id must exist and be active in HZ_PARTIES
7914             IF aso_debug_pub.g_debug_flag = 'Y' THEN
7915 	           aso_debug_pub.add('Update_Quote - before validate_party: ', 1, 'N');
7916 	       END IF;
7917 
7918 	       ASO_VALIDATE_PVT.Validate_Party (
7919 		              p_init_msg_list	       => FND_API.G_FALSE,
7920 		              p_party_id	            => l_qte_header_rec.party_id,
7921 		              p_party_usage	       => 'QUOTE_PARTY',
7922 		              x_return_status        => x_return_status,
7923 		              x_msg_count	       => x_msg_count,
7924 		              x_msg_data	            => x_msg_data);
7925 
7926 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7927 
7928                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7929 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7930                     FND_MESSAGE.Set_Token('COLUMN', 'PARTY_ID', FALSE);
7931                     FND_MSG_PUB.ADD;
7932 	           END IF;
7933 	           RAISE FND_API.G_EXC_ERROR;
7934 
7935 	       END IF;
7936 
7937 	       -- org_contact_id must be exist and active in HZ_ORG_CONTACTS
7938 	       ASO_VALIDATE_PVT.Validate_Contact (
7939 		              p_init_msg_list	       => FND_API.G_FALSE,
7940 		              p_contact_id	       => l_qte_header_rec.org_contact_id,
7941 		              p_contact_usage	       => 'ORG_CONTACT',
7942 		              x_return_status        => x_return_status,
7943 		              x_msg_count	       => x_msg_count,
7944 		              x_msg_data	            => x_msg_data);
7945 
7946 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7947 
7948                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7949 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7950                     FND_MESSAGE.Set_Token('COLUMN', 'ORG_CONTACT_ID', FALSE);
7951                     FND_MSG_PUB.ADD;
7952                 END IF;
7953                 RAISE FND_API.G_EXC_ERROR;
7954             END IF;
7955 
7956 	       -- invoice_to_party_id must exist and be active in HZ_PARTIES and have the usage INVOICE.
7957 
7958 	       ASO_VALIDATE_PVT.Validate_Party (
7959 		              p_init_msg_list	       => FND_API.G_FALSE,
7960 		              p_party_id	            => l_qte_header_rec.invoice_to_party_id,
7961 		              p_party_usage	       => 'INVOICE_TO_PARTY',
7962 		              x_return_status        => x_return_status,
7963 		              x_msg_count	       => x_msg_count,
7964 		              x_msg_data	            => x_msg_data);
7965 
7966 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7967 
7968                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7969 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
7970                     FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_PARTY_ID', FALSE);
7971                     FND_MSG_PUB.ADD;
7972                 END IF;
7973                 RAISE FND_API.G_EXC_ERROR;
7974             END IF;
7975 
7976 	       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
7977 
7978 	           IF l_qte_header_rec.cust_account_id <> FND_API.G_MISS_NUM THEN
7979 		          l_cust_account_id := l_qte_header_rec.cust_account_id;
7980 	           END IF;
7981 
7982 	           IF l_qte_header_rec.party_id <> FND_API.G_MISS_NUM THEN
7983 				l_party_id := l_qte_header_rec.party_id;
7984 	           END IF;
7985 
7986 	           ASO_PARTY_INT.Validate_CustAccount (
7987 		              p_init_msg_list	       => FND_API.G_FALSE,
7988                         p_party_id	            => l_party_id,
7989                         p_cust_account_id      => l_cust_account_id,
7990                         x_return_status        => x_return_status,
7991                         x_msg_count	       => x_msg_count,
7992                         x_msg_data	            => x_msg_data );
7993 
7994             END IF;
7995 
7996 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7997 	           RAISE FND_API.G_EXC_ERROR;
7998 	       END IF;
7999 
8000 
8001 /*** Start BugNo 8647883: R12.1.2 Service reference SUN ER ***/
8002 
8003 -- Checking if lines table has service reference CUSTOMER_PRODUCT,PRODUCT_CATALOG
8004 
8005       SELECT count(*)
8006       INTO ls_count
8007       FROM aso_quote_line_details a1,
8008 	aso_quote_lines_all a2
8009       WHERE a2.quote_header_id = l_qte_header_rec.quote_header_id
8010 	AND a1.quote_line_id       = a2.quote_line_id
8011 	AND SERVICE_REF_TYPE_CODE IN ('CUSTOMER_PRODUCT','PRODUCT_CATALOG');
8012 
8013 IF ls_count > 0 then
8014      -- Fetching the value from DB for end customer and sold to for validation
8015      OPEN C_get_cust(l_qte_header_rec.quote_header_id);
8016      FETCH C_get_cust INTO ls_end_cust_account_id,ls_cust_account_id;
8017      IF aso_debug_pub.g_debug_flag = 'Y' THEN
8018         aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT UPDATE_QUOTE: header_id'||l_qte_header_rec.quote_header_id);
8019 	aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT UPDATE_QUOTE:  cust Acct id'||ls_cust_account_id);
8020 	aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT UPDATE_QUOTE: end cust Acct id'||ls_end_cust_account_id);
8021 	aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT UPDATE_QUOTE: record end cust Acct id'||p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID);
8022 	aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT UPDATE_QUOTE: record end LAST_UPDATED_BY'||p_qte_header_rec.LAST_UPDATED_BY);
8023      END IF;
8024      IF C_get_cust%NOTFOUND THEN
8025         IF aso_debug_pub.g_debug_flag = 'Y' THEN
8026         aso_debug_pub.add('ASO_QUOTE_HEADERS_PVT END CUST NOT FOUND');
8027 	END IF;
8028 	ls_cust_account_id := NULL;
8029 	ls_end_cust_account_id:= NULL;
8030      END IF;
8031      CLOSE C_get_cust;
8032 
8033 
8034 -- Fetching the value from record structure of end customer for validation
8035      ls_ib_cust_account_id:=NULL;
8036      ls_ib_cust_account_id_orig:=NULL;
8037      ls_pc_cust_account_id:=NULL;
8038      ls_pc_cust_account_id_orig:=NULL;
8039 
8040  IF ( (p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID is NULL) or ((p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID=FND_API.G_MISS_NUM) and (p_qte_header_rec.LAST_UPDATED_BY <> FND_API.G_MISS_NUM)) ) -- end customer is cleared
8041    OR
8042    ((p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID is NOT NULL ) and (p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM)) -- end customer is changed
8043 
8044    THEN
8045     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8046       aso_debug_pub.add('UPDATE_QUOTE: End customer is changed');
8047     END IF;
8048 
8049     IF (p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID is NULL) or (p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID=FND_API.G_MISS_NUM) -- Fetching sold to
8050     THEN
8051         ls_ib_cust_account_id:=NULL;
8052         IF p_qte_header_rec.CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM THEN
8053           ls_pc_cust_account_id := p_qte_header_rec.CUST_ACCOUNT_ID;
8054         ELSE
8055           ls_pc_cust_account_id := ls_cust_account_id;
8056         END IF;
8057     ELSE -- Fetching end customer
8058        ls_ib_cust_account_id := p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID;
8059        ls_pc_cust_account_id :=  ls_ib_cust_account_id;
8060     END IF;
8061 
8062     ls_pc_cust_account_id_orig := nvl(ls_end_cust_account_id, ls_cust_account_id);  -- DB value of cust account, in case end customer is null use sold to customer
8063     ls_ib_cust_account_id_orig:= ls_end_cust_account_id;
8064 
8065     IF aso_debug_pub.g_debug_flag = 'Y' THEN
8066       aso_debug_pub.add('UPDATE_QUOTE: new ib cust: '|| ls_ib_cust_account_id);
8067       aso_debug_pub.add('UPDATE_QUOTE: original ib cust: '|| ls_ib_cust_account_id_orig);
8068        aso_debug_pub.add('UPDATE_QUOTE: new pc cust: '|| ls_pc_cust_account_id);
8069       aso_debug_pub.add('UPDATE_QUOTE: original pc cust: '|| ls_pc_cust_account_id_orig);
8070     END IF;
8071  END IF;
8072 
8073 -- Install base validation
8074 -- Deleting the lines in case end customer is changed or cleared
8075  IF (ls_ib_cust_account_id is not NULL and ls_ib_cust_account_id_orig is not NULL and ls_ib_cust_account_id <> ls_ib_cust_account_id_orig )
8076          or (ls_ib_cust_account_id is null and ls_ib_cust_account_id_orig is not NULL)
8077          or (ls_ib_cust_account_id is not NULL and ls_ib_cust_account_id_orig is NULL)
8078 
8079   THEN
8080        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8081 			aso_debug_pub.add('UPDATE_QUOTE:install base validation');
8082 
8083         END IF;
8084         for c1 in c_serv(l_qte_header_rec.quote_header_id)
8085            loop
8086      	     IF (c1.SERVICE_REF_TYPE_CODE = 'CUSTOMER_PRODUCT' ) THEN
8087                 found:=0;
8088 		FOR i IN 1..ls_qte_line_tbl.count LOOP
8089                  if ls_qte_line_tbl(i).quote_line_id=c1.quote_line_id and
8090 		 ((ls_qte_line_tbl(i).END_CUSTOMER_CUST_ACCOUNT_ID = FND_API.G_MISS_NUM) or (ls_qte_line_tbl(i).END_CUSTOMER_CUST_ACCOUNT_ID is null)) then
8091 		 -- end customer is not there at line level
8092 			    ls_qte_line_tbl(i).operation_code:='DELETE';
8093 		            exit;
8094 			    found:=1;
8095 	          END IF;
8096 		end loop;
8097 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
8098 			aso_debug_pub.add('UPDATE_QUOTE:install base validation found'||found);
8099 
8100                  END IF;
8101 		if found=0 then
8102                   l_qte_line_rec := aso_quote_pub.g_miss_qte_line_rec;
8103  	          l_qte_line_rec:=ASO_UTILITY_PVT.Query_Qte_Line_Row(c1.quote_line_id);
8104 		  if (l_qte_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID = FND_API.G_MISS_NUM) or (l_qte_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID is null) then
8105 			l_qte_line_rec.operation_code:='DELETE';
8106 			ls_qte_line_tbl(ls_qte_line_tbl.count+1):=l_qte_line_rec;
8107                   end if;
8108 		end if;
8109             END IF; -- customer product
8110          end loop;
8111     END IF;
8112 
8113 
8114 
8115 -- Product Catalog validation
8116  -- Validating the lines as per service rules and deleting in case service validation fails for end customer
8117    --   IF (ls_cust_account_id is not null) or (ls_end_cust_account_id is not null )THEN
8118     IF ((ls_pc_cust_account_id is not NULL) and (ls_pc_cust_account_id_orig is not NULL) and (ls_pc_cust_account_id <> ls_pc_cust_account_id_orig ) )
8119          or (ls_pc_cust_account_id is null and ls_pc_cust_account_id_orig is not NULL)
8120          or (ls_pc_cust_account_id is not NULL and ls_pc_cust_account_id_orig is NULL)
8121     then
8122          for c1 in c_serv(l_qte_header_rec.quote_header_id)
8123            loop
8124      	     IF (c1.SERVICE_REF_TYPE_CODE = 'PRODUCT_CATALOG' ) THEN
8125                l_inventory_item_id:= c1.SERVICE_REF_LINE_ID;
8126 	       ls_service_inventory_item_id:=c1.inventory_item_id;
8127 
8128 
8129 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8130 			aso_debug_pub.add('UPDATE_QUOTE:SERVICE_REF_TYPE_CODE '||c1.SERVICE_REF_TYPE_CODE);
8131 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG service ref line id'||c1.SERVICE_REF_LINE_ID, 1, 'Y');
8132 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG Servicable product'||l_inventory_item_id, 1, 'Y');
8133 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG service item id'||ls_service_inventory_item_id, 1, 'Y');
8134 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG DB customer id'||ls_cust_account_id, 1, 'Y');
8135 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG DB end customer id'||ls_end_cust_account_id, 1, 'Y');
8136 			aso_debug_pub.add('UPDATE_QUOTE: PRODUCT_CATALOG record structure end customer id'||ls_pc_cust_account_id, 1, 'Y');
8137                END IF;
8138 
8139 	       l_check_service_rec.product_item_id := l_inventory_item_id;
8140 	       l_check_service_rec.service_item_id := c1.inventory_item_id;
8141 	       l_check_service_rec.customer_id :=  ls_pc_cust_account_id; --nvl(ls_end_cust_account_id,ls_cust_account_id);
8142 	       ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
8143         					P_Api_Version_Number	=> 1.0 ,
8144         					P_init_msg_list	=> p_init_msg_list,
8145 						X_msg_Count     => X_msg_count ,
8146         					X_msg_Data	=> X_msg_data	 ,
8147         					X_Return_Status	=> X_return_status  ,
8148 						p_check_service_rec => l_check_service_rec,
8149 						X_Available_YN	    => l_Available_YN
8150 					       );
8151 	      IF l_Available_YN = 'N' THEN
8152 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
8153 			aso_debug_pub.add('UPDATE_QUOTE:SERVICE_not available');
8154 		END IF;
8155 
8156 		found:=0;
8157 		FOR i IN 1..ls_qte_line_tbl.count LOOP
8158                  if ls_qte_line_tbl(i).quote_line_id=c1.quote_line_id and
8159 		 ((ls_qte_line_tbl(i).END_CUSTOMER_CUST_ACCOUNT_ID = FND_API.G_MISS_NUM) or (ls_qte_line_tbl(i).END_CUSTOMER_CUST_ACCOUNT_ID is null)) then
8160 		 -- end customer is not there at line level
8161 			    ls_qte_line_tbl(i).operation_code:='DELETE';
8162 		            exit;
8163 			    found:=1;
8164 	          END IF;
8165 		end loop;
8166 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
8167 			aso_debug_pub.add('UPDATE_QUOTE:product base validation found'||found);
8168 
8169                  END IF;
8170 		if found=0 then
8171                   l_qte_line_rec := aso_quote_pub.g_miss_qte_line_rec;
8172  	          l_qte_line_rec:=ASO_UTILITY_PVT.Query_Qte_Line_Row(c1.quote_line_id);
8173                   if (l_qte_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID = FND_API.G_MISS_NUM) or (l_qte_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID is null) then
8174 			l_qte_line_rec.operation_code:='DELETE';
8175 			ls_qte_line_tbl(ls_qte_line_tbl.count+1):=l_qte_line_rec;
8176                   end if;
8177 		end if;
8178 	      END IF;  -- service not available
8179          END IF;  -- Product Catalog
8180      END LOOP; -- c_serv
8181    END IF; -- customer id not null
8182 
8183  END IF; -- ls_count greater than 0
8184 
8185 /*** End: BugNo 8647883: R12.1.2 Service reference SUN ER ***/
8186 
8187 
8188 
8189 	       -- order_type must exist and be active in OE_ORDER_TYPES
8190 
8191             ASO_TRADEIN_PVT.OrderType(
8192                         p_init_msg_list        => FND_API.G_FALSE,
8193                         p_qte_header_rec       => l_qte_header_rec,
8194                         x_return_status        => x_return_status,
8195                         x_msg_count            => x_msg_count,
8196                         x_msg_data             => x_msg_data);
8197 
8198 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8199 	           RAISE FND_API.G_EXC_ERROR;
8200 	       END IF;
8201 
8202          /*** Code for cursor C_Expire_Date and If condition added for Bug 13926015 ***/
8203 
8204 	    Open C_Expire_Date(p_qte_header_rec.quote_header_id);
8205 	    Fetch C_Expire_Date Into l_Expire_Date;
8206 	    Close C_Expire_Date;
8207 
8208 	    -- If l_Expire_Date <> to_char(p_qte_header_rec.quote_expiration_date,'DD-MON-RRRR') Then     ,commented for bug 14099184
8209             If TRUNC(l_Expire_Date) <> TRUNC(p_qte_header_rec.quote_expiration_date) Then
8210 
8211 	       ASO_VALIDATE_PVT.Validate_Quote_Exp_date(
8212                         p_init_msg_list         => FND_API.G_FALSE,
8213                         p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
8214                         x_return_status         => x_return_status,
8215                         x_msg_count             => x_msg_count,
8216                         x_msg_data              => x_msg_data);
8217 
8218                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8219 
8220                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8221                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_UPD_EXPIRATION_DATE');
8222                     FND_MSG_PUB.ADD;
8223                 END IF;
8224                 RAISE FND_API.G_EXC_ERROR;
8225              END IF;
8226 
8227   END IF;
8228 	       -- price list must exist and be active in OE_PRICE_LISTS
8229 	       ASO_VALIDATE_PVT.Validate_PriceList (
8230 		              p_init_msg_list	        => FND_API.G_FALSE,
8231 		              p_price_list_id	        => l_qte_header_rec.price_list_id,
8232 		              x_return_status         => x_return_status,
8233 		              x_msg_count	        => x_msg_count,
8234 		              x_msg_data	             => x_msg_data);
8235 
8236 	       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8237 
8238                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8239 	               FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
8240                     FND_MESSAGE.Set_Token('COLUMN', 'PRICE_LIST_ID', FALSE);
8241                     FND_MSG_PUB.ADD;
8242 	           END IF;
8243 	           RAISE FND_API.G_EXC_ERROR;
8244             END IF;
8245 
8246             ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
8247   	                   p_init_msg_list	        => FND_API.G_FALSE,
8248                         p_price_list_id	        => l_qte_header_rec.price_list_id,
8249                         p_quote_expiration_date => l_qte_header_rec.quote_expiration_date,
8250                         x_return_status         => x_return_status,
8251 	                   x_msg_count             => x_msg_count,
8252 	                   x_msg_data	             => x_msg_data);
8253 
8254             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8255 
8256                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8257                      FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
8258                      FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
8259                      FND_MSG_PUB.ADD;
8260                  END IF;
8261                  RAISE FND_API.G_EXC_ERROR;
8262             END IF;
8263 
8264             -- if status is to be changed, a valid transition should exist.
8265             IF (l_qte_header_rec.quote_status_id IS NOT NULL
8266                 AND l_qte_header_rec.quote_status_id <> FND_API.G_MISS_NUM
8267                 AND l_qte_header_rec.quote_status_id <> l_qte_status_id) THEN
8268 
8269   	             ASO_VALIDATE_PVT.Validate_Status_Transition(
8270     		                    p_init_msg_list	=> FND_API.G_FALSE,
8271     		                    p_source_status_id  => l_qte_status_id,
8272     		                    p_dest_status_id    => l_qte_header_rec.quote_status_id,
8273     		                    x_return_status     => x_return_status,
8274     		                    x_msg_count	     => x_msg_count,
8275     		                    x_msg_data	     => x_msg_data);
8276 
8277   	             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8278 
8279                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8280   	                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_STATUS_TRANS');
8281                           FND_MSG_PUB.ADD;
8282   	                 END IF;
8283  	                 RAISE FND_API.G_EXC_ERROR;
8284   	             END IF;
8285   	       END IF;
8286 
8287 
8288             FOR i in 1..p_hd_sales_credit_tbl.count LOOP
8289 
8290                 if aso_debug_pub.g_debug_flag = 'Y' then
8291                     aso_debug_pub.add('p_hd_sales_credit_tbl('||i||').operation_code: '|| p_hd_sales_credit_tbl(i).operation_code,1,'Y');
8292                 end if;
8293 
8294                 if (p_hd_sales_credit_tbl(i).operation_code = 'CREATE' or p_hd_sales_credit_tbl(i).operation_code = 'UPDATE') then
8295 
8296                     ASO_VALIDATE_PVT.Validate_Resource_id(
8297                                 p_init_msg_list => FND_API.G_FALSE,
8298                                 p_resource_id   => p_hd_sales_credit_tbl(i).resource_id  ,
8299                                 x_return_status => x_return_status,
8300                                 x_msg_count     => x_msg_count,
8301                                 x_msg_data      => x_msg_data);
8302 
8303                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8304 
8305                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8306 		                  FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
8307 		                  FND_MSG_PUB.ADD;
8308 	                   END IF;
8309                         RAISE FND_API.G_EXC_ERROR;
8310                     END IF;
8311 
8312 
8313                     ASO_VALIDATE_PVT.Validate_Resource_group_id(
8314                                 p_init_msg_list     => FND_API.G_FALSE,
8315                                 p_resource_group_id => p_hd_sales_credit_tbl(i).resource_group_id,
8316                                 x_return_status     => x_return_status,
8317                                 x_msg_count         => x_msg_count,
8318                                 x_msg_data          => x_msg_data);
8319 
8320                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8321                         RAISE FND_API.G_EXC_ERROR;
8322                     END IF;
8323 
8324 
8325                     ASO_VALIDATE_PVT.Validate_Salescredit_Type(
8326                                 p_init_msg_list       => FND_API.G_FALSE,
8327                                 p_salescredit_type_id => p_hd_sales_credit_tbl(i).sales_credit_type_id,
8328                                 x_return_status       => x_return_status,
8329                                 x_msg_count           => x_msg_count,
8330                                 x_msg_data            => x_msg_data);
8331 
8332                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8333                         RAISE FND_API.G_EXC_ERROR;
8334                     END IF;
8335 
8336 
8337                     ASO_VALIDATE_PVT.Validate_EmployPerson(
8338                                 p_init_msg_list => FND_API.G_FALSE,
8339                                 p_employee_id   => p_hd_sales_credit_tbl(i).employee_person_id,
8340                                 x_return_status => x_return_status,
8341                                 x_msg_count     => x_msg_count,
8342                                 x_msg_data      => x_msg_data);
8343 
8344                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8345                         RAISE FND_API.G_EXC_ERROR;
8346                     END IF;
8347 
8348                 end if;
8349 
8350             END LOOP;
8351 
8352             FOR i in 1..p_hd_quote_party_tbl.count LOOP
8353 
8354                 ASO_VALIDATE_PVT.Validate_Party_Type(
8355 				        p_init_msg_list => FND_API.G_FALSE,
8356                             p_party_type    => p_hd_quote_party_tbl(i).party_type,
8357                             x_return_status => x_return_status,
8358                             x_msg_count     => x_msg_count,
8359                             x_msg_data      => x_msg_data);
8360 
8361                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8362                     RAISE FND_API.G_EXC_ERROR;
8363                 END IF;
8364 
8365                 ASO_VALIDATE_PVT.Validate_Party(
8366                             p_init_msg_list => FND_API.G_FALSE,
8367                             p_party_id      => p_hd_quote_party_tbl(i).party_id,
8368                             p_party_usage   => null,
8369                             x_return_status => x_return_status,
8370                             x_msg_count     => x_msg_count,
8371                             x_msg_data      => x_msg_data);
8372 
8373                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8374                     RAISE FND_API.G_EXC_ERROR;
8375                 END IF;
8376 
8377                 ASO_VALIDATE_PVT.Validate_Party_Object_Type(
8378                             p_init_msg_list	  => FND_API.G_FALSE,
8379                             p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
8380                             x_return_status     => x_return_status,
8381                             x_msg_count         => x_msg_count,
8382                             x_msg_data          => x_msg_data);
8383 
8384                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8385                     RAISE FND_API.G_EXC_ERROR;
8386                 END IF;
8387 
8388             END LOOP;
8389 
8390             IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
8391 
8392                 IF l_hd_Shipment_tbl.count > 0 THEN
8393                     l_shipment_rec := l_hd_Shipment_tbl(1);
8394                 END IF;
8395 
8396                 ASO_VALIDATE_PVT.Validate_item_tca_bsc(
8397 	                       p_init_msg_list	   => FND_API.G_FALSE,
8398                             p_qte_header_rec   => l_qte_header_rec,
8399                             p_shipment_rec     =>   l_shipment_rec,
8400                             p_operation_code   =>   'UPDATE',
8401                             p_application_type_code   =>   l_control_rec.application_type_code,
8402                             x_return_status	   => x_return_status,
8403                             x_msg_count		=> x_msg_count,
8404                             x_msg_data		=> 	x_msg_data);
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             END IF;
8411 
8412       END IF;
8413 
8414       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD THEN
8415 
8416           IF l_qte_header_rec.currency_code IS NULL THEN
8417 
8418               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8419                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
8420                   FND_MESSAGE.Set_Token('COLUMN', 'CURRENCY_CODE', FALSE);
8421                   FND_MSG_PUB.ADD;
8422               END IF;
8423               RAISE FND_API.G_EXC_ERROR;
8424           END IF;
8425 
8426 	     -- tax_exempt_flag must be in 'E', 'R' and 'S'
8427 	     -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
8428 
8429           FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
8430 
8431               ASO_VALIDATE_PVT.Validate_Tax_Exemption (
8432                           p_init_msg_list	      => FND_API.G_FALSE,
8433                           p_tax_exempt_flag	      => l_hd_tax_detail_tbl(i).tax_exempt_flag,
8434                           p_tax_exempt_reason_code => l_hd_tax_detail_tbl(i).tax_exempt_reason_code,
8435                           x_return_status          => x_return_status,
8436                           x_msg_count	           => x_msg_count,
8437                           x_msg_data	           => x_msg_data);
8438 
8439               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8440 
8441                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8442                       FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
8443                       FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
8444                       FND_MSG_PUB.ADD;
8445                   END IF;
8446                   RAISE FND_API.G_EXC_ERROR;
8447               END IF;
8448 
8449           END LOOP;
8450 
8451           FOR i IN 1..p_ln_tax_detail_tbl.count LOOP
8452 
8453               ASO_VALIDATE_PVT.Validate_Tax_Exemption (
8454                           p_init_msg_list	      => FND_API.G_FALSE,
8455                           p_tax_exempt_flag	      => p_ln_tax_detail_tbl(i).tax_exempt_flag,
8456                           p_tax_exempt_reason_code => p_ln_tax_detail_tbl(i).tax_exempt_reason_code,
8457                           x_return_status          => x_return_status,
8458                           x_msg_count	           => x_msg_count,
8459                           x_msg_data	           => x_msg_data);
8460 
8461               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8462 
8463                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8464                       FND_MESSAGE.Set_Name('ASO', 'API_MISSING_COLUMN');
8465                       FND_MESSAGE.Set_Token('COLUMN', 'TAX_EXEMPT_REASON', FALSE);
8466                       FND_MSG_PUB.ADD;
8467                   END IF;
8468 
8469                   RAISE FND_API.G_EXC_ERROR;
8470               END IF;
8471 
8472           END LOOP;
8473 
8474           FOR i in 1..p_hd_quote_party_tbl.count LOOP
8475 
8476               ASO_VALIDATE_PVT.Validate_Party_Object_Id(
8477                           p_init_msg_list     => FND_API.G_FALSE,
8478                           p_party_id          => p_hd_quote_party_tbl(i).party_id,
8479                           p_party_object_type => p_hd_quote_party_tbl(i).party_object_type,
8480                           p_party_object_id   => p_hd_quote_party_tbl(i).party_object_id,
8481                           x_return_status     => x_return_status,
8482                           x_msg_count         => x_msg_count,
8483                           x_msg_data          => x_msg_data);
8484 
8485               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8486 
8487                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8488                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
8489                       FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
8490                       FND_MSG_PUB.ADD;
8491                   END IF;
8492                   RAISE FND_API.G_EXC_ERROR;
8493               END IF;
8494 
8495           END LOOP;
8496 
8497 
8498           IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
8499 
8500                IF l_hd_Shipment_tbl.count > 0 THEN
8501                    l_shipment_rec := l_hd_Shipment_tbl(1);
8502                END IF;
8503 
8504                ASO_VALIDATE_PVT.Validate_record_tca_crs(
8505                            p_init_msg_list	=> FND_API.G_FALSE,
8506                            p_qte_header_rec  => l_qte_header_rec,
8507                            p_shipment_rec    => l_shipment_rec,
8508                            p_operation_code  => 'UPDATE',
8509                            p_application_type_code  => l_control_rec.application_type_code,
8510                            x_return_status	=> x_return_status,
8511                            x_msg_count		=> x_msg_count,
8512                            x_msg_data		=> x_msg_data);
8513 
8514                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8515                    RAISE FND_API.G_EXC_ERROR;
8516                END IF;
8517           END IF;
8518 
8519       END IF;
8520 
8521       IF l_hd_payment_tbl.count > 0 THEN
8522 
8523           FOR payment_rec IN c_payment_rec LOOP
8524                l_payment_db_tbl(payment_rec.payment_id) := payment_rec.payment_option;
8525           END LOOP;
8526 
8527           FOR i IN 1..l_hd_payment_tbl.count LOOP
8528 
8529               IF l_hd_payment_tbl(i).operation_code = 'CREATE' THEN
8530 
8531                   l_payment_db_tbl(NVL(l_payment_db_tbl.last, 0)+1) := l_hd_payment_tbl(i).payment_option;
8532 
8533               ELSIF l_hd_payment_tbl(i).operation_code = 'UPDATE' THEN
8534 
8535                   IF l_hd_payment_tbl(i).payment_id <> FND_API.G_MISS_NUM AND
8536                       l_payment_db_tbl.exists(l_hd_payment_tbl(i).payment_id) AND
8537                       l_hd_payment_tbl(i).payment_option <> FND_API.G_MISS_CHAR THEN
8538 
8539                          l_payment_db_tbl(l_hd_payment_tbl(i).payment_id) := l_hd_payment_tbl(i).payment_option;
8540                   END IF;
8541 
8542               ELSIF l_hd_payment_tbl(i).operation_code = 'DELETE' THEN
8543 
8544                   IF l_hd_payment_tbl(i).payment_id <> FND_API.G_MISS_NUM AND
8545                       l_payment_db_tbl.exists(l_hd_payment_tbl(i).payment_id) THEN
8546 
8547                         l_payment_db_tbl.DELETE(l_hd_payment_tbl(i).payment_id);
8548                   END IF;
8549 
8550               END IF;
8551 
8552           END LOOP;
8553 
8554           IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'N') THEN
8555 
8556         	     IF l_hd_payment_tbl.count > 1 THEN
8557 
8558                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8559 		    	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_SPLIT_PAYMENT');
8560 		    	        FND_MSG_PUB.ADD;
8561                    END IF;
8562                    RAISE FND_API.G_EXC_ERROR;
8563 
8564                ELSIF l_hd_payment_tbl.count = 1 THEN
8565 
8566                    IF l_hd_payment_tbl(1).payment_option = 'SPLIT' THEN
8567 
8568                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8569 			            FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
8570 			            FND_MSG_PUB.ADD;
8571 		             END IF;
8572 		             RAISE FND_API.G_EXC_ERROR;
8573                    END IF;
8574 
8575                END IF;-- l_payment_db_tbl
8576 
8577           END IF;-- FND_PROFILE.Value
8578 
8579 
8580           IF (FND_PROFILE.Value('ASO_ENABLE_SPLIT_PAYMENT') = 'Y') THEN
8581 
8582                IF l_hd_payment_tbl.count > 1 THEN
8583 
8584 	              l_index := l_payment_db_tbl.first;
8585 
8586                    WHILE l_index IS NOT NULL LOOP
8587 
8588                         IF l_payment_db_tbl(l_index) <> 'SPLIT' THEN
8589 
8590 		                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8591 			                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_PAYMENTS');
8592 			                 FND_MSG_PUB.ADD;
8593 		                  END IF;
8594 		                  RAISE FND_API.G_EXC_ERROR;
8595 		              END IF;
8596 		              l_index := l_payment_db_tbl.next(l_index);
8597 	              END LOOP;
8598 
8599 	          END IF;
8600           END IF; ---- FND_PROFILE.Value
8601 
8602 	 END IF;
8603 
8604 
8605       IF l_hd_shipment_tbl.count > 0 THEN
8606 
8607           FOR shipment_rec IN c_shipment_rec LOOP
8608 	         l_shipment_db_tbl(shipment_rec.shipment_id) := NULL;
8609 	     END LOOP;
8610 
8611 	     FOR i IN 1..l_hd_shipment_tbl.count LOOP
8612 
8613                IF l_hd_shipment_tbl(i).operation_code = 'CREATE' THEN
8614 
8615                    l_shipment_db_tbl(NVL(l_shipment_db_tbl.last,0)+1) := NULL;
8616                ELSIF l_hd_shipment_tbl(i).operation_code = 'DELETE' THEN
8617 
8618                    IF l_hd_shipment_tbl(i).shipment_id <> FND_API.G_MISS_NUM AND
8619                       l_shipment_db_tbl.exists(l_hd_shipment_tbl(i).shipment_id) THEN
8620 
8621                        l_shipment_db_tbl.DELETE(l_hd_shipment_tbl(i).shipment_id);
8622                    END IF;
8623                END IF;
8624 
8625 	     END LOOP;
8626 
8627 	     IF l_shipment_db_tbl.count > 1 THEN
8628 
8629 		    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8630 			   FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENTS');
8631 			   FND_MSG_PUB.ADD;
8632 		    END IF;
8633 		    RAISE FND_API.G_EXC_ERROR;
8634 	     END IF;
8635 
8636 	 END IF;
8637 
8638 	 --   Validate Tax; ( there should be only one rec having NOT NULL orig_tax_code)
8639 	 IF l_hd_tax_detail_tbl.count > 0 THEN
8640 
8641           FOR tax_rec IN c_tax_rec LOOP
8642               l_tax_db_tbl(tax_rec.tax_detail_id) := NULL;
8643           END LOOP;
8644 
8645           FOR i IN 1..l_hd_tax_detail_tbl.count LOOP
8646 
8647                IF l_hd_tax_detail_tbl(i).operation_code ='CREATE' THEN
8648 
8649                        l_tax_db_tbl(NVL(l_tax_db_tbl.last,0)+1) := NULL;
8650 
8651                ELSIF l_hd_tax_detail_tbl(i).operation_code ='DELETE' AND
8652                      l_hd_tax_detail_tbl(i).tax_detail_id <> FND_API.G_MISS_NUM AND
8653                      l_tax_db_tbl.exists(l_hd_tax_detail_tbl(i).tax_detail_id) THEN
8654 
8655                        l_tax_db_tbl.delete(l_hd_tax_detail_tbl(i).tax_detail_id);
8656                END IF;
8657 
8658           END LOOP;
8659 
8660 	     IF l_tax_db_tbl.count > 1 THEN
8661 
8662               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8663                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_TAX_RECORDS');
8664                   FND_MSG_PUB.ADD;
8665               END IF;
8666               RAISE FND_API.G_EXC_ERROR;
8667 
8668           END IF;
8669 
8670       END IF;
8671 
8672 
8673       IF l_auto_version = 'Y' THEN
8674 
8675 	       l_old_header_rec := ASO_UTILITY_PVT.Query_Header_Row(l_qte_header_rec.QUOTE_HEADER_ID);
8676 
8677             -- updating the existing version to a higher version
8678             -- this is done here because copy quote will fail to
8679             -- insert duplicate quote number/version
8680 
8681             l_copy_quote_control_rec.new_version     :=  FND_API.G_TRUE;
8682             l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
8683 
8684             aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
8685                                            P_Init_Msg_List           =>  FND_API.G_FALSE,
8686                                            P_Commit                  =>  FND_API.G_FALSE,
8687                                            P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
8688                                            P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
8689                                            X_Qte_Header_Id           =>  l_qte_header_id,
8690                                            X_Qte_Number              =>  l_quote_number,
8691                                            X_Return_Status           =>  l_return_status,
8692                                            X_Msg_Count               =>  x_msg_count,
8693                                            X_Msg_Data                =>  x_msg_data
8694                                           );
8695 
8696             IF aso_debug_pub.g_debug_flag = 'Y' THEN
8697 		      aso_debug_pub.add('Update_Quote: After copy_quote l_return_status: ' || l_return_status);
8698                 aso_debug_pub.add('Update_Quote: After copy_quote l_qte_header_id: ' || l_qte_header_id);
8699                 aso_debug_pub.add('Update_Quote: After copy_quote l_quote_number:  ' || l_quote_number);
8700 		  END IF;
8701 
8702             update aso_quote_headers_all
8703             set quote_version      =  l_qte_header_rec.quote_version + 1,
8704                 max_version_flag   =  'Y',
8705                 creation_date      =  sysdate
8706             where quote_header_id = l_qte_header_rec.quote_header_id;
8707 
8708             update aso_quote_headers_all
8709             set max_version_flag      =  'N',
8710                 quote_version         =  l_old_header_rec.quote_version,
8711                 quote_status_id       =  l_old_header_rec.quote_status_id,
8712                 creation_date         =  l_old_header_rec.creation_date,
8713 			 created_by            =  l_old_header_rec.created_by,
8714 			 last_update_date      =  sysdate,
8715                 last_updated_by       =  g_user_id,
8716                 last_update_login     =  g_login_id
8717             where quote_header_id = l_qte_header_id;
8718 
8719             update aso_quote_headers_all
8720             set quote_version         =  l_qte_header_rec.quote_version,
8721                 last_update_date      =  sysdate,
8722 			 created_by            =  g_user_id,
8723 			 last_updated_by       =  g_user_id,
8724                 last_update_login     =  g_login_id
8725             where quote_header_id = l_qte_header_rec.quote_header_id;
8726 
8727             open  c_last_update_date(l_qte_header_rec.quote_header_id);
8728             fetch c_last_update_date into l_qte_header_rec.last_update_date;
8729             close c_last_update_date;
8730 
8731             l_control_rec.last_update_date  :=  l_qte_header_rec.last_update_date;
8732 
8733             IF aso_debug_pub.g_debug_flag = 'Y' THEN
8734                 aso_debug_pub.add('Update_Quote: After updating aso_quote_headers_all table for auto versioning.');
8735                 aso_debug_pub.add('l_qte_header_rec.last_update_date: '|| l_qte_header_rec.last_update_date);
8736                 aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
8737             END IF;
8738 
8739       END IF;
8740 
8741 
8742       l_index := 1;
8743 
8744       FOR i IN 1..p_price_adjustment_tbl.count LOOP
8745 
8746 	      IF (p_price_adjustment_tbl(i).qte_line_index IS NULL OR
8747 		     p_price_adjustment_tbl(i).qte_line_index = FND_API.G_MISS_NUM) AND
8748 	         (p_price_adjustment_tbl(i).quote_line_id IS NULL OR
8749 		     p_price_adjustment_tbl(i).quote_line_id = FND_API.G_MISS_NUM) THEN
8750 
8751 		       l_price_adj_tbl(l_index)  := p_price_adjustment_tbl(i);
8752 		       l_prc_index_link(l_index) := i;
8753 		       l_prc_index_link_rev(i)   := l_index;
8754 		       l_index                   := l_index + 1;
8755 	      END IF;
8756 
8757       END LOOP;
8758 
8759       FOR i IN 1..p_price_adj_attr_tbl.count LOOP
8760 
8761            IF (p_price_adj_attr_tbl(i).qte_line_index IS NULL OR
8762 		     p_price_adj_attr_tbl(i).qte_line_index = FND_API.G_MISS_NUM) THEN
8763 
8764 	            l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(i);
8765 
8766 	            IF p_price_adj_attr_tbl(i).price_adj_index <> FND_API.G_MISS_NUM AND
8767 		          l_prc_index_link_rev.exists(p_price_adj_attr_tbl(i).price_adj_index) THEN
8768 
8769 		             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);
8770 	            END IF;
8771 
8772                  l_index := l_index + 1;
8773 	      END IF;
8774 
8775       END LOOP;
8776 
8777 
8778       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
8779 
8780            IF l_hd_shipment_tbl.count > 0 THEN
8781                 l_hd_shipment_tbl(1) := l_hd_shipment_tbl(1);
8782                 l_shipment_rec       := l_hd_shipment_tbl(1);
8783            END IF;
8784 
8785            ASO_VALIDATE_PVT.Validate_record_tca_crs(
8786         	             p_init_msg_list	 => FND_API.G_FALSE,
8787         	             p_qte_header_rec  => l_qte_header_rec,
8788         	             p_shipment_rec    => l_shipment_rec,
8789         	             p_operation_code  => 'UPDATE',
8790         	             p_application_type_code  => l_control_rec.application_type_code,
8791         	             x_return_status	 => x_return_status,
8792                        x_msg_count		 => x_msg_count,
8793                        x_msg_data		 => x_msg_data);
8794 
8795            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8796                RAISE FND_API.G_EXC_ERROR;
8797            END IF;
8798 
8799        -- bug 5196952 validate the ship method code if the ship method gets updated or the org gets updated
8800        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')
8801           or (P_Qte_Header_Rec.org_id is not null and P_Qte_Header_Rec.org_id <> fnd_api.g_miss_num)) THEN
8802 
8803           -- get the value from db if not passed in
8804          IF (P_Qte_Header_Rec.org_id is null or P_Qte_Header_Rec.org_id = fnd_api.g_miss_num ) THEN
8805           OPEN c_org_id(l_qte_header_rec.quote_header_id);
8806           FETCH c_org_id into l_quote_org_id;
8807           CLOSE c_org_id;
8808 	    ELSE
8809 	      l_quote_org_id := P_Qte_Header_Rec.org_id;
8810          END IF;
8811 
8812           -- get the master org id from the quote hdr org id
8813           OPEN c_inv_org_id(l_quote_org_id);
8814           FETCH c_inv_org_id into l_master_organization_id;
8815           CLOSE c_inv_org_id;
8816 
8817           IF aso_debug_pub.g_debug_flag = 'Y' THEN
8818            aso_debug_pub.add('Update_Quote - l_shipment_rec.ship_method_code:  '|| l_shipment_rec.ship_method_code, 1, 'N');
8819            aso_debug_pub.add('Update_Quote - P_Qte_Header_Rec.org_id:   '|| P_Qte_Header_Rec.org_id, 1, 'N');
8820            aso_debug_pub.add('Update_Quote - l_master_organization_id:  '|| l_master_organization_id, 1, 'N');
8821            aso_debug_pub.add('Update_Quote - l_quote_org_id         :   '|| l_quote_org_id, 1, 'N');
8822            aso_debug_pub.add('Update_Quote - before validate ship_method_code ', 1, 'N');
8823           end if;
8824          ASO_VALIDATE_PVT.validate_ship_method_code
8825          (
8826           p_init_msg_list          => fnd_api.g_false,
8827           p_qte_header_id          => l_qte_header_rec.quote_header_id,
8828           p_qte_line_id            => fnd_api.g_miss_num,
8829           p_organization_id        => l_master_organization_id,
8830           p_ship_method_code       => l_shipment_rec.ship_method_code,
8831           p_operation_code         => l_shipment_rec.operation_code,
8832           x_return_status          => x_return_status,
8833           x_msg_count              => x_msg_count,
8834           x_msg_data               => x_msg_data);
8835 
8836           IF aso_debug_pub.g_debug_flag = 'Y' THEN
8837            aso_debug_pub.add('Update_Quote - After validate ship_method_code ', 1, 'N');
8838           end if;
8839 
8840           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8841               RAISE FND_API.G_EXC_ERROR;
8842           END IF;
8843         end if;  -- end if for ship method code check
8844 
8845       END IF;
8846 
8847       ASO_CHECK_TCA_PVT.check_tca(
8848                    p_api_version         => 1.0,
8849                    p_init_msg_list       => FND_API.G_FALSE,
8850                    P_Qte_Rec             => l_qte_header_rec,
8851     		         p_Header_Shipment_Tbl => l_hd_Shipment_Tbl,
8852                    P_Operation_Code      => 'UPDATE',
8853                    p_application_type_code      => l_control_rec.application_type_code,
8854                    x_return_status       => x_return_status,
8855                    x_msg_count           => x_msg_count,
8856                    x_msg_data            => x_msg_data);
8857 
8858     	 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8859     	     RAISE FND_API.G_EXC_ERROR;
8860     	 END IF;
8861 
8862       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8863           aso_debug_pub.add('Update_Quote - before Validate_Agreement:l_qte_header_rec.contract_id: '||l_qte_header_rec.contract_id, 1, 'N');
8864       END IF;
8865 
8866       IF (l_qte_header_rec.contract_id IS NOT NULL AND
8867           l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
8868 
8869            ASO_VALIDATE_PVT.Validate_Agreement(
8870                       p_init_msg_list    => FND_API.G_FALSE,
8871                       P_Agreement_Id     => l_qte_header_rec.contract_id,
8872                       x_return_status    => x_return_status,
8873                       x_msg_count        => x_msg_count,
8874                       x_msg_data         => x_msg_data);
8875 
8876            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8877                aso_debug_pub.add('Update_Quote - after Validate_Agreement:x_return_status: '||x_return_status, 1, 'N');
8878 		 END IF;
8879 
8880            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8881                RAISE FND_API.G_EXC_ERROR;
8882            END IF;
8883 
8884       END IF;
8885 
8886       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8887 	     aso_debug_pub.add('Update_Quote: l_qte_header_rec.minisite_id: '|| l_qte_header_rec.minisite_id);
8888 	 END IF;
8889 
8890       IF (l_qte_header_rec.minisite_id IS NOT NULL AND
8891           l_qte_header_rec.minisite_id <> FND_API.G_MISS_NUM) THEN
8892 
8893            ASO_VALIDATE_PVT.Validate_MiniSite( p_init_msg_list => FND_API.G_FALSE,
8894                                                p_minisite_id   => l_qte_header_rec.minisite_id,
8895                                                x_return_status => x_return_status,
8896                                                x_msg_count     => x_msg_count,
8897                                                x_msg_data      => x_msg_data);
8898 
8899            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8900 		     aso_debug_pub.add('Update_Quote: After call to ASO_VALIDATE_PVT.Validate_MiniSite');
8901                aso_debug_pub.add('Update_Quote: x_return_status: '|| x_return_status);
8902 		 END IF;
8903 
8904            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8905                RAISE FND_API.G_EXC_ERROR;
8906            END IF;
8907 
8908       END IF;
8909 
8910       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8911 	     aso_debug_pub.add('Update_Quote: Before call to update_rows procedures', 1, 'Y');
8912 	 END IF;
8913 
8914       Update_Rows (
8915 			p_qte_header_rec	    => l_qte_header_rec,
8916 			p_Price_Attributes_Tbl  => p_hd_price_attributes_tbl,
8917 			P_Price_Adjustment_Tbl  => l_price_adj_tbl,
8918 			P_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl,
8919 			P_Payment_Tbl		    => l_hd_payment_tbl,
8920 			P_Shipment_Tbl		    => l_hd_shipment_tbl,
8921 			P_Freight_Charge_Tbl    => p_hd_freight_charge_tbl,
8922 			P_Tax_Detail_Tbl	    => l_hd_tax_detail_tbl,
8923                P_hd_Attr_Ext_Tbl	    => P_hd_Attr_Ext_Tbl,
8924                P_sales_credit_tbl      => p_hd_sales_credit_tbl,
8925                P_quote_party_tbl       => p_hd_quote_party_tbl,
8926                P_Qte_Access_Tbl        => P_Qte_Access_Tbl,
8927 			x_qte_header_rec        => x_qte_header_rec,
8928 			x_Price_Attributes_Tbl  => x_hd_price_attributes_tbl,
8929 			x_Price_Adjustment_Tbl  => l_price_adj_tbl_out,
8930 			x_Price_Adj_Attr_Tbl    => l_price_adj_attr_tbl_out,
8931 			x_Payment_Tbl		    => x_hd_payment_tbl,
8932 			x_Shipment_Tbl		    => x_hd_shipment_tbl,
8933 			x_Freight_Charge_Tbl    => x_hd_freight_charge_tbl,
8934 			x_Tax_Detail_Tbl        => x_hd_tax_detail_tbl,
8935                x_hd_Attr_Ext_Tbl       => x_hd_Attr_Ext_Tbl,
8936                x_sales_credit_tbl      => x_hd_sales_credit_tbl,
8937                x_quote_party_tbl       => x_hd_quote_party_tbl,
8938                x_Qte_Access_Tbl        => x_Qte_Access_Tbl,
8939 			X_Return_Status 	    => l_return_status,
8940 			X_Msg_Count		    => x_msg_count,
8941 			X_Msg_Data		    => x_msg_data);
8942 
8943       l_price_adj_tbl       :=  l_price_adj_tbl_out;
8944       l_price_adj_attr_tbl  :=  l_price_adj_attr_tbl_out;
8945 
8946       IF aso_debug_pub.g_debug_flag = 'Y' THEN
8947           aso_debug_pub.add('Update_Quote: After call to update_rows: l_return_status: ' || l_return_status, 1, 'Y');
8948           aso_debug_pub.add('Update_Quote: value of ASO_API_ENABLE_SECURITY: ' || FND_PROFILE.value('ASO_API_ENABLE_SECURITY'), 1, 'Y');
8949       END IF;
8950 
8951       -- Add template rows to p_qte_line_tbl and p_qte_line_dtl tbales
8952 
8953       if aso_debug_pub.g_debug_flag = 'Y' then
8954           aso_debug_pub.add('Update_Quote: p_template_tbl.count: ' || p_template_tbl.count, 1, 'Y');
8955       end if;
8956 
8957       if p_template_tbl.count > 0 then
8958 
8959 	    for i in 1..p_template_tbl.count loop
8960 	        l_template_tbl(i) := p_template_tbl(i).template_id;
8961 	    end loop;
8962 
8963 	    if x_qte_header_rec.currency_code is null or x_qte_header_rec.currency_code = fnd_api.g_miss_char then
8964 	        x_qte_header_rec.currency_code := l_currency_code;
8965          end if;
8966 
8967 	    if x_qte_header_rec.price_list_id is null or x_qte_header_rec.price_list_id = fnd_api.g_miss_num then
8968 	        x_qte_header_rec.price_list_id := l_price_list_id;
8969          end if;
8970 
8971 
8972 	    if x_qte_header_rec.cust_account_id is null or x_qte_header_rec.cust_account_id = fnd_api.g_miss_num then
8973 	       x_qte_header_rec.cust_account_id := l_cust_account_id;
8974 	    end if;
8975 
8976          if aso_debug_pub.g_debug_flag = 'Y' then
8977              aso_debug_pub.add('Update_Quote: l_template_tbl.count: ' || l_template_tbl.count, 1, 'Y');
8978              aso_debug_pub.add('Update_Quote: Before call to aso_quote_templ_pvt.add_template_to_quote procedure', 1, 'Y');
8979          end if;
8980 
8981 	    aso_quote_tmpl_pvt.add_template_to_quote(
8982                    p_api_version_number => 1.0,
8983                    p_init_msg_list      => fnd_api.g_false,
8984                    p_commit             => fnd_api.g_false,
8985                    p_validation_level	=> p_validation_level,
8986                    p_update_flag        => 'N',
8987                    p_template_id_tbl    => l_template_tbl,
8988                    p_qte_header_rec     => x_qte_header_rec,
8989                    p_control_rec        => p_control_rec,
8990                    x_qte_line_tbl       => lx_qte_line_tbl,
8991                    x_qte_line_dtl_tbl   => x_qte_line_dtl_tbl,
8992                    x_return_status      => x_return_status,
8993                    x_msg_count          => x_msg_count,
8994                    x_msg_data           => x_msg_data
8995                    );
8996 
8997 
8998          if aso_debug_pub.g_debug_flag = 'Y' then
8999 
9000 	        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');
9001 	        aso_debug_pub.add('Update_Quote: lx_qte_line_tbl.count:    ' || lx_qte_line_tbl.count, 1, 'Y');
9002 	        aso_debug_pub.add('Update_Quote: x_qte_line_dtl_tbl.count: ' || x_qte_line_dtl_tbl.count, 1, 'Y');
9003 
9004 	        for i in 1 .. lx_qte_line_tbl.count loop
9005 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').inventory_item_id: '|| lx_qte_line_tbl(i).inventory_item_id, 1, 'N');
9006 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').uom_code:          '|| lx_qte_line_tbl(i).uom_code, 1, 'N');
9007 	             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl('||i||').quantity:          '|| lx_qte_line_tbl(i).quantity, 1, 'N');
9008 	        end loop;
9009 
9010              for i in 1 .. x_qte_line_dtl_tbl.count loop
9011 
9012 	             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');
9013 	             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');
9014 	             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');
9015 	             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');
9016 
9017 		   end loop;
9018 
9019          end if;
9020 
9021 
9022 	    if lx_qte_line_tbl.count > 0 then
9023 
9024 	         l_qte_line_dtl_tbl_out := x_qte_line_dtl_tbl;
9025 
9026               for i in 1 .. lx_qte_line_tbl.count loop
9027 
9028                    l_count  :=  ls_qte_line_tbl.count;   -- bug 9433340
9029 
9030                    ls_qte_line_tbl(l_count + 1) := lx_qte_line_tbl(i); -- bug  9433340
9031 
9032                    for j in 1 .. x_qte_line_dtl_tbl.count loop
9033 
9034                         if x_qte_line_dtl_tbl(j).qte_line_index = i then
9035                             l_qte_line_dtl_tbl_out(j).qte_line_index := l_count + 1;
9036                         end if;
9037 
9038                         if x_qte_line_dtl_tbl(j).ref_line_index = i then
9039                             l_qte_line_dtl_tbl_out(j).ref_line_index := l_count + 1;
9040                         end if;
9041 
9042                         if x_qte_line_dtl_tbl(j).service_ref_qte_line_index = i then
9043                             l_qte_line_dtl_tbl_out(j).service_ref_qte_line_index := l_count + 1;
9044                         end if;
9045 
9046                         if x_qte_line_dtl_tbl(j).top_model_line_index = i then
9047                             l_qte_line_dtl_tbl_out(j).top_model_line_index := l_count + 1;
9048                         end if;
9049 
9050                         if x_qte_line_dtl_tbl(j).ato_line_index = i then
9051                             l_qte_line_dtl_tbl_out(j).ato_line_index := l_count + 1;
9052                         end if;
9053 
9054                    end loop;
9055 
9056               end loop;
9057 
9058               if l_qte_line_dtl_tbl_out.count > 0 then
9059 
9060                    for i in 1 .. l_qte_line_dtl_tbl_out.count loop
9061                         lx_qte_line_dtl_tbl(lx_qte_line_dtl_tbl.count + 1) := l_qte_line_dtl_tbl_out(i);
9062                    end loop;
9063 
9064               end if;
9065 
9066          end if; -- if lx_qte_line_tbl.count > 0 then
9067 
9068       end if; --if p_template_tbl.count > 0 then
9069 
9070 
9071 	 if aso_debug_pub.g_debug_flag = 'Y' then
9072 
9073 	     aso_debug_pub.add('Update_Quote: ls_qte_line_tbl.count:      ' || ls_qte_line_tbl.count, 1, 'Y');  -- bug 9433340
9074 	     aso_debug_pub.add('Update_Quote: lx_qte_line_dtl_tbl.count: ' || lx_qte_line_dtl_tbl.count, 1, 'Y');
9075 
9076 	     for i in 1 .. ls_qte_line_tbl.count loop -- bug 9433340
9077 	          aso_debug_pub.add('Update_Quote: ls_qte_line_tbl('||i||').inventory_item_id: '|| ls_qte_line_tbl(i).inventory_item_id, 1, 'N');
9078 	          aso_debug_pub.add('Update_Quote: ls_qte_line_tbl('||i||').uom_code:          '|| ls_qte_line_tbl(i).uom_code, 1, 'N');
9079 	          aso_debug_pub.add('Update_Quote: ls_qte_line_tbl('||i||').quantity:          '|| ls_qte_line_tbl(i).quantity, 1, 'N');
9080 	     end loop;
9081 
9082           for i in 1 .. lx_qte_line_dtl_tbl.count loop
9083 
9084 	          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');
9085 	          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');
9086 	          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');
9087 	          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');
9088 	          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');
9089 	          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');
9090 	          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');
9091 	          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');
9092 
9093 		end loop;
9094 
9095 	 end if;
9096 
9097       -- End of Add template rows
9098                IF aso_debug_pub.g_debug_flag = 'Y' THEN
9099 			 aso_debug_pub.add('Update_Quote: value of p_qte_header_rec.quote_type: ' || p_qte_header_rec.quote_type, 1, 'Y');
9100 			 aso_debug_pub.add('Update_Quote: value of l_qte_header_rec.resource_id: ' || l_qte_header_rec.resource_id, 1, 'Y');
9101 			 aso_debug_pub.add('Update_Quote: value of l_qte_header_rec.resource_grp_id: ' || l_qte_header_rec.resource_grp_id, 1, 'Y');
9102 			END IF;
9103 
9104       IF (NVL(FND_PROFILE.value('ASO_API_ENABLE_SECURITY'),'N') = 'Y' AND NVL(p_qte_header_rec.quote_type, 'X') <> 'T')  THEN
9105 
9106             /* Bug4869321,4600313 */
9107 		  IF  (l_qte_header_rec.resource_id IS NULL OR l_qte_header_rec.resource_id = FND_API.G_MISS_NUM) THEN
9108 
9109                OPEN C_Get_Hdr_Resource_Id(l_qte_header_rec.quote_header_id);
9110                FETCH C_Get_Hdr_Resource_Id INTO l_qte_header_rec.resource_id;
9111                CLOSE C_Get_Hdr_Resource_Id;
9112 
9113            END IF;
9114 
9115            IF l_qte_header_rec.resource_id IS NOT NULL AND l_qte_header_rec.resource_id <> FND_API.G_MISS_NUM THEN
9116 
9117                OPEN C_Check_Store_Status(l_qte_status_id, l_qte_header_rec.quote_status_id);
9118                FETCH C_Check_Store_Status INTO l_store_trans;
9119                CLOSE C_Check_Store_Status;
9120 
9121                lx_qte_header_rec := x_qte_header_rec;
9122 
9123                IF aso_debug_pub.g_debug_flag = 'Y' THEN
9124                    aso_debug_pub.add('Update_Quote - before assign_sales_team l_store_trans: '||l_store_trans, 1, 'Y');
9125                    aso_debug_pub.add('Update_Quote - before assign_sales_team l_sales_team_prof: '||l_sales_team_prof, 1, 'Y');
9126                END IF;
9127 
9128                IF (l_store_trans IS NOT NULL AND l_store_trans = 'Y') AND
9129                   (l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL') THEN
9130 
9131 
9132                     ASO_SALES_TEAM_PVT.Assign_Sales_Team (
9133                                   P_Init_Msg_List    => FND_API.G_FALSE,
9134                                   P_Commit           => FND_API.G_FALSE,
9135                                   p_Qte_Header_Rec   => x_qte_header_rec,
9136                                   P_Operation        => 'UPDATE',
9137                                   x_Qte_Header_Rec   => lx_qte_header_rec,
9138                                   x_return_status    => x_return_status,
9139                                   x_msg_count        => x_msg_count,
9140                                   x_msg_data         => x_msg_data);
9141 
9142                     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9143                         RAISE FND_API.G_EXC_ERROR;
9144                     END IF;
9145 
9146                     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9147                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9148                     END IF;
9149 
9150                ELSE -- store_trans, sales_team_prof
9151 
9152                     l_qte_access_rec                          := ASO_SECURITY_INT.G_MISS_QTE_ACCESS_REC;
9153                     -- l_qte_access_rec.QUOTE_NUMBER          := l_qte_header_rec.quote_number;
9154                     l_qte_access_rec.QUOTE_NUMBER             := l_qte_number;
9155                     l_qte_access_rec.RESOURCE_ID              := l_qte_header_rec.resource_id;
9156                     l_qte_access_rec.RESOURCE_GRP_ID          := l_qte_header_rec.resource_grp_id;
9157                     l_qte_access_rec.CREATED_BY               := G_USER_ID;
9158                     l_qte_access_rec.CREATION_DATE            := SYSDATE;
9159                     l_qte_access_rec.LAST_UPDATED_BY          := G_USER_ID;
9160                     l_qte_access_rec.LAST_UPDATE_LOGIN        := G_LOGIN_ID;
9161                     l_qte_access_rec.LAST_UPDATE_DATE         := SYSDATE;
9162                     l_qte_access_rec.REQUEST_ID               := l_qte_header_rec.request_id;
9163                     l_qte_access_rec.PROGRAM_APPLICATION_ID   := l_qte_header_rec.program_application_id;
9164                     l_qte_access_rec.PROGRAM_ID               := l_qte_header_rec.program_id;
9165                     l_qte_access_rec.PROGRAM_UPDATE_DATE      := l_qte_header_rec.program_update_date;
9166 
9167                     IF (l_store_trans IS NOT NULL AND l_store_trans = 'Y') THEN
9168                          l_qte_access_rec.KEEP_FLAG                := 'N';
9169                     END IF;
9170 
9171                     -- bug 4867690 if primary salesrep is changed then new prim salesrep should have full access
9172                     l_qte_access_rec.UPDATE_ACCESS_FLAG       := 'Y';
9173                     -- bug 4923573
9174                     l_qte_access_rec.batch_price_flag         := FND_API.G_FALSE;
9175                     l_qte_access_tbl(1)                       := l_qte_access_rec;
9176 
9177                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9178 		              aso_debug_pub.add('Update_Quote: before Add_Resource: l_qte_header_rec.resource_id:    ' || l_qte_header_rec.resource_id, 1, 'Y');
9179                         aso_debug_pub.add('Update_Quote: before Add_Resource', 1, 'Y');
9180 		          END IF;
9181 
9182                     ASO_SECURITY_INT.Add_Resource(
9183                                 P_INIT_MSG_LIST              => FND_API.G_FALSE,
9184                                 P_COMMIT                     => FND_API.G_FALSE,
9185                                 P_Qte_Access_tbl             => l_qte_access_tbl,
9186                                 X_Qte_Access_tbl             => l_qte_access_tbl_out,
9187                                 X_RETURN_STATUS              => x_return_status,
9188                                 X_msg_count                  => X_msg_count,
9189                                 X_msg_data                   => X_msg_data);
9190 
9191                     l_qte_access_tbl  :=  l_qte_access_tbl_out;
9192 
9193                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9194 		              aso_debug_pub.add('Update_Quote: after Add_Resource: x_return_status: ' || x_return_status, 1, 'Y');
9195 		          END IF;
9196 
9197                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9198                         RAISE FND_API.G_EXC_ERROR;
9199                     END IF;
9200 
9201                     open  c_last_update_date(x_qte_header_rec.quote_header_id);
9202                     fetch c_last_update_date into x_qte_header_rec.last_update_date;
9203                     close c_last_update_date;
9204 
9205                     l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
9206 
9207                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9208                         aso_debug_pub.add('Update_Quote: After call to Add_Resource.');
9209                         aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
9210                         aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
9211                     END IF;
9212 
9213                END IF; -- steam_prof, store_trans
9214 
9215                OPEN C_Get_SCredit_Exists(x_qte_header_rec.quote_header_id);
9216                FETCH C_Get_SCredit_Exists INTO l_scredit_exists;
9217                CLOSE C_Get_SCredit_Exists;
9218 
9219        aso_debug_pub.add('l_scredit_exists: '||l_scredit_exists);
9220 
9221          IF x_hd_sales_credit_tbl.count < 1 AND (l_scredit_exists = 'N' OR l_scredit_exists IS NULL) THEN
9222 
9223           OPEN C_Get_Quota_Credit_Type;
9224           FETCH C_Get_Quota_Credit_Type INTO l_quota_id;
9225           CLOSE C_Get_Quota_Credit_Type;
9226 
9227        aso_debug_pub.add('l_quota_id: '||l_quota_id);
9228        x_hd_sales_credit_tbl(1) := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_REC;
9229        aso_debug_pub.add('after assign x_hd_sales_credit_tbl.count: '||x_hd_sales_credit_tbl.count);
9230 
9231           ASO_SALES_CREDITS_PKG.Insert_Row(
9232           p_CREATION_DATE  => SYSDATE,
9233           p_CREATED_BY  => G_USER_ID,
9234           p_LAST_UPDATED_BY  => G_USER_ID,
9235           p_LAST_UPDATE_DATE  => SYSDATE,
9236           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
9237           p_REQUEST_ID  => FND_API.G_MISS_NUM,
9238           p_PROGRAM_APPLICATION_ID  => FND_API.G_MISS_NUM,
9239           p_PROGRAM_ID  => FND_API.G_MISS_NUM,
9240           p_PROGRAM_UPDATE_DATE  => FND_API.G_MISS_DATE,
9241           px_SALES_CREDIT_ID  => x_hd_sales_credit_tbl(1).Sales_Credit_Id,
9242           p_QUOTE_HEADER_ID  => l_qte_header_rec.QUOTE_HEADER_ID,
9243           p_QUOTE_LINE_ID  => FND_API.G_MISS_NUM,
9244           p_PERCENT  => 100,
9245           p_RESOURCE_ID  => l_qte_header_rec.RESOURCE_ID,
9246           p_RESOURCE_GROUP_ID  => l_qte_header_rec.RESOURCE_GRP_ID,
9247           p_EMPLOYEE_PERSON_ID  => FND_API.G_MISS_NUM,
9248           p_SALES_CREDIT_TYPE_ID  => l_quota_id,
9249           p_ATTRIBUTE_CATEGORY_CODE  => FND_API.G_MISS_CHAR,
9250           p_ATTRIBUTE1  => FND_API.G_MISS_CHAR,
9251           p_ATTRIBUTE2  => FND_API.G_MISS_CHAR,
9252           p_ATTRIBUTE3  => FND_API.G_MISS_CHAR,
9253           p_ATTRIBUTE4  => FND_API.G_MISS_CHAR,
9254           p_ATTRIBUTE5  => FND_API.G_MISS_CHAR,
9255           p_ATTRIBUTE6  => FND_API.G_MISS_CHAR,
9256           p_ATTRIBUTE7  => FND_API.G_MISS_CHAR,
9257           p_ATTRIBUTE8  => FND_API.G_MISS_CHAR,
9258           p_ATTRIBUTE9  => FND_API.G_MISS_CHAR,
9259           p_ATTRIBUTE10  => FND_API.G_MISS_CHAR,
9260           p_ATTRIBUTE11  => FND_API.G_MISS_CHAR,
9261           p_ATTRIBUTE12  => FND_API.G_MISS_CHAR,
9262           p_ATTRIBUTE13  => FND_API.G_MISS_CHAR,
9263           p_ATTRIBUTE14  => FND_API.G_MISS_CHAR,
9264           p_ATTRIBUTE15  => FND_API.G_MISS_CHAR,
9265           p_ATTRIBUTE16  => FND_API.G_MISS_CHAR,
9266           p_ATTRIBUTE17  => FND_API.G_MISS_CHAR,
9267           p_ATTRIBUTE18  => FND_API.G_MISS_CHAR,
9268           p_ATTRIBUTE19  => FND_API.G_MISS_CHAR,
9269           p_ATTRIBUTE20  => FND_API.G_MISS_CHAR,
9270           p_SYSTEM_ASSIGNED_FLAG  => 'N',
9271           p_CREDIT_RULE_ID  => FND_API.G_MISS_NUM,
9272           p_OBJECT_VERSION_NUMBER  => FND_API.G_MISS_NUM);
9273 
9274        aso_debug_pub.add('After Insert SCred ');
9275          END IF; -- sales_cred_tbl.count
9276 
9277         END IF; -- resource_id
9278 
9279     END IF;
9280 
9281     -- end security changes
9282 
9283     --  Related Quote Objects Changes
9284       IF aso_debug_pub.g_debug_flag = 'Y' THEN
9285           aso_debug_pub.add('Before processing  object relationship ', 1, 'Y');
9286       END IF;
9287 
9288       IF P_Related_Obj_Tbl.count > 0 THEN
9289 
9290         For i in 1..P_Related_Obj_Tbl.count LOOP
9291 
9292           l_related_obj_rec := P_Related_Obj_Tbl(i);
9293 
9294 
9295           -- logic to populate the operation code
9296           Open c_obj_id(l_qte_header_rec.quote_header_id);
9297           Fetch c_obj_id INTO l_obj_id;
9298           IF c_obj_id%NOTFOUND THEN
9299             IF aso_debug_pub.g_debug_flag = 'Y' THEN
9300                aso_debug_pub.add(' Setting the operation code for rel obj tbl ', 1, 'Y');
9301                aso_debug_pub.add(' Obj id in rel obj rec is : '|| to_char(l_related_obj_rec.object_id), 1, 'Y');
9302             END IF;
9303             IF l_related_obj_rec.object_id IS NOT NULL THEN
9304               l_related_obj_rec.operation_code := 'CREATE';
9305             END IF;
9306 
9307 
9308            ELSE
9309              IF ((l_obj_id IS NOT NULL) AND (l_obj_id <> l_related_obj_rec.object_id)
9310 		     AND (l_related_obj_rec.object_id IS NOT NULL)  ) THEN
9311                 l_related_obj_rec.operation_code := 'UPDATE';
9312              END IF;
9313 
9314              IF (( l_obj_id is NOT NULL) AND (l_related_obj_rec.object_id IS NULL) ) THEN
9315                 l_related_obj_rec.operation_code := 'DELETE';
9316              END IF;
9317 
9318              IF ( l_obj_id = l_related_obj_rec.object_id) then
9319                 l_related_obj_rec.operation_code := null;
9320              END IF;
9321 
9322           END IF;
9323           Close c_obj_id;
9324 
9325             IF aso_debug_pub.g_debug_flag = 'Y' THEN
9326                aso_debug_pub.add(' the operation code for rel obj tbl '||l_related_obj_rec.operation_code, 1, 'Y');
9327             END IF;
9328 
9329 
9330 
9331          IF l_related_obj_rec.operation_code = 'CREATE' THEN
9332 
9333           l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
9334           x_related_obj_rec := l_related_obj_rec;
9335 
9336 
9337             ASO_RLTSHIP_PUB.Create_Object_Relationship(
9338               P_Api_Version_Number         => 1.0,
9339               P_Init_Msg_List              => FND_API.G_FALSE,
9340               P_Commit                     => FND_API.G_FALSE,
9341               p_validation_level           => p_validation_level,
9342               P_RELATED_OBJ_Rec            => l_related_obj_rec,
9343               X_related_object_id          => x_related_obj_rec.related_object_id,
9344               X_Return_Status              => X_Return_Status,
9345               X_Msg_Count                  => X_Msg_Count,
9346               X_Msg_Data                   => X_Msg_Data);
9347 
9348               X_Related_Obj_Tbl(i) := x_related_obj_rec;
9349 
9350               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9351                  aso_debug_pub.add('Update_Quote: After call to Create_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
9352               END IF;
9353 
9354               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9355                     RAISE FND_API.G_EXC_ERROR;
9356               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9357                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9358               END IF;
9359 
9360         ELSIF l_related_obj_rec.operation_code = 'UPDATE' THEN
9361 
9362           IF ((l_related_obj_rec.related_object_id = NULL OR l_related_obj_rec.related_object_id = FND_API.G_MISS_NUM)
9363 		   OR (l_related_obj_rec.last_update_date = null or l_related_obj_rec.last_update_date = FND_API.G_MISS_DATE))THEN
9364 		   Open c_related_obj_id(l_qte_header_rec.quote_header_id);
9365 		   Fetch c_related_obj_id INTO l_related_obj_rec.related_object_id,l_related_obj_rec.last_update_date;
9366 		   Close c_related_obj_id;
9367 	     END IF;
9368 		IF (l_related_obj_rec.quote_object_id = null or l_related_obj_rec.quote_object_id = FND_API.G_MISS_NUM) THEN
9369              l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
9370 		END IF;
9371             ASO_RLTSHIP_PUB.Update_Object_Relationship(
9372               P_Api_Version_Number         => 1.0,
9373               P_Init_Msg_List              => FND_API.G_FALSE,
9374               P_Commit                     => FND_API.G_FALSE,
9375               p_validation_level           => p_validation_level,
9376               P_RELATED_OBJ_Rec            => l_related_obj_rec,
9377               X_Return_Status              => X_Return_Status,
9378               X_Msg_Count                  => X_Msg_Count,
9379               X_Msg_Data                   => X_Msg_Data);
9380 
9381               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9382                  aso_debug_pub.add('Update_Quote: After call to Update_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
9383               END IF;
9384 
9385               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9386                     RAISE FND_API.G_EXC_ERROR;
9387               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9388                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9389               END IF;
9390 
9391         ELSIF l_related_obj_rec.operation_code = 'DELETE' THEN
9392 
9393           IF l_related_obj_rec.related_object_id = NULL OR l_related_obj_rec.related_object_id = FND_API.G_MISS_NUM THEN
9394              Open c_related_obj_id(l_qte_header_rec.quote_header_id);
9395              Fetch c_related_obj_id INTO l_related_obj_rec.related_object_id,l_related_obj_rec.last_update_date;
9396              Close c_related_obj_id;
9397           END IF;
9398 		l_related_obj_rec.quote_object_id  :=  l_qte_header_rec.quote_header_id;
9399 
9400             ASO_RLTSHIP_PUB.Delete_Object_Relationship(
9401               P_Api_Version_Number         => 1.0,
9402               P_Init_Msg_List              => FND_API.G_FALSE,
9403               P_Commit                     => FND_API.G_FALSE,
9404               p_validation_level           => p_validation_level,
9405               P_RELATED_OBJ_Rec            => l_related_obj_rec,
9406               X_Return_Status              => X_Return_Status,
9407               X_Msg_Count                  => X_Msg_Count,
9408               X_Msg_Data                   => X_Msg_Data);
9409 
9410               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9411                  aso_debug_pub.add('Update_Quote: After call to Delete_Object_Relationship: x_return_status: '||x_return_status, 1, 'N');
9412               END IF;
9413 
9414               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9415                     RAISE FND_API.G_EXC_ERROR;
9416               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9417                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9418               END IF;
9419 
9420         END IF;
9421        END LOOP;
9422 
9423 
9424       END IF;  -- end if for P_Related_Obj_Tbl.count
9425 
9426 
9427     -- end  Related Quote Object Changes
9428 
9429 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9430 		aso_debug_pub.add('before validate quote percent: validation level: '||P_validation_level, 1, 'Y');
9431 		END IF;
9432 
9433 
9434 -- sales credits
9435 
9436              IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
9437                  IF x_hd_sales_credit_tbl.count > 0 THEN
9438                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9439                         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');
9440                     END IF;
9441 
9442                     x_hd_sales_credit_tbl(1).quote_header_id := x_qte_header_rec.QUOTE_HEADER_ID;
9443 
9444                      ASO_VALIDATE_PVT.Validate_Quote_Percent(
9445                          p_init_msg_list             => FND_API.G_FALSE,
9446                          p_sales_credit_tbl          => x_hd_sales_credit_tbl,
9447                          x_return_status             => x_return_status,
9448                          x_msg_count                 => x_msg_count,
9449                          x_msg_data                  => x_msg_data
9450                      );
9451                      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9452                          RAISE FND_API.G_EXC_ERROR;
9453                      END IF;
9454                  END IF;
9455              END IF;
9456 
9457 -- end sales credits
9458 
9459 
9460       l_index := X_Price_Adjustment_tbl.count+1;
9461       FOR i IN 1.. l_Price_Adj_tbl.count LOOP
9462 	  x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(i);
9463 	  l_index := l_index+1;
9464       END LOOP;
9465       FOR j IN 1..l_prc_index_link.count LOOP
9466 	  l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
9467 			:= l_price_adj_tbl(j).price_adjustment_id;
9468       END LOOP;
9469       l_index := X_Price_Adj_Attr_tbl.count+1;
9470       FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
9471 	  x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
9472 	  l_index := l_index+1;
9473       END LOOP;
9474 
9475 
9476       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9477 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9478 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9479 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
9480 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATE ROW', TRUE);
9481 	      FND_MSG_PUB.ADD;
9482 	  END IF;
9483 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9484       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9485 	  x_return_status := FND_API.G_RET_STS_ERROR;
9486            RAISE FND_API.G_EXC_ERROR;
9487       END IF;
9488 
9489   -- Update Quote Lines
9490 
9491   FOR i IN 1 .. ls_qte_line_tbl.count LOOP
9492 
9493      l_qte_line_rec := ls_qte_line_tbl(i);
9494 
9495      /* Start : Code change for Bug 9847694
9496         Added validation like - If service line is having reference with Install Base
9497 	then End Customer will not be allowed at Service Line
9498      */
9499      If nvl(fnd_profile.value('ASO_FILTER_SERVICE_RF_END_CUST'),'N')= 'Y' Then
9500 
9501         If (l_qte_line_rec.end_customer_cust_account_id Is Not Null And
9502 	    l_qte_line_rec.end_customer_cust_account_id <> FND_API.G_MISS_NUM) Then
9503 
9504             If (l_qte_line_rec.item_type_code Is Not Null And
9505 	        l_qte_line_rec.item_type_code <> fnd_api.g_miss_char) Then
9506                 l_item_type_code := l_qte_line_rec.item_type_code;
9507             Else
9508 	        Open c_item_type_code(l_qte_line_rec.quote_line_id);
9509 	        Fetch c_item_type_code Into l_item_type_code;
9510 	        Close c_item_type_code;
9511 	    End if;
9512 
9513 	    If l_item_type_code = 'SRV' Then
9514 
9515                Open c_service_ref_type_code(l_qte_line_rec.quote_line_id);
9516                Fetch c_service_ref_type_code Into l_service_ref_type_code;
9517 	       Close c_service_ref_type_code;
9518 
9519 	       If l_service_ref_type_code = 'CUSTOMER_PRODUCT' Then
9520 	          FND_MESSAGE.Set_Name('ASO', 'ASO_IB_END_CUST_CHG_NA');
9521 		  FND_MSG_PUB.ADD;
9522 	          RAISE FND_API.G_EXC_ERROR;
9523                End If;
9524 	    End If;
9525 	End If;
9526      End If;
9527      /* End : Code change for Bug 9847694 */
9528 
9529      /* Code change for Quoting Usability Sun ER Start */
9530 
9531      -- Validation check for Trade in product
9532      If l_control_rec.Change_Customer_flag = FND_API.G_TRUE Then   -- Code change done for Bug 11076978
9533 
9534         l_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_rec.quote_line_id);
9535 
9536         IF (l_qte_line_rec.item_type_code = 'STD' ) and (l_qte_line_rec.line_category_code = 'RETURN' )THEN
9537 	    IF (l_line_dtl_tbl(1).INSTANCE_ID IS NOT NULL) Then
9538                 l_qte_line_rec.operation_code:='DELETE';
9539 	        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9540 		   aso_debug_pub.ADD ('Update_Quote:Trade in from install Base Check Failed' , 1, 'N' );
9541 	        END IF;
9542 	    End IF;
9543         End IF;  -- Trade in
9544 
9545 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
9546            aso_debug_pub.add('Copy_Line_Rows:Call TO CZ_NETWORK_API_PUB.Is_Container ');
9547         END IF;
9548 
9549         -- Validation check for Container Model
9550 	cz_network_api_pub.is_container(p_api_version  => 1.0
9551                                        ,p_inventory_item_id  => ls_qte_line_tbl( i ).inventory_item_id
9552                                        ,p_organization_id    => ls_qte_line_tbl( i ).organization_id
9553                                        ,p_appl_param_rec     => l_appl_param_rec
9554                                        ,x_return_value       => l_return_value
9555                                        ,x_return_status      => l_return_status
9556                                        ,x_msg_count          => x_msg_count
9557                                        ,x_msg_data           => x_msg_data );
9558 
9559         IF ( l_return_status = FND_API.G_RET_STS_SUCCESS ) THEN
9560              IF l_return_value = 'Y' THEN
9561                 l_qte_line_rec.operation_code:='DELETE';
9562 	        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9563 	           aso_debug_pub.ADD ('Update_Quote : Container Model Check Failed' , 1, 'N' );
9564 	        END IF;
9565              END IF;
9566         ELSE
9567             x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
9568             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
9569                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
9570                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
9571                FND_MSG_PUB.ADD;
9572             END IF;
9573             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9574         END IF;
9575 
9576         If l_qte_line_rec.service_item_flag = 'Y' Then
9577 
9578 	   --  Validation check for service reference - Install Base and Pending Order
9579 	   If (l_line_dtl_tbl(1).service_ref_type_code = 'CUSTOMER_PRODUCT') Or
9580 	      (l_line_dtl_tbl(1).service_ref_type_code = 'PENDING_ORDER') Then
9581 	       l_qte_line_rec.operation_code:='DELETE';
9582 
9583 	   --  Validation check for service reference - Product Catalog
9584 	   ElsIf l_line_dtl_tbl(1).service_ref_type_code = 'PRODUCT_CATALOG' Then
9585 
9586 	       l_check_service_rec.product_item_id := l_line_dtl_tbl(1).SERVICE_REF_LINE_ID;
9587 	       l_check_service_rec.customer_id     := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
9588                l_check_service_rec.service_item_id := l_qte_line_rec.INVENTORY_ITEM_ID;
9589 
9590 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
9591 		   aso_debug_pub.ADD( 'Update_Quote:Before calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for IB', 1 , 'N' );
9592 		END IF;
9593 
9594                 ASO_SERVICE_CONTRACTS_INT.is_service_available (
9595        		  	P_Api_Version_Number	=> 1.0 ,
9596        			P_init_msg_list		=> p_init_msg_list ,
9597 		    	X_msg_Count     	=> x_msg_count ,
9598        			X_msg_Data		=> x_msg_data	 ,
9599        			X_Return_Status		=> x_return_status  ,
9600 			p_check_service_rec 	=> l_check_service_rec,
9601 			X_Available_YN	    	=> l_Available_YN );
9602 
9603                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9604 		   aso_debug_pub.ADD( 'Update_Quote:After calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for IB', 1 , 'N' );
9605 		END IF;
9606 
9607                 If nvl(l_Available_YN, 'N') = 'N' Then
9608 		   l_qte_line_rec.operation_code:='DELETE';
9609 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
9610 		      aso_debug_pub.add('Update_Quote: PC SERVICE not available');
9611 		   END IF;
9612                 End If;
9613 
9614 	   --  Validation check for service reference - Quote
9615 	   ElsIf l_line_dtl_tbl(1).service_ref_type_code = 'QUOTE' Then
9616 
9617 	        open c_service_ref_quote(l_qte_line_rec.quote_line_id);
9618 	        fetch c_service_ref_quote into l_check_service_rec.product_item_id;
9619 	        close c_service_ref_quote;
9620 
9621 	        l_check_service_rec.customer_id     := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
9622                 l_check_service_rec.service_item_id := l_qte_line_rec.INVENTORY_ITEM_ID;
9623 
9624 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
9625 		   aso_debug_pub.ADD( 'Update_Quote:Before calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for Quote', 1 , 'N' );
9626 		END IF;
9627 
9628                 ASO_SERVICE_CONTRACTS_INT.is_service_available (
9629        		   	 P_Api_Version_Number	=> 1.0 ,
9630        			 P_init_msg_list	=> p_init_msg_list ,
9631 		    	 X_msg_Count     	=> x_msg_count ,
9632        			 X_msg_Data		=> x_msg_data	 ,
9633        			 X_Return_Status	=> x_return_status  ,
9634 			 p_check_service_rec 	=> l_check_service_rec,
9635 			 X_Available_YN	    	=> l_Available_YN );
9636 
9637                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9638 		   aso_debug_pub.ADD( 'Update_Quote:After calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for Quote', 1 , 'N' );
9639 		END IF;
9640 
9641                 If nvl(l_Available_YN, 'N') = 'N' Then
9642 		   l_qte_line_rec.operation_code:='DELETE';
9643 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
9644 		      aso_debug_pub.add('Update_Quote: Quote SERVICE Not Available');
9645 		   END IF;
9646                 End If;
9647 	   End If;
9648         END IF;
9649      End If; -- Change_Customer_flag is TRUE
9650      /* Code change for Quoting Usability Sun ER End */
9651 
9652  -- New code for Batch Validation 05/24/2002
9653 
9654  IF aso_debug_pub.g_debug_flag = 'Y' THEN
9655  aso_debug_pub.add('UPDATE_QUOTE: l_qte_header_rec.Call_batch_validation_flag: '|| l_qte_header_rec.Call_batch_validation_flag,1,'N');
9656  END IF;
9657 
9658  IF l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE THEN
9659 
9660    IF l_qte_line_rec.operation_code IN ('UPDATE','DELETE') THEN
9661 
9662       OPEN c_qte_line(l_qte_line_rec.quote_line_id);
9663       FETCH c_qte_line into l_qln_id;
9664       IF c_qte_line%FOUND THEN
9665 
9666         l_batch_qte_line_rec := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
9667         l_batch_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(l_qte_line_rec.quote_line_id);
9668 
9669         l_add_line       := FND_API.G_FALSE;
9670         l_add_model_line := FND_API.G_FALSE;
9671 
9672         IF l_batch_qte_line_rec.item_type_code IN ('MDL','CFG') THEN
9673 
9674            l_batch_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
9675            l_batch_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_rec.quote_line_id);
9676            IF l_batch_qte_line_dtl_tbl.count > 0 THEN
9677                IF l_batch_qte_line_dtl_tbl(1).config_header_id IS NOT NULL AND
9678                            l_batch_qte_line_dtl_tbl(1).config_revision_num IS NOT NULL THEN
9679 
9680                    --l_add_line := FND_API.G_TRUE;
9681 
9682                    IF l_batch_qte_line_rec.item_type_code = 'MDL' THEN
9683                        -- If user wants to delete the model line itself then no need to call batch validation
9684                        -- becuase deletion model line will delete the all other configuration lines and
9685                        -- the configuration from CZ
9686                        IF (l_qte_line_rec.operation_code = 'UPDATE') AND
9687 					 (l_qte_line_rec.quantity <> FND_API.G_MISS_NUM) AND
9688                           (l_batch_qte_line_rec.quantity <> l_qte_line_rec.quantity) THEN
9689 
9690                            IF l_search_qte_line_tbl.EXISTS(l_qte_line_rec.quote_line_id) THEN
9691                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
9692 						 aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_search_qte_line_tbl, no need to add again',1,'N');
9693 						 END IF;
9694                                l_add_line       := FND_API.G_TRUE;
9695                            ELSE
9696                                --Add root model line of this configured line to the pl/sql table
9697                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
9698 						 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');
9699 						 END IF;
9700                                l_search_qte_line_tbl(l_qte_line_rec.quote_line_id).quote_line_id
9701                                                                := l_qte_line_rec.quote_line_id;
9702                                l_add_line       := FND_API.G_TRUE;
9703                                l_add_model_line := FND_API.G_TRUE;
9704                                l_model_line_id  := l_qte_line_rec.quote_line_id;
9705                                IF aso_debug_pub.g_debug_flag = 'Y' THEN
9706 						 aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist: l_model_line_id: '|| l_model_line_id,1,'N');
9707 						 END IF;
9708 
9709                            END IF;
9710 
9711                        ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
9712 
9713                             l_delete_qte_line_tbl(l_qte_line_rec.quote_line_id).quote_line_id
9714                                                     := l_qte_line_rec.quote_line_id;
9715                        END IF;
9716 
9717                    ELSE -- Children line l_batch_qte_line_rec.item_type_code = 'CFG'
9718 
9719 			        if l_qte_line_rec.operation_code = 'DELETE'  and l_batch_qte_line_rec.config_model_type = 'N'
9720 				      and  l_batch_qte_line_dtl_tbl(1).config_delta = 0 THEN
9721 
9722                            l_deactivate_counter := l_deactivate_counter + 1;
9723 				       l_deactivate_quote_line_tbl(l_deactivate_counter).quote_line_id   := l_qte_line_rec.quote_line_id;
9724 				       l_deactivate_quote_line_tbl(l_deactivate_counter).quote_header_id := l_batch_qte_line_rec.quote_header_id;
9725 
9726                         else
9727 
9728                             -- Get the root model line for this children line
9729 
9730                             OPEN c_model_line( l_batch_qte_line_dtl_tbl(1).config_header_id,
9731                                                l_batch_qte_line_dtl_tbl(1).config_revision_num );
9732                             FETCH c_model_line INTO l_model_line_id;
9733 
9734                             IF aso_debug_pub.g_debug_flag = 'Y' THEN
9735 				             aso_debug_pub.add('UPDATE_QUOTE: c_model_line: l_model_line_id: '||l_model_line_id,1,'N');
9736 				        END IF;
9737 
9738                             IF c_model_line%FOUND AND l_model_line_id is NOT NULL THEN
9739 
9740                                 IF (l_qte_line_rec.operation_code = 'UPDATE') AND
9741                                    (l_qte_line_rec.quantity <> FND_API.G_MISS_NUM) AND
9742                                    (l_batch_qte_line_rec.quantity <> l_qte_line_rec.quantity) THEN
9743 
9744                                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9745 							     aso_debug_pub.add('UPDATE_QUOTE: Children line having operation_code = UPDATE',1,'N');
9746 							END IF;
9747                                    l_add_line := FND_API.G_TRUE;
9748                                    IF l_search_qte_line_tbl.EXISTS(l_model_line_id) THEN
9749                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9750 							    aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_model_qte_line_tbl, no need to add again',1,'N');
9751 							    END IF;
9752                                    ELSE
9753                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9754 							    aso_debug_pub.add('UPDATE_QUOTE: Model line does not exist in the l_model_qte_line_tbl, need to add again',1,'N');
9755 							    END IF;
9756                                        --Add root model line of this configured line to the pl/sql table
9757                                        l_add_model_line := FND_API.G_TRUE;
9758                                        l_search_qte_line_tbl(l_model_line_id).quote_line_id := l_model_line_id;
9759                                    END IF;
9760 
9761                                 ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
9762 
9763                                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9764 							aso_debug_pub.add('UPDATE_QUOTE: Children line having operation_code = DELETE',1,'N');
9765 							END IF;
9766 
9767                                    l_add_line := FND_API.G_TRUE;
9768 
9769                                    IF l_search_qte_line_tbl.EXISTS(l_model_line_id) THEN
9770                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9771 							    aso_debug_pub.add('UPDATE_QUOTE: Model line exist in the l_model_qte_line_tbl, no need to add again',1,'N');
9772 							    END IF;
9773                                    ELSE
9774                                        --Add root model line of this configured line to the pl/sql table
9775                                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9776 							    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');
9777 							    END IF;
9778                                        l_add_model_line := FND_API.G_TRUE;
9779                                        l_search_qte_line_tbl(l_model_line_id).quote_line_id := l_model_line_id;
9780                                    END IF;
9781 
9782                                 END IF;
9783 
9784                             ELSE
9785                                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9786 					           aso_debug_pub.add('UPDATE_QUOTE: c_model_line: Model line does not exist for this config line',1,'N');
9787 					       END IF;
9788                             END IF; --c_model_line%FOUND AND l_model_line_id is NOT NULL
9789                             CLOSE c_model_line;
9790 
9791 				    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
9792 
9793                    END IF; --l_batch_qte_line_rec.item_type_code = 'MDL'
9794 
9795                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9796 			    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_model_qte_line_tbl',1,'N');
9797                    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');
9798 			    END IF;
9799 
9800                    IF l_add_model_line = FND_API.G_TRUE THEN
9801 
9802                        l_model_index := l_model_index + 1;
9803                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9804 				   aso_debug_pub.add('UPDATE_QUOTE: Inside IF l_add_model_line = FND_API.G_TRUE: l_model_index: '||l_model_index,1,'N');
9805 				   END IF;
9806                        l_model_qte_line_tbl(l_model_index).quote_line_id := l_model_line_id;
9807                        l_model_qte_line_dtl_tbl(l_model_index).config_header_id
9808                                                          := l_batch_qte_line_dtl_tbl(1).config_header_id;
9809                        l_model_qte_line_dtl_tbl(l_model_index).config_revision_num
9810                                                          := l_batch_qte_line_dtl_tbl(1).config_revision_num;
9811                    END IF;
9812 
9813                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
9814 			    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_p_batch_qte_line_tbl',1,'N');
9815                    aso_debug_pub.add('UPDATE_QUOTE: Before Adding line to l_p_batch_qte_line_tbl: l_add_line: '||l_add_line,1,'N');
9816 			    END IF;
9817                    IF l_add_line = FND_API.G_TRUE THEN
9818                        l_batch_index := l_batch_index + 1;
9819                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
9820 				   aso_debug_pub.add('UPDATE_QUOTE: Inside IF l_add_line = FND_API.G_TRUE: l_batch_index: '||l_batch_index,1,'N');
9821 				   END IF;
9822                        l_p_batch_qte_line_tbl(l_batch_index)                := l_batch_qte_line_rec;
9823                        l_p_batch_qte_line_tbl(l_batch_index).operation_code := l_qte_line_rec.operation_code;
9824                        l_p_batch_qte_line_tbl(l_batch_index).quantity       := l_qte_line_rec.quantity;
9825                        l_p_batch_qte_line_dtl_tbl(l_batch_index)            := l_batch_qte_line_dtl_tbl(1);
9826                    END IF;
9827 
9828                END IF; --config_header_id and config_revision_num IS NOT NULL
9829 
9830            END IF;--l_batch_qte_line_dtl_tbl.count > 0
9831 
9832         END IF; --l_batch_qte_line_rec.item_type_code IN ('MDL','CFG')
9833 
9834       END IF; --c_qte_line%FOUND
9835       CLOSE c_qte_line;
9836 
9837     END IF;--l_qte_line_rec.operation_code IN ('UPDATE','DELETE')
9838 
9839 END IF; --l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE
9840 
9841 
9842 --End New code for Batch Validation 05/24/2002
9843 
9844 
9845 	IF l_qte_line_rec.operation_code = 'CREATE' THEN
9846 	  -- line detail info
9847 	  l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
9848 	  l_index := 1;
9849 	  FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
9850 	    IF lx_qte_line_dtl_tbl(j).qte_line_index = i THEN
9851 	      l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
9852 	      l_index := l_index + 1;
9853 	    END IF;
9854 	  END LOOP;
9855 
9856 	  -- line attributes ext
9857 	  l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
9858 	  l_index := 1;
9859 	  FOR j IN 1..p_line_attr_ext_tbl.count LOOP
9860 	      IF p_line_attr_ext_tbl(j).qte_line_index = i THEN
9861 		  l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
9862 		  l_index := l_index + 1;
9863 	      END IF;
9864 	  END LOOP;
9865 
9866 	  -- price attr info
9867 	  l_index := 1;
9868 	  l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
9869 	  FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
9870 	    IF p_ln_price_attributes_tbl(j).qte_line_index = i THEN
9871 	      l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
9872 	      l_index := l_index + 1;
9873 	    END IF;
9874 	  END LOOP;
9875 
9876 	  -- modifier info
9877 	  l_price_adj_tbl := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
9878 	  l_prc_index_link := G_Miss_Link_Tbl;
9879 	  l_prc_index_link_rev := G_Miss_Link_Tbl;
9880 	  l_index := 1;
9881 	  FOR j IN 1..p_price_adjustment_tbl.count LOOP
9882 	      IF p_price_adjustment_tbl(j).qte_line_index = i THEN
9883 		  l_price_adj_tbl(l_index) := p_price_adjustment_tbl(j);
9884 		  l_prc_index_link(l_index) := j;
9885 		  l_prc_index_link_rev(j) := l_index;
9886 		  l_index := l_index + 1;
9887 	      END IF;
9888 	  END LOOP;
9889        -- BC4J Fix
9890 	  l_price_adj_attr_tbl:= ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
9891 	  l_index := 1;
9892 	  FOR j IN 1..p_price_adj_attr_tbl.count LOOP
9893 	      IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM
9894 		AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
9895 		  l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
9896 		  l_price_adj_attr_tbl(l_index).price_adj_index :=
9897 		  l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
9898 		  l_index := l_index + 1;
9899 	      END IF;
9900 	  END LOOP;
9901 
9902 	  -- payment info
9903 	  l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
9904 	  l_index := 1;
9905 	  FOR j IN 1..p_ln_payment_tbl.count LOOP
9906 	    IF p_ln_payment_tbl(j).qte_line_index = i THEN
9907 	      l_payment_tbl(l_index) := p_ln_payment_tbl(j);
9908 	      l_index := l_index +1;
9909 	    END IF;
9910 	  END LOOP;
9911 	  -- only when payment_option is SPLIT, there can be more than one record
9912 	  -- for line payment.
9913 	  IF l_index > 2 AND l_payment_tbl(1).payment_option <> 'SPLIT' THEN
9914 	    RAISE FND_API.G_EXC_ERROR;
9915 	  END IF;
9916 
9917 
9918 	  -- shipment info
9919 	  l_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
9920 	  l_shp_index_link := G_Miss_Link_Tbl;
9921 	  l_index := 1;
9922 	  FOR j IN 1..p_ln_shipment_tbl.count LOOP
9923 	      IF p_ln_shipment_tbl(j).qte_line_index = i THEN
9924 		  l_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
9925 		  l_shp_index_link(j) := l_index;
9926           	  l_index := l_index+1;
9927 	      END IF;
9928 	  END LOOP;
9929 
9930 
9931 	  -- freight charge info
9932 	  l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
9933 	  l_index := 1;
9934 	  FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
9935 	      IF p_ln_freight_charge_tbl(j).qte_line_index = i THEN
9936 		  l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
9937 		  IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM
9938 			AND l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
9939 		      l_freight_charge_tbl(l_index).shipment_index :=
9940 				l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
9941 		  ELSE
9942 		      null;
9943 		  END IF;
9944 		  l_index := l_index+1;
9945 	      END IF;
9946 	  END LOOP;
9947 
9948 
9949 	  -- tax info
9950 	  l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
9951 	  l_index := 1;
9952 	  FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
9953 	      IF p_ln_tax_detail_tbl(j).qte_line_index = i THEN
9954 		  l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
9955 		      IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9956 			l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index) THEN
9957 			  l_tax_detail_tbl(l_index).shipment_index :=
9958 				l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
9959 		      ELSE
9960 			  null;
9961 		      END IF;
9962 		  l_index := l_index+1;
9963 	      END IF;
9964 	  END LOOP;
9965 l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
9966 
9967 	  l_index := 1;
9968 	  FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
9969       IF p_ln_sales_credit_tbl(j).qte_line_index = i THEN
9970         l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
9971 		  l_index := l_index +1;
9972 	  END IF;
9973 	  END LOOP;
9974 
9975 
9976 l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
9977 
9978 	  l_index := 1;
9979 	  FOR j IN 1..p_ln_quote_party_tbl.count LOOP
9980       IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
9981         l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
9982          IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
9983             p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
9984 		   l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
9985 	       l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
9986          END IF;
9987 		  l_index := l_index +1;
9988 	  END IF;
9989 	  END LOOP;
9990 
9991 -- EDU
9992 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9993 aso_debug_pub.add('Update_Quote (create_quote_lines) - before Validate_Commitment ', 1, 'N');
9994 END IF;
9995      ASO_VALIDATE_PVT.Validate_Commitment(
9996           P_Init_Msg_List          => FND_API.G_FALSE,
9997           P_Qte_Header_Rec         => x_qte_header_rec,
9998           P_Qte_Line_Rec           => l_qte_line_rec,
9999           X_Return_Status          => l_return_status,
10000           X_Msg_Count              => x_msg_count,
10001           X_Msg_Data               => x_msg_data);
10002 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10003 aso_debug_pub.add('Update_Quote - after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
10004 END IF;
10005      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10006           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10007           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10008      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
10009           x_return_status := FND_API.G_RET_STS_ERROR;
10010           RAISE FND_API.G_EXC_ERROR;
10011      END IF;
10012 -- EDU
10013 
10014 
10015 	   open  c_last_update_date(x_qte_header_rec.quote_header_id);
10016 	   fetch c_last_update_date into l_control_rec.last_update_date;
10017 	   close c_last_update_date;
10018 
10019 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10020 		  aso_debug_pub.add('Update_Quote: Before call to Create_Quote_Lines');
10021             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10022         END IF;
10023 
10024 	  -- create quote line
10025       ASO_QUOTE_LINES_PVT.Create_Quote_Lines (
10026 			P_Api_Version_Number	=> 1.0,
10027 			p_validation_level	=> p_validation_level,
10028 			p_control_rec		=> l_control_rec,
10029 			p_update_header_flag	=> FND_API.G_FALSE,
10030                   p_qte_header_rec        =>  l_qte_header_rec,
10031 			P_qte_Line_Rec		=> l_qte_line_rec,
10032 			P_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl,
10033 			P_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl,
10034 			P_price_attributes_tbl	=> l_price_attr_tbl,
10035 			P_Price_Adj_Tbl		=> l_price_adj_tbl,
10036 			P_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl,
10037 			P_Payment_Tbl		=> l_payment_tbl,
10038 			P_Shipment_Tbl		=> l_shipment_tbl,
10039 			P_Freight_Charge_Tbl	=> l_freight_charge_tbl,
10040 			P_Tax_Detail_Tbl	=> l_tax_detail_tbl,
10041             P_quote_party_tbl       => l_quote_party_tbl ,
10042             P_sales_Credit_tbl      => l_sales_Credit_tbl ,
10043 			x_qte_Line_Rec		=> l_qte_line_rec_out,
10044 			x_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl_out,
10045 			x_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl_out,
10046 			x_price_attributes_tbl	=> l_price_attr_tbl_out,
10047 			x_Price_Adj_Tbl		=> l_price_adj_tbl_out,
10048 			x_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl_out,
10049 			x_Payment_Tbl		=> l_payment_tbl_out,
10050 			x_Shipment_Tbl		=> l_shipment_tbl_out,
10051 			x_Freight_Charge_Tbl	=> l_freight_charge_tbl_out,
10052 			x_Tax_Detail_Tbl	=> l_tax_detail_tbl_out,
10053                X_quote_party_tbl       => l_quote_party_tbl_out ,
10054                X_sales_Credit_tbl      => l_sales_Credit_tbl_out ,
10055 			X_Return_Status 	=> l_return_status,
10056 			X_Msg_Count		=> x_msg_count,
10057 			X_Msg_Data		=> x_msg_data);
10058 
10059         l_qte_line_rec        :=  l_qte_line_rec_out;
10060         l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
10061         l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
10062         l_price_attr_tbl      :=  l_price_attr_tbl_out;
10063         l_price_adj_tbl       :=  l_price_adj_tbl_out;
10064         l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
10065         l_payment_tbl         :=  l_payment_tbl_out;
10066         l_shipment_tbl        :=  l_shipment_tbl_out;
10067         l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
10068         l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
10069         l_quote_party_tbl     :=  l_quote_party_tbl_out;
10070         l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
10071 
10072 
10073 
10074 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10075 		   aso_debug_pub.add('Update_Quote - after create_quote_lines return_status: '||l_return_status, 1, 'Y');
10076 		   END IF;
10077 
10078                 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10079 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10080 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10081 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10082 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
10083 	      FND_MSG_PUB.ADD;
10084 	  END IF;
10085 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10086 
10087       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10088 	    x_return_status := FND_API.G_RET_STS_ERROR;
10089          RAISE FND_API.G_EXC_ERROR;
10090       END IF;
10091 
10092 
10093         open  c_last_update_date(x_qte_header_rec.quote_header_id);
10094         fetch c_last_update_date into x_qte_header_rec.last_update_date;
10095         close c_last_update_date;
10096 
10097         l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
10098 
10099         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10100             aso_debug_pub.add('Update_Quote: After call to Create_Quote_Lines');
10101             aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
10102             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10103         END IF;
10104 
10105 
10106           For j IN 1..lx_qte_line_dtl_tbl.count LOOP
10107              IF lx_qte_line_dtl_tbl(j).SERVICE_REF_QTE_LINE_INDEX = i THEN
10108                 lx_qte_line_dtl_tbl(j).SERVICE_REF_LINE_ID := l_qte_line_rec.quote_line_id;
10109              END IF;
10110           END LOOP;
10111 
10112           -- For bundle configurator Changes Added 02/18/02
10113           FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
10114               IF lx_qte_line_dtl_tbl(j).REF_LINE_INDEX = i THEN
10115                   lx_qte_line_dtl_tbl(j).REF_LINE_ID := l_qte_line_rec.quote_line_id;
10116               END IF;
10117           END LOOP;
10118           -- End  bundle configurator Changes 02/18/02
10119 
10120 	   --  P1 bug 10261431
10121 	  FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
10122               IF lx_qte_line_dtl_tbl(j).TOP_MODEL_LINE_INDEX = i THEN
10123                   lx_qte_line_dtl_tbl(j).TOP_MODEL_LINE_ID := l_qte_line_rec.quote_line_id;
10124 		  l_top_model_line_id:= l_qte_line_rec.quote_line_id;
10125               END IF;
10126           END LOOP;
10127 
10128 	    FOR j IN 1..lx_qte_line_dtl_tbl.count LOOP
10129               IF lx_qte_line_dtl_tbl(j).ATO_LINE_INDEX = i THEN
10130                   lx_qte_line_dtl_tbl(j).ATO_LINE_ID := l_qte_line_rec.quote_line_id;
10131 		  l_ato_line_id:= l_qte_line_rec.quote_line_id;
10132               END IF;
10133           END LOOP;
10134 
10135 	  if (l_qte_line_rec.item_type_code='MDL') and (i=1) then
10136 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10137                       aso_debug_pub.add('Update_Quote: After call to Create_Quote_Lines updating the data for MDL line');
10138                  end if;
10139 		     update aso_quote_line_details
10140 		     set top_model_line_id=l_top_model_line_id,ato_line_id=l_ato_line_id
10141 		     where quote_line_id=l_qte_line_rec.quote_line_id;
10142           end if;
10143 	  --  P1 bug 10261431
10144 
10145 
10146  X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
10147 	  l_index := X_Qte_Line_Dtl_Tbl.count+1;
10148 	  FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
10149 	      x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
10150 	      l_index := l_index+1;
10151 	  END LOOP;
10152 	  l_index := X_Line_Attr_Ext_Tbl.count+1;
10153 	  FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
10154 	      x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
10155 	      l_index := l_index+1;
10156 	  END LOOP;
10157 	  l_index := X_ln_Price_Attributes_Tbl.count+1;
10158 	  FOR j IN 1.. l_Price_Attr_tbl.count LOOP
10159 	      x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
10160 	      l_index := l_index+1;
10161 	  END LOOP;
10162 	  l_index := X_Price_Adjustment_tbl.count+1;
10163 	  FOR j IN 1.. l_Price_Adj_tbl.count LOOP
10164 	      x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
10165 	      l_index := l_index+1;
10166 	  END LOOP;
10167 	  l_index := X_Price_Adj_Attr_tbl.count+1;
10168 	  FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
10169 	      x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
10170 	      l_index := l_index+1;
10171 	  END LOOP;
10172 	  l_index := X_LN_payment_Tbl.count+1;
10173 	  FOR j IN 1.. l_payment_tbl.count LOOP
10174 	      x_ln_payment_tbl(l_index) := l_payment_tbl(j);
10175 	      l_index := l_index+1;
10176 	  END LOOP;
10177 	  l_index := X_LN_shipment_Tbl.count+1;
10178 	  FOR j IN 1.. l_shipment_tbl.count LOOP
10179 	      x_ln_shipment_tbl(l_index) := l_shipment_tbl(j);
10180 	      l_index := l_index+1;
10181 	  END LOOP;
10182 	  l_index := X_LN_freight_charge_Tbl.count+1;
10183 	  FOR j IN 1.. l_freight_charge_tbl.count LOOP
10184 	      x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
10185 	      l_index := l_index+1;
10186 	  END LOOP;
10187 	  l_index := X_LN_tax_detail_Tbl.count+1;
10188 	  FOR j IN 1.. l_tax_detail_tbl.count LOOP
10189 	      x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
10190 	      l_index := l_index+1;
10191 	  END LOOP;
10192 
10193       l_index := X_ln_sales_Credit_Tbl.count+1;
10194 	  FOR j IN 1.. l_sales_Credit_tbl.count LOOP
10195 	      x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
10196 	      l_index := l_index+1;
10197 	  END LOOP;
10198           l_index := X_ln_quote_party_Tbl.count+1;
10199 	  FOR j IN 1.. l_quote_party_tbl.count LOOP
10200 	      x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
10201 	      l_index := l_index+1;
10202 	  END LOOP;
10203 
10204 	  FOR j IN 1..l_prc_index_link.count LOOP
10205 	      l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
10206 			:= l_price_adj_tbl(j).price_adjustment_id;
10207 	  END LOOP;
10208 	  IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10209 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10210 	    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10211 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10212 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
10213 	      FND_MSG_PUB.ADD;
10214 	    END IF;
10215 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10216 	  ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10217 	    x_return_status := FND_API.G_RET_STS_ERROR;
10218               RAISE FND_API.G_EXC_ERROR;
10219 	  END IF;
10220 
10221 
10222 	ELSIF l_qte_line_rec.operation_code = 'UPDATE' THEN
10223 
10224 
10225      IF aso_debug_pub.g_debug_flag = 'Y' THEN
10226 	aso_debug_pub.add('Update_Quote - if operation_code is update ', 1, 'N');
10227 	END IF;
10228 
10229 	  l_qte_line_id := l_qte_line_rec.quote_line_id;
10230 	  -- line detail info
10231 	  l_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
10232 	  l_index := 1;
10233 	  FOR j IN 1 .. lx_qte_line_dtl_tbl.count LOOP
10234 	    IF lx_qte_line_dtl_tbl(j).quote_line_id  = l_qte_line_id THEN
10235 	      l_qte_line_dtl_tbl(l_index) := lx_qte_line_dtl_tbl(j);
10236 	      l_index := l_index + 1;
10237 	    END IF;
10238 	  END LOOP;
10239 
10240 	  -- line attributes ext
10241 	  l_line_attr_ext_tbl := ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL;
10242 	  l_index := 1;
10243 	  FOR j IN 1..p_line_attr_ext_tbl.count LOOP
10244 	      IF p_line_attr_ext_tbl(j).quote_line_id = l_qte_line_id THEN
10245 		  l_line_attr_ext_tbl(l_index) := p_line_attr_ext_tbl(j);
10246 		  l_index := l_index + 1;
10247 	      END IF;
10248 	  END LOOP;
10249 
10250 	  -- price attr info
10251 	  l_price_attr_tbl := ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl;
10252 	  l_index := 1;
10253 	  FOR j IN 1..p_ln_price_attributes_tbl.count LOOP
10254 	    IF p_ln_price_attributes_tbl(j).quote_line_id  = l_qte_line_id THEN
10255 	      l_price_attr_tbl(l_index) := p_ln_price_attributes_tbl(j);
10256 		 l_index := l_index + 1;
10257 	    END IF;
10258 	  END LOOP;
10259 
10260 	  -- modifier info
10261 	  l_price_adj_tbl := ASO_QUOTE_PUB.G_Miss_Price_Adj_Tbl;
10262 	  l_prc_index_link := G_Miss_Link_Tbl;
10263 	  l_prc_index_link_rev := G_Miss_Link_Tbl;
10264 	  l_index := 1;
10265 	  FOR j IN 1..p_price_adjustment_tbl.count LOOP
10266 	    IF p_price_adjustment_tbl(j).quote_line_id	= l_qte_line_id THEN
10267 	      l_price_adj_tbl(l_index) := p_price_adjustment_tbl(j);
10268 	      l_prc_index_link(l_index) := j;
10269 	      l_prc_index_link_rev(j) := l_index;
10270 	      l_index := l_index + 1;
10271 	    END IF;
10272 	  END LOOP;
10273 	  l_index := 1;
10274 
10275        -- BC4J Fix
10276 	  l_price_adj_attr_tbl:= ASO_QUOTE_PUB.G_Miss_Price_Adj_Attr_Tbl;
10277 
10278 	  FOR j IN 1..p_price_adj_attr_tbl.count LOOP
10279 	    IF p_price_adj_attr_tbl(j).qte_line_index = i THEN
10280 	      l_price_adj_attr_tbl(l_index) := p_price_adj_attr_tbl(j);
10281 	      IF p_price_adj_attr_tbl(j).price_adj_index <> FND_API.G_MISS_NUM
10282 		AND l_prc_index_link_rev.exists(p_price_adj_attr_tbl(j).price_adj_index) THEN
10283 		  l_price_adj_attr_tbl(l_index).price_adj_index :=
10284 			l_prc_index_link_rev(l_price_adj_attr_tbl(l_index).price_adj_index);
10285 	      END IF;
10286 	      l_index := l_index + 1;
10287 	    END IF;
10288 	  END LOOP;
10289 
10290 
10291 	  -- payment info
10292 	  l_payment_tbl := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
10293 	  l_index := 1;
10294 	  FOR j IN 1..p_ln_payment_tbl.count LOOP
10295 	    IF p_ln_payment_tbl(j).quote_line_id  = l_qte_line_id THEN
10296 	      l_payment_tbl(l_index) := p_ln_payment_tbl(j);
10297 	      l_index := l_index +1;
10298 	    END IF;
10299 	  END LOOP;
10300 
10301 	  -- shipment info
10302 	  l_shipment_tbl := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
10303 	  l_shp_index_link := G_Miss_Link_Tbl;
10304 	  l_index := 1;
10305 	  FOR j IN 1..p_ln_shipment_tbl.count LOOP
10306 	    IF p_ln_shipment_tbl(j).quote_line_id  = l_qte_line_id THEN
10307 	      l_shipment_tbl(l_index) := p_ln_shipment_tbl(j);
10308 	      l_shp_index_link(j) := l_index;
10309           l_index := l_index +1;
10310 	    END IF;
10311 	  END LOOP;
10312 
10313 l_sales_credit_tbl := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
10314 
10315 	  l_index := 1;
10316 	  FOR j IN 1..p_ln_sales_credit_tbl.count LOOP
10317       IF p_ln_sales_credit_tbl(j).qte_line_index = i
10318 	    OR p_ln_sales_credit_tbl(j).quote_line_id = l_qte_line_id THEN
10319         l_sales_credit_tbl(l_index) := p_ln_sales_credit_tbl(j);
10320 		  l_index := l_index +1;
10321 	  END IF;
10322 	  END LOOP;
10323 
10324 
10325 l_quote_party_tbl := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
10326 
10327 	  l_index := 1;
10328 	  FOR j IN 1..p_ln_quote_party_tbl.count LOOP
10329       IF p_ln_quote_party_tbl(j).qte_line_index = i THEN
10330         l_quote_party_tbl(l_index) := p_ln_quote_party_tbl(j);
10331          IF p_ln_quote_party_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
10332             p_ln_quote_party_tbl(j).shipment_index  IS NOT NULL AND
10333 		   l_shp_index_link.EXISTS(p_ln_quote_party_tbl(j).shipment_index) THEN
10334 	       l_quote_party_tbl(l_index).shipment_index := l_shp_index_link(p_ln_quote_party_tbl(j).shipment_index);
10335          END IF;
10336 		  l_index := l_index +1;
10337 	  END IF;
10338 	  END LOOP;
10339 	  -- freight charge info
10340 	  l_freight_charge_tbl := ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl;
10341 	  l_index := 1;
10342 	  FOR j IN 1..p_ln_freight_charge_tbl.count LOOP
10343 	      IF p_ln_freight_charge_tbl(j).quote_line_id = l_qte_line_id THEN
10344 		  l_freight_charge_tbl(l_index) := p_ln_freight_charge_tbl(j);
10345 		  IF l_freight_charge_tbl(l_index).shipment_index IS NOT NULL AND
10346 			l_freight_charge_tbl(l_index).shipment_index <> FND_API.G_MISS_NUM THEN
10347 		      IF p_ln_freight_charge_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
10348 			l_shp_index_link.EXISTS(p_ln_freight_charge_tbl(j).shipment_index) THEN
10349 			  l_freight_charge_tbl(l_index).shipment_index :=
10350 				l_shp_index_link(p_ln_freight_charge_tbl(j).shipment_index);
10351 		      ELSE
10352 			  null;
10353 		      END IF;
10354 		  END IF;
10355 		  l_index := l_index+1;
10356 	      END IF;
10357 	  END LOOP;
10358 
10359 
10360 	  -- tax info
10361 	  l_tax_detail_tbl := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl;
10362 	  l_index := 1;
10363 	  FOR j IN 1..p_ln_tax_detail_tbl.count LOOP
10364 	      IF p_ln_tax_detail_tbl(j).quote_line_id = l_qte_line_id THEN
10365 		  l_tax_detail_tbl(l_index) := p_ln_tax_detail_tbl(j);
10366 		  IF l_tax_detail_tbl(l_index).shipment_index IS NOT NULL AND
10367 			l_tax_detail_tbl(l_index).shipment_index <> FND_API.G_MISS_NUM THEN
10368 		      IF p_ln_tax_detail_tbl(j).shipment_index <> FND_API.G_MISS_NUM AND
10369 			l_shp_index_link.EXISTS(p_ln_tax_detail_tbl(j).shipment_index) THEN
10370 			  l_tax_detail_tbl(l_index).shipment_index :=
10371 				l_shp_index_link(p_ln_tax_detail_tbl(j).shipment_index);
10372 		      ELSE
10373 			  null;
10374 		      END IF;
10375 		  END IF;
10376 		  l_index := l_index+1;
10377 	      END IF;
10378 	  END LOOP;
10379 
10380 -- EDU
10381 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10382 aso_debug_pub.add('Update_Quote (update_quote_lines) - before Validate_Commitment ', 1, 'N');
10383 END IF;
10384      ASO_VALIDATE_PVT.Validate_Commitment(
10385           P_Init_Msg_List          => FND_API.G_FALSE,
10386           P_Qte_Header_Rec         => x_qte_header_rec,
10387           P_Qte_Line_Rec           => l_qte_line_rec,
10388           X_Return_Status          => l_return_status,
10389           X_Msg_Count              => x_msg_count,
10390           X_Msg_Data               => x_msg_data);
10391 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10392 aso_debug_pub.add('Update_Quote (upd_qte_ln)- after Validate_Commitment: l_return_status: '||l_return_status, 1, 'N');
10393 END IF;
10394      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10395           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10396           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10397      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
10398           x_return_status := FND_API.G_RET_STS_ERROR;
10399           RAISE FND_API.G_EXC_ERROR;
10400      END IF;
10401 -- EDU
10402 
10403 	  -- update quote line (need to do the following validation:
10404 	  -- 1. each line has at least one shipment rec
10405 	  -- 2. each line has only one tax_detail rec in which to set the tax
10406 	  --	exempt info.
10407 
10408 	   open  c_last_update_date(x_qte_header_rec.quote_header_id);
10409 	   fetch c_last_update_date into l_control_rec.last_update_date;
10410 	   close c_last_update_date;
10411 
10412 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10413 		  aso_debug_pub.add('Update_Quote: Before call to Update_Quote_Line');
10414             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10415         END IF;
10416 
10417 
10418 	   ASO_QUOTE_LINES_PVT.Update_Quote_Line (
10419 			P_Api_Version_Number	=> 1.0,
10420 			p_validation_level	=> p_validation_level,
10421 			p_control_rec		=> l_control_rec,
10422 			p_update_header_flag	=> FND_API.G_FALSE,
10423                   p_qte_header_rec        => l_qte_header_rec,
10424 			P_qte_Line_Rec		=> l_qte_line_rec,
10425 			P_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl,
10426 			P_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl,
10427 			P_price_attributes_tbl	=> l_price_attr_tbl,
10428 			P_Price_Adj_Tbl		=> l_price_adj_tbl,
10429 			P_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl,
10430 			P_Payment_Tbl		=> l_payment_tbl,
10431 			P_Shipment_Tbl		=> l_shipment_tbl,
10432 			P_Freight_Charge_Tbl	=> l_freight_charge_tbl,
10433 			P_Tax_Detail_Tbl	=> l_tax_detail_tbl,
10434             P_quote_party_tbl       => l_quote_party_tbl ,
10435             P_sales_Credit_tbl      => l_sales_Credit_tbl ,
10436 			x_qte_Line_Rec		=> l_qte_line_rec_out,
10437 			x_qte_line_dtl_tbl	=> l_qte_line_dtl_tbl_out,
10438 			x_Line_Attribs_Ext_Tbl	=> l_line_attr_Ext_Tbl_out,
10439 			x_price_attributes_tbl	=> l_price_attr_tbl_out,
10440 			x_Price_Adj_Tbl		=> l_price_adj_tbl_out,
10441 			x_Price_Adj_Attr_Tbl	=> l_Price_Adj_Attr_Tbl_out,
10442 			x_Payment_Tbl		=> l_payment_tbl_out,
10443 			x_Shipment_Tbl		=> l_shipment_tbl_out,
10444 			x_Freight_Charge_Tbl	=> l_freight_charge_tbl_out,
10445 			x_Tax_Detail_Tbl	=> l_tax_detail_tbl_out,
10446             X_quote_party_tbl       => l_quote_party_tbl_out ,
10447             X_sales_Credit_tbl      => l_sales_Credit_tbl_out ,
10448 			X_Return_Status 	=> l_return_status,
10449 			X_Msg_Count		=> x_msg_count,
10450 			X_Msg_Data		=> x_msg_data);
10451 
10452 
10453         l_qte_line_rec        :=  l_qte_line_rec_out;
10454         l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
10455         l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
10456         l_price_attr_tbl      :=  l_price_attr_tbl_out;
10457         l_price_adj_tbl       :=  l_price_adj_tbl_out;
10458         l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
10459         l_payment_tbl         :=  l_payment_tbl_out;
10460         l_shipment_tbl        :=  l_shipment_tbl_out;
10461         l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
10462         l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
10463         l_quote_party_tbl     :=  l_quote_party_tbl_out;
10464         l_sales_Credit_tbl    :=  l_sales_Credit_tbl_out;
10465 
10466 
10467         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10468 	        aso_debug_pub.add('Update_Quote: after update_quote_line: l_return_status: '||l_return_status);
10469 	   END IF;
10470 
10471         open  c_last_update_date(x_qte_header_rec.quote_header_id);
10472         fetch c_last_update_date into x_qte_header_rec.last_update_date;
10473         close c_last_update_date;
10474 
10475         l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
10476 
10477         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10478             aso_debug_pub.add('Update_Quote: After call to Update_Quote_Line');
10479             aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
10480             aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10481         END IF;
10482 
10483 
10484 	  X_Qte_Line_Tbl(x_qte_line_tbl.count+1) := l_qte_line_rec;
10485 	  l_index := X_Qte_Line_Dtl_Tbl.count+1;
10486 
10487 	  FOR j IN 1.. l_qte_line_dtl_tbl.count LOOP
10488 	      x_qte_line_dtl_tbl(l_index) := l_qte_line_dtl_tbl(j);
10489 	      l_index := l_index+1;
10490 	  END LOOP;
10491 	  l_index := X_Line_Attr_Ext_Tbl.count+1;
10492 	  FOR j IN 1.. l_Line_Attr_Ext_tbl.count LOOP
10493 	      x_Line_Attr_Ext_tbl(l_index) := l_Line_Attr_Ext_tbl(j);
10494 	      l_index := l_index+1;
10495 	  END LOOP;
10496 	  l_index := X_ln_Price_Attributes_Tbl.count+1;
10497 	  FOR j IN 1.. l_Price_Attr_tbl.count LOOP
10498 	      x_ln_Price_Attributes_tbl(l_index) := l_Price_Attr_tbl(j);
10499 	      l_index := l_index+1;
10500 	  END LOOP;
10501 	  l_index := X_Price_Adjustment_tbl.count+1;
10502 	  FOR j IN 1.. l_Price_Adj_tbl.count LOOP
10503 	      x_Price_Adjustment_tbl(l_index) := l_Price_Adj_tbl(j);
10504 	      l_index := l_index+1;
10505 	  END LOOP;
10506 	  l_index := X_Price_Adj_Attr_tbl.count+1;
10507 	  FOR i IN 1.. l_Price_Adj_Attr_tbl.count LOOP
10508 	      x_Price_Adj_Attr_tbl(l_index) := l_Price_Adj_Attr_tbl(i);
10509 	      l_index := l_index+1;
10510 	  END LOOP;
10511 	  l_index := X_LN_payment_Tbl.count+1;
10512 	  FOR j IN 1.. l_payment_tbl.count LOOP
10513 	      x_ln_payment_tbl(l_index) := l_payment_tbl(j);
10514 	      l_index := l_index+1;
10515 	  END LOOP;
10516 	  l_index := X_Ln_shipment_Tbl.count+1;
10517 	  FOR j IN 1.. l_shipment_tbl.count LOOP
10518 	      x_ln_shipment_tbl(l_index) := l_shipment_tbl(j);
10519 	      l_index := l_index+1;
10520 	  END LOOP;
10521 	  l_index := X_LN_freight_charge_Tbl.count+1;
10522 	  FOR j IN 1.. l_freight_charge_tbl.count LOOP
10523 	      x_ln_freight_charge_tbl(l_index) := l_freight_charge_tbl(j);
10524 	      l_index := l_index+1;
10525 	  END LOOP;
10526 	  l_index := X_LN_tax_detail_Tbl.count+1;
10527 	  FOR j IN 1.. l_tax_detail_tbl.count LOOP
10528 	      x_ln_tax_detail_tbl(l_index) := l_tax_detail_tbl(j);
10529 	      l_index := l_index+1;
10530 	  END LOOP;
10531 
10532       l_index := X_ln_sales_Credit_Tbl.count+1;
10533 	  FOR j IN 1.. l_sales_Credit_tbl.count LOOP
10534 	      x_ln_sales_Credit_tbl(l_index) := l_sales_Credit_tbl(j);
10535 	      l_index := l_index+1;
10536 	  END LOOP;
10537           l_index := X_ln_quote_party_Tbl.count+1;
10538 	  FOR j IN 1.. l_quote_party_tbl.count LOOP
10539 	      x_ln_quote_party_tbl(l_index) := l_quote_party_tbl(j);
10540 	      l_index := l_index+1;
10541 	  END LOOP;
10542 
10543 
10544 
10545 	  FOR j IN 1..l_prc_index_link.count LOOP
10546 	      l_price_adjustment_tbl(l_prc_index_link(j)).price_adjustment_id
10547 			:= l_price_adj_tbl(j).price_adjustment_id;
10548 	  END LOOP;
10549 	  IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10550 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10551 	    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10552 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10553 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDATE  QLN', TRUE);
10554 	      FND_MSG_PUB.ADD;
10555 	    END IF;
10556 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10557 	  ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10558              x_return_status := FND_API.G_RET_STS_ERROR;
10559               RAISE FND_API.G_EXC_ERROR;
10560 	  END IF;
10561 
10562 
10563 	ELSIF l_qte_line_rec.operation_code = 'DELETE' THEN
10564 
10565 
10566             OPEN c_qte_line(l_qte_line_rec.quote_line_id);
10567             FETCH c_qte_line into l_qln_id;
10568 
10569             IF c_qte_line%FOUND and l_qln_id <>FND_API.G_MISS_NUM THEN
10570 
10571 	          open  c_last_update_date(x_qte_header_rec.quote_header_id);
10572 	          fetch c_last_update_date into l_control_rec.last_update_date;
10573 	          close c_last_update_date;
10574 
10575 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
10576 		         aso_debug_pub.add('Update_Quote: Before call to Delete_Quote_Line');
10577                    aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10578                END IF;
10579 
10580 	        -- Refer bug 10217258   rassharm
10581 		--bugrassharm
10582                IF NVL(FND_PROFILE.VALUE('QP_LIMITS_INSTALLED'),'N') = 'Y' THEN
10583 
10584 	            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10585 		            aso_debug_pub.add('Update_Quote: Reverse Limits limit installed'||l_qte_line_rec.quote_line_id||'item type'||l_qte_line_rec.item_type_code);
10586 			aso_debug_pub.add('Update_Quote RASSHARM: Reverse Limits for handling l_qln_id'||l_qln_id);
10587 		END IF;
10588 
10589 
10590 		QP_UTIL_PUB.Reverse_Limits (p_action_code   => 'CANCEL',
10591                                 p_cons_price_request_code    => 'ASO-'||l_qte_line_rec.quote_header_id||'-'||l_qte_line_rec.quote_line_id,
10592                                 p_orig_ordered_qty           => l_qte_line_rec.quantity,
10593                                 p_amended_qty                => NULL,
10594                                 p_ret_price_request_code     => NULL,
10595                                 p_returned_qty               => NULL,
10596                                 x_return_status              => l_return_status,
10597                                 x_return_message             => x_msg_data
10598                                );
10599 
10600 
10601               open c_qte_line_type(l_qte_line_rec.quote_line_id);
10602 		          fetch c_qte_line_type into l_item_type_code1;
10603 		          close c_qte_line_type;
10604 
10605               aso_debug_pub.add('Update_Quote RASSHARM: Reverse Limits for handling CFG items'||l_item_type_code1);
10606 
10607               if  (l_item_type_code1='MDL')  or (l_item_type_code1='CFG') then
10608 
10609                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
10610 		                   aso_debug_pub.add('Update_Quote: Reverse Limits for handling CFG items');
10611                    END IF;
10612 		         for c1 in
10613 		         (
10614               select quote_line_id from aso_quote_line_Details
10615                 where ref_type_code='CONFIG'
10616                 and (top_model_line_id=l_qln_id or ref_line_id=l_qln_id)
10617                 and top_model_line_id<>quote_line_id
10618               )
10619             loop
10620 		        select nvl(quantity,0) into l_qty from aso_Quote_lines_all where quote_line_id=c1.quote_line_id;
10621 		        aso_debug_pub.add('rassharm Update_Quote: Reverse Limits for handling CFG items quote_line_id'||c1.quote_line_id||' *** qty'||l_qty);
10622             QP_UTIL_PUB.Reverse_Limits (p_action_code   => 'CANCEL',
10623                                 p_cons_price_request_code    => 'ASO-'||l_qte_line_rec.quote_header_id||'-'||c1.quote_line_id,
10624                                 p_orig_ordered_qty           => l_qty,
10625                                 p_amended_qty                => NULL,
10626                                 p_ret_price_request_code     => NULL,
10627                                 p_returned_qty               => NULL,
10628                                 x_return_status              => l_return_status,
10629                                 x_return_message             => x_msg_data
10630                                );
10631 
10632              end loop;
10633 	         end if;  -- MDL
10634 
10635            end if; -- profile if limit installed
10636 
10637 
10638 	          ASO_QUOTE_LINES_PVT.Delete_Quote_Line (
10639 			P_Api_Version_Number	=> 1.0,
10640 			p_control_rec		=> l_control_rec,
10641 			p_update_header_flag	=> FND_API.G_FALSE,
10642 			P_qte_Line_Rec		=> l_qte_line_rec,
10643 			X_Return_Status 	=> l_return_status,
10644 			X_Msg_Count		=> x_msg_count,
10645 			X_Msg_Data		=> x_msg_data);
10646 
10647 
10648             END IF;
10649             CLOSE c_qte_line;
10650 
10651             IF aso_debug_pub.g_debug_flag = 'Y' THEN
10652 	           aso_debug_pub.add('Update_Quote: after Delete_Quote_Line: l_return_status: '||l_return_status);
10653 	       END IF;
10654 
10655             IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10656 
10657 	           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10658 
10659 	           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10660 	                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
10661 	                 FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER DELETE QLN', TRUE);
10662 	                 FND_MSG_PUB.ADD;
10663 	           END IF;
10664 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10665 
10666 	       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10667 
10668                 x_return_status := FND_API.G_RET_STS_ERROR;
10669                 RAISE FND_API.G_EXC_ERROR;
10670 
10671 	       END IF;
10672 
10673             open  c_last_update_date(x_qte_header_rec.quote_header_id);
10674             fetch c_last_update_date into x_qte_header_rec.last_update_date;
10675             close c_last_update_date;
10676 
10677             l_control_rec.last_update_date  :=  x_qte_header_rec.last_update_date;
10678 
10679             IF aso_debug_pub.g_debug_flag = 'Y' THEN
10680                 aso_debug_pub.add('Update_Quote: After call to Update_Quote_Line');
10681                 aso_debug_pub.add('x_qte_header_rec.last_update_date: '|| x_qte_header_rec.last_update_date);
10682                 aso_debug_pub.add('l_control_rec.last_update_date:    '|| l_control_rec.last_update_date);
10683             END IF;
10684 
10685 	END IF;
10686 
10687    END LOOP;
10688 
10689 
10690     --New code for Batch Validate 05/24/2002
10691 
10692     -- Now call batch validate for each configuration at the end quote_line_tbl LOOP
10693 
10694 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10695 aso_debug_pub.add('UPDATE_QUOTE: l_qte_header_rec.Call_batch_validation_flag: '||l_qte_header_rec.Call_batch_validation_flag,1,'N');
10696 END IF;
10697 
10698 IF l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE THEN
10699 
10700    IF aso_debug_pub.g_debug_flag = 'Y' THEN
10701    aso_debug_pub.add('UPDATE_QUOTE: l_model_qte_line_tbl.count: '||l_model_qte_line_tbl.count,1,'N');
10702    aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_tbl.count: '||l_p_batch_qte_line_tbl.count,1,'N');
10703    aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_dtl_tbl.count: '||l_p_batch_qte_line_dtl_tbl.count,1,'N');
10704    END IF;
10705 
10706 
10707    FOR i IN 1..l_model_qte_line_tbl.count LOOP
10708        IF aso_debug_pub.g_debug_flag = 'Y' THEN
10709 	  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');
10710        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');
10711        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');
10712 	  END IF;
10713 
10714        l_send_qte_line_tbl     := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
10715 	  l_send_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
10716        l_send_index            := 0;
10717 
10718        IF l_delete_qte_line_tbl.EXISTS(l_model_qte_line_tbl(i).quote_line_id) THEN
10719 
10720            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10721 		 aso_debug_pub.add('UPDATE_QUOTE: Model line exist in l_delete_qte_line_tbl so it is already deleted along with children lines');
10722 		 END IF;
10723 
10724        ELSE
10725 
10726            FOR j IN 1..l_p_batch_qte_line_dtl_tbl.count LOOP
10727                IF l_p_batch_qte_line_dtl_tbl(j).config_header_id = l_model_qte_line_dtl_tbl(i).config_header_id AND
10728                   l_p_batch_qte_line_dtl_tbl(j).config_revision_num = l_model_qte_line_dtl_tbl(i).config_revision_num THEN
10729 
10730                      l_send_index := l_send_index + 1;
10731                      l_send_qte_line_tbl(l_send_index)     := l_p_batch_qte_line_tbl(j);
10732                      l_send_qte_line_dtl_tbl(l_send_index) := l_p_batch_qte_line_dtl_tbl(j);
10733 
10734                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
10735 				 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');
10736                      aso_debug_pub.add('UPDATE_QUOTE: l_p_batch_qte_line_tbl('||j||').quantity: '||l_p_batch_qte_line_tbl(j).quantity,1,'N');
10737                      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');
10738 				 END IF;
10739                END IF;
10740            END LOOP;
10741 
10742 		 l_control_rec_bv.header_pricing_event  :=  null;
10743 		 l_control_rec_bv.calculate_tax_flag    :=  'N';
10744 		 l_control_rec_bv.defaulting_fwk_flag   :=  'N';
10745 
10746            -- Call Batch Validation procedure
10747            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10748 		 aso_debug_pub.add('UPDATE_QUOTE: Before call to Validate_Configuration',1,'N');
10749 		 END IF;
10750 
10751            ASO_CFG_INT.Validate_Configuration
10752                ( P_Api_Version_Number           =>  1.0,
10753                  P_Init_Msg_List                =>  FND_API.G_FALSE,
10754                  P_Commit                       =>  FND_API.G_FALSE,
10755                  p_control_rec                  =>  l_control_rec_bv,
10756                  P_model_line_id                =>  l_model_qte_line_tbl(i).quote_line_id,
10757                  P_Qte_Line_Tbl                 =>  l_send_qte_line_tbl,
10758                  P_Qte_Line_Dtl_Tbl             =>  l_send_qte_line_dtl_tbl,
10759                  X_config_header_id             =>  l_config_header_id,
10760                  X_config_revision_num          =>  l_config_revision_num,
10761                  X_valid_configuration_flag     =>  l_valid_configuration_flag,
10762                  X_complete_configuration_flag  =>  l_complete_configuration_flag,
10763                  X_return_status                =>  l_return_status,
10764                  X_msg_count                    =>  x_msg_count,
10765                  X_msg_data                     =>  x_msg_data
10766                 );
10767 
10768            IF aso_debug_pub.g_debug_flag = 'Y' THEN
10769 		     aso_debug_pub.add('UPDATE_QUOTE: After call to Validate_Configuration: l_return_status: '||l_return_status,1,'Y');
10770 		     aso_debug_pub.add('UPDATE_QUOTE: l_config_header_id:            '|| l_config_header_id,1,'N');
10771 		     aso_debug_pub.add('UPDATE_QUOTE: l_config_revision_num:         '|| l_config_revision_num,1,'N');
10772 		     aso_debug_pub.add('UPDATE_QUOTE: l_valid_configuration_flag:    '|| l_valid_configuration_flag,1,'N');
10773 		     aso_debug_pub.add('UPDATE_QUOTE: l_complete_configuration_flag: '|| l_complete_configuration_flag,1,'N');
10774 		 END IF;
10775 
10776            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10777 
10778                open c_config_exist_in_cz(l_config_header_id, l_config_revision_num);
10779                fetch c_config_exist_in_cz into l_new_config_hdr_id;
10780 
10781                if c_config_exist_in_cz%found then
10782 
10783                    close c_config_exist_in_cz;
10784 
10785                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
10786                        aso_debug_pub.add('Update Quote: A higher version exist for this configuration so deleting it from CZ');
10787                    END IF;
10788 
10789                    ASO_CFG_INT.DELETE_CONFIGURATION_AUTO( P_API_VERSION_NUMBER  => 1.0,
10790                                                           P_INIT_MSG_LIST       => FND_API.G_FALSE,
10791                                                           P_CONFIG_HDR_ID       => l_config_header_id,
10792                                                           P_CONFIG_REV_NBR      => l_config_revision_num,
10793                                                           X_RETURN_STATUS       => x_return_status,
10794                                                           X_MSG_COUNT           => x_msg_count,
10795                                                           X_MSG_DATA            => x_msg_data);
10796 
10797                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
10798                        aso_debug_pub.add('After call to ASO_CFG_INT.DELETE_CONFIGURATION_AUTO: x_Return_Status: ' || x_Return_Status);
10799                    END IF;
10800 
10801                    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10802 
10803                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10804                           FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
10805                           FND_MESSAGE.Set_Token('OBJECT', 'CONFIGURATION', FALSE);
10806                           FND_MSG_PUB.ADD;
10807                        END IF;
10808 
10809                        RAISE FND_API.G_EXC_ERROR;
10810 
10811                    END IF;
10812 
10813                else
10814                    close c_config_exist_in_cz;
10815                end if;
10816 
10817            END IF;
10818 
10819            IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10820                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10821                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10822            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
10823                x_return_status := FND_API.G_RET_STS_ERROR;
10824                RAISE FND_API.G_EXC_ERROR;
10825            END IF;
10826 
10827        END IF; --l_delete_qte_line_tbl.EXISTS
10828    END LOOP; --l_model_qte_line_tbl.count
10829 
10830    --call Aso_Config_Operations_Int.Config_Operations procedure
10831    IF aso_debug_pub.g_debug_flag = 'Y' THEN
10832        aso_debug_pub.add('Update_Quote: l_deactivate_quote_line_tbl.count: ' || l_deactivate_quote_line_tbl.count);
10833    END IF;
10834 
10835    if l_deactivate_quote_line_tbl.count > 0 then
10836 
10837 	  l_control_rec_bv.header_pricing_event  :=  null;
10838 	  l_control_rec_bv.calculate_tax_flag    :=  'N';
10839 	  l_control_rec_bv.defaulting_fwk_flag   :=  'N';
10840 
10841        l_deactivate_qte_header_rec := x_qte_header_rec;
10842 
10843        IF aso_debug_pub.g_debug_flag = 'Y' THEN
10844            aso_debug_pub.add('Before call to  Aso_Config_Operations_Int.Config_Operations.', 1, 'Y');
10845        END IF;
10846 
10847        Aso_Config_Operations_Int.Config_Operations(
10848               p_api_version_number => 1.0,
10849               p_init_msg_list      => FND_API.G_FALSE,
10850               p_commit             => FND_API.G_FALSE,
10851               p_validation_level   => p_validation_level,
10852               p_control_rec        => l_control_rec_bv,
10853               p_qte_header_rec     => l_deactivate_qte_header_rec,
10854               p_qte_line_tbl       => l_deactivate_quote_line_tbl,
10855               p_instance_tbl       => l_deactivate_instance_tbl,
10856               p_operation_code     => aso_quote_pub.g_deactivate,
10857               p_delete_flag        => fnd_api.g_false,
10858               x_Qte_Header_Rec     => x_Qte_Header_Rec,
10859               x_return_status      => x_return_status,
10860               x_msg_count          => x_msg_count,
10861               x_msg_data           => x_msg_data);
10862 /*
10863 
10864        ASO_CONFIG_OPERATIONS_PVT.Deactivate_from_quote(
10865               P_Api_Version_Number     => 1.0,
10866               P_Init_Msg_List           => FND_API.G_FALSE,
10867               P_Commit                 => FND_API.G_FALSE,
10868               p_validation_level       => p_validation_level,
10869               P_Control_Rec            => l_control_rec_bv,
10870               P_Qte_Header_Rec          => l_deactivate_qte_header_rec,
10871               P_Qte_line_tbl           => l_deactivate_quote_line_tbl,
10872               p_delete_flag            => fnd_api.g_false,
10873               X_qte_header_rec        => x_Qte_Header_Rec,
10874               X_Return_Status           => X_Return_Status,
10875               X_Msg_Count              => X_Msg_Count,
10876               X_Msg_Data               => X_Msg_Data );
10877 */
10878 
10879         IF aso_debug_pub.g_debug_flag = 'Y' THEN
10880             aso_debug_pub.add('After call to Aso_Config_Operations_Int.Config_Operations: x_Return_Status: ' || x_Return_Status, 1, 'Y');
10881         END IF;
10882 
10883    end if;
10884 
10885    --End of call to Aso_Config_Operations_Int.Config_Operations procedure
10886 
10887 END IF; -- l_qte_header_rec.Call_batch_validation_flag = FND_API.G_TRUE
10888 
10889 --End of New code for Batch Validate 05/24/2002
10890 
10891 
10892       -- update price adj relationships
10893       FOR i IN 1..p_price_adj_rltship_tbl.count LOOP
10894 	l_price_adj_rltship_rec := p_price_adj_rltship_tbl(i);
10895 	l_index := l_price_adj_rltship_rec.qte_line_index;
10896 	IF l_index IS NOT NULL AND l_index >=1 AND
10897 		l_index <= x_qte_line_tbl.count THEN
10898 	  l_price_adj_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
10899 	END IF;
10900 	l_index := l_price_adj_rltship_rec.price_adj_index;
10901 	IF l_index IS NOT NULL AND l_index >=1 AND
10902 		l_index <= x_price_adjustment_tbl.count THEN
10903 	  l_price_adj_rltship_rec.price_adjustment_id :=
10904 		l_price_adjustment_tbl(l_index).price_adjustment_id;
10905 	END IF;
10906 	l_index := l_price_adj_rltship_rec.RLTD_PRICE_ADJ_INDEX;
10907 	IF l_index IS NOT NULL AND l_index >=1 AND
10908 		l_index <= x_price_adjustment_tbl.count THEN
10909 	  l_price_adj_rltship_rec.rltd_price_adj_id :=
10910 		l_price_adjustment_tbl(l_index).price_adjustment_id;
10911 	END IF;
10912 	IF l_price_adj_rltship_rec.operation_code = 'CREATE' THEN
10913 	    -- BC4J Fix
10914 	    --l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID := NULL;
10915 	    ASO_PRICE_RLTSHIPS_PKG.Insert_Row(
10916 		px_ADJ_RELATIONSHIP_ID	=> l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
10917 		p_creation_date		=> sysdate,
10918 		p_CREATED_BY		=> G_USER_ID,
10919 		p_LAST_UPDATE_DATE	=> sysdate,
10920 		p_LAST_UPDATED_BY	=> G_USER_ID,
10921 		p_LAST_UPDATE_LOGIN	=> G_USER_ID,
10922 		p_PROGRAM_APPLICATION_ID=> l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
10923 		p_PROGRAM_ID		=> l_price_adj_rltship_rec.PROGRAM_ID,
10924 		p_PROGRAM_UPDATE_DATE	=> l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
10925 		p_REQUEST_ID		=> l_price_adj_rltship_rec.REQUEST_ID,
10926 		p_QUOTE_LINE_ID		=> l_price_adj_rltship_rec.quote_line_id,
10927 		p_PRICE_ADJUSTMENT_ID	=> l_price_adj_rltship_rec.price_adjustment_id,
10928 		p_RLTD_PRICE_ADJ_ID	=> l_price_adj_rltship_rec.rltd_price_adj_id,
10929 		p_QUOTE_SHIPMENT_ID	=> l_price_adj_rltship_rec.quote_shipment_id,
10930 		p_OBJECT_VERSION_NUMBER => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER
10931 		);
10932 	ELSIF l_price_adj_rltship_rec.operation_code = 'UPDATE' THEN
10933 	    ASO_PRICE_RLTSHIPS_PKG.Update_Row(
10934 		p_ADJ_RELATIONSHIP_ID  => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID,
10935 		p_creation_date		=> l_price_adj_rltship_rec.creation_date,
10936 		p_CREATED_BY		=> G_USER_ID,
10937 		p_LAST_UPDATE_DATE	=> sysdate,
10938 		p_LAST_UPDATED_BY	=> G_USER_ID,
10939 		p_LAST_UPDATE_LOGIN	=> G_USER_ID,
10940 		p_PROGRAM_APPLICATION_ID=> l_price_adj_rltship_rec.PROGRAM_APPLICATION_ID,
10941 		p_PROGRAM_ID		=> l_price_adj_rltship_rec.PROGRAM_ID,
10942 		p_PROGRAM_UPDATE_DATE	=> l_price_adj_rltship_rec.PROGRAM_UPDATE_DATE,
10943 		p_REQUEST_ID		=> l_price_adj_rltship_rec.REQUEST_ID,
10944 		p_QUOTE_LINE_ID		=> l_price_adj_rltship_rec.quote_line_id,
10945 		p_PRICE_ADJUSTMENT_ID	=> l_price_adj_rltship_rec.price_adjustment_id,
10946 		p_RLTD_PRICE_ADJ_ID	=> l_price_adj_rltship_rec.rltd_price_adj_id,
10947 		p_QUOTE_SHIPMENT_ID	=> l_price_adj_rltship_rec.quote_shipment_id,
10948 		p_OBJECT_VERSION_NUMBER => l_price_adj_rltship_rec.OBJECT_VERSION_NUMBER
10949 		);
10950 	ELSIF l_price_adj_rltship_rec.operation_code = 'DELETE' THEN
10951 	    ASO_PRICE_RLTSHIPS_PKG.Delete_Row(
10952 		p_ADJ_RELATIONSHIP_ID  => l_price_adj_rltship_rec.ADJ_RELATIONSHIP_ID);
10953 
10954 	END IF;
10955 	X_Price_Adj_Rltship_Tbl(i) := l_price_adj_rltship_rec;
10956 
10957 
10958       END LOOP;
10959 
10960 --start bug8235510
10961 for i in 1 ..x_qte_line_dtl_tbl.count
10962 loop
10963 aso_debug_pub.ADD('x_qte_line_dtl_tbl.quot_line_id' || x_qte_line_dtl_tbl(i).quote_line_id);
10964 aso_debug_pub.ADD('x_qte_line_dtl_tbl.quot_line_detail_id' || x_qte_line_dtl_tbl(i).quote_line_detail_id);
10965 aso_debug_pub.ADD('x_qte_line_dtl_tbl.ref_line_id' || x_qte_line_dtl_tbl(i).ref_line_id);
10966 end loop;
10967 FOR i in 1..x_qte_line_tbl.count LOOP
10968 l_line_rltship_rec := ASO_QUOTE_PUB.G_Miss_Line_Rltship_Rec;
10969 x_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(x_qte_line_tbl(i).quote_line_id);
10970 IF x_qte_line_dtl_tbl.count > 0 THEN
10971 IF x_qte_line_dtl_tbl(1).ref_line_id IS NOT NULL AND x_qte_line_dtl_tbl(1).ref_line_id <> FND_API.G_MISS_NUM THEN
10972    -- Adding a check to find if find line relationship already exists bug 12608111 to avoid data corruption in aso_line_relationships
10973      select count(*) into  ct_rel
10974      from aso_line_relationships
10975      where quote_line_id = x_qte_line_dtl_tbl(1).ref_line_id
10976      and related_quote_line_id = x_qte_line_dtl_tbl(1).quote_line_id
10977      and relationship_type_code='CONFIG';
10978      IF aso_debug_pub.g_debug_flag = 'Y' THEN
10979         aso_debug_pub.add('before l_line_rltship_rec Create_Line_Rltship ct_rel'||ct_rel);
10980      end if;
10981      if ct_rel=0 then
10982                 		l_line_rltship_rec.OPERATION_CODE         := 'CREATE';
10983                 		l_line_rltship_rec.QUOTE_LINE_ID          := x_qte_line_dtl_tbl(1).ref_line_id;
10984                 		l_line_rltship_rec.RELATED_QUOTE_LINE_ID  := x_qte_line_dtl_tbl(1).quote_line_id;
10985                 		l_line_rltship_rec.RELATIONSHIP_TYPE_CODE := 'CONFIG';
10986 
10987 		ASO_LINE_RLTSHIP_PVT.Create_Line_Rltship(
10988                     P_Api_Version_Number   => 1.0,
10989                     P_Init_Msg_List        => FND_API.G_FALSE,
10990                     P_Commit               => FND_API.G_FALSE,
10991                     P_Validation_Level     => p_validation_level,
10992                     P_Line_Rltship_Rec     => l_line_rltship_rec,
10993                     X_LINE_RELATIONSHIP_ID => lx_line_relationship_id,
10994                     X_Return_Status        => x_return_status,
10995                     X_Msg_Count            => x_msg_count,
10996                     X_Msg_Data             => x_msg_data
10997                 );
10998  end if; -- ct_rel=0
10999 end if;
11000 end if;
11001 end loop;
11002 --end bug8235510
11003       -- update line relationships
11004       FOR i IN 1..p_line_rltship_tbl.count LOOP
11005 	l_line_rltship_rec := p_line_rltship_tbl(i);
11006 	l_index := l_line_rltship_rec.qte_line_index;
11007 	IF l_index IS NOT NULL AND l_index >=1 AND
11008 		l_index <= x_qte_line_tbl.count THEN
11009 	  l_line_rltship_rec.quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
11010 	END IF;
11011 	l_index := l_line_rltship_rec.related_qte_line_index;
11012 	IF l_index IS NOT NULL AND l_index >=1 AND
11013 		l_index <= x_qte_line_tbl.count THEN
11014 	  l_line_rltship_rec.related_quote_line_id := x_qte_line_tbl(l_index).quote_line_id;
11015 	END IF;
11016 	IF l_line_rltship_rec.operation_code = 'CREATE' THEN
11017 	    -- BC4J Fix
11018 	    --l_line_rltship_rec.LINE_RELATIONSHIP_ID := NULL;
11019 	    ASO_LINE_RELATIONSHIPS_PKG.Insert_Row(
11020 		px_LINE_RELATIONSHIP_ID  => l_line_rltship_rec.LINE_RELATIONSHIP_ID,
11021 		p_CREATION_DATE  => SYSDATE,
11022 		p_CREATED_BY  => G_USER_ID,
11023 		p_LAST_UPDATED_BY  => G_USER_ID,
11024 		p_LAST_UPDATE_DATE  => SYSDATE,
11025 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
11026 		p_REQUEST_ID  => l_line_rltship_rec.REQUEST_ID,
11027 		p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
11028 		p_PROGRAM_ID  => l_line_rltship_rec.PROGRAM_ID,
11029 		p_PROGRAM_UPDATE_DATE  =>l_line_rltship_rec.PROGRAM_UPDATE_DATE,
11030 		p_QUOTE_LINE_ID  => l_line_rltship_rec.quote_line_id,
11031 		p_RELATED_QUOTE_LINE_ID  => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
11032 		p_RECIPROCAL_FLAG  => l_line_rltship_rec.RECIPROCAL_FLAG,
11033 		P_RELATIONSHIP_TYPE_CODE =>l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
11034 		p_OBJECT_VERSION_NUMBER => l_line_rltship_rec.OBJECT_VERSION_NUMBER
11035 		);
11036 	ELSIF l_line_rltship_rec.operation_code = 'UPDATE' THEN
11037 	    ASO_LINE_RELATIONSHIPS_PKG.Update_Row(
11038 		p_LINE_RELATIONSHIP_ID	=> l_line_rltship_rec.LINE_RELATIONSHIP_ID,
11039 		p_CREATION_DATE  => l_line_rltship_rec.creation_date,
11040 		p_CREATED_BY  => G_USER_ID,
11041 		p_LAST_UPDATED_BY  => G_USER_ID,
11042 		p_LAST_UPDATE_DATE  => SYSDATE,
11043 		p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
11044 		p_REQUEST_ID  => l_line_rltship_rec.REQUEST_ID,
11045 		p_PROGRAM_APPLICATION_ID  => l_line_rltship_rec.PROGRAM_APPLICATION_ID,
11046 		p_PROGRAM_ID  => l_line_rltship_rec.PROGRAM_ID,
11047 		p_PROGRAM_UPDATE_DATE  =>l_line_rltship_rec.PROGRAM_UPDATE_DATE,
11048 		p_QUOTE_LINE_ID  => l_line_rltship_rec.quote_line_id,
11049 		p_RELATED_QUOTE_LINE_ID  => l_line_rltship_rec.RELATED_QUOTE_LINE_ID,
11050 		p_RECIPROCAL_FLAG  => l_line_rltship_rec.RECIPROCAL_FLAG,
11051 		P_RELATIONSHIP_TYPE_CODE =>l_line_rltship_rec.RELATIONSHIP_TYPE_CODE,
11052 		p_OBJECT_VERSION_NUMBER => l_line_rltship_rec.OBJECT_VERSION_NUMBER
11053 		);
11054 	ELSIF l_line_rltship_rec.operation_code = 'DELETE' THEN
11055 	    ASO_LINE_RELATIONSHIPS_PKG.delete_Row(
11056 		p_LINE_RELATIONSHIP_ID	=> l_line_rltship_rec.LINE_RELATIONSHIP_ID);
11057 	END IF;
11058 	X_line_Rltship_Tbl(i) := l_line_rltship_rec;
11059 
11060      IF aso_debug_pub.g_debug_flag = 'Y' THEN
11061  	   aso_debug_pub.add('Update_Quote: l_line_rltship_rec.quote_line_id:         '||l_line_rltship_rec.quote_line_id);
11062         aso_debug_pub.add('Update_Quote: l_line_rltship_rec.related_quote_line_id: '||l_line_rltship_rec.related_quote_line_id);
11063      END IF;
11064 
11065      if l_line_rltship_rec.relationship_type_code = 'CONFIG' and
11066         (l_line_rltship_rec.operation_code = 'CREATE' or
11067          l_line_rltship_rec.operation_code = 'UPDATE') then
11068 
11069           update aso_quote_line_details
11070           set ref_type_code      =  'CONFIG',
11071               ref_line_id        =  l_line_rltship_rec.quote_line_id,
11072               last_update_date   =  sysdate,
11073               last_updated_by    =  g_user_id,
11074               last_update_login  =  g_login_id
11075           where quote_line_id = l_line_rltship_rec.related_quote_line_id;
11076 
11077      end if;
11078 
11079      END LOOP;
11080 
11081      IF aso_debug_pub.g_debug_flag = 'Y' THEN
11082 	   aso_debug_pub.add('Update_Quote: x_qte_header_rec.quote_header_id: '|| x_qte_header_rec.quote_header_id);
11083      END IF;
11084 
11085      update aso_quote_line_details
11086      set ref_type_code      =  'CONFIG',
11087          last_update_date   =  sysdate,
11088          last_updated_by    =  g_user_id,
11089          last_update_login  =  g_login_id
11090      where config_header_id is not null
11091      and config_revision_num is not null
11092      and ref_type_code is null
11093      and quote_line_id in (select quote_line_id from aso_quote_lines_all
11094                            where item_type_code = 'MDL'
11095                            and quote_header_id  = x_qte_header_rec.quote_header_id);
11096 
11097   IF aso_debug_pub.g_debug_flag = 'Y' THEN
11098 	   aso_debug_pub.add('Update_Quote: Validating line type if Order type has changed');
11099        aso_debug_pub.add('Update_Quote: l_qte_header_rec.order_type_id: '||l_qte_header_rec.order_type_id);
11100     END IF;
11101 
11102 
11103      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
11104 
11105           For quote_lines_rec IN c_quote_lines(l_qte_header_rec.quote_header_id) LOOP
11106 
11107                 l_ln_rec.quote_line_id      :=  quote_lines_rec.quote_line_id;
11108                 l_ln_rec.order_line_type_id :=  quote_lines_rec.order_line_type_id;
11109                 l_ln_rec.line_category_code :=  quote_lines_rec.line_category_code;
11110 
11111 
11112                     --Validate_ln_type_for_ord_type
11113 
11114                     ASO_validate_PVT.Validate_ln_type_for_ord_type(
11115                         p_init_msg_list     =>   FND_API.G_FALSE,
11116                         p_qte_header_rec    =>   l_qte_header_rec,
11117                         P_Qte_Line_rec      =>   l_ln_rec,
11118                         x_return_status     =>   x_return_status,
11119                         x_msg_count         =>   x_msg_count,
11120                         x_msg_data          =>   x_msg_data);
11121 
11122                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11123                         RAISE FND_API.G_EXC_ERROR;
11124                     END IF;
11125                     --Validate_ln_category_code
11126 
11127                     ASO_validate_PVT.Validate_ln_category_code(
11128                         p_init_msg_list     =>   FND_API.G_FALSE,
11129                         p_qte_header_rec    =>   l_qte_header_rec,
11130                         P_Qte_Line_rec      =>   l_ln_rec,
11131                         x_return_status     =>   x_return_status,
11132                         x_msg_count         =>   x_msg_count,
11133                         x_msg_data          =>   x_msg_data);
11134 
11135                     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11136                         RAISE FND_API.G_EXC_ERROR;
11137                     END IF;
11138 
11139 
11140        END LOOP;
11141    End if;
11142 
11143 
11144       	aso_validate_pvt.Validate_po_line_number
11145 		(
11146 			p_init_msg_list	  => fnd_api.g_false,
11147 			p_qte_header_rec    => l_qte_header_rec,
11148 			x_return_status     => x_return_status,
11149 			x_msg_count         => x_msg_count,
11150 			x_msg_data          => x_msg_data);
11151 
11152 		IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11153                   RAISE FND_API.G_EXC_ERROR;
11154             END IF;
11155 
11156 
11157 
11158 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
11159 	     aso_debug_pub.add('Update_Quote - before header_pricing ', 1, 'N');
11160 	END IF;
11161 
11162      IF l_control_rec.header_pricing_event IS NOT NULL AND
11163 	   l_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR THEN
11164 
11165 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
11166 	       aso_debug_pub.add('Update_Quote - in header_pricing ', 1, 'N');
11167 	   END IF;
11168 
11169 	   l_pricing_control_rec.request_type  := p_control_rec.pricing_request_type;
11170 	   l_pricing_control_rec.pricing_event := p_control_rec.header_pricing_event;
11171 	   l_pricing_control_rec.price_mode    := p_control_rec.price_mode;
11172 
11173         --New Code for to call overload pricing_order
11174 
11175         lv_qte_header_rec    := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
11176         lv_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(x_qte_header_rec.quote_header_id,null);
11177         lv_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(x_qte_header_rec.quote_header_id,null);
11178 
11179         if lv_hd_shipment_tbl.count = 1 then
11180             lv_hd_shipment_rec := lv_hd_shipment_tbl(1);
11181         end if;
11182 
11183         IF aso_debug_pub.g_debug_flag = 'Y' THEN
11184             aso_debug_pub.add('Update_Quote: Before call to ASO_PRICING_INT.Pricing_Order');
11185             aso_debug_pub.add('Update_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
11186         END IF;
11187 
11188         ASO_PRICING_INT.Pricing_Order(
11189                     P_Api_Version_Number     => 1.0,
11190                     P_Init_Msg_List          => fnd_api.g_false,
11191                     P_Commit                 => fnd_api.g_false,
11192                     p_control_rec            => l_pricing_control_rec,
11193                     p_qte_header_rec         => lv_qte_header_rec,
11194                     p_hd_shipment_rec        => lv_hd_shipment_rec,
11195                     p_hd_price_attr_tbl      => lv_hd_price_attr_tbl,
11196                     p_qte_line_tbl           => x_qte_line_tbl,
11197                     --p_line_rltship_tbl     => l_line_rltship_tbl,
11198                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
11199                     --p_ln_shipment_tbl      => ln_shipment_tbl,
11200                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
11201                     x_qte_header_rec         => lx_qte_header_rec,
11202                     x_qte_line_tbl           => lx_qte_line_tbl,
11203                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
11204                     x_price_adj_tbl          => l_price_adj_tbl_out,
11205                     x_price_adj_attr_tbl     => l_Price_Adj_Attr_Tbl_out,
11206                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
11207                     x_return_status          => l_return_status,
11208                     x_msg_count              => x_msg_count,
11209                     x_msg_data               => x_msg_data );
11210 
11211 
11212         x_qte_line_tbl := lx_qte_line_tbl;
11213 
11214         IF aso_debug_pub.g_debug_flag = 'Y' THEN
11215             aso_debug_pub.add('Update_Quote: After call to ASO_PRICING_INT.Pricing_Order');
11216 	       aso_debug_pub.add('Update_Quote: l_return_status:       ' || l_return_status);
11217             aso_debug_pub.add('Update_Quote: lx_qte_line_tbl.count: ' || lx_qte_line_tbl.count);
11218             aso_debug_pub.add('Update_Quote: x_qte_line_tbl.count:  ' || x_qte_line_tbl.count);
11219         END IF;
11220 
11221 	   IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
11222 
11223 	         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11224 
11225 	         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11226 
11227 	   	        FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
11228 	 	        FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
11229 		        FND_MSG_PUB.ADD;
11230 
11231 	         END IF;
11232 
11233 	         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11234 
11235 	   ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
11236 
11237 	         x_return_status := FND_API.G_RET_STS_ERROR;
11238               RAISE FND_API.G_EXC_ERROR;
11239 
11240 	   END IF;
11241 
11242      END IF;
11243 
11244 
11245      /*New Pricing Changes to update the date*/
11246 
11247 
11248      IF p_control_rec.header_pricing_event = 'BATCH' and
11249         p_control_rec.price_mode='ENTIRE_QUOTE' THEN
11250 
11251           l_price_updated_date_flag := fnd_api.g_true;
11252 
11253      END IF;
11254 
11255 
11256              -- kchervel calculating tax for the whole quote
11257       IF p_control_rec.calculate_tax_flag = 'Y' THEN
11258 
11259 	 --Added the IF Condition below to facilitate TAX calculation changes .
11260        	IF l_qte_line_tbl.count >0 then
11261 		l_lines:=1;
11262 	else
11263 		SELECT
11264 			COUNT(QUOTE_HEADER_ID)
11265 		INTO
11266 			l_lines
11267 		FROM
11268 			ASO_QUOTE_LINES_ALL
11269 		WHERE
11270 			QUOTE_HEADER_ID=x_qte_header_rec.quote_header_id;
11271 	END IF;
11272 
11273 	--Commented the Below lines by Anoop on 15th August
11274 	/*  l_tax_control_rec.tax_level := 'SHIPPING';
11275          l_tax_control_rec.update_DB := 'Y';
11276 	ASO_TAX_INT.Calculate_Tax(
11277 		P_Api_Version_Number => 1.0,
11278 		p_quote_header_id    => x_qte_header_rec.quote_header_id,
11279 		P_Tax_Control_Rec    => l_tax_control_rec,
11280 		x_tax_amount	     => x_tax_amount    ,
11281 		x_tax_detail_tbl    => l_tax_detail_tbl,
11282 		X_Return_Status     => x_return_status ,
11283 		X_Msg_Count         => x_msg_count     ,
11284 		X_Msg_Data           => x_msg_data      );
11285 	*/
11286 
11287 
11288 --Changed the call to Tax API as a part of eTAX  by Anoop Rajan on August 9 2005
11289 IF l_lines>0 then
11290 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
11291 	    aso_debug_pub.add('Update_Quote: Before call to tax engine');
11292 
11293     	    aso_debug_pub.add('Calculate Tax Flag : '|| p_control_rec.calculate_tax_flag);
11294 	END IF;
11295 	ASO_TAX_INT.CALCULATE_TAX_WITH_GTT (	p_API_VERSION_NUMBER => 1.0,
11296 						p_qte_header_id => x_qte_header_rec.quote_header_id,
11297 						x_return_status =>   x_return_status ,
11298 						X_Msg_Count =>	x_msg_count     ,
11299 						X_Msg_Data =>  x_msg_data      );
11300 
11301 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
11302 	    aso_debug_pub.add('Update_Quote: After call to tax engine');
11303 	END IF;
11304 else
11305 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
11306 		aso_debug_pub.add('Update_Quote: NO LINE RECORDS.SO TAX NOT CALCULATED : x_return_status: '|| x_return_status, 1, 'Y');
11307 	END IF;
11308 end if;
11309 
11310       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11311        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11312                FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
11313 	       FND_MESSAGE.Set_Token('API', 'CALCULATE_TAX_WITH_GTT', FALSE);
11314 	       FND_MSG_PUB.ADD;
11315        END IF;
11316 
11317        IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
11318             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11319        ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
11320             RAISE FND_API.G_EXC_ERROR;
11321        END IF;
11322 
11323       END IF;
11324 
11325       END IF; -- tax flag set
11326 
11327 
11328       /*New Tax Changes to update the date*/
11329 
11330 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11331 
11332 	    aso_debug_pub.add('Update_Quote: control record parameter values');
11333 	    aso_debug_pub.add('p_control_rec.header_pricing_event: ' || p_control_rec.header_pricing_event);
11334 	    aso_debug_pub.add('p_control_rec.price_mode:           ' || p_control_rec.price_mode);
11335 	    aso_debug_pub.add('p_control_rec.calculate_tax_flag:   ' || p_control_rec.calculate_tax_flag);
11336 	    aso_debug_pub.add('l_price_updated_date_flag:          ' || l_price_updated_date_flag);
11337 
11338 	 END IF;
11339 
11340       IF p_control_rec.calculate_tax_flag = 'Y' THEN
11341 
11342           IF l_price_updated_date_flag = fnd_api.g_true THEN
11343 
11344               update aso_quote_headers_all
11345               set tax_updated_date   = sysdate,
11346                   price_updated_date = sysdate,
11347 			   recalculate_flag   = 'N'
11348               where quote_header_id = x_qte_header_rec.quote_header_id;
11349 
11350           ELSE
11351 
11352               update aso_quote_headers_all
11353               set tax_updated_date   = sysdate
11354               where quote_header_id = x_qte_header_rec.quote_header_id;
11355 
11356           END IF;
11357 
11358       ELSIF l_price_updated_date_flag = fnd_api.g_true THEN
11359 
11360           update aso_quote_headers_all
11361           set price_updated_date = sysdate,
11362 		    recalculate_flag   = 'N'
11363           where quote_header_id = x_qte_header_rec.quote_header_id;
11364 
11365       END IF;
11366 
11367 
11368 
11369       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
11370       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
11371       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
11372       -- IF calculate_tax_flag = 'N', not summation on line level tax,
11373       -- just take the value of l_qte_header_rec.total_tax as the total_tax
11374       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
11375       -- just take the value of l_qte_header_rec.total_freight_charge
11376       -- (or l_hd_shipment_tbl(1).total_freight_charge???) as the TOTAL_SHIPPING_CHARGE
11377 
11378 
11379       IF p_control_rec.calculate_tax_flag = 'N' AND
11380 		 l_qte_header_rec.total_tax IS NOT NULL THEN
11381 	  l_calculate_tax := 'N';
11382       END IF;
11383       IF p_control_rec.calculate_freight_charge_flag = 'N' AND
11384 		l_qte_header_rec.total_shipping_charge IS NOT NULL THEN
11385 	  l_calculate_freight_charge := 'N';
11386       END IF;
11387 
11388 
11389       -- Start of PNPL Changes
11390       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
11391 
11392       l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
11393                                                                      p_org_id =>x_qte_header_rec.org_id);
11394 
11395       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11396           aso_debug_pub.add('Update_Quote - Value of Installment Option Param: '||l_installment_option, 1, 'Y');
11397       END IF;
11398 
11399        IF (  (l_installment_option = 'ENABLE_PAY_NOW') and (nvl(x_qte_header_rec.quote_type,'X') <>  'T')
11400             and ((p_control_rec.header_pricing_event <> FND_API.G_MISS_CHAR and p_control_rec.header_pricing_event is not null)
11401               or (p_control_rec.calculate_tax_flag = 'Y'))   ) then
11402 
11403            l_call_ar_api :=  fnd_api.g_true;
11404 
11405            IF aso_debug_pub.g_debug_flag = 'Y' THEN
11406              aso_debug_pub.add('Update_Quote - p_control_rec.header_pricing_event: '||p_control_rec.header_pricing_event, 1, 'Y');
11407              aso_debug_pub.add('Update_Quote - p_control_rec.price_mode          : '||p_control_rec.price_mode, 1, 'Y');
11408              aso_debug_pub.add('Update_Quote - l_qte_line_tbl.count              : '||l_qte_line_tbl.count, 1, 'Y');
11409            END IF;
11410 
11411          -- check if price_mode is change_line, if so then call ar api only if some lines are being created or updated
11412 	    IF (p_control_rec.header_pricing_event = 'BATCH' and p_control_rec.price_mode = 'CHANGE_LINE') THEN
11413                if (l_qte_line_tbl.count > 0) then
11414                   l_call_ar_api :=  fnd_api.g_false;
11415                   for i in 1..l_qte_line_tbl.count loop
11416 			    if (l_qte_line_tbl(i).operation_code = 'CREATE' or l_qte_line_tbl(i).operation_code = 'UPDATE')  then
11417 			     l_call_ar_api :=  fnd_api.g_true;
11418 				exit;
11419 			    end if;
11420 			   end loop;
11421 			else
11422 			 l_call_ar_api :=  fnd_api.g_false;
11423 			end if;
11424 	    END IF;
11425 
11426            IF aso_debug_pub.g_debug_flag = 'Y' THEN
11427               aso_debug_pub.add('Update_Quote - l_call_ar_api: '|| l_call_ar_api, 1, 'Y');
11428            END IF;
11429 
11430      IF (l_call_ar_api = fnd_api.g_true ) then
11431 
11432        For quote_lines_rec IN c_quote_lines(x_qte_header_rec.quote_header_id) LOOP
11433 
11434           -- resetting the line term id variable
11435           l_line_term_id := null;
11436 
11437        -- get the line freight charges
11438           l_line_shipping_charge := aso_shipping_int.get_line_freight_charges( x_qte_header_rec.quote_header_id,
11439                                                                                quote_lines_rec.quote_line_id );
11440 
11441        -- get the line tax
11442           open c_tax_line(x_qte_header_rec.quote_header_id,quote_lines_rec.quote_line_id);
11443           fetch c_tax_line into l_line_tax;
11444           close c_tax_line;
11445 
11446        -- get the payment term id for the line
11447           open get_line_payment_term(x_qte_header_rec.quote_header_id,quote_lines_rec.quote_line_id);
11448           fetch get_line_payment_term into l_line_term_id;
11449           close get_line_payment_term;
11450 
11451            -- if line term id is null then get it from header
11452            If l_line_term_id is null  THEN
11453                open get_hdr_payment_term(x_qte_header_rec.quote_header_id);
11454                fetch get_hdr_payment_term into l_line_term_id;
11455                close get_hdr_payment_term;
11456            END IF;
11457 
11458       l_line_amount := quote_lines_rec.line_quote_price * quote_lines_rec.quantity;
11459 
11460 
11461       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11462 		aso_debug_pub.add('Update_Quote - ********** Input to AR_VIEW_TERM_GRP.pay_now_amounts follows ********** ', 1, 'Y');
11463 		aso_debug_pub.add('Update_Quote - quote_lines_rec.quote_line_id: '||quote_lines_rec.quote_line_id, 1, 'Y');
11464           aso_debug_pub.add('Update_Quote - l_line_amount:                 '||l_line_amount, 1, 'Y');
11465           aso_debug_pub.add('Update_Quote - l_line_shipping_charge:        '||l_line_shipping_charge, 1, 'Y');
11466           aso_debug_pub.add('Update_Quote - l_line_tax:                    '||l_line_tax, 1, 'Y');
11467           aso_debug_pub.add('Update_Quote - l_line_term_id:                '||l_line_term_id, 1, 'Y');
11468 	 END IF;
11469 
11470       IF (l_line_term_id is not null and l_line_term_id <> fnd_api.g_miss_num) then
11471 
11472       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11473           aso_debug_pub.add('Update_Quote: before call to AR_VIEW_TERM_GRP.pay_now_amounts', 1, 'Y');
11474       END IF;
11475 
11476        -- Call the AR API to get the amounts
11477              AR_VIEW_TERM_GRP.pay_now_amounts(
11478                     p_api_version              => 1.0,
11479                     p_init_msg_list            => p_init_msg_list,
11480                     p_validation_level         => FND_API.G_VALID_LEVEL_FULL,
11481                     p_term_id                  => l_line_term_id,
11482                     p_currency_code            => x_qte_header_rec.currency_code,
11483                     p_line_amount              => l_line_amount,
11484                     p_tax_amount               => l_line_tax,
11485                     p_freight_amount           => l_line_shipping_charge,
11486                     x_pay_now_line_amount      => l_paynow_amount,
11487                     x_pay_now_tax_amount       => l_paynow_tax,
11488                     x_pay_now_freight_amount   => l_paynow_charges,
11489                     x_pay_now_total_amount     => l_paynow_total,
11490                     X_Return_Status            => x_return_status ,
11491                     X_Msg_Count                => x_msg_count     ,
11492                     X_Msg_Data                 => x_msg_data      );
11493 
11494           IF aso_debug_pub.g_debug_flag = 'Y' THEN
11495 		    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;
11496 
11497           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11498 
11499               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11500                   FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
11501                   FND_MESSAGE.Set_Token('API', 'AR_PayNow_Amounts', FALSE);
11502                   FND_MSG_PUB.ADD;
11503               END IF;
11504 
11505               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
11506                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11507               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
11508                    RAISE FND_API.G_EXC_ERROR;
11509               END IF;
11510 
11511           END IF;
11512 
11513       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11514         aso_debug_pub.add('Update_Quote - Output from AR_VIEW_TERM_GRP.pay_now_amounts follows:', 1, 'Y');
11515         aso_debug_pub.add('Update_Quote - l_paynow_amount:         '||l_paynow_amount, 1, 'Y');
11516         aso_debug_pub.add('Update_Quote - l_paynow_charges:        '||l_paynow_charges, 1, 'Y');
11517         aso_debug_pub.add('Update_Quote - l_paynow_tax:            '||l_paynow_tax, 1, 'Y');
11518         aso_debug_pub.add('Update_Quote - l_paynow_total:          '||l_paynow_total, 1, 'Y');
11519         aso_debug_pub.add('Update_Quote - ************  End  PNPL Processing ************ ', 1, 'Y');
11520       END IF;
11521 
11522 
11523           -- Update the corresponding columns in the line table
11524           update aso_quote_lines_all
11525           set line_paynow_charges    = l_paynow_charges,
11526               line_paynow_tax        = l_paynow_tax,
11527               line_paynow_subtotal   = l_paynow_amount,
11528               last_update_date       =  sysdate,
11529               last_updated_by        =  fnd_global.user_id,
11530               last_update_login      =  fnd_global.conc_login_id
11531           where quote_line_id = quote_lines_rec.quote_line_id;
11532 
11533         end if; -- check for term id null
11534        end loop;
11535 
11536     END IF; -- end if for call ar api flag
11537    END IF;
11538 
11539       -- End of PNPL Changes
11540 
11541       Update_Quote_Total (
11542 			P_Qte_Header_id		  => x_Qte_Header_rec.quote_header_id,
11543 			P_Calculate_Tax		  => p_control_rec.calculate_tax_flag,
11544 			P_calculate_Freight_Charge => p_control_rec.calculate_freight_charge_flag,
11545                p_control_rec		       =>  p_control_rec,
11546                P_Call_Ar_Api_Flag         => l_call_ar_api,
11547 			X_Return_Status 	       => x_return_status,
11548 			X_Msg_Count		       => x_msg_count,
11549 			X_Msg_Data		       => x_msg_data);
11550 
11551       x_qte_header_rec := aso_utility_pvt.query_header_row(x_qte_header_rec.quote_header_id);
11552 
11553       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
11554 
11555 
11556 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
11557 	          FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
11558 	          FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER AFTER UPDT TOTAL', TRUE);
11559 	          FND_MSG_PUB.ADD;
11560 	      END IF;
11561 
11562 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11563 
11564       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
11565 
11566 	      RAISE FND_API.G_EXC_ERROR;
11567 
11568       END IF;
11569 
11570       --
11571       -- End of API body.
11572       --
11573 
11574       -- Change START
11575       -- Release 12 TAP Changes
11576       -- Girish Sachdeva 8/30/2005
11577       -- Adding the call to insert record in the ASO_CHANGED_QUOTES
11578 
11579       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11580 		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');
11581       END IF;
11582 
11583       -- Call to insert record in ASO_CHANGED_QUOTES
11584       ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(x_qte_header_rec.quote_number);
11585 
11586       -- Change END
11587 
11588 
11589       -- Standard check for p_commit
11590       IF FND_API.to_Boolean( p_commit ) THEN
11591 	     COMMIT WORK;
11592       END IF;
11593 
11594       -- Standard call to get message count and if count is 1, get message info.
11595       FND_MSG_PUB.Count_And_Get
11596       (  p_count	  =>   x_msg_count,
11597   	 p_data 	  =>   x_msg_data
11598       );
11599 
11600       EXCEPTION
11601 	  WHEN FND_API.G_EXC_ERROR THEN
11602 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11603 		   P_API_NAME => L_API_NAME
11604 		  ,P_PKG_NAME => G_PKG_NAME
11605 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
11606 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11607 		  ,P_SQLCODE => SQLCODE
11608 		  ,P_SQLERRM => SQLERRM
11609 		  ,X_MSG_COUNT => X_MSG_COUNT
11610 		  ,X_MSG_DATA => X_MSG_DATA
11611 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11612 
11613 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11614 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11615 		   P_API_NAME => L_API_NAME
11616 		  ,P_PKG_NAME => G_PKG_NAME
11617 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
11618 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11619 		  ,P_SQLCODE => SQLCODE
11620 		  ,P_SQLERRM => SQLERRM
11621 		  ,X_MSG_COUNT => X_MSG_COUNT
11622 		  ,X_MSG_DATA => X_MSG_DATA
11623 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11624 
11625 	  WHEN OTHERS THEN
11626 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11627 		   P_API_NAME => L_API_NAME
11628 		  ,P_PKG_NAME => G_PKG_NAME
11629 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
11630 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11631 		  ,P_SQLCODE => SQLCODE
11632 		  ,P_SQLERRM => SQLERRM
11633 		  ,X_MSG_COUNT => X_MSG_COUNT
11634 		  ,X_MSG_DATA => X_MSG_DATA
11635 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11636 End Update_quote;
11637 
11638 
11639 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
11640 --	 The Master delete procedure may not be needed depends on different business requirements.
11641 PROCEDURE Delete_quote(
11642     P_Api_Version_Number	 IN   NUMBER,
11643     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
11644     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
11645     P_qte_Header_Id		 IN   NUMBER,
11646     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11647     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11648     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2
11649     )
11650 
11651 IS
11652     l_api_name		      CONSTANT VARCHAR2(30) := 'Delete_quote';
11653     l_api_version_number      CONSTANT NUMBER	:= 1.0;
11654      l_qln_id NUMBER;
11655     CURSOR c_qte_lines IS
11656 	SELECT quote_line_id FROM ASO_QUOTE_LINES_ALL
11657 	WHERE quote_header_id = p_qte_header_id;
11658 
11659     l_qte_line_rec		ASO_QUOTE_PUB.Qte_Line_Rec_Type;
11660     CURSOR c_qte_line(l_d_qte_line NUMBER) IS
11661     SELECT quote_line_id  FROM ASO_QUOTE_LINES_ALL
11662     where quote_line_id= l_qte_line_rec.quote_line_id;
11663 BEGIN
11664       -- Standard Start of API savepoint
11665       SAVEPOINT DELETE_quote_PVT;
11666 
11667       -- Standard call to check for call compatibility.
11668       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
11669 			 		     p_api_version_number,
11670 					   l_api_name,
11671 					   G_PKG_NAME)
11672       THEN
11673 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11674       END IF;
11675 
11676 
11677       -- Initialize message list if p_init_msg_list is set to TRUE.
11678       IF FND_API.to_Boolean( p_init_msg_list )
11679       THEN
11680 	  FND_MSG_PUB.initialize;
11681       END IF;
11682 
11683 
11684       -- Initialize API return status to SUCCESS
11685       x_return_status := FND_API.G_RET_STS_SUCCESS;
11686 
11687       --
11688       -- Api body
11689       --
11690 
11691       -- Invoke table handler(ASO_QUOTE_HEADERS_PKG.Delete_Row)
11692 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11693 	 aso_debug_pub.add('Delete_Quote - Begin ', 1, 'Y');
11694 	 END IF;
11695 
11696       ASO_QUOTE_HEADERS_PKG.Delete_Row(
11697 	  p_QUOTE_HEADER_ID  => p_qte_header_id);
11698 
11699       FOR line_rec IN c_qte_lines LOOP
11700 	  l_qte_line_rec.quote_line_id := line_rec.quote_line_id;
11701 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
11702 	 aso_debug_pub.add('Delete_Quote - before delete_line- quote_line_id: '|| l_qte_line_rec.quote_line_id, 1, 'N');
11703 	 END IF;
11704 
11705                OPEN c_qte_line(l_qte_line_rec.quote_line_id);
11706          FETCH c_qte_line into l_qln_id;
11707          IF c_qte_line%FOUND AND l_qln_id <> FND_API.G_MISS_NUM  THEN
11708 	  ASO_QUOTE_LINES_PVT.Delete_Quote_Line(
11709 		P_Api_Version_Number	=> 1.0,
11710 		P_qte_line_Rec		=> l_qte_line_rec,
11711 		P_Update_Header_Flag	=> FND_API.G_FALSE,
11712 		X_Return_Status 	=> X_Return_Status,
11713 		X_Msg_Count		=> X_Msg_Count,
11714 		X_Msg_Data		=> X_Msg_Data);
11715           END IF;
11716           CLOSE c_qte_line;
11717 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
11718 	      RAISE FND_API.G_EXC_ERROR;
11719 	  END IF;
11720       END LOOP;
11721 
11722 
11723       --New code for Delete_Promotion 07/22/02
11724 
11725       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11726 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ADJUSTMENTS table data',1,'N');
11727 	 END IF;
11728 
11729       DELETE FROM ASO_PRICE_ADJUSTMENTS
11730       WHERE QUOTE_HEADER_ID = p_qte_header_id;
11731 
11732       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11733 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ADJ_ATTRIBS table data',1,'N');
11734 	 END IF;
11735 
11736       DELETE FROM aso_price_adj_attribs
11737       WHERE price_adjustment_id IN (select price_adjustment_id
11738                                    from aso_price_adjustments
11739                                    where quote_header_id = p_qte_header_id
11740                                    and quote_line_id is NULL);
11741 
11742       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11743 	 aso_debug_pub.add('Delete_Quote: Before deleting ASO_PRICE_ATTRIBUTES table data',1,'N');
11744 	 END IF;
11745 
11746       DELETE FROM ASO_PRICE_ATTRIBUTES
11747       WHERE QUOTE_HEADER_ID = p_qte_header_id
11748             and quote_line_id is NULL;
11749 
11750       IF aso_debug_pub.g_debug_flag = 'Y' THEN
11751 	 aso_debug_pub.add('Delete_Quote: After deleting ASO_PRICE_ATTRIBUTES table data',1,'N');
11752 	 END IF;
11753 
11754 
11755       --End of New code for Delete_Promotion 07/22/02
11756 
11757 
11758       DELETE FROM ASO_PAYMENTS
11759 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11760 
11761       DELETE FROM ASO_FREIGHT_CHARGES
11762 	 WHERE quote_shipment_id in
11763 		(select shipment_id from  ASO_SHIPMENTS
11764 		  where QUOTE_HEADER_ID = p_qte_header_id);
11765 
11766       DELETE FROM ASO_SHIPMENTS
11767 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11768 
11769       DELETE FROM ASO_TAX_DETAILS
11770 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11771 
11772       DELETE FROM ASO_SALES_CREDITS
11773 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11774 
11775 
11776       DELETE FROM ASO_QUOTE_PARTIES
11777 	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11778 
11779       DELETE FROM ASO_QUOTE_LINE_ATTRIBS_EXT
11780     	 WHERE QUOTE_HEADER_ID = p_qte_header_id;
11781 
11782       --
11783       -- End of API body
11784       --
11785 
11786       -- Standard check for p_commit
11787       IF FND_API.to_Boolean( p_commit )
11788       THEN
11789 	  COMMIT WORK;
11790       END IF;
11791 
11792 
11793       -- Standard call to get message count and if count is 1, get message info.
11794       FND_MSG_PUB.Count_And_Get
11795       (  p_count	  =>   x_msg_count,
11796 	 p_data 	  =>   x_msg_data
11797       );
11798 
11799       EXCEPTION
11800 	  WHEN FND_API.G_EXC_ERROR THEN
11801 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11802 		   P_API_NAME => L_API_NAME
11803 		  ,P_PKG_NAME => G_PKG_NAME
11804 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
11805 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11806 		  ,P_SQLCODE => SQLCODE
11807 		  ,P_SQLERRM => SQLERRM
11808 		  ,X_MSG_COUNT => X_MSG_COUNT
11809 		  ,X_MSG_DATA => X_MSG_DATA
11810 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11811 
11812 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11813 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11814 		   P_API_NAME => L_API_NAME
11815 		  ,P_PKG_NAME => G_PKG_NAME
11816 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
11817 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11818 		  ,P_SQLCODE => SQLCODE
11819 		  ,P_SQLERRM => SQLERRM
11820 		  ,X_MSG_COUNT => X_MSG_COUNT
11821 		  ,X_MSG_DATA => X_MSG_DATA
11822 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11823 
11824 	  WHEN OTHERS THEN
11825 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
11826 		   P_API_NAME => L_API_NAME
11827 		  ,P_PKG_NAME => G_PKG_NAME
11828 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
11829 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
11830 		  ,P_SQLCODE => SQLCODE
11831 		  ,P_SQLERRM => SQLERRM
11832 		  ,X_MSG_COUNT => X_MSG_COUNT
11833 		  ,X_MSG_DATA => X_MSG_DATA
11834 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
11835 End Delete_quote;
11836 
11837 -- NAME
11838 --   Copy_Quote
11839 --
11840 -- PURPOSE
11841 --   Copy the quote (with quote_id = p_original_quote_id) to a new quote
11842 --   (set original_quote_id = p_original_quote_id).
11843 --   If p_header_only is FALSE, also copy all the associated quote lines
11844 --   to new quote lines and create expected purchases for each line.
11845 --
11846 
11847 PROCEDURE Copy_Quote
11848 (
11849     P_Api_Version_Number	 IN   NUMBER,
11850     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
11851     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
11852     P_control_rec         IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
11853     p_validation_level		 IN   NUMBER	   := FND_API.G_VALID_LEVEL_FULL,
11854     P_Qte_Header_Id		 IN   NUMBER,
11855     P_Last_Update_Date		 IN   DATE,
11856     P_Copy_Only_Header		 IN   VARCHAR2	   := FND_API.G_FALSE,
11857     P_New_Version		 IN   VARCHAR2	   := FND_API.G_FALSE,
11858     P_Qte_Status_Id		 IN   NUMBER	   := NULL,
11859     P_Qte_Number		 IN   NUMBER	   := NULL,
11860     X_Qte_Header_Id		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11861     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
11862     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
11863     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2
11864 ) IS
11865 /*  -- original cpy_qte
11866     CURSOR C_Validate_Quote (x_qte_header_id NUMBER) IS
11867 	SELECT 'X'
11868 	FROM ASO_QUOTE_HEADERS_ALL
11869 	WHERE quote_header_id = x_qte_header_id;
11870 
11871 
11872 
11873     CURSOR c_line_relation (x_quote_header_id NUMBER) IS
11874 	SELECT LINE_RELATIONSHIP_ID,
11875 CREATION_DATE,
11876 CREATED_BY,
11877 LAST_UPDATED_BY,
11878 LAST_UPDATE_DATE,
11879 LAST_UPDATE_LOGIN,
11880 REQUEST_ID,
11881 PROGRAM_APPLICATION_ID,
11882 PROGRAM_ID,
11883 PROGRAM_UPDATE_DATE,
11884 QUOTE_LINE_ID,
11885 RELATED_QUOTE_LINE_ID,
11886 RELATIONSHIP_TYPE_CODE,
11887 RECIPROCAL_FLAG FROM ASO_LINE_RELATIONSHIPS
11888 	WHERE quote_line_id IN
11889 		(SELECT quote_line_id FROM aso_quote_lines_all
11890 		 WHERE quote_header_id = x_quote_header_id)
11891 	  AND related_quote_line_id IN
11892 		(SELECT quote_line_id FROM aso_quote_lines_all
11893 		 WHERE quote_header_id = x_quote_header_id);
11894 */ -- original copy_qte
11895 
11896 /* Commented by Biplabi Mishra to change the EXISTS to IN 07/09/01
11897 
11898 
11899     CURSOR c_line_relation (x_quote_header_id NUMBER) IS
11900 	SELECT LINE_RELATIONSHIP_ID,
11901 CREATION_DATE,
11902 CREATED_BY,
11903 LAST_UPDATED_BY,
11904 LAST_UPDATE_DATE,
11905 LAST_UPDATE_LOGIN,
11906 REQUEST_ID,
11907 PROGRAM_APPLICATION_ID,
11908 PROGRAM_ID,
11909 PROGRAM_UPDATE_DATE,
11910 QUOTE_LINE_ID,
11911 RELATED_QUOTE_LINE_ID,
11912 RELATIONSHIP_TYPE_CODE,
11913 RECIPROCAL_FLAG FROM ASO_LINE_RELATIONSHIPS
11914 	WHERE EXISTS
11915 		(SELECT 'x' FROM aso_quote_lines_all aql
11916 		 WHERE aql.quote_header_id = x_quote_header_id
11917                  AND aql.quote_line_id = aso_line_relationships.quote_line_id)
11918 	  AND EXISTS
11919                 (SELECT 'x' FROM aso_quote_lines_all aql
11920 		 WHERE aql.quote_header_id = x_quote_header_id
11921                  AND aql.quote_line_id = aso_line_relationships.related_quote_line_id);
11922 
11923 */
11924 
11925 
11926 /* Commented by Biplabi Mishra to change the IN to EXISTS 04/30/01
11927 
11928     CURSOR c_price_adj_rel (x_quote_header_id NUMBER) IS
11929 	SELECT
11930     QUOTE_SHIPMENT_ID,
11931 SECURITY_GROUP_ID,
11932 OBJECT_VERSION_NUMBER,
11933 ADJ_RELATIONSHIP_ID,
11934 CREATION_DATE,
11935 CREATED_BY,
11936 LAST_UPDATE_DATE,
11937 LAST_UPDATED_BY,
11938 LAST_UPDATE_LOGIN,
11939 PROGRAM_APPLICATION_ID,
11940 PROGRAM_ID,
11941 PROGRAM_UPDATE_DATE,
11942 REQUEST_ID,
11943 QUOTE_LINE_ID,
11944 PRICE_ADJUSTMENT_ID,
11945 RLTD_PRICE_ADJ_ID
11946  FROM ASO_PRICE_ADJ_RELATIONSHIPS
11947 	WHERE price_adjustment_id IN
11948 		(SELECT price_adjustment_id FROM aso_price_adjustments
11949 		 WHERE quote_header_id = x_quote_header_id)
11950 	  AND quote_line_id IN
11951 		(SELECT quote_line_id FROM aso_quote_lines_all
11952 		 WHERE quote_header_id = x_quote_header_id);
11953 */
11954 /*
11955 CURSOR c_price_adj_rel (x_quote_header_id NUMBER) IS
11956         SELECT
11957 apr.QUOTE_SHIPMENT_ID,
11958 --apr.SECURITY_GROUP_ID,
11959 apr.OBJECT_VERSION_NUMBER,
11960 apr.ADJ_RELATIONSHIP_ID,
11961 apr.CREATION_DATE,
11962 apr.CREATED_BY,
11963 apr.LAST_UPDATE_DATE,
11964 apr.LAST_UPDATED_BY,
11965 apr.LAST_UPDATE_LOGIN,
11966 apr.PROGRAM_APPLICATION_ID,
11967 apr.PROGRAM_ID,
11968 apr.PROGRAM_UPDATE_DATE,
11969 apr.REQUEST_ID,
11970 apr.QUOTE_LINE_ID,
11971 apr.PRICE_ADJUSTMENT_ID,
11972 apr.RLTD_PRICE_ADJ_ID
11973 FROM ASO_PRICE_ADJ_RELATIONSHIPS apr,
11974      ASO_PRICE_ADJUSTMENTS apa
11975 WHERE apr.price_adjustment_id = apa.price_adjustment_id
11976 AND apa.quote_header_id = x_quote_header_id
11977 AND EXISTS (select 'x' from aso_quote_lines_all aql
11978             where aql.quote_header_id = x_quote_header_id
11979             and aql.quote_line_id = apr.quote_line_id);
11980 */
11981 
11982 /*  -- original cpy_qte
11983     CURSOR C_Qte_Number IS
11984 	SELECT ASO_QUOTE_NUMBER_S.nextval
11985 	FROM sys.dual;
11986 
11987     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
11988 	SELECT max(quote_version)
11989 	FROM ASO_QUOTE_HEADERS_ALL
11990 	WHERE quote_number = X_qte_number;
11991 
11992     CURSOR C_Qte_Status_Id (c_status_code VARCHAR2) IS
11993 	SELECT quote_status_id
11994 	FROM ASO_QUOTE_STATUSES_B
11995 	WHERE status_code = c_status_code;
11996 	--WHERE status_code = 'DRAFT';
11997 
11998     CURSOR C_Qte_Status_Trans (from_id NUMBER, to_id NUMBER) IS
11999 	SELECT enabled_flag
12000 	FROM ASO_QUOTE_STATUS_TRANSITIONS
12001 	WHERE from_status_id = from_id AND to_status_id = to_id;
12002 
12003     CURSOR C_Qte_Number_exists (X_qte_number NUMBER) IS
12004      SELECT quote_number
12005      FROM ASO_QUOTE_HEADERS_ALL
12006      WHERE quote_number = X_qte_number;
12007 
12008     l_api_name		CONSTANT VARCHAR2(30) := 'Copy_quote';
12009     l_api_version_number	CONSTANT NUMBER 	:= 1.0;
12010     l_return_status		VARCHAR2(1);
12011     l_first_version		VARCHAR2(1)	:= FND_API.G_TRUE;
12012     l_val			  VARCHAR2(1);
12013     l_enabled_flag		  VARCHAR2(1);
12014     l_qte_header_rec	ASO_QUOTE_PUB.Qte_Header_Rec_Type;
12015     l_HEADER_RELATIONSHIP_ID	NUMBER;
12016     l_New_Version   VARCHAR2(1)	   := p_New_Version;
12017     l_qte_num                 NUMBER;
12018 */  -- original cpy_qte
12019 
12020     CURSOR C_Get_Hdr_Info(qte_hdr_id NUMBER) IS
12021      SELECT Quote_Expiration_Date, Resource_Id, Resource_Grp_Id
12022      FROM ASO_QUOTE_HEADERS_ALL
12023      WHERE Quote_Header_Id = qte_hdr_id;
12024 
12025     l_api_name      	    CONSTANT VARCHAR2(30) := 'Copy_quote';
12026     l_api_version_number     CONSTANT NUMBER     := 1.0;
12027 
12028     lx_qte_number            NUMBER;
12029     l_Copy_Quote_Header_Rec  ASO_COPY_QUOTE_PUB.Copy_Quote_Header_Rec_Type
12030                               := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Header_Rec;
12031     l_Copy_Quote_Control_Rec ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
12032                               := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Control_Rec;
12033 
12034 BEGIN
12035       -- Standard Start of API savepoint
12036       SAVEPOINT	COPY_QUOTE_PVT;
12037 
12038       -- Standard call to check for call compatibility.
12039       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
12040 					   p_api_version_number,
12041     	    	    	    	    	   l_api_name,
12042 			    	    	   G_PKG_NAME) THEN
12043 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12044       END IF;
12045 
12046       -- Initialize message list if p_init_msg_list is set to TRUE.
12047       IF FND_API.to_Boolean( p_init_msg_list ) THEN
12048 	  FND_MSG_PUB.initialize;
12049       END IF;
12050 
12051       -- Debug Message
12052       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
12053 	  FND_MESSAGE.Set_Name('ASO', 'Copy Quote API: Start');
12054 	  FND_MSG_PUB.Add;
12055       END IF;
12056 
12057 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12058 aso_debug_pub.add('p_qte_header_id: '||p_qte_header_id,1,'N');
12059 aso_debug_pub.add('p_qte_number: '||p_qte_number,1,'N');
12060 aso_debug_pub.add('p_copy_only_header: '||p_copy_only_header,1,'N');
12061 aso_debug_pub.add('p_new_version: '||p_new_version,1,'N');
12062 aso_debug_pub.add('p_control_rec.copy_att_flag: '||p_control_rec.copy_att_flag,1,'N');
12063 aso_debug_pub.add('p_control_rec.copy_notes_flag: '||p_control_rec.copy_notes_flag,1,'N');
12064 aso_debug_pub.add('p_control_rec.copy_task_flag: '||p_control_rec.copy_task_flag,1,'N');
12065 END IF;
12066 
12067     OPEN C_Get_Hdr_Info(p_qte_header_id);
12068     FETCH C_Get_Hdr_Info INTO l_Copy_Quote_Header_Rec.Quote_Expiration_Date,
12069                          l_Copy_Quote_Header_Rec.Resource_id, l_Copy_Quote_Header_Rec.Resource_Grp_Id;
12070     CLOSE C_Get_Hdr_Info;
12071 
12072     IF l_Copy_Quote_Header_Rec.Quote_Expiration_Date IS NULL THEN
12073         l_Copy_Quote_Header_Rec.Quote_Expiration_Date := FND_API.G_MISS_DATE;
12074     END IF;
12075 
12076     IF l_Copy_Quote_Header_Rec.Resource_Id IS NULL THEN
12077         l_Copy_Quote_Header_Rec.Resource_Id := FND_API.G_MISS_NUM;
12078     END IF;
12079 
12080     IF l_Copy_Quote_Header_Rec.Resource_Grp_Id IS NULL THEN
12081         l_Copy_Quote_Header_Rec.Resource_Grp_Id := FND_API.G_MISS_NUM;
12082     END IF;
12083 
12084 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12085 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Quote_Expiration_Date: '||l_Copy_Quote_Header_Rec.Quote_Expiration_Date,1,'N');
12086 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Resource_Id: '||l_Copy_Quote_Header_Rec.Resource_Id,1,'N');
12087 aso_debug_pub.add('l_Copy_Quote_Header_Rec.Resource_Grp_Id: '||l_Copy_Quote_Header_Rec.Resource_Grp_Id,1,'N');
12088 END IF;
12089 
12090 	l_Copy_Quote_Header_Rec.quote_header_id := p_qte_header_id;
12091 	l_Copy_Quote_Header_Rec.quote_number := p_qte_number;
12092 
12093 	l_Copy_Quote_Control_Rec.copy_header_only := p_copy_only_header;
12094 	l_Copy_Quote_Control_Rec.New_Version := p_new_version;
12095 	IF p_control_rec.copy_att_flag = 'Y' THEN
12096 		l_Copy_Quote_Control_Rec.Copy_Attachment := FND_API.G_TRUE;
12097 	ELSIF p_control_rec.copy_att_flag = 'N' THEN
12098 		l_Copy_Quote_Control_Rec.Copy_Attachment := FND_API.G_FALSE;
12099 	END IF;
12100 
12101      IF p_control_rec.copy_notes_flag = 'Y' THEN
12102           l_Copy_Quote_Control_Rec.Copy_Note := FND_API.G_TRUE;
12103      ELSIF p_control_rec.copy_notes_flag = 'N' THEN
12104           l_Copy_Quote_Control_Rec.Copy_Note := FND_API.G_FALSE;
12105      END IF;
12106 
12107      IF p_control_rec.copy_task_flag = 'Y' THEN
12108           l_Copy_Quote_Control_Rec.Copy_Task := FND_API.G_TRUE;
12109      ELSIF p_control_rec.copy_task_flag = 'N' THEN
12110           l_Copy_Quote_Control_Rec.Copy_Task := FND_API.G_FALSE;
12111      END IF;
12112 
12113 	ASO_COPY_QUOTE_PVT.Copy_Quote(
12114     	 	P_Api_Version_Number          =>   p_api_version_number,
12115      	P_Init_Msg_List               =>   p_init_msg_list,
12116      	P_Commit                      =>   p_commit,
12117      	P_Copy_Quote_Header_Rec       =>   l_Copy_Quote_Header_Rec,
12118      	P_Copy_Quote_Control_Rec      =>   l_Copy_Quote_Control_Rec,
12119      	X_Qte_Header_Id               =>   X_Qte_Header_Id,
12120      	X_Qte_Number                  =>   lX_Qte_Number,
12121      	X_Return_Status               =>   X_Return_Status,
12122      	X_Msg_Count                   =>   X_Msg_Count,
12123      	X_Msg_Data                    =>   X_Msg_Data );
12124 
12125 
12126 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12127 aso_debug_pub.add('After Copy_Qte:X_Return_Status: '||X_Return_Status,1,'N');
12128 aso_debug_pub.add('After Copy_Qte:X_Qte_Header_Id: '||X_Qte_Header_Id,1,'N');
12129 END IF;
12130 
12131 /*  -- original cpy_qte
12132 
12133       --  Initialize API return status to success
12134       l_return_status := FND_API.G_RET_STS_SUCCESS;
12135 
12136       --
12137       -- API body
12138       --
12139       -- ******************************************************************
12140       -- Validate Environment
12141       -- ******************************************************************
12142       IF FND_GLOBAL.User_Id IS NULL THEN
12143 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12144 	      FND_MESSAGE.Set_Name('ASO', 'UT_CANNOT_GET_PROFILE_VALUE');
12145     	      FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
12146 	      FND_MSG_PUB.ADD;
12147 	  END IF;
12148 	  RAISE FND_API.G_EXC_ERROR;
12149       END IF;
12150       -- ******************************************************************
12151       IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL) THEN
12152 	  OPEN C_Validate_Quote (p_qte_header_id);
12153 	  FETCH C_Validate_Quote into l_val;
12154 	  IF C_Validate_Quote%NOTFOUND THEN
12155 	     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12156 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
12157 		  FND_MESSAGE.Set_Token('COLUMN', 'ORIGINAL_QUOTE_ID', FALSE);
12158 		  FND_MESSAGE.Set_Token('VALUE', TO_CHAR(p_qte_header_id), FALSE);
12159 		  FND_MSG_PUB.ADD;
12160 	      END IF;
12161 	      CLOSE C_Validate_Quote;
12162 	      RAISE FND_API.G_EXC_ERROR;
12163 	  END IF;
12164 	  CLOSE C_Validate_Quote;
12165       END IF;
12166 
12167      IF aso_debug_pub.g_debug_flag = 'Y' THEN
12168 	aso_debug_pub.add('Copy_Quote - Begin- before copy_rows ', 1, 'Y');
12169 	aso_debug_pub.add('Copy_Quote - P_Qte_Header_Id: '||P_Qte_Header_Id, 1, 'N');
12170 	aso_debug_pub.add('Copy_Quote - P_Last_Update_Date '||P_Last_Update_Date, 1, 'N');
12171 	aso_debug_pub.add('Copy_Quote - P_Copy_Only_Header '||P_Copy_Only_Header, 1, 'N');
12172 	aso_debug_pub.add('Copy_Quote - P_New_Version '||P_New_Version, 1, 'N');
12173 	aso_debug_pub.add('Copy_Quote - P_Qte_Status_Id '||P_Qte_Status_Id, 1, 'N');
12174 	aso_debug_pub.add('Copy_Quote - P_Qte_Number '||P_Qte_Number, 1, 'N');
12175 	END IF;
12176 
12177       l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row(p_qte_header_id);
12178    	 IF (p_new_version = FND_API.G_TRUE AND
12179 			l_qte_header_rec.quote_number = p_qte_number) THEN
12180         l_new_version := FND_API.G_TRUE;
12181       END IF;
12182       IF (l_new_version = FND_API.G_FALSE) THEN
12183            IF (p_qte_number IS NULL OR p_qte_number = FND_API.G_MISS_NUM) THEN
12184 	           IF (NVL(FND_PROFILE.Value('ASO_AUTO_NUMBERING'), 'Y') = 'Y') THEN
12185 	               OPEN C_Qte_Number;
12186 	               FETCH C_Qte_Number INTO l_qte_header_rec.quote_number;
12187 	               CLOSE C_Qte_Number;
12188   	               l_qte_header_rec.quote_version := 1;
12189                    l_first_version	:= FND_API.G_TRUE;
12190 	           ELSE
12191 	               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12192 		              FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
12193 		              FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
12194 		              FND_MSG_PUB.ADD;
12195 	               END IF;
12196 	               RAISE FND_API.G_EXC_ERROR;
12197 	           END IF;  -- profile auto numbering
12198             ELSE
12199 		     OPEN C_Qte_Number_Exists(p_qte_number);
12200                FETCH C_Qte_Number_Exists into l_qte_num;
12201 		     CLOSE C_Qte_Number_Exists;
12202 		     IF (FND_PROFILE.Value('ASO_AUTO_NUMBERING') = 'N'
12203 		                   AND l_qte_num = p_qte_number) THEN
12204 		         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
12205 		         THEN
12206 */  -- original cpy_qte
12207 /*		             FND_MESSAGE.Set_Name('ASO', 'CANNOT COPY TO EXISTING QUOTE');
12208                        FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
12209 */
12210 /*  -- original cpy_qte
12211 				   FND_MESSAGE.Set_Name('ASO', 'ASO_CANNOT_COPY_QTE');
12212                        FND_MSG_PUB.ADD;
12213                    END IF;
12214                    RAISE FND_API.G_EXC_ERROR;
12215 			 ELSE
12216   	             l_qte_header_rec.quote_number := p_qte_number;
12217                       l_qte_header_rec.quote_version := 1;
12218                  l_first_version	:= FND_API.G_TRUE;
12219 		    END IF;
12220             END IF;  -- p_qte_number is null
12221       ELSE  -- p_new_version
12222 
12223            IF P_Qte_Number IS NOT NULL AND P_Qte_Number <> FND_API.G_MISS_NUM THEN
12224 
12225                 OPEN C_Qte_Number_Exists(p_qte_number);
12226                 FETCH C_Qte_Number_Exists into l_qte_num;
12227 
12228                 IF C_Qte_Number_Exists%NOTFOUND THEN
12229 
12230         		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12231 		              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
12232 		              FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_NUMBER', FALSE);
12233 		              FND_MSG_PUB.ADD;
12234 		          END IF;
12235 
12236 		          CLOSE C_Qte_Number_Exists;
12237 		          RAISE FND_API.G_EXC_ERROR;
12238 
12239                 ELSE
12240 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12241 aso_debug_pub.add('Copy_Quote - P_Qte_Number Exists', 1, 'N');
12242 END IF;
12243                   	l_qte_header_rec.quote_number := P_Qte_Number;
12244 		          CLOSE C_Qte_Number_Exists;
12245 
12246                 END IF;
12247 
12248            END IF;
12249 
12250 	       OPEN C_Qte_Version(l_qte_header_rec.quote_number);
12251 	       FETCH C_Qte_Version into l_qte_header_rec.quote_version;
12252 
12253 	       l_qte_header_rec.quote_version := nvl(l_qte_header_rec.quote_version, 0) + 1;
12254 	       CLOSE C_Qte_Version;
12255 	       l_first_version	:= FND_API.G_FALSE;
12256       END IF;
12257 
12258       IF (p_qte_status_id IS NULL OR p_qte_status_id = FND_API.G_MISS_NUM) THEN
12259 	  --OPEN c_qte_status_id ('DRAFT');
12260 	  OPEN c_qte_status_id ( fnd_profile.value( 'ASO_DEFAULT_STATUS_CODE' )  );
12261 	  FETCH c_qte_status_id INTO l_qte_header_rec.quote_status_id;
12262 	  CLOSE c_qte_status_id;
12263       ELSE
12264 	  IF l_first_version = FND_API.G_FALSE THEN
12265 	      OPEN c_qte_status_trans (l_qte_header_rec.quote_status_id, p_qte_status_id);
12266 	      FETCH c_qte_status_trans INTO l_enabled_flag;
12267 	      IF c_qte_status_trans%NOTFOUND OR l_enabled_flag = 'N' THEN
12268 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12269 		      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_STATUS_TRANS');
12270 		      FND_MSG_PUB.ADD;
12271 		  END IF;
12272 		  CLOSE c_qte_status_trans;
12273 		  RAISE FND_API.G_EXC_ERROR;
12274 	      END IF;
12275 	      CLOSE c_qte_status_trans;
12276 	  END IF;
12277 	  l_qte_header_rec.quote_status_id := p_qte_status_id;
12278       END IF;
12279 
12280      IF aso_debug_pub.g_debug_flag = 'Y' THEN
12281 	aso_debug_pub.add('Copy_Quote - Begin- before copy_rows ', 1, 'Y');
12282 	END IF;
12283 
12284       Copy_Rows(
12285 		P_qte_Header_Rec	 => l_qte_header_rec,
12286 		P_Header_Only		 => P_Copy_Only_Header,
12287 	     P_control_rec        => P_control_rec,
12288 		X_Qte_Header_id		 => x_qte_header_id,
12289 		X_Return_Status 	 => l_return_status,
12290 		X_Msg_Count		 => x_msg_count,
12291 		X_Msg_Data		 => x_msg_data);
12292 IF aso_debug_pub.g_debug_flag = 'Y' THEN
12293 aso_debug_pub.add('Copy_Quote - After  copy_rows '||l_return_status, 1, 'Y');
12294 END IF;
12295       -- create header relationship
12296 
12297       ASO_HEADER_RELATIONSHIPS_PKG.Insert_Row(
12298 	  px_HEADER_RELATIONSHIP_ID  => l_HEADER_RELATIONSHIP_ID,
12299 	  p_CREATION_DATE  => SYSDATE,
12300 	  p_CREATED_BY	=> G_USER_ID,
12301 	  p_LAST_UPDATE_DATE  => SYSDATE,
12302 	  p_LAST_UPDATED_BY  => G_USER_ID,
12303 	  p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
12304 	  p_REQUEST_ID	=> NULL,
12305 	  p_PROGRAM_APPLICATION_ID  => NULL,
12306 	  p_PROGRAM_ID	=> NULL,
12307 	  p_PROGRAM_UPDATE_DATE  => NULL,
12308 	  p_QUOTE_HEADER_ID  => p_qte_header_id,
12309 	  p_RELATED_HEADER_ID  => x_qte_header_id,
12310 	  p_RELATIONSHIP_TYPE_CODE  => 'COPY',
12311 	  p_RECIPROCAL_FLAG  => NULL,
12312 	  P_OBJECT_VERSION_NUMBER => FND_API.G_MISS_NUM
12313 	  );
12314 
12315 
12316       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12317 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12318 	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12319 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
12320 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
12321 	      FND_MSG_PUB.ADD;
12322 	  END IF;
12323 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12324       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
12325 	  x_return_status := FND_API.G_RET_STS_ERROR;
12326 */  -- original cpy_qte
12327 /*	  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
12328 	      FND_MESSAGE.Set_Name('ASO', 'ASO_API_EXP_ERROR');
12329 	      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
12330 	      FND_MSG_PUB.ADD;
12331 	  END IF; */
12332 /*  -- original cpy_qte
12333 	  RAISE FND_API.G_EXC_ERROR;
12334       END IF;
12335       x_return_status := FND_API.G_RET_STS_SUCCESS;
12336       --
12337       -- End of API body
12338       --
12339 */  -- original cpy_qte
12340       -- Standard check for p_commit
12341       IF FND_API.to_Boolean( p_commit )
12342       THEN
12343 	  COMMIT WORK;
12344       END IF;
12345 
12346 
12347 
12348       -- Standard call to get message count and if count is 1, get message info.
12349       FND_MSG_PUB.Count_And_Get
12350       (  p_count	  =>   x_msg_count,
12351 	 p_data 	  =>   x_msg_data
12352       );
12353 
12354       EXCEPTION
12355 	  WHEN FND_API.G_EXC_ERROR THEN
12356 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
12357 		   P_API_NAME => L_API_NAME
12358 		  ,P_PKG_NAME => G_PKG_NAME
12359 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
12360 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12361 		  ,X_MSG_COUNT => X_MSG_COUNT
12362 		  ,X_MSG_DATA => X_MSG_DATA
12363 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12364 
12365 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12366 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
12367 		   P_API_NAME => L_API_NAME
12368 		  ,P_PKG_NAME => G_PKG_NAME
12369 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
12370 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12371 		  ,X_MSG_COUNT => X_MSG_COUNT
12372 		  ,X_MSG_DATA => X_MSG_DATA
12373 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12374 
12375 	  WHEN OTHERS THEN
12376 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
12377 		   P_API_NAME => L_API_NAME
12378 		  ,P_PKG_NAME => G_PKG_NAME
12379                   ,P_SQLCODE => SQLCODE
12380 		  ,P_SQLERRM => SQLERRM
12381 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
12382 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
12383 		  ,X_MSG_COUNT => X_MSG_COUNT
12384 		  ,X_MSG_DATA => X_MSG_DATA
12385 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
12386 END Copy_Quote;
12387 
12388 -- This procudure defines the columns for the Dynamic SQL.
12389 PROCEDURE Define_Columns(
12390     P_Qte_Header_Rec   IN  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
12391     p_cur_get_QTE   IN	 NUMBER
12392 )
12393 IS
12394 BEGIN
12395 
12396       -- define all columns for ASO_QUOTE_HEADERS_V view
12397       ----dbms_sql.define_column(p_cur_get_QTE, 1, P_Qte_Header_Rec.QUOTE_HEADER_ID);
12398       ----dbms_sql.define_column(p_cur_get_QTE, 2, P_Qte_Header_Rec.ORG_ID);
12399       ----dbms_sql.define_column(p_cur_get_QTE, 3, P_Qte_Header_Rec.REQUEST_ID);
12400       ----dbms_sql.define_column(p_cur_get_QTE, 4, P_Qte_Header_Rec.ORIGINAL_SYSTEM_REFERENCE, 240);
12401       ----dbms_sql.define_column(p_cur_get_QTE, 5, P_Qte_Header_Rec.EMPLOYEE_PERSON_ID);
12402       ----dbms_sql.define_column(p_cur_get_QTE, 6, P_Qte_Header_Rec.SALESREP_FIRST_NAME, 20);
12403       ----dbms_sql.define_column(p_cur_get_QTE, 7, P_Qte_Header_Rec.SALESREP_LAST_NAME, 40);
12404       ----dbms_sql.define_column(p_cur_get_QTE, 8, P_Qte_Header_Rec.PRICE_LIST_ID);
12405       ----dbms_sql.define_column(p_cur_get_QTE, 9, P_Qte_Header_Rec.PRICE_LIST_NAME, 0);
12406       ----dbms_sql.define_column(p_cur_get_QTE, 10, P_Qte_Header_Rec.QUOTE_STATUS_ID);
12407       ----dbms_sql.define_column(p_cur_get_QTE, 11, P_Qte_Header_Rec.QUOTE_STATUS_CODE, 30);
12408       ----dbms_sql.define_column(p_cur_get_QTE, 12, P_Qte_Header_Rec.QUOTE_STATUS, 240);
12409       ----dbms_sql.define_column(p_cur_get_QTE, 15, P_Qte_Header_Rec.QUOTE_SOURCE_CODE, 15);
12410       ----dbms_sql.define_column(p_cur_get_QTE, 16, P_Qte_Header_Rec.PARTY_ID);
12411       ----dbms_sql.define_column(p_cur_get_QTE, 17, P_Qte_Header_Rec.PARTY_NAME, 255);
12412       ----dbms_sql.define_column(p_cur_get_QTE, 18, P_Qte_Header_Rec.PARTY_TYPE, 30);
12413       ----dbms_sql.define_column(p_cur_get_QTE, 19, P_Qte_Header_Rec.PERSON_FIRST_NAME, 150);
12414       ----dbms_sql.define_column(p_cur_get_QTE, 20, P_Qte_Header_Rec.PERSON_MIDDLE_NAME, 60);
12415       ----dbms_sql.define_column(p_cur_get_QTE, 21, P_Qte_Header_Rec.PERSON_LAST_NAME, 150);
12416       ----dbms_sql.define_column(p_cur_get_QTE, 22, P_Qte_Header_Rec.ORG_CONTACT_ID);
12417       ----dbms_sql.define_column(p_cur_get_QTE, 26, P_Qte_Header_Rec.QUOTE_NAME, 50);
12418       ----dbms_sql.define_column(p_cur_get_QTE, 27, P_Qte_Header_Rec.QUOTE_NUMBER);
12419       ----dbms_sql.define_column(p_cur_get_QTE, 28, P_Qte_Header_Rec.QUOTE_VERSION);
12420       ----dbms_sql.define_column(p_cur_get_QTE, 29, P_Qte_Header_Rec.QUOTE_EXPIRATION_DATE);
12421       ----dbms_sql.define_column(p_cur_get_QTE, 30, P_Qte_Header_Rec.QUOTE_CATEGORY_CODE, 30);
12422       ----dbms_sql.define_column(p_cur_get_QTE, 31, P_Qte_Header_Rec.CURRENCY_CODE, 15);
12423       ----dbms_sql.define_column(p_cur_get_QTE, 32, P_Qte_Header_Rec.EXCHANGE_RATE);
12424       ----dbms_sql.define_column(p_cur_get_QTE, 33, P_Qte_Header_Rec.EXCHANGE_TYPE_CODE, 15);
12425       ----dbms_sql.define_column(p_cur_get_QTE, 34, P_Qte_Header_Rec.EXCHANGE_RATE_DATE);
12426       ----dbms_sql.define_column(p_cur_get_QTE, 39, P_Qte_Header_Rec.ORDERED_DATE);
12427       ----dbms_sql.define_column(p_cur_get_QTE, 40, P_Qte_Header_Rec.ORDER_TYPE_ID);
12428       ----dbms_sql.define_column(p_cur_get_QTE, 41, P_Qte_Header_Rec.ORDER_TYPE_NAME, 80);
12429       ----dbms_sql.define_column(p_cur_get_QTE, 45, P_Qte_Header_Rec.TOTAL_LIST_PRICE);
12430       ----dbms_sql.define_column(p_cur_get_QTE, 46, P_Qte_Header_Rec.TOTAL_ADJUSTED_AMOUNT);
12431       ----dbms_sql.define_column(p_cur_get_QTE, 47, P_Qte_Header_Rec.TOTAL_ADJUSTED_PERCENT);
12432       ----dbms_sql.define_column(p_cur_get_QTE, 48, P_Qte_Header_Rec.TOTAL_TAX);
12433       ----dbms_sql.define_column(p_cur_get_QTE, 49, P_Qte_Header_Rec.SURCHARGE);
12434       ----dbms_sql.define_column(p_cur_get_QTE, 50, P_Qte_Header_Rec.TOTAL_SHIPPING_CHARGE);
12435       ----dbms_sql.define_column(p_cur_get_QTE, 51, P_Qte_Header_Rec.TOTAL_QUOTE_PRICE);
12436       ----dbms_sql.define_column(p_cur_get_QTE, 52, P_Qte_Header_Rec.ACCOUNTING_RULE_ID);
12437       ----dbms_sql.define_column(p_cur_get_QTE, 53, P_Qte_Header_Rec.INVOICING_RULE_ID);
12438       ----dbms_sql.define_column(p_cur_get_QTE, 73, P_Qte_Header_Rec.INVOICE_TO_PARTY_ID);
12439       ----dbms_sql.define_column(p_cur_get_QTE, 74, P_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID);
12440       ----dbms_sql.define_column(p_cur_get_QTE, 75, P_Qte_Header_Rec.INVOICE_TO_PARTY_NAME, 255);
12441       ----dbms_sql.define_column(p_cur_get_QTE, 76, P_Qte_Header_Rec.INVOICE_TO_CONTACT_FIRST_NAME, 150);
12442       ----dbms_sql.define_column(p_cur_get_QTE, 77, P_Qte_Header_Rec.INVOICE_TO_CONTACT_MIDDLE_NAME, 60);
12443       ----dbms_sql.define_column(p_cur_get_QTE, 78, P_Qte_Header_Rec.INVOICE_TO_CONTACT_LAST_NAME, 150);
12444       ----dbms_sql.define_column(p_cur_get_QTE, 79, P_Qte_Header_Rec.INVOICE_TO_ADDRESS1, 240);
12445       ----dbms_sql.define_column(p_cur_get_QTE, 80, P_Qte_Header_Rec.INVOICE_TO_ADDRESS2, 240);
12446       ----dbms_sql.define_column(p_cur_get_QTE, 81, P_Qte_Header_Rec.INVOICE_TO_ADDRESS3, 240);
12447       ----dbms_sql.define_column(p_cur_get_QTE, 82, P_Qte_Header_Rec.INVOICE_TO_ADDRESS4, 240);
12448       ----dbms_sql.define_column(p_cur_get_QTE, 83, P_Qte_Header_Rec.INVOICE_TO_COUNTRY_CODE, 60);
12449       ----dbms_sql.define_column(p_cur_get_QTE, 84, P_Qte_Header_Rec.INVOICE_TO_COUNTRY, 80);
12450       ----dbms_sql.define_column(p_cur_get_QTE, 85, P_Qte_Header_Rec.INVOICE_TO_CITY, 60);
12451       ----dbms_sql.define_column(p_cur_get_QTE, 86, P_Qte_Header_Rec.INVOICE_TO_POSTAL_CODE, 60);
12452       ----dbms_sql.define_column(p_cur_get_QTE, 87, P_Qte_Header_Rec.INVOICE_TO_STATE, 60);
12453       ----dbms_sql.define_column(p_cur_get_QTE, 88, P_Qte_Header_Rec.INVOICE_TO_PROVINCE, 60);
12454       ----dbms_sql.define_column(p_cur_get_QTE, 89, P_Qte_Header_Rec.INVOICE_TO_COUNTY, 60);
12455       ----dbms_sql.define_column(p_cur_get_QTE, 92, P_Qte_Header_Rec.CONTRACT_ID);
12456       ----dbms_sql.define_column(p_cur_get_QTE, 93, P_Qte_Header_Rec.ATTRIBUTE_CATEGORY, 30);
12457       ----dbms_sql.define_column(p_cur_get_QTE, 94, P_Qte_Header_Rec.ATTRIBUTE1, 150);
12458       ----dbms_sql.define_column(p_cur_get_QTE, 95, P_Qte_Header_Rec.ATTRIBUTE2, 150);
12459       ----dbms_sql.define_column(p_cur_get_QTE, 96, P_Qte_Header_Rec.ATTRIBUTE3, 150);
12460       ----dbms_sql.define_column(p_cur_get_QTE, 97, P_Qte_Header_Rec.ATTRIBUTE4, 150);
12461       ----dbms_sql.define_column(p_cur_get_QTE, 98, P_Qte_Header_Rec.ATTRIBUTE5, 150);
12462       ----dbms_sql.define_column(p_cur_get_QTE, 99, P_Qte_Header_Rec.ATTRIBUTE6, 150);
12463       ----dbms_sql.define_column(p_cur_get_QTE, 100, P_Qte_Header_Rec.ATTRIBUTE7, 150);
12464       ----dbms_sql.define_column(p_cur_get_QTE, 101, P_Qte_Header_Rec.ATTRIBUTE8, 150);
12465       ----dbms_sql.define_column(p_cur_get_QTE, 102, P_Qte_Header_Rec.ATTRIBUTE9, 150);
12466       ----dbms_sql.define_column(p_cur_get_QTE, 103, P_Qte_Header_Rec.ATTRIBUTE10, 150);
12467       ----dbms_sql.define_column(p_cur_get_QTE, 104, P_Qte_Header_Rec.ATTRIBUTE11, 150);
12468       ----dbms_sql.define_column(p_cur_get_QTE, 105, P_Qte_Header_Rec.ATTRIBUTE12, 150);
12469       ----dbms_sql.define_column(p_cur_get_QTE, 106, P_Qte_Header_Rec.ATTRIBUTE13, 150);
12470       ----dbms_sql.define_column(p_cur_get_QTE, 107, P_Qte_Header_Rec.ATTRIBUTE14, 150);
12471       ----dbms_sql.define_column(p_cur_get_QTE, 108, P_Qte_Header_Rec.ATTRIBUTE15, 150);
12472 
12473 	 null;
12474 
12475 END Define_Columns;
12476 
12477 -- This procudure gets column values by the Dynamic SQL.
12478 PROCEDURE Get_Column_Values(
12479     p_cur_get_QTE   IN	 NUMBER,
12480     X_Qte_Header_Rec   OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Header_Rec_Type
12481 )
12482 IS
12483 BEGIN
12484 
12485       -- get all column values for ASO_QUOTE_HEADERS_V table
12486       ----dbms_sql.column_value(p_cur_get_QTE, 2, X_Qte_Header_Rec.QUOTE_HEADER_ID);
12487       ----dbms_sql.column_value(p_cur_get_QTE, 3, X_Qte_Header_Rec.ORG_ID);
12488       ----dbms_sql.column_value(p_cur_get_QTE, 4, X_Qte_Header_Rec.REQUEST_ID);
12489       ----dbms_sql.column_value(p_cur_get_QTE, 5, X_Qte_Header_Rec.ORIGINAL_SYSTEM_REFERENCE);
12490       ----dbms_sql.column_value(p_cur_get_QTE, 6, X_Qte_Header_Rec.EMPLOYEE_PERSON_ID);
12491       ----dbms_sql.column_value(p_cur_get_QTE, 7, X_Qte_Header_Rec.SALESREP_FIRST_NAME);
12492       ----dbms_sql.column_value(p_cur_get_QTE, 8, X_Qte_Header_Rec.SALESREP_LAST_NAME);
12493       ----dbms_sql.column_value(p_cur_get_QTE, 9, X_Qte_Header_Rec.PRICE_LIST_ID);
12494       ----dbms_sql.column_value(p_cur_get_QTE, 10, X_Qte_Header_Rec.PRICE_LIST_NAME);
12495       ----dbms_sql.column_value(p_cur_get_QTE, 11, X_Qte_Header_Rec.QUOTE_STATUS_ID);
12496       ----dbms_sql.column_value(p_cur_get_QTE, 12, X_Qte_Header_Rec.QUOTE_STATUS_CODE);
12497       ----dbms_sql.column_value(p_cur_get_QTE, 13, X_Qte_Header_Rec.QUOTE_STATUS);
12498       ----dbms_sql.column_value(p_cur_get_QTE, 16, X_Qte_Header_Rec.QUOTE_SOURCE_CODE);
12499       ----dbms_sql.column_value(p_cur_get_QTE, 17, X_Qte_Header_Rec.PARTY_ID);
12500       ----dbms_sql.column_value(p_cur_get_QTE, 18, X_Qte_Header_Rec.PARTY_NAME);
12501       ----dbms_sql.column_value(p_cur_get_QTE, 19, X_Qte_Header_Rec.PARTY_TYPE);
12502       ----dbms_sql.column_value(p_cur_get_QTE, 20, X_Qte_Header_Rec.PERSON_FIRST_NAME);
12503       ----dbms_sql.column_value(p_cur_get_QTE, 21, X_Qte_Header_Rec.PERSON_MIDDLE_NAME);
12504       ----dbms_sql.column_value(p_cur_get_QTE, 22, X_Qte_Header_Rec.PERSON_LAST_NAME);
12505       ----dbms_sql.column_value(p_cur_get_QTE, 23, X_Qte_Header_Rec.ORG_CONTACT_ID);
12506       ----dbms_sql.column_value(p_cur_get_QTE, 27, X_Qte_Header_Rec.QUOTE_NAME);
12507       ----dbms_sql.column_value(p_cur_get_QTE, 28, X_Qte_Header_Rec.QUOTE_NUMBER);
12508       ----dbms_sql.column_value(p_cur_get_QTE, 29, X_Qte_Header_Rec.QUOTE_VERSION);
12509       ----dbms_sql.column_value(p_cur_get_QTE, 30, X_Qte_Header_Rec.QUOTE_EXPIRATION_DATE);
12510       ----dbms_sql.column_value(p_cur_get_QTE, 31, X_Qte_Header_Rec.QUOTE_CATEGORY_CODE);
12511       ----dbms_sql.column_value(p_cur_get_QTE, 32, X_Qte_Header_Rec.CURRENCY_CODE);
12512       ----dbms_sql.column_value(p_cur_get_QTE, 33, X_Qte_Header_Rec.EXCHANGE_RATE);
12513       ----dbms_sql.column_value(p_cur_get_QTE, 34, X_Qte_Header_Rec.EXCHANGE_TYPE_CODE);
12514       ----dbms_sql.column_value(p_cur_get_QTE, 35, X_Qte_Header_Rec.EXCHANGE_RATE_DATE);
12515       ----dbms_sql.column_value(p_cur_get_QTE, 40, X_Qte_Header_Rec.ORDERED_DATE);
12516       ----dbms_sql.column_value(p_cur_get_QTE, 41, X_Qte_Header_Rec.ORDER_TYPE_ID);
12517       ----dbms_sql.column_value(p_cur_get_QTE, 42, X_Qte_Header_Rec.ORDER_TYPE_NAME);
12518       ----dbms_sql.column_value(p_cur_get_QTE, 46, X_Qte_Header_Rec.TOTAL_LIST_PRICE);
12519       ----dbms_sql.column_value(p_cur_get_QTE, 47, X_Qte_Header_Rec.TOTAL_ADJUSTED_AMOUNT);
12520       ----dbms_sql.column_value(p_cur_get_QTE, 48, X_Qte_Header_Rec.TOTAL_ADJUSTED_PERCENT);
12521       ----dbms_sql.column_value(p_cur_get_QTE, 49, X_Qte_Header_Rec.TOTAL_TAX);
12522       ----dbms_sql.column_value(p_cur_get_QTE, 50, X_Qte_Header_Rec.SURCHARGE);
12523       ----dbms_sql.column_value(p_cur_get_QTE, 51, X_Qte_Header_Rec.TOTAL_SHIPPING_CHARGE);
12524       ----dbms_sql.column_value(p_cur_get_QTE, 52, X_Qte_Header_Rec.TOTAL_QUOTE_PRICE);
12525       ----dbms_sql.column_value(p_cur_get_QTE, 53, X_Qte_Header_Rec.ACCOUNTING_RULE_ID);
12526       ----dbms_sql.column_value(p_cur_get_QTE, 54, X_Qte_Header_Rec.INVOICING_RULE_ID);
12527       ----dbms_sql.column_value(p_cur_get_QTE, 74, X_Qte_Header_Rec.INVOICE_TO_PARTY_ID);
12528       ----dbms_sql.column_value(p_cur_get_QTE, 75, X_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID);
12529       ----dbms_sql.column_value(p_cur_get_QTE, 76, X_Qte_Header_Rec.INVOICE_TO_PARTY_NAME);
12530       ----dbms_sql.column_value(p_cur_get_QTE, 77, X_Qte_Header_Rec.INVOICE_TO_CONTACT_FIRST_NAME);
12531       ----dbms_sql.column_value(p_cur_get_QTE, 78, X_Qte_Header_Rec.INVOICE_TO_CONTACT_MIDDLE_NAME);
12532       ----dbms_sql.column_value(p_cur_get_QTE, 79, X_Qte_Header_Rec.INVOICE_TO_CONTACT_LAST_NAME);
12533       ----dbms_sql.column_value(p_cur_get_QTE, 80, X_Qte_Header_Rec.INVOICE_TO_ADDRESS1);
12534       ----dbms_sql.column_value(p_cur_get_QTE, 81, X_Qte_Header_Rec.INVOICE_TO_ADDRESS2);
12535       ----dbms_sql.column_value(p_cur_get_QTE, 82, X_Qte_Header_Rec.INVOICE_TO_ADDRESS3);
12536       ----dbms_sql.column_value(p_cur_get_QTE, 83, X_Qte_Header_Rec.INVOICE_TO_ADDRESS4);
12537       ----dbms_sql.column_value(p_cur_get_QTE, 84, X_Qte_Header_Rec.INVOICE_TO_COUNTRY_CODE);
12538       ----dbms_sql.column_value(p_cur_get_QTE, 85, X_Qte_Header_Rec.INVOICE_TO_COUNTRY);
12539       ----dbms_sql.column_value(p_cur_get_QTE, 86, X_Qte_Header_Rec.INVOICE_TO_CITY);
12540       ----dbms_sql.column_value(p_cur_get_QTE, 87, X_Qte_Header_Rec.INVOICE_TO_POSTAL_CODE);
12541       ----dbms_sql.column_value(p_cur_get_QTE, 88, X_Qte_Header_Rec.INVOICE_TO_STATE);
12542       ----dbms_sql.column_value(p_cur_get_QTE, 89, X_Qte_Header_Rec.INVOICE_TO_PROVINCE);
12543       ----dbms_sql.column_value(p_cur_get_QTE, 90, X_Qte_Header_Rec.INVOICE_TO_COUNTY);
12544       ----dbms_sql.column_value(p_cur_get_QTE, 93, X_Qte_Header_Rec.CONTRACT_ID);
12545       ----dbms_sql.column_value(p_cur_get_QTE, 94, X_Qte_Header_Rec.ATTRIBUTE_CATEGORY);
12546       ----dbms_sql.column_value(p_cur_get_QTE, 95, X_Qte_Header_Rec.ATTRIBUTE1);
12547       ----dbms_sql.column_value(p_cur_get_QTE, 96, X_Qte_Header_Rec.ATTRIBUTE2);
12548       ----dbms_sql.column_value(p_cur_get_QTE, 97, X_Qte_Header_Rec.ATTRIBUTE3);
12549       ----dbms_sql.column_value(p_cur_get_QTE, 98, X_Qte_Header_Rec.ATTRIBUTE4);
12550       ----dbms_sql.column_value(p_cur_get_QTE, 99, X_Qte_Header_Rec.ATTRIBUTE5);
12551       ----dbms_sql.column_value(p_cur_get_QTE, 100, X_Qte_Header_Rec.ATTRIBUTE6);
12552       ----dbms_sql.column_value(p_cur_get_QTE, 101, X_Qte_Header_Rec.ATTRIBUTE7);
12553       ----dbms_sql.column_value(p_cur_get_QTE, 102, X_Qte_Header_Rec.ATTRIBUTE8);
12554       ----dbms_sql.column_value(p_cur_get_QTE, 103, X_Qte_Header_Rec.ATTRIBUTE9);
12555       ----dbms_sql.column_value(p_cur_get_QTE, 104, X_Qte_Header_Rec.ATTRIBUTE10);
12556       ----dbms_sql.column_value(p_cur_get_QTE, 105, X_Qte_Header_Rec.ATTRIBUTE11);
12557       ----dbms_sql.column_value(p_cur_get_QTE, 106, X_Qte_Header_Rec.ATTRIBUTE12);
12558       ----dbms_sql.column_value(p_cur_get_QTE, 107, X_Qte_Header_Rec.ATTRIBUTE13);
12559       ----dbms_sql.column_value(p_cur_get_QTE, 108, X_Qte_Header_Rec.ATTRIBUTE14);
12560       ----dbms_sql.column_value(p_cur_get_QTE, 109, X_Qte_Header_Rec.ATTRIBUTE15);
12561 	 null;
12562 
12563 END Get_Column_Values;
12564 
12565 PROCEDURE Gen_QTE_order_cl(
12566     p_order_by_rec   IN   ASO_QUOTE_PUB.QTE_sort_rec_type,
12567     x_order_by_cl    OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12568     x_return_status  OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12569     x_msg_count      OUT NOCOPY /* file.sql.39 change */      NUMBER,
12570     x_msg_data	     OUT NOCOPY /* file.sql.39 change */      VARCHAR2
12571 )
12572 IS
12573 l_order_by_cl	     VARCHAR2(1000)   := NULL;
12574 l_util_order_by_tbl  ASO_UTILITY_PVT.Util_order_by_tbl_type;
12575 BEGIN
12576 
12577       -- Hint: Developer should add more statements according to ASO_sort_rec_type
12578       -- Ex:
12579       -- l_util_order_by_tbl(1).col_choice := p_order_by_rec.customer_name;
12580       -- l_util_order_by_tbl(1).col_name := 'Customer_Name';
12581 
12582 
12583       ASO_UTILITY_PVT.Translate_OrderBy(
12584 	  p_api_version_number	 =>   1.0
12585 	 ,p_init_msg_list	 =>   FND_API.G_FALSE
12586 	 ,p_validation_level	 =>   FND_API.G_VALID_LEVEL_FULL
12587 	 ,p_order_by_tbl	 =>   l_util_order_by_tbl
12588 	 ,x_order_by_clause	 =>   l_order_by_cl
12589 	 ,x_return_status	 =>   x_return_status
12590 	 ,x_msg_count		 =>   x_msg_count
12591 	 ,x_msg_data		 =>   x_msg_data);
12592 
12593       IF(l_order_by_cl IS NOT NULL) THEN
12594 	  x_order_by_cl := 'order by' || l_order_by_cl;
12595       ELSE
12596 	  x_order_by_cl := NULL;
12597       END IF;
12598 
12599 END Gen_QTE_order_cl;
12600 
12601 -- This procedure bind the variables for the Dynamic SQL
12602 PROCEDURE Bind(
12603     P_Qte_Header_Rec   IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
12604     -- Hint: Add more binding variables here
12605     p_cur_get_QTE   IN	 NUMBER
12606 )
12607 IS
12608 BEGIN
12609       -- Bind variables
12610       -- Only those that are not NULL
12611 
12612       -- The following example applies to all columns,
12613       -- developers can copy and paste them.
12614       IF( (P_Qte_Header_Rec.QUOTE_HEADER_ID IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_HEADER_ID <> FND_API.G_MISS_NUM) )
12615       THEN
12616 	  dbms_SQL.BIND_VARIABLE(p_cur_get_QTE, ':p_QUOTE_HEADER_ID', P_Qte_Header_Rec.QUOTE_HEADER_ID);
12617       END IF;
12618 
12619 END Bind;
12620 
12621 PROCEDURE Gen_Select(
12622     x_select_cl   OUT NOCOPY /* file.sql.39 change */    	VARCHAR2
12623 )
12624 IS
12625 BEGIN
12626 
12627       x_select_cl := 'Select ' ||
12628 		'ASO_QUOTE_HEADERS_V.ROW_ID,' ||
12629 		'ASO_QUOTE_HEADERS_V.QUOTE_HEADER_ID,' ||
12630 		'ASO_QUOTE_HEADERS_V.ORG_ID,' ||
12631 		'ASO_QUOTE_HEADERS_V.LAST_UPDATE_DATE,' ||
12632 		'ASO_QUOTE_HEADERS_V.LAST_UPDATED_BY,' ||
12633 		'ASO_QUOTE_HEADERS_V.CREATION_DATE,' ||
12634 		'ASO_QUOTE_HEADERS_V.CREATED_BY,' ||
12635 		'ASO_QUOTE_HEADERS_V.LAST_UPDATE_LOGIN,' ||
12636 		'ASO_QUOTE_HEADERS_V.REQUEST_ID,' ||
12637 		'ASO_QUOTE_HEADERS_V.PROGRAM_APPLICATION_ID,' ||
12638 		'ASO_QUOTE_HEADERS_V.PROGRAM_ID,' ||
12639 		'ASO_QUOTE_HEADERS_V.PROGRAM_UPDATE_DATE,' ||
12640 		'ASO_QUOTE_HEADERS_V.ORIGINAL_SYSTEM_REFERENCE,' ||
12641 		'ASO_QUOTE_HEADERS_V.EMPLOYEE_PERSON_ID,' ||
12642 		'ASO_QUOTE_HEADERS_V.SALESREP_FIRST_NAME,' ||
12643 		'ASO_QUOTE_HEADERS_V.SALESREP_LAST_NAME,' ||
12644 		'ASO_QUOTE_HEADERS_V.PRICE_LIST_ID,' ||
12645 		'ASO_QUOTE_HEADERS_V.PRICE_LIST_NAME,' ||
12646 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS_ID,' ||
12647 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS_CODE,' ||
12648 		'ASO_QUOTE_HEADERS_V.QUOTE_STATUS,' ||
12649 		'ASO_QUOTE_HEADERS_V.UPDATE_ALLOWED_FLAG,' ||
12650 		'ASO_QUOTE_HEADERS_V.AUTO_VERSION_FLAG,' ||
12651 		'ASO_QUOTE_HEADERS_V.QUOTE_SOURCE_CODE,' ||
12652 		'ASO_QUOTE_HEADERS_V.PARTY_ID,' ||
12653 		'ASO_QUOTE_HEADERS_V.PARTY_NAME,' ||
12654 		'ASO_QUOTE_HEADERS_V.PARTY_TYPE,' ||
12655 		'ASO_QUOTE_HEADERS_V.PERSON_FIRST_NAME,' ||
12656 		'ASO_QUOTE_HEADERS_V.PERSON_MIDDLE_NAME,' ||
12657 		'ASO_QUOTE_HEADERS_V.PERSON_LAST_NAME,' ||
12658 		'ASO_QUOTE_HEADERS_V.ORG_CONTACT_ID,' ||
12659 		'ASO_QUOTE_HEADERS_V.CONTACT_FIRST_NAME,' ||
12660 		'ASO_QUOTE_HEADERS_V.CONTACT_MIDDLE_NAME,' ||
12661 		'ASO_QUOTE_HEADERS_V.CONTACT_LAST_NAME,' ||
12662 		'ASO_QUOTE_HEADERS_V.QUOTE_NAME,' ||
12663 		'ASO_QUOTE_HEADERS_V.QUOTE_NUMBER,' ||
12664 		'ASO_QUOTE_HEADERS_V.QUOTE_VERSION,' ||
12665 		'ASO_QUOTE_HEADERS_V.QUOTE_EXPIRATION_DATE,' ||
12666 		'ASO_QUOTE_HEADERS_V.QUOTE_CATEGORY_CODE,' ||
12667 		'ASO_QUOTE_HEADERS_V.CURRENCY_CODE,' ||
12668 		'ASO_QUOTE_HEADERS_V.EXCHANGE_RATE,' ||
12669 		'ASO_QUOTE_HEADERS_V.EXCHANGE_TYPE_CODE,' ||
12670 		'ASO_QUOTE_HEADERS_V.EXCHANGE_RATE_DATE,' ||
12671 		'ASO_QUOTE_HEADERS_V.SOURCE_CAMPAIGN_ID,' ||
12672 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_ID,' ||
12673 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_NAME,' ||
12674 		'ASO_QUOTE_HEADERS_V.CAMPAIGN_SOURCE_CODE,' ||
12675 		'ASO_QUOTE_HEADERS_V.ORDERED_DATE,' ||
12676 		'ASO_QUOTE_HEADERS_V.ORDER_TYPE_ID,' ||
12677 		'ASO_QUOTE_HEADERS_V.ORDER_TYPE_NAME,' ||
12678 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_NUMBER,' ||
12679 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_REASON_CODE,' ||
12680 		'ASO_QUOTE_HEADERS_V.TAX_EXEMPT_FLAG,' ||
12681 		'ASO_QUOTE_HEADERS_V.TOTAL_LIST_PRICE,' ||
12682 		'ASO_QUOTE_HEADERS_V.TOTAL_ADJUSTED_AMOUNT,' ||
12683 		'ASO_QUOTE_HEADERS_V.TOTAL_ADJUSTED_PERCENT,' ||
12684 		'ASO_QUOTE_HEADERS_V.TOTAL_TAX,' ||
12685 		'ASO_QUOTE_HEADERS_V.SURCHARGE,' ||
12686 		'ASO_QUOTE_HEADERS_V.TOTAL_SHIPPING_CHARGE,' ||
12687 		'ASO_QUOTE_HEADERS_V.TOTAL_QUOTE_PRICE,' ||
12688 		'ASO_QUOTE_HEADERS_V.ACCOUNTING_RULE_ID,' ||
12689 		'ASO_QUOTE_HEADERS_V.INVOICING_RULE_ID,' ||
12690 		'ASO_QUOTE_HEADERS_V.SHIP_METHOD_CODE,' ||
12691 		'ASO_QUOTE_HEADERS_V.FREIGHT_TERMS_CODE,' ||
12692 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_ID,' ||
12693 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_SITE_ID,' ||
12694 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PARTY_NAME,' ||
12695 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_FIRST_NAME,' ||
12696 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_MIDDLE_NAME,' ||
12697 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CONTACT_LAST_NAME,' ||
12698 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS1,' ||
12699 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS2,' ||
12700 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS3,' ||
12701 		'ASO_QUOTE_HEADERS_V.SHIP_TO_ADDRESS4,' ||
12702 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTRY_CODE,' ||
12703 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTRY,' ||
12704 		'ASO_QUOTE_HEADERS_V.SHIP_TO_CITY,' ||
12705 		'ASO_QUOTE_HEADERS_V.SHIP_TO_POSTAL_CODE,' ||
12706 		'ASO_QUOTE_HEADERS_V.SHIP_TO_STATE,' ||
12707 		'ASO_QUOTE_HEADERS_V.SHIP_TO_PROVINCE,' ||
12708 		'ASO_QUOTE_HEADERS_V.SHIP_TO_COUNTY,' ||
12709 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_ID,' ||
12710 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_SITE_ID,' ||
12711 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PARTY_NAME,' ||
12712 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_FIRST_NAME,' ||
12713 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_MIDDLE_NAME,' ||
12714 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CONTACT_LAST_NAME,' ||
12715 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS1,' ||
12716 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS2,' ||
12717 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS3,' ||
12718 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_ADDRESS4,' ||
12719 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTRY_CODE,' ||
12720 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTRY,' ||
12721 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_CITY,' ||
12722 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_POSTAL_CODE,' ||
12723 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_STATE,' ||
12724 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_PROVINCE,' ||
12725 		'ASO_QUOTE_HEADERS_V.INVOICE_TO_COUNTY,' ||
12726 		'ASO_QUOTE_HEADERS_V.SHIPPING_INSTRUCTIONS,' ||
12727 		'ASO_QUOTE_HEADERS_V.PACKING_INSTRUCTIONS,' ||
12728 		'ASO_QUOTE_HEADERS_V.CONTRACT_ID,' ||
12729 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE_CATEGORY,' ||
12730 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE1,' ||
12731 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE2,' ||
12732 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE3,' ||
12733 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE4,' ||
12734 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE5,' ||
12735 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE6,' ||
12736 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE7,' ||
12737 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE8,' ||
12738 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE9,' ||
12739 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE10,' ||
12740 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE11,' ||
12741 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE12,' ||
12742 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE13,' ||
12743 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE14,' ||
12744 		'ASO_QUOTE_HEADERS_V.ATTRIBUTE15,' ||
12745 		'from ASO_QUOTE_HEADERS_V';
12746 
12747 END Gen_Select;
12748 
12749 PROCEDURE Gen_QTE_Where(
12750     P_Qte_Header_Rec	 IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
12751     x_QTE_where   OUT NOCOPY /* file.sql.39 change */    	VARCHAR2
12752 )
12753 IS
12754 -- cursors to check if wildcard values '%' and '_' have been passed
12755 -- as item values
12756 /*
12757 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
12758     SELECT INSTR(p_rec_item, '%', 1, 1)
12759     FROM DUAL;
12760 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
12761     SELECT INSTR(p_rec_item, '_', 1, 1)
12762     FROM DUAL;
12763 */
12764 -- return values from cursors
12765 str_csr1   NUMBER;
12766 str_csr2   NUMBER;
12767 l_operator VARCHAR2(10);
12768 BEGIN
12769 
12770       -- There are three example for each kind of datatype:
12771       -- NUMBER, DATE, VARCHAR2.
12772       -- Developer can copy and paste the following codes for your own record.
12773 
12774       -- example for NUMBER datatype
12775       IF( (P_Qte_Header_Rec.QUOTE_HEADER_ID IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_HEADER_ID <> FND_API.G_MISS_NUM) )
12776       THEN
12777 	  IF(x_QTE_where IS NULL) THEN
12778 	      x_QTE_where := 'Where';
12779 	  ELSE
12780 	      x_QTE_where := x_QTE_where || ' AND ';
12781 	  END IF;
12782 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.QUOTE_HEADER_ID = :p_QUOTE_HEADER_ID';
12783       END IF;
12784 
12785       -- example for DATE datatype
12786       IF( (P_Qte_Header_Rec.CREATION_DATE IS NOT NULL) AND (P_Qte_Header_Rec.CREATION_DATE <> FND_API.G_MISS_DATE) )
12787       THEN
12788 	  -- check if item value contains '%' wildcard
12789 /*	  OPEN c_chk_str1(P_Qte_Header_Rec.CREATION_DATE);
12790 	  FETCH c_chk_str1 INTO str_csr1;
12791 	  CLOSE c_chk_str1;
12792 */
12793 	  str_csr1 := INSTR(P_Qte_Header_Rec.CREATION_DATE, '%', 1, 1);
12794 
12795 	  IF(str_csr1 <> 0) THEN
12796 	      l_operator := ' LIKE ';
12797 	  ELSE
12798 	      l_operator := ' = ';
12799 	  END IF;
12800 
12801 	  -- check if item value contains '_' wildcard
12802 /*
12803 	  OPEN c_chk_str2(P_Qte_Header_Rec.CREATION_DATE);
12804 	  FETCH c_chk_str2 INTO str_csr2;
12805 	  CLOSE c_chk_str2;
12806 */
12807 	  str_csr2 := INSTR(P_Qte_Header_Rec.CREATION_DATE, '_', 1, 1);
12808 
12809 	  IF(str_csr2 <> 0) THEN
12810 	      l_operator := ' LIKE ';
12811 	  ELSE
12812 	      l_operator := ' = ';
12813 	  END IF;
12814 
12815 	  IF(x_QTE_where IS NULL) THEN
12816 	      x_QTE_where := 'Where ';
12817 	  ELSE
12818 	      x_QTE_where := x_QTE_where || ' AND ';
12819 	  END IF;
12820 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.CREATION_DATE ' || l_operator || ' :p_CREATION_DATE';
12821       END IF;
12822 
12823       -- example for VARCHAR2 datatype
12824       IF( (P_Qte_Header_Rec.QUOTE_NAME IS NOT NULL) AND (P_Qte_Header_Rec.QUOTE_NAME <> FND_API.G_MISS_CHAR) )
12825       THEN
12826 	  -- check if item value contains '%' wildcard
12827 /*
12828 	  OPEN c_chk_str1(P_Qte_Header_Rec.QUOTE_NAME);
12829 	  FETCH c_chk_str1 INTO str_csr1;
12830 	  CLOSE c_chk_str1;
12831 */
12832 	  str_csr1 := INSTR(P_Qte_Header_Rec.QUOTE_NAME, '%', 1, 1);
12833 
12834 	  IF(str_csr1 <> 0) THEN
12835 	      l_operator := ' LIKE ';
12836 	  ELSE
12837 	      l_operator := ' = ';
12838 	  END IF;
12839 
12840 	  -- check if item value contains '_' wildcard
12841 /*
12842 	  OPEN c_chk_str2(P_Qte_Header_Rec.QUOTE_NAME);
12843 	  FETCH c_chk_str2 INTO str_csr2;
12844 	  CLOSE c_chk_str2;
12845 */
12846        str_csr2 := INSTR(P_Qte_Header_Rec.QUOTE_NAME, '_', 1, 1);
12847 
12848 	  IF(str_csr2 <> 0) THEN
12849 	      l_operator := ' LIKE ';
12850 	  ELSE
12851 	      l_operator := ' = ';
12852 	  END IF;
12853 
12854 	  IF(x_QTE_where IS NULL) THEN
12855 	      x_QTE_where := 'Where ';
12856 	  ELSE
12857 	      x_QTE_where := x_QTE_where || ' AND ';
12858 	  END IF;
12859 	  x_QTE_where := x_QTE_where || 'P_Qte_Header_Rec.QUOTE_NAME ' || l_operator || ' :p_QUOTE_NAME';
12860       END IF;
12861 
12862       -- Add more IF statements for each column below
12863 
12864 
12865 END Gen_QTE_Where;
12866 
12867 PROCEDURE Get_quote(
12868     P_Api_Version_Number	 IN   NUMBER,
12869     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
12870     P_Qte_Header_Rec		 IN    ASO_QUOTE_PUB.Qte_Header_Rec_Type,
12871   -- Hint: Add list of bind variables here
12872     p_rec_requested		 IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
12873     p_start_rec_prt		 IN   NUMBER  := 1,
12874     p_return_tot_count		 IN   NUMBER  := FND_API.G_FALSE,
12875   -- Hint: user defined record type
12876     p_order_by_rec		 IN   ASO_QUOTE_PUB.QTE_sort_rec_type,
12877     x_return_status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12878     x_msg_count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12879     x_msg_data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
12880     X_Qte_Header_Tbl		 OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Qte_Header_Tbl_Type,
12881     x_returned_rec_count	 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12882     x_next_rec_ptr		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
12883     x_tot_rec_count		 OUT NOCOPY /* file.sql.39 change */      NUMBER)
12884 IS
12885 l_api_name		  CONSTANT VARCHAR2(30) := 'Get_quote';
12886 l_api_version_number	  CONSTANT NUMBER   := 1.0;
12887 
12888 -- Local record counters
12889 l_returned_rec_count	 NUMBER := 0; -- number of records returned in x_X_Qte_Header_Rec
12890 l_next_record_ptr	 NUMBER := 1;
12891 l_ignore		 NUMBER;
12892 
12893 -- total number of records accessable by caller
12894 l_tot_rec_count 	 NUMBER := 0;
12895 l_tot_rec_amount	 NUMBER := 0;
12896 
12897 -- Status local variables
12898 l_return_status 	 VARCHAR2(1); -- Return value from procedures
12899 l_return_status_full	 VARCHAR2(1); -- Calculated return status from
12900 
12901 -- Dynamic SQL statement elements
12902 l_cur_get_qte		 NUMBER;
12903 l_select_cl		 VARCHAR2(2000) := '';
12904 l_order_by_cl		 VARCHAR2(2000);
12905 l_QTE_where    VARCHAR2(2000) := '';
12906 
12907 -- For flex field query
12908 l_flex_where_tbl_type	 ASO_UTILITY_PVT.flex_where_tbl_type;
12909 l_flex_where		 VARCHAR2(2000) := NULL;
12910 l_counter		 NUMBER;
12911 
12912 -- Local scratch record
12913 l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
12914 l_crit_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
12915 BEGIN
12916       -- Standard Start of API savepoint
12917       SAVEPOINT GET_QUOTE_PVT;
12918 
12919       -- Standard call to check for call compatibility.
12920       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
12921 			 		     p_api_version_number,
12922 					   l_api_name,
12923 					   G_PKG_NAME)
12924       THEN
12925 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12926       END IF;
12927 
12928 
12929       -- Initialize message list if p_init_msg_list is set to TRUE.
12930       IF FND_API.to_Boolean( p_init_msg_list )
12931       THEN
12932 	  FND_MSG_PUB.initialize;
12933       END IF;
12934 
12935 
12936 
12937 
12938       -- Initialize API return status to SUCCESS
12939       x_return_status := FND_API.G_RET_STS_SUCCESS;
12940 
12941       --
12942       -- Api body
12943       --
12944 
12945       -- *************************************************
12946       -- Generate Dynamic SQL based on criteria passed in.
12947       -- Doing this for performance. Indexes are disabled when using NVL within static SQL statement.
12948       -- Ignore condition when criteria is NULL
12949       -- Generate Select clause and From clause
12950       -- Hint: Developer should modify Gen_Select procedure.
12951       Gen_Select(l_select_cl);
12952 
12953       -- Hint: Developer should modify and implement Gen_Where precedure.
12954       Gen_QTE_Where(l_crit_qte_header_rec, l_QTE_where);
12955 
12956       -- Generate Where clause for flex fields
12957       -- Hint: Developer can use table/view alias in the From clause generated in Gen_Select procedure
12958 
12959       FOR l_counter IN 1..15 LOOP
12960 	  l_flex_where_tbl_type(l_counter).name := 'ASO_QUOTE_HEADERS_V.attribute' || l_counter;
12961       END LOOP;
12962 
12963       l_flex_where_tbl_type(16).name := 'ASO_QUOTE_HEADERS_V.attribute_category';
12964       l_flex_where_tbl_type(1).value := P_Qte_Header_Rec.attribute1;
12965       l_flex_where_tbl_type(2).value := P_Qte_Header_Rec.attribute2;
12966       l_flex_where_tbl_type(3).value := P_Qte_Header_Rec.attribute3;
12967       l_flex_where_tbl_type(4).value := P_Qte_Header_Rec.attribute4;
12968       l_flex_where_tbl_type(5).value := P_Qte_Header_Rec.attribute5;
12969       l_flex_where_tbl_type(6).value := P_Qte_Header_Rec.attribute6;
12970       l_flex_where_tbl_type(7).value := P_Qte_Header_Rec.attribute7;
12971       l_flex_where_tbl_type(8).value := P_Qte_Header_Rec.attribute8;
12972       l_flex_where_tbl_type(9).value := P_Qte_Header_Rec.attribute9;
12973       l_flex_where_tbl_type(10).value := P_Qte_Header_Rec.attribute10;
12974       l_flex_where_tbl_type(11).value := P_Qte_Header_Rec.attribute11;
12975       l_flex_where_tbl_type(12).value := P_Qte_Header_Rec.attribute12;
12976       l_flex_where_tbl_type(13).value := P_Qte_Header_Rec.attribute13;
12977       l_flex_where_tbl_type(14).value := P_Qte_Header_Rec.attribute14;
12978       l_flex_where_tbl_type(15).value := P_Qte_Header_Rec.attribute15;
12979       l_flex_where_tbl_type(16).value := P_Qte_Header_Rec.attribute_category;
12980 
12981       ASO_UTILITY_PVT.Gen_Flexfield_Where(
12982 	  p_flex_where_tbl_type   => l_flex_where_tbl_type,
12983 	  x_flex_where_clause	  => l_flex_where);
12984 
12985       -- Hint: if master/detail relationship, generate Where clause for lines level criteria
12986       -- Generate order by clause
12987       Gen_QTE_order_cl(p_order_by_rec, l_order_by_cl, l_return_status, x_msg_count, x_msg_data);
12988 
12989 
12990       l_cur_get_qte := dbms_sql.open_cursor;
12991 
12992       -- Hint: concatenate all where clause (include flex field/line level if any applies)
12993       --    dbms_sql.parse(l_cur_get_QTE, l_select_cl || l_head_where || l_flex_where || l_lines_where
12994       --    || l_steam_where || l_order_by_cl, dbms_sql.native);
12995 
12996       -- Hint: Developer should implement Bind Variables procedure according to bind variables in the parameter list
12997       -- Bind(l_crit_qte_header_rec, l_crit_exp_purchase_rec, p_start_date, p_end_date,
12998       --      p_crit_exp_salesforce_id, p_crit_ptr_salesforce_id,
12999       --      p_crit_salesgroup_id, p_crit_ptr_manager_person_id,
13000       --      p_win_prob_ceiling, p_win_prob_floor,
13001       --      p_total_amt_ceiling, p_total_amt_floor,
13002       --      l_cur_get_QTE);
13003 
13004       -- Bind flexfield variables
13005       ASO_UTILITY_PVT.Bind_Flexfield_Where(
13006 	  p_cursor_id	=>   l_cur_get_QTE,
13007 	  p_flex_where_tbl_type => l_flex_where_tbl_type);
13008 
13009       -- Define all Select Columns
13010       Define_Columns(l_crit_qte_header_rec, l_cur_get_QTE);
13011 
13012       -- Execute
13013 
13014       l_ignore := dbms_sql.execute(l_cur_get_QTE);
13015 
13016 
13017       -- This loop is here to avoid calling a function in the main
13018       -- cursor. Basically, calling this function seems to disable
13019       -- index, but verification is needed. This is a good
13020       -- place to optimize the code if required.
13021 
13022       LOOP
13023       -- 1. There are more rows in the cursor.
13024       -- 2. User does not care about total records, and we need to return more.
13025       -- 3. Or user cares about total number of records.
13026       IF((dbms_sql.fetch_rows(l_cur_get_QTE)>0) AND ((p_return_tot_count = FND_API.G_TRUE)
13027 	OR (l_returned_rec_count<p_rec_requested) OR (p_rec_requested=FND_API.G_MISS_NUM)))
13028       THEN
13029 
13030 	  -- Hint: Developer need to implement this part
13031 	  --	  dbms_sql.column_value(l_cur_get_opp, 1, l_opp_rec.lead_id);
13032 	  --	  dbms_sql.column_value(l_cur_get_opp, 7, l_opp_rec.customer_id);
13033 	  --	  dbms_sql.column_value(l_cur_get_opp, 8, l_opp_rec.address_id);
13034 
13035 	  -- Hint: Check access for this record (e.x. ASO_ACCESS_PVT.Haso_OpportunityAccess)
13036 	  -- Return this particular record if
13037 	  -- 1. The caller has access to record.
13038 	  -- 2. The number of records returned < number of records caller requested in this run.
13039 	  -- 3. The record comes AFTER or Equal to the start index the caller requested.
13040 
13041 	  -- Developer should check whether there is access privilege here
13042 --	    IF(l_qte_header_rec.member_access <> 'N' OR l_qte_header_rec.member_role <> 'N') THEN
13043 	      Get_Column_Values(l_cur_get_QTE, l_qte_header_rec);
13044 	      l_tot_rec_count := l_tot_rec_count + 1;
13045 	      IF(l_returned_rec_count < p_rec_requested) AND (l_tot_rec_count >= p_start_rec_prt) THEN
13046 		  l_returned_rec_count := l_returned_rec_count + 1;
13047 		  -- insert into resultant tables
13048 		  X_Qte_Header_Tbl(l_returned_rec_count) := l_qte_header_rec;
13049 	      END IF;
13050 --	    END IF;
13051       ELSE
13052 	  EXIT;
13053       END IF;
13054       END LOOP;
13055       --
13056       -- End of API body
13057       --
13058 
13059 
13060 
13061       -- Standard call to get message count and if count is 1, get message info.
13062       FND_MSG_PUB.Count_And_Get
13063       (  p_count	  =>   x_msg_count,
13064 	 p_data 	  =>   x_msg_data
13065       );
13066 
13067       EXCEPTION
13068 	  WHEN FND_API.G_EXC_ERROR THEN
13069 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
13070 		   P_API_NAME => L_API_NAME
13071 		  ,P_PKG_NAME => G_PKG_NAME
13072 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
13073 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
13074 		  ,X_MSG_COUNT => X_MSG_COUNT
13075 		  ,X_MSG_DATA => X_MSG_DATA
13076 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
13077 
13078 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13079 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
13080 		   P_API_NAME => L_API_NAME
13081 		  ,P_PKG_NAME => G_PKG_NAME
13082 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13083 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
13084 		  ,X_MSG_COUNT => X_MSG_COUNT
13085 		  ,X_MSG_DATA => X_MSG_DATA
13086 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
13087 
13088 	  WHEN OTHERS THEN
13089 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
13090 		   P_API_NAME => L_API_NAME
13091 		  ,P_PKG_NAME => G_PKG_NAME
13092 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
13093 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
13094 		  ,X_MSG_COUNT => X_MSG_COUNT
13095 		  ,X_MSG_DATA => X_MSG_DATA
13096 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
13097 End Get_quote;
13098 
13099 PROCEDURE Validate_Quote
13100 (
13101     P_Api_Version_Number	 IN   NUMBER,
13102     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
13103     P_Qte_Header_Id		 IN   NUMBER,
13104     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
13105     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
13106     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2)
13107 IS
13108 BEGIN
13109 	null;
13110 END Validate_Quote;
13111 
13112 
13113 -- NAME
13114 --   Submit_Quote
13115 --
13116 -- PURPOSE
13117 --   Validate the quote and quote lines, where quote_id = p_quote_id.
13118 --   If validation is successful, insert the quote and quote lines
13119 --   to OE's interface tables.	Submit a concurrent request to order
13120 --   the quote.
13121 --
13122 
13123 PROCEDURE Submit_Quote
13124 (
13125     P_Api_Version_Number	 IN   NUMBER,
13126     P_Init_Msg_List		 IN   VARCHAR2	   := FND_API.G_FALSE,
13127     P_Commit			 IN   VARCHAR2	   := FND_API.G_FALSE,
13128     p_validation_level	 IN   NUMBER	   := FND_API.G_VALID_LEVEL_FULL,
13129     p_control_rec		 IN   ASO_QUOTE_PUB.SUBMIT_Control_Rec_Type
13130 						:=  ASO_QUOTE_PUB.G_MISS_SUBMIT_CONTROL_REC,
13131     P_Qte_Header_Id		 IN   NUMBER,
13132     X_Order_Header_Rec	 OUT NOCOPY /* file.sql.39 change */      ASO_QUOTE_PUB.Order_Header_Rec_Type,
13133     X_Return_Status		 OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
13134     X_Msg_Count 		 OUT NOCOPY /* file.sql.39 change */      NUMBER,
13135     X_Msg_Data			 OUT NOCOPY /* file.sql.39 change */      VARCHAR2)
13136 
13137 IS
13138 
13139 l_qte_header_rec	 ASO_QUOTE_PUB.Qte_Header_Rec_Type
13140                               := ASO_QUOTE_PUB.G_MISS_Qte_Header_Rec;
13141 
13142 BEGIN
13143 
13144 -- Calling New Submit_Quote API
13145 
13146 	 l_qte_header_rec.quote_header_id := P_Qte_Header_Id;
13147 
13148       ASO_SUBMIT_QUOTE_PVT.Submit_Quote(
13149           P_Api_Version_Number => 1.0,
13150           P_Init_Msg_List      => p_init_msg_list,
13151           P_Commit             => p_commit,
13152           P_validation_level   => p_validation_level,
13153           P_Control_Rec        => p_control_rec,
13154           P_Qte_Header_Rec     => l_qte_header_rec,
13155           x_order_header_rec   => x_Order_Header_Rec,
13156           X_Return_Status      => x_return_status,
13157           X_Msg_Count          => x_msg_count,
13158           X_Msg_Data           => x_msg_data);
13159 
13160 
13161 END Submit_Quote;
13162 
13163 
13164 PROCEDURE config_copy(
13165    p_qte_line_id   IN   NUMBER,
13166    p_old_config_header_id IN NUMBER,
13167    p_old_config_revision_num IN NUMBER,
13168    p_config_header_id IN NUMBER,
13169    p_config_revision_num IN NUMBER,
13170    x_qte_header_id IN NUMBER,
13171    qte_header_id IN NUMBER,
13172    p_qte_line_rec IN ASO_QUOTE_PUB.Qte_Line_Rec_Type,
13173     P_control_rec         IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
13174   l_line_index_link_tbl  IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
13175   l_price_index_link_tbl  IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
13176   X_Return_Status              OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
13177   X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */      NUMBER,
13178   X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */      VARCHAR2
13179 )
13180 IS
13181 
13182 CURSOR line_id_from_config IS
13183  SELECT ASO_Quote_Line_Details.QUOTE_LINE_ID
13184   FROM ASO_Quote_Line_Details, ASO_Quote_Lines_all
13185   WHERE ASO_Quote_Line_Details.config_header_id = p_old_config_header_id
13186   AND ASO_Quote_Line_Details.config_revision_num = p_old_config_revision_num
13187    AND ASO_quote_line_details.quote_line_id = ASO_Quote_Lines_all.quote_line_id
13188     AND ASO_Quote_Lines_all.item_type_code <> 'MDL'
13189     AND aso_quote_lines_all.quote_header_id = qte_header_id;
13190 
13191    l_payment_tbl     ASO_QUOTE_PUB.Payment_Tbl_Type;
13192    l_payment_tbl_out     ASO_QUOTE_PUB.Payment_Tbl_Type;
13193    l_shipment_tbl    ASO_QUOTE_PUB.Shipment_Tbl_Type;
13194    l_shipment_tbl_out    ASO_QUOTE_PUB.Shipment_Tbl_Type;
13195    l_shipment_rec    ASO_QUOTE_PUB.Shipment_Rec_Type;
13196    l_freight_charge_tbl   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
13197    l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
13198    l_tax_detail_tbl       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
13199    l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
13200 
13201    l_Price_Attr_Tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
13202    l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
13203    l_Price_Adj_Tbl   ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
13204    l_Price_Adj_Attr_Tbl   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
13205    l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
13206    l_qte_line_dtl_tbl     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
13207    l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
13208    l_qte_line_rec     ASO_QUOTE_PUB.Qte_Line_Rec_Type;
13209    l_Line_Attr_Ext_Tbl    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13210    l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13211    lx_ln_Price_Adj_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
13212    lx_qte_line_rec             ASO_QUOTE_PUB.Qte_Line_Rec_Type;
13213    l_control_rec    ASO_QUOTE_PUB.Control_Rec_Type;
13214 
13215      LX_PRICE_ADJ_RLTSHIP_ID     NUMBER;
13216      LX_LINE_RELATIONSHIP_ID     NUMBER;
13217 
13218      X_hd_Attr_Ext_Tbl           ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13219      X_Sales_Credit_Tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13220      X_Quote_Party_Tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13221      l_hd_Attr_Ext_Tbl         ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13222      l_quote_party_tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13223      l_quote_party_tbl_out         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13224      l_quote_party_rec         ASO_QUOTE_PUB.Quote_Party_rec_Type;
13225      l_sales_credit_tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13226      l_sales_credit_tbl_out        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13227      l_sales_credit_rec        ASO_QUOTE_PUB.Sales_Credit_rec_Type;
13228 
13229      l_return_status     varchar2(1);
13230      qte_line_id  NUMBER;
13231      i NUMBER;
13232      j NUMBER;
13233      k NUMBER;
13234 
13235      CURSOR C_Serviceable_Product(l_organization_id NUMBER, l_inv_item_id NUMBER) IS
13236      SELECT serviceable_product_flag FROM MTL_SYSTEM_ITEMS_VL
13237      WHERE inventory_item_id = l_inv_item_id
13238 	 AND organization_id = l_organization_id;
13239 
13240     l_quote_line_id number;
13241     l_serviceable_product_flag  VARCHAR2(1);
13242 
13243 l_api_version	CONSTANT NUMBER 	:= 1.0;
13244 
13245 BEGIN
13246 
13247     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13248     aso_debug_pub.add('Copy_Config - Begin ', 1, 'Y');
13249     aso_debug_pub.add('Copy_Config - x_qte_header_id '||x_qte_header_id, 1, 'Y');
13250     aso_debug_pub.add('Copy_Config - qte_header_id '||qte_header_id, 1, 'Y');
13251     aso_debug_pub.add('Copy_Config - p_qte_line_id '|| p_qte_line_id, 1, 'Y');
13252     END IF;
13253 
13254    OPEN line_id_from_config;
13255    LOOP
13256     FETCH line_id_from_config INTO qte_line_id;
13257     EXIT WHEN line_id_from_config%NOTFOUND;
13258 
13259     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13260     aso_debug_pub.add('Copy_Config - inside cursor qte_line_id '|| qte_line_id, 1, 'Y');
13261     END IF;
13262   l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(qte_line_id);
13263 
13264   l_qte_line_rec.quote_header_id := x_qte_header_id;
13265 
13266   l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(qte_line_id);
13267 
13268   FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
13269     l_qte_line_dtl_tbl(k).config_header_id := p_config_header_id;
13270     l_qte_line_dtl_tbl(k).config_revision_num := p_config_revision_num;
13271   END LOOP;
13272 
13273 
13274    l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows(qte_line_id);
13275    l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows(qte_header_id,qte_line_id);
13276 
13277    FOR j IN 1..l_price_adj_tbl.count LOOP
13278          l_price_adj_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13279    END LOOP;
13280 
13281    l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
13282    l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows(qte_header_id, qte_line_id);
13283 
13284    FOR j IN 1..l_price_attr_tbl.count LOOP
13285       l_price_attr_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13286    END LOOP;
13287 
13288    l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(qte_header_id, QTE_LINE_ID);
13289 
13290    FOR j IN 1..l_payment_tbl.count LOOP
13291          l_payment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13292          l_payment_tbl(j).CREDIT_CARD_APPROVAL_CODE := NULL;
13293          l_payment_tbl(j).CREDIT_CARD_APPROVAL_DATE := NULL;
13294          l_payment_tbl(j).PAYMENT_AMOUNT := NULL;
13295    END LOOP;
13296 
13297    l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(qte_header_id, QTE_LINE_ID);
13298    FOR j IN 1..l_shipment_tbl.count LOOP
13299         l_shipment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13300    END LOOP;
13301 
13302    l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(qte_header_id,QTE_LINE_ID);
13303    FOR j IN 1..l_sales_credit_tbl.count LOOP
13304        l_sales_credit_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13305    END LOOP;
13306 
13307    l_quote_party_tbl :=  ASO_UTILITY_PVT.Query_Quote_Party_Row(qte_header_id,QTE_LINE_ID);
13308     FOR j IN 1..l_quote_party_tbl.count LOOP
13309          l_quote_party_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13310     END LOOP;
13311 
13312     l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows(l_shipment_tbl);
13313     l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows(qte_header_id,QTE_LINE_ID, l_shipment_tbl);
13314 
13315     OPEN C_Serviceable_Product(l_qte_line_rec.organization_id, l_qte_line_rec.inventory_item_id);
13316     FETCH C_Serviceable_Product INTO l_serviceable_product_flag;
13317     CLOSE C_Serviceable_Product;
13318     l_quote_line_id := l_qte_line_rec.quote_line_id;
13319     -- BC4J Fix
13320     --l_qte_line_rec.quote_line_id := null;
13321 
13322     ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
13323               p_control_rec       => l_control_rec,
13324               P_qte_Line_Rec      => l_qte_line_rec,
13325               P_qte_line_dtl_tbl  => l_qte_line_dtl_tbl,
13326               P_Line_Attribs_Ext_Tbl   => l_line_attr_ext_tbl,
13327               P_price_attributes_tbl   => l_price_attr_tbl,
13328               P_Price_Adj_Tbl          => l_price_adj_tbl,
13329               P_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl,
13330               P_Payment_Tbl       => l_payment_tbl,
13331               P_Shipment_Tbl      => l_shipment_tbl,
13332               P_Freight_Charge_Tbl     => l_freight_charge_tbl,
13333               P_Tax_Detail_Tbl    => l_tax_detail_tbl,
13334               P_Sales_Credit_Tbl   => l_sales_credit_tbl,
13335               P_Quote_Party_Tbl   => l_quote_party_tbl,
13336               x_qte_Line_Rec      => lx_qte_line_rec,
13337               x_qte_line_dtl_tbl  => l_qte_line_dtl_tbl_out,
13338                x_Line_Attribs_Ext_Tbl   => l_line_attr_Ext_Tbl_out,
13339                x_price_attributes_tbl   => l_price_attr_tbl_out,
13340                x_Price_Adj_Tbl          => lx_ln_price_adj_tbl,
13341                x_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl_out,
13342                x_Payment_Tbl       => l_payment_tbl_out,
13343                x_Shipment_Tbl      => l_shipment_tbl_out,
13344                x_Freight_Charge_Tbl     => l_freight_charge_tbl_out,
13345                x_Tax_Detail_Tbl    => l_tax_detail_tbl_out,
13346                X_Sales_Credit_Tbl  => l_sales_credit_tbl_out,
13347                X_Quote_Party_Tbl   => l_quote_party_tbl_out,
13348                X_Return_Status     => l_return_status,
13349                X_Msg_Count         => x_msg_count,
13350                X_Msg_Data          => x_msg_data);
13351 
13352       l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
13353       l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
13354       l_price_attr_tbl      :=  l_price_attr_tbl_out;
13355       l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
13356       l_payment_tbl         :=  l_payment_tbl_out;
13357       l_shipment_tbl        :=  l_shipment_tbl_out;
13358       l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
13359       l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
13360       l_sales_credit_tbl    :=  l_sales_credit_tbl_out;
13361       l_quote_party_tbl     :=  l_quote_party_tbl_out;
13362 
13363 
13364 	IF p_control_rec.copy_att_flag = 'Y' THEN
13365     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13366     aso_debug_pub.add('Copy_Rows - Begin- before config  line copy_attch  ', 1, 'Y');
13367     END IF;
13368 
13369     ASO_ATTACHMENT_INT.Copy_Attachments(
13370        p_api_version       =>  l_api_version,
13371        p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
13372        p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
13373        p_old_object_id     =>  qte_line_id,
13374        p_new_object_id     =>  lx_qte_line_rec.quote_line_id,
13375        x_return_status     =>  x_return_status ,
13376        x_msg_count         =>  x_msg_count,
13377        x_msg_data          =>  x_msg_data
13378     );
13379 
13380    IF aso_debug_pub.g_debug_flag = 'Y' THEN
13381    aso_debug_pub.add('Copy_Rows -After config line copy_attch '||x_return_status, 1, 'Y');
13382    END IF;
13383 
13384 	  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
13385 	      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13386 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13387 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
13388 		  FND_MESSAGE.Set_Token('ROW', 'ASO_COPYQUOTE_ AFTER_ATTACHMENTS', TRUE);
13389 		  FND_MSG_PUB.ADD;
13390 	      END IF;
13391 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13392 	  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
13393 	      x_return_status := FND_API.G_RET_STS_ERROR;
13394              RAISE   FND_API.G_EXC_ERROR;
13395 	  END IF ;
13396   	END IF;
13397 
13398     FOR j IN 1..l_price_adj_tbl.count LOOP
13399          l_price_index_link_tbl(l_price_adj_tbl(j).price_adjustment_id) :=
13400                    lx_ln_price_adj_tbl(j).price_adjustment_id;
13401    END LOOP;
13402    l_line_index_link_tbl(qte_line_id) := lx_qte_line_rec.quote_line_id;
13403 
13404 -- CLOSE line_id_from_config;
13405 IF aso_debug_pub.g_debug_flag = 'Y' THEN
13406 aso_debug_pub.add('Copy_Config - l_qte_line_tbl(i).item_type_code '|| l_qte_line_rec.item_type_code, 1, 'Y');
13407 aso_debug_pub.add('Copy - l_qte_line_tbl(i).inventory_item_id '|| l_qte_line_rec.inventory_item_id, 1, 'Y');
13408 aso_debug_pub.add('Copy - l_serviceable_product_flag '|| l_serviceable_product_flag, 1, 'Y');
13409 END IF;
13410     IF l_serviceable_product_flag = 'Y' THEN
13411 			ASO_QUOTE_HEADERS_PVT.service_copy(
13412                       p_qte_line_id     => l_quote_line_id,
13413                       p_control_rec     => p_control_rec,
13414                       x_qte_header_id   => x_qte_header_id,
13415                       qte_header_id     => qte_header_id,
13416                       p_qte_line_rec    => l_qte_line_rec,
13417                       l_line_index_link_tbl   => l_line_index_link_tbl,
13418                       l_price_index_link_tbl  => l_price_index_link_tbl,
13419          	          X_Return_Status         => l_return_status,
13420                       X_Msg_Count             => x_msg_count,
13421                       X_Msg_Data              => x_msg_data
13422 		      );
13423           END IF;
13424 
13425 	    IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
13426 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13427 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13428 		    FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
13429 		    FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
13430 		    FND_MSG_PUB.ADD;
13431 		END IF;
13432 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13433 	    ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
13434 		x_return_status := FND_API.G_RET_STS_ERROR;
13435 	    END IF;
13436 
13437     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
13438          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13439          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13440              FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
13441              FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
13442              FND_MSG_PUB.ADD;
13443           END IF;
13444 
13445           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13446      ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
13447           x_return_status := FND_API.G_RET_STS_ERROR;
13448      END IF;
13449 
13450  END LOOP;
13451 
13452  CLOSE line_id_from_config;
13453 
13454 END config_copy;
13455 
13456 
13457 PROCEDURE service_copy(
13458    p_qte_line_id        IN   NUMBER,
13459    x_qte_header_id      IN NUMBER,
13460    qte_header_id        IN NUMBER,
13461    p_qte_line_rec       IN ASO_QUOTE_PUB.Qte_Line_Rec_Type,
13462    P_control_rec        IN  ASO_QUOTE_PUB.control_rec_type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
13463    l_line_index_link_tbl    IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
13464    l_price_index_link_tbl   IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type,
13465    X_Return_Status             OUT NOCOPY /* file.sql.39 change */      VARCHAR2,
13466    X_Msg_Count                 OUT NOCOPY /* file.sql.39 change */      NUMBER,
13467    X_Msg_Data                  OUT NOCOPY /* file.sql.39 change */      VARCHAR2
13468 )
13469 IS
13470 
13471 CURSOR line_id_from_service IS
13472  SELECT related_quote_line_id
13473   FROM aso_line_relationships
13474   WHERE quote_line_id = p_qte_line_id
13475   AND relationship_type_code = 'SERVICE';
13476 
13477    l_payment_tbl     ASO_QUOTE_PUB.Payment_Tbl_Type;
13478    l_payment_tbl_out     ASO_QUOTE_PUB.Payment_Tbl_Type;
13479    l_shipment_tbl    ASO_QUOTE_PUB.Shipment_Tbl_Type;
13480    l_shipment_tbl_out    ASO_QUOTE_PUB.Shipment_Tbl_Type;
13481    l_shipment_rec    ASO_QUOTE_PUB.Shipment_Rec_Type;
13482    l_freight_charge_tbl   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
13483    l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
13484    l_tax_detail_tbl       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
13485    l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
13486 
13487    l_Price_Attr_Tbl       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
13488    l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
13489    l_Price_Adj_Tbl   ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
13490    l_Price_Adj_Attr_Tbl   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
13491    l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
13492    l_qte_line_dtl_tbl     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
13493    l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
13494    l_qte_line_rec     ASO_QUOTE_PUB.Qte_Line_Rec_Type;
13495    l_Line_Attr_Ext_Tbl    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13496    l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13497    lx_ln_Price_Adj_Tbl    ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
13498    lx_qte_line_rec             ASO_QUOTE_PUB.Qte_Line_Rec_Type;
13499    l_control_rec    ASO_QUOTE_PUB.Control_Rec_Type;
13500 
13501      LX_PRICE_ADJ_RLTSHIP_ID     NUMBER;
13502      LX_LINE_RELATIONSHIP_ID     NUMBER;
13503 
13504      X_hd_Attr_Ext_Tbl           ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13505      X_Sales_Credit_Tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13506      X_Quote_Party_Tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13507      l_hd_Attr_Ext_Tbl         ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
13508      l_quote_party_tbl         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13509      l_quote_party_tbl_out         ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
13510      l_quote_party_rec         ASO_QUOTE_PUB.Quote_Party_rec_Type;
13511      l_sales_credit_tbl        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13512      l_sales_credit_tbl_out        ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
13513      l_sales_credit_rec        ASO_QUOTE_PUB.Sales_Credit_rec_Type;
13514 
13515      l_service_ref_line_id  NUMBER;
13516 
13517      l_return_status     varchar2(1);
13518      qte_line_id  NUMBER;
13519      i NUMBER;
13520      j NUMBER;
13521      k NUMBER;
13522 l_api_version	CONSTANT NUMBER 	:= 1.0;
13523 
13524 BEGIN
13525     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13526     aso_debug_pub.add('Copy_Service - Begin ', 1, 'Y');
13527     aso_debug_pub.add('Copy_Service - x_qte_header_id '||x_qte_header_id, 1, 'Y');
13528     aso_debug_pub.add('Copy_Service - qte_header_id '||qte_header_id, 1, 'Y');
13529     aso_debug_pub.add('Copy_Service - p_qte_line_id '|| p_qte_line_id, 1, 'Y');
13530     END IF;
13531 
13532    OPEN line_id_from_service;
13533    LOOP
13534     FETCH line_id_from_service INTO qte_line_id;
13535     EXIT WHEN line_id_from_service%NOTFOUND;
13536     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13537     aso_debug_pub.add('Copy_Service - inside cursor qte_line_id '|| qte_line_id, 1, 'Y');
13538     END IF;
13539   l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(qte_line_id);
13540 
13541   l_qte_line_rec.quote_header_id := x_qte_header_id;
13542 
13543   l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(qte_line_id);
13544 
13545 
13546          IF l_qte_line_dtl_tbl.count > 0 THEN
13547 	      FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
13548 	        IF l_qte_line_dtl_tbl(k).service_ref_type_code = 'QUOTE' THEN
13549 	          IF l_qte_line_dtl_tbl(k).service_ref_line_id is NOT NULL THEN
13550     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13551     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');
13552     END IF;
13553 		    l_service_ref_line_id  :=
13554 		     l_line_index_link_tbl(l_qte_line_dtl_tbl(k).service_ref_line_id);
13555 		    l_qte_line_dtl_tbl(k).service_ref_line_id := l_service_ref_line_id;
13556 		     END IF;
13557 	        END IF;
13558             END LOOP;
13559 	    END IF;
13560     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13561     aso_debug_pub.add('Copy_Service - 2 l_service_ref_line_id '|| l_service_ref_line_id, 1, 'Y');
13562     END IF;
13563 /*
13564   FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
13565     l_qte_line_dtl_tbl(k).config_header_id := p_config_header_id;
13566     l_qte_line_dtl_tbl(k).config_revision_num := p_config_revision_num;
13567   END LOOP;
13568 */
13569 
13570    l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows(qte_line_id);
13571    l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows(qte_header_id,qte_line_id);
13572 
13573    FOR j IN 1..l_price_adj_tbl.count LOOP
13574          l_price_adj_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13575    END LOOP;
13576 
13577    l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
13578    l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows(qte_header_id, qte_line_id);
13579 
13580    FOR j IN 1..l_price_attr_tbl.count LOOP
13581       l_price_attr_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13582    END LOOP;
13583 
13584    l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(qte_header_id, QTE_LINE_ID);
13585 
13586    FOR j IN 1..l_payment_tbl.count LOOP
13587          l_payment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13588          l_payment_tbl(j).CREDIT_CARD_APPROVAL_CODE := NULL;
13589          l_payment_tbl(j).CREDIT_CARD_APPROVAL_DATE := NULL;
13590          l_payment_tbl(j).PAYMENT_AMOUNT := NULL;
13591    END LOOP;
13592 
13593    l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(qte_header_id, QTE_LINE_ID);
13594    FOR j IN 1..l_shipment_tbl.count LOOP
13595         l_shipment_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13596    END LOOP;
13597 
13598    l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(qte_header_id,QTE_LINE_ID);
13599    FOR j IN 1..l_sales_credit_tbl.count LOOP
13600        l_sales_credit_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13601    END LOOP;
13602 
13603    l_quote_party_tbl :=  ASO_UTILITY_PVT.Query_Quote_Party_Row(qte_header_id,QTE_LINE_ID);
13604     FOR j IN 1..l_quote_party_tbl.count LOOP
13605          l_quote_party_tbl(j).QUOTE_HEADER_ID := x_qte_header_id;
13606     END LOOP;
13607 
13608     l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows(l_shipment_tbl);
13609     l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows(qte_header_id,QTE_LINE_ID, l_shipment_tbl);
13610     -- BC4J Fix
13611     --l_qte_line_rec.quote_line_id := null;
13612     ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
13613               p_control_rec       => l_control_rec,
13614               P_qte_Line_Rec      => l_qte_line_rec,
13615               P_qte_line_dtl_tbl  => l_qte_line_dtl_tbl,
13616               P_Line_Attribs_Ext_Tbl   => l_line_attr_ext_tbl,
13617               P_price_attributes_tbl   => l_price_attr_tbl,
13618               P_Price_Adj_Tbl          => l_price_adj_tbl,
13619               P_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl,
13620               P_Payment_Tbl       => l_payment_tbl,
13621               P_Shipment_Tbl      => l_shipment_tbl,
13622               P_Freight_Charge_Tbl     => l_freight_charge_tbl,
13623               P_Tax_Detail_Tbl    => l_tax_detail_tbl,
13624               P_Sales_Credit_Tbl   => l_sales_credit_tbl,
13625               P_Quote_Party_Tbl   => l_quote_party_tbl,
13626               x_qte_Line_Rec      => lx_qte_line_rec,
13627               x_qte_line_dtl_tbl  => l_qte_line_dtl_tbl_out,
13628                x_Line_Attribs_Ext_Tbl   => l_line_attr_Ext_Tbl_out,
13629                x_price_attributes_tbl   => l_price_attr_tbl_out,
13630                x_Price_Adj_Tbl          => lx_ln_price_adj_tbl,
13631                x_Price_Adj_Attr_Tbl     => l_Price_Adj_Attr_Tbl_out,
13632                x_Payment_Tbl       => l_payment_tbl_out,
13633                x_Shipment_Tbl      => l_shipment_tbl_out,
13634                x_Freight_Charge_Tbl     => l_freight_charge_tbl_out,
13635                x_Tax_Detail_Tbl    => l_tax_detail_tbl_out,
13636                X_Sales_Credit_Tbl  => l_sales_credit_tbl_out,
13637                X_Quote_Party_Tbl   => l_quote_party_tbl_out,
13638                X_Return_Status     => l_return_status,
13639                X_Msg_Count         => x_msg_count,
13640                X_Msg_Data          => x_msg_data);
13641 
13642 
13643       l_qte_line_dtl_tbl    :=  l_qte_line_dtl_tbl_out;
13644       l_line_attr_Ext_Tbl   :=  l_line_attr_Ext_Tbl_out;
13645       l_price_attr_tbl      :=  l_price_attr_tbl_out;
13646       l_Price_Adj_Attr_Tbl  :=  l_Price_Adj_Attr_Tbl_out;
13647       l_payment_tbl         :=  l_payment_tbl_out;
13648       l_shipment_tbl        :=  l_shipment_tbl_out;
13649       l_freight_charge_tbl  :=  l_freight_charge_tbl_out;
13650       l_tax_detail_tbl      :=  l_tax_detail_tbl_out;
13651       l_sales_credit_tbl    :=  l_sales_credit_tbl_out;
13652       l_quote_party_tbl     :=  l_quote_party_tbl_out;
13653 
13654 
13655 	IF p_control_rec.copy_att_flag = 'Y' THEN
13656     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13657     aso_debug_pub.add('Copy_Rows - Begin- before config  line copy_attch  ', 1, 'Y');
13658     END IF;
13659 
13660     ASO_ATTACHMENT_INT.Copy_Attachments(
13661        p_api_version       =>  l_api_version,
13662        p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
13663        p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
13664        p_old_object_id     =>  qte_line_id,
13665        p_new_object_id     =>  lx_qte_line_rec.quote_line_id,
13666        x_return_status     =>  x_return_status ,
13667        x_msg_count         =>  x_msg_count,
13668        x_msg_data          =>  x_msg_data
13669 );
13670 
13671    IF aso_debug_pub.g_debug_flag = 'Y' THEN
13672    aso_debug_pub.add('Copy_Rows -After config line copy_attch '||x_return_status, 1, 'Y');
13673    END IF;
13674 
13675 	  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
13676 	      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13677 	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13678 		  FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
13679 		  FND_MESSAGE.Set_Token('ROW', 'ASO_COPYQUOTE_ AFTER_ATTACHMENTS', TRUE);
13680 		  FND_MSG_PUB.ADD;
13681 	      END IF;
13682 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13683 	  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
13684 	      x_return_status := FND_API.G_RET_STS_ERROR;
13685              RAISE   FND_API.G_EXC_ERROR;
13686 	  END IF ;
13687   	END IF;
13688 
13689     FOR j IN 1..l_price_adj_tbl.count LOOP
13690          l_price_index_link_tbl(l_price_adj_tbl(j).price_adjustment_id) :=
13691                    lx_ln_price_adj_tbl(j).price_adjustment_id;
13692    END LOOP;
13693    l_line_index_link_tbl(qte_line_id) := lx_qte_line_rec.quote_line_id;
13694 
13695 -- CLOSE line_id_from_config;
13696 
13697     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
13698          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13699          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13700              FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
13701              FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
13702              FND_MSG_PUB.ADD;
13703           END IF;
13704 
13705           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13706      ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
13707           x_return_status := FND_API.G_RET_STS_ERROR;
13708      END IF;
13709 
13710 
13711  END LOOP;
13712 
13713  CLOSE line_id_from_service;
13714 
13715 END service_copy;
13716 
13717 PROCEDURE Quote_Security_Check(
13718     P_Api_Version_Number         IN      NUMBER,
13719     P_Init_Msg_List              IN      VARCHAR2     := FND_API.G_FALSE,
13720     P_User_Id                    IN      NUMBER,
13721     X_Resource_Id                OUT NOCOPY /* file.sql.39 change */         NUMBER,
13722     X_Security_Flag              OUT NOCOPY /* file.sql.39 change */         VARCHAR2,
13723     X_Return_Status              OUT NOCOPY /* file.sql.39 change */         VARCHAR2,
13724     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */         NUMBER,
13725     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */         VARCHAR2
13726 )
13727 IS
13728 
13729     l_role_type               VARCHAR2(240) := NULL;
13730     l_mgr_flag                VARCHAR2(1)   := NULL;
13731     l_api_name                CONSTANT VARCHAR2(30) := 'QUOTE_SECURITY_CHECK';
13732     l_api_version_number      CONSTANT NUMBER   := 1.0;
13733 
13734     Cursor C_salesrep (X_User_Id NUMBER) IS
13735     SELECT j.resource_id
13736     /* FROM jtf_rs_srp_vl srp, jtf_rs_resource_extns j  */  --Commented Code Yogeshwar (MOAC)
13737     FROM jtf_rs_salesreps_mo_v srp, jtf_rs_resource_extns j --New Code Yogeshwar (MOAC)
13738     WHERE j.user_id = X_User_Id
13739       AND j.resource_id = srp.resource_id
13740       AND srp.status = 'A'
13741       AND nvl(trunc(srp.start_date_active), trunc(sysdate)) <= trunc(sysdate)
13742       AND nvl(trunc(srp.end_date_active), trunc(sysdate)) >= trunc(sysdate);
13743       /*  --Commented Code Start Yogeshwar (MOAC)
13744       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);
13745      */   --Commented Code End yogeshwar (MOAC)
13746 
13747 
13748     Cursor C_role (X_Resource_Id NUMBER, X_Profile_Role_Type VARCHAR2) IS
13749     SELECT role.role_type_code, role.manager_flag
13750     FROM JTF_RS_DEFRESROLES_VL role, JTF_RS_DEFRESOURCES_VL res
13751     WHERE role.role_resource_id = res.resource_id
13752       AND res.resource_id = X_resource_id
13753       AND nvl(trunc(role.res_rl_start_date), trunc(sysdate)) <= trunc(sysdate)
13754       AND nvl(trunc(role.res_rl_end_date), trunc(sysdate)) >= trunc(sysdate)
13755       AND role.ROLE_TYPE_CODE = X_profile_role_type
13756       AND role.delete_flag = 'N';
13757 
13758 BEGIN
13759 
13760     -- Standard call to check for call compatibility.
13761     IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
13762                                          p_api_version_number,
13763                                          l_api_name,
13764                                          G_PKG_NAME)
13765     THEN
13766         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13767     END IF;
13768 
13769     -- Initialize message list if p_init_msg_list is set to TRUE.
13770     IF FND_API.to_Boolean( p_init_msg_list )
13771     THEN
13772         FND_MSG_PUB.initialize;
13773     END IF;
13774 
13775 
13776     -- Initialize API return status to SUCCESS
13777     x_return_status := FND_API.G_RET_STS_SUCCESS;
13778 
13779     X_Resource_Id := NULL;
13780     X_Security_Flag := 'N';
13781 
13782     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13783     aso_debug_pub.add('Quote_Security_Check(): before main logic', 1, 'Y');
13784     END IF;
13785 
13786     FOR c_sv IN C_salesrep(p_user_id) LOOP
13787         X_Resource_Id := c_sv.resource_id;
13788         IF X_Resource_Id IS NOT NULL THEN
13789             IF aso_debug_pub.g_debug_flag = 'Y' THEN
13790 		  aso_debug_pub.add('Quote_Security_Check(): Resource_Id IS NOT NULL', 1, 'Y');
13791 		  END IF;
13792             IF (FND_PROFILE.Value('ASO_ROLE_TYPE')) IS NOT NULL THEN
13793                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
13794 			 aso_debug_pub.add('Quote_Security_Check(): ASO_ROLE_TYPE NOT NULL', 1, 'Y');
13795 			 END IF;
13796                 FOR c_r IN C_role(X_Resource_Id, FND_PROFILE.Value('ASO_ROLE_TYPE')) LOOP
13797                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13798 				aso_debug_pub.add('Quote_Security_Check(): C_Role FOUND', 1, 'Y');
13799 				END IF;
13800                     l_mgr_flag := c_r.manager_flag;
13801                     IF l_mgr_flag ='Y' THEN
13802                         X_Security_Flag := 'Y';
13803                     END IF;
13804                 END LOOP;
13805                 IF l_mgr_flag IS NULL THEN
13806                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13807 				aso_debug_pub.add('Quote_Security_Check(): C_Role NOTFOUND', 1, 'Y');
13808 				END IF;
13809                     X_Security_Flag := 'Y';
13810                 END IF;
13811             ELSE
13812                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
13813 			 aso_debug_pub.add('Quote_Security_Check(): ASO_ROLE_TYPE IS NULL', 1, 'Y');
13814 			 END IF;
13815                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13816                     FND_MESSAGE.set_name('ASO','ASO_ERR_ROLE_TYPE_NULL');
13817                     FND_MSG_PUB.ADD;
13818                     x_return_status := FND_API.G_RET_STS_ERROR;
13819                 END IF;
13820             END IF;
13821         END IF;
13822     END LOOP;
13823 
13824     IF aso_debug_pub.g_debug_flag = 'Y' THEN
13825     aso_debug_pub.add('Quote_Security_Check(): after main logic', 1, 'Y');
13826     aso_debug_pub.add('Quote_Security_Check(): End:   Resource_Id:   '||X_Resource_Id, 1, 'Y');
13827     aso_debug_pub.add('Quote_Security_Check(): End:   Security_Flag: '||X_Security_Flag, 1, 'Y');
13828     END IF;
13829 
13830 
13831     -- Standard call to get message count and if count is 1, get message info.
13832     FND_MSG_PUB.Count_And_Get
13833     (  p_count          =>   x_msg_count,
13834        p_data           =>   x_msg_data
13835     );
13836 
13837 End Quote_Security_Check;
13838 
13839 
13840 End ASO_QUOTE_HEADERS_PVT;