DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_QUOTE_LINES_PVT

Source


1 PACKAGE BODY ASO_QUOTE_LINES_PVT as
2 /* $Header: asovqlnb.pls 120.34.12010000.5 2010/05/02 17:33:32 akushwah ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_QUOTE_LINES_PVT
5 -- Purpose          :
6 -- History          :
7 --                              10/20/2002 hyang - 2633507 performance fix
8 --                 08/19/04  skulkarn - In new BC4J implementation, the primary key for
9 --                                    for all input parameters in Create_Quote, Update_Quote APIs
10 --                                    will be passed. In order to honor the primary key passed
11 --                                    the primary key will not be set to null before calling the
12 --                                    table handler. Hence, commented OUT NOCOPY /* file.sql.39 change */ the code where
13 --                                    primary key is being set to null before calling table handler.
14 -- NOTE             :
15 -- End of Comments
16 
17 
18 G_PKG_NAME CONSTANT VARCHAR2(30)  := 'ASO_QUOTE_LINES_PVT';
19 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovqlnb.pls';
20 
21 type number_tbl_type is table of number index by BINARY_INTEGER;
22 
23 -- this procedure is used to insert rows into the various tables. It is used by
24 -- copy quote to override the validations.
25 
26 -- can be modified to use table types instead of rec types for inserts.
27 
28 PROCEDURE Insert_Quote_Line_Rows(
29 	P_Qte_Line_Rec     IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type
30 			:= ASO_QUOTE_PUB.G_MISS_qte_line_REC,
31     	P_Control_REC      IN    ASO_QUOTE_PUB.Control_Rec_Type
32 			:= ASO_QUOTE_PUB.G_MISS_Control_Rec,
33     	P_Payment_Tbl      IN    ASO_QUOTE_PUB.Payment_Tbl_Type
34 			:= ASO_QUOTE_PUB.G_MISS_Payment_TBL,
35     	P_Price_Adj_Tbl    IN    ASO_QUOTE_PUB.Price_Adj_Tbl_Type
36 			:= ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL,
37     	P_Qte_Line_Dtl_tbl  IN    ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type
38 			:= ASO_QUOTE_PUB.G_MISS_qte_line_dtl_tbl,
39     	P_Shipment_Tbl     IN    ASO_QUOTE_PUB.Shipment_Tbl_Type
40 			:= ASO_QUOTE_PUB.G_MISS_shipment_TBL,
41     	P_Tax_Detail_Tbl  IN    ASO_QUOTE_PUB.Tax_Detail_Tbl_Type
42 			:= ASO_QUOTE_PUB.G_MISS_tax_detail_TBL,
43     	P_Freight_Charge_Tbl        IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type
44 		        := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL,
45     	P_Price_Attributes_Tbl    IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type
46 			 := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL,
47     	P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type
48 			 := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
49     	P_Line_Attribs_Ext_Tbl  IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type
50                          := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl,
51         P_Sales_Credit_Tbl        IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type
52                                   := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
53         P_Quote_Party_Tbl         IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type
54                                     := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
55     	X_Qte_Line_Rec     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
56     	X_Payment_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
57     	X_Price_Adj_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
58     	X_Qte_Line_Dtl_Tbl OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
59     	X_Shipment_Tbl     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
60     	X_Tax_Detail_Tbl   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
61     	X_Freight_Charge_Tbl   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
62     	X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type,
63     	X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
64     	X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type,
65         X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
66         X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
67     	X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
68     	X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
69     	X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
70     )
71 IS
72 
73    cursor get_quote_number( l_qte_header_id number) is
74      SELECT quote_number
75      FROM   aso_quote_headers_all
76      WHERE  quote_header_id = l_qte_header_id;
77 
78 
79     G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
80     G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
81     l_price_adj_rec		ASO_QUOTE_PUB.Price_Adj_Rec_Type;
82     l_price_adj_tbl		ASO_QUOTE_PUB.Price_Adj_TBL_Type;
83     l_shipment_rec		ASO_QUOTE_PUB.Shipment_Rec_Type;
84     l_freight_charge_rec	ASO_QUOTE_PUB.Freight_Charge_Rec_Type;
85     l_freight_charge_tbl        ASO_QUOTE_PUB.Freight_Charge_TBL_Type;
86     l_tax_detail_rec		ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
87     l_tax_detail_tbl            ASO_QUOTE_PUB.Tax_Detail_TBL_Type;
88     l_price_attributes_rec      ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
89     l_qte_line_dtl_rec          ASO_QUOTE_PUB.QTE_LINE_DTL_REC_TYPE;
90     l_payment_rec               ASO_QUOTE_PUB.Payment_rec_type;
91     l_payment_tbl               ASO_QUOTE_PUB.Payment_tbl_type;
92     l_line_attribs_rec          ASO_QUOTE_PUB.Line_Attribs_Ext_REC_type;
93     l_line_attribs_tbl          ASO_QUOTE_PUB.Line_Attribs_Ext_TBL_type;
94     l_price_adj_attr_tbl        ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
95 
96     l_line_rtlship_rec          ASO_QUOTE_PUB.LINE_RLTSHIP_Rec_Type ;
97     l_Sales_Credit_Tbl          ASO_QUOTE_PUB.Sales_Credit_Tbl_Type ;
98     l_Quote_Party_Tbl           ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
99     l_Sales_Credit_rec          ASO_QUOTE_PUB.Sales_Credit_rec_Type ;
100     l_Quote_Party_rec           ASO_QUOTE_PUB.Quote_Party_rec_Type;
101     l_qte_header_rec      ASO_QUOTE_PUB.Qte_Header_Rec_Type;
102     x_relationship_id           NUMBER;
103     my_message                  VARCHAR2(2000);
104     l_quote_number		NUMBER ;
105     lx_price_attr_tbl          ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
106 
107 
108 BEGIN
109 
110 	X_Return_Status   :=  FND_API.G_RET_STS_SUCCESS;
111 
112 -- make ids null or g_miss. this checking should be removed from table handlers
113 
114 
115 
116 --  creating a row in the aso_quote_lines_all table
117 -- set id to null because table handler will not generate a new value.
118 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
119 		ASO_DEBUG_PUB.add('organization_id is '||nvl(to_char(p_qte_line_rec.organization_id),'null') , 1, 'Y');
120 		aso_debug_pub.add('Insert_Quote_lines - Begin ', 1, 'Y');
121 	END IF;
122 
123 
124 
125 l_payment_tbl := p_payment_tbl;
126 l_price_adj_tbl := p_price_adj_tbl;
127 l_price_adj_attr_tbl := p_price_adj_attr_tbl;
128 l_freight_charge_tbl := p_freight_charge_tbl;
129 l_tax_detail_tbl     := p_tax_detail_tbl ;
130 l_line_attribs_tbl   := p_line_attribs_ext_tbl;
131 l_quote_party_tbl    := p_quote_party_tbl;
132 
133 x_qte_line_rec := p_qte_line_rec;
134 --x_qte_line_rec.QUOTE_LINE_ID := NULL;
135 
136 ASO_QUOTE_LINES_PKG.Insert_Row(
137           px_QUOTE_LINE_ID   => x_qte_line_rec.QUOTE_LINE_ID,
138           p_CREATION_DATE    => SYSDATE,
139           p_CREATED_BY       => G_USER_ID,
140           p_LAST_UPDATE_DATE => SYSDATE,
141           p_LAST_UPDATED_BY  => G_USER_ID,
142           p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
143           p_REQUEST_ID        => p_qte_line_rec.REQUEST_ID,
144           p_PROGRAM_APPLICATION_ID  => p_qte_line_rec.PROGRAM_APPLICATION_ID,
145           p_PROGRAM_ID              => p_qte_line_rec.PROGRAM_ID,
146           p_PROGRAM_UPDATE_DATE     => p_qte_line_rec.PROGRAM_UPDATE_DATE,
147           p_QUOTE_HEADER_ID         => p_qte_line_rec.QUOTE_HEADER_ID,
148           p_ORG_ID                  => p_qte_line_rec.ORG_ID        ,
149           p_LINE_CATEGORY_CODE      => p_qte_line_rec.LINE_CATEGORY_CODE ,
150           p_ITEM_TYPE_CODE          => p_qte_line_rec.ITEM_TYPE_CODE ,
151           p_LINE_NUMBER             => p_qte_line_rec.LINE_NUMBER,
152           p_START_DATE_ACTIVE       => trunc(p_qte_line_rec.START_DATE_ACTIVE),
153           p_END_DATE_ACTIVE         => trunc(p_qte_line_rec.END_DATE_ACTIVE)   ,
154           p_ORDER_LINE_TYPE_ID      => p_qte_line_rec.ORDER_LINE_TYPE_ID ,
155           p_INVOICE_TO_PARTY_SITE_ID=> p_qte_line_rec.INVOICE_TO_PARTY_SITE_ID,
156           p_INVOICE_TO_PARTY_ID     => p_qte_line_rec.INVOICE_TO_PARTY_ID  ,
157           p_INVOICE_TO_CUST_ACCOUNT_ID     => p_qte_line_rec.INVOICE_TO_CUST_ACCOUNT_ID  ,
158           p_ORGANIZATION_ID         => p_qte_line_rec.ORGANIZATION_ID,
159           p_INVENTORY_ITEM_ID       => p_qte_line_rec.INVENTORY_ITEM_ID ,
160           p_QUANTITY                => p_qte_line_rec.QUANTITY   ,
161           p_UOM_CODE                => p_qte_line_rec.UOM_CODE ,
162           p_MARKETING_SOURCE_CODE_ID=> p_qte_line_rec.marketing_source_code_id,
163           p_PRICE_LIST_ID           => p_qte_line_rec.PRICE_LIST_ID   ,
164           p_PRICE_LIST_LINE_ID      => p_qte_line_rec.PRICE_LIST_LINE_ID,
165           p_CURRENCY_CODE           => p_qte_line_rec.CURRENCY_CODE   ,
166           p_LINE_LIST_PRICE         => p_qte_line_rec.LINE_LIST_PRICE    ,
167           p_LINE_ADJUSTED_AMOUNT    => p_qte_line_rec.LINE_ADJUSTED_AMOUNT    ,
168           p_LINE_ADJUSTED_PERCENT   => p_qte_line_rec.LINE_ADJUSTED_PERCENT,
169           p_LINE_QUOTE_PRICE        => p_qte_line_rec.LINE_QUOTE_PRICE   ,
170           p_RELATED_ITEM_ID         => p_qte_line_rec.RELATED_ITEM_ID ,
171           p_ITEM_RELATIONSHIP_TYPE  => p_qte_line_rec.ITEM_RELATIONSHIP_TYPE,
172           p_ACCOUNTING_RULE_ID      => p_qte_line_rec.ACCOUNTING_RULE_ID,
173           p_INVOICING_RULE_ID       => p_qte_line_rec.INVOICING_RULE_ID,
174           p_SPLIT_SHIPMENT_FLAG     => p_qte_line_rec.SPLIT_SHIPMENT_FLAG   ,
175           p_BACKORDER_FLAG          => p_qte_line_rec.BACKORDER_FLAG   ,
176           p_MINISITE_ID             => p_qte_line_rec.MINISITE_ID,
177           p_SECTION_ID              => p_qte_line_rec.SECTION_ID,
178           p_ATTRIBUTE_CATEGORY      => p_qte_line_rec.ATTRIBUTE_CATEGORY,
179           p_ATTRIBUTE1     => p_qte_line_rec.ATTRIBUTE1,
180           p_ATTRIBUTE2     => p_qte_line_rec.ATTRIBUTE2,
181           p_ATTRIBUTE3     => p_qte_line_rec.ATTRIBUTE3,
182           p_ATTRIBUTE4     => p_qte_line_rec.ATTRIBUTE4,
183           p_ATTRIBUTE5     => p_qte_line_rec.ATTRIBUTE5,
184           p_ATTRIBUTE6     => p_qte_line_rec.ATTRIBUTE6,
185           p_ATTRIBUTE7     => p_qte_line_rec.ATTRIBUTE7,
186           p_ATTRIBUTE8     => p_qte_line_rec.ATTRIBUTE8,
187           p_ATTRIBUTE9     => p_qte_line_rec.ATTRIBUTE9,
188           p_ATTRIBUTE10    => p_qte_line_rec.ATTRIBUTE10,
189           p_ATTRIBUTE11    => p_qte_line_rec.ATTRIBUTE11,
190           p_ATTRIBUTE12    => p_qte_line_rec.ATTRIBUTE12,
191           p_ATTRIBUTE13    => p_qte_line_rec.ATTRIBUTE13,
192           p_ATTRIBUTE14    => p_qte_line_rec.ATTRIBUTE14,
193           p_ATTRIBUTE15    => p_qte_line_rec.ATTRIBUTE15,
194           p_ATTRIBUTE16  => p_qte_line_rec.ATTRIBUTE16,
195           p_ATTRIBUTE17  => p_qte_line_rec.ATTRIBUTE17,
196           p_ATTRIBUTE18  => p_qte_line_rec.ATTRIBUTE18,
197           p_ATTRIBUTE19  => p_qte_line_rec.ATTRIBUTE19,
198           p_ATTRIBUTE20  => p_qte_line_rec.ATTRIBUTE20,
199 		p_PRICED_PRICE_LIST_ID    => p_qte_line_rec.PRICED_PRICE_LIST_ID,
200           p_AGREEMENT_ID            => p_qte_line_rec.AGREEMENT_ID,
201           p_COMMITMENT_ID           => p_qte_line_rec.COMMITMENT_ID,
202           p_DISPLAY_ARITHMETIC_OPERATOR => p_qte_line_rec.DISPLAY_ARITHMETIC_OPERATOR,
203 		p_LINE_TYPE_SOURCE_FLAG => p_qte_line_rec.LINE_TYPE_SOURCE_FLAG,
204 		p_SERVICE_ITEM_FLAG     => p_qte_line_rec.SERVICE_ITEM_FLAG,
205 		p_SERVICEABLE_PRODUCT_FLAG => p_qte_line_rec.SERVICEABLE_PRODUCT_FLAG,
206 		p_INVOICE_TO_CUST_PARTY_ID => p_qte_line_rec.INVOICE_TO_CUST_PARTY_ID,
207 		P_Selling_Price_Change	   => p_qte_line_rec.Selling_Price_Change,
208 		P_Recalculate_flag	   => p_qte_line_rec.recalculate_flag,
209 		p_pricing_line_type_indicator	   => p_qte_line_rec.pricing_line_type_indicator,
210           p_END_CUSTOMER_PARTY_ID         =>  p_qte_line_rec.END_CUSTOMER_PARTY_ID,
211           p_END_CUSTOMER_CUST_PARTY_ID    =>  p_qte_line_rec.END_CUSTOMER_CUST_PARTY_ID,
212           p_END_CUSTOMER_PARTY_SITE_ID    =>  p_qte_line_rec.END_CUSTOMER_PARTY_SITE_ID,
213           p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  p_qte_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID,
214 		p_OBJECT_VERSION_NUMBER => p_qte_line_rec.OBJECT_VERSION_NUMBER,
215             p_CHARGE_PERIODICITY_CODE => p_qte_line_rec.CHARGE_PERIODICITY_CODE, -- Recurring charges Change
216           p_SHIP_MODEL_COMPLETE_FLAG => p_qte_line_rec.SHIP_MODEL_COMPLETE_FLAG,
217           p_LINE_PAYNOW_CHARGES => p_qte_line_rec.LINE_PAYNOW_CHARGES,
218 		p_LINE_PAYNOW_TAX => p_qte_line_rec.LINE_PAYNOW_TAX,
219 		p_LINE_PAYNOW_SUBTOTAL => p_qte_line_rec.LINE_PAYNOW_SUBTOTAL,
220 		p_PRICING_QUANTITY_UOM => p_qte_line_rec.PRICING_QUANTITY_UOM,
221 		p_PRICING_QUANTITY => p_qte_line_rec.PRICING_QUANTITY,
222           p_CONFIG_MODEL_TYPE => p_qte_line_rec.CONFIG_MODEL_TYPE
223 );
224 
225 
226 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
227 		aso_debug_pub.add('quote_lines ' || nvl(to_char(x_qte_line_rec.quote_line_id),'null'), 1, 'Y' );
228 		aso_debug_pub.add('Insert_Quote_lines - quote_line.insert_row ', 1, 'N');
229 	end if;
230 -- insert rows into the quote line details table
231 FOR i in 1..p_qte_line_dtl_tbl.count LOOP
232         l_qte_line_dtl_rec := p_qte_line_dtl_tbl(i);
233         l_qte_line_dtl_rec.quote_line_id := x_qte_line_rec.quote_line_id;
234         x_qte_line_dtl_tbl(i) := l_qte_line_dtl_rec;
235          -- BC4J Fix
236          --x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID := NULL;
237       ASO_QUOTE_LINE_DETAILS_PKG.Insert_Row(
238         px_QUOTE_LINE_DETAIL_ID  => x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID,
239         p_CREATION_DATE          => SYSDATE,
240         p_CREATED_BY             => G_USER_ID,
241         p_LAST_UPDATE_DATE       => SYSDATE,
242         p_LAST_UPDATED_BY        => G_USER_ID,
243         p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
244         p_REQUEST_ID             => l_qte_line_dtl_rec.REQUEST_ID,
245         p_PROGRAM_APPLICATION_ID =>l_qte_line_dtl_rec.PROGRAM_APPLICATION_ID,
246         p_PROGRAM_ID             => l_qte_line_dtl_rec.PROGRAM_ID,
247         p_PROGRAM_UPDATE_DATE    => l_qte_line_dtl_rec.PROGRAM_UPDATE_DATE,
248         p_QUOTE_LINE_ID          => l_qte_line_dtl_rec.QUOTE_LINE_ID,
249         p_CONFIG_HEADER_ID       => l_qte_line_dtl_rec.CONFIG_HEADER_ID,
250         p_CONFIG_REVISION_NUM    => l_qte_line_dtl_rec.CONFIG_REVISION_NUM,
251         p_COMPLETE_CONFIGURATION_FLAG
252                              => l_qte_line_dtl_rec.COMPLETE_CONFIGURATION_FLAG,
253         p_VALID_CONFIGURATION_FLAG
254                              => l_qte_line_dtl_rec.VALID_CONFIGURATION_FLAG,
255           p_COMPONENT_CODE   => l_qte_line_dtl_rec.COMPONENT_CODE,
256           p_SERVICE_COTERMINATE_FLAG
257                               => l_qte_line_dtl_rec.SERVICE_COTERMINATE_FLAG,
258           p_SERVICE_DURATION  => l_qte_line_dtl_rec.SERVICE_DURATION,
259           p_SERVICE_PERIOD    => l_qte_line_dtl_rec.SERVICE_PERIOD,
260           p_SERVICE_UNIT_SELLING_PERCENT
261                             => l_qte_line_dtl_rec.SERVICE_UNIT_SELLING_PERCENT,
262           p_SERVICE_UNIT_LIST_PERCENT
263                             => l_qte_line_dtl_rec.SERVICE_UNIT_LIST_PERCENT,
264           p_SERVICE_NUMBER  => l_qte_line_dtl_rec.SERVICE_NUMBER,
265           p_UNIT_PERCENT_BASE_PRICE
266                                 => l_qte_line_dtl_rec.UNIT_PERCENT_BASE_PRICE,
267           p_ATTRIBUTE_CATEGORY  => l_qte_line_dtl_rec.ATTRIBUTE_CATEGORY,
268           p_ATTRIBUTE1  => l_qte_line_dtl_rec.ATTRIBUTE1,
269           p_ATTRIBUTE2  => l_qte_line_dtl_rec.ATTRIBUTE2,
270           p_ATTRIBUTE3  => l_qte_line_dtl_rec.ATTRIBUTE3,
271           p_ATTRIBUTE4  => l_qte_line_dtl_rec.ATTRIBUTE4,
272           p_ATTRIBUTE5  => l_qte_line_dtl_rec.ATTRIBUTE5,
273           p_ATTRIBUTE6  => l_qte_line_dtl_rec.ATTRIBUTE6,
274           p_ATTRIBUTE7  => l_qte_line_dtl_rec.ATTRIBUTE7,
275           p_ATTRIBUTE8  => l_qte_line_dtl_rec.ATTRIBUTE8,
276           p_ATTRIBUTE9  => l_qte_line_dtl_rec.ATTRIBUTE9,
277           p_ATTRIBUTE10  => l_qte_line_dtl_rec.ATTRIBUTE10,
278           p_ATTRIBUTE11  => l_qte_line_dtl_rec.ATTRIBUTE11,
279           p_ATTRIBUTE12  => l_qte_line_dtl_rec.ATTRIBUTE12,
280           p_ATTRIBUTE13  => l_qte_line_dtl_rec.ATTRIBUTE13,
281           p_ATTRIBUTE14  => l_qte_line_dtl_rec.ATTRIBUTE14,
282           p_ATTRIBUTE15  => l_qte_line_dtl_rec.ATTRIBUTE15,
283           p_ATTRIBUTE16  => l_qte_line_dtl_rec.ATTRIBUTE16,
284           p_ATTRIBUTE17  => l_qte_line_dtl_rec.ATTRIBUTE17,
285           p_ATTRIBUTE18  => l_qte_line_dtl_rec.ATTRIBUTE18,
286           p_ATTRIBUTE19  => l_qte_line_dtl_rec.ATTRIBUTE19,
287           p_ATTRIBUTE20  => l_qte_line_dtl_rec.ATTRIBUTE20,
288 		p_SERVICE_REF_TYPE_CODE  => l_qte_line_dtl_rec.SERVICE_REF_TYPE_CODE,
289           p_SERVICE_REF_ORDER_NUMBER
290                                 => l_qte_line_dtl_rec.SERVICE_REF_ORDER_NUMBER,
291           p_SERVICE_REF_LINE_NUMBER
292                                 => l_qte_line_dtl_rec.SERVICE_REF_LINE_NUMBER,
293           p_SERVICE_REF_LINE_ID    => l_qte_line_dtl_rec.SERVICE_REF_LINE_ID,
294           p_SERVICE_REF_SYSTEM_ID  => l_qte_line_dtl_rec.SERVICE_REF_SYSTEM_ID,
295           p_SERVICE_REF_OPTION_NUMB
296                                  => l_qte_line_dtl_rec.SERVICE_REF_OPTION_NUMB,
297           p_SERVICE_REF_SHIPMENT_NUMB
298                                => l_qte_line_dtl_rec.SERVICE_REF_SHIPMENT_NUMB,
299           p_RETURN_REF_TYPE    => l_qte_line_dtl_rec.RETURN_REF_TYPE,
300           p_RETURN_REF_HEADER_ID  => l_qte_line_dtl_rec.RETURN_REF_HEADER_ID,
301           p_RETURN_REF_LINE_ID    => l_qte_line_dtl_rec.RETURN_REF_LINE_ID,
302           p_RETURN_ATTRIBUTE1     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE1,
303           p_RETURN_ATTRIBUTE2     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE2,
304           p_RETURN_ATTRIBUTE3     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE3,
305           p_RETURN_ATTRIBUTE4     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE4,
306           p_RETURN_ATTRIBUTE5     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE5,
307           p_RETURN_ATTRIBUTE6     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE6,
308           p_RETURN_ATTRIBUTE7     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE7,
309           p_RETURN_ATTRIBUTE8     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE8,
310           p_RETURN_ATTRIBUTE9     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE9,
311           p_RETURN_ATTRIBUTE10    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE10,
312           p_RETURN_ATTRIBUTE11    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE11,
313           p_RETURN_ATTRIBUTE15    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE15,
314           p_RETURN_ATTRIBUTE12    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE12,
315           p_RETURN_ATTRIBUTE13    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE13,
316           p_RETURN_ATTRIBUTE14    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE14,
317           p_RETURN_REASON_CODE    => l_qte_line_dtl_rec.RETURN_REASON_CODE,
318           p_CONFIG_ITEM_ID        => l_qte_line_dtl_rec.CONFIG_ITEM_ID,
319           p_REF_TYPE_CODE         => l_qte_line_dtl_rec.REF_TYPE_CODE,
320           p_REF_LINE_ID           => l_qte_line_dtl_rec.REF_LINE_ID,
321 		p_INSTANCE_ID           => l_qte_line_dtl_rec.INSTANCE_ID,
322 		p_BOM_SORT_ORDER        => l_qte_line_dtl_rec.BOM_SORT_ORDER,
323 	     p_CONFIG_DELTA          => l_qte_line_dtl_rec.CONFIG_DELTA,
324 	     p_CONFIG_INSTANCE_NAME  => l_qte_line_dtl_rec.CONFIG_INSTANCE_NAME,
325 		P_OBJECT_VERSION_NUMBER => l_qte_line_dtl_rec.OBJECT_VERSION_NUMBER,
326 	     p_top_model_line_id     => l_qte_line_dtl_rec.top_model_line_id,
327 		p_ato_line_id           => l_qte_line_dtl_rec.ato_line_id,
328 		p_component_sequence_id => l_qte_line_dtl_rec.component_sequence_id
329 		);
330 END LOOP;
331 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
332 		aso_debug_pub.add('Insert_Quote_lines - quote_line_details.insert_row '|| x_return_status, 1, 'N');
333 	end if;
334 
335 -- if service is immediate create a relationship line
336 
337 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
338 		aso_debug_pub.add('service item  is ' || x_return_status, 1, 'Y');
339 	end if;
340 
341        IF l_qte_line_dtl_rec.service_ref_type_code = 'QUOTE' THEN
342 
343               l_line_rtlship_rec.operation_code := 'CREATE';
344               l_line_rtlship_rec.quote_line_id
345 			:= l_qte_line_dtl_rec.SERVICE_REF_LINE_ID;
346               l_line_rtlship_rec.related_quote_line_id
347 			:= x_qte_line_rec.quote_line_id;
348               l_line_rtlship_rec.relationship_type_code := 'SERVICE';
349 	      l_line_rtlship_rec.reciprocal_flag   := FND_API.G_FALSE;
350 
351             ASO_LINE_RLTSHIP_PVT.Create_line_rltship(
352                 P_Api_Version_Number   => 1.0,
353     		P_LINE_RLTSHIP_Rec     => l_line_rtlship_rec,
354     		X_LINE_RELATIONSHIP_ID => x_relationship_id,
355     		X_Return_Status       => x_return_status,
356     		X_Msg_Count           => x_msg_count,
357     		X_Msg_Data            => x_msg_data
358             );
359 
360 
361        END IF;
362 
363 
364 
365  -- check for duplicate promotions, see bug 4521799
366   IF aso_debug_pub.g_debug_flag = 'Y' THEN
367      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
368   END IF;
369 
370   ASO_VALIDATE_PVT.Validate_Promotion (
371      P_Api_Version_Number       => 1.0,
372      P_Init_Msg_List            => FND_API.G_FALSE,
373      P_Commit                   => FND_API.G_FALSE,
374      p_price_attr_tbl           => p_price_attributes_tbl,
375      x_price_attr_tbl           => lx_price_attr_tbl,
376      x_return_status            => x_return_status,
377      x_msg_count                => x_msg_count,
378      x_msg_data                 => x_msg_data);
379 
380    IF aso_debug_pub.g_debug_flag = 'Y' THEN
381       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
382       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
383    END IF;
384 
385    if x_return_status <> fnd_api.g_ret_sts_success then
386       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
387          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
388       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
389          RAISE FND_API.G_EXC_ERROR;
390       ELSE
391          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
392       END IF;
393    end if;
394 
395 
396  -- end of check for duplicate promotions
397 
398 
399 -- inserting rows into the aso_price_attributes
400 
401 FOR i in 1..p_price_attributes_tbl.count LOOP
402 
403      l_price_attributes_rec := p_price_attributes_tbl(i);
404      l_price_attributes_rec.quote_line_id := x_qte_line_rec.quote_line_id;
405      l_price_attributes_rec.quote_header_id := p_qte_line_rec.quote_header_id;
406      x_price_attributes_tbl(i) := l_price_attributes_rec;
407 -- BC4J Fix
408 --x_price_attributes_tbl(i).price_attribute_id := NULL;
409 ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
410           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
411           p_CREATION_DATE         => SYSDATE,
412           p_CREATED_BY            => G_USER_ID,
413           p_LAST_UPDATE_DATE      => SYSDATE,
414           p_LAST_UPDATED_BY       => G_USER_ID,
415           p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
416           p_REQUEST_ID            => p_qte_line_rec.REQUEST_ID,
417           p_PROGRAM_APPLICATION_ID  => p_qte_line_rec.PROGRAM_APPLICATION_ID,
418           p_PROGRAM_ID           => p_qte_line_rec.PROGRAM_ID,
419           p_PROGRAM_UPDATE_DATE  => p_qte_line_rec.PROGRAM_UPDATE_DATE,
420           p_QUOTE_HEADER_ID      => p_qte_line_rec.QUOTE_HEADER_ID,
421           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
422           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
423           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
424           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
425           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
426           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
427           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
428           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
429           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
430           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
431           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
432           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
433         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
434         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
435         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
436         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
437         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
438         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
439         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
440         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
441         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
442         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
443         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
444         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
445         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
446         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
447         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
448         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
449         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
450         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
451         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
452         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
453         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
454         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
455         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
456         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
457         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
458         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
459         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
460         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
461         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
462         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
463         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
464         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
465         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
466         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
467         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
468         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
469         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
470         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
471         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
472         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
473         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
474         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
475         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
476         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
477         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
478         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
479         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
480         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
481         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
482         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
483         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
484         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
485         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
486         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
487         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
488         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
489         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
490         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
491         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
492         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
493         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
494         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
495         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
496         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
497         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
498         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
499         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
500         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
501         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
502         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
503         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
504         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
505         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
506         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
507         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
508         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
509         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
510         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
511         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
512         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
513         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
514         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
515         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
516         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
517         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
518         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
519         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
520         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
521         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
522         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
523         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
524           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
525           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
526           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
527           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
528           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
529           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
530           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
531           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
532           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
533           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
534           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
535           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
536           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
537           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
538           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
539           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
540 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
541           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
542           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
543           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
544           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
545 		p_OBJECT_VERSION_NUMBER => l_price_attributes_rec.OBJECT_VERSION_NUMBER
546 );
547 
548 END LOOP;
549 
550 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
551 		aso_debug_pub.add('Insert_Quote_lines - price_attr.insert_row ', 1, 'N');
552 	end if;
553 
554 --- insert into salescredit table
555 
556 FOR i in 1..p_Sales_Credit_Tbl.count LOOP
557 
558      l_Sales_Credit_rec := p_sales_credit_tbl(i);
559      l_sales_credit_rec.quote_line_id := x_qte_line_rec.quote_line_id;
560      l_sales_credit_rec.quote_header_id := p_qte_line_rec.quote_header_id;
561      x_sales_credit_tbl(i) := l_sales_credit_rec;
562 -- BC4J Fix
563 --x_sales_credit_tbl(i).sales_credit_id := NULL;
564        ASO_SALES_CREDITS_PKG.Insert_Row(
565           p_CREATION_DATE  => SYSDATE,
566           p_CREATED_BY  => G_USER_ID,
567           p_LAST_UPDATED_BY  => G_USER_ID,
568           p_LAST_UPDATE_DATE  => SYSDATE,
569           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
570           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
571           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
572           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
573           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
574           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
575           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
576           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
577           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
578           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
579           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
580           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
581           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
582 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
583           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
584           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
585           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
586           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
587           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
588           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
589           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
590           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
591           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
592           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
593           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
594           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
595           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
596           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
597           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
598           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
599           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
600           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
601           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
602           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
603           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
604 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
605           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
606           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
607 
608 END LOOP;
609 
610 -- insert into aso_price_adjustments
611 
612  --  l_price_adj_attr_tbl  := p_price_adj_attr_tbl;
613 
614 
615 
616     FOR i IN 1..P_Shipment_Tbl.count LOOP
617 
618 	    l_shipment_rec                            :=  p_shipment_tbl(i);
619          l_shipment_rec.quote_line_id              :=  x_qte_line_rec.quote_line_id;
620          l_shipment_rec.quote_header_id            :=  p_qte_line_rec.quote_header_id;
621          x_shipment_tbl(i)                         :=  l_shipment_rec;
622          -- BC4J Fix
623     	   x_shipment_tbl(i).shipment_id             := p_shipment_tbl(i).shipment_id;
624 	   -- x_shipment_tbl(i).shipment_id             :=  null;
625          l_shipment_rec.ship_method_code_from      :=  l_shipment_rec.ship_method_code;
626          l_shipment_rec.freight_terms_code_from    :=  l_shipment_rec.freight_terms_code;
627          x_shipment_tbl(i).ship_method_code_from   :=  l_shipment_rec.ship_method_code_from;
628          x_shipment_tbl(i).freight_terms_code_from :=  l_shipment_rec.freight_terms_code_from;
629 
630          IF aso_debug_pub.g_debug_flag = 'Y' THEN
631            aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows Quote Line- p_shipment_tbl(1).ship_method_code'||p_shipment_tbl(1).ship_method_code, 1, 'Y');
632            aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows Quote Line- p_shipment_tbl(1).freight_terms_code'||p_shipment_tbl(1).freight_terms_code, 1, 'Y');
633          END IF;
634 
635 	ASO_SHIPMENTS_PKG.Insert_Row(
636             px_SHIPMENT_ID            => x_shipment_tbl(i).SHIPMENT_ID,
637             p_CREATION_DATE  	      => SYSDATE,
638             p_CREATED_BY  	      => G_USER_ID,
639             p_LAST_UPDATE_DATE        => SYSDATE,
640             p_LAST_UPDATED_BY         => G_USER_ID,
641             p_LAST_UPDATE_LOGIN       => G_LOGIN_ID,
642             p_REQUEST_ID  	      => l_shipment_rec.REQUEST_ID,
643             p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
644             p_PROGRAM_ID  	      => l_shipment_rec.PROGRAM_ID,
645             p_PROGRAM_UPDATE_DATE     => l_shipment_rec.PROGRAM_UPDATE_DATE,
646             p_QUOTE_HEADER_ID  	      => l_shipment_rec.QUOTE_HEADER_ID,
647             p_QUOTE_LINE_ID  	      => l_shipment_rec.QUOTE_LINE_ID,
648             p_PROMISE_DATE            => l_shipment_rec.PROMISE_DATE,
649             p_REQUEST_DATE            => l_shipment_rec.REQUEST_DATE,
650             p_SCHEDULE_SHIP_DATE      => l_shipment_rec.SCHEDULE_SHIP_DATE,
651             p_SHIP_TO_PARTY_SITE_ID   => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
652             p_SHIP_TO_PARTY_ID        => l_shipment_rec.SHIP_TO_PARTY_ID,
653             p_SHIP_TO_CUST_ACCOUNT_ID     => l_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID  ,
654             p_SHIP_PARTIAL_FLAG       => l_shipment_rec.SHIP_PARTIAL_FLAG,
655             p_SHIP_SET_ID             => l_shipment_rec.SHIP_SET_ID,
656             p_SHIP_METHOD_CODE        => l_shipment_rec.SHIP_METHOD_CODE,
657             p_FREIGHT_TERMS_CODE      => l_shipment_rec.FREIGHT_TERMS_CODE,
658             p_FREIGHT_CARRIER_CODE    => l_shipment_rec.FREIGHT_CARRIER_CODE,
659             p_FOB_CODE                => l_shipment_rec.FOB_CODE,
660             p_SHIPPING_INSTRUCTIONS   => l_shipment_rec.SHIPPING_INSTRUCTIONS,
661             p_PACKING_INSTRUCTIONS    => l_shipment_rec.PACKING_INSTRUCTIONS,
662             p_SHIPMENT_PRIORITY_CODE  => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
663             p_SHIP_QUOTE_PRICE        => l_shipment_rec.SHIP_QUOTE_PRICE,
664             p_QUANTITY                => l_shipment_rec.QUANTITY,
665             p_RESERVED_QUANTITY       => l_shipment_rec.RESERVED_QUANTITY,
666             p_RESERVATION_ID          => l_shipment_rec.RESERVATION_ID,
667             p_ORDER_LINE_ID           => l_shipment_rec.ORDER_LINE_ID,
668             p_ATTRIBUTE_CATEGORY      => l_shipment_rec.ATTRIBUTE_CATEGORY,
669             p_ATTRIBUTE1              => l_shipment_rec.ATTRIBUTE1,
670             p_ATTRIBUTE2 	      => l_shipment_rec.ATTRIBUTE2,
671             p_ATTRIBUTE3 	      => l_shipment_rec.ATTRIBUTE3,
672             p_ATTRIBUTE4 	      => l_shipment_rec.ATTRIBUTE4,
673             p_ATTRIBUTE5 	      => l_shipment_rec.ATTRIBUTE5,
674             p_ATTRIBUTE6 	      => l_shipment_rec.ATTRIBUTE6,
675             p_ATTRIBUTE7 	      => l_shipment_rec.ATTRIBUTE7,
676             p_ATTRIBUTE8 	      => l_shipment_rec.ATTRIBUTE8,
677             p_ATTRIBUTE9  	      => l_shipment_rec.ATTRIBUTE9,
678             p_ATTRIBUTE10  	      => l_shipment_rec.ATTRIBUTE10,
679             p_ATTRIBUTE11             => l_shipment_rec.ATTRIBUTE11,
680             p_ATTRIBUTE12  	      => l_shipment_rec.ATTRIBUTE12,
681             p_ATTRIBUTE13  	      => l_shipment_rec.ATTRIBUTE13,
682             p_ATTRIBUTE14 	      => l_shipment_rec.ATTRIBUTE14,
683             p_ATTRIBUTE15  	      => l_shipment_rec.ATTRIBUTE15,
684             p_ATTRIBUTE16  => l_shipment_rec.ATTRIBUTE16,
685             p_ATTRIBUTE17  => l_shipment_rec.ATTRIBUTE17,
686             p_ATTRIBUTE18  => l_shipment_rec.ATTRIBUTE18,
687             p_ATTRIBUTE19  => l_shipment_rec.ATTRIBUTE19,
688             p_ATTRIBUTE20  => l_shipment_rec.ATTRIBUTE20,
689 		  p_SHIP_FROM_ORG_ID      => l_shipment_rec.SHIP_FROM_ORG_ID,
690 		  p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
691             p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
692             p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
693 		  p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
694 	       p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
695 		  p_DEMAND_CLASS_CODE => l_shipment_rec.DEMAND_CLASS_CODE
696 		);
697 
698          FOR j IN 1..P_Freight_Charge_Tbl.count LOOP
699              IF l_freight_charge_tbl(j).shipment_index = i THEN
700                 l_freight_charge_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
701              END IF;
702 
703           END LOOP;
704 
705           FOR j in 1..P_Tax_Detail_Tbl.count LOOP
706               IF l_tax_detail_tbl(j).shipment_index = i THEN
707                  l_tax_detail_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
708              END IF;
709           END LOOP;
710 
711           FOR j in 1..l_line_attribs_Tbl.count LOOP
712               IF l_line_attribs_tbl(j).shipment_index = i THEN
713                  l_line_attribs_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
714              END IF;
715 
716          END LOOP;
717 
718            FOR j in 1..P_Payment_Tbl.count LOOP
719               IF l_payment_tbl(j).shipment_index = i THEN
720                  l_payment_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
721              END IF;
722 
723          END LOOP;
724 
725            FOR j in 1..P_Price_Adj_Tbl.count LOOP
726               IF l_Price_Adj_tbl(j).shipment_index = i THEN
727                  l_Price_Adj_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
728              END IF;
729 
730          END LOOP;
731 
732             FOR j in 1..P_Quote_Party_Tbl.count LOOP
733               IF l_quote_party_tbl(j).shipment_index = i THEN
734                  l_quote_party_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
735              END IF;
736             END LOOP;
737 
738 
739     END LOOP;
740 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
741 		aso_debug_pub.add('Insert_Quote_lines - shipments.insert_row ', 1, 'N');
742 	end if;
743 
744     FOR i IN 1..l_Freight_Charge_Tbl.count LOOP
745 	l_freight_charge_rec := l_freight_charge_tbl(i);
746         l_freight_charge_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
747         x_freight_charge_tbl(i) := l_freight_charge_rec;
748         -- BC4J Fix
749 	   --x_FREIGHT_CHARGE_tbl(i).freight_charge_id := NULL;
750 
751 -- insert rows into aso_freight_charges
752 
753         ASO_FREIGHT_CHARGES_PKG.Insert_Row(
754             px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
755             p_CREATION_DATE       => SYSDATE,
756             p_CREATED_BY          => G_USER_ID,
757             p_LAST_UPDATE_DATE    => SYSDATE,
758             p_LAST_UPDATED_BY     => G_USER_ID,
759             p_LAST_UPDATE_LOGIN   => G_LOGIN_ID,
760             p_REQUEST_ID          => l_freight_charge_rec.REQUEST_ID,
761             p_PROGRAM_APPLICATION_ID
762                                 => l_freight_charge_rec.PROGRAM_APPLICATION_ID,
763             p_PROGRAM_ID           => l_freight_charge_rec.PROGRAM_ID,
764             p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
765             p_QUOTE_SHIPMENT_ID    => l_freight_charge_rec.QUOTE_SHIPMENT_ID,
766             p_FREIGHT_CHARGE_TYPE_ID
767                                 => l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
768             p_CHARGE_AMOUNT        => l_freight_charge_rec.CHARGE_AMOUNT,
769             p_ATTRIBUTE_CATEGORY   => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
770             p_ATTRIBUTE1   => l_freight_charge_rec.ATTRIBUTE1,
771             p_ATTRIBUTE2   => l_freight_charge_rec.ATTRIBUTE2,
772             p_ATTRIBUTE3   => l_freight_charge_rec.ATTRIBUTE3,
773             p_ATTRIBUTE4   => l_freight_charge_rec.ATTRIBUTE4,
774             p_ATTRIBUTE5   => l_freight_charge_rec.ATTRIBUTE5,
775             p_ATTRIBUTE6   => l_freight_charge_rec.ATTRIBUTE6,
776             p_ATTRIBUTE7   => l_freight_charge_rec.ATTRIBUTE7,
777             p_ATTRIBUTE8   => l_freight_charge_rec.ATTRIBUTE8,
778             p_ATTRIBUTE9   => l_freight_charge_rec.ATTRIBUTE9,
779             p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
780             p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
781             p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
782             p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
783             p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
784             p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
785 
786     END LOOP;
787 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
788 		aso_debug_pub.add('Insert_Quote_lines - after frieght.insert_row '||x_return_status, 1, 'N');
789 	end if;
790 
791     FOR i IN 1..P_tax_detail_Tbl.count LOOP
792 	l_tax_detail_rec := l_tax_detail_tbl(i);
793         l_tax_detail_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
794         l_tax_detail_rec.quote_header_id := p_qte_line_rec.quote_header_id;
795          x_tax_detail_tbl(i) := l_tax_detail_rec;
796          -- BC4J Fix
797 	    --x_tax_detail_tbl(i).TAX_DETAIL_ID := NULL;
798 
799         ASO_TAX_DETAILS_PKG.Insert_Row(
800             px_TAX_DETAIL_ID 	 => x_tax_detail_tbl(i).TAX_DETAIL_ID,
801             p_CREATION_DATE 	 => SYSDATE,
802             p_CREATED_BY 	 => G_USER_ID,
803             p_LAST_UPDATE_DATE 	 => SYSDATE,
804             p_LAST_UPDATED_BY	 => G_USER_ID,
805             p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
806             p_REQUEST_ID 	 => l_tax_detail_rec.REQUEST_ID,
807             p_PROGRAM_APPLICATION_ID =>l_tax_detail_rec.PROGRAM_APPLICATION_ID,
808             p_PROGRAM_ID 	 => l_tax_detail_rec.PROGRAM_ID,
809             p_PROGRAM_UPDATE_DATE=> l_tax_detail_rec.PROGRAM_UPDATE_DATE,
810             p_QUOTE_HEADER_ID 	 => l_tax_detail_rec.QUOTE_HEADER_ID,
811             p_QUOTE_LINE_ID 	 => l_tax_detail_rec.QUOTE_LINE_ID,
812             p_QUOTE_SHIPMENT_ID  => l_tax_detail_rec.QUOTE_SHIPMENT_ID,
813             p_ORIG_TAX_CODE 	 => l_tax_detail_rec.ORIG_TAX_CODE,
814             p_TAX_CODE  	 => l_tax_detail_rec.TAX_CODE,
815             p_TAX_RATE 		 => l_tax_detail_rec.TAX_RATE,
816             p_TAX_DATE 		 => l_tax_detail_rec.TAX_DATE,
817             p_TAX_AMOUNT 	 => l_tax_detail_rec.TAX_AMOUNT,
818             p_TAX_EXEMPT_FLAG    => l_tax_detail_rec.TAX_EXEMPT_FLAG,
819             p_TAX_EXEMPT_NUMBER  => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
820             p_TAX_EXEMPT_REASON_CODE =>l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
821             p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
822             p_ATTRIBUTE1  => l_tax_detail_rec.ATTRIBUTE1,
823             p_ATTRIBUTE2  => l_tax_detail_rec.ATTRIBUTE2,
824             p_ATTRIBUTE3  => l_tax_detail_rec.ATTRIBUTE3,
825             p_ATTRIBUTE4  => l_tax_detail_rec.ATTRIBUTE4,
826             p_ATTRIBUTE5  => l_tax_detail_rec.ATTRIBUTE5,
827             p_ATTRIBUTE6  => l_tax_detail_rec.ATTRIBUTE6,
828             p_ATTRIBUTE7  => l_tax_detail_rec.ATTRIBUTE7,
829             p_ATTRIBUTE8  => l_tax_detail_rec.ATTRIBUTE8,
830             p_ATTRIBUTE9  => l_tax_detail_rec.ATTRIBUTE9,
831             p_ATTRIBUTE10  => l_tax_detail_rec.ATTRIBUTE10,
832             p_ATTRIBUTE11  => l_tax_detail_rec.ATTRIBUTE11,
833             p_ATTRIBUTE12  => l_tax_detail_rec.ATTRIBUTE12,
834             p_ATTRIBUTE13  => l_tax_detail_rec.ATTRIBUTE13,
835             p_ATTRIBUTE14  => l_tax_detail_rec.ATTRIBUTE14,
836             p_ATTRIBUTE15  => l_tax_detail_rec.ATTRIBUTE15,
837             p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
838             p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
839             p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
840             p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
841             p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
842 		  p_TAX_INCLUSIVE_FLAG  => l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
843 		  p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
844 		  p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
845 		  );
846     END LOOP;
847 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
848 		aso_debug_pub.add('Insert_Quote_lines - after tax_details.insert_row '|| x_return_status, 1, 'N');
849 	end if;
850 
851        FOR i IN 1..l_Price_Adj_Tbl.count LOOP
852 	l_price_adj_rec := l_price_adj_tbl(i);
853         l_price_adj_rec.quote_line_id := x_qte_line_rec.quote_line_id;
854         l_price_adj_rec.quote_header_id := p_qte_line_rec.quote_header_id;
855         x_price_adj_tbl(i) := l_price_adj_rec;
856 -- BC4J Fix
857 --x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
858         ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
859             px_PRICE_ADJUSTMENT_ID   => x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID,
860             p_CREATION_DATE           => SYSDATE,
861             p_CREATED_BY              => G_USER_ID,
862             p_LAST_UPDATE_DATE        => SYSDATE,
863             p_LAST_UPDATED_BY         => G_USER_ID,
864             p_LAST_UPDATE_LOGIN       => G_LOGIN_ID,
865             p_PROGRAM_APPLICATION_ID  =>l_price_adj_rec.PROGRAM_APPLICATION_ID,
866             p_PROGRAM_ID              => l_price_adj_rec.PROGRAM_ID,
867             p_PROGRAM_UPDATE_DATE     => l_price_adj_rec.PROGRAM_UPDATE_DATE,
868             p_REQUEST_ID              => l_price_adj_rec.REQUEST_ID,
869             p_QUOTE_HEADER_ID         => l_price_adj_rec.QUOTE_HEADER_ID,
870             p_QUOTE_LINE_ID           => l_price_adj_rec.QUOTE_LINE_ID,
871             p_QUOTE_SHIPMENT_ID       => l_price_adj_rec.QUOTE_SHIPMENT_ID,
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
875                                => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
876             p_MODIFIER_MECHANISM_TYPE_CODE
877                                => l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
878             p_MODIFIED_FROM         => l_price_adj_rec.MODIFIED_FROM,
879             p_MODIFIED_TO           => l_price_adj_rec.MODIFIED_TO,
880             p_OPERAND               => l_price_adj_rec.OPERAND,
881             p_ARITHMETIC_OPERATOR   => l_price_adj_rec.ARITHMETIC_OPERATOR,
882             p_AUTOMATIC_FLAG        => l_price_adj_rec.AUTOMATIC_FLAG,
883             p_UPDATE_ALLOWABLE_FLAG => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
884             p_UPDATED_FLAG          => l_price_adj_rec.UPDATED_FLAG,
885             p_APPLIED_FLAG          => l_price_adj_rec.APPLIED_FLAG,
886             p_ON_INVOICE_FLAG       => l_price_adj_rec.ON_INVOICE_FLAG,
887             p_PRICING_PHASE_ID      => l_price_adj_rec.PRICING_PHASE_ID,
888             p_ATTRIBUTE_CATEGORY    => l_price_adj_rec.ATTRIBUTE_CATEGORY,
889             p_ATTRIBUTE1            => l_price_adj_rec.ATTRIBUTE1,
890             p_ATTRIBUTE2  	    => l_price_adj_rec.ATTRIBUTE2,
891             p_ATTRIBUTE3  	    => l_price_adj_rec.ATTRIBUTE3,
892             p_ATTRIBUTE4            => l_price_adj_rec.ATTRIBUTE4,
893             p_ATTRIBUTE5            => l_price_adj_rec.ATTRIBUTE5,
894             p_ATTRIBUTE6            => l_price_adj_rec.ATTRIBUTE6,
895             p_ATTRIBUTE7            => l_price_adj_rec.ATTRIBUTE7,
896             p_ATTRIBUTE8            => l_price_adj_rec.ATTRIBUTE8,
897             p_ATTRIBUTE9            => l_price_adj_rec.ATTRIBUTE9,
898             p_ATTRIBUTE10           => l_price_adj_rec.ATTRIBUTE10,
899             p_ATTRIBUTE11           => l_price_adj_rec.ATTRIBUTE11,
900             p_ATTRIBUTE12           => l_price_adj_rec.ATTRIBUTE12,
901             p_ATTRIBUTE13           => l_price_adj_rec.ATTRIBUTE13,
902             p_ATTRIBUTE14           => l_price_adj_rec.ATTRIBUTE14,
903             p_ATTRIBUTE15           => l_price_adj_rec.ATTRIBUTE15,
904             p_ATTRIBUTE16  =>  l_price_adj_rec.ATTRIBUTE16,
905             p_ATTRIBUTE17  =>  l_price_adj_rec.ATTRIBUTE17,
906             p_ATTRIBUTE18  =>  l_price_adj_rec.ATTRIBUTE18,
907             p_ATTRIBUTE19  =>  l_price_adj_rec.ATTRIBUTE19,
908             p_ATTRIBUTE20  =>  l_price_adj_rec.ATTRIBUTE20,
909 		  p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
910           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
911           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
912           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
913           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
914           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
915           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
916           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
917           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
918           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
919           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
920           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
921           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
922           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
923           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
924           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
925           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
926           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
927           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
928           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
929           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
930           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
931           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
932           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
933           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
934           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
935           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
936           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
937           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
938           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
939           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
940           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
941           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
942           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
943           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
944           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
945           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
946           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
947           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
948           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
949           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
950           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
951 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
952 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
953 	     p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
954 		);
955 
956    FOR j in 1..l_price_adj_attr_tbl.count LOOP
957      IF l_price_adj_attr_tbl(j).price_adj_index = i THEN
958         l_price_adj_attr_tbl(j).price_adjustment_id
959                      := x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID;
960      END IF;
961    END LOOP;
962 
963  END LOOP;
964 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
965   		aso_debug_pub.add('Insert_Quote_lines - after price_adj.insert_row ', 1, 'N');
966 	end if;
967 
968 
969    x_price_adj_attr_tbl := l_price_adj_attr_tbl;
970 
971    FOR i in 1..l_price_adj_attr_tbl.count LOOP
972      -- BC4J Fix
973 	--x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := NULL;
974     ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
975           px_PRICE_ADJ_ATTRIB_ID
976 			=> x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
977           p_CREATION_DATE      => SYSDATE,
978           p_CREATED_BY         => G_USER_ID,
979           p_LAST_UPDATE_DATE   => SYSDATE,
980           p_LAST_UPDATED_BY    => G_USER_ID,
981           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
982           p_PROGRAM_APPLICATION_ID
983 			=>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
984           p_PROGRAM_ID  => l_price_adj_attr_tbl(i).PROGRAM_ID,
985           p_PROGRAM_UPDATE_DATE =>l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
986           p_REQUEST_ID  	=> l_price_adj_attr_tbl(i).REQUEST_ID,
987           p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
988           p_PRICING_CONTEXT     => l_price_adj_attr_tbl(i).PRICING_CONTEXT,
989           p_PRICING_ATTRIBUTE   => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
990           p_PRICING_ATTR_VALUE_FROM
991 			   => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
992           p_PRICING_ATTR_VALUE_TO
993                            => l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
994           p_COMPARISON_OPERATOR
995                            => l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
996           p_FLEX_TITLE     => l_price_adj_attr_tbl(i).FLEX_TITLE,
997 		P_OBJECT_VERSION_NUMBER => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER
998 		);
999 
1000 END LOOP;
1001 
1002 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
1003 		aso_debug_pub.add('Insert_Quote_lines - price_adj_attr.insert_row ', 1, 'N');
1004 	end if;
1005 
1006 
1007     FOR i IN 1..l_Payment_Tbl.count LOOP
1008 
1009         l_payment_rec                      := l_payment_tbl(i);
1010         l_payment_rec.quote_line_id        := x_qte_line_rec.quote_line_id;
1011         l_payment_rec.quote_header_id      := p_qte_line_rec.quote_header_id;
1012         x_payment_tbl(i)                   := l_payment_rec;
1013         l_payment_rec.payment_term_id_from := l_payment_tbl(i).payment_term_id;
1014 
1015         IF aso_debug_pub.g_debug_flag = 'Y' THEN
1016            aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows l_payment_tbl(i).payment_term_id'||l_payment_tbl(i).payment_term_id, 1, 'Y');
1017            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');
1018         END IF;
1019          -- BC4J Fix
1020         --x_payment_tbl(i).PAYMENT_ID           := NULL;
1021         x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
1022 
1023      -- Suyog Payments Changes
1024 
1025            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1026                aso_debug_pub.add('Insert_Quote_Line_Rows: Before  call to create_payment_row ', 1, 'Y');
1027            END IF;
1028 
1029          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
1030                                              x_payment_rec   => x_payment_tbl(i),
1031                                              x_return_status => x_return_status,
1032                                              x_msg_count     => x_msg_count,
1033                                              x_msg_data      => x_msg_data);
1034 
1035            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1036                aso_debug_pub.add('Insert_Quote_Line_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
1037            END IF;
1038 
1039             if x_return_status <> fnd_api.g_ret_sts_success then
1040               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1041                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1042               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1043                  RAISE FND_API.G_EXC_ERROR;
1044               ELSE
1045                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1046               END IF;
1047             end if;
1048 
1049      x_payment_tbl(i).payment_term_id_from := l_payment_rec.payment_term_id_from;
1050 
1051      -- End Suyog Payment Changes
1052     END LOOP;
1053 
1054 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
1055 		aso_debug_pub.add('Insert_Quote_lines - payment.insert_row ', 1, 'N');
1056 	end if;
1057 
1058 -- insert rows into aso_shipments_tbl
1059 
1060 
1061 -- insert into quote party table
1062 
1063  FOR i IN 1..l_quote_party_Tbl.count LOOP
1064 	l_quote_party_rec := l_quote_party_tbl(i);
1065         l_quote_party_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
1066         l_quote_party_rec.quote_header_id := p_qte_line_rec.quote_header_id;
1067         x_quote_party_tbl(i) := l_quote_party_rec;
1068          -- BC4J Fix
1069         --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
1070 
1071            ASO_QUOTE_PARTIES_PKG.Insert_Row(
1072           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
1073           p_CREATION_DATE  => SYSDATE,
1074           p_CREATED_BY  => G_USER_ID,
1075           p_LAST_UPDATE_DATE  => SYSDATE,
1076           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
1077           p_LAST_UPDATED_BY  => G_USER_ID,
1078           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
1079           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
1080           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
1081           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
1082           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
1083           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
1084           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
1085           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
1086           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
1087           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
1088           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
1089           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
1090           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
1091           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
1092           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
1093           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
1094           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
1095           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
1096           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
1097           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
1098           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
1099           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
1100           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
1101           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
1102           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
1103           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
1104           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
1105   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
1106         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
1107 
1108  END LOOP;
1109 
1110 
1111     FOR i IN 1..l_line_attribs_Tbl.count LOOP
1112 	l_line_attribs_rec := l_line_attribs_tbl(i);
1113         l_line_attribs_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
1114         l_line_attribs_rec.quote_header_id := x_qte_line_rec.QUOTE_HEADER_ID;
1115         x_line_attribs_ext_tbl(i) := l_line_attribs_rec;
1116         -- BC4J Fix
1117 	   --x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID := NULL;
1118 
1119  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
1120           px_LINE_ATTRIBUTE_ID  => x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID,
1121           p_CREATION_DATE          => SYSDATE,
1122           p_CREATED_BY             => G_USER_ID,
1123           p_LAST_UPDATE_DATE       => SYSDATE,
1124           p_LAST_UPDATED_BY        => G_USER_ID,
1125           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
1126           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
1127           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
1128           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
1129           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
1130            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
1131           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
1132           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
1133           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
1134           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
1135           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
1136           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
1137           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
1138            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
1139           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
1140           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
1141 		P_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
1142 END LOOP;
1143 
1144 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
1145 		aso_debug_pub.add('Insert_Quote_lines - line_attribs.insert_row ', 1, 'N');
1146 	end if;
1147 
1148 	-- Change START
1149 	-- Release 12 TAP Changes
1150 	-- Girish Sachdeva 8/30/2005
1151 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
1152 
1153 	-- Finding the quote number
1154     open get_quote_number(X_Qte_Line_Rec.QUOTE_HEADER_ID);
1155     fetch get_quote_number into l_quote_number;
1156     if get_quote_number%FOUND then
1157 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1158 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT.Insert_Quote_lines : Calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || l_quote_number, 1, 'Y');
1159 	 END IF;
1160 
1161 	  -- Call to insert record in ASO_CHANGED_QUOTES
1162 	  ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_quote_number);
1163     end if;
1164     close get_quote_number;
1165 
1166 	-- Change END
1167 
1168 END;
1169 
1170 PROCEDURE Populate_Quote_Line(
1171     P_Qte_Line_Rec          IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type         := ASO_QUOTE_PUB.G_MISS_qte_line_REC,
1172     P_Control_REC           IN   ASO_QUOTE_PUB.Control_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Control_Rec,
1173     P_Payment_Tbl           IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_Payment_TBL,
1174     P_Price_Adj_Tbl         IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL,
1175     P_Qte_Line_Dtl_tbl      IN   ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type     := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL,
1176     P_Shipment_Tbl          IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_shipment_TBL,
1177     P_Tax_Detail_Tbl        IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL,
1178     P_Freight_Charge_Tbl    IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL,
1179     P_Price_Attributes_Tbl  IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL,
1180     P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type   := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
1181     P_Line_Attribs_Ext_Tbl  IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl,
1182     P_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type     := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
1183     P_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
1184     P_Update_Header_Flag    IN   VARCHAR2                                := FND_API.G_TRUE,
1185     P_operation_code        IN   VARCHAR2,
1186     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
1187     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
1188     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
1189     X_Qte_Line_Dtl_TBL      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_TBL_Type,
1190     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
1191     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
1192     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
1193     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type ,
1194     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
1195     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type,
1196     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
1197     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
1198     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1199     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
1200     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1201 
1202 )
1203 IS
1204 
1205 /* 2633507 - hyang: using lc_organization_id as cursor variable */
1206 
1207         CURSOR C_item1(inv1 NUMBER, lc_organization_id NUMBER) IS
1208                 select primary_uom_code, service_item_flag,serviceable_product_flag,ship_model_complete_flag,
1209 			        payment_terms_id,config_model_type
1210       		from mtl_system_items_b
1211       		where inventory_item_id = inv1
1212       		and organization_id = lc_organization_id;
1213 
1214 	CURSOR C_shipment IS
1215         	SELECT count(*) ,sum(quantity)
1216         	FROM aso_shipments
1217         	WHERE quote_line_id = p_qte_line_rec.quote_line_id;
1218 
1219         CURSOR C_header IS
1220          	SELECT quote_header_id, organization_id, inventory_item_id
1221    		FROM aso_quote_lines_all
1222    		WHERE quote_line_id = p_qte_line_rec.quote_line_id;
1223 
1224         CURSOR C_customer IS
1225                 SELECT cust_account_id, party_id
1226                 FROM aso_quote_headers_all
1227                 WHERE quote_header_id = p_qte_line_rec.quote_header_id;
1228 
1229         CURSOR C_service_item IS
1230                 SELECT qln.start_date_active, qln.end_date_active,
1231                        detail.service_duration, detail.service_period,
1232                        detail.service_coterminate_flag,
1233                        qhd.cust_account_id, qhd.party_id
1234                 FROM aso_quote_lines_all qln,
1235                      aso_quote_line_details detail,
1236                      aso_quote_headers_all qhd
1237                 WHERE detail.quote_line_id = qln.quote_line_id
1238                 AND qln.quote_line_id = p_qte_line_rec.quote_line_id
1239                 AND qln.quote_header_id = qhd.quote_header_id;
1240 
1241          CURSOR C_org_id IS
1242                 SELECT org_id
1243                 FROM aso_quote_headers_all
1244                 WHERE quote_header_id = p_qte_line_rec.quote_header_id;
1245 
1246       CURSOR c_line_number ( p_quote_line_id  NUMBER ) IS
1247       SELECT line_number
1248       FROM aso_quote_lines_all
1249       where quote_line_id = p_quote_line_id;
1250 
1251      cursor c_config_item_id( p_config_header_id number, p_config_revision_num number,
1252                                p_component_code varchar2 ) is
1253       select config_item_id, bom_sort_order
1254       from cz_config_details_v
1255       where config_hdr_id  = p_config_header_id     and
1256             config_rev_nbr = p_config_revision_num  and
1257             component_code = p_component_code;
1258 
1259       cursor c_bom_sort_order( p_config_header_id number, p_config_revision_num number,
1260                                p_config_item_id number ) is
1261       select bom_sort_order
1262       from cz_config_details_v
1263       where config_hdr_id  = p_config_header_id     and
1264             config_rev_nbr = p_config_revision_num  and
1265             config_item_id = p_config_item_id;
1266 
1267      -- Recurring charges Change
1268      CURSOR c_periodicity(p_inventory_item_id IN Number, p_organization_id IN Number) IS
1269       SELECT charge_periodicity_code
1270       FROM   mtl_system_items_b
1271       WHERE  inventory_item_id = p_inventory_item_id
1272       AND    organization_id = p_organization_id;
1273 
1274      Cursor get_hdr_term(l_qte_hdr_id number) is
1275      select payment_term_id
1276      from aso_payments
1277      where quote_header_id = l_qte_hdr_id
1278      and quote_line_id is null;
1279 
1280      l_hdr_term_id              number := null;
1281 	l_uom_code 		  VARCHAR2(3);
1282 	l_service_item_flag 	  VARCHAR2(1);
1283 	l_total_shipment_quantity NUMBER := 0;
1284         l_total_quantity          NUMBER;
1285 	l_shipment_quantity       NUMBER;
1286 	l_shipment_rec_count      NUMBER;
1287 	l_line_number             NUMBER;
1288 	l_check           	  VARCHAR2(1) := FND_API.G_FALSE;
1289         l_customer_id             NUMBER;
1290         l_acct                    NUMBER;
1291         l_party                   NUMBER;
1292         l_coterminate_flag        VARCHAR2(1);
1293         l_start_date              DATE;
1294         l_end_date                DATE;
1295         l_service_period          VARCHAR2(200);
1296         l_service_duration        NUMBER;
1297         calc_service              VARCHAR2(1) := FND_API.G_FALSE;
1298         l_inventory_item_id       NUMBER;
1299         l_organization_id         NUMBER;
1300 	i                         NUMBER;
1301         l_serviceable_line_number         NUMBER;
1302 	   l_serviceable_product_flag VARCHAR2(1);
1303 
1304 -- local variables
1305 	l_Qte_Line_Rec          ASO_QUOTE_PUB.Qte_Line_Rec_Type          := ASO_QUOTE_PUB.G_MISS_qte_line_REC;
1306 	l_Payment_Tbl           ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_Payment_TBL;
1307 	l_Price_Adj_Tbl         ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL;
1308 	l_Qte_Line_Dtl_rec      ASO_QUOTE_PUB.Qte_Line_Dtl_rec_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_REC;
1309 	l_Shipment_Tbl          ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_shipment_TBL;
1310 	l_Tax_Detail_Tbl        ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL;
1311 	l_Freight_Charge_Tbl    ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL;
1312 	l_Line_Rltship_Tbl      ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_line_rltship_TBL;
1313 	l_Price_Attributes_Tbl  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL;
1314 	l_Price_Adj_rltship_Tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_price_adj_rltship_TBL;
1315 	l_Price_Adj_Attr_Tbl    ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl;
1316 	l_Line_Attribs_Ext_Tbl  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type  := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl;
1317 	l_Qte_Line_Dtl_tbl      ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL;
1318 	l_qte_header_rec        ASO_QUOTE_PUB.Qte_Header_Rec_Type;
1319 	l_hd_shipment_tbl       ASO_QUOTE_PUB.Shipment_Tbl_Type;
1320 	l_hd_shipment_rec       ASO_QUOTE_PUB.Shipment_Rec_Type;
1321 	l_hd_price_attr_tbl     ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
1322 
1323      l_call_get_duration       VARCHAR2(1) := FND_API.G_FALSE;
1324      /* New Variable for  changes */
1325 	l_Qte_Line_Dtl_tbl_out  ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type;
1326      l_qte_line_rec_out  ASO_QUOTE_PUB.Qte_Line_Rec_Type;
1327      l_ship_model_complete_flag  VARCHAR2(1);
1328 	l_master_organization_id    number;
1329      l_payment_term_id           number;
1330      l_installment_option        varchar2(240);
1331      l_config_model_type         varchar2(1);
1332 
1333 BEGIN
1334 
1335     X_Return_Status          := FND_API.G_RET_STS_SUCCESS;
1336 
1337     l_Qte_Line_Rec           := p_Qte_Line_Rec   ;
1338     l_Payment_Tbl            := p_Payment_Tbl    ;
1339     l_Price_Adj_Tbl          := p_Price_Adj_Tbl  ;
1340     l_Qte_Line_Dtl_tbl       := p_Qte_Line_Dtl_tbl   ;
1341     l_Shipment_Tbl           := p_Shipment_Tbl       ;
1342     l_Tax_Detail_Tbl         := p_Tax_Detail_Tbl     ;
1343     l_Freight_Charge_Tbl     := p_Freight_Charge_Tbl       ;
1344     l_Price_Attributes_Tbl   := p_Price_Attributes_Tbl     ;
1345     l_Price_Adj_Attr_Tbl     := p_Price_Adj_Attr_Tbl ;
1346     l_Line_Attribs_Ext_Tbl   := p_Line_Attribs_Ext_Tbl;
1347 
1348     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1349         aso_debug_pub.add('Populate_Quote_lines - Begin ', 1, 'Y');
1350     end if;
1351 
1352     -- default quantity for every shipment line is 1
1353 
1354 
1355     IF p_operation_code = 'CREATE' THEN
1356 
1357         -- default org id from header
1358 
1359         IF l_qte_line_rec.org_id is NULL OR l_qte_line_rec.org_id = FND_API.G_MISS_NUM THEN
1360 
1361             OPEN C_org_id;
1362             FETCH C_org_id into l_qte_line_rec.org_id;
1363 
1364             IF (C_org_id%NOTFOUND) THEN
1365 
1366               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1367                  FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1368                  FND_MESSAGE.Set_Token('COLUMN', 'ORG_ID', FALSE);
1369                  FND_MSG_PUB.ADD;
1370               END IF;
1371 
1372             END IF;
1373 
1374             CLOSE C_org_id;
1375 
1376         END IF;
1377 
1378         -- default organization_id from profile
1379 
1380         IF l_qte_line_rec.organization_id is NULL or l_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
1381 
1382             l_qte_line_rec.organization_id := oe_profile.value('OE_ORGANIZATION_ID',l_qte_line_rec.org_id);
1383 
1384             IF l_qte_line_rec.organization_id is NULL or l_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
1385 
1386                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1387 		         FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
1388 		         FND_MESSAGE.Set_Token('COLUMN', 'ORGANIZATION_ID', FALSE);
1389 		         FND_MSG_PUB.ADD;
1390 	           END IF;
1391 
1392             END IF;
1393 
1394 	       if aso_debug_pub.g_debug_flag = 'Y' then
1395 		      aso_debug_pub.add('Populate_Quote_lines: l_qte_line_rec.organization_id: '||l_qte_line_rec.organization_id);
1396 	       end if;
1397 
1398         END IF;
1399 
1400 
1401         -- item_type code
1402 
1403         IF l_qte_line_rec.item_type_code is NULL OR l_qte_line_rec.item_type_code = FND_API.G_MISS_CHAR THEN
1404 
1405              SELECT Decode(i.bom_item_type , 1, 'MDL',2,'OPT',3,'PLN',4,'STD')
1406              INTO  l_qte_line_rec.item_type_code
1407              FROM mtl_system_items_b i
1408              WHERE inventory_item_id = l_qte_line_rec.inventory_item_id
1409              AND organization_id     = l_qte_line_rec.organization_id;
1410 
1411              IF (SQL%NOTFOUND) THEN
1412 
1413                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1414                      FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
1415                      FND_MESSAGE.Set_Token('COLUMN', 'ITEM TYPE CODE', FALSE);
1416                      FND_MSG_PUB.ADD;
1417                  END IF;
1418 
1419              END IF;
1420 
1421         END IF; --IF l_qte_line_rec.item_type_code is NULL OR l_qte_line_rec.item_type_code = FND_API.G_MISS_CHAR
1422 
1423 
1424 
1425 
1426 
1427         -- Recurring charges Change
1428         -- default charge_periodicity_code from Inventory
1429 
1430 	   if p_control_rec.defaulting_fwk_flag = 'N' then
1431 
1432             IF l_qte_line_rec.charge_periodicity_code is NULL OR l_qte_line_rec.charge_periodicity_code = FND_API.G_MISS_CHAR THEN
1433 
1434 		         l_master_organization_id := oe_sys_parameters.value(param_name => 'MASTER_ORGANIZATION_ID', p_org_id => l_qte_line_rec.org_id);
1435 
1436                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1437                        aso_debug_pub.add('Populate_Quote_lines: l_master_organization_id: '|| l_master_organization_id, 1, 'N');
1438                    END IF;
1439 
1440                    OPEN c_periodicity(l_qte_line_rec.inventory_item_id, l_master_organization_id);
1441               	    FETCH c_periodicity INTO l_qte_line_rec.charge_periodicity_code;
1442 
1443                    IF c_periodicity%NOTFOUND THEN
1444                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1445                            aso_debug_pub.add('Populate_Quote_lines: IF c_periodicity%NOTFOUND invitem'||l_qte_line_rec.inventory_item_id, 1, 'N');
1446                        END IF;
1447                    END IF;
1448 
1449                    close c_periodicity;
1450 
1451                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1452                        aso_debug_pub.add('Populate_Quote_lines: l_qte_line_rec.charge_periodicity_code: '|| l_qte_line_rec.charge_periodicity_code, 1, 'N');
1453                    END IF;
1454             END IF;
1455 	   end if;
1456 
1457 
1458         IF  l_qte_line_rec.quantity is null or l_qte_line_rec.quantity = FND_API.G_MISS_NUM THEN
1459              l_qte_line_rec.quantity :=  nvl(fnd_profile.value(name => 'ASO_DEFAULT_QTY'),1);
1460         END IF;
1461 
1462 
1463         OPEN C_Shipment;
1464         FETCH C_shipment INTO l_shipment_rec_count, l_total_shipment_quantity;
1465 
1466         IF C_shipment%FOUND THEN
1467             CLOSE C_Shipment;
1468 
1469             IF l_shipment_rec_count > 0  THEN
1470 
1471                  FOR i IN 1..l_shipment_tbl.count LOOP
1472                      IF l_shipment_tbl(i).operation_code = 'CREATE' THEN
1473                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1474                              FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENTS');
1475                              FND_MSG_PUB.ADD;
1476                          END IF;
1477                          raise FND_API.G_EXC_ERROR;
1478                      END IF;
1479                  END LOOP;
1480 
1481             END IF;
1482 
1483         ELSE
1484             CLOSE C_Shipment;
1485         END IF;
1486 
1487 
1488         IF l_shipment_tbl.count > 1 THEN
1489 
1490             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1491                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENTS');
1492                 FND_MSG_PUB.ADD;
1493             END IF;
1494             raise FND_API.G_EXC_ERROR;
1495 
1496         ELSIF l_shipment_tbl.count > 0 THEN
1497 
1498             IF l_qte_line_rec.quantity <> l_shipment_tbl(1).quantity THEN
1499                 l_shipment_tbl(1).quantity := l_qte_line_rec.quantity;
1500             END IF;
1501         END IF;
1502 
1503 
1504         Open C_Item1(p_qte_line_rec.inventory_item_id, l_qte_line_rec.organization_id);
1505         Fetch C_Item1 into l_uom_code, l_service_item_flag,l_serviceable_product_flag,l_ship_model_complete_flag,l_payment_term_id,l_config_model_type;
1506 
1507         If C_Item1%NOTFOUND Then
1508 
1509             CLOSE C_Item1;
1510             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1511                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_INFO');
1512                 FND_MESSAGE.Set_Token('COLUMN','ITEM RELATED', FALSE);
1513                 FND_MSG_PUB.Add;
1514             END IF;
1515             raise FND_API.G_EXC_ERROR;
1516 
1517         ELSE
1518 
1519             -- pnpl changes
1520             l_installment_option := oe_sys_parameters.value(param_name => 'INSTALLMENT_OPTIONS',
1521 	                                                                      p_org_id =>l_qte_line_rec.org_id);
1522 
1523           if (l_installment_option =  'ENABLE_PAY_NOW') THEN
1524 
1525 		   --if ((p_control_rec.defaulting_fwk_flag = 'N') and (l_installment_option =  'ENABLE_PAYNOW')) THEN
1526 
1527              if (l_payment_term_id is not null and l_payment_term_id <> fnd_api.g_miss_num) then
1528 
1529 			  IF aso_debug_pub.g_debug_flag = 'Y' THEN
1530                     aso_debug_pub.add('Populate_Quote_lines:Setting the payment term for line from item master ', 1, 'N');
1531                  END IF;
1532 
1533                  IF (l_payment_tbl.count = 0) THEN
1534                   l_payment_tbl(1).operation_code := 'CREATE';
1535                   l_payment_tbl(1).quote_header_id := l_qte_line_rec.quote_header_id ;
1536                   l_payment_tbl(1).payment_term_id := l_payment_term_id;
1537                   l_payment_tbl(1).qte_line_index := 1;
1538                  ELSIF (l_payment_tbl.count= 1  and l_payment_tbl(1).payment_term_id = FND_API.G_MISS_NUM
1539                          and l_payment_tbl(1).operation_code = 'CREATE') THEN
1540                    l_payment_tbl(1).payment_term_id := l_payment_term_id;
1541                  End if;
1542               end if;
1543 
1544            end if;  -- check for installment option
1545 
1546 		  -- end of pnpl changes
1547 
1548 
1549              -- default uom code
1550 
1551             IF l_qte_line_rec.uom_code IS NULL OR l_qte_line_rec.uom_code = FND_API.G_MISS_CHAR THEN
1552                 l_qte_line_rec.uom_code := l_uom_code;
1553             END IF;
1554 
1555             -- Default the ship model complete flag and config model type
1556 	       IF nvl(l_qte_line_rec.item_type_code,'XXX')  <> 'CFG' THEN
1557 	           l_qte_line_rec.ship_model_complete_flag := nvl(l_ship_model_complete_flag,'N');
1558                 l_qte_line_rec.config_model_type := l_config_model_type;
1559             END IF;
1560 
1561             --Default Service Item Flag and Serviceable Product Flag
1562             if aso_debug_pub.g_debug_flag = 'Y' THEN
1563 		      aso_debug_pub.add('Populate_Quote_lines CREATE- l_service_item_flag is '||l_service_item_flag, 1, 'N');
1564 		      aso_debug_pub.add('Populate_Quote_lines CREATE- l_serviceable_product_flag is '||l_serviceable_product_flag, 1, 'N');
1565 	       end if;
1566 
1567             l_qte_line_rec.service_item_flag := nvl(l_service_item_flag,'N');
1568 		  l_qte_line_rec.serviceable_product_flag := nvl(l_serviceable_product_flag,'N');
1569 
1570 		  -- find end date for service
1571 
1572             IF nvl(l_service_item_flag,'N') = 'Y' THEN
1573 
1574                 IF P_Qte_Line_Rec.start_date_active is NULL OR P_Qte_Line_Rec.start_date_active = FND_API.G_MISS_DATE THEN
1575 
1576                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1577 		                FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
1578 		                FND_MESSAGE.Set_Token('COLUMN', 'START_DATE_ACTIVE', FALSE);
1579 		                FND_MSG_PUB.ADD;
1580 	               END IF;
1581 			     RAISE FND_API.G_EXC_ERROR;
1582 
1583                 END IF;
1584 
1585                 -- if account id is not null use account id otherwise use party id
1586 
1587                 Open C_customer;
1588                 Fetch C_customer into l_acct, l_party;
1589 
1590                 IF C_customer%NOTFOUND THEN
1591 
1592                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1593 		                 FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
1594 		                 FND_MESSAGE.Set_Token('COLUMN', 'CUSTOMER_INFO', FALSE);
1595 		                 FND_MSG_PUB.ADD;
1596 	                END IF;
1597                 END IF;
1598 
1599                 Close C_customer;
1600 
1601                 IF l_acct is NOT  NULL THEN
1602                     l_customer_id := l_acct;
1603                 ELSE
1604                     l_customer_id := l_party;
1605                 END IF;
1606 
1607                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1608                     aso_debug_pub.add('Populate_Quote_lines:Create :before get service attr ', 1, 'N');
1609                 end if;
1610 
1611                 ASO_SERVICE_CONTRACTS_INT.Get_service_attributes(
1612 	               P_Api_Version_Number  => 1,
1613                     P_init_msg_list	  => FND_API.G_FALSE,
1614                     P_Qte_Line_Rec        => P_Qte_Line_Rec,
1615                     P_Qte_Line_Dtl_tbl    => P_Qte_Line_Dtl_tbl,
1616                     X_msg_Count           => X_msg_Count,
1617                     X_msg_Data		  => X_msg_Data,
1618                     X_Return_Status	  => X_Return_Status);
1619 
1620 	           IF aso_debug_pub.g_debug_flag = 'Y' THEN
1621                     aso_debug_pub.add('Populate_Quote_lines:Create :after  get service attr '||X_Return_Status, 1, 'N');
1622 	           end if;
1623 
1624                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1625                     RAISE FND_API.G_EXC_ERROR;
1626                 END IF;
1627 
1628                 -- New code begins 04/26/2002
1629 
1630 	           if aso_debug_pub.g_debug_flag = 'Y' THEN
1631                    aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl.count: '|| l_qte_line_dtl_tbl.count,1,'N');
1632                    aso_debug_pub.add('Populate_quote_lines: p_qte_line_dtl_tbl.count: '|| p_qte_line_dtl_tbl.count,1,'N');
1633                 end if;
1634 
1635                 l_call_get_duration := FND_API.G_FALSE;
1636 
1637 	           IF l_qte_line_rec.end_date_active is NOT NULL AND l_qte_line_rec.end_date_active = FND_API.G_MISS_DATE THEN
1638 
1639                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1640                          aso_debug_pub.add('Populate_quote_lines: First IF cond G_MISS_DATE', 1, 'N');
1641                      end if;
1642 
1643                      IF l_qte_line_dtl_tbl.count > 0 THEN
1644 			           l_qte_line_rec.end_date_active := null;
1645 			           l_call_get_duration := FND_API.G_TRUE;
1646                      ELSE
1647 				      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1648                               FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO5');
1649                		     FND_MSG_PUB.Add;
1650         		           END IF;
1651 			           RAISE FND_API.G_EXC_ERROR;
1652                      END IF;
1653 
1654                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1655                          aso_debug_pub.add('Populate_quote_lines: l_qte_line_rec.end_date_active: '|| l_qte_line_rec.end_date_active,1,'N');
1656                      end if;
1657 
1658                      IF l_qte_line_dtl_tbl(1).Service_Duration is NOT NULL AND l_qte_line_dtl_tbl(1).Service_Duration = FND_API.G_MISS_NUM  THEN
1659                           l_qte_line_dtl_tbl(1).Service_Duration := null;
1660                      END IF;
1661 
1662                      if aso_debug_pub.g_debug_flag = 'Y' THEN
1663                           aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl(1).Service_Duration: '|| l_qte_line_dtl_tbl(1).Service_Duration,1,'N');
1664                      end if;
1665 
1666                      IF l_qte_line_dtl_tbl(1).Service_period is NOT NULL AND l_qte_line_dtl_tbl(1).Service_period = FND_API.G_MISS_CHAR THEN
1667                          l_qte_line_dtl_tbl(1).Service_period := null;
1668                      END IF;
1669 
1670                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1671                          aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl(1).Service_period: '|| l_qte_line_dtl_tbl(1).Service_period,1,'N');
1672                      end if;
1673 
1674                      IF l_qte_line_dtl_tbl(1).service_coterminate_flag is NOT NULL AND l_qte_line_dtl_tbl(1).service_coterminate_flag <> FND_API.G_MISS_CHAR THEN
1675                          l_qte_line_dtl_tbl(1).service_coterminate_flag := null;
1676                      END IF;
1677 
1678                      if aso_debug_pub.g_debug_flag = 'Y' THEN
1679                          aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl(1).service_coterminate_flag: '|| l_qte_line_dtl_tbl(1).service_coterminate_flag,1,'N');
1680                      end if;
1681 
1682                 ELSIF l_qte_line_rec.end_date_active IS NOT NULL AND l_qte_line_dtl_tbl.count = 0 THEN
1683 
1684                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1685                          aso_debug_pub.add('Populate_quote_lines: ELSIF Cond not G_MISS_DATE but not null', 1, 'N');
1686                      end if;
1687 
1688                      ASO_Service_Contracts_INT.Get_Duration(
1689                             P_Api_Version_Number => 1.0,
1690                             X_msg_Count          => x_msg_count  ,
1691                             X_msg_Data           => x_msg_data   ,
1692                             X_Return_Status      => x_return_status,
1693                             P_customer_id        => l_customer_id,
1694                             P_system_id          => null,
1695                             P_Service_Duration   => null,
1696                             P_service_period     => null ,
1697                             P_coterm_checked_yn  => null,
1698                             P_start_date         => l_qte_line_rec.start_date_active,
1699                             P_end_date           => l_qte_line_rec.end_date_active,
1700                             X_service_duration   => l_qte_line_dtl_tbl_out(1).Service_Duration,
1701                             X_service_period     => l_qte_line_dtl_tbl_out(1).service_period,
1702                             X_new_end_date       => l_qte_line_rec_out.end_date_active );
1703 
1704 					   l_qte_line_dtl_tbl(1).Service_Duration := l_qte_line_dtl_tbl_out(1).Service_Duration;
1705 					   l_qte_line_dtl_tbl(1).service_period   := l_qte_line_dtl_tbl_out(1).service_period;
1706 					   l_qte_line_rec.end_date_active         := l_qte_line_rec_out.end_date_active;
1707 
1708 	                IF aso_debug_pub.g_debug_flag = 'Y' THEN
1709                          aso_debug_pub.add('Populate_Quote_lines: After call to ASO Get_Duration x_return_status: '||X_Return_Status, 1, 'N');
1710                          aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_rec.end_date_active: '||l_qte_line_rec.end_date_active, 1, 'N');
1711                          aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_dtl_tbl(1).service_period: '||l_qte_line_dtl_tbl(1).service_period, 1, 'N');
1712                          aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_dtl_tbl(1).Service_Duration: '||l_qte_line_dtl_tbl(1).Service_Duration, 1, 'N');
1713 	                end if;
1714 
1715                      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1716                         RAISE FND_API.G_EXC_ERROR;
1717                      END IF;
1718 
1719                 ELSIF l_qte_line_rec.end_date_active IS NULL AND l_qte_line_dtl_tbl.count = 0 THEN
1720 
1721 	                if aso_debug_pub.g_debug_flag = 'Y' THEN
1722                          aso_debug_pub.add('Populate_quote_lines: ELSEIF Cond end date IS NULL and l_qte_line_dtl_tbl.count = 0', 1, 'N');
1723                      end if;
1724 
1725                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1726                          FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO5');
1727                          FND_MSG_PUB.Add;
1728         		      END IF;
1729 
1730 	                RAISE FND_API.G_EXC_ERROR;
1731 
1732                 ELSE
1733 
1734                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
1735                          aso_debug_pub.add('Populate_quote_lines: ELSE Cond not end date NULL', 1, 'N');
1736                      end if;
1737 
1738 	                l_call_get_duration := FND_API.G_TRUE;
1739 
1740                      IF l_qte_line_dtl_tbl(1).Service_Duration is NOT NULL
1741                            AND l_qte_line_dtl_tbl(1).Service_Duration = FND_API.G_MISS_NUM  THEN
1742 
1743                          l_qte_line_dtl_tbl(1).Service_Duration := null;
1744                      END IF;
1745 
1746                      IF l_qte_line_dtl_tbl(1).Service_period is NOT NULL
1747                               AND l_qte_line_dtl_tbl(1).Service_period = FND_API.G_MISS_CHAR  THEN
1748 
1749                          l_qte_line_dtl_tbl(1).Service_period := null;
1750                      END IF;
1751 
1752                      IF l_qte_line_dtl_tbl(1).service_coterminate_flag is NOT NULL
1753                             AND l_qte_line_dtl_tbl(1).service_coterminate_flag <> FND_API.G_MISS_CHAR THEN
1754 
1755                         l_qte_line_dtl_tbl(1).service_coterminate_flag := null;
1756                      END IF;
1757 
1758                 END IF;
1759 
1760                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1761                     aso_debug_pub.add('Populate_quote_lines: Before call to Get_Duration: l_call_get_duration: '||l_call_get_duration,1,'N');
1762                 end if;
1763 
1764                 IF l_call_get_duration = FND_API.G_TRUE THEN
1765 
1766                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1767                         aso_debug_pub.add('Populate_quote_lines: Inside IF l_call_get_duration = FND_API.G_TRUE Cond ', 1, 'N');
1768                     end if;
1769 
1770                     ASO_Service_Contracts_INT.Get_Duration(
1771                         P_Api_Version_Number  => 1.0,
1772                         X_msg_Count           => x_msg_count  ,
1773                         X_msg_Data            => x_msg_data   ,
1774                         X_Return_Status       => x_return_status,
1775                         P_customer_id         => l_customer_id,
1776                         P_system_id           => null,
1777                         P_Service_Duration    => l_qte_line_dtl_tbl(1).Service_Duration,
1778                         P_service_period      => l_qte_line_dtl_tbl(1).service_period ,
1779                         P_coterm_checked_yn   => l_qte_line_dtl_tbl(1).service_coterminate_flag,
1780                         P_start_date          => l_qte_line_rec.start_date_active,
1781                         P_end_date            => l_qte_line_rec.end_date_active,
1782                         X_service_duration    => l_qte_line_dtl_tbl_out(1).Service_Duration,
1783                         X_service_period      => l_qte_line_dtl_tbl_out(1).service_period,
1784                         X_new_end_date        => l_qte_line_rec_out.end_date_active );
1785 
1786                        l_qte_line_dtl_tbl(1).Service_Duration := l_qte_line_dtl_tbl_out(1).Service_Duration;
1787 			        l_qte_line_dtl_tbl(1).service_period := l_qte_line_dtl_tbl_out(1).service_period;
1788 				   l_qte_line_rec.end_date_active := l_qte_line_rec_out.end_date_active;
1789 
1790                        if aso_debug_pub.g_debug_flag = 'Y' THEN
1791                            aso_debug_pub.add('Populate_Quote_lines: After call to ASO Get_Duration x_return_status: '||X_Return_Status, 1, 'N');
1792                            aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_rec.end_date_active: '||l_qte_line_rec.end_date_active, 1, 'N');
1793                            aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_dtl_tbl(1).service_period: '||l_qte_line_dtl_tbl(1).service_period, 1, 'N');
1794                            aso_debug_pub.add('After call to ASO Get_Duration: l_qte_line_dtl_tbl(1).Service_Duration: '||l_qte_line_dtl_tbl(1).Service_Duration, 1, 'N');
1795                        end if;
1796 
1797                       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1798                          RAISE FND_API.G_EXC_ERROR;
1799                       END IF;
1800 
1801                 END IF; --l_call_get_duration = FND_API.G_TRUE
1802 
1803             END IF; -- Service_item_flag
1804 
1805             --populate the config_item_id and bom_sort_order column values from cz_config_details_v
1806             --view if the calling application is passing config_header_id, config_revision_num and
1807             --component_code values. Fix for Bug#2980130
1808 
1809             if aso_debug_pub.g_debug_flag = 'Y' then
1810                aso_debug_pub.add('Before populating config_item_id,bom_sort_order. Operation_code = CREATE');
1811                aso_debug_pub.add('l_qte_line_dtl_tbl.count: ' || l_qte_line_dtl_tbl.count);
1812             end if;
1813 
1814             for i in 1 .. l_qte_line_dtl_tbl.count loop
1815 
1816                  if aso_debug_pub.g_debug_flag = 'Y' then
1817                      aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_header_id:    '||l_qte_line_dtl_tbl(i).config_header_id);
1818                      aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_revision_num: '||l_qte_line_dtl_tbl(i).config_revision_num);
1819                      aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').component_code:      '||l_qte_line_dtl_tbl(i).component_code);
1820                      aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_item_id:      '||l_qte_line_dtl_tbl(i).config_item_id);
1821                      aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order:      '||l_qte_line_dtl_tbl(i).bom_sort_order);
1822                  end if;
1823 
1824                  if ( l_qte_line_dtl_tbl(i).config_header_id is not null and
1825                       l_qte_line_dtl_tbl(i).config_header_id <> fnd_api.g_miss_num ) and
1826                     ( l_qte_line_dtl_tbl(i).config_revision_num is not null and
1827                       l_qte_line_dtl_tbl(i).config_revision_num <> fnd_api.g_miss_num ) and
1828                       l_qte_line_dtl_tbl(i).operation_code = 'CREATE' then
1829 
1830                       if ( l_qte_line_dtl_tbl(i).config_item_id is null or l_qte_line_dtl_tbl(i).config_item_id = fnd_api.g_miss_num ) then
1831 
1832                            open c_config_item_id( l_qte_line_dtl_tbl(i).config_header_id,
1833                                                   l_qte_line_dtl_tbl(i).config_revision_num,
1834                                                   l_qte_line_dtl_tbl(i).component_code );
1835 
1836                            fetch c_config_item_id into l_qte_line_dtl_tbl(i).config_item_id, l_qte_line_dtl_tbl(i).bom_sort_order;
1837 
1838                            if aso_debug_pub.g_debug_flag = 'Y' then
1839                                aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_item_id: '||l_qte_line_dtl_tbl(i).config_item_id);
1840                                aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order: '||l_qte_line_dtl_tbl(i).bom_sort_order);
1841                            end if;
1842 
1843                            if c_config_item_id%notfound then
1844 
1845                                 if aso_debug_pub.g_debug_flag = 'Y' then
1846                                     aso_debug_pub.add('Inside c_config_item_id%notfound cond.');
1847                                 end if;
1848 
1849                                 close c_config_item_id;
1850                                 raise fnd_api.g_exc_error;
1851                            end if;
1852 
1853                            close c_config_item_id;
1854 
1855                       elsif ( l_qte_line_dtl_tbl(i).bom_sort_order is null or l_qte_line_dtl_tbl(i).bom_sort_order = fnd_api.g_miss_char ) then
1856 
1857                            open c_bom_sort_order( l_qte_line_dtl_tbl(i).config_header_id,
1858                                                   l_qte_line_dtl_tbl(i).config_revision_num,
1859                                                   l_qte_line_dtl_tbl(i).config_item_id );
1860 
1861                            fetch c_bom_sort_order into l_qte_line_dtl_tbl(i).bom_sort_order;
1862 
1863                            if aso_debug_pub.g_debug_flag = 'Y' then
1864                                aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order: '||l_qte_line_dtl_tbl(i).bom_sort_order);
1865                            end if;
1866 
1867                            if c_bom_sort_order%notfound then
1868 
1869                                 if aso_debug_pub.g_debug_flag = 'Y' then
1870                                    aso_debug_pub.add('Inside c_bom_sort_order%notfound cond.');
1871                                 end if;
1872 
1873                                 close c_bom_sort_order;
1874                                 raise fnd_api.g_exc_error;
1875 
1876                            end if;
1877                            close c_bom_sort_order;
1878 
1879                       end if; --l_qte_line_dtl_tbl(i).config_item_id is null or l_qte_line_dtl_tbl(i).config_item_id = fnd_api.g_miss_num
1880 
1881                  end if; --l_qte_line_dtl_tbl(i).config_header_id is not null and
1882 
1883             end loop;
1884 
1885             --end of fix for Bug#2980130
1886 
1887             X_Qte_Line_Dtl_tbl  := l_qte_line_dtl_tbl;
1888 
1889 
1890             --Set the line_number of service items to the line_number of serviceable item, if the
1891             --service is attached to a quote line
1892 
1893             IF  nvl(l_service_item_flag,'N') = 'Y' AND l_qte_line_dtl_tbl.count > 0 THEN
1894 
1895                  IF  l_qte_line_dtl_tbl(1).service_ref_line_id IS NOT NULL
1896                      AND l_qte_line_dtl_tbl(1).service_ref_type_code = 'QUOTE' THEN
1897 
1898                        OPEN  c_line_number(l_qte_line_dtl_tbl(1).service_ref_line_id);
1899                        FETCH c_line_number INTO l_serviceable_line_number;
1900 
1901                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1902                            aso_debug_pub.add('Populate_quote_lines: l_serviceable_line_number: '|| l_serviceable_line_number);
1903                        end if;
1904 
1905                        IF c_line_number%FOUND AND l_serviceable_line_number IS NOT NULL THEN
1906                              l_qte_line_rec.line_number := l_serviceable_line_number;
1907                        ELSE
1908 
1909                              IF aso_debug_pub.g_debug_flag = 'Y' THEN
1910                                  aso_debug_pub.add('Line Number does not exist for the serviceable item of the service');
1911                              end if;
1912                        END IF;
1913 
1914                        CLOSE c_line_number;
1915 
1916                  END IF;
1917 
1918             END IF; --nvl(l_service_item_flag,'N') = 'Y' AND l_qte_line_dtl_tbl.count > 0
1919 
1920             --End of service line_number code
1921 
1922 	       --Populate configured lines line number
1923 
1924             IF  l_qte_line_rec.item_type_code = 'CFG' AND l_qte_line_dtl_tbl.count > 0 THEN
1925 
1926                  IF  l_qte_line_dtl_tbl(1).ref_line_id IS NOT NULL AND l_qte_line_dtl_tbl(1).ref_type_code = 'CONFIG' THEN
1927 
1928                        open  c_line_number(l_qte_line_dtl_tbl(1).ref_line_id);
1929                        fetch c_line_number into l_qte_line_rec.line_number;
1930 
1931                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1932                            aso_debug_pub.add('Populate_quote_lines: parent line_number: '|| l_qte_line_rec.line_number);
1933                        end if;
1934 
1935                        IF c_line_number%notfound  THEN
1936 
1937                            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1938                                aso_debug_pub.add('parent line number does not exist for this child line');
1939                            end if;
1940 
1941                        ELSIF l_qte_line_rec.line_number is null THEN
1942 
1943                            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1944                                aso_debug_pub.add('parent line_number of this child line is null');
1945                            end if;
1946 
1947                        END IF;
1948 
1949                        close c_line_number;
1950                  END IF;
1951 
1952             END IF; --IF  l_qte_line_rec.item_type_code = 'CFG' AND l_qte_line_dtl_tbl.count > 0 THEN
1953 
1954         End if; --If C_Item1%NOTFOUND Then
1955 
1956         Close C_Item1;
1957 
1958 
1959         IF (l_qte_line_rec.line_number IS NULL OR l_qte_line_rec.line_number = FND_API.G_MISS_NUM) THEN
1960 
1961             SELECT max(line_number) into l_line_number
1962             FROM aso_quote_lines_all
1963             WHERE quote_header_id = l_qte_line_rec.quote_header_id;
1964 
1965             IF (SQL%NOTFOUND) OR l_line_number is NULL THEN
1966                 l_line_number := 0;
1967             END IF;
1968 
1969             l_qte_line_rec.line_number := l_line_number + 10000;
1970 
1971         END IF;
1972 
1973 	   if aso_debug_pub.g_debug_flag = 'Y' THEN
1974     		  aso_debug_pub.add('Populate_Quote_lines - line_number: '||l_qte_line_rec.line_number, 1, 'N');
1975 	   end if;
1976 
1977         -- there should be atleast one shipment record for every quote line record
1978 
1979         IF l_shipment_tbl.count < 1 THEN
1980 
1981             l_shipment_tbl(1).quote_header_id := l_qte_line_rec.quote_header_id;
1982             l_shipment_tbl(1).quote_line_id   := l_qte_line_rec.quote_line_id;
1983 	       l_shipment_tbl(1).quantity        := l_qte_line_rec.quantity;
1984 
1985         END IF;
1986 
1987 
1988      END IF;  --IF p_operation_code = 'CREATE'
1989 
1990 
1991 
1992 	IF p_operation_code = 'UPDATE' THEN
1993 
1994          l_qte_line_rec.service_item_flag        := fnd_api.g_miss_char;
1995          l_qte_line_rec.serviceable_product_flag := fnd_api.g_miss_char;
1996          l_qte_line_rec.config_model_type        := fnd_api.g_miss_char;
1997 
1998 
1999 	    --Made changes in cursor to select inventory_item_id for Bug#2930734
2000 
2001          OPEN  C_header;
2002          FETCH C_header into l_qte_line_rec.quote_header_id, l_organization_id, l_inventory_item_id;
2003 
2004          IF (C_header%NOTFOUND) THEN
2005 
2006             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2007 
2008 		      FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
2009                 FND_MESSAGE.Set_Token('COLUMN', 'QUOTE_ID', FALSE);
2010 	           FND_MESSAGE.Set_Token('VALUE', TO_CHAR(l_qte_line_rec.quote_header_id), FALSE);
2011 	           FND_MSG_PUB.ADD;
2012 	       END IF;
2013 
2014          END IF;
2015          CLOSE C_header;
2016 
2017          --Made the following changes for Bug#2930734
2018 
2019          IF l_qte_line_rec.organization_id IS NULL OR l_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
2020 		      l_qte_line_rec.organization_id := l_organization_id;
2021 	    END IF;
2022 
2023          if l_qte_line_rec.inventory_item_id = fnd_api.g_miss_num then
2024 		   l_qte_line_rec.inventory_item_id := l_inventory_item_id;
2025 	    end if;
2026 
2027 	    if aso_debug_pub.g_debug_flag = 'Y' then
2028              aso_debug_pub.add('populate_quote_line: operation_code: UPDATE');
2029              aso_debug_pub.add('l_qte_line_rec.organization_id:   '||l_qte_line_rec.organization_id);
2030              aso_debug_pub.add('l_qte_line_rec.inventory_item_id: '||l_qte_line_rec.inventory_item_id);
2031          end if;
2032 
2033 	    --End of change for Bug#2930734
2034 
2035          open c_shipment;
2036 	    fetch c_shipment into l_shipment_rec_count, l_total_shipment_quantity;
2037 
2038          IF (C_Shipment%NOTFOUND) THEN
2039 
2040             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2041 		      FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SHIPMENT');
2042                 FND_MESSAGE.Set_Token('LINE', to_char(p_qte_line_rec.quote_line_id), FALSE);
2043             END IF;
2044 
2045          END IF;
2046 
2047 	    CLOSE C_Shipment;
2048 
2049 
2050          -- Added by bmishra on 05/15/2001
2051 
2052           IF  l_qte_line_rec.quantity is null then
2053 
2054                l_qte_line_rec.quantity :=  nvl(fnd_profile.value(name => 'ASO_DEFAULT_QTY'),1);
2055 
2056           ELSIF  l_qte_line_rec.quantity = FND_API.G_MISS_NUM THEN
2057 
2058                select quantity  into l_qte_line_rec.quantity from aso_quote_lines_All
2059                where quote_line_id = l_qte_line_rec.quote_line_id;
2060 
2061           END IF;
2062 
2063 
2064 	     IF l_shipment_tbl.count > 1 THEN
2065 
2066                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2067                     FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENTS');
2068                     FND_MSG_PUB.ADD;
2069                END IF;
2070                raise FND_API.G_EXC_ERROR;
2071 
2072           ELSIF l_shipment_tbl.count > 0  THEN
2073 
2074                IF l_qte_line_rec.quantity <> l_shipment_tbl(1).quantity THEN
2075 	            l_shipment_tbl(1).quantity := l_qte_line_rec.quantity;
2076                END IF;
2077 
2078           ELSIF l_shipment_tbl.count = 0 AND l_shipment_rec_count = 1 THEN
2079 
2080                -- update the existing rec
2081 
2082                SELECT shipment_id into l_shipment_tbl(1).shipment_id
2083                FROM aso_shipments
2084                WHERE quote_line_id = l_qte_line_rec.quote_line_id
2085                AND quote_header_id = l_qte_line_rec.quote_header_id;
2086 
2087                l_shipment_tbl(1).quote_header_id := l_qte_line_rec.quote_header_id;
2088                l_shipment_tbl(1).quote_line_id   := l_qte_line_rec.quote_line_id;
2089                l_shipment_tbl(1).quantity        := l_qte_line_rec.quantity;
2090                l_shipment_tbl(1).operation_code  := 'UPDATE';
2091 
2092           END IF;
2093 
2094           -- If the operation code is 'CREATE' in shipment table then raise an error
2095 
2096           IF l_shipment_rec_count > 0  THEN
2097 
2098                FOR i IN 1..l_shipment_tbl.count LOOP
2099 
2100                    IF l_shipment_tbl(i).operation_code = 'CREATE' THEN
2101                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2102                            FND_MESSAGE.Set_Name('ASO', 'ASO_API_TOO_MANY_SHIPMENT');
2103                            FND_MSG_PUB.ADD;
2104                        END IF;
2105                        raise FND_API.G_EXC_ERROR;
2106                    END IF;
2107 
2108                END LOOP;
2109 
2110           END IF;
2111 
2112 
2113           open c_item1(l_qte_line_rec.inventory_item_id, l_qte_line_rec.organization_id);
2114           fetch c_item1 into l_uom_code, l_service_item_flag, l_serviceable_product_flag, l_ship_model_complete_flag, l_payment_term_id, l_config_model_type;
2115 
2116           if (c_item1%notfound) then
2117 
2118                IF aso_debug_pub.g_debug_flag = 'Y' THEN
2119                    aso_debug_pub.add('Populate_Quote_lines: c_item1%NOTFOUND true, raising error', 1, 'N');
2120                END IF;
2121 
2122                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2123                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_INFO');
2124                    FND_MESSAGE.Set_Token ('INFO', 'ITEM RELATED', FALSE);
2125                    FND_MSG_PUB.Add;
2126                END IF;
2127 
2128                close c_item1;
2129                raise FND_API.G_EXC_ERROR;
2130 
2131            end if;
2132 
2133            close c_item1;
2134 
2135            IF aso_debug_pub.g_debug_flag = 'Y' THEN
2136                aso_debug_pub.add('Populate_Quote_lines: l_uom_code:                 '|| l_uom_code, 1, 'N');
2137                aso_debug_pub.add('Populate_Quote_lines: l_service_item_flag:        '|| l_service_item_flag, 1, 'N');
2138                aso_debug_pub.add('Populate_Quote_lines: l_serviceable_product_flag: '|| l_serviceable_product_flag, 1, 'N');
2139                aso_debug_pub.add('Populate_Quote_lines: l_ship_model_complete_flag: '|| l_ship_model_complete_flag, 1, 'N');
2140                aso_debug_pub.add('Populate_Quote_lines: l_payment_term_id:          '|| l_payment_term_id, 1, 'N');
2141                aso_debug_pub.add('Populate_Quote_lines: l_config_model_type:        '|| l_config_model_type, 1, 'N');
2142            END IF;
2143 
2144 
2145            IF nvl(l_service_item_flag,'N') = 'Y'  THEN
2146 
2147                --if start_date_active is null then raise error
2148 
2149                if p_qte_line_rec.start_date_active is NULL then
2150 
2151                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2152                        FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
2153                        FND_MESSAGE.Set_Token('COLUMN', 'START_DATE_ACTIVE', FALSE);
2154                        FND_MSG_PUB.ADD;
2155                    END IF;
2156 
2157                    RAISE FND_API.G_EXC_ERROR;
2158 
2159                end if;
2160 
2161                --Check if any of the service attributes has changed
2162 
2163                l_call_get_duration := FND_API.G_FALSE;
2164 
2165                if (p_qte_line_rec.start_date_active <> FND_API.G_MISS_DATE) OR (p_qte_line_rec.end_date_active <> FND_API.G_MISS_DATE) then
2166 
2167                     l_call_get_duration := FND_API.G_TRUE;
2168 
2169                elsif p_qte_line_dtl_tbl.count > 0 then
2170 
2171                     if (p_qte_line_dtl_tbl(1).service_duration <> FND_API.G_MISS_NUM) OR (p_qte_line_dtl_tbl(1).service_period <> FND_API.G_MISS_CHAR) then
2172 
2173                          l_call_get_duration := FND_API.G_TRUE;
2174 
2175                     end if;
2176 
2177                end if;
2178 
2179                if l_call_get_duration = FND_API.G_TRUE then
2180 
2181                    OPEN C_service_item;
2182                    FETCH C_service_item INTO l_start_date, l_end_date, l_service_duration, l_service_period, l_coterminate_flag, l_customer_id, l_party;
2183 
2184                    IF (C_service_item%NOTFOUND) THEN
2185 
2186                         CLOSE C_service_item;
2187 
2188                         IF aso_debug_pub.g_debug_flag = 'Y' THEN
2189                             aso_debug_pub.add('Populate_Quote_lines: C_service_item%NOTFOUND true, raising error', 1, 'N');
2190                         END IF;
2191 
2192                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2193 		                  FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_INFO');
2194 		                  FND_MESSAGE.Set_Token('INFO', 'SERVICE RELATED', FALSE);
2195 		                  FND_MSG_PUB.ADD;
2196 	                   END IF;
2197 
2198 	                   RAISE FND_API.G_EXC_ERROR;
2199 
2200                    END IF;
2201 
2202                    CLOSE C_service_item;
2203 
2204                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2205                         aso_debug_pub.add('Populate_Quote_lines: l_start_date:       '|| l_start_date, 1, 'N');
2206                         aso_debug_pub.add('Populate_Quote_lines: l_end_date:         '|| l_end_date, 1, 'N');
2207                         aso_debug_pub.add('Populate_Quote_lines: l_service_duration: '|| l_service_duration, 1, 'N');
2208                         aso_debug_pub.add('Populate_Quote_lines: l_service_period:   '|| l_service_period, 1, 'N');
2209                         aso_debug_pub.add('Populate_Quote_lines: l_coterminate_flag: '|| l_coterminate_flag, 1, 'N');
2210                         aso_debug_pub.add('Populate_Quote_lines: l_customer_id:      '|| l_customer_id, 1, 'N');
2211                         aso_debug_pub.add('Populate_Quote_lines: l_party:            '|| l_party, 1, 'N');
2212                         aso_debug_pub.add('Populate_Quote_lines:Update :before call to ASO_SERVICE_CONTRACTS_INT.Get_service_attributes', 1, 'N');
2213                    END IF;
2214 
2215                    ASO_SERVICE_CONTRACTS_INT.Get_service_attributes( P_Api_Version_Number => 1,
2216                                                                      P_init_msg_list	 => FND_API.G_FALSE,
2217 	                                                             P_Qte_Line_Rec       => P_Qte_Line_Rec,
2218                                                                      P_Qte_Line_Dtl_tbl   => P_Qte_Line_Dtl_tbl,
2219                                                                      X_msg_Count          => X_msg_Count,
2220                                                                      X_msg_Data		 => X_msg_Data,
2221                                                                      X_Return_Status	 => X_Return_Status );
2222 
2223 	           IF aso_debug_pub.g_debug_flag = 'Y' THEN
2224    	               aso_debug_pub.add('Populate_Quote_lines:after call to Get_service_attributes: X_Return_Status: '|| X_Return_Status, 1, 'N');
2225 	           end if;
2226 
2227                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2228                         RAISE FND_API.G_EXC_ERROR;
2229                     END IF;
2230 
2231                     --print the input parameter values
2232 
2233                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
2234 
2235                         aso_debug_pub.add('Populate_Quote_lines: p_qte_line_rec.start_date_active: '|| p_qte_line_rec.start_date_active, 1, 'N');
2236                         aso_debug_pub.add('Populate_Quote_lines: p_qte_line_rec.end_date_active:   '|| p_qte_line_rec.end_date_active, 1, 'N');
2237                         aso_debug_pub.add('Populate_Quote_lines: p_qte_line_dtl_tbl.count: '|| p_qte_line_dtl_tbl.count, 1, 'N');
2238 
2239                         IF l_qte_line_dtl_tbl.count > 0 THEN
2240 
2241                            aso_debug_pub.add('p_qte_line_dtl_tbl(1).Service_Duration:         '|| p_qte_line_dtl_tbl(1).Service_Duration, 1, 'N');
2242                            aso_debug_pub.add('p_qte_line_dtl_tbl(1).service_period:           '|| p_qte_line_dtl_tbl(1).service_period, 1, 'N');
2243                            aso_debug_pub.add('p_qte_line_dtl_tbl(1).service_coterminate_flag: '|| p_qte_line_dtl_tbl(1).service_coterminate_flag, 1, 'N');
2244 
2245                         end if;
2246 
2247                     END IF;
2248 
2249 
2250                     --Now check which service attribute value has changed
2251 
2252                     if aso_debug_pub.g_debug_flag = 'Y' then
2253                         aso_debug_pub.add('Populate_quote_lines: p_qte_line_dtl_tbl.count: '|| p_qte_line_dtl_tbl.count, 1, 'N');
2254                     end if;
2255 
2256                     if p_qte_line_dtl_tbl.count = 0 then
2257 
2258                         l_qte_line_dtl_tbl := aso_utility_pvt.Query_Line_Dtl_Rows(l_qte_line_rec.quote_line_id);
2259 
2260                         if aso_debug_pub.g_debug_flag = 'Y' then
2261                             aso_debug_pub.add('After querying line detail tbl from db: l_qte_line_dtl_tbl.count: '|| l_qte_line_dtl_tbl.count, 1, 'N');
2262                         end if;
2263 
2264                         if l_qte_line_dtl_tbl.count = 0 then
2265 
2266                             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2267                                  FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO5');
2268                                  FND_MSG_PUB.Add;
2269                             END IF;
2270 
2271                             RAISE FND_API.G_EXC_ERROR;
2272 
2273                         else
2274 
2275                             l_qte_line_dtl_tbl(1).operation_code := 'UPDATE';
2276 
2277                         end if;
2278 
2279                     end if;
2280 
2281                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
2282                         aso_debug_pub.add('Populate_quote_lines: l_qte_line_rec.start_date_active: '|| l_qte_line_rec.start_date_active,1,'N');
2283                         aso_debug_pub.add('Populate_quote_lines: l_qte_line_rec.end_date_active:   '|| l_qte_line_rec.end_date_active,1,'N');
2284                     end if;
2285 
2286                     IF p_qte_line_rec.start_date_active = FND_API.G_MISS_DATE THEN
2287                         l_qte_line_rec.start_date_active := l_start_date;
2288                     END IF;
2289 
2290                     IF p_qte_line_rec.end_date_active = FND_API.G_MISS_DATE THEN
2291                         l_qte_line_rec.end_date_active := null;
2292                     END IF;
2293 
2294                     if aso_debug_pub.g_debug_flag = 'Y' then
2295                         aso_debug_pub.add('Populate_quote_lines: p_qte_line_dtl_tbl.count: '|| p_qte_line_dtl_tbl.count, 1, 'N');
2296                     end if;
2297 
2298                     if p_qte_line_dtl_tbl.count > 0 then
2299 
2300                         IF l_qte_line_dtl_tbl(1).Service_Duration = FND_API.G_MISS_NUM  THEN
2301                             l_qte_line_dtl_tbl(1).Service_Duration := l_service_duration;
2302                         END IF;
2303 
2304                         IF l_qte_line_dtl_tbl(1).Service_period = FND_API.G_MISS_CHAR THEN
2305                             l_qte_line_dtl_tbl(1).Service_period := l_service_period;
2306                         END IF;
2307 
2308                         IF l_qte_line_dtl_tbl(1).service_coterminate_flag = FND_API.G_MISS_CHAR THEN
2309                             l_qte_line_dtl_tbl(1).service_coterminate_flag := l_coterminate_flag;
2310                         END IF;
2311 
2312                     end if;
2313 
2314                     IF l_customer_id is NULL OR l_customer_id = FND_API.G_MISS_NUM THEN
2315                         l_customer_id := l_party;
2316                     END IF;
2317 
2318                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
2319                         aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl(1).Service_Duration: '|| l_qte_line_dtl_tbl(1).Service_Duration,1,'N');
2320                         aso_debug_pub.add('Populate_quote_lines: l_qte_line_dtl_tbl(1).Service_period: '|| l_qte_line_dtl_tbl(1).Service_period,1,'N');
2321                         aso_debug_pub.add('l_qte_line_dtl_tbl(1).service_coterminate_flag: '|| l_qte_line_dtl_tbl(1).service_coterminate_flag,1,'N');
2322                         aso_debug_pub.add('Populate_quote_lines: Before call to Get_Duration: l_call_get_duration: '||l_call_get_duration,1,'N');
2323                     end if;
2324 
2325 
2326                     ASO_Service_Contracts_INT.Get_Duration(
2327                         P_Api_Version_Number  => 1.0,
2328                         X_msg_Count           => x_msg_count  ,
2329                         X_msg_Data            => x_msg_data   ,
2330                         X_Return_Status       => x_return_status,
2331                         P_customer_id         => l_customer_id,
2332                         P_system_id           => null,
2333                         P_Service_Duration    => l_qte_line_dtl_tbl(1).Service_Duration,
2334                         P_service_period      => l_qte_line_dtl_tbl(1).service_period ,
2335                         P_coterm_checked_yn   => l_qte_line_dtl_tbl(1).service_coterminate_flag,
2336                         P_start_date          => l_qte_line_rec.start_date_active,
2337                         P_end_date            => l_qte_line_rec.end_date_active,
2338                         X_service_duration    => l_qte_line_dtl_tbl_out(1).Service_Duration,
2339                         X_service_period      => l_qte_line_dtl_tbl_out(1).service_period,
2340                         X_new_end_date        => l_qte_line_rec_out.end_date_active );
2341 
2342                     l_qte_line_dtl_tbl(1).Service_Duration := l_qte_line_dtl_tbl_out(1).Service_Duration;
2343                     l_qte_line_dtl_tbl(1).service_period   := l_qte_line_dtl_tbl_out(1).service_period;
2344                     l_qte_line_rec.end_date_active         := l_qte_line_rec_out.end_date_active;
2345 
2346 	            if aso_debug_pub.g_debug_flag = 'Y' then
2347                         aso_debug_pub.add('Populate_Quote_lines: After call to ASO Get_Duration x_return_status: '||X_Return_Status, 1, 'N');
2348                         aso_debug_pub.add('l_qte_line_rec.end_date_active:         '|| l_qte_line_rec.end_date_active, 1, 'N');
2349                         aso_debug_pub.add('l_qte_line_dtl_tbl(1).service_period:   '|| l_qte_line_dtl_tbl(1).service_period, 1, 'N');
2350                         aso_debug_pub.add('l_qte_line_dtl_tbl(1).Service_Duration: '|| l_qte_line_dtl_tbl(1).Service_Duration, 1, 'N');
2351                     end if;
2352 
2353                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2354                         RAISE FND_API.G_EXC_ERROR;
2355                     END IF;
2356 
2357                end if; --if l_call_get_duration = fnd_api.g_true then
2358 
2359            end if;  -- service item flag = 'Y'
2360 
2361      --Set the line_number of service items to the line_number of serviceable item, if the
2362      --service is attached to a quote line
2363 
2364      IF  nvl(l_service_item_flag,'N') = 'Y' AND p_qte_line_dtl_tbl.count > 0 THEN
2365 
2366           IF  l_qte_line_dtl_tbl(1).service_ref_line_id IS NOT NULL AND l_qte_line_dtl_tbl(1).service_ref_type_code = 'QUOTE' THEN
2367 
2368                OPEN  c_line_number(l_qte_line_dtl_tbl(1).service_ref_line_id);
2369                FETCH c_line_number INTO l_serviceable_line_number;
2370 
2371                if aso_debug_pub.g_debug_flag = 'Y' then
2372                    aso_debug_pub.add('Populate_quote_lines: l_serviceable_line_number: '|| l_serviceable_line_number);
2373                end if;
2374 
2375                IF c_line_number%FOUND AND l_serviceable_line_number IS NOT NULL THEN
2376                    l_qte_line_rec.line_number := l_serviceable_line_number;
2377                ELSE
2378                    if aso_debug_pub.g_debug_flag = 'Y' then
2379                        aso_debug_pub.add('Line Number does not exist for the serviceable item of the service');
2380                    end if;
2381                END IF;
2382 
2383                CLOSE c_line_number;
2384 
2385           END IF;
2386 
2387      END IF;
2388 
2389      --End of service line_number code
2390 
2391 
2392      --populate the config_item_id and bom_sort_order column values from cz_config_details_v
2393      --view if the calling application is passing config_header_id, config_revision_num and
2394      --component_code values. Fix for Bug#2980130
2395 
2396      if aso_debug_pub.g_debug_flag = 'Y' then
2397 
2398         aso_debug_pub.add('Before populating config_item_id,bom_sort_order. Operation_code = UPDATE');
2399         aso_debug_pub.add('l_qte_line_dtl_tbl.count: ' || l_qte_line_dtl_tbl.count);
2400 
2401      end if;
2402 
2403      for i in 1 .. l_qte_line_dtl_tbl.count loop
2404 
2405          if aso_debug_pub.g_debug_flag = 'Y' then
2406 
2407              aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_header_id:    '||l_qte_line_dtl_tbl(i).config_header_id);
2408              aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_revision_num: '||l_qte_line_dtl_tbl(i).config_revision_num);
2409              aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').component_code:      '||l_qte_line_dtl_tbl(i).component_code);
2410              aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_item_id:      '||l_qte_line_dtl_tbl(i).config_item_id);
2411              aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order:      '||l_qte_line_dtl_tbl(i).bom_sort_order);
2412 
2413          end if;
2414 
2415          if ( l_qte_line_dtl_tbl(i).config_header_id is not null and
2416               l_qte_line_dtl_tbl(i).config_header_id <> fnd_api.g_miss_num ) and
2417             ( l_qte_line_dtl_tbl(i).config_revision_num is not null and
2418               l_qte_line_dtl_tbl(i).config_revision_num <> fnd_api.g_miss_num ) and
2419               l_qte_line_dtl_tbl(i).operation_code = 'CREATE' then
2420 
2421              if ( l_qte_line_dtl_tbl(i).config_item_id is null or
2422                   l_qte_line_dtl_tbl(i).config_item_id = fnd_api.g_miss_num ) then
2423 
2424                     open c_config_item_id( l_qte_line_dtl_tbl(i).config_header_id,
2425                                          l_qte_line_dtl_tbl(i).config_revision_num,
2426                                          l_qte_line_dtl_tbl(i).component_code );
2427 
2428 
2429 
2430                     fetch c_config_item_id into l_qte_line_dtl_tbl(i).config_item_id,
2431                                                 l_qte_line_dtl_tbl(i).bom_sort_order;
2432 
2433                     if aso_debug_pub.g_debug_flag = 'Y' then
2434 
2435                         aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').config_item_id: '||l_qte_line_dtl_tbl(i).config_item_id);
2436                         aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order: '||l_qte_line_dtl_tbl(i).bom_sort_order);
2437 
2438                     end if;
2439 
2440                     if c_config_item_id%notfound then
2441 
2442                          if aso_debug_pub.g_debug_flag = 'Y' then
2443                              aso_debug_pub.add('Inside c_config_item_id%notfound cond.');
2444                          end if;
2445 
2446                          close c_config_item_id;
2447                          raise fnd_api.g_exc_error;
2448 
2449                     end if;
2450 
2451                     close c_config_item_id;
2452 
2453              elsif ( l_qte_line_dtl_tbl(i).bom_sort_order is null or
2454                      l_qte_line_dtl_tbl(i).bom_sort_order = fnd_api.g_miss_char ) then
2455 
2456                     open c_bom_sort_order( l_qte_line_dtl_tbl(i).config_header_id,
2457                                            l_qte_line_dtl_tbl(i).config_revision_num,
2458                                            l_qte_line_dtl_tbl(i).config_item_id );
2459 
2460                     fetch c_bom_sort_order into l_qte_line_dtl_tbl(i).bom_sort_order;
2461 
2462                     if aso_debug_pub.g_debug_flag = 'Y' then
2463 
2464                         aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').bom_sort_order: '||l_qte_line_dtl_tbl(i).bom_sort_order);
2465 
2466                     end if;
2467 
2468                     if c_bom_sort_order%notfound then
2469 
2470                          if aso_debug_pub.g_debug_flag = 'Y' then
2471                             aso_debug_pub.add('Inside c_bom_sort_order%notfound cond.');
2472                          end if;
2473 
2474                          close c_bom_sort_order;
2475                          raise fnd_api.g_exc_error;
2476 
2477                     end if;
2478 
2479                     close c_bom_sort_order;
2480 
2481              end if;
2482 
2483          end if;
2484 
2485      end loop;
2486 
2487      --end of fix for Bug#2980130
2488 
2489 	END IF; -- operation code 'update'
2490 
2491 
2492 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
2493 		aso_debug_pub.add('Populate_Quote_lines:Update :after  update '||X_Return_Status, 1, 'N');
2494 	end if;
2495 
2496 
2497     X_Qte_Line_Rec          :=  l_qte_line_rec;
2498     X_Qte_Line_Dtl_TBL      :=  l_Qte_Line_Dtl_TBL;
2499     X_Payment_Tbl           :=  l_payment_tbl;
2500     X_Price_Adj_Tbl         :=  l_price_adj_tbl;
2501     X_Shipment_Tbl          :=  l_shipment_tbl;
2502     X_Tax_Detail_Tbl        :=  l_tax_detail_tbl;
2503     X_Freight_Charge_Tbl    :=  l_freight_charge_tbl;
2504     X_Price_Attributes_Tbl  :=  l_price_attributes_tbl;
2505     X_Price_Adj_Attr_Tbl    :=  l_price_adj_attr_tbl;
2506     X_Line_Attribs_Ext_Tbl  :=  l_line_attribs_ext_tbl;
2507     X_Sales_Credit_tbl      :=  p_sales_credit_tbl;
2508     X_quote_party_tbl       :=  p_quote_party_tbl;
2509 END;
2510 
2511 
2512 
2513 
2514 
2515 --   *******************************************************
2516 --    Start of Comments
2517 --   *******************************************************
2518 --   API Name:  Create_Quote_Lines
2519 --   Type    :  Private
2520 --   Pre-Req :
2521 --   Parameters:
2522 --   IN
2523 --       p_api_version_number      IN   NUMBER     Required
2524 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
2525 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
2526 --       P_qte_lines_Rec     IN    qte_line_Rec_Type         Required
2527 --       P_Payment_Tbl       IN    Payment_Tbl_Type
2528 --       P_Price_Adj_Tbl     IN    Price_Adj_Tbl_Type
2529 --       P_Qte_Line_Dtl_Rec  IN    Qte_Line_Dtl_Rec_Type
2530 --       P_Shipment_Tbl      IN    Shipment_Tbl_Type
2531 --       P_Tax_Details_Tbl      IN    Tax_Details_Tbl_Type
2532 --       P_Freight_Charges_Tbl  IN    Freight_Charges_Tbl_Type
2533 --       P_Line_Relationship_Tbl IN   Line_Relationship_Tbl_Type
2534 --       P_Price_Attributes_Tbl  IN   Price_Attributes_Tbl_Type
2535 --       P_Price_Adj_Relationship_Tbl IN Price_Adj_Relationship_Tbl_Type
2536 --       P_Update_Header_Flag    IN   VARCHAR2     Optional  Default = FND_API.G_TRUE
2537 
2538 --   OUT:
2539 --       X_quote_line_id           OUT NOCOPY /* file.sql.39 change */ NUMBER,
2540 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2541 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
2542 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2543 --   Version : Current version 2.0
2544 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
2545 --         and basic operation, developer must manually add parameters and business logic as necessary.
2546 --
2547 --   End of Comments
2548 --
2549 PROCEDURE Create_Quote_Lines(
2550     P_Api_Version_Number    IN   NUMBER,
2551     P_Init_Msg_List         IN   VARCHAR2                                := FND_API.G_FALSE,
2552     P_Commit                IN   VARCHAR2                                := FND_API.G_FALSE,
2553     P_Validation_Level      IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
2554     P_Qte_Header_Rec        IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type       := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
2555     P_Qte_Line_Rec          IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type         := ASO_QUOTE_PUB.G_MISS_qte_line_REC,
2556     P_Control_REC           IN   ASO_QUOTE_PUB.Control_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Control_Rec,
2557     P_Payment_Tbl           IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_Payment_TBL,
2558     P_Price_Adj_Tbl         IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL,
2559     P_Qte_Line_Dtl_tbl      IN   ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type     := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL,
2560     P_Shipment_Tbl          IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_shipment_TBL,
2561     P_Tax_Detail_Tbl        IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL,
2562     P_Freight_Charge_Tbl    IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL,
2563     P_Price_Attributes_Tbl  IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL,
2564     P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type   := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
2565     P_Line_Attribs_Ext_Tbl  IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl,
2566     P_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type     := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
2567     P_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
2568     P_Update_Header_Flag    IN   VARCHAR2                                := 'Y',
2569     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
2570     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
2571     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
2572     X_Qte_Line_Dtl_tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_TBL_Type,
2573     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
2574     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
2575     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
2576     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type ,
2577     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
2578     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type,
2579     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
2580     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
2581     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
2582     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
2583     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
2584     )
2585 IS
2586 
2587    Cursor C_Get_quote(c_QUOTE_HEADER_ID Number) IS
2588    Select LAST_UPDATE_DATE, QUOTE_STATUS_ID, QUOTE_NUMBER, TOTAL_ADJUSTED_PERCENT
2589    From  ASO_QUOTE_HEADERS_ALL
2590    Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
2591 
2592    CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
2593    SELECT UPDATE_ALLOWED_FLAG, AUTO_VERSION_FLAG FROM ASO_QUOTE_STATUSES_B
2594    WHERE quote_status_id = c_qte_status_id;
2595 
2596    CURSOR C_Qte_Version (X_qte_number NUMBER) IS
2597    SELECT max(quote_version)
2598    FROM ASO_QUOTE_HEADERS_ALL
2599    WHERE quote_number = X_qte_number;
2600 
2601    CURSOR get_cust_acct(cust_QUOTE_HEADER_ID Number) IS
2602    SELECT CUST_ACCOUNT_ID
2603    FROM ASO_QUOTE_HEADERS_ALL
2604    WHERE QUOTE_HEADER_ID = cust_QUOTE_HEADER_ID;
2605 
2606    CURSOR c_reservation(C_inv_item_id NUMBER,C_Organization_id NUMBER) IS
2607    SELECT  INVENTORY_ITEM_ID,ORGANIZATION_ID  FROM mtl_system_items_b
2608    WHERE RESERVABLE_TYPE =1 AND
2609    MTL_TRANSACTIONS_ENABLED_FLAG = 'Y' AND
2610    INVENTORY_ITEM_ID= C_inv_item_id AND
2611    ORGANIZATION_ID = C_Organization_id;
2612 
2613 
2614    Cursor C_exp_date(c_QUOTE_HEADER_ID Number) IS
2615    Select quote_expiration_date
2616    From  ASO_QUOTE_HEADERS_ALL
2617    Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
2618 
2619    CURSOR C_org_id IS
2620    SELECT org_id
2621    FROM aso_quote_headers_all
2622    WHERE quote_header_id = p_qte_line_rec.quote_header_id;
2623 
2624    cursor c_service (p_qln_id number)is
2625    select service_item_flag,serviceable_product_flag
2626    from aso_quote_lines_All
2627    where quote_line_id = p_qln_id;
2628 
2629    --New code for Bug # 2498942 fix
2630 
2631    CURSOR C_line_category_code(p_quote_line_id  NUMBER) IS
2632    SELECT line_category_code
2633    FROM aso_quote_lines_all
2634    WHERE quote_line_id = p_quote_line_id;
2635 
2636    --End of new code for Bug # 2498942 fix
2637 
2638    Cursor c_container_item_check (C_inv_item_id NUMBER,C_Organization_id NUMBER) IS
2639    select config_model_type
2640    from mtl_system_items_b
2641    where INVENTORY_ITEM_ID= C_inv_item_id
2642    AND ORGANIZATION_ID = C_Organization_id;
2643 
2644 
2645    CURSOR c_header_org IS
2646    SELECT org_id,quote_type FROM aso_quote_headers_all
2647    WHERE quote_header_id = P_qte_line_rec.quote_header_id;
2648 
2649 
2650 
2651    l_api_version_number    NUMBER := 1.0;
2652    l_last_update_date      DATE;
2653    l_api_name              VARCHAR2(50) := 'Create_Quote_Lines';
2654    l_Return_Status         VARCHAR2(50);
2655    l_Msg_Count             NUMBER;
2656    l_Msg_Data              VARCHAR2(240);
2657    l_qte_status_id         NUMBER;
2658    l_update_allowed	       VARCHAR2(1);
2659    l_auto_version          VARCHAR2(1);
2660    l_quote_number          NUMBER;
2661    l_old_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
2662    l_qte_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
2663    l_quote_version         NUMBER;
2664    x_quote_header_id       NUMBER;
2665    l_hd_discount_percent   NUMBER;
2666    l_control_rec           ASO_QUOTE_PUB.Control_REc_Type := p_control_rec;
2667    l_pricing_control_rec   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
2668    l_hd_shipment_rec       ASO_QUOTE_PUB.Shipment_Rec_Type;
2669    l_hd_shipment_tbl       ASO_QUOTE_PUB.Shipment_Tbl_Type;
2670    l_hd_price_attr_tbl     ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
2671    x_qte_line_tbl          ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
2672    l_organization_id       NUMBER;
2673    l_invoice_org_id        NUMBER;
2674    l_ship_org_id           NUMBER;
2675    l_cust_acct             NUMBER;
2676    l_inv_item              NUMBER;
2677    l_org_id                NUMBER;
2678    l_quote_exp_date        DATE;
2679 
2680    l_service_item_flag         varchar2(1);
2681    l_serviceable_product_flag  varchar2(1);
2682    l_service                   varchar2(1);
2683    l_call_update               varchar2(1);
2684    l_line_category_code        VARCHAR2(30);
2685    l_db_order_type_id          Number;
2686 
2687    -- local variables
2688    l_Qte_Line_Rec           ASO_QUOTE_PUB.Qte_Line_Rec_Type          := ASO_QUOTE_PUB.G_MISS_qte_line_REC;
2689    l_Payment_Tbl            ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_Payment_TBL;
2690    l_Price_Adj_Tbl          ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL;
2691    l_Qte_Line_Dtl_rec       ASO_QUOTE_PUB.Qte_Line_Dtl_rec_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_REC;
2692    l_Shipment_Tbl           ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_shipment_TBL;
2693    l_Tax_Detail_Tbl         ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL;
2694    l_Freight_Charge_Tbl     ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL;
2695    l_Line_Rltship_Tbl       ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_line_rltship_TBL;
2696    l_Price_Attributes_Tbl   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL;
2697    l_Price_Adj_rltship_Tbl  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_price_adj_rltship_TBL;
2698    l_Price_Adj_Attr_Tbl     ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl;
2699    l_Line_Attribs_Ext_Tbl   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type  := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl;
2700    l_Qte_Line_Dtl_tbl       ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL;
2701    l_Sales_Credit_Tbl       ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
2702    l_Quote_Party_Tbl        ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
2703    l_qte_line_tbl           ASO_QUOTE_PUB.Qte_Line_tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
2704    l_tax_control_rec        ASO_TAX_INT.Tax_control_rec_type;
2705    x_tax_amount             NUMBER;
2706    l_tax_detail_rec         ASO_QUOTE_PUB.Tax_Detail_Rec_Type        := ASO_QUOTE_PUB.G_MISS_TAX_DETAIL_REC;
2707    lx_tax_shipment_tbl      ASO_QUOTE_PUB.Shipment_Tbl_Type;
2708    my_message               VARCHAR2(2000);
2709 
2710    l_copy_quote_control_rec aso_copy_quote_pub.copy_quote_control_rec_type;
2711    l_copy_quote_header_rec  aso_copy_quote_pub.copy_quote_header_rec_type;
2712    l_qte_nbr                number;
2713    l_shipment_tbl_out       ASO_QUOTE_PUB.Shipment_Tbl_Type;
2714 
2715    --new code to call overload pricing_order procedure
2716    lx_qte_header_rec        ASO_QUOTE_PUB.Qte_Header_Rec_Type;
2717    lx_qte_line_tbl          ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
2718    lx_qte_line_dtl_tbl      ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type;
2719    lx_price_adj_tbl         ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
2720    lx_price_adj_attr_tbl    ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
2721    lx_price_adj_rltship_tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
2722 
2723    -- bmishra defaulting framework
2724    l_def_control_rec               ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
2725    l_db_object_name                VARCHAR2(30);
2726    l_shipment_rec                  ASO_QUOTE_PUB.Shipment_Rec_Type;
2727    l_payment_rec                   ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
2728    lx_hd_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
2729    lx_hd_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
2730    lx_hd_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
2731    lx_hd_misc_rec                  ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
2732    lx_qte_line_rec                 ASO_QUOTE_PUB.Qte_Line_Rec_Type;
2733    lx_ln_misc_rec                  ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
2734    lx_ln_shipment_rec              ASO_QUOTE_PUB.Shipment_Rec_Type;
2735    lx_ln_payment_rec               ASO_QUOTE_PUB.Payment_Rec_Type;
2736    lx_ln_tax_detail_rec            ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
2737    lx_changed_flag                 VARCHAR2(1);
2738    lx_ln_payment_tbl	          ASO_QUOTE_PUB.Payment_Tbl_Type;
2739    lx_ln_Shipment_Tbl              ASO_QUOTE_PUB.Shipment_Tbl_Type;
2740    l_Orig_Payment_Tbl              ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_Payment_TBL;
2741    l_container_item_flag           varchar2(1) := null;
2742    l_is_model_published            number;
2743    l_def_Qte_Line_Rec              ASO_QUOTE_PUB.Qte_Line_Rec_Type          := ASO_QUOTE_PUB.G_MISS_qte_line_REC;
2744    l_quote_type                    VARCHAR2(1) := null;
2745    l_header_org_id                 NUMBER;
2746 
2747 
2748 BEGIN
2749 
2750       -- Standard Start of API savepoint
2751       SAVEPOINT CREATE_quote_lines_PVT;
2752 
2753       -- Standard call to check for call compatibility.
2754       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2755                        	                   p_api_version_number,
2756                                            l_api_name,
2757                                            G_PKG_NAME) THEN
2758           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2759       END IF;
2760 
2761       -- Initialize message list if p_init_msg_list is set to TRUE.
2762       IF FND_API.to_Boolean( p_init_msg_list ) THEN
2763           FND_MSG_PUB.initialize;
2764       END IF;
2765 
2766       -- Initialize API return status to SUCCESS
2767       x_return_status := FND_API.G_RET_STS_SUCCESS;
2768 
2769       IF aso_debug_pub.g_debug_flag = 'Y' THEN
2770                aso_debug_pub.add('Create_Quote_lines - Begin ', 1, 'Y');
2771      		aso_debug_pub.add('P_Control_REC.AUTO_VERSION_FLAG: '||nvl(P_Control_REC.AUTO_VERSION_FLAG,'null'),1,'N');
2772      		aso_debug_pub.add('P_Control_REC.pricing_request_type: '||nvl(P_Control_REC.pricing_request_type,'null'),1,'N');
2773      		aso_debug_pub.add('P_Control_REC.header_pricing_event: '||nvl(P_Control_REC.header_pricing_event,'null'),1,'N');
2774      		aso_debug_pub.add('P_Control_REC.line_pricing_event: '||nvl(P_Control_REC.line_pricing_event,'null'),1,'N');
2775      		aso_debug_pub.add('P_Control_REC.CALCULATE_TAX_FLAG: '||nvl(P_Control_REC.CALCULATE_TAX_FLAG,'null'),1,'N');
2776      		aso_debug_pub.add('P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG: '||nvl(P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG,'null'),1,'N');
2777      		aso_debug_pub.add('P_Control_REC.COPY_TASK_FLAG: '||nvl(P_Control_REC.COPY_TASK_FLAG,'null'),1,'N');
2778      		aso_debug_pub.add('P_Control_REC.COPY_NOTES_FLAG: '||nvl(P_Control_REC.COPY_NOTES_FLAG,'null'),1,'N');
2779      		aso_debug_pub.add('P_Control_REC.COPY_ATT_FLAG: '||nvl(P_Control_REC.COPY_ATT_FLAG,'null'),1,'N');
2780      		aso_debug_pub.add('P_Qte_Line_Rec.OPERATION_CODE: '||nvl(P_Qte_Line_Rec.OPERATION_CODE,'null'),1,'N');
2781      		--aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_LINE_ID: '||nvl(P_Qte_Line_Rec.QUOTE_LINE_ID,'null'),1,'N');
2782      		aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_HEADER_ID: '||nvl(to_char(P_Qte_Line_Rec.QUOTE_HEADER_ID),'null'),1,'N');
2783      		aso_debug_pub.add('P_Qte_Line_Rec.LINE_CATEGORY_CODE: '||nvl(P_Qte_Line_Rec.LINE_CATEGORY_CODE,'null'),1,'N');
2784      		aso_debug_pub.add('P_Qte_Line_Rec.ITEM_TYPE_CODE: '||nvl(P_Qte_Line_Rec.ITEM_TYPE_CODE,'null'),1,'N');
2785      		aso_debug_pub.add('P_Qte_Line_Rec.ORDER_LINE_TYPE_ID: '||nvl(to_char(P_Qte_Line_Rec.ORDER_LINE_TYPE_ID),'null'),1,'N');
2786      		aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_PARTY_SITE_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_PARTY_SITE_ID),'null'),1,'N');
2787      		aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_PARTY_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_PARTY_ID),'null'),1,'N');
2788      		aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_CUST_ACCOUNT_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_CUST_ACCOUNT_ID),'null'),1,'N');
2789      		aso_debug_pub.add('P_Qte_Line_Rec.INVENTORY_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.INVENTORY_ITEM_ID),'null'),1,'N');
2790      		aso_debug_pub.add('P_Qte_Line_Rec.QUANTITY: '||nvl(to_char(P_Qte_Line_Rec.QUANTITY),'null'),1,'N');
2791      		aso_debug_pub.add('P_Qte_Line_Rec.UOM_CODE: '||nvl(P_Qte_Line_Rec.UOM_CODE,'null'),1,'N');
2792      		aso_debug_pub.add('P_Qte_Line_Rec.PRICING_QUANTITY_UOM: '||nvl(P_Qte_Line_Rec.PRICING_QUANTITY_UOM,'null'),1,'N');
2793      		aso_debug_pub.add('P_Qte_Line_Rec.PRICE_LIST_ID: '||nvl(to_char(P_Qte_Line_Rec.PRICE_LIST_ID),'null'),1,'N');
2794      		aso_debug_pub.add('P_Qte_Line_Rec.PRICE_LIST_LINE_ID: '||nvl(to_char(P_Qte_Line_Rec.PRICE_LIST_LINE_ID),'null'),1,'N');
2795      		aso_debug_pub.add('P_Qte_Line_Rec.CURRENCY_CODE: '||nvl(P_Qte_Line_Rec.CURRENCY_CODE,'null'),1,'N');
2796      		aso_debug_pub.add('P_Qte_Line_Rec.RELATED_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.RELATED_ITEM_ID),'null'),1,'N');
2797                aso_debug_pub.add('P_Qte_Line_Rec.org_id: '||nvl(to_char(P_Qte_Line_Rec.org_id),'null'));
2798       end if;
2799       --
2800       -- API body
2801       --
2802 
2803       -- ******************************************************************
2804       -- Validate Environment
2805       -- ******************************************************************
2806       IF FND_GLOBAL.User_Id IS NULL THEN
2807           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2808               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
2809               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
2810               FND_MSG_PUB.ADD;
2811           END IF;
2812           RAISE FND_API.G_EXC_ERROR;
2813       END IF;
2814 
2815 
2816 
2817       IF (p_update_header_flag = 'Y') THEN
2818 
2819 
2820           Open C_Get_quote( p_qte_line_rec.QUOTE_HEADER_ID);
2821           Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id, l_quote_number, l_hd_discount_percent;
2822 
2823 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
2824       	      aso_debug_pub.add('After c_get_quote',1,'N');
2825       	      aso_debug_pub.add('l_qte_status_id: '||nvl(to_char(l_qte_status_id),'null'),1,'N');
2826       	      aso_debug_pub.add('l_quote_number: '||nvl(to_char(l_quote_number),'null'),1,'N');
2827       	      aso_debug_pub.add('l_hd_discount_percent: '||nvl(to_char(l_hd_discount_percent),'null'),1,'N');
2828 	  end if;
2829 
2830 
2831           If ( C_Get_quote%NOTFOUND) Then
2832 
2833               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2834                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
2835                   FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
2836                   FND_MSG_PUB.Add;
2837               END IF;
2838               raise FND_API.G_EXC_ERROR;
2839           END IF;
2840           Close C_Get_quote;
2841 
2842 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
2843       	      aso_debug_pub.add('After C_Get_quote Cursor call ',1,'N');
2844 	  end if;
2845 
2846           If (l_last_update_date is NULL or l_last_update_date = FND_API.G_MISS_Date ) Then
2847               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2848                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
2849                   FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
2850                   FND_MSG_PUB.ADD;
2851               END IF;
2852               raise FND_API.G_EXC_ERROR;
2853           End if;
2854 
2855           -- Check Whether record has been changed by someone else
2856 
2857           If (trunc(l_last_update_date) <> trunc(p_control_rec.last_update_date)) Then
2858               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2859                   FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
2860                   FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
2861                   FND_MSG_PUB.ADD;
2862               END IF;
2863               raise FND_API.G_EXC_ERROR;
2864           End if;
2865 
2866 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
2867       	      aso_debug_pub.add('After Last update date validation',1,'N');
2868 	  end if;
2869 
2870           Open c_qte_status (l_qte_status_id);
2871           Fetch C_qte_status into l_update_allowed, l_auto_version;
2872 
2873 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
2874       	      aso_debug_pub.add('after c_qte_status',1,'N');
2875       	      aso_debug_pub.add('l_update_allowed: '|| nvl(l_update_allowed,'null'),1,'N');
2876       	      aso_debug_pub.add('l_auto_version:   '|| nvl(l_auto_version,'null'),1,'N');
2877 	  end if;
2878 
2879           -- hyang quote_status
2880           -- removed checking of update_allowed_flag
2881           -- end of hyang quote_status
2882           Close c_qte_status;
2883 
2884 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
2885       	      aso_debug_pub.add('After c_qte_status cursor call',1,'N');
2886 	  end if;
2887 
2888           --If the control rec does not set auto version to 'Y' then it should not be versioned
2889 
2890           IF p_control_rec.auto_version_flag = FND_API.G_TRUE AND NVL(l_auto_version,'Y') = 'Y' THEN
2891 
2892 	      OPEN C_Qte_Version(l_quote_number);
2893 	      FETCH C_Qte_Version into l_quote_version;
2894 	      l_quote_version := nvl(l_quote_version, 0) + 1;
2895 	      CLOSE C_Qte_Version;
2896           ELSE
2897               l_auto_version := 'N';
2898 
2899           END IF;
2900 
2901           -- update Quote Header
2902 
2903           -- validate header information
2904 
2905           IF l_auto_version = 'Y' THEN
2906 
2907 	      l_old_header_rec := ASO_UTILITY_PVT.Query_Header_Row(p_qte_line_rec.QUOTE_HEADER_ID);
2908 
2909               -- header should be updated only if the flag is set to 'Y'
2910               -- update quote header with the new version number
2911               -- should be called after querying the existing rec and before copying
2912 
2913               l_copy_quote_control_rec.new_version     :=  FND_API.G_TRUE;
2914               l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
2915 
2916               aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
2917                                              P_Init_Msg_List           =>  FND_API.G_FALSE,
2918                                              P_Commit                  =>  FND_API.G_FALSE,
2919                                              P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
2920                                              P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
2921                                              X_Qte_Header_Id           =>  x_quote_header_id,
2922                                              X_Qte_Number              =>  l_qte_nbr,
2923                                              X_Return_Status           =>  l_return_status,
2924                                              X_Msg_Count               =>  x_msg_count,
2925                                              X_Msg_Data                =>  x_msg_data
2926                                             );
2927 
2928               IF aso_debug_pub.g_debug_flag = 'Y' THEN
2929             	  aso_debug_pub.add('Create_Quote_Lines: After copy_quote l_return_status: '|| l_return_status);
2930             	  aso_debug_pub.add('Create_Quote_Lines: After copy_quote x_quote_header_id: '|| x_quote_header_id);
2931             	  aso_debug_pub.add('Create_Quote_Lines: After copy_quote l_qte_nbr:  '|| l_qte_nbr);
2932               end if;
2933 
2934               IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2935 
2936                  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2937 
2938                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2939                      FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
2940                      FND_MESSAGE.Set_Token('ROW', 'ASO_QUOTE_HEADER', TRUE);
2941                      FND_MSG_PUB.ADD;
2942                  END IF;
2943 
2944                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2945 
2946               ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2947 
2948                  x_return_status := FND_API.G_RET_STS_ERROR;
2949 
2950               END IF;
2951 
2952               update aso_quote_headers_all
2953                  set quote_version      =  l_quote_version + 1,
2954                      max_version_flag   =  'Y',
2955                      last_update_date   =  sysdate,
2956                      last_updated_by    =  fnd_global.user_id,
2957                      last_update_login  =  fnd_global.conc_login_id
2958                  where quote_header_id = p_qte_line_rec.quote_header_id;
2959 
2960                  update aso_quote_headers_all
2961                  set max_version_flag   =  'N',
2962                      quote_version      =  l_old_header_rec.quote_version,
2963                      last_update_date   =  sysdate,
2964                      last_updated_by    =  fnd_global.user_id,
2965                      last_update_login  =  fnd_global.conc_login_id
2966                  where quote_header_id = x_quote_header_id;
2967 
2968                  update aso_quote_headers_all
2969                  set quote_version      =  l_quote_version,
2970                      last_update_date   =  sysdate,
2971                      last_updated_by    =  fnd_global.user_id,
2972                      last_update_login  =  fnd_global.conc_login_id
2973                  where quote_header_id = p_qte_line_rec.quote_header_id;
2974 
2975           END IF;    -- auto_version set to 'Y'
2976 
2977       END IF;    -- header update flag
2978 
2979 
2980       -- bmishra line defaulting framework begin
2981       OPEN c_header_org;
2982       FETCH c_header_org INTO l_header_org_id,l_quote_type;
2983       CLOSE c_header_org;
2984 
2985 
2986       IF aso_debug_pub.g_debug_flag = 'Y' THEN
2987           aso_debug_pub.add('Create_Quote_Line: l_header_org_id'||l_header_org_id, 1, 'Y');
2988           aso_debug_pub.add('Create_Quote_Line:l_quote_type'||l_quote_type, 1, 'Y');
2989           aso_debug_pub.add('Create_Quote_Line: Before defaulting framework', 1, 'Y');
2990           aso_debug_pub.add('Create_Quote_Line: populate defaulting control record from the line control record', 1, 'Y');
2991       END IF ;
2992 
2993       l_def_control_rec.Dependency_Flag       := p_control_rec.Dependency_Flag;
2994       l_def_control_rec.Defaulting_Flag       := p_control_rec.Defaulting_Flag;
2995       l_def_control_rec.Application_Type_Code := p_control_rec.Application_Type_Code;
2996       l_def_control_rec.Defaulting_Flow_Code  := 'CREATE';
2997 
2998       IF aso_debug_pub.g_debug_flag = 'Y' THEN
2999           aso_debug_pub.add('Defaulting_Fwk_Flag:   '|| p_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
3000           aso_debug_pub.add('Dependency_Flag:       '|| l_def_control_rec.Dependency_Flag, 1, 'Y');
3001           aso_debug_pub.add('Defaulting_Flag:       '|| l_def_control_rec.Defaulting_Flag, 1, 'Y');
3002           aso_debug_pub.add('Application_Type_Code: '|| l_def_control_rec.Application_Type_Code, 1, 'Y');
3003           aso_debug_pub.add('Defaulting_Flow_Code:  '|| l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
3004       END IF ;
3005 
3006       IF l_def_control_rec.application_type_code = 'QUOTING HTML' OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
3007           l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_QUOTE_LINE_DB_NAME;
3008       ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
3009           l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_STORE_CART_LINE_DB_NAME;
3010       ELSE
3011           l_control_rec.Defaulting_Fwk_Flag := 'N';
3012       END IF;
3013 
3014       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3015           aso_debug_pub.add('Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
3016       END IF ;
3017 
3018       IF p_shipment_tbl.count > 0 THEN
3019           l_shipment_rec := p_shipment_tbl(1);
3020       END IF;
3021 
3022       IF p_payment_tbl.count > 0 THEN
3023           l_payment_rec := p_payment_tbl(1);
3024       END IF;
3025 
3026       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3027           aso_debug_pub.add('Create_Quote_Line - Before Calling Default_Entity procedure', 1, 'Y');
3028       END IF ;
3029 
3030       IF l_control_rec.defaulting_fwk_flag = 'Y'  AND nvl(l_quote_type,'X')  <> 'T' THEN
3031 
3032          l_def_Qte_Line_Rec := p_qte_line_rec;
3033          l_def_Qte_Line_Rec.org_id := l_header_org_id;
3034 
3035 
3036           ASO_DEFAULTING_INT.Default_Entity ( p_api_version           =>  1.0,
3037                                               p_control_rec           =>  l_def_control_rec,
3038                                               p_database_object_name  =>  l_db_object_name,
3039                                               p_quote_line_rec        =>  l_def_Qte_Line_Rec,
3040                                               p_line_shipment_rec     =>  l_shipment_rec,
3041                                               p_line_payment_rec      =>  l_payment_rec,
3042                                               x_quote_header_rec      =>  l_qte_header_rec,
3043                                               x_header_misc_rec       =>  lx_hd_misc_rec,
3044                                               x_header_shipment_rec   =>  lx_hd_shipment_rec,
3045                                               x_header_payment_rec    =>  lx_hd_payment_rec,
3046                                               x_header_tax_detail_rec =>  lx_hd_tax_detail_rec,
3047                                               x_quote_line_rec        =>  lx_qte_line_rec,
3048                                               x_line_misc_rec         =>  lx_ln_misc_rec,
3049                                               x_line_shipment_rec     =>  lx_ln_shipment_rec,
3050                                               x_line_payment_rec      =>  lx_ln_payment_rec,
3051                                               x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec,
3052                                               x_changed_flag          =>  lx_changed_flag,
3053                                               x_return_status         =>  x_return_status,
3054                                               x_msg_count             =>  x_msg_count,
3055                                               x_msg_data              =>  x_msg_data);
3056 
3057           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3058               aso_debug_pub.add('Create_Quote_line: After call to ASO_DEFAULTING_INT.Default_Entity', 1, 'Y');
3059               aso_debug_pub.add('Create_Quote_line: x_return_status: '|| x_return_status, 1, 'Y');
3060           end if;
3061 
3062           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3063 
3064               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3065                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
3066                   FND_MSG_PUB.ADD;
3067               END IF;
3068 
3069               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3070                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3071               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3072                    RAISE FND_API.G_EXC_ERROR;
3073               END IF;
3074 
3075           END IF;
3076 
3077           IF aso_quote_headers_pvt.Shipment_Null_Rec_Exists(lx_ln_shipment_rec, l_db_object_name) THEN
3078               lx_ln_shipment_tbl(1) := lx_ln_shipment_rec;
3079           END IF;
3080 
3081 --          IF aso_quote_headers_pvt.Payment_Null_Rec_Exists(lx_ln_payment_rec, l_db_object_name) THEN
3082           lx_ln_payment_tbl(1) := lx_ln_payment_rec;
3083 --          END IF;
3084 
3085 	 ELSE
3086 
3087 	     lx_qte_line_rec := p_qte_line_rec;
3088           lx_ln_shipment_tbl := p_shipment_tbl;
3089           lx_ln_payment_tbl := p_payment_tbl;
3090 
3091       END IF;
3092 
3093 
3094 -- bmishra defaulting framework end
3095 
3096 
3097 	IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
3098 
3099           -- item type code must exist in aso_lookups and the item, item type
3100           -- should exist in mtl_system_items
3101 
3102           ASO_VALIDATE_PVT.Validate_item_type_code(
3103 		  p_init_msg_list  => FND_API.G_FALSE,
3104 		  p_item_type_code => lx_qte_line_rec.item_type_code,
3105 		  x_return_status  => x_return_status,
3106                   x_msg_count      => x_msg_count,
3107                   x_msg_data       => x_msg_data);
3108 
3109 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3110               RAISE FND_API.G_EXC_ERROR;
3111           END IF;
3112 
3113 	  -- invoice_to_party_id must exist and be active in HZ_PARTIES,
3114 	  -- and have the usage INVOICE.
3115 
3116 	  ASO_VALIDATE_PVT.Validate_Party (
3117 		p_init_msg_list	=> FND_API.G_FALSE,
3118 		p_party_id	=> lx_qte_line_rec.invoice_to_party_id,
3119 		p_party_usage	=> 'INVOICE',
3120 		x_return_status => x_return_status,
3121                 x_msg_count     => x_msg_count,
3122                 x_msg_data      => x_msg_data);
3123 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3124               RAISE FND_API.G_EXC_ERROR;
3125           END IF;
3126 
3127 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
3128 	      aso_debug_pub.add('Create_Quote_lines - after validate_party ', 1, 'N');
3129 	  end if;
3130 
3131 	  -- price list must exist and be active in OE_PRICE_LISTS
3132 	  ASO_VALIDATE_PVT.Validate_PriceList (
3133 		p_init_msg_list	=> FND_API.G_FALSE,
3134 		p_price_list_id	=> lx_qte_line_rec.price_list_id,
3135 		x_return_status => x_return_status,
3136                 x_msg_count     => x_msg_count,
3137                 x_msg_data      => x_msg_data);
3138 
3139 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3140                RAISE FND_API.G_EXC_ERROR;
3141           END IF;
3142 
3143 
3144           ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
3145   	        p_init_msg_list		=> FND_API.G_FALSE,
3146                 p_price_list_id	        => lx_qte_line_rec.price_list_id,
3147                 p_quote_expiration_date => l_quote_exp_date,
3148                 x_return_status         => x_return_status,
3149 	        x_msg_count	        => x_msg_count,
3150 	        x_msg_data	        => x_msg_data);
3151 
3152           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3153 	      RAISE FND_API.G_EXC_ERROR;
3154           END IF;
3155 
3156 	  -- shp_to_party_id must exist and be active in HZ_PARTIES and have the usage SHIP.
3157           For i in 1..lx_ln_shipment_tbl.count LOOP
3158 
3159 	    ASO_VALIDATE_PVT.Validate_Party (
3160 		p_init_msg_list	=> FND_API.G_FALSE,
3161 		p_party_id	=> lx_ln_shipment_tbl(i).ship_to_party_id,
3162 		p_party_usage	=> 'SHIP',
3163 		x_return_status => x_return_status,
3164                 x_msg_count     => x_msg_count,
3165                 x_msg_data      => x_msg_data);
3166 
3167 	    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3168                 RAISE FND_API.G_EXC_ERROR;
3169             END IF;
3170 
3171 	  END LOOP;
3172 
3173           ASO_VALIDATE_PVT.Validate_Marketing_Source_Code(
3174 		p_init_msg_list         => FND_API.G_FALSE,
3175 		p_mkting_source_code_id	=> lx_qte_line_rec.marketing_source_code_id,
3176                 x_return_status         => x_return_status,
3177                 x_msg_count             => x_msg_count,
3178                 x_msg_data              => x_msg_data);
3179 
3180           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3181                RAISE FND_API.G_EXC_ERROR;
3182           END IF;
3183 
3184           FOR i in 1..p_qte_line_dtl_tbl.count LOOP
3185 
3186              ASO_VALIDATE_PVT.Validate_Service_Duration(
3187 		p_init_msg_list      => FND_API.G_FALSE,
3188         	p_service_duration   => p_qte_line_dtl_tbl(i).service_duration,
3189 		x_return_status => x_return_status,
3190                 x_msg_count     => x_msg_count,
3191                 x_msg_data      => x_msg_data);
3192 
3193              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3194                RAISE FND_API.G_EXC_ERROR;
3195              END IF;
3196 
3197           END LOOP;
3198 
3199 
3200           FOR i in 1..p_sales_credit_tbl.count LOOP
3201 
3202              if aso_debug_pub.g_debug_flag = 'Y' then
3203                  aso_debug_pub.add('p_sales_credit_tbl('||i||').operation_code: '|| p_sales_credit_tbl(i).operation_code,1,'Y');
3204              end if;
3205 
3206              if (p_sales_credit_tbl(i).operation_code = 'CREATE' or p_sales_credit_tbl(i).operation_code = 'UPDATE') then
3207 
3208                  ASO_VALIDATE_PVT.Validate_Resource_id(
3209 		             p_init_msg_list => FND_API.G_FALSE,
3210 		             p_resource_id   => p_sales_credit_tbl(i).resource_id,
3211 		             x_return_status => x_return_status,
3212                        x_msg_count     => x_msg_count,
3213                        x_msg_data      => x_msg_data);
3214 
3215                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3216 
3217                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3218 		               FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
3219 		               FND_MSG_PUB.ADD;
3220 	                END IF;
3221                      RAISE FND_API.G_EXC_ERROR;
3222 
3223                  END IF;
3224 
3225                  ASO_VALIDATE_PVT.Validate_Resource_group_id(
3226 		             p_init_msg_list      => FND_API.G_FALSE,
3227 		             p_resource_group_id  => p_sales_credit_tbl(i).resource_group_id,
3228 		             x_return_status      => x_return_status,
3229                        x_msg_count          => x_msg_count,
3230                        x_msg_data           => x_msg_data);
3231 
3232                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3233                     RAISE FND_API.G_EXC_ERROR;
3234                  END IF;
3235 
3236                  ASO_VALIDATE_PVT.Validate_Salescredit_Type(
3237 		             p_init_msg_list        => FND_API.G_FALSE,
3238 		             p_salescredit_type_id	 => p_sales_credit_tbl(i).sales_credit_type_id,
3239 		             x_return_status        => x_return_status,
3240                        x_msg_count            => x_msg_count,
3241                        x_msg_data             => x_msg_data);
3242 
3243                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3244                     RAISE FND_API.G_EXC_ERROR;
3245                  END IF;
3246 
3247                  ASO_VALIDATE_PVT.Validate_EmployPerson(
3248         	             p_init_msg_list => FND_API.G_FALSE,
3249         	             p_employee_id   => p_sales_credit_tbl(i).employee_person_id,
3250 		             x_return_status => x_return_status,
3251                        x_msg_count     => x_msg_count,
3252                        x_msg_data      => x_msg_data);
3253 
3254                  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3255                     RAISE FND_API.G_EXC_ERROR;
3256                  END IF;
3257 
3258              end if;
3259 
3260           END LOOP;
3261 
3262           FOR i in 1..p_quote_party_tbl.count LOOP
3263 
3264              ASO_VALIDATE_PVT.Validate_Party_Type(
3265 		         p_init_msg_list => FND_API.G_FALSE,
3266 		         p_party_type    => p_quote_party_tbl(i).party_type,
3267         	         x_return_status => x_return_status,
3268                          x_msg_count     => x_msg_count,
3269                          x_msg_data      => x_msg_data);
3270 
3271              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3272                  RAISE FND_API.G_EXC_ERROR;
3273              END IF;
3274 
3275              ASO_VALIDATE_PVT.Validate_Party(
3276 		       p_init_msg_list => FND_API.G_FALSE,
3277 		       p_party_id      => p_quote_party_tbl(i).party_id,
3278 		       p_party_usage   => null,
3279 		       x_return_status => x_return_status,
3280                        x_msg_count     => x_msg_count,
3281                        x_msg_data      => x_msg_data);
3282 
3283              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3284                  RAISE FND_API.G_EXC_ERROR;
3285              END IF;
3286 
3287  	     ASO_VALIDATE_PVT.Validate_Party_Object_Type(
3288 		       p_init_msg_list	    => FND_API.G_FALSE,
3289 		       p_party_object_type  => p_quote_party_tbl(i).party_object_type,
3290 		       x_return_status      => x_return_status,
3291                        x_msg_count          => x_msg_count,
3292                        x_msg_data           => x_msg_data);
3293 
3294              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3295                  RAISE FND_API.G_EXC_ERROR;
3296              END IF;
3297 
3298           END LOOP;
3299 
3300 
3301              ASO_VALIDATE_PVT.Validate_MiniSite(
3302                 p_init_msg_list => FND_API.G_FALSE,
3303                 p_minisite_id   => lx_qte_line_rec.minisite_id,
3304                 x_return_status => x_return_status,
3305                 x_msg_count     => x_msg_count,
3306                 x_msg_data      => x_msg_data);
3307              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3308               RAISE FND_API.G_EXC_ERROR;
3309             END IF;
3310 
3311              ASO_VALIDATE_PVT.Validate_Section(
3312                 p_init_msg_list => FND_API.G_FALSE,
3313                 p_section_id    => lx_qte_line_rec.section_id,
3314                 x_return_status => x_return_status,
3315                 x_msg_count     => x_msg_count,
3316                 x_msg_data      => x_msg_data);
3317              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3318               RAISE FND_API.G_EXC_ERROR;
3319             END IF;
3320 
3321       END IF;
3322 
3323 
3324 
3325       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD THEN
3326 
3327          -- if organization id does not exist then it should be defaulted
3328 
3329          IF lx_qte_line_rec.organization_id is NULL or
3330             lx_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
3331 
3332              -- default org id from header
3333 
3334              IF lx_qte_line_rec.org_id is NULL  OR  lx_qte_line_rec.org_id = FND_API.G_MISS_NUM THEN
3335 
3336                  OPEN C_org_id;
3337                  FETCH C_org_id into l_org_id;
3338                  IF C_org_id%NOTFOUND THEN
3339 
3340                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3341                            FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3342                            FND_MESSAGE.Set_Token('COLUMN', 'ORG_ID', FALSE);
3343                            FND_MSG_PUB.ADD;
3344                       END IF;
3345                  END IF;
3346                  CLOSE C_org_id;
3347              END IF;
3348 
3349              l_organization_id := oe_profile.value('OE_ORGANIZATION_ID', l_org_id);
3350 
3351          ELSE
3352 
3353 		   l_organization_id := lx_qte_line_rec.organization_id;
3354 
3355          END IF;
3356 
3357 
3358          -- UOM must exist and should be in ASO_I_UNITS_OF_MEASURE
3359 
3360          ASO_VALIDATE_PVT.Validate_UOM_code(
3361 		      p_init_msg_list	  => FND_API.G_FALSE,
3362 		      p_uom_code          => lx_qte_line_rec.uom_code,
3363                       p_organization_id   => l_organization_id,
3364                       p_inventory_item_id => lx_qte_line_rec.inventory_item_id,
3365 		      x_return_status     => x_return_status,
3366                       x_msg_count         => x_msg_count,
3367                       x_msg_data          => x_msg_data);
3368 
3369 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3370               RAISE FND_API.G_EXC_ERROR;
3371           END IF;
3372 
3373           if aso_debug_pub.g_debug_flag = 'Y' THEN
3374               aso_debug_pub.add('Create_Quote_lines - After validate_UOM_code ', 1, 'N');
3375           end if;
3376 
3377           ASO_VALIDATE_PVT.Validate_For_GreaterEndDate (
3378 		      p_init_msg_list	=> FND_API.G_FALSE,
3379 		      p_start_date      => lx_qte_line_rec.start_date_active,
3380         	      p_end_date        => lx_qte_line_rec.end_date_active,
3381 		      x_return_status   => x_return_status,
3382                       x_msg_count       => x_msg_count,
3383                       x_msg_data        => x_msg_data);
3384 
3385 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3386 
3387            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3388 	     FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_END_DATE');
3389 	     FND_MSG_PUB.ADD;
3390 	   END IF;
3391               RAISE FND_API.G_EXC_ERROR;
3392           END IF;
3393 
3394        FOR i in 1..p_qte_line_dtl_tbl.count LOOP
3395         ASO_VALIDATE_PVT.Validate_Returns(
3396         p_init_msg_list	  	=> FND_API.G_FALSE,
3397         p_return_ref_type_code  => p_qte_line_dtl_tbl(i).return_ref_type,
3398         p_return_ref_header_id  => p_qte_line_dtl_tbl(i).return_ref_header_id,
3399         p_return_ref_line_id    => p_qte_line_dtl_tbl(i).return_ref_line_id,
3400 	x_return_status => x_return_status,
3401         x_msg_count     => x_msg_count,
3402         x_msg_data      => x_msg_data);
3403 
3404 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3405             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3406 	     FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3407              FND_MESSAGE.Set_Token('INFO', 'RETURN', FALSE);
3408 	     FND_MSG_PUB.ADD;
3409 	   END IF;
3410               RAISE FND_API.G_EXC_ERROR;
3411           END IF;
3412         END LOOP;
3413 
3414 	  -- tax_exempt_flag must be in 'E', 'R' and 'S'
3415 	  -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
3416          FOR i in 1..p_tax_detail_tbl.count LOOP
3417 	  ASO_VALIDATE_PVT.Validate_Tax_Exemption (
3418 		p_init_msg_list	=> FND_API.G_FALSE,
3419 		p_tax_exempt_flag	=> p_tax_detail_tbl(i).tax_exempt_flag,
3420 		p_tax_exempt_reason_code=> p_tax_detail_tbl(i).tax_exempt_reason_code,
3421 		x_return_status => x_return_status,
3422                 x_msg_count     => x_msg_count,
3423                 x_msg_data      => x_msg_data);
3424 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3425             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3426 	     FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3427              FND_MESSAGE.Set_Token('INFO', 'TAX', FALSE);
3428 	     FND_MSG_PUB.ADD;
3429 	   END IF;
3430               RAISE FND_API.G_EXC_ERROR;
3431           END IF;
3432          END LOOP;
3433 
3434       FOR i in 1..p_qte_line_dtl_tbl.count LOOP
3435 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
3436         		aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Create_Quote_Lines:config_header_id: '|| p_qte_line_dtl_tbl(i).config_header_id,1,'N');
3437         		aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Create_Quote_Lines:config_revision_num: '|| p_qte_line_dtl_tbl(i).config_revision_num,1,'N');
3438         		aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Create_Quote_Lines:component_code: '|| p_qte_line_dtl_tbl(i).component_code,1,'N');
3439         		aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Create_Quote_Lines:config_item_id: '|| p_qte_line_dtl_tbl(i).config_item_id,1,'N');
3440 		end if;
3441 
3442         -- We will add config_item_id when we will implement solution model
3443         IF ((p_qte_line_dtl_tbl(i).config_header_id IS NOT NULL AND
3444              p_qte_line_dtl_tbL(i).config_header_id <> FND_API.G_MISS_NUM) AND
3445             (p_qte_line_dtl_tbl(i).config_revision_num IS NOT NULL AND
3446              p_qte_line_dtl_tbl(i).config_revision_num <> FND_API.G_MISS_NUM) AND
3447             (p_qte_line_dtl_tbl(i).config_item_id IS NOT NULL AND
3448              p_qte_line_dtl_tbl(i).config_item_id <> FND_API.G_MISS_NUM)) THEN
3449 
3450              ASO_VALIDATE_PVT.Validate_Configuration(
3451 		        p_init_msg_list			=> FND_API.G_FALSE,
3452 		        p_config_header_id         => p_qte_line_dtl_tbl(i).config_header_id,
3453                   p_config_revision_num      => p_qte_line_dtl_tbl(i).config_revision_num,
3454                   p_config_item_id           => p_qte_line_dtl_tbl(i).config_item_id,
3455       		   x_return_status            => x_return_status,
3456                   x_msg_count                => x_msg_count,
3457                   x_msg_data                 => x_msg_data);
3458 
3459 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3460              		aso_debug_pub.add('Create_Quote_Lines after Validate_Configuration :x_return_status:'||x_return_status,1,'N');
3461 			end if;
3462 	        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3463                   RAISE FND_API.G_EXC_ERROR;
3464              END IF;
3465          END IF;
3466       END LOOP;
3467 
3468 
3469        FOR i in 1..p_qte_line_dtl_tbl.count LOOP
3470 	ASO_VALIDATE_PVT.Validate_Delayed_Service(
3471 		p_init_msg_list		=> FND_API.G_FALSE,
3472 		p_service_ref_type_code
3473 				=> p_qte_line_dtl_tbl(i).service_ref_type_code,
3474         	p_service_ref_line_id
3475 				=> p_qte_line_dtl_tbl(i).service_ref_line_id,
3476         	p_service_ref_system_id
3477 				=> p_qte_line_dtl_tbl(i).service_ref_system_id,
3478 		x_return_status => x_return_status,
3479                 x_msg_count     => x_msg_count,
3480                 x_msg_data      => x_msg_data);
3481 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3482            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3483 	     FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3484              FND_MESSAGE.Set_Token('INFO', 'DELAYED_SERVICE', FALSE);
3485 	     FND_MSG_PUB.ADD;
3486 	    END IF;
3487               RAISE FND_API.G_EXC_ERROR;
3488           END IF;
3489        END LOOP;
3490 
3491 
3492 
3493   FOR i in 1..p_quote_party_tbl.count LOOP
3494     ASO_VALIDATE_PVT.Validate_Party_Object_Id(
3495 	p_init_msg_list    => FND_API.G_FALSE,
3496         p_party_id         => p_quote_party_tbl(i).party_id,
3497 	p_party_object_type     => p_quote_party_tbl(i).party_object_type,
3498         p_party_object_id       => p_quote_party_tbl(i).party_object_id,
3499         x_return_status => x_return_status,
3500         x_msg_count     => x_msg_count,
3501         x_msg_data      => x_msg_data);
3502       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3503            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3504 	     FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3505              FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
3506 	     FND_MSG_PUB.ADD;
3507 	    END IF;
3508               RAISE FND_API.G_EXC_ERROR;
3509       END IF;
3510   END LOOP;
3511 
3512 
3513 -- rahsan 10/11/2000
3514 -- new validation for ship_from_org_id
3515 
3516         IF lx_ln_shipment_tbl.count > 0 THEN
3517 
3518             IF aso_debug_pub.g_debug_flag = 'Y' THEN
3519                 aso_debug_pub.add('Create_Quote_Lines: Before Validate_ship_from_org_ID', 1, 'Y');
3520                 aso_debug_pub.add('Create_Quote_Lines: lx_qte_line_rec.quote_header_id:        '||lx_qte_line_rec.quote_header_id, 1, 'Y');
3521                 aso_debug_pub.add('Create_Quote_Lines: lx_qte_line_rec.quote_line_id:          '||lx_qte_line_rec.quote_line_id, 1, 'Y');
3522                 aso_debug_pub.add('Create_Quote_Lines: lx_ln_shipment_tbl(1).quote_line_id:    '||lx_ln_shipment_tbl(1).quote_line_id, 1, 'Y');
3523                 aso_debug_pub.add('Create_Quote_Lines: lx_qte_line_rec.inventory_item_id:      '||lx_qte_line_rec.inventory_item_id, 1, 'Y');
3524                 aso_debug_pub.add('Create_Quote_Lines: lx_ln_shipment_tbl(1).ship_from_org_id: '||lx_ln_shipment_tbl(1).ship_from_org_id, 1, 'Y');
3525             end if;
3526 
3527             IF lx_ln_shipment_tbl(1).ship_from_org_id IS NOT NULL AND lx_ln_shipment_tbl(1).ship_from_org_id <> FND_API.G_MISS_NUM THEN
3528 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3529                 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines: before Validate_ship_from_org_ID', 1, 'Y');
3530 			end if;
3531                 ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
3532                     P_qte_line_rec  => lx_qte_line_rec,
3533                     P_Shipment_rec  => lx_ln_shipment_tbl(1),
3534                     x_return_status => x_return_status);
3535 
3536 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3537                 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines:  after Validate_ship_from_org_ID', 1, 'Y');
3538 			end if;
3539                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3540 				IF aso_debug_pub.g_debug_flag = 'Y' THEN
3541                     		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines:  after Validate_ship_from_org_ID: <> SUCCESS', 1, 'Y');
3542 				end if;
3543 
3544                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3545                         FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
3546                         FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', lx_ln_shipment_tbl(1).ship_from_org_id, FALSE);
3547                         FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
3548                         FND_MSG_PUB.ADD;
3549                     END IF;
3550 
3551                     RAISE FND_API.G_EXC_ERROR;
3552                 END IF;
3553             END IF;
3554 
3555         ELSE
3556 
3557             l_hd_shipment_rec := NULL;
3558 
3559             l_hd_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(
3560                                      P_Qte_Header_Id => lx_qte_line_rec.quote_header_id,
3561                                      P_Qte_Line_Id   => NULL
3562                                  );
3563 
3564             IF l_hd_shipment_tbl.count = 1 THEN
3565                 l_hd_shipment_rec := l_hd_shipment_tbl(1);
3566             END IF;
3567 
3568 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
3569             	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines: before Validate_ship_from_org_ID: lx_qte_line_rec.quote_header_id:     '||lx_qte_line_rec.quote_header_id, 1, 'Y');
3570             	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines: before Validate_ship_from_org_ID: lx_qte_line_rec.inventory_item_id:   '||lx_qte_line_rec.inventory_item_id, 1, 'Y');
3571             	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines: before Validate_ship_from_org_ID: l_hd_shipment_rec.ship_from_org_id: '||l_hd_shipment_rec.ship_from_org_id, 1, 'Y');
3572 		end if;
3573 
3574             IF l_hd_shipment_rec.ship_from_org_id IS NOT NULL AND l_hd_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM THEN
3575 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3576                 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines: before Validate_ship_from_org_ID (no ln_shipment_tbl)', 1, 'Y');
3577 			end if;
3578                 ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
3579                     P_Qte_Line_rec  => lx_qte_line_rec,
3580                     P_Shipment_rec  => l_hd_shipment_rec,
3581                     x_return_status => x_return_status
3582                 );
3583 
3584 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3585                 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines:  after Validate_ship_from_org_ID (no ln_shipment_tbl)', 1, 'Y');
3586 			end if;
3587                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3588 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3589                     aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_Lines:  after Validate_ship_from_org_ID: <> SUCCESS', 1, 'Y');
3590 			end if;
3591 
3592                     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3593                         FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
3594                         FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', l_hd_shipment_rec.ship_from_org_id, FALSE);
3595                         FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
3596                         FND_MSG_PUB.ADD;
3597                     END IF;
3598 
3599                     RAISE FND_API.G_EXC_ERROR;
3600                 END IF;
3601             END IF;
3602 
3603         END IF;
3604 
3605 -- end new validation for ship_from_org_id
3606 
3607 
3608 END IF;
3609 
3610    	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3611 	 	aso_debug_pub.add('Create_Quote_lines - before populate_quote_line ', 1, 'Y');
3612 	end if;
3613 
3614     Populate_Quote_Line(
3615     P_Qte_Line_Rec            => lx_qte_line_rec   ,
3616     P_Control_Rec             => l_Control_Rec    ,
3617     P_Payment_Tbl             => lx_ln_Payment_Tbl    ,
3618     P_Price_Adj_Tbl           => P_Price_Adj_Tbl  ,
3619     P_Qte_Line_Dtl_tbl        => P_Qte_line_dtl_tbl   ,
3620     P_Shipment_Tbl            => lx_ln_shipment_tbl       ,
3621     P_Tax_Detail_Tbl          => P_Tax_Detail_Tbl           ,
3622     P_Freight_Charge_Tbl      => P_Freight_Charge_Tbl   ,
3623     P_Price_Attributes_Tbl    => P_Price_Attributes_Tbl ,
3624     P_Price_Adj_Attr_Tbl      => P_Price_Adj_Attr_Tbl    ,
3625     P_Line_Attribs_Ext_Tbl    => P_Line_Attribs_Ext_Tbl ,
3626     P_Sales_Credit_Tbl        => P_sales_credit_tbl,
3627     P_Quote_Party_Tbl         => P_quote_party_tbl,
3628     P_Operation_Code          => 'CREATE' ,
3629     X_Qte_Line_Rec            => l_Qte_Line_Rec   ,
3630     X_Payment_Tbl             => l_Payment_Tbl    ,
3631     X_Price_Adj_Tbl           => l_Price_Adj_Tbl  ,
3632     X_Qte_Line_Dtl_tbl        => l_Qte_Line_Dtl_tbl   ,
3633     X_Shipment_Tbl            => l_Shipment_Tbl       ,
3634     X_Tax_Detail_Tbl          => l_Tax_Detail_Tbl    ,
3635     X_Freight_Charge_Tbl      => l_Freight_Charge_Tbl       ,
3636     X_Price_Attributes_Tbl    => l_Price_Attributes_Tbl      ,
3637     X_Price_Adj_Attr_Tbl      => l_Price_Adj_Attr_Tbl ,
3638     X_Line_Attribs_Ext_Tbl    => l_Line_Attribs_Ext_Tbl,
3639     X_Sales_Credit_Tbl        => l_sales_credit_tbl,
3640     x_Quote_Party_Tbl         => l_quote_party_tbl,
3641     X_Return_Status           => X_return_status,
3642     X_Msg_Count               => x_msg_count,
3643     X_Msg_Data                => x_msg_data );
3644 
3645    -- copy the payment tbl to another variable, since the payment tbl count may change becoz
3646    -- of the payment validation which is done later
3647    l_orig_payment_tbl := l_Payment_Tbl;
3648 
3649 -- check return status
3650 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3651 		aso_debug_pub.add('Create_Quote_lines - after populate_quote_line '||x_return_status, 1, 'Y');
3652 	end if;
3653 
3654     IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3655            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3656 	     FND_MESSAGE.Set_Name('ASO', 'ASO_POPULATING_COLUMNS');
3657              FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
3658 	     FND_MSG_PUB.ADD;
3659 	    END IF;
3660 
3661        IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3662         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3663        ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3664         RAISE FND_API.G_EXC_ERROR;
3665        END IF;
3666 
3667       END IF;
3668 
3669       -- check if the item being added is a MDL and a Network Container
3670       -- if so, then it must be published otherwise raise error
3671       open c_container_item_check(l_qte_line_rec.inventory_item_id, l_Qte_Line_Rec.organization_id);
3672       fetch c_container_item_check into l_container_item_flag;
3673       close c_container_item_check;
3674 
3675       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3676           ASO_DEBUG_PUB.add(' l_container_item_flag  = '|| l_container_item_flag , 1, 'Y');
3677       END IF;
3678 
3679 
3680       IF ( l_qte_line_rec.item_type_code = 'MDL' and l_container_item_flag = 'N' ) THEN
3681 
3682          -- call the cz api to check if the model is published
3683        l_is_model_published :=  CZ_CF_API.ui_for_item(inventory_item_id     => l_qte_line_rec.inventory_item_id,
3684                                                       organization_id       => l_Qte_Line_Rec.organization_id,
3685                                                       config_creation_date  => sysdate  ,
3686                                                       ui_type               => 'DHTML',
3687                                                       user_id               => FND_API.G_MISS_NUM,
3688                                                       responsibility_id     => FND_PROFILE.value('RESP_ID'),
3689                                                       calling_application_id => fnd_profile.VALUE('RESP_APPL_ID')
3690                                                       );
3691 
3692          IF  (l_is_model_published is null or l_is_model_published = 101 ) THEN
3693          --cz_cf_api.NATIVEBOM_UI_DEF
3694             -- this means the model is not published , raise error
3695                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3696                       FND_MESSAGE.Set_Name('ASO', 'ASO_NO_CFG_UI');
3697                       FND_MSG_PUB.ADD;
3698                   END IF;
3699 
3700                   RAISE FND_API.G_EXC_ERROR;
3701          END IF;
3702       END IF;
3703 
3704           --inter entity validations
3705 
3706 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3707 	 	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: CREATE_QUOTE_LINES: Begin Inter entity validations');
3708 	end if;
3709 
3710       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_ENTITY THEN
3711 
3712     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3713 		ASO_DEBUG_PUB.add('cq organization_id  = '||nvl(to_char(l_Qte_Line_Rec.organization_id),'null') , 1, 'Y');
3714 		ASO_DEBUG_PUB.add('cq Inventory_item_id  = '||l_qte_line_rec.inventory_item_id, 1, 'Y');
3715 	END IF;
3716 
3717       -- validate inventory item id. item should be active
3718             ASO_VALIDATE_PVT.Validate_Inventory_Item(
3719 		p_init_msg_list => FND_API.G_FALSE,
3720 		p_inventory_item_id => l_qte_line_rec.inventory_item_id,
3721         p_organization_id   => l_Qte_Line_Rec.organization_id,
3722 		x_return_status => x_return_status,
3723                 x_msg_count     => x_msg_count,
3724                 x_msg_data      => x_msg_data);
3725 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3726               RAISE FND_API.G_EXC_ERROR;
3727           END IF;
3728 
3729        -- bug 5196952 validate the ship method code
3730        if   (l_Shipment_Tbl.count > 0 ) then
3731 
3732 	   IF (l_Shipment_Tbl(1).ship_method_code is not null and l_Shipment_Tbl(1).ship_method_code <> fnd_api.g_miss_char) then
3733 
3734           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3735            aso_debug_pub.add('Create_Quote_lines - before validate ship_method_code ', 1, 'N');
3736           end if;
3737          ASO_VALIDATE_PVT.validate_ship_method_code
3738          (
3739           p_init_msg_list          => fnd_api.g_false,
3740           p_qte_header_id          => fnd_api.g_miss_num,
3741           p_qte_line_id            => fnd_api.g_miss_num,
3742           p_organization_id        => lx_qte_line_rec.organization_id,
3743           p_ship_method_code       => l_Shipment_Tbl(1).ship_method_code,
3744           p_operation_code         => 'CREATE',
3745           x_return_status          => x_return_status,
3746           x_msg_count              => x_msg_count,
3747           x_msg_data               => x_msg_data);
3748 
3749           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3750            aso_debug_pub.add('Create_Quote_lines - After validate ship_method_code ', 1, 'N');
3751           end if;
3752 
3753           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3754               RAISE FND_API.G_EXC_ERROR;
3755           END IF;
3756         end if;  -- end if for ship method code check
3757        end if; -- end if for the ship tbl count
3758 
3759 
3760           FOR i in 1..p_qte_line_dtl_tbl.count LOOP
3761 
3762 	         ASO_VALIDATE_PVT.Validate_Service(
3763 		            p_init_msg_list		     => FND_API.G_FALSE,
3764 		            p_inventory_item_id         => l_qte_line_rec.inventory_item_id,
3765         	            p_start_date_active         => l_qte_line_rec.start_date_active,
3766         	            p_end_date_active           => l_qte_line_rec.end_date_active,
3767         	            p_service_duration          => p_qte_line_dtl_tbl(i).service_duration,
3768         	            p_service_period            => p_qte_line_dtl_tbl(i).service_period,
3769         	            p_service_coterminate_flag  => p_qte_line_dtl_tbl(i).service_coterminate_flag,
3770         	            p_organization_id           => l_Qte_Line_Rec.organization_id,
3771 		            x_return_status             => x_return_status,
3772                       x_msg_count                 => x_msg_count,
3773                       x_msg_data                  => x_msg_data);
3774 
3775 	         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3776 
3777                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3778 	                 FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3779                       FND_MESSAGE.Set_Token('INFO','SERVICE', FALSE);
3780 	                 FND_MSG_PUB.ADD;
3781 	             END IF;
3782 
3783                   RAISE FND_API.G_EXC_ERROR;
3784 
3785               END IF;
3786 
3787 
3788               --validate service period
3789 
3790               ASO_VALIDATE_PVT.Validate_UOM_code(
3791 		         p_init_msg_list	     => FND_API.G_FALSE,
3792 		         p_uom_code           => p_qte_line_dtl_tbl(i).service_period,
3793                    p_organization_id    => l_qte_line_rec.organization_id,
3794                    p_inventory_item_id  => l_qte_line_rec.inventory_item_id,
3795 		         x_return_status      => x_return_status,
3796                    x_msg_count          => x_msg_count,
3797                    x_msg_data           => x_msg_data);
3798 
3799 	         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3800                    RAISE FND_API.G_EXC_ERROR;
3801               END IF;
3802 
3803 
3804               --New code for Bug # 2498942 fix
3805 
3806               IF p_qte_line_dtl_tbl(i).service_ref_type_code = 'QUOTE'
3807                    AND p_qte_line_dtl_tbl(i).service_ref_line_id IS NOT NULL
3808                    AND p_qte_line_dtl_tbl(i).service_ref_line_id <> FND_API.G_MISS_NUM THEN
3809 
3810                      OPEN C_line_category_code(p_qte_line_dtl_tbl(i).service_ref_line_id);
3811                      FETCH C_line_category_code INTO l_line_category_code;
3812 
3813                      IF C_line_category_code%FOUND AND l_line_category_code = 'RETURN' THEN
3814 
3815                           CLOSE C_line_category_code;
3816 
3817                           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3818 	                         FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REFERENCE');
3819                               FND_MSG_PUB.ADD;
3820 	                     END IF;
3821 
3822                           RAISE FND_API.G_EXC_ERROR;
3823 
3824                      END IF;
3825 
3826                      CLOSE C_line_category_code;
3827 
3828               END IF;
3829 
3830 
3831 		    --New code for Bug#3280130
3832 
3833 		    if p_qte_line_dtl_tbl(i).service_ref_line_id is not null and
3834 		       p_qte_line_dtl_tbl(i).service_ref_line_id <> fnd_api.g_miss_num then
3835 
3836 			  if p_qte_line_dtl_tbl(i).service_ref_type_code is null or
3837 			     p_qte_line_dtl_tbl(i).service_ref_type_code = fnd_api.g_miss_char then
3838 
3839                     x_return_status := fnd_api.g_ret_sts_error;
3840 
3841                     IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3842                        FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
3843                        FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_TYPE_CODE', FALSE);
3844                        FND_MESSAGE.Set_Token('VALUE', p_qte_line_dtl_tbl(i).service_ref_type_code,FALSE);
3845                        FND_MSG_PUB.ADD;
3846                     END IF;
3847 
3848                     raise fnd_api.g_exc_error;
3849 
3850                  else
3851 
3852 	               if aso_debug_pub.g_debug_flag = 'Y' then
3853                        aso_debug_pub.add('CREATE_QUOTE_LINES: Before calling aso_validate_pvt.validate_service_ref_line_id');
3854                     end if;
3855 
3856                     aso_validate_pvt.validate_service_ref_line_id (
3857                                     p_init_msg_list         => fnd_api.g_false,
3858                                     p_service_ref_type_code => p_qte_line_dtl_tbl(i).service_ref_type_code,
3859                                     p_service_ref_line_id   => p_qte_line_dtl_tbl(i).service_ref_line_id,
3860                                     p_qte_header_id         => l_qte_line_rec.quote_header_id,
3861                                     x_return_status         => x_return_status,
3862                                     x_msg_count             => x_msg_count,
3863                                     x_msg_data              => x_msg_data);
3864 
3865 	               if aso_debug_pub.g_debug_flag = 'Y' then
3866                        aso_debug_pub.add('CREATE_QUOTE_LINES: After calling aso_validate_pvt.validate_service_ref_line_id');
3867                        aso_debug_pub.add('CREATE_QUOTE_LINES: x_return_status: '|| x_return_status);
3868                     end if;
3869 
3870 	               if x_return_status <> fnd_api.g_ret_sts_success then
3871                        raise fnd_api.g_exc_error;
3872                     end if;
3873 
3874                  end if;
3875 
3876               end if;
3877 
3878 		    --End new code for Bug#3280130
3879 
3880           END LOOP;
3881 
3882       END IF;
3883 
3884 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3885 	 	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: CREATE_QUOTE_LINES: End of Inter entity validations');
3886 	end if;
3887 
3888 
3889       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3890 
3891            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3892 	          FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
3893 	          FND_MSG_PUB.ADD;
3894 	      END IF;
3895 
3896            RAISE FND_API.G_EXC_ERROR;
3897 
3898       END IF;
3899 
3900 
3901          l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row(l_qte_line_rec.QUOTE_HEADER_ID);
3902 
3903 -- IF NVL(FND_PROFILE.value('ASO_TCA_VALIDATE'),'N') = 'Y' THEN
3904 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3905 		aso_debug_pub.add('Validation level is set',1,'N');
3906 	end if;
3907 
3908     ASO_CHECK_TCA_PVT.check_line_account_info(
3909         p_api_version         => 1.0,
3910         p_init_msg_list       => FND_API.G_FALSE,
3911         p_cust_account_id     => l_qte_header_rec.cust_account_id,
3912         p_qte_line_rec        => l_qte_line_rec,
3913         p_line_shipment_tbl   => l_shipment_tbl,
3914         p_application_type_code      => l_control_rec.application_type_code,
3915         x_return_status       => l_return_status,
3916         x_msg_count           => l_msg_count,
3917         x_msg_data            => l_msg_data );
3918 
3919     IF l_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
3920         raise FND_API.G_EXC_ERROR;
3921     END IF;
3922 -- END IF;
3923 
3924     ASO_TRADEIN_PVT.LineType(
3925                p_init_msg_list => FND_API.G_FALSE,
3926      p_qte_header_rec  => l_qte_header_rec,
3927      p_qte_line_rec        => l_qte_line_rec,
3928        x_return_status => x_return_status,
3929          x_msg_count     => x_msg_count,
3930          x_msg_data      => x_msg_data);
3931 
3932 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3933               RAISE FND_API.G_EXC_ERROR;
3934           END IF;
3935           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3936             aso_debug_pub.add('after order type'||  x_return_status, 1, 'Y');
3937           END IF;
3938 
3939 
3940           If (p_qte_header_rec.order_type_id = FND_API.G_MISS_NUM )then -- [This is for backward compatibility]
3941 	           l_db_order_type_id  := l_qte_header_rec.order_type_id;
3942           else
3943 	           l_db_order_type_id  :=  p_qte_header_rec.order_type_id;
3944           end if;
3945 
3946 		  If (l_db_order_type_id  = l_qte_header_rec.order_type_id) and (l_qte_line_rec.order_line_type_id <> FND_API.G_MISS_NUM) then
3947                 ASO_validate_PVT.Validate_ln_type_for_ord_type(
3948                 p_init_msg_list     =>   FND_API.G_FALSE,
3949                 p_qte_header_rec    =>   l_qte_header_rec,
3950                 P_Qte_Line_rec      =>   l_qte_line_rec,
3951                 x_return_status     =>   x_return_status,
3952                 x_msg_count         =>   x_msg_count,
3953                 x_msg_data          =>   x_msg_data);
3954 
3955                 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3956                     RAISE FND_API.G_EXC_ERROR;
3957                 END IF;
3958 		  End if;
3959 
3960           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3961             aso_debug_pub.add('x_return_status for Validate_ln_type_for_ord_type'||  x_return_status, 1, 'Y');
3962           END IF;
3963 
3964           aso_validate_pvt.Validate_po_line_number
3965 		(
3966 			p_init_msg_list	  => fnd_api.g_false,
3967 			p_qte_header_rec    => l_qte_header_rec,
3968 			P_Qte_Line_rec	  => l_qte_line_rec,
3969 			x_return_status     => x_return_status,
3970 			x_msg_count         => x_msg_count,
3971 			x_msg_data          => x_msg_data);
3972 
3973 		IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3974                   RAISE FND_API.G_EXC_ERROR;
3975             END IF;
3976 
3977           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
3978             aso_debug_pub.add('x_return_status for Validate_po_line_number'||  x_return_status, 1, 'Y');
3979           END IF;
3980 
3981 
3982    ASO_TRADEIN_PVT.Validate_Line_Tradein(
3983        p_init_msg_list      =>   FND_API.G_FALSE,
3984        p_qte_header_rec         =>   l_qte_header_rec,
3985      P_Qte_Line_rec             =>   l_qte_line_rec,
3986          x_return_status => x_return_status,
3987          x_msg_count     => x_msg_count,
3988          x_msg_data      => x_msg_data);
3989 
3990        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3991                RAISE FND_API.G_EXC_ERROR;
3992        END IF;
3993 
3994 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
3995 		aso_debug_pub.add('ASO_QUOTE_LINES Create_Quote_lines - after validate_line_tradein '||x_return_status, 1, 'Y');
3996 	end if;
3997 
3998    ASO_TRADEIN_PVT.Validate_IB_Return_Qty(
3999             p_init_msg_list      =>   FND_API.G_FALSE,
4000             p_Qte_Line_rec       =>   l_qte_line_rec,
4001             p_Qte_Line_Dtl_Tbl   =>   l_qte_line_dtl_tbl,
4002             x_return_status      =>   x_return_status,
4003             x_msg_count          =>   x_msg_count,
4004             x_msg_data           =>   x_msg_data);
4005 
4006        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4007                RAISE FND_API.G_EXC_ERROR;
4008        END IF;
4009 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4010 		aso_debug_pub.add('ASO_QUOTE_LINES Create_Quote_lines - after validate_IB_Return_Qty '||x_return_status, 1, 'Y');
4011 	end if;
4012 
4013     IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4014         ASO_VALIDATE_PVT.Validate_Sales_Credit_Return(
4015             p_init_msg_list             => FND_API.G_FALSE,
4016             p_sales_credit_tbl          => p_sales_credit_tbl,
4017             p_qte_line_rec              => l_qte_line_rec,
4018             x_return_status             => x_return_status,
4019             x_msg_count                 => x_msg_count,
4020             x_msg_data                  => x_msg_data);
4021         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4022             RAISE FND_API.G_EXC_ERROR;
4023         END IF;
4024     END IF;
4025 
4026 -- EDU
4027 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4028 		aso_debug_pub.add('Create_Quote_Line - before Validate_Agreement:l_qte_line_rec.Agreement_Id: '||l_qte_line_rec.Agreement_Id, 1, 'N');
4029 	end if;
4030 
4031      IF (l_qte_line_rec.Agreement_Id IS NOT NULL AND
4032         l_qte_line_rec.Agreement_Id <> FND_API.G_MISS_NUM) THEN
4033           ASO_VALIDATE_PVT.Validate_Agreement(
4034                p_init_msg_list             => FND_API.G_FALSE,
4035                P_Agreement_Id              => l_qte_line_rec.Agreement_Id,
4036                x_return_status             => x_return_status,
4037                x_msg_count                 => x_msg_count,
4038                x_msg_data                  => x_msg_data);
4039 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
4040 			aso_debug_pub.add('Create_Quote_Line - after Validate_Agreement:x_return_status: '||x_return_status, 1, 'N');
4041 		end if;
4042 
4043           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4044                RAISE FND_API.G_EXC_ERROR;
4045           END IF;
4046      END IF;
4047 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
4048 			aso_debug_pub.add('Create_Quote - after Validate_Agreement:l_qte_line_rec.UOM_Code: '||l_qte_line_rec.UOM_Code,1, 'N');
4049 			aso_debug_pub.add('Create_Quote - after Validate_Agreement:l_qte_line_rec.Quantity: '||l_qte_line_rec.Quantity,1, 'N');
4050 		end if;
4051      IF l_qte_line_rec.UOM_Code = 'ENR' THEN
4052           IF l_qte_line_rec.Quantity <> 1 THEN
4053                x_return_status := FND_API.G_RET_STS_ERROR;
4054                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4055                     FND_MESSAGE.Set_Name('ASO', 'ASO_EDU_INVALID_QTY');
4056                     FND_MSG_PUB.ADD;
4057                END IF;
4058                RAISE FND_API.G_EXC_ERROR;
4059           END IF;
4060      END IF;
4061 -- EDU
4062 
4063     -- Validate the invoice to cust party id and payment info, if any
4064      IF l_payment_tbl.count = 0   then
4065         l_payment_tbl := aso_utility_pvt.Query_Payment_Rows( p_qte_line_rec.QUOTE_HEADER_ID,p_qte_line_rec.quote_line_id);
4066            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4067               aso_debug_pub.add('Before  calling Validate_cc_info payment_tbl count is: '|| l_payment_tbl.count, 1, 'Y');
4068            END IF;
4069      End if;
4070 
4071      IF l_payment_tbl.count > 0 then
4072           l_payment_rec := l_payment_tbl(1);
4073         IF l_payment_rec.payment_type_code = 'CREDIT_CARD' THEN
4074            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4075               aso_debug_pub.add('Before  calling Validate_cc_info ', 1, 'Y');
4076            END IF;
4077            l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row (p_qte_line_rec.Quote_Header_Id );
4078 
4079            aso_validate_pvt.Validate_cc_info
4080             (
4081                 p_init_msg_list     =>  fnd_api.g_false,
4082                 p_payment_rec       =>  l_payment_rec,
4083                 p_qte_header_rec    =>  l_qte_header_rec,
4084                 P_Qte_Line_rec      =>  p_qte_line_rec,
4085                 x_return_status     =>  x_return_status,
4086                 x_msg_count         =>  x_msg_count,
4087                 x_msg_data          =>  x_msg_data);
4088 
4089            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4090               aso_debug_pub.add('after calling Validate_cc_info ', 1, 'Y');
4091               aso_debug_pub.add('Validate_cc_info  Return Status: '||x_return_status, 1, 'Y');
4092            END IF;
4093 
4094             if x_return_status <> fnd_api.g_ret_sts_success then
4095               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4096                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4097               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4098                  RAISE FND_API.G_EXC_ERROR;
4099               ELSE
4100                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4101               END IF;
4102             end if;
4103         END IF;
4104 
4105       End if;
4106    -- the payment tbl count may have been changed, hence re-set back the value
4107    l_Payment_Tbl := l_orig_payment_tbl ;
4108 
4109   Insert_Quote_Line_Rows(
4110     P_Qte_Line_Rec      =>  l_Qte_Line_Rec   ,
4111     P_Control_Rec       =>  l_Control_Rec    ,
4112     P_Payment_Tbl       =>  l_Payment_Tbl    ,
4113     P_Price_Adj_Tbl     =>  l_Price_Adj_Tbl  ,
4114     P_Qte_Line_Dtl_tbl  =>  l_Qte_Line_Dtl_tbl  ,
4115     P_Shipment_Tbl      =>  l_Shipment_Tbl       ,
4116     P_Tax_Detail_Tbl    =>  l_Tax_Detail_Tbl           ,
4117     P_Freight_Charge_Tbl     => l_Freight_Charge_Tbl   ,
4118     P_Price_Attributes_Tbl   => l_Price_Attributes_Tbl ,
4119     P_Price_Adj_Attr_Tbl      => l_Price_Adj_Attr_Tbl    ,
4120     P_Line_Attribs_Ext_Tbl    => l_Line_Attribs_Ext_Tbl,
4121     P_Sales_Credit_Tbl        => l_sales_credit_tbl,
4122     P_Quote_Party_Tbl        => l_quote_party_tbl,
4123     X_Qte_Line_Rec      =>  X_Qte_Line_Rec   ,
4124     X_Payment_Tbl       =>  X_Payment_Tbl    ,
4125     X_Price_Adj_Tbl     =>  X_Price_Adj_Tbl  ,
4126     X_Qte_Line_Dtl_tbl  =>  X_Qte_Line_Dtl_tbl   ,
4127     X_Shipment_Tbl      =>  X_Shipment_Tbl       ,
4128     X_Tax_Detail_Tbl   =>  X_Tax_Detail_Tbl    ,
4129     X_Freight_Charge_Tbl     => X_Freight_Charge_Tbl       ,
4130     X_Price_Attributes_Tbl   => X_Price_Attributes_Tbl      ,
4131     X_Price_Adj_Attr_Tbl      => X_Price_Adj_Attr_Tbl ,
4132     X_Line_Attribs_Ext_Tbl   => X_Line_Attribs_Ext_Tbl,
4133     X_Sales_Credit_Tbl        =>x_sales_credit_tbl,
4134     X_Quote_Party_Tbl         =>x_quote_party_tbl,
4135     X_Return_Status          => X_return_status,
4136     X_Msg_Count              => x_msg_count,
4137     X_Msg_Data               => x_msg_data
4138     );
4139 
4140       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4141            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4142 	     FND_MESSAGE.Set_Name('ASO', 'ASO_INSERT_ERROR');
4143 	     FND_MSG_PUB.ADD;
4144 	    END IF;
4145        IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4146         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4147        ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4148         RAISE FND_API.G_EXC_ERROR;
4149        END IF;
4150       END IF;
4151 
4152 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4153 		aso_debug_pub.add('Create_Quote_lines - after insert_quote_line_rows '||x_return_status, 1, 'Y');
4154 	end if;
4155 
4156      -- Service line quantity update Bmishra 01/09/02
4157      l_call_update := FND_API.G_FALSE;
4158      OPEN c_service (X_Qte_Line_Rec.quote_line_id);
4159 
4160      FETCH c_service INTO l_service_item_flag, l_serviceable_product_flag;
4161 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4162 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_lines: l_service_item_flag'||l_service_item_flag,1, 'N');
4163 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_lines: l_serviceable_product_flag'||l_serviceable_product_flag,1, 'N');
4164 	end if;
4165      IF c_service%FOUND THEN
4166        CLOSE c_service;
4167        IF l_service_item_flag = 'Y' THEN
4168           l_service := FND_API.G_TRUE;
4169           l_call_update := FND_API.G_TRUE;
4170        ELSIF l_serviceable_product_flag = 'Y' THEN
4171           l_service := FND_API.G_FALSE;
4172           l_call_update := FND_API.G_TRUE;
4173        END IF;
4174 
4175 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4176 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Create_Quote_lines: l_call_update'||l_call_update,1, 'N');
4177 	end if;
4178 
4179        IF l_call_update = FND_API.G_TRUE THEN
4180           ASO_QUOTE_LINES_PVT.service_item_qty_update
4181            (p_qte_line_rec  => X_Qte_Line_Rec ,
4182             p_service_item_flag  => l_service,
4183             x_return_status => X_return_status
4184             );
4185 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
4186             	aso_debug_pub.add('Create_Quote_lines - after call to ASO_QUOTE_LINES_PVT.service_item_qty_update '|| x_return_status, 1, 'Y');
4187 		end if;
4188        END IF;
4189      ELSE
4190        CLOSE c_service;
4191 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
4192        		aso_debug_pub.add('Create_quote_lines, Item not found in inventry',1,'N');
4193 		end if;
4194    END IF;
4195 
4196 
4197 -- sales credits
4198 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4199             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: X_Qte_Line_Rec.quote_header_id: '||X_Qte_Line_Rec.quote_header_id,1,'N');
4200             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: X_Qte_Line_Rec.quote_line_id:   '||X_Qte_Line_Rec.quote_line_id,1,'N');
4201 	end if;
4202 
4203             IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
4204                 IF x_sales_credit_tbl.count > 0 THEN
4205                     IF x_sales_credit_tbl(1).quote_header_id IS NULL OR x_sales_credit_tbl(1).quote_header_id = FND_API.G_MISS_NUM THEN
4206                         x_sales_credit_tbl(1).quote_header_id := X_Qte_Line_Rec.quote_header_id;
4207                     END IF;
4208                     IF x_sales_credit_tbl(1).quote_line_id IS NULL OR x_sales_credit_tbl(1).quote_line_id = FND_API.G_MISS_NUM THEN
4209                         x_sales_credit_tbl(1).quote_line_id := X_Qte_Line_Rec.quote_line_id;
4210                     END IF;
4211 
4212        	            ASO_VALIDATE_PVT.Validate_Quote_Percent(
4213                         p_init_msg_list             => FND_API.G_FALSE,
4214                         p_sales_credit_tbl          => x_sales_credit_tbl,
4215                         x_return_status             => x_return_status,
4216                         x_msg_count                 => x_msg_count,
4217                         x_msg_data                  => x_msg_data
4218                     );
4219                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4220                         RAISE FND_API.G_EXC_ERROR;
4221                     END IF;
4222                 END IF;
4223             END IF;
4224 
4225 -- end sales credits
4226 
4227 
4228    IF  l_control_rec.line_pricing_event IS NOT NULL AND
4229         l_control_rec.line_pricing_event <> FND_API.G_MISS_CHAR  THEN
4230 
4231        -- call pricing engine
4232 
4233       l_pricing_control_rec.pricing_event := l_control_rec.line_pricing_event;
4234       l_pricing_control_rec.request_type  := l_control_rec.pricing_request_type;
4235       l_pricing_control_rec.price_mode    := l_control_rec.price_mode;
4236 
4237       l_qte_line_tbl(1)                   := l_qte_line_rec;
4238 
4239       --New Code to call overload pricing_order
4240 
4241         l_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(l_qte_header_rec.quote_header_id,null);
4242         l_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(l_qte_header_rec.quote_header_id,null);
4243 
4244         if l_hd_shipment_tbl.count = 1 then
4245             l_hd_shipment_rec := l_hd_shipment_tbl(1);
4246         end if;
4247 
4248 
4249         ASO_PRICING_INT.Pricing_Order(
4250                     P_Api_Version_Number     => 1.0,
4251                     P_Init_Msg_List          => fnd_api.g_false,
4252                     P_Commit                 => fnd_api.g_false,
4253                     p_control_rec            => l_pricing_control_rec,
4254                     p_qte_header_rec         => l_qte_header_rec,
4255                     p_hd_shipment_rec        => l_hd_shipment_rec,
4256                     p_hd_price_attr_tbl      => l_hd_price_attr_tbl,
4257                     p_qte_line_tbl           => l_qte_line_tbl,
4258                     x_qte_header_rec         => lx_qte_header_rec,
4259                     x_qte_line_tbl           => lx_qte_line_tbl,
4260                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
4261                     x_price_adj_tbl          => lx_price_adj_tbl,
4262                     x_price_adj_attr_tbl     => lx_price_adj_attr_tbl,
4263                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
4264                     x_return_status          => x_return_status,
4265                     x_msg_count              => x_msg_count,
4266                     x_msg_data               => x_msg_data );
4267 
4268          if lx_qte_line_tbl.count > 0 then
4269              x_qte_line_rec  :=  lx_qte_line_tbl(1);
4270          end if;
4271 
4272       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4273 
4274           IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4275 
4276                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4277 
4278           ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4279 
4280                RAISE FND_API.G_EXC_ERROR;
4281 
4282           END IF;
4283 
4284       END IF;
4285 
4286 
4287    END IF;        -- pricing
4288 
4289 /*
4290  *
4291  *
4292 IF l_control_rec.CALCULATE_TAX_FLAG = 'Y'THEN
4293       l_tax_control_rec.tax_level := 'SHIPPING';
4294       l_tax_control_rec.update_db := 'Y' ;  --FND_API.G_TRUE;
4295 
4296       l_tax_detail_rec.quote_header_id := l_qte_line_rec.quote_header_id;
4297       l_tax_detail_rec.quote_line_id := l_qte_line_rec.quote_line_id;
4298 
4299 -- added to calc tax based on accounts
4300         OPEN get_cust_acct( l_qte_line_rec.QUOTE_HEADER_ID);
4301         FETCH get_cust_acct into l_cust_acct;
4302         IF get_cust_acct%NOTFOUND THEN
4303           NULL;
4304         END IF;
4305         CLOSE get_cust_acct;
4306 
4307         IF( l_qte_line_rec.invoice_to_party_site_id is not NULL
4308       AND l_qte_line_rec.invoice_to_party_site_id <> FND_API.G_MISS_NUM )
4309       AND (l_cust_Acct is NOT NULL AND l_cust_acct <>  FND_API.G_MISS_NUM) THEN
4310 
4311           ASO_PARTY_INT.GET_ACCT_SITE_USES (
4312   		  p_api_version     => 1.0
4313  		 ,P_Cust_Account_Id => l_cust_acct
4314  		 ,P_Party_Site_Id   => l_qte_line_rec.invoice_to_party_site_id
4315 	         ,P_Acct_Site_type  => 'BILL_TO'
4316  		 ,x_return_status   => l_return_status
4317  		 ,x_msg_count       => l_msg_count
4318  		 ,x_msg_data        => l_msg_data
4319  		 ,x_site_use_id     => l_invoice_org_id
4320   	   );
4321 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4322   		aso_debug_pub.add('Create_Quote_lines - after create_acct_site_uses- invoice_org_id: '||nvl(to_char(l_invoice_org_id),'null'), 1, 'N');
4323 	end if;
4324               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
4325                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4326                   THEN
4327                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
4328                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
4329                   FND_MSG_PUB.ADD;
4330                 END IF;
4331                -- raise FND_API.G_EXC_ERROR;
4332               END IF;
4333       END IF;
4334 
4335 lx_tax_shipment_tbl :=  ASO_UTILITY_PVT.Query_Shipment_Rows(l_qte_line_rec.quote_header_id,x_qte_line_rec.quote_line_id);
4336 
4337       FOR i in 1..lx_tax_shipment_tbl.count LOOP
4338          l_tax_detail_rec.quote_shipment_id := lx_tax_shipment_tbl(i).shipment_id;
4339 
4340          IF (lx_tax_shipment_tbl(i).ship_to_party_site_id is not NULL           AND lx_tax_shipment_tbl(i).ship_to_party_site_id <> FND_API.G_MISS_NUM)
4341  AND(l_cust_acct is NOT NULL AND l_cust_acct <> FND_API.G_MISS_NUM )
4342           THEN
4343            ASO_PARTY_INT.GET_ACCT_SITE_USES (
4344   		  p_api_version     => 1.0
4345  		 ,P_Cust_Account_Id => l_cust_acct
4346  		 ,P_Party_Site_Id   =>  lx_tax_shipment_tbl(i).ship_to_party_site_id
4347 	         ,P_Acct_Site_type  => 'SHIP_TO'
4348  		 ,x_return_status   => l_return_status
4349  		 ,x_msg_count       => l_msg_count
4350  		 ,x_msg_data        => l_msg_data
4351  		 ,x_site_use_id     => l_ship_org_id
4352   	   );
4353 
4354               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
4355                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4356                   THEN
4357                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
4358                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
4359                   FND_MSG_PUB.ADD;
4360                 END IF;
4361                -- raise FND_API.G_EXC_ERROR;
4362               END IF;
4363 
4364     END IF;
4365 
4366 	ASO_TAX_INT.Calculate_Tax(
4367          P_Api_Version_Number => 1.0,
4368          p_quote_header_id    => l_qte_line_rec.quote_header_id,
4369          P_Tax_Control_Rec    => l_tax_control_rec,
4370          x_tax_amount	     => x_tax_amount    ,
4371          x_tax_detail_tbl    => l_tax_detail_tbl,
4372          X_Return_Status     => x_return_status ,
4373          X_Msg_Count         => x_msg_count     ,
4374         X_Msg_Data           => x_msg_data      );
4375 
4376 
4377 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
4378   			aso_debug_pub.add('Create_Quote_lines - after_calculate_tax- tax_amount: '||nvl(to_char(x_tax_amount),'null'), 1, 'N');
4379 		end if;
4380 
4381           if l_tax_detail_tbl.count > 0 then
4382            x_tax_detail_tbl(i) := l_tax_detail_tbl(1);
4383           end if;
4384 
4385         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4386            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4387 	        FND_MESSAGE.Set_Name('ASO', 'ASO_TAX_CALCULATION');
4388 	        FND_MSG_PUB.ADD;
4389 	       END IF;
4390            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4391             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4392            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4393             RAISE FND_API.G_EXC_ERROR;
4394            END IF;
4395         END IF;
4396       END LOOP;
4397 
4398    END IF;
4399 
4400 *
4401 */
4402 
4403 -- check the profile option for reservation and create reservation if needed
4404 
4405     IF FND_PROFILE.Value('ASO_RESERVATION_LEVEL') = 'AUTO_CART' THEN
4406        l_shipment_tbl := x_shipment_tbl;
4407 
4408      OPEN c_reservation(x_qte_line_rec.inventory_item_id,x_qte_line_rec.organization_id);
4409      FETCH c_reservation INTO l_inv_item,l_organization_id;
4410      IF c_reservation%FOUND THEN
4411 
4412      FOR i in 1..l_shipment_tbl.count LOOP
4413        ASO_RESERVATION_INT.Create_reservation(
4414          P_Api_Version_Number   => 1.0,
4415          p_line_rec             => x_qte_line_rec,
4416          p_shipment_rec         => l_shipment_tbl(i),
4417          X_Return_Status        => x_return_status,
4418          X_Msg_Count            => x_msg_count,
4419          X_Msg_Data             => x_msg_data,
4420          X_quantity_reserved    => l_shipment_tbl_out(i).reserved_quantity,
4421          X_reservation_id       => l_shipment_tbl_out(i).reservation_id
4422       );
4423 
4424 	    l_shipment_tbl(i).reserved_quantity := l_shipment_tbl_out(i).reserved_quantity;
4425 	    l_shipment_tbl(i).reservation_id := l_shipment_tbl_out(i).reservation_id;
4426 
4427 
4428          UPDATE ASO_SHIPMENTS
4429          SET reservation_id     =  l_shipment_tbl(i).reservation_id,
4430              reserved_quantity  =  l_shipment_tbl(i).reserved_quantity,
4431              last_update_date   =  sysdate,
4432              last_updated_by    =  fnd_global.user_id,
4433              last_update_login  =  fnd_global.conc_login_id
4434          WHERE shipment_id     = l_shipment_tbl(i).shipment_id;
4435 
4436           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4437            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4438 	     FND_MESSAGE.Set_Name('ASO', 'ASO_CREATING_RESERVATION');
4439              FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
4440 	     FND_MSG_PUB.ADD;
4441 	    END IF;
4442            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4443             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4444            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4445             RAISE FND_API.G_EXC_ERROR;
4446            END IF;
4447          END IF;
4448 
4449 
4450       END LOOP;
4451 
4452      END IF;
4453      CLOSE c_reservation;
4454     END IF;  --automatic reservation
4455 
4456 
4457     IF p_update_header_flag = 'Y' THEN
4458 
4459       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
4460       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
4461       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
4462       -- IF calculate_tax_flag = 'N', not summation on line level tax,
4463       -- just take the value of p_qte_rec.total_tax as the total_tax
4464       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
4465       -- just take the value of p_qte_rec.total_freight_charge
4466       -- how can i get the calc_tax_flag and calc_freight_charge_flag ??
4467 
4468 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4469 		aso_debug_pub.add('Create_Quote_lines - before update_quote_total '||l_return_status, 1, 'Y');
4470 	end if;
4471 
4472        ASO_QUOTE_HEADERS_PVT.Update_Quote_Total (
4473 	P_Qte_Header_id		=> x_Qte_line_rec.quote_header_id,
4474         P_calculate_tax         => l_control_rec.CALCULATE_TAX_FLAG,
4475         P_calculate_freight_charge=> l_control_rec.calculate_freight_charge_flag,
4476             p_control_rec		 =>  l_control_rec,
4477 	X_Return_Status         => l_return_status,
4478 	X_Msg_Count		=> x_msg_count,
4479 	X_Msg_Data              => x_msg_data);
4480 
4481            IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4482             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4483  	     FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
4484           -- FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
4485  	     FND_MSG_PUB.ADD;
4486  	    END IF;
4487           END IF;
4488 
4489 
4490     IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4491             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4492  	     FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
4493           -- FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
4494  	     FND_MSG_PUB.ADD;
4495  	    END IF;
4496           END IF;
4497 
4498       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4499         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4500         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4501       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
4502         x_return_status := FND_API.G_RET_STS_ERROR;
4503         RAISE FND_API.G_EXC_ERROR;
4504       END IF;
4505 
4506     END IF;
4507 
4508 	-- Change START
4509 	-- Release 12 TAP Changes
4510 	-- Girish Sachdeva 8/30/2005
4511 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
4512 
4513 	SELECT quote_number
4514 	INTO   l_quote_number
4515 	FROM   aso_quote_headers_all -- bug 8968033
4516 	WHERE  quote_header_id = x_Qte_line_rec.quote_header_id ;
4517 
4518 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
4519 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT.Create_Quote_lines : Calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || l_quote_number, 1, 'Y');
4520 	END IF;
4521 
4522 	-- Call to insert record in ASO_CHANGED_QUOTES
4523 	ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_quote_number);
4524 
4525 	-- Change END
4526 
4527 
4528       --
4529       -- End of API body
4530       --
4531 
4532       -- Standard check for p_commit
4533       IF FND_API.to_Boolean( p_commit )
4534       THEN
4535           COMMIT WORK;
4536       END IF;
4537 
4538 
4539 
4540       -- Standard call to get message count and if count is 1, get message info.
4541       FND_MSG_PUB.Count_And_Get
4542       (  p_count          =>   x_msg_count,
4543          p_data           =>   x_msg_data
4544       );
4545 
4546         EXCEPTION
4547 	  WHEN FND_API.G_EXC_ERROR THEN
4548 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4549 		   P_API_NAME => L_API_NAME
4550 		  ,P_PKG_NAME => G_PKG_NAME
4551 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
4552 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4553 		  ,P_SQLCODE => SQLCODE
4554 		  ,P_SQLERRM => SQLERRM
4555 		  ,X_MSG_COUNT => X_MSG_COUNT
4556 		  ,X_MSG_DATA => X_MSG_DATA
4557 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4558 
4559 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4560 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4561 		   P_API_NAME => L_API_NAME
4562 		  ,P_PKG_NAME => G_PKG_NAME
4563 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4564 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4565 		  ,P_SQLCODE => SQLCODE
4566 		  ,P_SQLERRM => SQLERRM
4567 		  ,X_MSG_COUNT => X_MSG_COUNT
4568 		  ,X_MSG_DATA => X_MSG_DATA
4569 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4570 
4571 	  WHEN OTHERS THEN
4572 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4573 		   P_API_NAME => L_API_NAME
4574 		  ,P_PKG_NAME => G_PKG_NAME
4575 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
4576 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
4577 		  ,P_SQLCODE => SQLCODE
4578 		  ,P_SQLERRM => SQLERRM
4579 		  ,X_MSG_COUNT => X_MSG_COUNT
4580 		  ,X_MSG_DATA => X_MSG_DATA
4581 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4582 
4583 End Create_quote_lines;
4584 
4585 
4586 
4587 
4588 --   *******************************************************
4589 --    Start of Comments
4590 --   *******************************************************
4591 --   API Name:  Update_Quote_Line
4592 --   Type    :  Public
4593 --   Pre-Req :
4594 --   Parameters:
4595 --   IN
4596 --       p_api_version_number      IN   NUMBER     Required
4597 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
4598 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
4599 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
4600 --       P_qte_lines_Rec     IN    qte_line_Rec_Type         Required
4601 --       P_quote_header_id   IN    NUMBER                    Required
4602 --       P_header_last_update_date IN DATE                   Required
4603 --       P_Payment_Tbl       IN    Payment_Tbl_Type
4604 --       P_Price_Adj_Tbl     IN    Price_Adj_Tbl_Type
4605 --       P_Qte_Line_Dtl_Rec  IN    Qte_Line_Dtl_Rec_Type
4606 --       P_Shipment_Tbl      IN    Shipment_Tbl_Type
4607 --       P_Tax_Details_Tbl      IN    Tax_Details_Tbl_Type
4608 --       P_Freight_Charges_Tbl  IN    Freight_Charges_Tbl_Type
4609 --       P_Line_Relationship_Tbl IN   Line_Relationship_Tbl_Type
4610 --       P_Price_Attributes_Tbl  IN   Price_Attributes_Tbl_Type
4611 --       P_Price_Adj_Relationship_Tbl IN Price_Adj_Relationship_Tbl_Type
4612 --       P_Update_Header_Flag    IN   VARCHAR2     Optional  Default = FND_API.G_TRUE
4613 --   OUT:
4614 --       X_quote_line_id     OUT NOCOPY /* file.sql.39 change */ NUMBER,
4615 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
4616 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
4617 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
4618 --   Version : Current version 2.0
4619 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
4620 --         and basic operation, developer must manually add parameters and business logic as necessary.
4621 --
4622 --   End of Comments
4623 --
4624 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
4625 
4626 PROCEDURE Update_Quote_Line(
4627     P_Api_Version_Number    IN   NUMBER,
4628     P_Init_Msg_List         IN   VARCHAR2                                := FND_API.G_FALSE,
4629     P_Commit                IN   VARCHAR2                                := FND_API.G_FALSE,
4630     P_Validation_Level 	   IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
4631     P_Qte_Header_Rec        IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type       := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
4632     P_Qte_Line_Rec          IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type         := ASO_QUOTE_PUB.G_MISS_qte_line_REC,
4633     P_Control_REC           IN   ASO_QUOTE_PUB.Control_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Control_Rec,
4634     P_Payment_Tbl           IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_Payment_TBL,
4635     P_Price_Adj_Tbl         IN   ASO_QUOTE_PUB.Price_Adj_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL,
4636     P_Qte_Line_Dtl_tbl      IN   ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type     := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL,
4637     P_Shipment_Tbl          IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_shipment_TBL,
4638     P_Tax_Detail_Tbl        IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL,
4639     P_Freight_Charge_Tbl    IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL,
4640     P_Price_Attributes_Tbl  IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL,
4641     P_Price_Adj_Attr_Tbl    IN   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type   := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl,
4642     P_Line_Attribs_Ext_Tbl  IN   ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl,
4643     P_Sales_Credit_Tbl      IN   ASO_QUOTE_PUB.Sales_Credit_Tbl_Type     := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
4644     P_Quote_Party_Tbl       IN   ASO_QUOTE_PUB.Quote_Party_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
4645     P_Update_Header_Flag    IN   VARCHAR2                                := 'Y',
4646     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
4647     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
4648     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
4649     X_Qte_Line_Dtl_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
4650     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
4651     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
4652     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
4653     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type ,
4654     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type,
4655     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type,
4656     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Sales_Credit_Tbl_Type,
4657     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Quote_Party_Tbl_Type,
4658     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
4659     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
4660     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
4661     )
4662 IS
4663   G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
4664   G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
4665 
4666   Cursor C_Get_quote(c_QUOTE_LINE_ID Number) IS
4667   SELECT head.LAST_UPDATE_DATE, head.QUOTE_STATUS_ID, head.QUOTE_NUMBER,
4668          head.TOTAL_ADJUSTED_PERCENT,head.quote_expiration_date
4669   FROM  ASO_QUOTE_HEADERS_ALL head,
4670         ASO_QUOTE_LINES_ALL line
4671   WHERE head.QUOTE_HEADER_ID = line.QUOTE_HEADER_ID
4672   AND   line.QUOTE_LINE_ID = c_QUOTE_LINE_ID;
4673 
4674   CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
4675   SELECT UPDATE_ALLOWED_FLAG, AUTO_VERSION_FLAG FROM ASO_QUOTE_STATUSES_B
4676   WHERE quote_status_id = c_qte_status_id;
4677 
4678   CURSOR C_Qte_Version (X_qte_number NUMBER) IS
4679   SELECT max(quote_version)
4680   FROM ASO_QUOTE_HEADERS_ALL
4681   WHERE quote_number = X_qte_number;
4682 
4683   CURSOR C_Inst_Details (X_shipment_id NUMBER) IS
4684   SELECT sum(customer_product_quantity) FROM cs_line_inst_details
4685   WHERE quote_line_shipment_id = X_shipment_id;
4686 
4687   --  hyang csi change 1935614
4688   CURSOR C_CSI_Details (X_quote_line_id NUMBER) IS
4689   select b.quantity
4690   from csi_t_transaction_lines a, csi_t_txn_line_details b
4691   where a.source_transaction_table='ASO_QUOTE_LINES_ALL'
4692   and a.source_transaction_id = x_quote_line_id
4693   and a.transaction_line_id = b.transaction_line_id;
4694 
4695   CURSOR C_ship_partial (l_quote_line_id NUMBER) IS
4696   SELECT count(*)
4697   FROM aso_shipments
4698   WHERE quote_line_id = l_quote_line_id;
4699 
4700   CURSOR get_cust_acct(cust_QUOTE_HEADER_ID Number) IS
4701   SELECT CUST_ACCOUNT_ID
4702   FROM ASO_QUOTE_HEADERS_ALL
4703   WHERE QUOTE_HEADER_ID = cust_QUOTE_HEADER_ID;
4704 
4705   Cursor C_exp_date(c_QUOTE_HEADER_ID Number) IS
4706   Select quote_expiration_date
4707   From  ASO_QUOTE_HEADERS_ALL
4708   Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
4709 
4710   CURSOR C_org_id IS
4711   SELECT org_id
4712   FROM aso_quote_lines_all
4713   WHERE quote_line_id = p_qte_line_rec.quote_line_id;
4714 
4715   CURSOR c_inventory_item_id IS
4716   select inventory_item_id
4717   from aso_quote_lines_all
4718   where quote_line_id = P_Qte_Line_Rec.quote_line_id;
4719 
4720   cursor c_service (p_qln_id number)is
4721   select service_item_flag,serviceable_product_flag
4722   from aso_quote_lines_All
4723   where quote_line_id = p_qln_id;
4724 
4725   CURSOR C_qln_exist IS
4726   select quote_line_id  from aso_quote_lines_all
4727   where quote_line_id = p_qte_line_rec.quote_line_id;
4728 
4729   -- Cursor declaration for line_category_code and order_line_type_id change bug # 2208195
4730   cursor c_line_category_code(p_quote_line_id  NUMBER) is
4731   select line_category_code
4732   from aso_quote_lines_all
4733   where quote_line_id = p_quote_line_id;
4734 
4735   cursor c_order_line_type_id(p_quote_line_id  NUMBER) is
4736   select a.line_category_code, a.order_line_type_id, b.config_header_id, b.config_revision_num
4737   from aso_quote_lines_all a, aso_quote_line_details b
4738   where a.quote_line_id = b.quote_line_id
4739   and a.quote_line_id   = p_quote_line_id;
4740 
4741   cursor c_item_type_code is
4742   select item_type_code
4743   from aso_quote_lines_all
4744   where quote_line_id = p_qte_line_rec.quote_line_id;
4745 
4746   --New code for Bug # 2498942 fix
4747 
4748   cursor c_service_exist is
4749   select quote_line_id
4750   from aso_quote_line_details
4751   where service_ref_line_id = p_qte_line_rec.quote_line_id;
4752 
4753   --New Code for updating PBH
4754 
4755   cursor c_pbh( p_price_adjustment_id number ) is
4756   select price_adjustment_id
4757   from aso_price_adj_relationships a
4758   where a.price_adjustment_id = ( select price_adjustment_id
4759                                   from aso_price_adjustments b
4760                                   where a.price_adjustment_id = b.price_adjustment_id
4761                                   and b.MODIFIER_LINE_TYPE_CODE = 'PBH')
4762   and a.rltd_price_adj_id = p_price_adjustment_id;
4763 
4764   l_price_adjustment_id number;
4765 
4766   l_api_version_number       NUMBER           := 1.0;
4767   l_last_update_date         DATE;
4768   l_api_name                 VARCHAR2(50)     := 'Update_Quote_Line';
4769   l_Return_Status            VARCHAR2(50);
4770   l_Msg_Count                NUMBER;
4771   l_Msg_Data                 VARCHAR2(240);
4772   l_qte_status_id            NUMBER;
4773   l_update_allowed           VARCHAR2(1);
4774   l_auto_version             VARCHAR2(1);
4775   l_quote_number             NUMBER;
4776   l_old_header_rec           ASO_QUOTE_PUB.qte_header_rec_type;
4777   l_qte_header_rec           ASO_QUOTE_PUB.qte_header_rec_type;
4778   l_quote_version            NUMBER;
4779   x_quote_header_id          NUMBER;
4780   l_hd_discount_percent      NUMBER;
4781   header_id                  NUMBER;
4782   l_inventory_item_id        NUMBER;
4783   l_organization_id          NUMBER;
4784   l_ship_count               NUMBER;
4785   l_cust_acct                NUMBER;
4786   l_invoice_org_id           NUMBER;
4787   l_ship_org_id              NUMBER;
4788   l_org_id                   NUMBER;
4789   l_quote_exp_date           DATE;
4790   l_service_item_flag        varchar2(1);
4791   l_serviceable_product_flag varchar2(1);
4792   l_service                  varchar2(1);
4793   l_call_update              varchar2(1);
4794   l_qln_exist                NUMBER;
4795   l_line_category_code       varchar2(30);
4796   l_order_line_type_id       number;
4797   l_item_type_code           varchar2(30);
4798   l_config_header_id         number;
4799   l_config_revision_num      number;
4800   l_db_order_type_id         number;
4801 
4802   l_Qte_Line_Rec          ASO_QUOTE_PUB.Qte_Line_Rec_Type          := ASO_QUOTE_PUB.G_MISS_qte_line_REC;
4803   l_Payment_Tbl           ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_Payment_TBL;
4804   l_Price_Adj_Tbl         ASO_QUOTE_PUB.Price_Adj_Tbl_Type         := ASO_QUOTE_PUB.G_MISS_Price_Adj_TBL;
4805   l_Qte_Line_Dtl_rec      ASO_QUOTE_PUB.Qte_Line_Dtl_rec_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_REC;
4806   l_Shipment_Tbl          ASO_QUOTE_PUB.Shipment_Tbl_Type          := ASO_QUOTE_PUB.G_MISS_shipment_TBL;
4807   l_Tax_Detail_Tbl        ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_MISS_tax_detail_TBL;
4808   l_Freight_Charge_Tbl    ASO_QUOTE_PUB.Freight_Charge_Tbl_Type    := ASO_QUOTE_PUB.G_MISS_freight_charge_TBL;
4809   l_Line_Rltship_Tbl      ASO_QUOTE_PUB.Line_Rltship_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_line_rltship_TBL;
4810   l_Price_Attributes_Tbl  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type  := ASO_QUOTE_PUB.G_MISS_Price_attributes_TBL;
4811   l_Price_Adj_rltship_Tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_price_adj_rltship_TBL;
4812   l_Price_Adj_Attr_Tbl    ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type    := ASO_QUOTE_PUB.G_Miss_PRICE_ADJ_ATTR_Tbl;
4813   l_Line_Attribs_Ext_Tbl  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type  := ASO_QUOTE_PUB.G_Miss_Line_Attribs_Ext_Tbl;
4814   l_Qte_Line_Dtl_tbl      ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type      := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_TBL;
4815   l_Sales_Credit_Tbl      ASO_QUOTE_PUB.Sales_Credit_Tbl_Type      := ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl;
4816   l_Quote_Party_Tbl       ASO_QUOTE_PUB.Quote_Party_Tbl_Type       := ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl;
4817   l_qte_line_tbl          ASO_QUOTE_PUB.Qte_Line_tbl_Type          := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
4818 
4819   l_price_attributes_rec  ASO_QUOTE_PUB.Price_Attributes_Rec_Type;
4820   l_price_adj_rec         ASO_QUOTE_PUB.Price_Adj_Rec_Type;
4821   l_Price_Adj_Attr_rec    ASO_QUOTE_PUB.Price_Adj_Attr_Rec_Type;
4822   l_Shipment_rec          ASO_QUOTE_PUB.Shipment_rec_Type;
4823   l_Tax_Detail_rec        ASO_QUOTE_PUB.Tax_Detail_rec_Type;
4824   l_payment_rec           ASO_QUOTE_PUB.Payment_rec_Type;
4825   l_Freight_Charge_rec    ASO_QUOTE_PUB.Freight_Charge_rec_Type;
4826   l_Line_Attribs_rec      ASO_QUOTE_PUB.Line_Attribs_Ext_rec_type;
4827   l_Sales_Credit_rec      ASO_QUOTE_PUB.Sales_Credit_rec_Type;
4828   l_Quote_Party_rec       ASO_QUOTE_PUB.Quote_Party_rec_Type;
4829   lx_tax_shipment_tbl     ASO_QUOTE_PUB.Shipment_tbl_Type;
4830   l_quantity              NUMBER;
4831   my_message              VARCHAR2(2000);
4832 
4833   l_tax_control_rec       ASO_TAX_INT.Tax_control_rec_type;
4834   x_tax_amount            NUMBER;
4835   l_calc_tax_detail_rec   ASO_QUOTE_PUB.Tax_Detail_Rec_Type := ASO_QUOTE_PUB.G_MISS_TAX_DETAIL_REC;
4836   l_pricing_control_rec   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
4837 
4838   l_db_qte_line_rec       ASO_QUOTE_PUB.Qte_Line_Rec_Type   := ASO_QUOTE_PUB.G_MISS_Qte_Line_Rec;
4839   l_db_shipment_tbl       ASO_QUOTE_PUB.Shipment_Tbl_Type   := ASO_QUOTE_PUB.G_MISS_Shipment_Tbl;
4840   l_db_shipment_rec       ASO_QUOTE_PUB.Shipment_Rec_Type   := ASO_QUOTE_PUB.G_MISS_Shipment_Rec;
4841   l_hd_shipment_tbl       ASO_QUOTE_PUB.Shipment_Tbl_Type   := ASO_QUOTE_PUB.G_MISS_Shipment_Tbl;
4842   l_hd_shipment_rec       ASO_QUOTE_PUB.Shipment_Rec_Type   := ASO_QUOTE_PUB.G_MISS_Shipment_Rec;
4843 
4844   CURSOR c_line_relation (p_line_id number, p_rel_line_id number) IS
4845   SELECT 'x' FROM ASO_LINE_RELATIONSHIPS
4846   WHERE quote_line_id = p_line_id and
4847   related_quote_line_id = p_rel_line_id
4848   AND relationship_type_code = 'SERVICE';
4849 
4850   CURSOR c_db_payment_terms(p_payment_id number) IS
4851   SELECT payment_term_id_from,payment_term_id
4852   FROM   ASO_PAYMENTS
4853   WHERE  payment_id = p_payment_id;
4854 
4855   CURSOR c_db_ship_freight_terms(p_shipment_id number) IS
4856   SELECT ship_method_code_from,ship_method_code,
4857   Freight_terms_code_from,Freight_terms_code
4858   FROM   ASO_SHIPMENTS
4859   WHERE  shipment_id = p_shipment_id;
4860 
4861   cursor c_service_ref_type_code(p_quote_line_detail_id  number) is
4862   select service_ref_type_code from aso_quote_line_details
4863   where quote_line_detail_id = p_quote_line_detail_id;
4864 
4865     cursor get_payment_type_code( l_payment_id Number) is
4866     select payment_type_code
4867     from aso_payments
4868     where payment_id = l_payment_id;
4869 
4870     cursor get_bill_to_party( l_qte_line_id Number) is
4871     select invoice_to_cust_party_id
4872     from aso_quote_lines_all
4873     where quote_line_id = l_qte_line_id;
4874 
4875   l_service_ref_type_code     varchar2(30);
4876 
4877   l_line_rel                  VARCHAR2(1);
4878   x_relationship_id           NUMBER;
4879   l_line_rtlship_rec          ASO_QUOTE_PUB.Line_Rltship_Rec_Type := ASO_QUOTE_PUB.G_MISS_Line_Rltship_REC;
4880   l_db_qte_line_dtl_tbl       ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type := ASO_QUOTE_PUB.G_MISS_qte_line_dtl_tbl;
4881 
4882   l_copy_quote_control_rec    aso_copy_quote_pub.copy_quote_control_rec_type;
4883   l_copy_quote_header_rec     aso_copy_quote_pub.copy_quote_header_rec_type;
4884   l_qte_nbr                   number;
4885 
4886   --new code to call overload pricing_order procedure
4887   l_hd_price_attr_tbl         ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4888   lx_qte_line_tbl             ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
4889   lx_qte_header_rec           ASO_QUOTE_PUB.Qte_Header_Rec_Type;
4890   lx_qte_line_dtl_tbl         ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type;
4891   lx_price_adj_tbl            ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4892   lx_price_adj_attr_tbl       ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4893   lx_price_adj_rltship_tbl    ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
4894 
4895   -- bmishra defaulting framework
4896   l_def_control_rec           ASO_DEFAULTING_INT.Control_Rec_Type     := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
4897   l_db_object_name            VARCHAR2(30);
4898   --l_shipment_rec            ASO_QUOTE_PUB.Shipment_Rec_Type;
4899   --l_payment_rec             ASO_QUOTE_PUB.Payment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Payment_REC;
4900   lx_hd_shipment_rec          ASO_QUOTE_PUB.Shipment_Rec_Type;
4901   lx_hd_payment_rec           ASO_QUOTE_PUB.Payment_Rec_Type;
4902   lx_hd_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4903   lx_hd_misc_rec              ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
4904   lx_qte_line_rec             ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4905   lx_ln_misc_rec              ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
4906   lx_ln_shipment_rec          ASO_QUOTE_PUB.Shipment_Rec_Type;
4907   lx_ln_payment_rec           ASO_QUOTE_PUB.Payment_Rec_Type;
4908   lx_ln_tax_detail_rec        ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
4909   lx_changed_flag             VARCHAR2(1);
4910   lx_ln_payment_tbl	          ASO_QUOTE_PUB.Payment_Tbl_Type;
4911   lx_ln_Shipment_Tbl          ASO_QUOTE_PUB.Shipment_Tbl_Type;
4912   l_control_rec               ASO_QUOTE_PUB.Control_Rec_Type          := p_control_rec;
4913   l_Orig_Payment_Tbl          ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_Payment_TBL;
4914   lx_price_attr_tbl           ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4915 
4916   /* Code change for Quoting Usability Sun ER Start */
4917 
4918   l_def_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type := ASO_QUOTE_PUB.G_MISS_Qte_Line_Rec;
4919   l_line_rec         ASO_QUOTE_PUB.Qte_Line_Rec_Type := p_qte_line_rec;
4920   l_ln_payment_tbl   ASO_QUOTE_PUB.Payment_Tbl_Type  := p_payment_tbl;
4921   l_ln_Shipment_Tbl  ASO_QUOTE_PUB.Shipment_Tbl_Type := p_shipment_tbl;
4922 
4923   Cursor C_INVOICE_TO_CUSTOMER(P_QUOTE_LINE_ID IN NUMBER) IS
4924   SELECT INVOICE_TO_CUST_ACCOUNT_ID
4925   FROM ASO_QUOTE_LINES_ALL
4926   WHERE QUOTE_LINE_ID = P_QUOTE_LINE_ID;
4927 
4928   l_INVOICE_TO_CUSTOMER Number;
4929 
4930   CURSOR C_AGREEMENT(P_AGREEMENT_ID IN NUMBER,P_INVOICE_TO_CUSTOMER_ID IN NUMBER) IS
4931   SELECT 'x'
4932   FROM OE_AGREEMENTS_VL
4933   WHERE AGREEMENT_ID = P_AGREEMENT_ID
4934   AND  INVOICE_TO_CUSTOMER_ID = P_INVOICE_TO_CUSTOMER_ID;
4935 
4936   l_var varchar2(1);
4937 
4938   /* Code change for Quoting Usability Sun ER End */
4939 
4940 BEGIN
4941 
4942       -- Standard Start of API savepoint
4943       SAVEPOINT UPDATE_quote_line_PVT;
4944 
4945       -- Standard call to check for call compatibility.
4946       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4947                          	             p_api_version_number,
4948                                            l_api_name,
4949                                            G_PKG_NAME) THEN
4950           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4951       END IF;
4952 
4953 
4954       -- Initialize message list if p_init_msg_list is set to TRUE.
4955       IF FND_API.to_Boolean( p_init_msg_list ) THEN
4956           FND_MSG_PUB.initialize;
4957       END IF;
4958 
4959 
4960       -- Initialize API return status to SUCCESS
4961       x_return_status := FND_API.G_RET_STS_SUCCESS;
4962 
4963       if aso_debug_pub.g_debug_flag = 'Y' THEN
4964           aso_debug_pub.add('Update_Quote_line - Begin ', 1, 'Y');
4965           aso_debug_pub.add('P_Control_REC.AUTO_VERSION_FLAG: '||nvl(P_Control_REC.AUTO_VERSION_FLAG,'null'),1,'N');
4966           aso_debug_pub.add('P_Control_REC.pricing_request_type: '||nvl(P_Control_REC.pricing_request_type,'null'),1,'N');
4967           aso_debug_pub.add('P_Control_REC.header_pricing_event: '||nvl(P_Control_REC.header_pricing_event,'null'),1,'N');
4968           aso_debug_pub.add('P_Control_REC.line_pricing_event: '||nvl(P_Control_REC.line_pricing_event,'null'),1,'N');
4969           aso_debug_pub.add('P_Control_REC.CALCULATE_TAX_FLAG: '||nvl(P_Control_REC.CALCULATE_TAX_FLAG,'null'),1,'N');
4970           aso_debug_pub.add('P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG: '||nvl(P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG,'null'),1,'N');
4971           aso_debug_pub.add('P_Control_REC.COPY_TASK_FLAG: '||nvl(P_Control_REC.COPY_TASK_FLAG,'null'),1,'N');
4972           aso_debug_pub.add('P_Control_REC.COPY_NOTES_FLAG: '||nvl(P_Control_REC.COPY_NOTES_FLAG,'null'),1,'N');
4973           aso_debug_pub.add('P_Control_REC.COPY_ATT_FLAG: '||nvl(P_Control_REC.COPY_ATT_FLAG,'null'),1,'N');
4974 	  aso_debug_pub.add('P_Control_Rec.Change_Customer_flag: '||nvl(P_Control_Rec.Change_Customer_flag,'null'),1,'N');  -- Code change for Quoting Usability Sun ER
4975           aso_debug_pub.add('P_Qte_Line_Rec.OPERATION_CODE: '||nvl(P_Qte_Line_Rec.OPERATION_CODE,'null'),1,'N');
4976           aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_LINE_ID: '||nvl(to_char(P_Qte_Line_Rec.QUOTE_LINE_ID),'null'),1,'N');
4977           aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_HEADER_ID: '||nvl(to_char(P_Qte_Line_Rec.QUOTE_HEADER_ID),'null'),1,'N');
4978           aso_debug_pub.add('P_Qte_Line_Rec.LINE_CATEGORY_CODE: '||nvl(P_Qte_Line_Rec.LINE_CATEGORY_CODE,'null'),1,'N');
4979           aso_debug_pub.add('P_Qte_Line_Rec.ITEM_TYPE_CODE: '||nvl(P_Qte_Line_Rec.ITEM_TYPE_CODE,'null'),1,'N');
4980           aso_debug_pub.add('P_Qte_Line_Rec.ORDER_LINE_TYPE_ID: '||nvl(to_char(P_Qte_Line_Rec.ORDER_LINE_TYPE_ID),'null'),1,'N');
4981           aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_PARTY_SITE_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_PARTY_SITE_ID),'null'),1,'N');
4982           aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_PARTY_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_PARTY_ID),'null'),1,'N');
4983           aso_debug_pub.add('P_Qte_Line_Rec.INVOICE_TO_CUST_ACCOUNT_ID: '||nvl(to_char(P_Qte_Line_Rec.INVOICE_TO_CUST_ACCOUNT_ID),'null'),1,'N');
4984           aso_debug_pub.add('P_Qte_Line_Rec.INVENTORY_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.INVENTORY_ITEM_ID),'null'),1,'N');
4985           aso_debug_pub.add('P_Qte_Line_Rec.QUANTITY: '||nvl(to_char(P_Qte_Line_Rec.QUANTITY),'null'),1,'N');
4986           aso_debug_pub.add('P_Qte_Line_Rec.UOM_CODE: '||nvl(P_Qte_Line_Rec.UOM_CODE,'null'),1,'N');
4987           aso_debug_pub.add('P_Qte_Line_Rec.PRICING_QUANTITY_UOM: '||nvl(P_Qte_Line_Rec.PRICING_QUANTITY_UOM,'null'),1,'N');
4988           aso_debug_pub.add('P_Qte_Line_Rec.PRICE_LIST_ID: '||nvl(to_char(P_Qte_Line_Rec.PRICE_LIST_ID),'null'),1,'N');
4989           aso_debug_pub.add('P_Qte_Line_Rec.PRICE_LIST_LINE_ID: '||nvl(to_char(P_Qte_Line_Rec.PRICE_LIST_LINE_ID),'null'),1,'N');
4990           aso_debug_pub.add('P_Qte_Line_Rec.CURRENCY_CODE: '||nvl(P_Qte_Line_Rec.CURRENCY_CODE,'null'),1,'N');
4991           aso_debug_pub.add('P_Qte_Line_Rec.RELATED_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.RELATED_ITEM_ID),'null'),1,'N');
4992           aso_debug_pub.add('P_Qte_Line_Rec.org_id: '||nvl(to_char(P_Qte_Line_Rec.org_id),'null'));
4993       end if;
4994 
4995       --
4996       -- API body
4997       --
4998 
4999       -- ******************************************************************
5000       -- Validate Environment
5001       -- ******************************************************************
5002       IF FND_GLOBAL.User_Id IS NULL THEN
5003           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5004               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
5005               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
5006               FND_MSG_PUB.ADD;
5007           END IF;
5008           RAISE FND_API.G_EXC_ERROR;
5009       END IF;
5010 
5011 
5012       OPEN C_qln_exist;
5013 	 FETCH C_qln_exist into l_qln_exist;
5014 
5015 	 IF c_qln_exist%NOTFOUND OR l_qln_exist = FND_API.G_MISS_NUM THEN
5016 
5017          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5018               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_LINE');
5019 		    FND_MESSAGE.Set_Token ('VALUE', p_qte_line_rec.quote_line_id, FALSE);
5020               FND_MSG_PUB.ADD;
5021           END IF;
5022           CLOSE C_qln_exist;
5023           raise FND_API.G_EXC_ERROR;
5024 
5025 	 END IF;
5026       CLOSE C_qln_exist;
5027 
5028       IF (p_update_header_flag = 'Y') THEN
5029 
5030           Open C_Get_quote( p_qte_line_rec.QUOTE_LINE_ID);
5031           Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id, l_quote_number, l_hd_discount_percent,l_quote_exp_date;
5032 
5033 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5034       	    aso_debug_pub.add('After c_get_quote',1,'N');
5035       	    aso_debug_pub.add('l_qte_status_id: '||l_qte_status_id,1,'N');
5036       	    aso_debug_pub.add('l_quote_number: '||nvl(to_char(l_quote_number),'null'),1,'N');
5037       	    aso_debug_pub.add('l_hd_discount_percent: '||nvl(to_char(l_hd_discount_percent),'null'),1,'N');
5038 	     end if;
5039 
5040           If ( C_Get_quote%NOTFOUND) Then
5041               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5042                  FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
5043                  FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
5044                  FND_MSG_PUB.Add;
5045               END IF;
5046               Close C_Get_quote;
5047               raise FND_API.G_EXC_ERROR;
5048           END IF;
5049           Close C_Get_quote;
5050 
5051 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5052       	    aso_debug_pub.add('After C_Get_quote Cursor call ',1,'N');
5053 	     end if;
5054 
5055           If (l_last_update_date is NULL or l_last_update_date = FND_API.G_MISS_Date ) Then
5056 
5057                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5058                    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
5059                    FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
5060                    FND_MSG_PUB.ADD;
5061                END IF;
5062                raise FND_API.G_EXC_ERROR;
5063           End if;
5064 
5065           -- Check Whether record has been changed by someone else
5066           If (trunc(l_last_update_date) <> trunc(p_control_rec.last_update_date)) Then
5067 
5068                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5069                    FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
5070                    FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
5071                    FND_MSG_PUB.ADD;
5072                END IF;
5073                raise FND_API.G_EXC_ERROR;
5074           End if;
5075 
5076 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5077       	    aso_debug_pub.add('After Last update date validation',1,'N');
5078 	     end if;
5079 
5080           Open c_qte_status (l_qte_status_id);
5081           Fetch C_qte_status into l_update_allowed, l_auto_version;
5082 
5083 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5084       	   aso_debug_pub.add('after c_qte_status',1,'N');
5085       	   aso_debug_pub.add('l_update_allowed: '||l_update_allowed,1,'N');
5086       	   aso_debug_pub.add('l_auto_version: '||l_auto_version,1,'N');
5087 	    end if;
5088          Close c_qte_status;
5089 
5090 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5091       	   aso_debug_pub.add('After c_qte_status cursor call',1,'N');
5092 	    end if;
5093 
5094          -- the control rec does not set auto version to 'Y' then it should not be versioned
5095 
5096          IF p_control_rec.auto_version_flag = FND_API.G_TRUE AND NVL(l_auto_version,'Y') = 'Y' THEN
5097 
5098 	        OPEN C_Qte_Version(l_quote_number);
5099 	        FETCH C_Qte_Version into l_quote_version;
5100 	        l_quote_version := nvl(l_quote_version, 0) + 1;
5101 	        CLOSE C_Qte_Version;
5102          ELSE
5103              l_auto_version := 'N';
5104          END IF;
5105 
5106 	    if aso_debug_pub.g_debug_flag = 'Y' THEN
5107       	   aso_debug_pub.add('after basic validations'||  x_return_status, 1, 'Y');
5108 	    end if;
5109 
5110          IF l_auto_version = 'Y' THEN
5111 
5112 	        l_old_header_rec := ASO_UTILITY_PVT.Query_Header_Row(p_qte_line_rec.QUOTE_HEADER_ID);
5113 
5114              l_copy_quote_control_rec.new_version     :=  FND_API.G_TRUE;
5115              l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
5116 
5117              aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
5118                                             P_Init_Msg_List           =>  FND_API.G_FALSE,
5119                                             P_Commit                  =>  FND_API.G_FALSE,
5120                                             P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
5121                                             P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
5122                                             X_Qte_Header_Id           =>  x_quote_header_id,
5123                                             X_Qte_Number              =>  l_qte_nbr,
5124                                             X_Return_Status           =>  l_return_status,
5125                                             X_Msg_Count               =>  x_msg_count,
5126                                             X_Msg_Data                =>  x_msg_data
5127                                            );
5128 
5129 		   if aso_debug_pub.g_debug_flag = 'Y' then
5130             	  aso_debug_pub.add('Update_Quote_Line: After copy_quote');
5131             	  aso_debug_pub.add('After copy_quote l_return_status:   ' || l_return_status);
5132             	  aso_debug_pub.add('After copy_quote x_quote_header_id: ' || x_quote_header_id);
5133             	  aso_debug_pub.add('After copy_quote l_qte_nbr:         ' || l_qte_nbr);
5134 		   end if;
5135 
5136              update aso_quote_headers_all
5137              set quote_version      =  l_quote_version + 1,
5138                  max_version_flag   =  'Y',
5139                  last_update_date   =  sysdate,
5140                  last_updated_by    =  fnd_global.user_id,
5141                  last_update_login  =  fnd_global.conc_login_id
5142              where quote_header_id = p_qte_line_rec.quote_header_id;
5143 
5144              update aso_quote_headers_all
5145              set max_version_flag   =  'N',
5146                  quote_version      =  l_old_header_rec.quote_version,
5147                  last_update_date   =  sysdate,
5148                  last_updated_by    =  fnd_global.user_id,
5149                  last_update_login  =  fnd_global.conc_login_id
5150              where quote_header_id = x_quote_header_id;
5151 
5152              update aso_quote_headers_all
5153              set quote_version      =  l_quote_version,
5154                  last_update_date   =  sysdate,
5155                  last_updated_by    =  fnd_global.user_id,
5156                  last_update_login  =  fnd_global.conc_login_id
5157              where quote_header_id = p_qte_line_rec.quote_header_id;
5158 
5159          END IF;   -- auto version flag
5160 
5161       END IF;  -- update header flag
5162 
5163       /* Code change for Quoting Usability Sun ER Start */
5164 
5165       IF P_Control_Rec.Change_Customer_flag = FND_API.G_TRUE THEN
5166 
5167          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5168             aso_debug_pub.add('Update_Quote_Line - P_Control_Rec.Change_Customer_flag is True', 1, 'Y');
5169          END IF ;
5170 
5171           l_line_rec.INVOICE_TO_PARTY_SITE_ID := Null;
5172           l_line_rec.INVOICE_TO_PARTY_ID := Null;
5173 	  l_line_rec.INVOICE_TO_CUST_ACCOUNT_ID := Null;
5174 	  l_line_rec.INVOICE_TO_CUST_PARTY_ID := Null;
5175 
5176 	  If (l_ln_Shipment_Tbl.COUNT > 0) then
5177 	      l_ln_Shipment_Tbl(1).SHIP_TO_CUST_ACCOUNT_ID := Null;
5178 	      l_ln_Shipment_Tbl(1).SHIP_TO_CUST_PARTY_ID := Null;
5179 	      l_ln_Shipment_Tbl(1).SHIP_TO_PARTY_ID := Null;
5180 	      l_ln_Shipment_Tbl(1).SHIP_TO_PARTY_SITE_ID := Null;
5181 	      l_ln_Shipment_Tbl(1).SHIP_TO_PARTY_NAME := Null;
5182 	      l_ln_Shipment_Tbl(1).SHIP_TO_CONTACT_FIRST_NAME := Null;
5183 	      l_ln_Shipment_Tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME := Null;
5184 	      l_ln_Shipment_Tbl(1).SHIP_TO_CONTACT_LAST_NAME := Null;
5185 	      l_ln_Shipment_Tbl(1).SHIP_TO_ADDRESS1 := Null;
5186 	      l_ln_Shipment_Tbl(1).SHIP_TO_ADDRESS2 := Null;
5187 	      l_ln_Shipment_Tbl(1).SHIP_TO_ADDRESS3 := Null;
5188 	      l_ln_Shipment_Tbl(1).SHIP_TO_ADDRESS4 := Null;
5189 	      l_ln_Shipment_Tbl(1).SHIP_TO_COUNTRY_CODE := Null;
5190 	      l_ln_Shipment_Tbl(1).SHIP_TO_COUNTRY := Null;
5191 	      l_ln_Shipment_Tbl(1).SHIP_TO_CITY := Null;
5192 	      l_ln_Shipment_Tbl(1).SHIP_TO_POSTAL_CODE := Null;
5193 	      l_ln_Shipment_Tbl(1).SHIP_TO_STATE := Null;
5194 	      l_ln_Shipment_Tbl(1).SHIP_TO_PROVINCE := Null;
5195 	      l_ln_Shipment_Tbl(1).SHIP_TO_COUNTY := Null;
5196 	      l_ln_Shipment_Tbl(1).SHIP_METHOD_CODE := Null;
5197               l_ln_Shipment_Tbl(1).FREIGHT_TERMS_CODE := Null;
5198 	      l_ln_Shipment_Tbl(1).FOB_CODE := Null;
5199 	      l_ln_Shipment_Tbl(1).DEMAND_CLASS_CODE := Null;
5200 	      l_ln_Shipment_Tbl(1).SHIP_FROM_ORG_ID := Null;
5201 	      l_ln_Shipment_Tbl(1).REQUEST_DATE := Null;
5202 	      l_ln_Shipment_Tbl(1).SHIPMENT_PRIORITY_CODE := Null;
5203 	      l_ln_Shipment_Tbl(1).SHIPPING_INSTRUCTIONS := Null;
5204 	      l_ln_Shipment_Tbl(1).PACKING_INSTRUCTIONS := Null;
5205 	  End If;
5206 
5207 	  l_line_rec.END_CUSTOMER_PARTY_ID := Null;
5208 	  l_line_rec.END_CUSTOMER_PARTY_SITE_ID := Null;
5209 	  l_line_rec.END_CUSTOMER_CUST_ACCOUNT_ID := Null;
5210 	  l_line_rec.END_CUSTOMER_CUST_PARTY_ID := Null;
5211 
5212 	  l_line_rec.PRICE_LIST_ID := Null;
5213 	  l_line_rec.CURRENCY_CODE := Null;
5214 
5215 	  IF (l_line_rec.AGREEMENT_ID IS NOT NULL AND
5216               l_line_rec.AGREEMENT_ID <> FND_API.G_MISS_NUM) THEN
5217 
5218 	      Open C_AGREEMENT(l_line_rec.AGREEMENT_ID,l_line_rec.INVOICE_TO_CUST_ACCOUNT_ID);
5219 	      Fetch C_AGREEMENT Into l_var;
5220 	      Close C_AGREEMENT;
5221 
5222 	      If C_AGREEMENT%Found Then
5223 	         l_line_rec.AGREEMENT_ID := Null;
5224 	      End If;
5225 	  End If;
5226 
5227 	  If (l_ln_payment_tbl.COUNT > 0) then
5228 	      If l_ln_payment_tbl(1).PAYMENT_TYPE_CODE In ('CHECK','CREDIT_CARD') Then
5229        	         If l_ln_payment_tbl(1).PAYMENT_TYPE_CODE = 'CREDIT_CARD' Then
5230 		    l_ln_payment_tbl(1).CREDIT_CARD_CODE := Null;
5231 		    l_ln_payment_tbl(1).CREDIT_CARD_HOLDER_NAME := Null;
5232 		    l_ln_payment_tbl(1).CREDIT_CARD_EXPIRATION_DATE := Null;
5233 		    l_ln_payment_tbl(1).cvv2 := Null;
5234 	         End If;
5235 	         l_ln_payment_tbl(1).PAYMENT_TYPE_CODE := NULL;
5236 	         l_ln_payment_tbl(1).PAYMENT_REF_NUMBER := Null;
5237               End If;
5238 	      l_ln_payment_tbl(1).CUST_PO_NUMBER := Null;
5239 	      l_ln_payment_tbl(1).CUST_PO_LINE_NUMBER := Null;
5240 	      l_ln_payment_tbl(1).PAYMENT_TERM_ID := Null;
5241 	  End If;
5242 
5243           -- bmishra line defaulting framework begin
5244 
5245           IF l_control_rec.defaulting_fwk_flag = 'Y' Then
5246 
5247              l_def_qte_line_rec := l_line_rec;
5248 
5249              IF l_ln_Shipment_Tbl.count > 0 THEN
5250                 l_shipment_rec := l_ln_Shipment_Tbl(1);
5251              END IF;
5252 
5253              IF l_ln_payment_tbl.count > 0 THEN
5254                 l_payment_rec := l_ln_payment_tbl(1);
5255              END IF;
5256 
5257              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5258                 aso_debug_pub.add('Update_Quote_Line: Before defaulting framework', 1, 'Y');
5259                 aso_debug_pub.add('Update_Quote_Line: populate defaulting control record from the line control record', 1, 'Y');
5260              END IF ;
5261 
5262              l_def_control_rec.Dependency_Flag       := p_control_rec.Dependency_Flag;
5263              l_def_control_rec.Defaulting_Flag       := p_control_rec.Defaulting_Flag;
5264              l_def_control_rec.Application_Type_Code := p_control_rec.Application_Type_Code;
5265              l_def_control_rec.Defaulting_Flow_Code  := 'UPDATE';
5266              l_def_control_rec.last_update_date      := p_control_rec.last_update_date;
5267 
5268              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5269                 aso_debug_pub.add('Update_Quote_Line: Defaulting_Fwk_Flag:   '|| p_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
5270                 aso_debug_pub.add('Update_Quote_Line: Dependency_Flag:       '|| l_def_control_rec.Dependency_Flag, 1, 'Y');
5271                 aso_debug_pub.add('Update_Quote_Line: Defaulting_Flag:       '|| l_def_control_rec.Defaulting_Flag, 1, 'Y');
5272                 aso_debug_pub.add('Update_Quote_Line: Application_Type_Code: '|| l_def_control_rec.Application_Type_Code, 1, 'Y');
5273                 aso_debug_pub.add('Update_Quote_Line: Defaulting_Flow_Code:  '|| l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
5274                 aso_debug_pub.add('Update_Quote_Line: last_update_date:      '|| l_def_control_rec.last_update_date, 1, 'Y');
5275              END IF ;
5276 
5277              IF l_def_control_rec.application_type_code = 'QUOTING HTML' OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
5278                 l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_QUOTE_LINE_DB_NAME;
5279              ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
5280                 l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_STORE_CART_LINE_DB_NAME;
5281              ELSE
5282                 l_control_rec.Defaulting_Fwk_Flag := 'N';
5283              END IF;
5284 
5285              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5286                 aso_debug_pub.add('Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
5287              END IF ;
5288 
5289              /* Removing Call for defaulting from create_quote_line */ -- un-commented for Quoting Usability Sun ER
5290 
5291 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5292                 aso_debug_pub.add('Update_Quote_Line - Before Calling Default_Entity procedure', 1, 'Y');
5293              END IF ;
5294 
5295 	     ASO_DEFAULTING_INT.Default_Entity ( p_api_version           =>  1.0,
5296                                                  p_control_rec           =>  l_def_control_rec,
5297                                                  p_database_object_name  =>  l_db_object_name,
5298                                                  p_quote_line_rec        =>  l_def_qte_line_rec,
5299                                                  p_line_shipment_rec     =>  l_shipment_rec,
5300                                                  p_line_payment_rec      =>  l_payment_rec,
5301                                                  x_quote_header_rec      =>  l_qte_header_rec,
5302                                                  x_header_misc_rec       =>  lx_hd_misc_rec,
5303                                                  x_header_shipment_rec   =>  lx_hd_shipment_rec,
5304                                                  x_header_payment_rec    =>  lx_hd_payment_rec,
5305                                                  x_header_tax_detail_rec =>  lx_hd_tax_detail_rec,
5306                                                  x_quote_line_rec        =>  lx_qte_line_rec,
5307                                                  x_line_misc_rec         =>  lx_ln_misc_rec,
5308                                                  x_line_shipment_rec     =>  lx_ln_shipment_rec,
5309                                                  x_line_payment_rec      =>  lx_ln_payment_rec,
5310                                                  x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec,
5311                                                  x_changed_flag          =>  lx_changed_flag,
5312                                                  x_return_status         =>  x_return_status,
5313                                                  x_msg_count             =>  x_msg_count,
5314                                                  x_msg_data              =>  x_msg_data );
5315 
5316              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5317                 aso_debug_pub.add('Update_Quote_line: After call to ASO_DEFAULTING_INT.Default_Entity', 1, 'Y');
5318                 aso_debug_pub.add('Update_Quote_line: x_return_status: '|| x_return_status, 1, 'Y');
5319              End If;
5320 
5321              IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5322 
5323                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5324                    FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
5325                    FND_MSG_PUB.ADD;
5326                 END IF;
5327 
5328                 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5329                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5330                 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5331                    RAISE FND_API.G_EXC_ERROR;
5332                 END IF;
5333              END IF;
5334 
5335 	     IF aso_quote_headers_pvt.Shipment_Null_Rec_Exists(lx_ln_shipment_rec, l_db_object_name) THEN
5336                 lx_ln_shipment_tbl(1) := lx_ln_shipment_rec;
5337              END IF;
5338 
5339              IF aso_quote_headers_pvt.Payment_Null_Rec_Exists(lx_ln_payment_rec, l_db_object_name) THEN
5340                 lx_ln_payment_tbl(1) := lx_ln_payment_rec;
5341              END IF;
5342 	     -- bmishra defaulting framework end
5343 
5344 	  ELSE
5345 
5346 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5347                 aso_debug_pub.add('Update_Quote_Line - l_control_rec.defaulting_fwk_flag is N', 1, 'Y');
5348              END IF ;
5349 
5350 	     lx_qte_line_rec := l_line_rec;
5351              lx_ln_shipment_tbl := l_ln_Shipment_Tbl;
5352              lx_ln_payment_tbl := l_ln_payment_tbl;
5353 	  END IF;
5354 
5355       ELSIF P_Control_Rec.Change_Customer_flag = FND_API.G_FALSE THEN
5356 
5357           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5358              aso_debug_pub.add('Update_Quote_Line - P_Control_Rec.Change_Customer_flag is FALSE', 1, 'Y');
5359           END IF ;
5360 
5361           lx_qte_line_rec := p_qte_line_rec;
5362           lx_ln_shipment_tbl := p_shipment_tbl;
5363           lx_ln_payment_tbl := p_payment_tbl;
5364       END IF;
5365       /* Code change for Quoting Usability Sun ER End */
5366 
5367       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5368           aso_debug_pub.add('Update_Quote_line - before validation', 1, 'Y');
5369           aso_debug_pub.add('Update_Quote_line: ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM: '||ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM, 1, 'Y');
5370       end if;
5371 
5372       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
5373 
5374            ASO_VALIDATE_PVT.Validate_Item_Type_Code(
5375 		                        p_init_msg_list	 => FND_API.G_FALSE,
5376 		                        p_item_type_code => lx_qte_line_rec.item_type_code,
5377 		                        x_return_status  => x_return_status,
5378                                   x_msg_count      => x_msg_count,
5379                                   x_msg_data       => x_msg_data);
5380 
5381            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5382                RAISE FND_API.G_EXC_ERROR;
5383            END IF;
5384 
5385 	      -- invoice_to_party_id must exist and be active in HZ_PARTIES and have the usage INVOICE.
5386 
5387 	      ASO_VALIDATE_PVT.Validate_Party (
5388 		                        p_init_msg_list	=> FND_API.G_FALSE,
5389 		                        p_party_id	     => lx_qte_line_rec.invoice_to_party_id,
5390 		                        p_party_usage	=> 'INVOICE',
5391 		                        x_return_status => x_return_status,
5392                                   x_msg_count     => x_msg_count,
5393                                   x_msg_data      => x_msg_data);
5394 
5395 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5396  		     aso_debug_pub.add('after validate invoice to party: x_return_status: '||x_return_status, 1, 'N');
5397 	      end if;
5398 
5399 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5400                RAISE FND_API.G_EXC_ERROR;
5401            END IF;
5402 
5403 	      ASO_VALIDATE_PVT.Validate_PartySite (
5404 		                        p_init_msg_list	=> FND_API.G_FALSE,
5405 		                        p_party_id	     => lx_qte_line_rec.invoice_to_party_id,
5406 		                        p_party_site_id	=> lx_qte_line_rec.invoice_to_party_site_id,
5407 		                        p_site_usage	=> 'INVOICE',
5408 		                        x_return_status => x_return_status,
5409                                   x_msg_count     => x_msg_count,
5410                                   x_msg_data      => x_msg_data);
5411 
5412 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5413  		     aso_debug_pub.add('after validate invoice to party site: x_return_status: '||x_return_status, 1, 'N');
5414 	      end if;
5415 
5416 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5417                RAISE FND_API.G_EXC_ERROR;
5418            END IF;
5419 
5420 	      -- price list must exist and be active in OE_PRICE_LISTS
5421 	      ASO_VALIDATE_PVT.Validate_PriceList (
5422 		                        p_init_msg_list	=> FND_API.G_FALSE,
5423 		                        p_price_list_id	=> lx_qte_line_rec.price_list_id,
5424 		                        x_return_status => x_return_status,
5425                                   x_msg_count     => x_msg_count,
5426                                   x_msg_data      => x_msg_data);
5427 
5428 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5429                RAISE FND_API.G_EXC_ERROR;
5430            END IF;
5431 
5432            ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
5433   	                             p_init_msg_list		   => FND_API.G_FALSE,
5434                                   p_price_list_id	        => lx_qte_line_rec.price_list_id,
5435                                   p_quote_expiration_date => l_quote_exp_date,
5436                                   x_return_status         => x_return_status,
5437 	                             x_msg_count	        => x_msg_count,
5438 	                             x_msg_data	             => x_msg_data);
5439 
5440            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5441 
5442                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5443 	              FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
5444                    FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
5445                    FND_MSG_PUB.ADD;
5446 	          END IF;
5447 
5448 	          RAISE FND_API.G_EXC_ERROR;
5449            END IF;
5450 
5451 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5452                aso_debug_pub.add('After call to Validate_Quote_Price_Exp: x_return_status: '|| x_return_status, 1, 'Y');
5453 	      end if;
5454 
5455 	      -- shp_to_party_id must exist and be active in HZ_PARTIES and have the usage SHIP.
5456 
5457            For i in 1..lx_ln_shipment_tbl.count LOOP
5458 
5459 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5460  				aso_debug_pub.add('before validating ship_to party: '||nvl(to_char(lx_ln_shipment_tbl(i).ship_to_party_id), 'null'),1,'N');
5461 			end if;
5462 
5463 	          ASO_VALIDATE_PVT.Validate_Party (
5464 		                        p_init_msg_list	=> FND_API.G_FALSE,
5465 		                        p_party_id	     => lx_ln_shipment_tbl(i).ship_to_party_id,
5466 		                        p_party_usage	=> 'SHIP',
5467 		                        x_return_status => x_return_status,
5468                                   x_msg_count     => x_msg_count,
5469                                   x_msg_data      => x_msg_data);
5470 
5471 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5472  			    aso_debug_pub.add('after validate ship to party: x_return_status: '||x_return_status, 1, 'N');
5473 			end if;
5474 
5475 	          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5476                     RAISE FND_API.G_EXC_ERROR;
5477                END IF;
5478 
5479 		     if aso_debug_pub.g_debug_flag = 'Y' THEN
5480 			     aso_debug_pub.add('before validating ship_to party site: '||nvl(to_char(lx_ln_shipment_tbl(i).ship_to_party_site_id),'null'),1,'N');
5481 		     end if;
5482 
5483 	          ASO_VALIDATE_PVT.Validate_PartySite (
5484 		                        p_init_msg_list	 => FND_API.G_FALSE,
5485 		                        p_party_id	      => lx_ln_shipment_tbl(i).ship_to_party_id,
5486 		                        p_party_site_id	 => lx_ln_shipment_tbl(i).ship_to_party_site_id,
5487 		                        p_site_usage	 => 'SHIP',
5488 		                        x_return_status  => x_return_status,
5489                                   x_msg_count      => x_msg_count,
5490                                   x_msg_data       => x_msg_data);
5491 
5492 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5493  			    aso_debug_pub.add('after validate ship to party site: x_return_status: '||x_return_status, 1, 'N');
5494 			end if;
5495 
5496 	          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5497                     RAISE FND_API.G_EXC_ERROR;
5498                END IF;
5499 
5500 	      End LOOP;
5501 
5502 
5503            ASO_VALIDATE_PVT.Validate_Marketing_Source_Code(
5504 		                        p_init_msg_list         => FND_API.G_FALSE,
5505 		                        p_mkting_source_code_id => lx_qte_line_rec.marketing_source_code_id,
5506                                   x_return_status         => x_return_status,
5507                                   x_msg_count             => x_msg_count,
5508                                   x_msg_data              => x_msg_data);
5509 
5510 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5511                aso_debug_pub.add('after marketing source code: x_return_status: '|| x_return_status, 1, 'Y');
5512 		 end if;
5513 
5514            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5515                 RAISE FND_API.G_EXC_ERROR;
5516            END IF;
5517 
5518 
5519            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5520 
5521                ASO_VALIDATE_PVT.Validate_Service_Duration(
5522                            p_init_msg_list    => FND_API.G_FALSE,
5523                            p_service_duration => p_qte_line_dtl_tbl(i).service_duration,
5524                            x_return_status    => x_return_status,
5525                            x_msg_count        => x_msg_count,
5526                            x_msg_data         => x_msg_data);
5527 
5528 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5529                    aso_debug_pub.add('after service duration: x_return_status: '||  x_return_status, 1, 'Y');
5530 	          end if;
5531 
5532                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5533                    RAISE FND_API.G_EXC_ERROR;
5534                END IF;
5535 
5536            END LOOP;
5537 
5538 
5539            FOR i in 1..p_sales_credit_tbl.count LOOP
5540 
5541               if aso_debug_pub.g_debug_flag = 'Y' then
5542                   aso_debug_pub.add('p_sales_credit_tbl('||i||').operation_code: '|| p_sales_credit_tbl(i).operation_code,1,'Y');
5543               end if;
5544 
5545               if (p_sales_credit_tbl(i).operation_code = 'CREATE' or p_sales_credit_tbl(i).operation_code = 'UPDATE') then
5546 
5547                    ASO_VALIDATE_PVT.Validate_Resource_id(
5548 		                            p_init_msg_list	=> FND_API.G_FALSE,
5549 		                            p_resource_id	=> p_sales_credit_tbl(i).resource_id  ,
5550 		                            x_return_status => x_return_status,
5551                                       x_msg_count     => x_msg_count,
5552                                       x_msg_data      => x_msg_data);
5553 
5554                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5555 
5556                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5557 		                FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
5558 		                FND_MSG_PUB.ADD;
5559 	                 END IF;
5560                       RAISE FND_API.G_EXC_ERROR;
5561                    END IF;
5562 
5563                    ASO_VALIDATE_PVT.Validate_Resource_group_id(
5564 		                             p_init_msg_list     => FND_API.G_FALSE,
5565 		                             p_resource_group_id	=> p_sales_credit_tbl(i).resource_group_id,
5566 		                             x_return_status     => x_return_status,
5567                                        x_msg_count         => x_msg_count,
5568                                        x_msg_data          => x_msg_data);
5569 
5570                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5571                        RAISE FND_API.G_EXC_ERROR;
5572                    END IF;
5573 
5574                    ASO_VALIDATE_PVT.Validate_Salescredit_Type(
5575 		                             p_init_msg_list        => FND_API.G_FALSE,
5576 		                             p_salescredit_type_id  => p_sales_credit_tbl(i).sales_credit_type_id,
5577 		                             x_return_status        => x_return_status,
5578                                        x_msg_count            => x_msg_count,
5579                                        x_msg_data             => x_msg_data);
5580 
5581                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5582                        RAISE FND_API.G_EXC_ERROR;
5583                    END IF;
5584 
5585                    ASO_VALIDATE_PVT.Validate_EmployPerson(
5586         	                             p_init_msg_list => FND_API.G_FALSE,
5587         	                             p_employee_id   => p_sales_credit_tbl(i).employee_person_id,
5588 		                             x_return_status => x_return_status,
5589                                        x_msg_count     => x_msg_count,
5590                                        x_msg_data      => x_msg_data);
5591 
5592                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5593                        RAISE FND_API.G_EXC_ERROR;
5594                    END IF;
5595 
5596               end if;
5597 
5598            END LOOP;
5599 
5600 
5601 		 /* commented by bmishra on 12/15/2004 as we are not using quote_party_tbl
5602            FOR i in 1..p_quote_party_tbl.count LOOP
5603 
5604                ASO_VALIDATE_PVT.Validate_Party_Type(
5605 		                         p_init_msg_list => FND_API.G_FALSE,
5606 		                         p_party_type    => p_quote_party_tbl(i).party_type,
5607         	                         x_return_status => x_return_status,
5608                                    x_msg_count     => x_msg_count,
5609                                    x_msg_data      => x_msg_data);
5610 
5611                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5612                    RAISE FND_API.G_EXC_ERROR;
5613                END IF;
5614 
5615                ASO_VALIDATE_PVT.Validate_Party(
5616 		                         p_init_msg_list => FND_API.G_FALSE,
5617 		                         p_party_id	 => p_quote_party_tbl(i).party_id,
5618 		                         p_party_usage	 => null,
5619 		                         x_return_status => x_return_status,
5620                                    x_msg_count     => x_msg_count,
5621                                    x_msg_data      => x_msg_data);
5622 
5623                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5624                      RAISE FND_API.G_EXC_ERROR;
5625                END IF;
5626 
5627  	          ASO_VALIDATE_PVT.Validate_Party_Object_Type(
5628 		                         p_init_msg_list	=> FND_API.G_FALSE,
5629 		                         p_party_object_type => p_quote_party_tbl(i).party_object_type,
5630 		                         x_return_status     => x_return_status,
5631                                    x_msg_count         => x_msg_count,
5632                                    x_msg_data          => x_msg_data);
5633                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5634                    RAISE FND_API.G_EXC_ERROR;
5635                END IF;
5636 
5637            END LOOP;
5638 		 */
5639 
5640 
5641            ASO_VALIDATE_PVT.Validate_MiniSite(
5642                                    p_init_msg_list => FND_API.G_FALSE,
5643                                    p_minisite_id   => lx_qte_line_rec.minisite_id,
5644                                    x_return_status => x_return_status,
5645                                    x_msg_count     => x_msg_count,
5646                                    x_msg_data      => x_msg_data);
5647 
5648            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5649                RAISE FND_API.G_EXC_ERROR;
5650            END IF;
5651 
5652            ASO_VALIDATE_PVT.Validate_Section(
5653                                    p_init_msg_list => FND_API.G_FALSE,
5654                                    p_section_id    => lx_qte_line_rec.section_id,
5655                                    x_return_status => x_return_status,
5656                                    x_msg_count     => x_msg_count,
5657                                    x_msg_data      => x_msg_data);
5658 
5659            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5660                RAISE FND_API.G_EXC_ERROR;
5661            END IF;
5662 
5663       END IF;
5664 
5665            l_db_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row( P_Qte_Line_Id   => lx_qte_line_rec.quote_line_id);
5666 
5667            l_db_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
5668                                                                      P_Qte_Line_Id   => l_db_qte_line_rec.quote_line_id);
5669 
5670 
5671       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD THEN
5672 
5673            IF lx_qte_line_rec.organization_id is NULL or lx_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
5674 
5675                 IF lx_qte_line_rec.org_id is NULL OR lx_qte_line_rec.org_id = FND_API.G_MISS_NUM THEN
5676 
5677                      OPEN C_org_id;
5678                      FETCH C_org_id into l_org_id;
5679 
5680                      IF C_org_id%NOTFOUND THEN
5681 
5682                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5683                              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5684                              FND_MESSAGE.Set_Token('COLUMN', 'ORG_ID', FALSE);
5685                              FND_MSG_PUB.ADD;
5686                          END IF;
5687 
5688                      END IF;
5689                      CLOSE C_org_id;
5690 
5691                 END IF;
5692 
5693                 l_organization_id := oe_profile.value('OE_ORGANIZATION_ID', l_org_id);
5694 
5695            ELSE
5696 
5697 		      l_organization_id := lx_qte_line_rec.organization_id;
5698 
5699            END IF;
5700 
5701 
5702            IF lx_qte_line_rec.inventory_item_id is NULL OR  lx_qte_line_rec.inventory_item_id = FND_API.G_MISS_NUM THEN
5703 
5704                SELECT inventory_item_id INTO l_inventory_item_id
5705                FROM aso_quote_lines_all
5706                WHERE quote_line_id = lx_qte_line_rec.quote_line_id;
5707 
5708            ELSE
5709 
5710                l_inventory_item_id := lx_qte_line_rec.inventory_item_id;
5711 
5712            END IF;
5713 
5714 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5715                aso_debug_pub.add('Update_Quote_Line: before Validate_UOM_code: l_organization_id:   '|| l_organization_id, 1, 'N');
5716                aso_debug_pub.add('Update_Quote_Line: before Validate_UOM_code: l_inventory_item_id: '|| l_inventory_item_id, 1, 'N');
5717 		 end if;
5718 
5719 
5720            -- UOM must exist and should be in ASO_I_UNITS_OF_MEASURE
5721 
5722            ASO_VALIDATE_PVT.Validate_UOM_code(
5723 		                         p_init_msg_list	=> FND_API.G_FALSE,
5724 		                         p_uom_code          => lx_qte_line_rec.uom_code,
5725                                    p_organization_id   => l_organization_id,
5726                                    p_inventory_item_id => l_inventory_item_id,
5727 		                         x_return_status     => x_return_status,
5728                                    x_msg_count         => x_msg_count,
5729                                    x_msg_data          => x_msg_data);
5730 
5731 	      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5732                RAISE FND_API.G_EXC_ERROR;
5733            END IF;
5734 
5735 
5736            ASO_VALIDATE_PVT.Validate_For_GreaterEndDate (
5737 		                         p_init_msg_list => FND_API.G_FALSE,
5738 		                         p_start_date    => lx_qte_line_rec.start_date_active,
5739         	                         p_end_date      => lx_qte_line_rec.end_date_active,
5740 		                         x_return_status => x_return_status,
5741                                    x_msg_count     => x_msg_count,
5742                                    x_msg_data      => x_msg_data);
5743 
5744 	      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5745 
5746                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5747 	              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5748                    FND_MESSAGE.Set_Token('INFO', 'END_DATE', FALSE);
5749 	              FND_MSG_PUB.ADD;
5750 	          END IF;
5751                RAISE FND_API.G_EXC_ERROR;
5752            END IF;
5753 
5754 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5755        	     aso_debug_pub.add('validate greater end date'||  x_return_status , 1, 'Y');
5756 	      end if;
5757 
5758            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5759 
5760                ASO_VALIDATE_PVT.Validate_Returns(
5761                                    p_init_msg_list	   => FND_API.G_FALSE,
5762                                    p_return_ref_type_code => p_qte_line_dtl_tbl(i).return_ref_type,
5763                                    p_return_ref_header_id => p_qte_line_dtl_tbl(i).return_ref_header_id,
5764                                    p_return_ref_line_id   => p_qte_line_dtl_tbl(i).return_ref_line_id,
5765 	                              x_return_status        => x_return_status,
5766                                    x_msg_count            => x_msg_count,
5767                                    x_msg_data             => x_msg_data);
5768 
5769 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5770 
5771                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5772 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5773 	                  FND_MESSAGE.Set_Token('INFO', 'RETURN', FALSE);
5774                        FND_MSG_PUB.ADD;
5775 	              END IF;
5776                    RAISE FND_API.G_EXC_ERROR;
5777                END IF;
5778 
5779            END LOOP;
5780 
5781 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5782          	     aso_debug_pub.add('validate returns'||  x_return_status, 1, 'Y');
5783 	      end if;
5784 
5785 	      -- tax_exempt_flag must be in 'E', 'R' and 'S'
5786 	      -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
5787 
5788            FOR i in 1..p_tax_detail_tbl.count LOOP
5789 
5790 	          ASO_VALIDATE_PVT.Validate_Tax_Exemption (
5791 		                         p_init_msg_list	     => FND_API.G_FALSE,
5792 		                         p_tax_exempt_flag	     => p_tax_detail_tbl(i).tax_exempt_flag,
5793 		                         p_tax_exempt_reason_code => p_tax_detail_tbl(i).tax_exempt_reason_code,
5794 		                         x_return_status          => x_return_status,
5795                                    x_msg_count              => x_msg_count,
5796                                    x_msg_data               => x_msg_data);
5797 
5798 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5799 
5800                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5801 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5802 	                  FND_MESSAGE.Set_Token('INFO', 'TAX', FALSE);
5803 	                  FND_MSG_PUB.ADD;
5804 	              END IF;
5805                    RAISE FND_API.G_EXC_ERROR;
5806                END IF;
5807 
5808            END LOOP;
5809 
5810 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5811                aso_debug_pub.add('validate tax exemption'||  x_return_status, 1, 'Y');
5812 	      end if;
5813 
5814            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5815 
5816 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5817                    aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Update_Quote_Lines:config_header_id: '|| p_qte_line_dtl_tbl(i).config_header_id,1,'N');
5818                    aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Update_Quote_Lines:config_revision_num: '|| p_qte_line_dtl_tbl(i).config_revision_num,1,'N');
5819                    aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Update_Quote_Lines:component_code: '|| p_qte_line_dtl_tbl(i).component_code,1,'N');
5820                    aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Update_Quote_Lines:config_item_id: '|| p_qte_line_dtl_tbl(i).config_item_id,1,'N');
5821 	          end if;
5822 
5823                IF ((p_qte_line_dtl_tbl(i).config_header_id IS NOT NULL AND
5824                     p_qte_line_dtl_tbL(i).config_header_id <> FND_API.G_MISS_NUM) AND
5825                    (p_qte_line_dtl_tbl(i).config_revision_num IS NOT NULL AND
5826                     p_qte_line_dtl_tbl(i).config_revision_num <> FND_API.G_MISS_NUM) AND
5827                    (p_qte_line_dtl_tbl(i).config_item_id IS NOT NULL AND
5828                     p_qte_line_dtl_tbl(i).config_item_id <> FND_API.G_MISS_NUM)) THEN
5829 
5830                     ASO_VALIDATE_PVT.Validate_Configuration(
5831 		                         p_init_msg_list       => FND_API.G_FALSE,
5832 		                         p_config_header_id    => p_qte_line_dtl_tbl(i).config_header_id,
5833         	                         p_config_revision_num => p_qte_line_dtl_tbl(i).config_revision_num,
5834                                    p_config_item_id      => p_qte_line_dtl_tbl(i).config_item_id,
5835 		                         x_return_status       => x_return_status,
5836                                    x_msg_count           => x_msg_count,
5837                                    x_msg_data            => x_msg_data);
5838 
5839 		          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5840              	         aso_debug_pub.add('Update_Quote_Lines after Validate_Configuration :x_return_status:'||x_return_status,1, 'N');
5841 		          end if;
5842 
5843 	               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5844 
5845                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5846 	                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5847 	                       FND_MESSAGE.Set_Token('INFO', 'CONFIGURATION', FALSE);
5848 	                       FND_MSG_PUB.ADD;
5849 	                   END IF;
5850                         RAISE FND_API.G_EXC_ERROR;
5851                     END IF;
5852                END IF;
5853 
5854            END LOOP;
5855 
5856 
5857 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5858                aso_debug_pub.add('validate configuration'||  x_return_status, 1, 'Y');
5859 	      end if;
5860 
5861            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5862 
5863 	          ASO_VALIDATE_PVT.Validate_Delayed_Service(
5864 		                         p_init_msg_list         => FND_API.G_FALSE,
5865 		                         p_service_ref_type_code => p_qte_line_dtl_tbl(i).service_ref_type_code,
5866         	                         p_service_ref_line_id   => p_qte_line_dtl_tbl(i).service_ref_line_id,
5867         	                         p_service_ref_system_id => p_qte_line_dtl_tbl(i).service_ref_system_id,
5868 		                         x_return_status         => x_return_status,
5869                                    x_msg_count             => x_msg_count,
5870                                    x_msg_data              => x_msg_data);
5871 
5872 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5873 
5874                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5875 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5876 	                  FND_MESSAGE.Set_Token('INFO', 'DELAYED SERVICE', FALSE);
5877 	                  FND_MSG_PUB.ADD;
5878 	              END IF;
5879                    RAISE FND_API.G_EXC_ERROR;
5880                END IF;
5881 
5882            END LOOP;
5883 
5884 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5885                aso_debug_pub.add('validate delayed service'||  x_return_status, 1, 'Y');
5886 	      end if;
5887 
5888 		 /* commented by bmishra on 12/15/2004 as quote_party_tbl is obsoleted
5889 
5890            FOR i in 1..p_quote_party_tbl.count LOOP
5891 
5892                ASO_VALIDATE_PVT.Validate_Party_Object_Id(
5893 	                         p_init_msg_list    => FND_API.G_FALSE,
5894                                  p_party_id         => p_quote_party_tbl(i).party_id,
5895 	                         p_party_object_type     => p_quote_party_tbl(i).party_object_type,
5896                                  p_party_object_id       => p_quote_party_tbl(i).party_object_id,
5897                                  x_return_status => x_return_status,
5898                                  x_msg_count     => x_msg_count,
5899                                  x_msg_data      => x_msg_data);
5900                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5901                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5902 	                 FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5903                       FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
5904 	                 FND_MSG_PUB.ADD;
5905 	              END IF;
5906                    RAISE FND_API.G_EXC_ERROR;
5907                END IF;
5908            END LOOP;
5909 		 */
5910 
5911            -- new validation for ship_from_org_id
5912 
5913            --l_db_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row( P_Qte_Line_Id   => lx_qte_line_rec.quote_line_id);
5914 
5915            -- l_db_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
5916            --                                                          P_Qte_Line_Id   => l_db_qte_line_rec.quote_line_id);
5917 
5918            IF l_db_shipment_tbl.count = 1 THEN
5919                l_db_shipment_rec := l_db_shipment_tbl(1);
5920            END IF;
5921 
5922            IF lx_ln_shipment_tbl.count > 0 THEN
5923 
5924 		     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5925             	    aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID', 1, 'Y');
5926             	    aso_debug_pub.add('lx_qte_line_rec.quote_header_id:        '|| lx_qte_line_rec.quote_header_id, 1, 'Y');
5927             	    aso_debug_pub.add('lx_qte_line_rec.quote_line_id:          '|| lx_qte_line_rec.quote_line_id, 1, 'Y');
5928             	    aso_debug_pub.add('lx_ln_shipment_tbl(1).quote_line_id:    '|| lx_ln_shipment_tbl(1).quote_line_id, 1, 'Y');
5929             	    aso_debug_pub.add('lx_qte_line_rec.inventory_item_id:      '|| lx_qte_line_rec.inventory_item_id, 1, 'Y');
5930             	    aso_debug_pub.add('l_db_qte_line_rec.inventory_item_id:    '|| l_db_qte_line_rec.inventory_item_id, 1, 'Y');
5931             	    aso_debug_pub.add('lx_ln_shipment_tbl(1).ship_from_org_id: '|| lx_ln_shipment_tbl(1).ship_from_org_id,1,'Y');
5932             	    aso_debug_pub.add('l_db_shipment_rec.ship_from_org_id:     '|| l_db_shipment_rec.ship_from_org_id, 1, 'Y');
5933 		     end if;
5934 
5935                IF (l_db_shipment_rec.ship_from_org_id <> lx_ln_shipment_tbl(1).ship_from_org_id) OR
5936                    ((l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
5937                     ((lx_ln_shipment_tbl(1).ship_from_org_id IS NOT NULL) AND
5938                      (lx_ln_shipment_tbl(1).ship_from_org_id <> FND_API.G_MISS_NUM))) THEN
5939 
5940 			      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5941                   	     aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line: before Validate_ship_from_org_ID', 1, 'Y');
5942 			      end if;
5943 
5944                      ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
5945                                     P_Qte_Line_rec  => lx_qte_line_rec,
5946                                     P_Shipment_rec  => lx_ln_shipment_tbl(1),
5947                                     x_return_status => x_return_status);
5948 
5949 			      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5950                   	     aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line:  after Validate_ship_from_org_ID', 1, 'Y');
5951 			      end if;
5952 
5953                      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5954 
5955 					IF aso_debug_pub.g_debug_flag = 'Y' THEN
5956                       	    aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line:  after Validate_ship_from_org_ID: <> SUCCESS', 1, 'Y');
5957 					end if;
5958 
5959                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5960                              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
5961                              FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', lx_ln_shipment_tbl(1).ship_from_org_id, FALSE);
5962                              FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
5963                              FND_MSG_PUB.ADD;
5964                          END IF;
5965 
5966                          RAISE FND_API.G_EXC_ERROR;
5967 
5968                      END IF;
5969 
5970                END IF;
5971 
5972            ELSE
5973 
5974 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5975                    aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID.', 1, 'Y');
5976                    aso_debug_pub.add('lx_qte_line_rec.quote_header_id:     '|| lx_qte_line_rec.quote_header_id, 1, 'Y');
5977                    aso_debug_pub.add('lx_qte_line_rec.quote_line_id:       '|| lx_qte_line_rec.quote_line_id, 1, 'Y');
5978                    aso_debug_pub.add('lx_qte_line_rec.inventory_item_id:   '|| lx_qte_line_rec.inventory_item_id, 1, 'Y');
5979                    aso_debug_pub.add('l_db_qte_line_rec.inventory_item_id: '|| l_db_qte_line_rec.inventory_item_id, 1, 'Y');
5980                    aso_debug_pub.add('l_db_shipment_rec.ship_from_org_id:  '|| l_db_shipment_rec.ship_from_org_id, 1, 'Y');
5981 	          end if;
5982 
5983                IF (l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
5984                    ((l_db_shipment_rec.ship_from_org_id IS NOT NULL) AND
5985                     (l_db_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM)) THEN
5986 
5987 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5988                          aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID (no lx_ln_shipment_tbl)', 1, 'Y');
5989 		           end if;
5990 
5991                      ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
5992                                     P_Qte_Line_rec  => lx_qte_line_rec,
5993                                     P_Shipment_rec  => l_db_shipment_rec,
5994                                     x_return_status => x_return_status);
5995 
5996 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5997                          aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID (no lx_ln_shipment_tbl)', 1, 'Y');
5998 		           end if;
5999 
6000                      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6001 
6002 		               IF aso_debug_pub.g_debug_flag = 'Y' THEN
6003                              aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID: <> SUCCESS (no lx_ln_shipment_tbl)', 1, 'Y');
6004 		               end if;
6005 
6006                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6007                              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
6008                              FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', l_db_shipment_rec.ship_from_org_id, FALSE);
6009                              FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
6010                              FND_MSG_PUB.ADD;
6011                          END IF;
6012 
6013                          RAISE FND_API.G_EXC_ERROR;
6014                      END IF;
6015 
6016                ELSE
6017 
6018                      IF (l_db_shipment_rec.ship_from_org_id IS NULL) OR (l_db_shipment_rec.ship_from_org_id = FND_API.G_MISS_NUM) THEN
6019 
6020                           l_hd_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
6021                                                                                     P_Qte_Line_Id   => NULL);
6022 
6023                           IF l_hd_shipment_tbl.count = 1 THEN
6024                               l_hd_shipment_rec := l_hd_shipment_tbl(1);
6025                           END IF;
6026 
6027 		                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6028                               aso_debug_pub.add('before Validate_ship_from_org_ID: l_hd_shipment_rec.ship_from_org_id:  '||l_hd_shipment_rec.ship_from_org_id, 1, 'Y');
6029 		                end if;
6030 
6031                           IF (l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
6032                               ((l_hd_shipment_rec.ship_from_org_id IS NOT NULL) AND
6033                                (l_hd_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM)) THEN
6034 
6035 		                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6036                                   aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID (no db_shipment_tbl)', 1, 'Y');
6037 		                    end if;
6038 
6039                               ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
6040                                              P_Qte_Line_rec  => lx_qte_line_rec,
6041                                              P_Shipment_rec  => l_hd_shipment_rec,
6042                                              x_return_status => x_return_status);
6043 
6044 		                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6045                                   aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID (no db_shipment_tbl)', 1, 'Y');
6046 		                    end if;
6047 
6048                               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6049 
6050 		                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
6051                                       aso_debug_pub.add('after Validate_ship_from_org_ID: <> SUCCESS (no db_shipment_tbl)', 1, 'Y');
6052 		                        end if;
6053 
6054                                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6055                                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
6056                                       FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', l_hd_shipment_rec.ship_from_org_id, FALSE);
6057                                       FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
6058                                       FND_MSG_PUB.ADD;
6059                                   END IF;
6060 
6061                                   RAISE FND_API.G_EXC_ERROR;
6062                               END IF;
6063 
6064                           END IF;
6065 
6066                      END IF;
6067 
6068                END IF;
6069 
6070            END IF;
6071 
6072            -- end new validation for ship_from_org_id
6073 
6074       END IF; --IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD
6075 
6076 
6077       -- if quantity is decreased check to see if the installation details quantity is not greater than the new quantity
6078 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6079 		aso_debug_pub.add('Update_Quote_line - before Inst details and populate_quote_line ', 1, 'N');
6080 	 end if;
6081 
6082       -- hyang csi change 1935614
6083 
6084       FOR i IN 1..lx_ln_shipment_tbl.count LOOP
6085 
6086           IF lx_ln_shipment_tbl(i).quantity <> FND_API.G_MISS_NUM THEN
6087 
6088               if not (csi_utility_grp.ib_active()) then
6089 
6090                   Open C_inst_details( lx_ln_shipment_tbl(i).shipment_id);
6091                   Fetch C_inst_details into l_quantity;
6092 
6093                   IF ( C_inst_details%FOUND) AND  l_quantity > lx_ln_shipment_tbl(i).quantity Then
6094 
6095                       Close C_inst_details;
6096 
6097                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6098                           FND_MESSAGE.Set_Name('ASO', 'INST_DETAILS_EXIST');
6099                           FND_MSG_PUB.ADD;
6100                       END IF;
6101                       raise FND_API.G_EXC_ERROR;
6102 
6103                   ELSE
6104 			       close C_inst_details;
6105 
6106                   END IF;
6107 
6108               else
6109 
6110                   open c_csi_details(lx_qte_line_rec.QUOTE_LINE_ID);
6111                   fetch c_csi_details into l_quantity;
6112 
6113                   if (c_csi_details%found) and (l_quantity > lx_ln_shipment_tbl(i).quantity) then
6114 
6115                      close c_csi_details;
6116 
6117                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6118                          FND_MESSAGE.Set_Name('ASO', 'INST_DETAILS_EXIST');
6119                          FND_MSG_PUB.ADD;
6120                      END IF;
6121                      raise FND_API.G_EXC_ERROR;
6122 
6123                   else
6124 			      close c_csi_details;
6125 
6126                   end if;
6127 
6128               end if;
6129 
6130           END IF;
6131 
6132       END LOOP;
6133 
6134 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6135           aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:lx_qte_line_rec.UOM_Code: '||lx_qte_line_rec.UOM_Code,1, 'N');
6136           aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:lx_qte_line_rec.Quantity: '||lx_qte_line_rec.Quantity,1, 'N');
6137 	 end if;
6138 
6139       IF lx_qte_line_rec.UOM_Code = 'ENR' THEN
6140 
6141           IF lx_qte_line_rec.Quantity <> FND_API.G_MISS_NUM THEN
6142 
6143 		    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6144                   aso_debug_pub.add('Update_Quote_Line - Invalid Quantity for EDU: ',1, 'N');
6145 		    end if;
6146 
6147               x_return_status := FND_API.G_RET_STS_ERROR;
6148               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6149                   FND_MESSAGE.Set_Name('ASO', 'ASO_EDU_INVALID_QTY');
6150                   FND_MSG_PUB.ADD;
6151               END IF;
6152               RAISE FND_API.G_EXC_ERROR;
6153 
6154           END IF;
6155 
6156       END IF;
6157 
6158 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6159           aso_debug_pub.add('Update_Quote_Line - Before call to Populate_Quote_Line.',1, 'N');
6160 	 end if;
6161 
6162       Populate_Quote_Line( P_Qte_Line_Rec      	  =>  lx_qte_line_rec,
6163                            P_Control_Rec       	  =>  l_control_rec,
6164                            P_Payment_Tbl       	  =>  lx_ln_payment_tbl,
6165                            P_Price_Adj_Tbl     	  =>  P_Price_Adj_Tbl,
6166                            P_Qte_Line_Dtl_tbl  	  =>  P_Qte_Line_Dtl_tbl,
6167                            P_Shipment_Tbl      	  =>  lx_ln_shipment_tbl,
6168                            P_Tax_Detail_Tbl    	  =>  P_Tax_Detail_Tbl,
6169                            P_Freight_Charge_Tbl     =>  P_Freight_Charge_Tbl,
6170                            P_Price_Attributes_Tbl   =>  P_Price_Attributes_Tbl,
6171                            P_Price_Adj_Attr_Tbl     =>  P_Price_Adj_Attr_Tbl,
6172                            P_Line_Attribs_Ext_Tbl   =>  P_Line_Attribs_Ext_Tbl,
6173                            P_Sales_Credit_Tbl       =>  P_sales_credit_tbl,
6174                            P_Quote_Party_Tbl        =>  P_quote_party_tbl,
6175                            P_Operation_Code         =>  'UPDATE',
6176                            X_Qte_Line_Rec      	  =>  l_Qte_Line_Rec,
6177                            X_Payment_Tbl       	  =>  l_Payment_Tbl,
6178                            X_Price_Adj_Tbl     	  =>  l_Price_Adj_Tbl,
6179                            X_Qte_Line_Dtl_tbl  	  =>  l_Qte_Line_Dtl_tbl,
6180                            X_Shipment_Tbl      	  =>  l_Shipment_Tbl,
6181                            X_Tax_Detail_Tbl    	  =>  l_Tax_Detail_Tbl,
6182                            X_Freight_Charge_Tbl     =>  l_Freight_Charge_Tbl,
6183                            X_Price_Attributes_Tbl   =>  l_Price_Attributes_Tbl,
6184                            X_Price_Adj_Attr_Tbl     =>  l_Price_Adj_Attr_Tbl,
6185                            X_Line_Attribs_Ext_Tbl   =>  l_Line_Attribs_Ext_Tbl,
6186                            X_Sales_Credit_Tbl       =>  l_sales_credit_tbl,
6187                            x_Quote_Party_Tbl        =>  l_quote_party_tbl,
6188                            X_Return_Status          =>  X_return_status,
6189                            X_Msg_Count              =>  x_msg_count,
6190                            X_Msg_Data               =>  x_msg_data );
6191 
6192 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6193           aso_debug_pub.add('Update_Quote_Line - After call to Populate_Quote_Line: x_return_status: '|| x_return_status ,1, 'N');
6194 	 end if;
6195 
6196       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6197 
6198           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6199 	         FND_MESSAGE.Set_Name('ASO', 'ASO_POPULATING_COLUMNS');
6200               FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
6201 	         FND_MSG_PUB.ADD;
6202 	     END IF;
6203 
6204           IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6205               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6206           ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6207               RAISE FND_API.G_EXC_ERROR;
6208           END IF;
6209 
6210       END IF;
6211       -- copy the orig payment tbl to another variable as the count of the payment tbl may get changed
6212 	 -- becoz of the payment validation which is done further down
6213       l_orig_payment_tbl := l_Payment_Tbl;
6214 
6215       -- inter entity validations
6216 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6217       	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: UPDATE_QUOTE_LINE: Begin Inter entity validations');
6218 	 end if;
6219 
6220       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_ENTITY THEN
6221 
6222           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6223 		    ASO_DEBUG_PUB.add('UQ organization_id  = '||nvl(to_char(l_Qte_Line_Rec.organization_id),'null') , 1, 'Y');
6224 		    ASO_DEBUG_PUB.add('UQ Inventory_item_id  = '||l_Qte_Line_Rec.inventory_item_id, 1, 'Y');
6225 	     END IF;
6226 
6227           IF l_Qte_Line_Rec.inventory_item_id <> FND_API.G_MISS_NUM THEN
6228 
6229               ASO_VALIDATE_PVT.Validate_Inventory_Item(
6230 		                   p_init_msg_list     => FND_API.G_FALSE,
6231 		                   p_inventory_item_id => l_Qte_Line_Rec.inventory_item_id,
6232                              p_organization_id   => l_Qte_Line_Rec.organization_id,
6233 		                   x_return_status     => x_return_status,
6234                              x_msg_count         => x_msg_count,
6235                              x_msg_data          => x_msg_data);
6236 
6237 	         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6238                   RAISE FND_API.G_EXC_ERROR;
6239               END IF;
6240           END IF ;
6241 
6242 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6243               aso_debug_pub.add('after inventory item'||  x_return_status, 1, 'Y');
6244 	     end if;
6245 
6246         -- bug 5196952
6247       if   (P_shipment_Tbl.count > 0) then
6248 
6249 	  IF ( p_shipment_tbl(1).ship_method_code is not null and  p_shipment_tbl(1).ship_method_code <> fnd_api.g_miss_char) then
6250 
6251           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6252            aso_debug_pub.add('Update_Quote_line  - ship method codeof  quote line is being updated ', 1, 'N');
6253            aso_debug_pub.add('Update_Quote_line  - before validate ship_method_code ', 1, 'N');
6254           end if;
6255          ASO_VALIDATE_PVT.validate_ship_method_code
6256          (
6257           p_init_msg_list          => fnd_api.g_false,
6258           p_qte_header_id          => lx_qte_line_rec.quote_header_id,
6259           p_qte_line_id            => lx_qte_line_rec.quote_line_id,
6260           p_organization_id        => lx_qte_line_rec.organization_id,
6261           p_ship_method_code       =>  p_shipment_tbl(1).ship_method_code,
6262           p_operation_code         => 'UPDATE',
6263           x_return_status          => x_return_status,
6264           x_msg_count              => x_msg_count,
6265           x_msg_data               => x_msg_data);
6266 
6267           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6268            aso_debug_pub.add('Update_Quote_line  - After validate ship_method_code ', 1, 'N');
6269           end if;
6270 
6271           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6272               RAISE FND_API.G_EXC_ERROR;
6273           END IF;
6274         end if;  -- end if for ship method code check
6275 	 elsif (lx_qte_line_rec.organization_id is not null and lx_qte_line_rec.organization_id <> fnd_api.g_miss_num and P_shipment_Tbl.count = 0) then
6276       -- this means the organization id on the qte line is being updated, hence need to validate the ship method code again for new organization id
6277           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6278            aso_debug_pub.add('Update_Quote_line  - Organization id of quote line is being updated ', 1, 'N');
6279            aso_debug_pub.add('Update_Quote_line  - before validate ship_method_code ', 1, 'N');
6280           end if;
6281          ASO_VALIDATE_PVT.validate_ship_method_code
6282          (
6283           p_init_msg_list          => fnd_api.g_false,
6284           p_qte_header_id          => lx_qte_line_rec.quote_header_id,
6285           p_qte_line_id            => lx_qte_line_rec.quote_line_id,
6286           p_organization_id        => lx_qte_line_rec.organization_id,
6287           p_ship_method_code       => fnd_api.g_miss_char,
6288           p_operation_code         => 'UPDATE',
6289           x_return_status          => x_return_status,
6290           x_msg_count              => x_msg_count,
6291           x_msg_data               => x_msg_data);
6292 
6293           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6294            aso_debug_pub.add('Update_Quote_line  - After validate ship_method_code ', 1, 'N');
6295           end if;
6296 
6297           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6298               RAISE FND_API.G_EXC_ERROR;
6299           END IF;
6300       end if; -- end if for shipment tbl check
6301 
6302 
6303              l_db_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows (P_Qte_Line_Id => l_Qte_Line_Rec.quote_line_id );
6304 
6305           FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6306 
6307           -- bug 4258846
6308              IF  l_Qte_Line_Rec.start_date_active = FND_API.G_MISS_DATE THEN
6309                  l_Qte_Line_Rec.start_date_active :=  l_db_qte_line_rec.start_date_active;
6310              END IF;
6311              IF  l_Qte_Line_Rec.end_date_active  = FND_API.G_MISS_DATE THEN
6312                  l_Qte_Line_Rec.end_date_active :=  l_db_qte_line_rec.end_date_active;
6313              END IF;
6314              IF  l_Qte_Line_Rec.organization_id  = FND_API.G_MISS_NUM THEN
6315                  l_Qte_Line_Rec.organization_id :=  l_db_qte_line_rec.organization_id;
6316              END IF;
6317 
6318               IF l_db_qte_line_dtl_tbl.COUNT > 0 THEN
6319 
6320                    IF l_qte_line_dtl_tbl(i).service_duration = FND_API.G_MISS_NUM THEN
6321                      l_qte_line_dtl_tbl(i).service_duration := l_db_qte_line_dtl_tbl(i).service_duration;
6322                   END IF;
6323 
6324                   IF l_qte_line_dtl_tbl(i).service_period = FND_API.G_MISS_CHAR THEN
6325                     l_qte_line_dtl_tbl(i).service_period := l_db_qte_line_dtl_tbl(i).service_period;
6326                   END IF;
6327 
6328                   IF l_qte_line_dtl_tbl(i).service_coterminate_flag = FND_API.G_MISS_CHAR  THEN
6329                     l_qte_line_dtl_tbl(i).service_coterminate_flag := l_db_qte_line_dtl_tbl(i).service_coterminate_flag;
6330                   END IF;
6331 
6332 		    END IF;
6333 
6334               ASO_VALIDATE_PVT.Validate_Service(
6335                              p_init_msg_list             => FND_API.G_FALSE,
6336                              p_inventory_item_id         => l_Qte_Line_Rec.inventory_item_id,
6337                              p_start_date_active         => l_Qte_Line_Rec.start_date_active,
6338                              p_end_date_active           => l_Qte_Line_Rec.end_date_active,
6339                              p_service_duration          => l_qte_line_dtl_tbl(i).service_duration,
6340                              p_service_period            => l_qte_line_dtl_tbl(i).service_period,
6341                              p_service_coterminate_flag  => l_qte_line_dtl_tbl(i).service_coterminate_flag,
6342                              p_organization_id           => l_Qte_Line_Rec.organization_id,
6343                              x_return_status             => x_return_status,
6344                              x_msg_count                 => x_msg_count,
6345                              x_msg_data                  => x_msg_data);
6346 
6347 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
6348                   aso_debug_pub.add('Update_Quote_line: After Validate_Service: x_return_status: '|| x_return_status);
6349 	         end if;
6350 
6351               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6352 
6353                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6354                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
6355                       FND_MESSAGE.Set_Token('INFO','SERVICE', FALSE);
6356                       FND_MSG_PUB.ADD;
6357                   END IF;
6358 
6359                   RAISE FND_API.G_EXC_ERROR;
6360 
6361               END IF;
6362 
6363               --validate service period
6364 
6365               ASO_VALIDATE_PVT.Validate_UOM_code(
6366                              p_init_msg_list      => FND_API.G_FALSE,
6367                              p_uom_code           => l_qte_line_dtl_tbl(i).service_period,
6368                              p_organization_id    => l_Qte_Line_Rec.organization_id,
6369                              p_inventory_item_id  => l_Qte_Line_Rec.inventory_item_id,
6370                              x_return_status      => x_return_status,
6371                              x_msg_count          => x_msg_count,
6372                              x_msg_data           => x_msg_data);
6373 
6374 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
6375                   aso_debug_pub.add('Update_Quote_line: After validate service period: x_return_status: '|| x_return_status);
6376 	         end if;
6377 
6378               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6379                    RAISE FND_API.G_EXC_ERROR;
6380               END IF;
6381 
6382               --Service cannot be added to a product that is being returned
6383 
6384               IF l_qte_line_dtl_tbl(i).service_ref_type_code = 'QUOTE'
6385                   AND l_qte_line_dtl_tbl(i).service_ref_line_id IS NOT NULL
6386                   AND l_qte_line_dtl_tbl(i).service_ref_line_id <> FND_API.G_MISS_NUM THEN
6387 
6388                     OPEN C_line_category_code(l_qte_line_dtl_tbl(i).service_ref_line_id);
6389                     FETCH C_line_category_code INTO l_line_category_code;
6390 
6391                     IF C_line_category_code%FOUND AND l_line_category_code = 'RETURN' THEN
6392 
6393                         CLOSE C_line_category_code;
6394 
6395                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6396                             FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REFERENCE');
6397                             FND_MSG_PUB.ADD;
6398                         END IF;
6399 
6400                         RAISE FND_API.G_EXC_ERROR;
6401 
6402                     END IF;
6403 
6404                     CLOSE C_line_category_code;
6405 
6406               END IF;
6407 
6408 		    --New code for Bug#3280130
6409 
6410 	         if aso_debug_pub.g_debug_flag = 'Y' then
6411                   aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_line_id: ' || l_qte_line_dtl_tbl(i).service_ref_line_id);
6412               end if;
6413 
6414 		    if l_qte_line_dtl_tbl(i).service_ref_line_id is not null and
6415 		       l_qte_line_dtl_tbl(i).service_ref_line_id <> fnd_api.g_miss_num then
6416 
6417 	             if aso_debug_pub.g_debug_flag = 'Y' then
6418                       aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_type_code: ' || l_qte_line_dtl_tbl(i).service_ref_type_code);
6419                   end if;
6420 
6421 			   if l_qte_line_dtl_tbl(i).service_ref_type_code is null or
6422 			      l_qte_line_dtl_tbl(i).service_ref_type_code = fnd_api.g_miss_char then
6423 
6424                       open c_service_ref_type_code( l_qte_line_dtl_tbl(i).quote_line_detail_id );
6425                       fetch c_service_ref_type_code into l_service_ref_type_code;
6426                       close c_service_ref_type_code;
6427 
6428 	                 if aso_debug_pub.g_debug_flag = 'Y' then
6429                           aso_debug_pub.add('l_service_ref_type_code: ' || l_service_ref_type_code);
6430                       end if;
6431 
6432                       if l_service_ref_type_code is null then
6433 
6434                           x_return_status := fnd_api.g_ret_sts_error;
6435 
6436                           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6437                               FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
6438                               FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_TYPE_CODE', FALSE);
6439                               FND_MESSAGE.Set_Token('VALUE', l_qte_line_dtl_tbl(i).service_ref_type_code,FALSE);
6440                               FND_MSG_PUB.ADD;
6441                           END IF;
6442 
6443                           raise fnd_api.g_exc_error;
6444 
6445                       end if;
6446 
6447                   else
6448 
6449                       l_service_ref_type_code := l_qte_line_dtl_tbl(i).service_ref_type_code;
6450 
6451                   end if;
6452 
6453 	             if aso_debug_pub.g_debug_flag = 'Y' then
6454                       aso_debug_pub.add('l_service_ref_type_code: ' || l_service_ref_type_code);
6455                       aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_line_id: ' || l_qte_line_dtl_tbl(i).service_ref_line_id);
6456                       aso_debug_pub.add('UPDATE_QUOTE_LINE: Before calling aso_validate_pvt.validate_service_ref_line_id');
6457                   end if;
6458 
6459                   aso_validate_pvt.validate_service_ref_line_id (
6460                                   p_init_msg_list         => fnd_api.g_false,
6461                                   p_service_ref_type_code => l_service_ref_type_code,
6462                                   p_service_ref_line_id   => l_qte_line_dtl_tbl(i).service_ref_line_id,
6463                                   p_qte_header_id         => l_Qte_Line_Rec.quote_header_id,
6464                                   x_return_status         => x_return_status,
6465                                   x_msg_count             => x_msg_count,
6466                                   x_msg_data              => x_msg_data);
6467 
6468 	             if aso_debug_pub.g_debug_flag = 'Y' then
6469                       aso_debug_pub.add('UPDATE_QUOTE_LINE: After calling aso_validate_pvt.validate_service_ref_line_id');
6470                       aso_debug_pub.add('UPDATE_QUOTE_LINE: x_return_status: '|| x_return_status);
6471                   end if;
6472 
6473 	             if x_return_status <> fnd_api.g_ret_sts_success then
6474                      raise fnd_api.g_exc_error;
6475                   end if;
6476 
6477               end if;
6478 
6479 		    --End new code for Bug#3280130
6480 
6481           END LOOP; -- FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6482 
6483           --You cannot select the line category code "Return" if a service is selected for a product.
6484 
6485           IF l_Qte_Line_Rec.line_category_code = 'RETURN' THEN
6486 
6487                OPEN c_service_exist;
6488                FETCH c_service_exist INTO l_qln_exist;
6489 
6490                IF c_service_exist%FOUND THEN
6491 
6492                    CLOSE c_service_exist;
6493 
6494                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6495 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_LINE_CATEGORY');
6496                        FND_MSG_PUB.ADD;
6497 	              END IF;
6498 
6499                    RAISE FND_API.G_EXC_ERROR;
6500 
6501                END IF;
6502 
6503                CLOSE c_service_exist;
6504 
6505           END IF;
6506 
6507       END IF; -- inter entity validation
6508 
6509 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6510       	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: UPDATE_QUOTE_LINE: End of Inter entity validations');
6511 	 end if;
6512 
6513 
6514       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6515           RAISE FND_API.G_EXC_ERROR;
6516       END IF;
6517 
6518 	 -- order_type must exist and be active in OE_ORDER_TYPES
6519       l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row(l_Qte_Line_Rec.QUOTE_HEADER_ID);
6520 
6521 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6522 		aso_debug_pub.add('Validation level is set',1,'N');
6523 		aso_debug_pub.add('l_control_rec.application_type_code: '|| l_control_rec.application_type_code ,1,'N');
6524 	 end if;
6525 
6526       ASO_CHECK_TCA_PVT.check_line_account_info(
6527                       p_api_version                => 1.0,
6528                       p_init_msg_list              => FND_API.G_FALSE,
6529                       p_cust_account_id            => l_qte_header_rec.cust_account_id,
6530                       p_qte_line_rec               => l_Qte_Line_Rec,
6531                       p_line_shipment_tbl          => l_shipment_tbl,
6532                       p_application_type_code      => l_control_rec.application_type_code,
6533 				  x_return_status              => l_return_status,
6534                       x_msg_count                  => l_msg_count,
6535                       x_msg_data                   => l_msg_data );
6536 
6537       IF l_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
6538           raise FND_API.G_EXC_ERROR;
6539       END IF;
6540 
6541       ASO_TRADEIN_PVT.LineType( p_init_msg_list  => FND_API.G_FALSE,
6542                                 p_qte_header_rec => l_qte_header_rec,
6543                                 p_qte_line_rec   => l_Qte_Line_Rec,
6544                                 x_return_status  => x_return_status,
6545                                 x_msg_count      => x_msg_count,
6546                                 x_msg_data       => x_msg_data);
6547 
6548 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6549            RAISE FND_API.G_EXC_ERROR;
6550        END IF;
6551 
6552 	  if aso_debug_pub.g_debug_flag = 'Y' THEN
6553            aso_debug_pub.add('after order type'||  x_return_status, 1, 'Y');
6554 	  end if;
6555 
6556        If (p_qte_header_rec.order_type_id = FND_API.G_MISS_NUM) then -- [This is for backward compatibility]
6557 	       l_db_order_type_id  := l_qte_header_rec.order_type_id;
6558        else
6559 	       l_db_order_type_id  :=  p_qte_header_rec.order_type_id;
6560        end if;
6561 
6562        If (l_db_order_type_id  = l_qte_header_rec.order_type_id) and (l_Qte_Line_Rec.order_line_type_id <> FND_API.G_MISS_NUM) Then
6563 
6564             ASO_validate_PVT.Validate_ln_type_for_ord_type(
6565                            p_init_msg_list     =>   FND_API.G_FALSE,
6566                            p_qte_header_rec    =>   l_qte_header_rec,
6567                            P_Qte_Line_rec      =>   l_Qte_Line_Rec,
6568                            x_return_status     =>   x_return_status,
6569                            x_msg_count         =>   x_msg_count,
6570                            x_msg_data          =>   x_msg_data);
6571 
6572             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6573                 RAISE FND_API.G_EXC_ERROR;
6574             END IF;
6575 
6576        End if;
6577 
6578 
6579           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
6580             aso_debug_pub.add('x_return_status for Validate_ln_type_for_ord_type'||  x_return_status, 1, 'Y');
6581           END IF;
6582 
6583 
6584        ASO_TRADEIN_PVT.Validate_Line_Tradein( p_init_msg_list  => FND_API.G_FALSE,
6585                                               p_qte_header_rec => l_qte_header_rec,
6586                                               P_Qte_Line_rec   => l_Qte_Line_Rec,
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            RAISE FND_API.G_EXC_ERROR;
6593        END IF;
6594 
6595 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6596 		 aso_debug_pub.add('Update_Quote_Line - after Validate_Line_Tradein:x_return_status: '||x_return_status, 1, 'N');
6597 	  end if;
6598 
6599        ASO_TRADEIN_PVT.Validate_IB_Return_Qty( p_init_msg_list      =>   FND_API.G_FALSE,
6600                                                p_Qte_Line_rec       =>   l_Qte_Line_Rec,
6601                                                p_Qte_Line_Dtl_Tbl   =>   l_qte_line_dtl_tbl,
6602                                                x_return_status      =>   x_return_status,
6603                                                x_msg_count          =>   x_msg_count,
6604                                                x_msg_data           =>   x_msg_data);
6605 
6606        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6607            RAISE FND_API.G_EXC_ERROR;
6608        END IF;
6609 
6610 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6611 		 aso_debug_pub.add('Update_Quote_Line - after Validate_IB_Return_Qty:x_return_status: '||x_return_status, 1, 'N');
6612 	  end if;
6613 
6614        IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
6615 
6616              ASO_VALIDATE_PVT.Validate_Sales_Credit_Return(
6617                             p_init_msg_list     => FND_API.G_FALSE,
6618                             p_sales_credit_tbl  => p_sales_credit_tbl,
6619                             p_qte_line_rec      => l_Qte_Line_Rec,
6620                             x_return_status     => x_return_status,
6621                             x_msg_count         => x_msg_count,
6622                             x_msg_data          => x_msg_data);
6623 
6624              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6625                  RAISE FND_API.G_EXC_ERROR;
6626              END IF;
6627 
6628        END IF;
6629 
6630        IF aso_debug_pub.g_debug_flag = 'Y' THEN
6631 		 aso_debug_pub.add('Update_Quote_Line - before Validate_Agreement:l_Qte_Line_Rec.Agreement_Id: '||l_Qte_Line_Rec.Agreement_Id, 1, 'N');
6632 	  end if;
6633 
6634        IF (l_Qte_Line_Rec.Agreement_Id IS NOT NULL AND l_Qte_Line_Rec.Agreement_Id <> FND_API.G_MISS_NUM) THEN
6635 
6636             ASO_VALIDATE_PVT.Validate_Agreement(
6637                            p_init_msg_list  => FND_API.G_FALSE,
6638                            P_Agreement_Id   => l_Qte_Line_Rec.Agreement_Id,
6639                            x_return_status  => x_return_status,
6640                            x_msg_count      => x_msg_count,
6641                            x_msg_data       => x_msg_data);
6642 
6643 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6644 		      aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:x_return_status: '||x_return_status, 1, 'N');
6645 	       end if;
6646 
6647             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6648                 RAISE FND_API.G_EXC_ERROR;
6649             END IF;
6650 
6651        END IF;
6652 
6653     -- Validate the invoice to cust party id and payment info, if any
6654      IF l_payment_tbl.count = 0   then
6655         l_payment_tbl := aso_utility_pvt.Query_Payment_Rows( l_qte_line_rec.QUOTE_HEADER_ID,l_qte_line_rec.quote_line_id);
6656      Else
6657 	  -- check to see if the value has been changed, if not get orig value from db
6658 	  if l_payment_tbl(1).payment_type_code = fnd_api.g_miss_char then
6659 	   open get_payment_type_code(l_payment_tbl(1).payment_id);
6660 	   fetch get_payment_type_code into l_payment_tbl(1).payment_type_code;
6661 	   close get_payment_type_code;
6662 	  end if;
6663      End if;
6664 
6665 	-- bill to customer may not have been changed, if so get orig value from db
6666 	if l_qte_line_rec.invoice_to_cust_party_id = fnd_api.g_miss_num then
6667 	 open get_bill_to_party(l_qte_line_rec.quote_line_id);
6668 	 fetch get_bill_to_party into l_qte_line_rec.invoice_to_cust_party_id;
6669 	 close get_bill_to_party;
6670 	end if;
6671 
6672      IF l_payment_tbl.count > 0 then
6673           l_payment_rec := l_payment_tbl(1);
6674         --IF l_payment_rec.payment_type_code = 'CREDIT_CARD' THEN
6675            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6676               aso_debug_pub.add('Before  calling Validate_cc_info ', 1, 'Y');
6677            END IF;
6678            l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row (l_qte_line_rec.Quote_Header_Id );
6679 
6680            aso_validate_pvt.Validate_cc_info
6681             (
6682                 p_init_msg_list     =>  fnd_api.g_false,
6683                 p_payment_rec       =>  l_payment_rec,
6684                 p_qte_header_rec    =>  l_qte_header_rec,
6685                 P_Qte_Line_rec      =>  l_qte_line_rec,
6686                 x_return_status     =>  x_return_status,
6687                 x_msg_count         =>  x_msg_count,
6688                 x_msg_data          =>  x_msg_data);
6689 
6690            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6691               aso_debug_pub.add('after calling Validate_cc_info ', 1, 'Y');
6692               aso_debug_pub.add('Validate_cc_info  Return Status: '||x_return_status, 1, 'Y');
6693            END IF;
6694 
6695             if x_return_status <> fnd_api.g_ret_sts_success then
6696               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6697                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6698               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6699                  RAISE FND_API.G_EXC_ERROR;
6700               ELSE
6701                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6702               END IF;
6703             end if;
6704         --END IF;
6705 
6706       End if;
6707 
6708       -- rset the payment tbl as the original count may have been changed becoz of the validation
6709       l_Payment_Tbl := l_orig_payment_tbl;
6710 
6711        x_qte_line_rec := l_Qte_Line_Rec;
6712 
6713        ASO_QUOTE_LINES_PKG.Update_Row(
6714           p_QUOTE_LINE_ID   	=> l_Qte_Line_Rec.QUOTE_LINE_ID,
6715           p_CREATION_DATE  	=> l_qte_line_rec.creation_date,
6716           p_CREATED_BY  	=> G_USER_ID,
6717           p_LAST_UPDATE_DATE  	=> SYSDATE,
6718           p_LAST_UPDATED_BY  	=> G_USER_ID,
6719           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
6720           p_REQUEST_ID  	=> l_qte_line_rec.REQUEST_ID,
6721           p_PROGRAM_APPLICATION_ID  => l_qte_line_rec.PROGRAM_APPLICATION_ID,
6722           p_PROGRAM_ID  	=> l_qte_line_rec.PROGRAM_ID,
6723           p_PROGRAM_UPDATE_DATE => l_qte_line_rec.PROGRAM_UPDATE_DATE,
6724           p_QUOTE_HEADER_ID    	=> l_qte_line_rec.QUOTE_HEADER_ID,
6725           p_ORG_ID             	=> l_qte_line_rec.ORG_ID        ,
6726           p_LINE_CATEGORY_CODE  => l_qte_line_rec.LINE_CATEGORY_CODE ,
6727           p_ITEM_TYPE_CODE    	=> l_qte_line_rec.ITEM_TYPE_CODE ,
6728           p_LINE_NUMBER       	=> l_qte_line_rec.LINE_NUMBER,
6729           p_START_DATE_ACTIVE   => trunc(l_qte_line_rec.START_DATE_ACTIVE),
6730           p_END_DATE_ACTIVE     => trunc(l_qte_line_rec.END_DATE_ACTIVE)   ,
6731           p_ORDER_LINE_TYPE_ID  => l_qte_line_rec.ORDER_LINE_TYPE_ID ,
6732           p_INVOICE_TO_PARTY_SITE_ID
6733 				=> l_qte_line_rec.INVOICE_TO_PARTY_SITE_ID   ,
6734           p_INVOICE_TO_PARTY_ID => l_qte_line_rec.INVOICE_TO_PARTY_ID  ,
6735           p_INVOICE_TO_CUST_ACCOUNT_ID     => l_qte_line_rec.INVOICE_TO_CUST_ACCOUNT_ID  ,
6736           p_ORGANIZATION_ID     => l_qte_line_rec.ORGANIZATION_ID,
6737           p_INVENTORY_ITEM_ID   => l_qte_line_rec.INVENTORY_ITEM_ID ,
6738           p_QUANTITY   		=> l_qte_line_rec.QUANTITY   ,
6739           p_UOM_CODE    	=> l_qte_line_rec.UOM_CODE ,
6740           p_MARKETING_SOURCE_CODE_ID
6741 				=> l_qte_line_rec.marketing_source_code_id,
6742           p_PRICE_LIST_ID    	=> l_qte_line_rec.PRICE_LIST_ID   ,
6743           p_PRICE_LIST_LINE_ID  => l_qte_line_rec.PRICE_LIST_LINE_ID,
6744           p_CURRENCY_CODE     	=> l_qte_line_rec.CURRENCY_CODE   ,
6745           p_LINE_LIST_PRICE     => l_qte_line_rec.LINE_LIST_PRICE    ,
6746           p_LINE_ADJUSTED_AMOUNT  => l_qte_line_rec.LINE_ADJUSTED_AMOUNT    ,
6747           p_LINE_ADJUSTED_PERCENT => l_qte_line_rec.LINE_ADJUSTED_PERCENT    ,
6748           p_LINE_QUOTE_PRICE  	   => l_qte_line_rec.LINE_QUOTE_PRICE   ,
6749           p_RELATED_ITEM_ID        => l_qte_line_rec.RELATED_ITEM_ID ,
6750           p_ITEM_RELATIONSHIP_TYPE => l_qte_line_rec.ITEM_RELATIONSHIP_TYPE   ,
6751           p_ACCOUNTING_RULE_ID     => l_qte_line_rec.ACCOUNTING_RULE_ID,
6752           p_INVOICING_RULE_ID      => l_qte_line_rec.INVOICING_RULE_ID,
6753           p_SPLIT_SHIPMENT_FLAG    => l_qte_line_rec.SPLIT_SHIPMENT_FLAG   ,
6754           p_BACKORDER_FLAG         => l_qte_line_rec.BACKORDER_FLAG   ,
6755           p_MINISITE_ID            => l_qte_line_rec.MINISITE_ID,
6756           p_SECTION_ID             => l_qte_line_rec.SECTION_ID,
6757           p_ATTRIBUTE_CATEGORY 	   => l_qte_line_rec.ATTRIBUTE_CATEGORY,
6758           p_ATTRIBUTE1     => l_qte_line_rec.ATTRIBUTE1,
6759           p_ATTRIBUTE2     => l_qte_line_rec.ATTRIBUTE2,
6760           p_ATTRIBUTE3     => l_qte_line_rec.ATTRIBUTE3,
6761           p_ATTRIBUTE4     => l_qte_line_rec.ATTRIBUTE4,
6762           p_ATTRIBUTE5     => l_qte_line_rec.ATTRIBUTE5,
6763           p_ATTRIBUTE6     => l_qte_line_rec.ATTRIBUTE6,
6764           p_ATTRIBUTE7     => l_qte_line_rec.ATTRIBUTE7,
6765           p_ATTRIBUTE8     => l_qte_line_rec.ATTRIBUTE8,
6766           p_ATTRIBUTE9     => l_qte_line_rec.ATTRIBUTE9,
6767           p_ATTRIBUTE10    => l_qte_line_rec.ATTRIBUTE10,
6768           p_ATTRIBUTE11    => l_qte_line_rec.ATTRIBUTE11,
6769           p_ATTRIBUTE12    => l_qte_line_rec.ATTRIBUTE12,
6770           p_ATTRIBUTE13    => l_qte_line_rec.ATTRIBUTE13,
6771           p_ATTRIBUTE14    => l_qte_line_rec.ATTRIBUTE14,
6772           p_ATTRIBUTE15    => l_qte_line_rec.ATTRIBUTE15,
6773           p_ATTRIBUTE16  =>  l_qte_line_rec.ATTRIBUTE16,
6774           p_ATTRIBUTE17  =>  l_qte_line_rec.ATTRIBUTE17,
6775           p_ATTRIBUTE18  =>  l_qte_line_rec.ATTRIBUTE18,
6776           p_ATTRIBUTE19  =>  l_qte_line_rec.ATTRIBUTE19,
6777           p_ATTRIBUTE20  =>  l_qte_line_rec.ATTRIBUTE20,
6778 		p_PRICED_PRICE_LIST_ID    => l_qte_line_rec.PRICED_PRICE_LIST_ID,
6779           p_AGREEMENT_ID            => l_qte_line_rec.AGREEMENT_ID,
6780           p_COMMITMENT_ID           => l_qte_line_rec.COMMITMENT_ID,
6781 		p_DISPLAY_ARITHMETIC_OPERATOR => l_qte_line_rec.DISPLAY_ARITHMETIC_OPERATOR,
6782 		p_LINE_TYPE_SOURCE_FLAG => l_qte_line_rec.LINE_TYPE_SOURCE_FLAG,
6783 		p_SERVICE_ITEM_FLAG     => l_qte_line_rec.SERVICE_ITEM_FLAG,
6784 		p_SERVICEABLE_PRODUCT_FLAG => l_qte_line_rec.SERVICEABLE_PRODUCT_FLAG,
6785 		p_INVOICE_TO_CUST_PARTY_ID => l_qte_line_rec.INVOICE_TO_CUST_PARTY_ID,
6786 		P_Selling_Price_Change	   => l_qte_line_rec.Selling_Price_Change,
6787 		P_Recalculate_flag	   => l_qte_line_rec.recalculate_flag,
6788 		p_pricing_line_type_indicator	   => l_qte_line_rec.pricing_line_type_indicator,
6789           p_END_CUSTOMER_PARTY_ID         =>  l_Qte_Line_Rec.END_CUSTOMER_PARTY_ID,
6790           p_END_CUSTOMER_CUST_PARTY_ID    =>  l_Qte_Line_Rec.END_CUSTOMER_CUST_PARTY_ID,
6791           p_END_CUSTOMER_PARTY_SITE_ID    =>  l_Qte_Line_Rec.END_CUSTOMER_PARTY_SITE_ID,
6792           p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  l_Qte_Line_Rec.END_CUSTOMER_CUST_ACCOUNT_ID,
6793 		p_OBJECT_VERSION_NUMBER   =>  l_qte_line_rec.object_version_number,
6794           p_CHARGE_PERIODICITY_CODE => l_qte_line_rec.CHARGE_PERIODICITY_CODE, -- Recurring charges Change
6795           p_SHIP_MODEL_COMPLETE_FLAG => l_qte_line_rec.SHIP_MODEL_COMPLETE_FLAG,
6796           p_LINE_PAYNOW_CHARGES => l_qte_line_rec.LINE_PAYNOW_CHARGES,
6797           p_LINE_PAYNOW_TAX => l_qte_line_rec.LINE_PAYNOW_TAX,
6798           p_LINE_PAYNOW_SUBTOTAL => l_qte_line_rec.LINE_PAYNOW_SUBTOTAL,
6799 		p_PRICING_QUANTITY_UOM => l_qte_line_rec.PRICING_QUANTITY_UOM,
6800 		p_PRICING_QUANTITY => l_qte_line_rec.PRICING_QUANTITY,
6801           p_CONFIG_MODEL_TYPE => l_qte_line_rec.CONFIG_MODEL_TYPE
6802 );
6803 
6804 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
6805 		aso_debug_pub.add('Update_Quote_line - after line.update ', 1, 'N');
6806 	end if;
6807 -- line details
6808 
6809    -- Start Updating Line_category_code and order_line_type_id of configured lines if Model
6810    -- line Line_category_code and order_line_type_id value has changed Bmishra 02/15/02
6811 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
6812    		aso_debug_pub.add('Update_Quote_lines - l_Qte_Line_Rec.line_category_code: '||l_Qte_Line_Rec.line_category_code, 1, 'Y');
6813    		aso_debug_pub.add('Update_Quote_lines - l_Qte_Line_Rec.order_line_type_id: '||l_Qte_Line_Rec.order_line_type_id, 1, 'Y');
6814 	end if;
6815    IF (l_Qte_Line_Rec.line_category_code <> FND_API.G_MISS_CHAR) OR
6816                  (l_Qte_Line_Rec.order_line_type_id <> FND_API.G_MISS_NUM) THEN
6817 				IF aso_debug_pub.g_debug_flag = 'Y' THEN
6818        				aso_debug_pub.add('Update_Quote_lines - l_Qte_Line_Rec.item_type_code: '||l_Qte_Line_Rec.item_type_code, 1, 'Y');
6819 				end if;
6820        IF l_Qte_Line_Rec.item_type_code = FND_API.G_MISS_CHAR THEN
6821           OPEN c_item_type_code;
6822           FETCH c_item_type_code INTO l_item_type_code;
6823 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6824           		aso_debug_pub.add('Update_Quote_lines - Cursor c_item_type_code: l_item_type_code: '||l_item_type_code, 1, 'Y');
6825 		end if;
6826           CLOSE c_item_type_code;
6827        ELSIF l_Qte_Line_Rec.item_type_code = 'MDL' THEN
6828           l_item_type_code := l_Qte_Line_Rec.item_type_code;
6829        END IF;
6830 
6831        IF l_item_type_code = 'MDL' THEN
6832 
6833           OPEN c_order_line_type_id(l_Qte_Line_Rec.quote_line_id);
6834           FETCH c_order_line_type_id INTO l_line_category_code, l_order_line_type_id,
6835 								  l_config_header_id, l_config_revision_num;
6836 
6837           if aso_debug_pub.g_debug_flag = 'Y' then
6838 
6839              aso_debug_pub.add('c_order_line_type_id: l_line_category_code:  '||l_line_category_code);
6840              aso_debug_pub.add('c_order_line_type_id: l_order_line_type_id:  '||l_order_line_type_id);
6841              aso_debug_pub.add('c_order_line_type_id: l_config_header_id:    '||l_config_header_id);
6842              aso_debug_pub.add('c_order_line_type_id: l_config_revision_num: '||l_config_revision_num);
6843 
6844           end if;
6845 
6846           CLOSE c_order_line_type_id;
6847 
6848           BEGIN
6849 
6850               if aso_debug_pub.g_debug_flag = 'Y' then
6851                   aso_debug_pub.add('Update_Quote_lines - Updating l_line_category_code of children.');
6852               end if;
6853 
6854               if l_config_header_id is not null and l_config_revision_num is not null then
6855 
6856                   update aso_quote_lines_all
6857                   set line_category_code =  l_line_category_code,
6858                       order_line_type_id =  l_order_line_type_id,
6859                       last_update_date   =  sysdate,
6860                       last_updated_by    =  fnd_global.user_id,
6861                       last_update_login  =  fnd_global.conc_login_id
6862                   where  NVL(line_type_source_flag,'X') <> 'C'
6863                     and  quote_line_id in( select quote_line_id
6864                                           from aso_quote_line_details
6865                                           where ref_line_id is not null
6866                                           and ref_type_code       = 'CONFIG'
6867                                           and config_header_id    = l_config_header_id
6868                                           and config_revision_num = l_config_revision_num );
6869 
6870               end if;
6871 
6872 
6873                   EXCEPTION
6874 
6875                        WHEN OTHERS THEN
6876                             x_return_status := FND_API.G_RET_STS_ERROR;
6877 
6878 			    if aso_debug_pub.g_debug_flag = 'Y' then
6879                        aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_quote_line: line_category_code
6880 								  update, inside WHEN OTHERS EXCEPTION');
6881 			    end if;
6882 
6883 
6884           END;
6885 
6886        END IF;
6887    END IF;
6888 
6889    -- End Updating Line_category_code and order_line_type_id of configured lines if Model
6890    -- line Line_category_code and order_line_type_id value has changed 02/15/02
6891 
6892 
6893 
6894 FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6895         l_qte_line_dtl_rec := l_qte_line_dtl_tbl(i);
6896 
6897 
6898   IF l_qte_line_dtl_tbl(i).operation_code = 'CREATE' THEN
6899 
6900 
6901         l_qte_line_dtl_rec.quote_line_id := l_qte_line_rec.quote_line_id;
6902         x_qte_line_dtl_tbl(i) := l_qte_line_dtl_rec;
6903         -- BC4J Fix
6904 	   --x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID := null;
6905 
6906         ASO_QUOTE_LINE_DETAILS_PKG.Insert_Row(
6907           px_QUOTE_LINE_DETAIL_ID
6908 			 	=> x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID,
6909           p_CREATION_DATE  	=> SYSDATE,
6910           p_CREATED_BY  	=> G_USER_ID,
6911           p_LAST_UPDATE_DATE  	=> SYSDATE,
6912           p_LAST_UPDATED_BY  	=> G_USER_ID,
6913           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
6914           p_REQUEST_ID  	=> l_qte_line_dtl_rec.REQUEST_ID,
6915           p_PROGRAM_APPLICATION_ID
6916 				=> l_qte_line_dtl_rec.PROGRAM_APPLICATION_ID,
6917           p_PROGRAM_ID  	=> l_qte_line_dtl_rec.PROGRAM_ID,
6918           p_PROGRAM_UPDATE_DATE => l_qte_line_dtl_rec.PROGRAM_UPDATE_DATE,
6919           p_QUOTE_LINE_ID  	=> l_qte_line_dtl_rec.QUOTE_LINE_ID,
6920           p_CONFIG_HEADER_ID  	=> l_qte_line_dtl_rec.CONFIG_HEADER_ID,
6921           p_CONFIG_REVISION_NUM => l_qte_line_dtl_rec.CONFIG_REVISION_NUM,
6922           p_COMPLETE_CONFIGURATION_FLAG
6923 			=> l_qte_line_dtl_rec.COMPLETE_CONFIGURATION_FLAG,
6924           p_VALID_CONFIGURATION_FLAG
6925 			=> l_qte_line_dtl_rec.VALID_CONFIGURATION_FLAG,
6926           p_COMPONENT_CODE  	=> l_qte_line_dtl_rec.COMPONENT_CODE,
6927           p_SERVICE_COTERMINATE_FLAG
6928 			=> l_qte_line_dtl_rec.SERVICE_COTERMINATE_FLAG,
6929           p_SERVICE_DURATION  	=> l_qte_line_dtl_rec.SERVICE_DURATION,
6930           p_SERVICE_PERIOD  	=> l_qte_line_dtl_rec.SERVICE_PERIOD,
6931           p_SERVICE_UNIT_SELLING_PERCENT
6932 			=> l_qte_line_dtl_rec.SERVICE_UNIT_SELLING_PERCENT,
6933           p_SERVICE_UNIT_LIST_PERCENT
6934 			=> l_qte_line_dtl_rec.SERVICE_UNIT_LIST_PERCENT,
6935           p_SERVICE_NUMBER  	=> l_qte_line_dtl_rec.SERVICE_NUMBER,
6936           p_UNIT_PERCENT_BASE_PRICE
6937 			=> l_qte_line_dtl_rec.UNIT_PERCENT_BASE_PRICE,
6938           p_ATTRIBUTE_CATEGORY  => l_qte_line_dtl_rec.ATTRIBUTE_CATEGORY,
6939           p_ATTRIBUTE1  	=> l_qte_line_dtl_rec.ATTRIBUTE1,
6940           p_ATTRIBUTE2  	=> l_qte_line_dtl_rec.ATTRIBUTE2,
6941           p_ATTRIBUTE3  	=> l_qte_line_dtl_rec.ATTRIBUTE3,
6942           p_ATTRIBUTE4  	=> l_qte_line_dtl_rec.ATTRIBUTE4,
6943           p_ATTRIBUTE5  	=> l_qte_line_dtl_rec.ATTRIBUTE5,
6944           p_ATTRIBUTE6  	=> l_qte_line_dtl_rec.ATTRIBUTE6,
6945           p_ATTRIBUTE7  	=> l_qte_line_dtl_rec.ATTRIBUTE7,
6946           p_ATTRIBUTE8  	=> l_qte_line_dtl_rec.ATTRIBUTE8,
6947           p_ATTRIBUTE9  	=> l_qte_line_dtl_rec.ATTRIBUTE9,
6948           p_ATTRIBUTE10  	=> l_qte_line_dtl_rec.ATTRIBUTE10,
6949           p_ATTRIBUTE11  	=> l_qte_line_dtl_rec.ATTRIBUTE11,
6950           p_ATTRIBUTE12  	=> l_qte_line_dtl_rec.ATTRIBUTE12,
6951           p_ATTRIBUTE13  	=> l_qte_line_dtl_rec.ATTRIBUTE13,
6952           p_ATTRIBUTE14  	=> l_qte_line_dtl_rec.ATTRIBUTE14,
6953           p_ATTRIBUTE15  	=> l_qte_line_dtl_rec.ATTRIBUTE15,
6954           p_ATTRIBUTE16  => l_qte_line_dtl_rec.ATTRIBUTE16,
6955           p_ATTRIBUTE17  => l_qte_line_dtl_rec.ATTRIBUTE17,
6956           p_ATTRIBUTE18  => l_qte_line_dtl_rec.ATTRIBUTE18,
6957           p_ATTRIBUTE19  => l_qte_line_dtl_rec.ATTRIBUTE19,
6958           p_ATTRIBUTE20  => l_qte_line_dtl_rec.ATTRIBUTE20,
6959 		p_SERVICE_REF_TYPE_CODE  => l_qte_line_dtl_rec.SERVICE_REF_TYPE_CODE,
6960           p_SERVICE_REF_ORDER_NUMBER
6961 			=> l_qte_line_dtl_rec.SERVICE_REF_ORDER_NUMBER,
6962           p_SERVICE_REF_LINE_NUMBER
6963 			=> l_qte_line_dtl_rec.SERVICE_REF_LINE_NUMBER,
6964           p_SERVICE_REF_LINE_ID     => l_qte_line_dtl_rec.SERVICE_REF_LINE_ID,
6965           p_SERVICE_REF_SYSTEM_ID  => l_qte_line_dtl_rec.SERVICE_REF_SYSTEM_ID,
6966           p_SERVICE_REF_OPTION_NUMB
6967 			=> l_qte_line_dtl_rec.SERVICE_REF_OPTION_NUMB,
6968           p_SERVICE_REF_SHIPMENT_NUMB
6969 			=> l_qte_line_dtl_rec.SERVICE_REF_SHIPMENT_NUMB,
6970           p_RETURN_REF_TYPE       => l_qte_line_dtl_rec.RETURN_REF_TYPE,
6971           p_RETURN_REF_HEADER_ID  => l_qte_line_dtl_rec.RETURN_REF_HEADER_ID,
6972           p_RETURN_REF_LINE_ID    => l_qte_line_dtl_rec.RETURN_REF_LINE_ID,
6973           p_RETURN_ATTRIBUTE1     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE1,
6974           p_RETURN_ATTRIBUTE2     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE2,
6975           p_RETURN_ATTRIBUTE3     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE3,
6976           p_RETURN_ATTRIBUTE4     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE4,
6977           p_RETURN_ATTRIBUTE5     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE5,
6978           p_RETURN_ATTRIBUTE6     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE6,
6979           p_RETURN_ATTRIBUTE7     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE7,
6980           p_RETURN_ATTRIBUTE8     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE8,
6981           p_RETURN_ATTRIBUTE9     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE9,
6982           p_RETURN_ATTRIBUTE10    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE10,
6983           p_RETURN_ATTRIBUTE11    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE11,
6984           p_RETURN_ATTRIBUTE15    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE15,
6985           p_RETURN_ATTRIBUTE12    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE12,
6986           p_RETURN_ATTRIBUTE13    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE13,
6987           p_RETURN_ATTRIBUTE14    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE14,
6988           p_RETURN_REASON_CODE    => l_qte_line_dtl_rec.RETURN_REASON_CODE,
6989           p_CONFIG_ITEM_ID        => l_qte_line_dtl_rec.CONFIG_ITEM_ID,
6990           p_REF_TYPE_CODE         => l_qte_line_dtl_rec.REF_TYPE_CODE,
6991           p_REF_LINE_ID           => l_qte_line_dtl_rec.REF_LINE_ID,
6992 		p_INSTANCE_ID           => l_qte_line_dtl_rec.INSTANCE_ID,
6993 		p_BOM_SORT_ORDER        => l_qte_line_dtl_rec.BOM_SORT_ORDER,
6994 	     p_CONFIG_DELTA          => l_qte_line_dtl_rec.CONFIG_DELTA,
6995 	     p_CONFIG_INSTANCE_NAME  => l_qte_line_dtl_rec.CONFIG_INSTANCE_NAME,
6996 		p_OBJECT_VERSION_NUMBER => l_qte_line_dtl_rec.OBJECT_VERSION_NUMBER,
6997           p_top_model_line_id     => l_qte_line_dtl_rec.top_model_line_id,
6998           p_ato_line_id           => l_qte_line_dtl_rec.ato_line_id,
6999           p_component_sequence_id => l_qte_line_dtl_rec.component_sequence_id
7000 		);
7001 
7002           IF l_qte_line_dtl_rec.service_ref_type_code = 'QUOTE' THEN
7003               OPEN C_Line_relation(l_qte_line_dtl_rec.service_ref_line_id, l_qte_line_dtl_rec.quote_line_id);
7004               FETCH C_Line_relation INTO l_line_rel;
7005               IF C_Line_relation%NOTFOUND THEN
7006                   l_line_rtlship_rec.operation_code         := 'CREATE';
7007                   l_line_rtlship_rec.quote_line_id          := l_qte_line_dtl_rec.SERVICE_REF_LINE_ID;
7008                   l_line_rtlship_rec.related_quote_line_id  := x_qte_line_rec.quote_line_id;
7009                   l_line_rtlship_rec.relationship_type_code := 'SERVICE';
7010                   l_line_rtlship_rec.reciprocal_flag        := FND_API.G_FALSE;
7011 
7012                   ASO_LINE_RLTSHIP_PVT.Create_line_rltship(
7013                       P_Api_Version_Number   => 1.0,
7014                       P_LINE_RLTSHIP_Rec     => l_line_rtlship_rec,
7015                       X_LINE_RELATIONSHIP_ID => x_relationship_id,
7016                       X_Return_Status        => x_return_status,
7017                       X_Msg_Count            => x_msg_count,
7018                       X_Msg_Data             => x_msg_data
7019                   );
7020               END IF;
7021           END IF;
7022 
7023     ELSIF l_qte_line_dtl_tbl(i).operation_code = 'UPDATE' THEN
7024 
7025         x_qte_line_dtl_tbl(i) := l_qte_line_dtl_rec;
7026 
7027             ASO_QUOTE_LINE_DETAILS_PKG.Update_Row(
7028           p_QUOTE_LINE_DETAIL_ID  => l_qte_line_dtl_rec.QUOTE_LINE_DETAIL_ID,
7029           p_CREATION_DATE  	  => l_qte_line_dtl_rec.creation_date,
7030           p_CREATED_BY  	  => G_USER_ID,
7031           p_LAST_UPDATE_DATE  	  => SYSDATE,
7032           p_LAST_UPDATED_BY  	  => G_USER_ID,
7033           p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
7034           p_REQUEST_ID  	  => l_qte_line_dtl_rec.REQUEST_ID,
7035           p_PROGRAM_APPLICATION_ID
7036 				=> l_qte_line_dtl_rec.PROGRAM_APPLICATION_ID,
7037           p_PROGRAM_ID  	=> l_qte_line_dtl_rec.PROGRAM_ID,
7038           p_PROGRAM_UPDATE_DATE => l_qte_line_dtl_rec.PROGRAM_UPDATE_DATE,
7039           p_QUOTE_LINE_ID  	=> l_qte_line_dtl_rec.QUOTE_LINE_ID,
7040           p_CONFIG_HEADER_ID  	=> l_qte_line_dtl_rec.CONFIG_HEADER_ID,
7041           p_CONFIG_REVISION_NUM => l_qte_line_dtl_rec.CONFIG_REVISION_NUM,
7042           p_COMPLETE_CONFIGURATION_FLAG
7043 			=> l_qte_line_dtl_rec.COMPLETE_CONFIGURATION_FLAG,
7044           p_VALID_CONFIGURATION_FLAG
7045 			=> l_qte_line_dtl_rec.VALID_CONFIGURATION_FLAG,
7046           p_COMPONENT_CODE  	=> l_qte_line_dtl_rec.COMPONENT_CODE,
7047           p_SERVICE_COTERMINATE_FLAG
7048 			=> l_qte_line_dtl_rec.SERVICE_COTERMINATE_FLAG,
7049           p_SERVICE_DURATION  	=> l_qte_line_dtl_rec.SERVICE_DURATION,
7050           p_SERVICE_PERIOD  	=> l_qte_line_dtl_rec.SERVICE_PERIOD,
7051           p_SERVICE_UNIT_SELLING_PERCENT
7052 			=> l_qte_line_dtl_rec.SERVICE_UNIT_SELLING_PERCENT,
7053           p_SERVICE_UNIT_LIST_PERCENT
7054 			=> l_qte_line_dtl_rec.SERVICE_UNIT_LIST_PERCENT,
7055           p_SERVICE_NUMBER  => l_qte_line_dtl_rec.SERVICE_NUMBER,
7056           p_UNIT_PERCENT_BASE_PRICE
7057 			=> l_qte_line_dtl_rec.UNIT_PERCENT_BASE_PRICE,
7058           p_ATTRIBUTE_CATEGORY  => l_qte_line_dtl_rec.ATTRIBUTE_CATEGORY,
7059           p_ATTRIBUTE1  	=> l_qte_line_dtl_rec.ATTRIBUTE1,
7060           p_ATTRIBUTE2  	=> l_qte_line_dtl_rec.ATTRIBUTE2,
7061           p_ATTRIBUTE3  	=> l_qte_line_dtl_rec.ATTRIBUTE3,
7062           p_ATTRIBUTE4  	=> l_qte_line_dtl_rec.ATTRIBUTE4,
7063           p_ATTRIBUTE5  	=> l_qte_line_dtl_rec.ATTRIBUTE5,
7064           p_ATTRIBUTE6  	=> l_qte_line_dtl_rec.ATTRIBUTE6,
7065           p_ATTRIBUTE7  	=> l_qte_line_dtl_rec.ATTRIBUTE7,
7066           p_ATTRIBUTE8  	=> l_qte_line_dtl_rec.ATTRIBUTE8,
7067           p_ATTRIBUTE9  	=> l_qte_line_dtl_rec.ATTRIBUTE9,
7068           p_ATTRIBUTE10 	=> l_qte_line_dtl_rec.ATTRIBUTE10,
7069           p_ATTRIBUTE11  	=> l_qte_line_dtl_rec.ATTRIBUTE11,
7070           p_ATTRIBUTE12  	=> l_qte_line_dtl_rec.ATTRIBUTE12,
7071           p_ATTRIBUTE13  	=> l_qte_line_dtl_rec.ATTRIBUTE13,
7072           p_ATTRIBUTE14  	=> l_qte_line_dtl_rec.ATTRIBUTE14,
7073           p_ATTRIBUTE15  	=> l_qte_line_dtl_rec.ATTRIBUTE15,
7074           p_ATTRIBUTE16  =>  l_qte_line_dtl_rec.ATTRIBUTE16,
7075           p_ATTRIBUTE17  =>  l_qte_line_dtl_rec.ATTRIBUTE17,
7076           p_ATTRIBUTE18  =>  l_qte_line_dtl_rec.ATTRIBUTE18,
7077           p_ATTRIBUTE19  =>  l_qte_line_dtl_rec.ATTRIBUTE19,
7078           p_ATTRIBUTE20  => l_qte_line_dtl_rec.ATTRIBUTE20,
7079 		p_SERVICE_REF_TYPE_CODE  => l_qte_line_dtl_rec.SERVICE_REF_TYPE_CODE,
7080           p_SERVICE_REF_ORDER_NUMBER
7081 				=> l_qte_line_dtl_rec.SERVICE_REF_ORDER_NUMBER,
7082           p_SERVICE_REF_LINE_NUMBER
7083 				=> l_qte_line_dtl_rec.SERVICE_REF_LINE_NUMBER,
7084           p_SERVICE_REF_LINE_ID => l_qte_line_dtl_rec.SERVICE_REF_LINE_ID,
7085           p_SERVICE_REF_SYSTEM_ID  => l_qte_line_dtl_rec.SERVICE_REF_SYSTEM_ID,
7086           p_SERVICE_REF_OPTION_NUMB
7087 				=> l_qte_line_dtl_rec.SERVICE_REF_OPTION_NUMB,
7088           p_SERVICE_REF_SHIPMENT_NUMB
7089 			       => l_qte_line_dtl_rec.SERVICE_REF_SHIPMENT_NUMB,
7090           p_RETURN_REF_TYPE  	=> l_qte_line_dtl_rec.RETURN_REF_TYPE,
7091           p_RETURN_REF_HEADER_ID=> l_qte_line_dtl_rec.RETURN_REF_HEADER_ID,
7092           p_RETURN_REF_LINE_ID  => l_qte_line_dtl_rec.RETURN_REF_LINE_ID,
7093           p_RETURN_ATTRIBUTE1  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE1,
7094           p_RETURN_ATTRIBUTE2  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE2,
7095           p_RETURN_ATTRIBUTE3  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE3,
7096           p_RETURN_ATTRIBUTE4  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE4,
7097           p_RETURN_ATTRIBUTE5  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE5,
7098           p_RETURN_ATTRIBUTE6  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE6,
7099           p_RETURN_ATTRIBUTE7  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE7,
7100           p_RETURN_ATTRIBUTE8  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE8,
7101           p_RETURN_ATTRIBUTE9  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE9,
7102           p_RETURN_ATTRIBUTE10  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE10,
7103           p_RETURN_ATTRIBUTE11  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE11,
7104           p_RETURN_ATTRIBUTE15  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE15,
7105           p_RETURN_ATTRIBUTE12  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE12,
7106           p_RETURN_ATTRIBUTE13  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE13,
7107           p_RETURN_ATTRIBUTE14  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE14,
7108           p_RETURN_REASON_CODE    => l_qte_line_dtl_rec.RETURN_REASON_CODE,
7109           p_CONFIG_ITEM_ID    => l_qte_line_dtl_rec.CONFIG_ITEM_ID,
7110           p_REF_TYPE_CODE       => l_qte_line_dtl_rec.REF_TYPE_CODE,
7111           p_REF_LINE_ID         => l_qte_line_dtl_rec.REF_LINE_ID,
7112 		p_INSTANCE_ID         => l_qte_line_dtl_rec.INSTANCE_ID,
7113 		p_BOM_SORT_ORDER      => l_qte_line_dtl_rec.BOM_SORT_ORDER,
7114 		p_CONFIG_DELTA          => l_qte_line_dtl_rec.CONFIG_DELTA,
7115 	     p_CONFIG_INSTANCE_NAME  => l_qte_line_dtl_rec.CONFIG_INSTANCE_NAME,
7116 		p_OBJECT_VERSION_NUMBER => l_qte_line_dtl_rec.OBJECT_VERSION_NUMBER,
7117           p_top_model_line_id     => l_qte_line_dtl_rec.top_model_line_id,
7118           p_ato_line_id           => l_qte_line_dtl_rec.ato_line_id,
7119           p_component_sequence_id => l_qte_line_dtl_rec.component_sequence_id
7120 		);
7121 
7122          l_db_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows (P_Qte_Line_Id => x_qte_line_rec.quote_line_id );
7123          IF l_db_qte_line_dtl_tbl(1).service_ref_type_code = 'QUOTE' THEN
7124              OPEN C_Line_relation(l_db_qte_line_dtl_tbl(1).service_ref_line_id, l_db_qte_line_dtl_tbl(1).quote_line_id);
7125              FETCH C_Line_relation INTO l_line_rel;
7126              IF C_Line_relation%NOTFOUND THEN
7127                  l_line_rtlship_rec.operation_code         := 'CREATE';
7128                  l_line_rtlship_rec.quote_line_id          := l_db_qte_line_dtl_tbl(1).SERVICE_REF_LINE_ID;
7129                  l_line_rtlship_rec.related_quote_line_id  := x_qte_line_rec.quote_line_id;
7130                  l_line_rtlship_rec.relationship_type_code := 'SERVICE';
7131                  l_line_rtlship_rec.reciprocal_flag        := FND_API.G_FALSE;
7132                  ASO_LINE_RLTSHIP_PVT.Create_line_rltship(
7133                      P_Api_Version_Number   => 1.0,
7134       	             P_LINE_RLTSHIP_Rec     => l_line_rtlship_rec,
7135                      X_LINE_RELATIONSHIP_ID => x_relationship_id,
7136                      X_Return_Status        => x_return_status,
7137                      X_Msg_Count            => x_msg_count,
7138                      X_Msg_Data             => x_msg_data
7139                  );
7140             END IF;
7141         END IF;
7142 
7143   ELSIF l_qte_line_dtl_tbl(i).operation_code = 'DELETE' THEN
7144 
7145         ASO_QUOTE_LINE_DETAILS_PKG.Delete_Row(
7146          p_QUOTE_LINE_DETAIL_ID => l_qte_line_dtl_rec.quote_line_detail_id);
7147   END IF;
7148 
7149 END LOOP;
7150 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7151 		aso_debug_pub.add('Update_Quote_line - after line_details.update ', 1, 'Y');
7152 	end if;
7153 
7154 -- Service line quantity update Bmishra 01/09/02
7155   l_call_update := FND_API.G_FALSE;
7156   IF l_Qte_Line_Rec.inventory_item_id = FND_API.G_MISS_NUM THEN
7157      OPEN c_inventory_item_id;
7158      FETCH c_inventory_item_id INTO l_Qte_Line_Rec.inventory_item_id;
7159      CLOSE c_inventory_item_id;
7160   END IF;
7161   OPEN c_service (l_Qte_Line_Rec.quote_line_id);
7162   FETCH c_service INTO l_service_item_flag, l_serviceable_product_flag;
7163 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7164   		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_service_item_flag'||l_service_item_flag,1,'N');
7165   		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_serviceable_product_flag'||l_serviceable_product_flag, 1, 'N');
7166 	end if;
7167   IF c_service%FOUND THEN
7168      CLOSE c_service;
7169      IF l_service_item_flag = 'Y' THEN
7170 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7171         aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: Inside IF l_service_item_flag = Y',1,'N');
7172 	end if;
7173         l_service := FND_API.G_TRUE;
7174         l_call_update := FND_API.G_TRUE;
7175      ELSIF l_serviceable_product_flag = 'Y' THEN
7176 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7177         aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: Inside IF l_serviceable_product_flag = Y',
7178 1,'N');
7179 	end if;
7180         l_service := FND_API.G_FALSE;
7181         l_call_update := FND_API.G_TRUE;
7182      END IF;
7183 
7184 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7185      		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_call_update'||l_call_update,1,'N');
7186 	end if;
7187      IF l_call_update = FND_API.G_TRUE THEN
7188         ASO_QUOTE_LINES_PVT.service_item_qty_update
7189          (p_qte_line_rec  => l_Qte_Line_Rec ,
7190           p_service_item_flag  => l_service,
7191           x_return_status => X_return_status
7192           );
7193 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7194      		aso_debug_pub.add('Update_Quote_lines - after call to ASO_QUOTE_LINES_PVT.service_item_qty_update '||x_return_status, 1, 'Y');
7195 	end if;
7196      END IF;
7197   ELSE
7198      CLOSE c_service;
7199 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7200      		aso_debug_pub.add('Update_quote_lines, Item not found in inventry',1,'N');
7201 	end if;
7202   END IF;
7203 
7204 -- End of Service line quantity update Bmishra 01/09/02
7205 
7206 
7207 -- sales credits
7208    FOR i in 1..p_Sales_Credit_Tbl.count LOOP
7209 
7210      l_Sales_Credit_rec := p_sales_credit_tbl(i);
7211      x_sales_credit_tbl(i) := l_sales_credit_rec;
7212 
7213      IF l_sales_credit_rec.operation_code = 'CREATE' THEN
7214      l_sales_credit_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7215      l_sales_credit_rec.quote_header_id := l_qte_line_rec.quote_header_id;
7216      -- BC4J Fix
7217 	--x_sales_credit_tbl(i).sales_credit_id := NULL;
7218        ASO_SALES_CREDITS_PKG.Insert_Row(
7219           p_CREATION_DATE  => SYSDATE,
7220           p_CREATED_BY  => G_USER_ID,
7221           p_LAST_UPDATED_BY  => G_USER_ID,
7222           p_LAST_UPDATE_DATE  => SYSDATE,
7223           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
7224           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
7225           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
7226           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
7227           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
7228           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
7229           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
7230           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
7231           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
7232           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
7233           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
7234           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
7235           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
7236 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
7237           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
7238           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
7239           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
7240           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
7241           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
7242           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
7243           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
7244           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
7245           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
7246           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
7247           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
7248           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
7249           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
7250           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
7251           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
7252           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
7253           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
7254           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
7255           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
7256           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
7257           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
7258 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
7259           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
7260           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
7261 
7262         ELSIF l_sales_credit_rec.operation_code = 'UPDATE' THEN
7263                ASO_SALES_CREDITS_PKG.Update_Row(
7264           p_CREATION_DATE  => l_sales_CREDIT_rec.creation_date,
7265           p_CREATED_BY  => G_USER_ID,
7266           p_LAST_UPDATED_BY  => G_USER_ID,
7267           p_LAST_UPDATE_DATE  => SYSDATE,
7268           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
7269           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
7270           p_PROGRAM_APPLICATION_ID=> l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
7271           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
7272           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
7273           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID,
7274           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
7275           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
7276           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
7277           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
7278           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
7279           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
7280           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
7281 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
7282           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
7283           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
7284           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
7285           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
7286           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
7287           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
7288           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
7289           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
7290           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
7291           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
7292           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
7293           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
7294           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
7295           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
7296           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
7297           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
7298           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
7299           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
7300           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
7301           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
7302           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
7303 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
7304           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
7305 		p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
7306 
7307          ELSIF l_sales_credit_rec.operation_code = 'DELETE' THEN
7308                  ASO_SALES_CREDITS_PKG.Delete_Row(
7309           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID);
7310 
7311          END IF;
7312 END LOOP;
7313 
7314 
7315 -- sales credits
7316 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7317             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: l_qte_line_rec.quote_header_id: '||l_qte_line_rec.quote_header_id,1,'N');
7318             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: l_qte_line_rec.quote_line_id:   '||l_qte_line_rec.quote_line_id,1,'N');
7319 	end if;
7320 
7321             IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7322                 IF x_sales_credit_tbl.count > 0 THEN
7323                     IF x_sales_credit_tbl(1).quote_header_id IS NULL OR x_sales_credit_tbl(1).quote_header_id = FND_API.G_MISS_NUM THEN
7324                         x_sales_credit_tbl(1).quote_header_id := l_qte_line_rec.quote_header_id;
7325                     END IF;
7326                     IF x_sales_credit_tbl(1).quote_line_id IS NULL OR x_sales_credit_tbl(1).quote_line_id = FND_API.G_MISS_NUM THEN
7327                         x_sales_credit_tbl(1).quote_line_id := l_qte_line_rec.quote_line_id;
7328                     END IF;
7329 
7330                     ASO_VALIDATE_PVT.Validate_Quote_Percent(
7331                         p_init_msg_list             => FND_API.G_FALSE,
7332                         p_sales_credit_tbl          => x_sales_credit_tbl,
7333                         x_return_status             => x_return_status,
7334                         x_msg_count                 => x_msg_count,
7335                         x_msg_data                  => x_msg_data
7336                     );
7337                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7338                         RAISE FND_API.G_EXC_ERROR;
7339                     END IF;
7340                 END IF;
7341             END IF;
7342 
7343 -- end sales credits
7344 
7345  -- check for duplicate promotions, see bug 4521799
7346   IF aso_debug_pub.g_debug_flag = 'Y' THEN
7347      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
7348   END IF;
7349 
7350   ASO_VALIDATE_PVT.Validate_Promotion (
7351      P_Api_Version_Number       => 1.0,
7352      P_Init_Msg_List            => FND_API.G_FALSE,
7353      P_Commit                   => FND_API.G_FALSE,
7354      p_price_attr_tbl           => p_price_attributes_tbl,
7355      x_price_attr_tbl           => lx_price_attr_tbl,
7356      x_return_status            => x_return_status,
7357      x_msg_count                => x_msg_count,
7358      x_msg_data                 => x_msg_data);
7359 
7360    IF aso_debug_pub.g_debug_flag = 'Y' THEN
7361       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
7362       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
7363    END IF;
7364 
7365    if x_return_status <> fnd_api.g_ret_sts_success then
7366       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7367          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7368       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
7369          RAISE FND_API.G_EXC_ERROR;
7370       ELSE
7371          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7372       END IF;
7373    end if;
7374 
7375 
7376  -- end of check for duplicate promotions
7377 
7378 -- price attributes
7379 
7380     FOR i in 1..l_price_attributes_tbl.count LOOP
7381 
7382      l_price_attributes_rec := l_price_attributes_tbl(i);
7383     -- l_price_attributes_rec.quote_line_id := p_qte_line_rec.quote_line_id;
7384      x_price_attributes_tbl(i) := l_price_attributes_rec;
7385 
7386      IF l_price_attributes_rec.operation_code = 'CREATE' THEN
7387         l_price_attributes_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7388       l_price_attributes_rec.quote_header_id := l_qte_line_rec.quote_header_id;
7389        -- BC4J Fix
7390 	  -- x_price_attributes_tbl(1).price_attribute_id := NULL;
7391 
7392    ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
7393           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
7394           p_CREATION_DATE  	=> SYSDATE,
7395           p_CREATED_BY  	=> G_USER_ID,
7396           p_LAST_UPDATE_DATE  	=> SYSDATE,
7397           p_LAST_UPDATED_BY  	=> G_USER_ID,
7398           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
7399           p_REQUEST_ID  	=> l_Qte_Line_Rec.REQUEST_ID,
7400           p_PROGRAM_APPLICATION_ID  => l_Qte_Line_Rec.PROGRAM_APPLICATION_ID,
7401           p_PROGRAM_ID  	=> l_Qte_Line_Rec.PROGRAM_ID,
7402           p_PROGRAM_UPDATE_DATE  => l_Qte_Line_Rec.PROGRAM_UPDATE_DATE,
7403           p_QUOTE_HEADER_ID      => l_Qte_Line_Rec.QUOTE_HEADER_ID,
7404           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
7405           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
7406           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
7407           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
7408           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
7409           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
7410           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
7411           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
7412           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
7413           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
7414           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
7415           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
7416         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
7417         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
7418         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
7419         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
7420         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
7421         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
7422         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
7423         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
7424         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
7425         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
7426         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
7427         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
7428         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
7429         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
7430         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
7431         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
7432         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
7433         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
7434         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
7435         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
7436         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
7437         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
7438         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
7439         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
7440         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
7441         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
7442         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
7443         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
7444         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
7445         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
7446         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
7447         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
7448         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
7449         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
7450         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
7451         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
7452         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
7453         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
7454         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
7455         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
7456         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
7457         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
7458         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
7459         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
7460         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
7461         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
7462         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
7463         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
7464         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
7465         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
7466         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
7467         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
7468         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
7469         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
7470         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
7471         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
7472         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
7473         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
7474         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
7475         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
7476         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
7477         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
7478         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
7479         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
7480         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
7481         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
7482         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
7483         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
7484         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
7485         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
7486         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
7487         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
7488         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
7489         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
7490         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
7491         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
7492         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
7493         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
7494         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
7495         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
7496         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
7497         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
7498         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
7499         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
7500         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
7501         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
7502         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
7503         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
7504         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
7505         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
7506         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
7507           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
7508           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
7509           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
7510           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
7511           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
7512           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
7513           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
7514           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
7515           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
7516           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
7517           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
7518           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
7519           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
7520           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
7521           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
7522           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
7523 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
7524           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
7525           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
7526           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
7527           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
7528 		p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
7529 );
7530 
7531 
7532    ELSIF l_price_attributes_rec.operation_code = 'UPDATE' THEN
7533 
7534 ASO_PRICE_ATTRIBUTES_PKG.Update_Row(
7535           p_PRICE_ATTRIBUTE_ID  => l_price_attributes_rec.price_attribute_id,
7536           p_CREATION_DATE  	=> l_price_attributes_rec.creation_date,
7537           p_CREATED_BY  	=> G_USER_ID,
7538           p_LAST_UPDATE_DATE  	=> SYSDATE,
7539           p_LAST_UPDATED_BY  	=> G_USER_ID,
7540           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
7541           p_REQUEST_ID  	=> l_Qte_Line_Rec.REQUEST_ID,
7542           p_PROGRAM_APPLICATION_ID  => l_Qte_Line_Rec.PROGRAM_APPLICATION_ID,
7543           p_PROGRAM_ID  	 => l_Qte_Line_Rec.PROGRAM_ID,
7544           p_PROGRAM_UPDATE_DATE  => l_Qte_Line_Rec.PROGRAM_UPDATE_DATE,
7545           p_QUOTE_HEADER_ID      => l_Qte_Line_Rec.QUOTE_HEADER_ID,
7546           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
7547           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
7548           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
7549           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
7550           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
7551           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
7552           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
7553           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
7554           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
7555           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
7556           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
7557           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
7558         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
7559         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
7560         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
7561         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
7562         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
7563         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
7564         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
7565         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
7566         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
7567         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
7568         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
7569         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
7570         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
7571         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
7572         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
7573         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
7574         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
7575         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
7576         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
7577         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
7578         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
7579         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
7580         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
7581         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
7582         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
7583         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
7584         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
7585         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
7586         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
7587         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
7588         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
7589         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
7590         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
7591         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
7592         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
7593         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
7594         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
7595         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
7596         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
7597         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
7598         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
7599         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
7600         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
7601         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
7602         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
7603         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
7604         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
7605         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
7606         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
7607         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
7608         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
7609         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
7610         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
7611         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
7612         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
7613         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
7614         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
7615         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
7616         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
7617         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
7618         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
7619         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
7620         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
7621         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
7622         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
7623         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
7624         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
7625         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
7626         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
7627         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
7628         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
7629         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
7630         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
7631         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
7632         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
7633         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
7634         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
7635         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
7636         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
7637         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
7638         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
7639         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
7640         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
7641         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
7642         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
7643         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
7644         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
7645         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
7646         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
7647         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
7648         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
7649           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
7650           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
7651           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
7652           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
7653           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
7654           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
7655           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
7656           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
7657           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
7658           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
7659           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
7660           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
7661           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
7662           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
7663           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
7664           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
7665 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
7666           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
7667           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
7668           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
7669           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
7670 		p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
7671 );
7672 
7673   END IF;
7674 
7675 END LOOP;
7676 
7677 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7678 		aso_debug_pub.add('Update_Quote_line - after line_price_attribs.update ', 1, 'N');
7679 	end if;
7680 
7681 
7682 -- aso_shipments_tbl
7683 
7684 
7685     FOR i IN 1..l_Shipment_Tbl.count LOOP
7686 
7687 	   l_shipment_rec    := l_shipment_tbl(i);
7688         x_shipment_tbl(i) := l_shipment_rec;
7689 
7690         IF l_shipment_rec.operation_code = 'CREATE' THEN
7691 
7692             l_shipment_rec.quote_header_id            := l_qte_line_rec.quote_header_id;
7693             l_shipment_rec.quote_line_id              := l_qte_line_rec.quote_line_id;
7694             -- BC4J Fix
7695               x_shipment_tbl(i).shipment_id            := l_shipment_rec.shipment_id;
7696 		  --x_shipment_tbl(i).shipment_id             := null;
7697             l_shipment_rec.ship_method_code_from      := l_shipment_rec.ship_method_code;
7698             l_shipment_rec.freight_terms_code_from    := l_shipment_rec.freight_terms_code;
7699             x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
7700             x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
7701 
7702          IF aso_debug_pub.g_debug_flag = 'Y' THEN
7703            aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows Quote Line- l_shipment_tbl(1).ship_method_code'||l_shipment_tbl(1).ship_method_code, 1, 'Y');
7704            aso_debug_pub.add('Before ASO_SHIPMENTS_PKG.insert_rows Quote Line- l_shipment_tbl(1).freight_terms_code'||l_shipment_tbl(1).freight_terms_code, 1, 'Y');
7705          END IF;
7706 
7707         ASO_SHIPMENTS_PKG.Insert_Row(
7708             px_SHIPMENT_ID  	=> x_shipment_tbl(i).SHIPMENT_ID,
7709             p_CREATION_DATE  	=> SYSDATE,
7710             p_CREATED_BY  	=> G_USER_ID,
7711             p_LAST_UPDATE_DATE  => SYSDATE,
7712             p_LAST_UPDATED_BY  	=> G_USER_ID,
7713             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7714             p_REQUEST_ID  	=> l_shipment_rec.REQUEST_ID,
7715             p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
7716             p_PROGRAM_ID  	=> l_shipment_rec.PROGRAM_ID,
7717             p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
7718             p_QUOTE_HEADER_ID   => l_shipment_rec.QUOTE_HEADER_ID,
7719             p_QUOTE_LINE_ID  	=> l_shipment_rec.QUOTE_LINE_ID,
7720             p_PROMISE_DATE  	=> l_shipment_rec.PROMISE_DATE,
7721             p_REQUEST_DATE   	=> l_shipment_rec.REQUEST_DATE,
7722             p_SCHEDULE_SHIP_DATE     => l_shipment_rec.SCHEDULE_SHIP_DATE,
7723             p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
7724             p_SHIP_TO_PARTY_ID  => l_shipment_rec.SHIP_TO_PARTY_ID,
7725             p_SHIP_TO_CUST_ACCOUNT_ID     => l_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID  ,
7726             p_SHIP_PARTIAL_FLAG => l_shipment_rec.SHIP_PARTIAL_FLAG,
7727             p_SHIP_SET_ID  	=> l_shipment_rec.SHIP_SET_ID,
7728             p_SHIP_METHOD_CODE  => l_shipment_rec.SHIP_METHOD_CODE,
7729             p_FREIGHT_TERMS_CODE=> l_shipment_rec.FREIGHT_TERMS_CODE,
7730             p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
7731             p_FOB_CODE  	=> l_shipment_rec.FOB_CODE,
7732             p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
7733             p_PACKING_INSTRUCTIONS   => l_shipment_rec.PACKING_INSTRUCTIONS,
7734             p_SHIPMENT_PRIORITY_CODE  => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
7735             p_SHIP_QUOTE_PRICE        => l_shipment_rec.SHIP_QUOTE_PRICE,
7736             p_QUANTITY  	=> l_shipment_rec.QUANTITY,
7737             p_RESERVED_QUANTITY => l_shipment_rec.RESERVED_QUANTITY,
7738             p_RESERVATION_ID    => l_shipment_rec.RESERVATION_ID,
7739             p_ORDER_LINE_ID     => l_shipment_rec.ORDER_LINE_ID,
7740             p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
7741             p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
7742             p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
7743             p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
7744             p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
7745             p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
7746             p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
7747             p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
7748             p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
7749             p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
7750             p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
7751             p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
7752             p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
7753             p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
7754             p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
7755             p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
7756 		  p_ATTRIBUTE16  => l_shipment_rec.ATTRIBUTE16,
7757             p_ATTRIBUTE17  => l_shipment_rec.ATTRIBUTE17,
7758             p_ATTRIBUTE18  => l_shipment_rec.ATTRIBUTE18,
7759             p_ATTRIBUTE19  => l_shipment_rec.ATTRIBUTE19,
7760             p_ATTRIBUTE20  => l_shipment_rec.ATTRIBUTE20,
7761 		  p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
7762 		  p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
7763             p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
7764             p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
7765 		  p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
7766 	       p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
7767             p_DEMAND_CLASS_CODE => l_shipment_rec.DEMAND_CLASS_CODE
7768 		);
7769 
7770          FOR j IN 1..l_Freight_Charge_Tbl.count LOOP
7771              IF l_freight_charge_tbl(j).shipment_index = i THEN
7772                 l_freight_charge_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7773              END IF;
7774 
7775           END LOOP;
7776 
7777           FOR j in 1..l_Tax_Detail_Tbl.count LOOP
7778               IF l_tax_detail_tbl(j).shipment_index = i THEN
7779                  l_tax_detail_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7780              END IF;
7781 
7782            FOR j in 1..l_line_attribs_ext_Tbl.count LOOP
7783               IF l_line_attribs_ext_tbl(j).shipment_index = i THEN
7784                  l_line_attribs_ext_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7785              END IF;
7786 
7787          END LOOP;
7788 
7789            FOR j in 1..l_Payment_Tbl.count LOOP
7790               IF l_payment_tbl(j).shipment_index = i THEN
7791                  l_payment_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7792              END IF;
7793 
7794          END LOOP;
7795 
7796            FOR j in 1..P_Price_Adj_Tbl.count LOOP
7797               IF l_Price_Adj_tbl(j).shipment_index = i THEN
7798                  l_Price_Adj_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7799              END IF;
7800 
7801          END LOOP;
7802 
7803           FOR j in 1..P_Quote_Party_Tbl.count LOOP
7804               IF l_quote_party_tbl(j).shipment_index = i THEN
7805                  l_quote_party_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7806              END IF;
7807             END LOOP;
7808 
7809          END LOOP;
7810 
7811        ELSIF l_shipment_rec.operation_code = 'UPDATE' THEN
7812 
7813              IF l_shipment_rec.ship_method_code = fnd_api.g_miss_char THEN
7814 
7815                 FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
7816 
7817                   IF l_ship_db_rec.ship_method_code_from is null THEN
7818                        l_shipment_rec.ship_method_code_from := l_ship_db_rec.ship_method_code;
7819                   END IF;
7820 
7821                 END LOOP;
7822 
7823              ELSE
7824                     l_shipment_rec.ship_method_code_from := l_shipment_rec.ship_method_code;
7825 
7826              END IF;
7827 
7828              IF l_shipment_rec.freight_terms_code = fnd_api.g_miss_char THEN
7829 
7830                 FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
7831 
7832                     IF l_ship_db_rec.freight_terms_code_from is null THEN
7833                         l_shipment_rec.freight_terms_code_from := l_ship_db_rec.freight_terms_code;
7834                     END IF;
7835 
7836                 END LOOP;
7837 
7838              ELSE
7839                        l_shipment_rec.freight_terms_code_from := l_shipment_rec.freight_terms_code;
7840 
7841              END IF;
7842 
7843 
7844         ASO_SHIPMENTS_PKG.Update_Row(
7845             p_SHIPMENT_ID  	=> l_shipment_tbl(i).SHIPMENT_ID,
7846             p_CREATION_DATE  	=> l_shipment_tbl(i).creation_date,
7847             p_CREATED_BY  	=> G_USER_ID,
7848             p_LAST_UPDATE_DATE  => SYSDATE,
7849             p_LAST_UPDATED_BY  	=> G_USER_ID,
7850             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7851             p_REQUEST_ID  	=> l_shipment_rec.REQUEST_ID,
7852             p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
7853             p_PROGRAM_ID  	=> l_shipment_rec.PROGRAM_ID,
7854             p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
7855             p_QUOTE_HEADER_ID  	=> l_shipment_rec.QUOTE_HEADER_ID,
7856             p_QUOTE_LINE_ID  	=> l_shipment_rec.QUOTE_LINE_ID,
7857             p_PROMISE_DATE  	=> l_shipment_rec.PROMISE_DATE,
7858             p_REQUEST_DATE  	=> l_shipment_rec.REQUEST_DATE,
7859             p_SCHEDULE_SHIP_DATE=> l_shipment_rec.SCHEDULE_SHIP_DATE,
7860             p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
7861             p_SHIP_TO_PARTY_ID  => l_shipment_rec.SHIP_TO_PARTY_ID,
7862             p_SHIP_TO_CUST_ACCOUNT_ID     => l_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID  ,
7863             p_SHIP_PARTIAL_FLAG => l_shipment_rec.SHIP_PARTIAL_FLAG,
7864             p_SHIP_SET_ID  	=> l_shipment_rec.SHIP_SET_ID,
7865             p_SHIP_METHOD_CODE  => l_shipment_rec.SHIP_METHOD_CODE,
7866             p_FREIGHT_TERMS_CODE=> l_shipment_rec.FREIGHT_TERMS_CODE,
7867             p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
7868             p_FOB_CODE  	=> l_shipment_rec.FOB_CODE,
7869             p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
7870             p_PACKING_INSTRUCTIONS   => l_shipment_rec.PACKING_INSTRUCTIONS,
7871             p_SHIPMENT_PRIORITY_CODE  => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
7872             p_SHIP_QUOTE_PRICE        => l_shipment_rec.SHIP_QUOTE_PRICE,
7873             p_QUANTITY  	=> l_shipment_rec.QUANTITY,
7874             p_RESERVED_QUANTITY => l_shipment_rec.RESERVED_QUANTITY,
7875             p_RESERVATION_ID    => l_shipment_rec.RESERVATION_ID,
7876             p_ORDER_LINE_ID     => l_shipment_rec.ORDER_LINE_ID,
7877             p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
7878             p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
7879             p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
7880             p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
7881             p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
7882             p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
7883             p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
7884             p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
7885             p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
7886             p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
7887             p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
7888             p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
7889             p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
7890             p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
7891             p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
7892             p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
7893 	       p_ATTRIBUTE16  => l_shipment_rec.ATTRIBUTE16,
7894 		  p_ATTRIBUTE17  => l_shipment_rec.ATTRIBUTE17,
7895 		  p_ATTRIBUTE18  => l_shipment_rec.ATTRIBUTE18,
7896 		  p_ATTRIBUTE19  => l_shipment_rec.ATTRIBUTE19,
7897 		  p_ATTRIBUTE20  => l_shipment_rec.ATTRIBUTE20,
7898 		p_SHIP_FROM_ORG_ID =>l_shipment_rec.SHIP_FROM_ORG_ID,
7899 		p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
7900             p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
7901             p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
7902 		  p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
7903 	       p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
7904             p_DEMAND_CLASS_CODE => l_shipment_rec.DEMAND_CLASS_CODE
7905 		);
7906 
7907         ELSIF l_shipment_rec.operation_code = 'DELETE' THEN
7908 
7909         OPEN C_ship_partial(l_qte_line_rec.QUOTE_LINE_ID);
7910         FETCH C_ship_partial into l_ship_count;
7911         CLOSE C_ship_partial;
7912 
7913       IF l_ship_count = 1 THEN
7914              x_return_status := FND_API.G_RET_STS_ERROR;
7915          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7916 	    FND_MESSAGE.Set_Name('ASO', 'DELETE_SHIPMENT');
7917             FND_MESSAGE.Set_Token('COLUMN', 'SHIPMENT_ID', FALSE);
7918             FND_MSG_PUB.ADD;
7919        	END IF;
7920       END IF;
7921 
7922 
7923         ASO_SHIPMENTS_PKG.Delete_Row(
7924             p_SHIPMENT_ID  => l_shipment_tbl(i).SHIPMENT_ID);
7925 
7926         END IF;
7927 
7928     END LOOP;      -- for shipments
7929 
7930 -- insert rows into aso_freight_charges
7931 
7932     FOR i IN 1..l_Freight_Charge_Tbl.count LOOP
7933 	l_freight_charge_rec := l_freight_charge_tbl(i);
7934     --  l_freight_charge_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
7935         x_freight_charge_tbl(i) := l_freight_charge_rec;
7936 
7937       IF l_freight_charge_rec.operation_code = 'CREATE' THEN
7938 
7939         l_freight_charge_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7940         -- BC4J Fix
7941 	   --x_FREIGHT_CHARGE_tbl(i).freight_charge_id := null;
7942 
7943         ASO_FREIGHT_CHARGES_PKG.Insert_Row(
7944             px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
7945             p_CREATION_DATE  	=> SYSDATE,
7946             p_CREATED_BY  	=> G_USER_ID,
7947             p_LAST_UPDATE_DATE  => SYSDATE,
7948             p_LAST_UPDATED_BY  	=> G_USER_ID,
7949             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7950             p_REQUEST_ID  	=> l_freight_charge_rec.REQUEST_ID,
7951             p_PROGRAM_APPLICATION_ID
7952 			=> l_freight_charge_rec.PROGRAM_APPLICATION_ID,
7953             p_PROGRAM_ID  	=> l_freight_charge_rec.PROGRAM_ID,
7954             p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
7955             p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.QUOTE_SHIPMENT_ID,
7956             p_FREIGHT_CHARGE_TYPE_ID
7957 				=> l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
7958             p_CHARGE_AMOUNT     => l_freight_charge_rec.CHARGE_AMOUNT,
7959             p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
7960             p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
7961             p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
7962             p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
7963             p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
7964             p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
7965             p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
7966             p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
7967             p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
7968             p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
7969             p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
7970             p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
7971             p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
7972             p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
7973             p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
7974             p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15
7975 		  );
7976 
7977 
7978       ELSIF l_freight_charge_rec.operation_code = 'UPDATE' THEN
7979         ASO_FREIGHT_CHARGES_PKG.Update_Row(
7980             p_FREIGHT_CHARGE_ID => p_FREIGHT_CHARGE_tbl(i).freight_charge_id,
7981             p_CREATION_DATE  	=> l_freight_charge_rec.creation_date,
7982             p_CREATED_BY  	=> G_USER_ID,
7983             p_LAST_UPDATE_DATE  => SYSDATE,
7984             p_LAST_UPDATED_BY  	=> G_USER_ID,
7985             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7986             p_REQUEST_ID  	=> l_freight_charge_rec.REQUEST_ID,
7987             p_PROGRAM_APPLICATION_ID
7988 			=> l_freight_charge_rec.PROGRAM_APPLICATION_ID,
7989             p_PROGRAM_ID  	=> l_freight_charge_rec.PROGRAM_ID,
7990             p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
7991             p_QUOTE_SHIPMENT_ID    => l_freight_charge_rec.QUOTE_SHIPMENT_ID,
7992             p_FREIGHT_CHARGE_TYPE_ID
7993 			=> l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
7994             p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
7995             p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
7996             p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
7997             p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
7998             p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
7999             p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
8000             p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
8001             p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
8002             p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
8003             p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
8004             p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
8005             p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
8006             p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
8007             p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
8008             p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
8009             p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
8010             p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
8011 
8012        ELSIF l_freight_charge_rec.operation_code = 'DELETE' THEN
8013         ASO_FREIGHT_CHARGES_PKG.delete_Row(
8014             p_FREIGHT_CHARGE_ID  => p_FREIGHT_CHARGE_tbl(i).freight_charge_id);
8015 
8016        END IF;
8017     END LOOP;   -- freight charges
8018 
8019 
8020 -- tax information
8021 
8022     FOR i IN 1..l_tax_detail_Tbl.count LOOP
8023           l_tax_detail_rec := l_tax_detail_tbl(i);
8024       --  l_tax_detail_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8025          x_tax_detail_tbl(i) := l_tax_detail_rec;
8026 
8027       IF l_tax_detail_rec.operation_code = 'CREATE' THEN
8028         l_tax_detail_rec.quote_header_id := l_qte_line_rec.quote_header_id;
8029         l_tax_detail_rec.quote_line_id := l_qte_line_rec.quote_line_id;
8030         -- BC4J Fix
8031 	   --x_tax_detail_tbl(i).TAX_DETAIL_ID := null;
8032 
8033         ASO_TAX_DETAILS_PKG.Insert_Row(
8034             px_TAX_DETAIL_ID  	=> x_tax_detail_tbl(i).TAX_DETAIL_ID,
8035             p_CREATION_DATE  	=> SYSDATE,
8036             p_CREATED_BY  	=> G_USER_ID,
8037             p_LAST_UPDATE_DATE  => SYSDATE,
8038             p_LAST_UPDATED_BY  	=> G_USER_ID,
8039             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8040             p_REQUEST_ID  	=> l_tax_detail_rec.REQUEST_ID,
8041             p_PROGRAM_APPLICATION_ID =>l_tax_detail_rec.PROGRAM_APPLICATION_ID,
8042             p_PROGRAM_ID  	=> l_tax_detail_rec.PROGRAM_ID,
8043             p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
8044             p_QUOTE_HEADER_ID  	=> l_tax_detail_rec.QUOTE_HEADER_ID,
8045             p_QUOTE_LINE_ID  	=> l_tax_detail_rec.QUOTE_LINE_ID,
8046             p_QUOTE_SHIPMENT_ID => l_tax_detail_rec.QUOTE_SHIPMENT_ID,
8047             p_ORIG_TAX_CODE  	=> l_tax_detail_rec.ORIG_TAX_CODE,
8048             p_TAX_CODE  	=> l_tax_detail_rec.TAX_CODE,
8049             p_TAX_RATE  	=> l_tax_detail_rec.TAX_RATE,
8050             p_TAX_DATE  	=> l_tax_detail_rec.TAX_DATE,
8051             p_TAX_AMOUNT  	=> l_tax_detail_rec.TAX_AMOUNT,
8052             p_TAX_EXEMPT_FLAG  	=> l_tax_detail_rec.TAX_EXEMPT_FLAG,
8053             p_TAX_EXEMPT_NUMBER => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
8054             p_TAX_EXEMPT_REASON_CODE =>l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
8055             p_ATTRIBUTE_CATEGORY     => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
8056             p_ATTRIBUTE1  	=> l_tax_detail_rec.ATTRIBUTE1,
8057             p_ATTRIBUTE2  	=> l_tax_detail_rec.ATTRIBUTE2,
8058             p_ATTRIBUTE3  	=> l_tax_detail_rec.ATTRIBUTE3,
8059             p_ATTRIBUTE4   	=> l_tax_detail_rec.ATTRIBUTE4,
8060             p_ATTRIBUTE5  	=> l_tax_detail_rec.ATTRIBUTE5,
8061             p_ATTRIBUTE6  	=> l_tax_detail_rec.ATTRIBUTE6,
8062             p_ATTRIBUTE7  	=> l_tax_detail_rec.ATTRIBUTE7,
8063             p_ATTRIBUTE8  	=> l_tax_detail_rec.ATTRIBUTE8,
8064             p_ATTRIBUTE9  	=> l_tax_detail_rec.ATTRIBUTE9,
8065             p_ATTRIBUTE10  	=> l_tax_detail_rec.ATTRIBUTE10,
8066             p_ATTRIBUTE11  	=> l_tax_detail_rec.ATTRIBUTE11,
8067             p_ATTRIBUTE12  	=> l_tax_detail_rec.ATTRIBUTE12,
8068             p_ATTRIBUTE13  	=> l_tax_detail_rec.ATTRIBUTE13,
8069             p_ATTRIBUTE14  	=> l_tax_detail_rec.ATTRIBUTE14,
8070             p_ATTRIBUTE15  	=> l_tax_detail_rec.ATTRIBUTE15,
8071             p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
8072             p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
8073             p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
8074             p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
8075             p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
8076 		  p_TAX_INCLUSIVE_FLAG  	=> l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
8077 		  p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
8078 		  p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
8079 		  );
8080 
8081        ELSIF l_tax_detail_rec.operation_code = 'UPDATE' THEN
8082 
8083         ASO_TAX_DETAILS_PKG.Update_Row(
8084             p_TAX_DETAIL_ID  	=> l_tax_detail_rec.TAX_DETAIL_ID,
8085             p_CREATION_DATE  	=> l_tax_detail_rec.creation_date,
8086             p_CREATED_BY  	=> G_USER_ID,
8087             p_LAST_UPDATE_DATE  => SYSDATE,
8088             p_LAST_UPDATED_BY  	=> G_USER_ID,
8089             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8090             p_REQUEST_ID  	=> l_tax_detail_rec.REQUEST_ID,
8091             p_PROGRAM_APPLICATION_ID =>l_tax_detail_rec.PROGRAM_APPLICATION_ID,
8092             p_PROGRAM_ID  	=> l_tax_detail_rec.PROGRAM_ID,
8093             p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
8094             p_QUOTE_HEADER_ID  	=> l_tax_detail_rec.QUOTE_HEADER_ID,
8095             p_QUOTE_LINE_ID  	=> l_tax_detail_rec.QUOTE_LINE_ID,
8096             p_QUOTE_SHIPMENT_ID => l_tax_detail_rec.QUOTE_SHIPMENT_ID,
8097             p_ORIG_TAX_CODE  	=> l_tax_detail_rec.ORIG_TAX_CODE,
8098             p_TAX_CODE  	=> l_tax_detail_rec.TAX_CODE,
8099             p_TAX_RATE  	=> l_tax_detail_rec.TAX_RATE,
8100             p_TAX_DATE  	=> l_tax_detail_rec.TAX_DATE,
8101             p_TAX_AMOUNT  	=> l_tax_detail_rec.TAX_AMOUNT,
8102             p_TAX_EXEMPT_FLAG  	=> l_tax_detail_rec.TAX_EXEMPT_FLAG,
8103             p_TAX_EXEMPT_NUMBER => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
8104             p_TAX_EXEMPT_REASON_CODE =>l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
8105             p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
8106             p_ATTRIBUTE1  	=> l_tax_detail_rec.ATTRIBUTE1,
8107             p_ATTRIBUTE2  	=> l_tax_detail_rec.ATTRIBUTE2,
8108             p_ATTRIBUTE3  	=> l_tax_detail_rec.ATTRIBUTE3,
8109             p_ATTRIBUTE4  	=> l_tax_detail_rec.ATTRIBUTE4,
8110             p_ATTRIBUTE5  	=> l_tax_detail_rec.ATTRIBUTE5,
8111             p_ATTRIBUTE6  	=> l_tax_detail_rec.ATTRIBUTE6,
8112             p_ATTRIBUTE7  	=> l_tax_detail_rec.ATTRIBUTE7,
8113             p_ATTRIBUTE8  	=> l_tax_detail_rec.ATTRIBUTE8,
8114             p_ATTRIBUTE9  	=> l_tax_detail_rec.ATTRIBUTE9,
8115             p_ATTRIBUTE10  	=> l_tax_detail_rec.ATTRIBUTE10,
8116             p_ATTRIBUTE11  	=> l_tax_detail_rec.ATTRIBUTE11,
8117             p_ATTRIBUTE12   	=> l_tax_detail_rec.ATTRIBUTE12,
8118             p_ATTRIBUTE13  	=> l_tax_detail_rec.ATTRIBUTE13,
8119             p_ATTRIBUTE14  	=> l_tax_detail_rec.ATTRIBUTE14,
8120             p_ATTRIBUTE15  	=> l_tax_detail_rec.ATTRIBUTE15,
8121             p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
8122             p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
8123             p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
8124             p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
8125             p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
8126 		  p_TAX_INCLUSIVE_FLAG  	=> l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
8127 		  p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
8128 		  p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
8129 		  );
8130 
8131          ELSIF l_tax_detail_rec.operation_code = 'DELETE' THEN
8132 
8133         ASO_TAX_DETAILS_PKG.Delete_Row(
8134             p_TAX_DETAIL_ID  => l_tax_detail_tbl(i).TAX_DETAIL_ID);
8135 
8136          END IF;
8137     END LOOP;    -- tax details
8138 
8139    -- quote party
8140       FOR i IN 1..l_quote_party_Tbl.count LOOP
8141 	l_quote_party_rec := l_quote_party_tbl(i);
8142         x_quote_party_tbl(i) := l_quote_party_rec;
8143 
8144        IF l_quote_party_rec.operation_code = 'CREATE' THEN
8145         l_quote_party_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8146         l_quote_party_rec.quote_header_id := l_Qte_Line_Rec.quote_header_id;
8147         -- BC4J Fix
8148 	   --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
8149 
8150            ASO_QUOTE_PARTIES_PKG.Insert_Row(
8151           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
8152           p_CREATION_DATE  => SYSDATE,
8153           p_CREATED_BY  => G_USER_ID,
8154           p_LAST_UPDATE_DATE  => SYSDATE,
8155           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
8156           p_LAST_UPDATED_BY  => G_USER_ID,
8157           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
8158           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
8159           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
8160           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
8161           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
8162           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
8163           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
8164           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
8165           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
8166           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
8167           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
8168           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
8169           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
8170           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
8171           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
8172           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
8173           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
8174           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
8175           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
8176           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
8177           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
8178           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
8179           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
8180           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
8181           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
8182           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
8183           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
8184   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
8185         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
8186 
8187         ELSIF  l_quote_party_rec.operation_code = 'UPDATE' THEN
8188             ASO_QUOTE_PARTIES_PKG.Update_Row(
8189           p_QUOTE_PARTY_ID  => l_quote_party_rec.QUOTE_PARTY_ID,
8190           p_CREATION_DATE  => l_quote_party_rec.creation_date,
8191           p_CREATED_BY  => G_USER_ID,
8192           p_LAST_UPDATE_DATE  => SYSDATE,
8193           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
8194           p_LAST_UPDATED_BY  => G_USER_ID,
8195           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
8196           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
8197           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
8198           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
8199           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
8200           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
8201           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
8202           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
8203           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
8204           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
8205           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
8206           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
8207           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
8208           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
8209           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
8210           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
8211           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
8212           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
8213           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
8214           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
8215           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
8216           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
8217           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
8218           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
8219           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
8220           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
8221           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
8222 		p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
8223 
8224         ELSIF  l_quote_party_rec.operation_code = 'DELETE' THEN
8225             ASO_QUOTE_PARTIES_PKG.Delete_Row(
8226           p_QUOTE_PARTY_ID  => l_QUOTE_PARTY_rec.QUOTE_PARTY_ID);
8227 
8228         END IF;
8229  END LOOP;
8230 
8231 
8232 
8233 
8234     -- price adjustment attributes
8235 
8236 
8237     FOR i IN 1..l_Price_Adj_Tbl.count LOOP
8238 	l_price_adj_rec := l_price_adj_tbl(i);
8239 --        l_price_adj_rec.quote_line_id := x_qte_line_rec.quote_line_id;
8240         x_price_adj_tbl(i) := l_price_adj_rec;
8241 
8242      IF l_price_adj_rec.operation_code = 'CREATE' THEN
8243 
8244         l_price_adj_rec.quote_header_id := l_qte_line_rec.quote_header_id;
8245         l_price_adj_rec.quote_line_id := l_qte_line_rec.quote_line_id;
8246         -- BC4J Fix
8247 	   --x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
8248 
8249         ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
8250             px_PRICE_ADJUSTMENT_ID  => x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID,
8251             p_CREATION_DATE  	    => SYSDATE,
8252             p_CREATED_BY  	    => G_USER_ID,
8253             p_LAST_UPDATE_DATE      => SYSDATE,
8254             p_LAST_UPDATED_BY  	    => G_USER_ID,
8255             p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
8256             p_PROGRAM_APPLICATION_ID  =>l_price_adj_rec.PROGRAM_APPLICATION_ID,
8257             p_PROGRAM_ID  	    => l_price_adj_rec.PROGRAM_ID,
8258             p_PROGRAM_UPDATE_DATE   => l_price_adj_rec.PROGRAM_UPDATE_DATE,
8259             p_REQUEST_ID 	    => l_price_adj_rec.REQUEST_ID,
8260             p_QUOTE_HEADER_ID  	    => l_price_adj_rec.QUOTE_HEADER_ID,
8261             p_QUOTE_LINE_ID  	    => l_price_adj_rec.QUOTE_LINE_ID,
8262             p_QUOTE_SHIPMENT_ID     => l_price_adj_rec.QUOTE_SHIPMENT_ID,
8263             p_MODIFIER_HEADER_ID    => l_price_adj_rec.MODIFIER_HEADER_ID,
8264             p_MODIFIER_LINE_ID      => l_price_adj_rec.MODIFIER_LINE_ID,
8265             p_MODIFIER_LINE_TYPE_CODE
8266 				    => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
8267             p_MODIFIER_MECHANISM_TYPE_CODE
8268 			=> l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
8269             p_MODIFIED_FROM  	    => l_price_adj_rec.MODIFIED_FROM,
8270             p_MODIFIED_TO    	    => l_price_adj_rec.MODIFIED_TO,
8271             p_OPERAND        	    => l_price_adj_rec.OPERAND,
8272             p_ARITHMETIC_OPERATOR   => l_price_adj_rec.ARITHMETIC_OPERATOR,
8273             p_AUTOMATIC_FLAG        => l_price_adj_rec.AUTOMATIC_FLAG,
8274             p_UPDATE_ALLOWABLE_FLAG => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
8275             p_UPDATED_FLAG          => l_price_adj_rec.UPDATED_FLAG,
8276             p_APPLIED_FLAG          => l_price_adj_rec.APPLIED_FLAG,
8277             p_ON_INVOICE_FLAG       => l_price_adj_rec.ON_INVOICE_FLAG,
8278             p_PRICING_PHASE_ID      => l_price_adj_rec.PRICING_PHASE_ID,
8279             p_ATTRIBUTE_CATEGORY    => l_price_adj_rec.ATTRIBUTE_CATEGORY,
8280             p_ATTRIBUTE1  	    => l_price_adj_rec.ATTRIBUTE1,
8281             p_ATTRIBUTE2  	    => l_price_adj_rec.ATTRIBUTE2,
8282             p_ATTRIBUTE3  	    => l_price_adj_rec.ATTRIBUTE3,
8283             p_ATTRIBUTE4  	    => l_price_adj_rec.ATTRIBUTE4,
8284             p_ATTRIBUTE5  	    => l_price_adj_rec.ATTRIBUTE5,
8285             p_ATTRIBUTE6  	    => l_price_adj_rec.ATTRIBUTE6,
8286             p_ATTRIBUTE7  	    => l_price_adj_rec.ATTRIBUTE7,
8287             p_ATTRIBUTE8  	    => l_price_adj_rec.ATTRIBUTE8,
8288             p_ATTRIBUTE9  	    => l_price_adj_rec.ATTRIBUTE9,
8289             p_ATTRIBUTE10  	    => l_price_adj_rec.ATTRIBUTE10,
8290             p_ATTRIBUTE11  	    => l_price_adj_rec.ATTRIBUTE11,
8291             p_ATTRIBUTE12  	    => l_price_adj_rec.ATTRIBUTE12,
8292             p_ATTRIBUTE13  	    => l_price_adj_rec.ATTRIBUTE13,
8293             p_ATTRIBUTE14  	    => l_price_adj_rec.ATTRIBUTE14,
8294             p_ATTRIBUTE15  	    => l_price_adj_rec.ATTRIBUTE15,
8295             p_ATTRIBUTE16  =>  l_price_adj_rec.ATTRIBUTE16,
8296             p_ATTRIBUTE17  =>  l_price_adj_rec.ATTRIBUTE17,
8297             p_ATTRIBUTE18  =>  l_price_adj_rec.ATTRIBUTE18,
8298             p_ATTRIBUTE19  =>  l_price_adj_rec.ATTRIBUTE19,
8299             p_ATTRIBUTE20  =>  l_price_adj_rec.ATTRIBUTE20,
8300 		  p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
8301           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
8302           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
8303           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
8304           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
8305           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
8306           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
8307           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
8308           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
8309           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
8310           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
8311           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
8312           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
8313           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
8314           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
8315           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
8316           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
8317           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
8318           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
8319           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
8320           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
8321           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
8322           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
8323           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
8324           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
8325           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
8326           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
8327           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
8328           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
8329           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
8330           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
8331           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
8332           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
8333           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
8334           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
8335           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
8336           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
8337           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
8338           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
8339           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
8340           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
8341           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
8342 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
8343 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
8344 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER);
8345 
8346    FOR j in 1..l_price_adj_attr_tbl.count LOOP
8347      IF l_price_adj_attr_tbl(j).price_adj_index = j THEN
8348         l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID;
8349      END IF;
8350    END LOOP;
8351 
8352 
8353    ELSIF l_price_adj_rec.operation_code = 'UPDATE' THEN
8354          -- New Code for updating PBH
8355          if l_price_adj_rec.updated_flag = 'Y' then
8356 
8357             l_price_adjustment_id := null;
8358 
8359             --get the price_adjustment_id of the PBH adjustment line, if this is children of a PBH parent
8360             open c_pbh( l_price_adj_rec.price_adjustment_id );
8361             fetch c_pbh into l_price_adjustment_id;
8362             close c_pbh;
8363 
8364 
8365             --if the above query returns a not null value then update all the children of this PBH
8366 
8367             if  l_price_adjustment_id is not null then
8368 
8369                --update all child lines
8370                UPDATE aso_price_adjustments
8371                SET updated_flag = 'Y',
8372                    applied_flag = null
8373                Where price_adjustment_id in ( SELECT rltd_price_adj_id
8374                                               FROM aso_price_adj_relationships b
8375                                               WHERE price_adjustment_id = l_price_adjustment_id );
8376 
8377                --update the parent PBH line
8378                UPDATE aso_price_adjustments
8379                SET updated_flag = 'Y',
8380                    applied_flag = 'Y'
8381                Where price_adjustment_id = l_price_adjustment_id;
8382 
8383             end if;
8384 
8385          end if;
8386 
8387 
8388         ASO_PRICE_ADJUSTMENTS_PKG.Update_Row(
8389             p_PRICE_ADJUSTMENT_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID,
8390             p_CREATION_DATE  	=> l_price_adj_rec.creation_date,
8391             p_CREATED_BY  	=> G_USER_ID,
8392             p_LAST_UPDATE_DATE  => SYSDATE,
8393             p_LAST_UPDATED_BY  	=> G_USER_ID,
8394             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8395             p_PROGRAM_APPLICATION_ID  =>l_price_adj_rec.PROGRAM_APPLICATION_ID,
8396             p_PROGRAM_ID  	    => l_price_adj_rec.PROGRAM_ID,
8397             p_PROGRAM_UPDATE_DATE   => l_price_adj_rec.PROGRAM_UPDATE_DATE,
8398             p_REQUEST_ID  	    => l_price_adj_rec.REQUEST_ID,
8399             p_QUOTE_HEADER_ID  	    => l_price_adj_rec.QUOTE_HEADER_ID,
8400             p_QUOTE_LINE_ID  	    => l_price_adj_rec.QUOTE_LINE_ID,
8401             p_QUOTE_SHIPMENT_ID     => l_price_adj_rec.QUOTE_SHIPMENT_ID,
8402             p_MODIFIER_HEADER_ID    => l_price_adj_rec.MODIFIER_HEADER_ID,
8403             p_MODIFIER_LINE_ID      => l_price_adj_rec.MODIFIER_LINE_ID,
8404             p_MODIFIER_LINE_TYPE_CODE
8405 				=> l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
8406             p_MODIFIER_MECHANISM_TYPE_CODE
8407 			=> l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
8408             p_MODIFIED_FROM  	    => l_price_adj_rec.MODIFIED_FROM,
8409             p_MODIFIED_TO  	    => l_price_adj_rec.MODIFIED_TO,
8410             p_OPERAND      	    => l_price_adj_rec.OPERAND,
8411             p_ARITHMETIC_OPERATOR   => l_price_adj_rec.ARITHMETIC_OPERATOR,
8412             p_AUTOMATIC_FLAG        => l_price_adj_rec.AUTOMATIC_FLAG,
8413             p_UPDATE_ALLOWABLE_FLAG => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
8414             p_UPDATED_FLAG          => l_price_adj_rec.UPDATED_FLAG,
8415             p_APPLIED_FLAG          => l_price_adj_rec.APPLIED_FLAG,
8416             p_ON_INVOICE_FLAG       => l_price_adj_rec.ON_INVOICE_FLAG,
8417             p_PRICING_PHASE_ID      => l_price_adj_rec.PRICING_PHASE_ID,
8418             p_ATTRIBUTE_CATEGORY    => l_price_adj_rec.ATTRIBUTE_CATEGORY,
8419             p_ATTRIBUTE1  	    => l_price_adj_rec.ATTRIBUTE1,
8420             p_ATTRIBUTE2  	    => l_price_adj_rec.ATTRIBUTE2,
8421             p_ATTRIBUTE3  	    => l_price_adj_rec.ATTRIBUTE3,
8422             p_ATTRIBUTE4  	    => l_price_adj_rec.ATTRIBUTE4,
8423             p_ATTRIBUTE5  	    => l_price_adj_rec.ATTRIBUTE5,
8424             p_ATTRIBUTE6  	    => l_price_adj_rec.ATTRIBUTE6,
8425             p_ATTRIBUTE7  	    => l_price_adj_rec.ATTRIBUTE7,
8426             p_ATTRIBUTE8  	    => l_price_adj_rec.ATTRIBUTE8,
8427             p_ATTRIBUTE9  	    => l_price_adj_rec.ATTRIBUTE9,
8428             p_ATTRIBUTE10  	    => l_price_adj_rec.ATTRIBUTE10,
8429             p_ATTRIBUTE11  	    => l_price_adj_rec.ATTRIBUTE11,
8430             p_ATTRIBUTE12  	    => l_price_adj_rec.ATTRIBUTE12,
8431             p_ATTRIBUTE13  	    => l_price_adj_rec.ATTRIBUTE13,
8432             p_ATTRIBUTE14  	    => l_price_adj_rec.ATTRIBUTE14,
8433             p_ATTRIBUTE15  	    => l_price_adj_rec.ATTRIBUTE15,
8434             p_ATTRIBUTE16  =>  l_price_adj_rec.ATTRIBUTE16,
8435             p_ATTRIBUTE17  =>  l_price_adj_rec.ATTRIBUTE17,
8436             p_ATTRIBUTE18  =>  l_price_adj_rec.ATTRIBUTE18,
8437             p_ATTRIBUTE19  =>  l_price_adj_rec.ATTRIBUTE19,
8438             p_ATTRIBUTE20  =>  l_price_adj_rec.ATTRIBUTE20,
8439 		  p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
8440           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
8441           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
8442           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
8443           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
8444           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
8445           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
8446           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
8447           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
8448           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
8449           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
8450           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
8451           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
8452           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
8453           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
8454           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
8455           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
8456           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
8457           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
8458           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
8459           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
8460           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
8461           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
8462           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
8463           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
8464           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
8465           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
8466           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
8467           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
8468           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
8469           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
8470           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
8471           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
8472           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
8473           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
8474           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
8475           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
8476           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
8477           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
8478           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
8479           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
8480           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
8481 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
8482 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
8483 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
8484 		);
8485 
8486        ELSIF l_price_adj_rec.operation_code = 'DELETE' THEN
8487         ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
8488             p_PRICE_ADJ_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID);
8489 
8490        END IF;
8491     END LOOP;
8492 
8493 
8494 -- price adjustment attributes
8495 
8496            FOR i in 1..l_price_adj_attr_tbl.count LOOP
8497 
8498            x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
8499 
8500      IF l_price_adj_attr_tbl(i).operation_code = 'CREATE' THEN
8501         -- BC4J Fix
8502         -- x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := null;
8503 
8504     	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
8505           px_PRICE_ADJ_ATTRIB_ID=> x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
8506           p_CREATION_DATE  	=> SYSDATE,
8507           p_CREATED_BY  	=> G_USER_ID,
8508           p_LAST_UPDATE_DATE  => SYSDATE,
8509           p_LAST_UPDATED_BY  	=> G_USER_ID,
8510           p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8511           p_PROGRAM_APPLICATION_ID
8512 			=>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
8513           p_PROGRAM_ID  	=> l_price_adj_attr_tbl(i).PROGRAM_ID,
8514           p_PROGRAM_UPDATE_DATE => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
8515           p_REQUEST_ID  	=> l_price_adj_attr_tbl(i).REQUEST_ID,
8516           p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
8517           p_PRICING_CONTEXT  	=> l_price_adj_attr_tbl(i).PRICING_CONTEXT,
8518           p_PRICING_ATTRIBUTE   => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
8519           p_PRICING_ATTR_VALUE_FROM
8520 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
8521           p_PRICING_ATTR_VALUE_TO
8522 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
8523           p_COMPARISON_OPERATOR => l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
8524           p_FLEX_TITLE   	=> l_price_adj_attr_tbl(i).FLEX_TITLE ,
8525 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
8526 
8527    ELSIF l_price_adj_attr_tbl(i).operation_code = 'UPDATE' THEN
8528 
8529     ASO_PRICE_ADJ_ATTRIBS_PKG.Update_Row(
8530           p_PRICE_ADJ_ATTRIB_ID => l_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
8531           p_CREATION_DATE  	=> l_price_adj_attr_tbl(i).creation_date,
8532           p_CREATED_BY  	=> G_USER_ID,
8533           p_LAST_UPDATE_DATE  	=> SYSDATE,
8534           p_LAST_UPDATED_BY  	=> G_USER_ID,
8535           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
8536           p_PROGRAM_APPLICATION_ID
8537 		=>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
8538           p_PROGRAM_ID  	=> l_price_adj_attr_tbl(i).PROGRAM_ID,
8539           p_PROGRAM_UPDATE_DATE => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
8540           p_REQUEST_ID  	=> l_price_adj_attr_tbl(i).REQUEST_ID,
8541           p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
8542           p_PRICING_CONTEXT  	=> l_price_adj_attr_tbl(i).PRICING_CONTEXT,
8543           p_PRICING_ATTRIBUTE   => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
8544           p_PRICING_ATTR_VALUE_FROM
8545 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
8546           p_PRICING_ATTR_VALUE_TO
8547 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
8548           p_COMPARISON_OPERATOR => l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
8549           p_FLEX_TITLE   	=> l_price_adj_attr_tbl(i).FLEX_TITLE ,
8550 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER
8551 		);
8552 
8553    ELSIF l_price_adj_attr_tbl(i).operation_code = 'DELETE' THEN
8554 
8555     ASO_PRICE_ADJ_ATTRIBS_PKG.Delete_Row(
8556           p_PRICE_ADJ_ATTRIB_ID   => l_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID);
8557 
8558    END IF;
8559 
8560 END LOOP;
8561 
8562 
8563 -- New code to call aso_pricing_int.delete_promotion 07/22/02
8564 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8565    		aso_debug_pub.add('Update_Rows: l_Price_Attributes_Tbl.count: '||l_Price_Attributes_Tbl.count,1, 'N');
8566    		aso_debug_pub.add('Update_Rows: Before call to aso_pricing_int.Delete_Promotion',1, 'N');
8567 	end if;
8568 
8569    IF l_Price_Attributes_Tbl.count > 0 THEN
8570 
8571         aso_pricing_int.Delete_Promotion (
8572                            P_Api_Version_Number =>  1.0,
8573                            P_Init_Msg_List      =>  FND_API.G_FALSE,
8574                            P_Commit             =>  FND_API.G_FALSE,
8575                            p_price_attr_tbl     =>  l_Price_Attributes_Tbl,
8576                            x_return_status      =>  x_return_status,
8577                            x_msg_count          =>  x_msg_count,
8578                            x_msg_data           =>  x_msg_data
8579                                    );
8580 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8581         	aso_debug_pub.add('Update_Rows: After call to Delete_Promotion: x_return_status: '||x_return_status,1, 'N');
8582 	end if;
8583 
8584    END IF;
8585 
8586 -- End of New code to call aso_pricing_int.delete_promotion 07/22/02
8587 
8588 
8589 -- insert rows into aso_payments_tbl
8590 
8591 
8592     FOR i IN 1..l_Payment_Tbl.count LOOP
8593 	l_payment_rec := l_payment_tbl(i);
8594        -- l_payment_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8595         x_payment_tbl(i) := l_payment_rec;
8596 
8597        IF l_payment_rec.operation_code = 'CREATE' THEN
8598 
8599         l_payment_rec.quote_header_id := l_qte_line_rec.quote_header_id;
8600         l_payment_rec.quote_line_id := l_qte_line_rec.quote_line_id;
8601        -- BC4J Fix
8602 	  -- x_payment_tbl(i).PAYMENT_ID := null;
8603         l_payment_rec.PAYMENT_TERM_ID_FROM := l_payment_tbl(i).payment_term_id;
8604        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8605          aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows Quote Line l_payment_tbl(i).payment_term_id'||l_payment_tbl(i).payment_term_id, 1, 'Y');
8606         aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Insert Rows Quote Linel_payment_rec.PAYMENT_TERM_ID_FROM'||l_payment_rec.PAYMENT_TERM_ID_FROM, 1, 'Y');
8607        END IF;
8608 
8609      -- Suyog Payments Changes
8610 
8611            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8612                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to create_payment_row ', 1, 'Y');
8613            END IF;
8614 
8615          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
8616                                              x_payment_rec   => x_payment_tbl(i),
8617                                              x_return_status => x_return_status,
8618                                              x_msg_count     => x_msg_count,
8619                                              x_msg_data      => x_msg_data);
8620 
8621            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8622                aso_debug_pub.add('Update_Quote_Line_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8623            END IF;
8624 
8625             if x_return_status <> fnd_api.g_ret_sts_success then
8626               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8627                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8628               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8629                  RAISE FND_API.G_EXC_ERROR;
8630               ELSE
8631                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8632               END IF;
8633             end if;
8634 
8635      -- End Suyog Payment Changes
8636 
8637          x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
8638 
8639       ELSIF l_payment_rec.operation_code = 'UPDATE' THEN
8640 
8641         IF l_payment_rec.payment_term_id = FND_API.G_MISS_NUM THEN
8642           FOR l_payment_db_rec IN c_db_payment_terms(l_payment_rec.PAYMENT_ID) LOOP
8643             IF l_payment_db_rec.payment_term_id_from IS NULL THEN
8644               l_payment_rec.payment_term_id_from := l_payment_db_rec.payment_term_id;
8645             END IF;
8646           END LOOP;
8647         ELSE
8648               l_payment_rec.payment_term_id_from := l_payment_rec.payment_term_id;
8649         END IF;
8650          IF aso_debug_pub.g_debug_flag = 'Y' THEN
8651             aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Update Rows l_payment_rec.payment_term_id'||l_payment_rec.payment_term_id, 1, 'Y');
8652             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');
8653          END IF;
8654 
8655 
8656      -- Suyog Payments Changes
8657 
8658            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8659                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to update_payment_row ', 1, 'Y');
8660            END IF;
8661 
8662          aso_payment_int.update_payment_row(p_payment_rec => l_payment_rec  ,
8663                                              x_payment_rec   => x_payment_tbl(i),
8664                                              x_return_status => x_return_status,
8665                                              x_msg_count     => x_msg_count,
8666                                              x_msg_data      => x_msg_data);
8667 
8668            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8669                aso_debug_pub.add('Update_Quote_Line_Rows: After call to update_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8670            END IF;
8671             if x_return_status <> fnd_api.g_ret_sts_success then
8672               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8673                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8674               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8675                  RAISE FND_API.G_EXC_ERROR;
8676               ELSE
8677                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8678               END IF;
8679             end if;
8680 
8681      -- End Suyog Payment Changes
8682 
8683 
8684        ELSIF l_payment_rec.operation_code = 'DELETE' THEN
8685 
8686      -- Suyog Payments Changes
8687 
8688            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8689                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to delete_payment_row ', 1, 'Y');
8690            END IF;
8691 
8692          aso_payment_int.delete_payment_row(p_payment_rec => l_payment_rec  ,
8693                                              x_return_status => x_return_status,
8694                                              x_msg_count     => x_msg_count,
8695                                              x_msg_data      => x_msg_data);
8696 
8697            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8698                aso_debug_pub.add('Update_Quote_Line_Rows: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8699            END IF;
8700             if x_return_status <> fnd_api.g_ret_sts_success then
8701               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8702                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8703               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8704                  RAISE FND_API.G_EXC_ERROR;
8705               ELSE
8706                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8707               END IF;
8708             end if;
8709 
8710      -- End Suyog Payment Changes
8711 
8712        END IF;
8713 
8714     END LOOP;       -- payment loop
8715 
8716           -- fix for bug 4483808 , moved validation after the row has been updated
8717           aso_validate_pvt.Validate_po_line_number
8718           (
8719                p_init_msg_list       => fnd_api.g_false,
8720                p_qte_header_rec    => l_qte_header_rec,
8721                P_Qte_Line_rec   => l_Qte_Line_Rec,
8722                x_return_status     => x_return_status,
8723                x_msg_count         => x_msg_count,
8724                x_msg_data          => x_msg_data);
8725 
8726           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8727                   RAISE FND_API.G_EXC_ERROR;
8728             END IF;
8729 
8730           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
8731             aso_debug_pub.add('x_return_status for Validate_po_line_number'||  x_return_status, 1, 'Y');
8732           END IF;
8733 
8734 
8735     FOR i IN 1..l_line_attribs_ext_Tbl.count LOOP
8736 	l_line_attribs_rec := l_line_attribs_ext_tbl(i);
8737      --   l_line_attribs_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8738         x_line_attribs_ext_tbl(i) := l_line_attribs_rec;
8739 
8740      IF l_line_attribs_rec.operation_code = 'CREATE' THEN
8741       -- BC4J Fix
8742       --x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID := null;
8743 
8744  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
8745           px_LINE_ATTRIBUTE_ID  => x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID,
8746           p_CREATION_DATE          => SYSDATE,
8747           p_CREATED_BY             => G_USER_ID,
8748           p_LAST_UPDATE_DATE       => SYSDATE,
8749           p_LAST_UPDATED_BY        => G_USER_ID,
8750           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
8751           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
8752           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
8753           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
8754           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
8755            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
8756            p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
8757           p_QUOTE_HEADER_ID          => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
8758           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
8759           p_QUOTE_SHIPMENT_ID          => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
8760           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
8761           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
8762           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
8763            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
8764           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
8765           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
8766 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
8767 
8768       ELSIF l_line_attribs_rec.operation_code = 'UPDATE' THEN
8769       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row(
8770           p_LINE_ATTRIBUTE_ID  => l_LINE_ATTRIBS_REC.LINE_ATTRIBUTE_ID,
8771           p_CREATION_DATE          => l_LINE_ATTRIBS_rec.creation_date,
8772           p_CREATED_BY             => G_USER_ID,
8773           p_LAST_UPDATE_DATE       => SYSDATE,
8774           p_LAST_UPDATED_BY        => G_USER_ID,
8775           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
8776           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
8777           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
8778           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
8779           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
8780            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
8781           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
8782           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
8783           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
8784           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
8785           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
8786           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
8787           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
8788            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
8789           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
8790           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
8791 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
8792 
8793      ELSIF l_line_attribs_rec.operation_code = 'DELETE' THEN
8794      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.delete_Row(
8795           p_LINE_ATTRIB_ID  => l_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
8796      END IF;
8797 END LOOP;      -- line attribs
8798 
8799 
8800      --set the ship partial flag
8801 
8802      OPEN  C_ship_partial(l_Qte_Line_Rec.quote_line_id);
8803      FETCH C_ship_partial INTO l_ship_count;
8804      CLOSE C_ship_partial;
8805 
8806      IF l_ship_count > 1 THEN
8807 
8808         update aso_quote_lines_all
8809         set split_shipment_flag  =  'T',
8810             last_update_date     =  sysdate,
8811             last_updated_by      =  fnd_global.user_id,
8812             last_update_login    =  fnd_global.conc_login_id
8813         where quote_line_id = l_Qte_Line_Rec.quote_line_id;
8814 
8815      ELSIF l_ship_count = 1 THEN
8816 
8817         update aso_quote_lines_all
8818         set split_shipment_flag  =  'F',
8819             last_update_date     =  sysdate,
8820             last_updated_by      =  fnd_global.user_id,
8821             last_update_login    =  fnd_global.conc_login_id
8822         where quote_line_id = l_Qte_Line_Rec.quote_line_id;
8823 
8824      END IF;
8825 
8826 
8827 
8828    IF  l_control_rec.line_pricing_event IS NOT NULL AND
8829         l_control_rec.line_pricing_event <> FND_API.G_MISS_CHAR  THEN
8830 
8831       l_pricing_control_rec.pricing_event := l_control_rec.line_pricing_event;
8832       l_pricing_control_rec.request_type  := l_control_rec.pricing_request_type;
8833       l_pricing_control_rec.price_mode    := l_control_rec.price_mode;
8834 
8835 	 x_qte_line_rec.quote_line_id        := l_qte_line_rec.quote_line_id;
8836       l_qte_line_tbl(1)                   := l_Qte_Line_Rec;
8837 
8838       --New Code to call overload pricing_order
8839 
8840         l_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(l_qte_header_rec.quote_header_id,null);
8841         l_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(l_qte_header_rec.quote_header_id,null);
8842 
8843         if l_hd_shipment_tbl.count = 1 then
8844             l_hd_shipment_rec := l_hd_shipment_tbl(1);
8845         end if;
8846 
8847 
8848         ASO_PRICING_INT.Pricing_Order(
8849                     P_Api_Version_Number     => 1.0,
8850                     P_Init_Msg_List          => fnd_api.g_false,
8851                     P_Commit                 => fnd_api.g_false,
8852                     p_control_rec            => l_pricing_control_rec,
8853                     p_qte_header_rec         => l_qte_header_rec,
8854                     p_hd_shipment_rec        => l_hd_shipment_rec,
8855                     p_hd_price_attr_tbl      => l_hd_price_attr_tbl,
8856                     p_qte_line_tbl           => l_qte_line_tbl,
8857                     --p_line_rltship_tbl     => l_line_rltship_tbl,
8858                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
8859                     --p_ln_shipment_tbl      => ln_shipment_tbl,
8860                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
8861                     x_qte_header_rec         => lx_qte_header_rec,
8862                     x_qte_line_tbl           => lx_qte_line_tbl,
8863                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
8864                     x_price_adj_tbl          => lx_price_adj_tbl,
8865                     x_price_adj_attr_tbl     => lx_price_adj_attr_tbl,
8866                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
8867                     x_return_status          => x_return_status,
8868                     x_msg_count              => x_msg_count,
8869                     x_msg_data               => x_msg_data );
8870 
8871       if lx_qte_line_tbl.count > 0 then
8872 		x_qte_line_rec  :=  lx_qte_line_tbl(1);
8873       end if;
8874 
8875       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8876 
8877          IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8878              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8879          ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8880              RAISE FND_API.G_EXC_ERROR;
8881          END IF;
8882 
8883       END IF;
8884 
8885 
8886    END IF;        -- pricing
8887 
8888    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8889         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8890    END IF;
8891 
8892    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8893        aso_debug_pub.add('Update_Quote_line - before calculate_tax_flag ', 1, 'N');
8894    end if;
8895 
8896    /*
8897     *
8898     *
8899    IF l_control_rec.CALCULATE_TAX_FLAG = 'Y'THEN
8900       l_tax_control_rec.tax_level := 'SHIPPING';
8901       l_tax_control_rec.update_db := 'Y' ;  --FND_API.G_TRUE;
8902 
8903       l_calc_tax_detail_rec.quote_header_id := l_Qte_Line_Rec.quote_header_id;
8904       l_calc_tax_detail_rec.quote_line_id := l_Qte_Line_Rec.quote_line_id;
8905 
8906 -- added to calc tax based on accounts
8907         OPEN get_cust_acct( l_Qte_Line_Rec.QUOTE_HEADER_ID);
8908         FETCH get_cust_acct into l_cust_acct;
8909         IF get_cust_acct%NOTFOUND THEN
8910           NULL;
8911         END IF;
8912         CLOSE get_cust_acct;
8913 
8914 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8915          aso_debug_pub.add('Cust acct'||l_cust_acct , 1, 'Y');
8916 	end if;
8917 
8918         IF (l_Qte_Line_Rec.invoice_to_party_site_id is not NULL
8919       AND l_Qte_Line_Rec.invoice_to_party_site_id <> FND_API.G_MISS_NUM) AND
8920        (l_cust_acct is NOT NULL AND l_cust_acct <> FND_API.G_MISS_NUM)  THEN
8921 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8922      		aso_debug_pub.add('inside if'||nvl(to_char(l_Qte_Line_Rec.invoice_to_party_site_id),'null'), 1, 'Y' );
8923 	end if;
8924 
8925           ASO_PARTY_INT.GET_ACCT_SITE_USES (
8926   		  p_api_version     => 1.0
8927  		 ,P_Cust_Account_Id => l_cust_acct
8928  		 ,P_Party_Site_Id   => l_Qte_Line_Rec.invoice_to_party_site_id
8929 	         ,P_Acct_Site_type  => 'BILL_TO'
8930  		 ,x_return_status   => l_return_status
8931  		 ,x_msg_count       => l_msg_count
8932  		 ,x_msg_data        => l_msg_data
8933  		 ,x_site_use_id     => l_invoice_org_id
8934   	   );
8935               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
8936                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
8937                   THEN
8938                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
8939                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
8940                   FND_MSG_PUB.ADD;
8941                 END IF;
8942                -- raise FND_API.G_EXC_ERROR;
8943               END IF;
8944       END IF;
8945 
8946 lx_tax_shipment_tbl :=  ASO_UTILITY_PVT.Query_Shipment_Rows(l_Qte_Line_Rec.quote_header_id,l_Qte_Line_Rec.quote_line_id);
8947 
8948       FOR i in 1..lx_tax_shipment_tbl.count LOOP
8949          l_calc_tax_detail_rec.quote_shipment_id := lx_tax_shipment_tbl(i).shipment_id;
8950 
8951          IF (lx_tax_shipment_tbl(i).ship_to_party_site_id is not NULL
8952         AND lx_tax_shipment_tbl(i).ship_to_party_site_id <> FND_API.G_MISS_NUM)
8953         AND    (l_cust_acct is NOT NULL AND l_cust_acct <> FND_API.G_MISS_NUM)
8954           THEN
8955            ASO_PARTY_INT.GET_ACCT_SITE_USES (
8956   		  p_api_version     => 1.0
8957  		 ,P_Cust_Account_Id => l_cust_acct
8958  		 ,P_Party_Site_Id   =>  lx_tax_shipment_tbl(i).ship_to_party_site_id
8959 	         ,P_Acct_Site_type  => 'SHIP_TO'
8960  		 ,x_return_status   => l_return_status
8961  		 ,x_msg_count       => l_msg_count
8962  		 ,x_msg_data        => l_msg_data
8963  		 ,x_site_use_id     => l_ship_org_id
8964   	   );
8965 
8966               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
8967                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
8968                   THEN
8969                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
8970                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
8971                   FND_MSG_PUB.ADD;
8972                 END IF;
8973                -- raise FND_API.G_EXC_ERROR;
8974               END IF;
8975 
8976     END IF;
8977 	ASO_TAX_INT.Calculate_Tax(
8978          P_Api_Version_Number => 1.0,
8979          p_quote_header_id    => l_Qte_Line_Rec.quote_header_id,
8980          P_Tax_Control_Rec    => l_tax_control_rec,
8981          x_tax_amount	     => x_tax_amount    ,
8982          x_tax_detail_tbl    => l_tax_detail_tbl,
8983          X_Return_Status     => x_return_status ,
8984          X_Msg_Count         => x_msg_count     ,
8985         X_Msg_Data           => x_msg_data      );
8986 
8987           if l_tax_detail_tbl.count > 0 then
8988            x_tax_detail_tbl(i) := l_tax_detail_tbl(1);
8989           end if;
8990 
8991         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8992            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8993 	        FND_MESSAGE.Set_Name('ASO', 'ASO_TAX_CALCULATION');
8994 	        FND_MSG_PUB.ADD;
8995 	       END IF;
8996            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8997             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8998            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8999             RAISE FND_API.G_EXC_ERROR;
9000            END IF;
9001         END IF;
9002       END LOOP;
9003 
9004    END IF;
9005 
9006 *
9007 */
9008    -- check the profile option for reservation and create reservation if needed
9009 
9010     IF FND_PROFILE.Value('ASO_RESERVATION_LEVEL') = 'AUTO_CART' THEN
9011        l_shipment_tbl := x_shipment_tbl;
9012 
9013      FOR i in 1..l_shipment_tbl.count LOOP
9014 
9015        -- shipment quantity should be changed
9016       IF l_shipment_tbl(i).quantity is not NULL AND
9017          l_shipment_tbl(i).quantity <> FND_API.G_MISS_NUM THEN
9018 
9019          SELECT reservation_id INTO l_shipment_tbl(i).reservation_id
9020          FROM ASO_SHIPMENTS
9021          WHERE shipment_id = l_shipment_tbl(i).shipment_id;
9022 
9023        ASO_RESERVATION_INT.Update_reservation(
9024          P_Api_Version_Number   => 1.0,
9025          p_line_rec             => x_qte_line_rec,
9026          p_shipment_rec         => l_shipment_tbl(i),
9027          X_Return_Status        => x_return_status,
9028          X_Msg_Count            => x_msg_count,
9029          X_Msg_Data             => x_msg_data
9030       );
9031 
9032          UPDATE ASO_SHIPMENTS
9033          SET reservation_id     =  l_shipment_tbl(i).reservation_id,
9034              reserved_quantity  =  l_shipment_tbl(i).reserved_quantity,
9035              last_update_date   =  sysdate,
9036              last_updated_by    =  fnd_global.user_id,
9037              last_update_login  =  fnd_global.conc_login_id
9038          WHERE shipment_id     = l_shipment_tbl(i).shipment_id;
9039 
9040          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9041            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9042 	     FND_MESSAGE.Set_Name('ASO', 'ASO_CREATING_RESERVATION');
9043 	     FND_MSG_PUB.ADD;
9044 	    END IF;
9045            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9046             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9047            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
9048             RAISE FND_API.G_EXC_ERROR;
9049            END IF;
9050          END IF;
9051 
9052 
9053        END IF;  -- quantity change
9054       END LOOP;
9055 
9056     END IF;  --automatic reservation
9057 
9058 
9059 
9060            IF p_update_header_flag = 'Y' THEN
9061 
9062       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
9063       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
9064       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
9065       -- IF calculate_tax_flag = 'N', not summation on line level tax,
9066       -- just take the value of p_qte_rec.total_tax as the total_tax
9067       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
9068       -- just take the value of p_qte_rec.total_freight_charge
9069       -- how can i get the calc_tax_flag and calc_freight_charge_flag ??
9070 
9071        ASO_QUOTE_HEADERS_PVT.Update_Quote_Total (
9072 	P_Qte_Header_id		=> l_Qte_Line_Rec.quote_header_id,
9073         P_calculate_tax         => l_control_rec.CALCULATE_TAX_FLAG,
9074         P_calculate_freight_charge=> l_control_rec.calculate_freight_charge_flag,
9075             p_control_rec		 =>  l_control_rec,
9076 	X_Return_Status         => l_return_status,
9077 	X_Msg_Count		=> x_msg_count,
9078 	X_Msg_Data              => x_msg_data);
9079 
9080            IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9081             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9082  	     FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
9083           -- FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
9084 	     FND_MSG_PUB.ADD;
9085  	    END IF;
9086           END IF;
9087 
9088       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9089         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9090 --        ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH, 'Private API: '|| l_api_name || 'error in updating header');
9091         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9092       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9093         x_return_status := FND_API.G_RET_STS_ERROR;
9094       END IF;
9095 
9096 
9097     END IF;
9098 
9099 	-- Change START
9100 	-- Release 12 TAP Changes
9101 	-- Girish Sachdeva 8/30/2005
9102 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
9103 
9104 	SELECT quote_number
9105 	INTO   l_quote_number
9106 	FROM   aso_quote_headers_all -- bug 8968033
9107 	WHERE  quote_header_id = l_Qte_Line_Rec.quote_header_id;
9108 
9109 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
9110 		aso_debug_pub.add('ASO_QUOTE_LINES_PVT.update_quote_line : Calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || l_quote_number, 1, 'Y');
9111 	END IF;
9112 
9113 	-- Call to insert record in ASO_CHANGED_QUOTES
9114 	ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_quote_number);
9115 
9116 	-- Change END
9117 
9118 
9119       IF FND_API.to_Boolean( p_commit )
9120       THEN
9121           COMMIT WORK;
9122       END IF;
9123 
9124 
9125 
9126       -- Standard call to get message count and if count is 1, get message info.
9127       FND_MSG_PUB.Count_And_Get
9128       (  p_count          =>   x_msg_count,
9129          p_data           =>   x_msg_data
9130       );
9131 
9132   EXCEPTION
9133 	  WHEN FND_API.G_EXC_ERROR THEN
9134 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9135 		   P_API_NAME => L_API_NAME
9136 		  ,P_PKG_NAME => G_PKG_NAME
9137 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
9138 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9139 		  ,P_SQLCODE => SQLCODE
9140 		  ,P_SQLERRM => SQLERRM
9141 		  ,X_MSG_COUNT => X_MSG_COUNT
9142 		  ,X_MSG_DATA => X_MSG_DATA
9143 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9144 
9145 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9146 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9147 		   P_API_NAME => L_API_NAME
9148 		  ,P_PKG_NAME => G_PKG_NAME
9149 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9150 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9151 		  ,P_SQLCODE => SQLCODE
9152 		  ,P_SQLERRM => SQLERRM
9153 		  ,X_MSG_COUNT => X_MSG_COUNT
9154 		  ,X_MSG_DATA => X_MSG_DATA
9155 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9156 
9157 	  WHEN OTHERS THEN
9158 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9159 		   P_API_NAME => L_API_NAME
9160 		  ,P_PKG_NAME => G_PKG_NAME
9161 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
9162 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9163 		  ,P_SQLCODE => SQLCODE
9164 		  ,P_SQLERRM => SQLERRM
9165 		  ,X_MSG_COUNT => X_MSG_COUNT
9166 		  ,X_MSG_DATA => X_MSG_DATA
9167 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9168 
9169 
9170 End Update_quote_line;
9171 
9172 
9173 --   *******************************************************
9174 --    Start of Comments
9175 --   *******************************************************
9176 --   API Name:  Delete_Quote_Line
9177 --   Type    :  Public
9178 --   Pre-Req :
9179 --   Parameters:
9180 --   IN
9181 --       p_api_version_number      IN   NUMBER     Required
9182 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
9183 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
9184 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
9185 --       P_qte_line_Rec      IN qte_line_Rec_Type  Required
9186 --       P_quote_header_id   IN    NUMBER                    Required
9187 --       P_header_last_update_date IN DATE                   Required
9188 --
9189 --   OUT:
9190 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
9191 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
9192 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
9193 --   Version : Current version 2.0
9194 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
9195 --         and basic operation, developer must manually add parameters and business logic as necessary.
9196 --
9197 --   End of Comments
9198 --
9199 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
9200 --       The Master delete procedure may not be needed depends on different business requirements.
9201 
9202 PROCEDURE Delete_Quote_Line(
9203     P_Api_Version_Number         IN   NUMBER,
9204     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
9205     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
9206     P_qte_line_Rec     IN    ASO_QUOTE_PUB.qte_line_Rec_Type,
9207     P_Control_REC      IN    ASO_QUOTE_PUB.Control_Rec_Type
9208 				:= ASO_QUOTE_PUB.G_MISS_Control_Rec,
9209     P_Update_Header_Flag         IN   VARCHAR2   := 'Y',
9210     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
9211     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
9212     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
9213     )
9214 IS
9215    Cursor C_Get_quote(c_QUOTE_LINE_ID Number) IS
9216     Select head.LAST_UPDATE_DATE, head.QUOTE_STATUS_ID, head.QUOTE_NUMBER,
9217 	   head.TOTAL_ADJUSTED_PERCENT, head.quote_header_id
9218     From  ASO_QUOTE_HEADERS_ALL head,
9219           ASO_QUOTE_LINES_ALL line
9220     Where head.QUOTE_HEADER_ID = line.QUOTE_HEADER_ID
9221     And   line.QUOTE_LINE_ID = c_QUOTE_LINE_ID;
9222 
9223     CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
9224       SELECT UPDATE_ALLOWED_FLAG, AUTO_VERSION_FLAG FROM ASO_QUOTE_STATUSES_B
9225       WHERE quote_status_id = c_qte_status_id;
9226 
9227     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
9228 	SELECT max(quote_version)
9229 	FROM ASO_QUOTE_HEADERS_ALL
9230 	WHERE quote_number = X_qte_number;
9231 
9232    CURSOR C_Shipment IS
9233        SELECT shipment_id, reservation_id
9234        FROM aso_shipments
9235        WHERE quote_line_id = p_qte_line_rec.quote_line_id;
9236 
9237    CURSOR C_Inst_Details(shipment_id NUMBER) IS
9238        SELECT line_inst_detail_id
9239        FROM cs_line_inst_details
9240        WHERE quote_line_shipment_id = shipment_id;
9241 
9242 -- hyang csi change 1935614
9243    cursor c_csi_details is
9244      select transaction_line_id
9245      from csi_t_transaction_lines
9246      where source_transaction_id = p_qte_line_rec.quote_line_id
9247        and source_transaction_table = 'ASO_QUOTE_LINES_ALL';
9248 
9249    CURSOR C_config IS
9250        SELECT qln.item_type_code, dtl.config_header_id, dtl.config_revision_num, dtl.ref_type_code
9251        FROM  aso_quote_lines_all qln, aso_quote_line_details dtl
9252        WHERE qln.quote_line_id = p_qte_line_rec.quote_line_id
9253        AND qln.quote_line_id = dtl.quote_line_id;
9254 
9255    CURSOR C_Children(l_quote_line_id NUMBER) IS
9256        SELECT quote_line_id
9257        FROM aso_quote_line_details
9258        WHERE ref_line_id = l_quote_line_id
9259        AND ref_type_code = 'TOP_MODEL';
9260 
9261    cursor c_pricing_line_type_indicator is
9262    select pricing_line_type_indicator
9263    from aso_quote_lines_all
9264    where quote_line_id = P_qte_line_Rec.quote_line_id;
9265 
9266    cursor c_prg_lines is
9267    select modifier_line_type_code
9268    from aso_price_adjustments
9269    where quote_line_id = p_qte_line_rec.quote_line_id
9270    and modifier_line_type_code = G_PROMO_GOODS_DISCOUNT;
9271 
9272    cursor c_free_lines is
9273    select a.quote_line_id
9274    from aso_price_adjustments a, aso_price_adj_relationships b
9275    where a.price_adjustment_id = b.rltd_price_adj_id
9276    and b.quote_line_id = p_qte_line_rec.quote_line_id
9277    and a.quote_line_id <> p_qte_line_rec.quote_line_id;
9278 
9279    cursor get_qte_nbr(qte_hdr_id  number) is
9280    SELECT quote_number
9281    FROM aso_quote_headers_all -- bug 8968033
9282    WHERE quote_header_id = qte_hdr_id;
9283 
9284 	l_api_name                CONSTANT VARCHAR2(30) := 'Delete_quote_line';
9285 	l_api_version_number      CONSTANT NUMBER   := 1.0;
9286 
9287 	l_last_update_date       DATE;
9288 	l_quote_line_detail_id   NUMBER;
9289      l_shipment_rec           ASO_QUOTE_PUB.shipment_rec_type;
9290 	l_Return_Status          VARCHAR2(50);
9291 	l_Msg_Count              NUMBER;
9292 	l_Msg_Data               VARCHAR2(240);
9293 	l_line_rltship_rec       ASO_quote_PUB.LINE_RLTSHIP_Rec_Type
9294                                 := ASO_quote_PUB.G_MISS_LINE_RLTSHIP_Rec;
9295      l_price_adj_rltship_rec  ASO_QUOTE_PUB.PRICE_ADJ_RLTSHIP_Rec_Type ;
9296 	l_hd_discount_percent   NUMBER;
9297 	l_qte_status_id		NUMBER;
9298 	l_update_allowed	VARCHAR2(1);
9299 	l_auto_version		VARCHAR2(1);
9300 	l_quote_number          NUMBER;
9301 	l_old_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
9302 	l_qte_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
9303 	l_quote_version         NUMBER;
9304 	x_quote_header_id       NUMBER;
9305      l_quote_header_id       NUMBER;
9306      l_line_inst_dtl_id      NUMBER;
9307      l_item_type             VARCHAR2(50);
9308      l_config_id             NUMBER;
9309      l_rev_num               NUMBER;
9310 	l_ref_type_code         VARCHAR2(30);
9311      l_qte_line_rec          ASO_QUOTE_PUB.Qte_line_Rec_Type
9312                               := ASO_QUOTE_PUB.G_MISS_Qte_Line_rec;
9313 
9314      l_copy_quote_control_rec  aso_copy_quote_pub.copy_quote_control_rec_type;
9315      l_copy_quote_header_rec   aso_copy_quote_pub.copy_quote_header_rec_type;
9316      l_qte_nbr            number;
9317      l_pricing_line_type_indicator  varchar2(3);
9318 
9319      adj_id_tbl  number_tbl_type;
9320      l_modifier_line_type_code  varchar2(30);
9321     l_payment_tbl         ASO_QUOTE_PUB.Payment_Tbl_Type;
9322     l_payment_rec         aso_quote_pub.payment_rec_type;
9323     l_qte_number	NUMBER ;
9324  BEGIN
9325 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9326 	 	aso_debug_pub.add('Delete_Quote_lines - Begin ', 1, 'Y');
9327           aso_debug_pub.add('Delete_Quote_Line: P_qte_line_Rec.quote_line_id: '||P_qte_line_Rec.quote_line_id);
9328           aso_debug_pub.add('Delete_Quote_Line: P_Update_Header_Flag: '||P_Update_Header_Flag);
9329 	 end if;
9330 
9331       -- Standard Start of API savepoint
9332       SAVEPOINT DELETE_quote_line_PVT;
9333 
9334       -- Standard call to check for call compatibility.
9335       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
9336                          	             p_api_version_number,
9337                                            l_api_name,
9338                                            G_PKG_NAME)
9339       THEN
9340           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9341       END IF;
9342 
9343 
9344       -- Initialize message list if p_init_msg_list is set to TRUE.
9345       IF FND_API.to_Boolean( p_init_msg_list ) THEN
9346           FND_MSG_PUB.initialize;
9347       END IF;
9348 
9349 
9350       -- Initialize API return status to SUCCESS
9351       x_return_status := FND_API.G_RET_STS_SUCCESS;
9352 
9353       --
9354       -- Api body
9355       --
9356       -- ******************************************************************
9357       -- Validate Environment
9358       -- ******************************************************************
9359       IF FND_GLOBAL.User_Id IS NULL THEN
9360           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9361               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
9362               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
9363               FND_MSG_PUB.ADD;
9364           END IF;
9365           RAISE FND_API.G_EXC_ERROR;
9366       END IF;
9367 
9368       open  c_pricing_line_type_indicator;
9369       fetch c_pricing_line_type_indicator into l_pricing_line_type_indicator;
9370       close c_pricing_line_type_indicator;
9371 
9372       IF aso_debug_pub.g_debug_flag = 'Y' THEN
9373 		aso_debug_pub.add('l_pricing_line_type_indicator: '|| l_pricing_line_type_indicator);
9374 	 end if;
9375 
9376      IF (p_update_header_flag = 'Y') THEN
9377 
9378       Open C_Get_quote( p_qte_line_rec.QUOTE_LINE_ID);
9379       Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id,
9380                              l_quote_number, l_hd_discount_percent,
9381                              l_quote_header_id;
9382       If ( C_Get_quote%NOTFOUND) Then
9383         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9384                FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
9385                FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
9386                FND_MSG_PUB.Add;
9387         END IF;
9388         raise FND_API.G_EXC_ERROR;
9389       END IF;   -- update header flag
9390       Close C_Get_quote;
9391 
9392 
9393       If (l_last_update_date is NULL or
9394           l_last_update_date = FND_API.G_MISS_Date ) Then
9395           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9396               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
9397               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
9398               FND_MSG_PUB.ADD;
9399           END IF;
9400           raise FND_API.G_EXC_ERROR;
9401       End if;
9402 
9403 
9404       -- Check Whether record has been changed by someone else
9405       If l_last_update_date <> p_control_rec.last_update_date Then
9406           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9407               FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
9408               FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
9409               FND_MSG_PUB.ADD;
9410           END IF;
9411           raise FND_API.G_EXC_ERROR;
9412       End if;
9413 
9414       Open c_qte_status (l_qte_status_id);
9415       Fetch C_qte_status into l_update_allowed, l_auto_version;
9416       Close c_qte_status;
9417 
9418 
9419       IF p_control_rec.auto_version_flag = FND_API.G_TRUE  AND  NVL(l_auto_version,'Y') = 'Y' THEN
9420 
9421 	     OPEN C_Qte_Version(l_quote_number);
9422 	     FETCH C_Qte_Version into l_quote_version;
9423 	     l_quote_version := nvl(l_quote_version, 0) + 1;
9424 	     CLOSE C_Qte_Version;
9425 
9426       ELSE
9427 
9428           l_auto_version := 'N';
9429 
9430       END IF;
9431 
9432 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9433 		aso_debug_pub.add('Delete_Quote_Line: l_auto_version: '|| l_auto_version);
9434 	 end if;
9435 
9436 
9437       IF l_auto_version = 'Y' THEN
9438 
9439 	       l_old_header_rec := aso_utility_pvt.Query_Header_Row(p_qte_line_rec.QUOTE_HEADER_ID);
9440 
9441             IF l_quote_header_id IS NULL OR l_quote_header_id = FND_API.G_MISS_NUM THEN
9442 
9443                 open c_get_quote( p_qte_line_rec.quote_line_id);
9444                 fetch c_get_quote into l_last_update_date, l_qte_status_id,
9445                              l_quote_number, l_hd_discount_percent,
9446                              l_quote_header_id;
9447                 close c_get_quote;
9448 
9449 
9450             END IF; -- l_quote_header is null
9451 
9452             l_copy_quote_control_rec.new_version     :=  fnd_api.g_true;
9453             l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
9454 
9455             aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
9456                                            P_Init_Msg_List           =>  FND_API.G_FALSE,
9457                                            P_Commit                  =>  FND_API.G_FALSE,
9458                                            P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
9459                                            P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
9460                                            X_Qte_Header_Id           =>  x_quote_header_id,
9461                                            X_Qte_Number              =>  l_qte_nbr,
9462                                            X_Return_Status           =>  l_return_status,
9463                                            X_Msg_Count               =>  x_msg_count,
9464                                            X_Msg_Data                =>  x_msg_data
9465                                           );
9466 
9467             if aso_debug_pub.g_debug_flag = 'Y' THEN
9468                 aso_debug_pub.add('Delete_Quote_Line: After call to aso_copy_quote_pvt.copy_quote');
9469                 aso_debug_pub.add('After copy_quote l_return_status:   ' || l_return_status);
9470                 aso_debug_pub.add('After copy_quote x_quote_header_id: ' || x_quote_header_id);
9471                 aso_debug_pub.add('After copy_quote l_qte_nbr:         ' || l_qte_nbr);
9472             end if;
9473 
9474             update aso_quote_headers_all
9475             set quote_version      =  l_quote_version + 1,
9476                 max_version_flag   =  'Y',
9477                 last_update_date   =  sysdate,
9478                 last_updated_by    =  fnd_global.user_id,
9479                 last_update_login  =  fnd_global.conc_login_id
9480             where quote_header_id = p_qte_line_rec.quote_header_id;
9481 
9482             update aso_quote_headers_all
9483             set max_version_flag   =  'N',
9484                 quote_version      =  l_old_header_rec.quote_version,
9485                 last_update_date   =  sysdate,
9486                 last_updated_by    =  fnd_global.user_id,
9487                 last_update_login  =  fnd_global.conc_login_id
9488             where quote_header_id = x_quote_header_id;
9489 
9490             update aso_quote_headers_all
9491             set quote_version      =  l_quote_version,
9492                 last_update_date   =  sysdate,
9493                 last_updated_by    =  fnd_global.user_id,
9494                 last_update_login  =  fnd_global.conc_login_id
9495             where quote_header_id = p_qte_line_rec.quote_header_id;
9496 
9497       END IF;
9498 
9499 
9500     END IF;
9501 
9502     --Code for PRG line deletion 05/01/2003
9503 
9504     if nvl(l_pricing_line_type_indicator,'XXX') = 'F' then
9505 
9506 	   begin
9507 
9508              --Get the free lines and update it
9509 
9510              select rel.rltd_price_adj_id
9511              BULK COLLECT INTO
9512              adj_id_tbl
9513              from aso_price_adj_relationships rel,
9514                   aso_price_adjustments adj
9515              where rel.price_adjustment_id = adj.price_adjustment_id
9516              and adj.modifier_line_type_code = G_PROMO_GOODS_DISCOUNT
9517              and rel.price_adjustment_id in (select a.price_adjustment_id
9518                                              from aso_price_adj_relationships a,
9519                                                   aso_price_adjustments b
9520                                              where a.rltd_price_adj_id = b.price_adjustment_id
9521                                              and b.quote_line_id = p_qte_line_rec.quote_line_id);
9522 
9523              if aso_debug_pub.g_debug_flag = 'Y' THEN
9524                 aso_debug_pub.add('No. of free adjustment lines selected is sql%rowcount: '||sql%rowcount);
9525              end if;
9526 
9527              if aso_debug_pub.g_debug_flag = 'Y' THEN
9528 
9529                  if adj_id_tbl.count > 0 then
9530 
9531                      for i in adj_id_tbl.FIRST..adj_id_tbl.LAST loop
9532                           aso_debug_pub.add('adj_id_tbl('||i||'): ' || adj_id_tbl(i));
9533                      end loop;
9534 
9535                  end if;
9536 
9537              end if;
9538 
9539              if adj_id_tbl.count > 0 then
9540 
9541                  FORALL i IN adj_id_tbl.FIRST..adj_id_tbl.LAST
9542 
9543                     UPDATE aso_price_adjustments
9544                     SET updated_flag = 'Y'
9545                     WHERE price_adjustment_id = adj_id_tbl(i)
9546                     AND modifier_line_type_code = G_DISCOUNT;
9547 
9548                     if aso_debug_pub.g_debug_flag = 'Y' THEN
9549                        aso_debug_pub.add('No of adjustment lines updated is sql%rowcount: '||sql%rowcount);
9550                     end if;
9551 
9552              end if;
9553 
9554              --Get the PRG lines and update it
9555 
9556      	   select a.price_adjustment_id
9557              BULK COLLECT INTO
9558              adj_id_tbl
9559              from aso_price_adj_relationships a, aso_price_adjustments b
9560              where a.rltd_price_adj_id = b.price_adjustment_id
9561              and b.quote_line_id = p_qte_line_rec.quote_line_id;
9562 
9563              if aso_debug_pub.g_debug_flag = 'Y' THEN
9564                  aso_debug_pub.add('No. of PRG adjustment lines selected is sql%rowcount: '||sql%rowcount);
9565              end if;
9566 
9567              if aso_debug_pub.g_debug_flag = 'Y' THEN
9568 
9569                  if adj_id_tbl.count > 0 then
9570 
9571                      for i in adj_id_tbl.FIRST..adj_id_tbl.LAST loop
9572                           aso_debug_pub.add('adj_id_tbl('||i||'): ' || adj_id_tbl(i));
9573                      end loop;
9574 
9575                  end if;
9576 
9577              end if;
9578 
9579              if adj_id_tbl.count> 0 then
9580 
9581                 FORALL i IN adj_id_tbl.FIRST..adj_id_tbl.LAST
9582 
9583                    UPDATE aso_price_adjustments
9584                    SET updated_flag = 'Y'
9585                    WHERE price_adjustment_id = adj_id_tbl(i)
9586                    AND modifier_line_type_code = G_PROMO_GOODS_DISCOUNT;
9587 
9588                 if aso_debug_pub.g_debug_flag = 'Y' THEN
9589                     aso_debug_pub.add('No of PRG adjustment lines updated is sql%rowcount: '||sql%rowcount);
9590                 end if;
9591 
9592              end if;
9593 
9594              exception
9595 
9596                  when others then
9597 
9598                     if aso_debug_pub.g_debug_flag = 'Y' THEN
9599                         aso_debug_pub.add('Delete_Quote_Line: Updation of updated_flag column in aso_price_adjustments table failed.');
9600                     end if;
9601 
9602         end;
9603 
9604     end if;
9605 
9606     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9607          aso_debug_pub.add('After updation of updated_flag column in aso_price_adjustments table.', 1, 'Y');
9608     end if;
9609 
9610     --Changes for deleting PRG lines
9611     open  c_prg_lines;
9612     fetch c_prg_lines into l_modifier_line_type_code;
9613 
9614     if c_prg_lines%found then
9615 
9616            IF aso_debug_pub.g_debug_flag = 'Y' THEN
9617               aso_debug_pub.add('before deleting the PRG lines', 1, 'Y');
9618             end if;
9619 
9620         for row in c_free_lines loop
9621 
9622             l_qte_line_rec               := aso_quote_pub.g_miss_qte_line_rec;
9623             l_qte_line_rec.quote_line_id := row.quote_line_id;
9624 
9625 		  aso_quote_lines_pvt.delete_quote_line(
9626  			         P_Api_Version_Number	=> 1.0,
9627  			         p_control_rec		=> p_control_rec,
9628  			         p_update_header_flag	=> fnd_api.g_false,
9629  			         P_qte_Line_Rec		=> l_qte_line_rec,
9630  			         X_Return_Status 	=> x_return_status,
9631  			         X_Msg_Count		=> x_msg_count,
9632  			         X_Msg_Data		     => x_msg_data);
9633 
9634             if x_return_status <> fnd_api.g_ret_sts_success then
9635                  raise fnd_api.g_exc_error;
9636             end if;
9637 
9638         end loop;
9639 
9640     end if;
9641 
9642     close c_prg_lines;
9643 
9644     -- Invoke table handler(ASO_QUOTE_HEADERS_PKG.Delete_Row)
9645     -- these tables may or may not have any rows
9646     -- ideally exception should be handled by the table handler
9647 
9648 
9649     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9650          aso_debug_pub.add('before deleting the quote line attributes.', 1, 'Y');
9651     end if;
9652 
9653 -- delete quote line attributes
9654     BEGIN
9655      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Delete_Row(
9656          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9657     EXCEPTION
9658     WHEN NO_DATA_FOUND THEN
9659        null;
9660     END;
9661 
9662 -- delete price attributes
9663     BEGIN
9664      ASO_PRICE_ATTRIBUTES_PKG.Delete_Row(
9665          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9666       EXCEPTION
9667     WHEN NO_DATA_FOUND THEN
9668        null;
9669     END;
9670 
9671     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9672          aso_debug_pub.add('before deleting the quote line relationships.', 1, 'Y');
9673     end if;
9674 
9675 -- delete line relationships
9676 
9677   l_line_rltship_rec.quote_line_id :=  p_qte_line_rec.quote_line_id;
9678     ASO_LINE_RLTSHIP_PVT.Delete_line_rltship(
9679       P_Api_Version_Number    => 1.0,
9680       p_control_rec          => p_control_rec,
9681       P_LINE_RLTSHIP_Rec      => l_line_rltship_rec,
9682       X_Return_Status         => x_return_status,
9683       X_Msg_Count             => x_msg_count,
9684       X_Msg_Data              => x_msg_data);
9685 
9686      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9687            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9688 	     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9689              FND_MESSAGE.Set_Token('OBJECT','LINE_RLTSHIP',FALSE);
9690 	     FND_MSG_PUB.ADD;
9691 	    END IF;
9692             RAISE FND_API.G_EXC_ERROR;
9693      END IF;
9694 
9695 
9696 -- delete price adjustment relationships
9697 
9698   l_price_adj_rltship_rec.quote_line_id := p_qte_line_rec.quote_line_id;
9699      ASO_PRICE_ADJ_RLTSHIP_PVT.Delete_Price_Adj_Rltship(
9700          P_Api_Version_Number    => 1.0,
9701          P_PRICE_ADJ_RLTSHIP_Rec => l_price_adj_rltship_rec,
9702          X_Return_Status         => x_return_status,
9703          X_Msg_Count             => x_msg_count,
9704          X_Msg_Data              => x_msg_data);
9705 
9706          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9707            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9708 	   FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9709            FND_MESSAGE.Set_Token('OBJECT','PRICE_ADJ_RLTSHIP',FALSE);
9710 	     FND_MSG_PUB.ADD;
9711 	    END IF;
9712             RAISE FND_API.G_EXC_ERROR;
9713         END IF;
9714 
9715     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9716          aso_debug_pub.add('before deleting the quote line price adjustments.', 1, 'Y');
9717     end if;
9718 
9719 -- delete price adjustments
9720 -- this should once again delete price adj relationships
9721     BEGIN
9722        ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
9723          p_LINE_ID => p_qte_line_rec.quote_line_id,
9724          p_TYPE_CODE => 'QUOTE_LINE');
9725     EXCEPTION
9726     WHEN NO_DATA_FOUND THEN
9727        null;
9728     END;
9729 
9730 -- delete payments
9731     BEGIN
9732 
9733      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9734         aso_debug_pub.add('Delete_Quote_Line: Before  call to delete_payment_row ', 1, 'Y');
9735      END IF;
9736 
9737      l_payment_tbl := aso_utility_pvt.Query_Payment_Rows(p_qte_line_rec.quote_header_id,p_qte_line_rec.quote_line_id);
9738 
9739      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9740         aso_debug_pub.add('Delete_Quote_Line: l_payment_tbl.count:  '|| l_payment_tbl.count, 1, 'Y');
9741      END IF;
9742 
9743        if l_payment_tbl.count > 0 then
9744 
9745               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9746                   aso_debug_pub.add('Delete_Quote_Line: Inside if for payment tbl count > 0 ', 1, 'Y');
9747               END IF;
9748 
9749 
9750           if l_payment_tbl(1).trxn_extension_id is not null then
9751 
9752               l_payment_rec := l_payment_tbl(1);
9753 
9754               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9755                   aso_debug_pub.add('Delete_Quote_Line: Before call to delete_payment_row', 1, 'Y');
9756               END IF;
9757 
9758               aso_payment_int.delete_payment_row(p_payment_rec   => l_payment_rec  ,
9759                                                  x_return_status => x_return_status,
9760                                                  x_msg_count     => x_msg_count,
9761                                                  x_msg_data      => x_msg_data);
9762 
9763               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9764                   aso_debug_pub.add('Delete_Quote_Line: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
9765               END IF;
9766             if x_return_status <> fnd_api.g_ret_sts_success then
9767               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9768                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9769               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
9770                  RAISE FND_API.G_EXC_ERROR;
9771               ELSE
9772                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9773               END IF;
9774             end if;
9775 
9776           else
9777 
9778               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9779                   aso_debug_pub.add('Delete_Quote_Line: Before calling table handler to delete payment row', 1, 'Y');
9780               END IF;
9781 
9782               aso_payments_pkg.Delete_Row(p_payment_id => l_payment_tbl(1).payment_id);
9783            end if;
9784 
9785        end if;
9786 
9787      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9788         aso_debug_pub.add('Delete_Quote_Line: After deleting the payment row', 1, 'Y');
9789      END IF;
9790 
9791     EXCEPTION
9792     WHEN NO_DATA_FOUND THEN
9793        null;
9794     END;
9795 
9796 -- delete freight
9797     BEGIN
9798        ASO_FREIGHT_CHARGES_PKG.delete_Row(
9799             p_QUOTE_LINE_ID  => p_qte_line_rec.quote_line_id);
9800     EXCEPTION
9801     WHEN NO_DATA_FOUND THEN
9802        null;
9803     END;
9804 
9805 -- delete tax details
9806     BEGIN
9807        ASO_TAX_DETAILS_PKG.Delete_Row(
9808             p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9809     EXCEPTION
9810     WHEN NO_DATA_FOUND THEN
9811        null;
9812     END;
9813 
9814      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9815         aso_debug_pub.add('Delete_Quote_Line: Before deleting the sales credits', 1, 'Y');
9816      END IF;
9817 
9818 -- delete salescredits
9819      ASO_SALES_CREDITS_PKG.Delete_row(
9820              p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9821 
9822      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9823         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote parties', 1, 'Y');
9824      END IF;
9825 
9826 -- delete quote parties
9827      ASO_QUOTE_PARTIES_PKG.Delete_row(
9828              p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9829 
9830 -- delete configurations - supported only at model levels
9831    OPEN C_config;
9832    FETCH C_config into l_item_type, l_config_id, l_rev_num, l_ref_type_code;
9833    IF (C_config%NOTFOUND) THEN
9834       null;
9835    END IF;
9836    CLOSE C_config;
9837 
9838    IF l_item_type = 'MDL' THEN
9839 
9840 	IF l_config_id is not NULL THEN
9841 
9842        ASO_CFG_INT.DELETE_CONFIGURATION(
9843  		P_API_VERSION_NUMBER	=> 1.0,
9844  		P_INIT_MSG_LIST		=> FND_API.G_FALSE,
9845  		P_CONFIG_HDR_ID		=> l_config_id,
9846  		P_CONFIG_REV_NBR	=> l_rev_num,
9847  		X_RETURN_STATUS		=> x_return_status,
9848  		X_MSG_COUNT		=> x_msg_count,
9849  		X_MSG_DATA		=> x_msg_data);
9850 
9851        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9852            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9853 	         FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9854               FND_MESSAGE.Set_Token('OBJECT', 'CONFIGURATION', FALSE);
9855 	         FND_MSG_PUB.ADD;
9856 	      END IF;
9857               RAISE FND_API.G_EXC_ERROR;
9858        END IF;
9859 
9860      ELSIF l_ref_type_code = 'TOP_MODEL' THEN
9861 
9862 	    FOR Cur_Children IN C_Children(p_qte_line_rec.quote_line_id) LOOP
9863 
9864             l_qte_line_rec.quote_line_id := Cur_Children.quote_line_id;
9865 
9866 		  ASO_QUOTE_LINES_PVT.Delete_Quote_Line(
9867  			         P_Api_Version_Number	=> 1.0,
9868  			         p_control_rec		=> p_control_rec,
9869  			         p_update_header_flag	=> p_update_header_flag,
9870  			         P_qte_Line_Rec		=> l_qte_line_rec,
9871  			         X_Return_Status 	=> x_return_status,
9872  			         X_Msg_Count		=> x_msg_count,
9873  			         X_Msg_Data		     => x_msg_data);
9874             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9875                  RAISE FND_API.G_EXC_ERROR;
9876             END IF;
9877 
9878          END LOOP;
9879 
9880     END IF;  -- config
9881 
9882 
9883    END IF;  -- 'MDL'
9884 
9885      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9886         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote line details', 1, 'Y');
9887         aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
9888      END IF;
9889 
9890 -- delete quote line details
9891     BEGIN
9892      ASO_QUOTE_LINE_DETAILS_PKG.Delete_Row(
9893          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9894 
9895     EXCEPTION
9896 
9897        WHEN NO_DATA_FOUND THEN
9898           null;
9899     END;
9900 
9901 
9902 -- shipment should exist
9903     --  OPEN C_Shipment;
9904       FOR i in C_Shipment LOOP
9905 
9906         l_shipment_rec.shipment_id := i.shipment_id;
9907         l_shipment_rec.reservation_id := i.reservation_id;
9908 
9909 -- hyang csi change 1935614
9910         if not (csi_utility_grp.ib_active()) then
9911 
9912           FOR j in C_inst_details(l_shipment_rec.shipment_id) LOOP
9913 
9914             l_line_inst_dtl_id := j.line_inst_detail_id;
9915 
9916             null;
9917 
9918           END LOOP;
9919 
9920         else
9921 
9922         -- new ib module
9923           for j in C_csi_details LOOP
9924 
9925             l_line_inst_dtl_id := j.transaction_line_id;
9926 
9927             ASO_INSTBASE_INT.Delete_Installation_Detail(
9928               p_api_version_number  => 1.0,
9929                   p_init_msg_list       => FND_API.G_FALSE,
9930                   p_commit              => FND_API.G_FALSE,
9931                   x_return_status       => x_return_status,
9932                   x_msg_count           => x_msg_count,
9933                   x_msg_data            => x_msg_data,
9934                   p_line_inst_dtl_id    => l_line_inst_dtl_id
9935             );
9936 
9937             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9938               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9939                     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9940                 FND_MESSAGE.Set_Token('OBJECT', 'INSTALLATION DETAILS');
9941                     FND_MSG_PUB.ADD;
9942                   END IF;
9943               RAISE FND_API.G_EXC_ERROR;
9944             END IF;
9945           END LOOP;
9946         END IF;
9947 
9948 
9949         ASO_SHIPMENT_PVT.Delete_shipment(
9950           P_Api_Version_Number    => 1.0,
9951           P_SHIPMENT_Rec          => l_shipment_rec,
9952           X_Return_Status         => x_return_status,
9953           X_Msg_Count             => x_msg_count,
9954           X_Msg_Data              => x_msg_data);
9955 
9956          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9957            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9958 		     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9959                FND_MESSAGE.Set_Token('OBJECT', 'LINE_SHIPMENTS', FALSE);
9960 	    		FND_MSG_PUB.ADD;
9961 	      END IF;
9962            RAISE FND_API.G_EXC_ERROR;
9963          END IF;
9964 
9965       END LOOP;
9966 
9967 
9968      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9969         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote line', 1, 'Y');
9970         aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
9971      END IF;
9972 
9973      BEGIN
9974       ASO_QUOTE_LINES_PKG.Delete_Row( p_quote_line_id  => p_qte_line_rec.quote_line_id);
9975      EXCEPTION
9976 	WHEN no_data_found then
9977 	 null;
9978 	END;
9979 
9980 
9981      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9982         aso_debug_pub.add('Delete_Quote_Line: After deleting the quote line', 1, 'Y');
9983      END IF;
9984 
9985       IF p_update_header_flag = 'Y' THEN
9986 
9987       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
9988       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
9989       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
9990       -- IF calculate_tax_flag = 'N', not summation on line level tax,
9991       -- just take the value of p_qte_rec.total_tax as the total_tax
9992       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
9993       -- just take the value of p_qte_rec.total_freight_charge
9994       -- how can i get the calc_tax_flag and calc_freight_charge_flag ??
9995 
9996 
9997       ASO_QUOTE_HEADERS_PVT.Update_Quote_Total(
9998                      P_Qte_Header_id             => l_quote_header_id,
9999                      P_calculate_tax             => p_control_rec.CALCULATE_TAX_FLAG,
10000                      P_calculate_freight_charge  => p_control_rec.calculate_freight_charge_flag,
10001                      p_control_rec               => p_control_rec,
10002                      X_Return_Status             => l_return_status,
10003                      X_Msg_Count                 => x_msg_count,
10004                      X_Msg_Data                  => x_msg_data);
10005 
10006       IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
10007 
10008           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10009  	         FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
10010 	         FND_MSG_PUB.ADD;
10011  	     END IF;
10012 
10013       END IF;
10014 
10015 
10016       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
10017            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10018            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10019       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
10020            x_return_status := FND_API.G_RET_STS_ERROR;
10021       END IF;
10022 
10023 
10024     END IF;
10025 
10026 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10027 		aso_debug_pub.add('Delete_Quote_Line: Before call to Delete_OTA_Line.');
10028 		aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
10029 	end if;
10030 
10031      ASO_EDUCATION_INT.Delete_OTA_Line(
10032           P_Init_Msg_List     => FND_API.G_FALSE,
10033           P_Commit            => FND_API.G_FALSE,
10034           P_Qte_Line_Id       => p_qte_line_rec.quote_line_id,
10035           X_Return_Status     => l_return_status,
10036           X_Msg_Count         => x_msg_count,
10037           X_Msg_Data          => x_msg_data);
10038 
10039      IF aso_debug_pub.g_debug_flag = 'Y' THEN
10040           aso_debug_pub.add('Delete_Quote_Line: After call to Delete_OTA_Line.');
10041           aso_debug_pub.add('Delete_Quote_Line: l_return_status: '|| l_return_status);
10042      end if;
10043 
10044      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10045           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10046           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10047      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
10048           x_return_status := FND_API.G_RET_STS_ERROR;
10049           RAISE FND_API.G_EXC_ERROR;
10050      END IF;
10051 
10052         -- Change START
10053 	-- Release 12 TAP Changes
10054 	-- Girish Sachdeva 8/30/2005
10055 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
10056 
10057 	IF ((p_qte_line_rec.quote_header_id is not null) and (p_qte_line_rec.quote_header_id <> FND_API.G_MISS_NUM)) THEN
10058 
10059 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10060 			aso_debug_pub.add('ASO_QUOTE_LINES_PVT.delete_quote_line : Before calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, Quote Header ID :' || p_qte_line_rec.quote_header_id, 1, 'Y');
10061 		END IF;
10062 
10063           OPEN get_qte_nbr(p_qte_line_rec.quote_header_id);
10064 		FETCH get_qte_nbr INTO l_qte_number;
10065 		CLOSE get_qte_nbr;
10066 
10067 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10068 			aso_debug_pub.add('ASO_QUOTE_LINES_PVT.delete_quote_line : Before calling ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES, quote number : ' || l_qte_number, 1, 'Y');
10069 		END IF;
10070 
10071 
10072 		-- Call to insert record in ASO_CHANGED_QUOTES
10073 		ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_qte_number);
10074 
10075 	END IF ;
10076 
10077 	-- Change END
10078 
10079      --
10080      -- End of API body
10081      --
10082 
10083      -- Standard check for p_commit
10084      IF FND_API.to_Boolean( p_commit ) THEN
10085           COMMIT WORK;
10086      END IF;
10087 
10088      -- Standard call to get message count and if count is 1, get message info.
10089      FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
10090                                  p_data  => x_msg_data );
10091 
10092 
10093      EXCEPTION
10094 
10095 	  WHEN FND_API.G_EXC_ERROR THEN
10096 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10097 		   P_API_NAME => L_API_NAME
10098 		  ,P_PKG_NAME => G_PKG_NAME
10099 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
10100 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10101 		  ,P_SQLCODE => SQLCODE
10102 		  ,P_SQLERRM => SQLERRM
10103 		  ,X_MSG_COUNT => X_MSG_COUNT
10104 		  ,X_MSG_DATA => X_MSG_DATA
10105 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10106 
10107 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10108 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10109 		   P_API_NAME => L_API_NAME
10110 		  ,P_PKG_NAME => G_PKG_NAME
10111 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10112 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10113 		  ,P_SQLCODE => SQLCODE
10114 		  ,P_SQLERRM => SQLERRM
10115 		  ,X_MSG_COUNT => X_MSG_COUNT
10116 		  ,X_MSG_DATA => X_MSG_DATA
10117 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10118 
10119 	  WHEN OTHERS THEN
10120 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10121 		   P_API_NAME => L_API_NAME
10122 		  ,P_PKG_NAME => G_PKG_NAME
10123 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
10124 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10125 		  ,P_SQLCODE => SQLCODE
10126 		  ,P_SQLERRM => SQLERRM
10127 		  ,X_MSG_COUNT => X_MSG_COUNT
10128 		  ,X_MSG_DATA => X_MSG_DATA
10129 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10130 
10131 END;
10132 
10133 
10134 
10135 
10136 --   *******************************************************
10137 --    Start of Comments
10138 --   *******************************************************
10139 --   API Name:  Get_Quote_Lines
10140 --   Type    :  Public
10141 --   Pre-Req :
10142 --   Parameters:
10143 --   IN
10144 --       p_api_version_number      IN   NUMBER     Required
10145 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
10146 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
10147 --       P_quote_id                IN   NUMBER     Required
10148 --       p_rec_requested           IN   NUMBER     Optional  Default = 30
10149 --       p_start_rec_ptr           IN   NUMBER     Optional  Default = 1
10150 --
10151 --       Return Total Records Count Flag. This flag controls whether the total record count
10152 --       and total record amount is returned.
10153 --
10154 --       p_return_tot_count        IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
10155 --   Hint: User defined record type
10156 --       p_order_by_tbl            IN   AS_UTILITY_PUB.UTIL_ORDER_BY_TBL_TYPE;
10157 --
10158 --   OUT:
10159 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
10160 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
10161 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
10162 --       X_qte_line_Tbl     OUT NOCOPY /* file.sql.39 change */  qte_line_Tbl_Type
10163 --       X_Payment_Tbl       OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type
10164 --       X_Price_Adj_Tbl     OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type
10165 --       X_Qte_Line_Dtl_Tbl  OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type
10166 --       X_Shipment_Tbl      OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type
10167 --       X_Tax_Details_Tbl   OUT NOCOPY /* file.sql.39 change */  Tax_Details_Tbl_Type
10168 --       X_Freight_Charges_Tbl OUT NOCOPY /* file.sql.39 change */ Freight_Charges_Tbl_Type
10169 --       X_Line_Relationship_Tbl OUT NOCOPY /* file.sql.39 change */ Line_Relationship_Tbl_Type
10170 --       X_Related_Object_Tbl OUT NOCOPY /* file.sql.39 change */   Related_Object_Tbl_Type
10171 --       X_Price_Attributes_Tbl   OUT NOCOPY /* file.sql.39 change */    Price_Attributes_Tbl_Type
10172 --       X_Price_Adj_Relationship_Tbl OUT NOCOPY /* file.sql.39 change */ Price_Adj_relationship_Tbl_Type
10173 --       x_returned_rec_count      OUT NOCOPY /* file.sql.39 change */   NUMBER
10174 --       x_next_rec_ptr            OUT NOCOPY /* file.sql.39 change */   NUMBER
10175 --       x_tot_rec_count           OUT NOCOPY /* file.sql.39 change */   NUMBER
10176 --  other optional OUT NOCOPY /* file.sql.39 change */ parameters
10177 --       x_tot_rec_amount          OUT NOCOPY /* file.sql.39 change */   NUMBER
10178 --   Version : Current version 2.0
10179 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
10180 --         and basic operation, developer must manually add parameters and business logic as necessary.
10181 --
10182 --   End of Comments
10183 --
10184 PROCEDURE Get_Quote_Line(
10185     P_Api_Version_Number         IN   NUMBER,
10186     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
10187     p_rec_requested              IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
10188     p_start_rec_prt              IN   NUMBER  := 1,
10189     p_return_tot_count           IN   NUMBER  := FND_API.G_FALSE,
10190   -- Hint: user defined record type
10191      p_order_by_rec               IN   ASO_QUOTE_PUB.qte_line_sort_rec_type,
10192     x_return_status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
10193     x_msg_count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
10194     x_msg_data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
10195     x_returned_rec_count         OUT NOCOPY /* file.sql.39 change */  NUMBER,
10196     x_next_rec_ptr               OUT NOCOPY /* file.sql.39 change */  NUMBER,
10197     x_tot_rec_count              OUT NOCOPY /* file.sql.39 change */  NUMBER,
10198     P_Qte_Line_Rec     		 IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type  := ASO_QUOTE_PUB.G_MISS_qte_line_REC,
10199     P_Control_REC      		 IN   ASO_QUOTE_PUB.Control_Rec_Type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
10200     X_Qte_Line_Rec     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
10201     X_Payment_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
10202     X_Price_Adj_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
10203     X_Qte_Line_Dtl_rec OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_rec_Type,
10204     X_Shipment_Tbl     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
10205     X_Tax_Detail_Tbl   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
10206     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
10207     X_Line_Rltship_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
10208     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type ,
10209     X_Price_Adj_rltship_Tbl OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
10210     X_Line_Attribs_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type
10211     )
10212 IS
10213 BEGIN
10214 null;
10215 END;
10216 
10217 Procedure service_item_qty_update
10218 (p_qte_line_rec  IN ASO_QUOTE_PUB.QTE_LINE_REC_TYPE,
10219  p_service_item_flag  IN VARCHAR2,
10220  x_return_status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
10221  )IS
10222 
10223 CURSOR C_ord_qty(ord_line_id NUMBER) IS
10224 SELECT  ordered_quantity
10225 FROM  oe_order_lines_All
10226 WHERE  line_id = ord_line_id;
10227 
10228 CURSOR C_cs_qty(p_instance_id NUMBER) IS
10229 SELECT  quantity
10230 FROM CSI_ITEM_INSTANCES
10231 WHERE  instance_id = p_instance_id;
10232 
10233 CURSOR C_quantity(p_quote_line_id NUMBER) IS
10234 SELECT  quantity
10235 FROM  aso_quote_lines_all
10236 WHERE  quote_line_id = p_quote_line_id;
10237 
10238 l_serviceable_product_flag VARCHAR2(1);
10239 l_qte_line_rec ASO_QUOTE_PUB.QTE_LINE_REC_TYPE;
10240 l_org_id NUMBER;
10241 l_inventory_item_id NUMBER;
10242 l_organization_id NUMBER;
10243 l_qte_line_detail_tbl ASO_QUOTE_PUB.QTE_LINE_DTL_TBL_TYPE;
10244 l_quantity NUMBER;
10245 l_update_flag VARCHAR2(1) := FND_API.G_FALSE;
10246 
10247 Begin
10248 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10249   aso_debug_pub.add('Procedure Service_item_qty_update Starts.', 1, 'Y');
10250 end if;
10251   x_return_status := FND_API.G_RET_STS_SUCCESS;
10252 
10253   IF p_service_item_flag = FND_API.G_FALSE THEN
10254 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10255     		aso_debug_pub.add('Service_item_qty_update: Inside IF condition p_service_item_flag = FND_API.G_FALSE', 1, 'N');
10256 	end if;
10257 
10258     l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(p_qte_line_rec.quote_line_id);
10259     begin
10260         UPDATE aso_quote_lines_all
10261         set quantity           =  l_qte_line_rec.quantity,
10262             last_update_date   =  sysdate,
10263             last_updated_by    =  fnd_global.user_id,
10264             last_update_login  =  fnd_global.conc_login_id
10265         where quote_line_id IN
10266         ( select quote_line_id from aso_quote_line_details
10267           where service_ref_type_code = 'QUOTE' and service_ref_line_id = l_qte_line_rec.quote_line_id );
10268 
10269         EXCEPTION
10270             WHEN OTHERS THEN
10271              x_return_status := FND_API.G_RET_STS_ERROR;
10272 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
10273              		aso_debug_pub.add('Service_item_qty_update:Exception1',1,'N');
10274 			end if;
10275     end;
10276   ELSE
10277 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10278     		aso_debug_pub.add('Service_item_qty_update:ELSE condition of p_service_item_flag = FND_API.G_FALSE', 1, 'N');
10279 	end if;
10280     l_qte_line_detail_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(p_qte_line_rec.quote_line_id);
10281 
10282 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10283     		aso_debug_pub.add('Service_item_qty_update: ASO_UTILITY_PVT.Query_Line_Dtl_Rows', 1, 'N');
10284 	end if;
10285 
10286     FOR i IN 1..l_qte_line_detail_tbl.count LOOP
10287       IF l_qte_line_detail_tbl(i).service_ref_type_code = 'QUOTE' THEN
10288          OPEN C_quantity(l_qte_line_detail_tbl(i).service_ref_line_id);
10289          FETCH C_quantity INTO l_quantity;
10290 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10291          aso_debug_pub.add('Service_item_qty_update: Cursor C_quantity: l_quantity: '||l_quantity, 1, 'N');
10292 	end if;
10293          IF C_quantity%NOTFOUND THEN
10294 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10295              	aso_debug_pub.add('Service_item_qty_update: Inside cursor C_quantity%NOTFOUND ', 1, 'N');
10296 		end if;
10297              x_return_status := FND_API.G_RET_STS_ERROR;
10298              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10299   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10300   		      FND_MESSAGE.Set_Token('CODE', 'QUOTE', FALSE);
10301                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10302   		      FND_MSG_PUB.ADD;
10303   	        END IF;
10304 	    ELSE
10305 		   l_update_flag := FND_API.G_TRUE;
10306    	    END IF;
10307          CLOSE C_quantity;
10308       ELSIF l_qte_line_detail_tbl(i).service_ref_type_code = 'ORDER' THEN
10309          OPEN C_ord_qty(l_qte_line_detail_tbl(i).service_ref_line_id);
10310          FETCH C_ord_qty INTO l_quantity;
10311 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10312          aso_debug_pub.add('Service_item_qty_update: Cursor C_ord_qty: l_quantity: '||l_quantity, 1, 'N');
10313 	end if;
10314          IF C_ord_qty%NOTFOUND THEN
10315 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10316              aso_debug_pub.add('Service_item_qty_update: Inside cursor C_ord_qty%NOTFOUND condition.', 1, 'N');
10317 	end if;
10318              x_return_status := FND_API.G_RET_STS_ERROR;
10319              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10320   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10321   		      FND_MESSAGE.Set_Token('CODE', 'ORDER', FALSE);
10322                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10323   		      FND_MSG_PUB.ADD;
10324   	       END IF;
10325          ELSE
10326 			 l_update_flag := FND_API.G_TRUE;
10327          END IF;
10328          CLOSE C_ord_qty;
10329       ELSIF l_qte_line_detail_tbl(i).service_ref_type_code = 'CUSTOMER_PRODUCT' THEN
10330          OPEN C_cs_qty(l_qte_line_detail_tbl(i).service_ref_line_id);
10331          FETCH C_cs_qty INTO l_quantity;
10332 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10333          aso_debug_pub.add('Service_item_qty_update: Cursor C_cs_qty: l_quantity: '||l_quantity, 1, 'N');
10334 	end if;
10335 
10336          IF C_cs_qty%NOTFOUND THEN
10337 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10338              aso_debug_pub.add('Service_item_qty_update: Inside cursor C_cs_qty%NOTFOUND condition. ', 1, 'N');
10339 	end if;
10340              x_return_status := FND_API.G_RET_STS_ERROR;
10341              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10342   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10343   		      FND_MESSAGE.Set_Token('CODE', 'CUSTOMER_PRODUCT', FALSE);
10344                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10345   		      FND_MSG_PUB.ADD;
10346   	        END IF;
10347          ELSE
10348 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10349              	aso_debug_pub.add('Service_item_qty_update: cursor C_cs_qty%FOUND ', 1, 'N ');
10350 		end if;
10351 	        l_update_flag := FND_API.G_TRUE;
10352          END IF;
10353          CLOSE C_cs_qty;
10354       /*** Start: BugNo 8647883: R12.1.2 Service reference SUN ER ***/
10355       ELSIF l_qte_line_detail_tbl(i).service_ref_type_code = 'PRODUCT_CATALOG' THEN
10356         OPEN C_quantity(l_qte_line_detail_tbl(i).quote_line_id);
10357         FETCH C_quantity INTO l_quantity; --using the line qunatity
10358 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10359          aso_debug_pub.add('PRODUCT CATALOG Service_item_qty_update: Cursor C_quantity: l_quantity: '||l_quantity, 1, 'N');
10360 	end if;
10361          IF C_quantity%NOTFOUND THEN
10362 	   IF aso_debug_pub.g_debug_flag = 'Y' THEN
10363              	aso_debug_pub.add('Service_item_qty_update: Inside cursor C_quantity%NOTFOUND ', 1, 'N');
10364 	   end if;
10365            x_return_status := FND_API.G_RET_STS_ERROR;
10366            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10367   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10368   		      FND_MESSAGE.Set_Token('CODE', 'PRODUCT_CATALOG', FALSE);
10369 		      FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10370   		      FND_MSG_PUB.ADD;
10371   	    END IF;
10372 	   ELSE
10373 		   l_update_flag := FND_API.G_TRUE;
10374    	    END IF;
10375          CLOSE C_quantity;
10376       /*** End: BugNo 8647883: R12.1.2 Service reference SUN ER ***/
10377       END IF; -- service_ref_type_code
10378 
10379 
10380       IF x_return_status <> FND_API.G_RET_STS_ERROR  AND l_update_flag = FND_API.G_TRUE THEN
10381 
10382          Begin
10383 
10384            UPDATE aso_quote_lines_all
10385            set quantity           =  l_quantity,
10386                last_update_date   =  sysdate,
10387                last_updated_by    =  fnd_global.user_id,
10388                last_update_login  =  fnd_global.conc_login_id
10389            where quote_line_id =  p_qte_line_rec.quote_line_id;
10390 
10391            EXCEPTION
10392               WHEN OTHERS THEN
10393               x_return_status := FND_API.G_RET_STS_ERROR;
10394 
10395               if aso_debug_pub.g_debug_flag = 'Y' THEN
10396               	   aso_debug_pub.add('Service_item_qty_update:Exception raised when others', 1, 'N');
10397               end if;
10398 
10399          End;
10400 
10401       END IF;
10402 
10403 	 l_update_flag := FND_API.G_FALSE;
10404 
10405     END LOOP;
10406 
10407   END IF;
10408 End service_item_qty_update;
10409 
10410 END ASO_QUOTE_LINES_PVT;