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 2006/08/04 01:52:42 bmishra 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
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 
4917 BEGIN
4918 
4919       -- Standard Start of API savepoint
4920       SAVEPOINT UPDATE_quote_line_PVT;
4921 
4922       -- Standard call to check for call compatibility.
4923       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4924                          	             p_api_version_number,
4925                                            l_api_name,
4926                                            G_PKG_NAME) THEN
4927           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4928       END IF;
4929 
4930 
4931       -- Initialize message list if p_init_msg_list is set to TRUE.
4932       IF FND_API.to_Boolean( p_init_msg_list ) THEN
4933           FND_MSG_PUB.initialize;
4934       END IF;
4935 
4936 
4937       -- Initialize API return status to SUCCESS
4938       x_return_status := FND_API.G_RET_STS_SUCCESS;
4939 
4940       if aso_debug_pub.g_debug_flag = 'Y' THEN
4941           aso_debug_pub.add('Update_Quote_line - Begin ', 1, 'Y');
4942           aso_debug_pub.add('P_Control_REC.AUTO_VERSION_FLAG: '||nvl(P_Control_REC.AUTO_VERSION_FLAG,'null'),1,'N');
4943           aso_debug_pub.add('P_Control_REC.pricing_request_type: '||nvl(P_Control_REC.pricing_request_type,'null'),1,'N');
4944           aso_debug_pub.add('P_Control_REC.header_pricing_event: '||nvl(P_Control_REC.header_pricing_event,'null'),1,'N');
4945           aso_debug_pub.add('P_Control_REC.line_pricing_event: '||nvl(P_Control_REC.line_pricing_event,'null'),1,'N');
4946           aso_debug_pub.add('P_Control_REC.CALCULATE_TAX_FLAG: '||nvl(P_Control_REC.CALCULATE_TAX_FLAG,'null'),1,'N');
4947           aso_debug_pub.add('P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG: '||nvl(P_Control_REC.CALCULATE_FREIGHT_CHARGE_FLAG,'null'),1,'N');
4948           aso_debug_pub.add('P_Control_REC.COPY_TASK_FLAG: '||nvl(P_Control_REC.COPY_TASK_FLAG,'null'),1,'N');
4949           aso_debug_pub.add('P_Control_REC.COPY_NOTES_FLAG: '||nvl(P_Control_REC.COPY_NOTES_FLAG,'null'),1,'N');
4950           aso_debug_pub.add('P_Control_REC.COPY_ATT_FLAG: '||nvl(P_Control_REC.COPY_ATT_FLAG,'null'),1,'N');
4951           aso_debug_pub.add('P_Qte_Line_Rec.OPERATION_CODE: '||nvl(P_Qte_Line_Rec.OPERATION_CODE,'null'),1,'N');
4952           aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_LINE_ID: '||nvl(to_char(P_Qte_Line_Rec.QUOTE_LINE_ID),'null'),1,'N');
4953           aso_debug_pub.add('P_Qte_Line_Rec.QUOTE_HEADER_ID: '||nvl(to_char(P_Qte_Line_Rec.QUOTE_HEADER_ID),'null'),1,'N');
4954           aso_debug_pub.add('P_Qte_Line_Rec.LINE_CATEGORY_CODE: '||nvl(P_Qte_Line_Rec.LINE_CATEGORY_CODE,'null'),1,'N');
4955           aso_debug_pub.add('P_Qte_Line_Rec.ITEM_TYPE_CODE: '||nvl(P_Qte_Line_Rec.ITEM_TYPE_CODE,'null'),1,'N');
4956           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');
4957           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');
4958           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');
4959           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');
4960           aso_debug_pub.add('P_Qte_Line_Rec.INVENTORY_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.INVENTORY_ITEM_ID),'null'),1,'N');
4961           aso_debug_pub.add('P_Qte_Line_Rec.QUANTITY: '||nvl(to_char(P_Qte_Line_Rec.QUANTITY),'null'),1,'N');
4962           aso_debug_pub.add('P_Qte_Line_Rec.UOM_CODE: '||nvl(P_Qte_Line_Rec.UOM_CODE,'null'),1,'N');
4963           aso_debug_pub.add('P_Qte_Line_Rec.PRICING_QUANTITY_UOM: '||nvl(P_Qte_Line_Rec.PRICING_QUANTITY_UOM,'null'),1,'N');
4964           aso_debug_pub.add('P_Qte_Line_Rec.PRICE_LIST_ID: '||nvl(to_char(P_Qte_Line_Rec.PRICE_LIST_ID),'null'),1,'N');
4965           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');
4966           aso_debug_pub.add('P_Qte_Line_Rec.CURRENCY_CODE: '||nvl(P_Qte_Line_Rec.CURRENCY_CODE,'null'),1,'N');
4967           aso_debug_pub.add('P_Qte_Line_Rec.RELATED_ITEM_ID: '||nvl(to_char(P_Qte_Line_Rec.RELATED_ITEM_ID),'null'),1,'N');
4968           aso_debug_pub.add('P_Qte_Line_Rec.org_id: '||nvl(to_char(P_Qte_Line_Rec.org_id),'null'));
4969       end if;
4970 
4971       --
4972       -- API body
4973       --
4974 
4975       -- ******************************************************************
4976       -- Validate Environment
4977       -- ******************************************************************
4978       IF FND_GLOBAL.User_Id IS NULL THEN
4979           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4980               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
4981               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
4982               FND_MSG_PUB.ADD;
4983           END IF;
4984           RAISE FND_API.G_EXC_ERROR;
4985       END IF;
4986 
4987 
4988       OPEN C_qln_exist;
4989 	 FETCH C_qln_exist into l_qln_exist;
4990 
4991 	 IF c_qln_exist%NOTFOUND OR l_qln_exist = FND_API.G_MISS_NUM THEN
4992 
4993          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4994               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_LINE');
4995 		    FND_MESSAGE.Set_Token ('VALUE', p_qte_line_rec.quote_line_id, FALSE);
4996               FND_MSG_PUB.ADD;
4997           END IF;
4998           CLOSE C_qln_exist;
4999           raise FND_API.G_EXC_ERROR;
5000 
5001 	 END IF;
5002       CLOSE C_qln_exist;
5003 
5004       IF (p_update_header_flag = 'Y') THEN
5005 
5006           Open C_Get_quote( p_qte_line_rec.QUOTE_LINE_ID);
5007           Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id, l_quote_number, l_hd_discount_percent,l_quote_exp_date;
5008 
5009 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5010       	    aso_debug_pub.add('After c_get_quote',1,'N');
5011       	    aso_debug_pub.add('l_qte_status_id: '||l_qte_status_id,1,'N');
5012       	    aso_debug_pub.add('l_quote_number: '||nvl(to_char(l_quote_number),'null'),1,'N');
5013       	    aso_debug_pub.add('l_hd_discount_percent: '||nvl(to_char(l_hd_discount_percent),'null'),1,'N');
5014 	     end if;
5015 
5016           If ( C_Get_quote%NOTFOUND) Then
5017               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5018                  FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
5019                  FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
5020                  FND_MSG_PUB.Add;
5021               END IF;
5022               Close C_Get_quote;
5023               raise FND_API.G_EXC_ERROR;
5024           END IF;
5025           Close C_Get_quote;
5026 
5027 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5028       	    aso_debug_pub.add('After C_Get_quote Cursor call ',1,'N');
5029 	     end if;
5030 
5031           If (l_last_update_date is NULL or l_last_update_date = FND_API.G_MISS_Date ) Then
5032 
5033                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5034                    FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
5035                    FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
5036                    FND_MSG_PUB.ADD;
5037                END IF;
5038                raise FND_API.G_EXC_ERROR;
5039           End if;
5040 
5041           -- Check Whether record has been changed by someone else
5042           If (trunc(l_last_update_date) <> trunc(p_control_rec.last_update_date)) Then
5043 
5044                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5045                    FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
5046                    FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
5047                    FND_MSG_PUB.ADD;
5048                END IF;
5049                raise FND_API.G_EXC_ERROR;
5050           End if;
5051 
5052 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5053       	    aso_debug_pub.add('After Last update date validation',1,'N');
5054 	     end if;
5055 
5056           Open c_qte_status (l_qte_status_id);
5057           Fetch C_qte_status into l_update_allowed, l_auto_version;
5058 
5059 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5060       	   aso_debug_pub.add('after c_qte_status',1,'N');
5061       	   aso_debug_pub.add('l_update_allowed: '||l_update_allowed,1,'N');
5062       	   aso_debug_pub.add('l_auto_version: '||l_auto_version,1,'N');
5063 	    end if;
5064          Close c_qte_status;
5065 
5066 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5067       	   aso_debug_pub.add('After c_qte_status cursor call',1,'N');
5068 	    end if;
5069 
5070          -- the control rec does not set auto version to 'Y' then it should not be versioned
5071 
5072          IF p_control_rec.auto_version_flag = FND_API.G_TRUE AND NVL(l_auto_version,'Y') = 'Y' THEN
5073 
5074 	        OPEN C_Qte_Version(l_quote_number);
5075 	        FETCH C_Qte_Version into l_quote_version;
5076 	        l_quote_version := nvl(l_quote_version, 0) + 1;
5077 	        CLOSE C_Qte_Version;
5078          ELSE
5079              l_auto_version := 'N';
5080          END IF;
5081 
5082 	    if aso_debug_pub.g_debug_flag = 'Y' THEN
5083       	   aso_debug_pub.add('after basic validations'||  x_return_status, 1, 'Y');
5084 	    end if;
5085 
5086          IF l_auto_version = 'Y' THEN
5087 
5088 	        l_old_header_rec := ASO_UTILITY_PVT.Query_Header_Row(p_qte_line_rec.QUOTE_HEADER_ID);
5089 
5090              l_copy_quote_control_rec.new_version     :=  FND_API.G_TRUE;
5091              l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
5092 
5093              aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
5094                                             P_Init_Msg_List           =>  FND_API.G_FALSE,
5095                                             P_Commit                  =>  FND_API.G_FALSE,
5096                                             P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
5097                                             P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
5098                                             X_Qte_Header_Id           =>  x_quote_header_id,
5099                                             X_Qte_Number              =>  l_qte_nbr,
5100                                             X_Return_Status           =>  l_return_status,
5101                                             X_Msg_Count               =>  x_msg_count,
5102                                             X_Msg_Data                =>  x_msg_data
5103                                            );
5104 
5105 		   if aso_debug_pub.g_debug_flag = 'Y' then
5106             	  aso_debug_pub.add('Update_Quote_Line: After copy_quote');
5107             	  aso_debug_pub.add('After copy_quote l_return_status:   ' || l_return_status);
5108             	  aso_debug_pub.add('After copy_quote x_quote_header_id: ' || x_quote_header_id);
5109             	  aso_debug_pub.add('After copy_quote l_qte_nbr:         ' || l_qte_nbr);
5110 		   end if;
5111 
5112              update aso_quote_headers_all
5113              set quote_version      =  l_quote_version + 1,
5114                  max_version_flag   =  'Y',
5115                  last_update_date   =  sysdate,
5116                  last_updated_by    =  fnd_global.user_id,
5117                  last_update_login  =  fnd_global.conc_login_id
5118              where quote_header_id = p_qte_line_rec.quote_header_id;
5119 
5120              update aso_quote_headers_all
5121              set max_version_flag   =  'N',
5122                  quote_version      =  l_old_header_rec.quote_version,
5123                  last_update_date   =  sysdate,
5124                  last_updated_by    =  fnd_global.user_id,
5125                  last_update_login  =  fnd_global.conc_login_id
5126              where quote_header_id = x_quote_header_id;
5127 
5128              update aso_quote_headers_all
5129              set quote_version      =  l_quote_version,
5130                  last_update_date   =  sysdate,
5131                  last_updated_by    =  fnd_global.user_id,
5132                  last_update_login  =  fnd_global.conc_login_id
5133              where quote_header_id = p_qte_line_rec.quote_header_id;
5134 
5135          END IF;   -- auto version flag
5136 
5137       END IF;  -- update header flag
5138 
5139 
5140       -- bmishra line defaulting framework begin
5141 
5142       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5143           aso_debug_pub.add('Update_Quote_Line: Before defaulting framework', 1, 'Y');
5144           aso_debug_pub.add('Update_Quote_Line: populate defaulting control record from the line control record', 1, 'Y');
5145       END IF ;
5146 
5147       l_def_control_rec.Dependency_Flag       := p_control_rec.Dependency_Flag;
5148       l_def_control_rec.Defaulting_Flag       := p_control_rec.Defaulting_Flag;
5149       l_def_control_rec.Application_Type_Code := p_control_rec.Application_Type_Code;
5150       l_def_control_rec.Defaulting_Flow_Code  := 'UPDATE';
5151       l_def_control_rec.last_update_date      := p_control_rec.last_update_date;
5152 
5153       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5154           aso_debug_pub.add('Defaulting_Fwk_Flag:   '|| p_control_rec.Defaulting_Fwk_Flag, 1, 'Y');
5155           aso_debug_pub.add('Dependency_Flag:       '|| l_def_control_rec.Dependency_Flag, 1, 'Y');
5156           aso_debug_pub.add('Defaulting_Flag:       '|| l_def_control_rec.Defaulting_Flag, 1, 'Y');
5157           aso_debug_pub.add('Application_Type_Code: '|| l_def_control_rec.Application_Type_Code, 1, 'Y');
5158           aso_debug_pub.add('Defaulting_Flow_Code:  '|| l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
5159           aso_debug_pub.add('last_update_date:      '|| l_def_control_rec.last_update_date, 1, 'Y');
5160       END IF ;
5161 
5162       IF l_def_control_rec.application_type_code = 'QUOTING HTML' OR  l_def_control_rec.application_type_code = 'QUOTING FORM' THEN
5163           l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_QUOTE_LINE_DB_NAME;
5164       ELSIF l_def_control_rec.application_type_code = 'ISTORE' THEN
5165           l_db_object_name := ASO_QUOTE_HEADERS_PVT.G_STORE_CART_LINE_DB_NAME;
5166       ELSE
5167           l_control_rec.Defaulting_Fwk_Flag := 'N';
5168       END IF;
5169 
5170       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5171           aso_debug_pub.add('Pick '||l_db_object_name ||' based on calling application '||l_def_control_rec.application_type_code, 1, 'Y');
5172       END IF ;
5173 
5174       IF p_shipment_tbl.count > 0 THEN
5175           l_shipment_rec := p_shipment_tbl(1);
5176       END IF;
5177 
5178       IF p_payment_tbl.count > 0 THEN
5179           l_payment_rec := p_payment_tbl(1);
5180       END IF;
5181 
5182       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5183           aso_debug_pub.add('Update_Quote_Line - Before Calling Default_Entity procedure', 1, 'Y');
5184       END IF ;
5185 
5186 /* Removing Call for defaulting from create_quote_line
5187       IF l_control_rec.defaulting_fwk_flag = 'Y' THEN
5188 
5189           ASO_DEFAULTING_INT.Default_Entity ( p_api_version           =>  1.0,
5190                                               p_control_rec           =>  l_def_control_rec,
5191                                               p_database_object_name  =>  l_db_object_name,
5192                                               p_quote_line_rec        =>  p_qte_line_rec,
5193                                               p_line_shipment_rec     =>  l_shipment_rec,
5194                                               p_line_payment_rec      =>  l_payment_rec,
5195                                               x_quote_header_rec      =>  l_qte_header_rec,
5196                                               x_header_misc_rec       =>  lx_hd_misc_rec,
5197                                               x_header_shipment_rec   =>  lx_hd_shipment_rec,
5198                                               x_header_payment_rec    =>  lx_hd_payment_rec,
5199                                               x_header_tax_detail_rec =>  lx_hd_tax_detail_rec,
5200                                               x_quote_line_rec        =>  lx_qte_line_rec,
5201                                               x_line_misc_rec         =>  lx_ln_misc_rec,
5202                                               x_line_shipment_rec     =>  lx_ln_shipment_rec,
5203                                               x_line_payment_rec      =>  lx_ln_payment_rec,
5204                                               x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec,
5205                                               x_changed_flag          =>  lx_changed_flag,
5206                                               x_return_status         =>  x_return_status,
5207                                               x_msg_count             =>  x_msg_count,
5208                                               x_msg_data              =>  x_msg_data);
5209 
5210           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5211               aso_debug_pub.add('Update_Quote_line: After call to ASO_DEFAULTING_INT.Default_Entity', 1, 'Y');
5212               aso_debug_pub.add('Update_Quote_line: x_return_status: '|| x_return_status, 1, 'Y');
5213           end if;
5214 
5215           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5216 
5217               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5218                   FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
5219                   FND_MSG_PUB.ADD;
5220               END IF;
5221 
5222               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5223                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5224               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5225                    RAISE FND_API.G_EXC_ERROR;
5226               END IF;
5227 
5228           END IF;
5229 
5230           IF aso_quote_headers_pvt.Shipment_Null_Rec_Exists(lx_ln_shipment_rec, l_db_object_name) THEN
5231               lx_ln_shipment_tbl(1) := lx_ln_shipment_rec;
5232           END IF;
5233 
5234           IF aso_quote_headers_pvt.Payment_Null_Rec_Exists(lx_ln_payment_rec, l_db_object_name) THEN
5235               lx_ln_payment_tbl(1) := lx_ln_payment_rec;
5236           END IF;
5237 
5238 	 ELSE
5239      */
5240 	     lx_qte_line_rec := p_qte_line_rec;
5241           lx_ln_shipment_tbl := p_shipment_tbl;
5242           lx_ln_payment_tbl := p_payment_tbl;
5243       /*
5244       END IF;
5245       */
5246 
5247       -- bmishra defaulting framework end
5248 
5249       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5250           aso_debug_pub.add('Update_Quote_line - before validation', 1, 'Y');
5251           aso_debug_pub.add('Update_Quote_line: ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM: '||ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM, 1, 'Y');
5252       end if;
5253 
5254       IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
5255 
5256            ASO_VALIDATE_PVT.Validate_Item_Type_Code(
5257 		                        p_init_msg_list	 => FND_API.G_FALSE,
5258 		                        p_item_type_code => lx_qte_line_rec.item_type_code,
5259 		                        x_return_status  => x_return_status,
5260                                   x_msg_count      => x_msg_count,
5261                                   x_msg_data       => x_msg_data);
5262 
5263            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5264                RAISE FND_API.G_EXC_ERROR;
5265            END IF;
5266 
5267 	      -- invoice_to_party_id must exist and be active in HZ_PARTIES and have the usage INVOICE.
5268 
5269 	      ASO_VALIDATE_PVT.Validate_Party (
5270 		                        p_init_msg_list	=> FND_API.G_FALSE,
5271 		                        p_party_id	     => lx_qte_line_rec.invoice_to_party_id,
5272 		                        p_party_usage	=> 'INVOICE',
5273 		                        x_return_status => x_return_status,
5274                                   x_msg_count     => x_msg_count,
5275                                   x_msg_data      => x_msg_data);
5276 
5277 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5278  		     aso_debug_pub.add('after validate invoice to party: x_return_status: '||x_return_status, 1, 'N');
5279 	      end if;
5280 
5281 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5282                RAISE FND_API.G_EXC_ERROR;
5283            END IF;
5284 
5285 	      ASO_VALIDATE_PVT.Validate_PartySite (
5286 		                        p_init_msg_list	=> FND_API.G_FALSE,
5287 		                        p_party_id	     => lx_qte_line_rec.invoice_to_party_id,
5288 		                        p_party_site_id	=> lx_qte_line_rec.invoice_to_party_site_id,
5289 		                        p_site_usage	=> 'INVOICE',
5290 		                        x_return_status => x_return_status,
5291                                   x_msg_count     => x_msg_count,
5292                                   x_msg_data      => x_msg_data);
5293 
5294 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5295  		     aso_debug_pub.add('after validate invoice to party site: x_return_status: '||x_return_status, 1, 'N');
5296 	      end if;
5297 
5298 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5299                RAISE FND_API.G_EXC_ERROR;
5300            END IF;
5301 
5302 	      -- price list must exist and be active in OE_PRICE_LISTS
5303 	      ASO_VALIDATE_PVT.Validate_PriceList (
5304 		                        p_init_msg_list	=> FND_API.G_FALSE,
5305 		                        p_price_list_id	=> lx_qte_line_rec.price_list_id,
5306 		                        x_return_status => x_return_status,
5307                                   x_msg_count     => x_msg_count,
5308                                   x_msg_data      => x_msg_data);
5309 
5310 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5311                RAISE FND_API.G_EXC_ERROR;
5312            END IF;
5313 
5314            ASO_VALIDATE_PVT.Validate_Quote_Price_Exp(
5315   	                             p_init_msg_list		   => FND_API.G_FALSE,
5316                                   p_price_list_id	        => lx_qte_line_rec.price_list_id,
5317                                   p_quote_expiration_date => l_quote_exp_date,
5318                                   x_return_status         => x_return_status,
5319 	                             x_msg_count	        => x_msg_count,
5320 	                             x_msg_data	             => x_msg_data);
5321 
5322            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5323 
5324                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5325 	              FND_MESSAGE.Set_Name('ASO', 'API_INVALID_ID');
5326                    FND_MESSAGE.Set_Token('COLUMN', 'Price List Expires Before Quote', FALSE);
5327                    FND_MSG_PUB.ADD;
5328 	          END IF;
5329 
5330 	          RAISE FND_API.G_EXC_ERROR;
5331            END IF;
5332 
5333 	      if aso_debug_pub.g_debug_flag = 'Y' THEN
5334                aso_debug_pub.add('After call to Validate_Quote_Price_Exp: x_return_status: '|| x_return_status, 1, 'Y');
5335 	      end if;
5336 
5337 	      -- shp_to_party_id must exist and be active in HZ_PARTIES and have the usage SHIP.
5338 
5339            For i in 1..lx_ln_shipment_tbl.count LOOP
5340 
5341 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5342  				aso_debug_pub.add('before validating ship_to party: '||nvl(to_char(lx_ln_shipment_tbl(i).ship_to_party_id), 'null'),1,'N');
5343 			end if;
5344 
5345 	          ASO_VALIDATE_PVT.Validate_Party (
5346 		                        p_init_msg_list	=> FND_API.G_FALSE,
5347 		                        p_party_id	     => lx_ln_shipment_tbl(i).ship_to_party_id,
5348 		                        p_party_usage	=> 'SHIP',
5349 		                        x_return_status => x_return_status,
5350                                   x_msg_count     => x_msg_count,
5351                                   x_msg_data      => x_msg_data);
5352 
5353 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5354  			    aso_debug_pub.add('after validate ship to party: x_return_status: '||x_return_status, 1, 'N');
5355 			end if;
5356 
5357 	          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5358                     RAISE FND_API.G_EXC_ERROR;
5359                END IF;
5360 
5361 		     if aso_debug_pub.g_debug_flag = 'Y' THEN
5362 			     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');
5363 		     end if;
5364 
5365 	          ASO_VALIDATE_PVT.Validate_PartySite (
5366 		                        p_init_msg_list	 => FND_API.G_FALSE,
5367 		                        p_party_id	      => lx_ln_shipment_tbl(i).ship_to_party_id,
5368 		                        p_party_site_id	 => lx_ln_shipment_tbl(i).ship_to_party_site_id,
5369 		                        p_site_usage	 => 'SHIP',
5370 		                        x_return_status  => x_return_status,
5371                                   x_msg_count      => x_msg_count,
5372                                   x_msg_data       => x_msg_data);
5373 
5374 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
5375  			    aso_debug_pub.add('after validate ship to party site: x_return_status: '||x_return_status, 1, 'N');
5376 			end if;
5377 
5378 	          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5379                     RAISE FND_API.G_EXC_ERROR;
5380                END IF;
5381 
5382 	      End LOOP;
5383 
5384 
5385            ASO_VALIDATE_PVT.Validate_Marketing_Source_Code(
5386 		                        p_init_msg_list         => FND_API.G_FALSE,
5387 		                        p_mkting_source_code_id => lx_qte_line_rec.marketing_source_code_id,
5388                                   x_return_status         => x_return_status,
5389                                   x_msg_count             => x_msg_count,
5390                                   x_msg_data              => x_msg_data);
5391 
5392 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5393                aso_debug_pub.add('after marketing source code: x_return_status: '|| x_return_status, 1, 'Y');
5394 		 end if;
5395 
5396            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5397                 RAISE FND_API.G_EXC_ERROR;
5398            END IF;
5399 
5400 
5401            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5402 
5403                ASO_VALIDATE_PVT.Validate_Service_Duration(
5404                            p_init_msg_list    => FND_API.G_FALSE,
5405                            p_service_duration => p_qte_line_dtl_tbl(i).service_duration,
5406                            x_return_status    => x_return_status,
5407                            x_msg_count        => x_msg_count,
5408                            x_msg_data         => x_msg_data);
5409 
5410 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5411                    aso_debug_pub.add('after service duration: x_return_status: '||  x_return_status, 1, 'Y');
5412 	          end if;
5413 
5414                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5415                    RAISE FND_API.G_EXC_ERROR;
5416                END IF;
5417 
5418            END LOOP;
5419 
5420 
5421            FOR i in 1..p_sales_credit_tbl.count LOOP
5422 
5423               if aso_debug_pub.g_debug_flag = 'Y' then
5424                   aso_debug_pub.add('p_sales_credit_tbl('||i||').operation_code: '|| p_sales_credit_tbl(i).operation_code,1,'Y');
5425               end if;
5426 
5427               if (p_sales_credit_tbl(i).operation_code = 'CREATE' or p_sales_credit_tbl(i).operation_code = 'UPDATE') then
5428 
5429                    ASO_VALIDATE_PVT.Validate_Resource_id(
5430 		                            p_init_msg_list	=> FND_API.G_FALSE,
5431 		                            p_resource_id	=> p_sales_credit_tbl(i).resource_id  ,
5432 		                            x_return_status => x_return_status,
5433                                       x_msg_count     => x_msg_count,
5434                                       x_msg_data      => x_msg_data);
5435 
5436                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5437 
5438                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5439 		                FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_SALES_REP_ID');
5440 		                FND_MSG_PUB.ADD;
5441 	                 END IF;
5442                       RAISE FND_API.G_EXC_ERROR;
5443                    END IF;
5444 
5445                    ASO_VALIDATE_PVT.Validate_Resource_group_id(
5446 		                             p_init_msg_list     => FND_API.G_FALSE,
5447 		                             p_resource_group_id	=> p_sales_credit_tbl(i).resource_group_id,
5448 		                             x_return_status     => x_return_status,
5449                                        x_msg_count         => x_msg_count,
5450                                        x_msg_data          => x_msg_data);
5451 
5452                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5453                        RAISE FND_API.G_EXC_ERROR;
5454                    END IF;
5455 
5456                    ASO_VALIDATE_PVT.Validate_Salescredit_Type(
5457 		                             p_init_msg_list        => FND_API.G_FALSE,
5458 		                             p_salescredit_type_id  => p_sales_credit_tbl(i).sales_credit_type_id,
5459 		                             x_return_status        => x_return_status,
5460                                        x_msg_count            => x_msg_count,
5461                                        x_msg_data             => x_msg_data);
5462 
5463                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5464                        RAISE FND_API.G_EXC_ERROR;
5465                    END IF;
5466 
5467                    ASO_VALIDATE_PVT.Validate_EmployPerson(
5468         	                             p_init_msg_list => FND_API.G_FALSE,
5469         	                             p_employee_id   => p_sales_credit_tbl(i).employee_person_id,
5470 		                             x_return_status => x_return_status,
5471                                        x_msg_count     => x_msg_count,
5472                                        x_msg_data      => x_msg_data);
5473 
5474                    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5475                        RAISE FND_API.G_EXC_ERROR;
5476                    END IF;
5477 
5478               end if;
5479 
5480            END LOOP;
5481 
5482 
5483 		 /* commented by bmishra on 12/15/2004 as we are not using quote_party_tbl
5484            FOR i in 1..p_quote_party_tbl.count LOOP
5485 
5486                ASO_VALIDATE_PVT.Validate_Party_Type(
5487 		                         p_init_msg_list => FND_API.G_FALSE,
5488 		                         p_party_type    => p_quote_party_tbl(i).party_type,
5489         	                         x_return_status => x_return_status,
5490                                    x_msg_count     => x_msg_count,
5491                                    x_msg_data      => x_msg_data);
5492 
5493                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5494                    RAISE FND_API.G_EXC_ERROR;
5495                END IF;
5496 
5497                ASO_VALIDATE_PVT.Validate_Party(
5498 		                         p_init_msg_list => FND_API.G_FALSE,
5499 		                         p_party_id	 => p_quote_party_tbl(i).party_id,
5500 		                         p_party_usage	 => null,
5501 		                         x_return_status => x_return_status,
5502                                    x_msg_count     => x_msg_count,
5503                                    x_msg_data      => x_msg_data);
5504 
5505                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5506                      RAISE FND_API.G_EXC_ERROR;
5507                END IF;
5508 
5509  	          ASO_VALIDATE_PVT.Validate_Party_Object_Type(
5510 		                         p_init_msg_list	=> FND_API.G_FALSE,
5511 		                         p_party_object_type => p_quote_party_tbl(i).party_object_type,
5512 		                         x_return_status     => x_return_status,
5513                                    x_msg_count         => x_msg_count,
5514                                    x_msg_data          => x_msg_data);
5515                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5516                    RAISE FND_API.G_EXC_ERROR;
5517                END IF;
5518 
5519            END LOOP;
5520 		 */
5521 
5522 
5523            ASO_VALIDATE_PVT.Validate_MiniSite(
5524                                    p_init_msg_list => FND_API.G_FALSE,
5525                                    p_minisite_id   => lx_qte_line_rec.minisite_id,
5526                                    x_return_status => x_return_status,
5527                                    x_msg_count     => x_msg_count,
5528                                    x_msg_data      => x_msg_data);
5529 
5530            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5531                RAISE FND_API.G_EXC_ERROR;
5532            END IF;
5533 
5534            ASO_VALIDATE_PVT.Validate_Section(
5535                                    p_init_msg_list => FND_API.G_FALSE,
5536                                    p_section_id    => lx_qte_line_rec.section_id,
5537                                    x_return_status => x_return_status,
5538                                    x_msg_count     => x_msg_count,
5539                                    x_msg_data      => x_msg_data);
5540 
5541            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5542                RAISE FND_API.G_EXC_ERROR;
5543            END IF;
5544 
5545       END IF;
5546 
5547            l_db_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row( P_Qte_Line_Id   => lx_qte_line_rec.quote_line_id);
5548 
5549            l_db_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
5550                                                                      P_Qte_Line_Id   => l_db_qte_line_rec.quote_line_id);
5551 
5552 
5553       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD THEN
5554 
5555            IF lx_qte_line_rec.organization_id is NULL or lx_qte_line_rec.organization_id = FND_API.G_MISS_NUM THEN
5556 
5557                 IF lx_qte_line_rec.org_id is NULL OR lx_qte_line_rec.org_id = FND_API.G_MISS_NUM THEN
5558 
5559                      OPEN C_org_id;
5560                      FETCH C_org_id into l_org_id;
5561 
5562                      IF C_org_id%NOTFOUND THEN
5563 
5564                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5565                              FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
5566                              FND_MESSAGE.Set_Token('COLUMN', 'ORG_ID', FALSE);
5567                              FND_MSG_PUB.ADD;
5568                          END IF;
5569 
5570                      END IF;
5571                      CLOSE C_org_id;
5572 
5573                 END IF;
5574 
5575                 l_organization_id := oe_profile.value('OE_ORGANIZATION_ID', l_org_id);
5576 
5577            ELSE
5578 
5579 		      l_organization_id := lx_qte_line_rec.organization_id;
5580 
5581            END IF;
5582 
5583 
5584            IF lx_qte_line_rec.inventory_item_id is NULL OR  lx_qte_line_rec.inventory_item_id = FND_API.G_MISS_NUM THEN
5585 
5586                SELECT inventory_item_id INTO l_inventory_item_id
5587                FROM aso_quote_lines_all
5588                WHERE quote_line_id = lx_qte_line_rec.quote_line_id;
5589 
5590            ELSE
5591 
5592                l_inventory_item_id := lx_qte_line_rec.inventory_item_id;
5593 
5594            END IF;
5595 
5596 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5597                aso_debug_pub.add('Update_Quote_Line: before Validate_UOM_code: l_organization_id:   '|| l_organization_id, 1, 'N');
5598                aso_debug_pub.add('Update_Quote_Line: before Validate_UOM_code: l_inventory_item_id: '|| l_inventory_item_id, 1, 'N');
5599 		 end if;
5600 
5601 
5602            -- UOM must exist and should be in ASO_I_UNITS_OF_MEASURE
5603 
5604            ASO_VALIDATE_PVT.Validate_UOM_code(
5605 		                         p_init_msg_list	=> FND_API.G_FALSE,
5606 		                         p_uom_code          => lx_qte_line_rec.uom_code,
5607                                    p_organization_id   => l_organization_id,
5608                                    p_inventory_item_id => l_inventory_item_id,
5609 		                         x_return_status     => x_return_status,
5610                                    x_msg_count         => x_msg_count,
5611                                    x_msg_data          => x_msg_data);
5612 
5613 	      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5614                RAISE FND_API.G_EXC_ERROR;
5615            END IF;
5616 
5617 
5618            ASO_VALIDATE_PVT.Validate_For_GreaterEndDate (
5619 		                         p_init_msg_list => FND_API.G_FALSE,
5620 		                         p_start_date    => lx_qte_line_rec.start_date_active,
5621         	                         p_end_date      => lx_qte_line_rec.end_date_active,
5622 		                         x_return_status => x_return_status,
5623                                    x_msg_count     => x_msg_count,
5624                                    x_msg_data      => x_msg_data);
5625 
5626 	      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5627 
5628                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5629 	              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5630                    FND_MESSAGE.Set_Token('INFO', 'END_DATE', FALSE);
5631 	              FND_MSG_PUB.ADD;
5632 	          END IF;
5633                RAISE FND_API.G_EXC_ERROR;
5634            END IF;
5635 
5636 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5637        	     aso_debug_pub.add('validate greater end date'||  x_return_status , 1, 'Y');
5638 	      end if;
5639 
5640            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5641 
5642                ASO_VALIDATE_PVT.Validate_Returns(
5643                                    p_init_msg_list	   => FND_API.G_FALSE,
5644                                    p_return_ref_type_code => p_qte_line_dtl_tbl(i).return_ref_type,
5645                                    p_return_ref_header_id => p_qte_line_dtl_tbl(i).return_ref_header_id,
5646                                    p_return_ref_line_id   => p_qte_line_dtl_tbl(i).return_ref_line_id,
5647 	                              x_return_status        => x_return_status,
5648                                    x_msg_count            => x_msg_count,
5649                                    x_msg_data             => x_msg_data);
5650 
5651 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5652 
5653                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5654 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5655 	                  FND_MESSAGE.Set_Token('INFO', 'RETURN', FALSE);
5656                        FND_MSG_PUB.ADD;
5657 	              END IF;
5658                    RAISE FND_API.G_EXC_ERROR;
5659                END IF;
5660 
5661            END LOOP;
5662 
5663 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5664          	     aso_debug_pub.add('validate returns'||  x_return_status, 1, 'Y');
5665 	      end if;
5666 
5667 	      -- tax_exempt_flag must be in 'E', 'R' and 'S'
5668 	      -- and tax_exempt_reason_code must exist if tax_exempt_flag is 'E'.
5669 
5670            FOR i in 1..p_tax_detail_tbl.count LOOP
5671 
5672 	          ASO_VALIDATE_PVT.Validate_Tax_Exemption (
5673 		                         p_init_msg_list	     => FND_API.G_FALSE,
5674 		                         p_tax_exempt_flag	     => p_tax_detail_tbl(i).tax_exempt_flag,
5675 		                         p_tax_exempt_reason_code => p_tax_detail_tbl(i).tax_exempt_reason_code,
5676 		                         x_return_status          => x_return_status,
5677                                    x_msg_count              => x_msg_count,
5678                                    x_msg_data               => x_msg_data);
5679 
5680 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS 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_INVALID_INFORMATION');
5684 	                  FND_MESSAGE.Set_Token('INFO', 'TAX', FALSE);
5685 	                  FND_MSG_PUB.ADD;
5686 	              END IF;
5687                    RAISE FND_API.G_EXC_ERROR;
5688                END IF;
5689 
5690            END LOOP;
5691 
5692 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5693                aso_debug_pub.add('validate tax exemption'||  x_return_status, 1, 'Y');
5694 	      end if;
5695 
5696            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5697 
5698 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5699                    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');
5700                    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');
5701                    aso_debug_pub.add('ASO_QUOTE_LINES_PVT:Update_Quote_Lines:component_code: '|| p_qte_line_dtl_tbl(i).component_code,1,'N');
5702                    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');
5703 	          end if;
5704 
5705                IF ((p_qte_line_dtl_tbl(i).config_header_id IS NOT NULL AND
5706                     p_qte_line_dtl_tbL(i).config_header_id <> FND_API.G_MISS_NUM) AND
5707                    (p_qte_line_dtl_tbl(i).config_revision_num IS NOT NULL AND
5708                     p_qte_line_dtl_tbl(i).config_revision_num <> FND_API.G_MISS_NUM) AND
5709                    (p_qte_line_dtl_tbl(i).config_item_id IS NOT NULL AND
5710                     p_qte_line_dtl_tbl(i).config_item_id <> FND_API.G_MISS_NUM)) THEN
5711 
5712                     ASO_VALIDATE_PVT.Validate_Configuration(
5713 		                         p_init_msg_list       => FND_API.G_FALSE,
5714 		                         p_config_header_id    => p_qte_line_dtl_tbl(i).config_header_id,
5715         	                         p_config_revision_num => p_qte_line_dtl_tbl(i).config_revision_num,
5716                                    p_config_item_id      => p_qte_line_dtl_tbl(i).config_item_id,
5717 		                         x_return_status       => x_return_status,
5718                                    x_msg_count           => x_msg_count,
5719                                    x_msg_data            => x_msg_data);
5720 
5721 		          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5722              	         aso_debug_pub.add('Update_Quote_Lines after Validate_Configuration :x_return_status:'||x_return_status,1, 'N');
5723 		          end if;
5724 
5725 	               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5726 
5727                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5728 	                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5729 	                       FND_MESSAGE.Set_Token('INFO', 'CONFIGURATION', FALSE);
5730 	                       FND_MSG_PUB.ADD;
5731 	                   END IF;
5732                         RAISE FND_API.G_EXC_ERROR;
5733                     END IF;
5734                END IF;
5735 
5736            END LOOP;
5737 
5738 
5739 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5740                aso_debug_pub.add('validate configuration'||  x_return_status, 1, 'Y');
5741 	      end if;
5742 
5743            FOR i in 1..p_qte_line_dtl_tbl.count LOOP
5744 
5745 	          ASO_VALIDATE_PVT.Validate_Delayed_Service(
5746 		                         p_init_msg_list         => FND_API.G_FALSE,
5747 		                         p_service_ref_type_code => p_qte_line_dtl_tbl(i).service_ref_type_code,
5748         	                         p_service_ref_line_id   => p_qte_line_dtl_tbl(i).service_ref_line_id,
5749         	                         p_service_ref_system_id => p_qte_line_dtl_tbl(i).service_ref_system_id,
5750 		                         x_return_status         => x_return_status,
5751                                    x_msg_count             => x_msg_count,
5752                                    x_msg_data              => x_msg_data);
5753 
5754 	          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5755 
5756                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5757 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5758 	                  FND_MESSAGE.Set_Token('INFO', 'DELAYED SERVICE', FALSE);
5759 	                  FND_MSG_PUB.ADD;
5760 	              END IF;
5761                    RAISE FND_API.G_EXC_ERROR;
5762                END IF;
5763 
5764            END LOOP;
5765 
5766 	      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5767                aso_debug_pub.add('validate delayed service'||  x_return_status, 1, 'Y');
5768 	      end if;
5769 
5770 		 /* commented by bmishra on 12/15/2004 as quote_party_tbl is obsoleted
5771 
5772            FOR i in 1..p_quote_party_tbl.count LOOP
5773 
5774                ASO_VALIDATE_PVT.Validate_Party_Object_Id(
5775 	                         p_init_msg_list    => FND_API.G_FALSE,
5776                                  p_party_id         => p_quote_party_tbl(i).party_id,
5777 	                         p_party_object_type     => p_quote_party_tbl(i).party_object_type,
5778                                  p_party_object_id       => p_quote_party_tbl(i).party_object_id,
5779                                  x_return_status => x_return_status,
5780                                  x_msg_count     => x_msg_count,
5781                                  x_msg_data      => x_msg_data);
5782                IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
5783                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5784 	                 FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
5785                       FND_MESSAGE.Set_Token('INFO', 'PARTY OBJECT ID', FALSE);
5786 	                 FND_MSG_PUB.ADD;
5787 	              END IF;
5788                    RAISE FND_API.G_EXC_ERROR;
5789                END IF;
5790            END LOOP;
5791 		 */
5792 
5793            -- new validation for ship_from_org_id
5794 
5795            --l_db_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row( P_Qte_Line_Id   => lx_qte_line_rec.quote_line_id);
5796 
5797            -- l_db_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
5798            --                                                          P_Qte_Line_Id   => l_db_qte_line_rec.quote_line_id);
5799 
5800            IF l_db_shipment_tbl.count = 1 THEN
5801                l_db_shipment_rec := l_db_shipment_tbl(1);
5802            END IF;
5803 
5804            IF lx_ln_shipment_tbl.count > 0 THEN
5805 
5806 		     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5807             	    aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID', 1, 'Y');
5808             	    aso_debug_pub.add('lx_qte_line_rec.quote_header_id:        '|| lx_qte_line_rec.quote_header_id, 1, 'Y');
5809             	    aso_debug_pub.add('lx_qte_line_rec.quote_line_id:          '|| lx_qte_line_rec.quote_line_id, 1, 'Y');
5810             	    aso_debug_pub.add('lx_ln_shipment_tbl(1).quote_line_id:    '|| lx_ln_shipment_tbl(1).quote_line_id, 1, 'Y');
5811             	    aso_debug_pub.add('lx_qte_line_rec.inventory_item_id:      '|| lx_qte_line_rec.inventory_item_id, 1, 'Y');
5812             	    aso_debug_pub.add('l_db_qte_line_rec.inventory_item_id:    '|| l_db_qte_line_rec.inventory_item_id, 1, 'Y');
5813             	    aso_debug_pub.add('lx_ln_shipment_tbl(1).ship_from_org_id: '|| lx_ln_shipment_tbl(1).ship_from_org_id,1,'Y');
5814             	    aso_debug_pub.add('l_db_shipment_rec.ship_from_org_id:     '|| l_db_shipment_rec.ship_from_org_id, 1, 'Y');
5815 		     end if;
5816 
5817                IF (l_db_shipment_rec.ship_from_org_id <> lx_ln_shipment_tbl(1).ship_from_org_id) OR
5818                    ((l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
5819                     ((lx_ln_shipment_tbl(1).ship_from_org_id IS NOT NULL) AND
5820                      (lx_ln_shipment_tbl(1).ship_from_org_id <> FND_API.G_MISS_NUM))) THEN
5821 
5822 			      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5823                   	     aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line: before Validate_ship_from_org_ID', 1, 'Y');
5824 			      end if;
5825 
5826                      ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
5827                                     P_Qte_Line_rec  => lx_qte_line_rec,
5828                                     P_Shipment_rec  => lx_ln_shipment_tbl(1),
5829                                     x_return_status => x_return_status);
5830 
5831 			      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5832                   	     aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line:  after Validate_ship_from_org_ID', 1, 'Y');
5833 			      end if;
5834 
5835                      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5836 
5837 					IF aso_debug_pub.g_debug_flag = 'Y' THEN
5838                       	    aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_Line:  after Validate_ship_from_org_ID: <> SUCCESS', 1, 'Y');
5839 					end if;
5840 
5841                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5842                              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
5843                              FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', lx_ln_shipment_tbl(1).ship_from_org_id, FALSE);
5844                              FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
5845                              FND_MSG_PUB.ADD;
5846                          END IF;
5847 
5848                          RAISE FND_API.G_EXC_ERROR;
5849 
5850                      END IF;
5851 
5852                END IF;
5853 
5854            ELSE
5855 
5856 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5857                    aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID.', 1, 'Y');
5858                    aso_debug_pub.add('lx_qte_line_rec.quote_header_id:     '|| lx_qte_line_rec.quote_header_id, 1, 'Y');
5859                    aso_debug_pub.add('lx_qte_line_rec.quote_line_id:       '|| lx_qte_line_rec.quote_line_id, 1, 'Y');
5860                    aso_debug_pub.add('lx_qte_line_rec.inventory_item_id:   '|| lx_qte_line_rec.inventory_item_id, 1, 'Y');
5861                    aso_debug_pub.add('l_db_qte_line_rec.inventory_item_id: '|| l_db_qte_line_rec.inventory_item_id, 1, 'Y');
5862                    aso_debug_pub.add('l_db_shipment_rec.ship_from_org_id:  '|| l_db_shipment_rec.ship_from_org_id, 1, 'Y');
5863 	          end if;
5864 
5865                IF (l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
5866                    ((l_db_shipment_rec.ship_from_org_id IS NOT NULL) AND
5867                     (l_db_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM)) THEN
5868 
5869 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5870                          aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID (no lx_ln_shipment_tbl)', 1, 'Y');
5871 		           end if;
5872 
5873                      ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
5874                                     P_Qte_Line_rec  => lx_qte_line_rec,
5875                                     P_Shipment_rec  => l_db_shipment_rec,
5876                                     x_return_status => x_return_status);
5877 
5878 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5879                          aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID (no lx_ln_shipment_tbl)', 1, 'Y');
5880 		           end if;
5881 
5882                      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5883 
5884 		               IF aso_debug_pub.g_debug_flag = 'Y' THEN
5885                              aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID: <> SUCCESS (no lx_ln_shipment_tbl)', 1, 'Y');
5886 		               end if;
5887 
5888                          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5889                              FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
5890                              FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', l_db_shipment_rec.ship_from_org_id, FALSE);
5891                              FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
5892                              FND_MSG_PUB.ADD;
5893                          END IF;
5894 
5895                          RAISE FND_API.G_EXC_ERROR;
5896                      END IF;
5897 
5898                ELSE
5899 
5900                      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
5901 
5902                           l_hd_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( P_Qte_Header_Id => l_db_qte_line_rec.quote_header_id,
5903                                                                                     P_Qte_Line_Id   => NULL);
5904 
5905                           IF l_hd_shipment_tbl.count = 1 THEN
5906                               l_hd_shipment_rec := l_hd_shipment_tbl(1);
5907                           END IF;
5908 
5909 		                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5910                               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');
5911 		                end if;
5912 
5913                           IF (l_db_qte_line_rec.inventory_item_id <> lx_qte_line_rec.inventory_item_id) AND
5914                               ((l_hd_shipment_rec.ship_from_org_id IS NOT NULL) AND
5915                                (l_hd_shipment_rec.ship_from_org_id <> FND_API.G_MISS_NUM)) THEN
5916 
5917 		                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5918                                   aso_debug_pub.add('Update_Quote_Line: before Validate_ship_from_org_ID (no db_shipment_tbl)', 1, 'Y');
5919 		                    end if;
5920 
5921                               ASO_VALIDATE_PVT.Validate_ship_from_org_ID(
5922                                              P_Qte_Line_rec  => lx_qte_line_rec,
5923                                              P_Shipment_rec  => l_hd_shipment_rec,
5924                                              x_return_status => x_return_status);
5925 
5926 		                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5927                                   aso_debug_pub.add('Update_Quote_Line:  after Validate_ship_from_org_ID (no db_shipment_tbl)', 1, 'Y');
5928 		                    end if;
5929 
5930                               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5931 
5932 		                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
5933                                       aso_debug_pub.add('after Validate_ship_from_org_ID: <> SUCCESS (no db_shipment_tbl)', 1, 'Y');
5934 		                        end if;
5935 
5936                                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5937                                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SHIP_FROM_ORG_ID');
5938                                       FND_MESSAGE.Set_Token('SHIP_FROM_ORG_ID', l_hd_shipment_rec.ship_from_org_id, FALSE);
5939                                       FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID', lx_qte_line_rec.inventory_item_id, FALSE);
5940                                       FND_MSG_PUB.ADD;
5941                                   END IF;
5942 
5943                                   RAISE FND_API.G_EXC_ERROR;
5944                               END IF;
5945 
5946                           END IF;
5947 
5948                      END IF;
5949 
5950                END IF;
5951 
5952            END IF;
5953 
5954            -- end new validation for ship_from_org_id
5955 
5956       END IF; --IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD
5957 
5958 
5959       -- if quantity is decreased check to see if the installation details quantity is not greater than the new quantity
5960 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5961 		aso_debug_pub.add('Update_Quote_line - before Inst details and populate_quote_line ', 1, 'N');
5962 	 end if;
5963 
5964       -- hyang csi change 1935614
5965 
5966       FOR i IN 1..lx_ln_shipment_tbl.count LOOP
5967 
5968           IF lx_ln_shipment_tbl(i).quantity <> FND_API.G_MISS_NUM THEN
5969 
5970               if not (csi_utility_grp.ib_active()) then
5971 
5972                   Open C_inst_details( lx_ln_shipment_tbl(i).shipment_id);
5973                   Fetch C_inst_details into l_quantity;
5974 
5975                   IF ( C_inst_details%FOUND) AND  l_quantity > lx_ln_shipment_tbl(i).quantity Then
5976 
5977                       Close C_inst_details;
5978 
5979                       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5980                           FND_MESSAGE.Set_Name('ASO', 'INST_DETAILS_EXIST');
5981                           FND_MSG_PUB.ADD;
5982                       END IF;
5983                       raise FND_API.G_EXC_ERROR;
5984 
5985                   ELSE
5986 			       close C_inst_details;
5987 
5988                   END IF;
5989 
5990               else
5991 
5992                   open c_csi_details(lx_qte_line_rec.QUOTE_LINE_ID);
5993                   fetch c_csi_details into l_quantity;
5994 
5995                   if (c_csi_details%found) and (l_quantity > lx_ln_shipment_tbl(i).quantity) then
5996 
5997                      close c_csi_details;
5998 
5999                      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6000                          FND_MESSAGE.Set_Name('ASO', 'INST_DETAILS_EXIST');
6001                          FND_MSG_PUB.ADD;
6002                      END IF;
6003                      raise FND_API.G_EXC_ERROR;
6004 
6005                   else
6006 			      close c_csi_details;
6007 
6008                   end if;
6009 
6010               end if;
6011 
6012           END IF;
6013 
6014       END LOOP;
6015 
6016 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6017           aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:lx_qte_line_rec.UOM_Code: '||lx_qte_line_rec.UOM_Code,1, 'N');
6018           aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:lx_qte_line_rec.Quantity: '||lx_qte_line_rec.Quantity,1, 'N');
6019 	 end if;
6020 
6021       IF lx_qte_line_rec.UOM_Code = 'ENR' THEN
6022 
6023           IF lx_qte_line_rec.Quantity <> FND_API.G_MISS_NUM THEN
6024 
6025 		    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6026                   aso_debug_pub.add('Update_Quote_Line - Invalid Quantity for EDU: ',1, 'N');
6027 		    end if;
6028 
6029               x_return_status := FND_API.G_RET_STS_ERROR;
6030               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6031                   FND_MESSAGE.Set_Name('ASO', 'ASO_EDU_INVALID_QTY');
6032                   FND_MSG_PUB.ADD;
6033               END IF;
6034               RAISE FND_API.G_EXC_ERROR;
6035 
6036           END IF;
6037 
6038       END IF;
6039 
6040 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6041           aso_debug_pub.add('Update_Quote_Line - Before call to Populate_Quote_Line.',1, 'N');
6042 	 end if;
6043 
6044       Populate_Quote_Line( P_Qte_Line_Rec      	  =>  lx_qte_line_rec,
6045                            P_Control_Rec       	  =>  l_control_rec,
6046                            P_Payment_Tbl       	  =>  lx_ln_payment_tbl,
6047                            P_Price_Adj_Tbl     	  =>  P_Price_Adj_Tbl,
6048                            P_Qte_Line_Dtl_tbl  	  =>  P_Qte_Line_Dtl_tbl,
6049                            P_Shipment_Tbl      	  =>  lx_ln_shipment_tbl,
6050                            P_Tax_Detail_Tbl    	  =>  P_Tax_Detail_Tbl,
6051                            P_Freight_Charge_Tbl     =>  P_Freight_Charge_Tbl,
6052                            P_Price_Attributes_Tbl   =>  P_Price_Attributes_Tbl,
6053                            P_Price_Adj_Attr_Tbl     =>  P_Price_Adj_Attr_Tbl,
6054                            P_Line_Attribs_Ext_Tbl   =>  P_Line_Attribs_Ext_Tbl,
6055                            P_Sales_Credit_Tbl       =>  P_sales_credit_tbl,
6056                            P_Quote_Party_Tbl        =>  P_quote_party_tbl,
6057                            P_Operation_Code         =>  'UPDATE',
6058                            X_Qte_Line_Rec      	  =>  l_Qte_Line_Rec,
6059                            X_Payment_Tbl       	  =>  l_Payment_Tbl,
6060                            X_Price_Adj_Tbl     	  =>  l_Price_Adj_Tbl,
6061                            X_Qte_Line_Dtl_tbl  	  =>  l_Qte_Line_Dtl_tbl,
6062                            X_Shipment_Tbl      	  =>  l_Shipment_Tbl,
6063                            X_Tax_Detail_Tbl    	  =>  l_Tax_Detail_Tbl,
6064                            X_Freight_Charge_Tbl     =>  l_Freight_Charge_Tbl,
6065                            X_Price_Attributes_Tbl   =>  l_Price_Attributes_Tbl,
6066                            X_Price_Adj_Attr_Tbl     =>  l_Price_Adj_Attr_Tbl,
6067                            X_Line_Attribs_Ext_Tbl   =>  l_Line_Attribs_Ext_Tbl,
6068                            X_Sales_Credit_Tbl       =>  l_sales_credit_tbl,
6069                            x_Quote_Party_Tbl        =>  l_quote_party_tbl,
6070                            X_Return_Status          =>  X_return_status,
6071                            X_Msg_Count              =>  x_msg_count,
6072                            X_Msg_Data               =>  x_msg_data );
6073 
6074 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6075           aso_debug_pub.add('Update_Quote_Line - After call to Populate_Quote_Line: x_return_status: '|| x_return_status ,1, 'N');
6076 	 end if;
6077 
6078       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6079 
6080           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6081 	         FND_MESSAGE.Set_Name('ASO', 'ASO_POPULATING_COLUMNS');
6082               FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
6083 	         FND_MSG_PUB.ADD;
6084 	     END IF;
6085 
6086           IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6087               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6088           ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6089               RAISE FND_API.G_EXC_ERROR;
6090           END IF;
6091 
6092       END IF;
6093       -- copy the orig payment tbl to another variable as the count of the payment tbl may get changed
6094 	 -- becoz of the payment validation which is done further down
6095       l_orig_payment_tbl := l_Payment_Tbl;
6096 
6097       -- inter entity validations
6098 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6099       	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: UPDATE_QUOTE_LINE: Begin Inter entity validations');
6100 	 end if;
6101 
6102       IF p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_ENTITY THEN
6103 
6104           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6105 		    ASO_DEBUG_PUB.add('UQ organization_id  = '||nvl(to_char(l_Qte_Line_Rec.organization_id),'null') , 1, 'Y');
6106 		    ASO_DEBUG_PUB.add('UQ Inventory_item_id  = '||l_Qte_Line_Rec.inventory_item_id, 1, 'Y');
6107 	     END IF;
6108 
6109           IF l_Qte_Line_Rec.inventory_item_id <> FND_API.G_MISS_NUM THEN
6110 
6111               ASO_VALIDATE_PVT.Validate_Inventory_Item(
6112 		                   p_init_msg_list     => FND_API.G_FALSE,
6113 		                   p_inventory_item_id => l_Qte_Line_Rec.inventory_item_id,
6114                              p_organization_id   => l_Qte_Line_Rec.organization_id,
6115 		                   x_return_status     => x_return_status,
6116                              x_msg_count         => x_msg_count,
6117                              x_msg_data          => x_msg_data);
6118 
6119 	         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6120                   RAISE FND_API.G_EXC_ERROR;
6121               END IF;
6122           END IF ;
6123 
6124 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6125               aso_debug_pub.add('after inventory item'||  x_return_status, 1, 'Y');
6126 	     end if;
6127 
6128         -- bug 5196952
6129       if   (P_shipment_Tbl.count > 0) then
6130 
6131 	  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
6132 
6133           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6134            aso_debug_pub.add('Update_Quote_line  - ship method codeof  quote line is being updated ', 1, 'N');
6135            aso_debug_pub.add('Update_Quote_line  - before validate ship_method_code ', 1, 'N');
6136           end if;
6137          ASO_VALIDATE_PVT.validate_ship_method_code
6138          (
6139           p_init_msg_list          => fnd_api.g_false,
6140           p_qte_header_id          => lx_qte_line_rec.quote_header_id,
6141           p_qte_line_id            => lx_qte_line_rec.quote_line_id,
6142           p_organization_id        => lx_qte_line_rec.organization_id,
6143           p_ship_method_code       =>  p_shipment_tbl(1).ship_method_code,
6144           p_operation_code         => 'UPDATE',
6145           x_return_status          => x_return_status,
6146           x_msg_count              => x_msg_count,
6147           x_msg_data               => x_msg_data);
6148 
6149           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6150            aso_debug_pub.add('Update_Quote_line  - After validate ship_method_code ', 1, 'N');
6151           end if;
6152 
6153           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6154               RAISE FND_API.G_EXC_ERROR;
6155           END IF;
6156         end if;  -- end if for ship method code check
6157 	 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
6158       -- 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
6159           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6160            aso_debug_pub.add('Update_Quote_line  - Organization id of quote line is being updated ', 1, 'N');
6161            aso_debug_pub.add('Update_Quote_line  - before validate ship_method_code ', 1, 'N');
6162           end if;
6163          ASO_VALIDATE_PVT.validate_ship_method_code
6164          (
6165           p_init_msg_list          => fnd_api.g_false,
6166           p_qte_header_id          => lx_qte_line_rec.quote_header_id,
6167           p_qte_line_id            => lx_qte_line_rec.quote_line_id,
6168           p_organization_id        => lx_qte_line_rec.organization_id,
6169           p_ship_method_code       => fnd_api.g_miss_char,
6170           p_operation_code         => 'UPDATE',
6171           x_return_status          => x_return_status,
6172           x_msg_count              => x_msg_count,
6173           x_msg_data               => x_msg_data);
6174 
6175           IF aso_debug_pub.g_debug_flag = 'Y' THEN
6176            aso_debug_pub.add('Update_Quote_line  - After validate ship_method_code ', 1, 'N');
6177           end if;
6178 
6179           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6180               RAISE FND_API.G_EXC_ERROR;
6181           END IF;
6182       end if; -- end if for shipment tbl check
6183 
6184 
6185              l_db_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows (P_Qte_Line_Id => l_Qte_Line_Rec.quote_line_id );
6186 
6187           FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6188 
6189           -- bug 4258846
6190              IF  l_Qte_Line_Rec.start_date_active = FND_API.G_MISS_DATE THEN
6191                  l_Qte_Line_Rec.start_date_active :=  l_db_qte_line_rec.start_date_active;
6192              END IF;
6193              IF  l_Qte_Line_Rec.end_date_active  = FND_API.G_MISS_DATE THEN
6194                  l_Qte_Line_Rec.end_date_active :=  l_db_qte_line_rec.end_date_active;
6195              END IF;
6196              IF  l_Qte_Line_Rec.organization_id  = FND_API.G_MISS_NUM THEN
6197                  l_Qte_Line_Rec.organization_id :=  l_db_qte_line_rec.organization_id;
6198              END IF;
6199 
6200               IF l_db_qte_line_dtl_tbl.COUNT > 0 THEN
6201 
6202                    IF l_qte_line_dtl_tbl(i).service_duration = FND_API.G_MISS_NUM THEN
6203                      l_qte_line_dtl_tbl(i).service_duration := l_db_qte_line_dtl_tbl(i).service_duration;
6204                   END IF;
6205 
6206                   IF l_qte_line_dtl_tbl(i).service_period = FND_API.G_MISS_CHAR THEN
6207                     l_qte_line_dtl_tbl(i).service_period := l_db_qte_line_dtl_tbl(i).service_period;
6208                   END IF;
6209 
6210                   IF l_qte_line_dtl_tbl(i).service_coterminate_flag = FND_API.G_MISS_CHAR  THEN
6211                     l_qte_line_dtl_tbl(i).service_coterminate_flag := l_db_qte_line_dtl_tbl(i).service_coterminate_flag;
6212                   END IF;
6213 
6214 		    END IF;
6215 
6216               ASO_VALIDATE_PVT.Validate_Service(
6217                              p_init_msg_list             => FND_API.G_FALSE,
6218                              p_inventory_item_id         => l_Qte_Line_Rec.inventory_item_id,
6219                              p_start_date_active         => l_Qte_Line_Rec.start_date_active,
6220                              p_end_date_active           => l_Qte_Line_Rec.end_date_active,
6221                              p_service_duration          => l_qte_line_dtl_tbl(i).service_duration,
6222                              p_service_period            => l_qte_line_dtl_tbl(i).service_period,
6223                              p_service_coterminate_flag  => l_qte_line_dtl_tbl(i).service_coterminate_flag,
6224                              p_organization_id           => l_Qte_Line_Rec.organization_id,
6225                              x_return_status             => x_return_status,
6226                              x_msg_count                 => x_msg_count,
6227                              x_msg_data                  => x_msg_data);
6228 
6229 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
6230                   aso_debug_pub.add('Update_Quote_line: After Validate_Service: x_return_status: '|| x_return_status);
6231 	         end if;
6232 
6233               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6234 
6235                   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6236                       FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_INFORMATION');
6237                       FND_MESSAGE.Set_Token('INFO','SERVICE', FALSE);
6238                       FND_MSG_PUB.ADD;
6239                   END IF;
6240 
6241                   RAISE FND_API.G_EXC_ERROR;
6242 
6243               END IF;
6244 
6245               --validate service period
6246 
6247               ASO_VALIDATE_PVT.Validate_UOM_code(
6248                              p_init_msg_list      => FND_API.G_FALSE,
6249                              p_uom_code           => l_qte_line_dtl_tbl(i).service_period,
6250                              p_organization_id    => l_Qte_Line_Rec.organization_id,
6251                              p_inventory_item_id  => l_Qte_Line_Rec.inventory_item_id,
6252                              x_return_status      => x_return_status,
6253                              x_msg_count          => x_msg_count,
6254                              x_msg_data           => x_msg_data);
6255 
6256 	         IF aso_debug_pub.g_debug_flag = 'Y' THEN
6257                   aso_debug_pub.add('Update_Quote_line: After validate service period: x_return_status: '|| x_return_status);
6258 	         end if;
6259 
6260               IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6261                    RAISE FND_API.G_EXC_ERROR;
6262               END IF;
6263 
6264               --Service cannot be added to a product that is being returned
6265 
6266               IF l_qte_line_dtl_tbl(i).service_ref_type_code = 'QUOTE'
6267                   AND l_qte_line_dtl_tbl(i).service_ref_line_id IS NOT NULL
6268                   AND l_qte_line_dtl_tbl(i).service_ref_line_id <> FND_API.G_MISS_NUM THEN
6269 
6270                     OPEN C_line_category_code(l_qte_line_dtl_tbl(i).service_ref_line_id);
6271                     FETCH C_line_category_code INTO l_line_category_code;
6272 
6273                     IF C_line_category_code%FOUND AND l_line_category_code = 'RETURN' THEN
6274 
6275                         CLOSE C_line_category_code;
6276 
6277                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6278                             FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REFERENCE');
6279                             FND_MSG_PUB.ADD;
6280                         END IF;
6281 
6282                         RAISE FND_API.G_EXC_ERROR;
6283 
6284                     END IF;
6285 
6286                     CLOSE C_line_category_code;
6287 
6288               END IF;
6289 
6290 		    --New code for Bug#3280130
6291 
6292 	         if aso_debug_pub.g_debug_flag = 'Y' then
6293                   aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_line_id: ' || l_qte_line_dtl_tbl(i).service_ref_line_id);
6294               end if;
6295 
6296 		    if l_qte_line_dtl_tbl(i).service_ref_line_id is not null and
6297 		       l_qte_line_dtl_tbl(i).service_ref_line_id <> fnd_api.g_miss_num then
6298 
6299 	             if aso_debug_pub.g_debug_flag = 'Y' then
6300                       aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_type_code: ' || l_qte_line_dtl_tbl(i).service_ref_type_code);
6301                   end if;
6302 
6303 			   if l_qte_line_dtl_tbl(i).service_ref_type_code is null or
6304 			      l_qte_line_dtl_tbl(i).service_ref_type_code = fnd_api.g_miss_char then
6305 
6306                       open c_service_ref_type_code( l_qte_line_dtl_tbl(i).quote_line_detail_id );
6307                       fetch c_service_ref_type_code into l_service_ref_type_code;
6308                       close c_service_ref_type_code;
6309 
6310 	                 if aso_debug_pub.g_debug_flag = 'Y' then
6311                           aso_debug_pub.add('l_service_ref_type_code: ' || l_service_ref_type_code);
6312                       end if;
6313 
6314                       if l_service_ref_type_code is null then
6315 
6316                           x_return_status := fnd_api.g_ret_sts_error;
6317 
6318                           IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6319                               FND_MESSAGE.Set_Name('ASO', 'ASO_API_INVALID_ID');
6320                               FND_MESSAGE.Set_Token('COLUMN', 'SERVICE_REF_TYPE_CODE', FALSE);
6321                               FND_MESSAGE.Set_Token('VALUE', l_qte_line_dtl_tbl(i).service_ref_type_code,FALSE);
6322                               FND_MSG_PUB.ADD;
6323                           END IF;
6324 
6325                           raise fnd_api.g_exc_error;
6326 
6327                       end if;
6328 
6329                   else
6330 
6331                       l_service_ref_type_code := l_qte_line_dtl_tbl(i).service_ref_type_code;
6332 
6333                   end if;
6334 
6335 	             if aso_debug_pub.g_debug_flag = 'Y' then
6336                       aso_debug_pub.add('l_service_ref_type_code: ' || l_service_ref_type_code);
6337                       aso_debug_pub.add('l_qte_line_dtl_tbl('||i||').service_ref_line_id: ' || l_qte_line_dtl_tbl(i).service_ref_line_id);
6338                       aso_debug_pub.add('UPDATE_QUOTE_LINE: Before calling aso_validate_pvt.validate_service_ref_line_id');
6339                   end if;
6340 
6341                   aso_validate_pvt.validate_service_ref_line_id (
6342                                   p_init_msg_list         => fnd_api.g_false,
6343                                   p_service_ref_type_code => l_service_ref_type_code,
6344                                   p_service_ref_line_id   => l_qte_line_dtl_tbl(i).service_ref_line_id,
6345                                   p_qte_header_id         => l_Qte_Line_Rec.quote_header_id,
6346                                   x_return_status         => x_return_status,
6347                                   x_msg_count             => x_msg_count,
6348                                   x_msg_data              => x_msg_data);
6349 
6350 	             if aso_debug_pub.g_debug_flag = 'Y' then
6351                       aso_debug_pub.add('UPDATE_QUOTE_LINE: After calling aso_validate_pvt.validate_service_ref_line_id');
6352                       aso_debug_pub.add('UPDATE_QUOTE_LINE: x_return_status: '|| x_return_status);
6353                   end if;
6354 
6355 	             if x_return_status <> fnd_api.g_ret_sts_success then
6356                      raise fnd_api.g_exc_error;
6357                   end if;
6358 
6359               end if;
6360 
6361 		    --End new code for Bug#3280130
6362 
6363           END LOOP; -- FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6364 
6365           --You cannot select the line category code "Return" if a service is selected for a product.
6366 
6367           IF l_Qte_Line_Rec.line_category_code = 'RETURN' THEN
6368 
6369                OPEN c_service_exist;
6370                FETCH c_service_exist INTO l_qln_exist;
6371 
6372                IF c_service_exist%FOUND THEN
6373 
6374                    CLOSE c_service_exist;
6375 
6376                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6377 	                  FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_LINE_CATEGORY');
6378                        FND_MSG_PUB.ADD;
6379 	              END IF;
6380 
6381                    RAISE FND_API.G_EXC_ERROR;
6382 
6383                END IF;
6384 
6385                CLOSE c_service_exist;
6386 
6387           END IF;
6388 
6389       END IF; -- inter entity validation
6390 
6391 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6392       	aso_debug_pub.add('ASO_QUOTE_LINES_PVT: UPDATE_QUOTE_LINE: End of Inter entity validations');
6393 	 end if;
6394 
6395 
6396       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6397           RAISE FND_API.G_EXC_ERROR;
6398       END IF;
6399 
6400 	 -- order_type must exist and be active in OE_ORDER_TYPES
6401       l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row(l_Qte_Line_Rec.QUOTE_HEADER_ID);
6402 
6403 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6404 		aso_debug_pub.add('Validation level is set',1,'N');
6405 		aso_debug_pub.add('l_control_rec.application_type_code: '|| l_control_rec.application_type_code ,1,'N');
6406 	 end if;
6407 
6408       ASO_CHECK_TCA_PVT.check_line_account_info(
6409                       p_api_version                => 1.0,
6410                       p_init_msg_list              => FND_API.G_FALSE,
6411                       p_cust_account_id            => l_qte_header_rec.cust_account_id,
6412                       p_qte_line_rec               => l_Qte_Line_Rec,
6413                       p_line_shipment_tbl          => l_shipment_tbl,
6414                       p_application_type_code      => l_control_rec.application_type_code,
6415 				  x_return_status              => l_return_status,
6416                       x_msg_count                  => l_msg_count,
6417                       x_msg_data                   => l_msg_data );
6418 
6419       IF l_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
6420           raise FND_API.G_EXC_ERROR;
6421       END IF;
6422 
6423       ASO_TRADEIN_PVT.LineType( p_init_msg_list  => FND_API.G_FALSE,
6424                                 p_qte_header_rec => l_qte_header_rec,
6425                                 p_qte_line_rec   => l_Qte_Line_Rec,
6426                                 x_return_status  => x_return_status,
6427                                 x_msg_count      => x_msg_count,
6428                                 x_msg_data       => x_msg_data);
6429 
6430 	  IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6431            RAISE FND_API.G_EXC_ERROR;
6432        END IF;
6433 
6434 	  if aso_debug_pub.g_debug_flag = 'Y' THEN
6435            aso_debug_pub.add('after order type'||  x_return_status, 1, 'Y');
6436 	  end if;
6437 
6438        If (p_qte_header_rec.order_type_id = FND_API.G_MISS_NUM) then -- [This is for backward compatibility]
6439 	       l_db_order_type_id  := l_qte_header_rec.order_type_id;
6440        else
6441 	       l_db_order_type_id  :=  p_qte_header_rec.order_type_id;
6442        end if;
6443 
6444        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
6445 
6446             ASO_validate_PVT.Validate_ln_type_for_ord_type(
6447                            p_init_msg_list     =>   FND_API.G_FALSE,
6448                            p_qte_header_rec    =>   l_qte_header_rec,
6449                            P_Qte_Line_rec      =>   l_Qte_Line_Rec,
6450                            x_return_status     =>   x_return_status,
6451                            x_msg_count         =>   x_msg_count,
6452                            x_msg_data          =>   x_msg_data);
6453 
6454             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6455                 RAISE FND_API.G_EXC_ERROR;
6456             END IF;
6457 
6458        End if;
6459 
6460 
6461           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
6462             aso_debug_pub.add('x_return_status for Validate_ln_type_for_ord_type'||  x_return_status, 1, 'Y');
6463           END IF;
6464 
6465 
6466        ASO_TRADEIN_PVT.Validate_Line_Tradein( p_init_msg_list  => FND_API.G_FALSE,
6467                                               p_qte_header_rec => l_qte_header_rec,
6468                                               P_Qte_Line_rec   => l_Qte_Line_Rec,
6469                                               x_return_status  => x_return_status,
6470                                               x_msg_count      => x_msg_count,
6471                                               x_msg_data       => x_msg_data);
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 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6478 		 aso_debug_pub.add('Update_Quote_Line - after Validate_Line_Tradein:x_return_status: '||x_return_status, 1, 'N');
6479 	  end if;
6480 
6481        ASO_TRADEIN_PVT.Validate_IB_Return_Qty( p_init_msg_list      =>   FND_API.G_FALSE,
6482                                                p_Qte_Line_rec       =>   l_Qte_Line_Rec,
6483                                                p_Qte_Line_Dtl_Tbl   =>   l_qte_line_dtl_tbl,
6484                                                x_return_status      =>   x_return_status,
6485                                                x_msg_count          =>   x_msg_count,
6486                                                x_msg_data           =>   x_msg_data);
6487 
6488        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6489            RAISE FND_API.G_EXC_ERROR;
6490        END IF;
6491 
6492 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6493 		 aso_debug_pub.add('Update_Quote_Line - after Validate_IB_Return_Qty:x_return_status: '||x_return_status, 1, 'N');
6494 	  end if;
6495 
6496        IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
6497 
6498              ASO_VALIDATE_PVT.Validate_Sales_Credit_Return(
6499                             p_init_msg_list     => FND_API.G_FALSE,
6500                             p_sales_credit_tbl  => p_sales_credit_tbl,
6501                             p_qte_line_rec      => l_Qte_Line_Rec,
6502                             x_return_status     => x_return_status,
6503                             x_msg_count         => x_msg_count,
6504                             x_msg_data          => x_msg_data);
6505 
6506              IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6507                  RAISE FND_API.G_EXC_ERROR;
6508              END IF;
6509 
6510        END IF;
6511 
6512        IF aso_debug_pub.g_debug_flag = 'Y' THEN
6513 		 aso_debug_pub.add('Update_Quote_Line - before Validate_Agreement:l_Qte_Line_Rec.Agreement_Id: '||l_Qte_Line_Rec.Agreement_Id, 1, 'N');
6514 	  end if;
6515 
6516        IF (l_Qte_Line_Rec.Agreement_Id IS NOT NULL AND l_Qte_Line_Rec.Agreement_Id <> FND_API.G_MISS_NUM) THEN
6517 
6518             ASO_VALIDATE_PVT.Validate_Agreement(
6519                            p_init_msg_list  => FND_API.G_FALSE,
6520                            P_Agreement_Id   => l_Qte_Line_Rec.Agreement_Id,
6521                            x_return_status  => x_return_status,
6522                            x_msg_count      => x_msg_count,
6523                            x_msg_data       => x_msg_data);
6524 
6525 	       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6526 		      aso_debug_pub.add('Update_Quote_Line - after Validate_Agreement:x_return_status: '||x_return_status, 1, 'N');
6527 	       end if;
6528 
6529             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
6530                 RAISE FND_API.G_EXC_ERROR;
6531             END IF;
6532 
6533        END IF;
6534 
6535     -- Validate the invoice to cust party id and payment info, if any
6536      IF l_payment_tbl.count = 0   then
6537         l_payment_tbl := aso_utility_pvt.Query_Payment_Rows( l_qte_line_rec.QUOTE_HEADER_ID,l_qte_line_rec.quote_line_id);
6538      Else
6539 	  -- check to see if the value has been changed, if not get orig value from db
6540 	  if l_payment_tbl(1).payment_type_code = fnd_api.g_miss_char then
6541 	   open get_payment_type_code(l_payment_tbl(1).payment_id);
6542 	   fetch get_payment_type_code into l_payment_tbl(1).payment_type_code;
6543 	   close get_payment_type_code;
6544 	  end if;
6545      End if;
6546 
6547 	-- bill to customer may not have been changed, if so get orig value from db
6548 	if l_qte_line_rec.invoice_to_cust_party_id = fnd_api.g_miss_num then
6549 	 open get_bill_to_party(l_qte_line_rec.quote_line_id);
6550 	 fetch get_bill_to_party into l_qte_line_rec.invoice_to_cust_party_id;
6551 	 close get_bill_to_party;
6552 	end if;
6553 
6554      IF l_payment_tbl.count > 0 then
6555           l_payment_rec := l_payment_tbl(1);
6556         --IF l_payment_rec.payment_type_code = 'CREDIT_CARD' THEN
6557            IF aso_debug_pub.g_debug_flag = 'Y' THEN
6558               aso_debug_pub.add('Before  calling Validate_cc_info ', 1, 'Y');
6559            END IF;
6560            l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row (l_qte_line_rec.Quote_Header_Id );
6561 
6562            aso_validate_pvt.Validate_cc_info
6563             (
6564                 p_init_msg_list     =>  fnd_api.g_false,
6565                 p_payment_rec       =>  l_payment_rec,
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 aso_debug_pub.g_debug_flag = 'Y' THEN
6573               aso_debug_pub.add('after calling Validate_cc_info ', 1, 'Y');
6574               aso_debug_pub.add('Validate_cc_info  Return Status: '||x_return_status, 1, 'Y');
6575            END IF;
6576 
6577             if x_return_status <> fnd_api.g_ret_sts_success then
6578               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
6579                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6580               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
6581                  RAISE FND_API.G_EXC_ERROR;
6582               ELSE
6583                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6584               END IF;
6585             end if;
6586         --END IF;
6587 
6588       End if;
6589 
6590       -- rset the payment tbl as the original count may have been changed becoz of the validation
6591       l_Payment_Tbl := l_orig_payment_tbl;
6592 
6593        x_qte_line_rec := l_Qte_Line_Rec;
6594 
6595        ASO_QUOTE_LINES_PKG.Update_Row(
6596           p_QUOTE_LINE_ID   	=> l_Qte_Line_Rec.QUOTE_LINE_ID,
6597           p_CREATION_DATE  	=> l_qte_line_rec.creation_date,
6598           p_CREATED_BY  	=> G_USER_ID,
6599           p_LAST_UPDATE_DATE  	=> SYSDATE,
6600           p_LAST_UPDATED_BY  	=> G_USER_ID,
6601           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
6602           p_REQUEST_ID  	=> l_qte_line_rec.REQUEST_ID,
6603           p_PROGRAM_APPLICATION_ID  => l_qte_line_rec.PROGRAM_APPLICATION_ID,
6604           p_PROGRAM_ID  	=> l_qte_line_rec.PROGRAM_ID,
6605           p_PROGRAM_UPDATE_DATE => l_qte_line_rec.PROGRAM_UPDATE_DATE,
6606           p_QUOTE_HEADER_ID    	=> l_qte_line_rec.QUOTE_HEADER_ID,
6607           p_ORG_ID             	=> l_qte_line_rec.ORG_ID        ,
6608           p_LINE_CATEGORY_CODE  => l_qte_line_rec.LINE_CATEGORY_CODE ,
6609           p_ITEM_TYPE_CODE    	=> l_qte_line_rec.ITEM_TYPE_CODE ,
6610           p_LINE_NUMBER       	=> l_qte_line_rec.LINE_NUMBER,
6611           p_START_DATE_ACTIVE   => trunc(l_qte_line_rec.START_DATE_ACTIVE),
6612           p_END_DATE_ACTIVE     => trunc(l_qte_line_rec.END_DATE_ACTIVE)   ,
6613           p_ORDER_LINE_TYPE_ID  => l_qte_line_rec.ORDER_LINE_TYPE_ID ,
6614           p_INVOICE_TO_PARTY_SITE_ID
6615 				=> l_qte_line_rec.INVOICE_TO_PARTY_SITE_ID   ,
6616           p_INVOICE_TO_PARTY_ID => l_qte_line_rec.INVOICE_TO_PARTY_ID  ,
6617           p_INVOICE_TO_CUST_ACCOUNT_ID     => l_qte_line_rec.INVOICE_TO_CUST_ACCOUNT_ID  ,
6618           p_ORGANIZATION_ID     => l_qte_line_rec.ORGANIZATION_ID,
6619           p_INVENTORY_ITEM_ID   => l_qte_line_rec.INVENTORY_ITEM_ID ,
6620           p_QUANTITY   		=> l_qte_line_rec.QUANTITY   ,
6621           p_UOM_CODE    	=> l_qte_line_rec.UOM_CODE ,
6622           p_MARKETING_SOURCE_CODE_ID
6623 				=> l_qte_line_rec.marketing_source_code_id,
6624           p_PRICE_LIST_ID    	=> l_qte_line_rec.PRICE_LIST_ID   ,
6625           p_PRICE_LIST_LINE_ID  => l_qte_line_rec.PRICE_LIST_LINE_ID,
6626           p_CURRENCY_CODE     	=> l_qte_line_rec.CURRENCY_CODE   ,
6627           p_LINE_LIST_PRICE     => l_qte_line_rec.LINE_LIST_PRICE    ,
6628           p_LINE_ADJUSTED_AMOUNT  => l_qte_line_rec.LINE_ADJUSTED_AMOUNT    ,
6629           p_LINE_ADJUSTED_PERCENT => l_qte_line_rec.LINE_ADJUSTED_PERCENT    ,
6630           p_LINE_QUOTE_PRICE  	   => l_qte_line_rec.LINE_QUOTE_PRICE   ,
6631           p_RELATED_ITEM_ID        => l_qte_line_rec.RELATED_ITEM_ID ,
6632           p_ITEM_RELATIONSHIP_TYPE => l_qte_line_rec.ITEM_RELATIONSHIP_TYPE   ,
6633           p_ACCOUNTING_RULE_ID     => l_qte_line_rec.ACCOUNTING_RULE_ID,
6634           p_INVOICING_RULE_ID      => l_qte_line_rec.INVOICING_RULE_ID,
6635           p_SPLIT_SHIPMENT_FLAG    => l_qte_line_rec.SPLIT_SHIPMENT_FLAG   ,
6636           p_BACKORDER_FLAG         => l_qte_line_rec.BACKORDER_FLAG   ,
6637           p_MINISITE_ID            => l_qte_line_rec.MINISITE_ID,
6638           p_SECTION_ID             => l_qte_line_rec.SECTION_ID,
6639           p_ATTRIBUTE_CATEGORY 	   => l_qte_line_rec.ATTRIBUTE_CATEGORY,
6640           p_ATTRIBUTE1     => l_qte_line_rec.ATTRIBUTE1,
6641           p_ATTRIBUTE2     => l_qte_line_rec.ATTRIBUTE2,
6642           p_ATTRIBUTE3     => l_qte_line_rec.ATTRIBUTE3,
6643           p_ATTRIBUTE4     => l_qte_line_rec.ATTRIBUTE4,
6644           p_ATTRIBUTE5     => l_qte_line_rec.ATTRIBUTE5,
6645           p_ATTRIBUTE6     => l_qte_line_rec.ATTRIBUTE6,
6646           p_ATTRIBUTE7     => l_qte_line_rec.ATTRIBUTE7,
6647           p_ATTRIBUTE8     => l_qte_line_rec.ATTRIBUTE8,
6648           p_ATTRIBUTE9     => l_qte_line_rec.ATTRIBUTE9,
6649           p_ATTRIBUTE10    => l_qte_line_rec.ATTRIBUTE10,
6650           p_ATTRIBUTE11    => l_qte_line_rec.ATTRIBUTE11,
6651           p_ATTRIBUTE12    => l_qte_line_rec.ATTRIBUTE12,
6652           p_ATTRIBUTE13    => l_qte_line_rec.ATTRIBUTE13,
6653           p_ATTRIBUTE14    => l_qte_line_rec.ATTRIBUTE14,
6654           p_ATTRIBUTE15    => l_qte_line_rec.ATTRIBUTE15,
6655           p_ATTRIBUTE16  =>  l_qte_line_rec.ATTRIBUTE16,
6656           p_ATTRIBUTE17  =>  l_qte_line_rec.ATTRIBUTE17,
6657           p_ATTRIBUTE18  =>  l_qte_line_rec.ATTRIBUTE18,
6658           p_ATTRIBUTE19  =>  l_qte_line_rec.ATTRIBUTE19,
6659           p_ATTRIBUTE20  =>  l_qte_line_rec.ATTRIBUTE20,
6660 		p_PRICED_PRICE_LIST_ID    => l_qte_line_rec.PRICED_PRICE_LIST_ID,
6661           p_AGREEMENT_ID            => l_qte_line_rec.AGREEMENT_ID,
6662           p_COMMITMENT_ID           => l_qte_line_rec.COMMITMENT_ID,
6663 		p_DISPLAY_ARITHMETIC_OPERATOR => l_qte_line_rec.DISPLAY_ARITHMETIC_OPERATOR,
6664 		p_LINE_TYPE_SOURCE_FLAG => l_qte_line_rec.LINE_TYPE_SOURCE_FLAG,
6665 		p_SERVICE_ITEM_FLAG     => l_qte_line_rec.SERVICE_ITEM_FLAG,
6666 		p_SERVICEABLE_PRODUCT_FLAG => l_qte_line_rec.SERVICEABLE_PRODUCT_FLAG,
6667 		p_INVOICE_TO_CUST_PARTY_ID => l_qte_line_rec.INVOICE_TO_CUST_PARTY_ID,
6668 		P_Selling_Price_Change	   => l_qte_line_rec.Selling_Price_Change,
6669 		P_Recalculate_flag	   => l_qte_line_rec.recalculate_flag,
6670 		p_pricing_line_type_indicator	   => l_qte_line_rec.pricing_line_type_indicator,
6671           p_END_CUSTOMER_PARTY_ID         =>  l_Qte_Line_Rec.END_CUSTOMER_PARTY_ID,
6672           p_END_CUSTOMER_CUST_PARTY_ID    =>  l_Qte_Line_Rec.END_CUSTOMER_CUST_PARTY_ID,
6673           p_END_CUSTOMER_PARTY_SITE_ID    =>  l_Qte_Line_Rec.END_CUSTOMER_PARTY_SITE_ID,
6674           p_END_CUSTOMER_CUST_ACCOUNT_ID  =>  l_Qte_Line_Rec.END_CUSTOMER_CUST_ACCOUNT_ID,
6675 		p_OBJECT_VERSION_NUMBER   =>  l_qte_line_rec.object_version_number,
6676           p_CHARGE_PERIODICITY_CODE => l_qte_line_rec.CHARGE_PERIODICITY_CODE, -- Recurring charges Change
6677           p_SHIP_MODEL_COMPLETE_FLAG => l_qte_line_rec.SHIP_MODEL_COMPLETE_FLAG,
6678           p_LINE_PAYNOW_CHARGES => l_qte_line_rec.LINE_PAYNOW_CHARGES,
6679           p_LINE_PAYNOW_TAX => l_qte_line_rec.LINE_PAYNOW_TAX,
6680           p_LINE_PAYNOW_SUBTOTAL => l_qte_line_rec.LINE_PAYNOW_SUBTOTAL,
6681 		p_PRICING_QUANTITY_UOM => l_qte_line_rec.PRICING_QUANTITY_UOM,
6682 		p_PRICING_QUANTITY => l_qte_line_rec.PRICING_QUANTITY,
6683           p_CONFIG_MODEL_TYPE => l_qte_line_rec.CONFIG_MODEL_TYPE
6684 );
6685 
6686 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
6687 		aso_debug_pub.add('Update_Quote_line - after line.update ', 1, 'N');
6688 	end if;
6689 -- line details
6690 
6691    -- Start Updating Line_category_code and order_line_type_id of configured lines if Model
6692    -- line Line_category_code and order_line_type_id value has changed Bmishra 02/15/02
6693 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
6694    		aso_debug_pub.add('Update_Quote_lines - l_Qte_Line_Rec.line_category_code: '||l_Qte_Line_Rec.line_category_code, 1, 'Y');
6695    		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');
6696 	end if;
6697    IF (l_Qte_Line_Rec.line_category_code <> FND_API.G_MISS_CHAR) OR
6698                  (l_Qte_Line_Rec.order_line_type_id <> FND_API.G_MISS_NUM) THEN
6699 				IF aso_debug_pub.g_debug_flag = 'Y' THEN
6700        				aso_debug_pub.add('Update_Quote_lines - l_Qte_Line_Rec.item_type_code: '||l_Qte_Line_Rec.item_type_code, 1, 'Y');
6701 				end if;
6702        IF l_Qte_Line_Rec.item_type_code = FND_API.G_MISS_CHAR THEN
6703           OPEN c_item_type_code;
6704           FETCH c_item_type_code INTO l_item_type_code;
6705 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
6706           		aso_debug_pub.add('Update_Quote_lines - Cursor c_item_type_code: l_item_type_code: '||l_item_type_code, 1, 'Y');
6707 		end if;
6708           CLOSE c_item_type_code;
6709        ELSIF l_Qte_Line_Rec.item_type_code = 'MDL' THEN
6710           l_item_type_code := l_Qte_Line_Rec.item_type_code;
6711        END IF;
6712 
6713        IF l_item_type_code = 'MDL' THEN
6714 
6715           OPEN c_order_line_type_id(l_Qte_Line_Rec.quote_line_id);
6716           FETCH c_order_line_type_id INTO l_line_category_code, l_order_line_type_id,
6717 								  l_config_header_id, l_config_revision_num;
6718 
6719           if aso_debug_pub.g_debug_flag = 'Y' then
6720 
6721              aso_debug_pub.add('c_order_line_type_id: l_line_category_code:  '||l_line_category_code);
6722              aso_debug_pub.add('c_order_line_type_id: l_order_line_type_id:  '||l_order_line_type_id);
6723              aso_debug_pub.add('c_order_line_type_id: l_config_header_id:    '||l_config_header_id);
6724              aso_debug_pub.add('c_order_line_type_id: l_config_revision_num: '||l_config_revision_num);
6725 
6726           end if;
6727 
6728           CLOSE c_order_line_type_id;
6729 
6730           BEGIN
6731 
6732               if aso_debug_pub.g_debug_flag = 'Y' then
6733                   aso_debug_pub.add('Update_Quote_lines - Updating l_line_category_code of children.');
6734               end if;
6735 
6736               if l_config_header_id is not null and l_config_revision_num is not null then
6737 
6738                   update aso_quote_lines_all
6739                   set line_category_code =  l_line_category_code,
6740                       order_line_type_id =  l_order_line_type_id,
6741                       last_update_date   =  sysdate,
6742                       last_updated_by    =  fnd_global.user_id,
6743                       last_update_login  =  fnd_global.conc_login_id
6744                   where  NVL(line_type_source_flag,'X') <> 'C'
6745                     and  quote_line_id in( select quote_line_id
6746                                           from aso_quote_line_details
6747                                           where ref_line_id is not null
6748                                           and ref_type_code       = 'CONFIG'
6749                                           and config_header_id    = l_config_header_id
6750                                           and config_revision_num = l_config_revision_num );
6751 
6752               end if;
6753 
6754 
6755                   EXCEPTION
6756 
6757                        WHEN OTHERS THEN
6758                             x_return_status := FND_API.G_RET_STS_ERROR;
6759 
6760 			    if aso_debug_pub.g_debug_flag = 'Y' then
6761                        aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_quote_line: line_category_code
6762 								  update, inside WHEN OTHERS EXCEPTION');
6763 			    end if;
6764 
6765 
6766           END;
6767 
6768        END IF;
6769    END IF;
6770 
6771    -- End Updating Line_category_code and order_line_type_id of configured lines if Model
6772    -- line Line_category_code and order_line_type_id value has changed 02/15/02
6773 
6774 
6775 
6776 FOR i in 1..l_qte_line_dtl_tbl.count LOOP
6777         l_qte_line_dtl_rec := l_qte_line_dtl_tbl(i);
6778 
6779 
6780   IF l_qte_line_dtl_tbl(i).operation_code = 'CREATE' THEN
6781 
6782 
6783         l_qte_line_dtl_rec.quote_line_id := l_qte_line_rec.quote_line_id;
6784         x_qte_line_dtl_tbl(i) := l_qte_line_dtl_rec;
6785         -- BC4J Fix
6786 	   --x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID := null;
6787 
6788         ASO_QUOTE_LINE_DETAILS_PKG.Insert_Row(
6789           px_QUOTE_LINE_DETAIL_ID
6790 			 	=> x_qte_line_dtl_tbl(i).QUOTE_LINE_DETAIL_ID,
6791           p_CREATION_DATE  	=> SYSDATE,
6792           p_CREATED_BY  	=> G_USER_ID,
6793           p_LAST_UPDATE_DATE  	=> SYSDATE,
6794           p_LAST_UPDATED_BY  	=> G_USER_ID,
6795           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
6796           p_REQUEST_ID  	=> l_qte_line_dtl_rec.REQUEST_ID,
6797           p_PROGRAM_APPLICATION_ID
6798 				=> l_qte_line_dtl_rec.PROGRAM_APPLICATION_ID,
6799           p_PROGRAM_ID  	=> l_qte_line_dtl_rec.PROGRAM_ID,
6800           p_PROGRAM_UPDATE_DATE => l_qte_line_dtl_rec.PROGRAM_UPDATE_DATE,
6801           p_QUOTE_LINE_ID  	=> l_qte_line_dtl_rec.QUOTE_LINE_ID,
6802           p_CONFIG_HEADER_ID  	=> l_qte_line_dtl_rec.CONFIG_HEADER_ID,
6803           p_CONFIG_REVISION_NUM => l_qte_line_dtl_rec.CONFIG_REVISION_NUM,
6804           p_COMPLETE_CONFIGURATION_FLAG
6805 			=> l_qte_line_dtl_rec.COMPLETE_CONFIGURATION_FLAG,
6806           p_VALID_CONFIGURATION_FLAG
6807 			=> l_qte_line_dtl_rec.VALID_CONFIGURATION_FLAG,
6808           p_COMPONENT_CODE  	=> l_qte_line_dtl_rec.COMPONENT_CODE,
6809           p_SERVICE_COTERMINATE_FLAG
6810 			=> l_qte_line_dtl_rec.SERVICE_COTERMINATE_FLAG,
6811           p_SERVICE_DURATION  	=> l_qte_line_dtl_rec.SERVICE_DURATION,
6812           p_SERVICE_PERIOD  	=> l_qte_line_dtl_rec.SERVICE_PERIOD,
6813           p_SERVICE_UNIT_SELLING_PERCENT
6814 			=> l_qte_line_dtl_rec.SERVICE_UNIT_SELLING_PERCENT,
6815           p_SERVICE_UNIT_LIST_PERCENT
6816 			=> l_qte_line_dtl_rec.SERVICE_UNIT_LIST_PERCENT,
6817           p_SERVICE_NUMBER  	=> l_qte_line_dtl_rec.SERVICE_NUMBER,
6818           p_UNIT_PERCENT_BASE_PRICE
6819 			=> l_qte_line_dtl_rec.UNIT_PERCENT_BASE_PRICE,
6820           p_ATTRIBUTE_CATEGORY  => l_qte_line_dtl_rec.ATTRIBUTE_CATEGORY,
6821           p_ATTRIBUTE1  	=> l_qte_line_dtl_rec.ATTRIBUTE1,
6822           p_ATTRIBUTE2  	=> l_qte_line_dtl_rec.ATTRIBUTE2,
6823           p_ATTRIBUTE3  	=> l_qte_line_dtl_rec.ATTRIBUTE3,
6824           p_ATTRIBUTE4  	=> l_qte_line_dtl_rec.ATTRIBUTE4,
6825           p_ATTRIBUTE5  	=> l_qte_line_dtl_rec.ATTRIBUTE5,
6826           p_ATTRIBUTE6  	=> l_qte_line_dtl_rec.ATTRIBUTE6,
6827           p_ATTRIBUTE7  	=> l_qte_line_dtl_rec.ATTRIBUTE7,
6828           p_ATTRIBUTE8  	=> l_qte_line_dtl_rec.ATTRIBUTE8,
6829           p_ATTRIBUTE9  	=> l_qte_line_dtl_rec.ATTRIBUTE9,
6830           p_ATTRIBUTE10  	=> l_qte_line_dtl_rec.ATTRIBUTE10,
6831           p_ATTRIBUTE11  	=> l_qte_line_dtl_rec.ATTRIBUTE11,
6832           p_ATTRIBUTE12  	=> l_qte_line_dtl_rec.ATTRIBUTE12,
6833           p_ATTRIBUTE13  	=> l_qte_line_dtl_rec.ATTRIBUTE13,
6834           p_ATTRIBUTE14  	=> l_qte_line_dtl_rec.ATTRIBUTE14,
6835           p_ATTRIBUTE15  	=> l_qte_line_dtl_rec.ATTRIBUTE15,
6836           p_ATTRIBUTE16  => l_qte_line_dtl_rec.ATTRIBUTE16,
6837           p_ATTRIBUTE17  => l_qte_line_dtl_rec.ATTRIBUTE17,
6838           p_ATTRIBUTE18  => l_qte_line_dtl_rec.ATTRIBUTE18,
6839           p_ATTRIBUTE19  => l_qte_line_dtl_rec.ATTRIBUTE19,
6840           p_ATTRIBUTE20  => l_qte_line_dtl_rec.ATTRIBUTE20,
6841 		p_SERVICE_REF_TYPE_CODE  => l_qte_line_dtl_rec.SERVICE_REF_TYPE_CODE,
6842           p_SERVICE_REF_ORDER_NUMBER
6843 			=> l_qte_line_dtl_rec.SERVICE_REF_ORDER_NUMBER,
6844           p_SERVICE_REF_LINE_NUMBER
6845 			=> l_qte_line_dtl_rec.SERVICE_REF_LINE_NUMBER,
6846           p_SERVICE_REF_LINE_ID     => l_qte_line_dtl_rec.SERVICE_REF_LINE_ID,
6847           p_SERVICE_REF_SYSTEM_ID  => l_qte_line_dtl_rec.SERVICE_REF_SYSTEM_ID,
6848           p_SERVICE_REF_OPTION_NUMB
6849 			=> l_qte_line_dtl_rec.SERVICE_REF_OPTION_NUMB,
6850           p_SERVICE_REF_SHIPMENT_NUMB
6851 			=> l_qte_line_dtl_rec.SERVICE_REF_SHIPMENT_NUMB,
6852           p_RETURN_REF_TYPE       => l_qte_line_dtl_rec.RETURN_REF_TYPE,
6853           p_RETURN_REF_HEADER_ID  => l_qte_line_dtl_rec.RETURN_REF_HEADER_ID,
6854           p_RETURN_REF_LINE_ID    => l_qte_line_dtl_rec.RETURN_REF_LINE_ID,
6855           p_RETURN_ATTRIBUTE1     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE1,
6856           p_RETURN_ATTRIBUTE2     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE2,
6857           p_RETURN_ATTRIBUTE3     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE3,
6858           p_RETURN_ATTRIBUTE4     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE4,
6859           p_RETURN_ATTRIBUTE5     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE5,
6860           p_RETURN_ATTRIBUTE6     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE6,
6861           p_RETURN_ATTRIBUTE7     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE7,
6862           p_RETURN_ATTRIBUTE8     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE8,
6863           p_RETURN_ATTRIBUTE9     => l_qte_line_dtl_rec.RETURN_ATTRIBUTE9,
6864           p_RETURN_ATTRIBUTE10    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE10,
6865           p_RETURN_ATTRIBUTE11    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE11,
6866           p_RETURN_ATTRIBUTE15    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE15,
6867           p_RETURN_ATTRIBUTE12    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE12,
6868           p_RETURN_ATTRIBUTE13    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE13,
6869           p_RETURN_ATTRIBUTE14    => l_qte_line_dtl_rec.RETURN_ATTRIBUTE14,
6870           p_RETURN_REASON_CODE    => l_qte_line_dtl_rec.RETURN_REASON_CODE,
6871           p_CONFIG_ITEM_ID        => l_qte_line_dtl_rec.CONFIG_ITEM_ID,
6872           p_REF_TYPE_CODE         => l_qte_line_dtl_rec.REF_TYPE_CODE,
6873           p_REF_LINE_ID           => l_qte_line_dtl_rec.REF_LINE_ID,
6874 		p_INSTANCE_ID           => l_qte_line_dtl_rec.INSTANCE_ID,
6875 		p_BOM_SORT_ORDER        => l_qte_line_dtl_rec.BOM_SORT_ORDER,
6876 	     p_CONFIG_DELTA          => l_qte_line_dtl_rec.CONFIG_DELTA,
6877 	     p_CONFIG_INSTANCE_NAME  => l_qte_line_dtl_rec.CONFIG_INSTANCE_NAME,
6878 		p_OBJECT_VERSION_NUMBER => l_qte_line_dtl_rec.OBJECT_VERSION_NUMBER,
6879           p_top_model_line_id     => l_qte_line_dtl_rec.top_model_line_id,
6880           p_ato_line_id           => l_qte_line_dtl_rec.ato_line_id,
6881           p_component_sequence_id => l_qte_line_dtl_rec.component_sequence_id
6882 		);
6883 
6884           IF l_qte_line_dtl_rec.service_ref_type_code = 'QUOTE' THEN
6885               OPEN C_Line_relation(l_qte_line_dtl_rec.service_ref_line_id, l_qte_line_dtl_rec.quote_line_id);
6886               FETCH C_Line_relation INTO l_line_rel;
6887               IF C_Line_relation%NOTFOUND THEN
6888                   l_line_rtlship_rec.operation_code         := 'CREATE';
6889                   l_line_rtlship_rec.quote_line_id          := l_qte_line_dtl_rec.SERVICE_REF_LINE_ID;
6890                   l_line_rtlship_rec.related_quote_line_id  := x_qte_line_rec.quote_line_id;
6891                   l_line_rtlship_rec.relationship_type_code := 'SERVICE';
6892                   l_line_rtlship_rec.reciprocal_flag        := FND_API.G_FALSE;
6893 
6894                   ASO_LINE_RLTSHIP_PVT.Create_line_rltship(
6895                       P_Api_Version_Number   => 1.0,
6896                       P_LINE_RLTSHIP_Rec     => l_line_rtlship_rec,
6897                       X_LINE_RELATIONSHIP_ID => x_relationship_id,
6898                       X_Return_Status        => x_return_status,
6899                       X_Msg_Count            => x_msg_count,
6900                       X_Msg_Data             => x_msg_data
6901                   );
6902               END IF;
6903           END IF;
6904 
6905     ELSIF l_qte_line_dtl_tbl(i).operation_code = 'UPDATE' THEN
6906 
6907         x_qte_line_dtl_tbl(i) := l_qte_line_dtl_rec;
6908 
6909             ASO_QUOTE_LINE_DETAILS_PKG.Update_Row(
6910           p_QUOTE_LINE_DETAIL_ID  => l_qte_line_dtl_rec.QUOTE_LINE_DETAIL_ID,
6911           p_CREATION_DATE  	  => l_qte_line_dtl_rec.creation_date,
6912           p_CREATED_BY  	  => G_USER_ID,
6913           p_LAST_UPDATE_DATE  	  => SYSDATE,
6914           p_LAST_UPDATED_BY  	  => G_USER_ID,
6915           p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
6916           p_REQUEST_ID  	  => l_qte_line_dtl_rec.REQUEST_ID,
6917           p_PROGRAM_APPLICATION_ID
6918 				=> l_qte_line_dtl_rec.PROGRAM_APPLICATION_ID,
6919           p_PROGRAM_ID  	=> l_qte_line_dtl_rec.PROGRAM_ID,
6920           p_PROGRAM_UPDATE_DATE => l_qte_line_dtl_rec.PROGRAM_UPDATE_DATE,
6921           p_QUOTE_LINE_ID  	=> l_qte_line_dtl_rec.QUOTE_LINE_ID,
6922           p_CONFIG_HEADER_ID  	=> l_qte_line_dtl_rec.CONFIG_HEADER_ID,
6923           p_CONFIG_REVISION_NUM => l_qte_line_dtl_rec.CONFIG_REVISION_NUM,
6924           p_COMPLETE_CONFIGURATION_FLAG
6925 			=> l_qte_line_dtl_rec.COMPLETE_CONFIGURATION_FLAG,
6926           p_VALID_CONFIGURATION_FLAG
6927 			=> l_qte_line_dtl_rec.VALID_CONFIGURATION_FLAG,
6928           p_COMPONENT_CODE  	=> l_qte_line_dtl_rec.COMPONENT_CODE,
6929           p_SERVICE_COTERMINATE_FLAG
6930 			=> l_qte_line_dtl_rec.SERVICE_COTERMINATE_FLAG,
6931           p_SERVICE_DURATION  	=> l_qte_line_dtl_rec.SERVICE_DURATION,
6932           p_SERVICE_PERIOD  	=> l_qte_line_dtl_rec.SERVICE_PERIOD,
6933           p_SERVICE_UNIT_SELLING_PERCENT
6934 			=> l_qte_line_dtl_rec.SERVICE_UNIT_SELLING_PERCENT,
6935           p_SERVICE_UNIT_LIST_PERCENT
6936 			=> l_qte_line_dtl_rec.SERVICE_UNIT_LIST_PERCENT,
6937           p_SERVICE_NUMBER  => l_qte_line_dtl_rec.SERVICE_NUMBER,
6938           p_UNIT_PERCENT_BASE_PRICE
6939 			=> l_qte_line_dtl_rec.UNIT_PERCENT_BASE_PRICE,
6940           p_ATTRIBUTE_CATEGORY  => l_qte_line_dtl_rec.ATTRIBUTE_CATEGORY,
6941           p_ATTRIBUTE1  	=> l_qte_line_dtl_rec.ATTRIBUTE1,
6942           p_ATTRIBUTE2  	=> l_qte_line_dtl_rec.ATTRIBUTE2,
6943           p_ATTRIBUTE3  	=> l_qte_line_dtl_rec.ATTRIBUTE3,
6944           p_ATTRIBUTE4  	=> l_qte_line_dtl_rec.ATTRIBUTE4,
6945           p_ATTRIBUTE5  	=> l_qte_line_dtl_rec.ATTRIBUTE5,
6946           p_ATTRIBUTE6  	=> l_qte_line_dtl_rec.ATTRIBUTE6,
6947           p_ATTRIBUTE7  	=> l_qte_line_dtl_rec.ATTRIBUTE7,
6948           p_ATTRIBUTE8  	=> l_qte_line_dtl_rec.ATTRIBUTE8,
6949           p_ATTRIBUTE9  	=> l_qte_line_dtl_rec.ATTRIBUTE9,
6950           p_ATTRIBUTE10 	=> l_qte_line_dtl_rec.ATTRIBUTE10,
6951           p_ATTRIBUTE11  	=> l_qte_line_dtl_rec.ATTRIBUTE11,
6952           p_ATTRIBUTE12  	=> l_qte_line_dtl_rec.ATTRIBUTE12,
6953           p_ATTRIBUTE13  	=> l_qte_line_dtl_rec.ATTRIBUTE13,
6954           p_ATTRIBUTE14  	=> l_qte_line_dtl_rec.ATTRIBUTE14,
6955           p_ATTRIBUTE15  	=> l_qte_line_dtl_rec.ATTRIBUTE15,
6956           p_ATTRIBUTE16  =>  l_qte_line_dtl_rec.ATTRIBUTE16,
6957           p_ATTRIBUTE17  =>  l_qte_line_dtl_rec.ATTRIBUTE17,
6958           p_ATTRIBUTE18  =>  l_qte_line_dtl_rec.ATTRIBUTE18,
6959           p_ATTRIBUTE19  =>  l_qte_line_dtl_rec.ATTRIBUTE19,
6960           p_ATTRIBUTE20  => l_qte_line_dtl_rec.ATTRIBUTE20,
6961 		p_SERVICE_REF_TYPE_CODE  => l_qte_line_dtl_rec.SERVICE_REF_TYPE_CODE,
6962           p_SERVICE_REF_ORDER_NUMBER
6963 				=> l_qte_line_dtl_rec.SERVICE_REF_ORDER_NUMBER,
6964           p_SERVICE_REF_LINE_NUMBER
6965 				=> l_qte_line_dtl_rec.SERVICE_REF_LINE_NUMBER,
6966           p_SERVICE_REF_LINE_ID => l_qte_line_dtl_rec.SERVICE_REF_LINE_ID,
6967           p_SERVICE_REF_SYSTEM_ID  => l_qte_line_dtl_rec.SERVICE_REF_SYSTEM_ID,
6968           p_SERVICE_REF_OPTION_NUMB
6969 				=> l_qte_line_dtl_rec.SERVICE_REF_OPTION_NUMB,
6970           p_SERVICE_REF_SHIPMENT_NUMB
6971 			       => l_qte_line_dtl_rec.SERVICE_REF_SHIPMENT_NUMB,
6972           p_RETURN_REF_TYPE  	=> l_qte_line_dtl_rec.RETURN_REF_TYPE,
6973           p_RETURN_REF_HEADER_ID=> l_qte_line_dtl_rec.RETURN_REF_HEADER_ID,
6974           p_RETURN_REF_LINE_ID  => l_qte_line_dtl_rec.RETURN_REF_LINE_ID,
6975           p_RETURN_ATTRIBUTE1  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE1,
6976           p_RETURN_ATTRIBUTE2  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE2,
6977           p_RETURN_ATTRIBUTE3  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE3,
6978           p_RETURN_ATTRIBUTE4  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE4,
6979           p_RETURN_ATTRIBUTE5  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE5,
6980           p_RETURN_ATTRIBUTE6  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE6,
6981           p_RETURN_ATTRIBUTE7  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE7,
6982           p_RETURN_ATTRIBUTE8  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE8,
6983           p_RETURN_ATTRIBUTE9  	=> l_qte_line_dtl_rec.RETURN_ATTRIBUTE9,
6984           p_RETURN_ATTRIBUTE10  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE10,
6985           p_RETURN_ATTRIBUTE11  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE11,
6986           p_RETURN_ATTRIBUTE15  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE15,
6987           p_RETURN_ATTRIBUTE12  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE12,
6988           p_RETURN_ATTRIBUTE13  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE13,
6989           p_RETURN_ATTRIBUTE14  => l_qte_line_dtl_rec.RETURN_ATTRIBUTE14,
6990           p_RETURN_REASON_CODE    => l_qte_line_dtl_rec.RETURN_REASON_CODE,
6991           p_CONFIG_ITEM_ID    => l_qte_line_dtl_rec.CONFIG_ITEM_ID,
6992           p_REF_TYPE_CODE       => l_qte_line_dtl_rec.REF_TYPE_CODE,
6993           p_REF_LINE_ID         => l_qte_line_dtl_rec.REF_LINE_ID,
6994 		p_INSTANCE_ID         => l_qte_line_dtl_rec.INSTANCE_ID,
6995 		p_BOM_SORT_ORDER      => l_qte_line_dtl_rec.BOM_SORT_ORDER,
6996 		p_CONFIG_DELTA          => l_qte_line_dtl_rec.CONFIG_DELTA,
6997 	     p_CONFIG_INSTANCE_NAME  => l_qte_line_dtl_rec.CONFIG_INSTANCE_NAME,
6998 		p_OBJECT_VERSION_NUMBER => l_qte_line_dtl_rec.OBJECT_VERSION_NUMBER,
6999           p_top_model_line_id     => l_qte_line_dtl_rec.top_model_line_id,
7000           p_ato_line_id           => l_qte_line_dtl_rec.ato_line_id,
7001           p_component_sequence_id => l_qte_line_dtl_rec.component_sequence_id
7002 		);
7003 
7004          l_db_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows (P_Qte_Line_Id => x_qte_line_rec.quote_line_id );
7005          IF l_db_qte_line_dtl_tbl(1).service_ref_type_code = 'QUOTE' THEN
7006              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);
7007              FETCH C_Line_relation INTO l_line_rel;
7008              IF C_Line_relation%NOTFOUND THEN
7009                  l_line_rtlship_rec.operation_code         := 'CREATE';
7010                  l_line_rtlship_rec.quote_line_id          := l_db_qte_line_dtl_tbl(1).SERVICE_REF_LINE_ID;
7011                  l_line_rtlship_rec.related_quote_line_id  := x_qte_line_rec.quote_line_id;
7012                  l_line_rtlship_rec.relationship_type_code := 'SERVICE';
7013                  l_line_rtlship_rec.reciprocal_flag        := FND_API.G_FALSE;
7014                  ASO_LINE_RLTSHIP_PVT.Create_line_rltship(
7015                      P_Api_Version_Number   => 1.0,
7016       	             P_LINE_RLTSHIP_Rec     => l_line_rtlship_rec,
7017                      X_LINE_RELATIONSHIP_ID => x_relationship_id,
7018                      X_Return_Status        => x_return_status,
7019                      X_Msg_Count            => x_msg_count,
7020                      X_Msg_Data             => x_msg_data
7021                  );
7022             END IF;
7023         END IF;
7024 
7025   ELSIF l_qte_line_dtl_tbl(i).operation_code = 'DELETE' THEN
7026 
7027         ASO_QUOTE_LINE_DETAILS_PKG.Delete_Row(
7028          p_QUOTE_LINE_DETAIL_ID => l_qte_line_dtl_rec.quote_line_detail_id);
7029   END IF;
7030 
7031 END LOOP;
7032 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7033 		aso_debug_pub.add('Update_Quote_line - after line_details.update ', 1, 'Y');
7034 	end if;
7035 
7036 -- Service line quantity update Bmishra 01/09/02
7037   l_call_update := FND_API.G_FALSE;
7038   IF l_Qte_Line_Rec.inventory_item_id = FND_API.G_MISS_NUM THEN
7039      OPEN c_inventory_item_id;
7040      FETCH c_inventory_item_id INTO l_Qte_Line_Rec.inventory_item_id;
7041      CLOSE c_inventory_item_id;
7042   END IF;
7043   OPEN c_service (l_Qte_Line_Rec.quote_line_id);
7044   FETCH c_service INTO l_service_item_flag, l_serviceable_product_flag;
7045 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7046   		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_service_item_flag'||l_service_item_flag,1,'N');
7047   		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_serviceable_product_flag'||l_serviceable_product_flag, 1, 'N');
7048 	end if;
7049   IF c_service%FOUND THEN
7050      CLOSE c_service;
7051      IF l_service_item_flag = 'Y' THEN
7052 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7053         aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: Inside IF l_service_item_flag = Y',1,'N');
7054 	end if;
7055         l_service := FND_API.G_TRUE;
7056         l_call_update := FND_API.G_TRUE;
7057      ELSIF l_serviceable_product_flag = 'Y' THEN
7058 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7059         aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: Inside IF l_serviceable_product_flag = Y',
7060 1,'N');
7061 	end if;
7062         l_service := FND_API.G_FALSE;
7063         l_call_update := FND_API.G_TRUE;
7064      END IF;
7065 
7066 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7067      		aso_debug_pub.add('ASO_QUOTE_LINES_PVT: Update_Quote_lines: l_call_update'||l_call_update,1,'N');
7068 	end if;
7069      IF l_call_update = FND_API.G_TRUE THEN
7070         ASO_QUOTE_LINES_PVT.service_item_qty_update
7071          (p_qte_line_rec  => l_Qte_Line_Rec ,
7072           p_service_item_flag  => l_service,
7073           x_return_status => X_return_status
7074           );
7075 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7076      		aso_debug_pub.add('Update_Quote_lines - after call to ASO_QUOTE_LINES_PVT.service_item_qty_update '||x_return_status, 1, 'Y');
7077 	end if;
7078      END IF;
7079   ELSE
7080      CLOSE c_service;
7081 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7082      		aso_debug_pub.add('Update_quote_lines, Item not found in inventry',1,'N');
7083 	end if;
7084   END IF;
7085 
7086 -- End of Service line quantity update Bmishra 01/09/02
7087 
7088 
7089 -- sales credits
7090    FOR i in 1..p_Sales_Credit_Tbl.count LOOP
7091 
7092      l_Sales_Credit_rec := p_sales_credit_tbl(i);
7093      x_sales_credit_tbl(i) := l_sales_credit_rec;
7094 
7095      IF l_sales_credit_rec.operation_code = 'CREATE' THEN
7096      l_sales_credit_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7097      l_sales_credit_rec.quote_header_id := l_qte_line_rec.quote_header_id;
7098      -- BC4J Fix
7099 	--x_sales_credit_tbl(i).sales_credit_id := NULL;
7100        ASO_SALES_CREDITS_PKG.Insert_Row(
7101           p_CREATION_DATE  => SYSDATE,
7102           p_CREATED_BY  => G_USER_ID,
7103           p_LAST_UPDATED_BY  => G_USER_ID,
7104           p_LAST_UPDATE_DATE  => SYSDATE,
7105           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
7106           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
7107           p_PROGRAM_APPLICATION_ID  => l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
7108           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
7109           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
7110           px_SALES_CREDIT_ID  => x_SALES_CREDIT_tbl(i).SALES_CREDIT_ID,
7111           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
7112           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
7113           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
7114           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
7115           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
7116           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
7117           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
7118 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
7119           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
7120           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
7121           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
7122           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
7123           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
7124           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
7125           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
7126           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
7127           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
7128           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
7129           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
7130           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
7131           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
7132           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
7133           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
7134           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
7135           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
7136           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
7137           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
7138           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
7139           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
7140 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
7141           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
7142           p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
7143 
7144         ELSIF l_sales_credit_rec.operation_code = 'UPDATE' THEN
7145                ASO_SALES_CREDITS_PKG.Update_Row(
7146           p_CREATION_DATE  => l_sales_CREDIT_rec.creation_date,
7147           p_CREATED_BY  => G_USER_ID,
7148           p_LAST_UPDATED_BY  => G_USER_ID,
7149           p_LAST_UPDATE_DATE  => SYSDATE,
7150           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
7151           p_REQUEST_ID  => l_sales_CREDIT_rec.REQUEST_ID,
7152           p_PROGRAM_APPLICATION_ID=> l_sales_CREDIT_rec.PROGRAM_APPLICATION_ID,
7153           p_PROGRAM_ID  => l_sales_CREDIT_rec.PROGRAM_ID,
7154           p_PROGRAM_UPDATE_DATE  => l_sales_CREDIT_rec.PROGRAM_UPDATE_DATE,
7155           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID,
7156           p_QUOTE_HEADER_ID  => l_sales_CREDIT_rec.QUOTE_HEADER_ID,
7157           p_QUOTE_LINE_ID  => l_sales_CREDIT_rec.QUOTE_LINE_ID,
7158           p_PERCENT  => l_sales_CREDIT_rec.PERCENT,
7159           p_RESOURCE_ID  => l_sales_CREDIT_rec.RESOURCE_ID,
7160           p_RESOURCE_GROUP_ID  => l_sales_CREDIT_rec.RESOURCE_GROUP_ID,
7161           p_EMPLOYEE_PERSON_ID  => l_sales_CREDIT_rec.EMPLOYEE_PERSON_ID,
7162           p_SALES_CREDIT_TYPE_ID  => l_sales_CREDIT_rec.SALES_CREDIT_TYPE_ID,
7163 --          p_SECURITY_GROUP_ID  => l_sales_CREDIT_rec.SECURITY_GROUP_ID,
7164           p_ATTRIBUTE_CATEGORY_CODE  => l_sales_CREDIT_rec.ATTRIBUTE_CATEGORY_CODE,
7165           p_ATTRIBUTE1  => l_sales_CREDIT_rec.ATTRIBUTE1,
7166           p_ATTRIBUTE2  => l_sales_CREDIT_rec.ATTRIBUTE2,
7167           p_ATTRIBUTE3  => l_sales_CREDIT_rec.ATTRIBUTE3,
7168           p_ATTRIBUTE4  => l_sales_CREDIT_rec.ATTRIBUTE4,
7169           p_ATTRIBUTE5  => l_sales_CREDIT_rec.ATTRIBUTE5,
7170           p_ATTRIBUTE6  => l_sales_CREDIT_rec.ATTRIBUTE6,
7171           p_ATTRIBUTE7  => l_sales_CREDIT_rec.ATTRIBUTE7,
7172           p_ATTRIBUTE8  => l_sales_CREDIT_rec.ATTRIBUTE8,
7173           p_ATTRIBUTE9  => l_sales_CREDIT_rec.ATTRIBUTE9,
7174           p_ATTRIBUTE10  => l_sales_CREDIT_rec.ATTRIBUTE10,
7175           p_ATTRIBUTE11  => l_sales_CREDIT_rec.ATTRIBUTE11,
7176           p_ATTRIBUTE12  => l_sales_CREDIT_rec.ATTRIBUTE12,
7177           p_ATTRIBUTE13  => l_sales_CREDIT_rec.ATTRIBUTE13,
7178           p_ATTRIBUTE14  => l_sales_CREDIT_rec.ATTRIBUTE14,
7179           p_ATTRIBUTE15  => l_sales_CREDIT_rec.ATTRIBUTE15,
7180           p_ATTRIBUTE16  => l_sales_CREDIT_rec.ATTRIBUTE16,
7181           p_ATTRIBUTE17  => l_sales_CREDIT_rec.ATTRIBUTE17,
7182           p_ATTRIBUTE18  => l_sales_CREDIT_rec.ATTRIBUTE18,
7183           p_ATTRIBUTE19  => l_sales_CREDIT_rec.ATTRIBUTE19,
7184           p_ATTRIBUTE20  => l_sales_CREDIT_rec.ATTRIBUTE20,
7185 		p_SYSTEM_ASSIGNED_FLAG  => 'N',
7186           p_CREDIT_RULE_ID  => l_sales_CREDIT_rec.CREDIT_RULE_ID,
7187 		p_OBJECT_VERSION_NUMBER  => l_sales_CREDIT_rec.OBJECT_VERSION_NUMBER);
7188 
7189          ELSIF l_sales_credit_rec.operation_code = 'DELETE' THEN
7190                  ASO_SALES_CREDITS_PKG.Delete_Row(
7191           p_SALES_CREDIT_ID  => l_SALES_CREDIT_rec.SALES_CREDIT_ID);
7192 
7193          END IF;
7194 END LOOP;
7195 
7196 
7197 -- sales credits
7198 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7199             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: l_qte_line_rec.quote_header_id: '||l_qte_line_rec.quote_header_id,1,'N');
7200             aso_debug_pub.add('Validate_Quote_Percent: BEFORE: l_qte_line_rec.quote_line_id:   '||l_qte_line_rec.quote_line_id,1,'N');
7201 	end if;
7202 
7203             IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
7204                 IF x_sales_credit_tbl.count > 0 THEN
7205                     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
7206                         x_sales_credit_tbl(1).quote_header_id := l_qte_line_rec.quote_header_id;
7207                     END IF;
7208                     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
7209                         x_sales_credit_tbl(1).quote_line_id := l_qte_line_rec.quote_line_id;
7210                     END IF;
7211 
7212                     ASO_VALIDATE_PVT.Validate_Quote_Percent(
7213                         p_init_msg_list             => FND_API.G_FALSE,
7214                         p_sales_credit_tbl          => x_sales_credit_tbl,
7215                         x_return_status             => x_return_status,
7216                         x_msg_count                 => x_msg_count,
7217                         x_msg_data                  => x_msg_data
7218                     );
7219                     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7220                         RAISE FND_API.G_EXC_ERROR;
7221                     END IF;
7222                 END IF;
7223             END IF;
7224 
7225 -- end sales credits
7226 
7227  -- check for duplicate promotions, see bug 4521799
7228   IF aso_debug_pub.g_debug_flag = 'Y' THEN
7229      aso_debug_pub.add('Before  calling Validate_Promotion price_attr_tbl.count: '|| p_price_attributes_tbl.count, 1, 'Y');
7230   END IF;
7231 
7232   ASO_VALIDATE_PVT.Validate_Promotion (
7233      P_Api_Version_Number       => 1.0,
7234      P_Init_Msg_List            => FND_API.G_FALSE,
7235      P_Commit                   => FND_API.G_FALSE,
7236      p_price_attr_tbl           => p_price_attributes_tbl,
7237      x_price_attr_tbl           => lx_price_attr_tbl,
7238      x_return_status            => x_return_status,
7239      x_msg_count                => x_msg_count,
7240      x_msg_data                 => x_msg_data);
7241 
7242    IF aso_debug_pub.g_debug_flag = 'Y' THEN
7243       aso_debug_pub.add('after calling Validate_Promotion ', 1, 'Y');
7244       aso_debug_pub.add('Validate_Promotion  Return Status: '||x_return_status, 1, 'Y');
7245    END IF;
7246 
7247    if x_return_status <> fnd_api.g_ret_sts_success then
7248       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7249          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7250       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
7251          RAISE FND_API.G_EXC_ERROR;
7252       ELSE
7253          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7254       END IF;
7255    end if;
7256 
7257 
7258  -- end of check for duplicate promotions
7259 
7260 -- price attributes
7261 
7262     FOR i in 1..l_price_attributes_tbl.count LOOP
7263 
7264      l_price_attributes_rec := l_price_attributes_tbl(i);
7265     -- l_price_attributes_rec.quote_line_id := p_qte_line_rec.quote_line_id;
7266      x_price_attributes_tbl(i) := l_price_attributes_rec;
7267 
7268      IF l_price_attributes_rec.operation_code = 'CREATE' THEN
7269         l_price_attributes_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7270       l_price_attributes_rec.quote_header_id := l_qte_line_rec.quote_header_id;
7271        -- BC4J Fix
7272 	  -- x_price_attributes_tbl(1).price_attribute_id := NULL;
7273 
7274    ASO_PRICE_ATTRIBUTES_PKG.Insert_Row(
7275           px_PRICE_ATTRIBUTE_ID   => x_price_attributes_tbl(i).price_attribute_id,
7276           p_CREATION_DATE  	=> SYSDATE,
7277           p_CREATED_BY  	=> G_USER_ID,
7278           p_LAST_UPDATE_DATE  	=> SYSDATE,
7279           p_LAST_UPDATED_BY  	=> G_USER_ID,
7280           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
7281           p_REQUEST_ID  	=> l_Qte_Line_Rec.REQUEST_ID,
7282           p_PROGRAM_APPLICATION_ID  => l_Qte_Line_Rec.PROGRAM_APPLICATION_ID,
7283           p_PROGRAM_ID  	=> l_Qte_Line_Rec.PROGRAM_ID,
7284           p_PROGRAM_UPDATE_DATE  => l_Qte_Line_Rec.PROGRAM_UPDATE_DATE,
7285           p_QUOTE_HEADER_ID      => l_Qte_Line_Rec.QUOTE_HEADER_ID,
7286           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
7287           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
7288           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
7289           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
7290           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
7291           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
7292           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
7293           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
7294           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
7295           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
7296           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
7297           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
7298         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
7299         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
7300         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
7301         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
7302         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
7303         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
7304         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
7305         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
7306         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
7307         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
7308         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
7309         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
7310         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
7311         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
7312         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
7313         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
7314         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
7315         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
7316         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
7317         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
7318         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
7319         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
7320         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
7321         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
7322         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
7323         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
7324         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
7325         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
7326         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
7327         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
7328         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
7329         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
7330         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
7331         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
7332         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
7333         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
7334         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
7335         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
7336         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
7337         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
7338         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
7339         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
7340         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
7341         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
7342         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
7343         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
7344         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
7345         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
7346         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
7347         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
7348         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
7349         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
7350         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
7351         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
7352         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
7353         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
7354         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
7355         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
7356         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
7357         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
7358         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
7359         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
7360         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
7361         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
7362         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
7363         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
7364         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
7365         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
7366         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
7367         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
7368         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
7369         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
7370         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
7371         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
7372         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
7373         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
7374         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
7375         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
7376         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
7377         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
7378         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
7379         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
7380         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
7381         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
7382         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
7383         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
7384         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
7385         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
7386         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
7387         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
7388         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
7389           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
7390           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
7391           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
7392           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
7393           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
7394           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
7395           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
7396           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
7397           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
7398           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
7399           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
7400           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
7401           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
7402           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
7403           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
7404           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
7405 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
7406           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
7407           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
7408           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
7409           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
7410 		p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
7411 );
7412 
7413 
7414    ELSIF l_price_attributes_rec.operation_code = 'UPDATE' THEN
7415 
7416 ASO_PRICE_ATTRIBUTES_PKG.Update_Row(
7417           p_PRICE_ATTRIBUTE_ID  => l_price_attributes_rec.price_attribute_id,
7418           p_CREATION_DATE  	=> l_price_attributes_rec.creation_date,
7419           p_CREATED_BY  	=> G_USER_ID,
7420           p_LAST_UPDATE_DATE  	=> SYSDATE,
7421           p_LAST_UPDATED_BY  	=> G_USER_ID,
7422           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
7423           p_REQUEST_ID  	=> l_Qte_Line_Rec.REQUEST_ID,
7424           p_PROGRAM_APPLICATION_ID  => l_Qte_Line_Rec.PROGRAM_APPLICATION_ID,
7425           p_PROGRAM_ID  	 => l_Qte_Line_Rec.PROGRAM_ID,
7426           p_PROGRAM_UPDATE_DATE  => l_Qte_Line_Rec.PROGRAM_UPDATE_DATE,
7427           p_QUOTE_HEADER_ID      => l_Qte_Line_Rec.QUOTE_HEADER_ID,
7428           p_QUOTE_LINE_ID        => l_price_attributes_rec.quote_line_id,
7429           p_FLEX_TITLE           => l_price_attributes_rec.flex_title,
7430           p_PRICING_CONTEXT      => l_price_attributes_rec.pricing_context,
7431           p_PRICING_ATTRIBUTE1    => l_price_attributes_rec.PRICING_ATTRIBUTE1,
7432           p_PRICING_ATTRIBUTE2    => l_price_attributes_rec.PRICING_ATTRIBUTE2,
7433           p_PRICING_ATTRIBUTE3    => l_price_attributes_rec.PRICING_ATTRIBUTE3,
7434           p_PRICING_ATTRIBUTE4    => l_price_attributes_rec.PRICING_ATTRIBUTE4,
7435           p_PRICING_ATTRIBUTE5    => l_price_attributes_rec.PRICING_ATTRIBUTE5,
7436           p_PRICING_ATTRIBUTE6    => l_price_attributes_rec.PRICING_ATTRIBUTE6,
7437           p_PRICING_ATTRIBUTE7    => l_price_attributes_rec.PRICING_ATTRIBUTE7,
7438           p_PRICING_ATTRIBUTE8    => l_price_attributes_rec.PRICING_ATTRIBUTE8,
7439           p_PRICING_ATTRIBUTE9    => l_price_attributes_rec.PRICING_ATTRIBUTE9,
7440         p_PRICING_ATTRIBUTE10    => l_price_attributes_rec.PRICING_ATTRIBUTE10,
7441         p_PRICING_ATTRIBUTE11    => l_price_attributes_rec.PRICING_ATTRIBUTE11,
7442         p_PRICING_ATTRIBUTE12    => l_price_attributes_rec.PRICING_ATTRIBUTE12,
7443         p_PRICING_ATTRIBUTE13    => l_price_attributes_rec.PRICING_ATTRIBUTE13,
7444         p_PRICING_ATTRIBUTE14    => l_price_attributes_rec.PRICING_ATTRIBUTE14,
7445         p_PRICING_ATTRIBUTE15    => l_price_attributes_rec.PRICING_ATTRIBUTE15,
7446         p_PRICING_ATTRIBUTE16    => l_price_attributes_rec.PRICING_ATTRIBUTE16,
7447         p_PRICING_ATTRIBUTE17    => l_price_attributes_rec.PRICING_ATTRIBUTE17,
7448         p_PRICING_ATTRIBUTE18    => l_price_attributes_rec.PRICING_ATTRIBUTE18,
7449         p_PRICING_ATTRIBUTE19    => l_price_attributes_rec.PRICING_ATTRIBUTE19,
7450         p_PRICING_ATTRIBUTE20    => l_price_attributes_rec.PRICING_ATTRIBUTE20,
7451         p_PRICING_ATTRIBUTE21    => l_price_attributes_rec.PRICING_ATTRIBUTE21,
7452         p_PRICING_ATTRIBUTE22    => l_price_attributes_rec.PRICING_ATTRIBUTE22,
7453         p_PRICING_ATTRIBUTE23    => l_price_attributes_rec.PRICING_ATTRIBUTE23,
7454         p_PRICING_ATTRIBUTE24    => l_price_attributes_rec.PRICING_ATTRIBUTE24,
7455         p_PRICING_ATTRIBUTE25    => l_price_attributes_rec.PRICING_ATTRIBUTE25,
7456         p_PRICING_ATTRIBUTE26    => l_price_attributes_rec.PRICING_ATTRIBUTE26,
7457         p_PRICING_ATTRIBUTE27    => l_price_attributes_rec.PRICING_ATTRIBUTE27,
7458         p_PRICING_ATTRIBUTE28    => l_price_attributes_rec.PRICING_ATTRIBUTE28,
7459         p_PRICING_ATTRIBUTE29    => l_price_attributes_rec.PRICING_ATTRIBUTE29,
7460         p_PRICING_ATTRIBUTE30    => l_price_attributes_rec.PRICING_ATTRIBUTE30,
7461         p_PRICING_ATTRIBUTE31    => l_price_attributes_rec.PRICING_ATTRIBUTE31,
7462         p_PRICING_ATTRIBUTE32    => l_price_attributes_rec.PRICING_ATTRIBUTE32,
7463         p_PRICING_ATTRIBUTE33    => l_price_attributes_rec.PRICING_ATTRIBUTE33,
7464         p_PRICING_ATTRIBUTE34    => l_price_attributes_rec.PRICING_ATTRIBUTE34,
7465         p_PRICING_ATTRIBUTE35    => l_price_attributes_rec.PRICING_ATTRIBUTE35,
7466         p_PRICING_ATTRIBUTE36    => l_price_attributes_rec.PRICING_ATTRIBUTE36,
7467         p_PRICING_ATTRIBUTE37    => l_price_attributes_rec.PRICING_ATTRIBUTE37,
7468         p_PRICING_ATTRIBUTE38    => l_price_attributes_rec.PRICING_ATTRIBUTE38,
7469         p_PRICING_ATTRIBUTE39    => l_price_attributes_rec.PRICING_ATTRIBUTE39,
7470         p_PRICING_ATTRIBUTE40    => l_price_attributes_rec.PRICING_ATTRIBUTE40,
7471         p_PRICING_ATTRIBUTE41    => l_price_attributes_rec.PRICING_ATTRIBUTE41,
7472         p_PRICING_ATTRIBUTE42    => l_price_attributes_rec.PRICING_ATTRIBUTE42,
7473         p_PRICING_ATTRIBUTE43    => l_price_attributes_rec.PRICING_ATTRIBUTE43,
7474         p_PRICING_ATTRIBUTE44    => l_price_attributes_rec.PRICING_ATTRIBUTE44,
7475         p_PRICING_ATTRIBUTE45    => l_price_attributes_rec.PRICING_ATTRIBUTE45,
7476         p_PRICING_ATTRIBUTE46    => l_price_attributes_rec.PRICING_ATTRIBUTE46,
7477         p_PRICING_ATTRIBUTE47    => l_price_attributes_rec.PRICING_ATTRIBUTE47,
7478         p_PRICING_ATTRIBUTE48    => l_price_attributes_rec.PRICING_ATTRIBUTE48,
7479         p_PRICING_ATTRIBUTE49    => l_price_attributes_rec.PRICING_ATTRIBUTE49,
7480         p_PRICING_ATTRIBUTE50    => l_price_attributes_rec.PRICING_ATTRIBUTE50,
7481         p_PRICING_ATTRIBUTE51    => l_price_attributes_rec.PRICING_ATTRIBUTE51,
7482         p_PRICING_ATTRIBUTE52    => l_price_attributes_rec.PRICING_ATTRIBUTE52,
7483         p_PRICING_ATTRIBUTE53    => l_price_attributes_rec.PRICING_ATTRIBUTE53,
7484         p_PRICING_ATTRIBUTE54    => l_price_attributes_rec.PRICING_ATTRIBUTE54,
7485         p_PRICING_ATTRIBUTE55    => l_price_attributes_rec.PRICING_ATTRIBUTE55,
7486         p_PRICING_ATTRIBUTE56    => l_price_attributes_rec.PRICING_ATTRIBUTE56,
7487         p_PRICING_ATTRIBUTE57    => l_price_attributes_rec.PRICING_ATTRIBUTE57,
7488         p_PRICING_ATTRIBUTE58    => l_price_attributes_rec.PRICING_ATTRIBUTE58,
7489         p_PRICING_ATTRIBUTE59    => l_price_attributes_rec.PRICING_ATTRIBUTE59,
7490         p_PRICING_ATTRIBUTE60    => l_price_attributes_rec.PRICING_ATTRIBUTE60,
7491         p_PRICING_ATTRIBUTE61    => l_price_attributes_rec.PRICING_ATTRIBUTE61,
7492         p_PRICING_ATTRIBUTE62    => l_price_attributes_rec.PRICING_ATTRIBUTE62,
7493         p_PRICING_ATTRIBUTE63    => l_price_attributes_rec.PRICING_ATTRIBUTE63,
7494         p_PRICING_ATTRIBUTE64    => l_price_attributes_rec.PRICING_ATTRIBUTE64,
7495         p_PRICING_ATTRIBUTE65    => l_price_attributes_rec.PRICING_ATTRIBUTE65,
7496         p_PRICING_ATTRIBUTE66    => l_price_attributes_rec.PRICING_ATTRIBUTE66,
7497         p_PRICING_ATTRIBUTE67    => l_price_attributes_rec.PRICING_ATTRIBUTE67,
7498         p_PRICING_ATTRIBUTE68    => l_price_attributes_rec.PRICING_ATTRIBUTE68,
7499         p_PRICING_ATTRIBUTE69    => l_price_attributes_rec.PRICING_ATTRIBUTE69,
7500         p_PRICING_ATTRIBUTE70    => l_price_attributes_rec.PRICING_ATTRIBUTE70,
7501         p_PRICING_ATTRIBUTE71    => l_price_attributes_rec.PRICING_ATTRIBUTE71,
7502         p_PRICING_ATTRIBUTE72    => l_price_attributes_rec.PRICING_ATTRIBUTE72,
7503         p_PRICING_ATTRIBUTE73    => l_price_attributes_rec.PRICING_ATTRIBUTE73,
7504         p_PRICING_ATTRIBUTE74    => l_price_attributes_rec.PRICING_ATTRIBUTE74,
7505         p_PRICING_ATTRIBUTE75    => l_price_attributes_rec.PRICING_ATTRIBUTE75,
7506         p_PRICING_ATTRIBUTE76    => l_price_attributes_rec.PRICING_ATTRIBUTE76,
7507         p_PRICING_ATTRIBUTE77    => l_price_attributes_rec.PRICING_ATTRIBUTE77,
7508         p_PRICING_ATTRIBUTE78    => l_price_attributes_rec.PRICING_ATTRIBUTE78,
7509         p_PRICING_ATTRIBUTE79    => l_price_attributes_rec.PRICING_ATTRIBUTE79,
7510         p_PRICING_ATTRIBUTE80    => l_price_attributes_rec.PRICING_ATTRIBUTE80,
7511         p_PRICING_ATTRIBUTE81    => l_price_attributes_rec.PRICING_ATTRIBUTE81,
7512         p_PRICING_ATTRIBUTE82    => l_price_attributes_rec.PRICING_ATTRIBUTE82,
7513         p_PRICING_ATTRIBUTE83    => l_price_attributes_rec.PRICING_ATTRIBUTE83,
7514         p_PRICING_ATTRIBUTE84    => l_price_attributes_rec.PRICING_ATTRIBUTE84,
7515         p_PRICING_ATTRIBUTE85    => l_price_attributes_rec.PRICING_ATTRIBUTE85,
7516         p_PRICING_ATTRIBUTE86    => l_price_attributes_rec.PRICING_ATTRIBUTE86,
7517         p_PRICING_ATTRIBUTE87    => l_price_attributes_rec.PRICING_ATTRIBUTE87,
7518         p_PRICING_ATTRIBUTE88    => l_price_attributes_rec.PRICING_ATTRIBUTE88,
7519         p_PRICING_ATTRIBUTE89    => l_price_attributes_rec.PRICING_ATTRIBUTE89,
7520         p_PRICING_ATTRIBUTE90    => l_price_attributes_rec.PRICING_ATTRIBUTE90,
7521         p_PRICING_ATTRIBUTE91    => l_price_attributes_rec.PRICING_ATTRIBUTE91,
7522         p_PRICING_ATTRIBUTE92    => l_price_attributes_rec.PRICING_ATTRIBUTE92,
7523         p_PRICING_ATTRIBUTE93    => l_price_attributes_rec.PRICING_ATTRIBUTE93,
7524         p_PRICING_ATTRIBUTE94    => l_price_attributes_rec.PRICING_ATTRIBUTE94,
7525         p_PRICING_ATTRIBUTE95    => l_price_attributes_rec.PRICING_ATTRIBUTE95,
7526         p_PRICING_ATTRIBUTE96    => l_price_attributes_rec.PRICING_ATTRIBUTE96,
7527         p_PRICING_ATTRIBUTE97    => l_price_attributes_rec.PRICING_ATTRIBUTE97,
7528         p_PRICING_ATTRIBUTE98    => l_price_attributes_rec.PRICING_ATTRIBUTE98,
7529         p_PRICING_ATTRIBUTE99    => l_price_attributes_rec.PRICING_ATTRIBUTE99,
7530         p_PRICING_ATTRIBUTE100  => l_price_attributes_rec.PRICING_ATTRIBUTE100,
7531           p_CONTEXT    => l_price_attributes_rec.CONTEXT,
7532           p_ATTRIBUTE1    => l_price_attributes_rec.ATTRIBUTE1,
7533           p_ATTRIBUTE2    => l_price_attributes_rec.ATTRIBUTE2,
7534           p_ATTRIBUTE3    => l_price_attributes_rec.ATTRIBUTE3,
7535           p_ATTRIBUTE4    => l_price_attributes_rec.ATTRIBUTE4,
7536           p_ATTRIBUTE5    => l_price_attributes_rec.ATTRIBUTE5,
7537           p_ATTRIBUTE6    => l_price_attributes_rec.ATTRIBUTE6,
7538           p_ATTRIBUTE7    => l_price_attributes_rec.ATTRIBUTE7,
7539           p_ATTRIBUTE8    => l_price_attributes_rec.ATTRIBUTE8,
7540           p_ATTRIBUTE9    => l_price_attributes_rec.ATTRIBUTE9,
7541           p_ATTRIBUTE10    => l_price_attributes_rec.ATTRIBUTE10,
7542           p_ATTRIBUTE11    => l_price_attributes_rec.ATTRIBUTE11,
7543           p_ATTRIBUTE12    => l_price_attributes_rec.ATTRIBUTE12,
7544           p_ATTRIBUTE13    => l_price_attributes_rec.ATTRIBUTE13,
7545           p_ATTRIBUTE14    => l_price_attributes_rec.ATTRIBUTE14,
7546           p_ATTRIBUTE15    => l_price_attributes_rec.ATTRIBUTE15,
7547 	     p_ATTRIBUTE16    => l_price_attributes_rec.ATTRIBUTE16,
7548           p_ATTRIBUTE17    => l_price_attributes_rec.ATTRIBUTE17,
7549           p_ATTRIBUTE18    => l_price_attributes_rec.ATTRIBUTE18,
7550           p_ATTRIBUTE19    => l_price_attributes_rec.ATTRIBUTE19,
7551           p_ATTRIBUTE20    => l_price_attributes_rec.ATTRIBUTE20,
7552 		p_OBJECT_VERSION_NUMBER  => l_price_attributes_rec.OBJECT_VERSION_NUMBER
7553 );
7554 
7555   END IF;
7556 
7557 END LOOP;
7558 
7559 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
7560 		aso_debug_pub.add('Update_Quote_line - after line_price_attribs.update ', 1, 'N');
7561 	end if;
7562 
7563 
7564 -- aso_shipments_tbl
7565 
7566 
7567     FOR i IN 1..l_Shipment_Tbl.count LOOP
7568 
7569 	   l_shipment_rec    := l_shipment_tbl(i);
7570         x_shipment_tbl(i) := l_shipment_rec;
7571 
7572         IF l_shipment_rec.operation_code = 'CREATE' THEN
7573 
7574             l_shipment_rec.quote_header_id            := l_qte_line_rec.quote_header_id;
7575             l_shipment_rec.quote_line_id              := l_qte_line_rec.quote_line_id;
7576             -- BC4J Fix
7577               x_shipment_tbl(i).shipment_id            := l_shipment_rec.shipment_id;
7578 		  --x_shipment_tbl(i).shipment_id             := null;
7579             l_shipment_rec.ship_method_code_from      := l_shipment_rec.ship_method_code;
7580             l_shipment_rec.freight_terms_code_from    := l_shipment_rec.freight_terms_code;
7581             x_shipment_tbl(i).ship_method_code_from   := l_shipment_rec.ship_method_code_from;
7582             x_shipment_tbl(i).freight_terms_code_from := l_shipment_rec.freight_terms_code_from;
7583 
7584          IF aso_debug_pub.g_debug_flag = 'Y' THEN
7585            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');
7586            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');
7587          END IF;
7588 
7589         ASO_SHIPMENTS_PKG.Insert_Row(
7590             px_SHIPMENT_ID  	=> x_shipment_tbl(i).SHIPMENT_ID,
7591             p_CREATION_DATE  	=> SYSDATE,
7592             p_CREATED_BY  	=> G_USER_ID,
7593             p_LAST_UPDATE_DATE  => SYSDATE,
7594             p_LAST_UPDATED_BY  	=> G_USER_ID,
7595             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7596             p_REQUEST_ID  	=> l_shipment_rec.REQUEST_ID,
7597             p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
7598             p_PROGRAM_ID  	=> l_shipment_rec.PROGRAM_ID,
7599             p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
7600             p_QUOTE_HEADER_ID   => l_shipment_rec.QUOTE_HEADER_ID,
7601             p_QUOTE_LINE_ID  	=> l_shipment_rec.QUOTE_LINE_ID,
7602             p_PROMISE_DATE  	=> l_shipment_rec.PROMISE_DATE,
7603             p_REQUEST_DATE   	=> l_shipment_rec.REQUEST_DATE,
7604             p_SCHEDULE_SHIP_DATE     => l_shipment_rec.SCHEDULE_SHIP_DATE,
7605             p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
7606             p_SHIP_TO_PARTY_ID  => l_shipment_rec.SHIP_TO_PARTY_ID,
7607             p_SHIP_TO_CUST_ACCOUNT_ID     => l_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID  ,
7608             p_SHIP_PARTIAL_FLAG => l_shipment_rec.SHIP_PARTIAL_FLAG,
7609             p_SHIP_SET_ID  	=> l_shipment_rec.SHIP_SET_ID,
7610             p_SHIP_METHOD_CODE  => l_shipment_rec.SHIP_METHOD_CODE,
7611             p_FREIGHT_TERMS_CODE=> l_shipment_rec.FREIGHT_TERMS_CODE,
7612             p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
7613             p_FOB_CODE  	=> l_shipment_rec.FOB_CODE,
7614             p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
7615             p_PACKING_INSTRUCTIONS   => l_shipment_rec.PACKING_INSTRUCTIONS,
7616             p_SHIPMENT_PRIORITY_CODE  => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
7617             p_SHIP_QUOTE_PRICE        => l_shipment_rec.SHIP_QUOTE_PRICE,
7618             p_QUANTITY  	=> l_shipment_rec.QUANTITY,
7619             p_RESERVED_QUANTITY => l_shipment_rec.RESERVED_QUANTITY,
7620             p_RESERVATION_ID    => l_shipment_rec.RESERVATION_ID,
7621             p_ORDER_LINE_ID     => l_shipment_rec.ORDER_LINE_ID,
7622             p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
7623             p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
7624             p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
7625             p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
7626             p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
7627             p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
7628             p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
7629             p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
7630             p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
7631             p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
7632             p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
7633             p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
7634             p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
7635             p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
7636             p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
7637             p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
7638 		  p_ATTRIBUTE16  => l_shipment_rec.ATTRIBUTE16,
7639             p_ATTRIBUTE17  => l_shipment_rec.ATTRIBUTE17,
7640             p_ATTRIBUTE18  => l_shipment_rec.ATTRIBUTE18,
7641             p_ATTRIBUTE19  => l_shipment_rec.ATTRIBUTE19,
7642             p_ATTRIBUTE20  => l_shipment_rec.ATTRIBUTE20,
7643 		  p_SHIP_FROM_ORG_ID => l_shipment_rec.SHIP_FROM_ORG_ID,
7644 		  p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
7645             p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
7646             p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
7647 		  p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
7648 	       p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
7649             p_DEMAND_CLASS_CODE => l_shipment_rec.DEMAND_CLASS_CODE
7650 		);
7651 
7652          FOR j IN 1..l_Freight_Charge_Tbl.count LOOP
7653              IF l_freight_charge_tbl(j).shipment_index = i THEN
7654                 l_freight_charge_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7655              END IF;
7656 
7657           END LOOP;
7658 
7659           FOR j in 1..l_Tax_Detail_Tbl.count LOOP
7660               IF l_tax_detail_tbl(j).shipment_index = i THEN
7661                  l_tax_detail_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7662              END IF;
7663 
7664            FOR j in 1..l_line_attribs_ext_Tbl.count LOOP
7665               IF l_line_attribs_ext_tbl(j).shipment_index = i THEN
7666                  l_line_attribs_ext_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7667              END IF;
7668 
7669          END LOOP;
7670 
7671            FOR j in 1..l_Payment_Tbl.count LOOP
7672               IF l_payment_tbl(j).shipment_index = i THEN
7673                  l_payment_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7674              END IF;
7675 
7676          END LOOP;
7677 
7678            FOR j in 1..P_Price_Adj_Tbl.count LOOP
7679               IF l_Price_Adj_tbl(j).shipment_index = i THEN
7680                  l_Price_Adj_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7681              END IF;
7682 
7683          END LOOP;
7684 
7685           FOR j in 1..P_Quote_Party_Tbl.count LOOP
7686               IF l_quote_party_tbl(j).shipment_index = i THEN
7687                  l_quote_party_tbl(j).quote_shipment_id := x_shipment_tbl(i).shipment_id;
7688              END IF;
7689             END LOOP;
7690 
7691          END LOOP;
7692 
7693        ELSIF l_shipment_rec.operation_code = 'UPDATE' THEN
7694 
7695              IF l_shipment_rec.ship_method_code = fnd_api.g_miss_char THEN
7696 
7697                 FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
7698 
7699                   IF l_ship_db_rec.ship_method_code_from is null THEN
7700                        l_shipment_rec.ship_method_code_from := l_ship_db_rec.ship_method_code;
7701                   END IF;
7702 
7703                 END LOOP;
7704 
7705              ELSE
7706                     l_shipment_rec.ship_method_code_from := l_shipment_rec.ship_method_code;
7707 
7708              END IF;
7709 
7710              IF l_shipment_rec.freight_terms_code = fnd_api.g_miss_char THEN
7711 
7712                 FOR l_ship_db_rec IN c_db_ship_freight_terms(l_shipment_rec.shipment_id) LOOP
7713 
7714                     IF l_ship_db_rec.freight_terms_code_from is null THEN
7715                         l_shipment_rec.freight_terms_code_from := l_ship_db_rec.freight_terms_code;
7716                     END IF;
7717 
7718                 END LOOP;
7719 
7720              ELSE
7721                        l_shipment_rec.freight_terms_code_from := l_shipment_rec.freight_terms_code;
7722 
7723              END IF;
7724 
7725 
7726         ASO_SHIPMENTS_PKG.Update_Row(
7727             p_SHIPMENT_ID  	=> l_shipment_tbl(i).SHIPMENT_ID,
7728             p_CREATION_DATE  	=> l_shipment_tbl(i).creation_date,
7729             p_CREATED_BY  	=> G_USER_ID,
7730             p_LAST_UPDATE_DATE  => SYSDATE,
7731             p_LAST_UPDATED_BY  	=> G_USER_ID,
7732             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7733             p_REQUEST_ID  	=> l_shipment_rec.REQUEST_ID,
7734             p_PROGRAM_APPLICATION_ID  => l_shipment_rec.PROGRAM_APPLICATION_ID,
7735             p_PROGRAM_ID  	=> l_shipment_rec.PROGRAM_ID,
7736             p_PROGRAM_UPDATE_DATE  => l_shipment_rec.PROGRAM_UPDATE_DATE,
7737             p_QUOTE_HEADER_ID  	=> l_shipment_rec.QUOTE_HEADER_ID,
7738             p_QUOTE_LINE_ID  	=> l_shipment_rec.QUOTE_LINE_ID,
7739             p_PROMISE_DATE  	=> l_shipment_rec.PROMISE_DATE,
7740             p_REQUEST_DATE  	=> l_shipment_rec.REQUEST_DATE,
7741             p_SCHEDULE_SHIP_DATE=> l_shipment_rec.SCHEDULE_SHIP_DATE,
7742             p_SHIP_TO_PARTY_SITE_ID  => l_shipment_rec.SHIP_TO_PARTY_SITE_ID,
7743             p_SHIP_TO_PARTY_ID  => l_shipment_rec.SHIP_TO_PARTY_ID,
7744             p_SHIP_TO_CUST_ACCOUNT_ID     => l_shipment_rec.SHIP_TO_CUST_ACCOUNT_ID  ,
7745             p_SHIP_PARTIAL_FLAG => l_shipment_rec.SHIP_PARTIAL_FLAG,
7746             p_SHIP_SET_ID  	=> l_shipment_rec.SHIP_SET_ID,
7747             p_SHIP_METHOD_CODE  => l_shipment_rec.SHIP_METHOD_CODE,
7748             p_FREIGHT_TERMS_CODE=> l_shipment_rec.FREIGHT_TERMS_CODE,
7749             p_FREIGHT_CARRIER_CODE  => l_shipment_rec.FREIGHT_CARRIER_CODE,
7750             p_FOB_CODE  	=> l_shipment_rec.FOB_CODE,
7751             p_SHIPPING_INSTRUCTIONS  => l_shipment_rec.SHIPPING_INSTRUCTIONS,
7752             p_PACKING_INSTRUCTIONS   => l_shipment_rec.PACKING_INSTRUCTIONS,
7753             p_SHIPMENT_PRIORITY_CODE  => l_shipment_rec.SHIPMENT_PRIORITY_CODE,
7754             p_SHIP_QUOTE_PRICE        => l_shipment_rec.SHIP_QUOTE_PRICE,
7755             p_QUANTITY  	=> l_shipment_rec.QUANTITY,
7756             p_RESERVED_QUANTITY => l_shipment_rec.RESERVED_QUANTITY,
7757             p_RESERVATION_ID    => l_shipment_rec.RESERVATION_ID,
7758             p_ORDER_LINE_ID     => l_shipment_rec.ORDER_LINE_ID,
7759             p_ATTRIBUTE_CATEGORY  => l_shipment_rec.ATTRIBUTE_CATEGORY,
7760             p_ATTRIBUTE1  => l_shipment_rec.ATTRIBUTE1,
7761             p_ATTRIBUTE2  => l_shipment_rec.ATTRIBUTE2,
7762             p_ATTRIBUTE3  => l_shipment_rec.ATTRIBUTE3,
7763             p_ATTRIBUTE4  => l_shipment_rec.ATTRIBUTE4,
7764             p_ATTRIBUTE5  => l_shipment_rec.ATTRIBUTE5,
7765             p_ATTRIBUTE6  => l_shipment_rec.ATTRIBUTE6,
7766             p_ATTRIBUTE7  => l_shipment_rec.ATTRIBUTE7,
7767             p_ATTRIBUTE8  => l_shipment_rec.ATTRIBUTE8,
7768             p_ATTRIBUTE9  => l_shipment_rec.ATTRIBUTE9,
7769             p_ATTRIBUTE10  => l_shipment_rec.ATTRIBUTE10,
7770             p_ATTRIBUTE11  => l_shipment_rec.ATTRIBUTE11,
7771             p_ATTRIBUTE12  => l_shipment_rec.ATTRIBUTE12,
7772             p_ATTRIBUTE13  => l_shipment_rec.ATTRIBUTE13,
7773             p_ATTRIBUTE14  => l_shipment_rec.ATTRIBUTE14,
7774             p_ATTRIBUTE15  => l_shipment_rec.ATTRIBUTE15,
7775 	       p_ATTRIBUTE16  => l_shipment_rec.ATTRIBUTE16,
7776 		  p_ATTRIBUTE17  => l_shipment_rec.ATTRIBUTE17,
7777 		  p_ATTRIBUTE18  => l_shipment_rec.ATTRIBUTE18,
7778 		  p_ATTRIBUTE19  => l_shipment_rec.ATTRIBUTE19,
7779 		  p_ATTRIBUTE20  => l_shipment_rec.ATTRIBUTE20,
7780 		p_SHIP_FROM_ORG_ID =>l_shipment_rec.SHIP_FROM_ORG_ID,
7781 		p_SHIP_TO_CUST_PARTY_ID => l_shipment_rec.SHIP_TO_CUST_PARTY_ID,
7782             p_SHIP_METHOD_CODE_FROM   => l_shipment_rec.SHIP_METHOD_CODE_FROM,
7783             p_FREIGHT_TERMS_CODE_FROM  => l_shipment_rec.FREIGHT_TERMS_CODE_FROM,
7784 		  p_OBJECT_VERSION_NUMBER  => l_shipment_rec.OBJECT_VERSION_NUMBER,
7785 	       p_REQUEST_DATE_TYPE => l_shipment_rec.REQUEST_DATE_TYPE,
7786             p_DEMAND_CLASS_CODE => l_shipment_rec.DEMAND_CLASS_CODE
7787 		);
7788 
7789         ELSIF l_shipment_rec.operation_code = 'DELETE' THEN
7790 
7791         OPEN C_ship_partial(l_qte_line_rec.QUOTE_LINE_ID);
7792         FETCH C_ship_partial into l_ship_count;
7793         CLOSE C_ship_partial;
7794 
7795       IF l_ship_count = 1 THEN
7796              x_return_status := FND_API.G_RET_STS_ERROR;
7797          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7798 	    FND_MESSAGE.Set_Name('ASO', 'DELETE_SHIPMENT');
7799             FND_MESSAGE.Set_Token('COLUMN', 'SHIPMENT_ID', FALSE);
7800             FND_MSG_PUB.ADD;
7801        	END IF;
7802       END IF;
7803 
7804 
7805         ASO_SHIPMENTS_PKG.Delete_Row(
7806             p_SHIPMENT_ID  => l_shipment_tbl(i).SHIPMENT_ID);
7807 
7808         END IF;
7809 
7810     END LOOP;      -- for shipments
7811 
7812 -- insert rows into aso_freight_charges
7813 
7814     FOR i IN 1..l_Freight_Charge_Tbl.count LOOP
7815 	l_freight_charge_rec := l_freight_charge_tbl(i);
7816     --  l_freight_charge_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
7817         x_freight_charge_tbl(i) := l_freight_charge_rec;
7818 
7819       IF l_freight_charge_rec.operation_code = 'CREATE' THEN
7820 
7821         l_freight_charge_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7822         -- BC4J Fix
7823 	   --x_FREIGHT_CHARGE_tbl(i).freight_charge_id := null;
7824 
7825         ASO_FREIGHT_CHARGES_PKG.Insert_Row(
7826             px_FREIGHT_CHARGE_ID  => x_FREIGHT_CHARGE_tbl(i).freight_charge_id,
7827             p_CREATION_DATE  	=> SYSDATE,
7828             p_CREATED_BY  	=> G_USER_ID,
7829             p_LAST_UPDATE_DATE  => SYSDATE,
7830             p_LAST_UPDATED_BY  	=> G_USER_ID,
7831             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7832             p_REQUEST_ID  	=> l_freight_charge_rec.REQUEST_ID,
7833             p_PROGRAM_APPLICATION_ID
7834 			=> l_freight_charge_rec.PROGRAM_APPLICATION_ID,
7835             p_PROGRAM_ID  	=> l_freight_charge_rec.PROGRAM_ID,
7836             p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
7837             p_QUOTE_SHIPMENT_ID  => l_freight_charge_rec.QUOTE_SHIPMENT_ID,
7838             p_FREIGHT_CHARGE_TYPE_ID
7839 				=> l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
7840             p_CHARGE_AMOUNT     => l_freight_charge_rec.CHARGE_AMOUNT,
7841             p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
7842             p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
7843             p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
7844             p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
7845             p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
7846             p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
7847             p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
7848             p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
7849             p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
7850             p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
7851             p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
7852             p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
7853             p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
7854             p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
7855             p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
7856             p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15
7857 		  );
7858 
7859 
7860       ELSIF l_freight_charge_rec.operation_code = 'UPDATE' THEN
7861         ASO_FREIGHT_CHARGES_PKG.Update_Row(
7862             p_FREIGHT_CHARGE_ID => p_FREIGHT_CHARGE_tbl(i).freight_charge_id,
7863             p_CREATION_DATE  	=> l_freight_charge_rec.creation_date,
7864             p_CREATED_BY  	=> G_USER_ID,
7865             p_LAST_UPDATE_DATE  => SYSDATE,
7866             p_LAST_UPDATED_BY  	=> G_USER_ID,
7867             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7868             p_REQUEST_ID  	=> l_freight_charge_rec.REQUEST_ID,
7869             p_PROGRAM_APPLICATION_ID
7870 			=> l_freight_charge_rec.PROGRAM_APPLICATION_ID,
7871             p_PROGRAM_ID  	=> l_freight_charge_rec.PROGRAM_ID,
7872             p_PROGRAM_UPDATE_DATE  => l_freight_charge_rec.PROGRAM_UPDATE_DATE,
7873             p_QUOTE_SHIPMENT_ID    => l_freight_charge_rec.QUOTE_SHIPMENT_ID,
7874             p_FREIGHT_CHARGE_TYPE_ID
7875 			=> l_freight_charge_rec.FREIGHT_CHARGE_TYPE_ID,
7876             p_CHARGE_AMOUNT  => l_freight_charge_rec.CHARGE_AMOUNT,
7877             p_ATTRIBUTE_CATEGORY  => l_freight_charge_rec.ATTRIBUTE_CATEGORY,
7878             p_ATTRIBUTE1  => l_freight_charge_rec.ATTRIBUTE1,
7879             p_ATTRIBUTE2  => l_freight_charge_rec.ATTRIBUTE2,
7880             p_ATTRIBUTE3  => l_freight_charge_rec.ATTRIBUTE3,
7881             p_ATTRIBUTE4  => l_freight_charge_rec.ATTRIBUTE4,
7882             p_ATTRIBUTE5  => l_freight_charge_rec.ATTRIBUTE5,
7883             p_ATTRIBUTE6  => l_freight_charge_rec.ATTRIBUTE6,
7884             p_ATTRIBUTE7  => l_freight_charge_rec.ATTRIBUTE7,
7885             p_ATTRIBUTE8  => l_freight_charge_rec.ATTRIBUTE8,
7886             p_ATTRIBUTE9  => l_freight_charge_rec.ATTRIBUTE9,
7887             p_ATTRIBUTE10  => l_freight_charge_rec.ATTRIBUTE10,
7888             p_ATTRIBUTE11  => l_freight_charge_rec.ATTRIBUTE11,
7889             p_ATTRIBUTE12  => l_freight_charge_rec.ATTRIBUTE12,
7890             p_ATTRIBUTE13  => l_freight_charge_rec.ATTRIBUTE13,
7891             p_ATTRIBUTE14  => l_freight_charge_rec.ATTRIBUTE14,
7892             p_ATTRIBUTE15  => l_freight_charge_rec.ATTRIBUTE15);
7893 
7894        ELSIF l_freight_charge_rec.operation_code = 'DELETE' THEN
7895         ASO_FREIGHT_CHARGES_PKG.delete_Row(
7896             p_FREIGHT_CHARGE_ID  => p_FREIGHT_CHARGE_tbl(i).freight_charge_id);
7897 
7898        END IF;
7899     END LOOP;   -- freight charges
7900 
7901 
7902 -- tax information
7903 
7904     FOR i IN 1..l_tax_detail_Tbl.count LOOP
7905           l_tax_detail_rec := l_tax_detail_tbl(i);
7906       --  l_tax_detail_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
7907          x_tax_detail_tbl(i) := l_tax_detail_rec;
7908 
7909       IF l_tax_detail_rec.operation_code = 'CREATE' THEN
7910         l_tax_detail_rec.quote_header_id := l_qte_line_rec.quote_header_id;
7911         l_tax_detail_rec.quote_line_id := l_qte_line_rec.quote_line_id;
7912         -- BC4J Fix
7913 	   --x_tax_detail_tbl(i).TAX_DETAIL_ID := null;
7914 
7915         ASO_TAX_DETAILS_PKG.Insert_Row(
7916             px_TAX_DETAIL_ID  	=> x_tax_detail_tbl(i).TAX_DETAIL_ID,
7917             p_CREATION_DATE  	=> SYSDATE,
7918             p_CREATED_BY  	=> G_USER_ID,
7919             p_LAST_UPDATE_DATE  => SYSDATE,
7920             p_LAST_UPDATED_BY  	=> G_USER_ID,
7921             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7922             p_REQUEST_ID  	=> l_tax_detail_rec.REQUEST_ID,
7923             p_PROGRAM_APPLICATION_ID =>l_tax_detail_rec.PROGRAM_APPLICATION_ID,
7924             p_PROGRAM_ID  	=> l_tax_detail_rec.PROGRAM_ID,
7925             p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
7926             p_QUOTE_HEADER_ID  	=> l_tax_detail_rec.QUOTE_HEADER_ID,
7927             p_QUOTE_LINE_ID  	=> l_tax_detail_rec.QUOTE_LINE_ID,
7928             p_QUOTE_SHIPMENT_ID => l_tax_detail_rec.QUOTE_SHIPMENT_ID,
7929             p_ORIG_TAX_CODE  	=> l_tax_detail_rec.ORIG_TAX_CODE,
7930             p_TAX_CODE  	=> l_tax_detail_rec.TAX_CODE,
7931             p_TAX_RATE  	=> l_tax_detail_rec.TAX_RATE,
7932             p_TAX_DATE  	=> l_tax_detail_rec.TAX_DATE,
7933             p_TAX_AMOUNT  	=> l_tax_detail_rec.TAX_AMOUNT,
7934             p_TAX_EXEMPT_FLAG  	=> l_tax_detail_rec.TAX_EXEMPT_FLAG,
7935             p_TAX_EXEMPT_NUMBER => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
7936             p_TAX_EXEMPT_REASON_CODE =>l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
7937             p_ATTRIBUTE_CATEGORY     => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
7938             p_ATTRIBUTE1  	=> l_tax_detail_rec.ATTRIBUTE1,
7939             p_ATTRIBUTE2  	=> l_tax_detail_rec.ATTRIBUTE2,
7940             p_ATTRIBUTE3  	=> l_tax_detail_rec.ATTRIBUTE3,
7941             p_ATTRIBUTE4   	=> l_tax_detail_rec.ATTRIBUTE4,
7942             p_ATTRIBUTE5  	=> l_tax_detail_rec.ATTRIBUTE5,
7943             p_ATTRIBUTE6  	=> l_tax_detail_rec.ATTRIBUTE6,
7944             p_ATTRIBUTE7  	=> l_tax_detail_rec.ATTRIBUTE7,
7945             p_ATTRIBUTE8  	=> l_tax_detail_rec.ATTRIBUTE8,
7946             p_ATTRIBUTE9  	=> l_tax_detail_rec.ATTRIBUTE9,
7947             p_ATTRIBUTE10  	=> l_tax_detail_rec.ATTRIBUTE10,
7948             p_ATTRIBUTE11  	=> l_tax_detail_rec.ATTRIBUTE11,
7949             p_ATTRIBUTE12  	=> l_tax_detail_rec.ATTRIBUTE12,
7950             p_ATTRIBUTE13  	=> l_tax_detail_rec.ATTRIBUTE13,
7951             p_ATTRIBUTE14  	=> l_tax_detail_rec.ATTRIBUTE14,
7952             p_ATTRIBUTE15  	=> l_tax_detail_rec.ATTRIBUTE15,
7953             p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
7954             p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
7955             p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
7956             p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
7957             p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
7958 		  p_TAX_INCLUSIVE_FLAG  	=> l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
7959 		  p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
7960 		  p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
7961 		  );
7962 
7963        ELSIF l_tax_detail_rec.operation_code = 'UPDATE' THEN
7964 
7965         ASO_TAX_DETAILS_PKG.Update_Row(
7966             p_TAX_DETAIL_ID  	=> l_tax_detail_rec.TAX_DETAIL_ID,
7967             p_CREATION_DATE  	=> l_tax_detail_rec.creation_date,
7968             p_CREATED_BY  	=> G_USER_ID,
7969             p_LAST_UPDATE_DATE  => SYSDATE,
7970             p_LAST_UPDATED_BY  	=> G_USER_ID,
7971             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
7972             p_REQUEST_ID  	=> l_tax_detail_rec.REQUEST_ID,
7973             p_PROGRAM_APPLICATION_ID =>l_tax_detail_rec.PROGRAM_APPLICATION_ID,
7974             p_PROGRAM_ID  	=> l_tax_detail_rec.PROGRAM_ID,
7975             p_PROGRAM_UPDATE_DATE  => l_tax_detail_rec.PROGRAM_UPDATE_DATE,
7976             p_QUOTE_HEADER_ID  	=> l_tax_detail_rec.QUOTE_HEADER_ID,
7977             p_QUOTE_LINE_ID  	=> l_tax_detail_rec.QUOTE_LINE_ID,
7978             p_QUOTE_SHIPMENT_ID => l_tax_detail_rec.QUOTE_SHIPMENT_ID,
7979             p_ORIG_TAX_CODE  	=> l_tax_detail_rec.ORIG_TAX_CODE,
7980             p_TAX_CODE  	=> l_tax_detail_rec.TAX_CODE,
7981             p_TAX_RATE  	=> l_tax_detail_rec.TAX_RATE,
7982             p_TAX_DATE  	=> l_tax_detail_rec.TAX_DATE,
7983             p_TAX_AMOUNT  	=> l_tax_detail_rec.TAX_AMOUNT,
7984             p_TAX_EXEMPT_FLAG  	=> l_tax_detail_rec.TAX_EXEMPT_FLAG,
7985             p_TAX_EXEMPT_NUMBER => l_tax_detail_rec.TAX_EXEMPT_NUMBER,
7986             p_TAX_EXEMPT_REASON_CODE =>l_tax_detail_rec.TAX_EXEMPT_REASON_CODE,
7987             p_ATTRIBUTE_CATEGORY  => l_tax_detail_rec.ATTRIBUTE_CATEGORY,
7988             p_ATTRIBUTE1  	=> l_tax_detail_rec.ATTRIBUTE1,
7989             p_ATTRIBUTE2  	=> l_tax_detail_rec.ATTRIBUTE2,
7990             p_ATTRIBUTE3  	=> l_tax_detail_rec.ATTRIBUTE3,
7991             p_ATTRIBUTE4  	=> l_tax_detail_rec.ATTRIBUTE4,
7992             p_ATTRIBUTE5  	=> l_tax_detail_rec.ATTRIBUTE5,
7993             p_ATTRIBUTE6  	=> l_tax_detail_rec.ATTRIBUTE6,
7994             p_ATTRIBUTE7  	=> l_tax_detail_rec.ATTRIBUTE7,
7995             p_ATTRIBUTE8  	=> l_tax_detail_rec.ATTRIBUTE8,
7996             p_ATTRIBUTE9  	=> l_tax_detail_rec.ATTRIBUTE9,
7997             p_ATTRIBUTE10  	=> l_tax_detail_rec.ATTRIBUTE10,
7998             p_ATTRIBUTE11  	=> l_tax_detail_rec.ATTRIBUTE11,
7999             p_ATTRIBUTE12   	=> l_tax_detail_rec.ATTRIBUTE12,
8000             p_ATTRIBUTE13  	=> l_tax_detail_rec.ATTRIBUTE13,
8001             p_ATTRIBUTE14  	=> l_tax_detail_rec.ATTRIBUTE14,
8002             p_ATTRIBUTE15  	=> l_tax_detail_rec.ATTRIBUTE15,
8003             p_ATTRIBUTE16  => l_tax_detail_rec.ATTRIBUTE16,
8004             p_ATTRIBUTE17  => l_tax_detail_rec.ATTRIBUTE17,
8005             p_ATTRIBUTE18  => l_tax_detail_rec.ATTRIBUTE18,
8006             p_ATTRIBUTE19  => l_tax_detail_rec.ATTRIBUTE19,
8007             p_ATTRIBUTE20  => l_tax_detail_rec.ATTRIBUTE20,
8008 		  p_TAX_INCLUSIVE_FLAG  	=> l_tax_detail_rec.TAX_INCLUSIVE_FLAG,
8009 		  p_OBJECT_VERSION_NUMBER => l_tax_detail_rec.OBJECT_VERSION_NUMBER,
8010 		  p_TAX_RATE_ID => l_tax_detail_rec.TAX_RATE_ID
8011 		  );
8012 
8013          ELSIF l_tax_detail_rec.operation_code = 'DELETE' THEN
8014 
8015         ASO_TAX_DETAILS_PKG.Delete_Row(
8016             p_TAX_DETAIL_ID  => l_tax_detail_tbl(i).TAX_DETAIL_ID);
8017 
8018          END IF;
8019     END LOOP;    -- tax details
8020 
8021    -- quote party
8022       FOR i IN 1..l_quote_party_Tbl.count LOOP
8023 	l_quote_party_rec := l_quote_party_tbl(i);
8024         x_quote_party_tbl(i) := l_quote_party_rec;
8025 
8026        IF l_quote_party_rec.operation_code = 'CREATE' THEN
8027         l_quote_party_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8028         l_quote_party_rec.quote_header_id := l_Qte_Line_Rec.quote_header_id;
8029         -- BC4J Fix
8030 	   --x_quote_party_tbl(i).QUOTE_PARTY_ID := NULL;
8031 
8032            ASO_QUOTE_PARTIES_PKG.Insert_Row(
8033           px_QUOTE_PARTY_ID  => x_quote_party_tbl(i).QUOTE_PARTY_ID,
8034           p_CREATION_DATE  => SYSDATE,
8035           p_CREATED_BY  => G_USER_ID,
8036           p_LAST_UPDATE_DATE  => SYSDATE,
8037           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
8038           p_LAST_UPDATED_BY  => G_USER_ID,
8039           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
8040           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
8041           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
8042           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
8043           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
8044           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
8045           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
8046           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
8047           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
8048           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
8049           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
8050           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
8051           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
8052           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
8053           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
8054           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
8055           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
8056           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
8057           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
8058           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
8059           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
8060           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
8061           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
8062           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
8063           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
8064           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
8065           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
8066   --          p_SECURITY_GROUP_ID  => p_QUOTE_PARTY_rec.SECURITY_GROUP_ID);
8067         p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
8068 
8069         ELSIF  l_quote_party_rec.operation_code = 'UPDATE' THEN
8070             ASO_QUOTE_PARTIES_PKG.Update_Row(
8071           p_QUOTE_PARTY_ID  => l_quote_party_rec.QUOTE_PARTY_ID,
8072           p_CREATION_DATE  => l_quote_party_rec.creation_date,
8073           p_CREATED_BY  => G_USER_ID,
8074           p_LAST_UPDATE_DATE  => SYSDATE,
8075           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
8076           p_LAST_UPDATED_BY  => G_USER_ID,
8077           p_REQUEST_ID  => l_QUOTE_PARTY_rec.REQUEST_ID,
8078           p_PROGRAM_APPLICATION_ID  =>l_QUOTE_PARTY_rec.PROGRAM_APPLICATION_ID,
8079           p_PROGRAM_ID  => l_QUOTE_PARTY_rec.PROGRAM_ID,
8080           p_PROGRAM_UPDATE_DATE  => l_QUOTE_PARTY_rec.PROGRAM_UPDATE_DATE,
8081           p_QUOTE_HEADER_ID  => l_QUOTE_PARTY_rec.QUOTE_HEADER_ID,
8082           p_QUOTE_LINE_ID  => l_QUOTE_PARTY_rec.QUOTE_LINE_ID,
8083           p_QUOTE_SHIPMENT_ID  => l_QUOTE_PARTY_rec.QUOTE_SHIPMENT_ID,
8084           p_PARTY_TYPE  => l_QUOTE_PARTY_rec.PARTY_TYPE,
8085           p_PARTY_ID  => l_QUOTE_PARTY_rec.PARTY_ID,
8086           p_PARTY_OBJECT_TYPE  => l_QUOTE_PARTY_rec.PARTY_OBJECT_TYPE,
8087           p_PARTY_OBJECT_ID  => l_QUOTE_PARTY_rec.PARTY_OBJECT_ID,
8088           p_ATTRIBUTE_CATEGORY  => l_QUOTE_PARTY_rec.ATTRIBUTE_CATEGORY,
8089           p_ATTRIBUTE1  => l_QUOTE_PARTY_rec.ATTRIBUTE1,
8090           p_ATTRIBUTE2  => l_QUOTE_PARTY_rec.ATTRIBUTE2,
8091           p_ATTRIBUTE3  => l_QUOTE_PARTY_rec.ATTRIBUTE3,
8092           p_ATTRIBUTE4  => l_QUOTE_PARTY_rec.ATTRIBUTE4,
8093           p_ATTRIBUTE5  => l_QUOTE_PARTY_rec.ATTRIBUTE5,
8094           p_ATTRIBUTE6  => l_QUOTE_PARTY_rec.ATTRIBUTE6,
8095           p_ATTRIBUTE7  => l_QUOTE_PARTY_rec.ATTRIBUTE7,
8096           p_ATTRIBUTE8  => l_QUOTE_PARTY_rec.ATTRIBUTE8,
8097           p_ATTRIBUTE9  => l_QUOTE_PARTY_rec.ATTRIBUTE9,
8098           p_ATTRIBUTE10  => l_QUOTE_PARTY_rec.ATTRIBUTE10,
8099           p_ATTRIBUTE11  => l_QUOTE_PARTY_rec.ATTRIBUTE11,
8100           p_ATTRIBUTE12  => l_QUOTE_PARTY_rec.ATTRIBUTE12,
8101           p_ATTRIBUTE13  => l_QUOTE_PARTY_rec.ATTRIBUTE13,
8102           p_ATTRIBUTE14  => l_QUOTE_PARTY_rec.ATTRIBUTE14,
8103           p_ATTRIBUTE15  => l_QUOTE_PARTY_rec.ATTRIBUTE15,
8104 		p_OBJECT_VERSION_NUMBER  => l_QUOTE_PARTY_rec.OBJECT_VERSION_NUMBER);
8105 
8106         ELSIF  l_quote_party_rec.operation_code = 'DELETE' THEN
8107             ASO_QUOTE_PARTIES_PKG.Delete_Row(
8108           p_QUOTE_PARTY_ID  => l_QUOTE_PARTY_rec.QUOTE_PARTY_ID);
8109 
8110         END IF;
8111  END LOOP;
8112 
8113 
8114 
8115 
8116     -- price adjustment attributes
8117 
8118 
8119     FOR i IN 1..l_Price_Adj_Tbl.count LOOP
8120 	l_price_adj_rec := l_price_adj_tbl(i);
8121 --        l_price_adj_rec.quote_line_id := x_qte_line_rec.quote_line_id;
8122         x_price_adj_tbl(i) := l_price_adj_rec;
8123 
8124      IF l_price_adj_rec.operation_code = 'CREATE' THEN
8125 
8126         l_price_adj_rec.quote_header_id := l_qte_line_rec.quote_header_id;
8127         l_price_adj_rec.quote_line_id := l_qte_line_rec.quote_line_id;
8128         -- BC4J Fix
8129 	   --x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID := NULL;
8130 
8131         ASO_PRICE_ADJUSTMENTS_PKG.Insert_Row(
8132             px_PRICE_ADJUSTMENT_ID  => x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID,
8133             p_CREATION_DATE  	    => SYSDATE,
8134             p_CREATED_BY  	    => G_USER_ID,
8135             p_LAST_UPDATE_DATE      => SYSDATE,
8136             p_LAST_UPDATED_BY  	    => G_USER_ID,
8137             p_LAST_UPDATE_LOGIN     => G_LOGIN_ID,
8138             p_PROGRAM_APPLICATION_ID  =>l_price_adj_rec.PROGRAM_APPLICATION_ID,
8139             p_PROGRAM_ID  	    => l_price_adj_rec.PROGRAM_ID,
8140             p_PROGRAM_UPDATE_DATE   => l_price_adj_rec.PROGRAM_UPDATE_DATE,
8141             p_REQUEST_ID 	    => l_price_adj_rec.REQUEST_ID,
8142             p_QUOTE_HEADER_ID  	    => l_price_adj_rec.QUOTE_HEADER_ID,
8143             p_QUOTE_LINE_ID  	    => l_price_adj_rec.QUOTE_LINE_ID,
8144             p_QUOTE_SHIPMENT_ID     => l_price_adj_rec.QUOTE_SHIPMENT_ID,
8145             p_MODIFIER_HEADER_ID    => l_price_adj_rec.MODIFIER_HEADER_ID,
8146             p_MODIFIER_LINE_ID      => l_price_adj_rec.MODIFIER_LINE_ID,
8147             p_MODIFIER_LINE_TYPE_CODE
8148 				    => l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
8149             p_MODIFIER_MECHANISM_TYPE_CODE
8150 			=> l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
8151             p_MODIFIED_FROM  	    => l_price_adj_rec.MODIFIED_FROM,
8152             p_MODIFIED_TO    	    => l_price_adj_rec.MODIFIED_TO,
8153             p_OPERAND        	    => l_price_adj_rec.OPERAND,
8154             p_ARITHMETIC_OPERATOR   => l_price_adj_rec.ARITHMETIC_OPERATOR,
8155             p_AUTOMATIC_FLAG        => l_price_adj_rec.AUTOMATIC_FLAG,
8156             p_UPDATE_ALLOWABLE_FLAG => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
8157             p_UPDATED_FLAG          => l_price_adj_rec.UPDATED_FLAG,
8158             p_APPLIED_FLAG          => l_price_adj_rec.APPLIED_FLAG,
8159             p_ON_INVOICE_FLAG       => l_price_adj_rec.ON_INVOICE_FLAG,
8160             p_PRICING_PHASE_ID      => l_price_adj_rec.PRICING_PHASE_ID,
8161             p_ATTRIBUTE_CATEGORY    => l_price_adj_rec.ATTRIBUTE_CATEGORY,
8162             p_ATTRIBUTE1  	    => l_price_adj_rec.ATTRIBUTE1,
8163             p_ATTRIBUTE2  	    => l_price_adj_rec.ATTRIBUTE2,
8164             p_ATTRIBUTE3  	    => l_price_adj_rec.ATTRIBUTE3,
8165             p_ATTRIBUTE4  	    => l_price_adj_rec.ATTRIBUTE4,
8166             p_ATTRIBUTE5  	    => l_price_adj_rec.ATTRIBUTE5,
8167             p_ATTRIBUTE6  	    => l_price_adj_rec.ATTRIBUTE6,
8168             p_ATTRIBUTE7  	    => l_price_adj_rec.ATTRIBUTE7,
8169             p_ATTRIBUTE8  	    => l_price_adj_rec.ATTRIBUTE8,
8170             p_ATTRIBUTE9  	    => l_price_adj_rec.ATTRIBUTE9,
8171             p_ATTRIBUTE10  	    => l_price_adj_rec.ATTRIBUTE10,
8172             p_ATTRIBUTE11  	    => l_price_adj_rec.ATTRIBUTE11,
8173             p_ATTRIBUTE12  	    => l_price_adj_rec.ATTRIBUTE12,
8174             p_ATTRIBUTE13  	    => l_price_adj_rec.ATTRIBUTE13,
8175             p_ATTRIBUTE14  	    => l_price_adj_rec.ATTRIBUTE14,
8176             p_ATTRIBUTE15  	    => l_price_adj_rec.ATTRIBUTE15,
8177             p_ATTRIBUTE16  =>  l_price_adj_rec.ATTRIBUTE16,
8178             p_ATTRIBUTE17  =>  l_price_adj_rec.ATTRIBUTE17,
8179             p_ATTRIBUTE18  =>  l_price_adj_rec.ATTRIBUTE18,
8180             p_ATTRIBUTE19  =>  l_price_adj_rec.ATTRIBUTE19,
8181             p_ATTRIBUTE20  =>  l_price_adj_rec.ATTRIBUTE20,
8182 		  p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
8183           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
8184           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
8185           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
8186           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
8187           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
8188           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
8189           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
8190           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
8191           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
8192           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
8193           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
8194           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
8195           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
8196           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
8197           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
8198           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
8199           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
8200           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
8201           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
8202           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
8203           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
8204           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
8205           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
8206           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
8207           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
8208           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
8209           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
8210           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
8211           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
8212           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
8213           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
8214           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
8215           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
8216           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
8217           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
8218           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
8219           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
8220           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
8221           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
8222           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
8223           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
8224 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
8225 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
8226 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER);
8227 
8228    FOR j in 1..l_price_adj_attr_tbl.count LOOP
8229      IF l_price_adj_attr_tbl(j).price_adj_index = j THEN
8230         l_price_adj_attr_tbl(j).price_adjustment_id := x_price_adj_tbl(i).PRICE_ADJUSTMENT_ID;
8231      END IF;
8232    END LOOP;
8233 
8234 
8235    ELSIF l_price_adj_rec.operation_code = 'UPDATE' THEN
8236          -- New Code for updating PBH
8237          if l_price_adj_rec.updated_flag = 'Y' then
8238 
8239             l_price_adjustment_id := null;
8240 
8241             --get the price_adjustment_id of the PBH adjustment line, if this is children of a PBH parent
8242             open c_pbh( l_price_adj_rec.price_adjustment_id );
8243             fetch c_pbh into l_price_adjustment_id;
8244             close c_pbh;
8245 
8246 
8247             --if the above query returns a not null value then update all the children of this PBH
8248 
8249             if  l_price_adjustment_id is not null then
8250 
8251                --update all child lines
8252                UPDATE aso_price_adjustments
8253                SET updated_flag = 'Y',
8254                    applied_flag = null
8255                Where price_adjustment_id in ( SELECT rltd_price_adj_id
8256                                               FROM aso_price_adj_relationships b
8257                                               WHERE price_adjustment_id = l_price_adjustment_id );
8258 
8259                --update the parent PBH line
8260                UPDATE aso_price_adjustments
8261                SET updated_flag = 'Y',
8262                    applied_flag = 'Y'
8263                Where price_adjustment_id = l_price_adjustment_id;
8264 
8265             end if;
8266 
8267          end if;
8268 
8269 
8270         ASO_PRICE_ADJUSTMENTS_PKG.Update_Row(
8271             p_PRICE_ADJUSTMENT_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID,
8272             p_CREATION_DATE  	=> l_price_adj_rec.creation_date,
8273             p_CREATED_BY  	=> G_USER_ID,
8274             p_LAST_UPDATE_DATE  => SYSDATE,
8275             p_LAST_UPDATED_BY  	=> G_USER_ID,
8276             p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8277             p_PROGRAM_APPLICATION_ID  =>l_price_adj_rec.PROGRAM_APPLICATION_ID,
8278             p_PROGRAM_ID  	    => l_price_adj_rec.PROGRAM_ID,
8279             p_PROGRAM_UPDATE_DATE   => l_price_adj_rec.PROGRAM_UPDATE_DATE,
8280             p_REQUEST_ID  	    => l_price_adj_rec.REQUEST_ID,
8281             p_QUOTE_HEADER_ID  	    => l_price_adj_rec.QUOTE_HEADER_ID,
8282             p_QUOTE_LINE_ID  	    => l_price_adj_rec.QUOTE_LINE_ID,
8283             p_QUOTE_SHIPMENT_ID     => l_price_adj_rec.QUOTE_SHIPMENT_ID,
8284             p_MODIFIER_HEADER_ID    => l_price_adj_rec.MODIFIER_HEADER_ID,
8285             p_MODIFIER_LINE_ID      => l_price_adj_rec.MODIFIER_LINE_ID,
8286             p_MODIFIER_LINE_TYPE_CODE
8287 				=> l_price_adj_rec.MODIFIER_LINE_TYPE_CODE,
8288             p_MODIFIER_MECHANISM_TYPE_CODE
8289 			=> l_price_adj_rec.MODIFIER_MECHANISM_TYPE_CODE,
8290             p_MODIFIED_FROM  	    => l_price_adj_rec.MODIFIED_FROM,
8291             p_MODIFIED_TO  	    => l_price_adj_rec.MODIFIED_TO,
8292             p_OPERAND      	    => l_price_adj_rec.OPERAND,
8293             p_ARITHMETIC_OPERATOR   => l_price_adj_rec.ARITHMETIC_OPERATOR,
8294             p_AUTOMATIC_FLAG        => l_price_adj_rec.AUTOMATIC_FLAG,
8295             p_UPDATE_ALLOWABLE_FLAG => l_price_adj_rec.UPDATE_ALLOWABLE_FLAG,
8296             p_UPDATED_FLAG          => l_price_adj_rec.UPDATED_FLAG,
8297             p_APPLIED_FLAG          => l_price_adj_rec.APPLIED_FLAG,
8298             p_ON_INVOICE_FLAG       => l_price_adj_rec.ON_INVOICE_FLAG,
8299             p_PRICING_PHASE_ID      => l_price_adj_rec.PRICING_PHASE_ID,
8300             p_ATTRIBUTE_CATEGORY    => l_price_adj_rec.ATTRIBUTE_CATEGORY,
8301             p_ATTRIBUTE1  	    => l_price_adj_rec.ATTRIBUTE1,
8302             p_ATTRIBUTE2  	    => l_price_adj_rec.ATTRIBUTE2,
8303             p_ATTRIBUTE3  	    => l_price_adj_rec.ATTRIBUTE3,
8304             p_ATTRIBUTE4  	    => l_price_adj_rec.ATTRIBUTE4,
8305             p_ATTRIBUTE5  	    => l_price_adj_rec.ATTRIBUTE5,
8306             p_ATTRIBUTE6  	    => l_price_adj_rec.ATTRIBUTE6,
8307             p_ATTRIBUTE7  	    => l_price_adj_rec.ATTRIBUTE7,
8308             p_ATTRIBUTE8  	    => l_price_adj_rec.ATTRIBUTE8,
8309             p_ATTRIBUTE9  	    => l_price_adj_rec.ATTRIBUTE9,
8310             p_ATTRIBUTE10  	    => l_price_adj_rec.ATTRIBUTE10,
8311             p_ATTRIBUTE11  	    => l_price_adj_rec.ATTRIBUTE11,
8312             p_ATTRIBUTE12  	    => l_price_adj_rec.ATTRIBUTE12,
8313             p_ATTRIBUTE13  	    => l_price_adj_rec.ATTRIBUTE13,
8314             p_ATTRIBUTE14  	    => l_price_adj_rec.ATTRIBUTE14,
8315             p_ATTRIBUTE15  	    => l_price_adj_rec.ATTRIBUTE15,
8316             p_ATTRIBUTE16  =>  l_price_adj_rec.ATTRIBUTE16,
8317             p_ATTRIBUTE17  =>  l_price_adj_rec.ATTRIBUTE17,
8318             p_ATTRIBUTE18  =>  l_price_adj_rec.ATTRIBUTE18,
8319             p_ATTRIBUTE19  =>  l_price_adj_rec.ATTRIBUTE19,
8320             p_ATTRIBUTE20  =>  l_price_adj_rec.ATTRIBUTE20,
8321 		  p_ORIG_SYS_DISCOUNT_REF                    => l_price_adj_rec.ORIG_SYS_DISCOUNT_REF ,
8322           p_CHANGE_SEQUENCE                           => l_price_adj_rec.CHANGE_SEQUENCE ,
8323           -- p_LIST_HEADER_ID                            => l_price_adj_rec. ,
8324           -- p_LIST_LINE_ID                              => l_price_adj_rec. ,
8325           -- p_LIST_LINE_TYPE_CODE                       => l_price_adj_rec.,
8326           p_UPDATE_ALLOWED                            => l_price_adj_rec.UPDATE_ALLOWED,
8327           p_CHANGE_REASON_CODE                        => l_price_adj_rec.CHANGE_REASON_CODE,
8328           p_CHANGE_REASON_TEXT                        => l_price_adj_rec.CHANGE_REASON_TEXT,
8329           p_COST_ID                                   => l_price_adj_rec.COST_ID ,
8330           p_TAX_CODE                                  => l_price_adj_rec.TAX_CODE,
8331           p_TAX_EXEMPT_FLAG                           => l_price_adj_rec.TAX_EXEMPT_FLAG,
8332           p_TAX_EXEMPT_NUMBER                         => l_price_adj_rec.TAX_EXEMPT_NUMBER,
8333           p_TAX_EXEMPT_REASON_CODE                    => l_price_adj_rec.TAX_EXEMPT_REASON_CODE,
8334           p_PARENT_ADJUSTMENT_ID                      => l_price_adj_rec.PARENT_ADJUSTMENT_ID,
8335           p_INVOICED_FLAG                             => l_price_adj_rec.INVOICED_FLAG,
8336           p_ESTIMATED_FLAG                            => l_price_adj_rec.ESTIMATED_FLAG,
8337           p_INC_IN_SALES_PERFORMANCE                  => l_price_adj_rec.INC_IN_SALES_PERFORMANCE,
8338           p_SPLIT_ACTION_CODE                         => l_price_adj_rec.SPLIT_ACTION_CODE,
8339           p_ADJUSTED_AMOUNT                           => l_price_adj_rec.ADJUSTED_AMOUNT ,
8340           p_CHARGE_TYPE_CODE                          => l_price_adj_rec.CHARGE_TYPE_CODE,
8341           p_CHARGE_SUBTYPE_CODE                       => l_price_adj_rec.CHARGE_SUBTYPE_CODE,
8342           p_RANGE_BREAK_QUANTITY                      => l_price_adj_rec.RANGE_BREAK_QUANTITY,
8343           p_ACCRUAL_CONVERSION_RATE                   => l_price_adj_rec.ACCRUAL_CONVERSION_RATE ,
8344           p_PRICING_GROUP_SEQUENCE                    => l_price_adj_rec.PRICING_GROUP_SEQUENCE,
8345           p_ACCRUAL_FLAG                              => l_price_adj_rec.ACCRUAL_FLAG,
8346           p_LIST_LINE_NO                              => l_price_adj_rec.LIST_LINE_NO,
8347           p_SOURCE_SYSTEM_CODE                        => l_price_adj_rec.SOURCE_SYSTEM_CODE ,
8348           p_BENEFIT_QTY                               => l_price_adj_rec.BENEFIT_QTY,
8349           p_BENEFIT_UOM_CODE                          => l_price_adj_rec.BENEFIT_UOM_CODE,
8350           p_PRINT_ON_INVOICE_FLAG                     => l_price_adj_rec.PRINT_ON_INVOICE_FLAG,
8351           p_EXPIRATION_DATE                           => l_price_adj_rec.EXPIRATION_DATE,
8352           p_REBATE_TRANSACTION_TYPE_CODE              => l_price_adj_rec.REBATE_TRANSACTION_TYPE_CODE,
8353           p_REBATE_TRANSACTION_REFERENCE              => l_price_adj_rec.REBATE_TRANSACTION_REFERENCE,
8354           p_REBATE_PAYMENT_SYSTEM_CODE                => l_price_adj_rec.REBATE_PAYMENT_SYSTEM_CODE,
8355           p_REDEEMED_DATE                             => l_price_adj_rec.REDEEMED_DATE,
8356           p_REDEEMED_FLAG                             => l_price_adj_rec.REDEEMED_FLAG,
8357           p_MODIFIER_LEVEL_CODE                       => l_price_adj_rec.MODIFIER_LEVEL_CODE,
8358           p_PRICE_BREAK_TYPE_CODE                     => l_price_adj_rec.PRICE_BREAK_TYPE_CODE ,
8359           p_SUBSTITUTION_ATTRIBUTE                    => l_price_adj_rec.SUBSTITUTION_ATTRIBUTE,
8360           p_PRORATION_TYPE_CODE                       => l_price_adj_rec.PRORATION_TYPE_CODE ,
8361           p_INCLUDE_ON_RETURNS_FLAG                   => l_price_adj_rec.INCLUDE_ON_RETURNS_FLAG,
8362           p_CREDIT_OR_CHARGE_FLAG                     => l_price_adj_rec.CREDIT_OR_CHARGE_FLAG,
8363 		p_OPERAND_PER_PQTY                          => l_price_adj_rec.OPERAND_PER_PQTY,
8364 		p_ADJUSTED_AMOUNT_PER_PQTY                  => l_price_adj_rec.ADJUSTED_AMOUNT_PER_PQTY,
8365 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_rec.OBJECT_VERSION_NUMBER
8366 		);
8367 
8368        ELSIF l_price_adj_rec.operation_code = 'DELETE' THEN
8369         ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
8370             p_PRICE_ADJ_ID  => l_price_adj_rec.PRICE_ADJUSTMENT_ID);
8371 
8372        END IF;
8373     END LOOP;
8374 
8375 
8376 -- price adjustment attributes
8377 
8378            FOR i in 1..l_price_adj_attr_tbl.count LOOP
8379 
8380            x_price_adj_attr_tbl(i) := l_price_adj_attr_tbl(i);
8381 
8382      IF l_price_adj_attr_tbl(i).operation_code = 'CREATE' THEN
8383         -- BC4J Fix
8384         -- x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID := null;
8385 
8386     	ASO_PRICE_ADJ_ATTRIBS_PKG.Insert_Row(
8387           px_PRICE_ADJ_ATTRIB_ID=> x_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
8388           p_CREATION_DATE  	=> SYSDATE,
8389           p_CREATED_BY  	=> G_USER_ID,
8390           p_LAST_UPDATE_DATE  => SYSDATE,
8391           p_LAST_UPDATED_BY  	=> G_USER_ID,
8392           p_LAST_UPDATE_LOGIN => G_LOGIN_ID,
8393           p_PROGRAM_APPLICATION_ID
8394 			=>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
8395           p_PROGRAM_ID  	=> l_price_adj_attr_tbl(i).PROGRAM_ID,
8396           p_PROGRAM_UPDATE_DATE => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
8397           p_REQUEST_ID  	=> l_price_adj_attr_tbl(i).REQUEST_ID,
8398           p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
8399           p_PRICING_CONTEXT  	=> l_price_adj_attr_tbl(i).PRICING_CONTEXT,
8400           p_PRICING_ATTRIBUTE   => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
8401           p_PRICING_ATTR_VALUE_FROM
8402 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
8403           p_PRICING_ATTR_VALUE_TO
8404 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
8405           p_COMPARISON_OPERATOR => l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
8406           p_FLEX_TITLE   	=> l_price_adj_attr_tbl(i).FLEX_TITLE ,
8407 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER);
8408 
8409    ELSIF l_price_adj_attr_tbl(i).operation_code = 'UPDATE' THEN
8410 
8411     ASO_PRICE_ADJ_ATTRIBS_PKG.Update_Row(
8412           p_PRICE_ADJ_ATTRIB_ID => l_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID,
8413           p_CREATION_DATE  	=> l_price_adj_attr_tbl(i).creation_date,
8414           p_CREATED_BY  	=> G_USER_ID,
8415           p_LAST_UPDATE_DATE  	=> SYSDATE,
8416           p_LAST_UPDATED_BY  	=> G_USER_ID,
8417           p_LAST_UPDATE_LOGIN  	=> G_LOGIN_ID,
8418           p_PROGRAM_APPLICATION_ID
8419 		=>l_price_adj_attr_tbl(i).PROGRAM_APPLICATION_ID,
8420           p_PROGRAM_ID  	=> l_price_adj_attr_tbl(i).PROGRAM_ID,
8421           p_PROGRAM_UPDATE_DATE => l_price_adj_attr_tbl(i).PROGRAM_UPDATE_DATE,
8422           p_REQUEST_ID  	=> l_price_adj_attr_tbl(i).REQUEST_ID,
8423           p_PRICE_ADJUSTMENT_ID => l_price_adj_attr_tbl(i).PRICE_ADJUSTMENT_ID,
8424           p_PRICING_CONTEXT  	=> l_price_adj_attr_tbl(i).PRICING_CONTEXT,
8425           p_PRICING_ATTRIBUTE   => l_price_adj_attr_tbl(i).PRICING_ATTRIBUTE,
8426           p_PRICING_ATTR_VALUE_FROM
8427 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_FROM,
8428           p_PRICING_ATTR_VALUE_TO
8429 			=> l_price_adj_attr_tbl(i).PRICING_ATTR_VALUE_TO,
8430           p_COMPARISON_OPERATOR => l_price_adj_attr_tbl(i).COMPARISON_OPERATOR,
8431           p_FLEX_TITLE   	=> l_price_adj_attr_tbl(i).FLEX_TITLE ,
8432 		p_OBJECT_VERSION_NUMBER                     => l_price_adj_attr_tbl(i).OBJECT_VERSION_NUMBER
8433 		);
8434 
8435    ELSIF l_price_adj_attr_tbl(i).operation_code = 'DELETE' THEN
8436 
8437     ASO_PRICE_ADJ_ATTRIBS_PKG.Delete_Row(
8438           p_PRICE_ADJ_ATTRIB_ID   => l_price_adj_attr_tbl(i).PRICE_ADJ_ATTRIB_ID);
8439 
8440    END IF;
8441 
8442 END LOOP;
8443 
8444 
8445 -- New code to call aso_pricing_int.delete_promotion 07/22/02
8446 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8447    		aso_debug_pub.add('Update_Rows: l_Price_Attributes_Tbl.count: '||l_Price_Attributes_Tbl.count,1, 'N');
8448    		aso_debug_pub.add('Update_Rows: Before call to aso_pricing_int.Delete_Promotion',1, 'N');
8449 	end if;
8450 
8451    IF l_Price_Attributes_Tbl.count > 0 THEN
8452 
8453         aso_pricing_int.Delete_Promotion (
8454                            P_Api_Version_Number =>  1.0,
8455                            P_Init_Msg_List      =>  FND_API.G_FALSE,
8456                            P_Commit             =>  FND_API.G_FALSE,
8457                            p_price_attr_tbl     =>  l_Price_Attributes_Tbl,
8458                            x_return_status      =>  x_return_status,
8459                            x_msg_count          =>  x_msg_count,
8460                            x_msg_data           =>  x_msg_data
8461                                    );
8462 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8463         	aso_debug_pub.add('Update_Rows: After call to Delete_Promotion: x_return_status: '||x_return_status,1, 'N');
8464 	end if;
8465 
8466    END IF;
8467 
8468 -- End of New code to call aso_pricing_int.delete_promotion 07/22/02
8469 
8470 
8471 -- insert rows into aso_payments_tbl
8472 
8473 
8474     FOR i IN 1..l_Payment_Tbl.count LOOP
8475 	l_payment_rec := l_payment_tbl(i);
8476        -- l_payment_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8477         x_payment_tbl(i) := l_payment_rec;
8478 
8479        IF l_payment_rec.operation_code = 'CREATE' THEN
8480 
8481         l_payment_rec.quote_header_id := l_qte_line_rec.quote_header_id;
8482         l_payment_rec.quote_line_id := l_qte_line_rec.quote_line_id;
8483        -- BC4J Fix
8484 	  -- x_payment_tbl(i).PAYMENT_ID := null;
8485         l_payment_rec.PAYMENT_TERM_ID_FROM := l_payment_tbl(i).payment_term_id;
8486        IF aso_debug_pub.g_debug_flag = 'Y' THEN
8487          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');
8488         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');
8489        END IF;
8490 
8491      -- Suyog Payments Changes
8492 
8493            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8494                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to create_payment_row ', 1, 'Y');
8495            END IF;
8496 
8497          aso_payment_int.create_payment_row(p_payment_rec => l_payment_rec  ,
8498                                              x_payment_rec   => x_payment_tbl(i),
8499                                              x_return_status => x_return_status,
8500                                              x_msg_count     => x_msg_count,
8501                                              x_msg_data      => x_msg_data);
8502 
8503            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8504                aso_debug_pub.add('Update_Quote_Line_Rows: After call to create_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8505            END IF;
8506 
8507             if x_return_status <> fnd_api.g_ret_sts_success then
8508               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8509                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8510               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8511                  RAISE FND_API.G_EXC_ERROR;
8512               ELSE
8513                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8514               END IF;
8515             end if;
8516 
8517      -- End Suyog Payment Changes
8518 
8519          x_payment_tbl(i).PAYMENT_TERM_ID_FROM := l_payment_rec.PAYMENT_TERM_ID_FROM;
8520 
8521       ELSIF l_payment_rec.operation_code = 'UPDATE' THEN
8522 
8523         IF l_payment_rec.payment_term_id = FND_API.G_MISS_NUM THEN
8524           FOR l_payment_db_rec IN c_db_payment_terms(l_payment_rec.PAYMENT_ID) LOOP
8525             IF l_payment_db_rec.payment_term_id_from IS NULL THEN
8526               l_payment_rec.payment_term_id_from := l_payment_db_rec.payment_term_id;
8527             END IF;
8528           END LOOP;
8529         ELSE
8530               l_payment_rec.payment_term_id_from := l_payment_rec.payment_term_id;
8531         END IF;
8532          IF aso_debug_pub.g_debug_flag = 'Y' THEN
8533             aso_debug_pub.add('Inside ASO_PAYMENTS_PKG - Update Rows l_payment_rec.payment_term_id'||l_payment_rec.payment_term_id, 1, 'Y');
8534             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');
8535          END IF;
8536 
8537 
8538      -- Suyog Payments Changes
8539 
8540            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8541                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to update_payment_row ', 1, 'Y');
8542            END IF;
8543 
8544          aso_payment_int.update_payment_row(p_payment_rec => l_payment_rec  ,
8545                                              x_payment_rec   => x_payment_tbl(i),
8546                                              x_return_status => x_return_status,
8547                                              x_msg_count     => x_msg_count,
8548                                              x_msg_data      => x_msg_data);
8549 
8550            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8551                aso_debug_pub.add('Update_Quote_Line_Rows: After call to update_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8552            END IF;
8553             if x_return_status <> fnd_api.g_ret_sts_success then
8554               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8555                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8556               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8557                  RAISE FND_API.G_EXC_ERROR;
8558               ELSE
8559                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8560               END IF;
8561             end if;
8562 
8563      -- End Suyog Payment Changes
8564 
8565 
8566        ELSIF l_payment_rec.operation_code = 'DELETE' THEN
8567 
8568      -- Suyog Payments Changes
8569 
8570            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8571                aso_debug_pub.add('Update_Quote_Line_Rows: Before  call to delete_payment_row ', 1, 'Y');
8572            END IF;
8573 
8574          aso_payment_int.delete_payment_row(p_payment_rec => l_payment_rec  ,
8575                                              x_return_status => x_return_status,
8576                                              x_msg_count     => x_msg_count,
8577                                              x_msg_data      => x_msg_data);
8578 
8579            IF aso_debug_pub.g_debug_flag = 'Y' THEN
8580                aso_debug_pub.add('Update_Quote_Line_Rows: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
8581            END IF;
8582             if x_return_status <> fnd_api.g_ret_sts_success then
8583               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8584                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8585               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8586                  RAISE FND_API.G_EXC_ERROR;
8587               ELSE
8588                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8589               END IF;
8590             end if;
8591 
8592      -- End Suyog Payment Changes
8593 
8594        END IF;
8595 
8596     END LOOP;       -- payment loop
8597 
8598           -- fix for bug 4483808 , moved validation after the row has been updated
8599           aso_validate_pvt.Validate_po_line_number
8600           (
8601                p_init_msg_list       => fnd_api.g_false,
8602                p_qte_header_rec    => l_qte_header_rec,
8603                P_Qte_Line_rec   => l_Qte_Line_Rec,
8604                x_return_status     => x_return_status,
8605                x_msg_count         => x_msg_count,
8606                x_msg_data          => x_msg_data);
8607 
8608           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8609                   RAISE FND_API.G_EXC_ERROR;
8610             END IF;
8611 
8612           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
8613             aso_debug_pub.add('x_return_status for Validate_po_line_number'||  x_return_status, 1, 'Y');
8614           END IF;
8615 
8616 
8617     FOR i IN 1..l_line_attribs_ext_Tbl.count LOOP
8618 	l_line_attribs_rec := l_line_attribs_ext_tbl(i);
8619      --   l_line_attribs_rec.quote_line_id :=  x_qte_line_rec.QUOTE_LINE_ID;
8620         x_line_attribs_ext_tbl(i) := l_line_attribs_rec;
8621 
8622      IF l_line_attribs_rec.operation_code = 'CREATE' THEN
8623       -- BC4J Fix
8624       --x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID := null;
8625 
8626  ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
8627           px_LINE_ATTRIBUTE_ID  => x_LINE_ATTRIBS_EXT_TBL(i).LINE_ATTRIBUTE_ID,
8628           p_CREATION_DATE          => SYSDATE,
8629           p_CREATED_BY             => G_USER_ID,
8630           p_LAST_UPDATE_DATE       => SYSDATE,
8631           p_LAST_UPDATED_BY        => G_USER_ID,
8632           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
8633           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
8634           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
8635           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
8636           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
8637            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
8638            p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
8639           p_QUOTE_HEADER_ID          => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
8640           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
8641           p_QUOTE_SHIPMENT_ID          => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
8642           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
8643           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
8644           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
8645            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
8646           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
8647           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
8648 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
8649 
8650       ELSIF l_line_attribs_rec.operation_code = 'UPDATE' THEN
8651       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row(
8652           p_LINE_ATTRIBUTE_ID  => l_LINE_ATTRIBS_REC.LINE_ATTRIBUTE_ID,
8653           p_CREATION_DATE          => l_LINE_ATTRIBS_rec.creation_date,
8654           p_CREATED_BY             => G_USER_ID,
8655           p_LAST_UPDATE_DATE       => SYSDATE,
8656           p_LAST_UPDATED_BY        => G_USER_ID,
8657           p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
8658           p_REQUEST_ID             => l_LINE_ATTRIBS_rec.REQUEST_ID,
8659           p_PROGRAM_APPLICATION_ID =>l_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
8660           p_PROGRAM_ID             => l_LINE_ATTRIBS_rec.PROGRAM_ID,
8661           p_PROGRAM_UPDATE_DATE    => l_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
8662            p_APPLICATION_ID         => l_LINE_ATTRIBS_rec.APPLICATION_ID,
8663           p_STATUS                 => l_LINE_ATTRIBS_rec.STATUS,
8664           p_QUOTE_HEADER_ID        => l_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
8665           p_QUOTE_LINE_ID          => l_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
8666           p_QUOTE_SHIPMENT_ID      => l_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
8667           p_ATTRIBUTE_TYPE_CODE    => l_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
8668           p_NAME                   => l_LINE_ATTRIBS_rec.NAME,
8669           p_VALUE                  => l_LINE_ATTRIBS_rec.VALUE,
8670            p_VALUE_TYPE             => l_LINE_ATTRIBS_rec.VALUE_TYPE,
8671           p_START_DATE_ACTIVE      => l_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
8672           p_END_DATE_ACTIVE        => l_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
8673 		p_OBJECT_VERSION_NUMBER  => l_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER);
8674 
8675      ELSIF l_line_attribs_rec.operation_code = 'DELETE' THEN
8676      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.delete_Row(
8677           p_LINE_ATTRIB_ID  => l_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
8678      END IF;
8679 END LOOP;      -- line attribs
8680 
8681 
8682      --set the ship partial flag
8683 
8684      OPEN  C_ship_partial(l_Qte_Line_Rec.quote_line_id);
8685      FETCH C_ship_partial INTO l_ship_count;
8686      CLOSE C_ship_partial;
8687 
8688      IF l_ship_count > 1 THEN
8689 
8690         update aso_quote_lines_all
8691         set split_shipment_flag  =  'T',
8692             last_update_date     =  sysdate,
8693             last_updated_by      =  fnd_global.user_id,
8694             last_update_login    =  fnd_global.conc_login_id
8695         where quote_line_id = l_Qte_Line_Rec.quote_line_id;
8696 
8697      ELSIF l_ship_count = 1 THEN
8698 
8699         update aso_quote_lines_all
8700         set split_shipment_flag  =  'F',
8701             last_update_date     =  sysdate,
8702             last_updated_by      =  fnd_global.user_id,
8703             last_update_login    =  fnd_global.conc_login_id
8704         where quote_line_id = l_Qte_Line_Rec.quote_line_id;
8705 
8706      END IF;
8707 
8708 
8709 
8710    IF  l_control_rec.line_pricing_event IS NOT NULL AND
8711         l_control_rec.line_pricing_event <> FND_API.G_MISS_CHAR  THEN
8712 
8713       l_pricing_control_rec.pricing_event := l_control_rec.line_pricing_event;
8714       l_pricing_control_rec.request_type  := l_control_rec.pricing_request_type;
8715       l_pricing_control_rec.price_mode    := l_control_rec.price_mode;
8716 
8717 	 x_qte_line_rec.quote_line_id        := l_qte_line_rec.quote_line_id;
8718       l_qte_line_tbl(1)                   := l_Qte_Line_Rec;
8719 
8720       --New Code to call overload pricing_order
8721 
8722         l_hd_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(l_qte_header_rec.quote_header_id,null);
8723         l_hd_shipment_tbl   := aso_utility_pvt.query_shipment_rows(l_qte_header_rec.quote_header_id,null);
8724 
8725         if l_hd_shipment_tbl.count = 1 then
8726             l_hd_shipment_rec := l_hd_shipment_tbl(1);
8727         end if;
8728 
8729 
8730         ASO_PRICING_INT.Pricing_Order(
8731                     P_Api_Version_Number     => 1.0,
8732                     P_Init_Msg_List          => fnd_api.g_false,
8733                     P_Commit                 => fnd_api.g_false,
8734                     p_control_rec            => l_pricing_control_rec,
8735                     p_qte_header_rec         => l_qte_header_rec,
8736                     p_hd_shipment_rec        => l_hd_shipment_rec,
8737                     p_hd_price_attr_tbl      => l_hd_price_attr_tbl,
8738                     p_qte_line_tbl           => l_qte_line_tbl,
8739                     --p_line_rltship_tbl     => l_line_rltship_tbl,
8740                     --p_qte_line_dtl_tbl     => l_qte_line_dtl_tbl,
8741                     --p_ln_shipment_tbl      => ln_shipment_tbl,
8742                     --p_ln_price_attr_tbl    => l_ln_price_attr_tbl,
8743                     x_qte_header_rec         => lx_qte_header_rec,
8744                     x_qte_line_tbl           => lx_qte_line_tbl,
8745                     x_qte_line_dtl_tbl       => lx_qte_line_dtl_tbl,
8746                     x_price_adj_tbl          => lx_price_adj_tbl,
8747                     x_price_adj_attr_tbl     => lx_price_adj_attr_tbl,
8748                     x_price_adj_rltship_tbl  => lx_price_adj_rltship_tbl,
8749                     x_return_status          => x_return_status,
8750                     x_msg_count              => x_msg_count,
8751                     x_msg_data               => x_msg_data );
8752 
8753       if lx_qte_line_tbl.count > 0 then
8754 		x_qte_line_rec  :=  lx_qte_line_tbl(1);
8755       end if;
8756 
8757       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8758 
8759          IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8760              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8761          ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8762              RAISE FND_API.G_EXC_ERROR;
8763          END IF;
8764 
8765       END IF;
8766 
8767 
8768    END IF;        -- pricing
8769 
8770    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8771         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8772    END IF;
8773 
8774    IF aso_debug_pub.g_debug_flag = 'Y' THEN
8775        aso_debug_pub.add('Update_Quote_line - before calculate_tax_flag ', 1, 'N');
8776    end if;
8777 
8778    /*
8779     *
8780     *
8781    IF l_control_rec.CALCULATE_TAX_FLAG = 'Y'THEN
8782       l_tax_control_rec.tax_level := 'SHIPPING';
8783       l_tax_control_rec.update_db := 'Y' ;  --FND_API.G_TRUE;
8784 
8785       l_calc_tax_detail_rec.quote_header_id := l_Qte_Line_Rec.quote_header_id;
8786       l_calc_tax_detail_rec.quote_line_id := l_Qte_Line_Rec.quote_line_id;
8787 
8788 -- added to calc tax based on accounts
8789         OPEN get_cust_acct( l_Qte_Line_Rec.QUOTE_HEADER_ID);
8790         FETCH get_cust_acct into l_cust_acct;
8791         IF get_cust_acct%NOTFOUND THEN
8792           NULL;
8793         END IF;
8794         CLOSE get_cust_acct;
8795 
8796 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8797          aso_debug_pub.add('Cust acct'||l_cust_acct , 1, 'Y');
8798 	end if;
8799 
8800         IF (l_Qte_Line_Rec.invoice_to_party_site_id is not NULL
8801       AND l_Qte_Line_Rec.invoice_to_party_site_id <> FND_API.G_MISS_NUM) AND
8802        (l_cust_acct is NOT NULL AND l_cust_acct <> FND_API.G_MISS_NUM)  THEN
8803 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8804      		aso_debug_pub.add('inside if'||nvl(to_char(l_Qte_Line_Rec.invoice_to_party_site_id),'null'), 1, 'Y' );
8805 	end if;
8806 
8807           ASO_PARTY_INT.GET_ACCT_SITE_USES (
8808   		  p_api_version     => 1.0
8809  		 ,P_Cust_Account_Id => l_cust_acct
8810  		 ,P_Party_Site_Id   => l_Qte_Line_Rec.invoice_to_party_site_id
8811 	         ,P_Acct_Site_type  => 'BILL_TO'
8812  		 ,x_return_status   => l_return_status
8813  		 ,x_msg_count       => l_msg_count
8814  		 ,x_msg_data        => l_msg_data
8815  		 ,x_site_use_id     => l_invoice_org_id
8816   	   );
8817               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
8818                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
8819                   THEN
8820                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
8821                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
8822                   FND_MSG_PUB.ADD;
8823                 END IF;
8824                -- raise FND_API.G_EXC_ERROR;
8825               END IF;
8826       END IF;
8827 
8828 lx_tax_shipment_tbl :=  ASO_UTILITY_PVT.Query_Shipment_Rows(l_Qte_Line_Rec.quote_header_id,l_Qte_Line_Rec.quote_line_id);
8829 
8830       FOR i in 1..lx_tax_shipment_tbl.count LOOP
8831          l_calc_tax_detail_rec.quote_shipment_id := lx_tax_shipment_tbl(i).shipment_id;
8832 
8833          IF (lx_tax_shipment_tbl(i).ship_to_party_site_id is not NULL
8834         AND lx_tax_shipment_tbl(i).ship_to_party_site_id <> FND_API.G_MISS_NUM)
8835         AND    (l_cust_acct is NOT NULL AND l_cust_acct <> FND_API.G_MISS_NUM)
8836           THEN
8837            ASO_PARTY_INT.GET_ACCT_SITE_USES (
8838   		  p_api_version     => 1.0
8839  		 ,P_Cust_Account_Id => l_cust_acct
8840  		 ,P_Party_Site_Id   =>  lx_tax_shipment_tbl(i).ship_to_party_site_id
8841 	         ,P_Acct_Site_type  => 'SHIP_TO'
8842  		 ,x_return_status   => l_return_status
8843  		 ,x_msg_count       => l_msg_count
8844  		 ,x_msg_data        => l_msg_data
8845  		 ,x_site_use_id     => l_ship_org_id
8846   	   );
8847 
8848               IF L_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
8849                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
8850                   THEN
8851                   FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
8852                   FND_MESSAGE.Set_Token('COLUMN', 'INVOICE_TO_SITE_USE_ID',FALSE);
8853                   FND_MSG_PUB.ADD;
8854                 END IF;
8855                -- raise FND_API.G_EXC_ERROR;
8856               END IF;
8857 
8858     END IF;
8859 	ASO_TAX_INT.Calculate_Tax(
8860          P_Api_Version_Number => 1.0,
8861          p_quote_header_id    => l_Qte_Line_Rec.quote_header_id,
8862          P_Tax_Control_Rec    => l_tax_control_rec,
8863          x_tax_amount	     => x_tax_amount    ,
8864          x_tax_detail_tbl    => l_tax_detail_tbl,
8865          X_Return_Status     => x_return_status ,
8866          X_Msg_Count         => x_msg_count     ,
8867         X_Msg_Data           => x_msg_data      );
8868 
8869           if l_tax_detail_tbl.count > 0 then
8870            x_tax_detail_tbl(i) := l_tax_detail_tbl(1);
8871           end if;
8872 
8873         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8874            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8875 	        FND_MESSAGE.Set_Name('ASO', 'ASO_TAX_CALCULATION');
8876 	        FND_MSG_PUB.ADD;
8877 	       END IF;
8878            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8879             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8880            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8881             RAISE FND_API.G_EXC_ERROR;
8882            END IF;
8883         END IF;
8884       END LOOP;
8885 
8886    END IF;
8887 
8888 *
8889 */
8890    -- check the profile option for reservation and create reservation if needed
8891 
8892     IF FND_PROFILE.Value('ASO_RESERVATION_LEVEL') = 'AUTO_CART' THEN
8893        l_shipment_tbl := x_shipment_tbl;
8894 
8895      FOR i in 1..l_shipment_tbl.count LOOP
8896 
8897        -- shipment quantity should be changed
8898       IF l_shipment_tbl(i).quantity is not NULL AND
8899          l_shipment_tbl(i).quantity <> FND_API.G_MISS_NUM THEN
8900 
8901          SELECT reservation_id INTO l_shipment_tbl(i).reservation_id
8902          FROM ASO_SHIPMENTS
8903          WHERE shipment_id = l_shipment_tbl(i).shipment_id;
8904 
8905        ASO_RESERVATION_INT.Update_reservation(
8906          P_Api_Version_Number   => 1.0,
8907          p_line_rec             => x_qte_line_rec,
8908          p_shipment_rec         => l_shipment_tbl(i),
8909          X_Return_Status        => x_return_status,
8910          X_Msg_Count            => x_msg_count,
8911          X_Msg_Data             => x_msg_data
8912       );
8913 
8914          UPDATE ASO_SHIPMENTS
8915          SET reservation_id     =  l_shipment_tbl(i).reservation_id,
8916              reserved_quantity  =  l_shipment_tbl(i).reserved_quantity,
8917              last_update_date   =  sysdate,
8918              last_updated_by    =  fnd_global.user_id,
8919              last_update_login  =  fnd_global.conc_login_id
8920          WHERE shipment_id     = l_shipment_tbl(i).shipment_id;
8921 
8922          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8923            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8924 	     FND_MESSAGE.Set_Name('ASO', 'ASO_CREATING_RESERVATION');
8925 	     FND_MSG_PUB.ADD;
8926 	    END IF;
8927            IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8928             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8929            ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8930             RAISE FND_API.G_EXC_ERROR;
8931            END IF;
8932          END IF;
8933 
8934 
8935        END IF;  -- quantity change
8936       END LOOP;
8937 
8938     END IF;  --automatic reservation
8939 
8940 
8941 
8942            IF p_update_header_flag = 'Y' THEN
8943 
8944       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
8945       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
8946       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
8947       -- IF calculate_tax_flag = 'N', not summation on line level tax,
8948       -- just take the value of p_qte_rec.total_tax as the total_tax
8949       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
8950       -- just take the value of p_qte_rec.total_freight_charge
8951       -- how can i get the calc_tax_flag and calc_freight_charge_flag ??
8952 
8953        ASO_QUOTE_HEADERS_PVT.Update_Quote_Total (
8954 	P_Qte_Header_id		=> l_Qte_Line_Rec.quote_header_id,
8955         P_calculate_tax         => l_control_rec.CALCULATE_TAX_FLAG,
8956         P_calculate_freight_charge=> l_control_rec.calculate_freight_charge_flag,
8957             p_control_rec		 =>  l_control_rec,
8958 	X_Return_Status         => l_return_status,
8959 	X_Msg_Count		=> x_msg_count,
8960 	X_Msg_Data              => x_msg_data);
8961 
8962            IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
8963             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
8964  	     FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
8965           -- FND_MESSAGE.Set_Token('LINE' , x_qte_line_rec.line_number, FALSE);
8966 	     FND_MSG_PUB.ADD;
8967  	    END IF;
8968           END IF;
8969 
8970       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
8971         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8972 --        ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH, 'Private API: '|| l_api_name || 'error in updating header');
8973         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8974       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
8975         x_return_status := FND_API.G_RET_STS_ERROR;
8976       END IF;
8977 
8978 
8979     END IF;
8980 
8981 	-- Change START
8982 	-- Release 12 TAP Changes
8983 	-- Girish Sachdeva 8/30/2005
8984 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
8985 
8986 	SELECT quote_number
8987 	INTO   l_quote_number
8988 	FROM   aso_quote_headers
8989 	WHERE  quote_header_id = l_Qte_Line_Rec.quote_header_id;
8990 
8991 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
8992 		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');
8993 	END IF;
8994 
8995 	-- Call to insert record in ASO_CHANGED_QUOTES
8996 	ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_quote_number);
8997 
8998 	-- Change END
8999 
9000 
9001       IF FND_API.to_Boolean( p_commit )
9002       THEN
9003           COMMIT WORK;
9004       END IF;
9005 
9006 
9007 
9008       -- Standard call to get message count and if count is 1, get message info.
9009       FND_MSG_PUB.Count_And_Get
9010       (  p_count          =>   x_msg_count,
9011          p_data           =>   x_msg_data
9012       );
9013 
9014   EXCEPTION
9015 	  WHEN FND_API.G_EXC_ERROR THEN
9016 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9017 		   P_API_NAME => L_API_NAME
9018 		  ,P_PKG_NAME => G_PKG_NAME
9019 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
9020 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9021 		  ,P_SQLCODE => SQLCODE
9022 		  ,P_SQLERRM => SQLERRM
9023 		  ,X_MSG_COUNT => X_MSG_COUNT
9024 		  ,X_MSG_DATA => X_MSG_DATA
9025 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9026 
9027 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9028 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9029 		   P_API_NAME => L_API_NAME
9030 		  ,P_PKG_NAME => G_PKG_NAME
9031 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9032 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9033 		  ,P_SQLCODE => SQLCODE
9034 		  ,P_SQLERRM => SQLERRM
9035 		  ,X_MSG_COUNT => X_MSG_COUNT
9036 		  ,X_MSG_DATA => X_MSG_DATA
9037 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9038 
9039 	  WHEN OTHERS THEN
9040 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9041 		   P_API_NAME => L_API_NAME
9042 		  ,P_PKG_NAME => G_PKG_NAME
9043 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
9044 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9045 		  ,P_SQLCODE => SQLCODE
9046 		  ,P_SQLERRM => SQLERRM
9047 		  ,X_MSG_COUNT => X_MSG_COUNT
9048 		  ,X_MSG_DATA => X_MSG_DATA
9049 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9050 
9051 
9052 End Update_quote_line;
9053 
9054 
9055 --   *******************************************************
9056 --    Start of Comments
9057 --   *******************************************************
9058 --   API Name:  Delete_Quote_Line
9059 --   Type    :  Public
9060 --   Pre-Req :
9061 --   Parameters:
9062 --   IN
9063 --       p_api_version_number      IN   NUMBER     Required
9064 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
9065 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
9066 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
9067 --       P_qte_line_Rec      IN qte_line_Rec_Type  Required
9068 --       P_quote_header_id   IN    NUMBER                    Required
9069 --       P_header_last_update_date IN DATE                   Required
9070 --
9071 --   OUT:
9072 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
9073 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
9074 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
9075 --   Version : Current version 2.0
9076 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
9077 --         and basic operation, developer must manually add parameters and business logic as necessary.
9078 --
9079 --   End of Comments
9080 --
9081 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
9082 --       The Master delete procedure may not be needed depends on different business requirements.
9083 
9084 PROCEDURE Delete_Quote_Line(
9085     P_Api_Version_Number         IN   NUMBER,
9086     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
9087     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
9088     P_qte_line_Rec     IN    ASO_QUOTE_PUB.qte_line_Rec_Type,
9089     P_Control_REC      IN    ASO_QUOTE_PUB.Control_Rec_Type
9090 				:= ASO_QUOTE_PUB.G_MISS_Control_Rec,
9091     P_Update_Header_Flag         IN   VARCHAR2   := 'Y',
9092     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
9093     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
9094     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
9095     )
9096 IS
9097    Cursor C_Get_quote(c_QUOTE_LINE_ID Number) IS
9098     Select head.LAST_UPDATE_DATE, head.QUOTE_STATUS_ID, head.QUOTE_NUMBER,
9099 	   head.TOTAL_ADJUSTED_PERCENT, head.quote_header_id
9100     From  ASO_QUOTE_HEADERS_ALL head,
9101           ASO_QUOTE_LINES_ALL line
9102     Where head.QUOTE_HEADER_ID = line.QUOTE_HEADER_ID
9103     And   line.QUOTE_LINE_ID = c_QUOTE_LINE_ID;
9104 
9105     CURSOR C_Qte_Status(c_qte_status_id NUMBER) IS
9106       SELECT UPDATE_ALLOWED_FLAG, AUTO_VERSION_FLAG FROM ASO_QUOTE_STATUSES_B
9107       WHERE quote_status_id = c_qte_status_id;
9108 
9109     CURSOR C_Qte_Version (X_qte_number NUMBER) IS
9110 	SELECT max(quote_version)
9111 	FROM ASO_QUOTE_HEADERS_ALL
9112 	WHERE quote_number = X_qte_number;
9113 
9114    CURSOR C_Shipment IS
9115        SELECT shipment_id, reservation_id
9116        FROM aso_shipments
9117        WHERE quote_line_id = p_qte_line_rec.quote_line_id;
9118 
9119    CURSOR C_Inst_Details(shipment_id NUMBER) IS
9120        SELECT line_inst_detail_id
9121        FROM cs_line_inst_details
9122        WHERE quote_line_shipment_id = shipment_id;
9123 
9124 -- hyang csi change 1935614
9125    cursor c_csi_details is
9126      select transaction_line_id
9127      from csi_t_transaction_lines
9128      where source_transaction_id = p_qte_line_rec.quote_line_id
9129        and source_transaction_table = 'ASO_QUOTE_LINES_ALL';
9130 
9131    CURSOR C_config IS
9132        SELECT qln.item_type_code, dtl.config_header_id, dtl.config_revision_num, dtl.ref_type_code
9133        FROM  aso_quote_lines_all qln, aso_quote_line_details dtl
9134        WHERE qln.quote_line_id = p_qte_line_rec.quote_line_id
9135        AND qln.quote_line_id = dtl.quote_line_id;
9136 
9137    CURSOR C_Children(l_quote_line_id NUMBER) IS
9138        SELECT quote_line_id
9139        FROM aso_quote_line_details
9140        WHERE ref_line_id = l_quote_line_id
9141        AND ref_type_code = 'TOP_MODEL';
9142 
9143    cursor c_pricing_line_type_indicator is
9144    select pricing_line_type_indicator
9145    from aso_quote_lines_all
9146    where quote_line_id = P_qte_line_Rec.quote_line_id;
9147 
9148    cursor c_prg_lines is
9149    select modifier_line_type_code
9150    from aso_price_adjustments
9151    where quote_line_id = p_qte_line_rec.quote_line_id
9152    and modifier_line_type_code = G_PROMO_GOODS_DISCOUNT;
9153 
9154    cursor c_free_lines is
9155    select a.quote_line_id
9156    from aso_price_adjustments a, aso_price_adj_relationships b
9157    where a.price_adjustment_id = b.rltd_price_adj_id
9158    and b.quote_line_id = p_qte_line_rec.quote_line_id
9159    and a.quote_line_id <> p_qte_line_rec.quote_line_id;
9160 
9161    cursor get_qte_nbr(qte_hdr_id  number) is
9162    SELECT quote_number
9163    FROM aso_quote_headers
9164    WHERE quote_header_id = qte_hdr_id;
9165 
9166 	l_api_name                CONSTANT VARCHAR2(30) := 'Delete_quote_line';
9167 	l_api_version_number      CONSTANT NUMBER   := 1.0;
9168 
9169 	l_last_update_date       DATE;
9170 	l_quote_line_detail_id   NUMBER;
9171      l_shipment_rec           ASO_QUOTE_PUB.shipment_rec_type;
9172 	l_Return_Status          VARCHAR2(50);
9173 	l_Msg_Count              NUMBER;
9174 	l_Msg_Data               VARCHAR2(240);
9175 	l_line_rltship_rec       ASO_quote_PUB.LINE_RLTSHIP_Rec_Type
9176                                 := ASO_quote_PUB.G_MISS_LINE_RLTSHIP_Rec;
9177      l_price_adj_rltship_rec  ASO_QUOTE_PUB.PRICE_ADJ_RLTSHIP_Rec_Type ;
9178 	l_hd_discount_percent   NUMBER;
9179 	l_qte_status_id		NUMBER;
9180 	l_update_allowed	VARCHAR2(1);
9181 	l_auto_version		VARCHAR2(1);
9182 	l_quote_number          NUMBER;
9183 	l_old_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
9184 	l_qte_header_rec        ASO_QUOTE_PUB.qte_header_rec_type;
9185 	l_quote_version         NUMBER;
9186 	x_quote_header_id       NUMBER;
9187      l_quote_header_id       NUMBER;
9188      l_line_inst_dtl_id      NUMBER;
9189      l_item_type             VARCHAR2(50);
9190      l_config_id             NUMBER;
9191      l_rev_num               NUMBER;
9192 	l_ref_type_code         VARCHAR2(30);
9193      l_qte_line_rec          ASO_QUOTE_PUB.Qte_line_Rec_Type
9194                               := ASO_QUOTE_PUB.G_MISS_Qte_Line_rec;
9195 
9196      l_copy_quote_control_rec  aso_copy_quote_pub.copy_quote_control_rec_type;
9197      l_copy_quote_header_rec   aso_copy_quote_pub.copy_quote_header_rec_type;
9198      l_qte_nbr            number;
9199      l_pricing_line_type_indicator  varchar2(3);
9200 
9201      adj_id_tbl  number_tbl_type;
9202      l_modifier_line_type_code  varchar2(30);
9203     l_payment_tbl         ASO_QUOTE_PUB.Payment_Tbl_Type;
9204     l_payment_rec         aso_quote_pub.payment_rec_type;
9205     l_qte_number	NUMBER ;
9206  BEGIN
9207 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9208 	 	aso_debug_pub.add('Delete_Quote_lines - Begin ', 1, 'Y');
9209           aso_debug_pub.add('Delete_Quote_Line: P_qte_line_Rec.quote_line_id: '||P_qte_line_Rec.quote_line_id);
9210           aso_debug_pub.add('Delete_Quote_Line: P_Update_Header_Flag: '||P_Update_Header_Flag);
9211 	 end if;
9212 
9213       -- Standard Start of API savepoint
9214       SAVEPOINT DELETE_quote_line_PVT;
9215 
9216       -- Standard call to check for call compatibility.
9217       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
9218                          	             p_api_version_number,
9219                                            l_api_name,
9220                                            G_PKG_NAME)
9221       THEN
9222           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9223       END IF;
9224 
9225 
9226       -- Initialize message list if p_init_msg_list is set to TRUE.
9227       IF FND_API.to_Boolean( p_init_msg_list ) THEN
9228           FND_MSG_PUB.initialize;
9229       END IF;
9230 
9231 
9232       -- Initialize API return status to SUCCESS
9233       x_return_status := FND_API.G_RET_STS_SUCCESS;
9234 
9235       --
9236       -- Api body
9237       --
9238       -- ******************************************************************
9239       -- Validate Environment
9240       -- ******************************************************************
9241       IF FND_GLOBAL.User_Id IS NULL THEN
9242           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9243               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
9244               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
9245               FND_MSG_PUB.ADD;
9246           END IF;
9247           RAISE FND_API.G_EXC_ERROR;
9248       END IF;
9249 
9250       open  c_pricing_line_type_indicator;
9251       fetch c_pricing_line_type_indicator into l_pricing_line_type_indicator;
9252       close c_pricing_line_type_indicator;
9253 
9254       IF aso_debug_pub.g_debug_flag = 'Y' THEN
9255 		aso_debug_pub.add('l_pricing_line_type_indicator: '|| l_pricing_line_type_indicator);
9256 	 end if;
9257 
9258      IF (p_update_header_flag = 'Y') THEN
9259 
9260       Open C_Get_quote( p_qte_line_rec.QUOTE_LINE_ID);
9261       Fetch C_Get_quote into l_LAST_UPDATE_DATE, l_qte_status_id,
9262                              l_quote_number, l_hd_discount_percent,
9263                              l_quote_header_id;
9264       If ( C_Get_quote%NOTFOUND) Then
9265         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9266                FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
9267                FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
9268                FND_MSG_PUB.Add;
9269         END IF;
9270         raise FND_API.G_EXC_ERROR;
9271       END IF;   -- update header flag
9272       Close C_Get_quote;
9273 
9274 
9275       If (l_last_update_date is NULL or
9276           l_last_update_date = FND_API.G_MISS_Date ) Then
9277           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9278               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
9279               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
9280               FND_MSG_PUB.ADD;
9281           END IF;
9282           raise FND_API.G_EXC_ERROR;
9283       End if;
9284 
9285 
9286       -- Check Whether record has been changed by someone else
9287       If l_last_update_date <> p_control_rec.last_update_date Then
9288           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9289               FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
9290               FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
9291               FND_MSG_PUB.ADD;
9292           END IF;
9293           raise FND_API.G_EXC_ERROR;
9294       End if;
9295 
9296       Open c_qte_status (l_qte_status_id);
9297       Fetch C_qte_status into l_update_allowed, l_auto_version;
9298       Close c_qte_status;
9299 
9300 
9301       IF p_control_rec.auto_version_flag = FND_API.G_TRUE  AND  NVL(l_auto_version,'Y') = 'Y' THEN
9302 
9303 	     OPEN C_Qte_Version(l_quote_number);
9304 	     FETCH C_Qte_Version into l_quote_version;
9305 	     l_quote_version := nvl(l_quote_version, 0) + 1;
9306 	     CLOSE C_Qte_Version;
9307 
9308       ELSE
9309 
9310           l_auto_version := 'N';
9311 
9312       END IF;
9313 
9314 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
9315 		aso_debug_pub.add('Delete_Quote_Line: l_auto_version: '|| l_auto_version);
9316 	 end if;
9317 
9318 
9319       IF l_auto_version = 'Y' THEN
9320 
9321 	       l_old_header_rec := aso_utility_pvt.Query_Header_Row(p_qte_line_rec.QUOTE_HEADER_ID);
9322 
9323             IF l_quote_header_id IS NULL OR l_quote_header_id = FND_API.G_MISS_NUM THEN
9324 
9325                 open c_get_quote( p_qte_line_rec.quote_line_id);
9326                 fetch c_get_quote into l_last_update_date, l_qte_status_id,
9327                              l_quote_number, l_hd_discount_percent,
9328                              l_quote_header_id;
9329                 close c_get_quote;
9330 
9331 
9332             END IF; -- l_quote_header is null
9333 
9334             l_copy_quote_control_rec.new_version     :=  fnd_api.g_true;
9335             l_copy_quote_header_rec.quote_header_id  :=  l_old_header_rec.quote_header_id;
9336 
9337             aso_copy_quote_pvt.copy_quote( P_Api_Version_Number      =>  1.0,
9338                                            P_Init_Msg_List           =>  FND_API.G_FALSE,
9339                                            P_Commit                  =>  FND_API.G_FALSE,
9340                                            P_Copy_Quote_Header_Rec   =>  l_copy_quote_header_rec,
9341                                            P_Copy_Quote_Control_Rec  =>  l_copy_quote_control_rec,
9342                                            X_Qte_Header_Id           =>  x_quote_header_id,
9343                                            X_Qte_Number              =>  l_qte_nbr,
9344                                            X_Return_Status           =>  l_return_status,
9345                                            X_Msg_Count               =>  x_msg_count,
9346                                            X_Msg_Data                =>  x_msg_data
9347                                           );
9348 
9349             if aso_debug_pub.g_debug_flag = 'Y' THEN
9350                 aso_debug_pub.add('Delete_Quote_Line: After call to aso_copy_quote_pvt.copy_quote');
9351                 aso_debug_pub.add('After copy_quote l_return_status:   ' || l_return_status);
9352                 aso_debug_pub.add('After copy_quote x_quote_header_id: ' || x_quote_header_id);
9353                 aso_debug_pub.add('After copy_quote l_qte_nbr:         ' || l_qte_nbr);
9354             end if;
9355 
9356             update aso_quote_headers_all
9357             set quote_version      =  l_quote_version + 1,
9358                 max_version_flag   =  'Y',
9359                 last_update_date   =  sysdate,
9360                 last_updated_by    =  fnd_global.user_id,
9361                 last_update_login  =  fnd_global.conc_login_id
9362             where quote_header_id = p_qte_line_rec.quote_header_id;
9363 
9364             update aso_quote_headers_all
9365             set max_version_flag   =  'N',
9366                 quote_version      =  l_old_header_rec.quote_version,
9367                 last_update_date   =  sysdate,
9368                 last_updated_by    =  fnd_global.user_id,
9369                 last_update_login  =  fnd_global.conc_login_id
9370             where quote_header_id = x_quote_header_id;
9371 
9372             update aso_quote_headers_all
9373             set quote_version      =  l_quote_version,
9374                 last_update_date   =  sysdate,
9375                 last_updated_by    =  fnd_global.user_id,
9376                 last_update_login  =  fnd_global.conc_login_id
9377             where quote_header_id = p_qte_line_rec.quote_header_id;
9378 
9379       END IF;
9380 
9381 
9382     END IF;
9383 
9384     --Code for PRG line deletion 05/01/2003
9385 
9386     if nvl(l_pricing_line_type_indicator,'XXX') = 'F' then
9387 
9388 	   begin
9389 
9390              --Get the free lines and update it
9391 
9392              select rel.rltd_price_adj_id
9393              BULK COLLECT INTO
9394              adj_id_tbl
9395              from aso_price_adj_relationships rel,
9396                   aso_price_adjustments adj
9397              where rel.price_adjustment_id = adj.price_adjustment_id
9398              and adj.modifier_line_type_code = G_PROMO_GOODS_DISCOUNT
9399              and rel.price_adjustment_id in (select a.price_adjustment_id
9400                                              from aso_price_adj_relationships a,
9401                                                   aso_price_adjustments b
9402                                              where a.rltd_price_adj_id = b.price_adjustment_id
9403                                              and b.quote_line_id = p_qte_line_rec.quote_line_id);
9404 
9405              if aso_debug_pub.g_debug_flag = 'Y' THEN
9406                 aso_debug_pub.add('No. of free adjustment lines selected is sql%rowcount: '||sql%rowcount);
9407              end if;
9408 
9409              if aso_debug_pub.g_debug_flag = 'Y' THEN
9410 
9411                  if adj_id_tbl.count > 0 then
9412 
9413                      for i in adj_id_tbl.FIRST..adj_id_tbl.LAST loop
9414                           aso_debug_pub.add('adj_id_tbl('||i||'): ' || adj_id_tbl(i));
9415                      end loop;
9416 
9417                  end if;
9418 
9419              end if;
9420 
9421              if adj_id_tbl.count > 0 then
9422 
9423                  FORALL i IN adj_id_tbl.FIRST..adj_id_tbl.LAST
9424 
9425                     UPDATE aso_price_adjustments
9426                     SET updated_flag = 'Y'
9427                     WHERE price_adjustment_id = adj_id_tbl(i)
9428                     AND modifier_line_type_code = G_DISCOUNT;
9429 
9430                     if aso_debug_pub.g_debug_flag = 'Y' THEN
9431                        aso_debug_pub.add('No of adjustment lines updated is sql%rowcount: '||sql%rowcount);
9432                     end if;
9433 
9434              end if;
9435 
9436              --Get the PRG lines and update it
9437 
9438      	   select a.price_adjustment_id
9439              BULK COLLECT INTO
9440              adj_id_tbl
9441              from aso_price_adj_relationships a, aso_price_adjustments b
9442              where a.rltd_price_adj_id = b.price_adjustment_id
9443              and b.quote_line_id = p_qte_line_rec.quote_line_id;
9444 
9445              if aso_debug_pub.g_debug_flag = 'Y' THEN
9446                  aso_debug_pub.add('No. of PRG adjustment lines selected is sql%rowcount: '||sql%rowcount);
9447              end if;
9448 
9449              if aso_debug_pub.g_debug_flag = 'Y' THEN
9450 
9451                  if adj_id_tbl.count > 0 then
9452 
9453                      for i in adj_id_tbl.FIRST..adj_id_tbl.LAST loop
9454                           aso_debug_pub.add('adj_id_tbl('||i||'): ' || adj_id_tbl(i));
9455                      end loop;
9456 
9457                  end if;
9458 
9459              end if;
9460 
9461              if adj_id_tbl.count> 0 then
9462 
9463                 FORALL i IN adj_id_tbl.FIRST..adj_id_tbl.LAST
9464 
9465                    UPDATE aso_price_adjustments
9466                    SET updated_flag = 'Y'
9467                    WHERE price_adjustment_id = adj_id_tbl(i)
9468                    AND modifier_line_type_code = G_PROMO_GOODS_DISCOUNT;
9469 
9470                 if aso_debug_pub.g_debug_flag = 'Y' THEN
9471                     aso_debug_pub.add('No of PRG adjustment lines updated is sql%rowcount: '||sql%rowcount);
9472                 end if;
9473 
9474              end if;
9475 
9476              exception
9477 
9478                  when others then
9479 
9480                     if aso_debug_pub.g_debug_flag = 'Y' THEN
9481                         aso_debug_pub.add('Delete_Quote_Line: Updation of updated_flag column in aso_price_adjustments table failed.');
9482                     end if;
9483 
9484         end;
9485 
9486     end if;
9487 
9488     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9489          aso_debug_pub.add('After updation of updated_flag column in aso_price_adjustments table.', 1, 'Y');
9490     end if;
9491 
9492     --Changes for deleting PRG lines
9493     open  c_prg_lines;
9494     fetch c_prg_lines into l_modifier_line_type_code;
9495 
9496     if c_prg_lines%found then
9497 
9498            IF aso_debug_pub.g_debug_flag = 'Y' THEN
9499               aso_debug_pub.add('before deleting the PRG lines', 1, 'Y');
9500             end if;
9501 
9502         for row in c_free_lines loop
9503 
9504             l_qte_line_rec               := aso_quote_pub.g_miss_qte_line_rec;
9505             l_qte_line_rec.quote_line_id := row.quote_line_id;
9506 
9507 		  aso_quote_lines_pvt.delete_quote_line(
9508  			         P_Api_Version_Number	=> 1.0,
9509  			         p_control_rec		=> p_control_rec,
9510  			         p_update_header_flag	=> fnd_api.g_false,
9511  			         P_qte_Line_Rec		=> l_qte_line_rec,
9512  			         X_Return_Status 	=> x_return_status,
9513  			         X_Msg_Count		=> x_msg_count,
9514  			         X_Msg_Data		     => x_msg_data);
9515 
9516             if x_return_status <> fnd_api.g_ret_sts_success then
9517                  raise fnd_api.g_exc_error;
9518             end if;
9519 
9520         end loop;
9521 
9522     end if;
9523 
9524     close c_prg_lines;
9525 
9526     -- Invoke table handler(ASO_QUOTE_HEADERS_PKG.Delete_Row)
9527     -- these tables may or may not have any rows
9528     -- ideally exception should be handled by the table handler
9529 
9530 
9531     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9532          aso_debug_pub.add('before deleting the quote line attributes.', 1, 'Y');
9533     end if;
9534 
9535 -- delete quote line attributes
9536     BEGIN
9537      ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Delete_Row(
9538          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9539     EXCEPTION
9540     WHEN NO_DATA_FOUND THEN
9541        null;
9542     END;
9543 
9544 -- delete price attributes
9545     BEGIN
9546      ASO_PRICE_ATTRIBUTES_PKG.Delete_Row(
9547          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9548       EXCEPTION
9549     WHEN NO_DATA_FOUND THEN
9550        null;
9551     END;
9552 
9553     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9554          aso_debug_pub.add('before deleting the quote line relationships.', 1, 'Y');
9555     end if;
9556 
9557 -- delete line relationships
9558 
9559   l_line_rltship_rec.quote_line_id :=  p_qte_line_rec.quote_line_id;
9560     ASO_LINE_RLTSHIP_PVT.Delete_line_rltship(
9561       P_Api_Version_Number    => 1.0,
9562       p_control_rec          => p_control_rec,
9563       P_LINE_RLTSHIP_Rec      => l_line_rltship_rec,
9564       X_Return_Status         => x_return_status,
9565       X_Msg_Count             => x_msg_count,
9566       X_Msg_Data              => x_msg_data);
9567 
9568      IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9569            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9570 	     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9571              FND_MESSAGE.Set_Token('OBJECT','LINE_RLTSHIP',FALSE);
9572 	     FND_MSG_PUB.ADD;
9573 	    END IF;
9574             RAISE FND_API.G_EXC_ERROR;
9575      END IF;
9576 
9577 
9578 -- delete price adjustment relationships
9579 
9580   l_price_adj_rltship_rec.quote_line_id := p_qte_line_rec.quote_line_id;
9581      ASO_PRICE_ADJ_RLTSHIP_PVT.Delete_Price_Adj_Rltship(
9582          P_Api_Version_Number    => 1.0,
9583          P_PRICE_ADJ_RLTSHIP_Rec => l_price_adj_rltship_rec,
9584          X_Return_Status         => x_return_status,
9585          X_Msg_Count             => x_msg_count,
9586          X_Msg_Data              => x_msg_data);
9587 
9588          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9589            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9590 	   FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9591            FND_MESSAGE.Set_Token('OBJECT','PRICE_ADJ_RLTSHIP',FALSE);
9592 	     FND_MSG_PUB.ADD;
9593 	    END IF;
9594             RAISE FND_API.G_EXC_ERROR;
9595         END IF;
9596 
9597     IF aso_debug_pub.g_debug_flag = 'Y' THEN
9598          aso_debug_pub.add('before deleting the quote line price adjustments.', 1, 'Y');
9599     end if;
9600 
9601 -- delete price adjustments
9602 -- this should once again delete price adj relationships
9603     BEGIN
9604        ASO_PRICE_ADJUSTMENTS_PKG.Delete_Row(
9605          p_LINE_ID => p_qte_line_rec.quote_line_id,
9606          p_TYPE_CODE => 'QUOTE_LINE');
9607     EXCEPTION
9608     WHEN NO_DATA_FOUND THEN
9609        null;
9610     END;
9611 
9612 -- delete payments
9613     BEGIN
9614 
9615      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9616         aso_debug_pub.add('Delete_Quote_Line: Before  call to delete_payment_row ', 1, 'Y');
9617      END IF;
9618 
9619      l_payment_tbl := aso_utility_pvt.Query_Payment_Rows(p_qte_line_rec.quote_header_id,p_qte_line_rec.quote_line_id);
9620 
9621      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9622         aso_debug_pub.add('Delete_Quote_Line: l_payment_tbl.count:  '|| l_payment_tbl.count, 1, 'Y');
9623      END IF;
9624 
9625        if l_payment_tbl.count > 0 then
9626 
9627               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9628                   aso_debug_pub.add('Delete_Quote_Line: Inside if for payment tbl count > 0 ', 1, 'Y');
9629               END IF;
9630 
9631 
9632           if l_payment_tbl(1).trxn_extension_id is not null then
9633 
9634               l_payment_rec := l_payment_tbl(1);
9635 
9636               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9637                   aso_debug_pub.add('Delete_Quote_Line: Before call to delete_payment_row', 1, 'Y');
9638               END IF;
9639 
9640               aso_payment_int.delete_payment_row(p_payment_rec   => l_payment_rec  ,
9641                                                  x_return_status => x_return_status,
9642                                                  x_msg_count     => x_msg_count,
9643                                                  x_msg_data      => x_msg_data);
9644 
9645               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9646                   aso_debug_pub.add('Delete_Quote_Line: After call to delete_payment_row: x_return_status: '||x_return_status, 1, 'Y');
9647               END IF;
9648             if x_return_status <> fnd_api.g_ret_sts_success then
9649               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9650                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9651               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
9652                  RAISE FND_API.G_EXC_ERROR;
9653               ELSE
9654                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9655               END IF;
9656             end if;
9657 
9658           else
9659 
9660               IF aso_debug_pub.g_debug_flag = 'Y' THEN
9661                   aso_debug_pub.add('Delete_Quote_Line: Before calling table handler to delete payment row', 1, 'Y');
9662               END IF;
9663 
9664               aso_payments_pkg.Delete_Row(p_payment_id => l_payment_tbl(1).payment_id);
9665            end if;
9666 
9667        end if;
9668 
9669      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9670         aso_debug_pub.add('Delete_Quote_Line: After deleting the payment row', 1, 'Y');
9671      END IF;
9672 
9673     EXCEPTION
9674     WHEN NO_DATA_FOUND THEN
9675        null;
9676     END;
9677 
9678 -- delete freight
9679     BEGIN
9680        ASO_FREIGHT_CHARGES_PKG.delete_Row(
9681             p_QUOTE_LINE_ID  => p_qte_line_rec.quote_line_id);
9682     EXCEPTION
9683     WHEN NO_DATA_FOUND THEN
9684        null;
9685     END;
9686 
9687 -- delete tax details
9688     BEGIN
9689        ASO_TAX_DETAILS_PKG.Delete_Row(
9690             p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9691     EXCEPTION
9692     WHEN NO_DATA_FOUND THEN
9693        null;
9694     END;
9695 
9696      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9697         aso_debug_pub.add('Delete_Quote_Line: Before deleting the sales credits', 1, 'Y');
9698      END IF;
9699 
9700 -- delete salescredits
9701      ASO_SALES_CREDITS_PKG.Delete_row(
9702              p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9703 
9704      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9705         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote parties', 1, 'Y');
9706      END IF;
9707 
9708 -- delete quote parties
9709      ASO_QUOTE_PARTIES_PKG.Delete_row(
9710              p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9711 
9712 -- delete configurations - supported only at model levels
9713    OPEN C_config;
9714    FETCH C_config into l_item_type, l_config_id, l_rev_num, l_ref_type_code;
9715    IF (C_config%NOTFOUND) THEN
9716       null;
9717    END IF;
9718    CLOSE C_config;
9719 
9720    IF l_item_type = 'MDL' THEN
9721 
9722 	IF l_config_id is not NULL THEN
9723 
9724        ASO_CFG_INT.DELETE_CONFIGURATION(
9725  		P_API_VERSION_NUMBER	=> 1.0,
9726  		P_INIT_MSG_LIST		=> FND_API.G_FALSE,
9727  		P_CONFIG_HDR_ID		=> l_config_id,
9728  		P_CONFIG_REV_NBR	=> l_rev_num,
9729  		X_RETURN_STATUS		=> x_return_status,
9730  		X_MSG_COUNT		=> x_msg_count,
9731  		X_MSG_DATA		=> x_msg_data);
9732 
9733        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9734            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9735 	         FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9736               FND_MESSAGE.Set_Token('OBJECT', 'CONFIGURATION', FALSE);
9737 	         FND_MSG_PUB.ADD;
9738 	      END IF;
9739               RAISE FND_API.G_EXC_ERROR;
9740        END IF;
9741 
9742      ELSIF l_ref_type_code = 'TOP_MODEL' THEN
9743 
9744 	    FOR Cur_Children IN C_Children(p_qte_line_rec.quote_line_id) LOOP
9745 
9746             l_qte_line_rec.quote_line_id := Cur_Children.quote_line_id;
9747 
9748 		  ASO_QUOTE_LINES_PVT.Delete_Quote_Line(
9749  			         P_Api_Version_Number	=> 1.0,
9750  			         p_control_rec		=> p_control_rec,
9751  			         p_update_header_flag	=> p_update_header_flag,
9752  			         P_qte_Line_Rec		=> l_qte_line_rec,
9753  			         X_Return_Status 	=> x_return_status,
9754  			         X_Msg_Count		=> x_msg_count,
9755  			         X_Msg_Data		     => x_msg_data);
9756             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9757                  RAISE FND_API.G_EXC_ERROR;
9758             END IF;
9759 
9760          END LOOP;
9761 
9762     END IF;  -- config
9763 
9764 
9765    END IF;  -- 'MDL'
9766 
9767      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9768         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote line details', 1, 'Y');
9769         aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
9770      END IF;
9771 
9772 -- delete quote line details
9773     BEGIN
9774      ASO_QUOTE_LINE_DETAILS_PKG.Delete_Row(
9775          p_QUOTE_LINE_ID => p_qte_line_rec.quote_line_id);
9776 
9777     EXCEPTION
9778 
9779        WHEN NO_DATA_FOUND THEN
9780           null;
9781     END;
9782 
9783 
9784 -- shipment should exist
9785     --  OPEN C_Shipment;
9786       FOR i in C_Shipment LOOP
9787 
9788         l_shipment_rec.shipment_id := i.shipment_id;
9789         l_shipment_rec.reservation_id := i.reservation_id;
9790 
9791 -- hyang csi change 1935614
9792         if not (csi_utility_grp.ib_active()) then
9793 
9794           FOR j in C_inst_details(l_shipment_rec.shipment_id) LOOP
9795 
9796             l_line_inst_dtl_id := j.line_inst_detail_id;
9797 
9798             null;
9799 
9800           END LOOP;
9801 
9802         else
9803 
9804         -- new ib module
9805           for j in C_csi_details LOOP
9806 
9807             l_line_inst_dtl_id := j.transaction_line_id;
9808 
9809             ASO_INSTBASE_INT.Delete_Installation_Detail(
9810               p_api_version_number  => 1.0,
9811                   p_init_msg_list       => FND_API.G_FALSE,
9812                   p_commit              => FND_API.G_FALSE,
9813                   x_return_status       => x_return_status,
9814                   x_msg_count           => x_msg_count,
9815                   x_msg_data            => x_msg_data,
9816                   p_line_inst_dtl_id    => l_line_inst_dtl_id
9817             );
9818 
9819             IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9820               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9821                     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9822                 FND_MESSAGE.Set_Token('OBJECT', 'INSTALLATION DETAILS');
9823                     FND_MSG_PUB.ADD;
9824                   END IF;
9825               RAISE FND_API.G_EXC_ERROR;
9826             END IF;
9827           END LOOP;
9828         END IF;
9829 
9830 
9831         ASO_SHIPMENT_PVT.Delete_shipment(
9832           P_Api_Version_Number    => 1.0,
9833           P_SHIPMENT_Rec          => l_shipment_rec,
9834           X_Return_Status         => x_return_status,
9835           X_Msg_Count             => x_msg_count,
9836           X_Msg_Data              => x_msg_data);
9837 
9838          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9839            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9840 		     FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
9841                FND_MESSAGE.Set_Token('OBJECT', 'LINE_SHIPMENTS', FALSE);
9842 	    		FND_MSG_PUB.ADD;
9843 	      END IF;
9844            RAISE FND_API.G_EXC_ERROR;
9845          END IF;
9846 
9847       END LOOP;
9848 
9849 
9850      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9851         aso_debug_pub.add('Delete_Quote_Line: Before deleting the quote line', 1, 'Y');
9852         aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
9853      END IF;
9854 
9855      BEGIN
9856       ASO_QUOTE_LINES_PKG.Delete_Row( p_quote_line_id  => p_qte_line_rec.quote_line_id);
9857      EXCEPTION
9858 	WHEN no_data_found then
9859 	 null;
9860 	END;
9861 
9862 
9863      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9864         aso_debug_pub.add('Delete_Quote_Line: After deleting the quote line', 1, 'Y');
9865      END IF;
9866 
9867       IF p_update_header_flag = 'Y' THEN
9868 
9869       -- Update Quote total info (do summation to get TOTAL_LIST_PRICE,
9870       -- TOTAL_ADJUSTED_AMOUNT, TOTAL_TAX, TOTAL_SHIPPING_CHARGE, SURCHARGE,
9871       -- TOTAL_QUOTE_PRICE, PAYMENT_AMOUNT)
9872       -- IF calculate_tax_flag = 'N', not summation on line level tax,
9873       -- just take the value of p_qte_rec.total_tax as the total_tax
9874       -- IF calculate_Freight_Charge = 'N', not summation on line level freight charge,
9875       -- just take the value of p_qte_rec.total_freight_charge
9876       -- how can i get the calc_tax_flag and calc_freight_charge_flag ??
9877 
9878 
9879       ASO_QUOTE_HEADERS_PVT.Update_Quote_Total(
9880                      P_Qte_Header_id             => l_quote_header_id,
9881                      P_calculate_tax             => p_control_rec.CALCULATE_TAX_FLAG,
9882                      P_calculate_freight_charge  => p_control_rec.calculate_freight_charge_flag,
9883                      p_control_rec               => p_control_rec,
9884                      X_Return_Status             => l_return_status,
9885                      X_Msg_Count                 => x_msg_count,
9886                      X_Msg_Data                  => x_msg_data);
9887 
9888       IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
9889 
9890           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
9891  	         FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_QUOTE_TOTAL');
9892 	         FND_MSG_PUB.ADD;
9893  	     END IF;
9894 
9895       END IF;
9896 
9897 
9898       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
9899            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9900            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9901       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
9902            x_return_status := FND_API.G_RET_STS_ERROR;
9903       END IF;
9904 
9905 
9906     END IF;
9907 
9908 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
9909 		aso_debug_pub.add('Delete_Quote_Line: Before call to Delete_OTA_Line.');
9910 		aso_debug_pub.add('p_qte_line_rec.quote_line_id: '|| p_qte_line_rec.quote_line_id);
9911 	end if;
9912 
9913      ASO_EDUCATION_INT.Delete_OTA_Line(
9914           P_Init_Msg_List     => FND_API.G_FALSE,
9915           P_Commit            => FND_API.G_FALSE,
9916           P_Qte_Line_Id       => p_qte_line_rec.quote_line_id,
9917           X_Return_Status     => l_return_status,
9918           X_Msg_Count         => x_msg_count,
9919           X_Msg_Data          => x_msg_data);
9920 
9921      IF aso_debug_pub.g_debug_flag = 'Y' THEN
9922           aso_debug_pub.add('Delete_Quote_Line: After call to Delete_OTA_Line.');
9923           aso_debug_pub.add('Delete_Quote_Line: l_return_status: '|| l_return_status);
9924      end if;
9925 
9926      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9927           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9928           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9929      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
9930           x_return_status := FND_API.G_RET_STS_ERROR;
9931           RAISE FND_API.G_EXC_ERROR;
9932      END IF;
9933 
9934         -- Change START
9935 	-- Release 12 TAP Changes
9936 	-- Girish Sachdeva 8/30/2005
9937 	-- Adding the call to insert record in the ASO_CHANGED_QUOTES
9938 
9939 	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
9940 
9941 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
9942 			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');
9943 		END IF;
9944 
9945           OPEN get_qte_nbr(p_qte_line_rec.quote_header_id);
9946 		FETCH get_qte_nbr INTO l_qte_number;
9947 		CLOSE get_qte_nbr;
9948 
9949 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
9950 			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');
9951 		END IF;
9952 
9953 
9954 		-- Call to insert record in ASO_CHANGED_QUOTES
9955 		ASO_UTILITY_PVT.UPDATE_CHANGED_QUOTES(l_qte_number);
9956 
9957 	END IF ;
9958 
9959 	-- Change END
9960 
9961      --
9962      -- End of API body
9963      --
9964 
9965      -- Standard check for p_commit
9966      IF FND_API.to_Boolean( p_commit ) THEN
9967           COMMIT WORK;
9968      END IF;
9969 
9970      -- Standard call to get message count and if count is 1, get message info.
9971      FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
9972                                  p_data  => x_msg_data );
9973 
9974 
9975      EXCEPTION
9976 
9977 	  WHEN FND_API.G_EXC_ERROR THEN
9978 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9979 		   P_API_NAME => L_API_NAME
9980 		  ,P_PKG_NAME => G_PKG_NAME
9981 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
9982 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9983 		  ,P_SQLCODE => SQLCODE
9984 		  ,P_SQLERRM => SQLERRM
9985 		  ,X_MSG_COUNT => X_MSG_COUNT
9986 		  ,X_MSG_DATA => X_MSG_DATA
9987 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
9988 
9989 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9990 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
9991 		   P_API_NAME => L_API_NAME
9992 		  ,P_PKG_NAME => G_PKG_NAME
9993 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9994 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
9995 		  ,P_SQLCODE => SQLCODE
9996 		  ,P_SQLERRM => SQLERRM
9997 		  ,X_MSG_COUNT => X_MSG_COUNT
9998 		  ,X_MSG_DATA => X_MSG_DATA
9999 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10000 
10001 	  WHEN OTHERS THEN
10002 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
10003 		   P_API_NAME => L_API_NAME
10004 		  ,P_PKG_NAME => G_PKG_NAME
10005 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
10006 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
10007 		  ,P_SQLCODE => SQLCODE
10008 		  ,P_SQLERRM => SQLERRM
10009 		  ,X_MSG_COUNT => X_MSG_COUNT
10010 		  ,X_MSG_DATA => X_MSG_DATA
10011 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
10012 
10013 END;
10014 
10015 
10016 
10017 
10018 --   *******************************************************
10019 --    Start of Comments
10020 --   *******************************************************
10021 --   API Name:  Get_Quote_Lines
10022 --   Type    :  Public
10023 --   Pre-Req :
10024 --   Parameters:
10025 --   IN
10026 --       p_api_version_number      IN   NUMBER     Required
10027 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
10028 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
10029 --       P_quote_id                IN   NUMBER     Required
10030 --       p_rec_requested           IN   NUMBER     Optional  Default = 30
10031 --       p_start_rec_ptr           IN   NUMBER     Optional  Default = 1
10032 --
10033 --       Return Total Records Count Flag. This flag controls whether the total record count
10034 --       and total record amount is returned.
10035 --
10036 --       p_return_tot_count        IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
10037 --   Hint: User defined record type
10038 --       p_order_by_tbl            IN   AS_UTILITY_PUB.UTIL_ORDER_BY_TBL_TYPE;
10039 --
10040 --   OUT:
10041 --       x_return_status           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
10042 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */ NUMBER
10043 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
10044 --       X_qte_line_Tbl     OUT NOCOPY /* file.sql.39 change */  qte_line_Tbl_Type
10045 --       X_Payment_Tbl       OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type
10046 --       X_Price_Adj_Tbl     OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type
10047 --       X_Qte_Line_Dtl_Tbl  OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type
10048 --       X_Shipment_Tbl      OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type
10049 --       X_Tax_Details_Tbl   OUT NOCOPY /* file.sql.39 change */  Tax_Details_Tbl_Type
10050 --       X_Freight_Charges_Tbl OUT NOCOPY /* file.sql.39 change */ Freight_Charges_Tbl_Type
10051 --       X_Line_Relationship_Tbl OUT NOCOPY /* file.sql.39 change */ Line_Relationship_Tbl_Type
10052 --       X_Related_Object_Tbl OUT NOCOPY /* file.sql.39 change */   Related_Object_Tbl_Type
10053 --       X_Price_Attributes_Tbl   OUT NOCOPY /* file.sql.39 change */    Price_Attributes_Tbl_Type
10054 --       X_Price_Adj_Relationship_Tbl OUT NOCOPY /* file.sql.39 change */ Price_Adj_relationship_Tbl_Type
10055 --       x_returned_rec_count      OUT NOCOPY /* file.sql.39 change */   NUMBER
10056 --       x_next_rec_ptr            OUT NOCOPY /* file.sql.39 change */   NUMBER
10057 --       x_tot_rec_count           OUT NOCOPY /* file.sql.39 change */   NUMBER
10058 --  other optional OUT NOCOPY /* file.sql.39 change */ parameters
10059 --       x_tot_rec_amount          OUT NOCOPY /* file.sql.39 change */   NUMBER
10060 --   Version : Current version 2.0
10061 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
10062 --         and basic operation, developer must manually add parameters and business logic as necessary.
10063 --
10064 --   End of Comments
10065 --
10066 PROCEDURE Get_Quote_Line(
10067     P_Api_Version_Number         IN   NUMBER,
10068     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
10069     p_rec_requested              IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
10070     p_start_rec_prt              IN   NUMBER  := 1,
10071     p_return_tot_count           IN   NUMBER  := FND_API.G_FALSE,
10072   -- Hint: user defined record type
10073      p_order_by_rec               IN   ASO_QUOTE_PUB.qte_line_sort_rec_type,
10074     x_return_status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
10075     x_msg_count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
10076     x_msg_data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
10077     x_returned_rec_count         OUT NOCOPY /* file.sql.39 change */  NUMBER,
10078     x_next_rec_ptr               OUT NOCOPY /* file.sql.39 change */  NUMBER,
10079     x_tot_rec_count              OUT NOCOPY /* file.sql.39 change */  NUMBER,
10080     P_Qte_Line_Rec     		 IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type  := ASO_QUOTE_PUB.G_MISS_qte_line_REC,
10081     P_Control_REC      		 IN   ASO_QUOTE_PUB.Control_Rec_Type := ASO_QUOTE_PUB.G_MISS_Control_Rec,
10082     X_Qte_Line_Rec     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Rec_Type,
10083     X_Payment_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Payment_Tbl_Type,
10084     X_Price_Adj_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Tbl_Type,
10085     X_Qte_Line_Dtl_rec OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Line_Dtl_rec_Type,
10086     X_Shipment_Tbl     OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Shipment_Tbl_Type,
10087     X_Tax_Detail_Tbl   OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type,
10088     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Freight_Charge_Tbl_Type ,
10089     X_Line_Rltship_Tbl      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Rltship_Tbl_Type,
10090     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Attributes_Tbl_Type ,
10091     X_Price_Adj_rltship_Tbl OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type,
10092     X_Line_Attribs_Ext_Tbl       OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_type
10093     )
10094 IS
10095 BEGIN
10096 null;
10097 END;
10098 
10099 Procedure service_item_qty_update
10100 (p_qte_line_rec  IN ASO_QUOTE_PUB.QTE_LINE_REC_TYPE,
10101  p_service_item_flag  IN VARCHAR2,
10102  x_return_status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
10103  )IS
10104 
10105 CURSOR C_ord_qty(ord_line_id NUMBER) IS
10106 SELECT  ordered_quantity
10107 FROM  oe_order_lines_All
10108 WHERE  line_id = ord_line_id;
10109 
10110 CURSOR C_cs_qty(p_instance_id NUMBER) IS
10111 SELECT  quantity
10112 FROM CSI_ITEM_INSTANCES
10113 WHERE  instance_id = p_instance_id;
10114 
10115 CURSOR C_quantity(p_quote_line_id NUMBER) IS
10116 SELECT  quantity
10117 FROM  aso_quote_lines_all
10118 WHERE  quote_line_id = p_quote_line_id;
10119 
10120 l_serviceable_product_flag VARCHAR2(1);
10121 l_qte_line_rec ASO_QUOTE_PUB.QTE_LINE_REC_TYPE;
10122 l_org_id NUMBER;
10123 l_inventory_item_id NUMBER;
10124 l_organization_id NUMBER;
10125 l_qte_line_detail_tbl ASO_QUOTE_PUB.QTE_LINE_DTL_TBL_TYPE;
10126 l_quantity NUMBER;
10127 l_update_flag VARCHAR2(1) := FND_API.G_FALSE;
10128 
10129 Begin
10130 IF aso_debug_pub.g_debug_flag = 'Y' THEN
10131   aso_debug_pub.add('Procedure Service_item_qty_update Starts.', 1, 'Y');
10132 end if;
10133   x_return_status := FND_API.G_RET_STS_SUCCESS;
10134 
10135   IF p_service_item_flag = FND_API.G_FALSE THEN
10136 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10137     		aso_debug_pub.add('Service_item_qty_update: Inside IF condition p_service_item_flag = FND_API.G_FALSE', 1, 'N');
10138 	end if;
10139 
10140     l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(p_qte_line_rec.quote_line_id);
10141     begin
10142         UPDATE aso_quote_lines_all
10143         set quantity           =  l_qte_line_rec.quantity,
10144             last_update_date   =  sysdate,
10145             last_updated_by    =  fnd_global.user_id,
10146             last_update_login  =  fnd_global.conc_login_id
10147         where quote_line_id IN
10148         ( select quote_line_id from aso_quote_line_details
10149           where service_ref_type_code = 'QUOTE' and service_ref_line_id = l_qte_line_rec.quote_line_id );
10150 
10151         EXCEPTION
10152             WHEN OTHERS THEN
10153              x_return_status := FND_API.G_RET_STS_ERROR;
10154 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
10155              		aso_debug_pub.add('Service_item_qty_update:Exception1',1,'N');
10156 			end if;
10157     end;
10158   ELSE
10159 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10160     		aso_debug_pub.add('Service_item_qty_update:ELSE condition of p_service_item_flag = FND_API.G_FALSE', 1, 'N');
10161 	end if;
10162     l_qte_line_detail_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(p_qte_line_rec.quote_line_id);
10163 
10164 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10165     		aso_debug_pub.add('Service_item_qty_update: ASO_UTILITY_PVT.Query_Line_Dtl_Rows', 1, 'N');
10166 	end if;
10167 
10168     FOR i IN 1..l_qte_line_detail_tbl.count LOOP
10169       IF l_qte_line_detail_tbl(i).service_ref_type_code = 'QUOTE' THEN
10170          OPEN C_quantity(l_qte_line_detail_tbl(i).service_ref_line_id);
10171          FETCH C_quantity INTO l_quantity;
10172 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10173          aso_debug_pub.add('Service_item_qty_update: Cursor C_quantity: l_quantity: '||l_quantity, 1, 'N');
10174 	end if;
10175          IF C_quantity%NOTFOUND THEN
10176 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10177              	aso_debug_pub.add('Service_item_qty_update: Inside cursor C_quantity%NOTFOUND ', 1, 'N');
10178 		end if;
10179              x_return_status := FND_API.G_RET_STS_ERROR;
10180              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10181   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10182   		      FND_MESSAGE.Set_Token('CODE', 'QUOTE', FALSE);
10183                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10184   		      FND_MSG_PUB.ADD;
10185   	        END IF;
10186 	    ELSE
10187 		   l_update_flag := FND_API.G_TRUE;
10188    	    END IF;
10189          CLOSE C_quantity;
10190       ELSIF l_qte_line_detail_tbl(i).service_ref_type_code = 'ORDER' THEN
10191          OPEN C_ord_qty(l_qte_line_detail_tbl(i).service_ref_line_id);
10192          FETCH C_ord_qty INTO l_quantity;
10193 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10194          aso_debug_pub.add('Service_item_qty_update: Cursor C_ord_qty: l_quantity: '||l_quantity, 1, 'N');
10195 	end if;
10196          IF C_ord_qty%NOTFOUND THEN
10197 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10198              aso_debug_pub.add('Service_item_qty_update: Inside cursor C_ord_qty%NOTFOUND condition.', 1, 'N');
10199 	end if;
10200              x_return_status := FND_API.G_RET_STS_ERROR;
10201              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10202   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10203   		      FND_MESSAGE.Set_Token('CODE', 'ORDER', FALSE);
10204                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10205   		      FND_MSG_PUB.ADD;
10206   	       END IF;
10207          ELSE
10208 			 l_update_flag := FND_API.G_TRUE;
10209          END IF;
10210          CLOSE C_ord_qty;
10211       ELSIF l_qte_line_detail_tbl(i).service_ref_type_code = 'CUSTOMER_PRODUCT' THEN
10212          OPEN C_cs_qty(l_qte_line_detail_tbl(i).service_ref_line_id);
10213          FETCH C_cs_qty INTO l_quantity;
10214 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10215          aso_debug_pub.add('Service_item_qty_update: Cursor C_cs_qty: l_quantity: '||l_quantity, 1, 'N');
10216 	end if;
10217 
10218          IF C_cs_qty%NOTFOUND THEN
10219 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
10220              aso_debug_pub.add('Service_item_qty_update: Inside cursor C_cs_qty%NOTFOUND condition. ', 1, 'N');
10221 	end if;
10222              x_return_status := FND_API.G_RET_STS_ERROR;
10223              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
10224   		      FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_SERVICE_REF_LINE');
10225   		      FND_MESSAGE.Set_Token('CODE', 'CUSTOMER_PRODUCT', FALSE);
10226                 FND_MESSAGE.Set_Token('VALUE', l_qte_line_detail_tbl(i).service_ref_line_id, FALSE);
10227   		      FND_MSG_PUB.ADD;
10228   	        END IF;
10229          ELSE
10230 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
10231              	aso_debug_pub.add('Service_item_qty_update: cursor C_cs_qty%FOUND ', 1, 'N ');
10232 		end if;
10233 	        l_update_flag := FND_API.G_TRUE;
10234          END IF;
10235          CLOSE C_cs_qty;
10236       END IF;
10237 
10238       IF x_return_status <> FND_API.G_RET_STS_ERROR  AND l_update_flag = FND_API.G_TRUE THEN
10239 
10240          Begin
10241 
10242            UPDATE aso_quote_lines_all
10243            set quantity           =  l_quantity,
10244                last_update_date   =  sysdate,
10245                last_updated_by    =  fnd_global.user_id,
10246                last_update_login  =  fnd_global.conc_login_id
10247            where quote_line_id =  p_qte_line_rec.quote_line_id;
10248 
10249            EXCEPTION
10250               WHEN OTHERS THEN
10251               x_return_status := FND_API.G_RET_STS_ERROR;
10252 
10253               if aso_debug_pub.g_debug_flag = 'Y' THEN
10254               	   aso_debug_pub.add('Service_item_qty_update:Exception raised when others', 1, 'N');
10255               end if;
10256 
10257          End;
10258 
10259       END IF;
10260 
10261 	 l_update_flag := FND_API.G_FALSE;
10262 
10263     END LOOP;
10264 
10265   END IF;
10266 End service_item_qty_update;
10267 
10268 END ASO_QUOTE_LINES_PVT;